Advertisement
Guest User

Untitled

a guest
May 25th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 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. RSCPacket loginPacket = DataConversions.decryptRSA(p.readBytes(p
  26. .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(loginCode);
  40. session.write(pb.toPacket());
  41. player.destroy(true);
  42. loginCode = 7;
  43. return;
  44. }
  45.  
  46. if (world.countPlayers() >= org.rscdaemon.server.GameVars.maxUsers) {
  47. loginCode = 10;
  48. if (loginCode != 22) {
  49. RSCPacketBuilder pb = new RSCPacketBuilder();
  50. pb.setBare(true);
  51. pb.addByte(loginCode);
  52. session.write(pb.toPacket());
  53. player.destroy(true);
  54. }
  55. return;
  56. } else if (clientVersion != GameVars.clientVersion) {
  57. loginCode = 4;
  58. if (loginCode != 22) {
  59. RSCPacketBuilder pb = new RSCPacketBuilder();
  60. pb.setBare(true);
  61. pb.addByte(loginCode);
  62. session.write(pb.toPacket());
  63. player.destroy(true);
  64. }
  65. return;
  66. } else if (!player.setSessionKeys(sessionKeys)) {
  67. loginCode = 5;
  68. player.bad_login = true;
  69. if (loginCode != 22) {
  70. RSCPacketBuilder pb = new RSCPacketBuilder();
  71. pb.setBare(true);
  72. pb.addByte(loginCode);
  73. session.write(pb.toPacket());
  74. player.destroy(true);
  75. }
  76. return;
  77. }
  78.  
  79. int res = org.rscdaemon.server.io.PlayerLoader.getLogin(username,
  80. password, session);
  81. if (res == 50) {
  82. RSCPacketBuilder pb = new RSCPacketBuilder();
  83. pb.setBare(true);
  84. pb.addByte((byte) 50);
  85. session.write(pb.toPacket());
  86. player.destroy(true);
  87. return;
  88. }
  89. if (res == 0) {
  90. loginCode = 2; // invalid username/pass.
  91. } else if (res == 2) {
  92. loginCode = 3; // user logged in.
  93. } else if (res == 6) {
  94. loginCode = 6;
  95. } else {
  96. if (loginCode != 5)
  97. player.bad_login = false;
  98.  
  99. if (loginCode != 5 || loginCode != 3) {
  100. player.load(username, password, uid, reconnecting);
  101. return;
  102. }
  103.  
  104. }
  105. } catch (Exception e) {
  106. e.printStackTrace();
  107. // loginCode = 7;
  108. }
  109. if (loginCode != 22) {
  110. RSCPacketBuilder pb = new RSCPacketBuilder();
  111. pb.setBare(true);
  112. pb.addByte(loginCode);
  113. session.write(pb.toPacket());
  114. player.destroy(true);
  115. }
  116. }
  117.  
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement