mirror of
https://github.com/brianshea2/meshmap.net.git
synced 2025-03-05 21:00:01 -08:00
Compare commits
No commits in common. "95cae1c6d06ef85d60818846adebd5cdb728ba62" and "98cb8c734c66977b1f0d270a95f7b7cd196527e2" have entirely different histories.
95cae1c6d0
...
98cb8c734c
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,2 @@
|
||||||
internal/meshtastic/generated/*
|
internal/meshtastic/generated/*
|
||||||
website/nodes.json
|
website/nodes.json
|
||||||
blocklist.txt
|
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
Loading…
Reference in a new issue