diff options
| -rwxr-xr-x | setnet.dash | 1831 | ||||
| -rwxr-xr-x | setnet.sh | 5 | 
2 files changed, 1 insertions, 1835 deletions
| diff --git a/setnet.dash b/setnet.dash deleted file mode 100755 index e005efa..0000000 --- a/setnet.dash +++ /dev/null @@ -1,1831 +0,0 @@ -#!/bin/sh - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or (at -# your option) any later version. -#  -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -# General Public License for more details. -#  -# You should have received a copy of the GNU General Public License -# along with this program.  If not, see <http://www.gnu.org/licenses/>. -# -# ---------------------------------------------------------------------- -# -#   setnet.sh -- view and configure network interfaces -# -# ---------------------------------------------------------------------- -# -# Copyleft (C) Vincenzo "KatolaZ" Nicosia (katolaz@freaknet.org) -- -# (2016, 2017) -# -# - - -## -## Initialisation -##  - -VERSION=0.2 - - -TOPSTR="setnet-${VERSION} [user: $(id -run)]" -DIALOG="dialog --backtitle \"${TOPSTR}\" " - - -############################### -##                           ## -## Internal config variables ## -##                           ## -############################### - -## -## Required dependencies. If any of those commands is missing, -## the script will exit -## - -HARD_DEPS="ip dhclient dialog netstat" - -## -## Suggested dependencies. The script will issue a warning if any of -## those commands is missing -## - -SOFT_DEPS="wpa_cli wpa_supplicant" - -## -## Optional dependencies. The script will check if those dependencies -## exist, and if they do, will set a variable HAS_OPTS which contains -## the names of the commands actually found -## - -OPT_DEPS="host arping traceroute netstat pastebinit" - -################################# - -##################################### -##                                 ## -## HEIGHT/WIDTH of various dialogs ## -##                                 ## -##################################### - -## -## Regular windows -## - -WINDOW_WIDTH=75 -WINDOW_HEIGHT=20 - -## -## Infoboxes -## -INFO_WIDTH=40 -INFO_HEIGHT=10 - - -## -## Forms -## -FORM_WIDTH=60 -FORM_HEIGHT=12 - -## -## Large windows -## - -LARGE_WIDTH=80 -LARGE_HEIGHT=20 - - -################################# - -################################ -##                            ## -## Supported network families ## -##                            ## -################################ - -NET_FAMILIES="inet inet6" - -################################# - -## -## Load the configuration file "setnetrc" -## - -##function  -load_setnetrc(){ - -	WPA_FILE="" -	LOGFILE="" -	## If we were given a parameter, is the rc file to load... -	##	 -	if [ $# -ge 1 ]; then -		  . "$1" -		return -	fi -	 -	## -	## Otherwise, let's look in the standard locations, namely: -	## - -	## -	## 1) /etc/setnetrc -	## - -	if [ -f /etc/setnetrc ]; then -     SETNETRC=/etc/setnetrc -	fi - -	## -	## 2) ~/.setnetrc -	## - -	if [ -f ~/.setnetrc ]; then -     SETNETRC=~/.setnetrc -	fi - -  . ${SETNETRC} - -	if [ -z ${WPA_FILE} ]; then -		echo "Could not find WPA_FILE defined anywhere. Exiting" -		exit 1 -	fi - -	if [ -z ${LOGFILE} ]; then -		echo "Could not find LOGFILE defined anywhere. Exiting" -		exit 1 -	fi -} - - -## -## handler called upon exit/signal (NONE HUP INT TRAP TERM QUIT) -## - -##function  -cleanup(){ -	rm -f ${TMPFILE} -	rm -f ${WPA_PIDFILE} -} - - -################### -#                 # -#     LOGGING     # -#                 # -################### - -## -## log() takes two arguments, namely the label and the message -## -## -##function  -log(){ -     -    ##local -    LABEL=$1 -    ##local -    MSG=$2 -     -	  echo  "${LABEL}:" "${MSG}" >> "${LOGFILE}" -	   -} - -## -## Check whether the shell which called the script is supported, or -## exit. Currently, we support the follwing shells: -## -## - bash -## - busybox -## - dash -## - ksh -## - mksh -## - posh -## - sh -## - yash -## - -##function -check_shell(){ - -    ## -    ## FIXME!!! THIS TEST DOES NOT WORK yet... -    ##  -    CUR_SH=$(ps -p $$ -o comm=) -    case ${CUR_SH} in -        ash|bash|busybox|dash|ksh|mksh|posh|sh|yash) -            log "check_shell" "The current shell (${CUR_SH}) is supported" -            return -            ;; -        *) -            log "check_shell" "The current shell (${CUR_SH}) is not supported" -            echo "The current shell (${CUR_SH}) is not supported. Exiting..." -            exit 1 -            ;; -    esac -} - - -## -## Check dependencies -## -## - check if the current shell is supported through check_shell -## -## - each command in HARD_DEPS MUST exist, or the script exits -## -## - each command in SOFT_DEPS SHOULD exist, or the script will log a -##   warning -## -## - each command in OPT_DEPS MIGHT exist, and if it does its name is -##   included in the variable "HAS_OPTS" -## - -##function -check_deps(){ - -    ## FIXME FIRST.... check_shell -     -    for h in ${HARD_DEPS}; do -        _W=$(which ${h}) -        if [ -z ${_W} ]; then -            echo "Error: required command \"${h}\" not found. Exiting..." -            exit 1 -        fi -        log "check_deps" "NOTICE: required command '${h}'...found" -    done -     -    for s in ${SOFT_DEPS}; do -        _S=$(which ${s}) -        if [ -z ${_S} ]; then -            log "check_deps" "WARNING: suggested command '${s}' not found! Some functions might not work properly" -        fi -    done - -    HAS_OPTS="" -    for o in ${OPT_DEPS}; do -        _O=$(which ${o}) -        if [ -n ${_O} ]; then -            HAS_OPTS=" ${HAS_OPTS} ${o} " -            log "check_deps" "NOTICE: optional command '${o}'...found" -        fi -    done -     -} - -## -## Generic function fo unimplemented features. It just pops up a -## message-box and returns -## - -##function -unimplemented(){ - -    LABEL=$1 -     -		eval "${DIALOG}  --msgbox 'Sorry! '$LABEL' not implemented, yet!' \ -						  ${INFO_HEIGHT} ${INFO_WIDTH}" 2>${TMPFILE} -} - - - -########################################## - -##function  -edit_file(){ - -    ##local  -    FILEIN=$1 -	  log "edit_file" "editing file ${FILEIN}" -	  eval "${DIALOG} --title 'Editing file: ${FILEIN}' \ -			--editbox ${FILEIN} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" 2> ${TMPFILE} -     -	  if [ $? -eq 0 ]; then -		    log "edit_file" "Copying ${TMPFILE} into ${FILEIN}" -		    if cp "${TMPFILE}" "${FILEIN}" -		    then -			      eval "${DIALOG}   --clear --msgbox 'File ${FILEIN} saved successfully' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -		    else -			      eval "${DIALOG}   --clear --msgbox 'Error saving file ${FILEIN}' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -		    fi -	  else -		    log "edit_file" "Editing of ${FILEIN} aborted..." -		    eval "${DIALOG}   --clear --msgbox 'File ${FILEIN} not saved' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -	  fi -} - - - - -## -## Read all the configured addresses for a given inet family -## -##function  -get_addr_family(){ -	 -##local  -    DEVNAME=$1 -    ##local  -    DEVFAMILY=$2 -     -    NUMADDR=$(ip -f "${DEVFAMILY}" addr show "${DEVNAME}" | grep -c "${DEVFAMILY}") -	  ADDR_STR="" -	  for i in $(seq ${NUMADDR}); do  -		    ADDR=$(ip -f "${DEVFAMILY}" addr show "${DEVNAME}" | grep "${DEVFAMILY}" | \ -			                tail -n +$i | head -1 | sed -r -e "s:^\ +::g" | cut -d " " -f 2,4,6 |\ -			                sed -r -e "s:\ : -- :g") -		    ADDR_STR="${ADDR_STR}\n${DEVFAMILY}: ${ADDR}\n" -	  done -} - -## -## Show the current configuration of a given device -## - -##function  -show_device_conf(){ - -##local  -DEVNAME=$1 -	if [ -z "${DEVNAME}" ]; then -		return -1 -	fi - -	DEVMAC=$(ip link show "${DEVNAME}" | tail -n +2 | sed -r 's/^\ +//g' | cut -d " " -f 2) -	DEVCONF="MAC: ${DEVMAC}\n" - -	log "show_device_conf" "NET_FAMILIES: \"${NET_FAMILIES}\"" -	 -	for f in ${NET_FAMILIES}; do -		  get_addr_family ${DEVNAME} ${f} -		  log "show_device_conf" "family: ${f} ADDR_STR: \"${ADDR_STR}\"" -		 -		if [ -z "${ADDR_STR}" ]; then  -			DEVCONF="${DEVCONF}${f}: Unconfigured\n" -		else -			DEVCONF="${DEVCONF}${ADDR_STR}" -		fi -		log "show_device_conf" "DEVCONF: ${DEVCONF}" -	done - -	DEVCONF="${DEVCONF}\n== name servers ==\n$(grep '^nameserver' /etc/resolv.conf)" -	 -	eval "${DIALOG}   --clear --title 'Current configuration of device: ${DEVNAME}' \ -		--msgbox '\n\n${DEVCONF}' ${WINDOW_HEIGHT} ${WINDOW_WIDTH} " -	return 0 - -} - - - -##function  -config_ethernet_static(){ - -##local  -DEV_IP="192.168.1.2" -##local  -DEV_NET="192.168.1.0" -##local  -DEV_NETMASK="255.255.255.0" -##local  -DEV_GW="192.168.1.1" -##local  -DEV_DNS1="208.67.222.222" -##local  -DEV_DNS2="208.67.220.220" - -##local  -DEVNAME=$1 - -	exec 3>&1	 -	eval "${DIALOG}  --clear --form 'Set network for device: ${DEVNAME}'" \ -	${FORM_HEIGHT} ${FORM_WIDTH} 0 \ -	"IP"            1 1 "${DEV_IP}"    1 16 16 16 \ -	"Network"       2 1 "${DEV_NET}"    2 16 16 16 \ -	"Netmask"       3 1 "${DEV_NETMASK}"  3 16 16 16 \ -	"Gateway"       4 1 "${DEV_GW}"    4 16 16 16 \ -	"Primary DNS"   5 1 "${DEV_DNS1}" 5 16 16 16 \ -	"Secondary DNS" 6 1 "${DEV_DNS2}" 6 16 16 16 2> ${TMPFILE} - -	if [ $? -eq 1 ]; then  -		eval "${DIALOG}  --infobox 'Configuration of ${DEVNAME} aborted' \ -		${INFO_HEIGHT} ${INFO_WIDTH}" -		return -	fi - -	read -d "*" DEV_IP DEV_NET DEV_NETMASK DEV_GW DEV_DNS1  DEV_DNS2 < ${TMPFILE} -	eval "${DIALOG}  --msgbox 'Proposed configuration of ${DEVNAME}:\n ${DEV_IP}\n${DEV_NET}\n${DEV_NETMASK}\n${DEV_GW}\n${DEV_DNS1}\n${DEV_DNS2}'\ -		${WINDOW_HEIGHT} ${WINDOW_WIDTH}" -	 -	## Configure IP -	 -	ip link set "${DEVNAME}" down -	ip link set "${DEVNAME}" up -	ip address flush dev "${DEVNAME}" -	ip address add "${DEV_IP}/${DEV_NETMASK}" dev "${DEVNAME}" -	 -	## Configure GW -	ip route flush dev "${DEVNAME}" -	ip route add "${DEV_NET}/${DEV_NETMASK}" dev "${DEVNAME}" -	ip route add default via "${DEV_GW}" -	 -	## Configure DNS -	mv /etc/resolv.conf /etc/resolv.conf.bak -	if [ -n "${DEV_DNS1}" ]; then -		echo "nameserver ${DEV_DNS1}" >> /etc/resolv.conf -	fi -	if [ -n "${DEV_DNS2}" ]; then -		echo "nameserver ${DEV_DNS2}" >> /etc/resolv.conf -	fi -	show_device_conf "${DEVNAME}" -} - -##function  -config_ethernet_dhcp(){ - -##local  -DEVNAME=$1 - -	eval "${DIALOG}  --msgbox 'Running \"dhclient ${DEVNAME}\"' ${INFO_HEIGHT} ${INFO_WIDTH}" -	dhclient -r ${DEVNAME}  -	dhclient ${DEVNAME}  -	show_device_conf ${DEVNAME} -} - - -##function  -config_ethernet(){ - -##local  -    DEVNAME=$1 -	   -    while true; do -		    eval "${DIALOG}  --clear --cancel-label 'Up' \ -		--menu 'Configuring ${DEVNAME}' ${INFO_HEIGHT} ${INFO_WIDTH} 4 \ -		'DHCP' ''\ -		'Static' ''" 2>${TMPFILE} -		    if [ $? -eq 1 ]; then -			      return -		    fi -		    ACTION=$(cat ${TMPFILE}) -		    case ${ACTION} in -			      "Static") -				        config_ethernet_static ${DEVNAME} -				        ;; -			      "DHCP") -				        config_ethernet_dhcp ${DEVNAME} -				        ;; -		    esac -	  done -     -} - -##function  -wifi_essid_from_mac(){ - -    ##local  -    DEVNAME=$1 -    ##local  -    W_MAC=$2 -	   -    W_ESSID=$(wpa_cli -i "${DEVNAME}" scan_results | grep -E "^${W_MAC}" | \ -       sed -r -e 's/\t/\|/g' | cut -d "|" -f 5) - -	log "wifi_essid_from_mac" "Recovered ESSID: ${W_ESSID}" -} - -##function  -wifi_flags_from_mac(){ -##local  -    DEVNAME=$1 -##local  -    W_MAC=$2 - -    W_FLAGS=$(wpa_cli -i "${DEVNAME}" scan_results | grep -E "^${W_MAC}" | \ -       sed -r -e 's/\t/\|/g' | cut -d "|" -f 4) -	  log "wifi_essid_from_mac" "Recovered W_FLAGS: ${W_FLAGS}" -     -} - - -##function  -wifi_network_list(){ - -##local  -    DEVNAME=$1 -	  wpa_cli -i ${DEVNAME} list_networks | tail -n +2 | sed -r -e 's/\t/\|/g' > ${TMPFILE} -     -	  NETLIST="" -	  LAST_IFS=$IFS -	  IFS="|" -	  while read NETNUM NETESSID NETBSSID NETFLAGS; do -		    IS_DIS=$(echo ${NETFLAGS} | sed -r -e 's/\[//g;s/\]//g' | grep -c -i disabled ) -		    if [ ${IS_DIS} -eq 1 ]; then -		        STATUS="(DIS)" -		    else -		        STATUS="(ENAB)" -		    fi -		    IS_CUR=$(echo ${NETFLAGS} | sed -r -e 's/\[//g;s/\]//g' | grep -c -i current ) -		    if [ ${IS_CUR} -eq 1 ]; then -			      STATUS="${STATUS}(CUR)" -		    fi -         -		     -		    NETLIST="${NETLIST} ${NETNUM} \"${NETESSID}-${STATUS}\"" -	  done < ${TMPFILE} -	  IFS=${LAST_IFS} -     -	  log "wifi_network_list" "NETLIST: ${NETLIST}" -} - - -## -## Manage the authentication for a given wifi ESSID -## -##function  -wifi_authenticate(){ -	 -##local  -    DEVNAME=$1 -##local  -    W_MAC=$2 - - -    log "wifi_authenticate" "configuring ${DEVNAME} on ${W_MAC}" -	  ## This will set the variable W_ESSID appropriately -	  wifi_essid_from_mac ${DEVNAME} ${W_MAC} -	   -	  ## This will set the variable W_FLAGS appropriately -	  wifi_flags_from_mac ${DEVNAME} ${W_MAC} -     -	   -	  log "wifi_authenticate" "configuring essid: ${W_ESSID} on device: ${DEVNAME}" -	  log "wifi_authenticate" "W_FLAGS: ${W_FLAGS}" -     -	   -	  NET_EXISTS=$(wpa_cli -i ${DEVNAME} list_networks | tail -n +2 | sed -r -e 's/\t/\|/g' \ -                        | cut -d "|" -f 2 | grep -c "${W_ESSID}$" ) -	  if [ ${NET_EXISTS} != 0 ]; then -		    NET_NUM=$(wpa_cli -i ${DEVNAME} list_networks | tail -n +2 | sed -r -e 's/\t/\|/g' \ -                         | cut -d "|" -f 1,2 | grep "${W_ESSID}$" | cut -d "|" -f 1) -		    wpa_cli -i ${DEVNAME} remove_network ${NET_NUM} > ${TMPFILE} -		    STATUS=$(cat ${TMPFILE}) -		    if [ "${STATUS}" != "OK" ]; then -			      eval "${DIALOG}  --msgbox 'Error while removing existing network:\n$essid: {W_ESSID}'" -			      ${INFO_HEIGHT} ${INFO_WIDTH} -			      return -		    fi -	  fi -     -	  HAS_WPA=$(echo "${W_FLAGS}" | grep -E -c "WPA.*-PSK" ) -     -	  log "wifi_authenticate" "HAS_WPA: \"${HAS_WPA}\""  -	   -	  ### This section will configure WPA-PSK or WPA2-PSK -	  if [ "${HAS_WPA}" != "0" ]; then -		    PSK="" -		    PSK_LENGTH=${#PSK} -		    while [ ${PSK_LENGTH} -le 7 ]; do -			      eval "${DIALOG}  --insecure --inputbox 'Please insert WPA PSK\n(8 characters)' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}"  2> ${TMPFILE} -			      if [ $? -eq 1 ]; then -				        eval "${DIALOG}  --clear --msgbox 'Network configuration aborted!!!' \ -					   ${INFO_HEIGHT} ${INFO_WIDTH}" -				        return 1 -			      fi -			      PSK=$(cat ${TMPFILE}) -			      PSK_LENGTH=${#PSK} -		    done -			   -		     -		    NET_NUM=$(wpa_cli -i ${DEVNAME} add_network | tail -1) -         -		    wpa_cli -i ${DEVNAME} set_network ${NET_NUM} ssid "\"${W_ESSID}\"" -		    wpa_cli -i ${DEVNAME} set_network ${NET_NUM} psk \"${PSK}\" -		    ## remove the password from tmpfile -		    echo "" > ${TMPFILE} -		    eval "${DIALOG}  --clear --defaultno --yesno \ -			   'Network \"${W_ESSID}\" added\nSave configuration file?' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH} " 2> ${TMPFILE} -		    if [ $? -eq 0 ]; then -			      ## Save the config file -			      wifi_save_file ${DEVNAME} -		    fi -		     -		    eval "${DIALOG}  --msgbox 'Network added successfully' ${INFO_HEIGHT} ${INFO_WIDTH}" -		    return 0 -	  fi -	   -	  HAS_ESS=$(echo "${W_FLAGS}" | grep -E -c "ESS" ) -     -	  log "wifi_authenticate" "HAS_ESS: \"${HAS_ESS}\"" -	   -	  if [ "${HAS_ESS}" != "0" ]; then -		    NET_NUM=$(wpa_cli -i ${DEVNAME} add_network | tail -1) -         -		    log "wifi_authenticate" "NET_NUM: ${NET_NUM}" -		    wpa_cli -i ${DEVNAME} set_network ${NET_NUM} ssid "\"${W_ESSID}\"" -		    wpa_cli -i ${DEVNAME} set_network ${NET_NUM} key_mgmt NONE -		    eval "${DIALOG}  --clear --defaultno --yesno \ -			   'Network \"${W_ESSID}\" added\nSave configuration file?' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH} " 2> ${TMPFILE} -		    if [ $? -eq 0 ]; then -			      ## Save the config file -			      wifi_save_file ${DEVNAME} -		    fi -		     -		    return 0 -	  else -		    eval " ${DIALOG}  --msgbox 'Error occurred!!!!' ${INFO_HEIGHT} ${INFO_WIDTH}" -		    return 0 -	  fi -	   -	  ## No available authentication methods.... -     -	  eval "${DIALOG}  --msgbox 'No supported authentication method for ${W_ESSID}'" -	  return 1 -} - - - - -## -## Configure a new connection from a list of available wi-fi networks -## - -##function  -wifi_add(){ - -##local  -DEVNAME=$1 -	 -	wpa_cli -i ${DEVNAME} scan -	eval "${DIALOG}  --timeout 4 --msgbox 'Scanning for networks...' \ -		   ${INFO_HEIGHT} ${INFO_WIDTH}" -	wpa_cli -i ${DEVNAME} scan_results | grep -E "^[0-9a-f][0-9a-f]:" | \ -		sed -r -e 's/\t/|/g' |\ -		sort -t "|" -r -n -k 3 > ${TMPFILE} - -	wifinets="" -	LAST_IFS=$IFS -	IFS="|" -	while read W_MAC W_FREQ W_STRNGT W_FLAGS W_ESSID; do - -		log "wifi_add" "W_ESSID: \"${W_ESSID}\"" -		wifinets="${wifinets} ${W_MAC} \"${W_ESSID} -- ${W_FLAGS}\"" -	done < ${TMPFILE} -	IFS=${LAST_IFS} -	 - -	log "wifi_add" "Wifi nets: \n${wifinets}\n===" -	eval "dialog  --menu 'Select a network' ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 10 \ -		   ${wifinets} " 2> ${TMPFILE} -	if [ $? -eq 1 ]; then -		return -	fi - -	W_MAC=$(cat ${TMPFILE}) -	 - -	wifi_authenticate ${DEVNAME} ${W_MAC} -	if [ $? != "0" ]; then -		eval "${DIALOG}  --msgbox 'Error while configuring ${DEVNAME}' " -	fi -	return $? -} - - -##function  -wifi_save_file(){ - -##local  -DEVNAME=$1 -	 -	wpa_cli -i ${DEVNAME} save_config | tail -1 > ${TMPFILE} -	SAVE_STATUS=$(cat ${TMPFILE}) -	if [ "${SAVE_STATUS}" = "OK" ]; then -		eval "${DIALOG}  --msgbox 'Current configuration dumped to file ${WPA_FILE}' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -	else -		eval "${DIALOG}  --msgbox 'Error while saving configuration to file ${WPA_FILE}' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -	fi -} - -##function  -wifi_remove(){ - -##local  -    DEVNAME=$1 -     -	  wifi_network_list ${DEVNAME} -     -	  eval "${DIALOG} --menu 'Select network to remove' \ -           ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 10 ${NETLIST}" \ -		   2> ${TMPFILE} -	   -	  if [ $? -eq 0 ]; then -		    ## a network has been selected -		    NETNUM=$(cat ${TMPFILE}) -		    WPA_STATUS=$(wpa_cli -i ${DEVNAME} remove_network ${NETNUM} | tail -1 ) -		    if [ "${WPA_STATUS}" = "OK" ]; then -			      eval "${DIALOG}  --clear --defaultno --yesno \ -				   'Network ${NETNUM} removed\nSave configuration file?' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" 2> ${TMPFILE} -			      if [ $? -eq 0 ]; then -				        ## Save the config file -				        wifi_save_file ${DEVNAME} -			      fi -			       -			      return -		    else -			      eval "${DIALOG}  --clear --msgbox 'Network ${NETNUM} NOT removed' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -			      return -		    fi -	  else -		    eval "${DIALOG}  --clear --msgbox 'No network removed!!!' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -		    return -	  fi -	   -} - - -##function  -wifi_restart_wpa(){ - -##local  -    DEVNAME=$1 -##local  -    WPA_FILE=$2 -	 -    WPA_PID=$(ps ax | grep wpa_supplicant | grep " -i ${DEVNAME}" |  -sed -r -e 's/^\ +//g' | cut -d " " -f 1) -     -	  log "wifi_restart_wpa" "WPA_PID: ${WPA_PID}" -	  kill -9 ${WPA_PID} -     -	  wpa_supplicant -B -i ${DEVNAME} -c ${WPA_FILE} -P${WPA_PIDFILE} 2>/dev/null -	  WPA_PID=$(ps ax | grep wpa_supplicant | grep " -i ${DEVNAME}" | \ -                     sed -r -e 's/^\ +//g' | cut -d " " -f 1 ) -	  WPA_PID_SAVED=$(cat ${WPA_PIDFILE}) -    log "wifi_restart_wpa" "WPA_PID: ${WPA_PID} WPA_PID_SAVED: ${WPA_PID_SAVED}" -	  if [ -n "${WPA_PID}" ] &&  [ "${WPA_PID}" != "${WPA_PID_SAVED}" ]; then -		    eval "${DIALOG}  --clear --msgbox 'Error restarting wpa_supplicant' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -	  else -		    eval "${DIALOG}  --clear --msgbox 'wpa_supplicant restarted successfully' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -	  fi -     -} - - - -## -## wifi_enable: show the list of configured networks, and enable the -## one the used has clicked on -## - -##function  -wifi_enable(){ - -##local  -    DEVNAME=$1 -     -	  wifi_network_list ${DEVNAME} -     -	  eval "${DIALOG} --menu 'Select configured network' \ -		   ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 10 ${NETLIST}" \ -		   2> ${TMPFILE} -	   -	  if [ $? -eq 0 ]; then -		    ## a network has been selected -		    NETNUM=$(cat ${TMPFILE}) -		    WPA_STATUS=$(wpa_cli -i ${DEVNAME} enable ${NETNUM} | tail -1 ) -		    if [ "${WPA_STATUS}" = "OK" ]; then -			      eval "${DIALOG}  --clear --msgbox 'Network ${NETNUM} enabled' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -			      config_ethernet ${DEVNAME} -			      return -		    else -			      eval "${DIALOG}  --clear --msgbox 'Network ${NETNUM} NOT enabled' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -			      return -		    fi -	  else -		    eval "${DIALOG}  --clear --msgbox 'No network enabled!!!' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -		    return -	  fi -} - - -##function  -wifi_disable(){ - -##local  -    DEVNAME=$1 -	  wifi_network_list ${DEVNAME} -	  eval "${DIALOG}  --menu 'Select configured network' \ -          ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 10 ${NETLIST}" \ -		   2> ${TMPFILE} -	   -	  if [ $? -eq 0 ]; then -		    ## a network has been selected -		    NETNUM=$(cat ${TMPFILE}) -		    WPA_STATUS=$(wpa_cli -i ${DEVNAME} disable ${NETNUM} | tail -1 ) -		    if [ "${WPA_STATUS}" = "OK" ]; then -			      eval "${DIALOG}  --clear --msgbox 'Network ${NETNUM} disabled' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -			      return -		    else -			      eval "${DIALOG}  --clear --msgbox 'Network ${NETNUM} NOT disabled' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -			      return -		    fi -	  else -		    eval "${DIALOG}  --clear --msgbox 'No network disabled!!!' \ -			   ${INFO_HEIGHT} ${INFO_WIDTH}" -		    return -	  fi -} - - - -##function  -wifi_load_file(){ -	 -##local  -    DEVNAME=$1 -	   -	  eval "${DIALOG}  --fselect ${WPA_FILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" \ -			   2>${TMPFILE} -	   -	  if [ $? -eq 0 ]; then -		    SEL_FILE=$(cat ${TMPFILE}) -		    while [ -d "${SEL_FILE}" ]; do -			      eval "${DIALOG}  --fselect ${SEL_FILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" \ -					   2>${TMPFILE} -			      if [ $? -eq 0 ]; then -				        SEL_FILE=$(cat ${TMPFILE}) -			      else -				        eval "${DIALOG}  --clear --msgbox 'WPA_FILE was not modified' \ -						   ${INFO_HEIGHT} ${INFO_WIDTH}" -				        return -			      fi -		    done -		     -		    if [ -f "${SEL_FILE}" ]; then -			      WPA_FILE=${SEL_FILE} -			      eval "${DIALOG}  --clear --defaultno --yesno \ -					   'WPA_FILE changed to ${WPA_FILE}\nRestart wpa_supplicant?' \ -					   ${INFO_HEIGHT} ${INFO_WIDTH}" -			      if [ $? -eq 0 ]; then -				        wifi_restart_wpa ${DEVNAME} ${WPA_FILE} -			      fi -		    else -			      eval "${DIALOG}  --clear --msgbox 'Invalid file name!\n WPA_FILE *not* changed' \ -					  ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" -			      return  -		    fi -	  else -		    eval "${DIALOG}  --clear --msgbox 'WPA_FILE was not modified' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -	  fi -	   -} - - -  -##function  -config_wifi(){ - -##local  -    DEVNAME=$1 -	   -    while true; do -		    eval "${DIALOG}  --clear --cancel-label 'Up' \ -			   --menu 'Configuring ${DEVNAME}\n(Current file: ${WPA_FILE})' \ -			   ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 12 \ -			   'Restart' 'Restart wpa_supplicant' \ -			   'Enable' 'Enable a configured network' \ -			   'Disable' 'Disable a configured network' \ -			   'Add' 'Configure a new network' \ -			   'Remove' 'Delete an existing network' \ -			   'Show' 'Show current configuration file' \ -			   'Edit' 'Edit current configuration file' \ -			   'Save' 'Save configuration to file'\ -			   'Load' 'Load configuration from file'\ -			   'New' 'Create new configuration file' " \ -             2>${TMPFILE} -         -		    if [ $? = "1" ]; then -			      return -		    fi -		    ACTION=$(cat ${TMPFILE}) -		    case ${ACTION} in -			      "Restart") -				        ## Restart wpa_supplicant -				        wifi_restart_wpa ${DEVNAME} ${WPA_FILE} -				        ;; -			      "Enable") -				        wifi_enable ${DEVNAME} -				        ;; -			      "Disable") -				        wifi_disable ${DEVNAME} -				        ;; -			      "Add") -				        wifi_add ${DEVNAME} -				        ;; -			      "Remove") -				        wifi_remove ${DEVNAME} -				        ;; -			      "Show") -				        eval "${DIALOG}  --title 'Current file: ${WPA_FILE}' \ -					   --textbox ${WPA_FILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" -				        ;; -			      "Edit") -				        edit_file ${WPA_FILE} -				        ;; -			      "Save") -				        wifi_save_file ${DEVNAME} -				        ;; -			      "Load") -				        wifi_load_file ${DEVNAME} -				        ;; -			      "New") -                unimplemented "New" -				        ;; -		    esac -	  done -     -} - - - -## -## (Re)-Configure a network device -## - -##function  -configure_device(){ - -##local  -    DEVNAME=$1 - -    ## Check if the network device is a wifi -- WEAK -    IS_WIFI=$(iwconfig ${DEVNAME} 2>/dev/null | grep -c "IEEE 802.11") -     -	  case ${IS_WIFI} in -		    0) -			      config_ethernet ${DEVNAME} -			      ;; -		    *) -			      config_wifi ${DEVNAME} -			      ;; -	  esac -     - -} - - -##function  -set_device_up(){ - -##local  -DEVNAME=$1 -	 -	ip link set ${DEVNAME} up  - -} - -##function  -set_device_down(){ - -##local  -DEVNAME=$1 -	 -	ip link set ${DEVNAME} down - -} - -##function  -show_device_menu(){ -	 -##local  -    DEVNAME=$1 -     -    while true; do 	 -        DEV_STATUS=$(ip -o link | cut -d " " -f 2,9 | grep -E "^${DEVNAME}: " | cut -d " " -f 2) -        log "show_device_menu" "DEVNAME: ${DEVNAME} DEV_STATUS: ${DEV_STATUS}" -		    eval "${DIALOG}  --clear --cancel-label 'Up' --menu\ -             'Device: ${DEVNAME}\nStatus: ${DEV_STATUS}' \ -			       ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 8 \ -			       'View' 'View current configuration' \ -			       'Conf' 'Configure device' \ -		         'Start' 'Bring interface up' \ -			       'Stop' 'Put interface down' \ -			       'Restart' 'Restart interface'" 2> ${TMPFILE} -		     -		    if [ $? -eq 1 ]; then -			      return -		    fi -		     -		    DEV_ACTION=$(cat ${TMPFILE}) -		    case ${DEV_ACTION} in -			      "View") -				        show_device_conf ${DEVNAME} -				        ;; -			      "Conf") -				        configure_device ${DEVNAME} -				        ;; -			      "Start") -				        set_device_up ${DEVNAME} -				        ;; -			      "Stop")  -				        set_device_down ${DEVNAME} -				        ;; -			      "Restart") -				        set_device_down ${DEVNAME} -				        set_device_up ${DEVNAME} -				        ;;	 -			      *) -				        ;; -	           -		    esac -	  done 	 -} - -## -## Show all the available network devices -## - -##function  -show_devs() { - -  	DEVICES=$(ip link show | awk 'NR % 2 == 1' | cut -d ":" -f 2) -     -	  DEVICE_TAGS="" -     -	  for i in  $DEVICES; do -		    if [ "$i" != "lo" ]; then -			      DEVICE_TAGS="${DEVICE_TAGS} $i $i"  -		    fi -	  done -     - 	  eval "${DIALOG}  --clear --cancel-label 'Up' \ -			   --menu 'Select Interface to configure' ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 4 \ -			   ${DEVICE_TAGS}" 2> ${TMPFILE} -	  return $? -} - - -##function  -dev_config_menu(){ -     -	  while  true; do  -		    show_devs  -		    if [ $? -eq 1 ]; then -			      return -		    fi -		    DEVNAME=$(cat ${TMPFILE}) -		    show_device_menu ${DEVNAME}			 -	  done -} - -##function  -show_info(){ - -	cat <<EOF > ${TMPFILE} - -                      -+- setnet.sh ${VERSION} -+- - -setnet.sh is a simple state-less tool to manage and configure network -interfaces. It is a shell wrapper around the functionalities of -standard command-line tools, including "ip", "dhclient", "wpa_cli", -etc., and can be used to configure network connections via -Ethernet/Wi-Fi interfaces. - -Both Static and DHCP-based IP configuration are supported.  - -At the moment, only WPA-PSK and open (no key) Wi-Fi connections are -available.  - -For more information, please visit the webpage of the project: - -    http://kalos.mine.nu/setnet/ - -Please report bugs at: - -    https://git.devuan.org/KatolaZ/setnet - -EOF -	eval "${DIALOG}  --clear --cr-wrap --textbox ${TMPFILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" -	return -} - -##function  -show_copyright(){ - -	cat <<EOF > ${TMPFILE} - -                          -+- setnet.sh ${VERSION} -+- - --------------------------------------------------------------------- - -  Copyleft (C) Vincenzo "KatolaZ" Nicosia <katolaz@freaknet.org>  -               2016, 2017 - --------------------------------------------------------------------- - - -EOF -	eval "${DIALOG}  --clear --cr-wrap --textbox ${TMPFILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" -	return -} - - -##function  -show_license(){ - -	cat <<EOF > ${TMPFILE} - -                       -+- setnet.sh ${VERSION} -+- - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or (at -your option) any later version. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program.  If not, see <http://www.gnu.org/licenses/>. - --------------------------------------------------------------------- - -   Copyleft (C) Vincenzo "KatolaZ" Nicosia <katolaz@freaknet.org>  -                2016, 2017 - --------------------------------------------------------------------- - -EOF -	eval "${DIALOG}  --clear --cr-wrap --textbox ${TMPFILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" -	return -} - - - -##function  -about_menu(){ - -	  while  true; do  -		    eval "${DIALOG}  --cancel-label 'Up' --menu 'setnet ${VERSION} -- About' \ -			   ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 6 \ -			   'Info' 'General information' \ -			   'Copyleft' 'Copyleft information' \ -			   'License' 'How to distribute this program' " \ -			   2> ${TMPFILE} -		    if [ $? -eq 1 ];then -			      return; -		    fi -		     -		    ACTION=$(cat ${TMPFILE}) -		    case ${ACTION} in -			      "Info") -				        show_info -				        ;; -			      "Copyleft") -				        show_copyright -				        ;; -			      "License") -				        show_license -				        ;; -		    esac -	  done -} - -##function -notfound(){ - -    CMDNAME=$1 - -     -    eval "${DIALOG} --clear --msgbox 'Sorry! Commmand ${CMDNAME} not found!'" \ -         ${INFO_HEIGHT} ${INFO_WIDTH} -     -} - - -##function -netdiag_DNS(){ - -    DUMPFILE=$1 -     -    if [ -n "${DUMPFILE}" ]; then -        ## Dump to file -        printf "\n======== DNS Configuration (/etc/resolv.conf)\n" >> ${DUMPFILE} -        cat /etc/resolv.conf >> ${DUMPFILE} -        echo "==================================" >> ${DUMPFILE} -        return 0 -    fi - -    ## Dump to dialog -    NAMESERVERS=$(grep '^nameserver' /etc/resolv.conf) -    MSG_STR="Configured name servers in /etc/resolv.conf ==\n\n${NAMESERVERS}" - -    eval "${DIALOG} --clear --title 'DNS servers' --msgbox '${MSG_STR}' "\ -         ${WINDOW_HEIGHT} ${WINDOW_WIDTH} -     -} - -##function -netdiag_resolver(){ - -    DUMPFILE=$1 -     -    if [ -n "${DUMPFILE}" ]; then -        ## Dump to file -        printf "\n======== Resolver Configuration (/etc/nsswitch.conf)\n" >> ${DUMPFILE} -        grep -v '^#' /etc/nsswitch.conf >> ${DUMPFILE} -        echo "==================================" >> ${DUMPFILE} -        return 0 -    fi - -    ## Dump to dialog -    RESOLVER=$(grep -v '^#' /etc/nsswitch.conf) - -    eval "${DIALOG} --clear --title 'Resolver configuration (/etc/nsswitch.conf)' \ -          --msgbox '${RESOLVER}' "\ -         ${WINDOW_HEIGHT} ${WINDOW_WIDTH} -     -} - - -##function -netdiag_routes(){ - -    DUMPFILE=$1 - -    HAS_NETSTAT=$(echo ${HAS_OPTS} | grep -c " netstat ") -    if [ ${HAS_NETSTAT} -ne 1 ]; then -        notfound "nestat" -        return -    fi - -    if [ -n "${DUMPFILE}" ]; then -        ## Dump to file -        printf "\n======== Routing table\n" >> ${DUMPFILE} -        netstat -rn >> ${DUMPFILE} -        echo "==================================" >> ${DUMPFILE} -        return 0 -    fi -    ## Dump to dialog -    ROUTES=$(netstat -rn > ${TMPFILE} ) -     -    eval "${DIALOG} --clear --no-collapse --title 'Routing table (netstat -rn) [arrows to scroll]'" \ -         "--tab-correct --tab-len 4 --textbox ${TMPFILE} "\ -         ${LARGE_HEIGHT} ${LARGE_WIDTH} -} - -##function -netdiag_ARP(){ - -    DUMPFILE=$1 -    log "netdiag_ARP" "DUMPFILE: '${DUMPFILE}'" -    if [ -n "${DUMPFILE}" ]; then -        ## Dump to file -        printf "\n======== ARP table\n" >> "${DUMPFILE}" -        cat /proc/net/arp >> "${DUMPFILE}" -        echo "==================================" >> ${DUMPFILE} -        return 0 -    fi - -    # Dump to dialog -    ARP=$(cat /proc/net/arp >${TMPFILE}) - -    eval "${DIALOG} --clear --no-collapse --title 'ARP table (/proc/net/arp) [arrows to scroll]'" \ -         "--tab-correct --tab-len 4 --textbox ${TMPFILE} "\ -         ${LARGE_HEIGHT} ${LARGE_WIDTH} -} - -##function -netdiag_connections(){ - -    DUMPFILE=$1 - -    -    HAS_NETSTAT=$(echo ${HAS_OPTS} | grep -c " netstat ") -    if [ ${HAS_NETSTAT} -ne 1 ]; then -        notfound "nestat" -        return -    fi - -    if [ -n "${DUMPFILE}" ]; then -        ## Dump to file -        printf "\n======== Active Network Connections\n" >> ${DUMPFILE} -        netstat -tnp | sed -r -e 's/$/\n/g' >> ${DUMPFILE} -        echo "==================================" >> ${DUMPFILE} -        return 0 -    fi - -    ## Dump to dialog -    SERV=$(netstat -tnp | sed -r -e 's/$/\n/g' > ${TMPFILE}) -     -    eval "${DIALOG} --clear --no-collapse "\ -         " --title 'Active network connections (netstat -tnp) [arrows to scroll]'" \ -         "--tab-correct --tab-len 4 --textbox ${TMPFILE} "\ -         ${LARGE_HEIGHT} ${LARGE_WIDTH} -} - - -##function -netdiag_services(){ - -    DUMPFILE=$1 - -    HAS_NETSTAT=$(echo ${HAS_OPTS} | grep -c " netstat ") -    if [ ${HAS_NETSTAT} -ne 1 ]; then -        notfound "nestat" -        return -    fi - -    if [ -n "${DUMPFILE}" ]; then -        ## Dump to file -        printf "\n======== Active network services\n" >> ${DUMPFILE} -        netstat -ltnp | sed -r -e 's/$/\n/g' >> ${DUMPFILE} -        echo "==================================" >> ${DUMPFILE} -        return 0 -    fi -     - -    SERV=$(netstat -ltnp | sed -r -e 's/$/\n/g' > ${TMPFILE}) -     -    eval "${DIALOG} --clear --no-collapse "\ -         " --title 'Active network services (netstat -ltnp) [arrows to scroll]'" \ -         "--tab-correct --tab-len 4 --textbox ${TMPFILE} "\ -         ${LARGE_HEIGHT} ${LARGE_WIDTH} -} - - -##function -netdiag_ping(){ -     -    HAS_PING=$(echo ${HAS_OPTS} | grep -c " ping ") -    if [ ${HAS_PING} -ne 1 ]; then -        notfound "ping" -        return -    fi -    eval "${DIALOG} --insecure --inputbox 'Host or IP to ping:' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}"  2> ${TMPFILE} - -    if [ $? -ne 0 ]; then -       	eval "${DIALOG}  --clear --msgbox 'Ping Aborted' \ -					   ${INFO_HEIGHT} ${INFO_WIDTH}" -        return -    else -        PINGIP=$(cat ${TMPFILE}) -        ping -c 5 ${PINGIP} > ${TMPFILE} & -        PINGPID=$! -        eval "${DIALOG} --clear --title 'Ping ${PINGIP}'"\ -             "--tailbox ${TMPFILE} " \ -             ${LARGE_HEIGHT} ${LARGE_WIDTH} -        if [ $? -ne 0 ];then -            kill -9 ${PINGPID} -        fi -    fi - -} - -##function -netdiag_traceroute(){ -     -    HAS_TRACERT=$(echo ${HAS_OPTS} | grep -c " traceroute ") -    if [ ${HAS_TRACERT} -ne 1 ]; then -        notfound "traceroute" -        return -    fi -    eval "${DIALOG} --insecure --inputbox 'Host or IP to trace:' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}"  2> ${TMPFILE} - -    if [ $? -ne 0 ]; then -       	eval "${DIALOG}  --clear --msgbox 'Traceroute Aborted' \ -					   ${INFO_HEIGHT} ${INFO_WIDTH}" -        return -    else -        TRACEIP=$(cat ${TMPFILE}) -        traceroute ${TRACEIP} > ${TMPFILE} & -        TRCPID=$! -        eval "${DIALOG} --clear --title 'Traceroute ${TRACEIP}'"\ -             "--tailbox ${TMPFILE} " \ -             ${LARGE_HEIGHT} ${LARGE_WIDTH} -        if [ $? -ne 0 ];then -            kill -9 ${TRCPID} -        fi -    fi -} - - -##function -netdiag_query(){ - -    HAST_HOST=$(echo ${HAS_OPTS} | grep -c " host ") -    if [ $? -ne 1 ]; then -        notfound "host" -        return -    fi - -    eval "${DIALOG} --insecure --inputbox 'Hostname or IP to query:' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}"  2> ${TMPFILE} -     -    if [ $? -ne 0 ]; then -       	eval "${DIALOG}  --clear --msgbox 'DNS query aborted' \ -					   ${INFO_HEIGHT} ${INFO_WIDTH}" -        return -    else -        QUERYIP=$(cat ${TMPFILE}) -        host ${QUERYIP} > ${TMPFILE} & -        QUERYPID=$! -        eval "${DIALOG} --clear --title 'host ${QUERYIP}'"\ -             "--tailbox ${TMPFILE} " \ -             ${LARGE_HEIGHT} ${LARGE_WIDTH} -        if [ $? -ne 0 ];then -            kill -9 ${QUERYPID} -        fi -    fi - -} - -##function -netdiag_devices(){ - -    DUMPFILE=$1 - -    if [ -n "${DUMPFILE}" ]; then -        printf "\n======== Network Devices\n" >> ${DUMPFILE} -        ip addr >> ${DUMPFILE} -        echo "==================================" >> ${DUMPFILE} -        return 0 -    fi -} - - - -## -## Main menu for network diagnostics -## - -##function -netdiag_menu(){ -     -	  while  true; do  -		    eval "${DIALOG}  --cancel-label 'Up' --menu 'Network diagnostics' \ -			   ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 10 \ -			   'ARP' 'Show ARP table'  \ -         'Connections' 'List active network connections' \ -			   'DNS' 'List DNS servers' \ -         'Ping' 'Ping a host'  \ -         'Query' 'DNS Query' \ -         'Resolver' 'Show resolver configuration' \ -			   'Routes' 'Show routing table' \ -         'Services' 'List active network daemons'  \ -         'Traceroute' 'Show the route to a host' " \ -			       2> ${TMPFILE} -		    if [ $? -eq 1 ];then -			      return; -		    fi -		     -		    ACTION=$(cat ${TMPFILE}) -		    case ${ACTION} in -			      "ARP") -				        netdiag_ARP -				        ;; -			      "Connections") -				        netdiag_connections -				        ;; -			      "DNS") -				        netdiag_DNS -				        ;; -            "Ping") -				        netdiag_ping -				        ;; -            "Query") -                netdiag_query -                ;; -			      "Resolver") -				        netdiag_resolver -                ;; -			      "Routes") -				        netdiag_routes -                ;; -			      "Services") -				        netdiag_services -				        ;; -			      "Traceroute") -				        netdiag_traceroute -				        ;; -		    esac -	  done -     -     -} - -##function -dump_file(){ -     -    CONF=$1 - -    log "dump_file" "CONF: ${CONF}" -     -    DUMPFILE="/tmp/network_dump.txt" -     -	  eval "${DIALOG}  --fselect ${DUMPFILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" \ -			   2>${TMPFILE} -	   -	  if [ $? -eq 0 ]; then -		    SEL_FILE=$(cat ${TMPFILE}) -		    while [ -d "${SEL_FILE}" ]; do -			      eval "${DIALOG}  --fselect ${SEL_FILE} ${WINDOW_HEIGHT} ${WINDOW_WIDTH}" \ -					   2>${TMPFILE} -			      if [ $? -eq 0 ]; then -				        SEL_FILE=$(cat ${TMPFILE}) -			      else -				        eval "${DIALOG}  --clear --msgbox 'Dump aborted' \ -						   ${INFO_HEIGHT} ${INFO_WIDTH}" -				        return -			      fi -		    done -		     -        ## The dump starts here.... -			  DUMPFILE=${SEL_FILE} -        truncate -s 0 ${DUMPFILE} -        echo "===== setnet ${VERSION}" >> ${DUMPFILE} -        echo "===== Date: $(date)" >> ${DUMPFILE} -        echo "===== Network configuration dump " >> ${DUMPFILE} -        for c in ${CONF}; do -            eval "netdiag_${c} \"${DUMPFILE}\"" -        done -	  else -		    eval "${DIALOG}  --clear --msgbox 'Dump aborted' \ -				   ${INFO_HEIGHT} ${INFO_WIDTH}" -	  fi -} - - -##function -dump_pastebin(){ -     -    CONF=$1 - -     - -} - -##function  -dump_menu(){ - -    eval "${DIALOG} --clear --checklist 'Select conf to dump' \ -             ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 10 \ -             'ARP' 'ARP table' on \ -             'devices' 'Device configuration' on \ -             'DNS' 'DNS configuration' on \ -             'resolver' 'System resolver configuration' on \ -             'routes' 'Routing table' on \ -             'connections' 'Active network connections' on \ -             'services' 'Active network services' on " 2> ${TMPFILE} -    if [ $? -ne 0 ]; then -        return -    fi -     -    DUMP_CONF=$(cat ${TMPFILE}) -     -    eval "${DIALOG} --clear --cancel-label 'Up' \ -           --menu 'Dump configuration to:' \ -           ${INFO_HEIGHT} ${INFO_WIDTH} 6 \ -           'File' 'Dump to file' \ -           'Pastebin' 'Dump to pastebin'" \ -         2> ${TMPFILE} -    if [ $? -eq 1 ];then -			  return; -		fi -		 -		ACTION=$(cat ${TMPFILE}) -		case ${ACTION} in -			  "File") -            dump_file "${DUMP_CONF}" -				    ;; -			  "Pastebin") -            dump_pastebin "${DUMP_CONF}" -				    ;; -		esac -} - - -##function  -show_toplevel(){ - -    log "show_toplevel" "TMPFILE: ${TMPFILE}" -	  eval "${DIALOG} --clear --cancel-label 'Quit' --menu 'Main Menu' \ -		   ${WINDOW_HEIGHT} ${WINDOW_WIDTH} 6 \ -		   'Setup' 'Setup interfaces' \ -       'Info' 'Network diagnostics' \ -       'Dump' 'Dump current network status' \ -		   'About' 'License & Copyleft'" 2> ${TMPFILE} -     -	  return $? -} - -##function  -show_help(){ - -##local  -SCRIPTNAME=$1 -	echo "Usage: ${SCRIPTNAME} [OPTION]" -	echo "Options:" -	printf  "\t -c cfg_file\tLoad configuration from cfg_file.\n" -	printf  "\t -v\t\tPrint version number and exit.\n" -	printf  "\t -h\t\tShow this help.\n" -	 -} - -##function  -show_version(){ - -##local  -SCRIPTNAME=$1 -	echo "${SCRIPTNAME} -- version ${VERSION}" -	echo "Copyleft (C) Vincenzo \"KatolaZ\" Nicosia (katolaz@freaknet.org) -- 2016, 2017" -	echo "This is free software. You can use and redistribute it under the " -	echo "terms of the GNU General Public Licence version 3 or (at your option)" -	echo "any later version." -	echo  -	echo "YOU USE THIS SOFTWARE AT YOUR OWN RISK." -	echo "There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or" -	echo "FITNESS FOR A PARTICULAR PURPOSE." -} - -##function  -show_disclaimer(){ - -	cat <<EOF > ${TMPFILE} - -                -+- setnet.sh ${VERSION} -+- - -      Copyleft (C) KatolaZ (katolaz@freaknet.org)  -                    2016, 2017 - -     -+- This is an alpha release of setnet.sh -+- -    -                 THIS IS FREE SOFTWARE -        YOU CAN USE AND DISTRIBUTE IT UNDER THE  -        TERMS OF THE GNU GENERAL PUBLIC LICENSE -       -          USE THIS SOFTWARE  AT YOUR OWN RISK - -     There is ABSOLUTELY NO WARRANTY; not even for  -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE - -        See "About" for more information about  -           your right and distribution terms -EOF - -	eval "${DIALOG}  --clear --cr-wrap --textbox ${TMPFILE} 23 60" -	return -} - -##function -initialise(){ - - -    TMPFILE=$( (tempfile) 2>/dev/null) || TMPFILE=/tmp/setnet_$$ -    WPA_PIDFILE=$( (tempfile) 2>/dev/null) || WPA_PIDFILE=/tmp/setnet_wpapid_$$ -     -	  trap cleanup 0 HUP INT TRAP TERM QUIT - -    if [ -z ${TRUNCATE_LOG} ] || \ -           [ ${TRUNCATE_LOG} = "yes" ] || \ -               [ ${TRUNCATE_LOG} = "YES" ]; then -	      truncate -s 0 ${LOGFILE} -    fi -     -} - - -##function  -main(){ - - -	show_disclaimer -	 -	log "setnet" "Starting afresh on $(date)" -	SETNETRC=$(realpath ${SETNETRC}) -	log "main" "Using config file \"${SETNETRC}\"" -	WPA_FILE=$(realpath ${WPA_FILE}) -	log "main" "Using WPA config file \"${WPA_FILE}\"" -	LOFGILE=$(realpath ${LOGFILE}) -	log "main" "Using log file \"${LOGFILE}\"" -	 -	while  true; do  -		  show_toplevel - -		  if [ $? -eq 1 ]; then -			    cleanup -			    exit 1 -		  fi -      log "main" "${TMPFILE}" -		  ACTION=$(cat ${TMPFILE}) -      log "main" "ACTION: ${ACTION}" -		  case ${ACTION} in -			    "Setup") -				      dev_config_menu -				      ;; -          "Info") -              netdiag_menu -              ;; -          "Dump") -              dump_menu -              ;; -			    "About") -				      about_menu -				      ;; -		  esac -	done -   -} - - -## -## The script starts here -## - - -## -## Get command-line arguments -##  - -SETNETRC="" - -while getopts ":c:hv" opt; do -	   -	  case $opt in -		    c) -			      #echo "Got option -c ${OPTARG}" -			      SETNETRC=$(realpath ${OPTARG}) -			      #echo "SETNETRC: ${SETNETRC}" -			      ;; -		    h) -			      show_help $(basename $0) -			      exit 1 -			      ;; -		    v) -			      show_version $(basename $0) -			      exit 1 -			      ;; -		    \?) -			      echo "Invalid option: -${OPTARG}" -			      exit 1 -			      ;; -		    :) -			      echo "Option -${OPTARG} requires an argument" -			      exit 1 -			      ;; -	  esac -done - - -## -## Load the configuration file -## - -load_setnetrc ${SETNETRC} - -## -## Init stuff -## - -initialise  - - -## -## Check dependencies. If we are missing someting essential, then exit. -## - -check_deps - -## -## This is the main loop -## - -main  - @@ -1594,10 +1594,7 @@ dump_file(){  ##function  dump_pastebin(){ -    CONF=$1 - -     - +    unimplemented "pastebin"  }  ##function  | 
