diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-01-17 19:54:59 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-01-17 19:54:59 +0100 |
commit | 0f54f2990c0a32960ec5c82c620f79c68ad5f4b6 (patch) | |
tree | dfe43a773f4ef600dc35af06d936804bbcf893e9 /libmproxy/protocol/rawtcp.py | |
parent | add33f873336c510dd171fe3665f686216b18488 (diff) | |
parent | e766838a1a6bbb0b2290a3986ba8ae71c736f6f6 (diff) | |
download | mitmproxy-0f54f2990c0a32960ec5c82c620f79c68ad5f4b6.tar.gz mitmproxy-0f54f2990c0a32960ec5c82c620f79c68ad5f4b6.tar.bz2 mitmproxy-0f54f2990c0a32960ec5c82c620f79c68ad5f4b6.zip |
Merge pull request #872 from bazzinotti/inline-tcp
Add "tcp_message" Inline Script Hook
Diffstat (limited to 'libmproxy/protocol/rawtcp.py')
-rw-r--r-- | libmproxy/protocol/rawtcp.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/libmproxy/protocol/rawtcp.py b/libmproxy/protocol/rawtcp.py index 5f08fd17..ccd3c7ec 100644 --- a/libmproxy/protocol/rawtcp.py +++ b/libmproxy/protocol/rawtcp.py @@ -13,6 +13,15 @@ from ..exceptions import ProtocolException from .base import Layer +class TcpMessage(object): + def __init__(self, client_conn, server_conn, sender, receiver, message): + self.client_conn = client_conn + self.server_conn = server_conn + self.sender = sender + self.receiver = receiver + self.message = message + + class RawTCPLayer(Layer): chunk_size = 4096 @@ -50,7 +59,13 @@ class RawTCPLayer(Layer): return continue - dst.sendall(buf[:size]) + tcp_message = TcpMessage( + self.client_conn, self.server_conn, + self.client_conn if dst == server else self.server_conn, + self.server_conn if dst == server else self.client_conn, + buf[:size].tobytes()) + self.channel.ask("tcp_message", tcp_message) + dst.sendall(tcp_message.message) if self.logging: # log messages are prepended with the client address, @@ -59,7 +74,7 @@ class RawTCPLayer(Layer): direction = "-> tcp -> {}".format(repr(self.server_conn.address)) else: direction = "<- tcp <- {}".format(repr(self.server_conn.address)) - data = clean_bin(buf[:size].tobytes()) + data = clean_bin(tcp_message.message) self.log( "{}\r\n{}".format(direction, data), "info" |