Handlers read from InPacket instead of SeekableLittleEndianAccessor

This commit is contained in:
P0nk
2021-08-22 22:10:19 +02:00
parent 2232022cf1
commit da2d8abc56
182 changed files with 1223 additions and 1230 deletions

View File

@@ -23,14 +23,14 @@ package net.server.handlers;
import client.MapleClient;
import net.MaplePacketHandler;
import net.packet.InPacket;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public class CustomPacketHandler implements MaplePacketHandler {
@Override
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if (slea.available() > 0 && c.getGMLevel() == 4) {//w/e
c.sendPacket(PacketCreator.customPacket(slea.read((int) slea.available())));
public void handlePacket(InPacket p, MapleClient c) {
if (p.available() > 0 && c.getGMLevel() == 4) {//w/e
c.sendPacket(PacketCreator.customPacket(p.readBytes((int) p.available())));
}
}

View File

@@ -23,11 +23,11 @@ package net.server.handlers;
import client.MapleClient;
import net.MaplePacketHandler;
import tools.data.input.SeekableLittleEndianAccessor;
import net.packet.InPacket;
public class KeepAliveHandler implements MaplePacketHandler {
@Override
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public void handlePacket(InPacket p, MapleClient c) {
c.pongReceived();
}

View File

@@ -23,7 +23,7 @@ package net.server.handlers;
import client.MapleClient;
import net.MaplePacketHandler;
import tools.data.input.SeekableLittleEndianAccessor;
import net.packet.InPacket;
public final class LoginRequiringNoOpHandler implements MaplePacketHandler {
private static LoginRequiringNoOpHandler instance = new LoginRequiringNoOpHandler();
@@ -32,7 +32,7 @@ public final class LoginRequiringNoOpHandler implements MaplePacketHandler {
return instance;
}
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public void handlePacket(InPacket p, MapleClient c) {
}
public boolean validateState(MapleClient c) {

View File

@@ -2,8 +2,8 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
/**
*
@@ -17,8 +17,8 @@ public final class AcceptToSHandler extends AbstractMaplePacketHandler {
}
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if (slea.available() == 0 || slea.readByte() != 1 || c.acceptToS()) {
public final void handlePacket(InPacket p, MapleClient c) {
if (p.available() == 0 || p.readByte() != 1 || c.acceptToS()) {
c.disconnect(false, false);//Client dc's but just because I am cool I do this (:
return;
}

View File

@@ -23,18 +23,18 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.coordinator.session.SessionCoordinator;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public final class AfterLoginHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte c2 = slea.readByte();
public final void handlePacket(InPacket p, MapleClient c) {
byte c2 = p.readByte();
byte c3 = 5;
if (slea.available() > 0) {
c3 = slea.readByte();
if (p.available() > 0) {
c3 = p.readByte();
}
if (c2 == 1 && c3 == 1) {
if (c.getPin() == null || c.getPin().equals("")) {
@@ -43,14 +43,14 @@ public final class AfterLoginHandler extends AbstractMaplePacketHandler {
c.sendPacket(PacketCreator.requestPin());
}
} else if (c2 == 1 && c3 == 0) {
String pin = slea.readMapleAsciiString();
String pin = p.readString();
if (c.checkPin(pin)) {
c.sendPacket(PacketCreator.pinAccepted());
} else {
c.sendPacket(PacketCreator.requestPinAfterFailure());
}
} else if (c2 == 2 && c3 == 0) {
String pin = slea.readMapleAsciiString();
String pin = p.readString();
if (c.checkPin(pin)) {
c.sendPacket(PacketCreator.registerPin());
} else {

View File

@@ -23,6 +23,7 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import net.server.coordinator.session.SessionCoordinator;
@@ -31,7 +32,6 @@ import net.server.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -50,11 +50,11 @@ public final class CharSelectedHandler extends AbstractMaplePacketHandler {
}
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
int charId = slea.readInt();
public final void handlePacket(InPacket p, MapleClient c) {
int charId = p.readInt();
String macs = slea.readMapleAsciiString();
String hostString = slea.readMapleAsciiString();
String macs = p.readString();
String hostString = p.readString();
final Hwid hwid;
try {

View File

@@ -2,6 +2,7 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import net.server.coordinator.session.SessionCoordinator;
@@ -10,7 +11,6 @@ import net.server.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -29,12 +29,12 @@ public class CharSelectedWithPicHandler extends AbstractMaplePacketHandler {
}
@Override
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
String pic = slea.readMapleAsciiString();
int charId = slea.readInt();
public void handlePacket(InPacket p, MapleClient c) {
String pic = p.readString();
int charId = p.readInt();
String macs = slea.readMapleAsciiString();
String hostString = slea.readMapleAsciiString();
String macs = p.readString();
String hostString = p.readString();
final Hwid hwid;
try {

View File

@@ -23,18 +23,18 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.channel.Channel;
import net.server.world.World;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public final class CharlistRequestHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
slea.readByte();
int world = slea.readByte();
public final void handlePacket(InPacket p, MapleClient c) {
p.readByte();
int world = p.readByte();
World wserv = Server.getInstance().getWorld(world);
if(wserv == null || wserv.isWorldCapacityFull()) {
@@ -42,7 +42,7 @@ public final class CharlistRequestHandler extends AbstractMaplePacketHandler {
return;
}
int channel = slea.readByte() + 1;
int channel = p.readByte() + 1;
Channel ch = wserv.getChannel(channel);
if(ch == null) {
c.sendPacket(PacketCreator.getServerStatus(2));

View File

@@ -24,14 +24,14 @@ package net.server.handlers.login;
import client.MapleCharacter;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public final class CheckCharNameHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
String name = slea.readMapleAsciiString();
public final void handlePacket(InPacket p, MapleClient c) {
String name = p.readString();
c.sendPacket(PacketCreator.charNameResponse(name, !MapleCharacter.canCreateChar(name)));
}
}

View File

@@ -26,9 +26,9 @@ import client.creator.novice.BeginnerCreator;
import client.creator.novice.LegendCreator;
import client.creator.novice.NoblesseCreator;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.util.Arrays;
import java.util.HashSet;
@@ -52,20 +52,20 @@ public final class CreateCharHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
String name = slea.readMapleAsciiString();
int job = slea.readInt();
int face = slea.readInt();
public final void handlePacket(InPacket p, MapleClient c) {
String name = p.readString();
int job = p.readInt();
int face = p.readInt();
int hair = slea.readInt();
int haircolor = slea.readInt();
int skincolor = slea.readInt();
int hair = p.readInt();
int haircolor = p.readInt();
int skincolor = p.readInt();
int top = slea.readInt();
int bottom = slea.readInt();
int shoes = slea.readInt();
int weapon = slea.readInt();
int gender = slea.readByte();
int top = p.readInt();
int bottom = p.readInt();
int shoes = p.readInt();
int weapon = p.readInt();
int gender = p.readByte();
int [] items = new int [] {weapon, top, bottom, shoes, hair, face};
for (int item : items) {

View File

@@ -24,11 +24,11 @@ package net.server.handlers.login;
import client.MapleClient;
import client.MapleFamily;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import tools.DatabaseConnection;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -38,9 +38,9 @@ import java.sql.SQLException;
public final class DeleteCharHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
String pic = slea.readMapleAsciiString();
int cid = slea.readInt();
public final void handlePacket(InPacket p, MapleClient c) {
String pic = p.readString();
int cid = p.readInt();
if (c.checkPic(pic)) {
//check for family, guild leader, pending marriage, world transfer
try (Connection con = DatabaseConnection.getConnection();

View File

@@ -23,8 +23,8 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
/*
* @author David
@@ -32,9 +32,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
public final class GuestLoginHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public final void handlePacket(InPacket p, MapleClient c) {
c.sendPacket(PacketCreator.sendGuestTOS());
//System.out.println(slea.toString());
new LoginPasswordHandler().handlePacket(slea, c);
new LoginPasswordHandler().handlePacket(p, c);
}
}

View File

@@ -25,13 +25,13 @@ import client.DefaultDates;
import client.MapleClient;
import config.YamlConfig;
import net.MaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import tools.BCrypt;
import tools.DatabaseConnection;
import tools.HexTool;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
@@ -54,19 +54,19 @@ public final class LoginPasswordHandler implements MaplePacketHandler {
}
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public final void handlePacket(InPacket p, MapleClient c) {
String remoteHost = c.getRemoteAddress();
if (remoteHost.contentEquals("null")) {
c.sendPacket(PacketCreator.getLoginFailed(14)); // thanks Alchemist for noting remoteHost could be null
return;
}
String login = slea.readMapleAsciiString();
String pwd = slea.readMapleAsciiString();
String login = p.readString();
String pwd = p.readString();
c.setAccountName(login);
slea.skip(6); // localhost masked the initial part with zeroes...
byte[] hwidNibbles = slea.read(4);
p.skip(6); // localhost masked the initial part with zeroes...
byte[] hwidNibbles = p.readBytes(4);
Hwid hwid = new Hwid(HexTool.bytesToHex(hwidNibbles));
int loginok = c.login(login, pwd, hwid);

View File

@@ -2,6 +2,7 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import net.server.coordinator.session.SessionCoordinator;
@@ -10,7 +11,6 @@ import net.server.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -29,12 +29,12 @@ public final class RegisterPicHandler extends AbstractMaplePacketHandler {
}
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
slea.readByte();
int charId = slea.readInt();
public final void handlePacket(InPacket p, MapleClient c) {
p.readByte();
int charId = p.readInt();
String macs = slea.readMapleAsciiString();
String hostString = slea.readMapleAsciiString();
String macs = p.readString();
String hostString = p.readString();
final Hwid hwid;
try {
@@ -65,7 +65,7 @@ public final class RegisterPicHandler extends AbstractMaplePacketHandler {
return;
}
String pic = slea.readMapleAsciiString();
String pic = p.readString();
if (c.getPic() == null || c.getPic().equals("")) {
c.setPic(pic);

View File

@@ -23,22 +23,22 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.coordinator.session.SessionCoordinator;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
/*
* @author Rob
*/
public final class RegisterPinHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte c2 = slea.readByte();
public final void handlePacket(InPacket p, MapleClient c) {
byte c2 = p.readByte();
if (c2 == 0) {
SessionCoordinator.getInstance().closeSession(c, null);
c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN);
} else {
String pin = slea.readMapleAsciiString();
String pin = p.readString();
if (pin != null) {
c.setPin(pin);
c.sendPacket(PacketCreator.pinRegistered());

View File

@@ -23,8 +23,8 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public final class RelogRequestHandler extends AbstractMaplePacketHandler {
@Override
@@ -33,7 +33,7 @@ public final class RelogRequestHandler extends AbstractMaplePacketHandler {
}
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public final void handlePacket(InPacket p, MapleClient c) {
c.sendPacket(PacketCreator.getRelogResponse());
}
}

View File

@@ -23,16 +23,16 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.world.World;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public final class ServerStatusRequestHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte world = (byte) slea.readShort();
public final void handlePacket(InPacket p, MapleClient c) {
byte world = (byte) p.readShort();
World wserv = Server.getInstance().getWorld(world);
if(wserv != null) {
int status = wserv.getWorldCapacityStatus();

View File

@@ -24,17 +24,17 @@ package net.server.handlers.login;
import client.MapleClient;
import constants.game.GameConstants;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.world.World;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.util.List;
public final class ServerlistRequestHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public final void handlePacket(InPacket p, MapleClient c) {
Server server = Server.getInstance();
List<World> worlds = server.getWorlds();
c.requestedServerlist(worlds.size());

View File

@@ -24,10 +24,10 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.SessionCoordinator;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
/**
*
@@ -35,11 +35,11 @@ import tools.data.input.SeekableLittleEndianAccessor;
*/
public class SetGenderHandler extends AbstractMaplePacketHandler {
@Override
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public void handlePacket(InPacket p, MapleClient c) {
if (c.getGender() == 10) { //Packet shouldn't come if Gender isn't 10.
byte confirmed = slea.readByte();
byte confirmed = p.readByte();
if (confirmed == 0x01) {
c.setGender(slea.readByte());
c.setGender(p.readByte());
c.sendPacket(PacketCreator.getAuthSuccess(c));
Server.getInstance().registerLoginState(c);

View File

@@ -25,16 +25,16 @@ import client.MapleCharacter;
import client.MapleClient;
import config.YamlConfig;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import tools.PacketCreator;
import tools.Pair;
import tools.data.input.SeekableLittleEndianAccessor;
import java.util.List;
public final class ViewAllCharHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public final void handlePacket(InPacket p, MapleClient c) {
try {
if(!c.canRequestCharlist()) { // client breaks if the charlist request pops too soon
c.sendPacket(PacketCreator.showAllCharacter(0, 0));

View File

@@ -2,6 +2,7 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import net.server.coordinator.session.SessionCoordinator;
@@ -11,7 +12,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import tools.Randomizer;
import tools.data.input.SeekableLittleEndianAccessor;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -30,13 +30,13 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand
}
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
slea.readByte();
int charId = slea.readInt();
slea.readInt(); // please don't let the client choose which world they should login
public final void handlePacket(InPacket p, MapleClient c) {
p.readByte();
int charId = p.readInt();
p.readInt(); // please don't let the client choose which world they should login
String mac = slea.readMapleAsciiString();
String hostString = slea.readMapleAsciiString();
String mac = p.readString();
String hostString = p.readString();
final Hwid hwid;
try {
@@ -77,7 +77,7 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand
int channel = Randomizer.rand(1, server.getWorld(c.getWorld()).getChannelsSize());
c.setChannel(channel);
String pic = slea.readMapleAsciiString();
String pic = p.readString();
c.setPic(pic);
String[] socket = server.getInetSocket(c, c.getWorld(), channel);

View File

@@ -23,6 +23,7 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import net.server.coordinator.session.SessionCoordinator;
@@ -32,7 +33,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import tools.Randomizer;
import tools.data.input.SeekableLittleEndianAccessor;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -51,12 +51,12 @@ public final class ViewAllCharSelectedHandler extends AbstractMaplePacketHandler
}
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
int charId = slea.readInt();
slea.readInt(); // please don't let the client choose which world they should login
public final void handlePacket(InPacket p, MapleClient c) {
int charId = p.readInt();
p.readInt(); // please don't let the client choose which world they should login
String macs = slea.readMapleAsciiString();
String hostString = slea.readMapleAsciiString();
String macs = p.readString();
String hostString = p.readString();
final Hwid hwid;
try {

View File

@@ -2,6 +2,7 @@ package net.server.handlers.login;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import net.server.coordinator.session.SessionCoordinator;
@@ -11,7 +12,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.PacketCreator;
import tools.Randomizer;
import tools.data.input.SeekableLittleEndianAccessor;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -30,14 +30,14 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandle
}
@Override
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
public void handlePacket(InPacket p, MapleClient c) {
String pic = slea.readMapleAsciiString();
int charId = slea.readInt();
slea.readInt(); // please don't let the client choose which world they should login
String pic = p.readString();
int charId = p.readInt();
p.readInt(); // please don't let the client choose which world they should login
String macs = slea.readMapleAsciiString();
String hostString = slea.readMapleAsciiString();
String macs = p.readString();
String hostString = p.readString();
final Hwid hwid;
try {