HEX
Server: Apache/2.4.63 (Unix)
System: Linux TOMS-220NAS 4.4.302+ #86009 SMP Wed Nov 26 18:19:17 CST 2025 x86_64
User: flavio87 (1026)
PHP: 8.3.27
Disabled: NONE
Upload Files
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
}