Exemplo n.º 1
0
  /**
   * 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;
  }