Guest User

Untitled

a guest
Dec 11th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. public boolean doDecode(IoSession session, ByteBuffer in,
  2. ProtocolDecoderOutput out) {
  3. //synchronized (session) {
  4. Object loginStageObj = session.getAttribute("LOGIN_STAGE");
  5. int loginStage = 0;
  6. if (loginStageObj != null) {
  7. loginStage = (Integer) loginStageObj;
  8. }
  9. // Logger.log("recv login packet, stage: "+loginStage);
  10. switch (loginStage) {
  11. case 0:
  12. if (2 <= in.remaining()) {
  13. int protocol = in.get() & 0xff;
  14. @SuppressWarnings("unused")
  15. int nameHash = in.get() & 0xff;
  16. if (protocol == 14) {
  17. long serverSessionKey = ((long) (java.lang.Math
  18. .random() * 99999999D) << 32)
  19. + (long) (java.lang.Math.random() * 99999999D);
  20. StaticPacketBuilder s1Response = new StaticPacketBuilder();
  21. s1Response
  22. .setBare(true)
  23. .addBytes(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 })
  24. .addByte((byte) 0).addLong(serverSessionKey);
  25. session.setAttribute("SERVER_SESSION_KEY",
  26. serverSessionKey);
  27. session.write(s1Response.toPacket());
  28. session.setAttribute("LOGIN_STAGE", 1);
  29. }
  30. return true;
  31. } else {
  32. in.rewind();
  33. return false;
  34. }
  35. case 1:
  36. @SuppressWarnings("unused")
  37. int loginType = -1,
  38. loginPacketSize = -1,
  39. loginEncryptPacketSize = -1;
  40. if (2 <= in.remaining()) {
  41. loginType = in.get() & 0xff; // should be 16 or 18
  42. System.out.println("loginType: "+loginType);
  43. /*loginPacketSize = in.get() & 0xff;
  44. loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2);
  45. if (loginPacketSize <= 0 || loginEncryptPacketSize <= 0) {
  46. System.out.println("Zero or negative login size.");
  47. session.close();
  48. return false;
  49. }*/
  50. } else {
  51. in.rewind();
  52. return false;
  53. }
  54. if (loginPacketSize <= in.remaining()) {
  55. int magic = in.getUnsignedShort();
  56. int version = in.get();
  57. if (magic != 16) {
  58. System.out.println("Wrong magic id.");
  59. session.close();
  60. return false;
  61. }
  62. int uid = in.getInt();
  63. String name = readRS2String(in);
  64. String pass = readRS2String(in);
  65. int cacheLen = in.get();
  66. System.out.println(cacheLen+":"+name+":"+pass);
  67. for (int i = 0; i < 17; i++)
  68. in.getInt();
  69. //System.out.println(name+":"+pass);
  70. load(session, uid, name, pass, version);
  71. // WorkerThread.load(session, name, pass, inC, outC);
  72. session.getFilterChain().remove("protocolFilter");
  73. session.getFilterChain().addLast("protocolFilter",
  74. new ProtocolCodecFilter(new GameCodecFactory()));
  75. return true;
  76. } else {
  77. in.rewind();
  78. return false;
  79. }
  80. }
  81. //}
  82. return false;
  83. }
Add Comment
Please, Sign In to add comment