itAdd support for local directories.txt and add the DIR: parsing in damlib. - 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 66f1745bb34516d63b6bbde0e3dedf4dcbc41543 /git/tordam/commit/66f1745bb34516d63b6bbde0e3dedf4dcbc41543.gph parazyd.org 70 1parent 827c61575a30fb5af97f94f6de741d93a13a2f77 /git/tordam/commit/827c61575a30fb5af97f94f6de741d93a13a2f77.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Tue, 13 Mar 2018 11:10:59 +0100 Err parazyd.org 70 i Err parazyd.org 70 iAdd support for local directories.txt and add the DIR: parsing in damlib. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M cmd/dam-client/main.go | 19 ++++++++----------- Err parazyd.org 70 i M pkg/damlib/helpers.go | 17 +++++++++++++++++ Err parazyd.org 70 i Err parazyd.org 70 i2 files changed, 25 insertions(+), 11 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@@ -34,7 +34,6 @@ import ( Err parazyd.org 70 i "os" Err parazyd.org 70 i "os/exec" Err parazyd.org 70 i "strconv" Err parazyd.org 70 i- "strings" Err parazyd.org 70 i "sync" Err parazyd.org 70 i "time" Err parazyd.org 70 i Err parazyd.org 70 it@@ -162,16 +161,14 @@ func fetchDirlist(locations []string) ([]string, error) { Err parazyd.org 70 i if err != nil { Err parazyd.org 70 i return nil, err Err parazyd.org 70 i } Err parazyd.org 70 i- dirStr := string(dirs) Err parazyd.org 70 i- _dirs := strings.Split(dirStr, "\n") Err parazyd.org 70 i- for _, j := range _dirs { Err parazyd.org 70 i- if strings.HasPrefix(j, "DIR:") { Err parazyd.org 70 i- t := strings.Split(j, "DIR:") Err parazyd.org 70 i- if !(lib.StringInSlice(t[1], dirSlice)) { Err parazyd.org 70 i- dirSlice = append(dirSlice, t[1]) Err parazyd.org 70 i- } Err parazyd.org 70 i- } Err parazyd.org 70 i- } Err parazyd.org 70 i+ dirSlice = lib.ParseDirs(dirSlice, dirs) Err parazyd.org 70 i+ } Err parazyd.org 70 i+ Err parazyd.org 70 i+ // Local ~/.dam/directories.txt Err parazyd.org 70 i+ if _, err := os.Stat("directories.txt"); err == nil { Err parazyd.org 70 i+ dirs, err := ioutil.ReadFile("directories.txt") Err parazyd.org 70 i+ lib.CheckError(err) Err parazyd.org 70 i+ dirSlice = lib.ParseDirs(dirSlice, dirs) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i // Local nodes known to redis Err parazyd.org 70 1diff --git a/pkg/damlib/helpers.go b/pkg/damlib/helpers.go /git/tordam/file/pkg/damlib/helpers.go.gph parazyd.org 70 it@@ -25,6 +25,7 @@ import ( Err parazyd.org 70 i "compress/gzip" Err parazyd.org 70 i "encoding/base64" Err parazyd.org 70 i "log" Err parazyd.org 70 i+ "strings" Err parazyd.org 70 i ) Err parazyd.org 70 i Err parazyd.org 70 i // CheckError is a handler for errors. It takes an error type as an argument, Err parazyd.org 70 it@@ -62,3 +63,19 @@ func GzipEncode(data []byte) (string, error) { Err parazyd.org 70 i } Err parazyd.org 70 i return base64.StdEncoding.EncodeToString(b.Bytes()), nil Err parazyd.org 70 i } Err parazyd.org 70 i+ Err parazyd.org 70 i+// ParseDirs parses and appends a given slice of bytes and returns an appended Err parazyd.org 70 i+// slice of strings with new contents. Err parazyd.org 70 i+func ParseDirs(sl []string, data []byte) []string { Err parazyd.org 70 i+ dirStr := string(data) Err parazyd.org 70 i+ _dirs := strings.Split(dirStr, "\n") Err parazyd.org 70 i+ for _, j := range _dirs { Err parazyd.org 70 i+ if strings.HasPrefix(j, "DIR:") { Err parazyd.org 70 i+ t := strings.Split(j, "DIR:") Err parazyd.org 70 i+ if !(StringInSlice(t[1], sl)) { Err parazyd.org 70 i+ sl = append(sl, t[1]) Err parazyd.org 70 i+ } Err parazyd.org 70 i+ } Err parazyd.org 70 i+ } Err parazyd.org 70 i+ return sl Err parazyd.org 70 i+} Err parazyd.org 70 .