Skip to content
This repository was archived by the owner on Jul 9, 2023. It is now read-only.

Add fixed remote server setting to transparentEndPoint. #966

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions examples/Titanium.Web.Proxy.Examples.Basic/ProxyTestController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,14 +104,22 @@ public void StartProxy()
// Transparent endpoint is useful for reverse proxy (client is not aware of the existence of proxy)
// A transparent endpoint usually requires a network router port forwarding HTTP(S) packets
// or by DNS to send data to this endPoint.
//var transparentEndPoint = new TransparentProxyEndPoint(IPAddress.Any, 443, true)
//var transparentEndPointHttp = new TransparentProxyEndPoint(IPAddress.Any, 80, false)
//{
// OverrideForwardHostName = "198.51.100.1",
// OverrideForwardPort = 80
//};
//var transparentEndPointHttps = new TransparentProxyEndPoint(IPAddress.Any, 443, true)
//{
// // Generic Certificate hostname to use
// // When SNI is disabled by client
// GenericCertificateName = "localhost"
// GenericCertificateName = "www.example.com",
// OverrideForwardHostName = "198.51.100.1",
// OverrideForwardPort = 443
//};
//proxyServer.AddEndPoint(transparentEndPointHttp);
//proxyServer.AddEndPoint(transparentEndPointHttps);

//proxyServer.AddEndPoint(transparentEndPoint);
//proxyServer.UpStreamHttpProxy = new ExternalProxy("localhost", 8888);
//proxyServer.UpStreamHttpsProxy = new ExternalProxy("localhost", 8888);

Expand Down
10 changes: 10 additions & 0 deletions src/Titanium.Web.Proxy/Models/SocksProxyEndPoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ public SocksProxyEndPoint(IPAddress ipAddress, int port, bool decryptSsl = true)
/// </summary>
public override string GenericCertificateName { get; set; }

/// <summary>
/// The hostname (or IP-address) of the fixed forwarding remote server.
/// </summary>
public override string OverrideForwardHostName { get; set; } = "";

/// <summary>
/// The port of the fixed forwarding remote server.
/// </summary>
public override int OverrideForwardPort { get; set; } = -1;

/// <summary>
/// Before Ssl authentication this event is fired.
/// </summary>
Expand Down
10 changes: 10 additions & 0 deletions src/Titanium.Web.Proxy/Models/TransparentBaseProxyEndPoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,16 @@ protected TransparentBaseProxyEndPoint(IPAddress ipAddress, int port, bool decry
/// </summary>
public abstract string GenericCertificateName { get; set; }

/// <summary>
/// The hostname (or IP-address) of the fixed forwarding remote server.
/// </summary>
public abstract string OverrideForwardHostName { get; set; }

/// <summary>
/// The port of the fixed forwarding remote server.
/// </summary>
public abstract int OverrideForwardPort { get; set; }

internal abstract Task InvokeBeforeSslAuthenticate(ProxyServer proxyServer,
BeforeSslAuthenticateEventArgs connectArgs, ExceptionHandler? exceptionFunc);
}
10 changes: 10 additions & 0 deletions src/Titanium.Web.Proxy/Models/TransparentProxyEndPoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ public TransparentProxyEndPoint(IPAddress ipAddress, int port, bool decryptSsl =
/// </summary>
public override string GenericCertificateName { get; set; }

/// <summary>
/// The hostname (or IP-address) of the fixed forwarding remote server.
/// </summary>
public override string OverrideForwardHostName { get; set; } = "";

/// <summary>
/// The port of the fixed forwarding remote server.
/// </summary>
public override int OverrideForwardPort { get; set; } = -1;

/// <summary>
/// Before Ssl authentication this event is fired.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,14 @@ internal Task<TcpServerConnection> GetServerConnection(ProxyServer proxyServer,
port = uri.Port;
}

if (session.IsTransparent && !string.IsNullOrEmpty(((TransparentBaseProxyEndPoint)session.ProxyEndPoint).OverrideForwardHostName))
{
host = ((TransparentBaseProxyEndPoint)session.ProxyEndPoint).OverrideForwardHostName;

if (((TransparentBaseProxyEndPoint)session.ProxyEndPoint).OverrideForwardPort > 0)
port = ((TransparentBaseProxyEndPoint)session.ProxyEndPoint).OverrideForwardPort;
}

var upStreamEndPoint = session.HttpClient.UpStreamEndPoint ?? proxyServer.UpStreamEndPoint;
var upStreamProxy = customUpStreamProxy ??
(isHttps ? proxyServer.UpStreamHttpsProxy : proxyServer.UpStreamHttpProxy);
Expand Down