57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
import os
|
|
import os.path
|
|
|
|
import yaml
|
|
import jinja2
|
|
|
|
QUAYPATH = os.getenv("QUAYPATH", ".")
|
|
QUAYDIR = os.getenv("QUAYDIR", "/")
|
|
QUAYCONF_DIR = os.getenv("QUAYCONF", os.path.join(QUAYDIR, QUAYPATH, "conf"))
|
|
STATIC_DIR = os.path.join(QUAYDIR, 'static')
|
|
|
|
def write_config(filename, **kwargs):
|
|
with open(filename + ".jnj") as f:
|
|
template = jinja2.Template(f.read())
|
|
rendered = template.render(kwargs)
|
|
|
|
with open(filename, 'w') as f:
|
|
f.write(rendered)
|
|
|
|
|
|
def generate_nginx_config(config):
|
|
"""
|
|
Generates nginx config from the app config
|
|
"""
|
|
config = config or {}
|
|
use_https = os.path.exists(os.path.join(QUAYCONF_DIR, 'stack/ssl.key'))
|
|
use_old_certs = os.path.exists(os.path.join(QUAYCONF_DIR, 'stack/ssl.old.key'))
|
|
v1_only_domain = config.get('V1_ONLY_DOMAIN', None)
|
|
|
|
write_config(os.path.join(QUAYCONF_DIR, 'nginx/nginx.conf'), use_https=use_https,
|
|
use_old_certs=use_old_certs,
|
|
v1_only_domain=v1_only_domain)
|
|
|
|
|
|
def generate_server_config(config):
|
|
"""
|
|
Generates server config from the app config
|
|
"""
|
|
config = config or {}
|
|
tuf_server = config.get('TUF_SERVER', None)
|
|
tuf_host = config.get('TUF_HOST', None)
|
|
signing_enabled = config.get('FEATURE_SIGNING', False)
|
|
maximum_layer_size = config.get('MAXIMUM_LAYER_SIZE', '20G')
|
|
|
|
write_config(
|
|
os.path.join(QUAYCONF_DIR, 'nginx/server-base.conf'), tuf_server=tuf_server, tuf_host=tuf_host,
|
|
signing_enabled=signing_enabled, maximum_layer_size=maximum_layer_size, static_dir=STATIC_DIR)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if os.path.exists(os.path.join(QUAYCONF_DIR, 'stack/config.yaml')):
|
|
with open(os.path.join(QUAYCONF_DIR, 'stack/config.yaml'), 'r') as f:
|
|
config = yaml.load(f)
|
|
else:
|
|
config = None
|
|
generate_server_config(config)
|
|
generate_nginx_config(config)
|