Remove Austrian provider specific configs, modem support
[grml-network.git] / sbin / grml-network
1 #!/bin/bash
2 # Filename:      grml-network
3 # Purpose:       simple frontend to varous connection tools
4 # Authors:       (c) Klaus Knopper Mar 2004, (c) Michael Prokop <mika@grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 ################################################################################
8
9 PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin"
10 export PATH
11
12 if [ $(id -ru) -ne 0 ] ; then
13   echo 1>&2 "Error: please run this script with uid 0 (root)." ; exit 1
14 fi
15
16 # XDIALOG_HIGH_DIALOG_COMPAT=1
17 # export XDIALOG_HIGH_DIALOG_COMPAT
18
19 CHECK=""
20 [ "$1" = "check" ] && CHECK="yes"
21
22 TMP=$(mktemp)
23
24 bailout(){
25   rm -f "$TMP"
26   exit $1
27 }
28
29 DIALOG="dialog"
30 # [ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"
31
32 trap bailout 1 2 3 15
33
34 # LANGUAGE etc.
35 [ -r /etc/default/locale ] && . /etc/default/locale
36
37 gauge(){
38   rm -f "$TMP.done"
39   status=0
40   while [ ! -e "$TMP.done" ]; do
41     echo "$status"
42     status="`expr \( 100 - $status \) / 4 + $status`"
43     sleep 1
44   done | $DIALOG --title "$0" --gauge "$1" 8 75 0
45 }
46
47 # Stop status bar
48 killgauge(){
49   touch "$TMP.done" ; wait ; rm -f "$TMP.done"
50 }
51
52 main(){
53   if [ -z "$NOCHECK" -a -x /usr/bin/nmap ] ; then
54   gauge "Checking network status..." &
55     STATUS=""
56     GW="`echo $(route -n | awk '/^0\.0\.0\.0/{print $2}')`"
57     GWDEV="`echo $(route -n | awk '/^0\.0\.0\.0/{print $NF}')`"
58     NMAP="$(nmap -sP --host_timeout 4000 --max_rtt_timeout 4000 $GW 2>/dev/null)"
59
60     if [ "$?" = 0 ]; then
61       echo "$NMAP" | grep -q "down" >/dev/null 2>&1 || STATUS="online"
62     fi
63
64     killgauge
65
66     if [ -n "$STATUS" ]; then
67        [ -n "$CHECK" ] && exit 0 # exit if we are already connected
68        STATUS="Online ($GWDEV)"
69     else
70        STATUS="Offline"
71     fi
72   else
73     STATUS="Unknown"
74   fi
75
76 # Language-dependent Messages
77 case "$LANGUAGE" in
78   de*|at*|ch*)
79     TITLE1="Netzwerk-Setup"
80     STATUS="Status: $STATUS"
81     MESSAGE1="Bitte auswaehlen:"
82     NETCARD="Netzwerkkarten (LAN/WLAN) Konfiguration"
83     DSL="Einwahl per DSL-Modem"
84     ISDN="Einwahl per ISDN"
85     EXIT="Beenden"
86     ;;
87   *)
88     TITLE1="Network Setup"
89     STATUS="Current state: $STATUS"
90     MESSAGE1="Please select:"
91     NETCARD="Configure network card (LAN/WLAN)"
92     DSL="Dial via DSL-adapter"
93     ISDN="Dial via ISDN"
94     EXIT="Quit"
95    ;;
96 esac
97
98 # Shortcut description selected
99 TYPES=(netcardconfig "$NETCARD" \
100 pppoeconf "$DSL" \
101 isdnconfig "$ISDN")
102
103 type pppoeconf   >/dev/null 2>&1 || { unset TYPES[2];  unset TYPES[3];  }
104 type isdnconfig  >/dev/null 2>&1 || { unset TYPES[4];  unset TYPES[5];  }
105
106 rm -f "$TMP"
107
108 $DIALOG --clear --cancel-label "$EXIT" --title "$TITLE1" --menu "$STATUS
109
110 $MESSAGE1" 18 75 10 "${TYPES[@]}" 2>"$TMP" || bailout 1
111
112 read TYPE <"$TMP"
113 TYPE="${TYPE#\"}"; TYPE="${TYPE%\"}"
114 rm -f "$TMP"
115
116 eval $TYPE
117 return "$?"
118 }
119
120 if [ -z "$NOCHECK" ] ; then
121   while true; do
122     main
123   done
124 else
125   main
126 fi
127
128 ## END OF FILE #################################################################