aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-03-10 17:01:30 +0100
committerMaximilian Hils <git@maximilianhils.com>2014-03-10 17:01:30 +0100
commit9cc10630c8e0b0f249ed852299d3316ba42f128d (patch)
tree4c711fe124c6c8ce786350f39f06680858a7e60b
parentfe58c1c6eb16fdc14bd24843cb896b3d8a4eefc8 (diff)
downloadmitmproxy-9cc10630c8e0b0f249ed852299d3316ba42f128d.tar.gz
mitmproxy-9cc10630c8e0b0f249ed852299d3316ba42f128d.tar.bz2
mitmproxy-9cc10630c8e0b0f249ed852299d3316ba42f128d.zip
update docs, fix #215
-rw-r--r--doc-src/scripting/inlinescripts.html28
-rw-r--r--libmproxy/cmdline.py2
-rw-r--r--libmproxy/console/flowview.py4
-rw-r--r--libmproxy/protocol/__init__.py2
-rw-r--r--libmproxy/proxy/server.py20
5 files changed, 29 insertions, 27 deletions
diff --git a/doc-src/scripting/inlinescripts.html b/doc-src/scripting/inlinescripts.html
index 7ab1c101..32a98e99 100644
--- a/doc-src/scripting/inlinescripts.html
+++ b/doc-src/scripting/inlinescripts.html
@@ -76,26 +76,26 @@ The main classes you will deal with in writing mitmproxy scripts are:
<table class="table">
<tr>
- <th>libmproxy.flow.ClientConnection</th>
- <td>Describes a client connection.</td>
+ <th>libmproxy.proxy.server.ConnectionHandler</th>
+ <td>Describes a proxy client connection session. Always has a client_conn attribute, might have a server_conn attribute.</td>
</tr>
<tr>
- <th>libmproxy.flow.ClientDisconnection</th>
- <td>Describes a client disconnection.</td>
+ <th>libmproxy.proxy.connection.ClientConnection</th>
+ <td>Describes a client connection.</td>
+ </tr>
+ <tr>
+ <th>libmproxy.proxy.connection.ServerConnection</th>
+ <td>Describes a server connection.</td>
</tr>
<tr>
- <th>libmproxy.flow.Error</th>
+ <th>libmproxy.protocol.primitives.Error</th>
<td>A communications error.</td>
</tr>
<tr>
- <th>libmproxy.flow.Flow</th>
+ <th>libmproxy.protocol.http.HTTPFlow</th>
<td>A collection of objects representing a single HTTP transaction.</td>
</tr>
<tr>
- <th>libmproxy.flow.Headers</th>
- <td>HTTP headers for a request or response.</td>
- </tr>
- <tr>
<th>libmproxy.flow.ODict</th>
<td>A dictionary-like object for managing sets of key/value data. There
@@ -103,15 +103,15 @@ The main classes you will deal with in writing mitmproxy scripts are:
calls (used mainly for headers).</td>
</tr>
<tr>
- <th>libmproxy.flow.Response</th>
+ <th>libmproxy.protocol.http.HTTPResponse</th>
<td>An HTTP response.</td>
</tr>
<tr>
- <th>libmproxy.flow.Request</th>
+ <th>libmproxy.protocol.http.HTTPRequest</th>
<td>An HTTP request.</td>
</tr>
<tr>
- <th>libmproxy.flow.ScriptContext</th>
+ <th>libmproxy.script.ScriptContext</th>
<td> A handle for interacting with mitmproxy's from within scripts. </td>
</tr>
<tr>
@@ -124,7 +124,7 @@ The canonical API documentation is the code. You can view the API documentation
using pydoc (which is installed with Python by default), like this:
<pre class="terminal">
-> pydoc libmproxy.flow.Request
+> pydoc libmproxy.protocol.http.HTTPRequest
</pre>
diff --git a/libmproxy/cmdline.py b/libmproxy/cmdline.py
index 6c0cae9f..bee4aa60 100644
--- a/libmproxy/cmdline.py
+++ b/libmproxy/cmdline.py
@@ -209,7 +209,7 @@ def common_options(parser):
action="store", type = int, dest="port", default=8080,
help = "Proxy service port."
)
- # We could make a mutually exclusive group out of -R, -F, -T, but we don't do because
+ # We could make a mutually exclusive group out of -R, -F, -T, but we don't do that because
# - --upstream-server should be in that group as well, but it's already in a different group.
# - our own error messages are more helpful
parser.add_argument(
diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py
index f5b5f83f..9b636840 100644
--- a/libmproxy/console/flowview.py
+++ b/libmproxy/console/flowview.py
@@ -2,7 +2,7 @@ import os, sys, copy
import urwid
import common, grideditor, contentview
from .. import utils, flow, controller
-from ..protocol.http import CONTENT_MISSING
+from ..protocol.http import HTTPResponse, CONTENT_MISSING
class SearchError(Exception): pass
@@ -571,7 +571,7 @@ class FlowView(common.WWrap):
conn = self.flow.request
else:
if not self.flow.response:
- self.flow.response = flow.Response(
+ self.flow.response = HTTPResponse(
self.flow.request,
self.flow.request.httpversion,
200, "OK", flow.ODictCaseless(), "", None
diff --git a/libmproxy/protocol/__init__.py b/libmproxy/protocol/__init__.py
index 6200757f..b253fbd5 100644
--- a/libmproxy/protocol/__init__.py
+++ b/libmproxy/protocol/__init__.py
@@ -1,4 +1,4 @@
-from libmproxy.proxy.primitives import AddressPriority
+from ..proxy.primitives import AddressPriority
KILL = 0 # const for killed requests
diff --git a/libmproxy/proxy/server.py b/libmproxy/proxy/server.py
index 554ee551..c77ab2a8 100644
--- a/libmproxy/proxy/server.py
+++ b/libmproxy/proxy/server.py
@@ -1,10 +1,9 @@
import socket
-from .. import version, protocol
-from libmproxy.proxy.primitives import Log
-from .primitives import ProxyServerError
-from .connection import ClientConnection, ServerConnection
-from .primitives import ProxyError, ConnectionTypeChange, AddressPriority
+from OpenSSL import SSL
from netlib import tcp
+from .primitives import ProxyServerError, Log, ProxyError, ConnectionTypeChange, AddressPriority
+from .connection import ClientConnection, ServerConnection
+from .. import version, protocol
class DummyServer:
@@ -23,6 +22,7 @@ class DummyServer:
class ProxyServer(tcp.TCPServer):
allow_reuse_address = True
bound = True
+
def __init__(self, config, port, host='', server_version=version.NAMEVERSION):
"""
Raises ProxyServerError if there's a startup problem.
@@ -51,8 +51,11 @@ class ProxyServer(tcp.TCPServer):
class ConnectionHandler:
def __init__(self, config, client_connection, client_address, server, channel, server_version):
self.config = config
+ """@type: libmproxy.proxy.config.ProxyConfig"""
self.client_conn = ClientConnection(client_connection, client_address, server)
+ """@type: libmproxy.proxy.connection.ClientConnection"""
self.server_conn = None
+ """@type: libmproxy.proxy.connection.ServerConnection"""
self.channel, self.server_version = channel, server_version
self.close = False
@@ -98,7 +101,7 @@ class ConnectionHandler:
def del_server_connection(self):
"""
- Deletes an existing server connection.
+ Deletes (and closes) an existing server connection.
"""
if self.server_conn and self.server_conn.connection:
self.server_conn.finish()
@@ -150,8 +153,7 @@ class ConnectionHandler:
"""
Establishes SSL on the existing connection(s) to the server or the client,
as specified by the parameters. If the target server is on the pass-through list,
- the conntype attribute will be changed and the SSL connection won't be wrapped.
- A protocol handler must raise a ConnTypeChanged exception if it detects that this is happening
+ the conntype attribute will be changed and a ConnTypeChanged exception will be raised.
"""
# TODO: Implement SSL pass-through handling and change conntype
passthrough = [
@@ -160,7 +162,7 @@ class ConnectionHandler:
]
if self.server_conn.address.host in passthrough or self.sni in passthrough:
self.conntype = "tcp"
- return
+ raise ConnectionTypeChange
# Logging
if client or server: