Skip to content
Snippets Groups Projects
Unverified Commit 2cc68e1b authored by Angelo Capossele's avatar Angelo Capossele Committed by GitHub
Browse files

Merge pull request #96 from Wollac/feat/logging

Improve status messages
parents ef5ab377 aebc62e0
No related branches found
No related tags found
No related merge requests found
...@@ -202,8 +202,8 @@ func (m *manager) peerToReverify() *mpeer { ...@@ -202,8 +202,8 @@ func (m *manager) peerToReverify() *mpeer {
} }
// updatePeer moves the peer with the given ID to the front of the list of managed peers. // updatePeer moves the peer with the given ID to the front of the list of managed peers.
// It returns true if a peer was bumped or false if there was no peer with that id // It returns 0 if there was no peer with that id, otherwise the verifiedCount of the updated peer is returned.
func (m *manager) updatePeer(update *peer.Peer) bool { func (m *manager) updatePeer(update *peer.Peer) uint {
id := update.ID() id := update.ID()
for i, p := range m.active { for i, p := range m.active {
if p.ID() == id { if p.ID() == id {
...@@ -217,11 +217,10 @@ func (m *manager) updatePeer(update *peer.Peer) bool { ...@@ -217,11 +217,10 @@ func (m *manager) updatePeer(update *peer.Peer) bool {
verifiedCount: p.verifiedCount + 1, verifiedCount: p.verifiedCount + 1,
lastNewPeers: p.lastNewPeers, lastNewPeers: p.lastNewPeers,
} }
return p.verifiedCount + 1
return true
} }
} }
return false return 0
} }
func (m *manager) addReplacement(p *mpeer) bool { func (m *manager) addReplacement(p *mpeer) bool {
...@@ -289,7 +288,11 @@ func (m *manager) addVerifiedPeer(p *peer.Peer) bool { ...@@ -289,7 +288,11 @@ func (m *manager) addVerifiedPeer(p *peer.Peer) bool {
defer m.mutex.Unlock() defer m.mutex.Unlock()
// if already in the list, move it to the front // if already in the list, move it to the front
if m.updatePeer(p) { if v := m.updatePeer(p); v > 0 {
// trigger the event only for the first time the peer is updated
if v == 1 {
Events.PeerDiscovered.Trigger(&DiscoveredEvent{Peer: p})
}
return false return false
} }
......
...@@ -2,6 +2,7 @@ package peer ...@@ -2,6 +2,7 @@ package peer
import ( import (
"crypto/ed25519" "crypto/ed25519"
"encoding/base64"
"errors" "errors"
"fmt" "fmt"
"net/url" "net/url"
...@@ -50,7 +51,7 @@ func (p *Peer) Services() service.Service { ...@@ -50,7 +51,7 @@ func (p *Peer) Services() service.Service {
func (p *Peer) String() string { func (p *Peer) String() string {
u := url.URL{ u := url.URL{
Scheme: "peer", Scheme: "peer",
User: url.User(fmt.Sprintf("%x", p.publicKey)), User: url.User(base64.StdEncoding.EncodeToString(p.PublicKey())),
Host: p.Address(), Host: p.Address(),
} }
return u.String() return u.String()
......
package client package client
import ( import (
"encoding/hex"
"net" "net"
"time" "time"
...@@ -57,15 +56,19 @@ func Run(plugin *node.Plugin) { ...@@ -57,15 +56,19 @@ func Run(plugin *node.Plugin) {
func getEventDispatchers(conn *network.ManagedConnection) *EventDispatchers { func getEventDispatchers(conn *network.ManagedConnection) *EventDispatchers {
return &EventDispatchers{ return &EventDispatchers{
AddNode: func(nodeId []byte) { AddNode: func(nodeId []byte) {
log.Debugw("AddNode", "nodeId", nodeId)
_, _ = conn.Write((&addnode.Packet{NodeId: nodeId}).Marshal()) _, _ = conn.Write((&addnode.Packet{NodeId: nodeId}).Marshal())
}, },
RemoveNode: func(nodeId []byte) { RemoveNode: func(nodeId []byte) {
log.Debugw("RemoveNode", "nodeId", nodeId)
_, _ = conn.Write((&removenode.Packet{NodeId: nodeId}).Marshal()) _, _ = conn.Write((&removenode.Packet{NodeId: nodeId}).Marshal())
}, },
ConnectNodes: func(sourceId []byte, targetId []byte) { ConnectNodes: func(sourceId []byte, targetId []byte) {
log.Debugw("ConnectNodes", "sourceId", sourceId, "targetId", targetId)
_, _ = conn.Write((&connectnodes.Packet{SourceId: sourceId, TargetId: targetId}).Marshal()) _, _ = conn.Write((&connectnodes.Packet{SourceId: sourceId, TargetId: targetId}).Marshal())
}, },
DisconnectNodes: func(sourceId []byte, targetId []byte) { DisconnectNodes: func(sourceId []byte, targetId []byte) {
log.Debugw("DisconnectNodes", "sourceId", sourceId, "targetId", targetId)
_, _ = conn.Write((&disconnectnodes.Packet{SourceId: sourceId, TargetId: targetId}).Marshal()) _, _ = conn.Write((&disconnectnodes.Packet{SourceId: sourceId, TargetId: targetId}).Marshal())
}, },
} }
...@@ -83,27 +86,22 @@ func setupHooks(plugin *node.Plugin, conn *network.ManagedConnection, eventDispa ...@@ -83,27 +86,22 @@ func setupHooks(plugin *node.Plugin, conn *network.ManagedConnection, eventDispa
// define hooks //////////////////////////////////////////////////////////////////////////////////////////////////// // define hooks ////////////////////////////////////////////////////////////////////////////////////////////////////
onDiscoverPeer := events.NewClosure(func(ev *discover.DiscoveredEvent) { onDiscoverPeer := events.NewClosure(func(ev *discover.DiscoveredEvent) {
log.Info("onDiscoverPeer: " + hex.EncodeToString(ev.Peer.ID().Bytes()))
eventDispatchers.AddNode(ev.Peer.ID().Bytes()) eventDispatchers.AddNode(ev.Peer.ID().Bytes())
}) })
onDeletePeer := events.NewClosure(func(ev *discover.DeletedEvent) { onDeletePeer := events.NewClosure(func(ev *discover.DeletedEvent) {
log.Info("onDeletePeer: " + hex.EncodeToString(ev.Peer.ID().Bytes()))
eventDispatchers.RemoveNode(ev.Peer.ID().Bytes()) eventDispatchers.RemoveNode(ev.Peer.ID().Bytes())
}) })
onAddAcceptedNeighbor := events.NewClosure(func(ev *selection.PeeringEvent) { onAddAcceptedNeighbor := events.NewClosure(func(ev *selection.PeeringEvent) {
log.Info("onAddAcceptedNeighbor: " + hex.EncodeToString(ev.Peer.ID().Bytes()) + " - " + hex.EncodeToString(local.GetInstance().ID().Bytes()))
eventDispatchers.ConnectNodes(ev.Peer.ID().Bytes(), local.GetInstance().ID().Bytes()) eventDispatchers.ConnectNodes(ev.Peer.ID().Bytes(), local.GetInstance().ID().Bytes())
}) })
onRemoveNeighbor := events.NewClosure(func(ev *selection.DroppedEvent) { onRemoveNeighbor := events.NewClosure(func(ev *selection.DroppedEvent) {
log.Info("onRemoveNeighbor: " + hex.EncodeToString(ev.DroppedID.Bytes()) + " - " + hex.EncodeToString(local.GetInstance().ID().Bytes()))
eventDispatchers.DisconnectNodes(ev.DroppedID.Bytes(), local.GetInstance().ID().Bytes()) eventDispatchers.DisconnectNodes(ev.DroppedID.Bytes(), local.GetInstance().ID().Bytes())
}) })
onAddChosenNeighbor := events.NewClosure(func(ev *selection.PeeringEvent) { onAddChosenNeighbor := events.NewClosure(func(ev *selection.PeeringEvent) {
log.Info("onAddChosenNeighbor: " + hex.EncodeToString(local.GetInstance().ID().Bytes()) + " - " + hex.EncodeToString(ev.Peer.ID().Bytes()))
eventDispatchers.ConnectNodes(local.GetInstance().ID().Bytes(), ev.Peer.ID().Bytes()) eventDispatchers.ConnectNodes(local.GetInstance().ID().Bytes(), ev.Peer.ID().Bytes())
}) })
......
...@@ -25,12 +25,12 @@ func run(plugin *node.Plugin) { ...@@ -25,12 +25,12 @@ func run(plugin *node.Plugin) {
webinterface.Run(plugin) webinterface.Run(plugin)
server.Run(plugin) server.Run(plugin)
} else { } else {
log.Info("Starting Plugin: Analysis ... server is disabled (server-port is 0)") log.Info("Server is disabled (server-port is 0)")
} }
if parameter.NodeConfig.GetString(client.CFG_SERVER_ADDRESS) != "" { if parameter.NodeConfig.GetString(client.CFG_SERVER_ADDRESS) != "" {
client.Run(plugin) client.Run(plugin)
} else { } else {
log.Info("Starting Plugin: Analysis ... client is disabled (server-address is empty)") log.Info("Client is disabled (server-address is empty)")
} }
} }
...@@ -99,7 +99,7 @@ func start(shutdownSignal <-chan struct{}) { ...@@ -99,7 +99,7 @@ func start(shutdownSignal <-chan struct{}) {
defer Selection.Close() defer Selection.Close()
} }
log.Infof("Auto Peering server started: ID=%x, address=%s", local.GetInstance().ID(), srv.LocalAddr()) log.Infof("Auto Peering started: address=%s", srv.LocalAddr())
<-shutdownSignal <-shutdownSignal
log.Info("Stopping Auto Peering server ...") log.Info("Stopping Auto Peering server ...")
......
...@@ -3,7 +3,6 @@ package local ...@@ -3,7 +3,6 @@ package local
import ( import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"log"
"net" "net"
"net/http" "net/http"
"strconv" "strconv"
...@@ -20,33 +19,47 @@ var ( ...@@ -20,33 +19,47 @@ var (
) )
func configureLocal() *peer.Local { func configureLocal() *peer.Local {
log := logger.NewLogger("Local")
ip := net.ParseIP(parameter.NodeConfig.GetString(CFG_ADDRESS)) ip := net.ParseIP(parameter.NodeConfig.GetString(CFG_ADDRESS))
if ip == nil { if ip == nil {
log.Fatalf("Invalid IP address: %s", parameter.NodeConfig.GetString(CFG_ADDRESS)) log.Fatalf("Invalid IP address: %s", parameter.NodeConfig.GetString(CFG_ADDRESS))
} }
if ip.IsUnspecified() { if ip.IsUnspecified() {
myIp, err := getMyIP() log.Info("Querying public IP ...")
myIp, err := getPublicIP(isIPv4(ip))
if err != nil { if err != nil {
log.Fatalf("Could not query public IP: %v", err) log.Fatalf("Error querying public IP: %s", err)
} }
ip = myIp ip = myIp
log.Infof("Public IP queried: address=%s", ip.String())
} }
port := strconv.Itoa(parameter.NodeConfig.GetInt(CFG_PORT)) port := strconv.Itoa(parameter.NodeConfig.GetInt(CFG_PORT))
// create a new local node // create a new local node
db := peer.NewPersistentDB(logger.NewLogger("local")) db := peer.NewPersistentDB(log)
local, err := peer.NewLocal("udp", net.JoinHostPort(ip.String(), port), db) local, err := peer.NewLocal("udp", net.JoinHostPort(ip.String(), port), db)
if err != nil { if err != nil {
log.Fatalf("NewLocal: %v", err) log.Fatalf("Error creating local: %s", err)
} }
log.Infof("Initialized local: %v", local)
return local return local
} }
func getMyIP() (net.IP, error) { func isIPv4(ip net.IP) bool {
url := "https://api.ipify.org?format=text" return ip.To4() != nil
}
func getPublicIP(ipv4 bool) (net.IP, error) {
var url string
if ipv4 {
url = "https://api.ipify.org"
} else {
url = "https://api6.ipify.org"
}
resp, err := http.Get(url) resp, err := http.Get(url)
if err != nil { if err != nil {
return nil, err return nil, err
......
...@@ -3,6 +3,7 @@ package autopeering ...@@ -3,6 +3,7 @@ package autopeering
import ( import (
"github.com/iotaledger/goshimmer/packages/autopeering/discover" "github.com/iotaledger/goshimmer/packages/autopeering/discover"
"github.com/iotaledger/goshimmer/packages/autopeering/peer" "github.com/iotaledger/goshimmer/packages/autopeering/peer"
"github.com/iotaledger/goshimmer/packages/autopeering/selection"
"github.com/iotaledger/goshimmer/packages/gossip" "github.com/iotaledger/goshimmer/packages/gossip"
"github.com/iotaledger/hive.go/daemon" "github.com/iotaledger/hive.go/daemon"
"github.com/iotaledger/hive.go/events" "github.com/iotaledger/hive.go/events"
...@@ -37,6 +38,19 @@ func configureEvents() { ...@@ -37,6 +38,19 @@ func configureEvents() {
})) }))
discover.Events.PeerDiscovered.Attach(events.NewClosure(func(ev *discover.DiscoveredEvent) { discover.Events.PeerDiscovered.Attach(events.NewClosure(func(ev *discover.DiscoveredEvent) {
log.Info("new peer discovered: " + ev.Peer.Address() + " / " + ev.Peer.ID().String()) log.Infof("Discovered: %s / %s", ev.Peer.Address(), ev.Peer.ID())
}))
discover.Events.PeerDeleted.Attach(events.NewClosure(func(ev *discover.DeletedEvent) {
log.Infof("Removed offline: %s / %s", ev.Peer.Address(), ev.Peer.ID())
}))
selection.Events.OutgoingPeering.Attach(events.NewClosure(func(ev *selection.PeeringEvent) {
log.Infof("Peering chosen: %s / %s", ev.Peer.Address(), ev.Peer.ID())
}))
selection.Events.IncomingPeering.Attach(events.NewClosure(func(ev *selection.PeeringEvent) {
log.Infof("Peering accepted: %s / %s", ev.Peer.Address(), ev.Peer.ID())
}))
selection.Events.Dropped.Attach(events.NewClosure(func(ev *selection.DroppedEvent) {
log.Infof("Peering dropped: %s", ev.DroppedID)
})) }))
} }
...@@ -45,7 +45,7 @@ func parseParameters() { ...@@ -45,7 +45,7 @@ func parseParameters() {
} }
func LoadConfig() { func LoadConfig() {
if err := parameter.FetchConfig(true); err != nil { if err := parameter.FetchConfig(false); err != nil {
panic(err) panic(err)
} }
parseParameters() parseParameters()
...@@ -56,7 +56,6 @@ func LoadConfig() { ...@@ -56,7 +56,6 @@ func LoadConfig() {
} }
func configure(ctx *node.Plugin) { func configure(ctx *node.Plugin) {
fmt.Println(" _____ _ _ ________ ______ ___ ___________ ") fmt.Println(" _____ _ _ ________ ______ ___ ___________ ")
fmt.Println(" / ___| | | |_ _| \\/ || \\/ || ___| ___ \\") fmt.Println(" / ___| | | |_ _| \\/ || \\/ || ___| ___ \\")
fmt.Println(" \\ `--.| |_| | | | | . . || . . || |__ | |_/ /") fmt.Println(" \\ `--.| |_| | | | | . . || . . || |__ | |_/ /")
...@@ -64,6 +63,7 @@ func configure(ctx *node.Plugin) { ...@@ -64,6 +63,7 @@ func configure(ctx *node.Plugin) {
fmt.Println(" /\\__/ / | | |_| |_| | | || | | || |___| |\\ \\ ") fmt.Println(" /\\__/ / | | |_| |_| | | || | | || |___| |\\ \\ ")
fmt.Printf(" \\____/\\_| |_/\\___/\\_| |_/\\_| |_/\\____/\\_| \\_| fullnode %s", AppVersion) fmt.Printf(" \\____/\\_| |_/\\___/\\_| |_/\\_| |_/\\____/\\_| \\_| fullnode %s", AppVersion)
fmt.Println() fmt.Println()
fmt.Println()
ctx.Node.Logger.Info("Loading plugins ...") ctx.Node.Logger.Info("Loading plugins ...")
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment