diff options
-rwxr-xr-x | setnet.dash | 124 | ||||
-rw-r--r-- | setnetrc | 20 |
2 files changed, 125 insertions, 19 deletions
diff --git a/setnet.dash b/setnet.dash index eee603e..e6d804a 100755 --- a/setnet.dash +++ b/setnet.dash @@ -28,19 +28,7 @@ ## Initialisation ## -VERSION=0.1 - - -# THESHELL=$(head -1 $0 | cut -d "!" -f 2 | cut -d " " -f 1 ) -# THESHELL=$(basename $(realpath ${THESHELL})) - - -# if [ ${THESHELL} = "sh" ] || [ ${THESHELL} = "dash" ]; then -# DIALOG="dialog" -# else -# TOPSTR="setnet-0.1 [user: $(id -run)]" -# DIALOG="dialog --backtitle \"${TOPSTR}\" " -# fi +VERSION=0.2 TOPSTR="setnet-0.1 [user: $(id -run)]" @@ -140,6 +128,73 @@ log(){ } +## +## Check whether the shell which called the script is supported, or +## exit. Currently, we support the follwing shells: +## +## - bash +## - busybox +## - dash +## - ksh +## - 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|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 exists, or the script exits +## +## - each command in SOFT_DEPS SHOULD exists, od the script will log a +## warning +## + +##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" "${h}...found" + done + + for s in ${SOFT_DEPS}; do + _S=$(which ${s}) + if [ -z $_S ]; then + log "check_deps" "WARNING: ${s} not found! Some functions might not work properly" + fi + done +} + ########################################## ##function @@ -625,7 +680,7 @@ sed -r -e 's/^\ +//g' | cut -d " " -f 1) 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 + if [ -n "${WPA_PID}" ] && [ "${WPA_PID}" != "${WPA_PID_SAVED}" ]; then eval "${DIALOG} --clear --msgbox 'Error restarting wpa_supplicant' \ ${INFO_HEIGHT} ${INFO_WIDTH}" else @@ -1117,12 +1172,24 @@ EOF return } +##function +initialise(){ + + echo "TRUNCATE_LOG: ${TRUNCATE_LOG}" + + if [ -z ${TRUNCATE_LOG} ] || \ + [ ${TRUNCATE_LOG} = "yes" ] || \ + [ ${TRUNCATE_LOG} = "YES" ]; then + truncate -s 0 ${LOGFILE} + fi + trap cleanup 0 $SIG_NONE $SIG_HUP $SIG_INT $SIG_TRAP $SIG_TERM + +} + ##function main(){ - truncate -s 0 ${LOGFILE} - trap cleanup 0 $SIG_NONE $SIG_HUP $SIG_INT $SIG_TRAP $SIG_TERM show_disclaimer @@ -1158,7 +1225,12 @@ main(){ ## -## Get the options +## The script starts here +## + + +## +## Get command-line arguments ## SETNETRC="" @@ -1191,9 +1263,27 @@ while getopts ":c:hv" opt; do done +## +## Load the configuration file +## load_setnetrc ${SETNETRC} +## +## Init stuff +## + +initialise + + +## +## Check dependencies. If we are missing someting essential, then exit. +## + +check_deps + + + main @@ -7,13 +7,29 @@ ## ## The default configuration file for wpa_supplicant ## -WPA_FILE=./wpa_supplicant.conf +WPA_FILE=/etc/wpa_supplicant/wpa_setnet.conf ## ## Logfile ## -LOGFILE=./setnet_log +LOGFILE=/var/log/setnet.log +## +## +## +TRUNCATE_LOG="yes" +## +## Required dependencies. If any of those commands is missing, +## the script will exit +## + +HARD_DEPS="ip dhclient dialog" + +## +## Suggested dependencies. The script will issue a warning if any of +## those commands is missing +## +SOFT_DEPS="wpa_cli wpa_supplicant" |