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 |