[HELP] Apliying IPv4Filter.java

Find the proper support area, Saga-Version.
Forum rules
READ NOW: L2j Forums Rules of Conduct
Post Reply
Rans3sx
Posts: 10
Joined: Wed May 06, 2009 5:42 am

[HELP] Apliying IPv4Filter.java

Post by Rans3sx »

If you want to receive support we need this info to help you properly.
» Find Revision
L2J Revision Number:3694
L2JDP Revision Number:6774

Hey guys, i need some help apliying this fix:

http://www.l2jserver.com/trac/browser/t ... a?rev=3774

http://www.l2jserver.com/trac/changeset ... erver.java

http://www.l2jserver.com/trac/changeset ... elper.java

i made all changes from com.l2jserver..... to my current net.sf.l2j but am getting this error:

Code: Select all

Compilando.. Buildfile: C:\L2JServer\L2_GameServer\build.xml clean:   [delete] Deleting directory C:\L2JServer\L2_GameServer\build verifyRequirements: init:    [mkdir] Created dir: C:\L2JServer\L2_GameServer\build    [mkdir] Created dir: C:\L2JServer\L2_GameServer\build\classes    [mkdir] Created dir: C:\L2JServer\L2_GameServer\build\dist    [mkdir] Created dir: C:\L2JServer\L2_GameServer\build\dist\login    [mkdir] Created dir: C:\L2JServer\L2_GameServer\build\dist\gameserver version: compile:    [javac] C:\L2JServer\L2_GameServer\build.xml:76: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds    [javac] Compiling 1362 source files to C:\L2JServer\L2_GameServer\build\classes    [javac] C:\L2JServer\L2_GameServer\java\net\sf\l2j\util\IPv4Filter.java:32:duplicate class: nef.sf.l2j.util.IPv4Filter    [javac]     public class IPv4Filter implements IAcceptFilter, Runnable    [javac]            ^    [javac] C:\L2JServer\L2_GameServer\java\net\sf\l2j\loginserver\SelectorHelper.java:21: cannot access net.sf.l2j.util.IPv4Filter    [javac] bad class file: C:\L2JServer\L2_GameServer\java\net\sf\l2j\util\IPv4Filter.java    [javac] file does not contain class net.sf.l2j.util.IPv4Filter    [javac] Please remove or make sure it appears in the correct subdirectory of the classpath.    [javac] import net.sf.l2j.util.IPv4Filter;    [javac]                       ^ BUILD FAILEDC:\L2JServer\L2_GameServer\build.xml:76: Compile failed; see the compiler erroroutput for details. Total time: 5 seconds
i am sure i got all my files in the correct folder/subfolder but idk what happened. :S
Rans3sx
Posts: 10
Joined: Wed May 06, 2009 5:42 am

Re: [HELP] Apliying IPv4Filter.java

Post by Rans3sx »

please guys, i need help asap, i have my litle server down bcz some one is attacking me :S

Thx in advance
User avatar
janiii
L2j Veteran
L2j Veteran
Posts: 4269
Joined: Wed May 28, 2008 3:15 pm
Location: Slovakia

Re: [HELP] Apliying IPv4Filter.java

Post by janiii »

we cannot help you unless you show us the source of your IPv4Filer class. check forum, there is already a patch for gracia final with that changeset.
DO NOT EVEN TRY TO MESS WITH ME!
forum flOOder dancing dEVILoper
I don't give private support - PM will be ignored!
Rans3sx
Posts: 10
Joined: Wed May 06, 2009 5:42 am

Re: [HELP] Apliying IPv4Filter.java

Post by Rans3sx »

Code: Select all

/* * 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 nef.sf.l2j.util; import java.net.InetAddress;import java.nio.channels.SocketChannel;import java.util.ArrayList;import java.util.HashMap;import java.util.Map.Entry; import org.mmocore.network.IAcceptFilter; /** * Formatted Forsaiken's IPv4 filter [DrHouse] *  * @author Forsaiken * */public class IPv4Filter implements IAcceptFilter, Runnable{	private HashMap<Integer, Flood> _ipFloodMap;	private static final long SLEEP_TIME = 5000; 	public IPv4Filter()	{		_ipFloodMap = new HashMap<Integer, Flood>();		Thread t = new Thread(this);		t.setDaemon(true);		t.start();	}	/**	 * 	 * @param ip	 * @return	 */	private static final int hash(byte[] ip)	{		return ip[0] & 0xFF | ip[1] << 8 & 0xFF00 | ip[2] << 16 & 0xFF0000 | ip[3] << 24 & 0xFF000000;	} 	protected static final class Flood	{		long lastAccess;		int trys; 		Flood()		{			lastAccess = System.currentTimeMillis();			trys = 0;		}	} 	@Override	public boolean accept(SocketChannel sc)	{		InetAddress addr = sc.socket().getInetAddress();		int h = hash(addr.getAddress()); 		long current = System.currentTimeMillis();		Flood f;		synchronized (_ipFloodMap)		{			f = _ipFloodMap.get(h);		}		if (f != null)		{			if (f.trys == -1)			{				f.lastAccess = current;				return false;			} 			if (f.lastAccess + 1000 > current)			{				f.lastAccess = current; 				if (f.trys >= 3)				{					f.trys = -1;					return false;				} 				f.trys++;			}			else			{				f.lastAccess = current;			}		}		else		{			synchronized (_ipFloodMap)			{				_ipFloodMap.put(h, new Flood());			}		} 		return true;	} 	@Override	public void run()	{		while (true)		{			long reference = System.currentTimeMillis() - (1000 * 300);			ArrayList<Integer> toRemove = new ArrayList<Integer>(50); 			synchronized (_ipFloodMap)			{				for (Entry<Integer, Flood> e : _ipFloodMap.entrySet())				{					Flood f = e.getValue();					if (f.lastAccess < reference)						toRemove.add(e.getKey());				}			} 			synchronized (_ipFloodMap)			{				for (Integer i : toRemove)				{					_ipFloodMap.remove(i);				}			} 			try			{				Thread.sleep(SLEEP_TIME);			}			catch (InterruptedException e)			{ 			}		}	} }
and i sed this patch.

Code: Select all

Index: java/net/sf/l2j/gameserver/GameServer.java===================================================================--- java/net/sf/l2j/gameserver/GameServer.java	(revision 1475)+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)@@ -121,6 +121,7 @@ import net.sf.l2j.gameserver.util.DynamicExtension; import net.sf.l2j.status.Status; import net.sf.l2j.util.DeadLockDetector;+import net.sf.l2j.util.IPv4Filter;  import org.mmocore.network.SelectorConfig; import org.mmocore.network.SelectorThread;@@ -439,7 +440,7 @@ 		sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME; 		sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT; 		final L2GamePacketHandler gph = new L2GamePacketHandler();-		_selectorThread = new SelectorThread<L2GameClient>(sc, gph, gph, gph, null);+		_selectorThread = new SelectorThread<L2GameClient>(sc, gph, gph, gph, new IPv4Filter());  		InetAddress bindAddress = null; 		if (!Config.GAMESERVER_HOSTNAME.equals("*"))Index: java/net/sf/l2j/util/IPv4Filter.java===================================================================--- java/net/sf/l2j/util/IPv4Filter.java	(revision 0)+++ java/net/sf/l2j/util/IPv4Filter.java	(revision 0)@@ -0,0 +1,151 @@+/*+ * 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 net.sf.l2j.util;++import java.net.InetAddress;+import java.nio.channels.SocketChannel;+import java.util.ArrayList;+import java.util.HashMap;+import java.util.Map.Entry;++import org.mmocore.network.IAcceptFilter;++/**+ * Formatted Forsaiken's IPv4 filter [DrHouse]+ * + * @author Forsaiken+ *+ */+public class IPv4Filter implements IAcceptFilter, Runnable+{+	private HashMap<Integer, Flood> _ipFloodMap;+	private static final long SLEEP_TIME = 5000;+	+	public IPv4Filter()+	{+		_ipFloodMap = new HashMap<Integer, Flood>();+		Thread t = new Thread(this);+		t.setDaemon(true);+		t.start();+	}+	/**+	 * +	 * @param ip+	 * @return+	 */+	private static final int hash(byte[] ip)+	{+		return ip[0] & 0xFF | ip[1] << 8 & 0xFF00 | ip[2] << 16 & 0xFF0000 | ip[3] << 24 & 0xFF000000;+	}+	+	protected static final class Flood+	{+		long lastAccess;+		int trys;+		+		Flood()+		{+			lastAccess = System.currentTimeMillis();+			trys = 0;+		}+	}+	+	@Override+	public boolean accept(SocketChannel sc)+	{+		InetAddress addr = sc.socket().getInetAddress();+		int h = hash(addr.getAddress());+		+		long current = System.currentTimeMillis();+		Flood f;+		synchronized (_ipFloodMap)+		{+			f = _ipFloodMap.get(h);+		}+		if (f != null)+		{+			if (f.trys == -1)+			{+				f.lastAccess = current;+				return false;+			}+			+			if (f.lastAccess + 1000 > current)+			{+				f.lastAccess = current;+				+				if (f.trys >= 3)+				{+					f.trys = -1;+					return false;+				}+				+				f.trys++;+			}+			else+			{+				f.lastAccess = current;+			}+		}+		else+		{+			synchronized (_ipFloodMap)+			{+				_ipFloodMap.put(h, new Flood());+			}+		}+		+		return true;+	}++	@Override+	public void run()+	{+		while (true)+		{+			long reference = System.currentTimeMillis() - (1000 * 300);+			ArrayList<Integer> toRemove = new ArrayList<Integer>(50);+			+			synchronized (_ipFloodMap)+			{+				for (Entry<Integer, Flood> e : _ipFloodMap.entrySet())+				{+					Flood f = e.getValue();+					if (f.lastAccess < reference)+						toRemove.add(e.getKey());+				}+			}+			+			synchronized (_ipFloodMap)+			{+				for (Integer i : toRemove)+				{+					_ipFloodMap.remove(i);+				}+			}+			+			try+			{+				Thread.sleep(SLEEP_TIME);+			}+			catch (InterruptedException e)+			{+				+			}+		}+	}+	+}\ No newline at end of fileIndex: java/net/sf/l2j/loginserver/SelectorHelper.java===================================================================--- java/net/sf/l2j/loginserver/SelectorHelper.java	(revision 1475)+++ java/net/sf/l2j/loginserver/SelectorHelper.java	(working copy)@@ -12,16 +12,13 @@  */ package net.sf.l2j.loginserver; -import java.net.InetAddress; import java.nio.channels.SocketChannel;-import java.util.ArrayList;-import java.util.HashMap;-import java.util.Map.Entry; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit;  import net.sf.l2j.loginserver.serverpackets.Init;+import net.sf.l2j.util.IPv4Filter;  import org.mmocore.network.IAcceptFilter; import org.mmocore.network.IClientFactory;@@ -33,18 +30,15 @@  *   * @author KenM  */-public class SelectorHelper extends Thread implements IMMOExecutor<L2LoginClient>,+public class SelectorHelper implements IMMOExecutor<L2LoginClient>,         IClientFactory<L2LoginClient>, IAcceptFilter {-	private HashMap<Integer, Flood> _ipFloodMap; 	private ThreadPoolExecutor _generalPacketsThreadPool;+	private IPv4Filter _ipv4filter;  	public SelectorHelper() 	{-		_generalPacketsThreadPool = new ThreadPoolExecutor(4, 6, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());-		_ipFloodMap = new HashMap<Integer, Flood>();-		super.setDaemon(true);-		super.start();+		_ipv4filter = new IPv4Filter(); 	}  	/**@@ -73,110 +67,6 @@ 	 */ 	public boolean accept(SocketChannel sc) 	{-		InetAddress addr = sc.socket().getInetAddress();-		int h = hash(addr.getAddress());-		-		long current = System.currentTimeMillis();-		Flood f;-		synchronized (_ipFloodMap)-		{-			f = _ipFloodMap.get(h);-		}-		if (f != null)-		{-			if (f.trys == -1)-			{-				f.lastAccess = current;-				return false;-			}-			-			if (f.lastAccess + 1000 > current)-			{-				f.lastAccess = current;-				-				if (f.trys >= 3)-				{-					f.trys = -1;-					return false;-				}-				-				f.trys++;-			}-			else-			{-				f.lastAccess = current;-			}-		}-		else-		{-			synchronized (_ipFloodMap)-			{-				_ipFloodMap.put(h, new Flood());-			}-		}-		return !LoginController.getInstance().isBannedAddress(addr);+		return _ipv4filter.accept(sc) && !LoginController.getInstance().isBannedAddress(sc.socket().getInetAddress()); 	}-	-	/**-	 * -	 * @param ip-	 * @return-	 */-	private int hash(byte[] ip)-	{-		return ip[0] & 0xFF | ip[1] << 8 & 0xFF00 | ip[2] << 16 & 0xFF0000 | ip[3] << 24-		        & 0xFF000000;-	}-	-	private class Flood-	{-		long lastAccess;-		int trys;-		-		Flood()-		{-			lastAccess = System.currentTimeMillis();-			trys = 0;-		}-	}-	-	/**-	 * -	 * @see java.lang.Thread#run()-	 */-	@Override-	public void run()-	{-		while (true)-		{-			long reference = System.currentTimeMillis() - (1000 * 300);-			ArrayList<Integer> toRemove = new ArrayList<Integer>(50);-			synchronized (_ipFloodMap)-			{-				for (Entry<Integer, Flood> e : _ipFloodMap.entrySet())-				{-					Flood f = e.getValue();-					if (f.lastAccess < reference)-						toRemove.add(e.getKey());-				}-			}-			-			synchronized (_ipFloodMap)-			{-				for (Integer i : toRemove)-				{-					_ipFloodMap.remove(i);-				}-			}-			-			try-			{-				Thread.sleep(5000);-			}-			catch (InterruptedException e)
Rans3sx
Posts: 10
Joined: Wed May 06, 2009 5:42 am

Re: [HELP] Apliying IPv4Filter.java

Post by Rans3sx »

bump? please :P
Post Reply