itImplement deletion in damlib's PublishToRedis function. - 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 9147bc58a4b1708622c4a466902136930e9db07f /git/tordam/commit/9147bc58a4b1708622c4a466902136930e9db07f.gph parazyd.org 70 1parent 475f06264c63ca48384bbc8c0f1492fd7d4512c8 /git/tordam/commit/475f06264c63ca48384bbc8c0f1492fd7d4512c8.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Sat, 27 Oct 2018 13:02:21 +0200 Err parazyd.org 70 i Err parazyd.org 70 iImplement deletion in damlib's PublishToRedis function. Err parazyd.org 70 i Err parazyd.org 70 iThe function now requires an additional argument, which will tell it Err parazyd.org 70 iwhether the event is deletion or not. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M cmd/dam-dir/main.go | 6 +++--- Err parazyd.org 70 i M pkg/damlib/redis.go | 4 +++- Err parazyd.org 70 i Err parazyd.org 70 i2 files changed, 6 insertions(+), 4 deletions(-) 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@@ -192,7 +192,7 @@ func handlePost(rw http.ResponseWriter, request *http.Request) { Err parazyd.org 70 i lib.CheckError(err) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- lib.PublishToRedis(n.Address) Err parazyd.org 70 i+ lib.PublishToRedis("am", n.Address) Err parazyd.org 70 i Err parazyd.org 70 i return Err parazyd.org 70 i } Err parazyd.org 70 it@@ -200,7 +200,7 @@ func handlePost(rw http.ResponseWriter, request *http.Request) { Err parazyd.org 70 i // If we have't returned so far, the handshake is invalid. Err parazyd.org 70 i log.Printf("%s: 2/2 handshake invalid.\n", n.Address) Err parazyd.org 70 i // Delete it all from redis. Err parazyd.org 70 i- // TODO: Also pubsub here. Err parazyd.org 70 i+ lib.PublishToRedis("d", n.Address) Err parazyd.org 70 i _, err := lib.RedisCli.Del(n.Address).Result() Err parazyd.org 70 i lib.CheckError(err) Err parazyd.org 70 i if err := postback(rw, ret, 400); err != nil { Err parazyd.org 70 it@@ -226,7 +226,7 @@ func pollNodeTTL(interval int64) { Err parazyd.org 70 i diff := int64((now - int64(lastseen)) / 60) Err parazyd.org 70 i if diff > interval { Err parazyd.org 70 i log.Printf("Deleting %s from redis because of expiration\n", i) Err parazyd.org 70 i- // TODO: Redis pubsub Err parazyd.org 70 i+ lib.PublishToRedis("d", i) Err parazyd.org 70 i lib.RedisCli.Del(i) Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 1diff --git a/pkg/damlib/redis.go b/pkg/damlib/redis.go /git/tordam/file/pkg/damlib/redis.go.gph parazyd.org 70 it@@ -38,7 +38,7 @@ var RedisCli = redis.NewClient(&redis.Options{ Err parazyd.org 70 i Err parazyd.org 70 i // PublishToRedis is a function that publishes a node's status to Redis. Err parazyd.org 70 i // This is used for Gource visualization. Err parazyd.org 70 i-func PublishToRedis(address string) { Err parazyd.org 70 i+func PublishToRedis(mt, address string) { Err parazyd.org 70 i var timestamp, username, modtype, onion, pubstr string Err parazyd.org 70 i Err parazyd.org 70 i nodedata, err := RedisCli.HGetAll(address).Result() Err parazyd.org 70 it@@ -47,6 +47,8 @@ func PublishToRedis(address string) { Err parazyd.org 70 i timestamp = nodedata["lastseen"] Err parazyd.org 70 i if timestamp == nodedata["firstseen"] { Err parazyd.org 70 i modtype = "A" Err parazyd.org 70 i+ } else if mt == "d" { Err parazyd.org 70 i+ modtype = "D" Err parazyd.org 70 i } else { Err parazyd.org 70 i modtype = "M" Err parazyd.org 70 i } Err parazyd.org 70 .