tazpanel annotate network.cgi @ rev 108

network.cgi: randow fixes (start-stop wifi) and improvment
author Christophe Lincoln <pankso@slitaz.org>
date Fri Apr 15 08:51:30 2011 +0200 (2011-04-15)
parents 306b0bf62bb8
children b898c9887a62
rev   line source
pankso@38 1 #!/bin/sh
pankso@38 2 #
pankso@38 3 # Network configuration CGI interface
pankso@38 4 #
pankso@38 5
pankso@38 6 # Common functions from libtazpanel
pankso@38 7 . lib/libtazpanel
pankso@38 8 get_config
pascal@81 9 header
pankso@38 10
pankso@38 11 # Include gettext helper script.
pankso@38 12 . /usr/bin/gettext.sh
pankso@38 13
pankso@38 14 # Export package name for gettext.
pankso@39 15 TEXTDOMAIN='tazpanel'
pankso@38 16 export TEXTDOMAIN
pankso@38 17
pankso@42 18 TITLE="- Network"
pankso@42 19
pankso@106 20 # Catch ESSIDs and format output for GTK tree. We get the list of
pankso@106 21 # networks by Cell and without spaces.
pankso@106 22 detect_wifi_networks()
pankso@106 23 {
pankso@106 24 table_start
pankso@106 25 cat << EOT
pankso@106 26 <thead>
pankso@106 27 <tr>
pankso@106 28 <td>$(gettext "Name")</td>
pankso@106 29 <td>$(gettext "Quality")</td>
pankso@106 30 <td>$(gettext "Encryption")</td>
pankso@106 31 <td>$(gettext "Status")</td>
pankso@106 32 </tr>
pankso@106 33 </thead>
pankso@106 34 EOT
pankso@106 35 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
pankso@106 36 ifconfig $WIFI_INTERFACE up
pankso@106 37 for i in `iwlist $WIFI_INTERFACE scan | sed s/"Cell "/Cell-/ | grep "Cell-" | awk '{print $1}'`
pankso@106 38 do
pankso@106 39 SCAN=`iwlist $WIFI_INTERFACE scan last | \
pankso@106 40 awk '/(Cell|ESS|Qual|Encry|IE: WPA)/ {print}' | \
pankso@106 41 sed s/"Cell "/Cell-/ | grep -A 5 "$i"`
pankso@106 42 ESSID=`echo $SCAN | cut -d '"' -f 2`
pankso@106 43 if echo "$SCAN" | grep -q Quality; then
pankso@106 44 QUALITY=`echo $SCAN | sed 's/.*Quality=\([^ ]*\).*/\1/' | sed 's/.*Quality:\([^ ]*\).*/\1/'`
pankso@106 45 else
pankso@106 46 QUALITY="-"
pankso@106 47 fi
pankso@106 48 ENCRYPTION=`echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/'`
pankso@106 49 # Check encryption type
pankso@106 50 if echo "$SCAN" | grep -q WPA; then
pankso@106 51 ENCRYPTION="${ENCRYPTION} (WPA)"
pankso@106 52 fi
pankso@106 53 # Connected or not connected...
pankso@106 54 if ifconfig | grep -A 1 $WIFI_INTERFACE | \
pankso@108 55 fgrep -q inet && iwconfig $WIFI_INTERFACE | \
pankso@108 56 grep ESSID | fgrep -q -w "$ESSID"; then
pankso@108 57 status=$(gettext "Connected")
pankso@106 58 else
pankso@108 59 status="---"
pankso@106 60 fi
pankso@106 61 echo '<tr>'
pankso@106 62 echo "<td><img src='$IMAGES/wireless.png' />$ESSID</td>"
pankso@108 63 echo "<td>$QUALITY</td><td>$ENCRYPTION</td><td>$status $ip</td>"
pankso@106 64 echo '</tr>'
pankso@106 65 done
pankso@106 66 fi
pankso@106 67 table_end
pankso@106 68 }
pankso@106 69
pankso@41 70 # Actions commands before page is displayed
pascal@81 71 case " $(GET) " in
pascal@81 72 *\ start\ *)
pankso@41 73 # Here we sleep a bit to let udhcp get the lease before reloading
pankso@41 74 # page with status
pankso@76 75 /etc/init.d/network.sh start | log
pankso@41 76 sleep 2 ;;
pascal@81 77 *\ stop\ *)
pankso@76 78 /etc/init.d/network.sh stop | log ;;
pankso@108 79 *\ start-wifi\ *)
pankso@108 80 sed -i \
pankso@108 81 -e s'/^DHCP=.*/DHCP="yes"/' \
pankso@108 82 -e s'/^WIFI=.*/WIFI="yes"/' \
pankso@108 83 -e s'/^STATIC=.*/STATIC="no"/'/etc/network.conf
pankso@108 84 /etc/init.d/network.sh start | log
pankso@108 85 sleep 2 ;;
pankso@108 86 *\ hostname\ *)
pankso@108 87 echo $(gettext "Changed hostname:") $(GET hostname) | log
pankso@108 88 echo "$(GET hostname)" > /etc/hostname ;;
pankso@41 89 esac
pankso@41 90
pankso@108 91 . /etc/network.conf
pankso@108 92
pankso@38 93 #
pankso@41 94 # Main Commands for pages
pankso@38 95 #
pankso@38 96
pascal@81 97 case " $(GET) " in
pascal@81 98 *\ eth\ *)
pankso@41 99 # Wired connections settings
pankso@38 100 xhtml_header
pankso@107 101 if [ "$(GET ip)" ]; then
pankso@107 102 LOADING_MSG=$(gettext "Setting up static IP...")
pankso@107 103 loading_msg
pankso@107 104 sed -i \
pankso@107 105 -e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \
pankso@107 106 -e s'/^DHCP=.*/DHCP="no"/' \
pankso@107 107 -e s'/^WIFI=.*/WIFI="no"/' \
pankso@107 108 -e s'/^STATIC=.*/STATIC="yes"/' \
pankso@107 109 -e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \
pankso@107 110 -e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \
pankso@107 111 -e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \
pankso@107 112 -e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf
pankso@107 113 /etc/init.d/network stop | log
pankso@107 114 sleep 2
pankso@107 115 /etc/init.d/network start | log
pankso@107 116 fi
pankso@107 117 . /etc/network.conf
pankso@38 118 cat << EOT
pankso@41 119 <h2>`gettext "Ethernet connection`</h2>
pankso@107 120
pankso@107 121 <h3>$(gettext "Setup a static IP")</h3>
pankso@107 122 <form method="get" action="$SCRIPT_NAME">
pankso@107 123 <input type="hidden" name="eth" />
pankso@107 124 $(table_start)
pankso@107 125 <thead>
pankso@107 126 <tr>
pankso@107 127 <td>$(gettext "Name")</td>
pankso@107 128 <td>$(gettext "Value")</td>
pankso@107 129 </tr>
pankso@107 130 </thead>
pankso@107 131 <tr>
pankso@107 132 <td>$(gettext "Interface")</td>
pankso@107 133 <td><input type="text" name="iface" size="20" value="$INTERFACE" /></td>
pankso@107 134 </tr>
pankso@107 135 <tr>
pankso@107 136 <td>$(gettext "IP address")</td>
pankso@107 137 <td><input type="text" name="ip" size="20" value="$IP" /></td>
pankso@107 138 </tr>
pankso@107 139 <tr>
pankso@107 140 <td>$(gettext "Netmask")</td>
pankso@107 141 <td><input type="text" name="netmask" size="20" value="$NETMASK" /></td>
pankso@107 142 </tr>
pankso@107 143 <tr>
pankso@107 144 <td>$(gettext "Gateway")</td>
pankso@107 145 <td><input type="text" name="gateway" size="20" value="$GATEWAY" /></td>
pankso@107 146 </tr>
pankso@107 147 <tr>
pankso@107 148 <td>$(gettext "DNS server")</td>
pankso@107 149 <td><input type="text" name="dns" size="20" value="$DNS_SERVER" /></td>
pankso@107 150 </tr>
pankso@107 151 $(table_end)
pankso@107 152 <input type="submit" value="`gettext "Activate"`">
pankso@107 153 </form>
pankso@107 154
pankso@107 155 <h3>$(gettext "Configuration file")</h3>
pankso@107 156 <p>
pankso@107 157 $(gettext "These values are the ethernet settings in the main
pankso@107 158 /etc/network.conf configuration file")
pankso@107 159 </p>
pankso@41 160 <pre>
pankso@107 161 $(grep ^[A-V] /etc/network.conf | syntax_highlighter conf)
pankso@41 162 </pre>
pankso@107 163 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
pankso@107 164 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
pankso@41 165 EOT
pankso@41 166 ;;
pascal@81 167 *\ wifi\ *)
pankso@41 168 # Wireless connections settings
pankso@41 169 xhtml_header
pankso@106 170 LOADING_MSG=$(gettext "Scanning wireless interface...")
pankso@106 171 loading_msg
pankso@41 172 cat << EOT
pankso@41 173 <h2>`gettext "Wireless connection`</h2>
pankso@106 174 <div id="actions">
pankso@108 175 <a class="button" href="$SCRIPT_NAME?wifi&start-wifi=start-wifi">
pankso@108 176 <img src="$IMAGES/start.png" />$(gettext "Start")</a>
pankso@108 177 <a class="button" href="$SCRIPT_NAME?wifi&stop=stop">
pankso@108 178 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a>
pankso@106 179 <a class="button" href="$SCRIPT_NAME?wifi=scan">
pankso@106 180 <img src="$IMAGES/recharge.png" />$(gettext "Scan")</a>
pankso@106 181 </div>
pankso@106 182 $(detect_wifi_networks)
pankso@106 183 EOT
pankso@106 184 cat << EOT
pankso@98 185 <h3>$(gettext "Configuration file")</h3>
pankso@98 186 <p>
pankso@98 187 $(gettext "These values are the wifi settings in the main
pankso@98 188 /etc/network.conf configuration file")
pankso@98 189 </p>
pankso@41 190 <pre>
pankso@107 191 $(grep ^WIFI /etc/network.conf | syntax_highlighter conf)
pankso@41 192 </pre>
pankso@98 193 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
pankso@98 194 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
pankso@106 195
pankso@106 196 <h3>$(gettext "Output of") iwconfig</h3>
pankso@106 197 <pre>
pankso@106 198 $(iwconfig)
pankso@106 199 </pre>
pankso@41 200 EOT
pankso@41 201 ;;
pankso@41 202 *)
pankso@41 203 # Main Network page starting with a summary
pankso@41 204 xhtml_header
pankso@108 205 hostname=$(cat /etc/hostname)
pankso@41 206 cat << EOT
pankso@41 207 <h2>`gettext "Networking`</h2>
pankso@41 208 <p>
paul@52 209 `gettext "Manage network connections and services`
pankso@41 210 </p>
pankso@41 211 <div id="actions">
pankso@74 212 <div class="float-left">
pankso@41 213 `gettext "Connection:"`
pankso@108 214 <a class="button" href="$SCRIPT_NAME?start">
pankso@108 215 <img src="$IMAGES/start.png" />$(gettext "Start")</a>
pankso@108 216 <a class="button" href="$SCRIPT_NAME?stop">
pankso@108 217 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a>
pankso@74 218 </div>
pankso@74 219 <div class="float-right">
pankso@108 220 `gettext "Configuration:"`
pankso@74 221 <a class="button" href="index.cgi?file=/etc/network.conf">network.conf</a>
pankso@108 222 <a class="button" href="$SCRIPT_NAME?eth">Ethernet</a>
pankso@108 223 <a class="button" href="$SCRIPT_NAME?wifi">Wireless</a>
pankso@74 224 </div>
pankso@38 225 </div>
pankso@38 226
pankso@106 227 $(list_network_interfaces)
pankso@38 228
pankso@108 229 <h3>$(gettext "Hosts")</h3>
pankso@108 230 <pre>
pankso@108 231 $(cat /etc/hosts)
pankso@108 232 </pre>
pankso@108 233 <a class="button" href="index.cgi?file=/etc/hosts&action=edit">
pankso@108 234 <img src="$IMAGES/edit.png" />$(gettext "Edit hosts")</a>
pankso@108 235
pankso@108 236 <h3>$(gettext "Hostname")</h3>
pankso@108 237 <form method="get" name="$SCRIPT_NAME"
pankso@108 238 <input type="text" name="hostname" value="$hostname" />
pankso@108 239 <input type="submit" value="$(gettext "Change hostname")"
pankso@108 240 </form>
pankso@108 241
pankso@108 242
pankso@106 243 <h3>$(gettext "Output of ") ifconfig</h3>
pankso@38 244 <pre>
pankso@106 245 $(ifconfig)
pankso@38 246 </pre>
pascal@68 247
pascal@68 248 <h3>`gettext "Routing table"`</h3>
pascal@68 249 <pre>
pankso@106 250 $(route -n)
pascal@68 251 </pre>
pascal@68 252
pascal@68 253 <h3>`gettext "Domain name resolution"`</h3>
pascal@68 254 <pre>
pankso@106 255 $(cat /etc/resolv.conf)
pascal@68 256 </pre>
pascal@68 257
pascal@68 258 <h3>`gettext "ARP table"`</h3>
pascal@68 259 <pre>
pankso@106 260 $(arp)
pascal@68 261 </pre>
pankso@38 262 EOT
pankso@38 263 ;;
pankso@38 264 esac
pankso@38 265
pankso@38 266 xhtml_footer
pankso@38 267 exit 0