diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bc5e391c..4e01f1ce 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -167,13 +167,13 @@ jobs: zip -9j update.zip update-list.yml update-check.sh while read F; do if [ -d "${F}" ]; then - FTGZ="`basename "${F}"`.tgz" + FTGZ="$(basename "${F}").tgz" tar -czf "${FTGZ}" -C "${F}" . sha256sum "${FTGZ}" >> sha256sum zip -9j update.zip "${FTGZ}" - rm "${FTGZ}" + rm -f "${FTGZ}" else - (cd `dirname ${F}` && sha256sum `basename ${F}`) >> sha256sum + (cd $(dirname "${F}") && sha256sum $(basename "${F}")) >> sha256sum zip -9j update.zip "${F}" fi done < <(yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml) diff --git a/.gitignore b/.gitignore index 054e33cd..e9ee3def 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ files/initrd/opt/rr/lang/*.mo tests /extractor /br +/rdxz_tmp \ No newline at end of file diff --git a/files/initrd/opt/rr/boot.sh b/files/initrd/opt/rr/boot.sh index 2601a972..d6ea4170 100755 --- a/files/initrd/opt/rr/boot.sh +++ b/files/initrd/opt/rr/boot.sh @@ -33,7 +33,7 @@ if [ -f ${PART1_PATH}/.build -o "$(sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print$ echo -e "\033[1;43m$(TEXT "DSM zImage changed")\033[0m" ${WORK_PATH}/zimage-patch.sh if [ $? -ne 0 ]; then - echo -e "\033[1;43m$(TEXT "zImage not patched,\nPlease upgrade the bootloader version and try again.\nPatch error:\n")$(<"${LOG_FILE}")\033[0m" + echo -e "\033[1;43m$(TEXT "zImage not patched,\nPlease upgrade the bootloader version and try again.\nPatch error:\n")$(<"${LOG_FILE}")\033[0m" exit 1 fi fi @@ -93,8 +93,6 @@ MAC1="$(readConfigKey "mac1" "${USER_CONFIG_FILE}")" MAC2="$(readConfigKey "mac2" "${USER_CONFIG_FILE}")" KERNELPANIC="$(readConfigKey "kernelpanic" "${USER_CONFIG_FILE}")" -NETIFNUM=$(ls /sys/class/net/ | grep eth | wc -l); [ ${NETIFNUM} -lt 2 ] && NETIFNUM=2 - declare -A CMDLINE # Automatic values @@ -104,9 +102,11 @@ CMDLINE['syno_hw_version']="${MODEL}" CMDLINE['vid']="${VID}" CMDLINE['pid']="${PID}" CMDLINE['sn']="${SN}" -[ -n "${MAC1}" ] && CMDLINE['mac1']="${MAC1}" -[ -n "${MAC2}" ] && CMDLINE['mac2']="${MAC2}" -CMDLINE['netif_num']="${NETIFNUM}" + +CMDLINE['netif_num']="0" +[ -z "${MAC1}" -a -n "${MAC2}" ] && MAC1=${MAC2} && MAC2="" # Sanity check +[ -n "${MAC1}" ] && CMDLINE['mac1']="${MAC1}" && CMDLINE['netif_num']="1" +[ -n "${MAC2}" ] && CMDLINE['mac2']="${MAC2}" && CMDLINE['netif_num']="2" # set fixed cmdline if grep -q "force_junior" /proc/cmdline; then diff --git a/files/initrd/opt/rr/menu.sh b/files/initrd/opt/rr/menu.sh index abc60218..77d86812 100755 --- a/files/initrd/opt/rr/menu.sh +++ b/files/initrd/opt/rr/menu.sh @@ -1265,7 +1265,7 @@ function advancedMenu() { [ $? -ne 0 ] && return ( mkdir -p "${TMP_PATH}/sdX1" - for I in $(ls /dev/sd.*1 2>/dev/null | grep -v "${LOADER_DISK_PART1}"); do + for I in $(ls /dev/sd*1 2>/dev/null | grep -v "${LOADER_DISK_PART1}"); do mount "${I}" "${TMP_PATH}/sdX1" [ -f "${TMP_PATH}/sdX1/etc/VERSION" ] && rm -f "${TMP_PATH}/sdX1/etc/VERSION" [ -f "${TMP_PATH}/sdX1/etc.defaults/VERSION" ] && rm -f "${TMP_PATH}/sdX1/etc.defaults/VERSION" @@ -1319,7 +1319,7 @@ function advancedMenu() { mount ${I} "${TMP_PATH}/sdX1" if [ -f "${TMP_PATH}/sdX1/etc/shadow" ]; then for U in $(cat "${TMP_PATH}/sdX1/etc/shadow" | awk -F ':' '{if ($2 != "*" && $2 != "!!") {print $1;}}'); do - grep -q "status=on" "${TMP_PATH}//usr/syno/etc/packages/SecureSignIn/preference/${U}/method.config" 2>/dev/null + grep -q "status=on" "${TMP_PATH}/sdX1/usr/syno/etc/packages/SecureSignIn/preference/${U}/method.config" 2>/dev/null [ $? -eq 0 ] && SS="SecureSignIn" || SS=" " printf "\"%-36s %-16s\"\n" "${U}" "${SS}" >>"${TMP_PATH}/menu" done @@ -1349,21 +1349,20 @@ function advancedMenu() { DIALOG --title "$(TEXT "Advanced")" \ --msgbox "$(TEXT "Invalid password")" 0 0 done - NEWPASSWD="$(python -c "import crypt,getpass;pw=\"${VALUE}\";print(crypt.crypt(pw))")" + NEWPASSWD="$(python -c "from passlib.hash import sha512_crypt;pw=\"${VALUE}\";print(sha512_crypt.using(rounds=5000).hash(pw))")" ( mkdir -p "${TMP_PATH}/sdX1" - for I in $(ls /dev/sd.*1 2>/dev/null | grep -v ${LOADER_DISK_PART1}); do + for I in $(ls /dev/sd*1 2>/dev/null | grep -v "${LOADER_DISK_PART1}"); do mount "${I}" "${TMP_PATH}/sdX1" OLDPASSWD="$(cat "${TMP_PATH}/sdX1/etc/shadow" | grep "^${USER}:" | awk -F ':' '{print $2}')" - [ -n "${OLDPASSWD}" ] && sed -i "s|${OLDPASSWD}|${NEWPASSWD}|g" "${TMP_PATH}/sdX1/etc/shadow" - sed -i "s|status=on|status=off|g" "${TMP_PATH}//usr/syno/etc/packages/SecureSignIn/preference/${USER}/method.config" 2>/dev/null + [ -n "${NEWPASSWD}" -a -n "${OLDPASSWD}" ] && sed -i "s|${OLDPASSWD}|${NEWPASSWD}|g" "${TMP_PATH}/sdX1/etc/shadow" + sed -i "s|status=on|status=off|g" "${TMP_PATH}/sdX1/usr/syno/etc/packages/SecureSignIn/preference/${USER}/method.config" 2>/dev/null sync umount "${I}" done rm -rf "${TMP_PATH}/sdX1" ) 2>&1 | DIALOG --title "$(TEXT "Advanced")" \ --progressbox "$(TEXT "Resetting ...")" 20 100 - [ -f "${SHADOW_FILE}" ] && rm -rf "${SHADOW_FILE}" DIALOG --title "$(TEXT "Advanced")" \ --msgbox "$(TEXT "Password reset completed.")" 0 0 ;; diff --git a/img-gen.sh b/img-gen.sh index 55a80236..b81d3d88 100755 --- a/img-gen.sh +++ b/img-gen.sh @@ -15,37 +15,54 @@ LOOPX=$(sudo losetup -f) sudo losetup -P "${LOOPX}" "${IMAGE_FILE}" echo "Mounting image file" -mkdir -p "/tmp/p1" -mkdir -p "/tmp/p3" -sudo mount ${LOOPX}p1 "/tmp/p1" -sudo mount ${LOOPX}p3 "/tmp/p3" +sudo rm -rf "/tmp/files/p1" +sudo rm -rf "/tmp/files/p3" +sudo mkdir -p "/tmp/files/p1" +sudo mkdir -p "/tmp/files/p3" +sudo mount ${LOOPX}p1 "/tmp/files/p1" +sudo mount ${LOOPX}p3 "/tmp/files/p3" echo "Get Buildroot" -getBuildroot "2023.02.x" "br" +[ ! -f "br/bzImage-rr" -o ! -f "br/initrd-rr" ] && getBuildroot "2023.02.x" "br" [ ! -f "br/bzImage-rr" -o ! -f "br/initrd-rr" ] && return 1 -echo "Repack initrd" -cp -f "br/bzImage-rr" "/tmp/p3/bzImage-rr" -repackInitrd "br/initrd-rr" "files/initrd" "/tmp/p3/initrd-rr" - -echo "Copying files" -sudo cp -Rf "files/p1/"* "/tmp/p1" -sudo cp -Rf "files/p3/"* "/tmp/p3" -# Get extractor, LKM, addons and Modules -getLKMs "/tmp/p3/lkms" true -getAddons "/tmp/p3/addons" true -getModules "/tmp/p3/modules" true -getExtractor "/tmp/p3/extractor" - read -p "Press enter to continue" +echo "Repack initrd" +sudo cp -f "br/bzImage-rr" "/tmp/files/p3/bzImage-rr" +repackInitrd "br/initrd-rr" "files/initrd" "/tmp/files/p3/initrd-rr" + +echo "Copying files" +sudo cp -Rf "files/p1/"* "/tmp/files/p1" +sudo cp -Rf "files/p3/"* "/tmp/files/p3" +# Get extractor, LKM, addons and Modules +getLKMs "/tmp/files/p3/lkms" true +getAddons "/tmp/files/p3/addons" true +getModules "/tmp/files/p3/modules" true +getExtractor "/tmp/files/p3/extractor" + sync +# update.zip +sha256sum update-list.yml update-check.sh >sha256sum +zip -9j update.zip update-list.yml update-check.sh +while read F; do + if [ -d "/tmp/${F}" ]; then + FTGZ="$(basename "/tmp/${F}").tgz" + tar -czf "${FTGZ}" -C "/tmp/${F}" . + sha256sum "${FTGZ}" >>sha256sum + zip -9j update.zip "${FTGZ}" + sudo rm -f "${FTGZ}" + else + (cd $(dirname "/tmp/${F}") && sha256sum $(basename "/tmp/${F}")) >>sha256sum + zip -9j update.zip "/tmp/${F}" + fi +done < <(yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml) +zip -9j update.zip sha256sum + + echo "Unmount image file" -sudo umount "/tmp/p1" -sudo umount "/tmp/p3" -rmdir "/tmp/p1" -rmdir "/tmp/p3" +sudo umount "/tmp/files/p1" +sudo umount "/tmp/files/p3" sudo losetup --detach ${LOOPX} -