docker-entrypoint.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/bin/bash
  2. set -euox pipefail
  3. UNA_USER="www-una"
  4. VAR_DEF_DB_HOST="localhost"
  5. VAR_DEF_DB_PORT="3306"
  6. VAR_DEF_DB_USER="root"
  7. VAR_DEF_DB_PWD="root"
  8. VAR_DEF_HTTP_HOST="localhost"
  9. VAR_DEF_TITLE="UNA"
  10. VAR_DEF_USERNAME="admin"
  11. VAR_DEF_ADMIN_PWD="admin"
  12. VAR_DEF_EMAIL="admin@example.com"
  13. VAR_DEF_DB_ENGINE="MYISAM"
  14. VAR_DEF_AUTO_HOSTNAME=0
  15. VAR_DEF_VERSION="13.1.0"
  16. VAR_DEF_ZIP_DOWNLOAD_URL="http://ci.una.io/builds/UNA-v.${UNA_VERSION:-$VAR_DEF_VERSION}.zip"
  17. VAR_DEF_ZIP_FOLDER="UNA-v.${UNA_VERSION:-$VAR_DEF_VERSION}"
  18. # function
  19. qs() {
  20. if [[ $1 = /run/secrets/* ]]
  21. then
  22. result=`cat $1`
  23. echo ${result@Q}
  24. else
  25. echo ${1@Q}
  26. fi
  27. }
  28. # Unzip
  29. if [ ! -e "index.php" ] && [ ! -e "inc/version.inc.php" ]; then
  30. su $UNA_USER -c "curl -fSL $(qs ${UNA_ZIP_DOWNLOAD_URL:-$VAR_DEF_ZIP_DOWNLOAD_URL}) -o una.zip"
  31. su $UNA_USER -c "unzip -o una.zip"
  32. su $UNA_USER -c "rm una.zip"
  33. su $UNA_USER -c "mv $(qs ${UNA_ZIP_FOLDER:-$VAR_DEF_ZIP_FOLDER})/* ."
  34. su $UNA_USER -c "mv $(qs ${UNA_ZIP_FOLDER:-$VAR_DEF_ZIP_FOLDER}/.htaccess) ."
  35. su $UNA_USER -c "rm -rf $(qs ${UNA_ZIP_FOLDER:-$VAR_DEF_ZIP_FOLDER})"
  36. fi
  37. # Clean folders
  38. rm -rf cache/* cache_public/* tmp/*
  39. # Change permissions
  40. chmod +x plugins/ffmpeg/ffmpeg.exe
  41. find . -exec chown $UNA_USER:$UNA_USER {} \+ || true
  42. # Install
  43. if [ -d "install" ] && [ ! -f "inc/header.inc.php" ]; then
  44. su $UNA_USER -c "php ./install/cmd.php \
  45. --db_host=$(qs ${UNA_DB_HOST:-$VAR_DEF_DB_HOST}) \
  46. --db_port=$(qs ${UNA_DB_PORT:-$VAR_DEF_DB_PORT}) \
  47. --db_sock=$(qs ${UNA_DB_SOCK:-}) \
  48. --db_name=$(qs ${UNA_DB_NAME}) \
  49. --db_user=$(qs ${UNA_DB_USER:-$VAR_DEF_DB_USER}) \
  50. --db_password=$(qs ${UNA_DB_PWD:-$VAR_DEF_DB_PWD}) \
  51. --server_http_host=$(qs ${UNA_HTTP_HOST:-$VAR_DEF_HTTP_HOST}) \
  52. --server_php_self='/install/index.php' \
  53. --server_doc_root='/var/www/html/' \
  54. --site_title=$(qs ${UNA_SITE_TITLE:-$VAR_DEF_TITLE}) \
  55. --site_email=$(qs ${UNA_SITE_EMAIL:-$VAR_DEF_EMAIL}) \
  56. --admin_username=$(qs ${UNA_ADMIN_USERNAME:-$VAR_DEF_USERNAME}) \
  57. --admin_email=$(qs ${UNA_ADMIN_EMAIL:-$VAR_DEF_EMAIL}) \
  58. --admin_password=$(qs ${UNA_ADMIN_PWD:-$VAR_DEF_ADMIN_PWD}) \
  59. --oauth_key=$(qs ${UNA_KEY:-}) --oauth_secret=$(qs ${UNA_SECRET:-})"
  60. rm -rf ./install
  61. fi
  62. # Config alteration
  63. if [ ${UNA_DB_ENGINE:-$VAR_DEF_DB_ENGINE} != "MYISAM" ]; then
  64. sed -r -i "s/^define\('BX_DATABASE_ENGINE', 'MYISAM'\);/define\('BX_DATABASE_ENGINE', '${UNA_DB_ENGINE:-$VAR_DEF_DB_ENGINE}'\);/g" /var/www/html/inc/header.inc.php
  65. fi
  66. if [ ${UNA_AUTO_HOSTNAME:-$VAR_DEF_AUTO_HOSTNAME} != 0 ]; then
  67. sed -r -i "s/^define\('BX_DOL_URL_ROOT', .*?;/define\('BX_DOL_URL_ROOT', \(\(isset\(\$_SERVER['HTTPS']\) \&\& \$_SERVER['HTTPS'] == 'on'\) || \(!empty\(\$_SERVER['HTTP_X_FORWARDED_PROTO']\) \&\& \$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty\(\$_SERVER['HTTP_X_FORWARDED_SSL']\) \&\& \$_SERVER['HTTP_X_FORWARDED_SSL'] == 'on'\) ? 'https' : 'http'\) . ':\/\/' . \$_SERVER['HTTP_HOST'] . '\/'\);/g" /var/www/html/inc/header.inc.php
  68. fi
  69. # Apache config alteration - fix permanent redirect
  70. sed -r -i "s/\/ \[R,L\]/\/\$1 [R,L]/g" /etc/apache2/sites-available/000-default.conf
  71. # Crontab
  72. if [[ ! -v UNA_NO_CRONTAB ]]; then
  73. echo "* * * * * /usr/local/bin/php -c /var/www /var/www/html/periodic/cron.php 2>&1 | sed -e \"s/\(.*\)/[\`date\`] \1/\" >>/var/www/cron.log" > /var/www/crontab
  74. chown $UNA_USER:$UNA_USER /var/www/crontab
  75. crontab -u $UNA_USER /var/www/crontab
  76. rm -f /etc/cron.d/sendmail
  77. /etc/init.d/cron start
  78. fi
  79. #
  80. exec "$@"