diff options
| -rw-r--r-- | templates/docker-compose.yaml.template | 3 | ||||
| -rw-r--r-- | templates/nginx/common/http-listen | 2 | ||||
| -rw-r--r-- | templates/nginx/common/https-listen | 3 | ||||
| -rw-r--r-- | templates/nginx/conf.d/2fa.conf.template (renamed from templates/nginx/2fa.conf.template) | 6 | ||||
| -rw-r--r-- | templates/nginx/conf.d/code.conf.template (renamed from templates/nginx/code.conf.template) | 6 | ||||
| -rw-r--r-- | templates/nginx/conf.d/forbid_unknown_domain.conf (renamed from templates/nginx/forbid_unknown_domain.conf) | 5 | ||||
| -rw-r--r-- | templates/nginx/conf.d/git.conf.template (renamed from templates/nginx/git.conf.template) | 6 | ||||
| -rw-r--r-- | templates/nginx/conf.d/mail.conf.template (renamed from templates/nginx/mail.conf.template) | 6 | ||||
| -rw-r--r-- | templates/nginx/conf.d/root.conf.template (renamed from templates/nginx/root.conf.template) | 6 | ||||
| -rw-r--r-- | templates/nginx/conf.d/ssl.conf.template (renamed from templates/nginx/ssl.conf.template) | 0 | ||||
| -rw-r--r-- | templates/nginx/conf.d/timeline.conf.template (renamed from templates/nginx/timeline.conf.template) | 3 | ||||
| -rw-r--r-- | templates/nginx/conf.d/websocket.conf (renamed from templates/nginx/websocket.conf) | 0 | ||||
| -rw-r--r-- | tools/cru-py/cru/service/_template.py | 4 | ||||
| -rw-r--r-- | tools/cru-py/cru/template.py | 5 | 
14 files changed, 30 insertions, 25 deletions
| diff --git a/templates/docker-compose.yaml.template b/templates/docker-compose.yaml.template index 4ca1f1c..f2188e1 100644 --- a/templates/docker-compose.yaml.template +++ b/templates/docker-compose.yaml.template @@ -27,7 +27,8 @@ services:        - "443:443"        - "443:443/udp"      volumes: -      - "./generated/nginx:/etc/nginx/conf.d:ro" +      - "./generated/nginx/conf.d:/etc/nginx/conf.d:ro" +      - "./generated/nginx/common:/etc/nginx/common:ro"        - "./data/certbot/certs:/etc/letsencrypt:ro"        - "./data/certbot/webroot:/srv/acme:ro"        - "blog-public:/srv/www/blog:ro" diff --git a/templates/nginx/common/http-listen b/templates/nginx/common/http-listen new file mode 100644 index 0000000..76cb18d --- /dev/null +++ b/templates/nginx/common/http-listen @@ -0,0 +1,2 @@ +listen 80; +listen [::]:80; diff --git a/templates/nginx/common/https-listen b/templates/nginx/common/https-listen new file mode 100644 index 0000000..db2f68e --- /dev/null +++ b/templates/nginx/common/https-listen @@ -0,0 +1,3 @@ +listen 443 ssl; +listen [::]:443 ssl; +http2 on; diff --git a/templates/nginx/2fa.conf.template b/templates/nginx/conf.d/2fa.conf.template index aad66c1..278e4a1 100644 --- a/templates/nginx/2fa.conf.template +++ b/templates/nginx/conf.d/2fa.conf.template @@ -1,7 +1,6 @@  server { -    listen 443 ssl http2; -    listen [::]:443 ssl http2;      server_name 2fa.${CRUPEST_DOMAIN}; +    include common/https-listen;      location / {          include common/proxy-common; @@ -10,9 +9,8 @@ server {  }  server { -    listen 80; -    listen [::]:80;      server_name 2fa.${CRUPEST_DOMAIN}; +    include common/http-listen;      include common/https-redirect;      include common/acme-challenge; diff --git a/templates/nginx/code.conf.template b/templates/nginx/conf.d/code.conf.template index a67500d..205c7ba 100644 --- a/templates/nginx/code.conf.template +++ b/templates/nginx/conf.d/code.conf.template @@ -1,7 +1,6 @@  server { -    listen 443 ssl http2; -    listen [::]:443 ssl http2;      server_name code.${CRUPEST_DOMAIN}; +    include common/https-listen;      location / {          include common/proxy-common; @@ -13,9 +12,8 @@ server {  server { -    listen 80; -    listen [::]:80;      server_name code.${CRUPEST_DOMAIN}; +    include common/http-listen;      include common/https-redirect;      include common/acme-challenge; diff --git a/templates/nginx/forbid_unknown_domain.conf b/templates/nginx/conf.d/forbid_unknown_domain.conf index ae96393..515942b 100644 --- a/templates/nginx/forbid_unknown_domain.conf +++ b/templates/nginx/conf.d/forbid_unknown_domain.conf @@ -1,8 +1,9 @@  server {      listen 80 default_server;      listen [::]:80 default_server; -    listen 443 ssl http2 default_server; -    listen [::]:443 ssl http2 default_server; +    listen 443 ssl default_server; +    listen [::]:443 ssl default_server; +    http2 on;      return 444;  } diff --git a/templates/nginx/git.conf.template b/templates/nginx/conf.d/git.conf.template index ea2a627..3a2948c 100644 --- a/templates/nginx/git.conf.template +++ b/templates/nginx/conf.d/git.conf.template @@ -1,7 +1,6 @@  server { -    listen 443 ssl http2; -    listen [::]:443 ssl http2;      server_name git.${CRUPEST_DOMAIN}; +    include common/https-listen;      location / {          include common/proxy-common; @@ -13,9 +12,8 @@ server {  server { -    listen 80; -    listen [::]:80;      server_name git.${CRUPEST_DOMAIN}; +    include common/http-listen;      include common/https-redirect;      include common/acme-challenge; diff --git a/templates/nginx/mail.conf.template b/templates/nginx/conf.d/mail.conf.template index ba2e44e..40adf28 100644 --- a/templates/nginx/mail.conf.template +++ b/templates/nginx/conf.d/mail.conf.template @@ -1,7 +1,6 @@  server { -    listen 443 ssl http2; -    listen [::]:443 ssl http2;      server_name mail.${CRUPEST_DOMAIN}; +    include common/https-listen;      location / {          include common/proxy-common; @@ -18,9 +17,8 @@ server {  server { -    listen 80; -    listen [::]:80;      server_name mail.${CRUPEST_DOMAIN}; +    include common/http-listen;      include common/https-redirect;      include common/acme-challenge; diff --git a/templates/nginx/root.conf.template b/templates/nginx/conf.d/root.conf.template index 3f20cf1..a0b08f8 100644 --- a/templates/nginx/root.conf.template +++ b/templates/nginx/conf.d/root.conf.template @@ -1,7 +1,6 @@  server { -    listen 443 ssl http2; -    listen [::]:443 ssl http2;      server_name ${CRUPEST_DOMAIN}; +    include common/https-listen;      location / {          root /srv/www; @@ -19,9 +18,8 @@ server {  }  server { -    listen 80; -    listen [::]:80;      server_name ${CRUPEST_DOMAIN}; +    include common/http-listen;      include common/https-redirect;      include common/acme-challenge; diff --git a/templates/nginx/ssl.conf.template b/templates/nginx/conf.d/ssl.conf.template index 54205f1..54205f1 100644 --- a/templates/nginx/ssl.conf.template +++ b/templates/nginx/conf.d/ssl.conf.template diff --git a/templates/nginx/timeline.conf.template b/templates/nginx/conf.d/timeline.conf.template index db908e8..a467594 100644 --- a/templates/nginx/timeline.conf.template +++ b/templates/nginx/conf.d/timeline.conf.template @@ -1,7 +1,6 @@  server { -    listen 80; -    listen [::]:80;      server_name timeline.${CRUPEST_DOMAIN}; +    include common/http-listen;      include common/acme-challenge;  } diff --git a/templates/nginx/websocket.conf b/templates/nginx/conf.d/websocket.conf index 32af4c3..32af4c3 100644 --- a/templates/nginx/websocket.conf +++ b/templates/nginx/conf.d/websocket.conf diff --git a/tools/cru-py/cru/service/_template.py b/tools/cru-py/cru/service/_template.py index ca2135f..b6affd1 100644 --- a/tools/cru-py/cru/service/_template.py +++ b/tools/cru-py/cru/service/_template.py @@ -1,4 +1,5 @@  from argparse import Namespace +import shutil  from cru import CruIterator  from cru.template import TemplateTree @@ -47,6 +48,8 @@ class TemplateManager(AppCommandFeatureProvider):      def _generate_files(self, dry_run: bool) -> None:          config_manager = self.app.get_feature(ConfigManager) +        if not dry_run: +            shutil.rmtree(self.generated_dir.full_path)          self.template_tree.generate_to(              self.generated_dir.full_path_str, config_manager.get_str_dict(), dry_run          ) @@ -78,3 +81,4 @@ class TemplateManager(AppCommandFeatureProvider):              self._generate_files(dry_run)              if dry_run:                  print("Dry run successfully.") +                print(f"Will delete dir {self.generated_dir.full_path_str}.") diff --git a/tools/cru-py/cru/template.py b/tools/cru-py/cru/template.py index 74a5c9a..9f0b560 100644 --- a/tools/cru-py/cru/template.py +++ b/tools/cru-py/cru/template.py @@ -142,6 +142,11 @@ class TemplateTree:      ) -> None:          for file, template in self.templates:              des = CruPath(destination) / file +            if self.template_file_suffix is not None and des.name.endswith( +                self.template_file_suffix +            ): +                des = des.parent / (des.name[: -len(self.template_file_suffix)]) +              text = template.generate(variables)              if not dry_run:                  des.parent.mkdir(parents=True, exist_ok=True) | 
