mirror of
https://github.com/myvesta/vesta
synced 2025-07-05 12:36:23 -07:00
Create v-fix-wp-core
This commit is contained in:
parent
2fe4ce2ae4
commit
819450ca5c
1 changed files with 90 additions and 0 deletions
90
bin/v-fix-wp-core
Normal file
90
bin/v-fix-wp-core
Normal file
|
@ -0,0 +1,90 @@
|
|||
#!/bin/bash
|
||||
# info: fix compromised wp-admin and wp-includes
|
||||
# options: DOMAIN [CACHE_DIR]
|
||||
#
|
||||
# Replaces wp-admin and wp-includes with clean copies that match
|
||||
# the WordPress core version detected on the site.
|
||||
#
|
||||
# Example:
|
||||
# v-fix-wp-core example.com
|
||||
# v-fix-wp-core example.com /srv/wp-cache
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Variable & Function #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Arguments
|
||||
DOMAIN="$1"
|
||||
CACHE_DIR="${2-/srv/wp-cache}" # default cache location
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
check_args '1' "$#" 'DOMAIN [CACHE_DIR]'
|
||||
is_format_valid 'domain'
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
TMP_DIR="$(mktemp -d /tmp/wpfix.XXXXXX)" # temp workspace
|
||||
trap 'rm -rf "$TMP_DIR"' EXIT
|
||||
|
||||
# 1etermine WP version
|
||||
WP_VERSION="$(v-run-wp-cli "$DOMAIN" core version | tr -d '[:space:]')"
|
||||
check_result $? "cannot detect WP version" > /dev/null
|
||||
if [ -z "$WP_VERSION" ]; then
|
||||
check_result 1 "empty WP version string"
|
||||
fi
|
||||
echo "Detected WordPress version $WP_VERSION"
|
||||
|
||||
# 2ind site owner and path
|
||||
USER="$(v-search-domain-owner "$DOMAIN")"
|
||||
check_result $? "cannot find domain owner" > /dev/null
|
||||
SITE_PATH="/home/$USER/web/$DOMAIN/public_html"
|
||||
if [ ! -d "$SITE_PATH" ]; then
|
||||
check_result 1 "site path $SITE_PATH does not exist"
|
||||
fi
|
||||
|
||||
# ensure cached core is present
|
||||
CACHE_PATH="$CACHE_DIR/$WP_VERSION"
|
||||
if [ ! -d "$CACHE_PATH/wp-admin" ] || [ ! -d "$CACHE_PATH/wp-includes" ]; then
|
||||
echo "Cache for $WP_VERSION missing, downloading ZIP..."
|
||||
|
||||
mkdir -p "$CACHE_PATH"
|
||||
ZIP_URL="https://wordpress.org/wordpress-${WP_VERSION}.zip"
|
||||
ZIP_FILE="$TMP_DIR/wp.zip"
|
||||
|
||||
curl -fSL "$ZIP_URL" -o "$ZIP_FILE"
|
||||
check_result $? "download failed" > /dev/null
|
||||
|
||||
unzip -q "$ZIP_FILE" -d "$TMP_DIR"
|
||||
check_result $? "unzip failed" > /dev/null
|
||||
|
||||
mv "$TMP_DIR/wordpress/wp-admin" "$CACHE_PATH/"
|
||||
mv "$TMP_DIR/wordpress/wp-includes" "$CACHE_PATH/"
|
||||
fi
|
||||
|
||||
# backup current core folders
|
||||
TIMESTAMP="$(date +%Y%m%d%H%M%S)"
|
||||
BACKUP_DIR="$SITE_PATH/backup-core-$TIMESTAMP"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
mv "$SITE_PATH/wp-admin" "$BACKUP_DIR/"
|
||||
mv "$SITE_PATH/wp-includes" "$BACKUP_DIR/"
|
||||
check_result $? "backup failed" > /dev/null
|
||||
echo "Old core folders moved to $BACKUP_DIR"
|
||||
|
||||
# deploy clean core
|
||||
rsync -a --delete "$CACHE_PATH/wp-admin/" "$SITE_PATH/wp-admin/"
|
||||
rsync -a --delete "$CACHE_PATH/wp-includes/" "$SITE_PATH/wp-includes/"
|
||||
check_result $? "rsync failed" > /dev/null
|
||||
|
||||
# fix permissions
|
||||
v-fix-website-permissions $DOMAIN
|
||||
|
||||
echo "Done, wp-admin and wp-includes replaced for $DOMAIN"
|
||||
exit
|
Loading…
Add table
Add a link
Reference in a new issue