diff --git a/OpenSim/Framework/NetworkUtil.cs b/OpenSim/Framework/NetworkUtil.cs index e3fb009608..351020b308 100644 --- a/OpenSim/Framework/NetworkUtil.cs +++ b/OpenSim/Framework/NetworkUtil.cs @@ -1,221 +1,221 @@ -using System; -using System.Collections.Generic; -using System.Net.Sockets; -using System.Net; -using System.Net.NetworkInformation; -using System.Reflection; -using log4net; - -namespace OpenSim.Framework -{ - /// - /// Handles NAT translation in a 'manner of speaking' - /// Allows you to return multiple different external - /// hostnames depending on the requestors network - /// - /// This enables standard port forwarding techniques - /// to work correctly with OpenSim. - /// - public static class NetworkUtil - { - // Logger - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private static bool m_disabled = true; - - public static bool Enabled - { - set { m_disabled = value; } - get { return m_disabled; } - } - - // IPv4Address, Subnet - static readonly Dictionary m_subnets = new Dictionary(); - - public static IPAddress GetIPFor(IPAddress user, IPAddress simulator) - { - if(m_disabled) - return simulator; - - // Check if we're accessing localhost. - foreach (IPAddress host in Dns.GetHostAddresses(Dns.GetHostName())) - { - if (host.Equals(user) && host.AddressFamily == AddressFamily.InterNetwork) - { - m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + simulator + "'"); - return host; - } - } - - // Check for same LAN segment - foreach (KeyValuePair subnet in m_subnets) - { - byte[] subnetBytes = subnet.Value.GetAddressBytes(); - byte[] localBytes = subnet.Key.GetAddressBytes(); - byte[] destBytes = user.GetAddressBytes(); - - if (subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length) - return null; - - bool valid = true; - - for (int i = 0; i < subnetBytes.Length; i++) - { - if ((localBytes[i] & subnetBytes[i]) != (destBytes[i] & subnetBytes[i])) - { - valid = false; - break; - } - } - - if (subnet.Key.AddressFamily != AddressFamily.InterNetwork) - valid = false; - - if (valid) - { - m_log.Info("[NetworkUtil] Local LAN user detected, sending them '" + subnet.Key + "' instead of '" + simulator + "'"); - return subnet.Key; - } - } - - // Otherwise, return outside address - return simulator; - } - - private static IPAddress GetExternalIPFor(IPAddress destination, string defaultHostname) - { - // Adds IPv6 Support (Not that any of the major protocols supports it...) - if (destination.AddressFamily == AddressFamily.InterNetworkV6) - { - foreach (IPAddress host in Dns.GetHostAddresses(defaultHostname)) - { - if (host.AddressFamily == AddressFamily.InterNetworkV6) - { - m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'"); - return host; - } - } - } - - if(destination.AddressFamily != AddressFamily.InterNetwork) - return null; - - // Check if we're accessing localhost. - foreach (KeyValuePair pair in m_subnets) - { - IPAddress host = pair.Value; - if (host.Equals(destination) && host.AddressFamily == AddressFamily.InterNetwork) - { - m_log.Info("[NATROUTING] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'"); - return destination; - } - } - - // Check for same LAN segment - foreach (KeyValuePair subnet in m_subnets) - { - byte[] subnetBytes = subnet.Value.GetAddressBytes(); - byte[] localBytes = subnet.Key.GetAddressBytes(); - byte[] destBytes = destination.GetAddressBytes(); - - if(subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length) - return null; - - bool valid = true; - - for(int i=0;i + /// Handles NAT translation in a 'manner of speaking' + /// Allows you to return multiple different external + /// hostnames depending on the requestors network + /// + /// This enables standard port forwarding techniques + /// to work correctly with OpenSim. + /// + public static class NetworkUtil + { + // Logger + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private static bool m_disabled = true; + + public static bool Enabled + { + set { m_disabled = value; } + get { return m_disabled; } + } + + // IPv4Address, Subnet + static readonly Dictionary m_subnets = new Dictionary(); + + public static IPAddress GetIPFor(IPAddress user, IPAddress simulator) + { + if(m_disabled) + return simulator; + + // Check if we're accessing localhost. + foreach (IPAddress host in Dns.GetHostAddresses(Dns.GetHostName())) + { + if (host.Equals(user) && host.AddressFamily == AddressFamily.InterNetwork) + { + m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + simulator + "'"); + return host; + } + } + + // Check for same LAN segment + foreach (KeyValuePair subnet in m_subnets) + { + byte[] subnetBytes = subnet.Value.GetAddressBytes(); + byte[] localBytes = subnet.Key.GetAddressBytes(); + byte[] destBytes = user.GetAddressBytes(); + + if (subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length) + return null; + + bool valid = true; + + for (int i = 0; i < subnetBytes.Length; i++) + { + if ((localBytes[i] & subnetBytes[i]) != (destBytes[i] & subnetBytes[i])) + { + valid = false; + break; + } + } + + if (subnet.Key.AddressFamily != AddressFamily.InterNetwork) + valid = false; + + if (valid) + { + m_log.Info("[NetworkUtil] Local LAN user detected, sending them '" + subnet.Key + "' instead of '" + simulator + "'"); + return subnet.Key; + } + } + + // Otherwise, return outside address + return simulator; + } + + private static IPAddress GetExternalIPFor(IPAddress destination, string defaultHostname) + { + // Adds IPv6 Support (Not that any of the major protocols supports it...) + if (destination.AddressFamily == AddressFamily.InterNetworkV6) + { + foreach (IPAddress host in Dns.GetHostAddresses(defaultHostname)) + { + if (host.AddressFamily == AddressFamily.InterNetworkV6) + { + m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'"); + return host; + } + } + } + + if(destination.AddressFamily != AddressFamily.InterNetwork) + return null; + + // Check if we're accessing localhost. + foreach (KeyValuePair pair in m_subnets) + { + IPAddress host = pair.Value; + if (host.Equals(destination) && host.AddressFamily == AddressFamily.InterNetwork) + { + m_log.Info("[NATROUTING] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'"); + return destination; + } + } + + // Check for same LAN segment + foreach (KeyValuePair subnet in m_subnets) + { + byte[] subnetBytes = subnet.Value.GetAddressBytes(); + byte[] localBytes = subnet.Key.GetAddressBytes(); + byte[] destBytes = destination.GetAddressBytes(); + + if(subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length) + return null; + + bool valid = true; + + for(int i=0;i - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/bin/config-include/Grid.ini b/bin/config-include/Grid.ini index 7f9db1caae..6a339f2039 100644 --- a/bin/config-include/Grid.ini +++ b/bin/config-include/Grid.ini @@ -1,6 +1,6 @@ -[Includes] - Include-Common = "config-include/GridCommon.ini" - -[Modules] - AssetServices = "RemoteAssetServicesConnector" - +[Includes] + Include-Common = "config-include/GridCommon.ini" + +[Modules] + AssetServices = "RemoteAssetServicesConnector" + diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index 0e95f35c86..de57c98903 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -1,17 +1,17 @@ -[Modules] - AssetCaching = "CoreAssetCache" - -[AssetCache] - ; Number of buckets for assets - CacheBuckets = 32768 - -[AssetService] - - DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" - AssetLoaderArgs = "assets/AssetSets.xml" - - ; - ; change this to your grid-wide asset server - ; - AssetServerURI = "http://myassetserver.com:8003" - +[Modules] + AssetCaching = "CoreAssetCache" + +[AssetCache] + ; Number of buckets for assets + CacheBuckets = 32768 + +[AssetService] + + DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" + AssetLoaderArgs = "assets/AssetSets.xml" + + ; + ; change this to your grid-wide asset server + ; + AssetServerURI = "http://myassetserver.com:8003" + diff --git a/bin/config-include/GridHypergrid.ini b/bin/config-include/GridHypergrid.ini index 5a93b79abd..e21f3065e7 100644 --- a/bin/config-include/GridHypergrid.ini +++ b/bin/config-include/GridHypergrid.ini @@ -1,10 +1,10 @@ -[Includes] - Include-Common = "config-include/GridCommon.ini" - -[Modules] - AssetServices = "HGAssetBroker" - - -[AssetService] - LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector" - HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService" +[Includes] + Include-Common = "config-include/GridCommon.ini" + +[Modules] + AssetServices = "HGAssetBroker" + + +[AssetService] + LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector" + HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService" diff --git a/bin/config-include/Standalone.ini b/bin/config-include/Standalone.ini index c35cda9225..dd9fdb5ca9 100644 --- a/bin/config-include/Standalone.ini +++ b/bin/config-include/Standalone.ini @@ -1,10 +1,10 @@ -[Includes] - Include-Common = "config-include/StandaloneCommon.ini" - -[Modules] - AssetServices = "LocalAssetServicesConnector" - - -[AssetService] - LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" - +[Includes] + Include-Common = "config-include/StandaloneCommon.ini" + +[Modules] + AssetServices = "LocalAssetServicesConnector" + + +[AssetService] + LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" + diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index a14c6537e2..001b3a00e6 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -1,21 +1,21 @@ -[Modules] - AssetCaching = "CoreAssetCache" - -[AssetCache] - ; Number of buckets for assets - CacheBuckets = 16384 - -[AssetService] - ; - ;### Choose the DB - ; - ;--- For SQLite - StorageProvider = "OpenSim.Data.SQLite.dll" - ;--- For MySql - ;StorageProvider = "OpenSim.Data.MySQL.dll" - ;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;" - - DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" - AssetLoaderArgs = "assets/AssetSets.xml" - - +[Modules] + AssetCaching = "CoreAssetCache" + +[AssetCache] + ; Number of buckets for assets + CacheBuckets = 16384 + +[AssetService] + ; + ;### Choose the DB + ; + ;--- For SQLite + StorageProvider = "OpenSim.Data.SQLite.dll" + ;--- For MySql + ;StorageProvider = "OpenSim.Data.MySQL.dll" + ;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;" + + DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" + AssetLoaderArgs = "assets/AssetSets.xml" + + diff --git a/bin/config-include/StandaloneHypergrid.ini b/bin/config-include/StandaloneHypergrid.ini index 975132bef6..a97ac7b6c6 100644 --- a/bin/config-include/StandaloneHypergrid.ini +++ b/bin/config-include/StandaloneHypergrid.ini @@ -1,15 +1,15 @@ -[Includes] - Include-Common = "config-include/StandaloneCommon.ini" - -[Modules] - AssetServices = "HGAssetBroker" - - -[AssetService] - ; For the RegionAssetService - LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" - - ; For HGAssetBroker - LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService" - HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService" - +[Includes] + Include-Common = "config-include/StandaloneCommon.ini" + +[Modules] + AssetServices = "HGAssetBroker" + + +[AssetService] + ; For the RegionAssetService + LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" + + ; For HGAssetBroker + LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService" + HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService" +