diff --git a/common/docker_ldap/notes/acl-allow-user-self-read.ldif b/common/docker_ldap/notes/acl-allow-user-self-read.ldif deleted file mode 100644 index 1efa96fd722ee1ec0f56ff8023d1c3aa32b1b857..0000000000000000000000000000000000000000 --- a/common/docker_ldap/notes/acl-allow-user-self-read.ldif +++ /dev/null @@ -1,4 +0,0 @@ -dn: olcDatabase={1}hdb,cn=config -changetype: modify -add: olcAccess -olcAccess: to * by self read by * search diff --git a/common/docker_ldap/notes/acl-allow-user-self-read.sh b/common/docker_ldap/notes/acl-allow-user-self-read.sh deleted file mode 100644 index cadee1c82bfb2dc667ab930aeb60f4c52dcf755d..0000000000000000000000000000000000000000 --- a/common/docker_ldap/notes/acl-allow-user-self-read.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -ldapmodify -Y EXTERNAL -H ldapi:// -f /opt/helper/acl-allow-user-self-read.ldif -ldapsearch -Y EXTERNAL -H ldapi:// -b "cn=config" "olcDatabase={1}hdb" diff --git a/common/docker_ldap/notes/search_admin.sh b/common/docker_ldap/notes/search_admin.sh deleted file mode 100644 index 40c8ea1b663e30cbc27ccb40861a8a427f91df87..0000000000000000000000000000000000000000 --- a/common/docker_ldap/notes/search_admin.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -# Usage: sh search_admin.sh "(objectClass=*)" -ldapsearch -h {{ int_ip4 }} -b "{{ ldap_base_dn }}" -D "{{ ldap_admin_bind_dn }}" -w "{{ ldap_admin_pass }}" -s sub "$1" diff --git a/common/docker_ldap/notes/search_user.sh b/common/docker_ldap/notes/search_user.sh deleted file mode 100644 index 671bb5b40bfaa2f8c6ebce07fcc12c8d0f5d8fc6..0000000000000000000000000000000000000000 --- a/common/docker_ldap/notes/search_user.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -# Usage: sh search_user.sh "testuser" "(objectClass=*)" -ldapsearch -h {{ int_ip4 }} -b "{{ ldap_base_dn }}" -D "uid=$1,ou=users,{{ ldap_base_dn }}" -W -s sub "$2" diff --git a/common/docker_ldap/tasks/main.yml b/common/docker_ldap/tasks/main.yml deleted file mode 100644 index 4fcd906e2b0b16173b9b6d7f941a7f9f6ee0697a..0000000000000000000000000000000000000000 --- a/common/docker_ldap/tasks/main.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- - -- include_tasks: ../functions/get_secret.yml - with_items: - - { path: /srv/ldap/secret/ldap_admin_pass, length: 24 } - - { path: /srv/ldap/secret/ldap_readonly_pass, length: 24 } - -- name: create folder struct for ldap - file: - path: "/srv/ldap/{{ item.path }}" - state: "directory" - recurse: yes - with_items: - - { path: 'database' } - - { path: 'config' } - -- name: Docker Compose Konfig-Datei erstellen - template: - src: "{{ item }}" - dest: "/srv/ldap/{{ item }}" - with_items: - - docker-compose.yml - - Dockerfile - - syncrepl_exporter.yml - register: config - -- name: "stop {{ servicename}} docker" - community.docker.docker_compose_v2: - project_src: "{{ basedir }}" - state: absent - when: config.changed - -- name: "start {{ servicename}} docker" - community.docker.docker_compose_v2: - project_src: "{{ basedir }}" - state: present - diff --git a/common/docker_ldap/templates/Dockerfile b/common/docker_ldap/templates/Dockerfile deleted file mode 100644 index e1b3bd048185fa7ae097c24dcc92d98974cdcddc..0000000000000000000000000000000000000000 --- a/common/docker_ldap/templates/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM golang:1.21.6 - -RUN go get github.com/ThoreKr/syncrepl_exporter - -EXPOSE 9328 -CMD ["/go/bin/syncrepl_exporter","--path.config=/syncrepl_exporter.yml"] diff --git a/common/docker_ldap/templates/docker-compose.yml b/common/docker_ldap/templates/docker-compose.yml deleted file mode 100644 index b25e3a32f3a454aab49c0049fd9f5fc86723df77..0000000000000000000000000000000000000000 --- a/common/docker_ldap/templates/docker-compose.yml +++ /dev/null @@ -1,49 +0,0 @@ -services: - - openldap: - image: osixia/openldap:1.3.0 - restart: always - command: --loglevel debug - volumes: - - /srv/ldap/database:/var/lib/ldap - - /srv/ldap/config:/etc/ldap/slapd.d - ports: - - {{ int_ip4 }}:389:389 - - {{ int_ip4 }}:636:636 - environment: - - HOSTNAME={{ inventory_hostname }}-sync - - LDAP_BACKEND=hdb - - LDAP_ORGANISATION={{ ldap_org }} - - LDAP_DOMAIN={{ ldap_domain }} - - LDAP_ADMIN_PASSWORD={{ ldap_admin_pass }} - - LDAP_CONFIG_PASSWORD={{ ldap_admin_pass }} - - LDAP_READONLY_USER=true - - LDAP_READONLY_USER_USERNAME=readonly - - LDAP_READONLY_USER_PASSWORD={{ ldap_readonly_pass }} - - LDAP_TLS_VERIFY_CLIENT=never - networks: - - default - - - phpldapadmin: - image: osixia/phpldapadmin:0.9.0 - restart: always - depends_on: - - openldap - environment: - - PHPLDAPADMIN_LDAP_HOSTS=openldap - - PHPLDAPADMIN_HTTPS=false - - PHPLDAPADMIN_TRUST_PROXY_SSL=true - labels: - - traefik.enable=true - - traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`) - - traefik.http.routers.{{ servicename }}.entrypoints=websecure - - traefik.http.services.{{ servicename }}.loadbalancer.server.port=80 - networks: - - default - - web - - -networks: - web: - external: true diff --git a/common/docker_ldap/templates/syncrepl_exporter.yml b/common/docker_ldap/templates/syncrepl_exporter.yml deleted file mode 100644 index d0419a1afe3fbf2d2437c5716473d6345a98cb99..0000000000000000000000000000000000000000 --- a/common/docker_ldap/templates/syncrepl_exporter.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- - - ldap: - host: 'openldap' - port: '636' - basedn: '{{ ldap_base_dn }}' - starttls: false - bind: true - bindcn: '{{ ldap_readonly_bind_dn }}' - bindpass: '{{ ldap_readonly_pass }}' diff --git a/group_vars/prod b/group_vars/prod index 5f443b90283f27b0cae5425325762351b140f089..a45b13133354f54cb0d70a4f72f3ffa2a01ee3cb 100644 --- a/group_vars/prod +++ b/group_vars/prod @@ -1,22 +1,3 @@ -# Globale Variablen für alle produktiven Server - -# Ports des LDAP Servers -ldap_port_default: 389 -ldap_port_secure: 636 - -# IP Adresse des LDAP Servers -# Extern läuft auf dem webserver -ldap_ip_ext: 10.42.1.1 - - -# Basis-Informationen der LDAP Konfiguration -ldap_org: Warpzone -ldap_domain: warpzone.ms -ldap_base_dn: dc=warpzone,dc=ms -ldap_admin_bind_dn: cn=admin,dc=warpzone,dc=ms -ldap_readonly_bind_dn: cn=readonly,dc=warpzone,dc=ms -ldap_group_dn: ou=groups,dc=warpzone,dc=ms -ldap_group_active_dn: cn=active,ou=groups,dc=warpzone,dc=ms # SMTP Settings smtp_domain: warpzone.ms diff --git a/group_vars/test b/group_vars/test index f731e281e3ab0c90f71014279aec7ec32d68ebcd..6b10cca0bfae6024266ac3e222da4af0251835fc 100644 --- a/group_vars/test +++ b/group_vars/test @@ -1,3 +1,4 @@ + # SMTP Settings smtp_domain: test-warpzone.de smtp_host: mailserver.test-warpzone.de diff --git a/host_vars/webserver b/host_vars/webserver index 00df526b82bbaedce1646f7be994024370bf236d..96b0096904357143d2d8cb86083896884484237c 100644 --- a/host_vars/webserver +++ b/host_vars/webserver @@ -36,8 +36,6 @@ webserver_domains: - "gitlab.warpzone.ms" - "matrix.warpzone.ms" - "mailserver.warpzone.ms" - - "ldap.warpzone.ms" - - "keycloak.warpzone.ms" - "md.warpzone.ms" - "privatebin.warpzone.ms" # - "turn.warpzone.ms" @@ -84,8 +82,6 @@ alert: - { name: "icinga-auth-1" } - { name: "icinga-db-1" } - { name: "icinga-graphite-1" } - - { name: "ldap-openldap-1" } - - { name: "ldap-phpldapadmin-1" } - { name: "mail-admin-1" } - { name: "mail-antispam-1" } - { name: "mail-certdumper-1" } diff --git a/site.yml b/site.yml index a05b5633467284969f8bf8db83f6100a94eb6a20..2725b8b4b8e0a220ab995f479b37b5731c9b67bb 100644 --- a/site.yml +++ b/site.yml @@ -291,12 +291,6 @@ basedir: "/srv/{{ servicename }}", domain: "uffd.warpzone.ms", } - - { - role: common/docker_ldap, tags: [ ldap, docker_services ], - servicename: ldap, - basedir: /srv/ldap, - domain: "ldap.warpzone.ms" - } - { role: common/docker_traefik, tags: [ traefik, docker_services ], servicename: traefik, @@ -342,12 +336,6 @@ basedir: /srv/hackmd, domain: "md.warpzone.ms" } - - { - role: webserver/docker_keycloak, tags: [ keycloak, docker_services ], - servicename: "keycloak", - basedir: /srv/keycloak, - domain: "keycloak.warpzone.ms" - } - { role: webserver/docker_mail, tags: [ mail, docker_services ], servicename: mail, diff --git a/webserver/docker_keycloak/tasks/main.yml b/webserver/docker_keycloak/tasks/main.yml deleted file mode 100644 index 57a68e4c48789cbc3ffc688d3bde6eb6c6c04741..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/tasks/main.yml +++ /dev/null @@ -1,50 +0,0 @@ ---- - -- include_tasks: ../functions/get_secret.yml - with_items: - - { path: /srv/shared/noreply_email_pass, length: -1 } - - { path: /srv/keycloak/keycloak_admin_pass, length: 32 } - - { path: /srv/keycloak/postgres_user_pass, length: 24 } - - -- name: create folder struct for keycloak - file: - path: "{{ item }}" - state: "directory" - with_items: - - /srv/keycloak/ - - /srv/keycloak/db/ - - /srv/keycloak/sync-group-active/ - - /srv/keycloak/themes/ - - /srv/keycloak/themes/keycloak/ - - /srv/keycloak/themes/keycloak/account/ - - /srv/keycloak/themes/keycloak/login/ - - /srv/keycloak/welcome-content/ - - -- name: Konfig-Dateien erstellen - template: - src: "{{ item }}" - dest: "/srv/keycloak/{{ item }}" - with_items: - - docker-compose.yml - - sync-group-active/Dockerfile - - sync-group-active/main.py - - themes/keycloak/account/account.ftl - - themes/keycloak/login/register.ftl - - welcome-content/index.html - - welcome-content/robots.txt - register: config - - -- name: stop keycloak docker - community.docker.docker_compose_v2: - project_src: /srv/keycloak/ - state: absent - when: config.changed - - -- name: start keycloak docker - community.docker.docker_compose_v2: - project_src: /srv/keycloak/ - state: present diff --git a/webserver/docker_keycloak/templates/docker-compose.yml b/webserver/docker_keycloak/templates/docker-compose.yml deleted file mode 100644 index f32d670204c409ce61251af41d14bbea46d1e79e..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/templates/docker-compose.yml +++ /dev/null @@ -1,64 +0,0 @@ -services: - - - app: - # values set in configuration: noreply_email_user - noreply_email_pass - smtp_host - smtp_port - image: jboss/keycloak:16.1.1 - restart: always - depends_on: - - db - volumes: - - /srv/keycloak/welcome-content:/opt/jboss/keycloak/welcome-content - - /srv/keycloak/themes/keycloak/account/account.ftl:/opt/jboss/keycloak/themes/keycloak/account/account.ftl - - /srv/keycloak/themes/keycloak/login/register.ftl:/opt/jboss/keycloak/themes/keycloak/login/register.ftl - environment: - KEYCLOAK_USER: "keycloakadmin" - KEYCLOAK_PASSWORD: "{{ keycloak_admin_pass }}" - DB_VENDOR: "POSTGRES" - DB_ADDR: "db" - DB_DATABASE: "keycloak" - DB_USER: "keycloak" - DB_PASSWORD: "{{ postgres_user_pass }}" - PROXY_ADDRESS_FORWARDING: "true" - labels: - - com.centurylinklabs.watchtower.enable=false - - traefik.enable=true - - traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`) - - traefik.http.routers.{{ servicename }}.entrypoints=websecure - - traefik.http.services.{{ servicename }}.loadbalancer.server.port=8080 - networks: - - default - - web - - - db: - - image: postgres:13.6 - restart: always - volumes: - - /srv/keycloak/db:/var/lib/postgresql/data - environment: - POSTGRES_DB: keycloak - POSTGRES_USER: keycloak - POSTGRES_PASSWORD: "{{ postgres_user_pass }}" - networks: - - default - - - sync-group-active: - - build: - context: /srv/keycloak/sync-group-active/ - dockerfile: /srv/keycloak/sync-group-active/Dockerfile - restart: always - depends_on: - - app - volumes: - - /srv/keycloak/sync-group-active/:/usr/src/app/ - networks: - - default - - -networks: - web: - external: true diff --git a/webserver/docker_keycloak/templates/sync-group-active/Dockerfile b/webserver/docker_keycloak/templates/sync-group-active/Dockerfile deleted file mode 100644 index fb9b9c7dfcf60dd02b52b1939b326c7c0dbe8388..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/templates/sync-group-active/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ - -FROM python:3.10-alpine3.13 - -RUN pip install python-keycloak - -WORKDIR /usr/src/app - -CMD [ "python", "/usr/src/app/main.py" ] - diff --git a/webserver/docker_keycloak/templates/sync-group-active/main.py b/webserver/docker_keycloak/templates/sync-group-active/main.py deleted file mode 100644 index 373dbdb1326d2d418682582732c40fc81002916b..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/templates/sync-group-active/main.py +++ /dev/null @@ -1,100 +0,0 @@ -# Automatische Verwaltung der /active -Gruppe, damit diese auch im LDAP korrekt zugewiesen wird. -# Die Gruppe wird für legacy-Anwendungen benötigt, die lediglich auf dem LDAP basieren. -# Python API: https://pypi.org/project/python-keycloak/ - -import logging - -from datetime import datetime, timezone -from time import sleep -from threading import Timer -from keycloak import KeycloakAdmin - -# Debug flag -DEBUG = False - -llevel = logging.INFO -if DEBUG: - llevel = logging.DEBUG - -logging.basicConfig(format='%(asctime)s [%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S %Z', level=llevel) - -# Sleep time for loops -LOOP_START_SECONDS = 60 -LOOP_SLEEP_SECONDS = 4*60*60 - -if DEBUG: - LOOP_START_SECONDS = 20 - LOOP_SLEEP_SECONDS = 30 - -# Keycloak Setup -KEYCLOAK_URL = "https://keycloak.warpzone.ms/auth/" -KEYCLOAK_REALM = "master" -KEYCLOAK_ADMIN_USER = "keycloakadmin" -KEYCLOAK_ADMIN_PASS = "{{ keycloak_admin_pass }}" - - -def main_loop(): - - while(True): - - keycloak_admin = KeycloakAdmin(server_url=KEYCLOAK_URL, username=KEYCLOAK_ADMIN_USER, password=KEYCLOAK_ADMIN_PASS, realm_name=KEYCLOAK_REALM, verify=True) - - logging.info("START: connected to keycloak") - - group_active = keycloak_admin.get_group_by_path(path='/active', search_in_subgroups=False) - - logging.debug("Group /active: %s" % group_active) - - - # Abfrage der aktiven Benutzer mit verifizierter E-Mail Adresse - # Wenn diese noch nicht die Rolle /active haben wird diese zugewiesen - - users_active = keycloak_admin.get_users({ 'enabled': True, 'emailVerified': True }) - - for user in users_active: - logging.debug("User active %s" % user['username']) - if user['username'] == KEYCLOAK_ADMIN_USER: - continue - groups = keycloak_admin.get_user_groups(user['id']) - logging.debug(groups) - has_group = False - for group in groups: - if group['id'] == group_active['id']: - has_group = True - logging.debug("has_group = %s" % has_group) - if has_group == False: - logging.info('User: %s => Add group active' % user['username']) - keycloak_admin.group_user_add(user['id'], group_active['id']) - - - # Abfrage der inaktiven Benutzer und entfernen der Gruppe /active falls diese noch zugewiesen ist - - users_inactive = keycloak_admin.get_users({ 'enabled': False }) - - for user in users_inactive: - logging.debug("User inactive %s" % user['username']) - if user['username'] == KEYCLOAK_ADMIN_USER: - continue - groups = keycloak_admin.get_user_groups(user['id']) - logging.debug(groups) - for group in groups: - if group['id'] == group_active['id']: - logging.info('User: %s => Remove group active' % user['username']) - keycloak_admin.group_user_remove(user['id'], group_active['id']) - - logging.info("DONE (loop)") - - # sleep and repeat - sleep(LOOP_SLEEP_SECONDS) - - -logging.info("START (pre-loop)") - -t = Timer(LOOP_START_SECONDS, main_loop) -t.start() -t.join() - -logging.info("DONE (final)") - - - diff --git a/webserver/docker_keycloak/templates/themes/keycloak/account/account.ftl b/webserver/docker_keycloak/templates/themes/keycloak/account/account.ftl deleted file mode 100644 index beefc2ac57b190f109ed3014a5913fa589c303bf..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/templates/themes/keycloak/account/account.ftl +++ /dev/null @@ -1,50 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.mainLayout active='account' bodyClass='user'; section> - - <div class="row"> - <div class="col-md-10"> - <h2>${msg("editAccountHtmlTitle")}</h2> - </div> - <div class="col-md-2 subtitle"> - <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span> - </div> - </div> - - <form action="${url.accountUrl}" class="form-horizontal" method="post"> - - <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}"> - - <#if !realm.registrationEmailAsUsername> - <div class="form-group ${messagesPerField.printIfExists('username','has-error')}"> - <div class="col-sm-2 col-md-2"> - <label for="username" class="control-label">${msg("username")}</label> <#if realm.editUsernameAllowed><span class="required">*</span></#if> - </div> - - <div class="col-sm-10 col-md-10"> - <input type="text" class="form-control" id="username" name="username" <#if !realm.editUsernameAllowed>disabled="disabled"</#if> value="${(account.username!'')}"/> - </div> - </div> - </#if> - - <div class="form-group ${messagesPerField.printIfExists('email','has-error')}"> - <div class="col-sm-2 col-md-2"> - <label for="email" class="control-label">${msg("email")}</label> <span class="required">*</span> - </div> - - <div class="col-sm-10 col-md-10"> - <input type="text" class="form-control" id="email" name="email" autofocus value="${(account.email!'')}"/> - </div> - </div> - - <div class="form-group"> - <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit"> - <div class=""> - <#if url.referrerURI??><a href="${url.referrerURI}">${kcSanitize(msg("backToApplication")?no_esc)}</a></#if> - <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button> - <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doCancel")}</button> - </div> - </div> - </div> - </form> - -</@layout.mainLayout> diff --git a/webserver/docker_keycloak/templates/themes/keycloak/login/register.ftl b/webserver/docker_keycloak/templates/themes/keycloak/login/register.ftl deleted file mode 100644 index 817d7c37c8f56839b7e1dcc9996703ccfc64ecf5..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/templates/themes/keycloak/login/register.ftl +++ /dev/null @@ -1,106 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayMessage=!messagesPerField.existsError('firstName','lastName','email','username','password','password-confirm'); section> - <#if section = "header"> - ${msg("registerTitle")} - <#elseif section = "form"> - <form id="kc-register-form" class="${properties.kcFormClass!}" action="${url.registrationAction}" method="post"> - - <div class="${properties.kcFormGroupClass!}"> - <div class="${properties.kcLabelWrapperClass!}"> - <label for="email" class="${properties.kcLabelClass!}">${msg("email")}</label> - </div> - <div class="${properties.kcInputWrapperClass!}"> - <input type="text" id="email" class="${properties.kcInputClass!}" name="email" - value="${(register.formData.email!'')}" autocomplete="email" - aria-invalid="<#if messagesPerField.existsError('email')>true</#if>" - /> - - <#if messagesPerField.existsError('email')> - <span id="input-error-email" class="${properties.kcInputErrorMessageClass!}" aria-live="polite"> - ${kcSanitize(messagesPerField.get('email'))?no_esc} - </span> - </#if> - </div> - </div> - - <#if !realm.registrationEmailAsUsername> - <div class="${properties.kcFormGroupClass!}"> - <div class="${properties.kcLabelWrapperClass!}"> - <label for="username" class="${properties.kcLabelClass!}">${msg("username")}</label> - </div> - <div class="${properties.kcInputWrapperClass!}"> - <input type="text" id="username" class="${properties.kcInputClass!}" name="username" - value="${(register.formData.username!'')}" autocomplete="username" - aria-invalid="<#if messagesPerField.existsError('username')>true</#if>" - /> - - <#if messagesPerField.existsError('username')> - <span id="input-error-username" class="${properties.kcInputErrorMessageClass!}" aria-live="polite"> - ${kcSanitize(messagesPerField.get('username'))?no_esc} - </span> - </#if> - </div> - </div> - </#if> - - <#if passwordRequired??> - <div class="${properties.kcFormGroupClass!}"> - <div class="${properties.kcLabelWrapperClass!}"> - <label for="password" class="${properties.kcLabelClass!}">${msg("password")}</label> - </div> - <div class="${properties.kcInputWrapperClass!}"> - <input type="password" id="password" class="${properties.kcInputClass!}" name="password" - autocomplete="new-password" - aria-invalid="<#if messagesPerField.existsError('password','password-confirm')>true</#if>" - /> - - <#if messagesPerField.existsError('password')> - <span id="input-error-password" class="${properties.kcInputErrorMessageClass!}" aria-live="polite"> - ${kcSanitize(messagesPerField.get('password'))?no_esc} - </span> - </#if> - </div> - </div> - - <div class="${properties.kcFormGroupClass!}"> - <div class="${properties.kcLabelWrapperClass!}"> - <label for="password-confirm" - class="${properties.kcLabelClass!}">${msg("passwordConfirm")}</label> - </div> - <div class="${properties.kcInputWrapperClass!}"> - <input type="password" id="password-confirm" class="${properties.kcInputClass!}" - name="password-confirm" - aria-invalid="<#if messagesPerField.existsError('password-confirm')>true</#if>" - /> - - <#if messagesPerField.existsError('password-confirm')> - <span id="input-error-password-confirm" class="${properties.kcInputErrorMessageClass!}" aria-live="polite"> - ${kcSanitize(messagesPerField.get('password-confirm'))?no_esc} - </span> - </#if> - </div> - </div> - </#if> - - <#if recaptchaRequired??> - <div class="form-group"> - <div class="${properties.kcInputWrapperClass!}"> - <div class="g-recaptcha" data-size="compact" data-sitekey="${recaptchaSiteKey}"></div> - </div> - </div> - </#if> - - <div class="${properties.kcFormGroupClass!}"> - <div id="kc-form-options" class="${properties.kcFormOptionsClass!}"> - <div class="${properties.kcFormOptionsWrapperClass!}"> - <span><a href="${url.loginUrl}">${kcSanitize(msg("backToLogin"))?no_esc}</a></span> - </div> - </div> - - <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}"> - <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doRegister")}"/> - </div> - </div> - </form> - </#if> -</@layout.registrationLayout> diff --git a/webserver/docker_keycloak/templates/welcome-content/index.html b/webserver/docker_keycloak/templates/welcome-content/index.html deleted file mode 100644 index 3c2048dd655cd0d0298b7e325f48998674909d4d..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/templates/welcome-content/index.html +++ /dev/null @@ -1,31 +0,0 @@ -<!-- - ~ Copyright 2016 Red Hat, Inc. and/or its affiliates - ~ and other contributors as indicated by the @author tags. - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> - <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - - <html> - <head> - <meta http-equiv="refresh" content="0; url=/auth/realms/master/account/" /> - <meta name="robots" content="noindex, nofollow"> - <script type="text/javascript"> - window.location.href = "/auth/realms/master/account/" - </script> - </head> - <body> - If you are not redirected automatically, follow this <a href='/auth/realms/master/account/'>link</a>. - </body> - </html> - \ No newline at end of file diff --git a/webserver/docker_keycloak/templates/welcome-content/robots.txt b/webserver/docker_keycloak/templates/welcome-content/robots.txt deleted file mode 100644 index 9e60f970fbd025612caecdc947f7a67ceb24d511..0000000000000000000000000000000000000000 --- a/webserver/docker_keycloak/templates/welcome-content/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: