HEX
Server: Apache/2.4.63 (Unix)
System: Linux Synopilou92 4.4.302+ #72806 SMP Mon Jul 21 23:16:00 CST 2025 x86_64
User: pilou92 (1026)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: //usr/syno/synodr/sbin/synodrnode.sh
#!/bin/sh

NODE_RESET_FLAG="/var/lib/.synodrnode_reset"
NODE_ETC="/usr/syno/etc/synodr/"
NODE_ETC_DEFAULTS="/usr/syno/etc.defaults/synodr/"
NODE_DB=${NODE_ETC}"/node.db"
NODE_SQL_ROOT=${NODE_ETC_DEFAULTS}"/node_sql"
SYNODRCRED="/usr/syno/synodr/sbin/synodrcred"
INIT_SQL=${NODE_SQL_ROOT}"/init_db.sql"
V2_SQL=${NODE_SQL_ROOT}"/v2.sql"
DB_VER="2";

init_db()
{
	if [ ! -f ${INIT_SQL} ]; then
		logger -p user.info -t synodrnode "Failed to init synodrnode.db since ${INIT_SQL} is not existed"
	else
		sqlite3 ${NODE_DB} < ${INIT_SQL}
		logger -p user.info -t synodrnode "Init synodrnode.db done"
	fi
}

exec_db()
{
	local db_file=$1

	if [ ! -f $db_file ]; then
		logger -p user.err -t synodrnode "${db_file} is not existed to exec";
		exit 1;
	fi
	sqlite3 ${NODE_DB} < ${db_file}
}

upgrade_db()
{
	while true
	do
		local ver=`sqlite3 ${NODE_DB} "SELECT value FROM db_ver;"`;

		case ${ver} in
			1)
				exec_db ${V2_SQL}
				;;
			$DB_VER)
				break
				;;
			*)
				logger -p user.warn -t synodrnode "Failed to upgrade db since bad ver [${ver}]"
				break
				;;
		esac
		logger -p user.warn -t synodrnode "Upgrade ${NODE_DB} to ver[$(($ver+1))]"
	done
}

clear_temp_cred()
{
	if [ -f ${INIT_TEMPCRED_SQL} ]; then
		${SYNODRCRED} clear-temp-cred
		logger -p user.warn -t synodrnode "Clear temp credential of DRNode"
	fi
}

start()
{
	logger -p user.info -t synodrnode " ---> Start DRNode Check"

	if [ ! -f "${NODE_DB}" ]; then
		init_db
	else
		local existed=`sqlite3 ${NODE_DB} "SELECT 1 FROM sqlite_master WHERE type='table' AND name='db_ver';"`

		if [ -z "$existed" ]; then
			init_db
		else
			local ver=`sqlite3 ${NODE_DB} "SELECT value FROM db_ver;"`;
			if [ -z "$ver" ]; then
				init_db
			else
				upgrade_db
			fi
		fi

	fi

	clear_temp_cred

	logger -p user.info -t synodrnode " <--- Finish DRNode Check"
}

reset()
{
	logger -p user.info -t synodrnode " ---> Start DRNode Reset Check"

    if [ -f "$NODE_RESET_FLAG" ]; then
        logger -p user.warn -t synodrnode "Reset synodrnode config"
        /usr/syno/synodr/sbin/synodrnode -r
        rm -rf /usr/syno/etc/synodr/node.db
        /usr/syno/bin/synosystemctl restart synodrnode
        rm -f "$NODE_RESET_FLAG"
    fi

	logger -p user.info -t synodrnode " <--- Finish DRNode Reset Check"
}

case "$1" in
start)
	start
;;
reset)
	reset
;;
*)
	echo "usage: $0 [start|reset]" >&2
	exit 1
;;
esac