packages/hyprspace: log connects and disconnects properly

This commit is contained in:
Max Headroom 2022-11-14 00:33:54 +01:00
parent f0aeeb78a1
commit 16bdf7348e
2 changed files with 30 additions and 4 deletions

View file

@ -21,6 +21,7 @@ import (
"github.com/hyprspace/hyprspace/p2p" "github.com/hyprspace/hyprspace/p2p"
"github.com/hyprspace/hyprspace/tun" "github.com/hyprspace/hyprspace/tun"
dht "github.com/libp2p/go-libp2p-kad-dht" dht "github.com/libp2p/go-libp2p-kad-dht"
"github.com/libp2p/go-libp2p/core/event"
"github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/host"
"github.com/libp2p/go-libp2p/core/network" "github.com/libp2p/go-libp2p/core/network"
"github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/core/peer"
@ -168,6 +169,9 @@ func UpRun(r *cmd.Root, c *cmd.Sub) {
// Register the application to listen for signals // Register the application to listen for signals
go signalHandler(host, lockPath, dht) go signalHandler(host, lockPath, dht)
// Log about various events
go eventLogger(host, cfg)
// Write lock to filesystem to indicate an existing running daemon. // Write lock to filesystem to indicate an existing running daemon.
err = os.WriteFile(lockPath, []byte(fmt.Sprint(os.Getpid())), os.ModePerm) err = os.WriteFile(lockPath, []byte(fmt.Sprint(os.Getpid())), os.ModePerm)
checkErr(err) checkErr(err)
@ -296,6 +300,29 @@ func signalHandler(host host.Host, lockPath string, dht *dht.IpfsDHT) {
} }
} }
func eventLogger(host host.Host, cfg *config.Config) {
subCon, err := host.EventBus().Subscribe(new(event.EvtPeerConnectednessChanged))
checkErr(err)
for {
select {
case ev := <-subCon.Out():
evt := ev.(event.EvtPeerConnectednessChanged)
for vpnIp, vpnPeer := range cfg.Peers {
if vpnPeer.ID == evt.Peer.Pretty() {
if evt.Connectedness == network.Connected {
for _, c := range host.Network().ConnsToPeer(evt.Peer) {
fmt.Printf("[+] Connected to %s at %s/p2p/%s\n", vpnIp, c.RemoteMultiaddr().String(), evt.Peer.Pretty())
}
} else if evt.Connectedness == network.NotConnected {
fmt.Printf("[!] Disconnected from %s\n", vpnIp)
}
break
}
}
}
}
}
// createDaemon handles creating an independent background process for a // createDaemon handles creating an independent background process for a
// Hyprspace daemon from the original parent process. // Hyprspace daemon from the original parent process.
func createDaemon(cfg *config.Config) error { func createDaemon(cfg *config.Config) error {

View file

@ -5,10 +5,10 @@ import (
"fmt" "fmt"
"time" "time"
dht "github.com/libp2p/go-libp2p-kad-dht"
"github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/host"
"github.com/libp2p/go-libp2p/core/network" "github.com/libp2p/go-libp2p/core/network"
"github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/core/peer"
dht "github.com/libp2p/go-libp2p-kad-dht"
) )
var discoverNow = make(chan bool) var discoverNow = make(chan bool)
@ -29,17 +29,16 @@ func Discover(ctx context.Context, h host.Host, dht *dht.IpfsDHT, peerTable map[
ticker.Reset(time.Millisecond * 1) ticker.Reset(time.Millisecond * 1)
case <-ticker.C: case <-ticker.C:
connectedToAny := false connectedToAny := false
for nd, id := range peerTable { for _, id := range peerTable {
if h.Network().Connectedness(id) != network.Connected { if h.Network().Connectedness(id) != network.Connected {
addrs, err := dht.FindPeer(ctx, id) addrs, err := dht.FindPeer(ctx, id)
if err != nil { if err != nil {
continue continue
} }
conn, err := h.Network().DialPeer(ctx, addrs.ID) _, err = h.Network().DialPeer(ctx, addrs.ID)
if err != nil { if err != nil {
continue continue
} }
fmt.Printf("[+] Connected to %s at %s\n", nd, conn.RemoteMultiaddr())
connectedToAny = true connectedToAny = true
} else { } else {
connectedToAny = true connectedToAny = true