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