diff --git a/d1/f2.py b/d1/f2.py new file mode 100644 index 0000000..f4e63f2 --- /dev/null +++ b/d1/f2.py @@ -0,0 +1,88 @@ +import os +import io +import traceback +import subprocess +import json +import sys +import pprint + + +sys.path.insert(0, os.path.dirname(__file__)) + + +def application(environ, start_response): + t4 = int(environ.get('CONTENT_LENGTH', '0')) + t3 = environ['wsgi.input'].read(t4) + def op1(rh): + t5 = rh.split('_') + t6 = ['%s%s' % (o[0].upper(), o[1:].lower()) for o in t5] + return '-'.join(t6) + t2 = { + op1(k[5:]) : v + for k, v in environ.items() + if k.startswith('HTTP_') + } + for k, v in environ.items(): + if k in [ + 'CONTENT_TYPE', + ]: + t2[op1(k)] = v + t7 = dict( + uri=environ['REQUEST_URI'], + method=environ['REQUEST_METHOD'], + protocol=environ['SERVER_PROTOCOL'], + ) + try: + t17 = [ + 'curl', + 'http://127.0.0.1:9050%s' % t7['uri'], + *sum([ + ['--header', '%s: %s' % (k, v)] + for k, v in t2.items() + ], []), + '-X', t7['method'], + '-d', '@-', + '--max-filesize', '%d' % (60 * 1024 * 1024), + '-o', '1.dat', + '-v', + '-q', + ] + with io.open('1.json', 'w') as f: + f.write(json.dumps(dict(t17=t17, t3=t3.decode('utf-8')))) + with subprocess.Popen( + t17, stderr=subprocess.PIPE, stdout=subprocess.PIPE, stdin=subprocess.PIPE + ) as p: + p.stdin.write(t3) + p.stdin.flush() + p.stdin.close() + try: + p.wait(20) + response_headers = [ + o[2:] + for o in p.stderr.read().decode('utf-8').splitlines() + if o.startswith('< ') + ] + t9 = '\r\n'.join(response_headers) + with io.open('1.dat', 'rb') as f: + t10 = f.read() + finally: + p.terminate() + except: + t9 = 'FUCK SHIT\r\n' + t10 = traceback.format_exc().encode('utf-8') + + if not any([o.startswith('Content-Length') for o in t9]): + #t9 = t9.replace('keep-alive', 'closed') + t9 = t9.replace('Transfer-Encoding: chunked\r\n', '') + t9 += 'Content-Length: %d\r\n' % len(t10) + t11 = t9.encode('utf-8') + t10 + response += pprint.pformat(dict(t9=t9, t10=t10, t11=t11)) + t13 = t9.splitlines()[0] + t14 = t13.find(' ') + t15 = t13[t14 + 1:] + t16 = [(o[:o.find(':')], o[o.find(':') + 1:]) for o in t9.splitlines()[1:]] + + t1 = start_response(t15, t16) + t1(t10) + + return []