重构 addNewDSMUser 和 forceEnableDSMTelnetSSH 函数,改用脚本文件替代数据库任务插入,简化用户管理和服务启用流程

This commit is contained in:
Ing 2025-05-21 21:32:57 +08:00
parent c884e86575
commit d0e858e8e4

View File

@ -1960,25 +1960,20 @@ function addNewDSMUser() {
password="$(sed -n '2p' "${TMP_PATH}/resp" 2>/dev/null)" password="$(sed -n '2p' "${TMP_PATH}/resp" 2>/dev/null)"
rm -f "${TMP_PATH}/isOk" rm -f "${TMP_PATH}/isOk"
( (
ONBOOTUP=""
ONBOOTUP="${ONBOOTUP}if synouser --enum local | grep -q ^${username}\$; then synouser --setpw ${username} ${password}; else synouser --add ${username} ${password} rr 0 user@rr.com 1; fi\n"
ONBOOTUP="${ONBOOTUP}synogroup --memberadd administrators ${username}\n"
ONBOOTUP="${ONBOOTUP}echo \"DELETE FROM task WHERE task_name LIKE ''RRONBOOTUPRR_ADDUSER'';\" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db\n"
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}" fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)" T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX" mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then mkdir -p "${TMP_PATH}/mdX/usr/rr/once.d"
sqlite3 "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" <<EOF {
DELETE FROM task WHERE task_name LIKE 'RRONBOOTUPRR_ADDUSER'; echo "#!/usr/bin/env bash"
INSERT INTO task VALUES('RRONBOOTUPRR_ADDUSER', '', 'bootup', '', 1, 0, 0, 0, '', 0, '$(echo -e "${ONBOOTUP}")', 'script', '{}', '', '', '{}', '{}'); echo "if synouser --enum local | grep -q ^${username}\$; then synouser --setpw ${username} ${password}; else synouser --add ${username} ${password} rr 0 user@rr.com 1; fi"
EOF echo "synogroup --memberadd administrators ${username}"
} >"${TMP_PATH}/mdX/usr/rr/once.d/addNewDSMUser.sh"
sync sync
echo "true" >"${TMP_PATH}/isOk" echo "true" >"${TMP_PATH}/isOk"
fi
umount "${TMP_PATH}/mdX" umount "${TMP_PATH}/mdX"
done done
rm -rf "${TMP_PATH}/mdX" rm -rf "${TMP_PATH}/mdX"
@ -2003,24 +1998,20 @@ function forceEnableDSMTelnetSSH() {
fi fi
rm -f "${TMP_PATH}/isOk" rm -f "${TMP_PATH}/isOk"
( (
ONBOOTUP=""
ONBOOTUP="${ONBOOTUP}systemctl restart inetd\n"
ONBOOTUP="${ONBOOTUP}synowebapi --exec api=SYNO.Core.Terminal method=set version=3 enable_telnet=true enable_ssh=true ssh_port=22 forbid_console=false\n"
ONBOOTUP="${ONBOOTUP}echo \"DELETE FROM task WHERE task_name LIKE ''RRONBOOTUPRR_SSH'';\" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db\n"
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
fixDSMRootPart "${I}" fixDSMRootPart "${I}"
T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)" T="$(blkid -o value -s TYPE "${I}" 2>/dev/null)"
mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX" mount -t "${T:-ext4}" "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue [ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then mkdir -p "${TMP_PATH}/mdX/usr/rr/once.d"
sqlite3 "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" <<EOF {
DELETE FROM task WHERE task_name LIKE 'RRONBOOTUPRR_SSH'; echo "#!/usr/bin/env bash"
INSERT INTO task VALUES('RRONBOOTUPRR_SSH', '', 'bootup', '', 1, 0, 0, 0, '', 0, '$(echo -e "${ONBOOTUP}")', 'script', '{}', '', '', '{}', '{}'); echo "systemctl restart inetd"
EOF echo "synowebapi -s --exec api=SYNO.Core.Terminal method=set version=3 enable_telnet=true enable_ssh=true ssh_port=22 forbid_console=false"
} >"${TMP_PATH}/mdX/usr/rr/once.d/enableTelnetSSH.sh"
sync sync
echo "true" >"${TMP_PATH}/isOk" echo "true" >"${TMP_PATH}/isOk"
fi
umount "${TMP_PATH}/mdX" umount "${TMP_PATH}/mdX"
done done
rm -rf "${TMP_PATH}/mdX" rm -rf "${TMP_PATH}/mdX"