[Modify] Add a host check
This commit is contained in:
parent
6d24085b7a
commit
b1883ec5f5
@ -84,6 +84,8 @@ namespace WebSocketSharp.Net
|
|||||||
var pref = new HttpListenerPrefix (uriPrefix);
|
var pref = new HttpListenerPrefix (uriPrefix);
|
||||||
|
|
||||||
var addr = convertToIPAddress (pref.Host);
|
var addr = convertToIPAddress (pref.Host);
|
||||||
|
if (!addr.IsLocal ())
|
||||||
|
throw new HttpListenerException (87, "Includes an invalid host.");
|
||||||
|
|
||||||
var port = pref.Port;
|
var port = pref.Port;
|
||||||
|
|
||||||
@ -94,26 +96,12 @@ namespace WebSocketSharp.Net
|
|||||||
if (path.IndexOf ("//", StringComparison.Ordinal) != -1)
|
if (path.IndexOf ("//", StringComparison.Ordinal) != -1)
|
||||||
throw new HttpListenerException (87, "Includes an invalid path.");
|
throw new HttpListenerException (87, "Includes an invalid path.");
|
||||||
|
|
||||||
// Listens on all the interfaces if host name cannot be parsed by IPAddress.
|
|
||||||
getEndPointListener (addr, port, pref.IsSecure, listener).AddPrefix (pref, listener);
|
getEndPointListener (addr, port, pref.IsSecure, listener).AddPrefix (pref, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IPAddress convertToIPAddress (string hostname)
|
private static IPAddress convertToIPAddress (string hostname)
|
||||||
{
|
{
|
||||||
if (hostname == "*" || hostname == "+")
|
return hostname == "*" || hostname == "+" ? IPAddress.Any : hostname.ToIPAddress ();
|
||||||
return IPAddress.Any;
|
|
||||||
|
|
||||||
IPAddress addr;
|
|
||||||
if (IPAddress.TryParse (hostname, out addr))
|
|
||||||
return addr;
|
|
||||||
|
|
||||||
try {
|
|
||||||
var host = Dns.GetHostEntry (hostname);
|
|
||||||
return host != null ? host.AddressList[0] : IPAddress.Any;
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
return IPAddress.Any;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static EndPointListener getEndPointListener (
|
private static EndPointListener getEndPointListener (
|
||||||
|
Loading…
Reference in New Issue
Block a user