Compare commits

..

2 commits

Author SHA1 Message Date
9c808cbf63
Dry up creating new AURP peers 2024-05-24 16:57:54 +10:00
9e3b311b56
Add route table observers 2024-05-24 16:57:54 +10:00
2 changed files with 16 additions and 16 deletions

26
main.go
View file

@ -65,13 +65,13 @@ const routingTableTemplate = `
<td>{{$route.LastSeenAgo}}</td> <td>{{$route.LastSeenAgo}}</td>
<td> <td>
{{- with $route.AURPPeer -}} {{- with $route.AURPPeer -}}
[redacted] {{.RemoteAddr}}
{{- end -}} {{- end -}}
{{- with $route.EtherTalkPeer -}} {{- with $route.EtherTalkPeer -}}
{{.Port.Device}} {{.PeerAddr.Network}}.{{.PeerAddr.Node}} {{.Port.Device}} {{.PeerAddr.Network}}.{{.PeerAddr.Node}}
{{- end -}} {{- end -}}
{{- with $route.EtherTalkDirect -}} {{- with $route.EtherTalkDirect -}}
{{.Device}} {{.Device}} {{.NetStart}}-{{.NetEnd}}
{{- end -}} {{- end -}}
</td> </td>
</tr> </tr>
@ -96,8 +96,8 @@ const peerTableTemplate = `
<tbody> <tbody>
{{range $peer := . }} {{range $peer := . }}
<tr> <tr>
<td>[redacted]</td> <td>{{$peer.ConfiguredAddr}}</td>
<td>[redacted]</td> <td>{{$peer.RemoteAddr}}</td>
<td>{{$peer.ReceiverState}}</td> <td>{{$peer.ReceiverState}}</td>
<td>{{$peer.SenderState}}</td> <td>{{$peer.SenderState}}</td>
<td>{{$peer.LastHeardFromAgo}}</td> <td>{{$peer.LastHeardFromAgo}}</td>
@ -152,9 +152,9 @@ func main() {
} }
localDI := aurp.IPDomainIdentifier(localIP) localDI := aurp.IPDomainIdentifier(localIP)
// log.Printf("Using %v as local domain identifier", localIP) log.Printf("Using %v as local domain identifier", localIP)
// log.Printf("EtherTalk configuration: %+v", cfg.EtherTalk) log.Printf("EtherTalk configuration: %+v", cfg.EtherTalk)
ln, err := net.ListenUDP("udp4", &net.UDPAddr{Port: int(cfg.ListenPort)}) ln, err := net.ListenUDP("udp4", &net.UDPAddr{Port: int(cfg.ListenPort)})
if err != nil { if err != nil {
@ -256,12 +256,12 @@ func main() {
// ------------------------- Configured peer setup ------------------------ // ------------------------- Configured peer setup ------------------------
if cfg.PeerListURL != "" { if cfg.PeerListURL != "" {
log.Print("Fetching peer list...") log.Printf("Fetching peer list from %s...", cfg.PeerListURL)
existing := len(cfg.Peers) existing := len(cfg.Peers)
func() { func() {
resp, err := http.Get(cfg.PeerListURL) resp, err := http.Get(cfg.PeerListURL)
if err != nil { if err != nil {
log.Fatalf("Couldn't fetch peer list!") log.Fatalf("Couldn't fetch peer list: %v", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
@ -287,13 +287,13 @@ func main() {
raddr, err := net.ResolveUDPAddr("udp4", peerStr) raddr, err := net.ResolveUDPAddr("udp4", peerStr)
if err != nil { if err != nil {
log.Print("couldn't resolve UDP address, skipping peer") log.Printf("couldn't resolve UDP address, skipping: %v", err)
continue continue
} }
//log.Printf("resolved %q to %v", peerStr, raddr) log.Printf("resolved %q to %v", peerStr, raddr)
if raddr.IP.Equal(localIP) { if raddr.IP.Equal(localIP) {
//log.Print("peer == me, skipping") log.Printf("%v == %v == me, skipping", peerStr, raddr)
continue continue
} }
@ -380,7 +380,7 @@ func main() {
return return
} }
// log.Printf("AURP: Got %T from %v (%v)", pkt, raddr, dh.SourceDI) log.Printf("AURP: Got %T from %v (%v)", pkt, raddr, dh.SourceDI)
// Existing peer? // Existing peer?
ra := udpAddrFromNet(raddr) ra := udpAddrFromNet(raddr)
@ -388,7 +388,7 @@ func main() {
pr := peers[ra] pr := peers[ra]
if pr == nil { if pr == nil {
if !cfg.OpenPeering { if !cfg.OpenPeering {
log.Print("AURP: Got packet but it's not in my config and open peering is disabled; dropping the packet") log.Printf("AURP: Got packet from %v but it's not in my config and open peering is disabled; dropping the packet", raddr)
peersMu.Unlock() peersMu.Unlock()
continue continue
} }

View file

@ -295,7 +295,7 @@ func (p *AURPPeer) send(pkt aurp.Packet) (int, error) {
if _, err := pkt.WriteTo(&b); err != nil { if _, err := pkt.WriteTo(&b); err != nil {
return 0, err return 0, err
} }
// log.Printf("AURP Peer: Sending %T (len %d) to %v", pkt, b.Len(), p.RemoteAddr) log.Printf("AURP Peer: Sending %T (len %d) to %v", pkt, b.Len(), p.RemoteAddr)
return p.UDPConn.WriteToUDP(b.Bytes(), p.RemoteAddr) return p.UDPConn.WriteToUDP(b.Bytes(), p.RemoteAddr)
} }
@ -442,10 +442,10 @@ func (p *AURPPeer) Handle(ctx context.Context) error {
// In case it's a DNS name, re-resolve it before reconnecting // In case it's a DNS name, re-resolve it before reconnecting
raddr, err := net.ResolveUDPAddr("udp4", p.ConfiguredAddr) raddr, err := net.ResolveUDPAddr("udp4", p.ConfiguredAddr)
if err != nil { if err != nil {
log.Print("couldn't resolve UDP address, skipping") log.Printf("couldn't resolve UDP address, skipping: %v", err)
break break
} }
// log.Printf("AURP Peer: resolved %q to %v", p.ConfiguredAddr, raddr) log.Printf("AURP Peer: resolved %q to %v", p.ConfiguredAddr, raddr)
p.RemoteAddr = raddr p.RemoteAddr = raddr
p.bumpLastReconnect() p.bumpLastReconnect()