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 }