Unverified Commit a4ea3803 authored by justcoding121's avatar justcoding121 Committed by GitHub

Merge pull request #485 from justcoding121/master

Linux/Unix new line issue fix
parents 042a3a06 67bfa3bc
...@@ -16,7 +16,7 @@ namespace Titanium.Web.Proxy.Helpers ...@@ -16,7 +16,7 @@ namespace Titanium.Web.Proxy.Helpers
private readonly Stream stream; private readonly Stream stream;
private readonly IBufferPool bufferPool; private readonly IBufferPool bufferPool;
private static readonly byte[] newLine = ProxyConstants.NewLine; private static readonly byte[] newLine = ProxyConstants.NewLineBytes;
private static readonly Encoder encoder = Encoding.ASCII.GetEncoder(); private static readonly Encoder encoder = Encoding.ASCII.GetEncoder();
...@@ -109,9 +109,9 @@ namespace Titanium.Web.Proxy.Helpers ...@@ -109,9 +109,9 @@ namespace Titanium.Web.Proxy.Helpers
var headerBuilder = new StringBuilder(); var headerBuilder = new StringBuilder();
foreach (var header in headers) foreach (var header in headers)
{ {
headerBuilder.AppendLine(header.ToString()); headerBuilder.Append($"{header.ToString()}{ProxyConstants.NewLine}");
} }
headerBuilder.AppendLine(); headerBuilder.Append(ProxyConstants.NewLine);
await WriteAsync(headerBuilder.ToString(), cancellationToken); await WriteAsync(headerBuilder.ToString(), cancellationToken);
......
...@@ -8,6 +8,7 @@ using Titanium.Web.Proxy.Exceptions; ...@@ -8,6 +8,7 @@ using Titanium.Web.Proxy.Exceptions;
using Titanium.Web.Proxy.Extensions; using Titanium.Web.Proxy.Extensions;
using Titanium.Web.Proxy.Models; using Titanium.Web.Proxy.Models;
using Titanium.Web.Proxy.Network.Tcp; using Titanium.Web.Proxy.Network.Tcp;
using Titanium.Web.Proxy.Shared;
namespace Titanium.Web.Proxy.Http namespace Titanium.Web.Proxy.Http
{ {
...@@ -16,7 +17,6 @@ namespace Titanium.Web.Proxy.Http ...@@ -16,7 +17,6 @@ namespace Titanium.Web.Proxy.Http
/// </summary> /// </summary>
public class HttpWebClient public class HttpWebClient
{ {
internal HttpWebClient(Request request = null, Response response = null) internal HttpWebClient(Request request = null, Response response = null)
{ {
Request = request ?? new Request(); Request = request ?? new Request();
...@@ -103,14 +103,15 @@ namespace Titanium.Web.Proxy.Http ...@@ -103,14 +103,15 @@ namespace Titanium.Web.Proxy.Http
Request.HttpVersion), cancellationToken); Request.HttpVersion), cancellationToken);
var headerBuilder = new StringBuilder(); var headerBuilder = new StringBuilder();
// Send Authentication to Upstream proxy if needed // Send Authentication to Upstream proxy if needed
if (!isTransparent && upstreamProxy != null if (!isTransparent && upstreamProxy != null
&& ServerConnection.IsHttps == false && ServerConnection.IsHttps == false
&& !string.IsNullOrEmpty(upstreamProxy.UserName) && !string.IsNullOrEmpty(upstreamProxy.UserName)
&& upstreamProxy.Password != null) && upstreamProxy.Password != null)
{ {
headerBuilder.AppendLine(HttpHeader.ProxyConnectionKeepAlive.ToString()); headerBuilder.Append($"{HttpHeader.ProxyConnectionKeepAlive}{ProxyConstants.NewLine}");
headerBuilder.AppendLine(HttpHeader.GetProxyAuthorizationHeader(upstreamProxy.UserName, upstreamProxy.Password).ToString()); headerBuilder.Append($"{HttpHeader.GetProxyAuthorizationHeader(upstreamProxy.UserName, upstreamProxy.Password)}{ProxyConstants.NewLine}");
} }
// write request headers // write request headers
...@@ -118,11 +119,12 @@ namespace Titanium.Web.Proxy.Http ...@@ -118,11 +119,12 @@ namespace Titanium.Web.Proxy.Http
{ {
if (isTransparent || header.Name != KnownHeaders.ProxyAuthorization) if (isTransparent || header.Name != KnownHeaders.ProxyAuthorization)
{ {
headerBuilder.AppendLine(header.ToString()); headerBuilder.Append($"{header}{ProxyConstants.NewLine}");
} }
} }
headerBuilder.AppendLine(); headerBuilder.Append(ProxyConstants.NewLine);
await writer.WriteAsync(headerBuilder.ToString(), cancellationToken); await writer.WriteAsync(headerBuilder.ToString(), cancellationToken);
if (enable100ContinueBehaviour) if (enable100ContinueBehaviour)
......
...@@ -140,13 +140,13 @@ namespace Titanium.Web.Proxy.Http ...@@ -140,13 +140,13 @@ namespace Titanium.Web.Proxy.Http
get get
{ {
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine(CreateRequestLine(Method, OriginalUrl, HttpVersion)); sb.Append($"{CreateRequestLine(Method, OriginalUrl, HttpVersion)}{ProxyConstants.NewLine}");
foreach (var header in Headers) foreach (var header in Headers)
{ {
sb.AppendLine(header.ToString()); sb.Append($"{header.ToString()}{ProxyConstants.NewLine}");
} }
sb.AppendLine(); sb.Append(ProxyConstants.NewLine);
return sb.ToString(); return sb.ToString();
} }
} }
......
...@@ -110,13 +110,13 @@ namespace Titanium.Web.Proxy.Http ...@@ -110,13 +110,13 @@ namespace Titanium.Web.Proxy.Http
get get
{ {
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine(CreateResponseLine(HttpVersion, StatusCode, StatusDescription)); sb.Append($"{CreateResponseLine(HttpVersion, StatusCode, StatusDescription)}{ProxyConstants.NewLine}");
foreach (var header in Headers) foreach (var header in Headers)
{ {
sb.AppendLine(header.ToString()); sb.Append($"{header.ToString()}{ProxyConstants.NewLine}");
} }
sb.AppendLine(); sb.Append(ProxyConstants.NewLine);
return sb.ToString(); return sb.ToString();
} }
} }
...@@ -145,7 +145,7 @@ namespace Titanium.Web.Proxy.Http ...@@ -145,7 +145,7 @@ namespace Titanium.Web.Proxy.Http
out string statusDescription) out string statusDescription)
{ {
var httpResult = httpStatus.Split(ProxyConstants.SpaceSplit, 3); var httpResult = httpStatus.Split(ProxyConstants.SpaceSplit, 3);
if (httpResult.Length != 3) if (httpResult.Length <= 1)
{ {
throw new Exception("Invalid HTTP status line: " + httpStatus); throw new Exception("Invalid HTTP status line: " + httpStatus);
} }
...@@ -159,7 +159,7 @@ namespace Titanium.Web.Proxy.Http ...@@ -159,7 +159,7 @@ namespace Titanium.Web.Proxy.Http
} }
statusCode = int.Parse(httpResult[1]); statusCode = int.Parse(httpResult[1]);
statusDescription = httpResult[2]; statusDescription = httpResult.Length > 2 ? httpResult[2] : string.Empty;
} }
} }
} }
...@@ -52,6 +52,7 @@ namespace Titanium.Web.Proxy.Network.Certificate ...@@ -52,6 +52,7 @@ namespace Titanium.Web.Proxy.Network.Certificate
internal WinCertificateMaker(ExceptionHandler exceptionFunc) internal WinCertificateMaker(ExceptionHandler exceptionFunc)
{ {
this.exceptionFunc = exceptionFunc; this.exceptionFunc = exceptionFunc;
typeX500DN = Type.GetTypeFromProgID("X509Enrollment.CX500DistinguishedName", true); typeX500DN = Type.GetTypeFromProgID("X509Enrollment.CX500DistinguishedName", true);
typeX509PrivateKey = Type.GetTypeFromProgID("X509Enrollment.CX509PrivateKey", true); typeX509PrivateKey = Type.GetTypeFromProgID("X509Enrollment.CX509PrivateKey", true);
typeOID = Type.GetTypeFromProgID("X509Enrollment.CObjectId", true); typeOID = Type.GetTypeFromProgID("X509Enrollment.CObjectId", true);
...@@ -74,13 +75,41 @@ namespace Titanium.Web.Proxy.Network.Certificate ...@@ -74,13 +75,41 @@ namespace Titanium.Web.Proxy.Network.Certificate
/// <summary> /// <summary>
/// Make certificate. /// Make certificate.
/// </summary> /// </summary>
/// <param name="sSubjectCN"></param>
/// <param name="isRoot"></param>
/// <param name="signingCert"></param>
/// <returns></returns>
public X509Certificate2 MakeCertificate(string sSubjectCN, bool isRoot, X509Certificate2 signingCert = null) public X509Certificate2 MakeCertificate(string sSubjectCN, bool isRoot, X509Certificate2 signingCert = null)
{ {
return makeCertificateInternal(sSubjectCN, isRoot, true, signingCert); return makeCertificate(sSubjectCN, isRoot, true, signingCert);
}
private X509Certificate2 makeCertificate(string sSubjectCN, bool isRoot,
bool switchToMTAIfNeeded, X509Certificate2 signingCert = null,
CancellationToken cancellationToken = default)
{
if (switchToMTAIfNeeded && Thread.CurrentThread.GetApartmentState() != ApartmentState.MTA)
{
return Task.Run(() => makeCertificate(sSubjectCN, isRoot, false, signingCert),
cancellationToken).Result;
}
// Subject
string fullSubject = $"CN={sSubjectCN}";
// Sig Algo
const string hashAlgo = "SHA256";
// Grace Days
const int graceDays = -366;
// ValiDays
const int validDays = 1825;
// KeyLength
const int keyLength = 2048;
var graceTime = DateTime.Now.AddDays(graceDays);
var now = DateTime.Now;
var certificate = makeCertificate(isRoot, sSubjectCN, fullSubject, keyLength, hashAlgo, graceTime,
now.AddDays(validDays), isRoot ? null : signingCert);
return certificate;
} }
private X509Certificate2 makeCertificate(bool isRoot, string subject, string fullSubject, private X509Certificate2 makeCertificate(bool isRoot, string subject, string fullSubject,
...@@ -271,39 +300,9 @@ namespace Titanium.Web.Proxy.Network.Certificate ...@@ -271,39 +300,9 @@ namespace Titanium.Web.Proxy.Network.Certificate
string empty = (string)typeX509Enrollment.InvokeMember("CreatePFX", BindingFlags.InvokeMethod, null, string empty = (string)typeX509Enrollment.InvokeMember("CreatePFX", BindingFlags.InvokeMethod, null,
x509Enrollment, typeValue); x509Enrollment, typeValue);
return new X509Certificate2(Convert.FromBase64String(empty), string.Empty, X509KeyStorageFlags.Exportable);
}
private X509Certificate2 makeCertificateInternal(string sSubjectCN, bool isRoot, return new X509Certificate2(Convert.FromBase64String(empty), string.Empty, X509KeyStorageFlags.Exportable);
bool switchToMTAIfNeeded, X509Certificate2 signingCert = null,
CancellationToken cancellationToken = default)
{
if (switchToMTAIfNeeded && Thread.CurrentThread.GetApartmentState() != ApartmentState.MTA)
{
return Task.Run(() => makeCertificateInternal(sSubjectCN, isRoot, false, signingCert),
cancellationToken).Result;
} }
// Subject
string fullSubject = $"CN={sSubjectCN}";
// Sig Algo
const string hashAlgo = "SHA256";
// Grace Days
const int graceDays = -366;
// ValiDays
const int validDays = 1825;
// KeyLength
const int keyLength = 2048;
var graceTime = DateTime.Now.AddDays(graceDays);
var now = DateTime.Now;
var certificate = makeCertificate(isRoot, sSubjectCN, fullSubject, keyLength, hashAlgo, graceTime,
now.AddDays(validDays), isRoot ? null : signingCert);
return certificate;
}
} }
} }
...@@ -25,7 +25,8 @@ namespace Titanium.Web.Proxy.Network ...@@ -25,7 +25,8 @@ namespace Titanium.Web.Proxy.Network
BouncyCastle = 0, BouncyCastle = 0,
/// <summary> /// <summary>
/// Uses Windows Certification Generation API. /// Uses Windows Certification Generation API and only valid in Windows OS.
/// Observed to be faster than BouncyCastle.
/// Bug #468 Reported. /// Bug #468 Reported.
/// </summary> /// </summary>
DefaultWindows = 1 DefaultWindows = 1
......
...@@ -16,6 +16,7 @@ using Titanium.Web.Proxy.Helpers; ...@@ -16,6 +16,7 @@ using Titanium.Web.Proxy.Helpers;
using Titanium.Web.Proxy.Http; using Titanium.Web.Proxy.Http;
using Titanium.Web.Proxy.Models; using Titanium.Web.Proxy.Models;
using Titanium.Web.Proxy.Network.Tcp; using Titanium.Web.Proxy.Network.Tcp;
using Titanium.Web.Proxy.Shared;
namespace Titanium.Web.Proxy namespace Titanium.Web.Proxy
{ {
...@@ -24,15 +25,6 @@ namespace Titanium.Web.Proxy ...@@ -24,15 +25,6 @@ namespace Titanium.Web.Proxy
/// </summary> /// </summary>
public partial class ProxyServer public partial class ProxyServer
{ {
private static readonly Regex uriSchemeRegex =
new Regex("^[a-z]*://", RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly HashSet<string> proxySupportedCompressions =
new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
"gzip",
"deflate"
};
private bool isWindowsAuthenticationEnabledAndSupported => private bool isWindowsAuthenticationEnabledAndSupported =>
EnableWinAuth && RunTime.IsWindows && !RunTime.IsRunningOnMono; EnableWinAuth && RunTime.IsWindows && !RunTime.IsRunningOnMono;
...@@ -96,7 +88,7 @@ namespace Titanium.Web.Proxy ...@@ -96,7 +88,7 @@ namespace Titanium.Web.Proxy
cancellationToken); cancellationToken);
Uri httpRemoteUri; Uri httpRemoteUri;
if (uriSchemeRegex.IsMatch(httpUrl)) if (ProxyConstants.UriSchemeRegex.IsMatch(httpUrl))
{ {
try try
{ {
...@@ -228,7 +220,7 @@ namespace Titanium.Web.Proxy ...@@ -228,7 +220,7 @@ namespace Titanium.Web.Proxy
} }
// construct the web request that we are going to issue on behalf of the client. // construct the web request that we are going to issue on behalf of the client.
await handleHttpSessionRequestInternal(serverConnection, args); await handleHttpSessionRequest(serverConnection, args);
return true; return true;
}, generator, connection); }, generator, connection);
...@@ -312,7 +304,7 @@ namespace Titanium.Web.Proxy ...@@ -312,7 +304,7 @@ namespace Titanium.Web.Proxy
/// <param name="serverConnection">The tcp connection.</param> /// <param name="serverConnection">The tcp connection.</param>
/// <param name="args">The session event arguments.</param> /// <param name="args">The session event arguments.</param>
/// <returns></returns> /// <returns></returns>
private async Task handleHttpSessionRequestInternal(TcpServerConnection serverConnection, SessionEventArgs args) private async Task handleHttpSessionRequest(TcpServerConnection serverConnection, SessionEventArgs args)
{ {
var cancellationToken = args.CancellationTokenSource.Token; var cancellationToken = args.CancellationTokenSource.Token;
var request = args.WebSession.Request; var request = args.WebSession.Request;
...@@ -400,7 +392,7 @@ namespace Titanium.Web.Proxy ...@@ -400,7 +392,7 @@ namespace Titanium.Web.Proxy
//only allow proxy supported compressions //only allow proxy supported compressions
supportedAcceptEncoding.AddRange(acceptEncoding.Split(',') supportedAcceptEncoding.AddRange(acceptEncoding.Split(',')
.Select(x => x.Trim()) .Select(x => x.Trim())
.Where(x => proxySupportedCompressions.Contains(x))); .Where(x => ProxyConstants.ProxySupportedCompressions.Contains(x)));
//uncompressed is always supported by proxy //uncompressed is always supported by proxy
supportedAcceptEncoding.Add("identity"); supportedAcceptEncoding.Add("identity");
......
...@@ -80,7 +80,7 @@ namespace Titanium.Web.Proxy ...@@ -80,7 +80,7 @@ namespace Titanium.Web.Proxy
{ {
// clear current response // clear current response
await args.ClearResponse(cancellationToken); await args.ClearResponse(cancellationToken);
await handleHttpSessionRequestInternal(args.WebSession.ServerConnection, args); await handleHttpSessionRequest(args.WebSession.ServerConnection, args);
return; return;
} }
......
using System.Text.RegularExpressions; using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Titanium.Web.Proxy.Shared namespace Titanium.Web.Proxy.Shared
{ {
...@@ -14,9 +16,20 @@ namespace Titanium.Web.Proxy.Shared ...@@ -14,9 +16,20 @@ namespace Titanium.Web.Proxy.Shared
internal static readonly char[] SemiColonSplit = { ';' }; internal static readonly char[] SemiColonSplit = { ';' };
internal static readonly char[] EqualSplit = { '=' }; internal static readonly char[] EqualSplit = { '=' };
internal static readonly byte[] NewLine = { (byte)'\r', (byte)'\n' }; internal static readonly string NewLine = "\r\n";
internal static readonly byte[] NewLineBytes = { (byte)'\r', (byte)'\n' };
public static readonly Regex CNRemoverRegex = internal static readonly Regex UriSchemeRegex =
new Regex("^[a-z]*://", RegexOptions.IgnoreCase | RegexOptions.Compiled);
internal static readonly HashSet<string> ProxySupportedCompressions =
new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
"gzip",
"deflate"
};
internal static readonly Regex CNRemoverRegex =
new Regex(@"^CN\s*=\s*", RegexOptions.IgnoreCase | RegexOptions.Compiled); new Regex(@"^CN\s*=\s*", RegexOptions.IgnoreCase | RegexOptions.Compiled);
} }
} }
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Delegate AsyncEventHandler&lt;TEventArgs&gt; <meta name="title" content="Delegate AsyncEventHandler&lt;TEventArgs&gt;
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class BeforeSslAuthenticateEventArgs <meta name="title" content="Class BeforeSslAuthenticateEventArgs
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class CertificateSelectionEventArgs <meta name="title" content="Class CertificateSelectionEventArgs
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class CertificateValidationEventArgs <meta name="title" content="Class CertificateValidationEventArgs
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class MultipartRequestPartSentEventArgs <meta name="title" content="Class MultipartRequestPartSentEventArgs
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class SessionEventArgs <meta name="title" content="Class SessionEventArgs
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class SessionEventArgsBase <meta name="title" content="Class SessionEventArgsBase
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class TunnelConnectSessionEventArgs <meta name="title" content="Class TunnelConnectSessionEventArgs
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Titanium.Web.Proxy.EventArguments <meta name="title" content="Namespace Titanium.Web.Proxy.EventArguments
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Delegate ExceptionHandler <meta name="title" content="Delegate ExceptionHandler
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class BodyNotFoundException <meta name="title" content="Class BodyNotFoundException
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ProxyAuthorizationException <meta name="title" content="Class ProxyAuthorizationException
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ProxyException <meta name="title" content="Class ProxyException
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ProxyHttpException <meta name="title" content="Class ProxyHttpException
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Titanium.Web.Proxy.Exceptions <meta name="title" content="Namespace Titanium.Web.Proxy.Exceptions
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ConnectRequest <meta name="title" content="Class ConnectRequest
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ConnectResponse <meta name="title" content="Class ConnectResponse
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class HeaderCollection <meta name="title" content="Class HeaderCollection
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class HttpWebClient <meta name="title" content="Class HttpWebClient
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class KnownHeaders <meta name="title" content="Class KnownHeaders
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class Request <meta name="title" content="Class Request
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class RequestResponseBase <meta name="title" content="Class RequestResponseBase
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class Response <meta name="title" content="Class Response
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class GenericResponse <meta name="title" content="Class GenericResponse
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class OkResponse <meta name="title" content="Class OkResponse
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class RedirectResponse <meta name="title" content="Class RedirectResponse
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Titanium.Web.Proxy.Http.Responses <meta name="title" content="Namespace Titanium.Web.Proxy.Http.Responses
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Titanium.Web.Proxy.Http <meta name="title" content="Namespace Titanium.Web.Proxy.Http
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ExplicitProxyEndPoint <meta name="title" content="Class ExplicitProxyEndPoint
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ExternalProxy <meta name="title" content="Class ExternalProxy
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class HttpHeader <meta name="title" content="Class HttpHeader
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ProxyEndPoint <meta name="title" content="Class ProxyEndPoint
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class TransparentProxyEndPoint <meta name="title" content="Class TransparentProxyEndPoint
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Titanium.Web.Proxy.Models <meta name="title" content="Namespace Titanium.Web.Proxy.Models
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Enum CertificateEngine <meta name="title" content="Enum CertificateEngine
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
...@@ -110,7 +110,8 @@ Default.</p> ...@@ -110,7 +110,8 @@ Default.</p>
</tr> </tr>
<tr> <tr>
<td id="Titanium_Web_Proxy_Network_CertificateEngine_DefaultWindows">DefaultWindows</td> <td id="Titanium_Web_Proxy_Network_CertificateEngine_DefaultWindows">DefaultWindows</td>
<td><p>Uses Windows Certification Generation API. <td><p>Uses Windows Certification Generation API and only valid in Windows OS.
Observed to be faster than BouncyCastle.
Bug #468 Reported.</p> Bug #468 Reported.</p>
</td> </td>
</tr> </tr>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class CertificateManager <meta name="title" content="Class CertificateManager
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Titanium.Web.Proxy.Network <meta name="title" content="Namespace Titanium.Web.Proxy.Network
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Class ProxyServer <meta name="title" content="Class ProxyServer
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Titanium.Web.Proxy <meta name="title" content="Namespace Titanium.Web.Proxy
| Titanium Web Proxy "> | Titanium Web Proxy ">
<meta name="generator" content="docfx 2.37.2.0"> <meta name="generator" content="docfx 2.38.1.0">
<link rel="shortcut icon" href="../favicon.ico"> <link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css"> <link rel="stylesheet" href="../styles/docfx.vendor.css">
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
<li> <li>
<a href="Titanium.Web.Proxy.ProxyServer.html" name="" title="ProxyServer">ProxyServer</a> <a href="Titanium.Web.Proxy.ProxyServer.html" name="" title="ProxyServer">ProxyServer</a>
</li> </li>
</ul> </li> </ul>
</li>
<li> <li>
<span class="expand-stub"></span> <span class="expand-stub"></span>
<a href="Titanium.Web.Proxy.EventArguments.html" name="" title="Titanium.Web.Proxy.EventArguments">Titanium.Web.Proxy.EventArguments</a> <a href="Titanium.Web.Proxy.EventArguments.html" name="" title="Titanium.Web.Proxy.EventArguments">Titanium.Web.Proxy.EventArguments</a>
...@@ -52,7 +53,8 @@ ...@@ -52,7 +53,8 @@
<li> <li>
<a href="Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html" name="" title="TunnelConnectSessionEventArgs">TunnelConnectSessionEventArgs</a> <a href="Titanium.Web.Proxy.EventArguments.TunnelConnectSessionEventArgs.html" name="" title="TunnelConnectSessionEventArgs">TunnelConnectSessionEventArgs</a>
</li> </li>
</ul> </li> </ul>
</li>
<li> <li>
<span class="expand-stub"></span> <span class="expand-stub"></span>
<a href="Titanium.Web.Proxy.Exceptions.html" name="" title="Titanium.Web.Proxy.Exceptions">Titanium.Web.Proxy.Exceptions</a> <a href="Titanium.Web.Proxy.Exceptions.html" name="" title="Titanium.Web.Proxy.Exceptions">Titanium.Web.Proxy.Exceptions</a>
...@@ -70,7 +72,8 @@ ...@@ -70,7 +72,8 @@
<li> <li>
<a href="Titanium.Web.Proxy.Exceptions.ProxyHttpException.html" name="" title="ProxyHttpException">ProxyHttpException</a> <a href="Titanium.Web.Proxy.Exceptions.ProxyHttpException.html" name="" title="ProxyHttpException">ProxyHttpException</a>
</li> </li>
</ul> </li> </ul>
</li>
<li> <li>
<span class="expand-stub"></span> <span class="expand-stub"></span>
<a href="Titanium.Web.Proxy.Http.html" name="" title="Titanium.Web.Proxy.Http">Titanium.Web.Proxy.Http</a> <a href="Titanium.Web.Proxy.Http.html" name="" title="Titanium.Web.Proxy.Http">Titanium.Web.Proxy.Http</a>
...@@ -100,7 +103,8 @@ ...@@ -100,7 +103,8 @@
<li> <li>
<a href="Titanium.Web.Proxy.Http.Response.html" name="" title="Response">Response</a> <a href="Titanium.Web.Proxy.Http.Response.html" name="" title="Response">Response</a>
</li> </li>
</ul> </li> </ul>
</li>
<li> <li>
<span class="expand-stub"></span> <span class="expand-stub"></span>
<a href="Titanium.Web.Proxy.Http.Responses.html" name="" title="Titanium.Web.Proxy.Http.Responses">Titanium.Web.Proxy.Http.Responses</a> <a href="Titanium.Web.Proxy.Http.Responses.html" name="" title="Titanium.Web.Proxy.Http.Responses">Titanium.Web.Proxy.Http.Responses</a>
...@@ -115,7 +119,8 @@ ...@@ -115,7 +119,8 @@
<li> <li>
<a href="Titanium.Web.Proxy.Http.Responses.RedirectResponse.html" name="" title="RedirectResponse">RedirectResponse</a> <a href="Titanium.Web.Proxy.Http.Responses.RedirectResponse.html" name="" title="RedirectResponse">RedirectResponse</a>
</li> </li>
</ul> </li> </ul>
</li>
<li> <li>
<span class="expand-stub"></span> <span class="expand-stub"></span>
<a href="Titanium.Web.Proxy.Models.html" name="" title="Titanium.Web.Proxy.Models">Titanium.Web.Proxy.Models</a> <a href="Titanium.Web.Proxy.Models.html" name="" title="Titanium.Web.Proxy.Models">Titanium.Web.Proxy.Models</a>
...@@ -136,7 +141,8 @@ ...@@ -136,7 +141,8 @@
<li> <li>
<a href="Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html" name="" title="TransparentProxyEndPoint">TransparentProxyEndPoint</a> <a href="Titanium.Web.Proxy.Models.TransparentProxyEndPoint.html" name="" title="TransparentProxyEndPoint">TransparentProxyEndPoint</a>
</li> </li>
</ul> </li> </ul>
</li>
<li> <li>
<span class="expand-stub"></span> <span class="expand-stub"></span>
<a href="Titanium.Web.Proxy.Network.html" name="" title="Titanium.Web.Proxy.Network">Titanium.Web.Proxy.Network</a> <a href="Titanium.Web.Proxy.Network.html" name="" title="Titanium.Web.Proxy.Network">Titanium.Web.Proxy.Network</a>
...@@ -148,8 +154,10 @@ ...@@ -148,8 +154,10 @@
<li> <li>
<a href="Titanium.Web.Proxy.Network.CertificateManager.html" name="" title="CertificateManager">CertificateManager</a> <a href="Titanium.Web.Proxy.Network.CertificateManager.html" name="" title="CertificateManager">CertificateManager</a>
</li> </li>
</ul> </li> </ul>
</ul> </div> </li>
</ul>
</div>
</div> </div>
</div> </div>
</div> </div>
\ No newline at end of file
...@@ -177,7 +177,7 @@ ...@@ -177,7 +177,7 @@
"api/Titanium.Web.Proxy.Network.CertificateEngine.html": { "api/Titanium.Web.Proxy.Network.CertificateEngine.html": {
"href": "api/Titanium.Web.Proxy.Network.CertificateEngine.html", "href": "api/Titanium.Web.Proxy.Network.CertificateEngine.html",
"title": "Enum CertificateEngine | Titanium Web Proxy", "title": "Enum CertificateEngine | Titanium Web Proxy",
"keywords": "Enum CertificateEngine Certificate Engine option. Namespace : Titanium.Web.Proxy.Network Assembly : Titanium.Web.Proxy.dll Syntax public enum CertificateEngine Fields Name Description BouncyCastle Uses BouncyCastle 3rd party library. Default. DefaultWindows Uses Windows Certification Generation API. Bug #468 Reported." "keywords": "Enum CertificateEngine Certificate Engine option. Namespace : Titanium.Web.Proxy.Network Assembly : Titanium.Web.Proxy.dll Syntax public enum CertificateEngine Fields Name Description BouncyCastle Uses BouncyCastle 3rd party library. Default. DefaultWindows Uses Windows Certification Generation API and only valid in Windows OS. Observed to be faster than BouncyCastle. Bug #468 Reported."
}, },
"api/Titanium.Web.Proxy.Network.CertificateManager.html": { "api/Titanium.Web.Proxy.Network.CertificateManager.html": {
"href": "api/Titanium.Web.Proxy.Network.CertificateManager.html", "href": "api/Titanium.Web.Proxy.Network.CertificateManager.html",
......
...@@ -387,9 +387,12 @@ $(function () { ...@@ -387,9 +387,12 @@ $(function () {
} }
} else { } else {
if (util.getAbsolutePath(href) === currentAbsPath) { if (util.getAbsolutePath(href) === currentAbsPath) {
var dropdown = $(e).attr('data-toggle') == "dropdown"
if (!dropdown) {
isActive = true; isActive = true;
} }
} }
}
if (isActive) { if (isActive) {
$(e).addClass(active); $(e).addClass(active);
} }
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment