diff options
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/proxy.py | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/bin/proxy.py b/bin/proxy.py index b44bbbc..b586a5b 100755 --- a/bin/proxy.py +++ b/bin/proxy.py @@ -3,29 +3,26 @@ import http.server import urllib.request import re -class MyHTTPRequestHandler(http.server.CGIHTTPRequestHandler ): +class ProxyHandler(http.server.CGIHTTPRequestHandler): def end_headers(self): self.send_my_headers() - - http.server.CGIHTTPRequestHandler .end_headers(self) + http.server.CGIHTTPRequestHandler.end_headers(self) def send_my_headers(self): self.send_header("Access-Control-Allow-Origin", "*") def do_GET(self): if self.path[0:14] == "/cgi-bin/proxy": - self.copyfile(urllib.request.urlopen(self.path[15:]), self.wfile) - elif re.match(r'.+cgi-bin/im/shader/.+$', self.path): - self.path = re.sub(r'(.+cgi-bin/)im/shader/(.+)$', r'\1\2', self.path); - super().do_GET(); + url = self.path[15:] + res = urllib.request.urlopen(url) + self.send_response(res.status) + self.send_header("Content-Type", res.getheader('Content-Type')) + self.send_header("Content-Length", res.getheader('Content-Length')) + self.end_headers() + self.wfile.write(res.read()) else: super().do_GET() - def do_POST(self): - if re.match(r'.+cgi-bin/im/shader/.+$', self.path): - self.path = re.sub(r'(.+cgi-bin/)im/shader/(.+)$', r'\1\2', self.path); - super().do_POST(); - if __name__ == '__main__': - http.server.test(HandlerClass=MyHTTPRequestHandler) + http.server.test(HandlerClass=ProxyHandler) |
