Show / Hide Table of Contents

    Class ProxyServer

    This object 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

    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?

    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

    AuthenticateUserFunc

    A callback to authenticate clients. Parameters are username and password as provided by client. Return true for successful authentication.

    Declaration
    public Func<string, string, Task<bool>> AuthenticateUserFunc { get; set; }
    Property Value
    Type Description
    Func<String, String, Task<Boolean>>

    BufferSize

    Buffer size used throughout this proxy.

    Declaration
    public int BufferSize { get; set; }
    Property Value
    Type Description
    Int32

    CertificateManager

    Manages certificates used by this proxy.

    Declaration
    public CertificateManager CertificateManager { get; }
    Property Value
    Type Description
    CertificateManager

    CheckCertificateRevocation

    Should we check for certificare 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

    ClientConnectionCount

    Total number of active client connections.

    Declaration
    public int ClientConnectionCount { get; }
    Property Value
    Type Description
    Int32

    ConnectionTimeOutSeconds

    Seconds client/server connection are to be kept alive when waiting for read/write to complete.

    Declaration
    public int ConnectionTimeOutSeconds { get; set; }
    Property Value
    Type Description
    Int32

    Enable100ContinueBehaviour

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

    Declaration
    public bool Enable100ContinueBehaviour { get; set; }
    Property Value
    Type Description
    Boolean

    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.

    Declaration
    public bool EnableWinAuth { get; set; }
    Property Value
    Type Description
    Boolean

    ExceptionFunc

    Callback for error events in this proxy instance.

    Declaration
    public ExceptionHandler ExceptionFunc { get; set; }
    Property Value
    Type Description
    ExceptionHandler

    ForwardToUpstreamGateway

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

    Declaration
    public bool ForwardToUpstreamGateway { get; set; }
    Property Value
    Type Description
    Boolean

    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<ExternalProxy>> GetCustomUpStreamProxyFunc { get; set; }
    Property Value
    Type Description
    Func<SessionEventArgsBase, Task<ExternalProxy>>

    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>

    ProxyRealm

    Realm used during Proxy Basic Authentication.

    Declaration
    public string ProxyRealm { get; set; }
    Property Value
    Type Description
    String

    ProxyRunning

    Is the proxy currently running?

    Declaration
    public bool ProxyRunning { get; }
    Property Value
    Type Description
    Boolean

    ServerConnectionCount

    Total number of active server connections.

    Declaration
    public int ServerConnectionCount { get; }
    Property Value
    Type Description
    Int32

    SupportedSslProtocols

    List of supported Ssl versions.

    Declaration
    public SslProtocols SupportedSslProtocols { get; set; }
    Property Value
    Type Description
    SslProtocols

    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

    UpStreamHttpProxy

    External proxy used for Http requests.

    Declaration
    public ExternalProxy UpStreamHttpProxy { get; set; }
    Property Value
    Type Description
    ExternalProxy

    UpStreamHttpsProxy

    External proxy used for Https requests.

    Declaration
    public ExternalProxy UpStreamHttpsProxy { get; set; }
    Property Value
    Type Description
    ExternalProxy

    Methods

    AddEndPoint(ProxyEndPoint)

    Add a proxy end point.

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

    The proxy endpoint.

    DisableAllSystemProxies()

    Clear all proxy settings for current machine.

    Declaration
    public void DisableAllSystemProxies()

    DisableSystemHttpProxy()

    Clear HTTP proxy settings of current machine.

    Declaration
    public void DisableSystemHttpProxy()

    DisableSystemHttpsProxy()

    Clear HTTPS proxy settings of current machine.

    Declaration
    public void DisableSystemHttpsProxy()

    DisableSystemProxy(ProxyProtocolType)

    Clear the specified proxy setting for current machine.

    Declaration
    public void DisableSystemProxy(ProxyProtocolType protocolType)
    Parameters
    Type Name Description
    ProxyProtocolType protocolType

    Dispose()

    Dispose Proxy.

    Declaration
    public void Dispose()

    RemoveEndPoint(ProxyEndPoint)

    Remove a proxy end point. Will throw error if the end point does'nt exist

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

    The existing endpoint to remove.

    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

    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

    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
    ProxyProtocolType protocolType

    Start()

    Start this proxy server instance.

    Declaration
    public void Start()

    Stop()

    Stop this proxy server instance.

    Declaration
    public void Stop()

    Events

    AfterResponse

    Intercept after response from server.

    Declaration
    public event AsyncEventHandler<SessionEventArgs> AfterResponse
    Event Type
    Type Description
    AsyncEventHandler<SessionEventArgs>

    BeforeRequest

    Intercept request to server.

    Declaration
    public event AsyncEventHandler<SessionEventArgs> BeforeRequest
    Event Type
    Type Description
    AsyncEventHandler<SessionEventArgs>

    BeforeResponse

    Intercept response from server.

    Declaration
    public event AsyncEventHandler<SessionEventArgs> BeforeResponse
    Event Type
    Type Description
    AsyncEventHandler<SessionEventArgs>

    ClientCertificateSelectionCallback

    Callback to override client certificate selection during mutual SSL authentication.

    Declaration
    public event AsyncEventHandler<CertificateSelectionEventArgs> ClientCertificateSelectionCallback
    Event Type
    Type Description
    AsyncEventHandler<CertificateSelectionEventArgs>

    ClientConnectionCountChanged

    Occurs when client connection count changed.

    Declaration
    public event EventHandler ClientConnectionCountChanged
    Event Type
    Type Description
    EventHandler

    ServerCertificateValidationCallback

    Verifies the remote SSL certificate used for authentication.

    Declaration
    public event AsyncEventHandler<CertificateValidationEventArgs> ServerCertificateValidationCallback
    Event Type
    Type Description
    AsyncEventHandler<CertificateValidationEventArgs>

    ServerConnectionCountChanged

    Occurs when server connection count changed.

    Declaration
    public event EventHandler ServerConnectionCountChanged
    Event Type
    Type Description
    EventHandler

    Implements

    System.IDisposable
    Back to top Generated by DocFX