crowdsec/test/bin/mock-http.py
mmetc ccf08e56d9
bats: no need for openssl, netcat; allow to prevent tests from running with a lock (#3016)
* bats: lock/unlock instance data; replace openssl w/ cfssl; update dep list

* concat pem without openssl :-/

* unused/unreachable code

* lint

* redundant {} (shellharden)
2024-05-16 10:58:00 +02:00

49 lines
1.2 KiB
Python

#!/usr/bin/env python3
import json
import logging
import sys
from http.server import HTTPServer, BaseHTTPRequestHandler
class RequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
request_path = self.path
request_body = self.rfile.read(int(self.headers['Content-Length']))
request_body = json.loads(request_body.decode())
log = {
"path": request_path,
"status": 200,
"request_body": request_body,
}
print(json.dumps(log))
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps({}).encode())
self.wfile.flush()
return
def log_message(self, format, *args):
return
def main(argv):
try:
port = int(argv[1])
except IndexError:
logging.fatal("Missing port number")
return 1
except ValueError:
logging.fatal("Invalid port number '%s'", argv[1])
return 1
server = HTTPServer(('', port), RequestHandler)
# logging.info('Listening on port %s', port)
server.serve_forever()
return 0
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
sys.exit(main(sys.argv))