Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
T
Titanium-Web-Proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Titanium-Web-Proxy
Commits
a11b166d
Commit
a11b166d
authored
May 07, 2017
by
Jehonathan Thomas
Committed by
GitHub
May 07, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #206 from honfika/develop
ArgumentException fix when proxy dll is loaded dynamically
parents
ebd9284b
feab9bb9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
11 deletions
+21
-11
CertificateManager.cs
Titanium.Web.Proxy/Network/CertificateManager.cs
+17
-7
RequestHandler.cs
Titanium.Web.Proxy/RequestHandler.cs
+4
-4
No files found.
Titanium.Web.Proxy/Network/CertificateManager.cs
View file @
a11b166d
...
...
@@ -34,6 +34,7 @@ namespace Titanium.Web.Proxy.Network
private
readonly
ICertificateMaker
certEngine
;
private
bool
clearCertificates
{
get
;
set
;
}
/// <summary>
/// Cache dictionary
/// </summary>
...
...
@@ -70,17 +71,29 @@ namespace Titanium.Web.Proxy.Network
certificateCache
=
new
ConcurrentDictionary
<
string
,
CachedCertificate
>();
}
internal
X509Certificate2
GetRootCertificate
()
private
string
GetRootCertificatePath
()
{
var
path
=
Path
.
GetDirectoryName
(
System
.
Reflection
.
Assembly
.
GetExecutingAssembly
().
Location
);
var
assemblyLocation
=
System
.
Reflection
.
Assembly
.
GetExecutingAssembly
().
Location
;
// dynamically loaded assemblies returns string.Empty location
if
(
assemblyLocation
==
string
.
Empty
)
{
assemblyLocation
=
System
.
Reflection
.
Assembly
.
GetEntryAssembly
().
Location
;
}
var
path
=
Path
.
GetDirectoryName
(
assemblyLocation
);
if
(
null
==
path
)
throw
new
NullReferenceException
();
var
fileName
=
Path
.
Combine
(
path
,
"rootCert.pfx"
);
return
fileName
;
}
internal
X509Certificate2
GetRootCertificate
()
{
var
fileName
=
GetRootCertificatePath
();
if
(!
File
.
Exists
(
fileName
))
return
null
;
try
{
return
new
X509Certificate2
(
fileName
,
string
.
Empty
,
X509KeyStorageFlags
.
Exportable
);
}
catch
(
Exception
e
)
{
...
...
@@ -94,7 +107,6 @@ namespace Titanium.Web.Proxy.Network
/// <returns>true if succeeded, else false</returns>
internal
bool
CreateTrustedRootCertificate
()
{
rootCertificate
=
GetRootCertificate
();
if
(
rootCertificate
!=
null
)
{
...
...
@@ -112,9 +124,7 @@ namespace Titanium.Web.Proxy.Network
{
try
{
var
path
=
Path
.
GetDirectoryName
(
System
.
Reflection
.
Assembly
.
GetExecutingAssembly
().
Location
);
if
(
null
==
path
)
throw
new
NullReferenceException
();
var
fileName
=
Path
.
Combine
(
path
,
"rootCert.pfx"
);
var
fileName
=
GetRootCertificatePath
();
File
.
WriteAllBytes
(
fileName
,
rootCertificate
.
Export
(
X509ContentType
.
Pkcs12
));
}
catch
(
Exception
e
)
...
...
Titanium.Web.Proxy/RequestHandler.cs
View file @
a11b166d
...
...
@@ -54,9 +54,9 @@ namespace Titanium.Web.Proxy
var
httpCmdSplit
=
httpCmd
.
Split
(
ProxyConstants
.
SpaceSplit
,
3
);
//Find the request Verb
var
httpVerb
=
httpCmdSplit
[
0
];
var
httpVerb
=
httpCmdSplit
[
0
]
.
ToUpper
()
;
httpRemoteUri
=
httpVerb
.
ToUpper
()
==
"CONNECT"
?
httpRemoteUri
=
httpVerb
==
"CONNECT"
?
new
Uri
(
"http://"
+
httpCmdSplit
[
1
])
:
new
Uri
(
httpCmdSplit
[
1
]);
//parse the HTTP version
...
...
@@ -78,7 +78,7 @@ namespace Titanium.Web.Proxy
List
<
HttpHeader
>
connectRequestHeaders
=
null
;
//Client wants to create a secure tcp tunnel (its a HTTPS request)
if
(
httpVerb
.
ToUpper
()
==
"CONNECT"
&&
!
excluded
&&
httpRemoteUri
.
Port
!=
80
)
if
(
httpVerb
==
"CONNECT"
&&
!
excluded
&&
httpRemoteUri
.
Port
!=
80
)
{
httpRemoteUri
=
new
Uri
(
"https://"
+
httpCmdSplit
[
1
]);
string
tmpLine
;
...
...
@@ -131,7 +131,7 @@ namespace Titanium.Web.Proxy
}
//Sorry cannot do a HTTPS request decrypt to port 80 at this time
else
if
(
httpVerb
.
ToUpper
()
==
"CONNECT"
)
else
if
(
httpVerb
==
"CONNECT"
)
{
//Cyphen out CONNECT request headers
await
clientStreamReader
.
ReadAllLinesAsync
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment