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/WIZARD_UIFILES/install_uifile_csy.sh
#!/bin/bash

# define main function
MAIN_INSTALL="main_install"
MAIN_UPGRADE="main_upgrade"
MAIN_UNINST="main_uninst"
# define each page's name
PAGE_MARIADB5="page_mariadb5"
PAGE_MARIADB10="page_mariadb10"
PAGE_RESTORE="page_restore"
PAGE_UPGRADE_RESTRICTED="page_upgrade_restricted"
PAGE_DB="page_db"
PAGE_UNINST_DB="page_uninst_db"
PAGE_CONFIRM="page_confirm"
PAGE_CONFIRM_UNINST="page_confirm_uninst"
REQUIRE_DB_SETUP=true
DEFAULT="enu"
# set out file name
OUTPUT_INSTALL="install_uifile"
OUTPUT_UPGRADE="upgrade_uifile"
OUTPUT_UNINST="uninstall_uifile"
INIT_DB_NAME="" # need to be overwritten
INIT_DB_USER="" # need to be overwritten
INFO_FILE="" # need to be overwritten
BACKUP_PATH="" # need to be overwritten
BACKUP_WEB_PATH="" # need to be overwritten
# here to define what page is necessary for each stage: install, upgrade, and uninstall
PAGES_INST="$PAGE_MARIADB5 $PAGE_RESTORE $PAGE_MARIADB10 $PAGE_DB"
PAGES_UPGRADE="$PAGE_UPGRADE_RESTRICTED $PAGE_MARIADB5 $PAGE_MARIADB10 $PAGE_DB $PAGE_CONFIRM"
PAGES_UNINST="$PAGE_UNINST_DB $PAGE_CONFIRM_UNINST"

MainCreate()
{
	local output="$1"
	local pages="$2"
	local main_function="$3"

	if IsWizardEmpty; then
		return
	fi

	for dir in lang/*; do
		local lan=$(basename "$dir")
		local wizard_script="${output}_${lan}.sh"
		cat "wizard_common" > "${wizard_script}"
		cat "lang/$lan" "wizard_customized" $pages "$main_function" >> "${wizard_script}"
		CustomWizCreate "${wizard_script}"
	done
	chmod +x "${output}"*.sh
	cp -a "${output}_${DEFAULT}.sh" "${output}.sh"
}

IsUpgradable()
{
	true
}

IsWizardEmpty()
{
	if $REQUIRE_DB_SETUP; then
		false; return
	fi
	true; return
}

NeedConfirmVirtualHost()
{
	local version="$1"
	if [ ! -z "$version" ] && [ "$version" -lt "1000" ]; then
		local websetted=$(/var/packages/WebStation/target/tools/synowebservice vhost is-web-share-as-vhost-root; echo $?)
		return $websetted
	fi

	return 1

}

CustomHasRunWebsiteSetup()
{
	local path="$1"
	[ -s "$path/$CONF_FILE" ]
}

CustomWizCreate()
{
	:
}

CustomMainInstall()
{
	:
}

CustomGetValueFromMetaFile()
{
	local key="$1"
	local backup_info="/var/packages/.$PKG_DIR.conf"
	local syno_conf="/var/packages/$PKG_NAME/synology.conf"
	local record_file=""

	if [ -s "$INFO_FILE" ]; then
		record_file="$INFO_FILE"
	elif [ -s "$backup_info" ]; then
		record_file="$backup_info"
	elif [ -s "$syno_conf" ]; then
		record_file="$syno_conf"
	else
		return
	fi
	get_key_value "$record_file" "$key"
}

GetPreviousPkgBuildNumber()
{
	local old_pkg_ver="$SYNOPKG_OLD_PKGVER"
	if [ -z "${old_pkg_ver}" ]; then
		# SYNOPKG_OLD_PKGVER does not exist in un-install stage of upgrade
		old_pkg_ver="$SYNOPKG_PKGVER"
	fi

	local old_build_number=$(echo "$old_pkg_ver" | cut -d- -f2)
	echo "$old_build_number"
}

IsPreviousVersionBelowDSM7()
{
	[ "$(GetPreviousPkgBuildNumber)" -lt "1000" ]
}

GetWebsiteRootOfPreviousVersion()
{
	local prev_website_root="$WEBSITE_ROOT"
	if IsPreviousVersionBelowDSM7; then
		prev_website_root=$(echo $WEBSITE_ROOT | sed "s/web_packages/web/g")
	fi

	echo "${prev_website_root}";
}

GetBackupPath()
{
	local backup_prefix="${SYNOPKG_PKGDEST_VOL}/@appdata/$PKG_NAME/.backup"
	echo "$backup_prefix"
}

GetBackupWebDir()
{
	local backup_web_dir="$(GetBackupPath)/backup_web_dir"
	echo "$backup_web_dir"
}

ClearBackupDir()
{
	local backup_path="$(GetBackupPath)"
	local backup_web_dir="$(GetBackupWebDir)"
	rm -rf "$backup_path"
	mkdir -p "$backup_web_dir"
}

InitBackupPath()
{
	BACKUP_PATH="$(GetBackupPath)"
	BACKUP_WEB_PATH="$(GetBackupWebDir)"
}

GetDefaultDSM7LegacyDotPackagePrefix()
{
	local dsm7_legacy_backup_path="/$(readlink /var/services/web_packages | cut -d/ -f2)/@appdata/$PKG_NAME/.$PKG_DIR"
	echo "${dsm7_legacy_backup_path}"
}

GetCustomDSM7LegacyBackupPrefix()
{
	GetDefaultDSM7LegacyDotPackagePrefix
}

GetDefaultDSM6LegacyBackupPrefix()
{
	local dsm6_legacy_backup_path="/$(readlink /var/services/web_packages | cut -d/ -f2)/@appstore/.$PKG_DIR"
	echo "${dsm6_legacy_backup_path}"
}

GetCustomDSM6LegacyBackupPrefix()
{
	GetDefaultDSM6LegacyBackupPrefix
}

GetLegacyBackupDataPrefix()
{
	local dsm6_legacy_backup_path="$(GetCustomDSM6LegacyBackupPrefix)"
	local dsm7_legacy_backup_path="$(GetCustomDSM7LegacyBackupPrefix)"

	local legacy_path=""
	if [ -e "$dsm6_legacy_backup_path" ]; then
		legacy_path="$dsm6_legacy_backup_path"
	fi
	if [ -e "$dsm7_legacy_backup_path" ]; then
		legacy_path="$dsm7_legacy_backup_path"
	fi

	echo "$legacy_path"
}

# we define pages in fuction not in global variables,
# because functions in wizard steps will be merged after calling MainCreate.
CustomSetPages()
{
	if $REQUIRE_DB_SETUP; then
		NEW_INSTALL_PAGES="$(PageM10),$(PageDB)"
		RESTORE_PAGES="$(PageRestore),$(PageM10),$(PageDB)"
		MIGRATE_PAGES="$(PageM5),$(PageRestore),$(PageM10),$(PageDB)"
		UNINSTALL_PAGES="$(PageUninstDB),$(PageConfirmUninstDataLoss)"
	else
		NEW_INSTALL_PAGES=""
		RESTORE_PAGES="$(PageRestore)"
		MIGRATE_PAGES="$(PageRestore)"
		UNINSTALL_PAGES=""
	fi
}

CustomParseDBConf()
{
	:
}

CustomGetDBName()
{
	:
}

CustomGetDBUser()
{
	:
}

CustomGetDBPass()
{
	:
}

quote_json() {
	sed -e 's|\\|\\\\|g' -e 's|\"|\\\"|g'
}

wizard_db_settings="Nastavit databázi WordPress"
wizard_db_name_desc="Zadejte název databáze WordPress. "
wizard_db_name_label="Název databáze"
wizard_m10_desc="Chcete-li pokračovat v nastavení databáze WordPress, zadejte přihlašovací údaje správce pro databázi MariaDB 10."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
wizard_set_db_desc="Chcete-li použít stávající nebo nová data, vytvořte nový vyhrazený účet databáze pro aplikaci WordPress."
wizard_set_data_title="Nastavit WordPress"
wizard_found_backup="Nekompatibilní vyhrazená data balíčku"
wizard_warn_data_backup_deprecated="Vyhrazená data tohoto balíčku ve vašem systému nejsou kompatibilní s touto verzí.<br>Pokud tuto verzi nainstalujete, vyhrazená data se odstraní.<br>Pokud chcete vyhrazená data zachovat, nainstalujte stejnou verzi balíčku jako v předchozí instalaci. (Předchozí verze: {prev_version})"
wizard_db_user_account_desc="Účet uživatele databáze"
wizard_db_user_password_desc="Heslo uživatele databáze"
wizard_migrate_note="Nejnovější verze aplikace WordPress podporuje pouze databázi MariaDB 10.<br>Systém nalezl stávající databázi MariaDB 5.<br>V následujícím kroku bude vaše databáze migrována z verze MariaDB 5 do verze MariaDB 10.<br><br>Chcete-li pokračovat v instalaci, zadejte přihlašovací údaje správce pro databázi MariaDB 5."
wizard_migrate_title="Migrace databáze WordPress"
wizard_remove_msql_title="Odebrat databázi WordPress"
wizard_remove_msql_desc="Pokud odeberete databázi WordPress, odstraní se veškerá data."
wizard_msql_password_desc_remove="Databázi WordPress bude možné odebrat po zadání přihlašovacích údajů správce databáze."
wizard_admin_acc="Účet"
wizard_admin_pass="Heslo"
wizard_confirm_page_title="Důležité"
wizard_confirm_check="Přečetl(a) jsem si a chápu výše uvedené upozornění."
wizard_database="WordPress databáze"
wizard_upload_data="Data odeslána do WordPress"
wizard_config_data="Konfigurace v WordPress"
wizard_msql_password_desc="Zadejte heslo správce databáze."
wizard_unable_to_upgrade_title="Na tuto verzi nelze aktualizovat"
wizard_upgrade_from_prev_release_required_desc="Před aktualizací balíčku na tuto verzi ho aktualizujte na <a href=\"{1}\" target=\"_blank\">předchozí verzi</a>."
wizard_data_will_be_lost_after_uninstallation_warning="Odinstalováním balíčku budou všechna relevantní data smazána."
wizard_i_know_the_data_will_be_removed="Beru na vědomí, že všechna relevantní data budou smazána."
wizard_vhost_setting_warning="Systém zjistil ve službě Web Station alespoň jednoho virtuálního hostitele, jehož kořenový adresář je nastaven na složku „web“. Po aktualizaci systému bude složka virtuálního hostitele WordPress přesunuta ze složky „web“ do složky „web_packages“; z tohoto důvodu již nebude možné přistupovat do služby WordPress prostřednictvím tohoto virtuálního hostitele.<br><br>Chcete-li po aktualizaci používat stejný název domény, přejděte do části Web Station > Portál webových služeb a virtuálního hostitele odstraňte.<br><br>Virtuální hostitel WordPress si zachová oprávnění pro přístup do skupiny HTTP i po přesunutí své složky. Pokud uživatel potřebuje přístup do složky virtuálního hostitele WordPress, musíte přidat jeho uživatelský účet do skupiny HTTP."
#!/bin/bash

PKG_NAME="WordPress"
PKG_DIR="wordpress"
WEBSITE_ROOT="/var/services/web_packages/$PKG_DIR"
INFO_FILE="/usr/syno/etc/packages/$PKG_NAME/$PKG_DIR.conf"
CONF_FILE="wp-config.php"
MIGRATE_DB_VERSION="0134"
INIT_DB_NAME="wordpress"
INIT_DB_USER="wordpress_user"

CustomMainInstall()
{
	if [ -d "$BACKUP_PATH" ]; then
		GEN_WP_CONF "$BACKUP_PATH"
	fi
}

GEN_WP_CONF()
{
	local path="$1"
	# before 0122, no version value record
	local version=$(get_key_value "$INFO_FILE" "version")
	if [ ! -s "$path/$CONF_FILE" ] && [ -z "$version" ]; then
		# We need to add back the wp-config.php
		echo "$WP_CONF_FILE" | openssl enc -base64 -d > "$path/$CONF_FILE"
		sed -i "s|'DB_NAME',.*|'DB_NAME','wordpressblog');|g" "$path/$CONF_FILE"
		sed -i "s|'DB_USER',.*|'DB_USER','wordpress');|g" "$path/$CONF_FILE"
		sed -i "s|'DB_PASSWORD',.*|'DB_PASSWORD','');|g" "$path/$CONF_FILE"
	fi
}

CustomParseDBConf()
{
	local path="$1"
	local db_info="$2"
	local grep_info="$3"
	local info_output=""

	if [ -s "$path/$CONF_FILE" ]; then
		info_output=$(grep "$grep_info" "$path/$CONF_FILE" | cut -d\' -f4 | UnQuotePHP)
	fi

	if [ -z "$info_output" ];then
		info_output="$(CustomGetValueFromMetaFile "$db_info")"
	fi

	echo "$info_output"
}

CustomGetDBName()
{
	local db_name=$(CustomParseDBConf "$1" "db_name" "DB_NAME")
	if [ -z "$db_name" ]; then
		db_name="$pkgwizard_db_name"
	fi
	echo "$db_name"
}

CustomGetDBUser()
{
	local db_user=$(CustomParseDBConf "$1" "db_user" "DB_USER")
	if [ -z "$db_user" ]; then
		db_user="$pkgwizard_db_user_account"
	fi
	echo "$db_user"

}

CustomGetDBPass()
{
	CustomParseDBConf "$1" "db_pass" "DB_PASSWORD"
}

UnQuotePHP()
{
	sed -e "s|\\\\'|'|g" -e 's|\\\\|\\|g'
}
PageM5()
{
cat << EOF
{
	"step_title": "$wizard_migrate_title",
	"items": [{
		"type": "textfield",
		"desc": "$wizard_migrate_note",
		"subitems": [{
			"key": "wizard_m5_acc",
			"desc": "$wizard_admin_acc",
			"defaultValue": "root",
			"validator": {
				"allowBlank": false
			}
		}]
	}, {
		"type": "password",
		"subitems": [{
			"indent": 1,
			"key": "wizard_m5_pass",
			"desc": "$wizard_admin_pass"
		}]
	}]
}
EOF
}

PageRestore()
{
	local prev_version="unknown"
	if [ -n "${RESERVED_DATA_PKG_VER}" ]; then
		prev_version="${RESERVED_DATA_PKG_VER}"
	fi
	local reserved_data_deprecate_msg=$(echo $wizard_warn_data_backup_deprecated | sed "s/{prev_version}/$prev_version/g")
cat << EOF
{
	"step_title": "$wizard_found_backup",
	"items": [{
		"desc": "$reserved_data_deprecate_msg"
	}]
}
EOF
}

PageM10()
{
cat << EOF
{
	"step_title": "$wizard_set_data_title",
	"items": [{
		"type": "textfield",
		"desc": "$wizard_m10_desc",
		"subitems": [{
			"key": "wizard_m10_acc",
			"desc": "$wizard_admin_acc",
			"defaultValue": "root",
			"validator": {
				"allowBlank": false
			}
		}]
	}, {
		"type": "password",
		"subitems": [{
			"indent": 1,
			"key": "wizard_m10_pass",
			"desc": "$wizard_admin_pass"
		}]
	}]
}
EOF
}
FindObj()
{
cat << EOF

for (i = 0; i < arguments[0].items.length; i++) {
	item = arguments[0].items.items[i]
	if (\"${1}\" == item.itemId){
		$2 = arguments[0].items.items[i];
		break;
	}
}
EOF
}

Activate()
{
cat << EOF
	"activeate": "{
		new_db_textfield = null;
		db_user_textfield = null;

		$(FindObj "pkgwizard_db_name" "new_db_textfield")
		$(FindObj "pkgwizard_db_user_account" "db_user_textfield")

		if (new_db_textfield !== null) {
			new_db_textfield.setValue(\"$INIT_DB_NAME\");
		}
		if (db_user_textfield !== null) {
			db_user_textfield.setValue(\"$INIT_DB_USER\");
		}
	}",
EOF
}

Deactivate()
{
cat << EOF
	"deactivate": "{
		page = arguments[0];
		if (page.headline == \"$wizard_db_settings\" && arguments[2] == 'next') {
			m10username = null;
			m10password = null;
			$(FindObj "pkgwizard_db_user_account" "m10username")
			$(FindObj "pkgwizard_db_user_password" "m10password")
			wizard = page.ownerCt.ownerCt;
			if (wizard.is_valid_password) { // a field to check if password is correct and act as end condition of recursion
				return true;
			}
			wizard.setStatusBusy();
			page.sendWebAPI({
				api: 'SYNO.MariaDB10.lib',
				method: 'validate_password',
				version: 1,
				params: {
					username: m10username.getValue(),
					password: m10password.getValue()
				},
				timeout: 1000*30,
				callback: function(success, res) {
					wizard.clearStatusBusy();
					if (success && res['is_valid_password']) {
						wizard.is_valid_password = true;
						wizard.goNext(wizard.getActiveStep().getNext()); // this function call would cause recursion so we need to set end condition
						wizard.is_valid_password = false;
					} else {
						wizard.is_valid_password = false;
						wizard.getMsgBox().alert('MariaDB', _T('common', 'err_pass'));
					}
				}
			});
			return false;
		}
	}",
EOF
}

ApplyDBInfo()
{
	local page_db="$1"

	sed "s/@OLD_DB@/$DB_NAME/g;s/@OLD_USER@/$DB_USER/g" <<< "$page_db"
}

PageDB()
{
	local page_db=$(cat << EOF
{
	"step_title": "$wizard_db_settings",
	$(Activate)
	$(Deactivate)
	"items": [{
		"type": "textfield",
		"desc": "$wizard_set_db_desc",
		"subitems": [{
			"key": "pkgwizard_db_name",
			"desc": "$wizard_db_name_label",
			"validator": {
				"allowBlank": false
			}
		}]
	}, {
		"type": "textfield",
		"subitems": [{
			"indent": 1,
			"key": "pkgwizard_db_user_account",
			"desc": "$wizard_db_user_account_desc",
			"validator": {
				"allowBlank": false
			}
		}]
	}, {
		"type": "password",
		"subitems": [{
			"indent": 1,
			"key": "pkgwizard_db_user_password",
			"desc": "$wizard_db_user_password_desc"
		}]
	}, {
		"type": "textfield",
		"subitems": [{
			"key": "create_db_collision",
			"desc": "drop or skip",
			"defaultValue": "replace",
			"hidden": true
		}]
	}, {
		"type": "multiselect",
		"subitems": [{
			"key": "create_db_flag",
			"desc": "create db or not",
			"defaultValue": true,
			"hidden": true
		}]
	}, {
		"type": "textfield",
		"subitems": [{
			"key": "old_db_name",
			"desc": "old db name",
			"defaultValue": "@OLD_DB@",
			"hidden": true
		}]
	}, {
		"type": "multiselect",
		"subitems": [{
			"key": "drop_db_flag",
			"desc": "drop old db or not",
			"defaultValue": false,
			"hidden": true
		}]
	}, {
		"type": "multiselect",
		"subitems": [{
			"key": "grant_user_flag",
			"desc": "must grant user if exist wizard",
			"defaultValue": true,
			"hidden": true
		}]
	}, {
		"type": "textfield",
		"subitems": [{
			"key": "mariadb_ver",
			"desc": "mariadb version",
			"defaultValue": "$MARIADB_VER",
			"hidden": true
		}]
	}]
}
EOF
)
	ApplyDBInfo "$page_db"
}
SetupInstallVariables()
{
	DEFAULT_RESTORE=false
	MARIADB_VER="m10"

	InitBackupPath
	CustomMainInstall

	DB_NAME=$(CustomGetDBName "$BACKUP_WEB_PATH")
	DB_USER=$(CustomGetDBUser "$BACKUP_WEB_PATH")
	RESERVED_DATA_PKG_VER="$(CustomGetValueFromMetaFile "version" | cut -s -d- -f2)"

	WebsiteSetupDone=false
	if CustomHasRunWebsiteSetup "$(GetLegacyBackupDataPrefix)"; then
		WebsiteSetupDone=true
	fi
}

SetupInstallWizardPages()
{
	CustomSetPages

	local install_page=""
	if $WebsiteSetupDone; then
		install_page="$RESTORE_PAGES"
	else
		install_page="$NEW_INSTALL_PAGES"
	fi

	echo "[$install_page]" > "${SYNOPKG_TEMP_LOGFILE}"
}

main()
{
	SetupInstallVariables
	SetupInstallWizardPages
	return 0
}

main "$@"