#!/bin/bash GITEA_FULL_DOMAIN=${GITEA_SERVER_NAME}.${GITEA_DOMAIN} # set LDAP password from secret if [ ! -z $LDAP_BIND_PWD_FILE -a -f $LDAP_BIND_PWD_FILE ]; then LDAP_BIND_PWD=`cat $LDAP_BIND_PWD_FILE`; fi GITEA_DB_PWD=`openssl rand -base64 20` # set Admin password from secret if [ ! -z $GITEA_ADMIN_PWD_FILE -a -f $GITEA_ADMIN_PWD_FILE ]; then GITEA_ADMIN_PWD=`cat $GITEA_ADMIN_PWD_FILE`; fi # check needed variables if [[ -z ${DB_HOST} || -z ${GITEA_DB_NAME} \ || -z ${GITEA_DB_USER} || -z ${GITEA_DB_PWD} \ || -z ${GITEA_ADMIN_PWD} || -z ${ADMIN_EMAIL} \ || -z ${LDAP_SERVER_HOST} || -z ${LDAP_BIND_DN} \ || -z ${LDAP_BIND_PWD} || -z ${LDAP_SEARCH_BASE} \ ]]; then echo "Missing variable! You must provide: DB_HOST, GITEA_DB_NAME, \ GITEA_DB_USER, GITEA_DB_PWD, GITEA_ADMIN_PWD, ADMIN_EMAIL and LDAP stuff"; echo $DB_HOST, $GITEA_DB_NAME, $GITEA_DB_USER, ${#GITEA_DB_PWD} echo ${#GITEA_ADMIN_PWD}, ${ADMIN_EMAIL}, echo ${LDAP_SERVER_HOST}, ${LDAP_BIND_DN}, ${#LDAP_BIND_PWD}, ${LDAP_SEARCH_BASE} #env; exit 1; fi function check_result { if [ $1 != 0 ]; then echo "Error: $2"; exit 1; fi } # ### DB setup ### # wait for DB to be ready sleep 60 # to avoid hitting it while the first start for setting root pwd R=111 while [ $R -eq 111 ]; do mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "SHOW DATABASES" 2> /dev/null; R=$?; done # check if DB exists DB_EXISTS=$(mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "SHOW DATABASES" 2> /dev/null | grep ${GITEA_DB_NAME}) echo DB exists: ${DB_EXISTS} if [ -z "${DB_EXISTS}" ]; then echo Creating Database #mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "DROP DATABASE IF EXISTS ${GITEA_DB_NAME};" #check_result $? "Dropping DB" mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "CREATE DATABASE ${GITEA_DB_NAME};" check_result $? "Creating DB" fi echo Creating User # 'IF EXISTS' for DROP USER is available from MariaDB 10.1.3 only mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "DROP USER ${GITEA_DB_USER};" || echo "It seems it didn't exist" mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "CREATE USER ${GITEA_DB_USER} IDENTIFIED BY '${GITEA_DB_PWD}';" check_result $? "Creating User" mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "GRANT ALL ON ${GITEA_DB_NAME}.* TO ${GITEA_DB_USER};" check_result $? "Granting permissions" mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "FLUSH PRIVILEGES;" check_result $? "Flushing privileges" unset MYSQL_ROOT_PWD # ### Conf file ### echo Tweaking config files CONF_FILE=${GITEA_CUSTOM}/conf/app.ini # We need to re-generate conf file because we are changing DB pwd #if [[ ! -e ${CONF_FILE} ]]; then mkdir -p ${GITEA_CUSTOM}/conf mv /home/${USER}/app.ini ${CONF_FILE} chown -R ${USER} ${GITEA_CUSTOM} echo Setting domain sed -i "s/GITEA_FULL_DOMAIN/${GITEA_FULL_DOMAIN}/g" ${CONF_FILE} # DB conf echo Setting DB conf sed -i "s/DB_HOST/${DB_HOST}/g" ${CONF_FILE} sed -i "s/GITEA_DB_NAME/${GITEA_DB_NAME}/g" ${CONF_FILE} sed -i "s/GITEA_DB_USER/${GITEA_DB_USER}/g" ${CONF_FILE} sed -i "s/GITEA_DB_PWD/${GITEA_DB_PWD//\//\\/}/g" ${CONF_FILE} #fi # Create admin user if DB was new if [ -z "${DB_EXISTS}" ]; then su git -c "gitea admin create-user --username admin --password ${GITEA_ADMIN_PWD} --admin --email ${ADMIN_EMAIL}" fi # LDAP su git -c "gitea admin auth add-ldap \ --name ldap \ --security-protocol unencrypted \ --host ${LDAP_SERVER_HOST} \ --port 389 \ --bind-dn ${LDAP_BIND_DN} \ --bind-password ${LDAP_BIND_PWD} \ --user-search-base ${LDAP_SEARCH_BASE} \ --user-filter \"(&(objectclass=*)(|(uniqueIdentifier=%s)(mail=%s)))\" \ --username-attribute uniqueIdentifier \ --firstname-attribute givenName \ --surname-attribute sn \ --email-attribute mail" exec /bin/s6-svscan /etc/s6