@@ -1324,14 +1324,14 @@ function storagepanelMenu() {
13241324 STORAGEPANELUSER=" $( readConfigKey " addons.storagepanel" " ${USER_CONFIG_FILE} " ) "
13251325 [ -n " ${STORAGEPANELUSER} " ] && DISKPANELUSER=" $( echo ${STORAGEPANELUSER} | cut -d' ' -f1) " || DISKPANELUSER=" RACK_24_Bay"
13261326 [ -n " ${STORAGEPANELUSER} " ] && M2PANELUSER=" $( echo ${STORAGEPANELUSER} | cut -d' ' -f2) " || M2PANELUSER=" 1X4"
1327- ITEMS=" $( echo -e " RACK_2_Bay \ nRACK_4_Bay \nRACK_8_Bay \nRACK_12_Bay \nRACK_16_Bay \nRACK_24_Bay \nRACK_60_Bay \nTOWER_1_Bay \nTOWER_2_Bay \nTOWER_4_Bay \nTOWER_6_Bay \nTOWER_8_Bay \nTOWER_12_Bay \n" ) "
1327+ ITEMS=" $( echo -e " RACK_0_Bay \nRACK_2_Bay \ nRACK_4_Bay \nRACK_8_Bay \nRACK_10_Bay \ nRACK_12_Bay \nRACK_12_Bay_2 \ nRACK_16_Bay \nRACK_20_Bay \ nRACK_24_Bay \nRACK_60_Bay \nTOWER_1_Bay \nTOWER_2_Bay \nTOWER_4_Bay \nTOWER_4_Bay_J \nTOWER_4_Bay_S \nTOWER_5_Bay \nTOWER_6_Bay \nTOWER_8_Bay \nTOWER_12_Bay \n" ) "
13281328 dialog --backtitle " $( backtitle) " --title " StoragePanel" \
13291329 --default-item " ${DISKPANELUSER} " --no-items --menu " Choose a Disk Panel" 0 0 0 ${ITEMS} \
13301330 2> " ${TMP_PATH} /resp"
13311331 resp=" $( cat " ${TMP_PATH} /resp" 2> /dev/null) "
13321332 [ -z " ${resp} " ] && break
13331333 STORAGE=${resp}
1334- ITEMS=" $( echo -e " 1X2 \ n1X4 \n1X8 \n" ) "
1334+ ITEMS=" $( echo -e " 1X1 \n1X2 \n1X3 \ n1X4 \n1X6 \ n1X8 \n2X2 \n2X3 \n2X4 \n2X6 \n2X8 \n3X4 \n4X4 \n" ) "
13351335 dialog --backtitle " $( backtitle) " --title " StoragePanel" \
13361336 --default-item " ${M2PANELUSER} " --no-items --menu " Choose a M.2 Panel" 0 0 0 ${ITEMS} \
13371337 2> " ${TMP_PATH} /resp"
@@ -1357,22 +1357,22 @@ function backupMenu() {
13571357 while true ; do
13581358 if [ -n " ${USERID} " ] && [ " ${ARC_OFFLINE} " != " true" ] && [ " ${CONFDONE} " = " true" ]; then
13591359 dialog --backtitle " $( backtitle) " --title " Backup" --cancel-label " Exit" --menu " Choose an Option" 0 0 0 \
1360- 1 " Restore Arc Config (from DSM)" \
1360+ 1 " Restore Loader (from DSM Disk )" \
13611361 2 " Restore Hardware Key (local)" \
13621362 3 " Backup Hardware Key (local)" \
13631363 4 " Restore Arc Config (from Online)" \
13641364 5 " Backup Arc Config (to Online)" \
13651365 2> " ${TMP_PATH} /resp"
13661366 elif [ -n " ${USERID} " ] && [ " ${ARC_OFFLINE} " != " true" ]; then
13671367 dialog --backtitle " $( backtitle) " --title " Backup" --cancel-label " Exit" --menu " Choose an Option" 0 0 0 \
1368- 1 " Restore Arc Config (from DSM)" \
1368+ 1 " Restore Loader (from DSM Disk )" \
13691369 2 " Restore Hardware Key (local)" \
13701370 3 " Backup Hardware Key (local)" \
13711371 4 " Restore Arc Config (from Online)" \
13721372 2> " ${TMP_PATH} /resp"
13731373 else
13741374 dialog --backtitle " $( backtitle) " --title " Backup" --cancel-label " Exit" --menu " Choose an Option" 0 0 0 \
1375- 1 " Restore Arc Config (from DSM)" \
1375+ 1 " Restore Loader (from DSM Disk )" \
13761376 2 " Restore Hardware Key (local)" \
13771377 3 " Backup Hardware Key (local)" \
13781378 2> " ${TMP_PATH} /resp"
@@ -1383,56 +1383,10 @@ function backupMenu() {
13831383 DSMROOTS=" $( findDSMRoot) "
13841384 if [ -z " ${DSMROOTS} " ]; then
13851385 dialog --backtitle " $( backtitle) " --title " Restore Arc Config" \
1386- --msgbox " No DSM system partition(md0) found!\nPlease insert all disks before continuing." 0 0
1387- return
1388- fi
1389- mkdir -p " ${TMP_PATH} /mdX"
1390- for I in ${DSMROOTS} ; do
1391- # fixDSMRootPart "${I}"
1392- T=" $( blkid -o value -s TYPE " ${I} " 2> /dev/null | sed ' s/linux_raid_member/ext4/' ) "
1393- mount -t " ${T:- ext4} " " ${I} " " ${TMP_PATH} /mdX"
1394- [ $? -ne 0 ] && continue
1395- MODEL=" "
1396- PRODUCTVER=" "
1397- if [ -f " ${TMP_PATH} /mdX/usr/arc/backup/p1/user-config.yml" ]; then
1398- cp -f " ${TMP_PATH} /mdX/usr/arc/backup/p1/user-config.yml" " ${USER_CONFIG_FILE} "
1399- sleep 2
1400- MODEL=" $( readConfigKey " model" " ${USER_CONFIG_FILE} " ) "
1401- PRODUCTVER=" $( readConfigKey " productver" " ${USER_CONFIG_FILE} " ) "
1402- if [ -n " ${MODEL} " ] && [ -n " ${PRODUCTVER} " ]; then
1403- TEXT=" Config found:\nModel: ${MODEL} \nVersion: ${PRODUCTVER} "
1404- SN=" $( readConfigKey " sn" " ${USER_CONFIG_FILE} " ) "
1405- TEXT+=" \nSerial: ${SN} "
1406- ARC_PATCH=" $( readConfigKey " arc.patch" " ${USER_CONFIG_FILE} " ) "
1407- TEXT+=" \nArc Patch: ${ARC_PATCH} "
1408- dialog --backtitle " $( backtitle) " --title " Restore Arc Config" \
1409- --aspect 18 --msgbox " ${TEXT} " 0 0
1410- PLATFORM=" $( readConfigKey " platform" " ${USER_CONFIG_FILE} " ) "
1411- DT=" $( readConfigKey " platforms.${PLATFORM} .dt" " ${P_FILE} " ) "
1412- CONFDONE=" $( readConfigKey " arc.confdone" " ${USER_CONFIG_FILE} " ) "
1413- resetBuild
1414- break
1415- fi
1416- fi
1417- umount " ${TMP_PATH} /mdX"
1418- done
1419- rm -rf " ${TMP_PATH} /mdX" 2> /dev/null
1420- if [ -f " ${USER_CONFIG_FILE} " ]; then
1421- PRODUCTVER=" $( readConfigKey " productver" " ${USER_CONFIG_FILE} " ) "
1422- if [ -n " ${PRODUCTVER} " ]; then
1423- PLATFORM=" $( readConfigKey " platform" " ${USER_CONFIG_FILE} " ) "
1424- KVER=" $( readConfigKey " platforms.${PLATFORM} .productvers.\" ${PRODUCTVER} \" .kver" " ${P_FILE} " ) "
1425- is_in_array " ${PLATFORM} " " ${KVER5L[@]} " && KVERP=" ${PRODUCTVER} -${KVER} " || KVERP=" ${KVER} "
1426- if [ -n " ${PLATFORM} " ] && [ -n " ${KVERP} " ]; then
1427- writeConfigKey " modules" " {}" " ${USER_CONFIG_FILE} "
1428- mergeConfigModules " $( getAllModules " ${PLATFORM} " " ${KVERP} " | awk ' {print $1}' ) " " ${USER_CONFIG_FILE} "
1429- fi
1430- fi
1386+ --msgbox " No DSM system found!\nPlease insert all disks before continuing." 0 0
1387+ return 1
14311388 fi
1432- dialog --backtitle " $( backtitle) " --title " Restore Arc Config" \
1433- --aspect 18 --infobox " Restore successful! -> Reload Arc Init now" 5 50
1434- sleep 2
1435- rm -f " ${HOME} /.initialized" && exec init.sh
1389+ recoverDSM
14361390 ;;
14371391 2)
14381392 dialog --backtitle " $( backtitle) " --title " Restore Encryption Key" \
@@ -3864,4 +3818,64 @@ function onlineMenu() {
38643818 esac
38653819 done
38663820 return
3821+ }
3822+
3823+ # ##############################################################################
3824+ # Recover DSM files
3825+ function recoverDSM() {
3826+ DSMROOTS=" $( findDSMRoot) "
3827+ [ -z " ${DSMROOTS} " ] && return
3828+ mkdir -p " ${TMP_PATH} /mdX"
3829+ for I in ${DSMROOTS} ; do
3830+ # fixDSMRootPart "${I}"
3831+ T=" $( blkid -o value -s TYPE " ${I} " 2> /dev/null | sed ' s/linux_raid_member/ext4/' ) "
3832+ mount -t " ${T:- ext4} " " ${I} " " ${TMP_PATH} /mdX"
3833+ [ $? -ne 0 ] && continue
3834+ MODEL=" "
3835+ PRODUCTVER=" "
3836+ BACKUP_CONFIG=" ${TMP_PATH} /mdX/usr/arc/backup/p1/user-config.yml"
3837+
3838+ # Check if BACKUP_CONFIG exists before proceeding
3839+ if [ ! -f " ${BACKUP_CONFIG} " ]; then
3840+ umount " ${TMP_PATH} /mdX"
3841+ break && return
3842+ fi
3843+
3844+ MODEL=" $( readConfigKey " model" " ${BACKUP_CONFIG} " ) "
3845+ PRODUCTVER=" $( readConfigKey " productver" " ${BACKUP_CONFIG} " ) "
3846+ if [ -n " ${MODEL} " ] && [ -n " ${PRODUCTVER} " ]; then
3847+ TEXT=" Config found:\nModel: ${MODEL} \nVersion: ${PRODUCTVER} "
3848+ PLATFORM=" $( readConfigKey " platform" " ${BACKUP_CONFIG} " ) "
3849+ TEXT+=" \nPlatform: ${PLATFORM} "
3850+ SN=" $( readConfigKey " sn" " ${BACKUP_CONFIG} " ) "
3851+ TEXT+=" \nSerial: ${SN} "
3852+ ARC_PATCH=" $( readConfigKey " arc.patch" " ${BACKUP_CONFIG} " ) "
3853+ TEXT+=" \nArc Patch: ${ARC_PATCH} "
3854+ CONFDONE=" $( readConfigKey " arc.confdone" " ${BACKUP_CONFIG} " ) "
3855+ dialog --backtitle " $( backtitle) " --title " Restore Arc" \
3856+ --aspect 18 --msgbox " ${TEXT} " 0 0
3857+ [ $? -ne 0 ] && break
3858+ cp -af " ${TMP_PATH} /mdX/usr/arc/backup/p1/" * " ${PART1_PATH} " 2> /dev/null
3859+ cp -af " ${TMP_PATH} /mdX/usr/arc/backup/p2/" * " ${PART2_PATH} " 2> /dev/null
3860+ resetBuild
3861+ break
3862+ fi
3863+ umount -f " ${TMP_PATH} /mdX" 2> /dev/null
3864+ done
3865+ if [ -f " ${USER_CONFIG_FILE} " ]; then
3866+ PRODUCTVER=" $( readConfigKey " productver" " ${USER_CONFIG_FILE} " ) "
3867+ if [ -n " ${PRODUCTVER} " ]; then
3868+ PLATFORM=" $( readConfigKey " platform" " ${USER_CONFIG_FILE} " ) "
3869+ KVER=" $( readConfigKey " platforms.${PLATFORM} .productvers.\" ${PRODUCTVER} \" .kver" " ${P_FILE} " ) "
3870+ is_in_array " ${PLATFORM} " " ${KVER5L[@]} " && KVERP=" ${PRODUCTVER} -${KVER} " || KVERP=" ${KVER} "
3871+ if [ -n " ${PLATFORM} " ] && [ -n " ${KVERP} " ]; then
3872+ writeConfigKey " modules" " {}" " ${USER_CONFIG_FILE} "
3873+ mergeConfigModules " $( getAllModules " ${PLATFORM} " " ${KVERP} " | awk ' {print $1}' ) " " ${USER_CONFIG_FILE} "
3874+ fi
3875+ fi
3876+ dialog --backtitle " $( backtitle) " --title " Restore Arc" \
3877+ --aspect 18 --infobox " Restore successful! -> Reload Arc Init now" 3 50
3878+ sleep 2
3879+ rm -f " ${HOME} /.initialized" && exec init.sh
3880+ fi
38673881}
0 commit comments