From 7601025d906f7a79df47f42e5009b74738d64e2e Mon Sep 17 00:00:00 2001
From: KatolaZ <katolaz@freaknet.org>
Date: Tue, 3 Jan 2017 01:31:57 +0000
Subject: Removed setnet.dash

---
 setnet.dash | 1831 -----------------------------------------------------------
 1 file changed, 1831 deletions(-)
 delete mode 100755 setnet.dash

(limited to 'setnet.dash')

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 
-
-- 
cgit v1.2.3