From 5ac632517a92d0a3157e9dd8c0fd7ffbeece6e87 Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Thu, 19 Dec 2024 22:56:40 -0500 Subject: [PATCH] feat: add read receipts and hidden mode --- .env_template | 1 + config.go | 1 + docker-compose-dev.yml | 1 + docker-compose.yml | 1 + main.go | 16 +++++++++++++++- 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/.env_template b/.env_template index 5b6c8d9..8fcdab0 100644 --- a/.env_template +++ b/.env_template @@ -4,6 +4,7 @@ GUARDIAN_PASSWORD=yourVerySecurePassword GUARDIAN_MANAGEMENT_ROOM_ID=!ABCdefGHIjklMNOpqr:matrix.org GUARDIAN_MANAGEMENT_ROOM_REPORTS=true GUARDIAN_TEST_MODE=false +GUARDIAN_HIDDEN_MODE=false GUARDIAN_VIRUS_TOTAL_KEY= GUARDIAN_URL_FILTER=true GUARDIAN_URL_CHECK_VIRUS_TOTAL=false diff --git a/config.go b/config.go index a310a3c..8c624e8 100644 --- a/config.go +++ b/config.go @@ -18,6 +18,7 @@ type Config struct { // OPTIONAL // mngtRoomReports bool // "GUARDIAN_MANAGEMENT_ROOM_REPORTS", default: true testMode bool // "GUARDIAN_TEST_MODE", default: false + hiddenMode bool // "GUARDIAN_HIDDEN_MODE", default: false virusTotalKey string // "GUARDIAN_VIRUS_TOTAL_KEY", default: useUrlFilter bool // "GUARDIAN_URL_FILTER", default: true useUrlCheckVt bool // "GUARDIAN_URL_CHECK_VIRUS_TOTAL", default: false diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 959ccf6..4d49226 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -14,6 +14,7 @@ services: # Optional (defaults filled in) GUARDIAN_MANAGEMENT_ROOM_REPORTS: ${GUARDIAN_MANAGEMENT_ROOM_REPORTS} GUARDIAN_TEST_MODE: ${GUARDIAN_TEST_MODE} + GUARDIAN_HIDDEN_MODE: ${GUARDIAN_HIDDEN_MODE} GUARDIAN_VIRUS_TOTAL_KEY: ${GUARDIAN_VIRUS_TOTAL_KEY} GUARDIAN_URL_FILTER: ${GUARDIAN_URL_FILTER} GUARDIAN_URL_CHECK_VIRUS_TOTAL: ${GUARDIAN_URL_CHECK_VIRUS_TOTAL} diff --git a/docker-compose.yml b/docker-compose.yml index c64260b..796577b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,6 +14,7 @@ services: # Optional (defaults filled in) GUARDIAN_MANAGEMENT_ROOM_REPORTS: true GUARDIAN_TEST_MODE: false + GUARDIAN_HIDDEN_MODE: false GUARDIAN_VIRUS_TOTAL_KEY: "" GUARDIAN_URL_FILTER: true GUARDIAN_URL_CHECK_VIRUS_TOTAL: false diff --git a/main.go b/main.go index ec9bf21..4cef663 100644 --- a/main.go +++ b/main.go @@ -155,7 +155,12 @@ func onProtectedRoomMessage(client *mautrix.Client, ctx context.Context, evt *ev reg := regexp.MustCompile(filter.RegexUrl) urls := reg.FindAllString(evt.Content.AsMessage().Body, -1) if len(urls) == 0 { - // TODO send read indicator + if !config.hiddenMode { + err := client.SendReceipt(ctx, evt.RoomID, evt.ID, event.ReceiptTypeRead, nil) + if err != nil { + return + } + } return } if config.useUrlFilter && filter.IsUrlFiltered(database, urls) { @@ -170,6 +175,9 @@ func onProtectedRoomMessage(client *mautrix.Client, ctx context.Context, evt *ev redactMessage(client, ctx, evt, "found suspicious URL (FishFish)") return } + if config.hiddenMode { + return + } _, err := client.SendReaction(ctx, evt.RoomID, evt.ID, "🛡️") if err != nil { return @@ -243,12 +251,14 @@ func readConfig() Config { mngtRoomId := util.GetEnv("GUARDIAN_MANAGEMENT_ROOM_ID", true, false) mngtRoomReports := util.GetEnv("GUARDIAN_MANAGEMENT_ROOM_REPORTS", true, true) testMode := util.GetEnv("GUARDIAN_TEST_MODE", true, true) + hiddenMode := util.GetEnv("GUARDIAN_HIDDEN_MODE", true, true) virusTotalKey := util.GetEnv("GUARDIAN_VIRUS_TOTAL_KEY", true, false) useUrlFilter := util.GetEnv("GUARDIAN_URL_FILTER", true, true) useUrlCheckVt := util.GetEnv("GUARDIAN_URL_CHECK_VIRUS_TOTAL", true, true) useUrlCheckFf := util.GetEnv("GUARDIAN_URL_CHECK_FISHFISH", true, true) mngtRoomReportsBool := true testModeBool := false + hiddenModeBool := false useUrlFilterBool := true useUrlCheckVtBool := false useUrlCheckFfBool := false @@ -285,6 +295,9 @@ func readConfig() Config { testModeBool = true fmt.Println("!!! Running in test mode !!!") } + if hiddenMode == "true" { + hiddenModeBool = true + } if useUrlFilter == "false" { useUrlFilterBool = false } @@ -308,6 +321,7 @@ func readConfig() Config { // OPTIONAL // mngtRoomReports: mngtRoomReportsBool, testMode: testModeBool, + hiddenMode: hiddenModeBool, virusTotalKey: virusTotalKey, useUrlFilter: useUrlFilterBool, useUrlCheckVt: useUrlCheckVtBool,