4
0

entrypoint.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/sh
  2. ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime
  3. echo "$TZ" >/etc/timezone
  4. find /etc/php*/ -type f -name php.ini -exec sed -i -E \
  5. -e "\\#^;?date.timezone#s#^.*#date.timezone = $TZ#" \
  6. -e "\\#^;?post_max_size#s#^.*#post_max_size = 32M#" \
  7. -e "\\#^;?session.upload_progress.enabled#s#^.*#session.upload_progress.enabled = Off#" \
  8. -e "\\#^;?upload_max_filesize#s#^.*#upload_max_filesize = 32M#" {} \;
  9. while read -r config_path _; do
  10. if [ -f "$config_path" ]; then
  11. APACHE_CONFIG="$config_path"
  12. break
  13. fi
  14. done <<EOF
  15. /etc/apache2/sites-available/FreshRSS.Apache.conf # Debian
  16. /etc/apache2/conf.d/FreshRSS.Apache.conf # Alpine
  17. /etc/httpd/conf/conf.d/FreshRSS.Apache.conf # Arch
  18. EOF
  19. if [ -z "$APACHE_CONFIG" ]; then
  20. echo '❌ Apache configuration file not found!'
  21. exit 11
  22. fi
  23. if [ "$ENABLE_ACCESS_LOG" = "0" ]; then
  24. sed -E -i '/^[ \t]*CustomLog[ \t]/s/^/#/' "$APACHE_CONFIG"
  25. fi
  26. if [ -n "$LISTEN" ]; then
  27. sed -r -i "\\#^Listen#s#^.*#Listen $LISTEN#" "$APACHE_CONFIG"
  28. fi
  29. if [ -n "$TRUSTED_PROXY" ]; then
  30. if [ "$TRUSTED_PROXY" = "0" ]; then
  31. # Disable RemoteIPHeader and RemoteIPInternalProxy
  32. sed -r -i "/^\s*RemoteIP.*$/s/^/#/" "$APACHE_CONFIG"
  33. else
  34. # Custom list for RemoteIPInternalProxy
  35. sed -r -i "\\#^\s*RemoteIPInternalProxy#s#^.*#\tRemoteIPInternalProxy $TRUSTED_PROXY#" "$APACHE_CONFIG"
  36. fi
  37. fi
  38. if [ -n "$OIDC_ENABLED" ] && [ "$OIDC_ENABLED" -ne 0 ]; then
  39. # Default values
  40. export OIDC_SESSION_INACTIVITY_TIMEOUT="${OIDC_SESSION_INACTIVITY_TIMEOUT:-300}"
  41. export OIDC_SESSION_MAX_DURATION="${OIDC_SESSION_MAX_DURATION:-27200}"
  42. export OIDC_SESSION_TYPE="${OIDC_SESSION_TYPE:-server-cache}"
  43. export OIDC_DEFAULT_URL="${OIDC_DEFAULT_URL:-/i/}"
  44. # Debian
  45. (which a2enmod >/dev/null && a2enmod -q auth_openidc) ||
  46. # Alpine
  47. (mv /etc/apache2/conf.d/mod-auth-openidc.conf.bak /etc/apache2/conf.d/mod-auth-openidc.conf && echo 'Enabling module auth_openidc.') ||
  48. # Misc.
  49. (echo '❌ Failed to enable auth_openidc module!' && exit 12)
  50. if [ -n "$OIDC_SCOPES" ]; then
  51. # Compatibility with : as separator instead of space
  52. OIDC_SCOPES=$(echo "$OIDC_SCOPES" | tr ':' ' ')
  53. export OIDC_SCOPES
  54. fi
  55. fi
  56. if [ -n "$CRON_MIN" ]; then
  57. awk -v RS='\0' '!/^(FRESHRSS_INSTALL|FRESHRSS_USER|HOME|PATH|PWD|SHLVL|TERM|_)=/ {gsub("\047", "\047\\\047\047"); print "export \047" $0 "\047"}' /proc/self/environ >/var/www/FreshRSS/Docker/env.txt
  58. sed </etc/crontab.freshrss.default \
  59. -r "s#^[^ ]+ #$CRON_MIN #" | crontab -
  60. fi
  61. ./cli/access-permissions.sh --only-userdirs
  62. php -f ./cli/prepare.php >/dev/null
  63. if [ -n "$FRESHRSS_INSTALL" ]; then
  64. # shellcheck disable=SC2046
  65. php -f ./cli/do-install.php -- \
  66. $(eval "echo \"$FRESHRSS_INSTALL\"" | sed -r 's/[\r\n]+/\n/g' | paste -s -)
  67. EXITCODE=$?
  68. if [ $EXITCODE -eq 3 ]; then
  69. echo 'ℹ️ FreshRSS already installed; no change performed.'
  70. elif [ $EXITCODE -eq 0 ]; then
  71. echo '✅ FreshRSS successfully installed.'
  72. else
  73. echo '❌ FreshRSS error during installation!'
  74. exit $EXITCODE
  75. fi
  76. fi
  77. if [ -n "$FRESHRSS_USER" ]; then
  78. # shellcheck disable=SC2046
  79. php -f ./cli/create-user.php -- \
  80. $(eval "echo \"$FRESHRSS_USER\"" | sed -r 's/[\r\n]+/\n/g' | paste -s -)
  81. EXITCODE=$?
  82. if [ $EXITCODE -eq 3 ]; then
  83. echo 'ℹ️ FreshRSS user already exists; no change performed.'
  84. elif [ $EXITCODE -eq 0 ]; then
  85. echo '✅ FreshRSS user successfully created.'
  86. ./cli/list-users.php | xargs -n1 ./cli/actualize-user.php --user
  87. else
  88. echo '❌ FreshRSS error during the creation of a user!'
  89. exit $EXITCODE
  90. fi
  91. fi
  92. # Fix permissions of data added by prepare.php as well as a potential
  93. # installation/user setup
  94. ./cli/access-permissions.sh --only-userdirs
  95. exec "$@"