Skip to content

Commit

Permalink
Iprove wrapper function
Browse files Browse the repository at this point in the history
  • Loading branch information
igorpecovnik committed Sep 8, 2024
1 parent 73599b6 commit b2e7c43
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 36 deletions.
61 changes: 37 additions & 24 deletions lib/armbian-configng/config.ng.jobs.json
Original file line number Diff line number Diff line change
Expand Up @@ -287,47 +287,50 @@
"description": "Configure network interfaces",
"sub": [
{
"id": "N03",
"id": "N02",
"description": "Wired",
"sub": [
{
"id": "N04",
"id": "N06",
"description": "Show configuration",
"command": [ "show_message <<< \"$(sudo netplan get ethernets)\"" ],
"condition": "[ -f /etc/netplan/30-*static-interfaces.yaml ] || [ -f /etc/netplan/10-dhcp-all-interfaces.yaml ]",
"status": "Active",
"author": "Igor Pecovnik"
},
{
"id": "N05",
"id": "N07",
"description": "Enable DHCP on all interfaces",
"command": [
"rm -f /etc/netplan/30-*-static-interfaces.yaml",
"netplan set --origin-hint 10-dhcp-all-interfaces renderer=networkd",
"netplan set --origin-hint 10-dhcp-all-interfaces ethernets.all-eth-interfaces.dhcp4=true",
"netplan set --origin-hint 10-dhcp-all-interfaces ethernets.all-eth-interfaces.dhcp6=true",
"netplan set --origin-hint 10-dhcp-all-interfaces ethernets.all-eth-interfaces.match.name=e*",
"show_message <<< \"$(sudo netplan get ethernets)\""
],
"command": ["netplan_wrapper \"dhcp_all_wired_interfaces\" \"10-dhcp-all-interfaces\" \"\" \"networkd\""],
"status": "Active",
"author": "Igor Pecovnik",
"condition": "[ ! -f /etc/netplan/10-dhcp-all-interfaces.yaml ]"
},
{
"id": "N06",
"id": "N08",
"description": "Set fixed IP address",
"command": ["netplan_wrapper \"set_ip\" \"10-dhcp-all-interfaces\" \"ethernets\" \"networkd\""],
"status": "Active",
"doc_link": "",
"src_reference": "",
"author": "Igor Pecovnik",
"condition": "[ -f /etc/netplan/10-dhcp-all-interfaces.yaml ] || true"
},
{
"id": "N09",
"description": "Disable IPV6 in wireless configuration",
"command": [
"choose_adapter \"e\"",
"[[ -n \"$IP_ADDRESS\" ]] && netplan_wrapper \"10-dhcp-all-interfaces\" \"ethernets\" \"networkd\" \"${SELECTED_ADAPTER}\" \"$IP_ADDRESS\""
"choose_adapter \"e\" \"false\"",
"[[ -n \"$SELECTED_ADAPTER\" ]] && netplan_wrapper \"disable_ipv6\" \"10-dhcp-all-interfaces\" \"ethernets\" \"networkd\" \"${SELECTED_ADAPTER}\" \"$IP_ADDRESS\""
],
"status": "Active",
"doc_link": "",
"src_reference": "",
"author": "Igor Pecovnik",
"condition": "[ -f /etc/netplan/10-dhcp-all-interfaces.yaml ] || true"
"condition": "[ -f /etc/netplan/10-dhcp-all-interfaces.yaml ]"
},
{
"id": "N07",
"id": "N11",
"description": "Disable wired networking",
"command": [ "rm -f /etc/netplan/10-dhcp-all-interfaces.yaml /etc/netplan/30-*static-interfaces.yaml" ],
"condition": "[ -f /etc/netplan/30-*static-interfaces.yaml ] || [ -f /etc/netplan/10-dhcp-all-interfaces.yaml ]",
Expand All @@ -337,27 +340,27 @@
]
},
{
"id": "N08",
"id": "N03",
"description": "Wireless",
"sub": [
{
"id": "N09",
"id": "N25",
"description": "Show configuration",
"command": [ "show_message <<< \"$(sudo netplan get wifis)\"" ],
"condition": "[ -f /etc/netplan/20-dhcp-wlan-interface.yaml ]",
"status": "Active",
"author": "Igor Pecovnik"
},
{
"id": "N10",
"id": "N26",
"description": "Disable wireless networking",
"command": [ "rm -f /etc/netplan/20-dhcp-wlan-interface.yaml" ],
"condition": "[ -f /etc/netplan/20-dhcp-wlan-interface.yaml ]",
"status": "Active",
"author": "Igor Pecovnik"
},
{
"id": "N11",
"id": "N27",
"description": "Disable IPV6 in wireless configuration",
"command": [
"wifi_index=$(netplan get wifis | head -1 | cut -d\":\" -f1)",
Expand All @@ -369,7 +372,7 @@
"author": "Igor Pecovnik"
},
{
"id": "N12",
"id": "N28",
"description": "Enable DHCP on wireless network interface",
"command": [
"wifi_connect"
Expand All @@ -381,11 +384,21 @@
]
},
{
"id": "N02",
"id": "N04",
"description": "Show configs",
"command": [ "show_message <<< \"$(sudo netplan get all)\"" ],
"status": "Active",
"doc_link": "",
"src_reference": "",
"author": "https://github.com/igorpecovnik",
"condition": ""
},
{
"id": "N05",
"description": "Apply configs",
"command": [
"get_user_continue \"This will apply new network configuration\n\nwould you like to continue?\" process_input",
"netplan apply"
"get_user_continue \"This will apply new network configuration\n\nwould you like to continue?\" process_input",
"netplan apply"
],
"status": "Active",
"doc_link": "",
Expand Down
48 changes: 36 additions & 12 deletions lib/armbian-configng/config.ng.network.sh
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,8 @@ function choose_adapter() {
local getip=$2

LIST=()
# this functionality is exposed only on wired network
[[ $type == e ]] && LIST=("all-eth-interfaces" "")
HIDE_IP_PATTERN="^dummy0|^lo|^docker"
for f in /sys/class/net/*; do
interface=$(basename $f)
Expand All @@ -246,9 +248,9 @@ function choose_adapter() {
fi
done
LIST_LENGTH=$((${#LIST[@]}/2));
SELECTED_ADAPTER=$(whiptail --title "Select interface" --menu "" $((${LIST_LENGTH} + 8)) 40 $((${LIST_LENGTH})) "${LIST[@]}" 3>&1 1>&2 2>&3)
if [[ -n $SELECTED_ADAPTER && "${getip}" != false ]]; then
IP_ADDRESS=$(whiptail --title "Enter new IP for $SELECTED_ADAPTER" --inputbox "\nValid format: 1.2.3.4/5" 9 40 3>&1 1>&2 2>&3)
adapter=$(whiptail --title "Select interface" --menu "" $((${LIST_LENGTH} + 8)) 40 $((${LIST_LENGTH})) "${LIST[@]}" 3>&1 1>&2 2>&3)
if [[ -n $adapter && adapter != "all-eth-interfaces" && "${getip}" != false ]]; then
address=$(whiptail --title "Enter new IP for $SELECTED_ADAPTER" --inputbox "\nValid format: 1.2.3.4/5" 9 40 3>&1 1>&2 2>&3)
fi

}
Expand Down Expand Up @@ -287,15 +289,37 @@ module_options+=(
#
function netplan_wrapper() {

local config=$1
local type=$2
local renderer=$3
local adapter=$4
local address=$5
local what=$1
local config=$2
local type=$3
local renderer=$4
local adapter=$5
local address=$6

case "$1" in
dhcp_all_wired_interfaces)
rm -f /etc/netplan/30-*-static-interfaces.yaml
netplan set --origin-hint ${config} renderer=${renderer}
netplan set --origin-hint ${config} ethernets.all-eth-interfaces.dhcp4=true
netplan set --origin-hint ${config} ethernets.all-eth-interfaces.dhcp6=true
netplan set --origin-hint ${config} ethernets.all-eth-interfaces.match.name=e*
show_message <<< "$(sudo netplan get ${type})"
;;
set_ip)
choose_adapter "e"
netplan set --origin-hint ${config} renderer=${renderer}
netplan set --origin-hint ${config} ethernets.${adapter}.addresses=[$address]
show_message <<< "$(sudo netplan get ${type})"
;;
disable_ipv6)
netplan set --origin-hint ${config} renderer=${renderer}
netplan set --origin-hint ${config} ethernets.${adapter}.dhcp6=false
show_message <<< "$(sudo netplan get ${type})"
;;
*)
esac



#rm -f /etc/netplan/${config}.yaml
netplan set --origin-hint ${config} renderer=${renderer}
netplan set --origin-hint ${config} ethernets.${adapter}.addresses=[$address]
show_message <<< "$(sudo netplan get ${type})"

}

0 comments on commit b2e7c43

Please sign in to comment.