You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

46 lines
1.1 KiB

#!/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()