mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 05:24:49 +09:00
Managed sites had exactly one base domain (the sites_base_domain setting), so every site was <slug>.<that-one>. Add a registry (site_base_domains) letting an operator register several — example.com, toto.com — each with its own DNS mode, HTTPS state, and DNS provider connection, so a new site can be published under any of them (a.example.com or a.toto.com), defaulting to the one marked default. - New SiteBaseDomain model + migration 040 (own dns_provider_config_id + cert state per base; exactly one is_default). - SiteBaseDomainService: add/remove/set_default/update, and ensure_seeded which materialises the legacy single sites_base_domain setting into the default row the first time a second domain is registered — so old and new never disagree. - SiteDomainService is now base-aware and back-compatible: subdomain_for(name, base), https_enabled(base), dns_mode(base), wildcard_cert_paths(base) and give_subdomain(app, base) take an optional base; covering_base(host) picks the base (longest match) whose wildcard cert covers a host so vhosts get the right per-base cert; base_domain() returns the default and still falls back to the legacy setting / SITES_BASE_DOMAIN config for un-migrated & dev installs. Existing single-base installs are untouched (zero rows -> setting fallback); 45 existing site-domain tests still green. New coverage in test_site_base_domains.py: seeding, default promotion/demotion, per-base https/dns-mode/cert, longest-match cover, and give_subdomain under a chosen base. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>