Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
T
Titanium-Web-Proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Titanium-Web-Proxy
Commits
9c7e4240
Commit
9c7e4240
authored
May 14, 2017
by
Honfika
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Small cleanup
parent
ea20d43f
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
57 additions
and
63 deletions
+57
-63
ProxyTestController.cs
.../Titanium.Web.Proxy.Examples.Basic/ProxyTestController.cs
+2
-1
SslTests.cs
Tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs
+2
-6
Titanium.Web.Proxy.sln.DotSettings
Titanium.Web.Proxy.sln.DotSettings
+2
-0
StreamExtensions.cs
Titanium.Web.Proxy/Extensions/StreamExtensions.cs
+3
-3
StringExtensions.cs
Titanium.Web.Proxy/Extensions/StringExtensions.cs
+1
-6
CustomBinaryReader.cs
Titanium.Web.Proxy/Helpers/CustomBinaryReader.cs
+8
-14
CustomBufferedStream.cs
Titanium.Web.Proxy/Helpers/CustomBufferedStream.cs
+10
-10
Network.cs
Titanium.Web.Proxy/Helpers/Network.cs
+1
-1
EndPoint.cs
Titanium.Web.Proxy/Models/EndPoint.cs
+10
-10
BCCertificateMaker.cs
Titanium.Web.Proxy/Network/Certificate/BCCertificateMaker.cs
+1
-1
CertificateManager.cs
Titanium.Web.Proxy/Network/CertificateManager.cs
+4
-7
TcpConnection.cs
Titanium.Web.Proxy/Network/Tcp/TcpConnection.cs
+1
-1
ProxyServer.cs
Titanium.Web.Proxy/ProxyServer.cs
+10
-1
RequestHandler.cs
Titanium.Web.Proxy/RequestHandler.cs
+2
-2
No files found.
Examples/Titanium.Web.Proxy.Examples.Basic/ProxyTestController.cs
View file @
9c7e4240
using
System
;
using
System.Collections.Generic
;
using
System.Net
;
using
System.Security.Cryptography.X509Certificates
;
using
System.Threading.Tasks
;
using
Titanium.Web.Proxy.EventArguments
;
using
Titanium.Web.Proxy.Models
;
...
...
@@ -129,6 +128,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
"</body>"
+
"</html>"
);
}
//Redirect example
if
(
e
.
WebSession
.
Request
.
RequestUri
.
AbsoluteUri
.
Contains
(
"wikipedia.org"
))
{
...
...
@@ -144,6 +144,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
//access request body by looking up the shared dictionary using requestId
var
requestBody
=
requestBodyHistory
[
e
.
Id
];
}
//read response headers
var
responseHeaders
=
e
.
WebSession
.
Response
.
ResponseHeaders
;
...
...
Tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs
View file @
9c7e4240
using
System
;
using
Microsoft.VisualStudio.TestTools.UnitTesting
;
using
System.Net
;
using
System.Collections.Generic
;
using
System.Threading.Tasks
;
using
Titanium.Web.Proxy.EventArguments
;
using
Titanium.Web.Proxy.Models
;
...
...
@@ -28,14 +27,13 @@ namespace Titanium.Web.Proxy.IntegrationTests
{
var
response
=
client
.
GetAsync
(
new
Uri
(
testUrl
)).
Result
;
}
}
private
HttpClient
CreateHttpClient
(
string
url
,
int
localProxyPort
)
{
var
handler
=
new
HttpClientHandler
{
Proxy
=
new
WebProxy
(
string
.
Format
(
"http://localhost:{0}"
,
localProxyPort
)
,
false
),
Proxy
=
new
WebProxy
(
$"http://localhost:
{
localProxyPort
}
"
,
false
),
UseProxy
=
true
,
};
...
...
@@ -47,7 +45,7 @@ namespace Titanium.Web.Proxy.IntegrationTests
public
class
ProxyTestController
{
private
ProxyServer
proxyServer
;
private
readonly
ProxyServer
proxyServer
;
public
ProxyTestController
()
{
...
...
@@ -63,7 +61,6 @@ namespace Titanium.Web.Proxy.IntegrationTests
proxyServer
.
ClientCertificateSelectionCallback
+=
OnCertificateSelection
;
var
explicitEndPoint
=
new
ExplicitProxyEndPoint
(
IPAddress
.
Any
,
proxyPort
,
true
);
//An explicit endpoint is where the client knows about the existance of a proxy
//So client sends request in a proxy friendly manner
...
...
@@ -73,7 +70,6 @@ namespace Titanium.Web.Proxy.IntegrationTests
foreach
(
var
endPoint
in
proxyServer
.
ProxyEndPoints
)
Console
.
WriteLine
(
"Listening on '{0}' endpoint at Ip {1} and port: {2} "
,
endPoint
.
GetType
().
Name
,
endPoint
.
IpAddress
,
endPoint
.
Port
);
}
public
void
Stop
()
...
...
Titanium.Web.Proxy.sln.DotSettings
View file @
9c7e4240
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BC/@EntryIndexedValue">BC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateConstants/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=dda2ffa1_002D435c_002D4111_002D88eb_002D1a7c93c382f0/@EntryIndexedValue"><Policy><Descriptor Staticness="Static, Instance" AccessRightKinds="Private" Description="Property (private)"><ElementKinds><Kind Name="PROPERTY" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy></s:String></wpf:ResourceDictionary>
\ No newline at end of file
Titanium.Web.Proxy/Extensions/StreamExtensions.cs
View file @
9c7e4240
...
...
@@ -46,7 +46,7 @@ namespace Titanium.Web.Proxy.Extensions
while
(
totalbytesRead
<
totalBytesToRead
)
{
var
buffer
=
await
streamReader
.
ReadBytesAsync
(
b
ufferSize
,
b
ytesToRead
);
var
buffer
=
await
streamReader
.
ReadBytesAsync
(
bytesToRead
);
if
(
buffer
.
Length
==
0
)
{
...
...
@@ -81,7 +81,7 @@ namespace Titanium.Web.Proxy.Extensions
if
(
chunkSize
!=
0
)
{
var
buffer
=
await
clientStreamReader
.
ReadBytesAsync
(
bufferSize
,
chunkSize
);
var
buffer
=
await
clientStreamReader
.
ReadBytesAsync
(
chunkSize
);
await
stream
.
WriteAsync
(
buffer
,
0
,
buffer
.
Length
);
//chunk trail
await
clientStreamReader
.
ReadLineAsync
();
...
...
@@ -179,7 +179,7 @@ namespace Titanium.Web.Proxy.Extensions
if
(
chunkSize
!=
0
)
{
var
buffer
=
await
inStreamReader
.
ReadBytesAsync
(
bufferSize
,
chunkSize
);
var
buffer
=
await
inStreamReader
.
ReadBytesAsync
(
chunkSize
);
var
chunkHeadBytes
=
Encoding
.
ASCII
.
GetBytes
(
chunkSize
.
ToString
(
"x2"
));
...
...
Titanium.Web.Proxy/Extensions/StringExtensions.cs
View file @
9c7e4240
using
System
;
using
System.Collections.Generic
;
using
System.Globalization
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Globalization
;
namespace
Titanium.Web.Proxy.Extensions
{
...
...
Titanium.Web.Proxy/Helpers/CustomBinaryReader.cs
View file @
9c7e4240
...
...
@@ -19,18 +19,18 @@ namespace Titanium.Web.Proxy.Helpers
private
readonly
Encoding
encoding
;
[
ThreadStatic
]
private
static
byte
[]
staticBuffer
;
private
static
byte
[]
staticBuffer
Field
;
private
byte
[]
b
uffer
private
byte
[]
staticB
uffer
{
get
{
if
(
staticBuffer
==
null
||
staticBuffer
.
Length
!=
bufferSize
)
if
(
staticBuffer
Field
==
null
||
staticBufferField
.
Length
!=
bufferSize
)
{
staticBuffer
=
new
byte
[
bufferSize
];
staticBuffer
Field
=
new
byte
[
bufferSize
];
}
return
staticBuffer
;
return
staticBuffer
Field
;
}
}
...
...
@@ -56,7 +56,7 @@ namespace Titanium.Web.Proxy.Helpers
int
bufferDataLength
=
0
;
// try to use the thread static buffer, usually it is enough
var
buffer
=
this
.
b
uffer
;
var
buffer
=
staticB
uffer
;
while
(
stream
.
DataAvailable
||
await
stream
.
FillBufferAsync
())
{
...
...
@@ -117,22 +117,16 @@ namespace Titanium.Web.Proxy.Helpers
/// <summary>
/// Read the specified number of raw bytes from the base stream
/// </summary>
/// <param name="bufferSize"></param>
/// <param name="totalBytesToRead"></param>
/// <returns></returns>
internal
async
Task
<
byte
[
]>
ReadBytesAsync
(
int
bufferSize
,
long
totalBytesToRead
)
internal
async
Task
<
byte
[
]>
ReadBytesAsync
(
long
totalBytesToRead
)
{
int
bytesToRead
=
bufferSize
;
if
(
totalBytesToRead
<
bufferSize
)
bytesToRead
=
(
int
)
totalBytesToRead
;
var
buffer
=
this
.
buffer
;
if
(
bytesToRead
>
buffer
.
Length
)
{
buffer
=
new
byte
[
bytesToRead
];
}
var
buffer
=
staticBuffer
;
int
bytesRead
;
var
totalBytesRead
=
0
;
...
...
Titanium.Web.Proxy/Helpers/CustomBufferedStream.cs
View file @
9c7e4240
...
...
@@ -16,7 +16,7 @@ namespace Titanium.Web.Proxy.Helpers
{
private
readonly
Stream
baseStream
;
private
readonly
byte
[]
b
uffer
;
private
readonly
byte
[]
streamB
uffer
;
private
int
bufferLength
;
...
...
@@ -30,7 +30,7 @@ namespace Titanium.Web.Proxy.Helpers
public
CustomBufferedStream
(
Stream
baseStream
,
int
bufferSize
)
{
this
.
baseStream
=
baseStream
;
b
uffer
=
new
byte
[
bufferSize
];
streamB
uffer
=
new
byte
[
bufferSize
];
}
/// <summary>
...
...
@@ -84,7 +84,7 @@ namespace Titanium.Web.Proxy.Helpers
int
available
=
Math
.
Min
(
bufferLength
,
count
);
if
(
available
>
0
)
{
Buffer
.
BlockCopy
(
this
.
b
uffer
,
bufferPos
,
buffer
,
offset
,
available
);
Buffer
.
BlockCopy
(
streamB
uffer
,
bufferPos
,
buffer
,
offset
,
available
);
bufferPos
+=
available
;
bufferLength
-=
available
;
}
...
...
@@ -120,7 +120,7 @@ namespace Titanium.Web.Proxy.Helpers
if
(
bufferLength
>
0
)
{
int
available
=
Math
.
Min
(
bufferLength
,
count
);
Buffer
.
BlockCopy
(
this
.
b
uffer
,
bufferPos
,
buffer
,
offset
,
available
);
Buffer
.
BlockCopy
(
streamB
uffer
,
bufferPos
,
buffer
,
offset
,
available
);
bufferPos
+=
available
;
bufferLength
-=
available
;
return
new
ReadAsyncResult
(
available
);
...
...
@@ -167,7 +167,7 @@ namespace Titanium.Web.Proxy.Helpers
{
if
(
bufferLength
>
0
)
{
await
destination
.
WriteAsync
(
b
uffer
,
bufferPos
,
bufferLength
,
cancellationToken
);
await
destination
.
WriteAsync
(
streamB
uffer
,
bufferPos
,
bufferLength
,
cancellationToken
);
}
await
baseStream
.
CopyToAsync
(
destination
,
bufferSize
,
cancellationToken
);
...
...
@@ -256,7 +256,7 @@ namespace Titanium.Web.Proxy.Helpers
int
available
=
Math
.
Min
(
bufferLength
,
count
);
if
(
available
>
0
)
{
Buffer
.
BlockCopy
(
this
.
b
uffer
,
bufferPos
,
buffer
,
offset
,
available
);
Buffer
.
BlockCopy
(
streamB
uffer
,
bufferPos
,
buffer
,
offset
,
available
);
bufferPos
+=
available
;
bufferLength
-=
available
;
}
...
...
@@ -283,7 +283,7 @@ namespace Titanium.Web.Proxy.Helpers
}
bufferLength
--;
return
b
uffer
[
bufferPos
++];
return
streamB
uffer
[
bufferPos
++];
}
public
byte
ReadByteFromBuffer
()
...
...
@@ -294,7 +294,7 @@ namespace Titanium.Web.Proxy.Helpers
}
bufferLength
--;
return
b
uffer
[
bufferPos
++];
return
streamB
uffer
[
bufferPos
++];
}
/// <summary>
...
...
@@ -390,7 +390,7 @@ namespace Titanium.Web.Proxy.Helpers
/// </summary>
public
bool
FillBuffer
()
{
bufferLength
=
baseStream
.
Read
(
buffer
,
0
,
b
uffer
.
Length
);
bufferLength
=
baseStream
.
Read
(
streamBuffer
,
0
,
streamB
uffer
.
Length
);
bufferPos
=
0
;
return
bufferLength
>
0
;
}
...
...
@@ -411,7 +411,7 @@ namespace Titanium.Web.Proxy.Helpers
/// <returns></returns>
public
async
Task
<
bool
>
FillBufferAsync
(
CancellationToken
cancellationToken
)
{
bufferLength
=
await
baseStream
.
ReadAsync
(
buffer
,
0
,
b
uffer
.
Length
,
cancellationToken
);
bufferLength
=
await
baseStream
.
ReadAsync
(
streamBuffer
,
0
,
streamB
uffer
.
Length
,
cancellationToken
);
bufferPos
=
0
;
return
bufferLength
>
0
;
}
...
...
Titanium.Web.Proxy/Helpers/Network.cs
View file @
9c7e4240
...
...
@@ -55,7 +55,7 @@ namespace Titanium.Web.Proxy.Helpers
{
localhost
=
Dns
.
GetHostEntry
(
Dns
.
GetHostName
());
IPAddress
ipAddress
=
null
;
IPAddress
ipAddress
;
if
(
IPAddress
.
TryParse
(
hostName
,
out
ipAddress
))
isLocalhost
=
localhost
.
AddressList
.
Any
(
x
=>
x
.
Equals
(
ipAddress
));
...
...
Titanium.Web.Proxy/Models/EndPoint.cs
View file @
9c7e4240
...
...
@@ -21,9 +21,9 @@ namespace Titanium.Web.Proxy.Models
/// <param name="enableSsl"></param>
protected
ProxyEndPoint
(
IPAddress
ipAddress
,
int
port
,
bool
enableSsl
)
{
this
.
IpAddress
=
ipAddress
;
this
.
Port
=
port
;
this
.
EnableSsl
=
enableSsl
;
IpAddress
=
ipAddress
;
Port
=
port
;
EnableSsl
=
enableSsl
;
}
/// <summary>
...
...
@@ -55,8 +55,8 @@ namespace Titanium.Web.Proxy.Models
/// </summary>
public
class
ExplicitProxyEndPoint
:
ProxyEndPoint
{
internal
List
<
Regex
>
excludedHttpsHostNameRegex
;
internal
List
<
Regex
>
includedHttpsHostNameRegex
;
internal
List
<
Regex
>
ExcludedHttpsHostNameRegexList
;
internal
List
<
Regex
>
IncludedHttpsHostNameRegexList
;
internal
bool
IsSystemHttpProxy
{
get
;
set
;
}
...
...
@@ -67,7 +67,7 @@ namespace Titanium.Web.Proxy.Models
/// </summary>
public
IEnumerable
<
string
>
ExcludedHttpsHostNameRegex
{
get
{
return
excludedHttpsHostNameRegex
?.
Select
(
x
=>
x
.
ToString
()).
ToList
();
}
get
{
return
ExcludedHttpsHostNameRegexList
?.
Select
(
x
=>
x
.
ToString
()).
ToList
();
}
set
{
if
(
IncludedHttpsHostNameRegex
!=
null
)
...
...
@@ -75,7 +75,7 @@ namespace Titanium.Web.Proxy.Models
throw
new
ArgumentException
(
"Cannot set excluded when included is set"
);
}
excludedHttpsHostNameRegex
=
value
?.
Select
(
x
=>
new
Regex
(
x
,
RegexOptions
.
Compiled
)).
ToList
();
ExcludedHttpsHostNameRegexList
=
value
?.
Select
(
x
=>
new
Regex
(
x
,
RegexOptions
.
Compiled
)).
ToList
();
}
}
...
...
@@ -84,7 +84,7 @@ namespace Titanium.Web.Proxy.Models
/// </summary>
public
IEnumerable
<
string
>
IncludedHttpsHostNameRegex
{
get
{
return
includedHttpsHostNameRegex
?.
Select
(
x
=>
x
.
ToString
()).
ToList
();
}
get
{
return
IncludedHttpsHostNameRegexList
?.
Select
(
x
=>
x
.
ToString
()).
ToList
();
}
set
{
if
(
ExcludedHttpsHostNameRegex
!=
null
)
...
...
@@ -92,7 +92,7 @@ namespace Titanium.Web.Proxy.Models
throw
new
ArgumentException
(
"Cannot set included when excluded is set"
);
}
includedHttpsHostNameRegex
=
value
?.
Select
(
x
=>
new
Regex
(
x
,
RegexOptions
.
Compiled
)).
ToList
();
IncludedHttpsHostNameRegexList
=
value
?.
Select
(
x
=>
new
Regex
(
x
,
RegexOptions
.
Compiled
)).
ToList
();
}
}
...
...
@@ -136,7 +136,7 @@ namespace Titanium.Web.Proxy.Models
public
TransparentProxyEndPoint
(
IPAddress
ipAddress
,
int
port
,
bool
enableSsl
)
:
base
(
ipAddress
,
port
,
enableSsl
)
{
this
.
GenericCertificateName
=
"localhost"
;
GenericCertificateName
=
"localhost"
;
}
}
...
...
Titanium.Web.Proxy/Network/Certificate/BCCertificateMaker.cs
View file @
9c7e4240
...
...
@@ -181,7 +181,7 @@ namespace Titanium.Web.Proxy.Network.Certificate
}
});
manualResetEvent
.
Wait
(
TimeSpan
.
FromMinutes
(
1
),
cancellationToken
:
cancellationToken
);
manualResetEvent
.
Wait
(
TimeSpan
.
FromMinutes
(
1
),
cancellationToken
);
}
return
certificate
;
...
...
Titanium.Web.Proxy/Network/CertificateManager.cs
View file @
9c7e4240
...
...
@@ -204,14 +204,13 @@ namespace Titanium.Web.Proxy.Network
/// <summary>
/// Trusts the root certificate.
/// </summary>
/// <param name="exceptionFunc"></param>
internal
void
TrustRootCertificate
(
Action
<
Exception
>
exceptionFunc
)
internal
void
TrustRootCertificate
()
{
//current user
TrustRootCertificate
(
StoreLocation
.
CurrentUser
,
exceptionFunc
);
TrustRootCertificate
(
StoreLocation
.
CurrentUser
);
//current system
TrustRootCertificate
(
StoreLocation
.
LocalMachine
,
exceptionFunc
);
TrustRootCertificate
(
StoreLocation
.
LocalMachine
);
}
/// <summary>
...
...
@@ -300,10 +299,8 @@ namespace Titanium.Web.Proxy.Network
/// Make current machine trust the Root Certificate used by this proxy
/// </summary>
/// <param name="storeLocation"></param>
/// <param name="exceptionFunc"></param>
/// <returns></returns>
internal
void
TrustRootCertificate
(
StoreLocation
storeLocation
,
Action
<
Exception
>
exceptionFunc
)
internal
void
TrustRootCertificate
(
StoreLocation
storeLocation
)
{
if
(
RootCertificate
==
null
)
{
...
...
Titanium.Web.Proxy/Network/Tcp/TcpConnection.cs
View file @
9c7e4240
...
...
@@ -16,6 +16,7 @@ namespace Titanium.Web.Proxy.Network.Tcp
internal
ExternalProxy
UpStreamHttpsProxy
{
get
;
set
;
}
internal
string
HostName
{
get
;
set
;
}
internal
int
Port
{
get
;
set
;
}
internal
bool
IsHttps
{
get
;
set
;
}
...
...
@@ -58,7 +59,6 @@ namespace Titanium.Web.Proxy.Network.Tcp
TcpClient
.
LingerState
=
new
LingerOption
(
true
,
0
);
TcpClient
.
Close
();
}
}
}
Titanium.Web.Proxy/ProxyServer.cs
View file @
9c7e4240
...
...
@@ -264,6 +264,15 @@ namespace Titanium.Web.Proxy
#endif
certificateManager
=
new
CertificateManager
(
ExceptionFunc
);
if
(
rootCertificateName
!=
null
)
{
RootCertificateName
=
rootCertificateName
;
}
if
(
rootCertificateIssuerName
!=
null
)
{
RootCertificateIssuerName
=
rootCertificateIssuerName
;
}
}
/// <summary>
...
...
@@ -556,7 +565,7 @@ namespace Titanium.Web.Proxy
if
(
TrustRootCertificate
)
{
certificateManager
.
TrustRootCertificate
(
ExceptionFunc
);
certificateManager
.
TrustRootCertificate
();
}
}
}
...
...
Titanium.Web.Proxy/RequestHandler.cs
View file @
9c7e4240
...
...
@@ -75,12 +75,12 @@ namespace Titanium.Web.Proxy
if
(
endPoint
.
ExcludedHttpsHostNameRegex
!=
null
)
{
excluded
=
endPoint
.
excludedHttpsHostNameRegex
.
Any
(
x
=>
x
.
IsMatch
(
httpRemoteUri
.
Host
));
excluded
=
endPoint
.
ExcludedHttpsHostNameRegexList
.
Any
(
x
=>
x
.
IsMatch
(
httpRemoteUri
.
Host
));
}
if
(
endPoint
.
IncludedHttpsHostNameRegex
!=
null
)
{
excluded
=
!
endPoint
.
includedHttpsHostNameRegex
.
Any
(
x
=>
x
.
IsMatch
(
httpRemoteUri
.
Host
));
excluded
=
!
endPoint
.
IncludedHttpsHostNameRegexList
.
Any
(
x
=>
x
.
IsMatch
(
httpRemoteUri
.
Host
));
}
List
<
HttpHeader
>
connectRequestHeaders
=
null
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment