Mercurial > code > home > repos > light9
view light9/homepage/write_config.py @ 2174:891c380afcc1
move py code under light9, add import test
author | drewp@bigasterisk.com |
---|---|
date | Fri, 19 May 2023 13:59:07 -0700 |
parents | bin/homepageConfig@ac16ec1e6bab |
children | e9dc435cc946 |
line wrap: on
line source
import sys from urllib.parse import urlparse from light9 import showconfig from light9.namespaces import L9 from light9.run_local import log def main(): [outPath] = sys.argv[1:] log.info('generating config') graph = showconfig.getGraph() netHome = graph.value(showconfig.showUri(), L9['networking']) webServer = graph.value(netHome, L9['webServer']) if not webServer: raise ValueError('no %r :webServer' % netHome) with open(outPath, 'wt') as out: line = "listen %s;" % urlparse(str(webServer)).port print(line, file=out) log.info(line) def location(path, server, viteServer): print(f""" location = /{path}/metrics {{ rewrite ^/{path}(/.*) $1 break; proxy_pass {server}; }} location /{path}/api/ {{ # just the tail part for services rewrite ^/{path}/api(/.*) $1 break; proxy_pass {server}; # for websocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_buffering off; }} location /{path}/ {{ # vite has 'base' to deal with the /{path}/ part of the request proxy_pass {viteServer}; }} """, file=out) for role, server in sorted(graph.predicate_objects(netHome)): if not str(server).startswith('http') or role == L9['webServer']: continue path = graph.value(role, L9['urlPath']) if not path: continue server = str(server).rstrip('/') viteServer = server.replace('82', '83') # rewrite this please location(path, server, viteServer) showPath = showconfig.showUri().split('/', 3)[-1] root = showconfig.root()[:-len(showPath)].decode('ascii') print(f""" location /{showPath} {{ root {root}; }}""", file=out) if __name__ == '__main__': main()