File: //var/packages/WordPress/scripts/script_customized
#!/bin/bash
# Copyright (c) 2000-2017 Synology Inc. All rights reserved.
CustomChangeDBUserInfo()
{
local path="$1"
local db_user="$2"
local db_pass="$(echo "$3" | EscapeStandardSedStringOnPHP )"
if [ -f "$path/$CONF_FILE" ]; then
sed -i "s/define('DB_USER'.*/define('DB_USER','$db_user');/g" "$path/$CONF_FILE"
sed -i "s/define('DB_PASSWORD'.*/define('DB_PASSWORD','$db_pass');/g" "$path/$CONF_FILE"
fi
}
WriteBackupInfo() {
echo "path=$(GetBackupPath)" > "$INFO_FILE"
echo "version=$SYNOPKG_OLD_PKGVER" >> "$INFO_FILE"
}
EscapeOldBackup()
{
# Escape old backup steps
echo "#!/bin/bash" > "/var/packages/WordPress/scripts/preuninst"
echo "exit 0" >> "/var/packages/WordPress/scripts/preuninst"
}
RemoveObsoletePlugins()
{
local obsoletePlugins=("insert-from-photostation" "syno_ps_tinymce" "photostation")
for plugin in ${obsoletePlugins[*]}; do
local plugin_folder_path="${WEBSITE_ROOT}/wp-content/plugins/$plugin"
if [ ! -e "${plugin_folder_path}" ]; then
continue
fi
# Remove obsolete plugin
rm -r "${plugin_folder_path}"
if [ $? -ne "0" ]; then
echo "[WordPress] Fail to delete plugin ($plugin)"
else
echo "[WordPress] plugin ($plugin) deleted successfully"
fi
done
}
CustomPreupgrade()
{
local old_build_number=$(echo "$SYNOPKG_OLD_PKGVER" | cut -d- -f2)
if [ "$old_build_number" -le "0140" ]; then
CustomBackupData
EscapeOldBackup
WriteBackupInfo
fi
}
CustomBackupData()
{
local prev_website_root="$(GetWebsiteRootOfPreviousVersion)"
ClearBackupDir
local backup_web_dir="$(GetBackupWebDir)"
cp -a "${prev_website_root}/." "${backup_web_dir}/"
pushd "${backup_web_dir}" > /dev/null
rm -rf "readme.html" "xmlrpc.php" "license.txt"
rm -rf "wp-content/cache" "wp-content/plugins/widgets"
popd > /dev/null
}
SetSecurityKeys()
{
local security_key="AUTH_KEY SECURE_AUTH_KEY LOGGED_IN_KEY NONCE_KEY AUTH_SALT SECURE_AUTH_SALT LOGGED_IN_SALT NONCE_SALT"
local rand_key
for key_name in $security_key; do
rand_key=$(env RANDFILE=/tmp/.rnd openssl rand -base64 48)
sed -i "/'$key_name'/c\\define('$key_name','$rand_key');" "$WEBSITE_ROOT/$CONF_FILE"
done
}
UpdateWpConfig()
{
local wordpress_config="$WEBSITE_ROOT/$CONF_FILE"
if [ ! -f "$wordpress_config" ]; then
return
fi
# <WordPress> #357 fix workaround for config migrated from DSM6.x
sed -i "s/\/var\/services\/web\/wordpress/\/var\/services\/web_packages\/wordpress/g" "$wordpress_config"
local syno_wp_config="syno-wp-config-custom.php"
if grep -q $syno_wp_config "$wordpress_config"; then
return
fi
# remove configs after wordpress EOF comments
sed -i '/Happy publishing/,$d' "$wordpress_config"
sed -i '/Happy blogging/,$d' "$wordpress_config"
grep $syno_wp_config $SYNOPKG_PKGDEST/src/wp-config-sample.php >> "$wordpress_config"
}
CustomRestoreUpgrade()
{
local backup_web_dir="$BACKUP_WEB_PATH"
if [ ! -e "$backup_web_dir" ]; then
backup_web_dir="$BACKUP_PATH/$PKG_DIR"
fi
# Clear default plugin files extracted to WEBSITE_ROOT, to keep the akismet installation identical after the restore/upgrade
rm -rf "$WEBSITE_ROOT/wp-content/plugins/akismet"
# remove un-necessary xml-rpc plugin
rm -rf "$backup_web_dir/wp-content/mu-plugins/disable-xml-rpc-pingback.php"
local restore_item_list="$CONF_FILE wp-content wp-images .htaccess robots.txt"
for item in $restore_item_list; do
if [ -e "$backup_web_dir/$item" ]; then
mkdir -p "${WEBSITE_ROOT}/$(dirname "$item")"
cp -arf "$backup_web_dir/$item" "${WEBSITE_ROOT}/$(dirname "$item")"
fi
done
RemoveObsoletePlugins
# Remove html files which cause DOM XSS if existed
rm -f "$WEBSITE_ROOT/wp-content/themes/twenty*/genericons/example.html"
rm -f "$WEBSITE_ROOT/wp-config-sample.php"
UpdateWpConfig
# turn on all php extensions
a=$(/var/packages/WebStation/target/tools/synowebservice service get-service-id WordPress wordpress)
if [ $? -eq 0 ]; then
/var/packages/WebStation/target/tools/synowebservice service enable-all-php-extensions "$a"
else
echo "unable to get web service ID to enable all php extensions"
fi
}
CustomMoveLegacyBackupWebDir()
{
local src_backup_path="$1"
local web_dir=$(GetBackupWebDir)
# there was two backup folders for web content, merge them into one
mkdir -p "${web_dir}"
local backup_folders="$src_backup_path/$PKG_DIR $src_backup_path"
for backup_folder in $backup_folders; do
for item in `ls -A ${backup_folder}/ | grep -v "backup_web_dir"`; do
mv "${backup_folder}/${item}" "${web_dir}/"
done
done
rm -rf "${web_dir}/${PKG_DIR}";
}
CustomUseUnixSocket()
{
sed -i "s|'DB_HOST',.*|'DB_HOST','localhost:$UNIX_SOCKET');|g" "$WEBSITE_ROOT/$CONF_FILE"
}
CustomSetInit()
{
if ! CustomHasRunWebsiteSetup "$WEBSITE_ROOT"; then
mv "$WEBSITE_ROOT/wp-config-sample.php" "$WEBSITE_ROOT/$CONF_FILE"
local pass_modify=$(echo "$DB_USER_PASS" | EscapeStandardSedStringOnPHP )
sed -i "s|'DB_NAME',.*|'DB_NAME','$DB_NAME');|g" "$WEBSITE_ROOT/$CONF_FILE"
sed -i "s|'DB_USER',.*|'DB_USER','$DB_USER');|g" "$WEBSITE_ROOT/$CONF_FILE"
sed -i "s/'DB_PASSWORD',.*/'DB_PASSWORD','$pass_modify');/g" "$WEBSITE_ROOT/$CONF_FILE"
SetSecurityKeys
fi
}