diff --git a/socketserver/server/commands.go b/socketserver/server/commands.go index 72fca25a..fe219ccf 100644 --- a/socketserver/server/commands.go +++ b/socketserver/server/commands.go @@ -50,8 +50,7 @@ func DispatchC2SCommand(conn *websocket.Conn, client *ClientInfo, msg ClientMess handler = C2SHandleRemoteCommand } - Statistics.CommandsIssuedTotal++ - Statistics.CommandsIssuedMap[msg.Command]++ + CommandCounter <- msg.Command response, err := callHandler(handler, conn, client, msg) diff --git a/socketserver/server/handlecore.go b/socketserver/server/handlecore.go index 9fbb1af7..8a6ea4b6 100644 --- a/socketserver/server/handlecore.go +++ b/socketserver/server/handlecore.go @@ -104,6 +104,7 @@ func SetupServerAndHandle(config *ConfigFile, serveMux *http.ServeMux) { go bunchCacheJanitor() go pubsubJanitor() go aggregateDataSender() + go commandCounter() go ircConnection() go shutdownHandler() diff --git a/socketserver/server/stats.go b/socketserver/server/stats.go index a64a315b..eecfceab 100644 --- a/socketserver/server/stats.go +++ b/socketserver/server/stats.go @@ -59,6 +59,15 @@ type StatsData struct { // I don't really care. var Statistics = newStatsData() +var CommandCounter = make(chan Command, 10) + +func commandCounter() { + for cmd := range CommandCounter { + Statistics.CommandsIssuedTotal++ + Statistics.CommandsIssuedMap[cmd]++ + } +} + const StatsDataVersion = 5 const pageSize = 4096