diff --git a/filter_plugins/domain_redirect_mappings.py b/filter_plugins/domain_redirect_mappings.py index 5ac86753..4b9fd305 100644 --- a/filter_plugins/domain_redirect_mappings.py +++ b/filter_plugins/domain_redirect_mappings.py @@ -8,9 +8,8 @@ class FilterModule(object): """ Build a flat list of redirect mappings for all apps: - source: each alias domain - - target: the first canonical domain (app.domains.canonical[0] or default) - - Logic for computing aliases and canonicals is identical to alias_domains_map + canonical_domains_map. + - target: the first canonical domain + Skip mappings where source == target, since they make no sense. """ def parse_entry(domains_cfg, key, app_id): if key not in domains_cfg: @@ -55,12 +54,9 @@ class FilterModule(object): for app_id, cfg in apps.items(): domains_cfg = cfg.get('domains') if domains_cfg is None: - # no domains key → no aliases alias_map[app_id] = [] continue - if isinstance(domains_cfg, dict) and not domains_cfg: - # empty domains dict → only default alias_map[app_id] = [default_domain(app_id, primary_domain)] continue @@ -79,13 +75,16 @@ class FilterModule(object): alias_map[app_id] = aliases - # 3) Build flat list of {source, target} entries + # 3) Build flat list of {source, target} entries, + # skipping self-mappings mappings = [] for app_id, sources in alias_map.items(): - # pick first canonical domain as target canon_list = canonical_map.get(app_id, []) target = canon_list[0] if canon_list else default_domain(app_id, primary_domain) for src in sources: + if src == target: + # skip self-redirects + continue mappings.append({ 'source': src, 'target': target diff --git a/roles/nginx-modifier-matomo/vars/main.yml b/roles/nginx-modifier-matomo/vars/main.yml index 74eeb35f..3e097b0a 100644 --- a/roles/nginx-modifier-matomo/vars/main.yml +++ b/roles/nginx-modifier-matomo/vars/main.yml @@ -1,2 +1,2 @@ base_domain: "{{ domain | regex_replace('^(?:.*\\.)?(.+\\..+)$', '\\1') }}" -verification_url: "{{ web_protocol }}://{{domains.matomo}}/index.php?module=API&method=SitesManager.getSitesIdFromSiteUrl&url=https://{{base_domain}}&format=json&token_auth={{applications.matomo.credentials.auth_token}}" \ No newline at end of file +verification_url: "{{ web_protocol }}://{{domains | get_domain('mastodon')}}/index.php?module=API&method=SitesManager.getSitesIdFromSiteUrl&url=https://{{base_domain}}&format=json&token_auth={{applications.matomo.credentials.auth_token}}" \ No newline at end of file diff --git a/tests/unit/test_domain_mappings.py b/tests/unit/test_domain_mappings.py index fe4d2e50..d0ac490f 100644 --- a/tests/unit/test_domain_mappings.py +++ b/tests/unit/test_domain_mappings.py @@ -30,9 +30,7 @@ class TestDomainMappings(unittest.TestCase): def test_empty_domains_cfg(self): apps = {'app1': {'domains': {}}} default = 'app1.example.com' - expected = [ - {'source': default, 'target': default} - ] + expected = [] result = self.filter.domain_mappings(apps, self.primary) self.assertEqual(result, expected) @@ -45,7 +43,6 @@ class TestDomainMappings(unittest.TestCase): default = 'app1.example.com' expected = [ {'source': 'alias.com', 'target': default}, - {'source': default, 'target': default}, ] result = self.filter.domain_mappings(apps, self.primary) # order not important @@ -84,10 +81,7 @@ class TestDomainMappings(unittest.TestCase): 'app2': {'domains': {'canonical': ['c2.com']}}, } expected = [ - # app1 {'source': 'a1.com', 'target': 'app1.example.com'}, - {'source': 'app1.example.com', 'target': 'app1.example.com'}, - # app2 {'source': 'app2.example.com', 'target': 'c2.com'}, ] result = self.filter.domain_mappings(apps, self.primary)