mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 08:11:00 +00:00
Port pathoc to new netlib API. Add SNI.
This commit is contained in:
parent
8352c0278f
commit
f32258e8f7
@ -15,9 +15,9 @@ def print_full(fp, httpversion, code, msg, headers, content):
|
||||
|
||||
|
||||
class Pathoc(tcp.TCPClient):
|
||||
def __init__(self, ssl, host, port, clientcert):
|
||||
def __init__(self, host, port):
|
||||
try:
|
||||
tcp.TCPClient.__init__(self, ssl, host, port, clientcert)
|
||||
tcp.TCPClient.__init__(self, host, port)
|
||||
except tcp.NetLibError, v:
|
||||
raise PathocError(v)
|
||||
|
||||
|
@ -7,6 +7,10 @@ class PathodError(Exception): pass
|
||||
|
||||
|
||||
class PathodHandler(tcp.BaseHandler):
|
||||
sni = None
|
||||
def handle_sni(self, connection):
|
||||
self.sni = connection.get_servername()
|
||||
|
||||
def handle(self):
|
||||
if self.server.ssloptions:
|
||||
self.convert_to_ssl(
|
||||
@ -50,6 +54,7 @@ class PathodHandler(tcp.BaseHandler):
|
||||
path = path,
|
||||
method = method,
|
||||
headers = headers.lst,
|
||||
sni = self.sni,
|
||||
#remote_address = self.request.connection.address,
|
||||
#full_url = self.request.full_url(),
|
||||
#query = self.request.query,
|
||||
|
14
pathoc
14
pathoc
@ -1,11 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
import argparse, sys
|
||||
from libpathod import pathoc, version
|
||||
from libpathod import pathoc, version, rparse
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='A perverse HTTP client.')
|
||||
parser.add_argument('--port', "-p", type=int, default=None, help="Port. Defaults to 80, or 443 if SSL is active.")
|
||||
parser.add_argument('--ssl', "-s", action="store_true", default=False, help="Connect with SSL.")
|
||||
parser.add_argument('--sni', "-n", type=str, default=False, help="SSL Server Name Indication.")
|
||||
parser.add_argument('--verbose', '-v', action='count')
|
||||
parser.add_argument('host', type=str, help='Host to connect to')
|
||||
parser.add_argument('request', type=str, nargs="+", help='Request specification')
|
||||
@ -17,16 +18,21 @@ if __name__ == "__main__":
|
||||
else:
|
||||
port = args.port
|
||||
|
||||
|
||||
try:
|
||||
p = pathoc.Pathoc(args.ssl, args.host, port, None)
|
||||
p = pathoc.Pathoc(args.host, port)
|
||||
p.connect()
|
||||
if args.ssl:
|
||||
p.convert_to_ssl(sni=args.sni)
|
||||
for i in args.request:
|
||||
ret = p.request(i)
|
||||
if args.verbose:
|
||||
pathoc.print_full(sys.stdout, *ret)
|
||||
else:
|
||||
pathoc.print_short(sys.stdout, *ret)
|
||||
|
||||
except pathoc.PathocError, v:
|
||||
print >> sys.stderr, str(v)
|
||||
sys.exit(1)
|
||||
except rparse.ParseException, v:
|
||||
print >> sys.stderr, "Error parsing request spec: %s"%v.msg
|
||||
print >> sys.stderr, v.marked()
|
||||
sys.exit(1)
|
||||
|
Loading…
Reference in New Issue
Block a user