Little tweaks

This commit is contained in:
Kevin Veen-Birkenbach 2025-05-22 05:55:33 +02:00
parent c7ff39169a
commit 2717651189
No known key found for this signature in database
GPG Key ID: 44D8F11FD62F878E
16 changed files with 51 additions and 20 deletions

View File

@ -120,17 +120,28 @@ def generate_playbook_entries(roles_dir, prefix=None):
# Include the remaining unsorted roles # Include the remaining unsorted roles
final_sorted_roles += [role for role in sorted_role_names if role not in final_sorted_roles] final_sorted_roles += [role for role in sorted_role_names if role not in final_sorted_roles]
# Remove duplicates, keeping only the last occurrence of each role
seen = set()
deduplicated_roles = []
for role in reversed(final_sorted_roles):
if role not in seen:
deduplicated_roles.insert(0, role)
seen.add(role)
# Generate the playbook entries # Generate the playbook entries
entries = [] entries = []
for role_name in final_sorted_roles: for role_name in deduplicated_roles:
role = roles[role_name] role = roles[role_name]
entry = ( entries.append(
f"- name: setup {role['application_id']}\n" # Use application_id here f"- name: setup {role['application_id']}\n"
f" when: ('{role['application_id']}' in group_names)\n" # Correct condition format f" when: ('{role['application_id']}' in group_names)\n"
f" include_role:\n" f" include_role:\n"
f" name: {role['role_name']}\n" f" name: {role['role_name']}\n"
) )
entries.append(entry) entries.append(
f"- name: flush handlers after {role['application_id']}\n"
f" meta: flush_handlers\n"
)
return entries return entries

View File

@ -2,7 +2,7 @@
## Description ## Description
Elevate your website management with Joomla, a powerful content management system that fuses versatility with dynamic design. Experience a vibrant platform that inspires creativity and drives your digital presence to new, energetic heights. Elevate your website management with [Joomla](https://www.joomla.org/), a powerful content management system that fuses versatility with dynamic design. Experience a vibrant platform that inspires creativity and drives your digital presence to new, energetic heights.
## Overview ## Overview

View File

@ -11,3 +11,7 @@ features:
domains: domains:
canonical: canonical:
- "microblog.{{ primary_domain }}" - "microblog.{{ primary_domain }}"
csp:
whitelist:
frame-src:
- "*"

View File

@ -24,4 +24,5 @@ galaxy_info:
documentation: "https://s.veen.world/cymais" documentation: "https://s.veen.world/cymais"
logo: logo:
class: "fa-solid fa-database" class: "fa-solid fa-database"
dependencies: [] run_after:
- docker-postgres

View File

@ -23,4 +23,5 @@ galaxy_info:
documentation: "https://s.veen.world/cymais" documentation: "https://s.veen.world/cymais"
logo: logo:
class: "fa-solid fa-user-lock" class: "fa-solid fa-user-lock"
dependencies: [] run_after:
- docker-ldap

View File

@ -25,4 +25,5 @@ galaxy_info:
documentation: https://s.veen.world/cymais documentation: https://s.veen.world/cymais
logo: logo:
class: "fa-solid fa-database" class: "fa-solid fa-database"
dependencies: [] run_after:
- docker-mariadb

View File

@ -24,4 +24,5 @@ galaxy_info:
documentation: "https://s.veen.world/cymais" documentation: "https://s.veen.world/cymais"
logo: logo:
class: "fa-solid fa-camera" class: "fa-solid fa-camera"
dependencies: [] run_after:
- docker-keycloak

View File

@ -112,7 +112,7 @@
description: Access our comprehensive documentation and support resources to help you get the most out of the software. description: Access our comprehensive documentation and support resources to help you get the most out of the software.
icon: icon:
class: fas fa-book class: fas fa-book
url: https://{{domains.sphinx}} url: https://{{domains | get_domain('sphinx')}}
iframe: {{ applications | is_feature_enabled('portfolio_iframe','sphinx') }} iframe: {{ applications | is_feature_enabled('portfolio_iframe','sphinx') }}
{% endif %} {% endif %}
@ -123,10 +123,16 @@
description: Checkout the presentation description: Checkout the presentation
icon: icon:
class: "fas fa-chalkboard-teacher" class: "fas fa-chalkboard-teacher"
url: https://{{domains.presentation}} url: https://{{domains | get_domain('presentation')}}
iframe: {{ applications | is_feature_enabled('portfolio_iframe','presentation') }} iframe: {{ applications | is_feature_enabled('portfolio_iframe','presentation') }}
{% endif %} {% endif %}
- name: Solutions
description: "Software and IT Infrastructure Solutions by Kevin Veen-Birkenbach"
icon:
class: fa-solid fa-rocket
url: "https://cybermaster.space/"
iframe: false
- name: Imprint - name: Imprint
description: Check out the imprint information description: Check out the imprint information

View File

@ -19,6 +19,8 @@ csp:
flags: flags:
style-src: style-src:
unsafe-inline: true unsafe-inline: true
script-src:
unsafe-inline: true
domains: domains:
canonical: canonical:
- "{{ primary_domain }}" - "{{ primary_domain }}"

View File

@ -1,2 +1,4 @@
application_id: "html-server" application_id: "html-server"
domain: "{{domains | get_domain(application_id)}}" domain: "{{domains | get_domain(application_id)}}"
features:
portfolio_iframe: true # Necessary for imprint loading

View File

@ -28,6 +28,8 @@ class TestCspConfigurationConsistency(unittest.TestCase):
return True return True
if entry.startswith(('data:', 'blob:')): if entry.startswith(('data:', 'blob:')):
return True return True
if entry == '*':
return True
parsed = urlparse(entry) parsed = urlparse(entry)
return parsed.scheme in ('http', 'https') and bool(parsed.netloc) return parsed.scheme in ('http', 'https') and bool(parsed.netloc)

View File

@ -181,7 +181,7 @@ class TestCspFilters(unittest.TestCase):
# Expect '*.domain-example.com' in the frame-ancestors directive # Expect '*.domain-example.com' in the frame-ancestors directive
self.assertRegex( self.assertRegex(
header, header,
r"frame-ancestors\s+'self'\s+\*\.domain-example\.com;" r"frame-ancestors\s+'self'\s+domain-example\.com;"
) )
# Now disable the feature and rebuild # Now disable the feature and rebuild