itMake flags global variables in dam-client and dam-dir. - 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 7a8f7cbade62be63c5ff6eaaa36a258f4c12c25f /git/tordam/commit/7a8f7cbade62be63c5ff6eaaa36a258f4c12c25f.gph parazyd.org 70 1parent f0a5b182e0630a0751bea2cbaf452af75a467761 /git/tordam/commit/f0a5b182e0630a0751bea2cbaf452af75a467761.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Fri, 4 Oct 2019 15:31:18 +0200 Err parazyd.org 70 i Err parazyd.org 70 iMake flags global variables in dam-client and dam-dir. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M cmd/dam-client/main.go | 32 +++++++++++++++---------------- Err parazyd.org 70 i M cmd/dam-dir/main.go | 27 +++++++++++++++------------ Err parazyd.org 70 i Err parazyd.org 70 i2 files changed, 30 insertions(+), 29 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/cmd/dam-client/main.go b/cmd/dam-client/main.go /git/tordam/file/cmd/dam-client/main.go.gph parazyd.org 70 it@@ -46,6 +46,13 @@ type msgStruct struct { Err parazyd.org 70 i Secret string Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i+var ( Err parazyd.org 70 i+ noremote = flag.Bool("noremote", false, "Don't fetch remote entrypoints.") Err parazyd.org 70 i+ gen = flag.Bool("gen", false, "Only (re)generate keypairs and exit cleanly.") Err parazyd.org 70 i+ annint = flag.Int("ai", 5, "Announce interval (in minutes)") Err parazyd.org 70 i+ remoteentry = flag.String("remoteentry", "https://dam.decodeproject.eu/dirs.txt", "Remote list of entrypoints. (comma-separated)") Err parazyd.org 70 i+) Err parazyd.org 70 i+ Err parazyd.org 70 i func clientInit(gen bool) error { Err parazyd.org 70 i pub, priv, err := lib.GenEd25519() Err parazyd.org 70 i if err != nil { Err parazyd.org 70 it@@ -74,13 +81,13 @@ func clientInit(gen bool) error { Err parazyd.org 70 i return nil Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i-func fetchNodeList(epLists []string, noremote bool) ([]string, error) { Err parazyd.org 70 i+func fetchNodeList(epLists []string, remote bool) ([]string, error) { Err parazyd.org 70 i var nodeslice, nodelist []string Err parazyd.org 70 i Err parazyd.org 70 i log.Println("Fetching a list of nodes.") Err parazyd.org 70 i Err parazyd.org 70 i // Remote network entrypoints Err parazyd.org 70 i- if !(noremote) { Err parazyd.org 70 i+ if !(remote) { Err parazyd.org 70 i for _, i := range epLists { Err parazyd.org 70 i log.Println("Fetching", i) Err parazyd.org 70 i n, err := lib.HTTPDownload(i) Err parazyd.org 70 it@@ -223,21 +230,12 @@ func announce(node string, vals map[string]string, privkey ed25519.PrivateKey) ( Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i func main() { Err parazyd.org 70 i- var noremote, gen bool Err parazyd.org 70 i- var ai int Err parazyd.org 70 i- var dh string Err parazyd.org 70 i- Err parazyd.org 70 i- flag.BoolVar(&noremote, "d", false, "Don't fetch remote entrypoints.") Err parazyd.org 70 i- flag.BoolVar(&gen, "gen", false, "Only (re)generate keypairs and exit cleanly.") Err parazyd.org 70 i- flag.IntVar(&ai, "ai", 5, "Announce interval in minutes.") Err parazyd.org 70 i- flag.StringVar(&dh, "dh", "https://dam.decodeproject.eu/dirs.txt", Err parazyd.org 70 i- "Remote lists of entrypoints. (comma-separated)") Err parazyd.org 70 i flag.Parse() Err parazyd.org 70 i Err parazyd.org 70 i // Network entrypoints. These files hold the lists of nodes we can announce Err parazyd.org 70 i // to initially. Format is "DIR:unlikelynamefora.onion", other lines are Err parazyd.org 70 i // ignored and can be used as comments or similar. Err parazyd.org 70 i- epLists := strings.Split(dh, ",") Err parazyd.org 70 i+ epLists := strings.Split(*remoteentry, ",") Err parazyd.org 70 i Err parazyd.org 70 i if _, err := os.Stat(lib.Workdir); os.IsNotExist(err) { Err parazyd.org 70 i err := os.Mkdir(lib.Workdir, 0700) Err parazyd.org 70 it@@ -246,8 +244,8 @@ func main() { Err parazyd.org 70 i err := os.Chdir(lib.Workdir) Err parazyd.org 70 i lib.CheckError(err) Err parazyd.org 70 i Err parazyd.org 70 i- if _, err = os.Stat(lib.PrivKeyPath); os.IsNotExist(err) || gen { Err parazyd.org 70 i- err = clientInit(gen) Err parazyd.org 70 i+ if _, err = os.Stat(lib.PrivKeyPath); os.IsNotExist(err) || *gen { Err parazyd.org 70 i+ err = clientInit(*gen) Err parazyd.org 70 i lib.CheckError(err) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 it@@ -290,7 +288,7 @@ func main() { Err parazyd.org 70 i log.Println("Announcing to nodes...") Err parazyd.org 70 i var ann = 0 // Track of successful authentications. Err parazyd.org 70 i var wg sync.WaitGroup Err parazyd.org 70 i- nodes, err := fetchNodeList(epLists, noremote) Err parazyd.org 70 i+ nodes, err := fetchNodeList(epLists, *noremote) Err parazyd.org 70 i if err != nil { Err parazyd.org 70 i // No route to host, or failed download. Try later. Err parazyd.org 70 i log.Println("Failed to fetch any nodes. Retrying in a minute.") Err parazyd.org 70 it@@ -333,7 +331,7 @@ func main() { Err parazyd.org 70 i wg.Wait() Err parazyd.org 70 i Err parazyd.org 70 i log.Printf("%d successful authentications.\n", ann) Err parazyd.org 70 i- log.Printf("Waiting %d min before next announce.\n", ai) Err parazyd.org 70 i- time.Sleep(time.Duration(ai) * time.Minute) Err parazyd.org 70 i+ log.Printf("Waiting %d min before next announce.\n", *annint) Err parazyd.org 70 i+ time.Sleep(time.Duration(*annint) * time.Minute) Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 1diff --git a/cmd/dam-dir/main.go b/cmd/dam-dir/main.go /git/tordam/file/cmd/dam-dir/main.go.gph parazyd.org 70 it@@ -47,6 +47,12 @@ type nodeStruct struct { Err parazyd.org 70 i Valid int64 Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i+var ( Err parazyd.org 70 i+ testnet = flag.Bool("t", false, "Mark all new nodes valid initially.") Err parazyd.org 70 i+ ttl = flag.Int64("ttl", 0, "Set expiry time in minutes (TTL) for nodes.") Err parazyd.org 70 i+ redconf = flag.String("redconf", "/usr/local/share/tor-dam/redis.conf", "Path to redis' redis.conf.") Err parazyd.org 70 i+) Err parazyd.org 70 i+ Err parazyd.org 70 i func postback(rw http.ResponseWriter, data map[string]string, retCode int) error { Err parazyd.org 70 i jsonVal, err := json.Marshal(data) Err parazyd.org 70 i if err != nil { Err parazyd.org 70 it@@ -219,15 +225,12 @@ func pollNodeTTL(interval int64) { Err parazyd.org 70 i func handleElse(rw http.ResponseWriter, request *http.Request) {} Err parazyd.org 70 i Err parazyd.org 70 i func main() { Err parazyd.org 70 i- var wg sync.WaitGroup Err parazyd.org 70 i- var ttl int64 Err parazyd.org 70 i- var redconf string Err parazyd.org 70 i- Err parazyd.org 70 i- flag.BoolVar(&lib.Testnet, "t", false, "Mark all new nodes valid initially") Err parazyd.org 70 i- flag.Int64Var(&ttl, "ttl", 0, "Set expiry time in minutes (TTL) for nodes") Err parazyd.org 70 i- flag.StringVar(&redconf, "redconf", "/usr/local/share/tor-dam/redis.conf", Err parazyd.org 70 i- "Path to redis' redis.conf.") Err parazyd.org 70 i flag.Parse() Err parazyd.org 70 i+ var wg sync.WaitGroup Err parazyd.org 70 i+ if *testnet { Err parazyd.org 70 i+ log.Println("Enabling testnet") Err parazyd.org 70 i+ lib.Testnet = true Err parazyd.org 70 i+ } Err parazyd.org 70 i Err parazyd.org 70 i // Chdir to our working directory. Err parazyd.org 70 i if _, err := os.Stat(lib.Workdir); os.IsNotExist(err) { Err parazyd.org 70 it@@ -239,7 +242,7 @@ func main() { Err parazyd.org 70 i Err parazyd.org 70 i if _, err := lib.RedisCli.Ping().Result(); err != nil { Err parazyd.org 70 i // We assume redis is not running. Start it up. Err parazyd.org 70 i- cmd, err := lib.StartRedis(redconf) Err parazyd.org 70 i+ cmd, err := lib.StartRedis(*redconf) Err parazyd.org 70 i defer cmd.Process.Kill() Err parazyd.org 70 i lib.CheckError(err) Err parazyd.org 70 i } Err parazyd.org 70 it@@ -261,9 +264,9 @@ func main() { Err parazyd.org 70 i go srv.ListenAndServe() Err parazyd.org 70 i log.Println("Listening on", ListenAddress) Err parazyd.org 70 i Err parazyd.org 70 i- if ttl > 0 { Err parazyd.org 70 i- log.Printf("Enabling TTL polling (%d minute expire time).\n", ttl) Err parazyd.org 70 i- go pollNodeTTL(ttl) Err parazyd.org 70 i+ if *ttl > 0 { Err parazyd.org 70 i+ log.Printf("Enabling TTL polling (%d minute expire time).\n", *ttl) Err parazyd.org 70 i+ go pollNodeTTL(*ttl) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i wg.Wait() Err parazyd.org 70 .