also expose the request client IP as seen by server port
parent
e0ba96055c
commit
b419f71a68
|
@ -55,6 +55,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
Dictionary<string, string> QueryAsDictionary { get; } //faster than Query
|
||||
string RawUrl { get; }
|
||||
IPEndPoint RemoteIPEndPoint { get; }
|
||||
IPEndPoint LocalIPEndPoint { get; }
|
||||
Uri Url { get; }
|
||||
string UserAgent { get; }
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ namespace OSHttpServer
|
|||
/// </summary>
|
||||
public event EventHandler Started;
|
||||
|
||||
public IPEndPoint LocalRemoteEndPoint {get; set;}
|
||||
public IPEndPoint LocalIPEndPoint {get; set;}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="HttpClientContext"/> class.
|
||||
|
@ -107,7 +107,7 @@ namespace OSHttpServer
|
|||
if (!stream.CanWrite || !stream.CanRead)
|
||||
throw new ArgumentException("Stream must be writable and readable.");
|
||||
|
||||
LocalRemoteEndPoint = remoteEndPoint;
|
||||
LocalIPEndPoint = remoteEndPoint;
|
||||
_log = NullLogWriter.Instance;
|
||||
m_parser = parserFactory.CreateParser(_log);
|
||||
m_parser.RequestCompleted += OnRequestCompleted;
|
||||
|
@ -186,8 +186,8 @@ namespace OSHttpServer
|
|||
m_currentRequest.Method = e.HttpMethod;
|
||||
m_currentRequest.HttpVersion = e.HttpVersion;
|
||||
m_currentRequest.UriPath = e.UriPath;
|
||||
m_currentRequest.AddHeader("remote_addr", LocalRemoteEndPoint.Address.ToString());
|
||||
m_currentRequest.AddHeader("remote_port", LocalRemoteEndPoint.Port.ToString());
|
||||
m_currentRequest.AddHeader("remote_addr", LocalIPEndPoint.Address.ToString());
|
||||
m_currentRequest.AddHeader("remote_port", LocalIPEndPoint.Port.ToString());
|
||||
|
||||
FirstRequestLineReceived = true;
|
||||
TriggerKeepalive = false;
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace OSHttpServer
|
|||
|
||||
context.Stream = stream;
|
||||
context.IsSecured = isSecured;
|
||||
context.LocalRemoteEndPoint = endPoint;
|
||||
context.LocalIPEndPoint = endPoint;
|
||||
ContextTimeoutManager.StartMonitoringContext(context);
|
||||
m_activeContexts[context.contextID] = context;
|
||||
context.Start();
|
||||
|
|
|
@ -271,6 +271,8 @@ namespace OSHttpServer
|
|||
Cookies = cookies;
|
||||
}
|
||||
|
||||
public IPEndPoint LocalIPEndPoint { get {return m_context.LocalIPEndPoint; }}
|
||||
|
||||
public IPEndPoint RemoteIPEndPoint
|
||||
{
|
||||
get
|
||||
|
@ -280,7 +282,7 @@ namespace OSHttpServer
|
|||
string addr = m_headers["x-forwarded-for"];
|
||||
if(!string.IsNullOrEmpty(addr))
|
||||
{
|
||||
int port = m_context.LocalRemoteEndPoint.Port;
|
||||
int port = m_context.LocalIPEndPoint.Port;
|
||||
try
|
||||
{
|
||||
m_remoteIPEndPoint = new IPEndPoint(IPAddress.Parse(addr), port);
|
||||
|
@ -292,7 +294,7 @@ namespace OSHttpServer
|
|||
}
|
||||
}
|
||||
if (m_remoteIPEndPoint == null)
|
||||
m_remoteIPEndPoint = m_context.LocalRemoteEndPoint;
|
||||
m_remoteIPEndPoint = m_context.LocalIPEndPoint;
|
||||
|
||||
return m_remoteIPEndPoint;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace OSHttpServer
|
|||
/// </summary>
|
||||
string SSLCommonName { get; }
|
||||
|
||||
IPEndPoint LocalRemoteEndPoint {get; set;}
|
||||
IPEndPoint LocalIPEndPoint {get; set;}
|
||||
|
||||
/// <summary>
|
||||
/// Using SSL or other encryption method.
|
||||
|
|
|
@ -136,6 +136,7 @@ namespace OSHttpServer
|
|||
/// <param name="cookies">The cookies.</param>
|
||||
void SetCookies(RequestCookies cookies);
|
||||
|
||||
IPEndPoint LocalIPEndPoint { get; }
|
||||
IPEndPoint RemoteIPEndPoint { get; }
|
||||
}
|
||||
}
|
|
@ -165,7 +165,15 @@ namespace OpenSim.Tests.Common
|
|||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException ();
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public IPEndPoint LocalIPEndPoint
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue