Advertisement
Guest User

Untitled

a guest
May 13th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. package org.rscdaemon.server.packethandler.client;
  2.  
  3. import org.apache.mina.common.IoSession;
  4. import org.rscdaemon.server.GameVars;
  5. import org.rscdaemon.server.model.Player;
  6. import org.rscdaemon.server.model.World;
  7. import org.rscdaemon.server.net.Packet;
  8. import org.rscdaemon.server.net.RSCPacket;
  9. import org.rscdaemon.server.packetbuilder.RSCPacketBuilder;
  10. import org.rscdaemon.server.packethandler.PacketHandler;
  11. import org.rscdaemon.server.util.DataConversions;
  12.  
  13. public class PlayerLogin implements PacketHandler {
  14. /**
  15. * World instance
  16. */
  17. public static final World world = World.getWorld();
  18.  
  19. public void handlePacket(Packet p, IoSession session) throws Exception {
  20. Player player = (Player)session.getAttachment();
  21. byte loginCode = 22;
  22. try {
  23. boolean reconnecting = (p.readByte() == 1);
  24. int clientVersion = p.readShort();
  25. int currentIP = p.readInt();
  26. RSCPacket loginPacket = DataConversions.decryptRSA(p.readBytes(p.readByte()));
  27. int[] sessionKeys = new int[4];
  28. for(int key = 0;key < sessionKeys.length;key++) {
  29. sessionKeys[key] = loginPacket.readInt();
  30. }
  31. int uid = loginPacket.readInt();
  32. String username = loginPacket.readString(20).trim();
  33. loginPacket.skip(1);
  34. String password = loginPacket.readString(20).trim();
  35. loginPacket.skip(1);
  36. if(username.trim().length() < 3 || password.trim().length() < 3) {
  37. RSCPacketBuilder pb = new RSCPacketBuilder();
  38. pb.setBare(true);
  39. pb.addByte((byte)loginCode);
  40. session.write(pb.toPacket());
  41. player.destroy(true);
  42. loginCode = 7;
  43. return;
  44. }
  45. int res = org.rscdaemon.server.io.PlayerLoader.getLogin(username, password);
  46. if(currentIP != player.getCurrentIP()) {
  47. loginCode = 5;
  48. player.bad_login = true;
  49. } else if(world.countPlayers() >= org.rscdaemon.server.GameVars.maxUsers) {
  50. loginCode = 10;
  51. } else if(clientVersion != GameVars.clientVersion) {
  52. loginCode = 4;
  53. } else if(!player.setSessionKeys(sessionKeys)) {
  54. loginCode = 5;
  55. player.bad_login = true;
  56. } else if(res == 0) {
  57. loginCode = 2; // invalid username/pass.
  58. } else if(res == 2) {
  59. loginCode = 3; // user logged in.
  60. } else if(res == 6) {
  61. loginCode = 6;
  62. }
  63. else {
  64. if(loginCode != 5)
  65. player.bad_login = false;
  66.  
  67. if(loginCode != 5 || loginCode != 3) {
  68. player.load(username, password, uid, reconnecting);
  69. return;
  70. }
  71.  
  72.  
  73.  
  74. }
  75. }
  76. catch(Exception e) {
  77. e.printStackTrace();
  78. //loginCode = 7;
  79. }
  80.  
  81. if(loginCode != 22) {
  82. RSCPacketBuilder pb = new RSCPacketBuilder();
  83. pb.setBare(true);
  84. pb.addByte((byte)loginCode);
  85. session.write(pb.toPacket());
  86. player.destroy(true);
  87. }
  88. }
  89.  
  90.  
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement