mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-08-04 11:44:00 +00:00
Replace log.Println() with Statistics
This commit is contained in:
parent
cc3a160c29
commit
a3971a27bf
4 changed files with 42 additions and 15 deletions
|
@ -48,6 +48,9 @@ func DispatchC2SCommand(conn *websocket.Conn, client *ClientInfo, msg ClientMess
|
||||||
handler = C2SHandleRemoteCommand
|
handler = C2SHandleRemoteCommand
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Statistics.CommandsIssuedTotal++
|
||||||
|
Statistics.CommandsIssuedMap[msg.Command]++
|
||||||
|
|
||||||
response, err := callHandler(handler, conn, client, msg)
|
response, err := callHandler(handler, conn, client, msg)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -308,7 +311,7 @@ func doSendAggregateData() {
|
||||||
|
|
||||||
followJSON, err := json.Marshal(follows)
|
followJSON, err := json.Marshal(follows)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Println("error reporting aggregate data:", err)
|
||||||
} else {
|
} else {
|
||||||
reportForm.Set("follows", string(followJSON))
|
reportForm.Set("follows", string(followJSON))
|
||||||
}
|
}
|
||||||
|
@ -320,20 +323,20 @@ func doSendAggregateData() {
|
||||||
}
|
}
|
||||||
emoteJSON, err := json.Marshal(strEmoteUsage)
|
emoteJSON, err := json.Marshal(strEmoteUsage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Println("error reporting aggregate data:", err)
|
||||||
} else {
|
} else {
|
||||||
reportForm.Set("emotes", string(emoteJSON))
|
reportForm.Set("emotes", string(emoteJSON))
|
||||||
}
|
}
|
||||||
|
|
||||||
form, err := SealRequest(reportForm)
|
form, err := SealRequest(reportForm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Println("error reporting aggregate data:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = SendAggregatedData(form)
|
err = SendAggregatedData(form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Println("error reporting aggregate data:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ func SetupServerAndHandle(config *ConfigFile, serveMux *http.ServeMux) {
|
||||||
}
|
}
|
||||||
resp, err := backendHTTPClient.PostForm(announceStartupURL, announceForm)
|
resp, err := backendHTTPClient.PostForm(announceStartupURL, announceForm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println("could not announce startup to backend:", err)
|
||||||
} else {
|
} else {
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
}
|
}
|
||||||
|
@ -158,7 +158,7 @@ var CloseFirstMessageNotHello = websocket.CloseError{
|
||||||
func RunSocketConnection(conn *websocket.Conn) {
|
func RunSocketConnection(conn *websocket.Conn) {
|
||||||
// websocket.Conn is a ReadWriteCloser
|
// websocket.Conn is a ReadWriteCloser
|
||||||
|
|
||||||
log.Println("Got socket connection from", conn.RemoteAddr())
|
Statistics.ClientConnectsTotal++
|
||||||
|
|
||||||
var _closer sync.Once
|
var _closer sync.Once
|
||||||
closer := func() {
|
closer := func() {
|
||||||
|
@ -210,9 +210,6 @@ func RunSocketConnection(conn *websocket.Conn) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, isClose := err.(*websocket.CloseError)
|
_, isClose := err.(*websocket.CloseError)
|
||||||
if err != io.EOF && !isClose {
|
|
||||||
log.Println("Error while reading from client:", err)
|
|
||||||
}
|
|
||||||
select {
|
select {
|
||||||
case errorChan <- err:
|
case errorChan <- err:
|
||||||
case <-stoppedChan:
|
case <-stoppedChan:
|
||||||
|
@ -255,8 +252,8 @@ RunLoop:
|
||||||
|
|
||||||
case msg := <-clientChan:
|
case msg := <-clientChan:
|
||||||
if client.Version == "" && msg.Command != HelloCommand {
|
if client.Version == "" && msg.Command != HelloCommand {
|
||||||
log.Println("error - first message wasn't hello from", conn.RemoteAddr(), "-", msg)
|
|
||||||
CloseConnection(conn, &CloseFirstMessageNotHello)
|
CloseConnection(conn, &CloseFirstMessageNotHello)
|
||||||
|
Statistics.FirstNotHelloDisconnects++
|
||||||
break RunLoop
|
break RunLoop
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,7 +297,7 @@ RunLoop:
|
||||||
// Close the channel so the draining goroutine can finish, too.
|
// Close the channel so the draining goroutine can finish, too.
|
||||||
close(_serverMessageChan)
|
close(_serverMessageChan)
|
||||||
|
|
||||||
log.Println("End socket connection from", conn.RemoteAddr())
|
Statistics.ClientDisconnectsTotal++
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDeadline() time.Time {
|
func getDeadline() time.Time {
|
||||||
|
@ -308,9 +305,9 @@ func getDeadline() time.Time {
|
||||||
}
|
}
|
||||||
|
|
||||||
func CloseConnection(conn *websocket.Conn, closeMsg *websocket.CloseError) {
|
func CloseConnection(conn *websocket.Conn, closeMsg *websocket.CloseError) {
|
||||||
if closeMsg != &CloseFirstMessageNotHello {
|
Statistics.DisconnectCodes[closeMsg.Code]++
|
||||||
log.Println("Terminating connection with", conn.RemoteAddr(), "-", closeMsg.Text)
|
Statistics.DisconnectReasons[closeMsg.Text]++
|
||||||
}
|
|
||||||
conn.WriteControl(websocket.CloseMessage, websocket.FormatCloseMessage(closeMsg.Code, closeMsg.Text), getDeadline())
|
conn.WriteControl(websocket.CloseMessage, websocket.FormatCloseMessage(closeMsg.Code, closeMsg.Text), getDeadline())
|
||||||
conn.Close()
|
conn.Close()
|
||||||
}
|
}
|
||||||
|
@ -324,6 +321,7 @@ func SendMessage(conn *websocket.Conn, msg ClientMessage) {
|
||||||
}
|
}
|
||||||
conn.SetWriteDeadline(getDeadline())
|
conn.SetWriteDeadline(getDeadline())
|
||||||
conn.WriteMessage(messageType, packet)
|
conn.WriteMessage(messageType, packet)
|
||||||
|
Statistics.MessagesSent++
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalClientMessage unpacks websocket TextMessage into a ClientMessage provided in the `v` parameter.
|
// UnmarshalClientMessage unpacks websocket TextMessage into a ClientMessage provided in the `v` parameter.
|
||||||
|
|
26
socketserver/internal/server/stats.go
Normal file
26
socketserver/internal/server/stats.go
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
package server
|
||||||
|
|
||||||
|
type StatsData struct {
|
||||||
|
ClientConnectsTotal int64
|
||||||
|
ClientDisconnectsTotal int64
|
||||||
|
FirstNotHelloDisconnects int64
|
||||||
|
|
||||||
|
DisconnectCodes map[int]int64
|
||||||
|
DisconnectReasons map[string]int64
|
||||||
|
|
||||||
|
CommandsIssuedTotal int64
|
||||||
|
CommandsIssuedMap map[Command]int64
|
||||||
|
|
||||||
|
MessagesSent int64
|
||||||
|
}
|
||||||
|
|
||||||
|
func newStatsData() *StatsData {
|
||||||
|
return &StatsData{
|
||||||
|
CommandsIssuedMap: make(map[Command]int64),
|
||||||
|
DisconnectCodes: make(map[int]int64),
|
||||||
|
DisconnectReasons: make(map[string]int64),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Statistics is several variables that get incremented during normal operation of the server.
|
||||||
|
var Statistics = newStatsData()
|
|
@ -89,7 +89,7 @@ func UnsealRequest(form url.Values) (url.Values, error) {
|
||||||
retValues, err := url.ParseQuery(string(message))
|
retValues, err := url.ParseQuery(string(message))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Assume that the signature was accidentally correct but the contents were garbage
|
// Assume that the signature was accidentally correct but the contents were garbage
|
||||||
log.Print(err)
|
log.Println("Error unsealing request:", err)
|
||||||
return nil, ErrorInvalidSignature
|
return nil, ErrorInvalidSignature
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue