diff --git a/server.py b/server.py new file mode 100644 index 0000000..1110532 --- /dev/null +++ b/server.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +from http.server import BaseHTTPRequestHandler, HTTPServer +import logging +from hashlib import sha1 +from pathlib import Path + + +class Server(BaseHTTPRequestHandler): + def _set_response(self): + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + + def do_GET(self): + self._set_response() + + self.wfile.write(f"GET request for {self.path}".encode()) + + def do_POST(self): + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length) + hash = sha1() + hash.update(post_data) + post_path = Path(f'{hash.hexdigest()}.zip') + + with post_path.open('wb') as post_file: + post_file.write(post_data) + + self._set_response() + self.wfile.write(f"POST request for {self.path}".encode()) + + +def run(host='0.0.0.0', port=80): + httpd = HTTPServer((host, port), Server) + + try: + httpd.serve_forever() + except KeyboardInterrupt: + pass + + httpd.server_close() + + +if __name__ == '__main__': + logging.basicConfig(level=logging.INFO) + run()