{%- macro caddy_site_hsts(svc, for_www) -%} {%- if svc.hsts|default(false) and (svc.www_domain|default(false) == for_www) -%} {{ 'header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"' if svc.hsts|default(false) }} {%- endif -%} {%- endmacro -%} {% macro caddy_site(svc) %} {%- for domain in svc.additional_domains|default([]) %} {{ domain }}, {% endfor -%} {{ "www." + svc.domain if svc.www_domain|default(false) else svc.domain }} { import default {{ caddy_site_hsts(svc, false) }} {{ svc.caddy_extra | indent(width='\t', first=True) if svc.caddy_extra|default(false) }} {% if svc.caddy_default|default(true) %} handle { {% if svc.faas_function|default(false) %} import faas {{ svc.faas_function }} {% elif svc.redirect|default(false) %} redir "{{ svc.redirect }}" {% else %} reverse_proxy {{ svc.docker_host|default(svc.name) }}:{{ svc.port }} {% endif %} } {% endif %} } {% if svc.www_domain|default(false) %} {{ svc.domain }} { import default {{ caddy_site_hsts(svc, true) }} redir https://www.{{ svc.domain }}{uri} } {% endif %} {% endmacro -%} {{ caddy_site(svc) }} {%- for extra_svc in svc.extra_svcs|default([]) %} {{ caddy_site(extra_svc) }} {% endfor %}