HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
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
}

CustomRemove()
{
	rm -rf "/var/packages/.has_run_wp.conf"
}

BackupWPConf()
{
	local backup_prefix=$(CustomGetBackupPrefix)
	[ -d "$backup_prefix" ] || mkdir -p "$backup_prefix"
	if [ -s "$WEBSITE_ROOT/$CONF_FILE" ]; then
		cp -a "$WEBSITE_ROOT/$CONF_FILE" "$backup_prefix/"
	fi
}


WriteBackupInfo() {
	echo "path=$(CustomGetBackupPrefix)" > "$INFO_FILE"
	echo "version=$SYNOPKG_OLD_PKGVER" >> "$INFO_FILE"
}

EscapeOldBackup()
{
	# Remove nginx config
	rm -f "$NGINX_CONF_PATH/$PKG_NGINX_CONFIG"

	# 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="$BACKUP_PATH/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 backup_prefix=$(CustomGetBackupPrefix)
	[ -d "$backup_prefix" ] || mkdir -p "$backup_prefix"

	local need_backup="$CONF_FILE wp-content wp-images .htaccess.syno robots.txt index.php wp-includes/languages"
	for item in $need_backup; do
		if [ -e "$WEBSITE_ROOT/$item" ]; then
			mkdir -p "$backup_prefix/$(dirname "$item")"
			cp -a "$WEBSITE_ROOT/$item" "$backup_prefix/$(dirname "$item")"
	   fi
	done
	rm -rf "$backup_prefix/wp-content/cache" "$backup_prefix/wp-content/plugins/widgets"

	cp -a "$WEBSITE_ROOT" "$backup_prefix"
	pushd "$backup_prefix/$PKG_DIR" > /dev/null
	rm -rf "wp-"* "readme.html" "wp.php" "xmlrpc.php" "license.txt"
	popd > /dev/null
}

CustomSetWebsiteRoot()
{
	mv "$SYNOPKG_PKGDEST/src" "$WEBSITE_ROOT"
}

HideCoreUpgrade()
{
	if [ ! -s "$WEBSITE_ROOT/$CONF_FILE" ]; then
		exit 1
	fi
	if ! grep -q "AUTOMATIC_UPDATER_DISABLED" "$WEBSITE_ROOT/$CONF_FILE"; then
		echo "define( 'AUTOMATIC_UPDATER_DISABLED', true );" >> "$WEBSITE_ROOT/$CONF_FILE"
	fi
	if ! grep -q "pre_site_transient_update_core" "$WEBSITE_ROOT/$CONF_FILE"; then
		echo "add_filter('pre_site_transient_update_core','__return_null');" >> "$WEBSITE_ROOT/$CONF_FILE"
	fi
}

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
}

CustomRestoreUpgrade()
{
	if [ -d "$BACKUP_PATH/$PKG_DIR" ]; then
		cp -a "$BACKUP_PATH/$PKG_DIR" "$(dirname "$WEBSITE_ROOT")"
		rm -rf "$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"

	RemoveObsoletePlugins

	cp -a "$BACKUP_PATH"/* "$WEBSITE_ROOT"
	cp -a "$BACKUP_PATH/.htaccess.syno" "$WEBSITE_ROOT"

	# 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"
	HideCoreUpgrade
	# Bug 148 after upgrading, able to install from https
	sed -i "s#if (\$_SERVER\[\"SERVER_PORT\"\] != \"80\")#if (\$_SERVER\[\"SERVER_PORT\"\] != \"80\" and \$_SERVER\[\"SERVER_PORT\"\] != \"443\")#g" "$WEBSITE_ROOT/$CONF_FILE"
	# remove synology custom setting in wp-config.php
	sed -i '/pageURL/,/Synology Inc/d' "$WEBSITE_ROOT/$CONF_FILE"
	sed -i '/syno-misc\.php/d' "$WEBSITE_ROOT/$CONF_FILE"


	RemoveHandler
}

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
}

CustomStart()
{
	local ini_source="/var/packages/WordPress/target/synology_added/etc/SYNO.SDS.WordPress.ini"
	local ini_dest="/usr/local/etc/php74/cli/conf.d/"
	cp $ini_source $ini_dest
	restart pkg-WebStation-php74
}

CustomStop()
{
	local ini_dest="/usr/local/etc/php74/cli/conf.d/"
	rm "$ini_dest/SYNO.SDS.WordPress.ini"

	restart pkg-WebStation-php74
}