record traffic in mb

This commit is contained in:
Abhishek Kondur 2022-12-01 10:51:24 +05:30
parent 1d4b915f2d
commit 7c374d9763
3 changed files with 11 additions and 12 deletions

View file

@ -15,8 +15,8 @@ import (
type Metric struct {
LastRecordedLatency uint64
ConnectionStatus bool
TrafficSent uint64
TrafficRecieved uint64
TrafficSent float64
TrafficRecieved float64
}
type MetricsPayload struct {

View file

@ -53,7 +53,7 @@ func (p *Proxy) proxyToRemote(wg *sync.WaitGroup) {
go func(n int, peerKey string) {
metrics.MetricsMapLock.Lock()
metric := metrics.MetricsMap[peerKey]
metric.TrafficSent += uint64(n)
metric.TrafficSent += float64(n) / (1 << 20)
metrics.MetricsMap[peerKey] = metric
metrics.MetricsMapLock.Unlock()
}(n, p.Config.RemoteKey.String())

View file

@ -75,7 +75,7 @@ func (p *ProxyServer) Listen(ctx context.Context) {
proxyTransportMsg = false
}
if proxyTransportMsg {
proxyIncomingPacket(buffer[:], source, n, srcPeerKeyHash, dstPeerKeyHash)
p.proxyIncomingPacket(buffer[:], source, n, srcPeerKeyHash, dstPeerKeyHash)
continue
} else {
// unknown peer to proxy -> check if extclient and handle it
@ -101,12 +101,11 @@ func handleMsgs(buffer []byte, n int, source *net.UDPAddr) {
log.Printf("------->$$$$$ Recieved Metric Pkt: %+v, FROM:%s\n", metricMsg, source.String())
if metricMsg.Sender == common.WgIfaceMap.Iface.PublicKey {
latency := time.Now().UnixMilli() - metricMsg.TimeStamp
log.Println("----------------> LAtency$$$$$$: ", latency)
metrics.MetricsMapLock.Lock()
metric := metrics.MetricsMap[metricMsg.Reciever.String()]
metric.LastRecordedLatency = uint64(latency)
metric.ConnectionStatus = true
metric.TrafficRecieved += uint64(n)
metric.TrafficRecieved += float64(n) / (1 << 20)
metrics.MetricsMap[metricMsg.Reciever.String()] = metric
metrics.MetricsMapLock.Unlock()
} else if metricMsg.Reciever == common.WgIfaceMap.Iface.PublicKey {
@ -119,7 +118,7 @@ func handleMsgs(buffer []byte, n int, source *net.UDPAddr) {
metrics.MetricsMapLock.Lock()
metric := metrics.MetricsMap[metricMsg.Sender.String()]
metric.ConnectionStatus = true
metric.TrafficRecieved += uint64(n)
metric.TrafficRecieved += float64(n) / (1 << 20)
metrics.MetricsMap[metricMsg.Sender.String()] = metric
metrics.MetricsMapLock.Unlock()
}
@ -164,7 +163,7 @@ func handleExtClients(buffer []byte, n int, source *net.UDPAddr) bool {
peerI.Config.RecieverChan <- buffer[:n]
metrics.MetricsMapLock.Lock()
metric := metrics.MetricsMap[peerInfo.PeerKey]
metric.TrafficRecieved += uint64(n)
metric.TrafficRecieved += float64(n) / (1 << 20)
metric.ConnectionStatus = true
metrics.MetricsMap[peerInfo.PeerKey] = metric
metrics.MetricsMapLock.Unlock()
@ -176,7 +175,7 @@ func handleExtClients(buffer []byte, n int, source *net.UDPAddr) bool {
return isExtClient
}
func proxyIncomingPacket(buffer []byte, source *net.UDPAddr, n int, srcPeerKeyHash, dstPeerKeyHash string) {
func (p *ProxyServer) proxyIncomingPacket(buffer []byte, source *net.UDPAddr, n int, srcPeerKeyHash, dstPeerKeyHash string) {
var err error
//log.Printf("--------> RECV PKT , [SRCKEYHASH: %s], SourceIP: [%s] \n", srcPeerKeyHash, source.IP.String())
@ -188,7 +187,7 @@ func proxyIncomingPacket(buffer []byte, source *net.UDPAddr, n int, srcPeerKeyHa
if conf, ok := remoteMap[dstPeerKeyHash]; ok {
log.Printf("--------> Relaying PKT [ SourceIP: %s:%d ], [ SourceKeyHash: %s ], [ DstIP: %s:%d ], [ DstHashKey: %s ] \n",
source.IP.String(), source.Port, srcPeerKeyHash, conf.Endpoint.String(), conf.Endpoint.Port, dstPeerKeyHash)
_, err = NmProxyServer.Server.WriteToUDP(buffer[:n+packet.MessageProxySize], conf.Endpoint)
_, err = p.Server.WriteToUDP(buffer[:n+packet.MessageProxySize], conf.Endpoint)
if err != nil {
log.Println("Failed to send to remote: ", err)
}
@ -199,7 +198,7 @@ func proxyIncomingPacket(buffer []byte, source *net.UDPAddr, n int, srcPeerKeyHa
if conf, ok := remoteMap[dstPeerKeyHash]; ok {
log.Printf("--------> Relaying BACK TO RELAYED NODE PKT [ SourceIP: %s ], [ SourceKeyHash: %s ], [ DstIP: %s ], [ DstHashKey: %s ] \n",
source.String(), srcPeerKeyHash, conf.Endpoint.String(), dstPeerKeyHash)
_, err = NmProxyServer.Server.WriteToUDP(buffer[:n+packet.MessageProxySize], conf.Endpoint)
_, err = p.Server.WriteToUDP(buffer[:n+packet.MessageProxySize], conf.Endpoint)
if err != nil {
log.Println("Failed to send to remote: ", err)
}
@ -224,7 +223,7 @@ func proxyIncomingPacket(buffer []byte, source *net.UDPAddr, n int, srcPeerKeyHa
go func(n int, peerKey string) {
metrics.MetricsMapLock.Lock()
metric := metrics.MetricsMap[peerKey]
metric.TrafficRecieved += uint64(n)
metric.TrafficRecieved += float64(n) / (1 << 20)
metric.ConnectionStatus = true
metrics.MetricsMap[peerKey] = metric
metrics.MetricsMapLock.Unlock()