From c4dc8897f9ffe60ab33368be61622d51e3901269 Mon Sep 17 00:00:00 2001 From: xZero707 Date: Tue, 9 Feb 2021 20:38:03 +0100 Subject: [PATCH] Add support for WP reinstallation based on WP_VERSION env variable. Refactor code --- rootfs/etc/cont-init.d/10-init-wordpress | 49 ++++++++++++++++-------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/rootfs/etc/cont-init.d/10-init-wordpress b/rootfs/etc/cont-init.d/10-init-wordpress index 25315a8..86fc825 100644 --- a/rootfs/etc/cont-init.d/10-init-wordpress +++ b/rootfs/etc/cont-init.d/10-init-wordpress @@ -1,26 +1,43 @@ #!/usr/bin/with-contenv bash -set -e - DISABLE_WP_UPDATES="${ENFORCE_DISABLE_WP_UPDATES:-true}" # Designed to replace original, overcomplicated entrypoint script from official wordpress docker repository # Why not use already available tools instead?! -function wp() { - # Running as root in container is OK as long as all security implications are observed and maintained - /usr/local/bin/wp --allow-root "$@" +function disableUpdatesPatch() { + if [ "${DISABLE_WP_UPDATES}" != "false" ]; then + echo "> Disabling WordPress updates..." + patch /var/www/html/wp-admin/update-core.php Deleting WordPress installation (core files)" + + # Instead of one-line find, we're taking a bit conservative approach and separating file and directory removal + # This is to ensure that this script never runs on unintended set of files as it's data loss risk + rm -rf "/var/www/${WEB_ROOT}/"{wp-includes,wp-admin} + rm -rf "/var/www/${WEB_ROOT}/"{.htaccess,index.php,license.txt,readme.html,wp-activate.php,wp-blog-header.php,wp-comments-post.php,wp-config-sample.php,wp-config.php,wp-cron.php,wp-links-opml.php,wp-load.php,wp-login.php,wp-mail.php,wp-settings.php,wp-signup.php,wp-trackback.php,xmlrpc.php} } echo "> Verifying 'WordPress ${WP_VERSION}' installation..." -if wp core version; -then - echo "> Identified 'WordPress ${WP_VERSION}'" -else - echo "> Downloading 'WordPress ${WP_VERSION}'..." - wp core download --locale="${WP_LOCALE}" --version="${WP_VERSION}" +WP_INSTALLED_VERSION="$(wp core version)" - if [ "${DISABLE_WP_UPDATES}" != "false" ]; then - echo "> Disabling WordPress updates..." - patch /var/www/html/wp-admin/update-core.php < /etc/wp-mods/wp-admin/update-core.php.patch - fi -fi \ No newline at end of file +if [ -z "${WP_INSTALLED_VERSION}" ]; then + echo "> WordPress is not present" + echo "> Downloading 'WordPress ${WP_VERSION}'..." + deleteWordPress + wp core download --locale="${WP_LOCALE}" --version="${WP_VERSION}" + disableUpdatesPatch +elif [ "${WP_INSTALLED_VERSION}" != "${WP_VERSION}" ]; then + echo "> WordPress version mismatch" + echo "> Expected version: ${WP_VERSION}" + echo "> Detected version: ${WP_INSTALLED_VERSION}" + echo "> Scraping current files" + deleteWordPress + echo "> Downloading WordPress version '${WP_VERSION}'..." + wp core download --locale="${WP_LOCALE}" --version="${WP_VERSION}" + disableUpdatesPatch +else + echo "> Identified 'WordPress ${WP_VERSION}'" +fi