From 8a48cea50252ac4cde65a853cf50c92fa541f52f Mon Sep 17 00:00:00 2001 From: kira0204 Date: Fri, 19 Jan 2018 13:31:48 +0530 Subject: [PATCH] upload<->share,multipart.py optimised --- mitmproxy/addons/__init__.py | 4 ++-- mitmproxy/addons/multipart.py | 10 +++------- mitmproxy/addons/{upload.py => share.py} | 9 +++------ 3 files changed, 8 insertions(+), 15 deletions(-) rename mitmproxy/addons/{upload.py => share.py} (94%) diff --git a/mitmproxy/addons/__init__.py b/mitmproxy/addons/__init__.py index 803409123..619211130 100644 --- a/mitmproxy/addons/__init__.py +++ b/mitmproxy/addons/__init__.py @@ -20,7 +20,7 @@ from mitmproxy.addons import stickycookie from mitmproxy.addons import streambodies from mitmproxy.addons import save from mitmproxy.addons import upstream_auth -from mitmproxy.addons import upload +from mitmproxy.addons import share def default_addons(): @@ -47,5 +47,5 @@ def default_addons(): streambodies.StreamBodies(), save.Save(), upstream_auth.UpstreamAuth(), - upload.Upload() + share.Share() ] diff --git a/mitmproxy/addons/multipart.py b/mitmproxy/addons/multipart.py index c29626edd..2d3001d14 100644 --- a/mitmproxy/addons/multipart.py +++ b/mitmproxy/addons/multipart.py @@ -1,10 +1,5 @@ from urllib.request import Request, urlopen from urllib.error import HTTPError, URLError -import mimetypes - - -def get_content_type(filename): - return mimetypes.guess_type(filename)[0] or 'application/octet-stream' def encode_multipart_formdata(filename, content): @@ -19,7 +14,7 @@ def encode_multipart_formdata(filename, content): L.append(value.encode("utf-8")) L.append(b'--' + LIMIT) L.append(b'Content-Disposition: form-data; name="file"; filename="%b"' % filename.encode("utf-8")) - L.append(b'Content-Type: %b' % get_content_type(filename).encode("utf-8")) + L.append(b'Content-Type: application/octet-stream') L.append(b'') L.append(content) L.append(b'--' + LIMIT + b'--') @@ -28,9 +23,10 @@ def encode_multipart_formdata(filename, content): content_type = b'multipart/form-data; boundary=%b' % LIMIT return content_type, body + def post_multipart(host, filename, content): content_type, body = encode_multipart_formdata(filename, content) - req = Request("http://upload.share.mitmproxy.org.s3.amazonaws.com", data=body, method='POST') + req = Request(host, data=body, method='POST') req.add_header('content-type', content_type) req.add_header('content-length', str(len(body))) try: diff --git a/mitmproxy/addons/upload.py b/mitmproxy/addons/share.py similarity index 94% rename from mitmproxy/addons/upload.py rename to mitmproxy/addons/share.py index 660f1d5ac..e4d85c47d 100644 --- a/mitmproxy/addons/upload.py +++ b/mitmproxy/addons/share.py @@ -3,9 +3,6 @@ import typing import random import datetime import time -from urllib.request import Request, urlopen -from urllib.error import HTTPError, URLError -import mimetypes from mitmproxy import command from mitmproxy import exceptions @@ -19,7 +16,7 @@ import mitmproxy.types from mitmproxy.addons import multipart -class Upload: +class Share: def __init__(self): self.stream = None self.filt = None @@ -70,8 +67,8 @@ class Upload: return encoded - @command.command("upload.file") - def upload(self, flows: typing.Sequence[flow.Flow]) -> None: + @command.command("share.file") + def share(self, flows: typing.Sequence[flow.Flow]) -> None: d = datetime.datetime.utcnow() id = self.base36encode(int(time.mktime(d.timetuple()) * 1000 * random.random()))[0:7]