Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

120 lines
3.8KB

  1. #!/bin/bash
  2. GITEA_FULL_DOMAIN=${GITEA_SERVER_NAME}.${GITEA_DOMAIN}
  3. # set LDAP password from secret
  4. if [ ! -z $LDAP_BIND_PWD_FILE -a -f $LDAP_BIND_PWD_FILE ]; then
  5. LDAP_BIND_PWD=`cat $LDAP_BIND_PWD_FILE`;
  6. fi
  7. GITEA_DB_PWD=`openssl rand -base64 20`
  8. # set Admin password from secret
  9. if [ ! -z $GITEA_ADMIN_PWD_FILE -a -f $GITEA_ADMIN_PWD_FILE ]; then
  10. GITEA_ADMIN_PWD=`cat $GITEA_ADMIN_PWD_FILE`;
  11. fi
  12. # check needed variables
  13. if [[ -z ${DB_HOST} || -z ${GITEA_DB_NAME} \
  14. || -z ${GITEA_DB_USER} || -z ${GITEA_DB_PWD} \
  15. || -z ${GITEA_ADMIN_PWD} || -z ${ADMIN_EMAIL} \
  16. || -z ${LDAP_SERVER_HOST} || -z ${LDAP_BIND_DN} \
  17. || -z ${LDAP_BIND_PWD} || -z ${LDAP_SEARCH_BASE} \
  18. ]];
  19. then
  20. echo "Missing variable! You must provide: DB_HOST, GITEA_DB_NAME, \
  21. GITEA_DB_USER, GITEA_DB_PWD, GITEA_ADMIN_PWD, ADMIN_EMAIL and LDAP stuff";
  22. echo $DB_HOST, $GITEA_DB_NAME, $GITEA_DB_USER, ${#GITEA_DB_PWD}
  23. echo ${#GITEA_ADMIN_PWD}, ${ADMIN_EMAIL},
  24. echo ${LDAP_SERVER_HOST}, ${LDAP_BIND_DN}, ${#LDAP_BIND_PWD}, ${LDAP_SEARCH_BASE}
  25. #env;
  26. exit 1;
  27. fi
  28. function check_result {
  29. if [ $1 != 0 ]; then
  30. echo "Error: $2";
  31. exit 1;
  32. fi
  33. }
  34. # ### DB setup ###
  35. # wait for DB to be ready
  36. sleep 60 # to avoid hitting it while the first start for setting root pwd
  37. R=111
  38. while [ $R -eq 111 ]; do
  39. mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "SHOW DATABASES" 2> /dev/null;
  40. R=$?;
  41. done
  42. # check if DB exists
  43. DB_EXISTS=$(mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "SHOW DATABASES" 2> /dev/null | grep ${GITEA_DB_NAME})
  44. echo DB exists: ${DB_EXISTS}
  45. if [ -z "${DB_EXISTS}" ]; then
  46. echo Creating Database
  47. #mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "DROP DATABASE IF EXISTS ${GITEA_DB_NAME};"
  48. #check_result $? "Dropping DB"
  49. mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "CREATE DATABASE ${GITEA_DB_NAME};"
  50. check_result $? "Creating DB"
  51. fi
  52. echo Creating User
  53. # 'IF EXISTS' for DROP USER is available from MariaDB 10.1.3 only
  54. mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "DROP USER ${GITEA_DB_USER};" || echo "It seems it didn't exist"
  55. mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "CREATE USER ${GITEA_DB_USER} IDENTIFIED BY '${GITEA_DB_PWD}';"
  56. check_result $? "Creating User"
  57. mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "GRANT ALL ON ${GITEA_DB_NAME}.* TO ${GITEA_DB_USER};"
  58. check_result $? "Granting permissions"
  59. mysql -u root -p${MYSQL_ROOT_PWD} -h ${DB_HOST} -e "FLUSH PRIVILEGES;"
  60. check_result $? "Flushing privileges"
  61. unset MYSQL_ROOT_PWD
  62. # ### Conf file ###
  63. echo Tweaking config files
  64. CONF_FILE=${GITEA_CUSTOM}/conf/app.ini
  65. # We need to re-generate conf file because we are changing DB pwd
  66. #if [[ ! -e ${CONF_FILE} ]]; then
  67. mkdir -p ${GITEA_CUSTOM}/conf
  68. mv /home/${USER}/app.ini ${CONF_FILE}
  69. chown -R ${USER} ${GITEA_CUSTOM}
  70. echo Setting domain
  71. sed -i "s/GITEA_FULL_DOMAIN/${GITEA_FULL_DOMAIN}/g" ${CONF_FILE}
  72. # DB conf
  73. echo Setting DB conf
  74. sed -i "s/DB_HOST/${DB_HOST}/g" ${CONF_FILE}
  75. sed -i "s/GITEA_DB_NAME/${GITEA_DB_NAME}/g" ${CONF_FILE}
  76. sed -i "s/GITEA_DB_USER/${GITEA_DB_USER}/g" ${CONF_FILE}
  77. sed -i "s/GITEA_DB_PWD/${GITEA_DB_PWD//\//\\/}/g" ${CONF_FILE}
  78. #fi
  79. # Create admin user if DB was new
  80. if [ -z "${DB_EXISTS}" ]; then
  81. su git -c "gitea admin create-user --username admin --password ${GITEA_ADMIN_PWD} --admin --email ${ADMIN_EMAIL}"
  82. fi
  83. # LDAP
  84. su git -c "gitea admin auth add-ldap \
  85. --name ldap \
  86. --security-protocol unencrypted \
  87. --host ${LDAP_SERVER_HOST} \
  88. --port 389 \
  89. --bind-dn ${LDAP_BIND_DN} \
  90. --bind-password ${LDAP_BIND_PWD} \
  91. --user-search-base ${LDAP_SEARCH_BASE} \
  92. --user-filter \"(&(objectclass=*)(|(uniqueIdentifier=%s)(mail=%s)))\" \
  93. --username-attribute uniqueIdentifier \
  94. --firstname-attribute givenName \
  95. --surname-attribute sn \
  96. --email-attribute mail"
  97. exec /bin/s6-svscan /etc/s6