Files
computer-playbook/roles/web-svc-xmpp/templates/configuration.yml.j2
kevinveenbirkenbachandClaude Fable 5 83c619054b fix(xmpp): fall back to internal auth when ldap is disabled
The no-ldap variant still rendered auth_method: ldap with empty LDAP
bind values, so ejabberd rejected every login. The ldap block is now
gated on services.ldap.enabled with an internal-auth fallback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 17:05:57 +02:00

71 lines
1.4 KiB
Django/Jinja

hosts:
- "{{ XMPP_DOMAIN }}"
loglevel: info
listen:
- port: 5222
ip: "::"
module: ejabberd_c2s
starttls: true
starttls_required: true
- port: 5269
ip: "::"
module: ejabberd_s2s_in
- port: 5280
ip: "::"
module: ejabberd_http
request_handlers:
"/admin": ejabberd_web_admin
"/api": mod_http_api
"/.well-known/host-meta": mod_host_meta
"/bosh": mod_bosh
"/ws": ejabberd_http_ws
{% if lookup('config', application_id, 'services.ldap.enabled') | bool %}
auth_method:
- ldap
ldap_servers:
- "{{ lookup('config', 'svc-db-openldap', 'services.openldap.name') }}"
ldap_port: {{ lookup('config', 'svc-db-openldap', 'services.openldap.ports.local.ldap') }}
ldap_rootdn: "{{ LDAP.DN.ADMINISTRATOR.DATA }}"
ldap_password: "{{ LDAP.BIND_CREDENTIAL }}"
ldap_base: "{{ LDAP.DN.OU.USERS }}"
ldap_uids: ["uid"]
ldap_filter: "(objectClass=inetOrgPerson)"
{% else %}
auth_method:
- internal
{% endif %}
shaper:
normal: 1000
fast: 50000
acl:
admin:
user:
- "{{ lookup('users', 'administrator').username }}@{{ XMPP_DOMAIN }}"
modules:
mod_admin_extra: {}
mod_adhoc: {}
mod_announce:
access: announce
mod_bosh: {}
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
mod_disco: {}
mod_offline: {}
mod_ping: {}
mod_pubsub:
access_createnode: pubsub_createnode
mod_register:
access: deny
mod_roster: {}
mod_stream_mgmt: {}
mod_vcard: {}