From 7ccbc743b90368d5029d4686da46a789bc307119 Mon Sep 17 00:00:00 2001 From: CodeForFame Date: Sat, 25 Jun 2011 16:42:55 -0500 Subject: [PATCH] Added ip ban and unban commands. Fixed formatting of LSPacketHandlers.xml --- GameServer/conf/command-config.xml | 4 ++ .../gs/connection/filter/IPBanManager.scala | 47 ++++++++++--------- .../gs/phandler/client/CommandHandler.scala | 33 +++++++++++++ LoginServer/conf/LSPacketHandlers.xml | 42 ++++++----------- LoginServer/logs/err.log | 16 +++++++ 5 files changed, 91 insertions(+), 51 deletions(-) diff --git a/GameServer/conf/command-config.xml b/GameServer/conf/command-config.xml index 5c5ce87..871f393 100644 --- a/GameServer/conf/command-config.xml +++ b/GameServer/conf/command-config.xml @@ -44,6 +44,10 @@ 10 11 + + 7 + + 10 diff --git a/GameServer/src/org/moparscape/msc/gs/connection/filter/IPBanManager.scala b/GameServer/src/org/moparscape/msc/gs/connection/filter/IPBanManager.scala index ce92c71..ef844ee 100644 --- a/GameServer/src/org/moparscape/msc/gs/connection/filter/IPBanManager.scala +++ b/GameServer/src/org/moparscape/msc/gs/connection/filter/IPBanManager.scala @@ -41,30 +41,35 @@ object IPBanManager extends Blocker { throttle(lookupIP(ip)) } - override def block(ip: String) { + override def block(ip: String) = { + var ret = false if (ip != null && ip.length > 0) { if (Config.APPLICATION_LEVEL_BLOCKING) - ApplicationLevelBlocking.block(ip) + ret = ApplicationLevelBlocking.block(ip) if (Config.OS_LEVEL_BLOCKING) - OSLevelBlocking.block(ip) + ret = ret || OSLevelBlocking.block(ip) } - + ret } def block(ip: java.util.List[String]) { ip foreach { block(_) } } - def block(ip: SocketAddress) { + def block(ip: SocketAddress): Boolean = { block(lookupIP(ip)) } - override def unblock(ip: String) { - ApplicationLevelBlocking.unblock(ip) - OSLevelBlocking.unblock(ip) + override def unblock(ip: String) = { + var ret = false + if (ip != null && ip.length > 0) { + ret = ApplicationLevelBlocking.unblock(ip) + ret = ret || OSLevelBlocking.unblock(ip) + } + ret } - def unblock(ip: SocketAddress) { + def unblock(ip: SocketAddress): Boolean = { unblock(lookupIP(ip)) } @@ -79,8 +84,8 @@ object IPBanManager extends Blocker { trait Blocker { def isBlocked(ip: String): Boolean - def block(ip: String) - def unblock(ip: String) + def block(ip: String): Boolean + def unblock(ip: String): Boolean def throttle(ip: String) } @@ -92,17 +97,14 @@ private object ApplicationLevelBlocking extends Blocker { private val events = Server.getServer().getEngine().getEventHandler() override def isBlocked(ip: String) = { - if (blocked.contains(ip)) { - true - } - false + blocked.contains(ip) } - override def block(ip: String) { + override def block(ip: String) = { blocked.addIfAbsent(ip) } - override def unblock(ip: String) { + override def unblock(ip: String) = { blocked.remove(ip) } @@ -133,10 +135,7 @@ private object OSLevelBlocking extends Blocker { private val events = Server.getServer().getEngine().getEventHandler() override def isBlocked(ip: String) = { - if (blocked.contains(ip)) { - true - } - false + blocked.contains(ip) } override def throttle(ip: String) { @@ -156,23 +155,25 @@ private object OSLevelBlocking extends Blocker { } } - override def block(ip: String) { + override def block(ip: String) = { Runtime.getRuntime.exec(Config.BLOCK_COMMAND.replaceAll("${ip}", ip)) blocked addIfAbsent ip } - override def unblock(ip: String) { + override def unblock(ip: String) = { try { Runtime.getRuntime.exec(Config.UNBLOCK_COMMAND.replaceAll("${ip}", ip)) blocked remove ip throttled.remove(ip) Logger.println("OS - Unblocked " + ip) + true } catch { case e: Exception => { Logger.println("OS - Failed to unblock " + ip) Logger.error(e) if (Config.OS_LEVEL_UNBLOCK_FAILED_ALERT) AlertHandler.sendAlert("OS - Failed to unblock " + ip, 2) + false } } } diff --git a/GameServer/src/org/moparscape/msc/gs/phandler/client/CommandHandler.scala b/GameServer/src/org/moparscape/msc/gs/phandler/client/CommandHandler.scala index 48463f2..c5bc822 100644 --- a/GameServer/src/org/moparscape/msc/gs/phandler/client/CommandHandler.scala +++ b/GameServer/src/org/moparscape/msc/gs/phandler/client/CommandHandler.scala @@ -13,6 +13,7 @@ import org.moparscape.msc.gs.model.Point import org.moparscape.msc.config.Config import scala.collection.immutable.HashMap import scala.xml.NodeSeq +import org.moparscape.msc.gs.connection.filter.IPBanManager object CommandHandler { import scala.xml.XML @@ -98,6 +99,8 @@ class CommandHandler extends PacketHandler { case "update" => update(p, args, world) case "dropall" => clearInv(p) case "thread" => enableMultiThreading(p) + case "ipban" => ipban(p, args, world) + case "unipban" => unipban(p, args) case _ => none = true } if (!none) @@ -281,6 +284,36 @@ class CommandHandler extends PacketHandler { message(p, "Threaded client updater: " + ClientUpdater.threaded) } + def ipban(p: Player, args: Array[String], world: World) { + val hash = DataConversions.usernameToHash(args(0)) + + val itr = world.getPlayers.iterator + while (itr.hasNext) { + val p1 = itr.next + if (p1.getUsernameHash == hash) { + message(p, "IP ban on " + args(0) + ' ' + { + if (IPBanManager.block(p1.getCurrentIP)) + "succeeded" + else + "failed" + } + + '.') + return + } + } + message(p, "No user found with the name " + args(0)) + } + + def unipban(p: Player, args: Array[String]) { + message(p, "Removal of IP ban on " + args(0) + ' ' + { + if (IPBanManager.unblock(args(0))) + "succeeded" + else + "failed" + } + + '.') + } + // Helper methods def message(p: Player, msg: String) { diff --git a/LoginServer/conf/LSPacketHandlers.xml b/LoginServer/conf/LSPacketHandlers.xml index 4af6c7e..222d32b 100644 --- a/LoginServer/conf/LSPacketHandlers.xml +++ b/LoginServer/conf/LSPacketHandlers.xml @@ -4,51 +4,44 @@ 1 2 - org.moparscape.msc.ls.packethandler.loginserver.RegisterWorld - + org.moparscape.msc.ls.packethandler.loginserver.RegisterWorld 3 - org.moparscape.msc.ls.packethandler.loginserver.KillHandler - + org.moparscape.msc.ls.packethandler.loginserver.KillHandler 4 5 - org.moparscape.msc.ls.packethandler.loginserver.BanHandler - + org.moparscape.msc.ls.packethandler.loginserver.BanHandler 6 - org.moparscape.msc.ls.packethandler.loginserver.PrivacySettingHandler - + org.moparscape.msc.ls.packethandler.loginserver.PrivacySettingHandler 7 - org.moparscape.msc.ls.packethandler.loginserver.GameSettingHandler - + org.moparscape.msc.ls.packethandler.loginserver.GameSettingHandler 8 - org.moparscape.msc.ls.packethandler.loginserver.PlayerInfoRequestHandler - + org.moparscape.msc.ls.packethandler.loginserver.PlayerInfoRequestHandler 9 - org.moparscape.msc.ls.packethandler.loginserver.SaveProfilesRequestHandler - + org.moparscape.msc.ls.packethandler.loginserver.SaveProfilesRequestHandler @@ -58,49 +51,42 @@ 13 14 - org.moparscape.msc.ls.packethandler.loginserver.FriendHandler - + org.moparscape.msc.ls.packethandler.loginserver.FriendHandler 15 - org.moparscape.msc.ls.packethandler.loginserver.ReportHandler - + org.moparscape.msc.ls.packethandler.loginserver.ReportHandler 20 - org.moparscape.msc.ls.packethandler.loginserver.PlayerSaveHandler - + org.moparscape.msc.ls.packethandler.loginserver.PlayerSaveHandler 30 - org.moparscape.msc.ls.packethandler.loginserver.PlayerLogoutHandler - + org.moparscape.msc.ls.packethandler.loginserver.PlayerLogoutHandler 31 - org.moparscape.msc.ls.packethandler.loginserver.PlayerLoginHandler - + org.moparscape.msc.ls.packethandler.loginserver.PlayerLoginHandler 32 - org.moparscape.msc.ls.packethandler.loginserver.LogHandler - + org.moparscape.msc.ls.packethandler.loginserver.LogHandler 33 - org.moparscape.msc.ls.packethandler.loginserver.Tradelog - + org.moparscape.msc.ls.packethandler.loginserver.Tradelog diff --git a/LoginServer/logs/err.log b/LoginServer/logs/err.log index e69de29..b6ceb7a 100644 --- a/LoginServer/logs/err.log +++ b/LoginServer/logs/err.log @@ -0,0 +1,16 @@ +16:40:54 25-06-11: 20313 [SocketAcceptorIoProcessor-0.1] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43186] Remote address in the blacklist; closing. + +16:40:54 25-06-11: 20315 [SocketAcceptorIoProcessor-0.1] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43186] Remote address in the blacklist; closing. + +16:40:57 25-06-11: 23880 [SocketAcceptorIoProcessor-0.2] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43187] Remote address in the blacklist; closing. + +16:40:57 25-06-11: 23882 [SocketAcceptorIoProcessor-0.2] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43187] Remote address in the blacklist; closing. + +16:40:58 25-06-11: 24714 [SocketAcceptorIoProcessor-0.3] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43188] Remote address in the blacklist; closing. + +16:40:58 25-06-11: 24715 [SocketAcceptorIoProcessor-0.3] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43188] Remote address in the blacklist; closing. + +16:40:59 25-06-11: 25403 [SocketAcceptorIoProcessor-0.4] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43189] Remote address in the blacklist; closing. + +16:40:59 25-06-11: 25405 [SocketAcceptorIoProcessor-0.4] INFO org.moparscape.msc.gs.connection.RSCConnectionHandler - [/127.0.0.1:43189] Remote address in the blacklist; closing. +