Add statistics printed out every minute

This commit is contained in:
maride 2017-09-28 14:58:24 +02:00
parent 764203ea99
commit dbcb695de4

View File

@ -21,6 +21,8 @@ var (
whitelist = make(map[string]int64)
blacklist []string
arguments *knockArguments
traffic_in int64
traffic_out int64
)
func main() {
@ -33,7 +35,15 @@ func main() {
// Launch listeners
go listener(arguments.WhitelistPort, whitelist_handler)
go listener(arguments.BlacklistPort, blacklist_handler)
listener(arguments.GatewayPort, gateway_handler)
go listener(arguments.GatewayPort, gateway_handler)
stats()
}
func stats() {
for {
time.Sleep(60*time.Second)
fmt.Println("[STS] In ", traffic_in/1024, "KB, Out ", traffic_out/1024, "KB");
}
}
func listener(port int, listen_func func(c net.Conn)) {
@ -163,7 +173,12 @@ func proxy(c net.Conn) {
fmt.Println("[ERR] Proxy connection to server failed")
fmt.Println(" Error is ", err)
} else {
go io.Copy(c, ln)
io.Copy(ln, c)
// A bit of cluttery code for statistics purposes, sorry.
go func() {
delta_traffic_in, _ := io.Copy(c, ln)
traffic_in += delta_traffic_in
}()
delta_traffic_out, _ := io.Copy(ln, c)
traffic_out += delta_traffic_out
}
}