From 9569a3801133ec7d101b12ef425d5693ace34c89 Mon Sep 17 00:00:00 2001 From: Vladimir Krasnov Date: Mon, 8 Jan 2007 14:05:13 +0000 Subject: [PATCH] * HttpRequest.cs: fixed IsLocal, should check all ip addresses of host svn path=/trunk/mcs/; revision=70652 --- mcs/class/System.Web/System.Web/ChangeLog | 4 +++ .../System.Web/System.Web/HttpRequest.cs | 33 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/mcs/class/System.Web/System.Web/ChangeLog b/mcs/class/System.Web/System.Web/ChangeLog index b11209caa70..21f8d9365ec 100644 --- a/mcs/class/System.Web/System.Web/ChangeLog +++ b/mcs/class/System.Web/System.Web/ChangeLog @@ -1,3 +1,7 @@ +2007-01-04 Vladimir Krasnov + + * HttpRequest.cs: fixed IsLocal, should check all ip addresses of host + 2007-01-05 Marek Habersack * HttpApplicationFactory.cs: Use the new app resources compiler. diff --git a/mcs/class/System.Web/System.Web/HttpRequest.cs b/mcs/class/System.Web/System.Web/HttpRequest.cs index 96e9f053e0f..72e761f7e87 100644 --- a/mcs/class/System.Web/System.Web/HttpRequest.cs +++ b/mcs/class/System.Web/System.Web/HttpRequest.cs @@ -88,10 +88,17 @@ namespace System.Web { string [] user_languages; Uri cached_url; TempFileStream request_file; + + readonly static System.Net.IPAddress [] host_addresses; // Validations bool validate_cookies, validate_query_string, validate_form; bool checked_cookies, checked_query_string, checked_form; + + static HttpRequest () + { + host_addresses = GetLocalHostAddresses (); + } public HttpRequest (string filename, string url, string queryString) { @@ -1245,7 +1252,15 @@ namespace System.Web { get { string address = worker_request.GetRemoteAddress (); - return (address == "127.0.0.1"); + if (address == "127.0.0.1") + return true; + + System.Net.IPAddress remoteAddr = System.Net.IPAddress.Parse (address); + for (int i = 0; i < host_addresses.Length; i++) + if (remoteAddr.Equals (host_addresses [i])) + return true; + + return false; } } @@ -1378,6 +1393,22 @@ namespace System.Web { return false; } + static System.Net.IPAddress [] GetLocalHostAddresses () + { + try { + string hostName = System.Net.Dns.GetHostName (); +#if NET_2_0 + System.Net.IPAddress [] ipaddr = System.Net.Dns.GetHostAddresses (hostName); +#else + System.Net.IPAddress [] ipaddr = System.Net.Dns.GetHostByName (hostName).AddressList; +#endif + return ipaddr; + } + catch + { + return new System.Net.IPAddress[0]; + } + } } #endregion -- 2.25.1