/ login-server / source / packets / manager / RequestServerLogin.ts
RequestServerLogin.ts
 1  import { SessionKeyHelper, SessionKeyProperties } from '../../service/SessionKey'
 2  import { LoginManager } from '../../cache/LoginManager'
 3  import { PlayOK } from '../send/PlayOK'
 4  import { PlayFail, PlayFailReason } from '../send/PlayFail'
 5  import { LoginFail, LoginFailReason } from '../send/LoginFail'
 6  import { L2LoginClient } from '../../service/L2LoginClient'
 7  import { ConfigManager } from '../../config/ConfigManager'
 8  import { ReadableClientPacket } from '../ReadableClientPacket'
 9  
10  export function RequestServerLogin( client: L2LoginClient, data: Buffer ) : Buffer {
11      let packet = new ReadableClientPacket( data, 1 )
12      let loginOk1 = packet.readD()
13      let loginOk2 = packet.readD()
14  
15      if ( !ConfigManager.server.showLicense() || SessionKeyHelper.compareKeys( client.getSessionKey(), {
16          loginOk1,
17          loginOk2,
18      } as SessionKeyProperties ) ) {
19          let serverId = packet.readC()
20  
21          if ( LoginManager.isLoginPossible( client, serverId ) ) {
22              client.setJoinedGS( true )
23  
24              return PlayOK( client.getSessionKey() )
25          }
26  
27          return PlayFail( PlayFailReason.serverOverloaded )
28      }
29  
30      return LoginFail( LoginFailReason.accessFailed )
31  }