From 42afc5e550c7b6d5315db92dc3fedcc52cd09007 Mon Sep 17 00:00:00 2001 From: AuxXxilium Date: Fri, 16 Feb 2024 18:36:36 +0100 Subject: [PATCH] network: rework static ip function Signed-off-by: AuxXxilium --- files/initrd/opt/arc/arc.sh | 126 ++++++++++++++++------------------- files/initrd/opt/arc/boot.sh | 2 +- files/initrd/opt/arc/init.sh | 3 +- 3 files changed, 61 insertions(+), 70 deletions(-) diff --git a/files/initrd/opt/arc/arc.sh b/files/initrd/opt/arc/arc.sh index a48b2f1a..11d17921 100755 --- a/files/initrd/opt/arc/arc.sh +++ b/files/initrd/opt/arc/arc.sh @@ -2447,76 +2447,65 @@ function credits() { ############################################################################### # allow setting Static IP for DSM function staticIPMenu() { + # Get Amount of NIC + ETHX=$(ls /sys/class/net/ | grep -v lo) || true + writeConfigKey "arc.staticip" "false" "${USER_CONFIG_FILE}" mkdir -p "${TMP_PATH}/sdX1" for I in $(ls /dev/sd.*1 2>/dev/null | grep -v "${LOADER_DISK}1"); do mount "${I}" "${TMP_PATH}/sdX1" - [ -f "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-eth0" ] && . "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-eth0" - umount "${I}" - break + for ETH in ${ETHX}; do + [ -f "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-${ETH}" ] && cp -f "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-${ETH}" "${TMP_PATH}/ifcfg-${ETH}" + [ -f "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-${ETH}" ] && break + NETMASK=$(cat "${TMP_PATH}/ifcfg-${ETH}" | grep BOOTPROTO | awk -F'=' '{print $2}') + TEXT="" + TEXT+="This feature will allow you to set a static IP for your NIC.\n" + TEXT+="Actual Settings are:\n" + TEXT+="\nNIC: ${ETH}\n" + TEXT+="Mode: ${BOOTPROTO}\n" + if [ "${BOOTPROTO}" = "static" ]; then + IPADDR=$(cat "${TMP_PATH}/ifcfg-${ETH}" | grep IPADDR | awk -F'=' '{print $2}') + NETMASK=$(cat "${TMP_PATH}/ifcfg-${ETH}" | grep NETMASK | awk -F'=' '{print $2}') + TEXT+="IP: ${IPADDR}\n" + TEXT+="NETMASK: ${NETMASK}\n" + fi + TEXT+="Do you want to change Config?" + dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" \ + --yesno "${TEXT}" 0 0 + [ $? -ne 0 ] && continue + dialog --clear --backtitle "$(backtitle)" --title "DHCP/Static IP" \ + --menu "DHCP or STATIC?" 0 0 0 \ + 1 "DHCP" \ + 2 "STATIC" \ + 2>"${TMP_PATH}/opts" + opts="$(<"${TMP_PATH}/opts")" + [ -z "${opts}" ] && continue + if [ ${opts} -eq 1 ]; then + echo -e "DEVICE=${ETH}\nBOOTPROTO=dhcp\nONBOOT=yes\nIPV6INIT=off" >"${TMP_PATH}/ifcfg-${ETH}" + deleteConfigKey "ip.${ETH}" "" "${USER_CONFIG_FILE}" + deleteConfigKey "netmask.${ETH}" "" "${USER_CONFIG_FILE}" + elif [ ${opts} -eq 2 ]; then + dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" \ + --inputbox "Type a Static IP\nEq: 192.168.0.1" 0 0 "${IPADDR}" \ + 2>"${TMP_PATH}/resp" + [ $? -ne 0 ] && continue + IPADDR="$(<"${TMP_PATH}/resp")" + dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" \ + --inputbox "Type a Netmask\nEq: 255.255.255.0" 0 0 "${NETMASK}" \ + 2>"${TMP_PATH}/resp" + [ $? -ne 0 ] && continue + NETMASK="$(<"${TMP_PATH}/resp")" + writeConfigKey "arc.staticip" "true" "${USER_CONFIG_FILE}" + writeConfigKey "ip.${ETH}" "${IPADDR}" "${USER_CONFIG_FILE}" + writeConfigKey "netmask.${ETH}" "${NETMASK}" "${USER_CONFIG_FILE}" + echo -e "DEVICE=${ETH}\nBOOTPROTO=static\nONBOOT=yes\nIPV6INIT=off\nIPADDR=${IPADDR}\nNETMASK=${NETMASK}" >"${TMP_PATH}/ifcfg-${ETH}" + NETMASK=$(convert_netmask "${NETMASK}") + ip addr add ${IPADDR}/${NETMASK} dev ${ETH} + fi + [ -f "${TMP_PATH}/ifcfg-${ETH}" ] && cp -f "${TMP_PATH}/ifcfg-${ETH}" "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-${ETH}" + done + umount "${I}" + break done - rm -rf "${TMP_PATH}/sdX1" - TEXT="" - TEXT+="This feature will allow you to set a static IP for eth0.\n" - TEXT+="Actual Settings are:\n" - TEXT+="Mode: ${BOOTPROTO}\n" - if [ "${BOOTPROTO}" = "static" ]; then - TEXT+="IP: ${IPADDR}\n" - TEXT+="NETMASK: ${NETMASK}\n" - fi - TEXT+="Do you want to change Config?" - dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" \ - --yesno "${TEXT}" 0 0 - [ $? -ne 0 ] && return 1 - dialog --clear --backtitle "$(backtitle)" --title "DHCP/Static IP" \ - --menu "DHCP or STATIC?" 0 0 0 \ - 1 "DHCP" \ - 2 "STATIC" \ - 2>"${TMP_PATH}/opts" - opts="$(<"${TMP_PATH}/opts")" - [ -z "${opts}" ] && return 1 - if [ ${opts} -eq 1 ]; then - echo -e "DEVICE=eth0\nBOOTPROTO=dhcp\nONBOOT=yes\nIPV6INIT=off" >"${TMP_PATH}/ifcfg-eth0" - elif [ ${opts} -eq 2 ]; then - dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" \ - --inputbox "Type a Static IP\nEq: 192.168.0.1" 0 0 "${IPADDR}" \ - 2>"${TMP_PATH}/resp" - [ $? -ne 0 ] && return 1 - IPADDR="$(<"${TMP_PATH}/resp")" - dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" \ - --inputbox "Type a Netmask\nEq: 255.255.255.0" 0 0 "${NETMASK}" \ - 2>"${TMP_PATH}/resp" - [ $? -ne 0 ] && return 1 - NETMASK="$(<"${TMP_PATH}/resp")" - echo -e "DEVICE=eth0\nBOOTPROTO=static\nONBOOT=yes\nIPV6INIT=off\nIPADDR=${IPADDR}\nNETMASK=${NETMASK}" >"${TMP_PATH}/ifcfg-eth0" - fi - dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" \ - --yesno "Do you want to set this Config?" 0 0 - [ $? -ne 0 ] && return 1 - ( - mkdir -p "${TMP_PATH}/sdX1" - 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/sysconfig/network-scripts/ifcfg-eth0" ] && cp -f "${TMP_PATH}/ifcfg-eth0" "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-eth0" - sync - umount "${I}" - done - rm -rf "${TMP_PATH}/sdX1" - ) - if [[ -n "${IPADDR}" && -n "${NETMASK}" ]]; then - NETMASK=$(convert_netmask "${NETMASK}") - ip addr add ${IPADDR}/${NETMASK} dev eth0 - writeConfigKey "arc.staticip" "true" "${USER_CONFIG_FILE}" - writeConfigKey "arc.ip" "${IPADDR}" "${USER_CONFIG_FILE}" - writeConfigKey "arc.netmask" "${NETMASK}" "${USER_CONFIG_FILE}" - dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" --colors --aspect 18 \ - --msgbox "Network set to STATIC!" 0 0 - else - writeConfigKey "arc.staticip" "false" "${USER_CONFIG_FILE}" - writeConfigKey "arc.ip" "" "${USER_CONFIG_FILE}" - writeConfigKey "arc.netmask" "" "${USER_CONFIG_FILE}" - dialog --backtitle "$(backtitle)" --title "DHCP/Static IP" --colors --aspect 18 \ - --msgbox "Network set to DHCP!" 0 0 - fi } ############################################################################### @@ -2724,6 +2713,7 @@ function resetLoader() { initConfigKey "arc.hddsort" "false" "${USER_CONFIG_FILE}" initConfigKey "arc.version" "${ARC_VERSION}" "${USER_CONFIG_FILE}" initConfigKey "ip" "{}" "${USER_CONFIG_FILE}" + initConfigKey "netmask" "{}" "${USER_CONFIG_FILE}" initConfigKey "mac" "{}" "${USER_CONFIG_FILE}" deleteConfigKey "cmdline.SataPortMap" "${USER_CONFIG_FILE}" deleteConfigKey "cmdline.DiskIdxMap" "${USER_CONFIG_FILE}" @@ -2738,7 +2728,7 @@ function resetLoader() { CONFDONE="$(readConfigKey "arc.confdone" "${USER_CONFIG_FILE}")" BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" dialog --backtitle "$(backtitle)" --title "Reset Loader" --aspect 18 \ - --yesno "Clean successful.\nReboot?" 0 0 + --yesno "Reset successful.\nReboot?" 0 0 [ $? -ne 0 ] && continue exec reboot clear @@ -2833,7 +2823,7 @@ while true; do fi echo "p \"Arc Patch Settings \" " >>"${TMP_PATH}/menu" echo "S \"Custom StoragePanel \" " >>"${TMP_PATH}/menu" - #echo "D \"DHCP/Static Loader IP \" " >>"${TMP_PATH}/menu" TO-DO + echo "D \"DHCP/Static Loader IP \" " >>"${TMP_PATH}/menu" TO-DO fi if [ "${ADVOPTS}" = "true" ]; then echo "5 \"\Z1Hide Advanced Options\Zn \" " >>"${TMP_PATH}/menu" diff --git a/files/initrd/opt/arc/boot.sh b/files/initrd/opt/arc/boot.sh index 3cdcc37b..adb28a5e 100755 --- a/files/initrd/opt/arc/boot.sh +++ b/files/initrd/opt/arc/boot.sh @@ -179,7 +179,7 @@ elif [ "${DIRECTBOOT}" = "false" ]; then while true; do ARCIP="$(readConfigKey "ip.${ETH}" "${USER_CONFIG_FILE}")" if [[ "${STATICIP}" = "true" && -n "${ARCIP}" ]]; then - NETMASK="$(readConfigKey "arc.netmask" "${USER_CONFIG_FILE}")" + NETMASK="$(readConfigKey "netmask.${ETH}" "${USER_CONFIG_FILE}")" IP="${ARCIP}" NETMASK=$(convert_netmask "${NETMASK}") ip addr add ${IP}/${NETMASK} dev ${ETH} diff --git a/files/initrd/opt/arc/init.sh b/files/initrd/opt/arc/init.sh index 1e43f375..bb37239f 100755 --- a/files/initrd/opt/arc/init.sh +++ b/files/initrd/opt/arc/init.sh @@ -57,6 +57,7 @@ initConfigKey "arc.hddsort" "false" "${USER_CONFIG_FILE}" initConfigKey "arc.version" "${ARC_VERSION}" "${USER_CONFIG_FILE}" initConfigKey "device" "{}" "${USER_CONFIG_FILE}" initConfigKey "ip" "{}" "${USER_CONFIG_FILE}" +initConfigKey "netmask" "{}" "${USER_CONFIG_FILE}" initConfigKey "mac" "{}" "${USER_CONFIG_FILE}" # Init Network @@ -142,7 +143,7 @@ for ETH in ${ETHX}; do while true; do ARCIP="$(readConfigKey "ip.${ETH}" "${USER_CONFIG_FILE}")" if [[ "${STATICIP}" = "true" && -n "${ARCIP}" ]]; then - NETMASK="$(readConfigKey "arc.netmask" "${USER_CONFIG_FILE}")" + NETMASK="$(readConfigKey "netmask.${ETH}" "${USER_CONFIG_FILE}")" IP="${ARCIP}" NETMASK=$(convert_netmask "${NETMASK}") ip addr add ${IP}/${NETMASK} dev ${ETH}