Advertisement
Guest User

Untitled

a guest
May 13th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.71 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.readByte()));
  26.             int[] sessionKeys = new int[4];
  27.             for(int key = 0;key < sessionKeys.length;key++) {
  28.                 sessionKeys[key] = loginPacket.readInt();
  29.             }
  30.             int uid = loginPacket.readInt();
  31.             String username = loginPacket.readString(20).trim();
  32.             loginPacket.skip(1);
  33.             String password = loginPacket.readString(20).trim();
  34.             loginPacket.skip(1);
  35.             if(username.trim().length() < 3 || password.trim().length() < 3) {
  36.                 RSCPacketBuilder pb = new RSCPacketBuilder();
  37.                 pb.setBare(true);
  38.                 pb.addByte((byte)loginCode);
  39.                 session.write(pb.toPacket());
  40.                 player.destroy(true);
  41.                 loginCode = 7;
  42.                 return;
  43.             }
  44.             int res = org.rscdaemon.server.io.PlayerLoader.getLogin(username, password, currentIP);
  45.             int currentIP = p.readInt();
  46.             if(currentIP != player.getCurrentIP()) {
  47.             // login code so can't login
  48.             player.bad_login = true;
  49.             }
  50.             if(world.countPlayers() >= org.rscdaemon.server.GameVars.maxUsers) {
  51.                 loginCode = 10;
  52.             } else if(clientVersion != GameVars.clientVersion) {
  53.                 loginCode = 4;
  54.             } else if(!player.setSessionKeys(sessionKeys)) {
  55.                 loginCode = 5;
  56.                 player.bad_login = true;
  57.             } else if(res == 0) {
  58.                 loginCode = 2; // invalid username/pass.
  59.             } else if(res == 2) {
  60.                 loginCode = 3; // user logged in.
  61.             } else if(res == 6) {
  62.                 loginCode = 6;
  63.             }
  64.             else {
  65.                 if(loginCode != 5)
  66.                     player.bad_login = false;
  67.                
  68.                 if(loginCode != 5 || loginCode != 3) {
  69.                     player.load(username, password, uid, reconnecting);
  70.                     return;
  71.                 }
  72.                
  73.                
  74.  
  75.             }
  76.         }
  77.         catch(Exception e) {
  78.             e.printStackTrace();
  79.             //loginCode = 7;
  80.         }
  81.  
  82.         if(loginCode != 22) {
  83.             RSCPacketBuilder pb = new RSCPacketBuilder();
  84.             pb.setBare(true);
  85.             pb.addByte((byte)loginCode);
  86.             session.write(pb.toPacket());
  87.             player.destroy(true);
  88.         }
  89.     }
  90.  
  91.  
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement