itUse filepath.Join instead of strings.Join to create paths. - 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 96c148ef56eaa2f1d8bc5314568ea9d4ce265922 /git/tordam/commit/96c148ef56eaa2f1d8bc5314568ea9d4ce265922.gph parazyd.org 70 1parent 79e3828b0a407d302f13439ad960a5d146f58db9 /git/tordam/commit/79e3828b0a407d302f13439ad960a5d146f58db9.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Fri, 12 Mar 2021 00:27:14 +0100 Err parazyd.org 70 i Err parazyd.org 70 iUse filepath.Join instead of strings.Join to create paths. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M announce_test.go | 9 +++------ Err parazyd.org 70 i M cmd/tor-dam/tor-dam.go | 23 ++++++++++++++--------- Err parazyd.org 70 i M peer_announce.go | 3 ++- Err parazyd.org 70 i M rpc_announce.go | 5 +++-- Err parazyd.org 70 i Err parazyd.org 70 i4 files changed, 22 insertions(+), 18 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/announce_test.go b/announce_test.go /git/tordam/file/announce_test.go.gph parazyd.org 70 it@@ -23,7 +23,7 @@ import ( Err parazyd.org 70 i "crypto/rand" Err parazyd.org 70 i "encoding/base64" Err parazyd.org 70 i "os" Err parazyd.org 70 i- "strings" Err parazyd.org 70 i+ "path/filepath" Err parazyd.org 70 i "testing" Err parazyd.org 70 i ) Err parazyd.org 70 i Err parazyd.org 70 it@@ -33,11 +33,8 @@ func TestAnnounce(t *testing.T) { Err parazyd.org 70 i t.Fatal(err) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- Cfg.Datadir = os.Getenv("TMPDIR") Err parazyd.org 70 i- if Cfg.Datadir == "" { Err parazyd.org 70 i- Cfg.Datadir = "/tmp" Err parazyd.org 70 i- } Err parazyd.org 70 i- defer os.Remove(strings.Join([]string{Cfg.Datadir, dbFile}, "/")) Err parazyd.org 70 i+ Cfg.Datadir = os.TempDir() Err parazyd.org 70 i+ defer os.Remove(filepath.Join(Cfg.Datadir, dbFile)) Err parazyd.org 70 i Err parazyd.org 70 i vals := []string{ Err parazyd.org 70 i "p7qaewjgnvnaeihhyybmoofd5avh665kr3awoxlh5rt6ox743kjdr6qd.onion:666", 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@@ -28,6 +28,7 @@ import ( Err parazyd.org 70 i "log" Err parazyd.org 70 i "net" Err parazyd.org 70 i "os" Err parazyd.org 70 i+ "path/filepath" Err parazyd.org 70 i "strings" Err parazyd.org 70 i "sync" Err parazyd.org 70 i "time" Err parazyd.org 70 it@@ -50,6 +51,8 @@ var ( Err parazyd.org 70 i noannounce = flag.Bool("n", false, "Do not announce to peers") Err parazyd.org 70 i ) Err parazyd.org 70 i Err parazyd.org 70 i+// generateED25519Keypair is a helper function to generate it, and save the Err parazyd.org 70 i+// seed to a file for later reuse. Err parazyd.org 70 i func generateED25519Keypair(dir string) error { Err parazyd.org 70 i _, sk, err := ed25519.GenerateKey(rand.Reader) Err parazyd.org 70 i if err != nil { Err parazyd.org 70 it@@ -59,12 +62,14 @@ func generateED25519Keypair(dir string) error { Err parazyd.org 70 i return err Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- seedpath := strings.Join([]string{dir, "ed25519.seed"}, "/") Err parazyd.org 70 i+ seedpath := filepath.Join(dir, "ed25519.seed") Err parazyd.org 70 i log.Println("Writing ed25519 key seed to", seedpath) Err parazyd.org 70 i return ioutil.WriteFile(seedpath, Err parazyd.org 70 i []byte(base64.StdEncoding.EncodeToString(sk.Seed())), 0600) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i+// loadED25519Seed is a helper function to read an existing key seed and Err parazyd.org 70 i+// return an ed25519.PrivateKey. Err parazyd.org 70 i func loadED25519Seed(file string) (ed25519.PrivateKey, error) { Err parazyd.org 70 i log.Println("Reading ed25519 seed from", file) Err parazyd.org 70 i Err parazyd.org 70 it@@ -86,9 +91,12 @@ func main() { 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+ // Assign the global tordam data directory Err parazyd.org 70 i+ tordam.Cfg.Datadir = *datadir 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+ if err := generateED25519Keypair(tordam.Cfg.Datadir); err != nil { Err parazyd.org 70 i log.Fatal(err) Err parazyd.org 70 i } Err parazyd.org 70 i os.Exit(0) Err parazyd.org 70 it@@ -106,12 +114,9 @@ func main() { Err parazyd.org 70 i log.Fatalf("invalid listen address: %s (%v)", *listen, err) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- // Assign the global tordam data directory Err parazyd.org 70 i- tordam.Cfg.Datadir = *datadir Err parazyd.org 70 i- Err parazyd.org 70 i // Load the ed25519 signing key into the tordam global Err parazyd.org 70 i- tordam.SignKey, err = loadED25519Seed(strings.Join( Err parazyd.org 70 i- []string{*datadir, "ed25519.seed"}, "/")) Err parazyd.org 70 i+ tordam.SignKey, err = loadED25519Seed( Err parazyd.org 70 i+ filepath.Join(tordam.Cfg.Datadir, "ed25519.seed")) 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 it@@ -132,8 +137,8 @@ func main() { Err parazyd.org 70 i Err parazyd.org 70 i // Read the onion hostname from the datadir and map it into the Err parazyd.org 70 i // global tordam.Onion variable Err parazyd.org 70 i- onionaddr, err := ioutil.ReadFile(strings.Join([]string{ Err parazyd.org 70 i- tordam.Cfg.Datadir, "hs", "hostname"}, "/")) Err parazyd.org 70 i+ onionaddr, err := ioutil.ReadFile( Err parazyd.org 70 i+ filepath.Join(tordam.Cfg.Datadir, "hs", "hostname")) 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 1diff --git a/peer_announce.go b/peer_announce.go /git/tordam/file/peer_announce.go.gph parazyd.org 70 it@@ -22,6 +22,7 @@ import ( Err parazyd.org 70 i "crypto/ed25519" Err parazyd.org 70 i "encoding/base64" Err parazyd.org 70 i "log" Err parazyd.org 70 i+ "path/filepath" Err parazyd.org 70 i "strings" Err parazyd.org 70 i Err parazyd.org 70 i "github.com/creachadair/jrpc2" Err parazyd.org 70 it@@ -111,6 +112,6 @@ func AppendPeers(p []string) error { Err parazyd.org 70 i Peers[i] = Peer{} Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- writePeersDBWithSem(strings.Join([]string{Cfg.Datadir, dbFile}, "/")) Err parazyd.org 70 i+ writePeersDBWithSem(filepath.Join(Cfg.Datadir, dbFile)) Err parazyd.org 70 i return nil Err parazyd.org 70 i } Err parazyd.org 70 1diff --git a/rpc_announce.go b/rpc_announce.go /git/tordam/file/rpc_announce.go.gph parazyd.org 70 it@@ -22,6 +22,7 @@ import ( Err parazyd.org 70 i "crypto/ed25519" Err parazyd.org 70 i "encoding/base64" Err parazyd.org 70 i "errors" Err parazyd.org 70 i+ "path/filepath" Err parazyd.org 70 i "strings" Err parazyd.org 70 i "time" Err parazyd.org 70 i ) Err parazyd.org 70 it@@ -122,7 +123,7 @@ func (Ann) Init(ctx context.Context, vals []string) ([]string, error) { Err parazyd.org 70 i peer.Trusted = 0 Err parazyd.org 70 i Peers[onion] = peer Err parazyd.org 70 i Err parazyd.org 70 i- writePeersDBWithSem(strings.Join([]string{Cfg.Datadir, dbFile}, "/")) Err parazyd.org 70 i+ writePeersDBWithSem(filepath.Join(Cfg.Datadir, dbFile)) Err parazyd.org 70 i return []string{nonce, newrevoke}, nil Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 it@@ -195,7 +196,7 @@ func (Ann) Validate(ctx context.Context, vals []string) ([]string, error) { Err parazyd.org 70 i peer.LastSeen = time.Now().Unix() Err parazyd.org 70 i Peers[onion] = peer Err parazyd.org 70 i Err parazyd.org 70 i- writePeersDBWithSem(strings.Join([]string{Cfg.Datadir, dbFile}, "/")) Err parazyd.org 70 i+ writePeersDBWithSem(filepath.Join(Cfg.Datadir, dbFile)) Err parazyd.org 70 i Err parazyd.org 70 i rpcInfo("ann.Validate", "sending back list of peers to", onion) Err parazyd.org 70 i return ret, nil Err parazyd.org 70 .