#!/bin/sh

set -eu

kca() {
    /opt/keycloak/bin/kcadm.sh "$@"
}

kca_cred() {
    kca config credentials \
        --server http://keycloak:8080 \
        --realm master \
        --user ${KEYCLOAK_ADMIN} \
        --password ${KEYCLOAK_ADMIN_PASSWORD}
}

secret() {
    seed=$(cat /run/secrets/seed)
    printf "%s:%40s" "${seed}" "$*" | sha256sum | sed 's/[[:space:]].*//'
}

i=15
sleep ${i} # give it a moment to come up
while kca_cred 2>&1 | grep -q 'Connection refused\|Bad Gateway'; do
    if [ ${i} -eq 60 ]; then
        echo "ERROR: Couldn't login to Keycloak after ${i}s."
        exit 1
    fi
    echo Waiting...
    sleep 1
    i=$((i+1))
done
if ! kca_cred; then
    echo "ERROR: Failed to login to Keycloak."
    exit 2
fi

REALM=${SA_REALM:-sourcearcade}
if kca get realms/${REALM} --fields id >/dev/null 2>&1; then
    echo Realm ${REALM} already set up.
else
    kca create realms -f - <<EOF
    {
        "realm"                 : "${REALM}",
        "enabled"               : true,
        "sslRequired"           : "all",
        "registrationAllowed"   : true,
        "resetPasswordAllowed"  : true,
        "rememberMe"            : true,
        "verifyEmail"           : true,
        "smtpServer" : {
            "host"              : "mail.${SA_PUBLIC_DOMAIN_NAME}",
            "port"              : "465",
            "auth"              : true,
            "ssl"               : true,
            "user"              : "keycloak@${SA_PUBLIC_DOMAIN_NAME}",
            "password"          : "$(secret mail:keycloak)",
            "from"              : "keycloak@${SA_PUBLIC_DOMAIN_NAME}",
            "fromDisplayName"   : "SourceArcade"
        },
        "identityProviders" : [ {
            "alias"             : "github",
            "providerId"        : "github",
            "enabled"           : true,
            "config" : {
                "clientId"      : "${GITHUB_OAUTH_CLIENT_ID}",
                "clientSecret"  : "${GITHUB_OAUTH_CLIENT_SECRET}"
            }
        } ]
    }
EOF

    ac_id=$(kca get clients -r ${REALM} -q clientId=account-console --fields id \
            | sed -n 's/.*"id" : "\(.*\)".*/\1/p')
    kca update clients/${ac_id} -r ${REALM} -s webOrigins='[ "+" ]'

    echo New realm ${REALM} set up.
fi

if kca get clients -r ${REALM} -q clientId=gerrit --fields clientId | grep -q gerrit; then
    echo Gerrit client in realm ${REALM} already set up.
else
    kca create clients -r ${REALM} -f - <<EOF
    {
        "clientId"                  : "gerrit",
        "name"                      : "Gerrit",
        "enabled"                   : true,
        "description"               : "SourceArcade review platform",
        "rootUrl"                   : "https://review.${SA_PUBLIC_DOMAIN_NAME}",
        "clientAuthenticatorType"   : "client-secret",
        "secret"                    : "$(secret kc:gerrit)",
        "protocol"                  : "openid-connect",
        "directAccessGrantsEnabled" : false
    }
EOF
    echo Gerrit client in realm ${REALM} set up.
fi
