wasm-cli 0.15.7__tar.gz → 0.15.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {wasm_cli-0.15.7/src/wasm_cli.egg-info → wasm_cli-0.15.8}/PKG-INFO +1 -1
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/pyproject.toml +1 -1
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/setup.py +1 -1
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/__init__.py +1 -1
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/site.py +14 -13
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/cert_manager.py +31 -2
- {wasm_cli-0.15.7 → wasm_cli-0.15.8/src/wasm_cli.egg-info}/PKG-INFO +1 -1
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/LICENSE +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/MANIFEST.in +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/README.md +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/docs/MONITOR.md +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/docs/OBS_SETUP.md +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/docs/assets/logo.png +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/docs/assets/logo_bg.png +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/man/wasm.1 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/setup.cfg +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/__main__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/backup.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/cert.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/config.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/db.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/env.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/health.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/monitor.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/service.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/setup.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/store.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/version.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/web.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/commands/webapp.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/interactive.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/cli/parser.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/completions/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/completions/_wasm +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/completions/wasm.bash +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/completions/wasm.fish +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/config.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/dependencies.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/exceptions.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/logger.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/store.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/update_checker.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/core/utils.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/base.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/docker_compose.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/env_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/nginx_config.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/package_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/path_resolver.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/prisma.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/turbo.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/helpers/workspace.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/monorepo.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/nextjs.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/nodejs.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/python.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/registry.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/static.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/deployers/vite.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/main.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/apache_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/backup_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/backup_scheduler.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/base_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/database/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/database/base.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/database/mongodb.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/database/mysql.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/database/postgres.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/database/redis.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/database/registry.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/nginx_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/service_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/managers/source_manager.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/monitor/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/monitor/ai_analyzer.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/monitor/email_notifier.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/monitor/process_monitor.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/monitor/threat_store.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/apache/proxy.conf.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/apache/static.conf.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/nginx/advanced.conf.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/nginx/monorepo.conf.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/nginx/proxy.conf.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/nginx/static.conf.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/systemd/app.service.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/systemd/backup-service.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/systemd/backup-timer.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/templates/systemd/docker-compose.service.j2 +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/validators/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/validators/domain.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/validators/port.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/validators/source.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/validators/ssh.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/apps.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/auth.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/backups.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/certs.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/config.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/databases.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/jobs.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/monitor.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/router.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/services.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/sites.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/api/system.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/auth.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/jobs.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/server.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/css/main.css +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/index.html +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/components/cards.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/components/jobs.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/components/metrics.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/components/skeleton.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/api.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/dialogs.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/notifications.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/router.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/search.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/shortcuts.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/theme.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/ui.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/core/websocket.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/main.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/apps.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/backups.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/certs.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/config.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/dashboard.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/databases.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/jobs.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/logs.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/monitor.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/services.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/js/pages/sites.js +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/login.html +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/logo.png +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/static/logo.webp +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/websockets/__init__.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm/web/websockets/router.py +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm_cli.egg-info/SOURCES.txt +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm_cli.egg-info/dependency_links.txt +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm_cli.egg-info/entry_points.txt +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm_cli.egg-info/requires.txt +0 -0
- {wasm_cli-0.15.7 → wasm_cli-0.15.8}/src/wasm_cli.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "wasm-cli"
|
|
7
|
-
version = "0.15.
|
|
7
|
+
version = "0.15.8"
|
|
8
8
|
description = "Web App System Management - Deploy and manage web applications on Linux servers"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "WASM-NCSAL" }
|
|
@@ -9,7 +9,7 @@ from setuptools import setup, find_packages
|
|
|
9
9
|
|
|
10
10
|
setup(
|
|
11
11
|
name="wasm-cli",
|
|
12
|
-
version="0.15.
|
|
12
|
+
version="0.15.8",
|
|
13
13
|
description="Web App System Management - Deploy and manage web applications on Linux servers",
|
|
14
14
|
author="Yago López Prado",
|
|
15
15
|
author_email="yago.lopez.adeje@gmail.com",
|
|
@@ -102,29 +102,30 @@ def _handle_create(args: Namespace) -> int:
|
|
|
102
102
|
if not no_ssl:
|
|
103
103
|
cert_manager = CertManager(verbose=args.verbose)
|
|
104
104
|
if cert_manager.is_installed():
|
|
105
|
-
|
|
105
|
+
additional_domains = None
|
|
106
|
+
if include_www:
|
|
107
|
+
additional_domains = [f"www.{domain}"]
|
|
108
|
+
|
|
109
|
+
# Check if a valid certificate already exists and covers all domains
|
|
106
110
|
if cert_manager.cert_exists(domain):
|
|
107
111
|
test = cert_manager.test_cert(domain)
|
|
108
112
|
if test.get("valid"):
|
|
109
|
-
|
|
110
|
-
|
|
113
|
+
all_required = [domain] + (additional_domains or [])
|
|
114
|
+
if cert_manager.cert_covers_domains(domain, all_required):
|
|
115
|
+
logger.info(f"Valid SSL certificate found covering all domains")
|
|
116
|
+
ssl_obtained = True
|
|
117
|
+
else:
|
|
118
|
+
logger.info("Existing certificate does not cover all domains, expanding...")
|
|
111
119
|
else:
|
|
112
|
-
logger.warning(
|
|
120
|
+
logger.warning("Existing certificate invalid, obtaining new one...")
|
|
113
121
|
|
|
114
122
|
if not ssl_obtained:
|
|
115
123
|
logger.info(f"Obtaining SSL certificate for {domain}...")
|
|
116
124
|
try:
|
|
117
|
-
additional_domains = None
|
|
118
|
-
if include_www:
|
|
119
|
-
additional_domains = [f"www.{domain}"]
|
|
120
|
-
|
|
121
|
-
nginx = args.webserver == "nginx"
|
|
122
|
-
apache = args.webserver == "apache"
|
|
123
|
-
|
|
124
125
|
cert_manager.obtain(
|
|
125
126
|
domain,
|
|
126
|
-
nginx=nginx,
|
|
127
|
-
apache=apache,
|
|
127
|
+
nginx=args.webserver == "nginx",
|
|
128
|
+
apache=args.webserver == "apache",
|
|
128
129
|
additional_domains=additional_domains,
|
|
129
130
|
)
|
|
130
131
|
ssl_obtained = True
|
|
@@ -130,6 +130,27 @@ class CertManager(BaseManager):
|
|
|
130
130
|
|
|
131
131
|
return None
|
|
132
132
|
|
|
133
|
+
def cert_covers_domains(self, domain: str, required_domains: List[str]) -> bool:
|
|
134
|
+
"""
|
|
135
|
+
Check if an existing certificate covers all required domains.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
domain: Primary domain (certificate name).
|
|
139
|
+
required_domains: List of domains that must be covered.
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
True if all required domains are covered.
|
|
143
|
+
"""
|
|
144
|
+
info = self.get_cert_info(domain)
|
|
145
|
+
if not info:
|
|
146
|
+
return False
|
|
147
|
+
|
|
148
|
+
cert_domains = info.get("domains", [])
|
|
149
|
+
for d in required_domains:
|
|
150
|
+
if d not in cert_domains:
|
|
151
|
+
return False
|
|
152
|
+
return True
|
|
153
|
+
|
|
133
154
|
def _check_certbot_plugin(self, plugin: str) -> bool:
|
|
134
155
|
"""
|
|
135
156
|
Check if a certbot plugin is available.
|
|
@@ -178,10 +199,18 @@ class CertManager(BaseManager):
|
|
|
178
199
|
CertificateError: If certificate issuance fails.
|
|
179
200
|
"""
|
|
180
201
|
if self.cert_exists(domain) and not dry_run:
|
|
181
|
-
if
|
|
202
|
+
# If additional domains requested, check if cert already covers them
|
|
203
|
+
if additional_domains:
|
|
204
|
+
all_required = [domain] + additional_domains
|
|
205
|
+
if self.cert_covers_domains(domain, all_required):
|
|
206
|
+
self.logger.info(f"Certificate already covers all domains: {', '.join(all_required)}")
|
|
207
|
+
return True
|
|
208
|
+
# Cert exists but doesn't cover all domains - need to expand
|
|
209
|
+
self.logger.info(f"Expanding certificate to include: {', '.join(additional_domains)}")
|
|
210
|
+
expand = True
|
|
211
|
+
elif not expand:
|
|
182
212
|
self.logger.warning(f"Certificate already exists for {domain}")
|
|
183
213
|
return True
|
|
184
|
-
self.logger.info(f"Expanding certificate for {domain}")
|
|
185
214
|
|
|
186
215
|
# Build command
|
|
187
216
|
cmd = ["certbot", "certonly"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|