From 9758a3dfd54a7dfc5c1652c80a115c464a951c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sat, 2 Dec 2023 09:34:25 +0100 Subject: [PATCH] Allow several subdomains at once --- scripts/add | 15 +++++++++++++++ scripts/template.j2 | 34 +++++++++++++++++----------------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/scripts/add b/scripts/add index 8ae3bfe..76d0250 100755 --- a/scripts/add +++ b/scripts/add @@ -11,18 +11,33 @@ def render_template(template_path, **kwargs): return output +def format_subdomain(subdomains, domain): + if isinstance(subdomains, list): + return ", ".join([f"{sub}.{domain}" for sub in subdomains]) + else: + return f"{subdomains}.{domain}" + + def process_sites_config(config_path, template_path, check_mode): with open(config_path, "r") as file: sites_config = yaml.safe_load(file) + default_domain = sites_config.get("default_domain", None) + if default_domain is None: + raise ValueError("YAML configuration is missing default_domain key") total_sites = len(sites_config["sites"]) enabled_sites = 0 disabled_sites = 0 for site in sites_config["sites"]: + domain = site.get("domain", default_domain) # Check if site is enabled if site.get("enabled", True): # Default to True if 'enabled' key is not present enabled_sites += 1 + + if "subdomain" in site: + site["subdomain"] = format_subdomain(site["subdomain"], domain) + if not check_mode: rendered_content = render_template(template_path, **site) print(f"{rendered_content}\n") diff --git a/scripts/template.j2 b/scripts/template.j2 index 7c20db5..5f4e295 100644 --- a/scripts/template.j2 +++ b/scripts/template.j2 @@ -1,17 +1,17 @@ -{{ subdomain }}.kucharczyk.xyz { - handle { - {% if reverse_proxy_config %} - reverse_proxy {{ hostname }}:{{ port }} { - {{ reverse_proxy_config }} - } - {% else %} - {% if hostname and port %} - reverse_proxy {{ hostname }}:{{ port }} - {% endif %} - {% endif %} - {% if additional_config %} - {{ additional_config }} - {% endif %} - } - {{ server_config }} -} +{{ subdomain }} { + handle { + {% if reverse_proxy_config %} + reverse_proxy {{ hostname }}:{{ port }} { + {{ reverse_proxy_config }} + } + {% else %} + {% if hostname and port %} + reverse_proxy {{ hostname }}:{{ port }} + {% endif %} + {% endif %} + {% if additional_config %} + {{ additional_config }} + {% endif %} + } + {{ server_config }} +}