From 96ee35ebf9b89aaa3c877125fdffe8150219f3e9 Mon Sep 17 00:00:00 2001 From: Kleissner Date: Tue, 29 Jun 2021 00:48:22 +0200 Subject: [PATCH] Finalize filter for log messages. Close #26 --- Bootstrap.go | 15 +++++++-------- Commands.go | 7 +++---- Config.go | 4 ++-- Network Detection.go | 13 ++++++------- Network IPv4 Broadcast.go | 7 +++---- Network IPv6 Multicast.go | 7 +++---- Network Init.go | 17 ++++++++--------- Network UPnP.go | 3 +-- Network.go | 11 +++++------ Peer ID.go | 5 ++--- 10 files changed, 40 insertions(+), 49 deletions(-) diff --git a/Bootstrap.go b/Bootstrap.go index 9ef2830..4aff1c5 100644 --- a/Bootstrap.go +++ b/Bootstrap.go @@ -15,7 +15,6 @@ package core import ( "encoding/hex" "errors" - "log" "net" "strconv" "time" @@ -44,12 +43,12 @@ loopSeedList: // parse the Public Key publicKeyB, err := hex.DecodeString(seed.PublicKey) if err != nil { - log.Printf("initSeedList error public key '%s': %v", seed.PublicKey, err.Error()) + Filters.LogError("initSeedList", "public key '%s': %v", seed.PublicKey, err.Error()) continue } if peer.publicKey, err = btcec.ParsePubKey(publicKeyB, btcec.S256()); err != nil { - log.Printf("initSeedList error public key '%s': %v", seed.PublicKey, err.Error()) + Filters.LogError("initSeedList", "public key '%s': %v", seed.PublicKey, err.Error()) continue } @@ -61,7 +60,7 @@ loopSeedList: for _, addressA := range seed.Address { address, err := parseAddress(addressA) if err != nil { - log.Printf("initSeedList error public key '%s' address '%s': %v", seed.PublicKey, addressA, err.Error()) + Filters.LogError("initSeedList", "public key '%s' address '%s': %v", seed.PublicKey, addressA, err.Error()) continue loopSeedList } @@ -105,7 +104,7 @@ func (peer *rootPeer) contact() { // bootstrap connects to the initial set of peers. func bootstrap() { if len(rootPeers) == 0 { - log.Printf("bootstrap warning: Empty list of root peers. Connectivity relies on local peer discovery and incoming connections.\n") + Filters.LogError("bootstrap", "warning: Empty list of root peers. Connectivity relies on local peer discovery and incoming connections.\n") return } @@ -153,7 +152,7 @@ func bootstrap() { } } - log.Printf("bootstrap unable to connect to at least 2 root peers, aborting\n") + Filters.LogError("bootstrap", "unable to connect to at least 2 root peers, aborting\n") } func autoMulticastBroadcast() { @@ -163,13 +162,13 @@ func autoMulticastBroadcast() { for _, network := range networks6 { if err := network.MulticastIPv6Send(); err != nil { - log.Printf("bootstrap error multicast from network address '%s': %v", network.address.IP.String(), err.Error()) + Filters.LogError("autoMulticastBroadcast", "multicast from network address '%s': %v", network.address.IP.String(), err.Error()) } } for _, network := range networks4 { if err := network.BroadcastIPv4Send(); err != nil { - log.Printf("bootstrap error broadcast from network address '%s': %v", network.address.IP.String(), err.Error()) + Filters.LogError("autoMulticastBroadcast", "broadcast from network address '%s': %v", network.address.IP.String(), err.Error()) } } } diff --git a/Commands.go b/Commands.go index 4c6f20e..7da7848 100644 --- a/Commands.go +++ b/Commands.go @@ -9,7 +9,6 @@ package core import ( "bytes" "fmt" - "log" "github.com/PeernetOfficial/core/dht" ) @@ -132,7 +131,7 @@ func (peer *PeerInfo) cmdResponse(msg *MessageResponse) { if msg.sequence == nil || msg.sequence.data == nil { // If there is no sequence data but there were results returned, it means we received unsolicited response data. It will be rejected. if len(msg.HashesNotFound) > 0 || len(msg.Hash2Peers) > 0 || len(msg.FilesEmbed) > 0 { - log.Printf("cmdResponse unsolicited response data received from %s\n", msg.connection.Address.String()) + Filters.LogError("cmdResponse", "unsolicited response data received from %s\n", msg.connection.Address.String()) } return @@ -143,7 +142,7 @@ func (peer *PeerInfo) cmdResponse(msg *MessageResponse) { for _, hash2Peer := range msg.Hash2Peers { // Make sure no garbage is returned. The key must be self and only Closest is expected. if !bytes.Equal(hash2Peer.ID.Hash, nodeID) || len(hash2Peer.Closest) == 0 { - log.Printf("Incoming response to bootstrap FIND_SELF contains invalid data from %s\n", msg.connection.Address.String()) + Filters.LogError("cmdResponse", "incoming response to bootstrap FIND_SELF contains invalid data from %s\n", msg.connection.Address.String()) return } @@ -207,7 +206,7 @@ func (peer *PeerInfo) cmdLocalDiscovery(msg *MessageAnnouncement) { // only accept local discovery message from private IPs for IPv4 // IPv6 DHCP routers typically assign public IPv6s and they can join multicast in the local network. //if msg.connection.IsIPv4() && !msg.connection.IsLocal() { - // log.Printf("cmdLocalDiscovery message received from non-local IP %s peer ID %s\n", msg.connection.Address.String(), hex.EncodeToString(msg.SenderPublicKey.SerializeCompressed())) + // Filters.LogError("cmdLocalDiscovery", "message received from non-local IP %s peer ID %s\n", msg.connection.Address.String(), hex.EncodeToString(msg.SenderPublicKey.SerializeCompressed())) // return //} diff --git a/Config.go b/Config.go index 774d4fc..c7f15c4 100644 --- a/Config.go +++ b/Config.go @@ -105,13 +105,13 @@ func LoadConfigOut(Filename string, ConfigOut interface{}) (status int, err erro func saveConfig() { data, err := yaml.Marshal(config) if err != nil { - log.Printf("saveConfig Error marshalling config: %v\n", err.Error()) + Filters.LogError("saveConfig", "marshalling config: %v\n", err.Error()) return } err = ioutil.WriteFile(configFile, data, 0644) if err != nil { - log.Printf("saveConfig Error writing config '%s': %v\n", configFile, err.Error()) + Filters.LogError("saveConfig", "writing config '%s': %v\n", configFile, err.Error()) return } } diff --git a/Network Detection.go b/Network Detection.go index 7999126..8402396 100644 --- a/Network Detection.go +++ b/Network Detection.go @@ -7,7 +7,6 @@ Author: Peter Kleissner package core import ( - "log" "net" "strings" "time" @@ -105,7 +104,7 @@ func networkChangeMonitor() { interfaceList, err := net.Interfaces() if err != nil { - log.Printf("networkChangeMonitor enumerating network adapters failed: %s\n", err.Error()) + Filters.LogError("networkChangeMonitor", "enumerating network adapters failed: %s\n", err.Error()) continue } @@ -114,7 +113,7 @@ func networkChangeMonitor() { for _, iface := range interfaceList { addressesNew, err := iface.Addrs() if err != nil { - log.Printf("initNetwork error enumerating IPs for network adapter '%s': %s\n", iface.Name, err.Error()) + Filters.LogError("networkChangeMonitor", "enumerating IPs for network adapter '%s': %s\n", iface.Name, err.Error()) continue } ifacesNew[iface.Name] = addressesNew @@ -169,7 +168,7 @@ func networkChangeMonitor() { // networkChangeInterfaceNew is called when a new interface is detected func networkChangeInterfaceNew(iface net.Interface, addresses []net.Addr) { - log.Printf("networkChangeInterfaceNew new interface '%s' (%d IPs)\n", iface.Name, len(addresses)) + Filters.LogError("networkChangeInterfaceNew", "new interface '%s' (%d IPs)\n", iface.Name, len(addresses)) networks := networkStart(iface, addresses) @@ -185,7 +184,7 @@ func networkChangeInterfaceRemove(iface string, addresses []net.Addr) { networksMutex.RLock() defer networksMutex.RUnlock() - log.Printf("networkChangeInterfaceRemove removing interface '%s' (%d IPs)\n", iface, len(addresses)) + Filters.LogError("networkChangeInterfaceRemove", "removing interface '%s' (%d IPs)\n", iface, len(addresses)) for n, network := range networks6 { if network.iface != nil && network.iface.Name == iface { @@ -216,7 +215,7 @@ func networkChangeInterfaceRemove(iface string, addresses []net.Addr) { // networkChangeIPNew is called when an existing interface lists a new IP func networkChangeIPNew(iface net.Interface, address net.Addr) { - log.Printf("networkChangeIPNew new interface '%s' IP %s\n", iface.Name, address.String()) + Filters.LogError("networkChangeIPNew", "new interface '%s' IP %s\n", iface.Name, address.String()) networks := networkStart(iface, []net.Addr{address}) @@ -232,7 +231,7 @@ func networkChangeIPRemove(iface net.Interface, address net.Addr) { networksMutex.RLock() defer networksMutex.RUnlock() - log.Printf("networkChangeIPRemove remove interface '%s' IP %s\n", iface.Name, address.String()) + Filters.LogError("networkChangeIPRemove", "remove interface '%s' IP %s\n", iface.Name, address.String()) for n, network := range networks6 { if network.address.IP.Equal(address.(*net.IPNet).IP) { diff --git a/Network IPv4 Broadcast.go b/Network IPv4 Broadcast.go index 6f6f02b..1f3c773 100644 --- a/Network IPv4 Broadcast.go +++ b/Network IPv4 Broadcast.go @@ -10,7 +10,6 @@ package core import ( "encoding/hex" - "log" "net" "strconv" "time" @@ -62,8 +61,8 @@ func (network *Network) BroadcastIPv4Listen() { length, sender, err := network.broadcastSocket.ReadFrom(buffer) if err != nil { - log.Printf("Listen Error receiving UDP message: %v\n", err) // Only log for debug purposes. - time.Sleep(time.Millisecond * 50) // In case of endless errors, prevent ddos of CPU. + Filters.LogError("BroadcastIPv4Listen", "receiving UDP message: %v\n", err) // Only log for debug purposes. + time.Sleep(time.Millisecond * 50) // In case of endless errors, prevent ddos of CPU. continue } @@ -104,7 +103,7 @@ func (network *Network) BroadcastIPv4Send() (err error) { for _, ip := range network.broadcastIPv4 { err = network.send(ip, ipv4BroadcastPort, raw) if err != nil { - log.Printf("Error sending UDP packet: %v\n", err) + Filters.LogError("BroadcastIPv4Send", "sending UDP packet: %v\n", err) } } diff --git a/Network IPv6 Multicast.go b/Network IPv6 Multicast.go index cdaa360..75d8b93 100644 --- a/Network IPv6 Multicast.go +++ b/Network IPv6 Multicast.go @@ -18,7 +18,6 @@ package core import ( "encoding/hex" - "log" "net" "strconv" "time" @@ -68,7 +67,7 @@ func (network *Network) MulticastIPv6Join() (err error) { if loop, err := pc.MulticastLoopback(); err == nil { if !loop { if err := pc.SetMulticastLoopback(true); err != nil { - log.Printf("MulticastJoin Error setting multicast loopback status: %v\n", err) + Filters.LogError("MulticastIPv6Join", "setting multicast loopback status: %v\n", err) } } } @@ -107,8 +106,8 @@ func (network *Network) MulticastIPv6Listen() { length, sender, err := network.multicastSocket.ReadFrom(buffer) if err != nil { - log.Printf("Listen Error receiving UDP message: %v\n", err) // Only log for debug purposes. - time.Sleep(time.Millisecond * 50) // In case of endless errors, prevent ddos of CPU. + Filters.LogError("MulticastIPv6Listen", "receiving UDP message: %v\n", err) // Only log for debug purposes. + time.Sleep(time.Millisecond * 50) // In case of endless errors, prevent ddos of CPU. continue } diff --git a/Network Init.go b/Network Init.go index 1994611..2fc2196 100644 --- a/Network Init.go +++ b/Network Init.go @@ -11,7 +11,6 @@ package core import ( "errors" - "log" "math/rand" "net" "strconv" @@ -60,14 +59,14 @@ func initNetwork() { host = listenA portA = "0" } else if err != nil { - log.Printf("initNetwork Error invalid input listen address '%s': %s\n", listenA, err.Error()) + Filters.LogError("initNetwork", "invalid input listen address '%s': %s\n", listenA, err.Error()) continue } portI, _ := strconv.Atoi(portA) if _, err := networkPrepareListen(host, portI); err != nil { - log.Printf("initNetwork Error listen on '%s': %s\n", listenA, err.Error()) + Filters.LogError("initNetwork", "listen on '%s': %s\n", listenA, err.Error()) continue } } @@ -77,10 +76,10 @@ func initNetwork() { // Listen on all IPv4 and IPv6 addresses //if _, err := networkPrepareListen("0.0.0.0", 0); err != nil { - // log.Printf("initNetwork Error listen on all IPv4 addresses (0.0.0.0): %s\n", err.Error()) + // Filters.LogError("initNetwork", "listen on all IPv4 addresses (0.0.0.0): %s\n", err.Error()) //} //if _, err := networkPrepareListen("::", 0); err != nil { - // log.Printf("initNetwork Error listen on all IPv6 addresses (::): %s\n", err.Error()) + // Filters.LogError("initNetwork", "listen on all IPv6 addresses (::): %s\n", err.Error()) //} // Listen on each network adapter on each IP. This guarantees the highest deliverability, even though it brings on additional challenges such as: @@ -89,14 +88,14 @@ func initNetwork() { // * Network adapters and IPs might change. Simplest case is if someone changes Wifi network. interfaceList, err := net.Interfaces() if err != nil { - log.Printf("initNetwork enumerating network adapters failed: %s\n", err.Error()) + Filters.LogError("initNetwork", "enumerating network adapters failed: %s\n", err.Error()) return } for _, iface := range interfaceList { addresses, err := iface.Addrs() if err != nil { - log.Printf("initNetwork error enumerating IPs for network adapter '%s': %s\n", iface.Name, err.Error()) + Filters.LogError("initNetwork", "enumerating IPs for network adapter '%s': %s\n", iface.Name, err.Error()) continue } @@ -126,13 +125,13 @@ func networkStart(iface net.Interface, addresses []net.Addr) (networks []*Networ continue } - log.Printf("initNetwork error listening on network adapter '%s' IPv4 '%s': %s\n", iface.Name, net1.IP.String(), err.Error()) + Filters.LogError("networkStart", "listening on network adapter '%s' IPv4 '%s': %s\n", iface.Name, net1.IP.String(), err.Error()) continue } addListenAddress(netw.address) - log.Printf("Listen on network '%s' UDP %s\n", iface.Name, netw.address.String()) + Filters.LogError("networkStart", "listen on network '%s' UDP %s\n", iface.Name, netw.address.String()) networks = append(networks, netw) } diff --git a/Network UPnP.go b/Network UPnP.go index 1a4a5eb..3abe41a 100644 --- a/Network UPnP.go +++ b/Network UPnP.go @@ -9,7 +9,6 @@ Currently only supports IPv4 networks. package core import ( - "log" "math/rand" "net" "sync" @@ -148,7 +147,7 @@ monitorLoop: } // invalid :( - log.Printf("upnpAuto port forwarding invalidated for local IP %s (adapter %s) external IP %s port %d", network.address.String(), network.iface.Name, network.ipExternal.String(), network.portExternal) + Filters.LogError("upnpMonitorPortForward", "port forwarding invalidated for local IP %s (adapter %s) external IP %s port %d", network.address.String(), network.iface.Name, network.ipExternal.String(), network.portExternal) network.portExternal = 0 network.ipExternal = net.IP{} diff --git a/Network.go b/Network.go index 92fffc6..77d8377 100644 --- a/Network.go +++ b/Network.go @@ -8,7 +8,6 @@ package core import ( "errors" - "log" "net" "sync" "sync/atomic" @@ -127,8 +126,8 @@ func (network *Network) Listen() { return } - log.Printf("Listen Error receiving UDP message: %v\n", err) // Only log for debug purposes. - time.Sleep(time.Millisecond * 50) // In case of endless errors, prevent ddos of CPU. + Filters.LogError("Listen", "receiving UDP message: %v\n", err) // Only log for debug purposes. + time.Sleep(time.Millisecond * 50) // In case of endless errors, prevent ddos of CPU. continue } @@ -147,7 +146,7 @@ func packetWorker(packets <-chan networkWire) { for packet := range packets { decoded, senderPublicKey, err := PacketDecrypt(packet.raw, packet.receiverPublicKey) if err != nil { - //log.Printf("packetWorker Error decrypting packet from '%s': %s\n", packet.sender.String(), err.Error()) + //Filters.LogError("packetWorker", "decrypting packet from '%s': %s\n", packet.sender.String(), err.Error()) // Only log for debug purposes. continue } @@ -195,7 +194,7 @@ func packetWorker(packets <-chan networkWire) { if response, _ := msgDecodeResponse(raw); response != nil { // Validate sequence number which prevents unsolicited responses. if valid, rtt := msgValidateSequence(raw, response.Actions&(1< 0); !valid { - log.Printf("packetWorker message with invalid sequence %d command %d from %s\n", raw.Sequence, raw.Command, raw.connection.Address.String()) // Only log for debug purposes. + //Filters.LogError("packetWorker", "message with invalid sequence %d command %d from %s\n", raw.Sequence, raw.Command, raw.connection.Address.String()) // Only log for debug purposes. continue } else if rtt > 0 { connection.RoundTripTime = rtt @@ -232,7 +231,7 @@ func packetWorker(packets <-chan networkWire) { case CommandPong: // Ping // Validate sequence number which prevents unsolicited responses. if valid, rtt := msgValidateSequence(raw, true); !valid { - log.Printf("packetWorker message with invalid sequence %d command %d from %s\n", raw.Sequence, raw.Command, raw.connection.Address.String()) // Only log for debug purposes. + //Filters.LogError("packetWorker", "message with invalid sequence %d command %d from %s\n", raw.Sequence, raw.Command, raw.connection.Address.String()) // Only log for debug purposes. continue } else if rtt > 0 { connection.RoundTripTime = rtt diff --git a/Peer ID.go b/Peer ID.go index 47e3bf6..5116944 100644 --- a/Peer ID.go +++ b/Peer ID.go @@ -8,7 +8,6 @@ package core import ( "encoding/hex" - "log" "math/rand" "net" "os" @@ -40,7 +39,7 @@ func initPeerID() { return } - log.Printf("Private key in config is corrupted! Error: %s\n", err.Error()) + Filters.LogError("initPeerID", "private key in config is corrupted! Error: %s\n", err.Error()) os.Exit(1) } @@ -48,7 +47,7 @@ func initPeerID() { var err error peerPrivateKey, peerPublicKey, err = Secp256k1NewPrivateKey() if err != nil { - log.Printf("Error generating public-private key pairs: %s\n", err.Error()) + Filters.LogError("initPeerID", "generating public-private key pairs: %s\n", err.Error()) os.Exit(1) } nodeID = publicKey2NodeID(peerPublicKey)