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
9136f87a
Commit
9136f87a
authored
Nov 20, 2018
by
justcoding121
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comments update
parent
a7cab15f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
32 additions
and
32 deletions
+32
-32
README.md
README.md
+11
-11
ProxyTestController.cs
.../Titanium.Web.Proxy.Examples.Basic/ProxyTestController.cs
+13
-13
MainWindow.xaml.cs
examples/Titanium.Web.Proxy.Examples.Wpf/MainWindow.xaml.cs
+3
-3
SessionListItem.cs
examples/Titanium.Web.Proxy.Examples.Wpf/SessionListItem.cs
+4
-4
SessionEventArgsBase.cs
...Titanium.Web.Proxy/EventArguments/SessionEventArgsBase.cs
+1
-1
No files found.
README.md
View file @
9136f87a
...
@@ -126,7 +126,7 @@ Sample request and response event handlers
...
@@ -126,7 +126,7 @@ Sample request and response event handlers
private
async
Task
OnBeforeTunnelConnectRequest
(
object
sender
,
TunnelConnectSessionEventArgs
e
)
private
async
Task
OnBeforeTunnelConnectRequest
(
object
sender
,
TunnelConnectSessionEventArgs
e
)
{
{
string
hostname
=
e
.
WebSession
.
Request
.
RequestUri
.
Host
;
string
hostname
=
e
.
HttpClient
.
Request
.
RequestUri
.
Host
;
if
(
hostname
.
Contains
(
"dropbox.com"
))
if
(
hostname
.
Contains
(
"dropbox.com"
))
{
{
...
@@ -139,12 +139,12 @@ private async Task OnBeforeTunnelConnectRequest(object sender, TunnelConnectSess
...
@@ -139,12 +139,12 @@ private async Task OnBeforeTunnelConnectRequest(object sender, TunnelConnectSess
public
async
Task
OnRequest
(
object
sender
,
SessionEventArgs
e
)
public
async
Task
OnRequest
(
object
sender
,
SessionEventArgs
e
)
{
{
Console
.
WriteLine
(
e
.
WebSession
.
Request
.
Url
);
Console
.
WriteLine
(
e
.
HttpClient
.
Request
.
Url
);
////read request headers
////read request headers
var
requestHeaders
=
e
.
WebSession
.
Request
.
RequestHeaders
;
var
requestHeaders
=
e
.
HttpClient
.
Request
.
RequestHeaders
;
var
method
=
e
.
WebSession
.
Request
.
Method
.
ToUpper
();
var
method
=
e
.
HttpClient
.
Request
.
Method
.
ToUpper
();
if
((
method
==
"POST"
||
method
==
"PUT"
||
method
==
"PATCH"
))
if
((
method
==
"POST"
||
method
==
"PUT"
||
method
==
"PATCH"
))
{
{
//Get/Set request body bytes
//Get/Set request body bytes
...
@@ -157,12 +157,12 @@ public async Task OnRequest(object sender, SessionEventArgs e)
...
@@ -157,12 +157,12 @@ public async Task OnRequest(object sender, SessionEventArgs e)
//store request
//store request
//so that you can find it from response handler
//so that you can find it from response handler
e
.
UserData
=
e
.
WebSession
.
Request
;
e
.
UserData
=
e
.
HttpClient
.
Request
;
}
}
//To cancel a request with a custom HTML content
//To cancel a request with a custom HTML content
//Filter URL
//Filter URL
if
(
e
.
WebSession
.
Request
.
RequestUri
.
AbsoluteUri
.
Contains
(
"google.com"
))
if
(
e
.
HttpClient
.
Request
.
RequestUri
.
AbsoluteUri
.
Contains
(
"google.com"
))
{
{
e
.
Ok
(
"<!DOCTYPE html>"
+
e
.
Ok
(
"<!DOCTYPE html>"
+
"<html><body><h1>"
+
"<html><body><h1>"
+
...
@@ -173,7 +173,7 @@ public async Task OnRequest(object sender, SessionEventArgs e)
...
@@ -173,7 +173,7 @@ public async Task OnRequest(object sender, SessionEventArgs e)
"</html>"
);
"</html>"
);
}
}
//Redirect example
//Redirect example
if
(
e
.
WebSession
.
Request
.
RequestUri
.
AbsoluteUri
.
Contains
(
"wikipedia.org"
))
if
(
e
.
HttpClient
.
Request
.
RequestUri
.
AbsoluteUri
.
Contains
(
"wikipedia.org"
))
{
{
e
.
Redirect
(
"https://www.paypal.com"
);
e
.
Redirect
(
"https://www.paypal.com"
);
}
}
...
@@ -183,14 +183,14 @@ public async Task OnRequest(object sender, SessionEventArgs e)
...
@@ -183,14 +183,14 @@ public async Task OnRequest(object sender, SessionEventArgs e)
public
async
Task
OnResponse
(
object
sender
,
SessionEventArgs
e
)
public
async
Task
OnResponse
(
object
sender
,
SessionEventArgs
e
)
{
{
//read response headers
//read response headers
var
responseHeaders
=
e
.
WebSession
.
Response
.
ResponseHeaders
;
var
responseHeaders
=
e
.
HttpClient
.
Response
.
ResponseHeaders
;
//if (!e.ProxySession.Request.Host.Equals("medeczane.sgk.gov.tr")) return;
//if (!e.ProxySession.Request.Host.Equals("medeczane.sgk.gov.tr")) return;
if
(
e
.
WebSession
.
Request
.
Method
==
"GET"
||
e
.
WebSession
.
Request
.
Method
==
"POST"
)
if
(
e
.
HttpClient
.
Request
.
Method
==
"GET"
||
e
.
HttpClient
.
Request
.
Method
==
"POST"
)
{
{
if
(
e
.
WebSession
.
Response
.
ResponseStatusCode
==
"200"
)
if
(
e
.
HttpClient
.
Response
.
ResponseStatusCode
==
"200"
)
{
{
if
(
e
.
WebSession
.
Response
.
ContentType
!=
null
&&
e
.
WebSession
.
Response
.
ContentType
.
Trim
().
ToLower
().
Contains
(
"text/html"
))
if
(
e
.
HttpClient
.
Response
.
ContentType
!=
null
&&
e
.
HttpClient
.
Response
.
ContentType
.
Trim
().
ToLower
().
Contains
(
"text/html"
))
{
{
byte
[]
bodyBytes
=
await
e
.
GetResponseBody
();
byte
[]
bodyBytes
=
await
e
.
GetResponseBody
();
await
e
.
SetResponseBody
(
bodyBytes
);
await
e
.
SetResponseBody
(
bodyBytes
);
...
...
examples/Titanium.Web.Proxy.Examples.Basic/ProxyTestController.cs
View file @
9136f87a
...
@@ -145,20 +145,20 @@ namespace Titanium.Web.Proxy.Examples.Basic
...
@@ -145,20 +145,20 @@ namespace Titanium.Web.Proxy.Examples.Basic
// It can be a simple integer, Guid, or any type
// It can be a simple integer, Guid, or any type
//e.UserData = new CustomUserData()
//e.UserData = new CustomUserData()
//{
//{
// RequestHeaders = e.
WebSession
.Request.Headers,
// RequestHeaders = e.
HttpClient
.Request.Headers,
// RequestBody = e.
WebSession.Request.HasBody ? e.WebSession
.Request.Body:null,
// RequestBody = e.
HttpClient.Request.HasBody ? e.HttpClient
.Request.Body:null,
// RequestBodyString = e.
WebSession.Request.HasBody? e.WebSession
.Request.BodyString:null
// RequestBodyString = e.
HttpClient.Request.HasBody? e.HttpClient
.Request.BodyString:null
//};
//};
////This sample shows how to get the multipart form data headers
////This sample shows how to get the multipart form data headers
//if (e.
WebSession.Request.Host == "mail.yahoo.com" && e.WebSession
.Request.IsMultipartFormData)
//if (e.
HttpClient.Request.Host == "mail.yahoo.com" && e.HttpClient
.Request.IsMultipartFormData)
//{
//{
// e.MultipartRequestPartSent += MultipartRequestPartSent;
// e.MultipartRequestPartSent += MultipartRequestPartSent;
//}
//}
// To cancel a request with a custom HTML content
// To cancel a request with a custom HTML content
// Filter URL
// Filter URL
//if (e.
WebSession
.Request.RequestUri.AbsoluteUri.Contains("yahoo.com"))
//if (e.
HttpClient
.Request.RequestUri.AbsoluteUri.Contains("yahoo.com"))
//{
//{
// e.Ok("<!DOCTYPE html>" +
// e.Ok("<!DOCTYPE html>" +
// "<html><body><h1>" +
// "<html><body><h1>" +
...
@@ -170,7 +170,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
...
@@ -170,7 +170,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
//}
//}
////Redirect example
////Redirect example
//if (e.
WebSession
.Request.RequestUri.AbsoluteUri.Contains("wikipedia.org"))
//if (e.
HttpClient
.Request.RequestUri.AbsoluteUri.Contains("wikipedia.org"))
//{
//{
// e.Redirect("https://www.paypal.com");
// e.Redirect("https://www.paypal.com");
//}
//}
...
@@ -194,7 +194,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
...
@@ -194,7 +194,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
string
ext
=
System
.
IO
.
Path
.
GetExtension
(
e
.
HttpClient
.
Request
.
RequestUri
.
AbsolutePath
);
string
ext
=
System
.
IO
.
Path
.
GetExtension
(
e
.
HttpClient
.
Request
.
RequestUri
.
AbsolutePath
);
//access user data set in request to do something with it
//access user data set in request to do something with it
//var userData = e.
WebSession
.UserData as CustomUserData;
//var userData = e.
HttpClient
.UserData as CustomUserData;
//if (ext == ".gif" || ext == ".png" || ext == ".jpg")
//if (ext == ".gif" || ext == ".png" || ext == ".jpg")
//{
//{
...
@@ -207,21 +207,21 @@ namespace Titanium.Web.Proxy.Examples.Basic
...
@@ -207,21 +207,21 @@ namespace Titanium.Web.Proxy.Examples.Basic
// "</html>");
// "</html>");
// var response = new OkResponse(btBody);
// var response = new OkResponse(btBody);
// response.HttpVersion = e.
WebSession
.Request.HttpVersion;
// response.HttpVersion = e.
HttpClient
.Request.HttpVersion;
// e.Respond(response);
// e.Respond(response);
// e.TerminateServerConnection();
// e.TerminateServerConnection();
//}
//}
//// print out process id of current session
//// print out process id of current session
////WriteToConsole($"PID: {e.
WebSession
.ProcessId.Value}");
////WriteToConsole($"PID: {e.
HttpClient
.ProcessId.Value}");
////if (!e.ProxySession.Request.Host.Equals("medeczane.sgk.gov.tr")) return;
////if (!e.ProxySession.Request.Host.Equals("medeczane.sgk.gov.tr")) return;
//if (e.
WebSession.Request.Method == "GET" || e.WebSession
.Request.Method == "POST")
//if (e.
HttpClient.Request.Method == "GET" || e.HttpClient
.Request.Method == "POST")
//{
//{
// if (e.
WebSession
.Response.StatusCode == (int)HttpStatusCode.OK)
// if (e.
HttpClient
.Response.StatusCode == (int)HttpStatusCode.OK)
// {
// {
// if (e.
WebSession.Response.ContentType != null && e.WebSession
.Response.ContentType.Trim().ToLower().Contains("text/html"))
// if (e.
HttpClient.Response.ContentType != null && e.HttpClient
.Response.ContentType.Trim().ToLower().Contains("text/html"))
// {
// {
// var bodyBytes = await e.GetResponseBody();
// var bodyBytes = await e.GetResponseBody();
// await e.SetResponseBody(bodyBytes);
// await e.SetResponseBody(bodyBytes);
...
@@ -283,7 +283,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
...
@@ -283,7 +283,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
///// <summary>
///// <summary>
///// User data object as defined by user.
///// User data object as defined by user.
///// User data can be set to each SessionEventArgs.
WebSession
.UserData property
///// User data can be set to each SessionEventArgs.
HttpClient
.UserData property
///// </summary>
///// </summary>
//public class CustomUserData
//public class CustomUserData
//{
//{
...
...
examples/Titanium.Web.Proxy.Examples.Wpf/MainWindow.xaml.cs
View file @
9136f87a
...
@@ -203,7 +203,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
...
@@ -203,7 +203,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
var
item
=
new
SessionListItem
var
item
=
new
SessionListItem
{
{
Number
=
lastSessionNumber
,
Number
=
lastSessionNumber
,
WebSession
=
e
.
HttpClient
,
HttpClient
=
e
.
HttpClient
,
IsTunnelConnect
=
isTunnelConnect
IsTunnelConnect
=
isTunnelConnect
};
};
...
@@ -240,7 +240,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
...
@@ -240,7 +240,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
foreach
(
var
item
in
selectedItems
.
Cast
<
SessionListItem
>().
ToArray
())
foreach
(
var
item
in
selectedItems
.
Cast
<
SessionListItem
>().
ToArray
())
{
{
Sessions
.
Remove
(
item
);
Sessions
.
Remove
(
item
);
sessionDictionary
.
Remove
(
item
.
WebSession
);
sessionDictionary
.
Remove
(
item
.
HttpClient
);
}
}
}
}
}
}
...
@@ -254,7 +254,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
...
@@ -254,7 +254,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
const
int
truncateLimit
=
1024
;
const
int
truncateLimit
=
1024
;
var
session
=
SelectedSession
.
WebSession
;
var
session
=
SelectedSession
.
HttpClient
;
var
request
=
session
.
Request
;
var
request
=
session
.
Request
;
var
data
=
(
request
.
IsBodyRead
?
request
.
Body
:
null
)
??
new
byte
[
0
];
var
data
=
(
request
.
IsBodyRead
?
request
.
Body
:
null
)
??
new
byte
[
0
];
bool
truncated
=
data
.
Length
>
truncateLimit
;
bool
truncated
=
data
.
Length
>
truncateLimit
;
...
...
examples/Titanium.Web.Proxy.Examples.Wpf/SessionListItem.cs
View file @
9136f87a
...
@@ -20,7 +20,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
...
@@ -20,7 +20,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
public
int
Number
{
get
;
set
;
}
public
int
Number
{
get
;
set
;
}
public
HttpWebClient
WebSession
{
get
;
set
;
}
public
HttpWebClient
HttpClient
{
get
;
set
;
}
public
bool
IsTunnelConnect
{
get
;
set
;
}
public
bool
IsTunnelConnect
{
get
;
set
;
}
...
@@ -97,8 +97,8 @@ namespace Titanium.Web.Proxy.Examples.Wpf
...
@@ -97,8 +97,8 @@ namespace Titanium.Web.Proxy.Examples.Wpf
public
void
Update
()
public
void
Update
()
{
{
var
request
=
WebSession
.
Request
;
var
request
=
HttpClient
.
Request
;
var
response
=
WebSession
.
Response
;
var
response
=
HttpClient
.
Response
;
int
statusCode
=
response
?.
StatusCode
??
0
;
int
statusCode
=
response
?.
StatusCode
??
0
;
StatusCode
=
statusCode
==
0
?
"-"
:
statusCode
.
ToString
();
StatusCode
=
statusCode
==
0
?
"-"
:
statusCode
.
ToString
();
Protocol
=
request
.
RequestUri
.
Scheme
;
Protocol
=
request
.
RequestUri
.
Scheme
;
...
@@ -132,7 +132,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
...
@@ -132,7 +132,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
BodySize
=
responseSize
;
BodySize
=
responseSize
;
}
}
Process
=
GetProcessDescription
(
WebSession
.
ProcessId
.
Value
);
Process
=
GetProcessDescription
(
HttpClient
.
ProcessId
.
Value
);
}
}
private
string
GetProcessDescription
(
int
processId
)
private
string
GetProcessDescription
(
int
processId
)
...
...
src/Titanium.Web.Proxy/EventArguments/SessionEventArgsBase.cs
View file @
9136f87a
...
@@ -83,7 +83,7 @@ namespace Titanium.Web.Proxy.EventArguments
...
@@ -83,7 +83,7 @@ namespace Titanium.Web.Proxy.EventArguments
/// <summary>
/// <summary>
/// Returns a user data for this request/response session which is
/// Returns a user data for this request/response session which is
/// same as the user data of
WebSession
.
/// same as the user data of
HttpClient
.
/// </summary>
/// </summary>
public
object
UserData
public
object
UserData
{
{
...
...
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