online examples suck
parent
1b1e2b2f3d
commit
5d096cd67d
|
@ -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()
|
Loading…
Reference in New Issue