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