Skip to content

Commit 8754082

Browse files
authored
Better auth errors (#124)
* Better auth errors * more
1 parent a56b0a5 commit 8754082

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

internal/lobbyServer/lobby.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -235,16 +235,15 @@ func (s *LobbyServer) watchGameServer(name string, g *gameserver.GameServer) {
235235
}
236236
}
237237

238-
func (s *LobbyServer) validateAuth(receivedMessage SocketMessage) bool {
238+
func (s *LobbyServer) validateAuth(receivedMessage SocketMessage) error {
239239
if !s.EnableAuth {
240-
return true
240+
return nil
241241
}
242242

243243
now := time.Now().UTC()
244244
timeAsInt, err := strconv.ParseInt(receivedMessage.AuthTime, 10, 64)
245245
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")
248247
}
249248
receivedTime := time.UnixMilli(timeAsInt).UTC()
250249

@@ -253,20 +252,23 @@ func (s *LobbyServer) validateAuth(receivedMessage SocketMessage) bool {
253252
maxAllowableDifference := 15 * time.Minute
254253

255254
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")
258256
}
259257

260258
h := sha256.New()
261259
h.Write([]byte(receivedMessage.AuthTime))
262260

263261
authCode := os.Getenv(fmt.Sprintf("%s_AUTH", strings.ToUpper(receivedMessage.Emulator)))
264262
if authCode == "" {
265-
return false
263+
return fmt.Errorf("no authentication code found for emulator %s", receivedMessage.Emulator)
266264
}
267265
h.Write([]byte(authCode))
268266

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+
}
270272
}
271273

272274
func (s *LobbyServer) wsHandler(ws *websocket.Conn) {
@@ -349,10 +351,10 @@ func (s *LobbyServer) wsHandler(ws *websocket.Conn) {
349351
if err := s.sendData(ws, sendMessage); err != nil {
350352
s.Logger.Error(err, "failed to send message", "message", sendMessage, "address", ws.Request().RemoteAddr)
351353
}
352-
} else if !s.validateAuth(receivedMessage) {
354+
} else if authErr := s.validateAuth(receivedMessage); authErr != nil {
353355
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)
356358
if err := s.sendData(ws, sendMessage); err != nil {
357359
s.Logger.Error(err, "failed to send message", "message", sendMessage, "address", ws.Request().RemoteAddr)
358360
}
@@ -460,10 +462,10 @@ func (s *LobbyServer) wsHandler(ws *websocket.Conn) {
460462
if err := s.sendData(ws, sendMessage); err != nil {
461463
s.Logger.Error(err, "failed to send message", "message", sendMessage, "address", ws.Request().RemoteAddr)
462464
}
463-
} else if !s.validateAuth(receivedMessage) {
465+
} else if authErr := s.validateAuth(receivedMessage); authErr != nil {
464466
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)
467469
if err := s.sendData(ws, sendMessage); err != nil {
468470
s.Logger.Error(err, "failed to send message", "message", sendMessage, "address", ws.Request().RemoteAddr)
469471
}

0 commit comments

Comments
 (0)