3
This commit is contained in:
+1
-1
@@ -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
@@ -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 == "" {
|
||||
|
||||
Reference in New Issue
Block a user