重构配置处理逻辑,优化读取和写入 synoinfo 配置的函数

This commit is contained in:
Ing 2025-05-01 15:16:10 +08:00
parent 1c59a654ef
commit 0f332893c1
17 changed files with 73 additions and 273 deletions

View File

@ -183,33 +183,35 @@ function validateSerial() {
############################################################################### ###############################################################################
# Get values in .conf K=V file # Get values in .conf K=V file
# 1 - key # 1 - file
# 2 - file # 2 - key
function _get_conf_kv() { function _get_conf_kv() {
grep "^${1}=" "${2}" 2>/dev/null | cut -d'=' -f2- | sed 's/^"//;s/"$//' 2>/dev/null grep "^${2}=" "${1}" 2>/dev/null | cut -d'=' -f2- | sed 's/^"//;s/"$//' 2>/dev/null
return $?
} }
############################################################################### ###############################################################################
# Replace/remove/add values in .conf K=V file # Replace/remove/add values in .conf K=V file
# 1 - name # 1 - file
# 2 - new_val # 2 - key
# 3 - path # 3 - value
function _set_conf_kv() { function _set_conf_kv() {
# Delete # Delete
if [ -z "${2}" ]; then if [ -z "${3}" ]; then
sed -i "/^${1}=/d" "${3}" 2>/dev/null sed -i "/^${2}=/d" "${1}" 2>/dev/null
return $? return $?
fi fi
# Replace # Replace
if grep -q "^${1}=" "${3}"; then if grep -q "^${2}=" "${1}" 2>/dev/null; then
sed -i "s#^${1}=.*#${1}=\"${2}\"#" "${3}" 2>/dev/null sed -i "s#^${2}=.*#${2}=\"${3}\"#" "${1}" 2>/dev/null
return $? return $?
fi fi
# Add if doesn't exist # Add if doesn't exist
echo "${1}=\"${2}\"" >>"${3}" mkdir -p "$(dirname "${1}" 2>/dev/null)" 2>/dev/null
return 0 echo "${2}=\"${3}\"" >>"${1}" 2>/dev/null
return $?
} }
############################################################################### ###############################################################################

View File

@ -428,12 +428,12 @@ function setConfigFromDSM() {
return 1 return 1
fi fi
PLATFORMTMP="$(_get_conf_kv "PLATFORM" "${DSM_ROOT}/GRUB_VER")" PLATFORMTMP="$(_get_conf_kv "${DSM_ROOT}/GRUB_VER" "PLATFORM")"
MODELTMP="$(_get_conf_kv "MODEL" "${DSM_ROOT}/GRUB_VER")" MODELTMP="$(_get_conf_kv "${DSM_ROOT}/GRUB_VER" "MODEL")"
majorversion="$(_get_conf_kv "majorversion" "${DSM_ROOT}/VERSION")" majorversion="$(_get_conf_kv "${DSM_ROOT}/VERSION" "majorversion")"
minorversion="$(_get_conf_kv "minorversion" "${DSM_ROOT}/VERSION")" minorversion="$(_get_conf_kv "${DSM_ROOT}/VERSION" "minorversion")"
buildnumber="$(_get_conf_kv "buildnumber" "${DSM_ROOT}/VERSION")" buildnumber="$(_get_conf_kv "${DSM_ROOT}/VERSION" "buildnumber")"
smallfixnumber="$(_get_conf_kv "smallfixnumber" "${DSM_ROOT}/VERSION")" smallfixnumber="$(_get_conf_kv "${DSM_ROOT}/VERSION" "smallfixnumber")"
if [ -z "${PLATFORMTMP}" ] || [ -z "${MODELTMP}" ] || [ -z "${majorversion}" ] || [ -z "${minorversion}" ]; then if [ -z "${PLATFORMTMP}" ] || [ -z "${MODELTMP}" ] || [ -z "${majorversion}" ] || [ -z "${minorversion}" ]; then
echo -e "$(TEXT "DSM Invalid, try again!")" >"${LOG_FILE}" echo -e "$(TEXT "DSM Invalid, try again!")" >"${LOG_FILE}"
return 1 return 1
@ -2315,7 +2315,7 @@ function tryRecoveryDSM() {
fi fi
if [ -f "${TMP_PATH}/mdX/etc.defaults/synoinfo.conf" ]; then if [ -f "${TMP_PATH}/mdX/etc.defaults/synoinfo.conf" ]; then
R_SN="$(_get_conf_kv SN "${TMP_PATH}/mdX/etc.defaults/synoinfo.conf")" R_SN="$(_get_conf_kv "${TMP_PATH}/mdX/etc.defaults/synoinfo.conf" "SN")"
[ -n "${R_SN}" ] && SN=${R_SN} && writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}" [ -n "${R_SN}" ] && SN=${R_SN} && writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
fi fi

View File

@ -1,39 +0,0 @@
#!/usr/bin/env sh
#
# WARNING: this file is also embedded in the post-init patcher, so don't go to crazy with the syntax/tools as it must
# be able to execute in the initramfs/preboot environment (so no bashism etc)
# All comments will be stripped, functions here should NOT start with brp_ as they're not part of the builder
if [ -z "${SED_PATH+x}" ]; then
echo "Your SED_PATH variable is not set/is empty!"
exit 1
fi
##$1 from, $2 to, $3 file to path
_replace_in_file() {
if grep -q "${1}" "${3}"; then
"${SED_PATH}" -i "s#${1}#${2}#" "${3}" 2>/dev/null
fi
}
# Replace/remove/add values in .conf K=V file
#
# Args: $1 name, $2 new_val, $3 path
_set_conf_kv() {
# Delete
if [ -z "${2}" ]; then
"${SED_PATH}" -i "/^${1}=/d" "${3}" 2>/dev/null
return 0
fi
# Replace
if grep -q "^${1}=" "${3}"; then
"${SED_PATH}" -i "s#^${1}=.*#${1}=\"${2}\"#" "${3}" 2>/dev/null
return 0
fi
# Add if doesn't exist
echo "${1}=\"${2}\"" >>"${3}"
return 0
}

View File

@ -1,11 +0,0 @@
--- a/usr/syno/web/webman/get_state.cgi
+++ b/usr/syno/web/webman/get_state.cgi
@@ -1,7 +1,7 @@
#!/bin/sh
PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin"
-DisabledPortDisks=`/usr/syno/bin/synodiskport -portthawlist`
+DisabledPortDisks=""
partition=`/usr/syno/bin/synodiskport -installable_disk_list`
product=`/bin/get_key_value /etc.defaults/synoinfo.conf product`

View File

@ -1,11 +0,0 @@
--- a/usr/syno/web/webman/get_state.cgi
+++ b/usr/syno/web/webman/get_state.cgi
@@ -1,7 +1,7 @@
#!/bin/sh
PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin"
-DisabledPortDisks="$(/usr/syno/bin/synodiskport -portthawlist)"
+DisabledPortDisks=""
partition="$(/usr/syno/bin/synodiskport -installable_disk_list)"
upnpmodelname="$(/bin/get_key_value /etc.defaults/synoinfo.conf upnpmodelname)"

View File

@ -1,8 +0,0 @@
--- a/etc/passwd
+++ b/etc/passwd
@@ -1,4 +1,4 @@
-root:x:0:0::/root:/bin/ash
+root::0:0::/root:/bin/ash
system:x:1:1::/usr/syno/synoman:/usr/bin/nologin
daemon:x:2:2::/:/bin/sh
lp:x:7:7::/var/spool/lpd:/bin/sh

View File

@ -1,8 +0,0 @@
--- a/etc/passwd
+++ b/etc/passwd
@@ -1,4 +1,4 @@
-root:x:0:0::/root:/bin/ash
+root::0:0::/root:/bin/ash
system:x:1:1::/usr/syno/synoman:/usr/bin/nologin
daemon:x:2:2::/:/bin/sh
SYSTEM_ADMIN:x:3:101::/nonexist:/usr/bin/nologin

View File

@ -1,8 +0,0 @@
--- /etc/hosts
+++ /etc/hosts
@@ -2,3 +2,5 @@
# that require network functionality will fail.
127.0.0.1 localhost
::1 localhost
+127.0.0.1 update7.synology.com
+127.0.0.1 dataupdate7.synology.com

View File

@ -1,32 +0,0 @@
--- a/usr/sbin/init.post
+++ b/usr/sbin/init.post
@@ -18,6 +18,29 @@ if [ "$UniqueRD" = "nextkvmx64" ]; then
fi
Mount "$RootDevice" /tmpRoot -o barrier=1
+############################################################################################
+SED_PATH='/tmpRoot/usr/bin/sed'
+
+@@@CONFIG-MANIPULATORS-TOOLS@@@
+
+@@@CONFIG-GENERATED@@@
+
+UPSTART="/tmpRoot/usr/share/init"
+
+if ! echo; then
+ _replace_in_file '^start on' '#start on' $UPSTART/tty.conf
+ _replace_in_file "console output" "console none" $UPSTART/syno_poweroff_task.conf
+ _replace_in_file "console output" "console none" $UPSTART/burnin_loader.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevtrigger.conf
+ _replace_in_file "console output" "console none" $UPSTART/bs-poweroff.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevd.conf
+else
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh late
+############################################################################################
+
Mkdir -p /tmpRoot/initrd
Umount /proc >/dev/null 2>&1

View File

@ -1,31 +1,10 @@
--- a/usr/sbin/init.post --- a/usr/sbin/init.post
+++ b/usr/sbin/init.post +++ b/usr/sbin/init.post
@@ -18,6 +18,29 @@ @@ -18,6 +18,8 @@
fi fi
mount $RootDevice /tmpRoot -o barrier=1 mount $RootDevice /tmpRoot -o barrier=1
+############################################################################################
+SED_PATH='/tmpRoot/usr/bin/sed'
+
+@@@CONFIG-MANIPULATORS-TOOLS@@@
+
+@@@CONFIG-GENERATED@@@
+
+UPSTART="/tmpRoot/usr/share/init"
+
+if ! echo; then
+ _replace_in_file '^start on' '#start on' $UPSTART/tty.conf
+ _replace_in_file "console output" "console none" $UPSTART/syno_poweroff_task.conf
+ _replace_in_file "console output" "console none" $UPSTART/burnin_loader.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevtrigger.conf
+ _replace_in_file "console output" "console none" $UPSTART/bs-poweroff.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevd.conf
+else
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh late +/addons/addons.sh late
+############################################################################################
+ +
mkdir -p /tmpRoot/initrd mkdir -p /tmpRoot/initrd

View File

@ -0,0 +1,11 @@
--- a/usr/sbin/init.post
+++ b/usr/sbin/init.post
@@ -18,6 +18,8 @@
fi
Mount "$RootDevice" /tmpRoot -o barrier=1
+/addons/addons.sh late
+
Mkdir -p /tmpRoot/initrd
Umount /proc >/dev/null 2>&1

View File

@ -1,31 +1,11 @@
--- a/usr/sbin/init.post --- a/usr/sbin/init.post
+++ b/usr/sbin/init.post +++ b/usr/sbin/init.post
@@ -31,7 +31,28 @@ @@ -32,6 +32,8 @@
OptPrjQuota="$(GetPQMountOpt "${RootMountPath}")"
# shellcheck disable=SC2046 # shellcheck disable=SC2046
Mount "${RootMountPath}" /tmpRoot -o barrier=1 ${OptPrjQuota} Mount "${RootMountPath}" /tmpRoot -o barrier=1 ${OptPrjQuota}
+############################################################################################
+SED_PATH='/tmpRoot/usr/bin/sed'
+@@@CONFIG-MANIPULATORS-TOOLS@@@
+
+@@@CONFIG-GENERATED@@@
+
+UPSTART="/tmpRoot/usr/share/init"
+
+if ! echo; then
+ _replace_in_file '^start on' '#start on' $UPSTART/tty.conf
+ _replace_in_file "console output" "console none" $UPSTART/syno_poweroff_task.conf
+ _replace_in_file "console output" "console none" $UPSTART/burnin_loader.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevtrigger.conf
+ _replace_in_file "console output" "console none" $UPSTART/bs-poweroff.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevd.conf
+else
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh late +/addons/addons.sh late
+############################################################################################ +
Mkdir -p /tmpRoot/initrd Mkdir -p /tmpRoot/initrd
Umount /proc >/dev/null 2>&1 Umount /proc >/dev/null 2>&1

View File

@ -1,31 +1,11 @@
--- a/usr/sbin/init.post --- a/usr/sbin/init.post
+++ b/usr/sbin/init.post +++ b/usr/sbin/init.post
@@ -31,7 +31,28 @@ @@ -32,6 +32,8 @@
OptPrjQuota="$(GetPQMountOpt "${RootMountPath}")"
# shellcheck disable=SC2046 # shellcheck disable=SC2046
Mount "${RootMountPath}" /tmpRoot -o barrier=1,noatime ${OptPrjQuota} Mount "${RootMountPath}" /tmpRoot -o barrier=1,noatime ${OptPrjQuota}
+############################################################################################
+SED_PATH='/tmpRoot/usr/bin/sed'
+@@@CONFIG-MANIPULATORS-TOOLS@@@
+
+@@@CONFIG-GENERATED@@@
+
+UPSTART="/tmpRoot/usr/share/init"
+
+if ! echo; then
+ _replace_in_file '^start on' '#start on' $UPSTART/tty.conf
+ _replace_in_file "console output" "console none" $UPSTART/syno_poweroff_task.conf
+ _replace_in_file "console output" "console none" $UPSTART/burnin_loader.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevtrigger.conf
+ _replace_in_file "console output" "console none" $UPSTART/bs-poweroff.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevd.conf
+else
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh late +/addons/addons.sh late
+############################################################################################ +
Mkdir -p /tmpRoot/initrd Mkdir -p /tmpRoot/initrd
Umount /proc >/dev/null 2>&1 Umount /proc >/dev/null 2>&1

View File

@ -1,31 +1,11 @@
--- a/usr/sbin/init.post --- a/usr/sbin/init.post
+++ b/usr/sbin/init.post +++ b/usr/sbin/init.post
@@ -31,7 +31,28 @@ @@ -23,6 +23,8 @@
fi
Mount "$(GetRootMountOpt)" "$(GetRootMountPath)" /tmpRoot Mount "$(GetRootMountOpt)" "$(GetRootMountPath)" /tmpRoot
+############################################################################################
+SED_PATH='/tmpRoot/usr/bin/sed'
+@@@CONFIG-MANIPULATORS-TOOLS@@@
+
+@@@CONFIG-GENERATED@@@
+
+UPSTART="/tmpRoot/usr/share/init"
+
+if ! echo; then
+ _replace_in_file '^start on' '#start on' $UPSTART/tty.conf
+ _replace_in_file "console output" "console none" $UPSTART/syno_poweroff_task.conf
+ _replace_in_file "console output" "console none" $UPSTART/burnin_loader.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevtrigger.conf
+ _replace_in_file "console output" "console none" $UPSTART/bs-poweroff.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevd.conf
+else
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh late +/addons/addons.sh late
+############################################################################################ +
Mkdir -p /tmpRoot/initrd Mkdir -p /tmpRoot/initrd
Umount /proc >/dev/null 2>&1 Umount /proc >/dev/null 2>&1

View File

@ -81,14 +81,11 @@ writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}" writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}" writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
declare -A SYNOINFO
declare -A ADDONS declare -A ADDONS
declare -A MODULES declare -A MODULES
declare -A SYNOINFO
# Read synoinfo and addons from config # Read addons, modules and synoinfo from user config
while IFS=': ' read -r KEY VALUE; do
[ -n "${KEY}" ] && SYNOINFO["${KEY}"]="${VALUE}"
done <<<"$(readConfigMap "synoinfo" "${USER_CONFIG_FILE}")"
while IFS=': ' read -r KEY VALUE; do while IFS=': ' read -r KEY VALUE; do
[ -n "${KEY}" ] && ADDONS["${KEY}"]="${VALUE}" [ -n "${KEY}" ] && ADDONS["${KEY}"]="${VALUE}"
done <<<"$(readConfigMap "addons" "${USER_CONFIG_FILE}")" done <<<"$(readConfigMap "addons" "${USER_CONFIG_FILE}")"
@ -98,13 +95,16 @@ while IFS=': ' read -r KEY VALUE; do
[ -n "${KEY}" ] && MODULES["${KEY}"]="${VALUE}" [ -n "${KEY}" ] && MODULES["${KEY}"]="${VALUE}"
done <<<"$(readConfigMap "modules" "${USER_CONFIG_FILE}")" done <<<"$(readConfigMap "modules" "${USER_CONFIG_FILE}")"
SYNOINFO["SN"]="${SN}"
while IFS=': ' read -r KEY VALUE; do
[ -n "${KEY}" ] && SYNOINFO["${KEY}"]="${VALUE}"
done <<<"$(readConfigMap "synoinfo" "${USER_CONFIG_FILE}")"
# Patches (diff -Naru OLDFILE NEWFILE > xxx.patch) # Patches (diff -Naru OLDFILE NEWFILE > xxx.patch)
PATCHS=( PATCHS=(
"ramdisk-etc-rc-*.patch" "ramdisk-etc-rc-*.patch"
"ramdisk-init-script-*.patch" "ramdisk-init-script-*.patch"
"ramdisk-post-init-script-*.patch" "ramdisk-post-init-script-*.patch"
"ramdisk-disable-root-pwd-*.patch"
"ramdisk-disable-disabled-ports-*.patch"
) )
for PE in "${PATCHS[@]}"; do for PE in "${PATCHS[@]}"; do
RET=1 RET=1
@ -121,50 +121,11 @@ for PE in "${PATCHS[@]}"; do
[ ${RET} -ne 0 ] && exit 1 [ ${RET} -ne 0 ] && exit 1
done done
# Patch /etc/synoinfo.conf /etc.defaults/synoinfo.conf mkdir -p "${RAMDISK_PATH}/addons"
echo -n "."
# Add serial number to synoinfo.conf, to help to recovery a installed DSM
echo "Set synoinfo SN" >"${LOG_FILE}"
_set_conf_kv "SN" "${SN}" "${RAMDISK_PATH}/etc/synoinfo.conf" >>"${LOG_FILE}" 2>&1 || exit 1
_set_conf_kv "SN" "${SN}" "${RAMDISK_PATH}/etc.defaults/synoinfo.conf" >>"${LOG_FILE}" 2>&1 || exit 1
for KEY in "${!SYNOINFO[@]}"; do
echo "Set synoinfo ${KEY}" >>"${LOG_FILE}"
_set_conf_kv "${KEY}" "${SYNOINFO[${KEY}]}" "${RAMDISK_PATH}/etc/synoinfo.conf" >>"${LOG_FILE}" 2>&1 || exit 1
_set_conf_kv "${KEY}" "${SYNOINFO[${KEY}]}" "${RAMDISK_PATH}/etc.defaults/synoinfo.conf" >>"${LOG_FILE}" 2>&1 || exit 1
done
# Patch /sbin/init.post
# Apply config manipulators
grep -v -e '^[\t ]*#' -e '^$' "${WORK_PATH}/patch/config-manipulators.sh" >"${TMP_PATH}/rp.txt"
sed -e "/@@@CONFIG-MANIPULATORS-TOOLS@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post"
rm -f "${TMP_PATH}/rp.txt"
# Generate synoinfo configurations
{
echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc/synoinfo.conf'"
echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc.defaults/synoinfo.conf'"
for KEY in "${!SYNOINFO[@]}"; do
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc/synoinfo.conf'"
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc.defaults/synoinfo.conf'"
done
} >"${TMP_PATH}/rp.txt"
sed -e "/@@@CONFIG-GENERATED@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post"
rm -f "${TMP_PATH}/rp.txt"
# Extract ck modules to ramdisk
echo -n "."
installModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" "${!MODULES[@]}" || exit 1
# Copying fake modprobe
[ "$(echo "${KVER:-4}" | cut -d'.' -f1)" -lt 5 ] && cp -f "${WORK_PATH}/patch/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe"
# Copying LKM to /usr/lib/modules
gzip -dc "${LKMS_PATH}/rp-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}-${LKM}.ko.gz" >"${RAMDISK_PATH}/usr/lib/modules/rp.ko" 2>"${LOG_FILE}" || exit 1
# Addons # Addons
echo -n "." echo -n "."
echo "Create addons.sh" >"${LOG_FILE}" echo "Create addons.sh" >"${LOG_FILE}"
mkdir -p "${RAMDISK_PATH}/addons"
{ {
echo "#!/bin/sh" echo "#!/bin/sh"
echo 'echo "addons.sh called with params ${@}"' echo 'echo "addons.sh called with params ${@}"'
@ -200,8 +161,32 @@ for ADDON in "${!ADDONS[@]}"; do
echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>>"${LOG_FILE}" || exit 1 echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>>"${LOG_FILE}" || exit 1
done done
# Enable Telnet # Extract ck modules to ramdisk
echo "inetd" >>"${RAMDISK_PATH}/addons/addons.sh" echo -n "."
installModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" "${!MODULES[@]}" || exit 1
# Copying fake modprobe
[ "$(echo "${KVER:-4}" | cut -d'.' -f1)" -lt 5 ] && cp -f "${WORK_PATH}/patch/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe"
# Copying LKM to /usr/lib/modules
gzip -dc "${LKMS_PATH}/rp-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}-${LKM}.ko.gz" >"${RAMDISK_PATH}/usr/lib/modules/rp.ko" 2>"${LOG_FILE}" || exit 1
# Patch synoinfo.conf
echo -n "."
echo -n "" >"${RAMDISK_PATH}/addons/synoinfo.conf"
for KEY in "${!SYNOINFO[@]}"; do
echo "Set synoinfo ${KEY}" >>"${LOG_FILE}"
echo "${KEY}=\"${SYNOINFO[${KEY}]}\"" >>"${RAMDISK_PATH}/addons/synoinfo.conf"
_set_conf_kv "${RAMDISK_PATH}/etc/synoinfo.conf" "${KEY}" "${SYNOINFO[${KEY}]}" || exit 1
_set_conf_kv "${RAMDISK_PATH}/etc.defaults/synoinfo.conf" "${KEY}" "${SYNOINFO[${KEY}]}" || exit 1
done
if [ ! -x "${RAMDISK_PATH}/usr/bin/get_key_value" ]; then
printf '#!/bin/sh\n%s\n_get_conf_kv "$@"' "$(declare -f _get_conf_kv)" >"${RAMDISK_PATH}/usr/bin/get_key_value"
chmod a+x "${RAMDISK_PATH}/usr/bin/get_key_value"
fi
if [ ! -x "${RAMDISK_PATH}/usr/bin/set_key_value" ]; then
printf '#!/bin/sh\n%s\n_set_conf_kv "$@"' "$(declare -f _set_conf_kv)" >"${RAMDISK_PATH}/usr/bin/set_key_value"
chmod a+x "${RAMDISK_PATH}/usr/bin/set_key_value"
fi
echo -n "." echo -n "."
echo "Modify files" >"${LOG_FILE}" echo "Modify files" >"${LOG_FILE}"