Fix a few for TcpListenerWebSocketContext.cs
This commit is contained in:
parent
4125e4d3e1
commit
091b45c8b0
@ -510,9 +510,9 @@ namespace WebSocketSharp
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal static TcpListenerWebSocketContext GetWebSocketContext (
|
internal static TcpListenerWebSocketContext GetWebSocketContext (
|
||||||
this TcpClient client, string protocol, X509Certificate cert, bool secure, Logger logger)
|
this TcpClient client, string protocol, bool secure, X509Certificate cert, Logger logger)
|
||||||
{
|
{
|
||||||
return new TcpListenerWebSocketContext (client, protocol, cert, secure, logger);
|
return new TcpListenerWebSocketContext (client, protocol, secure, cert, logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static bool IsCompressionExtension (this string value)
|
internal static bool IsCompressionExtension (this string value)
|
||||||
|
@ -59,14 +59,12 @@ namespace WebSocketSharp.Net.WebSockets
|
|||||||
#region Internal Constructors
|
#region Internal Constructors
|
||||||
|
|
||||||
internal TcpListenerWebSocketContext (
|
internal TcpListenerWebSocketContext (
|
||||||
TcpClient client, string protocol, X509Certificate cert, bool secure, Logger logger)
|
TcpClient client, string protocol, bool secure, X509Certificate cert, Logger logger)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
||||||
_secure = secure;
|
_secure = secure;
|
||||||
_stream = WsStream.CreateServerStream (client, cert, secure);
|
_stream = WsStream.CreateServerStream (client, secure, cert);
|
||||||
_request = _stream.ReadHandshake<HandshakeRequest> (
|
_request = _stream.ReadHandshake<HandshakeRequest> (HandshakeRequest.Parse, 90000);
|
||||||
HandshakeRequest.Parse, 90000);
|
|
||||||
|
|
||||||
_websocket = new WebSocket (this, protocol, logger);
|
_websocket = new WebSocket (this, protocol, logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,8 +324,8 @@ namespace WebSocketSharp.Net.WebSockets
|
|||||||
var host = _request.Headers ["Host"];
|
var host = _request.Headers ["Host"];
|
||||||
var rawUri = _request.RequestUri;
|
var rawUri = _request.RequestUri;
|
||||||
var path = rawUri.IsAbsoluteUri
|
var path = rawUri.IsAbsoluteUri
|
||||||
? rawUri.PathAndQuery
|
? rawUri.PathAndQuery
|
||||||
: HttpUtility.UrlDecode (_request.RawUrl);
|
: HttpUtility.UrlDecode (_request.RawUrl);
|
||||||
|
|
||||||
return String.Format ("{0}://{1}{2}", scheme, host, path).ToUri ();
|
return String.Format ("{0}://{1}{2}", scheme, host, path).ToUri ();
|
||||||
}
|
}
|
||||||
@ -356,7 +354,7 @@ namespace WebSocketSharp.Net.WebSockets
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal void SetUser (
|
internal void SetUser (
|
||||||
AuthenticationSchemes expectedScheme,
|
AuthenticationSchemes scheme,
|
||||||
string realm,
|
string realm,
|
||||||
Func<IIdentity, NetworkCredential> credentialsFinder)
|
Func<IIdentity, NetworkCredential> credentialsFinder)
|
||||||
{
|
{
|
||||||
@ -364,29 +362,29 @@ namespace WebSocketSharp.Net.WebSockets
|
|||||||
if (authRes == null)
|
if (authRes == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var identity = authRes.ToIdentity ();
|
var id = authRes.ToIdentity ();
|
||||||
if (identity == null)
|
if (id == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
NetworkCredential credentials = null;
|
NetworkCredential cred = null;
|
||||||
try {
|
try {
|
||||||
credentials = credentialsFinder (identity);
|
cred = credentialsFinder (id);
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (credentials == null)
|
if (cred == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var valid = expectedScheme == AuthenticationSchemes.Basic
|
var valid = scheme == AuthenticationSchemes.Basic
|
||||||
? ((HttpBasicIdentity) identity).Password == credentials.Password
|
? ((HttpBasicIdentity) id).Password == cred.Password
|
||||||
: expectedScheme == AuthenticationSchemes.Digest
|
: scheme == AuthenticationSchemes.Digest
|
||||||
? ((HttpDigestIdentity) identity).IsValid (
|
? ((HttpDigestIdentity) id).IsValid (
|
||||||
credentials.Password, realm, _request.HttpMethod, null)
|
cred.Password, realm, _request.HttpMethod, null)
|
||||||
: false;
|
: false;
|
||||||
|
|
||||||
if (valid)
|
if (valid)
|
||||||
_user = new GenericPrincipal (identity, credentials.Roles);
|
_user = new GenericPrincipal (id, cred.Roles);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -476,7 +476,7 @@ namespace WebSocketSharp.Server
|
|||||||
ThreadPool.QueueUserWorkItem (
|
ThreadPool.QueueUserWorkItem (
|
||||||
state => {
|
state => {
|
||||||
try {
|
try {
|
||||||
var context = client.GetWebSocketContext (null, _cert, _secure, _logger);
|
var context = client.GetWebSocketContext (null, _secure, _cert, _logger);
|
||||||
if (_authSchemes != AuthenticationSchemes.Anonymous &&
|
if (_authSchemes != AuthenticationSchemes.Anonymous &&
|
||||||
!authenticateRequest (_authSchemes, context))
|
!authenticateRequest (_authSchemes, context))
|
||||||
return;
|
return;
|
||||||
|
@ -163,7 +163,7 @@ namespace WebSocketSharp
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal static WsStream CreateServerStream (
|
internal static WsStream CreateServerStream (
|
||||||
TcpClient client, X509Certificate cert, bool secure)
|
TcpClient client, bool secure, X509Certificate cert)
|
||||||
{
|
{
|
||||||
var netStream = client.GetStream ();
|
var netStream = client.GetStream ();
|
||||||
if (secure) {
|
if (secure) {
|
||||||
|
Loading…
Reference in New Issue
Block a user