Skip to content
ModderMulePublic

About

gRPC lib of the multi-network (torrent, usenet, kademlia and ed2k) metadata exchange protocol of eMuleQt

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

enodemeta

The shared contract between the eNode-go server, its catalogue daemons (torrent-crawler, usenet-crawler, kademlia-crawler) and the eMuleQt client: the enode.meta.v1 protobuf services (MetaIngest, MetaApi, ServerSearch), their generated connect-go code, and the code that has to produce identical bytes in every repository — the eD2K pseudo-hash, the ed2k:/bt:/nzb: ids, the FT_META_* tag ids, and torrent/NZB identity parsing.

Module path: github.com/ModderMule/enodemeta (Go ≥ 1.25). Its only dependencies are google.golang.org/protobuf and connectrpc.com/connect/v2.

Consumers

Repository How it imports this module
torrent-crawler replace github.com/ModderMule/enodemeta => ../enodemeta (clone side by side)
usenet-crawler replace github.com/ModderMule/enodemeta => ../enodemeta (clone side by side)
kademlia-crawler replace github.com/ModderMule/enodemeta => ../enodemeta (clone side by side)
eNode-go git submodule at ./enodemeta, replace ... => ./enodemeta
eMuleQt generates C++ from proto/, ports metahash and btid by hand against testdata/

A consumer must import the generated code from here rather than generating its own copy of proto/enode/meta/v1: protobuf-go panics at init when the same file descriptor is registered twice.

Layout

Path What it holds
proto/, gen/ The .proto files and the generated protobuf + connect code (checked in)
metahash/ The eD2K pseudo-hash: minting, parsing, cross-checking
btid/, magnet/, ed2klink/ The ed2k:/bt:v1:/bt:v2:/nzb:/web: id namespace; magnet and eD2K links
model/, pbconv/ Domain types without protobuf, and the conversions at the edge
tags/, filetype/ FT_META_* tag ids and flags; extension → eD2K file type
bencode/, torrentmeta/, nzbmeta/, weblinks/ Metafile parsing and identity
verify.go VerifyMetaFile: recompute a metafile's identity and check it against a hash
testdata/ Cross-language vectors

Development

go test ./...
scripts/gen-proto.sh   # only after editing a .proto; needs protoc

Documentation

About

gRPC lib of the multi-network (torrent, usenet, kademlia and ed2k) metadata exchange protocol of eMuleQt

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages