Advertisement
Guest User

Untitled

a guest
Jun 9th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.57 KB | None | 0 0
  1.  
  2. package tttservmina.net.handlers;
  3.  
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import tttserv.database.DatabaseConnection;
  9. import tttserv.database.DatabaseException;
  10. import tttservmina.net.Server;
  11. import tttservmina.tools.data.input.SeekableLittleEndianAccessor;
  12. import tttservmina.player.FlashClient;
  13. import tttservmina.player.FlashPlayer;
  14. import tttservmina.tools.FlashPacketCreator;
  15. import tttservmina.tools.StringUtil;
  16.  
  17. public class LoginHandler implements PacketHandler {
  18.  
  19.     String username = "";
  20.     String password = "";
  21.     int user_id;
  22.     byte level;
  23.     byte status;
  24.     byte banType = 0;
  25.  
  26.     public void handlePacket(SeekableLittleEndianAccessor slea, FlashClient c) {
  27.         /*
  28.          * Order of Operations:
  29.          * 1. Check version #
  30.          * 2. Check if user is real (vbapi)
  31.          * 2.5 Check if user is already logged in
  32.          * 3. Check if user is banned (us)
  33.          * 4. Check if user's IP is banned (us)
  34.          * 5. Get people's stats and finish login
  35.          */
  36.  
  37.         // Stage 1
  38.         String loginid;
  39.         int uid;
  40.         String version;
  41.         try {
  42.             username = slea.readFlashAsciiString().replaceAll(" ", "");
  43.             password = StringUtil.md5(slea.readFlashAsciiString(), "UTF-8");
  44.             version = slea.readFlashAsciiString();
  45.         } catch (Exception e) {
  46.             c.getSession().close();
  47.             return;
  48.         }
  49.  
  50.         // VER CHECK
  51.  
  52.         if (!version.equals(Server.getServer().getVersion())) {
  53.             c.getSession().write(FlashPacketCreator.loginResponse((byte) 3));
  54.             c.getSession().close();
  55.         }
  56.         // Database login here
  57.  
  58.        
  59.         Connection con = DatabaseConnection.getConnection();
  60.         try {
  61.             PreparedStatement ps = con.prepareStatement("SELECT id, level FROM users WHERE username = ? AND password = ?");
  62.             ps.setString(1, username);
  63.             ps.setString(2, password);
  64.             ResultSet rs = ps.executeQuery();
  65.             if (rs.next()) {
  66.                 level = rs.getByte("level");
  67.                 uid = rs.getInt("id");
  68.             } else {
  69.                 c.getSession().write(FlashPacketCreator.loginResponse((byte)0x00));
  70.                 return;
  71.             }
  72.         } catch (Exception e) {
  73.             c.getSession().write(FlashPacketCreator.loginResponse((byte)0x01));
  74.             return;
  75.         }
  76.  
  77.         // Stage 1.5
  78.         FlashPlayer uBn = Server.getServer().getPlayerStorage().getPlayerByName(username);
  79.         if (uBn != null) {
  80.             c.getSession().write(FlashPacketCreator.loginResponse((byte) 2));
  81.             return;
  82.         }
  83.  
  84.         int am = 0;
  85.         for (FlashPlayer uBi : Server.getServer().getPlayerStorage().getPlayersByIP(c.getSession().getRemoteAddress().toString().split(":")[0])) {
  86.             am++;
  87.         }
  88.  
  89.         if (am > 0) {
  90.             c.getSession().write(FlashPacketCreator.loginResponse((byte) 2));
  91.             return;
  92.         }
  93.  
  94.         // Stage 2
  95.         String guy_who_banned = null;
  96.         String ban_reason = null;
  97.         long time_when_ban_ends = 0;
  98.         try {
  99.             PreparedStatement ps = con.prepareStatement("SELECT banner, reason, expires FROM bans WHERE username = ?");
  100.             ps.setString(1, username);
  101.             ResultSet rs = ps.executeQuery();
  102.             if (rs.next()) {
  103.                 banType = 1;
  104.                 guy_who_banned = rs.getString("banner");
  105.                 ban_reason = rs.getString("reason");
  106.                 time_when_ban_ends = rs.getLong("expires");
  107.             }
  108.             ps.close();
  109.         } catch (SQLException e) {
  110.             c.getSession().write(FlashPacketCreator.loginResponse((byte) 0x01));
  111.             return;
  112.         }
  113.  
  114.         //Stage 3
  115.  
  116.         try {
  117.             PreparedStatement ps = con.prepareStatement("SELECT banner, reason, expires FROM ipbans WHERE ip = ?");
  118.             String ip = c.getSession().getRemoteAddress().toString().replace("/", "").split(":")[0];
  119.             ps.setString(1, ip);
  120.             ResultSet rs = ps.executeQuery();
  121.             if (rs.next()) {
  122.                 banType = 2;
  123.                 guy_who_banned = rs.getString("banner");
  124.                 ban_reason = rs.getString("reason");
  125.                 time_when_ban_ends = rs.getLong("expires");
  126.             }
  127.             ps.close();
  128.         } catch (SQLException e) {
  129.             c.getSession().write(FlashPacketCreator.loginResponse((byte) 0x01));
  130.             return;
  131.         }
  132.  
  133.         if (System.currentTimeMillis() < time_when_ban_ends) {
  134.             if (time_when_ban_ends < Long.MAX_VALUE) {
  135.                 c.getSession().write(FlashPacketCreator.loginResponse(guy_who_banned, ban_reason, time_when_ban_ends));
  136.             } else {
  137.                 c.getSession().write(FlashPacketCreator.loginResponse(guy_who_banned, ban_reason));
  138.             }
  139.             return;
  140.         } else {
  141.             if (banType == 2) {
  142.                 String ip = c.getSession().getRemoteAddress().toString().replace("/", "").split(":")[0];
  143.                 try {
  144.                     PreparedStatement ps = con.prepareStatement("DELETE FROM `ipbans` WHERE ip = ?");
  145.                     ps.setString(1, ip);
  146.                     ps.executeUpdate();
  147.                 } catch (SQLException e) {System.out.println(e.getLocalizedMessage());}
  148.             } else if (banType == 1) {
  149.                 try {
  150.                     PreparedStatement ps = con.prepareStatement("DELETE FROM `bans` WHERE username = ?");
  151.                     ps.setString(1, username);
  152.                     ps.executeUpdate();
  153.                 } catch (SQLException e) {System.out.println(e.getLocalizedMessage());}
  154.             }
  155.         }
  156.  
  157.  
  158.         // Stage 4
  159.         FlashPlayer player;
  160.         try {
  161.             player = FlashPlayer.loadFromDatabase(c, uid, level, username);
  162.         } catch (DatabaseException e) {
  163.             player = null;
  164.             c.getSession().write(FlashPacketCreator.loginResponse((byte) 3));
  165.             return;
  166.         }
  167.         if (player == null) {
  168.             c.getSession().write(FlashPacketCreator.loginResponse((byte) 3));
  169.             return;
  170.         }
  171.         c.setPlayer(player);
  172.         c.getSession().write(FlashPacketCreator.loginResponse(player.getStats().getUserLevel(), player.getStats().getUserId(), Server.getServer().getPlayers(), Server.getServer().getGames()));
  173.         Server.getServer().getPlayerStorage().addPlayer(player);
  174.         Server.getServer().getRoomManager().getLobby().addObserver(player);
  175.     }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement