Files @ 0617b6006ec4
Branch filter:

Location: light9/bin/homepageConfig

drewp@bigasterisk.com
ts cleanup
#!bin/python
from run_local import log
from light9 import showconfig
from light9.namespaces import L9
from urllib.parse import urlparse
from urllib.parse import splitport

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)
print("listen %s;" % splitport(urlparse(webServer).netloc)[1])


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}; 
    }}

    """)


for role, server in sorted(graph.predicate_objects(netHome)):
    if not server.startswith('http') or role == L9['webServer']:
        continue
    path = graph.value(role, L9['urlPath'])
    if not path:
        continue
    server = 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};
    }}""")