From 1955b797598d61548521c444ea8d3721fd5435ba Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 19 Aug 2010 18:55:30 -0700 Subject: Partial rewrite of client IP verification. Not completely finished yet, and untested. Committing to move to my other computer. --- OpenSim/Framework/Constants.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/Constants.cs b/OpenSim/Framework/Constants.cs index 5757061..1b1aaf2 100644 --- a/OpenSim/Framework/Constants.cs +++ b/OpenSim/Framework/Constants.cs @@ -83,7 +83,9 @@ namespace OpenSim.Framework /// Finished, Sim Changed FinishedViaNewSim = 1 << 28, /// Finished, Same Sim - FinishedViaSameSim = 1 << 29 + FinishedViaSameSim = 1 << 29, + /// Agent coming into the grid from another grid + ViaHGLogin = 1 << 30 } } -- cgit v1.1 From a39ea07158756a76757d4b616c60cbcedf06f268 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 19 Aug 2010 19:54:40 -0700 Subject: Finished implementing ViaLogin vs ViaHGLogin. Removed lookup on myipaddress.com. Also removed client IP verification upon UDP connection that had been left there -- we can't do that in general. --- OpenSim/Framework/NetworkUtil.cs | 82 ---------------------------------------- 1 file changed, 82 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/NetworkUtil.cs b/OpenSim/Framework/NetworkUtil.cs index 831ff70..2e94b0d 100644 --- a/OpenSim/Framework/NetworkUtil.cs +++ b/OpenSim/Framework/NetworkUtil.cs @@ -181,18 +181,10 @@ namespace OpenSim.Framework throw new ArgumentException("[NetworkUtil] Unable to resolve defaultHostname to an IPv4 address for an IPv4 client"); } - static IPAddress externalIPAddress; - static NetworkUtil() { try { - externalIPAddress = GetExternalIP(); - } - catch { /* ignore */ } - - try - { foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { foreach (UnicastIPAddressInformation address in ni.GetIPProperties().UnicastAddresses) @@ -254,79 +246,5 @@ namespace OpenSim.Framework return defaultHostname; } - public static IPAddress GetExternalIPOf(IPAddress user) - { - if (externalIPAddress == null) - return user; - - if (user.ToString() == "127.0.0.1") - { - m_log.Info("[NetworkUtil] 127.0.0.1 user detected, sending '" + externalIPAddress + "' instead of '" + user + "'"); - return externalIPAddress; - } - // 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 '" + externalIPAddress + "' instead of '" + user + "'"); - return externalIPAddress; - } - } - - // 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 user; - - 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 '" + externalIPAddress + "' instead of '" + user + "'"); - return externalIPAddress; - } - } - - // Otherwise, return user address - return user; - } - - private static IPAddress GetExternalIP() - { - string whatIsMyIp = "http://www.whatismyip.com/automation/n09230945.asp"; - WebClient wc = new WebClient(); - UTF8Encoding utf8 = new UTF8Encoding(); - string requestHtml = ""; - try - { - requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp)); - } - catch (WebException we) - { - m_log.Info("[NetworkUtil]: Exception in GetExternalIP: " + we.ToString()); - return null; - } - - IPAddress externalIp = IPAddress.Parse(requestHtml); - return externalIp; - } } } -- cgit v1.1