From c963bc58ead5ca7cea63d37d9dff942c027075b8 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 11 Oct 2018 09:31:22 -0400 Subject: [PATCH 01/35] use .net core 2.1 in example proj --- .../Titanium.Web.Proxy.Examples.Basic.NetCore.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Titanium.Web.Proxy.Examples.Basic/Titanium.Web.Proxy.Examples.Basic.NetCore.csproj b/examples/Titanium.Web.Proxy.Examples.Basic/Titanium.Web.Proxy.Examples.Basic.NetCore.csproj index 9cfd6300b..cd8de97f1 100644 --- a/examples/Titanium.Web.Proxy.Examples.Basic/Titanium.Web.Proxy.Examples.Basic.NetCore.csproj +++ b/examples/Titanium.Web.Proxy.Examples.Basic/Titanium.Web.Proxy.Examples.Basic.NetCore.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + netcoreapp2.1 false 7.1 From 8b0e1e76d94b03e53e6ab2579548465cc1c86f23 Mon Sep 17 00:00:00 2001 From: Anton Ryzhov Date: Wed, 17 Oct 2018 16:31:34 +0300 Subject: [PATCH 02/35] Do not call SetInternetOption when restoring proxy state at the system shutdown in Windows 7 or earlier. This re-enables ProxyEnabled registry value. --- .../Helpers/NativeMethods.SystemProxy.cs | 6 ++ src/Titanium.Web.Proxy/Helpers/SystemProxy.cs | 92 ++++++++++++++----- 2 files changed, 74 insertions(+), 24 deletions(-) diff --git a/src/Titanium.Web.Proxy/Helpers/NativeMethods.SystemProxy.cs b/src/Titanium.Web.Proxy/Helpers/NativeMethods.SystemProxy.cs index c85e880fa..56509a458 100644 --- a/src/Titanium.Web.Proxy/Helpers/NativeMethods.SystemProxy.cs +++ b/src/Titanium.Web.Proxy/Helpers/NativeMethods.SystemProxy.cs @@ -18,6 +18,12 @@ internal static extern bool InternetSetOption(IntPtr hInternet, int dwOption, In [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add); + /// + /// + /// + [DllImport("user32.dll")] + internal static extern int GetSystemMetrics(int nIndex); + // Pinvoke internal delegate bool ConsoleEventDelegate(int eventType); } diff --git a/src/Titanium.Web.Proxy/Helpers/SystemProxy.cs b/src/Titanium.Web.Proxy/Helpers/SystemProxy.cs index a1a5cb0da..11cd5f8f9 100644 --- a/src/Titanium.Web.Proxy/Helpers/SystemProxy.cs +++ b/src/Titanium.Web.Proxy/Helpers/SystemProxy.cs @@ -80,10 +80,13 @@ public SystemProxyManager() /// internal void SetProxy(string hostname, int port, ProxyProtocolType protocolType) { - var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); - - if (reg != null) + using (var reg = OpenInternetSettingsKey()) { + if (reg == null) + { + return; + } + saveOriginalProxyConfiguration(reg); prepareRegistry(reg); @@ -124,9 +127,13 @@ internal void SetProxy(string hostname, int port, ProxyProtocolType protocolType /// internal void RemoveProxy(ProxyProtocolType protocolType, bool saveOriginalConfig = true) { - var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); - if (reg != null) + using (var reg = OpenInternetSettingsKey()) { + if (reg == null) + { + return; + } + if (saveOriginalConfig) { saveOriginalProxyConfiguration(reg); @@ -161,10 +168,13 @@ internal void RemoveProxy(ProxyProtocolType protocolType, bool saveOriginalConfi /// internal void DisableAllProxy() { - var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); - - if (reg != null) + using (var reg = OpenInternetSettingsKey()) { + if (reg == null) + { + return; + } + saveOriginalProxyConfiguration(reg); reg.SetValue(regProxyEnable, 0); @@ -176,10 +186,13 @@ internal void DisableAllProxy() internal void SetAutoProxyUrl(string url) { - var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); - - if (reg != null) + using (var reg = OpenInternetSettingsKey()) { + if (reg == null) + { + return; + } + saveOriginalProxyConfiguration(reg); reg.SetValue(regAutoConfigUrl, url); refresh(); @@ -188,10 +201,13 @@ internal void SetAutoProxyUrl(string url) internal void SetProxyOverride(string proxyOverride) { - var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); - - if (reg != null) + using (var reg = OpenInternetSettingsKey()) { + if (reg == null) + { + return; + } + saveOriginalProxyConfiguration(reg); reg.SetValue(regProxyOverride, proxyOverride); refresh(); @@ -205,10 +221,13 @@ internal void RestoreOriginalSettings() return; } - var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); - - if (reg != null) + using (var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true)) { + if (reg == null) + { + return; + } + var ov = originalValues; if (ov.AutoConfigUrl != null) { @@ -246,26 +265,43 @@ internal void RestoreOriginalSettings() reg.DeleteValue(regProxyOverride, false); } + // This should not be needed, but sometimes the values are not stored into the registry + // at system shutdown without flushing. + reg.Flush(); + originalValues = null; - refresh(); + + const int SM_SHUTTINGDOWN = 0x2000; + Version windows7Version = new Version(6, 1); + if (Environment.OSVersion.Version > windows7Version || + NativeMethods.GetSystemMetrics(SM_SHUTTINGDOWN) == 0) + { + // Do not call refresh() in Windows 7 or earlier at system shutdown. + // SetInternetOption in the refresh method re-enables ProxyEnable registry value + // in Windows 7 or earlier at system shutdown. + refresh(); + } } } internal ProxyInfo GetProxyInfoFromRegistry() { - var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); - - if (reg != null) + using (var reg = OpenInternetSettingsKey()) { + if (reg == null) + { + return null; + } + return getProxyInfoFromRegistry(reg); } - - return null; } private ProxyInfo getProxyInfoFromRegistry(RegistryKey reg) { - var pi = new ProxyInfo(null, reg.GetValue(regAutoConfigUrl) as string, reg.GetValue(regProxyEnable) as int?, + var pi = new ProxyInfo(null, + reg.GetValue(regAutoConfigUrl) as string, + reg.GetValue(regProxyEnable) as int?, reg.GetValue(regProxyServer) as string, reg.GetValue(regProxyOverride) as string); @@ -307,5 +343,13 @@ private static void refresh() NativeMethods.InternetSetOption(IntPtr.Zero, InternetOptionSettingsChanged, IntPtr.Zero, 0); NativeMethods.InternetSetOption(IntPtr.Zero, InternetOptionRefresh, IntPtr.Zero, 0); } + + /// + /// Opens the registry key with the internet settings + /// + private static RegistryKey OpenInternetSettingsKey() + { + return Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); + } } } From 5e2fdbb7f6745a9b0a9c9685189501ae2a161e1a Mon Sep 17 00:00:00 2001 From: Kent Friesen Date: Thu, 18 Oct 2018 11:33:04 -0400 Subject: [PATCH 03/35] Fixes #509 (BCCertificateMaker issue on Mono) --- .../Network/Certificate/BCCertificateMaker.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Titanium.Web.Proxy/Network/Certificate/BCCertificateMaker.cs b/src/Titanium.Web.Proxy/Network/Certificate/BCCertificateMaker.cs index 0f04f8c9a..ad621492d 100644 --- a/src/Titanium.Web.Proxy/Network/Certificate/BCCertificateMaker.cs +++ b/src/Titanium.Web.Proxy/Network/Certificate/BCCertificateMaker.cs @@ -16,6 +16,7 @@ using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities; using Org.BouncyCastle.X509; +using Titanium.Web.Proxy.Helpers; using Titanium.Web.Proxy.Shared; using X509Certificate = Org.BouncyCastle.X509.X509Certificate; @@ -166,7 +167,19 @@ private static X509Certificate2 generateCertificate(string hostName, private static X509Certificate2 withPrivateKey(X509Certificate certificate, AsymmetricKeyParameter privateKey) { const string password = "password"; - var store = new Pkcs12Store(); + Pkcs12Store store = null; + + if(RunTime.IsRunningOnMono) + { + Pkcs12StoreBuilder builder = new Pkcs12StoreBuilder(); + builder.SetUseDerEncoding(true); + store = builder.Build(); + } + else + { + store = new Pkcs12Store(); + } + var entry = new X509CertificateEntry(certificate); store.SetCertificateEntry(certificate.SubjectDN.ToString(), entry); From e765f16aa054519cf737dcd7afd4e6f7759b20e9 Mon Sep 17 00:00:00 2001 From: buildbot121 Date: Thu, 18 Oct 2018 21:01:11 +0000 Subject: [PATCH 04/35] API documentation update by build server --- .../Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html | 2 +- ...Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html | 2 +- ....Web.Proxy.EventArguments.CertificateSelectionEventArgs.html | 2 +- ...Web.Proxy.EventArguments.CertificateValidationEventArgs.html | 2 +- ....Proxy.EventArguments.MultipartRequestPartSentEventArgs.html | 2 +- .../api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html | 2 +- .../Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html | 2 +- ....Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html | 2 +- docs/api/Titanium.Web.Proxy.EventArguments.html | 2 +- docs/api/Titanium.Web.Proxy.ExceptionHandler.html | 2 +- .../Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html | 2 +- ...tanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html | 2 +- docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html | 2 +- docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html | 2 +- docs/api/Titanium.Web.Proxy.Exceptions.html | 2 +- docs/api/Titanium.Web.Proxy.Helpers.RunTime.html | 2 +- docs/api/Titanium.Web.Proxy.Helpers.html | 2 +- docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html | 2 +- docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html | 2 +- docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html | 2 +- docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html | 2 +- docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Request.html | 2 +- docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Response.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html | 2 +- .../api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Responses.html | 2 +- docs/api/Titanium.Web.Proxy.Http.html | 2 +- docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html | 2 +- docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html | 2 +- docs/api/Titanium.Web.Proxy.Models.HttpHeader.html | 2 +- docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html | 2 +- .../api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html | 2 +- docs/api/Titanium.Web.Proxy.Models.html | 2 +- docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html | 2 +- docs/api/Titanium.Web.Proxy.Network.CertificateManager.html | 2 +- docs/api/Titanium.Web.Proxy.Network.html | 2 +- docs/api/Titanium.Web.Proxy.ProxyServer.html | 2 +- docs/api/Titanium.Web.Proxy.html | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html b/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html index c1dcd81f5..486b70cc4 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html index 9d9f1ff6c..94dcb8b6c 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html index 0142a762c..685c7e659 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html index 398b5a22f..73d1ad21a 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html index 087617766..f855f32fd 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html index 37fc288fc..8e6e8de4e 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html index 5f8fdd2f8..6f4dacd76 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html index d9bfeb87d..b4980e087 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.html b/docs/api/Titanium.Web.Proxy.EventArguments.html index 0cbc01c73..dcce933b7 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.ExceptionHandler.html b/docs/api/Titanium.Web.Proxy.ExceptionHandler.html index df496faa5..1579f7760 100644 --- a/docs/api/Titanium.Web.Proxy.ExceptionHandler.html +++ b/docs/api/Titanium.Web.Proxy.ExceptionHandler.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html b/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html index 9b837513d..e966e7d7c 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html index f8aa8ced5..61c499c5b 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html index b76309410..47368db2b 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html index cb79e0f4d..16980ca53 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.html b/docs/api/Titanium.Web.Proxy.Exceptions.html index c578540ed..f0cdcddfe 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html b/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html index 60916ec0d..f2748b66b 100644 --- a/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html +++ b/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Helpers.html b/docs/api/Titanium.Web.Proxy.Helpers.html index be01be7ee..bb389e061 100644 --- a/docs/api/Titanium.Web.Proxy.Helpers.html +++ b/docs/api/Titanium.Web.Proxy.Helpers.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html b/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html index 158fe4978..5837464b8 100644 --- a/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html +++ b/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html b/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html index 63e9d9d21..7d44ab0b9 100644 --- a/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html b/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html index d615e87ee..cf6de898d 100644 --- a/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html +++ b/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html b/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html index 88f31d580..0be9b1d95 100644 --- a/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html +++ b/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html b/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html index f1eb19351..4e3bfe8cb 100644 --- a/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html +++ b/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Request.html b/docs/api/Titanium.Web.Proxy.Http.Request.html index 7c169bad8..63d9f874a 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Request.html +++ b/docs/api/Titanium.Web.Proxy.Http.Request.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html b/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html index 4c45a4fe7..e6ee25761 100644 --- a/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html +++ b/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Response.html b/docs/api/Titanium.Web.Proxy.Http.Response.html index 5a789d502..4e661f9fd 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Response.html +++ b/docs/api/Titanium.Web.Proxy.Http.Response.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html b/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html index 3a24c85a0..34505730c 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html b/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html index 841700ad9..084f11d78 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html b/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html index 31dbf166b..79030f18e 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.html b/docs/api/Titanium.Web.Proxy.Http.Responses.html index 1cfc9f06e..1a90dcacf 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.html b/docs/api/Titanium.Web.Proxy.Http.html index 6c023dc6f..d8dbdd7ce 100644 --- a/docs/api/Titanium.Web.Proxy.Http.html +++ b/docs/api/Titanium.Web.Proxy.Http.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html b/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html index 7fc3b6e6e..3c3e2daa2 100644 --- a/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html +++ b/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html b/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html index 9b973be18..f0da51986 100644 --- a/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html +++ b/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html b/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html index 79b3b9a98..582da4533 100644 --- a/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html +++ b/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html b/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html index 9a6376d69..0f9bc074f 100644 --- a/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html +++ b/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html b/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html index 00c236443..6bee0a100 100644 --- a/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html +++ b/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.html b/docs/api/Titanium.Web.Proxy.Models.html index a94e7625a..d7420f20a 100644 --- a/docs/api/Titanium.Web.Proxy.Models.html +++ b/docs/api/Titanium.Web.Proxy.Models.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html b/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html index 4958346a3..d282131f0 100644 --- a/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html +++ b/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html b/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html index 1d21b311b..e6e945c98 100644 --- a/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html +++ b/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Network.html b/docs/api/Titanium.Web.Proxy.Network.html index 7bf3d2f01..8adeab07a 100644 --- a/docs/api/Titanium.Web.Proxy.Network.html +++ b/docs/api/Titanium.Web.Proxy.Network.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.ProxyServer.html b/docs/api/Titanium.Web.Proxy.ProxyServer.html index 7b921a904..b54a3ff7a 100644 --- a/docs/api/Titanium.Web.Proxy.ProxyServer.html +++ b/docs/api/Titanium.Web.Proxy.ProxyServer.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.html b/docs/api/Titanium.Web.Proxy.html index e075cb232..37e7b00e4 100644 --- a/docs/api/Titanium.Web.Proxy.html +++ b/docs/api/Titanium.Web.Proxy.html @@ -10,7 +10,7 @@ - + From 4848e5d79bee529c613abfc8eb88a088843cabc0 Mon Sep 17 00:00:00 2001 From: "rob.lascelles" Date: Wed, 24 Oct 2018 14:11:50 +0100 Subject: [PATCH 05/35] Add failing interception test that reads the request body and also cancels the request to the server; move ProxyTestController to separate file --- .../InterceptionTests.cs | 46 ++++++++ .../ProxyTestController.cs | 105 ++++++++++++++++++ .../SslTests.cs | 87 --------------- ...Titanium.Web.Proxy.IntegrationTests.csproj | 2 + 4 files changed, 153 insertions(+), 87 deletions(-) create mode 100644 tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs create mode 100644 tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs b/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs new file mode 100644 index 000000000..fd3971573 --- /dev/null +++ b/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs @@ -0,0 +1,46 @@ +using System; +using System.Net; +using System.Net.Http; +using System.Net.Mime; +using System.Text; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Titanium.Web.Proxy.IntegrationTests +{ + [TestClass] + public class InterceptionTests + { + [TestMethod] + public void CanInterceptPostRequests() + { + string testUrl = "http://interceptthis.com"; + int proxyPort = 8086; + var proxy = new ProxyTestController(); + proxy.StartProxy(proxyPort); + + using (var client = CreateHttpClient(testUrl, proxyPort)) + { + var response = client.PostAsync(new Uri(testUrl), new StringContent("hello!")).Result; + + Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + + var body = response.Content.ReadAsStringAsync().Result; + Assert.IsTrue(body.Contains("TitaniumWebProxy-Stopped!!")); + } + } + + private HttpClient CreateHttpClient(string url, int localProxyPort) + { + var handler = new HttpClientHandler + { + Proxy = new WebProxy($"http://localhost:{localProxyPort}", false), + UseProxy = true + }; + + var client = new HttpClient(handler); + + return client; + } + + } +} \ No newline at end of file diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs b/tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs new file mode 100644 index 000000000..855fb7d0a --- /dev/null +++ b/tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs @@ -0,0 +1,105 @@ +using System; +using System.Diagnostics; +using System.Net; +using System.Net.Security; +using System.Threading.Tasks; +using Titanium.Web.Proxy.EventArguments; +using Titanium.Web.Proxy.Models; + +namespace Titanium.Web.Proxy.IntegrationTests +{ + public class ProxyTestController + { + private readonly ProxyServer proxyServer; + + public ProxyTestController() + { + proxyServer = new ProxyServer(); + } + + public void StartProxy(int proxyPort) + { + proxyServer.BeforeRequest += OnRequest; + proxyServer.BeforeResponse += OnResponse; + proxyServer.ServerCertificateValidationCallback += OnCertificateValidation; + 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 + proxyServer.AddEndPoint(explicitEndPoint); + proxyServer.Start(); + + 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() + { + proxyServer.BeforeRequest -= OnRequest; + proxyServer.BeforeResponse -= OnResponse; + proxyServer.ServerCertificateValidationCallback -= OnCertificateValidation; + proxyServer.ClientCertificateSelectionCallback -= OnCertificateSelection; + + proxyServer.Stop(); + } + + // intecept & cancel, redirect or update requests + public async Task OnRequest(object sender, SessionEventArgs e) + { + Debug.WriteLine(e.WebSession.Request.Url); + + if (e.WebSession.Request.Url.Contains("interceptthis.com")) + { + if (e.WebSession.Request.HasBody) + { + var body = await e.GetRequestBodyAsString(); + } + + e.Ok("TitaniumWebProxy-Stopped!!"); + return; + } + + + await Task.FromResult(0); + } + + // Modify response + public async Task OnResponse(object sender, SessionEventArgs e) + { + await Task.FromResult(0); + } + + /// + /// Allows overriding default certificate validation logic + /// + /// + /// + public Task OnCertificateValidation(object sender, CertificateValidationEventArgs e) + { + // set IsValid to true/false based on Certificate Errors + if (e.SslPolicyErrors == SslPolicyErrors.None) + { + e.IsValid = true; + } + + return Task.FromResult(0); + } + + /// + /// Allows overriding default client certificate selection logic during mutual authentication + /// + /// + /// + public Task OnCertificateSelection(object sender, CertificateSelectionEventArgs e) + { + // set e.clientCertificate to override + + return Task.FromResult(0); + } + } +} \ No newline at end of file diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs index 2e8311592..87893d2a5 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs +++ b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs @@ -1,12 +1,7 @@ using System; -using System.Diagnostics; using System.Net; using System.Net.Http; -using System.Net.Security; -using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Titanium.Web.Proxy.EventArguments; -using Titanium.Web.Proxy.Models; namespace Titanium.Web.Proxy.IntegrationTests { @@ -43,86 +38,4 @@ private HttpClient CreateHttpClient(string url, int localProxyPort) return client; } } - - public class ProxyTestController - { - private readonly ProxyServer proxyServer; - - public ProxyTestController() - { - proxyServer = new ProxyServer(); - } - - public void StartProxy(int proxyPort) - { - proxyServer.BeforeRequest += OnRequest; - proxyServer.BeforeResponse += OnResponse; - proxyServer.ServerCertificateValidationCallback += OnCertificateValidation; - 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 - proxyServer.AddEndPoint(explicitEndPoint); - proxyServer.Start(); - - 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() - { - proxyServer.BeforeRequest -= OnRequest; - proxyServer.BeforeResponse -= OnResponse; - proxyServer.ServerCertificateValidationCallback -= OnCertificateValidation; - proxyServer.ClientCertificateSelectionCallback -= OnCertificateSelection; - - proxyServer.Stop(); - } - - // intecept & cancel, redirect or update requests - public async Task OnRequest(object sender, SessionEventArgs e) - { - Debug.WriteLine(e.WebSession.Request.Url); - await Task.FromResult(0); - } - - // Modify response - public async Task OnResponse(object sender, SessionEventArgs e) - { - await Task.FromResult(0); - } - - /// - /// Allows overriding default certificate validation logic - /// - /// - /// - public Task OnCertificateValidation(object sender, CertificateValidationEventArgs e) - { - // set IsValid to true/false based on Certificate Errors - if (e.SslPolicyErrors == SslPolicyErrors.None) - { - e.IsValid = true; - } - - return Task.FromResult(0); - } - - /// - /// Allows overriding default client certificate selection logic during mutual authentication - /// - /// - /// - public Task OnCertificateSelection(object sender, CertificateSelectionEventArgs e) - { - // set e.clientCertificate to override - - return Task.FromResult(0); - } - } } diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj b/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj index f3ddfd026..2dfb9b2d0 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj +++ b/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj @@ -70,6 +70,8 @@ + + From 9c56e6351af521e2111c09931d3f80a205febb6f Mon Sep 17 00:00:00 2001 From: "rob.lascelles" Date: Wed, 24 Oct 2018 14:13:08 +0100 Subject: [PATCH 06/35] This allows server to read body, and to cancel request to the server - but I don't know why! --- src/Titanium.Web.Proxy/EventArguments/SessionEventArgs.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Titanium.Web.Proxy/EventArguments/SessionEventArgs.cs b/src/Titanium.Web.Proxy/EventArguments/SessionEventArgs.cs index 03f98065c..0e0068f27 100644 --- a/src/Titanium.Web.Proxy/EventArguments/SessionEventArgs.cs +++ b/src/Titanium.Web.Proxy/EventArguments/SessionEventArgs.cs @@ -179,7 +179,7 @@ private async Task readBodyAsync(bool isRequest, CancellationToken cance internal async Task SyphonOutBodyAsync(bool isRequest, CancellationToken cancellationToken) { var requestResponse = isRequest ? (RequestResponseBase)WebSession.Request : WebSession.Response; - if (requestResponse.OriginalIsBodyRead || !requestResponse.OriginalHasBody) + if (requestResponse.IsBodyRead || !requestResponse.OriginalHasBody) { return; } From 487ecbdfdb3565425fc7b330b415dc190d245822 Mon Sep 17 00:00:00 2001 From: buildbot121 Date: Wed, 31 Oct 2018 18:07:40 +0000 Subject: [PATCH 07/35] API documentation update by build server --- .../Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html | 2 +- ...Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html | 2 +- ....Web.Proxy.EventArguments.CertificateSelectionEventArgs.html | 2 +- ...Web.Proxy.EventArguments.CertificateValidationEventArgs.html | 2 +- ....Proxy.EventArguments.MultipartRequestPartSentEventArgs.html | 2 +- .../api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html | 2 +- .../Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html | 2 +- ....Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html | 2 +- docs/api/Titanium.Web.Proxy.EventArguments.html | 2 +- docs/api/Titanium.Web.Proxy.ExceptionHandler.html | 2 +- .../Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html | 2 +- ...tanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html | 2 +- docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html | 2 +- docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html | 2 +- docs/api/Titanium.Web.Proxy.Exceptions.html | 2 +- docs/api/Titanium.Web.Proxy.Helpers.RunTime.html | 2 +- docs/api/Titanium.Web.Proxy.Helpers.html | 2 +- docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html | 2 +- docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html | 2 +- docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html | 2 +- docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html | 2 +- docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Request.html | 2 +- docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Response.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html | 2 +- .../api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html | 2 +- docs/api/Titanium.Web.Proxy.Http.Responses.html | 2 +- docs/api/Titanium.Web.Proxy.Http.html | 2 +- docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html | 2 +- docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html | 2 +- docs/api/Titanium.Web.Proxy.Models.HttpHeader.html | 2 +- docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html | 2 +- .../api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html | 2 +- docs/api/Titanium.Web.Proxy.Models.html | 2 +- docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html | 2 +- docs/api/Titanium.Web.Proxy.Network.CertificateManager.html | 2 +- docs/api/Titanium.Web.Proxy.Network.html | 2 +- docs/api/Titanium.Web.Proxy.ProxyServer.html | 2 +- docs/api/Titanium.Web.Proxy.html | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html b/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html index 486b70cc4..b23c82095 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html index 94dcb8b6c..0db080b88 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.BeforeSslAuthenticateEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html index 685c7e659..0d3820602 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateSelectionEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html index 73d1ad21a..b0730d705 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.CertificateValidationEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html index f855f32fd..3e6705c1c 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.MultipartRequestPartSentEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html index 8e6e8de4e..00fcdf2e9 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html index 6f4dacd76..911e3aeac 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.SessionEventArgsBase.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html b/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html index b4980e087..7539b28a7 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.html b/docs/api/Titanium.Web.Proxy.EventArguments.html index dcce933b7..eeec5ed88 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.ExceptionHandler.html b/docs/api/Titanium.Web.Proxy.ExceptionHandler.html index 1579f7760..65044801b 100644 --- a/docs/api/Titanium.Web.Proxy.ExceptionHandler.html +++ b/docs/api/Titanium.Web.Proxy.ExceptionHandler.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html b/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html index e966e7d7c..0eaa29d3d 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.BodyNotFoundException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html index 61c499c5b..a942f8552 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html index 47368db2b..74375b4b6 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html index 16980ca53..c11d71408 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.html b/docs/api/Titanium.Web.Proxy.Exceptions.html index f0cdcddfe..4ca2d33e7 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html b/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html index f2748b66b..a75b64eaf 100644 --- a/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html +++ b/docs/api/Titanium.Web.Proxy.Helpers.RunTime.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Helpers.html b/docs/api/Titanium.Web.Proxy.Helpers.html index bb389e061..db3f6f65d 100644 --- a/docs/api/Titanium.Web.Proxy.Helpers.html +++ b/docs/api/Titanium.Web.Proxy.Helpers.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html b/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html index 5837464b8..369e4e7b9 100644 --- a/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html +++ b/docs/api/Titanium.Web.Proxy.Http.ConnectRequest.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html b/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html index 7d44ab0b9..3aeda3727 100644 --- a/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.ConnectResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html b/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html index cf6de898d..059a3c892 100644 --- a/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html +++ b/docs/api/Titanium.Web.Proxy.Http.HeaderCollection.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html b/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html index 0be9b1d95..b8deaf29a 100644 --- a/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html +++ b/docs/api/Titanium.Web.Proxy.Http.HttpWebClient.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html b/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html index 4e3bfe8cb..0b0a5d63a 100644 --- a/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html +++ b/docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Request.html b/docs/api/Titanium.Web.Proxy.Http.Request.html index 63d9f874a..23f65830e 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Request.html +++ b/docs/api/Titanium.Web.Proxy.Http.Request.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html b/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html index e6ee25761..700980c8f 100644 --- a/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html +++ b/docs/api/Titanium.Web.Proxy.Http.RequestResponseBase.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Response.html b/docs/api/Titanium.Web.Proxy.Http.Response.html index 4e661f9fd..05aa23c16 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Response.html +++ b/docs/api/Titanium.Web.Proxy.Http.Response.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html b/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html index 34505730c..445876d23 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.GenericResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html b/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html index 084f11d78..6d0b2c3ab 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.OkResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html b/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html index 79030f18e..f488f56cd 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.RedirectResponse.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.Responses.html b/docs/api/Titanium.Web.Proxy.Http.Responses.html index 1a90dcacf..07aeb7e4c 100644 --- a/docs/api/Titanium.Web.Proxy.Http.Responses.html +++ b/docs/api/Titanium.Web.Proxy.Http.Responses.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Http.html b/docs/api/Titanium.Web.Proxy.Http.html index d8dbdd7ce..b1ef6016e 100644 --- a/docs/api/Titanium.Web.Proxy.Http.html +++ b/docs/api/Titanium.Web.Proxy.Http.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html b/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html index 3c3e2daa2..3722fbb21 100644 --- a/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html +++ b/docs/api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html b/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html index f0da51986..72c64190c 100644 --- a/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html +++ b/docs/api/Titanium.Web.Proxy.Models.ExternalProxy.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html b/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html index 582da4533..387b9ae5d 100644 --- a/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html +++ b/docs/api/Titanium.Web.Proxy.Models.HttpHeader.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html b/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html index 0f9bc074f..0da698c81 100644 --- a/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html +++ b/docs/api/Titanium.Web.Proxy.Models.ProxyEndPoint.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html b/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html index 6bee0a100..dd83875dc 100644 --- a/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html +++ b/docs/api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Models.html b/docs/api/Titanium.Web.Proxy.Models.html index d7420f20a..7cd90c173 100644 --- a/docs/api/Titanium.Web.Proxy.Models.html +++ b/docs/api/Titanium.Web.Proxy.Models.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html b/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html index d282131f0..14ff254b1 100644 --- a/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html +++ b/docs/api/Titanium.Web.Proxy.Network.CertificateEngine.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html b/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html index e6e945c98..c2f5431b4 100644 --- a/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html +++ b/docs/api/Titanium.Web.Proxy.Network.CertificateManager.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.Network.html b/docs/api/Titanium.Web.Proxy.Network.html index 8adeab07a..ad2361aef 100644 --- a/docs/api/Titanium.Web.Proxy.Network.html +++ b/docs/api/Titanium.Web.Proxy.Network.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.ProxyServer.html b/docs/api/Titanium.Web.Proxy.ProxyServer.html index b54a3ff7a..86044ec69 100644 --- a/docs/api/Titanium.Web.Proxy.ProxyServer.html +++ b/docs/api/Titanium.Web.Proxy.ProxyServer.html @@ -10,7 +10,7 @@ - + diff --git a/docs/api/Titanium.Web.Proxy.html b/docs/api/Titanium.Web.Proxy.html index 37e7b00e4..9c2e6e019 100644 --- a/docs/api/Titanium.Web.Proxy.html +++ b/docs/api/Titanium.Web.Proxy.html @@ -10,7 +10,7 @@ - + From e4f3e7d5124c78e29e5cfa469ddfca01c82a1dc1 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 21:13:23 -0400 Subject: [PATCH 08/35] setup integration tests for continous integration --- .build/build.ps1 | 14 ++- .../InterceptionTests.cs | 57 +++++++--- .../ProxyTestController.cs | 105 ------------------ .../SslTests.cs | 42 ++++--- ...Titanium.Web.Proxy.IntegrationTests.csproj | 8 +- .../Utilities/TestHelper.cs | 19 ++++ 6 files changed, 110 insertions(+), 135 deletions(-) delete mode 100644 tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs create mode 100644 tests/Titanium.Web.Proxy.IntegrationTests/Utilities/TestHelper.cs diff --git a/.build/build.ps1 b/.build/build.ps1 index 6e588b1e6..6bfcf4380 100644 --- a/.build/build.ps1 +++ b/.build/build.ps1 @@ -35,7 +35,7 @@ $MSBuild -replace ' ', '` ' FormatTaskName (("-"*25) + "[{0}]" + ("-"*25)) #default task -Task default -depends Clean, Build, Document, Package +Task default -depends Clean, Build, Document, Package, PrepareIntegrationTest #cleans obj, b Task Clean { @@ -123,3 +123,15 @@ Task Document -depends Build { Task Package -depends Document { exec { . $NuGet pack "$SolutionRoot\$ProjectName\$ProjectName.nuspec" -Properties Configuration=$Configuration -OutputDirectory "$RepoRoot" -Version "$Version" } } + +#install root cetificate needed for integration tests +Task PrepareIntegrationTest { + $pfx = new-object System.Security.Cryptography.X509Certificates.X509Certificate2 + $certPath = "$Here\lib\root-certificate-for-integration-test.pfx" + $pfxPass = "" + $pfx.import($certPath,$pfxPass,"Exportable,PersistKeySet") + $store = new-object System.Security.Cryptography.X509Certificates.X509Store([System.Security.Cryptography.X509Certificates.StoreName]::Root, "localmachine") + $store.open("MaxAllowed") + $store.add($pfx) + $store.close() +} \ No newline at end of file diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs b/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs index fd3971573..2cd8d8dd5 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs +++ b/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs @@ -1,9 +1,10 @@ using System; using System.Net; using System.Net.Http; -using System.Net.Mime; -using System.Text; +using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; +using Titanium.Web.Proxy.EventArguments; +using Titanium.Web.Proxy.Models; namespace Titanium.Web.Proxy.IntegrationTests { @@ -11,36 +12,64 @@ namespace Titanium.Web.Proxy.IntegrationTests public class InterceptionTests { [TestMethod] - public void CanInterceptPostRequests() + public async Task Can_Intercept_Post_Requests() { string testUrl = "http://interceptthis.com"; int proxyPort = 8086; var proxy = new ProxyTestController(); proxy.StartProxy(proxyPort); - using (var client = CreateHttpClient(testUrl, proxyPort)) + using (var client = TestHelper.CreateHttpClient(testUrl, proxyPort)) { - var response = client.PostAsync(new Uri(testUrl), new StringContent("hello!")).Result; + var response = await client.PostAsync(new Uri(testUrl), new StringContent("hello!")); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); - var body = response.Content.ReadAsStringAsync().Result; + var body = await response.Content.ReadAsStringAsync(); Assert.IsTrue(body.Contains("TitaniumWebProxy-Stopped!!")); } } - private HttpClient CreateHttpClient(string url, int localProxyPort) + private class ProxyTestController { - var handler = new HttpClientHandler + private readonly ProxyServer proxyServer; + + public ProxyTestController() { - Proxy = new WebProxy($"http://localhost:{localProxyPort}", false), - UseProxy = true - }; + proxyServer = new ProxyServer(); + proxyServer.CertificateManager.RootCertificateName = "root-certificate-for-integration-test.pfx"; + } - var client = new HttpClient(handler); + public void StartProxy(int proxyPort) + { + proxyServer.BeforeRequest += OnRequest; + var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, proxyPort, true); + proxyServer.AddEndPoint(explicitEndPoint); + proxyServer.Start(); + } - return client; - } + public void Stop() + { + proxyServer.BeforeRequest -= OnRequest; + proxyServer.Stop(); + proxyServer.Dispose(); + } + + public async Task OnRequest(object sender, SessionEventArgs e) + { + if (e.WebSession.Request.Url.Contains("interceptthis.com")) + { + if (e.WebSession.Request.HasBody) + { + var body = await e.GetRequestBodyAsString(); + } + e.Ok("TitaniumWebProxy-Stopped!!"); + return; + } + + await Task.FromResult(0); + } + } } } \ No newline at end of file diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs b/tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs deleted file mode 100644 index 855fb7d0a..000000000 --- a/tests/Titanium.Web.Proxy.IntegrationTests/ProxyTestController.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Diagnostics; -using System.Net; -using System.Net.Security; -using System.Threading.Tasks; -using Titanium.Web.Proxy.EventArguments; -using Titanium.Web.Proxy.Models; - -namespace Titanium.Web.Proxy.IntegrationTests -{ - public class ProxyTestController - { - private readonly ProxyServer proxyServer; - - public ProxyTestController() - { - proxyServer = new ProxyServer(); - } - - public void StartProxy(int proxyPort) - { - proxyServer.BeforeRequest += OnRequest; - proxyServer.BeforeResponse += OnResponse; - proxyServer.ServerCertificateValidationCallback += OnCertificateValidation; - 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 - proxyServer.AddEndPoint(explicitEndPoint); - proxyServer.Start(); - - 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() - { - proxyServer.BeforeRequest -= OnRequest; - proxyServer.BeforeResponse -= OnResponse; - proxyServer.ServerCertificateValidationCallback -= OnCertificateValidation; - proxyServer.ClientCertificateSelectionCallback -= OnCertificateSelection; - - proxyServer.Stop(); - } - - // intecept & cancel, redirect or update requests - public async Task OnRequest(object sender, SessionEventArgs e) - { - Debug.WriteLine(e.WebSession.Request.Url); - - if (e.WebSession.Request.Url.Contains("interceptthis.com")) - { - if (e.WebSession.Request.HasBody) - { - var body = await e.GetRequestBodyAsString(); - } - - e.Ok("TitaniumWebProxy-Stopped!!"); - return; - } - - - await Task.FromResult(0); - } - - // Modify response - public async Task OnResponse(object sender, SessionEventArgs e) - { - await Task.FromResult(0); - } - - /// - /// Allows overriding default certificate validation logic - /// - /// - /// - public Task OnCertificateValidation(object sender, CertificateValidationEventArgs e) - { - // set IsValid to true/false based on Certificate Errors - if (e.SslPolicyErrors == SslPolicyErrors.None) - { - e.IsValid = true; - } - - return Task.FromResult(0); - } - - /// - /// Allows overriding default client certificate selection logic during mutual authentication - /// - /// - /// - public Task OnCertificateSelection(object sender, CertificateSelectionEventArgs e) - { - // set e.clientCertificate to override - - return Task.FromResult(0); - } - } -} \ No newline at end of file diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs index 87893d2a5..d5b398684 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs +++ b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs @@ -1,41 +1,55 @@ using System; using System.Net; using System.Net.Http; +using System.Net.Security; +using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; +using Titanium.Web.Proxy.EventArguments; +using Titanium.Web.Proxy.Models; namespace Titanium.Web.Proxy.IntegrationTests { [TestClass] public class SslTests { - //[TestMethod] - //disable this test until CI is prepared to handle - public void TestSsl() + [TestMethod] + public async Task TestSsl() { - // expand this to stress test to find - // why in long run proxy becomes unresponsive as per issue #184 string testUrl = "https://google.com"; int proxyPort = 8086; var proxy = new ProxyTestController(); proxy.StartProxy(proxyPort); - using (var client = CreateHttpClient(testUrl, proxyPort)) + using (var client = TestHelper.CreateHttpClient(testUrl, proxyPort)) { - var response = client.GetAsync(new Uri(testUrl)).Result; + var response = await client.GetAsync(new Uri(testUrl)); } } + - private HttpClient CreateHttpClient(string url, int localProxyPort) + private class ProxyTestController { - var handler = new HttpClientHandler + private readonly ProxyServer proxyServer; + + public ProxyTestController() { - Proxy = new WebProxy($"http://localhost:{localProxyPort}", false), - UseProxy = true - }; + proxyServer = new ProxyServer(); + proxyServer.CertificateManager.RootCertificateName = "root-certificate-for-integration-test.pfx"; + } - var client = new HttpClient(handler); + public void StartProxy(int proxyPort) + { + var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, proxyPort, true); + proxyServer.AddEndPoint(explicitEndPoint); + proxyServer.Start(); + } + + public void Stop() + { + proxyServer.Stop(); + proxyServer.Dispose(); + } - return client; } } } diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj b/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj index 2dfb9b2d0..12fa6d77c 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj +++ b/tests/Titanium.Web.Proxy.IntegrationTests/Titanium.Web.Proxy.IntegrationTests.csproj @@ -71,9 +71,9 @@ - + @@ -81,6 +81,12 @@ Titanium.Web.Proxy + + + root-certificate-for-integration-test.pfx + PreserveNewest + + diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/Utilities/TestHelper.cs b/tests/Titanium.Web.Proxy.IntegrationTests/Utilities/TestHelper.cs new file mode 100644 index 000000000..a763a1d11 --- /dev/null +++ b/tests/Titanium.Web.Proxy.IntegrationTests/Utilities/TestHelper.cs @@ -0,0 +1,19 @@ +using System.Net; +using System.Net.Http; + +namespace Titanium.Web.Proxy.IntegrationTests +{ + public static class TestHelper + { + public static HttpClient CreateHttpClient(string url, int localProxyPort) + { + var handler = new HttpClientHandler + { + Proxy = new WebProxy($"http://localhost:{localProxyPort}", false), + UseProxy = true + }; + + return new HttpClient(handler); + } + } +} From 8ef4beed907a712e5f8a044919a591da286bf14e Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 21:13:52 -0400 Subject: [PATCH 09/35] add integration test root certificate to use --- .../root-certificate-for-integration-test.pfx | Bin 0 -> 2703 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .build/lib/root-certificate-for-integration-test.pfx diff --git a/.build/lib/root-certificate-for-integration-test.pfx b/.build/lib/root-certificate-for-integration-test.pfx new file mode 100644 index 0000000000000000000000000000000000000000..a1d0e8ee0103ad892f5b5ebbbde61392574e8e4c GIT binary patch literal 2703 zcmZWqc{tQtAO8(wrm-(mQFcO%YZm(!!$o2kW2?dFx|8a4$Ls*Ka(C=s}bPp{IWB)G= z7UzZ@OI1xP)65AsWnqC2L#fcwhD$m~oyB?mfT~vhxiK#{LD2=h*IrbguY9$+2j%q* zq@t!TbU#ki{OaJPGl%xSwLgW@#p-aLQ ze~Ce@=pD%u7EAU>GT}M~Bv`gL%X@`bmwpqJlr>p0-h80>8jTTHZ0+>T=ay5I6nRin z({~ifb`*c!TGmr3ML}s?m?23YmFDCO(d~^Cf6~dZjbG3E#n?fXJYYDzl}uR~do$Vp zv+~Pqi24W_agaAeSNKUSL(o9Srvsajm|FD3`k4x^%35K~J%~+oxZ-)hy!0wvI8B zIf~^+pdvB$tImb#jZ%wkW4m^WI&(OR3}@|fTE9iOF(KvdO0U=wRRgab%Vmc7R4RMUw5M=cJUX{%Dn0qNPU!OP zkZ@^r-SFeMYc5l5S!;i=_aHWy0hsrgIG?<{tZw;JP1`M6I^iCI#eE?|-Zrth>-Vjc z+G!I$nJYQtZd@sf1-iz=vZfv52H&kkgINdm;Uk#}S6Ov}m2JAEyWVabg?=EAuh}vE z?upb{SJGm>L^spe1>fIG^-v?)p`j^7Rco)&sO@H+*y&JMh>T8Jg{C22hkDg)RYw!| zx}0O*%x0rZ+s)2J6CVG#IiccAPvP0R0^YcE|4+yhY@P3*@>>~Mw5;Hkbe z4Xcmg7Hz0c@%NV{M}=F8MdD6I^te0~*dYh6C3%HRKX08zC3N2hRo1gnu|My-erpBk@4 z8QV;u{_+Jn))^8Nq$d9UM1k(hfmM#hW0evkJ9yUi`SqsV)_yT(IHcf=WBINGO@}Zt z)ILYmaWwM}JXsKMG~!>B={q|Jlx!o$!j>sR6aj_zt=+^ocd}Iym*S!j0wlqUJc!<) z5;yZ&3a{eF06Yn4BvsVr;Pbo-tsCjK_xQ-=(}NoP!zRU@+y(Ki9kT?j#Fw;mZU?eq z?4^V2ZPG=L4DYcmlBZU0KZ}jj8$X`uDmaad#v!k0tLdiJg(ndL- zxn)K$+ABvBZAp$A8nMSPRPenM_~*Su9LK<*PzV43=zxDoB*smY4B!DjAO!FQT!Apa z0B`|ssK9aXMWEwk#NCjdRH$@Be&@SxG z=Hw~Vt?be-;eNL(3-Z|W8p(FXdg$Zdb-a72Osk_C+O(L3x{dnKeZoP|wp@AE!pZ9; zq)Z;ePg(S!2%q`q`r#G(MALzQ>HL7O)QH%lP}Cz``gv#a6i&A?YO~UH4yGS?BEp0F zSB>1P94t8;5GY`a)#}sYir|~CkZvvc2;YnQz;F9TB4Z`7o5_r?5qvUXuP%k^*gP1N z!WTybgd5xxEQ^z|)ge4w+q~D%NdNpjRpsdH4)G#Ej`?DV<@ptk>nOj*&tW_xo$KAc z*13jkZAP?B{c3LeCz@Jp&xB+OmKDs@G-qb%*V8(8?9S|O;V$&Lh-l2t1gi9$3$gY0 z33iy8llG*)f52;6*^2;oOTXf z*oy6*P(s?&=(ElTq7OeNuWih&)$=>eL>-WPADp%MY}U>x$|qMah}({pBM=n4Vw5OI zX{7-}mI(!}y?g`)QsZmuj(@`=wNFm488u9m*0_@ke`3~?*{ef&YS`(a1>178nep`B=+m3O_dGqd>-VC4RGMdHgK%Qpf~9-v>8hzR zZpJL*JHAP_<|M|zBy*UhSZJ9}@KyGa7(BU$lkx~c-54M8vUN&rO!x9)%_L@R=|(*K ziVZ#4$G{7Qs$YD}e>bmP)F}1R^g<8f@bWA8(&yj&2^{G1Nsf!sLOjvCE2nL5SxVt=V~V zrseO<9Qp$Bo;l95e_+GJ8tQLrKi@Aro1o9D_t;!?D6BI)KHT$AEolfb{#971>9pF^ zc)_33w|z7Adc|$eYYtmt778eDOY%8iv0@#RS(2b>_S2uYiD-IQ9!tVlcwEX8C)LyZJ4SDwM#1O% zxk}K!6|O$iVh+2a)BIIv`R0rpFkZU8LAyWteoHN*TP)iNo*4xnA?mhjJ*sxB+K%Cu zV0FC`@-0WZ5;=^!U#)(a$K$4V?q`(ntaRkD8J$*Qu37d(Cq?U(pY?0ga{+}S8~g^l z+u0^KOuS`pLe$ku@B&TkQ3kDa-kc#BrpiRNlpNSA+z)P;imyOxp~cW}7@Gn&E6XV; ya Date: Thu, 1 Nov 2018 21:18:34 -0400 Subject: [PATCH 10/35] assert test --- tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs index d5b398684..8a8eec3fd 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs +++ b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs @@ -23,6 +23,7 @@ public async Task TestSsl() using (var client = TestHelper.CreateHttpClient(testUrl, proxyPort)) { var response = await client.GetAsync(new Uri(testUrl)); + Assert.IsNotNull(response); } } From 2e0864c4d5ea1ea15bbba98b5471dfa4d57740cc Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 21:26:29 -0400 Subject: [PATCH 11/35] use fixed version to prevent buildbot version change comments --- .build/setup.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.build/setup.ps1 b/.build/setup.ps1 index a0ccb55a1..1020fa911 100644 --- a/.build/setup.ps1 +++ b/.build/setup.ps1 @@ -36,7 +36,7 @@ function Install-DocFx() { if(!(Test-Path $env:ChocolateyInstall\lib\docfx\tools*)) { - choco install docfx + choco install docfx --version 2.40.1 } $env:Path += ";$env:ChocolateyInstall\lib\docfx\tools" } From 6e9016cfe0dcb77393ab41475c936a489f836fc4 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 21:45:45 -0400 Subject: [PATCH 12/35] cleanup integration tests --- .build/setup.ps1 | 2 +- .../InterceptionTests.cs | 42 +++++++++---------- .../SslTests.cs | 29 +++++-------- 3 files changed, 31 insertions(+), 42 deletions(-) diff --git a/.build/setup.ps1 b/.build/setup.ps1 index 1020fa911..efbdeb6b9 100644 --- a/.build/setup.ps1 +++ b/.build/setup.ps1 @@ -36,7 +36,7 @@ function Install-DocFx() { if(!(Test-Path $env:ChocolateyInstall\lib\docfx\tools*)) { - choco install docfx --version 2.40.1 + choco install docfx --version 2.40.1 } $env:Path += ";$env:ChocolateyInstall\lib\docfx\tools" } diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs b/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs index 2cd8d8dd5..ccdc40b57 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs +++ b/tests/Titanium.Web.Proxy.IntegrationTests/InterceptionTests.cs @@ -15,46 +15,36 @@ public class InterceptionTests public async Task Can_Intercept_Post_Requests() { string testUrl = "http://interceptthis.com"; - int proxyPort = 8086; - var proxy = new ProxyTestController(); - proxy.StartProxy(proxyPort); - using (var client = TestHelper.CreateHttpClient(testUrl, proxyPort)) + using (var proxy = new ProxyTestController()) { - var response = await client.PostAsync(new Uri(testUrl), new StringContent("hello!")); + using (var client = TestHelper.CreateHttpClient(testUrl, proxy.ListeningPort)) + { + var response = await client.PostAsync(new Uri(testUrl), new StringContent("hello!")); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); - var body = await response.Content.ReadAsStringAsync(); - Assert.IsTrue(body.Contains("TitaniumWebProxy-Stopped!!")); + var body = await response.Content.ReadAsStringAsync(); + Assert.IsTrue(body.Contains("TitaniumWebProxy-Stopped!!")); + } } } - private class ProxyTestController + private class ProxyTestController : IDisposable { private readonly ProxyServer proxyServer; + public int ListeningPort => proxyServer.ProxyEndPoints[0].Port; public ProxyTestController() { proxyServer = new ProxyServer(); proxyServer.CertificateManager.RootCertificateName = "root-certificate-for-integration-test.pfx"; - } - - public void StartProxy(int proxyPort) - { - proxyServer.BeforeRequest += OnRequest; - var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, proxyPort, true); + var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 0, true); proxyServer.AddEndPoint(explicitEndPoint); + proxyServer.BeforeRequest += OnRequest; proxyServer.Start(); } - public void Stop() - { - proxyServer.BeforeRequest -= OnRequest; - proxyServer.Stop(); - proxyServer.Dispose(); - } - public async Task OnRequest(object sender, SessionEventArgs e) { if (e.WebSession.Request.Url.Contains("interceptthis.com")) @@ -70,6 +60,14 @@ public async Task OnRequest(object sender, SessionEventArgs e) await Task.FromResult(0); } + + public void Dispose() + { + proxyServer.BeforeRequest -= OnRequest; + proxyServer.Stop(); + proxyServer.Dispose(); + } } + } } \ No newline at end of file diff --git a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs index 8a8eec3fd..0539ec6f6 100644 --- a/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs +++ b/tests/Titanium.Web.Proxy.IntegrationTests/SslTests.cs @@ -1,10 +1,7 @@ using System; using System.Net; -using System.Net.Http; -using System.Net.Security; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Titanium.Web.Proxy.EventArguments; using Titanium.Web.Proxy.Models; namespace Titanium.Web.Proxy.IntegrationTests @@ -16,41 +13,35 @@ public class SslTests public async Task TestSsl() { string testUrl = "https://google.com"; - int proxyPort = 8086; - var proxy = new ProxyTestController(); - proxy.StartProxy(proxyPort); - - using (var client = TestHelper.CreateHttpClient(testUrl, proxyPort)) + using (var proxy = new ProxyTestController()) { - var response = await client.GetAsync(new Uri(testUrl)); - Assert.IsNotNull(response); + using (var client = TestHelper.CreateHttpClient(testUrl, proxy.ListeningPort)) + { + var response = await client.GetAsync(new Uri(testUrl)); + Assert.IsNotNull(response); + } } } - - private class ProxyTestController + private class ProxyTestController : IDisposable { private readonly ProxyServer proxyServer; + public int ListeningPort => proxyServer.ProxyEndPoints[0].Port; public ProxyTestController() { proxyServer = new ProxyServer(); proxyServer.CertificateManager.RootCertificateName = "root-certificate-for-integration-test.pfx"; - } - - public void StartProxy(int proxyPort) - { - var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, proxyPort, true); + var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 0, true); proxyServer.AddEndPoint(explicitEndPoint); proxyServer.Start(); } - public void Stop() + public void Dispose() { proxyServer.Stop(); proxyServer.Dispose(); } - } } } From 87d289491c2f09b3940d74a4ab0702133958f26e Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 22:11:12 -0400 Subject: [PATCH 13/35] update nuget packages --- .../Titanium.Web.Proxy.Examples.Wpf.csproj | 4 +-- .../packages.config | 2 +- .../Titanium.Web.Proxy.Docs.csproj | 35 +++++++++++-------- .../Titanium.Web.Proxy.csproj | 4 +-- src/Titanium.Web.Proxy/packages.config | 6 ++++ 5 files changed, 31 insertions(+), 20 deletions(-) create mode 100644 src/Titanium.Web.Proxy/packages.config diff --git a/examples/Titanium.Web.Proxy.Examples.Wpf/Titanium.Web.Proxy.Examples.Wpf.csproj b/examples/Titanium.Web.Proxy.Examples.Wpf/Titanium.Web.Proxy.Examples.Wpf.csproj index 3280b2763..6f5783f92 100644 --- a/examples/Titanium.Web.Proxy.Examples.Wpf/Titanium.Web.Proxy.Examples.Wpf.csproj +++ b/examples/Titanium.Web.Proxy.Examples.Wpf/Titanium.Web.Proxy.Examples.Wpf.csproj @@ -72,8 +72,8 @@ true - - ..\..\src\packages\StreamExtended.1.0.188-beta\lib\net45\StreamExtended.dll + + ..\..\src\packages\StreamExtended.1.0.190\lib\net45\StreamExtended.dll diff --git a/examples/Titanium.Web.Proxy.Examples.Wpf/packages.config b/examples/Titanium.Web.Proxy.Examples.Wpf/packages.config index 8fc8ad3dd..a17502cc9 100644 --- a/examples/Titanium.Web.Proxy.Examples.Wpf/packages.config +++ b/examples/Titanium.Web.Proxy.Examples.Wpf/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj index 311ac990e..31d7a2137 100644 --- a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj +++ b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj @@ -34,12 +34,6 @@ 4 - - ..\packages\Portable.BouncyCastle.1.8.2\lib\net40\BouncyCastle.Crypto.dll - - - ..\packages\StreamExtended.1.0.160-beta\lib\net45\StreamExtended.dll - @@ -51,18 +45,11 @@ - - - - - - - + - @@ -72,8 +59,10 @@ + + @@ -91,15 +80,25 @@ - + + + + + + + + + + + @@ -110,7 +109,9 @@ + + @@ -119,8 +120,11 @@ + + + @@ -134,6 +138,7 @@ + diff --git a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj index 3f16d2ec8..5a28e40a8 100644 --- a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj +++ b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/src/Titanium.Web.Proxy/packages.config b/src/Titanium.Web.Proxy/packages.config new file mode 100644 index 000000000..fa035601e --- /dev/null +++ b/src/Titanium.Web.Proxy/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From d5a79a41b94913c1eeedff24e19276d489925bb0 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 22:21:13 -0400 Subject: [PATCH 14/35] try clear appveyor repo cache --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 8cecaa260..b396ddfe8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -26,6 +26,9 @@ configuration: Release build_script: - cmd: build.bat Package +cache: + + assembly_info: patch: true file: AssemblyInfo.* From bd6d41c53d7be0c74b4935b7117f320ef0e6299d Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 22:22:25 -0400 Subject: [PATCH 15/35] try clear repo build cache --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index b396ddfe8..f3563e91f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,7 +27,7 @@ build_script: - cmd: build.bat Package cache: - + - packages assembly_info: patch: true From f99b9a24a48bc5389744e49464ce172d3bb0d196 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 22:46:48 -0400 Subject: [PATCH 16/35] setup rdp --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index f3563e91f..7c2d43639 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -26,6 +26,9 @@ configuration: Release build_script: - cmd: build.bat Package +init: + - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) + cache: - packages From b2486d881715aa3c34b8588256c63d76e81b5080 Mon Sep 17 00:00:00 2001 From: buildbot121 Date: Fri, 2 Nov 2018 02:53:36 +0000 Subject: [PATCH 17/35] API documentation update by build server --- ...roxy.Exceptions.ProxyConnectException.html | 237 +++++++ ...m.Web.Proxy.Exceptions.ProxyException.html | 2 + ....Exceptions.ServerConnectionException.html | 207 ++++++ docs/api/Titanium.Web.Proxy.Exceptions.html | 7 + ...itanium.Web.Proxy.Http2.Hpack.Decoder.html | 319 +++++++++ ...um.Web.Proxy.Http2.Hpack.DynamicTable.html | 422 ++++++++++++ ...itanium.Web.Proxy.Http2.Hpack.Encoder.html | 302 +++++++++ ...Proxy.Http2.Hpack.HpackUtil.IndexType.html | 153 +++++ ...anium.Web.Proxy.Http2.Hpack.HpackUtil.html | 232 +++++++ ....Web.Proxy.Http2.Hpack.HuffmanDecoder.html | 248 +++++++ ....Web.Proxy.Http2.Hpack.HuffmanEncoder.html | 346 ++++++++++ ...Web.Proxy.Http2.Hpack.IHeaderListener.html | 173 +++++ ...ium.Web.Proxy.Http2.Hpack.StaticTable.html | 332 ++++++++++ docs/api/Titanium.Web.Proxy.Http2.Hpack.html | 147 +++++ ...oxy.Models.ProxyAuthenticationContext.html | 265 ++++++++ ...roxy.Models.ProxyAuthenticationResult.html | 157 +++++ ...um.Web.Proxy.Models.ProxyProtocolType.html | 162 +++++ docs/api/Titanium.Web.Proxy.Models.html | 9 + docs/api/Titanium.Web.Proxy.ProxyServer.html | 10 +- docs/api/toc.html | 49 ++ docs/index.json | 81 ++- docs/xrefmap.yml | 610 +++++++++++++++++- 22 files changed, 4454 insertions(+), 16 deletions(-) create mode 100644 docs/api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html create mode 100644 docs/api/Titanium.Web.Proxy.Exceptions.ServerConnectionException.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html create mode 100644 docs/api/Titanium.Web.Proxy.Http2.Hpack.html create mode 100644 docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html create mode 100644 docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html create mode 100644 docs/api/Titanium.Web.Proxy.Models.ProxyProtocolType.html diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html new file mode 100644 index 000000000..445c8ed85 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html @@ -0,0 +1,237 @@ + + + + + + + + Class ProxyConnectException + | Titanium Web Proxy + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +
+
+
+

+
+
    +
    +
    + + + +
    + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html index 74375b4b6..056a84f99 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ProxyException.html @@ -93,7 +93,9 @@
    Inheritance
    ProxyException
    + +
    Implements
    diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.ServerConnectionException.html b/docs/api/Titanium.Web.Proxy.Exceptions.ServerConnectionException.html new file mode 100644 index 000000000..71d0956da --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Exceptions.ServerConnectionException.html @@ -0,0 +1,207 @@ + + + + + + + + Class ServerConnectionException + | Titanium Web Proxy + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + +
    +
    +
    +

    +
    +
      +
      +
      + + + +
      + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Exceptions.html b/docs/api/Titanium.Web.Proxy.Exceptions.html index 4ca2d33e7..5bf0611b3 100644 --- a/docs/api/Titanium.Web.Proxy.Exceptions.html +++ b/docs/api/Titanium.Web.Proxy.Exceptions.html @@ -92,12 +92,19 @@

      ProxyAuthorizationException

      Proxy authorization exception.

      +
      +

      ProxyConnectException

      +

      Proxy Connection exception.

      ProxyException

      Base class exception associated with this proxy server.

      ProxyHttpException

      Proxy HTTP exception.

      +
      +

      ServerConnectionException

      +

      The server connection was closed upon first read with the new connection from pool. +Should retry the request with a new connection.

      diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html new file mode 100644 index 000000000..753cb3ef3 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html @@ -0,0 +1,319 @@ + + + + + + + + Class Decoder + | Titanium Web Proxy + + + + + + + + + + + + + + + +
      +
      + + + + +
      +
      + +
      +
      +
      +

      +
      +
        +
        +
        + + + +
        + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html new file mode 100644 index 000000000..1886bd2a2 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html @@ -0,0 +1,422 @@ + + + + + + + + Class DynamicTable + | Titanium Web Proxy + + + + + + + + + + + + + + + +
        +
        + + + + +
        +
        + +
        +
        +
        +

        +
        +
          +
          +
          + + + +
          + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html new file mode 100644 index 000000000..8e70d12a4 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html @@ -0,0 +1,302 @@ + + + + + + + + Class Encoder + | Titanium Web Proxy + + + + + + + + + + + + + + + +
          +
          + + + + +
          +
          + +
          +
          +
          +

          +
          +
            +
            +
            + + + +
            + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html new file mode 100644 index 000000000..8f9b8a7f6 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html @@ -0,0 +1,153 @@ + + + + + + + + Enum HpackUtil.IndexType + | Titanium Web Proxy + + + + + + + + + + + + + + + +
            +
            + + + + +
            +
            + +
            +
            +
            +

            +
            +
              +
              +
              + + + +
              + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html new file mode 100644 index 000000000..43f747e74 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html @@ -0,0 +1,232 @@ + + + + + + + + Class HpackUtil + | Titanium Web Proxy + + + + + + + + + + + + + + + +
              +
              + + + + +
              +
              + +
              +
              +
              +

              +
              +
                +
                +
                + + + +
                + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html new file mode 100644 index 000000000..7d0def9ac --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html @@ -0,0 +1,248 @@ + + + + + + + + Class HuffmanDecoder + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                +
                + + + + +
                +
                + +
                +
                +
                +

                +
                +
                  +
                  +
                  + + + +
                  + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html new file mode 100644 index 000000000..f07e3f2ee --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html @@ -0,0 +1,346 @@ + + + + + + + + Class HuffmanEncoder + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                  +
                  + + + + +
                  +
                  + +
                  +
                  +
                  +

                  +
                  +
                    +
                    +
                    + + + +
                    + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html new file mode 100644 index 000000000..3fe06f1d3 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html @@ -0,0 +1,173 @@ + + + + + + + + Interface IHeaderListener + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                    +
                    + + + + +
                    +
                    + +
                    +
                    +
                    +

                    +
                    +
                      +
                      +
                      + + + +
                      + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html new file mode 100644 index 000000000..95c4058a1 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html @@ -0,0 +1,332 @@ + + + + + + + + Class StaticTable + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                      +
                      + + + + +
                      +
                      + +
                      +
                      +
                      +

                      +
                      +
                        +
                        +
                        + + + +
                        + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Http2.Hpack.html b/docs/api/Titanium.Web.Proxy.Http2.Hpack.html new file mode 100644 index 000000000..b391be209 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Http2.Hpack.html @@ -0,0 +1,147 @@ + + + + + + + + Namespace Titanium.Web.Proxy.Http2.Hpack + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                        +
                        + + + + +
                        +
                        + +
                        +
                        +
                        +

                        +
                        +
                          +
                          +
                          + + + +
                          + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html b/docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html new file mode 100644 index 000000000..3c2bd1348 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html @@ -0,0 +1,265 @@ + + + + + + + + Class ProxyAuthenticationContext + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                          +
                          + + + + +
                          +
                          + +
                          +
                          +
                          +

                          +
                          +
                            +
                            +
                            + + + +
                            + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html b/docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html new file mode 100644 index 000000000..ad15f3361 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html @@ -0,0 +1,157 @@ + + + + + + + + Enum ProxyAuthenticationResult + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                            +
                            + + + + +
                            +
                            + +
                            +
                            +
                            +

                            +
                            +
                              +
                              +
                              + + + +
                              + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Models.ProxyProtocolType.html b/docs/api/Titanium.Web.Proxy.Models.ProxyProtocolType.html new file mode 100644 index 000000000..64f095a80 --- /dev/null +++ b/docs/api/Titanium.Web.Proxy.Models.ProxyProtocolType.html @@ -0,0 +1,162 @@ + + + + + + + + Enum ProxyProtocolType + | Titanium Web Proxy + + + + + + + + + + + + + + + +
                              +
                              + + + + +
                              +
                              + +
                              +
                              +
                              +

                              +
                              +
                                +
                                +
                                + + + +
                                + + + + + + diff --git a/docs/api/Titanium.Web.Proxy.Models.html b/docs/api/Titanium.Web.Proxy.Models.html index 7cd90c173..cd236b61a 100644 --- a/docs/api/Titanium.Web.Proxy.Models.html +++ b/docs/api/Titanium.Web.Proxy.Models.html @@ -96,6 +96,9 @@

                                External

                                HttpHeader

                                Http Header object used by proxy

                                +
                                +

                                ProxyAuthenticationContext

                                +

                                A context container for authentication flows

                                ProxyEndPoint

                                An abstract endpoint where the proxy listens

                                @@ -104,6 +107,12 @@

                                Enums +

                                +

                                ProxyAuthenticationResult

                                +
                                +

                                ProxyProtocolType

                                +
                                diff --git a/docs/api/Titanium.Web.Proxy.ProxyServer.html b/docs/api/Titanium.Web.Proxy.ProxyServer.html index 86044ec69..049a221ec 100644 --- a/docs/api/Titanium.Web.Proxy.ProxyServer.html +++ b/docs/api/Titanium.Web.Proxy.ProxyServer.html @@ -770,7 +770,7 @@
                                Property Value
                                - Func<SessionEventArgsBase, String, String, Task<ProxyAuthenticationContext>> + Func<SessionEventArgsBase, String, String, Task<ProxyAuthenticationContext>> @@ -1027,7 +1027,7 @@
                                Declaration
                                -

                                DisableSystemProxy(ProxyProtocolType)

                                +

                                DisableSystemProxy(ProxyProtocolType)

                                Clear the specified proxy setting for current machine.

                                @@ -1046,7 +1046,7 @@
                                Parameters
                                - ProxyProtocolType + ProxyProtocolType protocolType @@ -1154,7 +1154,7 @@
                                Parameters
                                -

                                SetAsSystemProxy(ExplicitProxyEndPoint, ProxyProtocolType)

                                +

                                SetAsSystemProxy(ExplicitProxyEndPoint, ProxyProtocolType)

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

                                @@ -1179,7 +1179,7 @@
                                Parameters
                                - ProxyProtocolType + ProxyProtocolType protocolType

                                The proxy protocol type.

                                diff --git a/docs/api/toc.html b/docs/api/toc.html index 01d092c49..75ffda224 100644 --- a/docs/api/toc.html +++ b/docs/api/toc.html @@ -66,12 +66,18 @@
                              • ProxyAuthorizationException
                              • +
                              • + ProxyConnectException +
                              • ProxyException
                              • ProxyHttpException
                              • +
                              • + ServerConnectionException +
                              • @@ -131,6 +137,40 @@
                              • +
                              • + + Titanium.Web.Proxy.Http2.Hpack + + +
                              • Titanium.Web.Proxy.Models @@ -145,9 +185,18 @@
                              • HttpHeader
                              • +
                              • + ProxyAuthenticationContext +
                              • +
                              • + ProxyAuthenticationResult +
                              • ProxyEndPoint
                              • +
                              • + ProxyProtocolType +
                              • TransparentProxyEndPoint
                              • diff --git a/docs/index.json b/docs/index.json index 2ccafa949..97213844a 100644 --- a/docs/index.json +++ b/docs/index.json @@ -57,23 +57,33 @@ "api/Titanium.Web.Proxy.Exceptions.html": { "href": "api/Titanium.Web.Proxy.Exceptions.html", "title": "Namespace Titanium.Web.Proxy.Exceptions | Titanium Web Proxy", - "keywords": "Namespace Titanium.Web.Proxy.Exceptions Classes BodyNotFoundException An exception thrown when body is unexpectedly empty. ProxyAuthorizationException Proxy authorization exception. ProxyException Base class exception associated with this proxy server. ProxyHttpException Proxy HTTP exception." + "keywords": "Namespace Titanium.Web.Proxy.Exceptions Classes BodyNotFoundException An exception thrown when body is unexpectedly empty. ProxyAuthorizationException Proxy authorization exception. ProxyConnectException Proxy Connection exception. ProxyException Base class exception associated with this proxy server. ProxyHttpException Proxy HTTP exception. ServerConnectionException The server connection was closed upon first read with the new connection from pool. Should retry the request with a new connection." }, "api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html": { "href": "api/Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.html", "title": "Class ProxyAuthorizationException | Titanium Web Proxy", "keywords": "Class ProxyAuthorizationException Proxy authorization exception. Inheritance Object Exception ProxyException ProxyAuthorizationException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Exceptions Assembly : Titanium.Web.Proxy.dll Syntax public class ProxyAuthorizationException : ProxyException, ISerializable, _Exception Properties Headers Headers associated with the authorization exception. Declaration public IEnumerable Headers { get; } Property Value Type Description IEnumerable < HttpHeader > Session The current session within which this error happened. Declaration public SessionEventArgsBase Session { get; } Property Value Type Description SessionEventArgsBase Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" }, + "api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html": { + "href": "api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html", + "title": "Class ProxyConnectException | Titanium Web Proxy", + "keywords": "Class ProxyConnectException Proxy Connection exception. Inheritance Object Exception ProxyException ProxyConnectException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Exceptions Assembly : Titanium.Web.Proxy.dll Syntax public class ProxyConnectException : ProxyException, ISerializable, _Exception Properties ConnectEventArgs Gets session info associated to the exception. Declaration public TunnelConnectSessionEventArgs ConnectEventArgs { get; } Property Value Type Description TunnelConnectSessionEventArgs Remarks This object properties should not be edited. Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" + }, "api/Titanium.Web.Proxy.Exceptions.ProxyException.html": { "href": "api/Titanium.Web.Proxy.Exceptions.ProxyException.html", "title": "Class ProxyException | Titanium Web Proxy", - "keywords": "Class ProxyException Base class exception associated with this proxy server. Inheritance Object Exception ProxyException BodyNotFoundException ProxyAuthorizationException ProxyHttpException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Exceptions Assembly : Titanium.Web.Proxy.dll Syntax public abstract class ProxyException : Exception, ISerializable, _Exception Constructors ProxyException(String) Initializes a new instance of the ProxyException class. must be invoked by derived classes' constructors Declaration protected ProxyException(string message) Parameters Type Name Description String message Exception message ProxyException(String, Exception) Initializes a new instance of the ProxyException class. must be invoked by derived classes' constructors Declaration protected ProxyException(string message, Exception innerException) Parameters Type Name Description String message Excception message Exception innerException Inner exception associated Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" + "keywords": "Class ProxyException Base class exception associated with this proxy server. Inheritance Object Exception ProxyException BodyNotFoundException ProxyAuthorizationException ProxyConnectException ProxyHttpException ServerConnectionException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Exceptions Assembly : Titanium.Web.Proxy.dll Syntax public abstract class ProxyException : Exception, ISerializable, _Exception Constructors ProxyException(String) Initializes a new instance of the ProxyException class. must be invoked by derived classes' constructors Declaration protected ProxyException(string message) Parameters Type Name Description String message Exception message ProxyException(String, Exception) Initializes a new instance of the ProxyException class. must be invoked by derived classes' constructors Declaration protected ProxyException(string message, Exception innerException) Parameters Type Name Description String message Excception message Exception innerException Inner exception associated Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" }, "api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html": { "href": "api/Titanium.Web.Proxy.Exceptions.ProxyHttpException.html", "title": "Class ProxyHttpException | Titanium Web Proxy", "keywords": "Class ProxyHttpException Proxy HTTP exception. Inheritance Object Exception ProxyException ProxyHttpException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Exceptions Assembly : Titanium.Web.Proxy.dll Syntax public class ProxyHttpException : ProxyException, ISerializable, _Exception Properties SessionEventArgs Gets session info associated to the exception. Declaration public SessionEventArgs SessionEventArgs { get; } Property Value Type Description SessionEventArgs Remarks This object properties should not be edited. Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" }, + "api/Titanium.Web.Proxy.Exceptions.ServerConnectionException.html": { + "href": "api/Titanium.Web.Proxy.Exceptions.ServerConnectionException.html", + "title": "Class ServerConnectionException | Titanium Web Proxy", + "keywords": "Class ServerConnectionException The server connection was closed upon first read with the new connection from pool. Should retry the request with a new connection. Inheritance Object Exception ProxyException ServerConnectionException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.ToString() Exception.GetObjectData(SerializationInfo, StreamingContext) Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Exception.SerializeObjectState Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Exceptions Assembly : Titanium.Web.Proxy.dll Syntax public class ServerConnectionException : ProxyException, ISerializable, _Exception Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" + }, "api/Titanium.Web.Proxy.Helpers.html": { "href": "api/Titanium.Web.Proxy.Helpers.html", "title": "Namespace Titanium.Web.Proxy.Helpers | Titanium Web Proxy", @@ -154,6 +164,56 @@ "title": "Class RedirectResponse | Titanium Web Proxy", "keywords": "Class RedirectResponse The http redirect response. Inheritance Object RequestResponseBase Response RedirectResponse Inherited Members Response.StatusCode Response.StatusDescription Response.HasBody Response.KeepAlive Response.Is100Continue Response.ExpectationFailed Response.HeaderText RequestResponseBase.BodyInternal RequestResponseBase.OriginalIsBodyRead RequestResponseBase.KeepBody RequestResponseBase.HttpVersion RequestResponseBase.Headers RequestResponseBase.ContentLength RequestResponseBase.ContentEncoding RequestResponseBase.Encoding RequestResponseBase.ContentType RequestResponseBase.IsChunked RequestResponseBase.Body RequestResponseBase.BodyString RequestResponseBase.IsBodyRead RequestResponseBase.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Http.Responses Assembly : Titanium.Web.Proxy.dll Syntax public sealed class RedirectResponse : Response Constructors RedirectResponse() Initializes a new instance of the RedirectResponse class. Declaration public RedirectResponse()" }, + "api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html", + "title": "Class Decoder | Titanium Web Proxy", + "keywords": "Class Decoder Inheritance Object Decoder 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.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public class Decoder Constructors Decoder(Int32, Int32) Initializes a new instance of the Decoder class. Declaration public Decoder(int maxHeaderSize, int maxHeaderTableSize) Parameters Type Name Description Int32 maxHeaderSize Max header size. Int32 maxHeaderTableSize Max header table size. Methods Decode(BinaryReader, IHeaderListener) Decode the header block into header fields. Declaration public void Decode(BinaryReader input, IHeaderListener headerListener) Parameters Type Name Description BinaryReader input Input. IHeaderListener headerListener Header listener. EndHeaderBlock() End the current header block. Returns if the header field has been truncated. This must be called after the header block has been completely decoded. Declaration public bool EndHeaderBlock() Returns Type Description Boolean true , if header block was ended, false otherwise. GetMaxHeaderTableSize() Return the maximum table size. This is the maximum size allowed by both the encoder and the decoder. Declaration public int GetMaxHeaderTableSize() Returns Type Description Int32 The max header table size. SetMaxHeaderTableSize(Int32) Set the maximum table size. If this is below the maximum size of the dynamic table used by the encoder, the beginning of the next header block MUST signal this change. Declaration public void SetMaxHeaderTableSize(int maxHeaderTableSize) Parameters Type Name Description Int32 maxHeaderTableSize Max header table size." + }, + "api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html", + "title": "Class DynamicTable | Titanium Web Proxy", + "keywords": "Class DynamicTable Inheritance Object DynamicTable 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.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public class DynamicTable Constructors DynamicTable(Int32) Creates a new dynamic table with the specified initial capacity. Declaration public DynamicTable(int initialCapacity) Parameters Type Name Description Int32 initialCapacity Initial capacity. Properties Capacity Return the maximum allowable size of the dynamic table. Declaration public int Capacity { get; } Property Value Type Description Int32 The capacity. Size Return the current size of the dynamic table. This is the sum of the size of the entries. Declaration public int Size { get; } Property Value Type Description Int32 The size. Methods Add(HttpHeader) Add the header field to the dynamic table. Entries are evicted from the dynamic table until the size of the table and the new header field is less than or equal to the table's capacity. If the size of the new entry is larger than the table's capacity, the dynamic table will be cleared. Declaration public void Add(HttpHeader header) Parameters Type Name Description HttpHeader header Header. Clear() Remove all entries from the dynamic table. Declaration public void Clear() GetEntry(Int32) Return the header field at the given index. The first and newest entry is always at index 1, and the oldest entry is at the index length(). Declaration public HttpHeader GetEntry(int index) Parameters Type Name Description Int32 index Index. Returns Type Description HttpHeader The entry. Length() Return the number of header fields in the dynamic table. Declaration public int Length() Returns Type Description Int32 Remove() Remove and return the oldest header field from the dynamic table. Declaration public HttpHeader Remove() Returns Type Description HttpHeader SetCapacity(Int32) Set the maximum size of the dynamic table. Entries are evicted from the dynamic table until the size of the table is less than or equal to the maximum size. Declaration public void SetCapacity(int capacity) Parameters Type Name Description Int32 capacity Capacity." + }, + "api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html", + "title": "Class Encoder | Titanium Web Proxy", + "keywords": "Class Encoder Inheritance Object Encoder 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.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public class Encoder Constructors Encoder(Int32) Initializes a new instance of the Encoder class. Declaration public Encoder(int maxHeaderTableSize) Parameters Type Name Description Int32 maxHeaderTableSize Max header table size. Properties MaxHeaderTableSize Gets the the maximum table size. Declaration public int MaxHeaderTableSize { get; } Property Value Type Description Int32 The max header table size. Methods EncodeHeader(BinaryWriter, String, String, Boolean) Encode the header field into the header block. Declaration public void EncodeHeader(BinaryWriter output, string name, string value, bool sensitive = false) Parameters Type Name Description BinaryWriter output Output. String name Name. String value Value. Boolean sensitive If set to true sensitive. SetMaxHeaderTableSize(BinaryWriter, Int32) Set the maximum table size. Declaration public void SetMaxHeaderTableSize(BinaryWriter output, int maxHeaderTableSize) Parameters Type Name Description BinaryWriter output Output. Int32 maxHeaderTableSize Max header table size." + }, + "api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html", + "title": "Class HpackUtil | Titanium Web Proxy", + "keywords": "Class HpackUtil Inheritance Object HpackUtil 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.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public static class HpackUtil Fields HuffmanCodeLengths Declaration public static readonly byte[] HuffmanCodeLengths Field Value Type Description Byte [] HuffmanCodes Declaration public static readonly int[] HuffmanCodes Field Value Type Description Int32 [] HuffmanEos Declaration public const int HuffmanEos = 256 Field Value Type Description Int32" + }, + "api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html", + "title": "Enum HpackUtil.IndexType | Titanium Web Proxy", + "keywords": "Enum HpackUtil.IndexType Namespace : Titanium.Web.Proxy.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public enum IndexType Fields Name Description Incremental Never None" + }, + "api/Titanium.Web.Proxy.Http2.Hpack.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.html", + "title": "Namespace Titanium.Web.Proxy.Http2.Hpack | Titanium Web Proxy", + "keywords": "Namespace Titanium.Web.Proxy.Http2.Hpack Classes Decoder DynamicTable Encoder HpackUtil HuffmanDecoder HuffmanEncoder StaticTable Interfaces IHeaderListener Enums HpackUtil.IndexType" + }, + "api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html", + "title": "Class HuffmanDecoder | Titanium Web Proxy", + "keywords": "Class HuffmanDecoder Inheritance Object HuffmanDecoder 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.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public class HuffmanDecoder Fields Instance Huffman Decoder Declaration public static readonly HuffmanDecoder Instance Field Value Type Description HuffmanDecoder Methods Decode(Byte[]) Decompresses the given Huffman coded string literal. Declaration public string Decode(byte[] buf) Parameters Type Name Description Byte [] buf the string literal to be decoded Returns Type Description String the output stream for the compressed data Exceptions Type Condition IOException throws IOException if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed." + }, + "api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html", + "title": "Class HuffmanEncoder | Titanium Web Proxy", + "keywords": "Class HuffmanEncoder Inheritance Object HuffmanEncoder 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.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public class HuffmanEncoder Fields Instance Huffman Encoder Declaration public static readonly HuffmanEncoder Instance Field Value Type Description HuffmanEncoder Methods Encode(BinaryWriter, Byte[]) Compresses the input string literal using the Huffman coding. Declaration public void Encode(BinaryWriter output, byte[] data) Parameters Type Name Description BinaryWriter output the output stream for the compressed data Byte [] data the string literal to be Huffman encoded Exceptions Type Condition IOException if an I/O error occurs. Encode(BinaryWriter, Byte[], Int32, Int32) Compresses the input string literal using the Huffman coding. Declaration public void Encode(BinaryWriter output, byte[] data, int off, int len) Parameters Type Name Description BinaryWriter output the output stream for the compressed data Byte [] data the string literal to be Huffman encoded Int32 off the start offset in the data Int32 len the number of bytes to encode Exceptions Type Condition IOException if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed. GetEncodedLength(Byte[]) Returns the number of bytes required to Huffman encode the input string literal. Declaration public int GetEncodedLength(byte[] data) Parameters Type Name Description Byte [] data the string literal to be Huffman encoded Returns Type Description Int32 the number of bytes required to Huffman encode data" + }, + "api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html", + "title": "Interface IHeaderListener | Titanium Web Proxy", + "keywords": "Interface IHeaderListener Namespace : Titanium.Web.Proxy.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public interface IHeaderListener Methods AddHeader(String, String, Boolean) EmitHeader is called by the decoder during header field emission. The name and value byte arrays must not be modified. Declaration void AddHeader(string name, string value, bool sensitive) Parameters Type Name Description String name Name. String value Value. Boolean sensitive If set to true sensitive." + }, + "api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html": { + "href": "api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html", + "title": "Class StaticTable | Titanium Web Proxy", + "keywords": "Class StaticTable Inheritance Object StaticTable 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.Http2.Hpack Assembly : Titanium.Web.Proxy.dll Syntax public static class StaticTable Properties Length The number of header fields in the static table. Declaration public static int Length { get; } Property Value Type Description Int32 The length. Methods Get(Int32) Return the http header field at the given index value. Declaration public static HttpHeader Get(int index) Parameters Type Name Description Int32 index Index. Returns Type Description HttpHeader The header field. GetIndex(String) Returns the lowest index value for the given header field name in the static table. Returns -1 if the header field name is not in the static table. Declaration public static int GetIndex(string name) Parameters Type Name Description String name Name. Returns Type Description Int32 The index. GetIndex(String, String) Returns the index value for the given header field in the static table. Returns -1 if the header field is not in the static table. Declaration public static int GetIndex(string name, string value) Parameters Type Name Description String name Name. String value Value. Returns Type Description Int32 The index." + }, "api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html": { "href": "api/Titanium.Web.Proxy.Models.ExplicitProxyEndPoint.html", "title": "Class ExplicitProxyEndPoint | Titanium Web Proxy", @@ -167,18 +227,33 @@ "api/Titanium.Web.Proxy.Models.html": { "href": "api/Titanium.Web.Proxy.Models.html", "title": "Namespace Titanium.Web.Proxy.Models | Titanium Web Proxy", - "keywords": "Namespace Titanium.Web.Proxy.Models Classes ExplicitProxyEndPoint A proxy endpoint that the client is aware of. So client application know that it is communicating with a proxy server. ExternalProxy An upstream proxy this proxy uses if any. HttpHeader Http Header object used by proxy ProxyEndPoint An abstract endpoint where the proxy listens TransparentProxyEndPoint A proxy end point client is not aware of. Useful when requests are redirected to this proxy end point through port forwarding via router." + "keywords": "Namespace Titanium.Web.Proxy.Models Classes ExplicitProxyEndPoint A proxy endpoint that the client is aware of. So client application know that it is communicating with a proxy server. ExternalProxy An upstream proxy this proxy uses if any. HttpHeader Http Header object used by proxy ProxyAuthenticationContext A context container for authentication flows ProxyEndPoint An abstract endpoint where the proxy listens TransparentProxyEndPoint A proxy end point client is not aware of. Useful when requests are redirected to this proxy end point through port forwarding via router. Enums ProxyAuthenticationResult ProxyProtocolType" }, "api/Titanium.Web.Proxy.Models.HttpHeader.html": { "href": "api/Titanium.Web.Proxy.Models.HttpHeader.html", "title": "Class HttpHeader | Titanium Web Proxy", "keywords": "Class HttpHeader Http Header object used by proxy Inheritance Object HttpHeader Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Models Assembly : Titanium.Web.Proxy.dll Syntax public class HttpHeader Constructors HttpHeader(String, String) Initialize a new instance. Declaration public HttpHeader(string name, string value) Parameters Type Name Description String name Header name. String value Header value. Fields HttpHeaderOverhead HPACK: Header Compression for HTTP/2 Section 4.1. Calculating Table Size The additional 32 octets account for an estimated overhead associated with an entry. Declaration public const int HttpHeaderOverhead = 32 Field Value Type Description Int32 Properties Name Header Name. Declaration public string Name { get; set; } Property Value Type Description String Size Declaration public int Size { get; } Property Value Type Description Int32 Value Header Value. Declaration public string Value { get; set; } Property Value Type Description String Methods SizeOf(String, String) Declaration public static int SizeOf(string name, string value) Parameters Type Name Description String name String value Returns Type Description Int32 ToString() Returns header as a valid header string. Declaration public override string ToString() Returns Type Description String Overrides Object.ToString()" }, + "api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html": { + "href": "api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html", + "title": "Class ProxyAuthenticationContext | Titanium Web Proxy", + "keywords": "Class ProxyAuthenticationContext A context container for authentication flows Inheritance Object ProxyAuthenticationContext 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.Models Assembly : Titanium.Web.Proxy.dll Syntax public class ProxyAuthenticationContext Properties Continuation An optional continuation token to return to the caller if set Declaration public string Continuation { get; set; } Property Value Type Description String Result The result of the current authentication request Declaration public ProxyAuthenticationResult Result { get; set; } Property Value Type Description ProxyAuthenticationResult Methods Failed() Declaration public static ProxyAuthenticationContext Failed() Returns Type Description ProxyAuthenticationContext Succeeded() Declaration public static ProxyAuthenticationContext Succeeded() Returns Type Description ProxyAuthenticationContext" + }, + "api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html": { + "href": "api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html", + "title": "Enum ProxyAuthenticationResult | Titanium Web Proxy", + "keywords": "Enum ProxyAuthenticationResult Namespace : Titanium.Web.Proxy.Models Assembly : Titanium.Web.Proxy.dll Syntax public enum ProxyAuthenticationResult Fields Name Description ContinuationNeeded Indicates that this stage of the authentication request succeeded And a second pass of the handshake needs to occur Failure Indicates the authentication request failed Success Indicates the authentication request was successful" + }, "api/Titanium.Web.Proxy.Models.ProxyEndPoint.html": { "href": "api/Titanium.Web.Proxy.Models.ProxyEndPoint.html", "title": "Class ProxyEndPoint | Titanium Web Proxy", "keywords": "Class ProxyEndPoint An abstract endpoint where the proxy listens Inheritance Object ProxyEndPoint ExplicitProxyEndPoint TransparentProxyEndPoint 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.Models Assembly : Titanium.Web.Proxy.dll Syntax public abstract class ProxyEndPoint Constructors ProxyEndPoint(IPAddress, Int32, Boolean) Constructor. Declaration protected ProxyEndPoint(IPAddress ipAddress, int port, bool decryptSsl) Parameters Type Name Description IPAddress ipAddress Int32 port Boolean decryptSsl Properties DecryptSsl Enable SSL? Declaration public bool DecryptSsl { get; } Property Value Type Description Boolean IpAddress Ip Address we are listening. Declaration public IPAddress IpAddress { get; } Property Value Type Description IPAddress IpV6Enabled Is IPv6 enabled? Declaration public bool IpV6Enabled { get; } Property Value Type Description Boolean Port Port we are listening. Declaration public int Port { get; } Property Value Type Description Int32" }, + "api/Titanium.Web.Proxy.Models.ProxyProtocolType.html": { + "href": "api/Titanium.Web.Proxy.Models.ProxyProtocolType.html", + "title": "Enum ProxyProtocolType | Titanium Web Proxy", + "keywords": "Enum ProxyProtocolType Namespace : Titanium.Web.Proxy.Models Assembly : Titanium.Web.Proxy.dll Syntax [Flags] public enum ProxyProtocolType Fields Name Description AllHttp Both HTTP and HTTPS Http HTTP Https HTTPS None The none" + }, "api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html": { "href": "api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html", "title": "Class TransparentProxyEndPoint | Titanium Web Proxy", diff --git a/docs/xrefmap.yml b/docs/xrefmap.yml index 648782f34..a0b0c22bb 100644 --- a/docs/xrefmap.yml +++ b/docs/xrefmap.yml @@ -778,6 +778,25 @@ references: isSpec: "True" fullName: Titanium.Web.Proxy.Exceptions.ProxyAuthorizationException.Session nameWithType: ProxyAuthorizationException.Session +- uid: Titanium.Web.Proxy.Exceptions.ProxyConnectException + name: ProxyConnectException + href: api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html + commentId: T:Titanium.Web.Proxy.Exceptions.ProxyConnectException + fullName: Titanium.Web.Proxy.Exceptions.ProxyConnectException + nameWithType: ProxyConnectException +- uid: Titanium.Web.Proxy.Exceptions.ProxyConnectException.ConnectEventArgs + name: ConnectEventArgs + href: api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html#Titanium_Web_Proxy_Exceptions_ProxyConnectException_ConnectEventArgs + commentId: P:Titanium.Web.Proxy.Exceptions.ProxyConnectException.ConnectEventArgs + fullName: Titanium.Web.Proxy.Exceptions.ProxyConnectException.ConnectEventArgs + nameWithType: ProxyConnectException.ConnectEventArgs +- uid: Titanium.Web.Proxy.Exceptions.ProxyConnectException.ConnectEventArgs* + name: ConnectEventArgs + href: api/Titanium.Web.Proxy.Exceptions.ProxyConnectException.html#Titanium_Web_Proxy_Exceptions_ProxyConnectException_ConnectEventArgs_ + commentId: Overload:Titanium.Web.Proxy.Exceptions.ProxyConnectException.ConnectEventArgs + isSpec: "True" + fullName: Titanium.Web.Proxy.Exceptions.ProxyConnectException.ConnectEventArgs + nameWithType: ProxyConnectException.ConnectEventArgs - uid: Titanium.Web.Proxy.Exceptions.ProxyException name: ProxyException href: api/Titanium.Web.Proxy.Exceptions.ProxyException.html @@ -822,6 +841,12 @@ references: isSpec: "True" fullName: Titanium.Web.Proxy.Exceptions.ProxyHttpException.SessionEventArgs nameWithType: ProxyHttpException.SessionEventArgs +- uid: Titanium.Web.Proxy.Exceptions.ServerConnectionException + name: ServerConnectionException + href: api/Titanium.Web.Proxy.Exceptions.ServerConnectionException.html + commentId: T:Titanium.Web.Proxy.Exceptions.ServerConnectionException + fullName: Titanium.Web.Proxy.Exceptions.ServerConnectionException + nameWithType: ServerConnectionException - uid: Titanium.Web.Proxy.Helpers name: Titanium.Web.Proxy.Helpers href: api/Titanium.Web.Proxy.Helpers.html @@ -1987,6 +2012,463 @@ references: isSpec: "True" fullName: Titanium.Web.Proxy.Http.Responses.RedirectResponse.RedirectResponse nameWithType: RedirectResponse.RedirectResponse +- uid: Titanium.Web.Proxy.Http2.Hpack + name: Titanium.Web.Proxy.Http2.Hpack + href: api/Titanium.Web.Proxy.Http2.Hpack.html + commentId: N:Titanium.Web.Proxy.Http2.Hpack + fullName: Titanium.Web.Proxy.Http2.Hpack + nameWithType: Titanium.Web.Proxy.Http2.Hpack +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder + name: Decoder + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.Decoder + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder + nameWithType: Decoder +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.#ctor(System.Int32,System.Int32) + name: Decoder(Int32, Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder__ctor_System_Int32_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Decoder.#ctor(System.Int32,System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.Decoder(System.Int32, System.Int32) + nameWithType: Decoder.Decoder(Int32, Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.#ctor* + name: Decoder + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder__ctor_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Decoder.#ctor + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.Decoder + nameWithType: Decoder.Decoder +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.Decode(System.IO.BinaryReader,Titanium.Web.Proxy.Http2.Hpack.IHeaderListener) + name: Decode(BinaryReader, IHeaderListener) + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_Decode_System_IO_BinaryReader_Titanium_Web_Proxy_Http2_Hpack_IHeaderListener_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Decoder.Decode(System.IO.BinaryReader,Titanium.Web.Proxy.Http2.Hpack.IHeaderListener) + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.Decode(System.IO.BinaryReader, Titanium.Web.Proxy.Http2.Hpack.IHeaderListener) + nameWithType: Decoder.Decode(BinaryReader, IHeaderListener) +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.Decode* + name: Decode + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_Decode_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Decoder.Decode + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.Decode + nameWithType: Decoder.Decode +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.EndHeaderBlock + name: EndHeaderBlock() + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_EndHeaderBlock + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Decoder.EndHeaderBlock + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.EndHeaderBlock() + nameWithType: Decoder.EndHeaderBlock() +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.EndHeaderBlock* + name: EndHeaderBlock + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_EndHeaderBlock_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Decoder.EndHeaderBlock + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.EndHeaderBlock + nameWithType: Decoder.EndHeaderBlock +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.GetMaxHeaderTableSize + name: GetMaxHeaderTableSize() + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_GetMaxHeaderTableSize + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Decoder.GetMaxHeaderTableSize + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.GetMaxHeaderTableSize() + nameWithType: Decoder.GetMaxHeaderTableSize() +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.GetMaxHeaderTableSize* + name: GetMaxHeaderTableSize + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_GetMaxHeaderTableSize_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Decoder.GetMaxHeaderTableSize + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.GetMaxHeaderTableSize + nameWithType: Decoder.GetMaxHeaderTableSize +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.SetMaxHeaderTableSize(System.Int32) + name: SetMaxHeaderTableSize(Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_SetMaxHeaderTableSize_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Decoder.SetMaxHeaderTableSize(System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.SetMaxHeaderTableSize(System.Int32) + nameWithType: Decoder.SetMaxHeaderTableSize(Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.Decoder.SetMaxHeaderTableSize* + name: SetMaxHeaderTableSize + href: api/Titanium.Web.Proxy.Http2.Hpack.Decoder.html#Titanium_Web_Proxy_Http2_Hpack_Decoder_SetMaxHeaderTableSize_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Decoder.SetMaxHeaderTableSize + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Decoder.SetMaxHeaderTableSize + nameWithType: Decoder.SetMaxHeaderTableSize +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable + name: DynamicTable + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.DynamicTable + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable + nameWithType: DynamicTable +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.#ctor(System.Int32) + name: DynamicTable(Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable__ctor_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.#ctor(System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.DynamicTable(System.Int32) + nameWithType: DynamicTable.DynamicTable(Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.#ctor* + name: DynamicTable + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable__ctor_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.#ctor + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.DynamicTable + nameWithType: DynamicTable.DynamicTable +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Add(Titanium.Web.Proxy.Models.HttpHeader) + name: Add(HttpHeader) + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Add_Titanium_Web_Proxy_Models_HttpHeader_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Add(Titanium.Web.Proxy.Models.HttpHeader) + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Add(Titanium.Web.Proxy.Models.HttpHeader) + nameWithType: DynamicTable.Add(HttpHeader) +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Add* + name: Add + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Add_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Add + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Add + nameWithType: DynamicTable.Add +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Capacity + name: Capacity + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Capacity + commentId: P:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Capacity + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Capacity + nameWithType: DynamicTable.Capacity +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Capacity* + name: Capacity + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Capacity_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Capacity + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Capacity + nameWithType: DynamicTable.Capacity +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Clear + name: Clear() + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Clear + commentId: M:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Clear + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Clear() + nameWithType: DynamicTable.Clear() +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Clear* + name: Clear + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Clear_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Clear + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Clear + nameWithType: DynamicTable.Clear +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.GetEntry(System.Int32) + name: GetEntry(Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_GetEntry_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.GetEntry(System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.GetEntry(System.Int32) + nameWithType: DynamicTable.GetEntry(Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.GetEntry* + name: GetEntry + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_GetEntry_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.GetEntry + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.GetEntry + nameWithType: DynamicTable.GetEntry +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Length + name: Length() + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Length + commentId: M:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Length + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Length() + nameWithType: DynamicTable.Length() +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Length* + name: Length + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Length_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Length + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Length + nameWithType: DynamicTable.Length +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Remove + name: Remove() + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Remove + commentId: M:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Remove + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Remove() + nameWithType: DynamicTable.Remove() +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Remove* + name: Remove + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Remove_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Remove + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Remove + nameWithType: DynamicTable.Remove +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.SetCapacity(System.Int32) + name: SetCapacity(Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_SetCapacity_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.SetCapacity(System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.SetCapacity(System.Int32) + nameWithType: DynamicTable.SetCapacity(Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.SetCapacity* + name: SetCapacity + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_SetCapacity_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.SetCapacity + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.SetCapacity + nameWithType: DynamicTable.SetCapacity +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Size + name: Size + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Size + commentId: P:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Size + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Size + nameWithType: DynamicTable.Size +- uid: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Size* + name: Size + href: api/Titanium.Web.Proxy.Http2.Hpack.DynamicTable.html#Titanium_Web_Proxy_Http2_Hpack_DynamicTable_Size_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Size + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.DynamicTable.Size + nameWithType: DynamicTable.Size +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder + name: Encoder + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.Encoder + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder + nameWithType: Encoder +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.#ctor(System.Int32) + name: Encoder(Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder__ctor_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Encoder.#ctor(System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.Encoder(System.Int32) + nameWithType: Encoder.Encoder(Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.#ctor* + name: Encoder + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder__ctor_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Encoder.#ctor + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.Encoder + nameWithType: Encoder.Encoder +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.EncodeHeader(System.IO.BinaryWriter,System.String,System.String,System.Boolean) + name: EncodeHeader(BinaryWriter, String, String, Boolean) + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder_EncodeHeader_System_IO_BinaryWriter_System_String_System_String_System_Boolean_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Encoder.EncodeHeader(System.IO.BinaryWriter,System.String,System.String,System.Boolean) + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.EncodeHeader(System.IO.BinaryWriter, System.String, System.String, System.Boolean) + nameWithType: Encoder.EncodeHeader(BinaryWriter, String, String, Boolean) +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.EncodeHeader* + name: EncodeHeader + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder_EncodeHeader_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Encoder.EncodeHeader + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.EncodeHeader + nameWithType: Encoder.EncodeHeader +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.MaxHeaderTableSize + name: MaxHeaderTableSize + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder_MaxHeaderTableSize + commentId: P:Titanium.Web.Proxy.Http2.Hpack.Encoder.MaxHeaderTableSize + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.MaxHeaderTableSize + nameWithType: Encoder.MaxHeaderTableSize +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.MaxHeaderTableSize* + name: MaxHeaderTableSize + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder_MaxHeaderTableSize_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Encoder.MaxHeaderTableSize + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.MaxHeaderTableSize + nameWithType: Encoder.MaxHeaderTableSize +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.SetMaxHeaderTableSize(System.IO.BinaryWriter,System.Int32) + name: SetMaxHeaderTableSize(BinaryWriter, Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder_SetMaxHeaderTableSize_System_IO_BinaryWriter_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.Encoder.SetMaxHeaderTableSize(System.IO.BinaryWriter,System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.SetMaxHeaderTableSize(System.IO.BinaryWriter, System.Int32) + nameWithType: Encoder.SetMaxHeaderTableSize(BinaryWriter, Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.Encoder.SetMaxHeaderTableSize* + name: SetMaxHeaderTableSize + href: api/Titanium.Web.Proxy.Http2.Hpack.Encoder.html#Titanium_Web_Proxy_Http2_Hpack_Encoder_SetMaxHeaderTableSize_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.Encoder.SetMaxHeaderTableSize + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.Encoder.SetMaxHeaderTableSize + nameWithType: Encoder.SetMaxHeaderTableSize +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil + name: HpackUtil + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.HpackUtil + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil + nameWithType: HpackUtil +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanCodeLengths + name: HuffmanCodeLengths + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html#Titanium_Web_Proxy_Http2_Hpack_HpackUtil_HuffmanCodeLengths + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanCodeLengths + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanCodeLengths + nameWithType: HpackUtil.HuffmanCodeLengths +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanCodes + name: HuffmanCodes + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html#Titanium_Web_Proxy_Http2_Hpack_HpackUtil_HuffmanCodes + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanCodes + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanCodes + nameWithType: HpackUtil.HuffmanCodes +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanEos + name: HuffmanEos + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.html#Titanium_Web_Proxy_Http2_Hpack_HpackUtil_HuffmanEos + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanEos + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.HuffmanEos + nameWithType: HpackUtil.HuffmanEos +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType + name: HpackUtil.IndexType + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType + nameWithType: HpackUtil.IndexType +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.Incremental + name: Incremental + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html#Titanium_Web_Proxy_Http2_Hpack_HpackUtil_IndexType_Incremental + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.Incremental + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.Incremental + nameWithType: HpackUtil.IndexType.Incremental +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.Never + name: Never + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html#Titanium_Web_Proxy_Http2_Hpack_HpackUtil_IndexType_Never + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.Never + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.Never + nameWithType: HpackUtil.IndexType.Never +- uid: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.None + name: None + href: api/Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.html#Titanium_Web_Proxy_Http2_Hpack_HpackUtil_IndexType_None + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.None + fullName: Titanium.Web.Proxy.Http2.Hpack.HpackUtil.IndexType.None + nameWithType: HpackUtil.IndexType.None +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder + name: HuffmanDecoder + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder + nameWithType: HuffmanDecoder +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Decode(System.Byte[]) + name: Decode(Byte[]) + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanDecoder_Decode_System_Byte___ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Decode(System.Byte[]) + name.vb: Decode(Byte()) + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Decode(System.Byte[]) + fullName.vb: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Decode(System.Byte()) + nameWithType: HuffmanDecoder.Decode(Byte[]) + nameWithType.vb: HuffmanDecoder.Decode(Byte()) +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Decode* + name: Decode + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanDecoder_Decode_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Decode + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Decode + nameWithType: HuffmanDecoder.Decode +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Instance + name: Instance + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanDecoder_Instance + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Instance + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanDecoder.Instance + nameWithType: HuffmanDecoder.Instance +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder + name: HuffmanEncoder + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder + nameWithType: HuffmanEncoder +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter,System.Byte[]) + name: Encode(BinaryWriter, Byte[]) + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanEncoder_Encode_System_IO_BinaryWriter_System_Byte___ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter,System.Byte[]) + name.vb: Encode(BinaryWriter, Byte()) + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter, System.Byte[]) + fullName.vb: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter, System.Byte()) + nameWithType: HuffmanEncoder.Encode(BinaryWriter, Byte[]) + nameWithType.vb: HuffmanEncoder.Encode(BinaryWriter, Byte()) +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter,System.Byte[],System.Int32,System.Int32) + name: Encode(BinaryWriter, Byte[], Int32, Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanEncoder_Encode_System_IO_BinaryWriter_System_Byte___System_Int32_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter,System.Byte[],System.Int32,System.Int32) + name.vb: Encode(BinaryWriter, Byte(), Int32, Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter, System.Byte[], System.Int32, System.Int32) + fullName.vb: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode(System.IO.BinaryWriter, System.Byte(), System.Int32, System.Int32) + nameWithType: HuffmanEncoder.Encode(BinaryWriter, Byte[], Int32, Int32) + nameWithType.vb: HuffmanEncoder.Encode(BinaryWriter, Byte(), Int32, Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode* + name: Encode + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanEncoder_Encode_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Encode + nameWithType: HuffmanEncoder.Encode +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.GetEncodedLength(System.Byte[]) + name: GetEncodedLength(Byte[]) + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanEncoder_GetEncodedLength_System_Byte___ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.GetEncodedLength(System.Byte[]) + name.vb: GetEncodedLength(Byte()) + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.GetEncodedLength(System.Byte[]) + fullName.vb: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.GetEncodedLength(System.Byte()) + nameWithType: HuffmanEncoder.GetEncodedLength(Byte[]) + nameWithType.vb: HuffmanEncoder.GetEncodedLength(Byte()) +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.GetEncodedLength* + name: GetEncodedLength + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanEncoder_GetEncodedLength_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.GetEncodedLength + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.GetEncodedLength + nameWithType: HuffmanEncoder.GetEncodedLength +- uid: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Instance + name: Instance + href: api/Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.html#Titanium_Web_Proxy_Http2_Hpack_HuffmanEncoder_Instance + commentId: F:Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Instance + fullName: Titanium.Web.Proxy.Http2.Hpack.HuffmanEncoder.Instance + nameWithType: HuffmanEncoder.Instance +- uid: Titanium.Web.Proxy.Http2.Hpack.IHeaderListener + name: IHeaderListener + href: api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.IHeaderListener + fullName: Titanium.Web.Proxy.Http2.Hpack.IHeaderListener + nameWithType: IHeaderListener +- uid: Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.AddHeader(System.String,System.String,System.Boolean) + name: AddHeader(String, String, Boolean) + href: api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html#Titanium_Web_Proxy_Http2_Hpack_IHeaderListener_AddHeader_System_String_System_String_System_Boolean_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.AddHeader(System.String,System.String,System.Boolean) + fullName: Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.AddHeader(System.String, System.String, System.Boolean) + nameWithType: IHeaderListener.AddHeader(String, String, Boolean) +- uid: Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.AddHeader* + name: AddHeader + href: api/Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.html#Titanium_Web_Proxy_Http2_Hpack_IHeaderListener_AddHeader_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.AddHeader + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.IHeaderListener.AddHeader + nameWithType: IHeaderListener.AddHeader +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable + name: StaticTable + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html + commentId: T:Titanium.Web.Proxy.Http2.Hpack.StaticTable + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable + nameWithType: StaticTable +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Get(System.Int32) + name: Get(Int32) + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html#Titanium_Web_Proxy_Http2_Hpack_StaticTable_Get_System_Int32_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.StaticTable.Get(System.Int32) + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Get(System.Int32) + nameWithType: StaticTable.Get(Int32) +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Get* + name: Get + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html#Titanium_Web_Proxy_Http2_Hpack_StaticTable_Get_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.StaticTable.Get + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Get + nameWithType: StaticTable.Get +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex(System.String) + name: GetIndex(String) + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html#Titanium_Web_Proxy_Http2_Hpack_StaticTable_GetIndex_System_String_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex(System.String) + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex(System.String) + nameWithType: StaticTable.GetIndex(String) +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex(System.String,System.String) + name: GetIndex(String, String) + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html#Titanium_Web_Proxy_Http2_Hpack_StaticTable_GetIndex_System_String_System_String_ + commentId: M:Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex(System.String,System.String) + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex(System.String, System.String) + nameWithType: StaticTable.GetIndex(String, String) +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex* + name: GetIndex + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html#Titanium_Web_Proxy_Http2_Hpack_StaticTable_GetIndex_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable.GetIndex + nameWithType: StaticTable.GetIndex +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Length + name: Length + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html#Titanium_Web_Proxy_Http2_Hpack_StaticTable_Length + commentId: P:Titanium.Web.Proxy.Http2.Hpack.StaticTable.Length + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Length + nameWithType: StaticTable.Length +- uid: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Length* + name: Length + href: api/Titanium.Web.Proxy.Http2.Hpack.StaticTable.html#Titanium_Web_Proxy_Http2_Hpack_StaticTable_Length_ + commentId: Overload:Titanium.Web.Proxy.Http2.Hpack.StaticTable.Length + isSpec: "True" + fullName: Titanium.Web.Proxy.Http2.Hpack.StaticTable.Length + nameWithType: StaticTable.Length - uid: Titanium.Web.Proxy.Models name: Titanium.Web.Proxy.Models href: api/Titanium.Web.Proxy.Models.html @@ -2224,6 +2706,88 @@ references: isSpec: "True" fullName: Titanium.Web.Proxy.Models.HttpHeader.Value nameWithType: HttpHeader.Value +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext + name: ProxyAuthenticationContext + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html + commentId: T:Titanium.Web.Proxy.Models.ProxyAuthenticationContext + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext + nameWithType: ProxyAuthenticationContext +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Continuation + name: Continuation + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Continuation + commentId: P:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Continuation + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Continuation + nameWithType: ProxyAuthenticationContext.Continuation +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Continuation* + name: Continuation + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Continuation_ + commentId: Overload:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Continuation + isSpec: "True" + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Continuation + nameWithType: ProxyAuthenticationContext.Continuation +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Failed + name: Failed() + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Failed + commentId: M:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Failed + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Failed() + nameWithType: ProxyAuthenticationContext.Failed() +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Failed* + name: Failed + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Failed_ + commentId: Overload:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Failed + isSpec: "True" + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Failed + nameWithType: ProxyAuthenticationContext.Failed +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Result + name: Result + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Result + commentId: P:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Result + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Result + nameWithType: ProxyAuthenticationContext.Result +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Result* + name: Result + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Result_ + commentId: Overload:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Result + isSpec: "True" + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Result + nameWithType: ProxyAuthenticationContext.Result +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Succeeded + name: Succeeded() + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Succeeded + commentId: M:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Succeeded + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Succeeded() + nameWithType: ProxyAuthenticationContext.Succeeded() +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Succeeded* + name: Succeeded + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationContext.html#Titanium_Web_Proxy_Models_ProxyAuthenticationContext_Succeeded_ + commentId: Overload:Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Succeeded + isSpec: "True" + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationContext.Succeeded + nameWithType: ProxyAuthenticationContext.Succeeded +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationResult + name: ProxyAuthenticationResult + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html + commentId: T:Titanium.Web.Proxy.Models.ProxyAuthenticationResult + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationResult + nameWithType: ProxyAuthenticationResult +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationResult.ContinuationNeeded + name: ContinuationNeeded + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html#Titanium_Web_Proxy_Models_ProxyAuthenticationResult_ContinuationNeeded + commentId: F:Titanium.Web.Proxy.Models.ProxyAuthenticationResult.ContinuationNeeded + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationResult.ContinuationNeeded + nameWithType: ProxyAuthenticationResult.ContinuationNeeded +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationResult.Failure + name: Failure + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html#Titanium_Web_Proxy_Models_ProxyAuthenticationResult_Failure + commentId: F:Titanium.Web.Proxy.Models.ProxyAuthenticationResult.Failure + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationResult.Failure + nameWithType: ProxyAuthenticationResult.Failure +- uid: Titanium.Web.Proxy.Models.ProxyAuthenticationResult.Success + name: Success + href: api/Titanium.Web.Proxy.Models.ProxyAuthenticationResult.html#Titanium_Web_Proxy_Models_ProxyAuthenticationResult_Success + commentId: F:Titanium.Web.Proxy.Models.ProxyAuthenticationResult.Success + fullName: Titanium.Web.Proxy.Models.ProxyAuthenticationResult.Success + nameWithType: ProxyAuthenticationResult.Success - uid: Titanium.Web.Proxy.Models.ProxyEndPoint name: ProxyEndPoint href: api/Titanium.Web.Proxy.Models.ProxyEndPoint.html @@ -2295,6 +2859,36 @@ references: isSpec: "True" fullName: Titanium.Web.Proxy.Models.ProxyEndPoint.Port nameWithType: ProxyEndPoint.Port +- uid: Titanium.Web.Proxy.Models.ProxyProtocolType + name: ProxyProtocolType + href: api/Titanium.Web.Proxy.Models.ProxyProtocolType.html + commentId: T:Titanium.Web.Proxy.Models.ProxyProtocolType + fullName: Titanium.Web.Proxy.Models.ProxyProtocolType + nameWithType: ProxyProtocolType +- uid: Titanium.Web.Proxy.Models.ProxyProtocolType.AllHttp + name: AllHttp + href: api/Titanium.Web.Proxy.Models.ProxyProtocolType.html#Titanium_Web_Proxy_Models_ProxyProtocolType_AllHttp + commentId: F:Titanium.Web.Proxy.Models.ProxyProtocolType.AllHttp + fullName: Titanium.Web.Proxy.Models.ProxyProtocolType.AllHttp + nameWithType: ProxyProtocolType.AllHttp +- uid: Titanium.Web.Proxy.Models.ProxyProtocolType.Http + name: Http + href: api/Titanium.Web.Proxy.Models.ProxyProtocolType.html#Titanium_Web_Proxy_Models_ProxyProtocolType_Http + commentId: F:Titanium.Web.Proxy.Models.ProxyProtocolType.Http + fullName: Titanium.Web.Proxy.Models.ProxyProtocolType.Http + nameWithType: ProxyProtocolType.Http +- uid: Titanium.Web.Proxy.Models.ProxyProtocolType.Https + name: Https + href: api/Titanium.Web.Proxy.Models.ProxyProtocolType.html#Titanium_Web_Proxy_Models_ProxyProtocolType_Https + commentId: F:Titanium.Web.Proxy.Models.ProxyProtocolType.Https + fullName: Titanium.Web.Proxy.Models.ProxyProtocolType.Https + nameWithType: ProxyProtocolType.Https +- uid: Titanium.Web.Proxy.Models.ProxyProtocolType.None + name: None + href: api/Titanium.Web.Proxy.Models.ProxyProtocolType.html#Titanium_Web_Proxy_Models_ProxyProtocolType_None + commentId: F:Titanium.Web.Proxy.Models.ProxyProtocolType.None + fullName: Titanium.Web.Proxy.Models.ProxyProtocolType.None + nameWithType: ProxyProtocolType.None - uid: Titanium.Web.Proxy.Models.TransparentProxyEndPoint name: TransparentProxyEndPoint href: api/Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html @@ -2833,11 +3427,11 @@ references: isSpec: "True" fullName: Titanium.Web.Proxy.ProxyServer.DisableSystemHttpsProxy nameWithType: ProxyServer.DisableSystemHttpsProxy -- uid: Titanium.Web.Proxy.ProxyServer.DisableSystemProxy(ProxyProtocolType) +- uid: Titanium.Web.Proxy.ProxyServer.DisableSystemProxy(Titanium.Web.Proxy.Models.ProxyProtocolType) name: DisableSystemProxy(ProxyProtocolType) - href: api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_DisableSystemProxy_ProxyProtocolType_ - commentId: M:Titanium.Web.Proxy.ProxyServer.DisableSystemProxy(ProxyProtocolType) - fullName: Titanium.Web.Proxy.ProxyServer.DisableSystemProxy(ProxyProtocolType) + href: api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_DisableSystemProxy_Titanium_Web_Proxy_Models_ProxyProtocolType_ + commentId: M:Titanium.Web.Proxy.ProxyServer.DisableSystemProxy(Titanium.Web.Proxy.Models.ProxyProtocolType) + fullName: Titanium.Web.Proxy.ProxyServer.DisableSystemProxy(Titanium.Web.Proxy.Models.ProxyProtocolType) nameWithType: ProxyServer.DisableSystemProxy(ProxyProtocolType) - uid: Titanium.Web.Proxy.ProxyServer.DisableSystemProxy* name: DisableSystemProxy @@ -3130,11 +3724,11 @@ references: isSpec: "True" fullName: Titanium.Web.Proxy.ProxyServer.SetAsSystemHttpsProxy nameWithType: ProxyServer.SetAsSystemHttpsProxy -- uid: Titanium.Web.Proxy.ProxyServer.SetAsSystemProxy(Titanium.Web.Proxy.Models.ExplicitProxyEndPoint,ProxyProtocolType) +- uid: Titanium.Web.Proxy.ProxyServer.SetAsSystemProxy(Titanium.Web.Proxy.Models.ExplicitProxyEndPoint,Titanium.Web.Proxy.Models.ProxyProtocolType) name: SetAsSystemProxy(ExplicitProxyEndPoint, ProxyProtocolType) - href: api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_SetAsSystemProxy_Titanium_Web_Proxy_Models_ExplicitProxyEndPoint_ProxyProtocolType_ - commentId: M:Titanium.Web.Proxy.ProxyServer.SetAsSystemProxy(Titanium.Web.Proxy.Models.ExplicitProxyEndPoint,ProxyProtocolType) - fullName: Titanium.Web.Proxy.ProxyServer.SetAsSystemProxy(Titanium.Web.Proxy.Models.ExplicitProxyEndPoint, ProxyProtocolType) + href: api/Titanium.Web.Proxy.ProxyServer.html#Titanium_Web_Proxy_ProxyServer_SetAsSystemProxy_Titanium_Web_Proxy_Models_ExplicitProxyEndPoint_Titanium_Web_Proxy_Models_ProxyProtocolType_ + commentId: M:Titanium.Web.Proxy.ProxyServer.SetAsSystemProxy(Titanium.Web.Proxy.Models.ExplicitProxyEndPoint,Titanium.Web.Proxy.Models.ProxyProtocolType) + fullName: Titanium.Web.Proxy.ProxyServer.SetAsSystemProxy(Titanium.Web.Proxy.Models.ExplicitProxyEndPoint, Titanium.Web.Proxy.Models.ProxyProtocolType) nameWithType: ProxyServer.SetAsSystemProxy(ExplicitProxyEndPoint, ProxyProtocolType) - uid: Titanium.Web.Proxy.ProxyServer.SetAsSystemProxy* name: SetAsSystemProxy From 7dc276b7ac715ce6989982b879f1b13b1dd43174 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 23:36:12 -0400 Subject: [PATCH 18/35] install cert elevated --- .build/build.ps1 | 15 +++++++-------- .build/install-certificate.ps1 | 10 ++++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 .build/install-certificate.ps1 diff --git a/.build/build.ps1 b/.build/build.ps1 index 6bfcf4380..57fc6b739 100644 --- a/.build/build.ps1 +++ b/.build/build.ps1 @@ -126,12 +126,11 @@ Task Package -depends Document { #install root cetificate needed for integration tests Task PrepareIntegrationTest { - $pfx = new-object System.Security.Cryptography.X509Certificates.X509Certificate2 - $certPath = "$Here\lib\root-certificate-for-integration-test.pfx" - $pfxPass = "" - $pfx.import($certPath,$pfxPass,"Exportable,PersistKeySet") - $store = new-object System.Security.Cryptography.X509Certificates.X509Store([System.Security.Cryptography.X509Certificates.StoreName]::Root, "localmachine") - $store.open("MaxAllowed") - $store.add($pfx) - $store.close() + +$startInfo = new-object System.Diagnostics.ProcessStartInfo "PowerShell"; +$startInfo.Arguments = "$Here\install-certificate.ps1"; +$startInfo.Verb = "runas"; +$process = [System.Diagnostics.Process]::Start($startInfo); +$process.WaitForExit() + } \ No newline at end of file diff --git a/.build/install-certificate.ps1 b/.build/install-certificate.ps1 new file mode 100644 index 000000000..b16368624 --- /dev/null +++ b/.build/install-certificate.ps1 @@ -0,0 +1,10 @@ +$Here = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" + +$pfx = new-object System.Security.Cryptography.X509Certificates.X509Certificate2 +$certPath = "$Here\lib\root-certificate-for-integration-test.pfx" +$pfxPass = "" +$pfx.import($certPath,$pfxPass,"Exportable,PersistKeySet") +$store = new-object System.Security.Cryptography.X509Certificates.X509Store([System.Security.Cryptography.X509Certificates.StoreName]::Root, "localmachine") +$store.open("MaxAllowed") +$store.add($pfx) +$store.close() \ No newline at end of file From 7dd2fd86ffcdd948bd969ecdddd2c8d1aa17aafe Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 23:43:08 -0400 Subject: [PATCH 19/35] fix docs proj --- src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj index 31d7a2137..787dbc5f5 100644 --- a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj +++ b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.Docs.csproj @@ -122,7 +122,6 @@ - From 3febfb1bf5f13c6f2907929da67940751bacbc63 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 23:48:01 -0400 Subject: [PATCH 20/35] try remove cache --- appveyor.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 7c2d43639..5bf85499a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -29,8 +29,6 @@ build_script: init: - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) -cache: - - packages assembly_info: patch: true From 81a35ea290b6d47b3ec6be74308e2ee1bc987026 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Thu, 1 Nov 2018 23:56:22 -0400 Subject: [PATCH 21/35] delete repo cache in build --- appveyor.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 5bf85499a..c3a81ee76 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,10 +25,6 @@ configuration: Release # to run your custom scripts instead of automatic MSBuild build_script: - cmd: build.bat Package - -init: - - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) - assembly_info: patch: true @@ -43,6 +39,9 @@ test: on # skip building commits that add tags (such as release tag) skip_tags: true +cache: + + skip_commits: author: buildbot121 files: From e2b706e16de2cbb7d903ccfe30a01eb4f8fce36e Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Fri, 2 Nov 2018 00:02:21 -0400 Subject: [PATCH 22/35] try skip restore --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index c3a81ee76..e1a2d89fd 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -39,8 +39,8 @@ test: on # skip building commits that add tags (such as release tag) skip_tags: true -cache: - +init: +- ps: IF ($env:APPVEYOR_REPO_BRANCH -eq "develop") {$env:APPVEYOR_CACHE_SKIP_RESTORE = "true"} skip_commits: author: buildbot121 From cb9a25fcc1d353f84d620305623ae607d3eea83b Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Fri, 2 Nov 2018 00:03:06 -0400 Subject: [PATCH 23/35] skip cache restore --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index e1a2d89fd..ecfbf5e89 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -40,7 +40,7 @@ test: on skip_tags: true init: -- ps: IF ($env:APPVEYOR_REPO_BRANCH -eq "develop") {$env:APPVEYOR_CACHE_SKIP_RESTORE = "true"} +- ps: {$env:APPVEYOR_CACHE_SKIP_RESTORE = "true"} skip_commits: author: buildbot121 From de6daa718feec2dfd4cae690caba9d8ca37d9aee Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Fri, 2 Nov 2018 00:04:53 -0400 Subject: [PATCH 24/35] fix yml --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index ecfbf5e89..52fe575c9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -40,7 +40,7 @@ test: on skip_tags: true init: -- ps: {$env:APPVEYOR_CACHE_SKIP_RESTORE = "true"} +- ps: IF ($env:APPVEYOR_REPO_BRANCH -eq "master") {$env:APPVEYOR_CACHE_SKIP_RESTORE = "true"} skip_commits: author: buildbot121 From cd55e75f98e74ef573e18fef2e03606c06a4f330 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Fri, 2 Nov 2018 00:08:28 -0400 Subject: [PATCH 25/35] disable shallow clone --- appveyor.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 52fe575c9..cbae4fd38 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,7 +10,7 @@ version: 3.0.{build} image: Visual Studio 2017 -shallow_clone: true +shallow_clone: false #---------------------------------# # build configuration # @@ -39,9 +39,6 @@ test: on # skip building commits that add tags (such as release tag) skip_tags: true -init: -- ps: IF ($env:APPVEYOR_REPO_BRANCH -eq "master") {$env:APPVEYOR_CACHE_SKIP_RESTORE = "true"} - skip_commits: author: buildbot121 files: From d7cb3b3ffddb5df896dfe6eb692384a3a3e6fa9c Mon Sep 17 00:00:00 2001 From: buildbot121 Date: Fri, 2 Nov 2018 04:10:49 +0000 Subject: [PATCH 26/35] API documentation update by build server --- ...xy.EventArguments.AsyncEventHandler-1.html | 6 + ...uments.BeforeSslAuthenticateEventArgs.html | 33 +- ...guments.CertificateSelectionEventArgs.html | 60 ++- ...uments.CertificateValidationEventArgs.html | 42 +- ...nts.MultipartRequestPartSentEventArgs.html | 24 +- ...Proxy.EventArguments.SessionEventArgs.html | 177 +++++-- ...y.EventArguments.SessionEventArgsBase.html | 159 ++++-- ...guments.TunnelConnectSessionEventArgs.html | 33 +- .../Titanium.Web.Proxy.ExceptionHandler.html | 6 + ...roxy.Exceptions.BodyNotFoundException.html | 6 + ...xceptions.ProxyAuthorizationException.html | 24 +- ...roxy.Exceptions.ProxyConnectException.html | 15 +- ...m.Web.Proxy.Exceptions.ProxyException.html | 24 +- ...b.Proxy.Exceptions.ProxyHttpException.html | 15 +- ....Exceptions.ServerConnectionException.html | 6 + .../Titanium.Web.Proxy.Helpers.RunTime.html | 33 +- ...itanium.Web.Proxy.Http.ConnectRequest.html | 24 +- ...tanium.Web.Proxy.Http.ConnectResponse.html | 15 +- ...anium.Web.Proxy.Http.HeaderCollection.html | 159 ++++-- ...Titanium.Web.Proxy.Http.HttpWebClient.html | 69 ++- .../Titanium.Web.Proxy.Http.KnownHeaders.html | 240 +++++++-- docs/api/Titanium.Web.Proxy.Http.Request.html | 123 ++++- ...um.Web.Proxy.Http.RequestResponseBase.html | 150 ++++-- .../api/Titanium.Web.Proxy.Http.Response.html | 87 +++- ....Proxy.Http.Responses.GenericResponse.html | 24 +- ...m.Web.Proxy.Http.Responses.OkResponse.html | 24 +- ...Proxy.Http.Responses.RedirectResponse.html | 15 +- ...itanium.Web.Proxy.Http2.Hpack.Decoder.html | 51 +- ...um.Web.Proxy.Http2.Hpack.DynamicTable.html | 87 +++- ...itanium.Web.Proxy.Http2.Hpack.Encoder.html | 42 +- ...Proxy.Http2.Hpack.HpackUtil.IndexType.html | 6 + ...anium.Web.Proxy.Http2.Hpack.HpackUtil.html | 33 +- ....Web.Proxy.Http2.Hpack.HuffmanDecoder.html | 24 +- ....Web.Proxy.Http2.Hpack.HuffmanEncoder.html | 42 +- ...Web.Proxy.Http2.Hpack.IHeaderListener.html | 15 +- ...ium.Web.Proxy.Http2.Hpack.StaticTable.html | 42 +- ...eb.Proxy.Models.ExplicitProxyEndPoint.html | 42 +- ...tanium.Web.Proxy.Models.ExternalProxy.html | 69 ++- .../Titanium.Web.Proxy.Models.HttpHeader.html | 69 ++- ...oxy.Models.ProxyAuthenticationContext.html | 42 +- ...roxy.Models.ProxyAuthenticationResult.html | 6 + ...tanium.Web.Proxy.Models.ProxyEndPoint.html | 51 +- ...um.Web.Proxy.Models.ProxyProtocolType.html | 6 + ...Proxy.Models.TransparentProxyEndPoint.html | 33 +- ...m.Web.Proxy.Network.CertificateEngine.html | 6 + ....Web.Proxy.Network.CertificateManager.html | 213 ++++++-- docs/api/Titanium.Web.Proxy.ProxyServer.html | 456 ++++++++++++++---- docs/index.json | 78 +-- 48 files changed, 2379 insertions(+), 627 deletions(-) diff --git a/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html b/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html index b23c82095..44b42b65a 100644 --- a/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html +++ b/docs/api/Titanium.Web.Proxy.EventArguments.AsyncEventHandler-1.html @@ -154,6 +154,12 @@
                                Type Parameters