mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-17 14:00:51 +00:00
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
import BaseHTTPServer
|
|
|
|
RESULT_PATH = '/result.txt'
|
|
|
|
class SentryHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
|
def do_POST(self):
|
|
post_data = self.__read_and_decode_post_data()
|
|
with open(RESULT_PATH, 'w') as f:
|
|
if self.headers.get("content-type") != "application/x-sentry-envelope":
|
|
f.write("INCORRECT_CONTENT_TYPE")
|
|
elif self.headers.get("content-length") < 3000:
|
|
f.write("INCORRECT_CONTENT_LENGTH")
|
|
elif '"http://6f33034cfe684dd7a3ab9875e57b1c8d@localhost:9500/5226277"' not in post_data:
|
|
f.write('INCORRECT_POST_DATA')
|
|
else:
|
|
f.write("OK")
|
|
self.send_response(200)
|
|
|
|
def __read_and_decode_post_data(self):
|
|
transfer_encoding = self.headers.get("transfer-Encoding")
|
|
decoded = ""
|
|
if transfer_encoding == "chunked":
|
|
while True:
|
|
s = self.rfile.readline()
|
|
chunk_length = int(s, 16)
|
|
if not chunk_length:
|
|
break
|
|
decoded += self.rfile.read(chunk_length)
|
|
self.rfile.readline()
|
|
else:
|
|
content_length = int(self.headers.get("content-length", 0))
|
|
decoded = self.rfile.read(content_length)
|
|
return decoded
|
|
|
|
|
|
if __name__ == "__main__":
|
|
with open(RESULT_PATH, 'w') as f:
|
|
f.write("INITIAL_STATE")
|
|
httpd = BaseHTTPServer.HTTPServer(("localhost", 9500,), SentryHandler)
|
|
try:
|
|
httpd.serve_forever()
|
|
finally:
|
|
httpd.server_close() |