From: Matthias Kruk Date: Sat, 3 Apr 2021 01:25:20 +0000 (+0900) Subject: include/net: Create net module-group and add iface module to it X-Git-Url: https://git.corax.cc/?a=commitdiff_plain;h=bb44a137a660b642c68ae8f89d0b1375c66cc5f6;p=toolbox include/net: Create net module-group and add iface module to it Network-related modules should be grouped. This commit adds the "net" module-group and moves the iface module to this group. --- diff --git a/include/iface.sh b/include/iface.sh deleted file mode 100644 index 47df89a..0000000 --- a/include/iface.sh +++ /dev/null @@ -1,155 +0,0 @@ -#!/bin/bash - -__init() { - return 0 -} - -iface_exists() { - local iface - - iface="$1" - - if grep -F "$iface" < /proc/net/dev &> /dev/null; then - return 0 - fi - - return 1 -} - -iface_get_state() { - local iface - local state - - iface="$1" - - if ! state=$(ip link show "$iface" 2>/dev/null); then - return 1 - fi - - if ! state=$(echo "$state" | grep -oP 'state[ ]+\K[^ ]+'); then - return 1 - fi - - case "$state" in - "UP") - echo "1" - ;; - - "DOWN") - echo "0" - ;; - - *) - return 1 - ;; - esac - - return 0 -} - -iface_set_state() { - local iface - local state - - iface="$1" - state="$2" - - case "$state" in - "0") - state="down" - ;; - - "1") - state="up" - ;; - - *) - return 1 - ;; - esac - - if ! /sbin/ifconfig "$iface" "$state" &>/dev/null; then - return 1 - fi - - return 0 -} - -iface_get_address() { - local iface - local proto - - local addr_all - - iface="$1" - proto="$2" - - if ! addr_all=$(ip address show dev "$iface"); then - return 1 - fi - - if ! echo "$addr_all" | grep -oP "${proto}[ \\t]+\\K[^ ]+"; then - return 1 - fi - - return 0 -} - -iface_get_essid() { - local iface - local addr_all - - iface="$1" - - if ! addr_all=$(/sbin/iwconfig 2>&1); then - return 1 - fi - - if ! echo "$addr_all" | grep -oP "$iface.*ESSID:\"\\K[^\"]+"; then - return 1 - fi - - return 0 -} - -_iface_parse_iwlist() { - local regex_ssid='Cell [0-9]+ - Address: ([0-9A-Fa-f:]+)' - local regex_signal='Quality=([0-9/]+)' - local regex_essid='ESSID:"(.*)"' - - local line - local ssid - local essid - local strength - - while read -r line; do - if [[ "$line" =~ $regex_ssid ]]; then - #start of a new network - ssid="${BASH_REMATCH[1]}" - essid="" - strength="" - elif [[ "$line" =~ $regex_signal ]]; then - strength="${BASH_REMATCH[1]}" - elif [[ "$line" =~ $regex_essid ]]; then - essid="${BASH_REMATCH[1]}" - fi - - if [ -n "$ssid" ] && [ -n "$essid" ] && [ -n "$strength" ]; then - echo "$ssid $strength $essid" - fi - done -} - -iface_scan() { - local iface - local raw - - iface="$1" - - if ! raw=$(iwlist "$iface" scan 2>&1); then - return 1 - fi - - echo "$raw" | _iface_parse_iwlist - return 0 -} diff --git a/include/net/iface.sh b/include/net/iface.sh new file mode 100644 index 0000000..ef43792 --- /dev/null +++ b/include/net/iface.sh @@ -0,0 +1,155 @@ +#!/bin/bash + +__init() { + return 0 +} + +net_iface_exists() { + local iface + + iface="$1" + + if grep -F "$iface" < /proc/net/dev &> /dev/null; then + return 0 + fi + + return 1 +} + +net_iface_get_state() { + local iface + local state + + iface="$1" + + if ! state=$(ip link show "$iface" 2>/dev/null); then + return 1 + fi + + if ! state=$(echo "$state" | grep -oP 'state[ ]+\K[^ ]+'); then + return 1 + fi + + case "$state" in + "UP") + echo "1" + ;; + + "DOWN") + echo "0" + ;; + + *) + return 1 + ;; + esac + + return 0 +} + +net_iface_set_state() { + local iface + local state + + iface="$1" + state="$2" + + case "$state" in + "0") + state="down" + ;; + + "1") + state="up" + ;; + + *) + return 1 + ;; + esac + + if ! /sbin/ifconfig "$iface" "$state" &>/dev/null; then + return 1 + fi + + return 0 +} + +net_iface_get_address() { + local iface + local proto + + local addr_all + + iface="$1" + proto="$2" + + if ! addr_all=$(ip address show dev "$iface"); then + return 1 + fi + + if ! echo "$addr_all" | grep -oP "${proto}[ \\t]+\\K[^ ]+"; then + return 1 + fi + + return 0 +} + +net_iface_get_essid() { + local iface + local addr_all + + iface="$1" + + if ! addr_all=$(/sbin/iwconfig 2>&1); then + return 1 + fi + + if ! echo "$addr_all" | grep -oP "$iface.*ESSID:\"\\K[^\"]+"; then + return 1 + fi + + return 0 +} + +_net_iface_parse_iwlist() { + local regex_ssid='Cell [0-9]+ - Address: ([0-9A-Fa-f:]+)' + local regex_signal='Quality=([0-9/]+)' + local regex_essid='ESSID:"(.*)"' + + local line + local ssid + local essid + local strength + + while read -r line; do + if [[ "$line" =~ $regex_ssid ]]; then + #start of a new network + ssid="${BASH_REMATCH[1]}" + essid="" + strength="" + elif [[ "$line" =~ $regex_signal ]]; then + strength="${BASH_REMATCH[1]}" + elif [[ "$line" =~ $regex_essid ]]; then + essid="${BASH_REMATCH[1]}" + fi + + if [ -n "$ssid" ] && [ -n "$essid" ] && [ -n "$strength" ]; then + echo "$ssid $strength $essid" + fi + done +} + +net_iface_scan() { + local iface + local raw + + iface="$1" + + if ! raw=$(iwlist "$iface" scan 2>&1); then + return 1 + fi + + echo "$raw" | _iface_parse_iwlist + return 0 +}