This commit is contained in:
Gilles Soulier
2026-05-23 07:36:06 +02:00
parent 55e68189d3
commit dc60fe2a8d
6 changed files with 677 additions and 6 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ import (
ws "github.com/user/nanometrics/server/websocket"
)
const serverVersion = "0.1.0"
const serverVersion = "0.1.1"
func main() {
cfg := config.Load()
+13 -4
View File
@@ -2,6 +2,7 @@ package transport
import (
"encoding/json"
"fmt"
"log"
"net"
@@ -17,23 +18,31 @@ func StartUDP(addr string, handler func(*models.AgentMetrics)) error {
go func() {
buf := make([]byte, 65535)
for {
n, _, err := conn.ReadFrom(buf)
n, src, err := conn.ReadFrom(buf)
if err != nil {
log.Printf("[udp] erreur lecture: %v", err)
continue
}
data := make([]byte, n)
copy(data, buf[:n])
go processUDP(data, handler)
go processUDP(data, src.String(), handler)
}
}()
return nil
}
func processUDP(data []byte, handler func(*models.AgentMetrics)) {
func processUDP(data []byte, src string, handler func(*models.AgentMetrics)) {
var m models.AgentMetrics
if err := json.Unmarshal(data, &m); err != nil {
log.Printf("[udp] JSON invalide: %v", err)
preview := ""
if len(data) > 0 {
end := len(data)
if end > 32 {
end = 32
}
preview = fmt.Sprintf(" | src=%s | premiers octets: %x | texte: %q", src, data[:end], data[:end])
}
log.Printf("[udp] JSON invalide: %v%s", err, preview)
return
}
if m.Hostname == "" {