| 1 | #!/usr/bin/env python3
|
| 2 | import http.server
|
| 3 | import subprocess
|
| 4 | import urllib.parse
|
| 5 | import os
|
| 6 |
|
| 7 | # Read token from environment variable
|
| 8 | AUTH_TOKEN = os.environ.get('CAUSES_AUTH_TOKEN')
|
| 9 |
|
| 10 | class Handler(http.server.BaseHTTPRequestHandler):
|
| 11 | def do_GET(self):
|
| 12 |
|
| 13 | parsed = urllib.parse.urlparse(self.path)
|
| 14 | params = urllib.parse.parse_qs(parsed.query)
|
| 15 | kind = params.get('kind', [''])[0]
|
| 16 | token = params.get('token', [''])[0]
|
| 17 | if token != AUTH_TOKEN:
|
| 18 | self.send_response(401)
|
| 19 | self.end_headers()
|
| 20 | self.wfile.write(b'Unauthorized')
|
| 21 | return
|
| 22 |
|
| 23 | result = subprocess.run(['./regtest/aports-update-causes.sh', 'update-latest', kind],
|
| 24 | capture_output=True,
|
| 25 | text=True)
|
| 26 | print(result.stderr)
|
| 27 | print("stdout:")
|
| 28 | print(result.stdout)
|
| 29 | if(result.returncode == 0):
|
| 30 | self.send_response(200)
|
| 31 | self.end_headers()
|
| 32 | self.wfile.write(f'View the new report at: {result.stdout}'.encode())
|
| 33 | else:
|
| 34 | self.send_response(500)
|
| 35 | self.end_headers()
|
| 36 | self.wfile.write(f'error occured, exit code: {result.returncode}'.encode())
|
| 37 |
|
| 38 | def log_message(self, format, *args):
|
| 39 | pass
|
| 40 |
|
| 41 | http.server.HTTPServer(('', 8080), Handler).serve_forever()
|