@@ -235,16 +235,15 @@ func (s *LobbyServer) watchGameServer(name string, g *gameserver.GameServer) {
235
235
}
236
236
}
237
237
238
- func (s * LobbyServer ) validateAuth (receivedMessage SocketMessage ) bool {
238
+ func (s * LobbyServer ) validateAuth (receivedMessage SocketMessage ) error {
239
239
if ! s .EnableAuth {
240
- return true
240
+ return nil
241
241
}
242
242
243
243
now := time .Now ().UTC ()
244
244
timeAsInt , err := strconv .ParseInt (receivedMessage .AuthTime , 10 , 64 )
245
245
if err != nil {
246
- s .Logger .Error (err , "could not parse time" , "emulator" , receivedMessage .Emulator )
247
- return false
246
+ return fmt .Errorf ("could not parse time for authentication" )
248
247
}
249
248
receivedTime := time .UnixMilli (timeAsInt ).UTC ()
250
249
@@ -253,20 +252,23 @@ func (s *LobbyServer) validateAuth(receivedMessage SocketMessage) bool {
253
252
maxAllowableDifference := 15 * time .Minute
254
253
255
254
if absTimeDifference > maxAllowableDifference {
256
- s .Logger .Error (fmt .Errorf ("clock skew" ), "bad time in auth request" , "serverTime" , now , "clientTime" , receivedTime , "emulator" , receivedMessage .Emulator )
257
- return false
255
+ return fmt .Errorf ("clock skew detected, please check your system time" )
258
256
}
259
257
260
258
h := sha256 .New ()
261
259
h .Write ([]byte (receivedMessage .AuthTime ))
262
260
263
261
authCode := os .Getenv (fmt .Sprintf ("%s_AUTH" , strings .ToUpper (receivedMessage .Emulator )))
264
262
if authCode == "" {
265
- return false
263
+ return fmt . Errorf ( "no authentication code found for emulator %s" , receivedMessage . Emulator )
266
264
}
267
265
h .Write ([]byte (authCode ))
268
266
269
- return receivedMessage .Auth == hex .EncodeToString (h .Sum (nil ))
267
+ if receivedMessage .Auth == hex .EncodeToString (h .Sum (nil )) {
268
+ return nil
269
+ } else {
270
+ return fmt .Errorf ("bad authentication code" )
271
+ }
270
272
}
271
273
272
274
func (s * LobbyServer ) wsHandler (ws * websocket.Conn ) {
@@ -349,10 +351,10 @@ func (s *LobbyServer) wsHandler(ws *websocket.Conn) {
349
351
if err := s .sendData (ws , sendMessage ); err != nil {
350
352
s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , ws .Request ().RemoteAddr )
351
353
}
352
- } else if ! s .validateAuth (receivedMessage ) {
354
+ } else if authErr := s .validateAuth (receivedMessage ); authErr != nil {
353
355
sendMessage .Accept = BadAuth
354
- sendMessage .Message = "Bad authentication code"
355
- s .Logger .Info ("bad auth code" , "message" , receivedMessage , "address" , ws .Request ().RemoteAddr )
356
+ sendMessage .Message = authErr . Error ()
357
+ s .Logger .Info ("bad auth code" , "authError" , authErr . Error (), " message" , receivedMessage , "address" , ws .Request ().RemoteAddr )
356
358
if err := s .sendData (ws , sendMessage ); err != nil {
357
359
s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , ws .Request ().RemoteAddr )
358
360
}
@@ -460,10 +462,10 @@ func (s *LobbyServer) wsHandler(ws *websocket.Conn) {
460
462
if err := s .sendData (ws , sendMessage ); err != nil {
461
463
s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , ws .Request ().RemoteAddr )
462
464
}
463
- } else if ! s .validateAuth (receivedMessage ) {
465
+ } else if authErr := s .validateAuth (receivedMessage ); authErr != nil {
464
466
sendMessage .Accept = BadAuth
465
- sendMessage .Message = "Bad authentication code"
466
- s .Logger .Info ("bad auth code" , "message" , receivedMessage , "address" , ws .Request ().RemoteAddr )
467
+ sendMessage .Message = authErr . Error ()
468
+ s .Logger .Info ("bad auth code" , "authError" , authErr . Error (), " message" , receivedMessage , "address" , ws .Request ().RemoteAddr )
467
469
if err := s .sendData (ws , sendMessage ); err != nil {
468
470
s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , ws .Request ().RemoteAddr )
469
471
}
0 commit comments