From 75f1e092d59cf8226e080e6475394ec5e15e1eb7 Mon Sep 17 00:00:00 2001 From: ceikry Date: Sat, 23 Apr 2022 16:01:30 -0500 Subject: [PATCH] Added packet for sending credit updates --- .../main/java/ms/net/event/HSReadEvent.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Management-Server/src/main/java/ms/net/event/HSReadEvent.java b/Management-Server/src/main/java/ms/net/event/HSReadEvent.java index 3c4df5229..9a76cca2a 100644 --- a/Management-Server/src/main/java/ms/net/event/HSReadEvent.java +++ b/Management-Server/src/main/java/ms/net/event/HSReadEvent.java @@ -1,12 +1,16 @@ package ms.net.event; import java.nio.ByteBuffer; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; import java.util.Locale; import ms.Management; import ms.net.IoReadEvent; import ms.net.IoSession; import ms.net.packet.IoBuffer; +import ms.system.mysql.SQLManager; import ms.system.util.ManagementConstants; import ms.world.PlayerSession; import ms.world.WorldDatabase; @@ -73,6 +77,47 @@ public final class HSReadEvent extends IoReadEvent { player.getWorld().getPlayers().remove(username); player.setWorldId(0); break; + case 36: + buf = new IoBuffer(); + username = ByteBufferUtils.getString(buffer).toLowerCase(); + password = ByteBufferUtils.getString(buffer); + int credits = buffer.getInt(); + if (!password.equals(ManagementConstants.getSECRET_KEY())){ + System.out.println("Password mismatch (attempt=" + password + ")!"); + buf.put(1); + buff = buf.toByteBuffer(); + buff.flip(); + session.queue(buff); + return; + } + try (Connection con = SQLManager.getConnection()) { + Statement stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT credits FROM members WHERE username = \"" + username + "\";"); + int original; + if (rs.next()) original = rs.getInt(1); + else { + buf.put(2); + buff = buf.toByteBuffer(); + buff.flip(); + session.queue(buff); + return; + } + stmt.execute("UPDATE members SET credits = " + (original + credits) + " WHERE username = \"" + username + "\";"); + buf.put(0); + buf.putInt(original + credits); + buff = buf.toByteBuffer(); + buff.flip(); + session.queue(buff); + } catch (Exception e) { + buf.put(3); + buf.putString(e.toString()); + buff = buf.toByteBuffer(); + buff.flip(); + session.queue(buff); + e.printStackTrace(); + } + break; + default: System.err.println("Unhandled handshake opcode: " + opcode + "."); session.disconnect();