Advertisement
Jnk1296

IP-Check Ban Synchronization

Feb 5th, 2014
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.69 KB | None | 0 0
  1. /* Patch for misuse of isBanned bit in the SQL/SQLite Databases.
  2.  * This code is responsible for synchronizing the isBanned bit
  3.  * of the database with the boolean value of the isBanned()
  4.  * method in Bukkit for every player which exists in the
  5.  * plugin's database.
  6.  */
  7.  
  8. if(!IPcheck.Instance.Configuration.banStateSynchronized) {
  9.         ArrayList<UserObject> userIndex = this.fetchAllPlayers();
  10.            
  11.         if (userIndex.size() > 0) {
  12.  
  13.         Bukkit.getLogger().log(Level.INFO, "[IP-Check] Performing Ban Synchronization...");
  14.  
  15.             ArrayList<StringBuilder> sb_ban = new ArrayList<StringBuilder>();
  16.             ArrayList<StringBuilder> sb_unban = new ArrayList<StringBuilder>();
  17.                
  18.             StringBuilder ban_string = new StringBuilder();
  19.             StringBuilder unban_string = new StringBuilder();
  20.                
  21.             for (UserObject upo:userIndex) {
  22.                 OfflinePlayer offPlayer = Bukkit.getOfflinePlayer(upo.getUser());
  23.                    
  24.                 if (offPlayer == null) continue;
  25.                 if (upo.getBannedStatus() == offPlayer.isBanned()) continue;
  26.                    
  27.                 if (upo.getBannedStatus() == true) {
  28.                     unban_string.append(upo.getUser()+"' or WHERE lower(username) = '");
  29.                        
  30.                     if (unban_string.length() >= 50000) {
  31.                         sb_unban.add(unban_string);
  32.                         unban_string = new StringBuilder();
  33.                     }
  34.                 } else {
  35.                     ban_string.append(upo.getUser()+"' or WHERE lower(username) = '");
  36.                    
  37.                     if (ban_string.length() >= 50000) {
  38.                             sb_ban.add(ban_string);
  39.                     ban_string = new StringBuilder();
  40.                     }
  41.                 }
  42.             }
  43.                
  44.             sb_unban.add(unban_string);
  45.             sb_ban.add(ban_string);
  46.                
  47.             if (sb_ban.get(0).length() > 0) {
  48.                 for (StringBuilder sb:sb_ban) {
  49.                     String input = sb.toString().substring(0, (sb.toString().length() - 29));
  50.                        
  51.                     try {
  52.                         connection.query("UPDATE ipcheck_users SET isbanned = 1 WHERE lower(username) = '" + input);
  53.                     } catch (Exception e) {
  54.                         System.out.println(e);
  55.                     }
  56.                 }
  57.             }
  58.                
  59.             if (sb_unban.get(0).length() > 0) {
  60.                 for (StringBuilder sb:sb_unban) {
  61.                     String input = sb.toString().substring(0, (sb.toString().length() - 29));
  62.                        
  63.                     try {
  64.                         connection.query("UPDATE ipcheck_users SET isbanned = 0 WHERE lower(username) = '" + input);
  65.                     } catch (Exception e) {
  66.                         System.out.println(e);
  67.                     }
  68.                 }
  69.             }
  70.                
  71.             Bukkit.getLogger().log(Level.INFO, "[IP-Check] Ban Synchronization Complete.");
  72.         }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement