Compare commits

..

No commits in common. "95cae1c6d06ef85d60818846adebd5cdb728ba62" and "98cb8c734c66977b1f0d270a95f7b7cd196527e2" have entirely different histories.

4 changed files with 3 additions and 38 deletions

1
.gitignore vendored
View file

@ -1,3 +1,2 @@
internal/meshtastic/generated/* internal/meshtastic/generated/*
website/nodes.json website/nodes.json
blocklist.txt

View file

@ -1,7 +1,6 @@
package main package main
import ( import (
"bufio"
"errors" "errors"
"flag" "flag"
"io/fs" "io/fs"
@ -9,7 +8,6 @@ import (
"os" "os"
"os/signal" "os/signal"
"regexp" "regexp"
"strconv"
"sync" "sync"
"sync/atomic" "sync/atomic"
"syscall" "syscall"
@ -175,9 +173,8 @@ func handleMessage(from uint32, topic string, portNum generated.PortNum, payload
} }
func main() { func main() {
var dbPath, blockedPath string var dbPath string
flag.StringVar(&dbPath, "f", "", "node database `file`") flag.StringVar(&dbPath, "f", "", "node database `file`")
flag.StringVar(&blockedPath, "b", "", "node blocklist `file`")
flag.Parse() flag.Parse()
// load or make NodeDB // load or make NodeDB
if len(dbPath) > 0 { if len(dbPath) > 0 {
@ -190,34 +187,9 @@ func main() {
if Nodes == nil { if Nodes == nil {
Nodes = make(meshtastic.NodeDB) Nodes = make(meshtastic.NodeDB)
} }
// load node blocklist
blocked := make(map[uint32]struct{})
if len(blockedPath) > 0 {
f, err := os.Open(blockedPath)
if err != nil {
log.Fatalf("[error] open blocklist: %v", err)
}
s := bufio.NewScanner(f)
for s.Scan() {
n, err := strconv.ParseUint(s.Text(), 10, 32)
if err == nil {
blocked[uint32(n)] = struct{}{}
log.Printf("[info] node %v blocked", n)
}
}
f.Close()
err = s.Err()
if err != nil {
log.Fatalf("[error] read blocklist: %v", err)
}
}
// connect to MQTT // connect to MQTT
client := &meshtastic.MQTTClient{ client := &meshtastic.MQTTClient{
TopicRegex: regexp.MustCompile(`/2/e/[^/]+/![0-9a-f]+$|/2/map/$`), TopicRegex: regexp.MustCompile(`/2/e/[^/]+/![0-9a-f]+$|/2/map/$`),
Accept: func(from uint32) bool {
_, found := blocked[from]
return !found
},
BlockCipher: meshtastic.NewBlockCipher(meshtastic.DefaultKey), BlockCipher: meshtastic.NewBlockCipher(meshtastic.DefaultKey),
MessageHandler: handleMessage, MessageHandler: handleMessage,
} }

View file

@ -33,7 +33,6 @@ func NewBlockCipher(key []byte) cipher.Block {
type MQTTClient struct { type MQTTClient struct {
TopicRegex *regexp.Regexp TopicRegex *regexp.Regexp
Accept func(from uint32) bool
BlockCipher cipher.Block BlockCipher cipher.Block
MessageHandler func(from uint32, topic string, portNum generated.PortNum, payload []byte) MessageHandler func(from uint32, topic string, portNum generated.PortNum, payload []byte)
topics []string topics []string
@ -106,10 +105,6 @@ func (c *MQTTClient) handleMessage(_ mqtt.Client, msg mqtt.Message) {
log.Printf("[warn] skipping MeshPacket from unknown on %v", topic) log.Printf("[warn] skipping MeshPacket from unknown on %v", topic)
return return
} }
// check sender
if c.Accept != nil && !c.Accept(from) {
return
}
// get Data, try decoded first // get Data, try decoded first
data := packet.GetDecoded() data := packet.GetDecoded()
if data == nil { if data == nil {

View file

@ -7,5 +7,4 @@ docker run --name meshobserv \
--restart unless-stopped \ --restart unless-stopped \
-v /data:/data \ -v /data:/data \
-d meshobserv \ -d meshobserv \
-f /data/meshmap.net/website/nodes.json \ -f /data/meshmap.net/website/nodes.json
-b /data/meshmap.net/blocklist.txt