/** * Adds ban to ban list and saves * * @param ban the IpBan to add * @return 0 - Success<br> * 1 - Already banned<br> * 2 - Error saving */ public synchronized byte addBan(IpBan ban) { for (IpBan ipban : ipBans) { if (!Collections.disjoint(ipban.getIps(), ban.getIps())) // Any in common { if (ipban.isOver()) { this.removeBan(ipban); break; } if (ipban.isExpired()) { this.removeBan(ipban); ipban = ipban.expire(); if (ipban == null) break; // Ban is over, continue on else { this.addBan(ipban); return 1; } } } } this.ipBans.add(ban); try { FileWriter fOut = new FileWriter(file, true); String line = "IP: "; for (int i = 0; i < ban.getIps().size() - 1; i++) { line += (ban.getIps().get(i) + ","); } line += ban.getIps().get(ban.getIps().size() - 1); // No comma for last line += " "; line += ban.getReason(); line += "\u00C4"; line += ban.getInfo(); line += "\u00C4"; line += ban.getEndTime(); line += " "; line += (ban.getUUID() == null) ? "null" : ban.getUUID().toString(); line += " "; line += (ban.getBannerUUID() == null) ? "null" : ban.getBannerUUID().toString(); line += " "; line += ban.isRequest(); if (ban.isRequest()) { line += " "; line += ban.getExpireTime(); line += " "; line += ban.isApproveOnExpire(); } line += "\n"; fOut.write(line); fOut.close(); } catch (IOException e) { pl.getLogger().severe("Could not write to " + file.getName()); pl.getLogger().throwing(this.getClass().getName(), "add", e); return 2; // TODO: } return 0; }