/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package javastory.login;
import javastory.client.GameClient;
import javastory.cryptography.AesTransform;
import javastory.io.PacketFormatException;
import javastory.io.PacketReader;
import javastory.server.handling.ClientPacketOpcode;
import javastory.server.handling.PacketHandler;
import org.apache.mina.core.session.IoSession;
/**
*
* @author shoftee
*/
public class LoginPacketHandler extends PacketHandler {
public LoginPacketHandler() {
}
@Override
protected void handlePacket(final ClientPacketOpcode header, final PacketReader reader, final GameClient client) throws PacketFormatException {
final LoginClient loginClient = (LoginClient) client;
switch (header) {
case PONG:
client.pongReceived();
break;
case STRANGE_DATA:
// Does nothing for now, HackShield's heartbeat
break;
case LOGIN_PASSWORD:
loginClient.handleLogin(reader);
break;
case SERVERLIST_REQUEST:
loginClient.handleWorldListRequest();
break;
case CHARLIST_REQUEST:
loginClient.handleCharacterListRequest(reader);
break;
case SERVERSTATUS_REQUEST:
loginClient.handleServerStatusRequest();
break;
case CHECK_CHAR_NAME:
loginClient.handleCharacterNameCheck(reader);
break;
case CREATE_CHAR:
loginClient.handleCreateCharacter(reader);
break;
case DELETE_CHAR:
loginClient.handleDeleteCharacter(reader);
break;
case CHAR_SELECT:
loginClient.handleWithoutSecondPassword(reader);
break;
case AUTH_SECOND_PASSWORD:
loginClient.handleWithSecondPassword(reader);
break;
case RSA_KEY: // Fix this somehow
client.write(LoginPacket.loginCertificate());
break;
default:
break;
}
}
@Override
protected GameClient createClient(final AesTransform clientCrypto, final AesTransform serverCrypto, final IoSession session) {
final GameClient client = new LoginClient(clientCrypto, serverCrypto, session);
return client;
}
}