itcmd/tor-dam: Write some more documentation and clean up. - tordam - A library for peer discovery inside the Tor network Err parazyd.org 70 hgit clone https://git.parazyd.org/tordam URL:https://git.parazyd.org/tordam parazyd.org 70 1Log /git/tordam/log.gph parazyd.org 70 1Files /git/tordam/files.gph parazyd.org 70 1Refs /git/tordam/refs.gph parazyd.org 70 1README /git/tordam/file/README.md.gph parazyd.org 70 1LICENSE /git/tordam/file/LICENSE.gph parazyd.org 70 i--- Err parazyd.org 70 1commit 7af2d65892ef925279b8d5b41b44015995433915 /git/tordam/commit/7af2d65892ef925279b8d5b41b44015995433915.gph parazyd.org 70 1parent 0d439d8aa0449fed236a0a5ff5ceedb9d69ff860 /git/tordam/commit/0d439d8aa0449fed236a0a5ff5ceedb9d69ff860.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Mon, 8 Mar 2021 01:11:43 +0100 Err parazyd.org 70 i Err parazyd.org 70 icmd/tor-dam: Write some more documentation and clean up. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M cmd/tor-dam/tor-dam.go | 30 ++++++++++++++++-------------- Err parazyd.org 70 i Err parazyd.org 70 i1 file changed, 16 insertions(+), 14 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/cmd/tor-dam/tor-dam.go b/cmd/tor-dam/tor-dam.go /git/tordam/file/cmd/tor-dam/tor-dam.go.gph parazyd.org 70 it@@ -78,11 +78,14 @@ func loadED25519Seed(file string) (ed25519.PrivateKey, error) { Err parazyd.org 70 i return ed25519.NewKeyFromSeed(dec), nil Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i+// main here is the reference workflow of tor-dam's peer discovery. It's steps Err parazyd.org 70 i+// are commented and implement a generic way of using the tordam library. Err parazyd.org 70 i func main() { Err parazyd.org 70 i flag.Parse() Err parazyd.org 70 i var wg sync.WaitGroup Err parazyd.org 70 i var err error Err parazyd.org 70 i Err parazyd.org 70 i+ // Generate the ed25519 keypair used for signing and validating Err parazyd.org 70 i if *generate { Err parazyd.org 70 i if err := generateED25519Keypair(*datadir); err != nil { Err parazyd.org 70 i log.Fatal(err) Err parazyd.org 70 it@@ -90,13 +93,6 @@ func main() { Err parazyd.org 70 i os.Exit(0) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- // Validate given seeds Err parazyd.org 70 i- for _, i := range strings.Split(*seeds, ",") { Err parazyd.org 70 i- if err := tordam.ValidateOnionInternal(i); err != nil { Err parazyd.org 70 i- log.Fatalf("invalid seed %s (%v)", i, err) Err parazyd.org 70 i- } Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i // Assign portmap to tordam Cfg global and validate it Err parazyd.org 70 i tordam.Cfg.Portmap = strings.Split(*portmap, ",") Err parazyd.org 70 i if err := tordam.ValidatePortmap(tordam.Cfg.Portmap); err != nil { Err parazyd.org 70 it@@ -142,16 +138,16 @@ func main() { Err parazyd.org 70 i log.Println("Our onion address is:", tordam.Onion) Err parazyd.org 70 i Err parazyd.org 70 i // Start the JSON-RPC server with announce endpoints. Err parazyd.org 70 i- // This is done in the library user rather than internally in the library Err parazyd.org 70 i+ // This is done in the program rather than internally in the library Err parazyd.org 70 i // because it is more useful and easier to add additional JSON-RPC Err parazyd.org 70 i- // endpoints to the same server. Err parazyd.org 70 i+ // endpoints to the same server if necessary. Err parazyd.org 70 i l, err := net.Listen(jrpc2.Network(tordam.Cfg.Listen.String()), Err parazyd.org 70 i tordam.Cfg.Listen.String()) Err parazyd.org 70 i if err != nil { Err parazyd.org 70 i log.Fatal(err) Err parazyd.org 70 i } Err parazyd.org 70 i defer l.Close() Err parazyd.org 70 i- // Endpoints are assigned here Err parazyd.org 70 i+ // JSON-RPC endpoints are assigned here Err parazyd.org 70 i assigner := handler.ServiceMap{ Err parazyd.org 70 i // "ann" is the JSON-RPC endpoint for peer discovery/announcement Err parazyd.org 70 i "ann": handler.NewService(tordam.Ann{}), Err parazyd.org 70 it@@ -166,6 +162,13 @@ func main() { Err parazyd.org 70 i wg.Wait() Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i+ // Validate given seeds Err parazyd.org 70 i+ for _, i := range strings.Split(*seeds, ",") { Err parazyd.org 70 i+ if err := tordam.ValidateOnionInternal(i); err != nil { Err parazyd.org 70 i+ log.Fatalf("invalid seed %s (%v)", i, err) Err parazyd.org 70 i+ } Err parazyd.org 70 i+ } Err parazyd.org 70 i+ Err parazyd.org 70 i // Announce to initial seeds Err parazyd.org 70 i var succ int = 0 // Track of successful announces Err parazyd.org 70 i for _, i := range strings.Split(*seeds, ",") { Err parazyd.org 70 it@@ -187,9 +190,8 @@ func main() { Err parazyd.org 70 i log.Printf("Successfully announced to %d peers.", succ) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- j, err := json.Marshal(tordam.Peers) Err parazyd.org 70 i- if err != nil { Err parazyd.org 70 i- log.Fatal(err) Err parazyd.org 70 i- } Err parazyd.org 70 i+ // Marshal the global Peers map to JSON and print it out. Err parazyd.org 70 i+ // Internally, the db is also saved (written to a file) in the datadir. Err parazyd.org 70 i+ j, _ := json.Marshal(tordam.Peers) Err parazyd.org 70 i log.Println(string(j)) Err parazyd.org 70 i } Err parazyd.org 70 .