Browse Source

packet sniffer changes

Abhishek Kondur 2 years ago
parent
commit
eb1aa3a386

+ 19 - 20
netclient/functions/daemon.go

@@ -6,7 +6,6 @@ import (
 	"errors"
 	"errors"
 	"fmt"
 	"fmt"
 	"io"
 	"io"
-	"log"
 	"net"
 	"net"
 	"net/http"
 	"net/http"
 	"os"
 	"os"
@@ -150,25 +149,25 @@ func startGoRoutines(wg *sync.WaitGroup) context.CancelFunc {
 
 
 	go func(networks []string) {
 	go func(networks []string) {
 
 
-		for _, network := range networks {
-			logger.Log(0, "Collecting interface and peers info to configure proxy...")
-			cfg := config.ClientConfig{}
-			cfg.Network = network
-			cfg.ReadConfig()
-			node, err := GetNodeInfo(&cfg)
-			if err != nil {
-				log.Println("Failed to get node info: ", err)
-				continue
-			}
-			ProxyMgmChan <- &manager.ManagerAction{
-				Action: manager.AddInterface,
-				Payload: manager.ManagerPayload{
-					InterfaceName: node.Node.Interface,
-					Peers:         node.Peers,
-				},
-			}
-
-		}
+		// for _, network := range networks {
+		// 	logger.Log(0, "Collecting interface and peers info to configure proxy...")
+		// 	cfg := config.ClientConfig{}
+		// 	cfg.Network = network
+		// 	cfg.ReadConfig()
+		// 	node, err := GetNodeInfo(&cfg)
+		// 	if err != nil {
+		// 		log.Println("Failed to get node info: ", err)
+		// 		continue
+		// 	}
+		// 	ProxyMgmChan <- &manager.ManagerAction{
+		// 		Action: manager.AddInterface,
+		// 		Payload: manager.ManagerPayload{
+		// 			InterfaceName: node.Node.Interface,
+		// 			Peers:         node.Peers,
+		// 		},
+		// 	}
+
+		// }
 
 
 	}(networks)
 	}(networks)
 	return cancel
 	return cancel

+ 1 - 1
nm-proxy/manager/manager.go

@@ -226,7 +226,7 @@ func (m *ManagerAction) AddInterfaceToProxy() error {
 
 
 	for _, peerI := range m.Payload.Peers {
 	for _, peerI := range m.Payload.Peers {
 		peerConf := m.Payload.PeerMap[peerI.PublicKey.String()]
 		peerConf := m.Payload.PeerMap[peerI.PublicKey.String()]
-		if peerI.Endpoint == nil && (!peerConf.IsAttachedExtClient || !peerConf.IsExtClient) {
+		if peerI.Endpoint == nil && !(peerConf.IsAttachedExtClient || peerConf.IsExtClient) {
 			log.Println("Endpoint nil for peer: ", peerI.PublicKey.String())
 			log.Println("Endpoint nil for peer: ", peerI.PublicKey.String())
 			continue
 			continue
 		}
 		}

+ 4 - 2
nm-proxy/packet/packet.go

@@ -42,17 +42,19 @@ func ExtractInfo(buffer []byte, n int) (int, string, string) {
 }
 }
 
 
 func StartSniffer(ifaceName string, extClient string) {
 func StartSniffer(ifaceName string, extClient string) {
+	log.Println("Starting Packet Sniffer for iface: ", ifaceName)
 	var (
 	var (
 		snapshotLen int32 = 1024
 		snapshotLen int32 = 1024
 		promiscuous bool  = false
 		promiscuous bool  = false
 		err         error
 		err         error
-		timeout     time.Duration = 30 * time.Second
+		timeout     time.Duration = 1 * time.Microsecond
 		handle      *pcap.Handle
 		handle      *pcap.Handle
 	)
 	)
 	// Open device
 	// Open device
 	handle, err = pcap.OpenLive(ifaceName, snapshotLen, promiscuous, timeout)
 	handle, err = pcap.OpenLive(ifaceName, snapshotLen, promiscuous, timeout)
 	if err != nil {
 	if err != nil {
-		log.Fatal(err)
+		log.Println("failed to start sniffer for iface: ", ifaceName, err)
+		return
 	}
 	}
 	defer handle.Close()
 	defer handle.Close()
 
 

+ 4 - 4
nm-proxy/proxy/wireguard.go

@@ -60,13 +60,13 @@ func (p *Proxy) ProxyToRemote() {
 			}
 			}
 			peers := common.WgIFaceMap[p.Config.WgInterface.Name]
 			peers := common.WgIFaceMap[p.Config.WgInterface.Name]
 			if peerI, ok := peers[p.Config.RemoteKey]; ok {
 			if peerI, ok := peers[p.Config.RemoteKey]; ok {
-				//var srcPeerKeyHash, dstPeerKeyHash string
-				buf, n, _, _ = packet.ProcessPacketBeforeSending(buf, n, peerI.Config.LocalKey, peerI.Config.Key)
+				var srcPeerKeyHash, dstPeerKeyHash string
+				buf, n, srcPeerKeyHash, dstPeerKeyHash = packet.ProcessPacketBeforeSending(buf, n, peerI.Config.LocalKey, peerI.Config.Key)
 				if err != nil {
 				if err != nil {
 					log.Println("failed to process pkt before sending: ", err)
 					log.Println("failed to process pkt before sending: ", err)
 				}
 				}
-				// log.Printf("PROXING TO REMOTE!!!---> %s >>>>> %s [[ SrcPeerHash: %s, DstPeerHash: %s ]]\n",
-				// 	server.NmProxyServer.Server.LocalAddr().String(), p.RemoteConn.String(), srcPeerKeyHash, dstPeerKeyHash)
+				log.Printf("PROXING TO REMOTE!!!---> %s >>>>> %s [[ SrcPeerHash: %s, DstPeerHash: %s ]]\n",
+					server.NmProxyServer.Server.LocalAddr().String(), p.RemoteConn.String(), srcPeerKeyHash, dstPeerKeyHash)
 			} else {
 			} else {
 				log.Printf("Peer: %s not found in config\n", p.Config.RemoteKey)
 				log.Printf("Peer: %s not found in config\n", p.Config.RemoteKey)
 				p.Cancel()
 				p.Cancel()

+ 4 - 3
nm-proxy/server/server.go

@@ -2,6 +2,7 @@ package server
 
 
 import (
 import (
 	"context"
 	"context"
+	"fmt"
 	"log"
 	"log"
 	"net"
 	"net"
 	"time"
 	"time"
@@ -113,9 +114,9 @@ func (p *ProxyServer) Listen(ctx context.Context) {
 			if peerInfo, ok := common.PeerKeyHashMap[srcPeerKeyHash]; ok {
 			if peerInfo, ok := common.PeerKeyHashMap[srcPeerKeyHash]; ok {
 				if peers, ok := common.WgIFaceMap[peerInfo.Interface]; ok {
 				if peers, ok := common.WgIFaceMap[peerInfo.Interface]; ok {
 					if peerI, ok := peers[peerInfo.PeerKey]; ok {
 					if peerI, ok := peers[peerInfo.PeerKey]; ok {
-						// log.Printf("PROXING TO LOCAL!!!---> %s <<<< %s <<<<<<<< %s   [[ RECV PKT [SRCKEYHASH: %s], [DSTKEYHASH: %s], SourceIP: [%s] ]]\n",
-						// 	peerI.Proxy.LocalConn.RemoteAddr(), peerI.Proxy.LocalConn.LocalAddr(),
-						// 	fmt.Sprintf("%s:%d", source.IP.String(), source.Port), srcPeerKeyHash, dstPeerKeyHash, source.IP.String())
+						log.Printf("PROXING TO LOCAL!!!---> %s <<<< %s <<<<<<<< %s   [[ RECV PKT [SRCKEYHASH: %s], [DSTKEYHASH: %s], SourceIP: [%s] ]]\n",
+							peerI.Proxy.LocalConn.RemoteAddr(), peerI.Proxy.LocalConn.LocalAddr(),
+							fmt.Sprintf("%s:%d", source.IP.String(), source.Port), srcPeerKeyHash, dstPeerKeyHash, source.IP.String())
 						_, err = peerI.Proxy.LocalConn.Write(buffer[:n])
 						_, err = peerI.Proxy.LocalConn.Write(buffer[:n])
 						if err != nil {
 						if err != nil {
 							log.Println("Failed to proxy to Wg local interface: ", err)
 							log.Println("Failed to proxy to Wg local interface: ", err)