Search Results for

    Show / Hide Table of Contents

    Class ProxyServer

    This class is the backbone of proxy. One can create as many instances as needed. However care should be taken to avoid using the same listening ports across multiple instances.

    Inheritance
    Object
    ProxyServer
    Implements
    IDisposable
    Inherited Members
    Object.ToString()
    Object.Equals(Object)
    Object.Equals(Object, Object)
    Object.ReferenceEquals(Object, Object)
    Object.GetHashCode()
    Object.GetType()
    Object.MemberwiseClone()
    Namespace: Titanium.Web.Proxy
    Assembly: Titanium.Web.Proxy.dll
    Syntax
    public class ProxyServer : IDisposable

    Constructors

    | Improve this Doc View Source

    ProxyServer(Boolean, Boolean, Boolean)

    Initializes a new instance of ProxyServer class with provided parameters.

    Declaration
    public ProxyServer(bool userTrustRootCertificate = true, bool machineTrustRootCertificate = false, bool trustRootCertificateAsAdmin = false)
    Parameters
    Type Name Description
    Boolean userTrustRootCertificate

    Should fake HTTPS certificate be trusted by this machine's user certificate store?

    Boolean machineTrustRootCertificate

    Should fake HTTPS certificate be trusted by this machine's certificate store?

    Boolean trustRootCertificateAsAdmin

    Should we attempt to trust certificates with elevated permissions by prompting for UAC if required?

    | Improve this Doc View Source

    ProxyServer(String, String, Boolean, Boolean, Boolean)

    Initializes a new instance of ProxyServer class with provided parameters.

    Declaration
    public ProxyServer(string rootCertificateName, string rootCertificateIssuerName, bool userTrustRootCertificate = true, bool machineTrustRootCertificate = false, bool trustRootCertificateAsAdmin = false)
    Parameters
    Type Name Description
    String rootCertificateName

    Name of the root certificate.

    String rootCertificateIssuerName

    Name of the root certificate issuer.

    Boolean userTrustRootCertificate

    Should fake HTTPS certificate be trusted by this machine's user certificate store?

    Boolean machineTrustRootCertificate

    Should fake HTTPS certificate be trusted by this machine's certificate store?

    Boolean trustRootCertificateAsAdmin

    Should we attempt to trust certificates with elevated permissions by prompting for UAC if required?

    Properties

    | Improve this Doc View Source

    BufferPool

    The buffer pool used throughout this proxy instance. Set custom implementations by implementing this interface. By default this uses DefaultBufferPool implementation available in StreamExtended library package. Buffer size should be at least 10 bytes.

    Declaration
    public IBufferPool BufferPool { get; set; }
    Property Value
    Type Description
    IBufferPool
    | Improve this Doc View Source

    CertificateManager

    Manages certificates used by this proxy.

    Declaration
    public CertificateManager CertificateManager { get; }
    Property Value
    Type Description
    CertificateManager
    | Improve this Doc View Source

    CheckCertificateRevocation

    Should we check for certificate revocation during SSL authentication to servers Note: If enabled can reduce performance. Defaults to false.

    Declaration
    public X509RevocationMode CheckCertificateRevocation { get; set; }
    Property Value
    Type Description
    X509RevocationMode
    | Improve this Doc View Source

    ClientConnectionCount

    Total number of active client connections.

    Declaration
    public int ClientConnectionCount { get; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    ConnectionTimeOutSeconds

    Seconds client/server connection are to be kept alive when waiting for read/write to complete. This will also determine the pool eviction time when connection pool is enabled. Default value is 60 seconds.

    Declaration
    public int ConnectionTimeOutSeconds { get; set; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    ConnectTimeOutSeconds

    Seconds server connection are to wait for connection to be established. Default value is 20 seconds.

    Declaration
    public int ConnectTimeOutSeconds { get; set; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    CustomUpStreamProxyFailureFunc

    A callback to provide a chance for an upstream proxy failure to be handled by a new upstream proxy. User should return the ExternalProxy object with valid credentials or null.

    Declaration
    public Func<SessionEventArgsBase, Task<IExternalProxy>> CustomUpStreamProxyFailureFunc { get; set; }
    Property Value
    Type Description
    Func<SessionEventArgsBase, Task<IExternalProxy>>
    | Improve this Doc View Source

    Enable100ContinueBehaviour

    Does this proxy uses the HTTP protocol 100 continue behaviour strictly? Broken 100 continue implementations on server/client may cause problems if enabled. Defaults to false.

    Declaration
    public bool Enable100ContinueBehaviour { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    EnableConnectionPool

    Should we enable experimental server connection pool. Defaults to false. When you enable connection pooling, instead of creating a new TCP connection to server for each client TCP connection, we check if a server connection is available in our cached pool. If it is available in our pool, created from earlier requests to the same server, we will reuse those idle connections. There is also a ConnectionTimeOutSeconds parameter, which determine the eviction time for inactive server connections. This will help to reduce TCP connection establishment cost, both the wall clock time and CPU cycles.

    Declaration
    public bool EnableConnectionPool { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    EnableHttp2

    Enable disable HTTP/2 support. Warning: HTTP/2 support is very limited

    • only enabled when both client and server supports it (no protocol changing in proxy)
    • cannot modify the request/response (e.g header modifications in BeforeRequest/Response events are ignored)
    Declaration
    public bool EnableHttp2 { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    EnableTcpServerConnectionPrefetch

    Should we enable tcp server connection prefetching? When enabled, as soon as we receive a client connection we concurrently initiate corresponding server connection process using CONNECT hostname or SNI hostname on a separate task so that after parsing client request we will have the server connection immediately ready or in the process of getting ready. If a server connection is available in cache then this prefetch task will immediately return with the available connection from cache. Defaults to true.

    Declaration
    public bool EnableTcpServerConnectionPrefetch { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    EnableWinAuth

    Enable disable Windows Authentication (NTLM/Kerberos). Note: NTLM/Kerberos will always send local credentials of current user running the proxy process. This is because a man in middle attack with Windows domain authentication is not currently supported. Defaults to false.

    Declaration
    public bool EnableWinAuth { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    ExceptionFunc

    Callback for error events in this proxy instance.

    Declaration
    public ExceptionHandler ExceptionFunc { get; set; }
    Property Value
    Type Description
    ExceptionHandler
    | Improve this Doc View Source

    ForwardToUpstreamGateway

    Gets or sets a value indicating whether requests will be chained to upstream gateway. Defaults to false.

    Declaration
    public bool ForwardToUpstreamGateway { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    GetCustomUpStreamProxyFunc

    A callback to provide authentication credentials for up stream proxy this proxy is using for HTTP(S) requests. User should return the ExternalProxy object with valid credentials.

    Declaration
    public Func<SessionEventArgsBase, Task<IExternalProxy>> GetCustomUpStreamProxyFunc { get; set; }
    Property Value
    Type Description
    Func<SessionEventArgsBase, Task<IExternalProxy>>
    | Improve this Doc View Source

    MaxCachedConnections

    Maximum number of concurrent connections per remote host in cache. Only valid when connection pooling is enabled. Default value is 4.

    Declaration
    public int MaxCachedConnections { get; set; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    NetworkFailureRetryAttempts

    Number of times to retry upon network failures when connection pool is enabled.

    Declaration
    public int NetworkFailureRetryAttempts { get; set; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    NoDelay

    Gets or sets a Boolean value that specifies whether server and client stream Sockets are using the Nagle algorithm. Defaults to true, no nagle algorithm is used.

    Declaration
    public bool NoDelay { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    ProxyAuthenticationRealm

    Realm used during Proxy Basic Authentication.

    Declaration
    public string ProxyAuthenticationRealm { get; set; }
    Property Value
    Type Description
    String
    | Improve this Doc View Source

    ProxyAuthenticationSchemes

    A collection of scheme types, e.g. basic, NTLM, Kerberos, Negotiate, to return if scheme authentication is required. Works in relation with ProxySchemeAuthenticateFunc.

    Declaration
    public IEnumerable<string> ProxyAuthenticationSchemes { get; set; }
    Property Value
    Type Description
    IEnumerable<String>
    | Improve this Doc View Source

    ProxyBasicAuthenticateFunc

    A callback to authenticate proxy clients via basic authentication. Parameters are username and password as provided by client. Should return true for successful authentication.

    Declaration
    public Func<SessionEventArgsBase, string, string, Task<bool>> ProxyBasicAuthenticateFunc { get; set; }
    Property Value
    Type Description
    Func<SessionEventArgsBase, String, String, Task<Boolean>>
    | Improve this Doc View Source

    ProxyEndPoints

    A list of IpAddress and port this proxy is listening to.

    Declaration
    public List<ProxyEndPoint> ProxyEndPoints { get; set; }
    Property Value
    Type Description
    List<ProxyEndPoint>
    | Improve this Doc View Source

    ProxyRunning

    Is the proxy currently running?

    Declaration
    public bool ProxyRunning { get; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    ProxySchemeAuthenticateFunc

    A pluggable callback to authenticate clients by scheme instead of requiring basic authentication through ProxyBasicAuthenticateFunc. Parameters are current working session, schemeType, and token as provided by a calling client. Should return success for successful authentication, continuation if the package requests, or failure.

    Declaration
    public Func<SessionEventArgsBase, string, string, Task<ProxyAuthenticationContext>> ProxySchemeAuthenticateFunc { get; set; }
    Property Value
    Type Description
    Func<SessionEventArgsBase, String, String, Task<ProxyAuthenticationContext>>
    | Improve this Doc View Source

    ReuseSocket

    Should we reuse client/server tcp sockets. Default is true (disabled for linux/macOS due to bug in .Net core).

    Declaration
    public bool ReuseSocket { get; set; }
    Property Value
    Type Description
    Boolean
    | Improve this Doc View Source

    ServerConnectionCount

    Total number of active server connections.

    Declaration
    public int ServerConnectionCount { get; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    SupportedServerSslProtocols

    List of supported Server Ssl versions. Using SslProtocol.None means to require the same SSL protocol as the proxy client.

    Declaration
    public SslProtocols SupportedServerSslProtocols { get; set; }
    Property Value
    Type Description
    SslProtocols
    | Improve this Doc View Source

    SupportedSslProtocols

    List of supported Ssl versions.

    Declaration
    public SslProtocols SupportedSslProtocols { get; set; }
    Property Value
    Type Description
    SslProtocols
    | Improve this Doc View Source

    TcpTimeWaitSeconds

    Number of seconds to linger when Tcp connection is in TIME_WAIT state. Default value is 30.

    Declaration
    public int TcpTimeWaitSeconds { get; set; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    ThreadPoolWorkerThread

    Customize the minimum ThreadPool size (increase it on a server)

    Declaration
    public int ThreadPoolWorkerThread { get; set; }
    Property Value
    Type Description
    Int32
    | Improve this Doc View Source

    UpStreamEndPoint

    Local adapter/NIC endpoint where proxy makes request via. Defaults via any IP addresses of this machine.

    Declaration
    public IPEndPoint UpStreamEndPoint { get; set; }
    Property Value
    Type Description
    IPEndPoint
    | Improve this Doc View Source

    UpStreamHttpProxy

    External proxy used for Http requests.

    Declaration
    public IExternalProxy UpStreamHttpProxy { get; set; }
    Property Value
    Type Description
    IExternalProxy
    | Improve this Doc View Source

    UpStreamHttpsProxy

    External proxy used for Https requests.

    Declaration
    public IExternalProxy UpStreamHttpsProxy { get; set; }
    Property Value
    Type Description
    IExternalProxy
    | Improve this Doc View Source

    UpstreamProxyConfigurationScript

    If set, the upstream proxy will be detected by a script that will be loaded from the provided Uri

    Declaration
    public Uri UpstreamProxyConfigurationScript { get; set; }
    Property Value
    Type Description
    Uri

    Methods

    | Improve this Doc View Source

    AddEndPoint(ProxyEndPoint)

    Add a proxy end point.

    Declaration
    public void AddEndPoint(ProxyEndPoint endPoint)
    Parameters
    Type Name Description
    ProxyEndPoint endPoint

    The proxy endpoint.

    | Improve this Doc View Source

    DisableAllSystemProxies()

    Clear all proxy settings for current machine.

    Declaration
    public void DisableAllSystemProxies()
    | Improve this Doc View Source

    DisableSystemHttpProxy()

    Clear HTTP proxy settings of current machine.

    Declaration
    public void DisableSystemHttpProxy()
    | Improve this Doc View Source

    DisableSystemHttpsProxy()

    Clear HTTPS proxy settings of current machine.

    Declaration
    public void DisableSystemHttpsProxy()
    | Improve this Doc View Source

    DisableSystemProxy(ProxyProtocolType)

    Clear the specified proxy setting for current machine.

    Declaration
    public void DisableSystemProxy(ProxyProtocolType protocolType)
    Parameters
    Type Name Description
    ProxyProtocolType protocolType
    | Improve this Doc View Source

    Dispose()

    Declaration
    public void Dispose()
    | Improve this Doc View Source

    Dispose(Boolean)

    Declaration
    protected virtual void Dispose(bool disposing)
    Parameters
    Type Name Description
    Boolean disposing
    | Improve this Doc View Source

    Finalize()

    Declaration
    protected void Finalize()
    | Improve this Doc View Source

    RemoveEndPoint(ProxyEndPoint)

    Remove a proxy end point. Will throw error if the end point doesn't exist.

    Declaration
    public void RemoveEndPoint(ProxyEndPoint endPoint)
    Parameters
    Type Name Description
    ProxyEndPoint endPoint

    The existing endpoint to remove.

    | Improve this Doc View Source

    RestoreOriginalProxySettings()

    Restores the original proxy settings.

    Declaration
    public void RestoreOriginalProxySettings()
    | Improve this Doc View Source

    SetAsSystemHttpProxy(ExplicitProxyEndPoint)

    Set the given explicit end point as the default proxy server for current machine.

    Declaration
    public void SetAsSystemHttpProxy(ExplicitProxyEndPoint endPoint)
    Parameters
    Type Name Description
    ExplicitProxyEndPoint endPoint

    The explicit endpoint.

    | Improve this Doc View Source

    SetAsSystemHttpsProxy(ExplicitProxyEndPoint)

    Set the given explicit end point as the default proxy server for current machine.

    Declaration
    public void SetAsSystemHttpsProxy(ExplicitProxyEndPoint endPoint)
    Parameters
    Type Name Description
    ExplicitProxyEndPoint endPoint

    The explicit endpoint.

    | Improve this Doc View Source

    SetAsSystemProxy(ExplicitProxyEndPoint, ProxyProtocolType)

    Set the given explicit end point as the default proxy server for current machine.

    Declaration
    public void SetAsSystemProxy(ExplicitProxyEndPoint endPoint, ProxyProtocolType protocolType)
    Parameters
    Type Name Description
    ExplicitProxyEndPoint endPoint

    The explicit endpoint.

    ProxyProtocolType protocolType

    The proxy protocol type.

    | Improve this Doc View Source

    Start(Boolean)

    Start this proxy server instance.

    Declaration
    public void Start(bool changeSystemProxySettings = true)
    Parameters
    Type Name Description
    Boolean changeSystemProxySettings

    Whether or not clear any system proxy settings which is pointing to our own endpoint (causing a cycle). E.g due to ungracious proxy shutdown before.

    | Improve this Doc View Source

    Stop()

    Stop this proxy server instance.

    Declaration
    public void Stop()

    Events

    | Improve this Doc View Source

    AfterResponse

    Intercept after response event from server.

    Declaration
    public event AsyncEventHandler<SessionEventArgs> AfterResponse
    Event Type
    Type Description
    AsyncEventHandler<SessionEventArgs>
    | Improve this Doc View Source

    BeforeRequest

    Intercept request event to server.

    Declaration
    public event AsyncEventHandler<SessionEventArgs> BeforeRequest
    Event Type
    Type Description
    AsyncEventHandler<SessionEventArgs>
    | Improve this Doc View Source

    BeforeResponse

    Intercept response event from server.

    Declaration
    public event AsyncEventHandler<SessionEventArgs> BeforeResponse
    Event Type
    Type Description
    AsyncEventHandler<SessionEventArgs>
    | Improve this Doc View Source

    BeforeUpStreamConnectRequest

    Intercept connect request sent to upstream proxy.

    Declaration
    public event AsyncEventHandler<ConnectRequest> BeforeUpStreamConnectRequest
    Event Type
    Type Description
    AsyncEventHandler<ConnectRequest>
    | Improve this Doc View Source

    ClientCertificateSelectionCallback

    Event to override client certificate selection during mutual SSL authentication.

    Declaration
    public event AsyncEventHandler<CertificateSelectionEventArgs> ClientCertificateSelectionCallback
    Event Type
    Type Description
    AsyncEventHandler<CertificateSelectionEventArgs>
    | Improve this Doc View Source

    ClientConnectionCountChanged

    Event occurs when client connection count changed.

    Declaration
    public event EventHandler ClientConnectionCountChanged
    Event Type
    Type Description
    EventHandler
    | Improve this Doc View Source

    OnClientConnectionCreate

    Customize TcpClient used for client connection upon create.

    Declaration
    public event AsyncEventHandler<Socket> OnClientConnectionCreate
    Event Type
    Type Description
    AsyncEventHandler<Socket>
    | Improve this Doc View Source

    OnServerConnectionCreate

    Customize TcpClient used for server connection upon create.

    Declaration
    public event AsyncEventHandler<Socket> OnServerConnectionCreate
    Event Type
    Type Description
    AsyncEventHandler<Socket>
    | Improve this Doc View Source

    ServerCertificateValidationCallback

    Event to override the default verification logic of remote SSL certificate received during authentication.

    Declaration
    public event AsyncEventHandler<CertificateValidationEventArgs> ServerCertificateValidationCallback
    Event Type
    Type Description
    AsyncEventHandler<CertificateValidationEventArgs>
    | Improve this Doc View Source

    ServerConnectionCountChanged

    Event occurs when server connection count changed.

    Declaration
    public event EventHandler ServerConnectionCountChanged
    Event Type
    Type Description
    EventHandler

    Implements

    System.IDisposable
    • Improve this Doc
    • View Source
    In This Article
    Back to top Generated by DocFX