mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2026-08-01 14:39:13 -06:00
83 lines
No EOL
2.1 KiB
Java
83 lines
No EOL
2.1 KiB
Java
package ms.net.event;
|
|
|
|
import java.nio.ByteBuffer;
|
|
import java.util.Locale;
|
|
|
|
import ms.Management;
|
|
import ms.net.IoReadEvent;
|
|
import ms.net.IoSession;
|
|
import ms.net.packet.IoBuffer;
|
|
import ms.system.util.ManagementConstants;
|
|
import ms.world.PlayerSession;
|
|
import ms.world.WorldDatabase;
|
|
import ms.system.util.ByteBufferUtils;
|
|
|
|
/**
|
|
* Handles handshake read events.
|
|
* @author Emperor
|
|
*/
|
|
public final class HSReadEvent extends IoReadEvent {
|
|
|
|
/**
|
|
* Constructs a new {@code HSReadEvent}.
|
|
* @param session The session.
|
|
* @param buffer The buffer.
|
|
*/
|
|
public HSReadEvent(IoSession session, ByteBuffer buffer) {
|
|
super(session, buffer);
|
|
}
|
|
|
|
@Override
|
|
public void read(IoSession session, ByteBuffer buffer) {
|
|
int opcode = buffer.get() & 0xFF;
|
|
switch (opcode) {
|
|
case 88:
|
|
String password = ByteBufferUtils.getString(buffer);
|
|
if (!password.equals(ManagementConstants.getSECRET_KEY())) {
|
|
System.out.println("Password mismatch (attempt=" + password + ")!");
|
|
session.disconnect();
|
|
break;
|
|
}
|
|
session.write(opcode);
|
|
break;
|
|
case 255: // World list
|
|
int updateStamp = buffer.getInt();
|
|
WorldDatabase.sendUpdate(session, updateStamp);
|
|
break;
|
|
case 35:
|
|
IoBuffer buf = new IoBuffer();
|
|
String username = ByteBufferUtils.getString(buffer).toLowerCase();
|
|
password = ByteBufferUtils.getString(buffer);
|
|
if (!password.equals(ManagementConstants.getSECRET_KEY())){
|
|
System.out.println("Password mismatch (attempt=" + password + ")!");
|
|
buf.put(1);
|
|
ByteBuffer buff = buf.toByteBuffer();
|
|
buff.flip();
|
|
session.queue(buff);
|
|
return;
|
|
}
|
|
|
|
PlayerSession player = WorldDatabase.getPlayer(username);
|
|
if (player == null) {
|
|
System.out.println("Player " + username + " was not registered!");
|
|
buf.put(2);
|
|
ByteBuffer buff = buf.toByteBuffer();
|
|
buff.flip();
|
|
session.queue(buff);
|
|
return;
|
|
}
|
|
buf.put(0);
|
|
ByteBuffer buff = buf.toByteBuffer();
|
|
buff.flip();
|
|
session.queue(buff);
|
|
player.getWorld().getPlayers().remove(username);
|
|
player.setWorldId(0);
|
|
break;
|
|
default:
|
|
System.err.println("Unhandled handshake opcode: " + opcode + ".");
|
|
session.disconnect();
|
|
break;
|
|
}
|
|
}
|
|
|
|
} |