diff --git a/.gitignore b/.gitignore index ae0ab4221..b33f503d1 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ data/ logs/ *.conf *.conf.bak +!pyodide/limnoria.conf # Intellij PyCharm / IDEA related files *.iml diff --git a/pyodide/index.html b/pyodide/index.html new file mode 100644 index 000000000..1c57a1d95 --- /dev/null +++ b/pyodide/index.html @@ -0,0 +1,48 @@ + + + + + + + + + diff --git a/pyodide/limnoria.conf b/pyodide/limnoria.conf new file mode 100644 index 000000000..39e48b72e --- /dev/null +++ b/pyodide/limnoria.conf @@ -0,0 +1,5 @@ +supybot.networks: testnet +supybot.networks.testnet.servers: [fdfe:4421:f18d:fe24:d51c:3fb4:b255:4f09]:8097 +supybot.networks.testnet.channels: #limnoria-bots +supybot.drivers.module: PyodideWebsocket +supybot.log.stdout.level: DEBUG diff --git a/pyodide/serve.py b/pyodide/serve.py new file mode 100644 index 000000000..3624c6a2c --- /dev/null +++ b/pyodide/serve.py @@ -0,0 +1,48 @@ +import sys +import glob +import socket +import http.server +import socketserver + +WHEEL_PATH = max(glob.glob('dist/limnoria-*-py3-none-any.whl')) +CONF_PATH = 'pyodide/limnoria.conf' + + +class Handler(http.server.BaseHTTPRequestHandler): + + def end_headers(self): + # Enable Cross-Origin Resource Sharing (CORS) + self.send_header('Access-Control-Allow-Origin', '*') + super().end_headers() + + def do_GET(self): + if self.path == '/': + self.send_response(200) + self.send_header('Content-Type', 'text/html;charset=UTF-8') + self.end_headers() + with open('pyodide/index.html', 'rb') as fd: + self.wfile.write(fd.read() % {b'WHEEL_PATH': WHEEL_PATH.encode()}) + elif self.path == '/' + WHEEL_PATH: + self.send_response(200) + self.send_header('Content-Type', 'application/wasm') + with open(WHEEL_PATH, 'rb') as fd: + self.wfile.write(fd.read()) + elif self.path == '/limnoria.conf': + self.send_response(200) + with open(CONF_PATH, 'rb') as fd: + self.wfile.write(fd.read()) + elif self.path == '/favicon.ico': + pass + else: + print('Unexpected URL', self.path) + +class TCPv6Server(socketserver.TCPServer): + address_family = socket.AF_INET6 + allow_reuse_address = True + + +if __name__ == '__main__': + port = 8081 + with TCPv6Server(('::', port), Handler) as httpd: + print('Serving at: http://[::1]:{}'.format(port)) + httpd.serve_forever()