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
4c563ee8
Unverified
Commit
4c563ee8
authored
Aug 06, 2018
by
justcoding121
Committed by
GitHub
Aug 06, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #475 from justcoding121/master
Beta
parents
30782eac
81feeb2b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
52 changed files
with
318 additions
and
143 deletions
+318
-143
SessionEventArgsBase.cs
Titanium.Web.Proxy/EventArguments/SessionEventArgsBase.cs
+7
-0
TcpExtensions.cs
Titanium.Web.Proxy/Extensions/TcpExtensions.cs
+41
-24
RunTime.cs
Titanium.Web.Proxy/Helpers/RunTime.cs
+9
-0
CertificateManager.cs
Titanium.Web.Proxy/Network/CertificateManager.cs
+8
-5
TcpClientConnection.cs
Titanium.Web.Proxy/Network/Tcp/TcpClientConnection.cs
+11
-2
TcpConnectionFactory.cs
Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs
+10
-44
TcpServerConnection.cs
Titanium.Web.Proxy/Network/Tcp/TcpServerConnection.cs
+12
-3
ProxyServer.cs
Titanium.Web.Proxy/ProxyServer.cs
+34
-15
RequestHandler.cs
Titanium.Web.Proxy/RequestHandler.cs
+6
-0
ResponseHandler.cs
Titanium.Web.Proxy/ResponseHandler.cs
+4
-1
Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html
...itanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html
+1
-1
Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html
....Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html
+1
-1
Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html
...b.Proxy.EventArguments.CertificateSelectionEventArgs.html
+1
-1
Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html
....Proxy.EventArguments.CertificateValidationEventArgs.html
+1
-1
Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html
...oxy.EventArguments.MultipartRequestPartSentEventArgs.html
+1
-1
Titanium.Web.Proxy.EventArguments.SessionEventArgs.html
...i/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html
+4
-1
Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html
...tanium.Web.Proxy.EventArguments.SessionEventArgsBase.html
+27
-1
Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html
...b.Proxy.EventArguments.TunnelConnectSessionEventArgs.html
+4
-1
Titanium.Web.Proxy.EventArguments.html
docs/api/Titanium.Web.Proxy.EventArguments.html
+1
-1
Titanium.Web.Proxy.ExceptionHandler.html
docs/api/Titanium.Web.Proxy.ExceptionHandler.html
+1
-1
Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html
.../Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html
+1
-1
Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html
...ium.Web.Proxy.Exceptions.ProxyAuthorizationException.html
+1
-1
Titanium.Web.Proxy.Exceptions.ProxyException.html
docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html
+1
-1
Titanium.Web.Proxy.Exceptions.ProxyHttpException.html
...api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html
+1
-1
Titanium.Web.Proxy.Exceptions.html
docs/api/Titanium.Web.Proxy.Exceptions.html
+1
-1
Titanium.Web.Proxy.Http.ConnectRequest.html
docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html
+1
-1
Titanium.Web.Proxy.Http.ConnectResponse.html
docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html
+1
-1
Titanium.Web.Proxy.Http.HeaderCollection.html
docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html
+1
-1
Titanium.Web.Proxy.Http.HttpWebClient.html
docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html
+1
-1
Titanium.Web.Proxy.Http.KnownHeaders.html
docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html
+1
-1
Titanium.Web.Proxy.Http.Request.html
docs/api/Titanium.Web.Proxy.Http.Request.html
+1
-1
Titanium.Web.Proxy.Http.RequestResponseBase.html
docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html
+1
-1
Titanium.Web.Proxy.Http.Response.html
docs/api/Titanium.Web.Proxy.Http.Response.html
+1
-1
Titanium.Web.Proxy.Http.Responses.GenericResponse.html
...pi/Titanium.Web.Proxy.Http.Responses.GenericResponse.html
+1
-1
Titanium.Web.Proxy.Http.Responses.OkResponse.html
docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html
+1
-1
Titanium.Web.Proxy.Http.Responses.RedirectResponse.html
...i/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html
+1
-1
Titanium.Web.Proxy.Http.Responses.html
docs/api/Titanium.Web.Proxy.Http.Responses.html
+1
-1
Titanium.Web.Proxy.Http.html
docs/api/Titanium.Web.Proxy.Http.html
+1
-1
Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html
.../api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html
+1
-1
Titanium.Web.Proxy.Models.ExternalProxy.html
docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html
+1
-1
Titanium.Web.Proxy.Models.HttpHeader.html
docs/api/Titanium.Web.Proxy.Models.HttpHeader.html
+1
-1
Titanium.Web.Proxy.Models.ProxyEndPoint.html
docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html
+1
-1
Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html
...i/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html
+1
-1
Titanium.Web.Proxy.Models.html
docs/api/Titanium.Web.Proxy.Models.html
+1
-1
Titanium.Web.Proxy.Network.CertificateEngine.html
docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html
+5
-3
Titanium.Web.Proxy.Network.CertificateManager.html
docs/api/Titanium.Web.Proxy.Network.CertificateManager.html
+1
-1
Titanium.Web.Proxy.Network.html
docs/api/Titanium.Web.Proxy.Network.html
+1
-1
Titanium.Web.Proxy.ProxyServer.html
docs/api/Titanium.Web.Proxy.ProxyServer.html
+55
-1
Titanium.Web.Proxy.html
docs/api/Titanium.Web.Proxy.html
+1
-1
index.json
docs/index.json
+5
-5
docfx.vendor.js
docs/styles/docfx.vendor.js
+3
-3
xrefmap.yml
docs/xrefmap.yml
+39
-0
No files found.
Titanium.Web.Proxy/EventArguments/SessionEventArgsBase.cs
View file @
4c563ee8
using
System
;
using
System.Collections.Generic
;
using
System.Net
;
using
System.Threading
;
using
StreamExtended
;
...
...
@@ -25,6 +26,11 @@ namespace Titanium.Web.Proxy.EventArguments
protected
readonly
IBufferPool
bufferPool
;
protected
readonly
ExceptionHandler
exceptionFunc
;
/// <summary>
/// Relative milliseconds for various events.
/// </summary>
public
Dictionary
<
string
,
DateTime
>
TimeLine
{
get
;
set
;
}
=
new
Dictionary
<
string
,
DateTime
>();
/// <summary>
/// Initializes a new instance of the <see cref="SessionEventArgsBase" /> class.
/// </summary>
...
...
@@ -34,6 +40,7 @@ namespace Titanium.Web.Proxy.EventArguments
bufferSize
=
server
.
BufferSize
;
bufferPool
=
server
.
BufferPool
;
exceptionFunc
=
server
.
ExceptionFunc
;
TimeLine
[
"Session Created"
]
=
DateTime
.
Now
;
}
protected
SessionEventArgsBase
(
ProxyServer
server
,
ProxyEndPoint
endPoint
,
...
...
Titanium.Web.Proxy/Extensions/TcpExtensions.cs
View file @
4c563ee8
...
...
@@ -6,46 +6,63 @@ namespace Titanium.Web.Proxy.Extensions
{
internal
static
class
TcpExtensions
{
private
static
readonly
Func
<
Socket
,
bool
>
socketCleanedUpGetter
;
static
TcpExtensions
()
internal
static
void
CloseSocket
(
this
TcpClient
tcpClient
)
{
var
property
=
typeof
(
Socket
).
GetProperty
(
"CleanedUp"
,
BindingFlags
.
NonPublic
|
BindingFlags
.
Instance
);
if
(
property
!=
null
)
if
(
tcpClient
==
null
)
{
return
;
}
try
{
var
method
=
property
.
GetMethod
;
if
(
method
!=
null
&&
method
.
ReturnType
==
typeof
(
bool
))
{
socketCleanedUpGetter
=
(
Func
<
Socket
,
bool
>)
Delegate
.
CreateDelegate
(
typeof
(
Func
<
Socket
,
bool
>),
method
);
}
tcpClient
.
Close
();
}
catch
{
// ignored
}
}
internal
static
void
CloseSocket
(
this
TcpClient
tcpClient
)
/// <summary>
/// Check if a TcpClient is good to be used.
/// This only checks if send is working so local socket is still connected.
/// Receive can only be verified by doing a valid read from server without exceptions.
/// So in our case we should retry with new connection from pool if first read after getting the connection fails.
/// https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.connected(v=vs.110).aspx
/// </summary>
/// <param name="client"></param>
/// <returns></returns>
internal
static
bool
IsGoodConnection
(
this
TcpClient
client
)
{
if
(
tcpClient
==
null
)
var
socket
=
client
.
Client
;
if
(!
client
.
Connected
||
!
socket
.
Connected
)
{
return
;
return
false
;
}
// This is how you can determine whether a socket is still connected.
bool
blockingState
=
socket
.
Blocking
;
try
{
// This line is important!
// contributors please don't remove it without discussion
// It helps to avoid eventual deterioration of performance due to TCP port exhaustion
// due to default TCP CLOSE_WAIT timeout for 4 minutes
if
(
socketCleanedUpGetter
==
null
||
!
socketCleanedUpGetter
(
tcpClient
.
Client
))
{
tcpClient
.
LingerState
=
new
LingerOption
(
true
,
0
);
}
var
tmp
=
new
byte
[
1
];
tcpClient
.
Close
();
socket
.
Blocking
=
false
;
socket
.
Send
(
tmp
,
0
,
0
);
//Connected.
}
catch
{
// ignored
//Should we let 10035 == WSAEWOULDBLOCK as valid connection?
return
false
;
}
finally
{
socket
.
Blocking
=
blockingState
;
}
return
true
;
}
}
}
Titanium.Web.Proxy/Helpers/RunTime.cs
View file @
4c563ee8
...
...
@@ -23,6 +23,9 @@ namespace Titanium.Web.Proxy.Helpers
/// <returns></returns>
private
static
readonly
Lazy
<
bool
>
isRunningOnWindows
=
new
Lazy
<
bool
>(()
=>
RuntimeInformation
.
IsOSPlatform
(
OSPlatform
.
Windows
));
private
static
readonly
Lazy
<
bool
>
isRunningOnLinux
=
new
Lazy
<
bool
>(()
=>
RuntimeInformation
.
IsOSPlatform
(
OSPlatform
.
Linux
));
#endif
/// <summary>
...
...
@@ -30,6 +33,12 @@ private static readonly Lazy<bool> isRunningOnWindows
/// </summary>
internal
static
bool
IsRunningOnMono
=>
isRunningOnMono
.
Value
;
#if NETSTANDARD2_0
internal
static
bool
IsLinux
=>
isRunningOnLinux
.
Value
;
#else
internal
static
bool
IsLinux
=>
!
IsWindows
;
#endif
#if NETSTANDARD2_0
internal
static
bool
IsWindows
=>
isRunningOnWindows
.
Value
;
#else
...
...
Titanium.Web.Proxy/Network/CertificateManager.cs
View file @
4c563ee8
...
...
@@ -19,14 +19,17 @@ namespace Titanium.Web.Proxy.Network
public
enum
CertificateEngine
{
/// <summary>
/// Uses Windows Certification Generation API.
/// Uses BouncyCastle 3rd party library.
/// Default.
/// </summary>
DefaultWindows
=
0
,
BouncyCastle
=
0
,
/// <summary>
/// Uses BouncyCastle 3rd party library.
/// Uses Windows Certification Generation API.
/// Bug #468 Reported.
/// </summary>
BouncyCastle
=
1
DefaultWindows
=
1
}
/// <summary>
...
...
@@ -93,7 +96,7 @@ namespace Titanium.Web.Proxy.Network
RootCertificateIssuerName
=
rootCertificateIssuerName
;
}
CertificateEngine
=
RunTime
.
IsWindows
?
CertificateEngine
.
DefaultWindows
:
CertificateEngine
.
BouncyCastle
;
CertificateEngine
=
CertificateEngine
.
BouncyCastle
;
certificateCache
=
new
ConcurrentDictionary
<
string
,
CachedCertificate
>();
pendingCertificateCreationTasks
=
new
ConcurrentDictionary
<
string
,
Task
<
X509Certificate2
>>();
...
...
Titanium.Web.Proxy/Network/Tcp/TcpClientConnection.cs
View file @
4c563ee8
...
...
@@ -5,6 +5,7 @@ using System.Net;
using
System.Net.Security
;
#endif
using
System.Net.Sockets
;
using
System.Threading.Tasks
;
using
Titanium.Web.Proxy.Extensions
;
namespace
Titanium.Web.Proxy.Network.Tcp
...
...
@@ -43,8 +44,16 @@ namespace Titanium.Web.Proxy.Network.Tcp
/// </summary>
public
void
Dispose
()
{
proxyServer
.
UpdateClientConnectionCount
(
false
);
tcpClient
.
CloseSocket
();
Task
.
Run
(
async
()
=>
{
//delay calling tcp connection close()
//so that client have enough time to call close first.
//This way we can push tcp Time_Wait to client side when possible.
await
Task
.
Delay
(
1000
);
proxyServer
.
UpdateClientConnectionCount
(
false
);
tcpClient
.
CloseSocket
();
});
}
}
}
Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs
View file @
4c563ee8
...
...
@@ -191,7 +191,7 @@ namespace Titanium.Web.Proxy.Network.Tcp
var
cutOff
=
DateTime
.
Now
.
AddSeconds
(-
1
*
proxyServer
.
ConnectionTimeOutSeconds
+
3
);
if
(
recentConnection
.
LastAccess
>
cutOff
&&
isGoodConnection
(
recentConnection
.
TcpClient
))
&&
recentConnection
.
TcpClient
.
IsGoodConnection
(
))
{
return
recentConnection
;
}
...
...
@@ -272,8 +272,15 @@ namespace Titanium.Web.Proxy.Network.Tcp
ReceiveTimeout
=
proxyServer
.
ConnectionTimeOutSeconds
*
1000
,
SendTimeout
=
proxyServer
.
ConnectionTimeOutSeconds
*
1000
,
SendBufferSize
=
proxyServer
.
BufferSize
,
ReceiveBufferSize
=
proxyServer
.
BufferSize
};
ReceiveBufferSize
=
proxyServer
.
BufferSize
,
LingerState
=
new
LingerOption
(
true
,
proxyServer
.
TcpTimeWaitSeconds
)
};
//linux has a bug with socket reuse in .net core.
if
(
proxyServer
.
ReuseSocket
&&
!
RunTime
.
IsLinux
)
{
tcpClient
.
Client
.
SetSocketOption
(
SocketOptionLevel
.
Socket
,
SocketOptionName
.
ReuseAddress
,
true
);
}
// If this proxy uses another external proxy then create a tunnel request for HTTP/HTTPS connections
if
(
useUpstreamProxy
)
...
...
@@ -501,47 +508,6 @@ namespace Titanium.Web.Proxy.Network.Tcp
}
}
/// <summary>
/// Check if a TcpClient is good to be used.
/// This only checks if send is working so local socket is still connected.
/// Receive can only be verified by doing a valid read from server without exceptions.
/// So in our case we should retry with new connection from pool if first read after getting the connection fails.
/// https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.connected(v=vs.110).aspx
/// </summary>
/// <param name="client"></param>
/// <returns></returns>
private
static
bool
isGoodConnection
(
TcpClient
client
)
{
var
socket
=
client
.
Client
;
if
(!
client
.
Connected
||
!
socket
.
Connected
)
{
return
false
;
}
// This is how you can determine whether a socket is still connected.
bool
blockingState
=
socket
.
Blocking
;
try
{
var
tmp
=
new
byte
[
1
];
socket
.
Blocking
=
false
;
socket
.
Send
(
tmp
,
0
,
0
);
//Connected.
}
catch
{
//Should we let 10035 == WSAEWOULDBLOCK as valid connection?
return
false
;
}
finally
{
socket
.
Blocking
=
blockingState
;
}
return
true
;
}
public
void
Dispose
()
{
runCleanUpTask
=
false
;
...
...
Titanium.Web.Proxy/Network/Tcp/TcpServerConnection.cs
View file @
4c563ee8
...
...
@@ -4,6 +4,7 @@ using System.Net;
using
System.Net.Security
;
#endif
using
System.Net.Sockets
;
using
System.Threading.Tasks
;
using
StreamExtended.Network
;
using
Titanium.Web.Proxy.Extensions
;
using
Titanium.Web.Proxy.Helpers
;
...
...
@@ -85,9 +86,17 @@ namespace Titanium.Web.Proxy.Network.Tcp
/// </summary>
public
void
Dispose
()
{
proxyServer
.
UpdateServerConnectionCount
(
false
);
Stream
?.
Dispose
();
tcpClient
.
CloseSocket
();
Task
.
Run
(
async
()
=>
{
//delay calling tcp connection close()
//so that server have enough time to call close first.
//This way we can push tcp Time_Wait to server side when possible.
await
Task
.
Delay
(
1000
);
proxyServer
.
UpdateServerConnectionCount
(
false
);
Stream
?.
Dispose
();
tcpClient
.
CloseSocket
();
});
}
}
}
Titanium.Web.Proxy/ProxyServer.cs
View file @
4c563ee8
...
...
@@ -178,7 +178,6 @@ namespace Titanium.Web.Proxy
/// </summary>
public
int
ConnectionTimeOutSeconds
{
get
;
set
;
}
/// <summary>
/// Maximum number of concurrent connections per remote host in cache.
/// Only valid when connection pooling is enabled.
...
...
@@ -186,6 +185,18 @@ namespace Titanium.Web.Proxy
/// </summary>
public
int
MaxCachedConnections
{
get
;
set
;
}
=
2
;
/// <summary>
/// Number of seconds to linger when Tcp connection is in TIME_WAIT state.
/// Default value is 30.
/// </summary>
public
int
TcpTimeWaitSeconds
{
get
;
set
;
}
=
30
;
/// <summary>
/// Should we reuse client/server tcp sockets.
/// Default is true (false for linux due to bug in .Net core).
/// </summary>
public
bool
ReuseSocket
{
get
;
set
;
}
=
true
;
/// <summary>
/// Total number of active client connections.
/// </summary>
...
...
@@ -282,20 +293,6 @@ namespace Titanium.Web.Proxy
/// </summary>
public
IEnumerable
<
string
>
ProxyAuthenticationSchemes
{
get
;
set
;
}
=
new
string
[
0
];
/// <summary>
/// Dispose the Proxy instance.
/// </summary>
public
void
Dispose
()
{
if
(
ProxyRunning
)
{
Stop
();
}
CertificateManager
?.
Dispose
();
BufferPool
?.
Dispose
();
}
/// <summary>
/// Event occurs when client connection count changed.
/// </summary>
...
...
@@ -619,6 +616,13 @@ namespace Titanium.Web.Proxy
private
void
listen
(
ProxyEndPoint
endPoint
)
{
endPoint
.
Listener
=
new
TcpListener
(
endPoint
.
IpAddress
,
endPoint
.
Port
);
//linux has a bug with socket reuse in .net core.
if
(
ReuseSocket
&&
!
RunTime
.
IsLinux
)
{
endPoint
.
Listener
.
Server
.
SetSocketOption
(
SocketOptionLevel
.
Socket
,
SocketOptionName
.
ReuseAddress
,
true
);
}
try
{
endPoint
.
Listener
.
Start
();
...
...
@@ -718,6 +722,7 @@ namespace Titanium.Web.Proxy
tcpClient
.
SendTimeout
=
ConnectionTimeOutSeconds
*
1000
;
tcpClient
.
SendBufferSize
=
BufferSize
;
tcpClient
.
ReceiveBufferSize
=
BufferSize
;
tcpClient
.
LingerState
=
new
LingerOption
(
true
,
TcpTimeWaitSeconds
);
await
InvokeConnectionCreateEvent
(
tcpClient
,
true
);
...
...
@@ -824,5 +829,19 @@ namespace Titanium.Web.Proxy
{
return
new
RetryPolicy
<
T
>(
retries
,
tcpConnectionFactory
);
}
/// <summary>
/// Dispose the Proxy instance.
/// </summary>
public
void
Dispose
()
{
if
(
ProxyRunning
)
{
Stop
();
}
CertificateManager
?.
Dispose
();
BufferPool
?.
Dispose
();
}
}
}
Titanium.Web.Proxy/RequestHandler.cs
View file @
4c563ee8
...
...
@@ -165,6 +165,8 @@ namespace Titanium.Web.Proxy
//we need this to syphon out data from connection if API user changes them.
request
.
SetOriginalHeaders
();
args
.
TimeLine
[
"Request Received"
]
=
DateTime
.
Now
;
// If user requested interception do it
await
invokeBeforeRequest
(
args
);
...
...
@@ -213,6 +215,8 @@ namespace Titanium.Web.Proxy
//for connection pool, retry fails until cache is exhausted.
var
result
=
await
retryPolicy
<
ServerConnectionException
>().
ExecuteAsync
(
async
(
serverConnection
)
=>
{
args
.
TimeLine
[
"Server Connection Created"
]
=
DateTime
.
Now
;
// if upgrading to websocket then relay the request without reading the contents
if
(
request
.
UpgradeToWebSocket
)
{
...
...
@@ -378,6 +382,8 @@ namespace Titanium.Web.Proxy
{
await
handleHttpSessionResponse
(
args
);
}
args
.
TimeLine
[
"Response Sent"
]
=
DateTime
.
Now
;
}
/// <summary>
...
...
Titanium.Web.Proxy/ResponseHandler.cs
View file @
4c563ee8
using
System.Net
;
using
System
;
using
System.Net
;
using
System.Threading.Tasks
;
using
Titanium.Web.Proxy.EventArguments
;
using
Titanium.Web.Proxy.Extensions
;
...
...
@@ -23,6 +24,8 @@ namespace Titanium.Web.Proxy
// read response & headers from server
await
args
.
WebSession
.
ReceiveResponse
(
cancellationToken
);
args
.
TimeLine
[
"Response Received"
]
=
DateTime
.
Now
;
var
response
=
args
.
WebSession
.
Response
;
args
.
ReRequest
=
false
;
...
...
docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Delegate AsyncEventHandler<TEventArgs>
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class BeforeSslAuthenticateEventArgs
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class CertificateSelectionEventArgs
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class CertificateValidationEventArgs
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class MultipartRequestPartSentEventArgs
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class SessionEventArgs
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
@@ -111,6 +111,9 @@ or when server terminates connection from proxy.</p>
<div>
<a
class=
"xref"
href=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_exceptionFunc"
>
SessionEventArgsBase.exceptionFunc
</a>
</div>
<div>
<a
class=
"xref"
href=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_TimeLine"
>
SessionEventArgsBase.TimeLine
</a>
</div>
<div>
<a
class=
"xref"
href=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_UserData"
>
SessionEventArgsBase.UserData
</a>
</div>
...
...
docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class SessionEventArgsBase
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
@@ -412,6 +412,32 @@ or when server terminates connection from proxy.</p>
</table>
<a
id=
"Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_TimeLine_"
data-uid=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine*"
></a>
<h4
id=
"Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_TimeLine"
data-uid=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine"
>
TimeLine
</h4>
<div
class=
"markdown level1 summary"
><p>
Relative milliseconds for various events.
</p>
</div>
<div
class=
"markdown level1 conceptual"
></div>
<h5
class=
"decalaration"
>
Declaration
</h5>
<div
class=
"codewrapper"
>
<pre><code
class=
"lang-csharp hljs"
>
public Dictionary
<
string, DateTime
>
TimeLine { get; set; }
</code></pre>
</div>
<h5
class=
"propertyValue"
>
Property Value
</h5>
<table
class=
"table table-bordered table-striped table-condensed"
>
<thead>
<tr>
<th>
Type
</th>
<th>
Description
</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
class=
"xref"
href=
"https://docs.microsoft.com/dotnet/api/system.collections.generic.dictionary-2"
>
Dictionary
</a>
<
<a
class=
"xref"
href=
"https://docs.microsoft.com/dotnet/api/system.string"
>
String
</a>
,
<a
class=
"xref"
href=
"https://docs.microsoft.com/dotnet/api/system.datetime"
>
DateTime
</a>
>
</td>
<td></td>
</tr>
</tbody>
</table>
<a
id=
"Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_UserData_"
data-uid=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.UserData*"
></a>
<h4
id=
"Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_UserData"
data-uid=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.UserData"
>
UserData
</h4>
<div
class=
"markdown level1 summary"
><p>
Returns a user data for this request/response session which is
...
...
docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class TunnelConnectSessionEventArgs
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
@@ -108,6 +108,9 @@
<div>
<a
class=
"xref"
href=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_exceptionFunc"
>
SessionEventArgsBase.exceptionFunc
</a>
</div>
<div>
<a
class=
"xref"
href=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_TimeLine"
>
SessionEventArgsBase.TimeLine
</a>
</div>
<div>
<a
class=
"xref"
href=
"Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_UserData"
>
SessionEventArgsBase.UserData
</a>
</div>
...
...
docs/api/Titanium.Web.Proxy.EventArguments.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Namespace Titanium.Web.Proxy.EventArguments
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.ExceptionHandler.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Delegate ExceptionHandler
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class BodyNotFoundException
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ProxyAuthorizationException
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ProxyException
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ProxyHttpException
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Exceptions.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Namespace Titanium.Web.Proxy.Exceptions
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ConnectRequest
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ConnectResponse
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class HeaderCollection
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class HttpWebClient
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class KnownHeaders
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.Request.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class Request
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class RequestResponseBase
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.Response.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class Response
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class GenericResponse
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class OkResponse
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class RedirectResponse
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.Responses.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Namespace Titanium.Web.Proxy.Http.Responses
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Http.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Namespace Titanium.Web.Proxy.Http
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ExplicitProxyEndPoint
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ExternalProxy
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Models.HttpHeader.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class HttpHeader
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ProxyEndPoint
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class TransparentProxyEndPoint
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Models.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Namespace Titanium.Web.Proxy.Models
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Enum CertificateEngine
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
@@ -104,12 +104,14 @@
<tbody>
<tr>
<td
id=
"Titanium_Web_Proxy_Network_CertificateEngine_BouncyCastle"
>
BouncyCastle
</td>
<td><p>
Uses BouncyCastle 3rd party library.
</p>
<td><p>
Uses BouncyCastle 3rd party library.
Default.
</p>
</td>
</tr>
<tr>
<td
id=
"Titanium_Web_Proxy_Network_CertificateEngine_DefaultWindows"
>
DefaultWindows
</td>
<td><p>
Uses Windows Certification Generation API.
</p>
<td><p>
Uses Windows Certification Generation API.
Bug #468 Reported.
</p>
</td>
</tr>
</tbody>
...
...
docs/api/Titanium.Web.Proxy.Network.CertificateManager.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class CertificateManager
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.Network.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Namespace Titanium.Web.Proxy.Network
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/api/Titanium.Web.Proxy.ProxyServer.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Class ProxyServer
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
@@ -746,6 +746,33 @@ Should return success for successful authentication, continuation if the package
</table>
<a
id=
"Titanium_Web_Proxy_ProxyServer_ReuseSocket_"
data-uid=
"Titanium.Web.Proxy.ProxyServer.ReuseSocket*"
></a>
<h4
id=
"Titanium_Web_Proxy_ProxyServer_ReuseSocket"
data-uid=
"Titanium.Web.Proxy.ProxyServer.ReuseSocket"
>
ReuseSocket
</h4>
<div
class=
"markdown level1 summary"
><p>
Should we reuse client/server tcp sockets.
Default is true (false for linux due to bug in .Net core).
</p>
</div>
<div
class=
"markdown level1 conceptual"
></div>
<h5
class=
"decalaration"
>
Declaration
</h5>
<div
class=
"codewrapper"
>
<pre><code
class=
"lang-csharp hljs"
>
public bool ReuseSocket { get; set; }
</code></pre>
</div>
<h5
class=
"propertyValue"
>
Property Value
</h5>
<table
class=
"table table-bordered table-striped table-condensed"
>
<thead>
<tr>
<th>
Type
</th>
<th>
Description
</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
class=
"xref"
href=
"https://docs.microsoft.com/dotnet/api/system.boolean"
>
Boolean
</a></td>
<td></td>
</tr>
</tbody>
</table>
<a
id=
"Titanium_Web_Proxy_ProxyServer_ServerConnectionCount_"
data-uid=
"Titanium.Web.Proxy.ProxyServer.ServerConnectionCount*"
></a>
<h4
id=
"Titanium_Web_Proxy_ProxyServer_ServerConnectionCount"
data-uid=
"Titanium.Web.Proxy.ProxyServer.ServerConnectionCount"
>
ServerConnectionCount
</h4>
<div
class=
"markdown level1 summary"
><p>
Total number of active server connections.
</p>
...
...
@@ -798,6 +825,33 @@ Should return success for successful authentication, continuation if the package
</table>
<a
id=
"Titanium_Web_Proxy_ProxyServer_TcpTimeWaitSeconds_"
data-uid=
"Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds*"
></a>
<h4
id=
"Titanium_Web_Proxy_ProxyServer_TcpTimeWaitSeconds"
data-uid=
"Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds"
>
TcpTimeWaitSeconds
</h4>
<div
class=
"markdown level1 summary"
><p>
Number of seconds to linger when Tcp connection is in TIME_WAIT state.
Default value is 30.
</p>
</div>
<div
class=
"markdown level1 conceptual"
></div>
<h5
class=
"decalaration"
>
Declaration
</h5>
<div
class=
"codewrapper"
>
<pre><code
class=
"lang-csharp hljs"
>
public int TcpTimeWaitSeconds { get; set; }
</code></pre>
</div>
<h5
class=
"propertyValue"
>
Property Value
</h5>
<table
class=
"table table-bordered table-striped table-condensed"
>
<thead>
<tr>
<th>
Type
</th>
<th>
Description
</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
class=
"xref"
href=
"https://docs.microsoft.com/dotnet/api/system.int32"
>
Int32
</a></td>
<td></td>
</tr>
</tbody>
</table>
<a
id=
"Titanium_Web_Proxy_ProxyServer_UpStreamEndPoint_"
data-uid=
"Titanium.Web.Proxy.ProxyServer.UpStreamEndPoint*"
></a>
<h4
id=
"Titanium_Web_Proxy_ProxyServer_UpStreamEndPoint"
data-uid=
"Titanium.Web.Proxy.ProxyServer.UpStreamEndPoint"
>
UpStreamEndPoint
</h4>
<div
class=
"markdown level1 summary"
><p>
Local adapter/NIC endpoint where proxy makes request via.
...
...
docs/api/Titanium.Web.Proxy.html
View file @
4c563ee8
...
...
@@ -10,7 +10,7 @@
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"title"
content=
"Namespace Titanium.Web.Proxy
| Titanium Web Proxy "
>
<meta
name=
"generator"
content=
"docfx 2.37.
0
.0"
>
<meta
name=
"generator"
content=
"docfx 2.37.
2
.0"
>
<link
rel=
"shortcut icon"
href=
"../favicon.ico"
>
<link
rel=
"stylesheet"
href=
"../styles/docfx.vendor.css"
>
...
...
docs/index.json
View file @
4c563ee8
This diff is collapsed.
Click to expand it.
docs/styles/docfx.vendor.js
View file @
4c563ee8
This diff is collapsed.
Click to expand it.
docs/xrefmap.yml
View file @
4c563ee8
...
...
@@ -644,6 +644,19 @@ references:
isSpec
:
"
True"
fullName
:
Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TerminateSession
nameWithType
:
SessionEventArgsBase.TerminateSession
-
uid
:
Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine
name
:
TimeLine
href
:
api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_TimeLine
commentId
:
P:Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine
fullName
:
Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine
nameWithType
:
SessionEventArgsBase.TimeLine
-
uid
:
Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine*
name
:
TimeLine
href
:
api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_TimeLine_
commentId
:
Overload:Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine
isSpec
:
"
True"
fullName
:
Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.TimeLine
nameWithType
:
SessionEventArgsBase.TimeLine
-
uid
:
Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.UserData
name
:
UserData
href
:
api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html#Titanium_Web_Proxy_EventArguments_SessionEventArgsBase_UserData
...
...
@@ -2983,6 +2996,19 @@ references:
isSpec
:
"
True"
fullName
:
Titanium.Web.Proxy.ProxyServer.RemoveEndPoint
nameWithType
:
ProxyServer.RemoveEndPoint
-
uid
:
Titanium.Web.Proxy.ProxyServer.ReuseSocket
name
:
ReuseSocket
href
:
api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_ReuseSocket
commentId
:
P:Titanium.Web.Proxy.ProxyServer.ReuseSocket
fullName
:
Titanium.Web.Proxy.ProxyServer.ReuseSocket
nameWithType
:
ProxyServer.ReuseSocket
-
uid
:
Titanium.Web.Proxy.ProxyServer.ReuseSocket*
name
:
ReuseSocket
href
:
api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_ReuseSocket_
commentId
:
Overload:Titanium.Web.Proxy.ProxyServer.ReuseSocket
isSpec
:
"
True"
fullName
:
Titanium.Web.Proxy.ProxyServer.ReuseSocket
nameWithType
:
ProxyServer.ReuseSocket
-
uid
:
Titanium.Web.Proxy.ProxyServer.ServerCertificateValidationCallback
name
:
ServerCertificateValidationCallback
href
:
api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_ServerCertificateValidationCallback
...
...
@@ -3086,6 +3112,19 @@ references:
isSpec
:
"
True"
fullName
:
Titanium.Web.Proxy.ProxyServer.SupportedSslProtocols
nameWithType
:
ProxyServer.SupportedSslProtocols
-
uid
:
Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds
name
:
TcpTimeWaitSeconds
href
:
api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_TcpTimeWaitSeconds
commentId
:
P:Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds
fullName
:
Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds
nameWithType
:
ProxyServer.TcpTimeWaitSeconds
-
uid
:
Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds*
name
:
TcpTimeWaitSeconds
href
:
api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_TcpTimeWaitSeconds_
commentId
:
Overload:Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds
isSpec
:
"
True"
fullName
:
Titanium.Web.Proxy.ProxyServer.TcpTimeWaitSeconds
nameWithType
:
ProxyServer.TcpTimeWaitSeconds
-
uid
:
Titanium.Web.Proxy.ProxyServer.UpStreamEndPoint
name
:
UpStreamEndPoint
href
:
api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_UpStreamEndPoint
...
...
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