diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/Agent/IPBan/IPBanModule.cs | 162 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs | 104 |
2 files changed, 133 insertions, 133 deletions
diff --git a/OpenSim/Region/CoreModules/Agent/IPBan/IPBanModule.cs b/OpenSim/Region/CoreModules/Agent/IPBan/IPBanModule.cs index b904cb0..28e0382 100644 --- a/OpenSim/Region/CoreModules/Agent/IPBan/IPBanModule.cs +++ b/OpenSim/Region/CoreModules/Agent/IPBan/IPBanModule.cs | |||
@@ -1,81 +1,81 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.IO; | 3 | using System.IO; |
4 | using System.Text; | 4 | using System.Text; |
5 | using Nini.Config; | 5 | using Nini.Config; |
6 | using OpenSim.Framework; | 6 | using OpenSim.Framework; |
7 | using OpenSim.Region.Framework.Interfaces; | 7 | using OpenSim.Region.Framework.Interfaces; |
8 | using OpenSim.Region.Framework.Scenes; | 8 | using OpenSim.Region.Framework.Scenes; |
9 | 9 | ||
10 | namespace OpenSim.Region.CoreModules.Agent.IPBan | 10 | namespace OpenSim.Region.CoreModules.Agent.IPBan |
11 | { | 11 | { |
12 | public class IPBanModule : IRegionModule | 12 | public class IPBanModule : IRegionModule |
13 | { | 13 | { |
14 | #region Implementation of IRegionModule | 14 | #region Implementation of IRegionModule |
15 | 15 | ||
16 | private List<string> m_bans = new List<string>(); | 16 | private List<string> m_bans = new List<string>(); |
17 | 17 | ||
18 | public void Initialise(Scene scene, IConfigSource source) | 18 | public void Initialise(Scene scene, IConfigSource source) |
19 | { | 19 | { |
20 | new SceneBanner(scene, m_bans); | 20 | new SceneBanner(scene, m_bans); |
21 | 21 | ||
22 | lock(m_bans) | 22 | lock(m_bans) |
23 | { | 23 | { |
24 | foreach (EstateBan ban in scene.RegionInfo.EstateSettings.EstateBans) | 24 | foreach (EstateBan ban in scene.RegionInfo.EstateSettings.EstateBans) |
25 | { | 25 | { |
26 | if(!String.IsNullOrEmpty(ban.BannedHostIPMask)) | 26 | if(!String.IsNullOrEmpty(ban.BannedHostIPMask)) |
27 | m_bans.Add(ban.BannedHostIPMask); | 27 | m_bans.Add(ban.BannedHostIPMask); |
28 | if (!String.IsNullOrEmpty(ban.BannedHostNameMask)) | 28 | if (!String.IsNullOrEmpty(ban.BannedHostNameMask)) |
29 | m_bans.Add(ban.BannedHostNameMask); | 29 | m_bans.Add(ban.BannedHostNameMask); |
30 | } | 30 | } |
31 | } | 31 | } |
32 | } | 32 | } |
33 | 33 | ||
34 | public void PostInitialise() | 34 | public void PostInitialise() |
35 | { | 35 | { |
36 | if(File.Exists("bans.txt")) | 36 | if(File.Exists("bans.txt")) |
37 | { | 37 | { |
38 | string[] bans = File.ReadAllLines("bans.txt"); | 38 | string[] bans = File.ReadAllLines("bans.txt"); |
39 | foreach (string ban in bans) | 39 | foreach (string ban in bans) |
40 | { | 40 | { |
41 | m_bans.Add(ban); | 41 | m_bans.Add(ban); |
42 | } | 42 | } |
43 | } | 43 | } |
44 | } | 44 | } |
45 | 45 | ||
46 | public void Close() | 46 | public void Close() |
47 | { | 47 | { |
48 | 48 | ||
49 | } | 49 | } |
50 | 50 | ||
51 | public string Name | 51 | public string Name |
52 | { | 52 | { |
53 | get { return "IPBanModule"; } | 53 | get { return "IPBanModule"; } |
54 | } | 54 | } |
55 | 55 | ||
56 | public bool IsSharedModule | 56 | public bool IsSharedModule |
57 | { | 57 | { |
58 | get { return true; } | 58 | get { return true; } |
59 | } | 59 | } |
60 | 60 | ||
61 | #endregion | 61 | #endregion |
62 | 62 | ||
63 | /// <summary> | 63 | /// <summary> |
64 | /// Bans all users from the specified network from connecting. | 64 | /// Bans all users from the specified network from connecting. |
65 | /// DNS bans are in the form "somewhere.com" will block ANY | 65 | /// DNS bans are in the form "somewhere.com" will block ANY |
66 | /// matching domain (including "betasomewhere.com", "beta.somewhere.com", | 66 | /// matching domain (including "betasomewhere.com", "beta.somewhere.com", |
67 | /// "somewhere.com.beta") - make sure to be reasonably specific in DNS | 67 | /// "somewhere.com.beta") - make sure to be reasonably specific in DNS |
68 | /// bans. | 68 | /// bans. |
69 | /// | 69 | /// |
70 | /// IP address bans match on first characters, so, | 70 | /// IP address bans match on first characters, so, |
71 | /// "127.0.0.1" will ban only that address, | 71 | /// "127.0.0.1" will ban only that address, |
72 | /// "127.0.1" will ban "127.0.10.0" | 72 | /// "127.0.1" will ban "127.0.10.0" |
73 | /// but "127.0.1." will ban only the "127.0.1.*" network | 73 | /// but "127.0.1." will ban only the "127.0.1.*" network |
74 | /// </summary> | 74 | /// </summary> |
75 | /// <param name="host">See summary for explanation of parameter</param> | 75 | /// <param name="host">See summary for explanation of parameter</param> |
76 | public void Ban(string host) | 76 | public void Ban(string host) |
77 | { | 77 | { |
78 | m_bans.Add(host); | 78 | m_bans.Add(host); |
79 | } | 79 | } |
80 | } | 80 | } |
81 | } | 81 | } |
diff --git a/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs b/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs index 20a2159..a5e9963 100644 --- a/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs +++ b/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs | |||
@@ -1,52 +1,52 @@ | |||
1 | using System.Collections.Generic; | 1 | using System.Collections.Generic; |
2 | using System.Net; | 2 | using System.Net; |
3 | using OpenSim.Framework.Client; | 3 | using OpenSim.Framework.Client; |
4 | using OpenSim.Region.Framework.Scenes; | 4 | using OpenSim.Region.Framework.Scenes; |
5 | 5 | ||
6 | namespace OpenSim.Region.CoreModules.Agent.IPBan | 6 | namespace OpenSim.Region.CoreModules.Agent.IPBan |
7 | { | 7 | { |
8 | internal class SceneBanner | 8 | internal class SceneBanner |
9 | { | 9 | { |
10 | private static readonly log4net.ILog m_log | 10 | private static readonly log4net.ILog m_log |
11 | = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | 11 | = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
12 | 12 | ||
13 | private List<string> bans; | 13 | private List<string> bans; |
14 | private SceneBase m_scene; | 14 | private SceneBase m_scene; |
15 | public SceneBanner(SceneBase scene, List<string> banList) | 15 | public SceneBanner(SceneBase scene, List<string> banList) |
16 | { | 16 | { |
17 | scene.EventManager.OnClientConnect += EventManager_OnClientConnect; | 17 | scene.EventManager.OnClientConnect += EventManager_OnClientConnect; |
18 | 18 | ||
19 | bans = banList; | 19 | bans = banList; |
20 | m_scene = scene; | 20 | m_scene = scene; |
21 | } | 21 | } |
22 | 22 | ||
23 | void EventManager_OnClientConnect(IClientCore client) | 23 | void EventManager_OnClientConnect(IClientCore client) |
24 | { | 24 | { |
25 | IClientIPEndpoint ipEndpoint; | 25 | IClientIPEndpoint ipEndpoint; |
26 | if(client.TryGet(out ipEndpoint)) | 26 | if(client.TryGet(out ipEndpoint)) |
27 | { | 27 | { |
28 | IPAddress end = ipEndpoint.EndPoint; | 28 | IPAddress end = ipEndpoint.EndPoint; |
29 | 29 | ||
30 | try | 30 | try |
31 | { | 31 | { |
32 | IPHostEntry rDNS = Dns.GetHostEntry(end); | 32 | IPHostEntry rDNS = Dns.GetHostEntry(end); |
33 | foreach (string ban in bans) | 33 | foreach (string ban in bans) |
34 | { | 34 | { |
35 | if (rDNS.HostName.Contains(ban) || | 35 | if (rDNS.HostName.Contains(ban) || |
36 | end.ToString().StartsWith(ban)) | 36 | end.ToString().StartsWith(ban)) |
37 | { | 37 | { |
38 | client.Disconnect("Banned - network \"" + ban + "\" is not allowed to connect to this server."); | 38 | client.Disconnect("Banned - network \"" + ban + "\" is not allowed to connect to this server."); |
39 | m_log.Warn("[IPBAN] Disconnected '" + end + "' due to '" + ban + "' ban."); | 39 | m_log.Warn("[IPBAN] Disconnected '" + end + "' due to '" + ban + "' ban."); |
40 | return; | 40 | return; |
41 | } | 41 | } |
42 | } | 42 | } |
43 | } | 43 | } |
44 | catch (System.Net.Sockets.SocketException sex) | 44 | catch (System.Net.Sockets.SocketException sex) |
45 | { | 45 | { |
46 | m_log.WarnFormat("[IPBAN] IP address \"{0}\" cannot be resolved via DNS", end); | 46 | m_log.WarnFormat("[IPBAN] IP address \"{0}\" cannot be resolved via DNS", end); |
47 | } | 47 | } |
48 | m_log.WarnFormat("[IPBAN] User \"{0}\" not in any ban lists. Allowing connection.", end); | 48 | m_log.WarnFormat("[IPBAN] User \"{0}\" not in any ban lists. Allowing connection.", end); |
49 | } | 49 | } |
50 | } | 50 | } |
51 | } | 51 | } |
52 | } | 52 | } |