network: rework static ip function

Signed-off-by: AuxXxilium <info@auxxxilium.tech>
This commit is contained in:
AuxXxilium
2024-02-16 18:36:36 +01:00
parent ae013fedec
commit 42afc5e550
3 changed files with 61 additions and 70 deletions

View File

@@ -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"

View File

@@ -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}

View File

@@ -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}