Package lineage2.gameserver.utils

Source Code of lineage2.gameserver.utils.AutoBan

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package lineage2.gameserver.utils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import lineage2.commons.dbutils.DbUtils;
import lineage2.gameserver.dao.CharacterDAO;
import lineage2.gameserver.database.DatabaseFactory;
import lineage2.gameserver.model.Player;
import lineage2.gameserver.model.World;
import lineage2.gameserver.network.serverpackets.components.CustomMessage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* @author Mobius
* @version $Revision: 1.0 $
*/
public final class AutoBan
{
  /**
   * Field _log.
   */
  private static final Logger _log = LoggerFactory.getLogger(AutoBan.class);
 
  /**
   * Method isBanned.
   * @param ObjectId int
   * @return boolean
   */
  public static boolean isBanned(int ObjectId)
  {
    boolean res = false;
    Connection con = null;
    PreparedStatement statement = null;
    ResultSet rset = null;
    try
    {
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("SELECT MAX(endban) AS endban FROM bans WHERE obj_Id=? AND endban IS NOT NULL");
      statement.setInt(1, ObjectId);
      rset = statement.executeQuery();
      if (rset.next())
      {
        Long endban = rset.getLong("endban") * 1000L;
        res = endban > System.currentTimeMillis();
      }
    }
    catch (Exception e)
    {
      _log.warn("Could not restore ban data: " + e);
    }
    finally
    {
      DbUtils.closeQuietly(con, statement, rset);
    }
    return res;
  }
 
  /**
   * Method Banned.
   * @param actor Player
   * @param period int
   * @param msg String
   * @param GM String
   */
  public static void Banned(Player actor, int period, String msg, String GM)
  {
    int endban = 0;
    if (period == -1)
    {
      endban = Integer.MAX_VALUE;
    }
    else if (period > 0)
    {
      Calendar end = Calendar.getInstance();
      end.add(Calendar.DAY_OF_MONTH, period);
      endban = (int) (end.getTimeInMillis() / 1000);
    }
    else
    {
      _log.warn("Negative ban period: " + period);
      return;
    }
    String date = new SimpleDateFormat("yy.MM.dd H:mm:ss").format(new Date());
    String enddate = new SimpleDateFormat("yy.MM.dd H:mm:ss").format(new Date(endban * 1000L));
    if ((endban * 1000L) <= Calendar.getInstance().getTimeInMillis())
    {
      _log.warn("Negative ban period | From " + date + " to " + enddate);
      return;
    }
    Connection con = null;
    PreparedStatement statement = null;
    try
    {
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("INSERT INTO bans (account_name, obj_id, baned, unban, reason, GM, endban) VALUES(?,?,?,?,?,?,?)");
      statement.setString(1, actor.getAccountName());
      statement.setInt(2, actor.getObjectId());
      statement.setString(3, date);
      statement.setString(4, enddate);
      statement.setString(5, msg);
      statement.setString(6, GM);
      statement.setLong(7, endban);
      statement.execute();
    }
    catch (Exception e)
    {
      _log.warn("could not store bans data:" + e);
    }
    finally
    {
      DbUtils.closeQuietly(con, statement);
    }
  }
 
  /**
   * Method Banned.
   * @param actor String
   * @param acc_level int
   * @param period int
   * @param msg String
   * @param GM String
   * @return boolean
   */
  public static boolean Banned(String actor, int acc_level, int period, String msg, String GM)
  {
    boolean res;
    int obj_id = CharacterDAO.getInstance().getObjectIdByName(actor);
    res = obj_id > 0;
    if (!res)
    {
      return false;
    }
    Connection con = null;
    PreparedStatement statement = null;
    PreparedStatement statement2 = null;
    try
    {
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("UPDATE characters SET accesslevel=? WHERE obj_Id=?");
      statement.setInt(1, acc_level);
      statement.setInt(2, obj_id);
      statement.executeUpdate();
      DbUtils.close(statement);
      if (acc_level < 0)
      {
        int endban = 0;
        if (period == -1)
        {
          endban = Integer.MAX_VALUE;
        }
        else if (period > 0)
        {
          Calendar end = Calendar.getInstance();
          end.add(Calendar.DAY_OF_MONTH, period);
          endban = (int) (end.getTimeInMillis() / 1000);
        }
        else
        {
          _log.warn("Negative ban period: " + period);
          return false;
        }
        String date = new SimpleDateFormat("yy.MM.dd H:mm:ss").format(new Date());
        String enddate = new SimpleDateFormat("yy.MM.dd H:mm:ss").format(new Date(endban * 1000L));
        if ((endban * 1000L) <= Calendar.getInstance().getTimeInMillis())
        {
          _log.warn("Negative ban period | From " + date + " to " + enddate);
          return false;
        }
        statement = con.prepareStatement("INSERT INTO bans (obj_id, baned, unban, reason, GM, endban) VALUES(?,?,?,?,?,?)");
        statement.setInt(1, obj_id);
        statement.setString(2, date);
        statement.setString(3, enddate);
        statement.setString(4, msg);
        statement.setString(5, GM);
        statement.setLong(6, endban);
        statement.execute();
      }
      else
      {
        statement2 = con.prepareStatement("DELETE FROM bans WHERE obj_id=?");
        statement2.setInt(1, obj_id);
        statement2.execute();
        statement2.close();
      }
    }
    catch (Exception e)
    {
      e.printStackTrace();
      _log.warn("could not store bans data:" + e);
      res = false;
    }
    finally
    {
      DbUtils.closeQuietly(con, statement);
    }
    return res;
  }
 
  /**
   * Method Karma.
   * @param actor Player
   * @param karma int
   * @param msg String
   * @param GM String
   */
  public static void Karma(Player actor, int karma, String msg, String GM)
  {
    Connection con = null;
    PreparedStatement statement = null;
    try
    {
      String date = new SimpleDateFormat("yy.MM.dd H:mm:ss").format(new Date());
      msg = "Add karma(" + karma + ") " + msg;
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("INSERT INTO bans (account_name, obj_id, baned, reason, GM) VALUES(?,?,?,?,?)");
      statement.setString(1, actor.getAccountName());
      statement.setInt(2, actor.getObjectId());
      statement.setString(3, date);
      statement.setString(4, msg);
      statement.setString(5, GM);
      statement.execute();
    }
    catch (Exception e)
    {
      _log.warn("could not store bans data:" + e);
    }
    finally
    {
      DbUtils.closeQuietly(con, statement);
    }
  }
 
  /**
   * Method Banned.
   * @param actor Player
   * @param period int
   * @param msg String
   */
  public static void Banned(Player actor, int period, String msg)
  {
    Banned(actor, period, msg, "AutoBan");
  }
 
  /**
   * Method ChatBan.
   * @param actor String
   * @param period int
   * @param msg String
   * @param GM String
   * @return boolean
   */
  public static boolean ChatBan(String actor, int period, String msg, String GM)
  {
    boolean res = true;
    long NoChannel = period * 60000;
    int obj_id = CharacterDAO.getInstance().getObjectIdByName(actor);
    if (obj_id == 0)
    {
      return false;
    }
    Player plyr = World.getPlayer(actor);
    Connection con = null;
    PreparedStatement statement = null;
    if (plyr != null)
    {
      plyr.sendMessage(new CustomMessage("lineage2.Util.AutoBan.ChatBan", plyr).addString(GM).addNumber(period));
      plyr.updateNoChannel(NoChannel);
    }
    else
    {
      try
      {
        con = DatabaseFactory.getInstance().getConnection();
        statement = con.prepareStatement("UPDATE characters SET nochannel = ? WHERE obj_Id=?");
        statement.setLong(1, NoChannel > 0 ? NoChannel / 1000 : NoChannel);
        statement.setInt(2, obj_id);
        statement.executeUpdate();
      }
      catch (Exception e)
      {
        res = false;
        _log.warn("Could not activate nochannel:" + e);
      }
      finally
      {
        DbUtils.closeQuietly(con, statement);
      }
    }
    return res;
  }
 
  /**
   * Method ChatUnBan.
   * @param actor String
   * @param GM String
   * @return boolean
   */
  public static boolean ChatUnBan(String actor, String GM)
  {
    boolean res = true;
    Player plyr = World.getPlayer(actor);
    int obj_id = CharacterDAO.getInstance().getObjectIdByName(actor);
    if (obj_id == 0)
    {
      return false;
    }
    Connection con = null;
    PreparedStatement statement = null;
    if (plyr != null)
    {
      plyr.sendMessage(new CustomMessage("lineage2.Util.AutoBan.ChatUnBan", plyr).addString(GM));
      plyr.updateNoChannel(0);
    }
    else
    {
      try
      {
        con = DatabaseFactory.getInstance().getConnection();
        statement = con.prepareStatement("UPDATE characters SET nochannel = ? WHERE obj_Id=?");
        statement.setLong(1, 0);
        statement.setInt(2, obj_id);
        statement.executeUpdate();
      }
      catch (Exception e)
      {
        res = false;
        _log.warn("Could not activate nochannel:" + e);
      }
      finally
      {
        DbUtils.closeQuietly(con, statement);
      }
    }
    return res;
  }
}
TOP

Related Classes of lineage2.gameserver.utils.AutoBan

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.