Loading client/lib/util.go +31 −0 Original line number Diff line number Diff line package snowflake_client import ( "fmt" "log" "os" "time" "github.com/xtaci/kcp-go/v5" ) const ( Loading @@ -14,6 +18,10 @@ type bytesLogger interface { addInbound(int64) } var SNMPRunID [8]byte var SNMPLogFile *os.File var SNMPRecordCounter int64 // Default bytesLogger does nothing. type bytesNullLogger struct{} Loading Loading @@ -52,6 +60,13 @@ func (b *bytesSyncLogger) log() { outEvents = 0 inbound = 0 inEvents = 0 if SNMPLogFile != nil { err := logSNMP(SNMPLogFile, SNMPRunID, SNMPRecordCounter) SNMPRecordCounter++ if err != nil { log.Printf("error logging SNMP: %v", err) } } case amount := <-b.outboundChan: outbound += amount outEvents++ Loading @@ -69,3 +84,19 @@ func (b *bytesSyncLogger) addOutbound(amount int64) { func (b *bytesSyncLogger) addInbound(amount int64) { b.inboundChan <- amount } func logSNMP(f *os.File, runID [8]byte, counter int64) error { _, err := fmt.Fprintf(f, "%x,%d,%s,%s\n", runID, counter, "Date", time.Now().UTC().Format(time.RFC3339)) if err != nil { return err } labels := kcp.DefaultSnmp.Header() values := kcp.DefaultSnmp.ToSlice() for i := 0; i < len(labels) && i < len(values); i++ { _, err := fmt.Fprintf(f, "%x,%d,%s,%s\n", runID, counter, labels[i], values[i]) if err != nil { return err } } return nil } client/snowflake.go +16 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package main import ( "crypto/rand" "flag" "fmt" "io" Loading Loading @@ -160,6 +161,7 @@ func main() { max := flag.Int("max", DefaultSnowflakeCapacity, "capacity for number of multiplexed WebRTC peers") versionFlag := flag.Bool("version", false, "display version info to stderr and quit") snmpLogFilename := flag.String("snmp-log", "", "name of kcp-go SNMP log file") // Deprecated oldLogToStateDir := flag.Bool("logToStateDir", false, "use -log-to-state-dir instead") Loading Loading @@ -203,6 +205,20 @@ func main() { log.SetOutput(&safelog.LogScrubber{Output: logOutput}) } if *snmpLogFilename != "" { var err error sf.SNMPLogFile, err = os.OpenFile(*snmpLogFilename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600) if err != nil { log.Fatal(err) } _, err = rand.Read(sf.SNMPRunID[:]) if err != nil { log.Fatal(err) } defer sf.SNMPLogFile.Close() } log.Printf("snowflake-client %s\n", version.GetVersion()) iceAddresses := strings.Split(strings.TrimSpace(*iceServersCommas), ",") Loading Loading
client/lib/util.go +31 −0 Original line number Diff line number Diff line package snowflake_client import ( "fmt" "log" "os" "time" "github.com/xtaci/kcp-go/v5" ) const ( Loading @@ -14,6 +18,10 @@ type bytesLogger interface { addInbound(int64) } var SNMPRunID [8]byte var SNMPLogFile *os.File var SNMPRecordCounter int64 // Default bytesLogger does nothing. type bytesNullLogger struct{} Loading Loading @@ -52,6 +60,13 @@ func (b *bytesSyncLogger) log() { outEvents = 0 inbound = 0 inEvents = 0 if SNMPLogFile != nil { err := logSNMP(SNMPLogFile, SNMPRunID, SNMPRecordCounter) SNMPRecordCounter++ if err != nil { log.Printf("error logging SNMP: %v", err) } } case amount := <-b.outboundChan: outbound += amount outEvents++ Loading @@ -69,3 +84,19 @@ func (b *bytesSyncLogger) addOutbound(amount int64) { func (b *bytesSyncLogger) addInbound(amount int64) { b.inboundChan <- amount } func logSNMP(f *os.File, runID [8]byte, counter int64) error { _, err := fmt.Fprintf(f, "%x,%d,%s,%s\n", runID, counter, "Date", time.Now().UTC().Format(time.RFC3339)) if err != nil { return err } labels := kcp.DefaultSnmp.Header() values := kcp.DefaultSnmp.ToSlice() for i := 0; i < len(labels) && i < len(values); i++ { _, err := fmt.Fprintf(f, "%x,%d,%s,%s\n", runID, counter, labels[i], values[i]) if err != nil { return err } } return nil }
client/snowflake.go +16 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package main import ( "crypto/rand" "flag" "fmt" "io" Loading Loading @@ -160,6 +161,7 @@ func main() { max := flag.Int("max", DefaultSnowflakeCapacity, "capacity for number of multiplexed WebRTC peers") versionFlag := flag.Bool("version", false, "display version info to stderr and quit") snmpLogFilename := flag.String("snmp-log", "", "name of kcp-go SNMP log file") // Deprecated oldLogToStateDir := flag.Bool("logToStateDir", false, "use -log-to-state-dir instead") Loading Loading @@ -203,6 +205,20 @@ func main() { log.SetOutput(&safelog.LogScrubber{Output: logOutput}) } if *snmpLogFilename != "" { var err error sf.SNMPLogFile, err = os.OpenFile(*snmpLogFilename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600) if err != nil { log.Fatal(err) } _, err = rand.Read(sf.SNMPRunID[:]) if err != nil { log.Fatal(err) } defer sf.SNMPLogFile.Close() } log.Printf("snowflake-client %s\n", version.GetVersion()) iceAddresses := strings.Split(strings.TrimSpace(*iceServersCommas), ",") Loading