Package commands.admin

Source Code of commands.admin.AdminIP

package commands.admin;

import l2p.extensions.multilang.CustomMessage;
import l2p.extensions.scripts.ScriptFile;
import l2p.gameserver.handler.AdminCommandHandler;
import l2p.gameserver.handler.IAdminCommandHandler;
import l2p.gameserver.loginservercon.LSConnection;
import l2p.gameserver.loginservercon.gspackets.BanIP;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.L2World;
import l2p.gameserver.serverpackets.NpcHtmlMessage;
import l2p.util.BannedIp;
import l2p.util.GArray;
import l2p.util.Util;

/**
* This class handles following admin commands:- ipbanlist - ipban, ipblock -
* ipunban, ipunblock - ipcharban
*/
public class AdminIP implements IAdminCommandHandler, ScriptFile
{
  private enum Commands
  {
    admin_ipbanlist,
    admin_ipban,
    admin_ipblock,
    admin_ipunban,
    admin_ipunblock,
    admin_ipcharban,
    admin_ipchar,
    admin_charip
  }

  public boolean useAdminCommand(Enum comm, String[] wordList, String fullString, L2Player activeChar)
  {
    Commands command = (Commands) comm;
    if(!activeChar.getPlayerAccess().CanBan)
    {
      return false;
    }
    switch(command)
    {
      case admin_ipbanlist:
        try
        {
          GArray<BannedIp> baniplist = LSConnection.getInstance().getBannedIpList();
          if(baniplist != null && baniplist.size() > 0)
          {
            NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
            StringBuffer replyMSG = new StringBuffer("<html><body>");
            replyMSG.append("<center>Ban IP List</center><br>");
            replyMSG.append("<center><table width=300><tr><td>");
            replyMSG.append("<center>IP</center></td><td>Banned by</td></tr>");
            for(BannedIp temp : baniplist)
            {
              replyMSG.append("<tr><td>" + temp.ip + "</td><td>" + temp.admin + "</td><td><button value=\"Unban IP\" action=\"bypass -h admin_unbanip " + temp.ip + "\" width=90 height=15 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td></tr>");
            }
            replyMSG.append("</table></center>");
            replyMSG.append("</body></html>");
            adminReply.setHtml(replyMSG.toString());
            activeChar.sendPacket(adminReply);
          }
        }
        catch(StringIndexOutOfBoundsException e)
        {
          activeChar.sendMessage(new CustomMessage("common.Error", activeChar));
        }
        break;
      case admin_ipban:
      case admin_ipblock:
        if(wordList.length != 2)
        {
          activeChar.sendMessage("Command syntax: //ipban <ip>");
          break;
        }
        if(!validateIP(wordList[1]))
        {
          activeChar.sendMessage("Error: Invalid IP adress: " + wordList[1]);
          break;
        }
        LSConnection.getInstance().sendPacket(new BanIP(wordList[1], activeChar.getName()));
        break;
      case admin_ipcharban:
        if(wordList.length != 2)
        {
          activeChar.sendMessage("Command syntax: //ipcharban <char_name>");
          break;
        }
        L2Player plr = L2World.getPlayer(wordList[1]);
        if(plr == null)
        {
          activeChar.sendMessage("Character " + wordList[1] + " not found.");
          break;
        }
        String ip = plr.getIP();
        // Проверку на валидность ip пропускаем, ибо верим серверу
        if(ip.equalsIgnoreCase("<not connected>"))
        {
          activeChar.sendMessage("Character " + wordList[1] + " not found.");
          break;
        }
        LSConnection.getInstance().sendPacket(new BanIP(ip, activeChar.getName()));
        break;
      case admin_ipchar:
      case admin_charip:
        if(wordList.length != 2)
        {
          activeChar.sendMessage("Command syntax: //charip <char_name>");
          activeChar.sendMessage(" Gets character's IP.");
          break;
        }
        L2Player pl = L2World.getPlayer(wordList[1]);
        if(pl == null)
        {
          activeChar.sendMessage("Character " + wordList[1] + " not found.");
          break;
        }
        String ip_adr = pl.getIP();
        if(ip_adr.equalsIgnoreCase("<not connected>"))
        {
          activeChar.sendMessage("Character " + wordList[1] + " not found.");
          break;
        }
        activeChar.sendMessage("Character's IP: " + ip_adr);
        break;
      case admin_ipunban:
      case admin_ipunblock:
        if(wordList.length != 2)
        {
          activeChar.sendMessage("Command syntax: //ipunban <ip>");
          break;
        }
        if(!validateIP(wordList[1]))
        {
          activeChar.sendMessage("Error: Invalid IP adress: " + wordList[1]);
          break;
        }
        LSConnection.getInstance().sendPacket(new BanIP(wordList[1], activeChar.getName()));
        break;
    }
    return true;
  }

  public boolean validateIP(String IP)
  {
    if(!Util.isMatchingRegexp(IP, "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"))
    {
      return false;
    }
    // Split by dot
    IP = IP.replace(".", ",");
    String[] IP_octets = IP.split(",");
    for(String element : IP_octets)
    {
      if(Integer.parseInt(element) > 255)
      {
        return false;
      }
    }
    return true;
  }

  public Enum[] getAdminCommandEnum()
  {
    return Commands.values();
  }

  public void onLoad()
  {
    AdminCommandHandler.getInstance().registerAdminCommandHandler(this);
  }

  public void onReload()
  {
  }

  public void onShutdown()
  {
  }
}
TOP

Related Classes of commands.admin.AdminIP

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.