diff --git a/src/steamos-devkit-service.py b/src/steamos-devkit-service.py new file mode 100644 index 0000000000000000000000000000000000000000..53c2a2eb4591d980a021c05c2e001016faf94cb4 --- /dev/null +++ b/src/steamos-devkit-service.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +#MIT License +# +#Copyright (c) 2022 Valve Software inc., Collabora Ltd +# +#Permission is hereby granted, free of charge, to any person obtaining a copy +#of this software and associated documentation files (the "Software"), to deal +#in the Software without restriction, including without limitation the rights +#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +#copies of the Software, and to permit persons to whom the Software is +#furnished to do so, subject to the following conditions: +# +#The above copyright notice and this permission notice shall be included in all +#copies or substantial portions of the Software. +# +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +#SOFTWARE. + +from http.server import BaseHTTPRequestHandler +import socketserver + +SERVICE_PORT = 32000 + +class DevkitHandler(BaseHTTPRequestHandler): + def _send_headers(self, code): + self.send_response(code) + self.send_header("Content-type", "text/html") + self.end_headers() + + def do_GET(self): + print("GET request to path {} from {}".format(self.path, self.client_address[0])) + self._send_headers(200) + self.wfile.write("Get works\n".encode()) + + def do_POST(self): + if (self.path == "/register"): + print("register request from {}".format(self.client_address[0])) + self._send_headers(200) + self.wfile.write("Registered\n".encode()) + + +class DevkitService: + def __init__(self): + # TODO: Get from config if set + self.port = SERVICE_PORT + + self.httpd = socketserver.TCPServer(("", self.port), DevkitHandler, bind_and_activate=False) + print("serving at port: {}".format(self.port)) + self.httpd.allow_reuse_address = True + self.httpd.server_bind() + self.httpd.server_activate() + + try: + self.httpd.serve_forever() + except KeyboardInterrupt: + pass + + self.httpd.server_close() + print("done serving at port: {}".format(self.port)) + +if __name__ == "__main__": + service = DevkitService() +