Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. package org.rscdaemon.ls.packethandler.loginserver;
  2.  
  3. import org.rscdaemon.ls.packethandler.PacketHandler;
  4. import org.rscdaemon.ls.Server;
  5. import org.rscdaemon.ls.model.World;
  6. import org.rscdaemon.ls.net.LSPacket;
  7. import org.rscdaemon.ls.net.Packet;
  8. import org.rscdaemon.ls.util.DataConversions;
  9. import org.rscdaemon.ls.packetbuilder.loginserver.PlayerLoginPacketBuilder;
  10.  
  11. import org.apache.mina.common.IoSession;
  12.  
  13. import java.sql.ResultSet;
  14. import java.sql.SQLException;
  15. import java.util.Map.Entry;
  16.  
  17. public class PlayerLoginHandler implements PacketHandler {
  18. private PlayerLoginPacketBuilder builder = new PlayerLoginPacketBuilder();
  19.  
  20. public void handlePacket(Packet p, IoSession session) throws Exception {
  21. final long uID = ((LSPacket)p).getUID();
  22. World world = (World)session.getAttachment();
  23. long user = p.readLong();
  24. String ip = DataConversions.IPToString(p.readLong());
  25. String pass = p.readString(32).trim();
  26. String className = p.readString();
  27. byte loginCode = validatePlayer(user, pass, ip);
  28.  
  29. builder.setUID(uID);
  30. if(loginCode == 0 || loginCode == 1 || loginCode == 99) {
  31. // if(!className.equals("ORG.RSCDAEMON.CLIENT.MUDCLIENT")) {
  32. // System.out.println(DataConversions.hashToUsername(user) + " was caught by a trap");
  33. // try { Server.db.updateQuery("INSERT INTO `rscd_traps`(`user`, `time`, `ip`, `details`) VALUES('" + user + "', '" + (int)(System.currentTimeMillis() / 1000) + "', '" + ip + "', 'Unknown main class: \"" + className +"\"')"); } catch(Exception e) { }
  34. // }
  35. builder.setPlayer(Server.getServer().findSave(user, world), loginCode);
  36. world.registerPlayer(user, ip);
  37. }
  38. else {
  39. builder.setPlayer(null, loginCode);
  40. }
  41.  
  42. LSPacket packet = builder.getPacket();
  43. if(packet != null) {
  44. session.write(packet);
  45. }
  46. }
  47.  
  48. private byte validatePlayer(long user, String pass, String ip) {
  49. Server server = Server.getServer();
  50. byte returnVal = 0;
  51.  
  52. try {
  53. ResultSet result = Server.db.getQuery("SELECT r.pass, r.banned, r.owner, u.group_id, b.id AS b_id FROM `rscd_players` AS r INNER JOIN `users` AS u ON u.id=r.owner LEFT JOIN `bans` AS b on (b.username LIKE u.username OR b.ip LIKE '" + ip + "') WHERE `user`=" + user);
  54. if(!result.next() || !pass.equalsIgnoreCase(result.getString("pass"))) {
  55. return 2;
  56. }
  57.  
  58. if(result.getInt("banned") == 1 || result.getInt("b_id") != 0) {
  59. return 6;
  60. }
  61.  
  62. if(result.getInt("group_id") == 1 || result.getInt("group_id") == 2) {
  63. returnVal = 99;
  64. }
  65.  
  66. int owner = result.getInt("owner");
  67. for(World w : server.getWorlds()) {
  68. for(Entry<Long, Integer> player : w.getPlayers()) {
  69. if(player.getKey() == user) {
  70. return 3;
  71. }
  72. if(player.getValue() == owner) {
  73. return 9;
  74. }
  75. }
  76. if(w.hasPlayer(user)) {
  77. return 3;
  78. }
  79. }
  80. return returnVal;
  81. }
  82. catch(SQLException e) {
  83. System.out.println("Exception in PlayerLoginHandler");
  84. return 7;
  85. }
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement