From e172e37c58c1d4ab48e3dcccacb8707c25e0d2bf Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Mon, 30 Jul 2007 21:12:29 +0000 Subject: [PATCH] * Added GetLocalHost() to Util * ExternalHostName supports "SYSTEMIP" again. --- OpenSim/Framework/General/Types/RegionInfo.cs | 9 ++++++++- OpenSim/Framework/General/Util.cs | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/General/Types/RegionInfo.cs b/OpenSim/Framework/General/Types/RegionInfo.cs index 57bb398fe8..ef05534d29 100644 --- a/OpenSim/Framework/General/Types/RegionInfo.cs +++ b/OpenSim/Framework/General/Types/RegionInfo.cs @@ -207,7 +207,14 @@ namespace OpenSim.Framework.Types this.m_internalEndPoint.Port = (int)configuration_result; break; case "external_host_name": - this.m_externalHostName = (string)configuration_result; + if ((string)configuration_result != "SYSTEMIP") + { + this.m_externalHostName = (string)configuration_result; + } + else + { + this.m_externalHostName = Util.GetLocalHost().ToString(); + } break; case "terrain_file": this.estateSettings.terrainFile = (string)configuration_result; diff --git a/OpenSim/Framework/General/Util.cs b/OpenSim/Framework/General/Util.cs index bbee4b2c16..9e687bae14 100644 --- a/OpenSim/Framework/General/Util.cs +++ b/OpenSim/Framework/General/Util.cs @@ -256,6 +256,26 @@ namespace OpenSim.Framework.Utilities return null; } + public static IPAddress GetLocalHost() + { + string dnsAddress = "localhost"; + + IPAddress[] hosts = Dns.GetHostEntry(dnsAddress).AddressList; + + foreach (IPAddress host in hosts) + { + if (!IPAddress.IsLoopback(host) && host.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) + { + return host; + } + } + + if (hosts.Length > 0) + return hosts[0]; + + return null; + } + public Util() {