tazpanel annotate network.cgi @ rev 288
live: make live usb into tazpanle, new input and button style
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Mon Apr 02 11:22:06 2012 +0200 (2012-04-02) |
parents | ef246bc25ae2 |
children | 72e9955ebdff |
rev | line source |
---|---|
pankso@38 | 1 #!/bin/sh |
pankso@38 | 2 # |
pankso@38 | 3 # Network configuration CGI interface |
pankso@38 | 4 # |
pankso@241 | 5 # Copyright (C) 2012 SliTaz GNU/Linux - BSD License |
pankso@112 | 6 # |
pankso@38 | 7 |
pankso@38 | 8 # Common functions from libtazpanel |
pankso@38 | 9 . lib/libtazpanel |
pankso@38 | 10 get_config |
pascal@81 | 11 header |
pankso@38 | 12 |
pankso@42 | 13 TITLE="- Network" |
pankso@42 | 14 |
pankso@106 | 15 # Catch ESSIDs and format output for GTK tree. We get the list of |
pankso@106 | 16 # networks by Cell and without spaces. |
pankso@106 | 17 detect_wifi_networks() |
pankso@106 | 18 { |
pankso@106 | 19 table_start |
pankso@106 | 20 cat << EOT |
pankso@106 | 21 <thead> |
pankso@106 | 22 <tr> |
pankso@106 | 23 <td>$(gettext "Name")</td> |
pankso@106 | 24 <td>$(gettext "Quality")</td> |
pankso@106 | 25 <td>$(gettext "Encryption")</td> |
pankso@106 | 26 <td>$(gettext "Status")</td> |
pankso@106 | 27 </tr> |
pankso@106 | 28 </thead> |
pankso@106 | 29 EOT |
pankso@106 | 30 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then |
pankso@106 | 31 ifconfig $WIFI_INTERFACE up |
pankso@239 | 32 for i in $(iwlist $WIFI_INTERFACE scan | sed s/"Cell "/Cell-/ | grep "Cell-" | awk '{print $1}') |
pankso@106 | 33 do |
pankso@239 | 34 SCAN=$(iwlist $WIFI_INTERFACE scan last | \ |
pankso@239 | 35 awk '/(Cell|ESS|Qual|Encry|IE: WPA|WPA2)/ {print}' | \ |
pankso@239 | 36 sed s/"Cell "/Cell-/ | grep -A 5 "$i") |
pankso@239 | 37 ESSID=$(echo $SCAN | cut -d '"' -f 2) |
pankso@106 | 38 if echo "$SCAN" | grep -q Quality; then |
pankso@239 | 39 QUALITY=$(echo $SCAN | sed 's/.*Quality=\([^ ]*\).*/\1/' | sed 's/.*Quality:\([^ ]*\).*/\1/') |
pankso@106 | 40 else |
pankso@106 | 41 QUALITY="-" |
pankso@106 | 42 fi |
pankso@239 | 43 ENCRYPTION=$(echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/') |
pankso@106 | 44 # Check encryption type |
pankso@239 | 45 if echo "$SCAN" | grep -q WPA*; then |
pankso@239 | 46 ENCRYPTION="WPA" |
pankso@106 | 47 fi |
pankso@106 | 48 # Connected or not connected... |
pankso@106 | 49 if ifconfig | grep -A 1 $WIFI_INTERFACE | \ |
pankso@108 | 50 fgrep -q inet && iwconfig $WIFI_INTERFACE | \ |
pankso@108 | 51 grep ESSID | fgrep -q -w "$ESSID"; then |
pankso@108 | 52 status=$(gettext "Connected") |
pankso@106 | 53 else |
pankso@108 | 54 status="---" |
pankso@106 | 55 fi |
pankso@106 | 56 echo '<tr>' |
pankso@239 | 57 echo "<td><a href=\"$SCRIPT_NAME?wifi&select=$ESSID&keytype=$ENCRYPTION\"> |
pankso@239 | 58 <img src='$IMAGES/wireless.png' />$ESSID</a></td>" |
pankso@108 | 59 echo "<td>$QUALITY</td><td>$ENCRYPTION</td><td>$status $ip</td>" |
pankso@106 | 60 echo '</tr>' |
pankso@106 | 61 done |
pankso@106 | 62 fi |
pankso@106 | 63 table_end |
pankso@106 | 64 } |
pankso@106 | 65 |
pankso@247 | 66 # Start a wifi connection |
pankso@247 | 67 start_wifi() { |
pankso@247 | 68 sed -i \ |
pankso@247 | 69 -e s'/^DHCP=.*/DHCP="yes"/' \ |
pankso@247 | 70 -e s'/^WIFI=.*/WIFI="yes"/' \ |
pankso@250 | 71 -e s'/^STATIC=.*/STATIC="no"/' /etc/network.conf |
pankso@247 | 72 ifconfig $WIFI_INTERFACE up |
pankso@247 | 73 iwconfig $WIFI_INTERFACE txpower auto |
Christian@273 | 74 /etc/init.d/network.sh restart | log |
pankso@247 | 75 sleep 2 |
pankso@247 | 76 } |
pankso@247 | 77 |
pankso@41 | 78 # Actions commands before page is displayed |
pascal@81 | 79 case " $(GET) " in |
pascal@81 | 80 *\ start\ *) |
pankso@41 | 81 # Here we sleep a bit to let udhcp get the lease before reloading |
paul@205 | 82 # the page with status |
pankso@76 | 83 /etc/init.d/network.sh start | log |
pankso@41 | 84 sleep 2 ;; |
pascal@81 | 85 *\ stop\ *) |
pankso@76 | 86 /etc/init.d/network.sh stop | log ;; |
naitsirhc@269 | 87 *\ restart\ *) |
naitsirhc@269 | 88 /etc/init.d/network.sh restart | log ;; |
pankso@247 | 89 *\ start-wifi\ *) start_wifi ;; |
pankso@108 | 90 *\ hostname\ *) |
pankso@108 | 91 echo $(gettext "Changed hostname:") $(GET hostname) | log |
pankso@108 | 92 echo "$(GET hostname)" > /etc/hostname ;; |
pankso@41 | 93 esac |
pankso@41 | 94 |
paul@127 | 95 # Get values only now since they could have been modified by actions. |
pankso@108 | 96 . /etc/network.conf |
pankso@108 | 97 |
pankso@38 | 98 # |
pankso@41 | 99 # Main Commands for pages |
pankso@38 | 100 # |
pankso@38 | 101 |
pascal@81 | 102 case " $(GET) " in |
pascal@136 | 103 *\ scan\ *) |
pascal@136 | 104 # Scan open ports |
pascal@136 | 105 scan=$(GET scan) |
pascal@136 | 106 xhtml_header |
pascal@136 | 107 LOADING_MSG=$(gettext "Scanning open ports...") |
pascal@136 | 108 loading_msg |
pascal@136 | 109 cat << EOT |
pankso@240 | 110 <h2>$(gettext "Port scanning for") $scan</h2> |
pascal@136 | 111 <pre> |
pascal@136 | 112 $(pscan -b $scan) |
pascal@136 | 113 </pre> |
pascal@136 | 114 EOT |
pascal@136 | 115 ;; |
pascal@81 | 116 *\ eth\ *) |
pankso@41 | 117 # Wired connections settings |
pankso@38 | 118 xhtml_header |
pankso@107 | 119 if [ "$(GET ip)" ]; then |
pascal@124 | 120 DHCP=no |
pascal@124 | 121 STATIC=no |
pascal@124 | 122 [ -n "$(GET dhcp)" ] && DHCP=yes |
pascal@124 | 123 [ -n "$(GET static)" ] && STATIC=yes |
pascal@124 | 124 LOADING_MSG=$(gettext "Setting up IP...") |
pankso@107 | 125 loading_msg |
pankso@107 | 126 sed -i \ |
pankso@107 | 127 -e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \ |
pascal@124 | 128 -e s"/^DHCP=.*/DHCP=\"$DHCP\"/" \ |
pascal@124 | 129 -e s"/^STATIC=.*/STATIC=\"$STATIC\"/" \ |
pankso@107 | 130 -e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \ |
pankso@107 | 131 -e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \ |
pankso@107 | 132 -e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \ |
pankso@107 | 133 -e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf |
pankso@107 | 134 /etc/init.d/network stop | log |
pankso@107 | 135 sleep 2 |
pankso@107 | 136 /etc/init.d/network start | log |
pankso@240 | 137 . /etc/network.conf |
pankso@107 | 138 fi |
pankso@38 | 139 cat << EOT |
pankso@240 | 140 <h2>$(gettext "Ethernet connection")</h2> |
pankso@148 | 141 <p> |
pankso@148 | 142 $(gettext "Here you can configure a wired connection using DHCP to |
pankso@148 | 143 automatically get a random IP or configure a static/fixed IP") |
pankso@148 | 144 </p> |
pankso@148 | 145 <h3>$(gettext "Configuration")</h3> |
pankso@107 | 146 <form method="get" action="$SCRIPT_NAME"> |
pankso@107 | 147 <input type="hidden" name="eth" /> |
pankso@107 | 148 $(table_start) |
pankso@107 | 149 <thead> |
pankso@107 | 150 <tr> |
pankso@107 | 151 <td>$(gettext "Name")</td> |
pankso@107 | 152 <td>$(gettext "Value")</td> |
pankso@107 | 153 </tr> |
pankso@107 | 154 </thead> |
pankso@107 | 155 <tr> |
pankso@107 | 156 <td>$(gettext "Interface")</td> |
pankso@107 | 157 <td><input type="text" name="iface" size="20" value="$INTERFACE" /></td> |
pankso@107 | 158 </tr> |
pankso@107 | 159 <tr> |
pankso@107 | 160 <td>$(gettext "IP address")</td> |
pankso@107 | 161 <td><input type="text" name="ip" size="20" value="$IP" /></td> |
pankso@107 | 162 </tr> |
pankso@107 | 163 <tr> |
pankso@107 | 164 <td>$(gettext "Netmask")</td> |
pankso@107 | 165 <td><input type="text" name="netmask" size="20" value="$NETMASK" /></td> |
pankso@107 | 166 </tr> |
pankso@107 | 167 <tr> |
pankso@107 | 168 <td>$(gettext "Gateway")</td> |
pankso@107 | 169 <td><input type="text" name="gateway" size="20" value="$GATEWAY" /></td> |
pankso@107 | 170 </tr> |
pankso@107 | 171 <tr> |
pankso@107 | 172 <td>$(gettext "DNS server")</td> |
pankso@107 | 173 <td><input type="text" name="dns" size="20" value="$DNS_SERVER" /></td> |
pankso@107 | 174 </tr> |
pankso@107 | 175 $(table_end) |
pascal@124 | 176 <input type="submit" name="static" value="`gettext "Activate (static)"`"> |
pascal@124 | 177 <input type="submit" name="dhcp" value="`gettext "Activate (DHCP)"`"> |
pascal@124 | 178 <input type="submit" name="disable" value="`gettext "Disable"`"> |
pankso@107 | 179 </form> |
pankso@107 | 180 |
pankso@107 | 181 <h3>$(gettext "Configuration file")</h3> |
pankso@107 | 182 <p> |
pankso@107 | 183 $(gettext "These values are the ethernet settings in the main |
pankso@107 | 184 /etc/network.conf configuration file") |
pankso@107 | 185 </p> |
pankso@41 | 186 <pre> |
pankso@107 | 187 $(grep ^[A-V] /etc/network.conf | syntax_highlighter conf) |
pankso@41 | 188 </pre> |
pankso@107 | 189 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit"> |
pankso@107 | 190 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a> |
pankso@41 | 191 EOT |
pankso@41 | 192 ;; |
pascal@81 | 193 *\ wifi\ *) |
pankso@41 | 194 # Wireless connections settings |
pankso@41 | 195 xhtml_header |
pankso@106 | 196 LOADING_MSG=$(gettext "Scanning wireless interface...") |
pankso@106 | 197 loading_msg |
pankso@238 | 198 . /etc/network.conf |
pankso@41 | 199 cat << EOT |
pankso@238 | 200 <h2>$(gettext "Wireless connection")</h2> |
pankso@106 | 201 <div id="actions"> |
pankso@108 | 202 <a class="button" href="$SCRIPT_NAME?wifi&start-wifi=start-wifi"> |
pankso@108 | 203 <img src="$IMAGES/start.png" />$(gettext "Start")</a> |
pankso@108 | 204 <a class="button" href="$SCRIPT_NAME?wifi&stop=stop"> |
pankso@108 | 205 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a> |
pankso@106 | 206 <a class="button" href="$SCRIPT_NAME?wifi=scan"> |
pankso@106 | 207 <img src="$IMAGES/recharge.png" />$(gettext "Scan")</a> |
pankso@106 | 208 </div> |
pankso@106 | 209 $(detect_wifi_networks) |
pankso@106 | 210 EOT |
pankso@240 | 211 if [ "$(GET essid)" ]; then |
pankso@240 | 212 WIFI_KEY="" |
pankso@240 | 213 WIFI_KEY_TYPE=none |
pankso@240 | 214 [ -n "$(GET key)" ] && WIFI_KEY="$(GET key)" |
pankso@240 | 215 [ -n "$(GET keytype)" ] && WIFI_KEY_TYPE="$(GET keytype)" |
pankso@247 | 216 /etc/init.d/network.sh stop | log |
pankso@240 | 217 sed -i \ |
pankso@240 | 218 -e s"/^WIFI_ESSID=.*/WIFI_ESSID=\"$(GET essid)\""/ \ |
pankso@240 | 219 -e s"/^WIFI_KEY=.*/WIFI_KEY=\"$WIFI_KEY\"/" \ |
pankso@240 | 220 -e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \ |
pankso@240 | 221 /etc/network.conf |
pankso@240 | 222 . /etc/network.conf |
pankso@247 | 223 start_wifi |
pankso@240 | 224 fi |
pankso@240 | 225 # ESSID names are clickable |
pankso@240 | 226 if [ "$(GET select)" ]; then |
pankso@240 | 227 if [ "$(GET select)" != "$WIFI_ESSID" ]; then |
pankso@240 | 228 WIFI_KEY="" |
pankso@240 | 229 fi |
pankso@240 | 230 WIFI_ESSID="$(GET select)" |
pankso@240 | 231 WIFI_KEY_TYPE="$(GET keytype)" |
pankso@240 | 232 fi |
pankso@106 | 233 cat << EOT |
pankso@238 | 234 <h3>$(gettext "Connection")</h3> |
pankso@238 | 235 <form method="get" action="$SCRIPT_NAME"> |
pankso@240 | 236 <input type="hidden" name="connect-wifi" /> |
pankso@238 | 237 $(table_start) |
pankso@238 | 238 <thead> |
pankso@238 | 239 <tr> |
pankso@238 | 240 <td>$(gettext "Name")</td> |
pankso@238 | 241 <td>$(gettext "Value")</td> |
pankso@238 | 242 </tr> |
pankso@238 | 243 </thead> |
pankso@238 | 244 <tr> |
pankso@238 | 245 <td>$(gettext "Wifi name (ESSID)")</td> |
pankso@238 | 246 <td><input type="text" name="essid" size="30" value="$WIFI_ESSID" /></td> |
pankso@238 | 247 </tr> |
pankso@238 | 248 <tr> |
pankso@238 | 249 <td>$(gettext "Password (Wifi key)")</td> |
pankso@240 | 250 <td><input type="password" name="key" size="30" value="$WIFI_KEY" /></td> |
pankso@238 | 251 </tr> |
pankso@238 | 252 <tr> |
pankso@238 | 253 <td>$(gettext "Encryption type")</td> |
pankso@238 | 254 <td><input type="text" name="keytype" size="30" value="$WIFI_KEY_TYPE" /></td> |
pankso@238 | 255 </tr> |
pankso@238 | 256 $(table_end) |
pankso@240 | 257 <input type="submit" name="wifi" value="$(gettext "Configure")" /> |
pankso@238 | 258 </form> |
pankso@238 | 259 |
pankso@98 | 260 <h3>$(gettext "Configuration file")</h3> |
pankso@98 | 261 <p> |
pankso@98 | 262 $(gettext "These values are the wifi settings in the main |
pankso@98 | 263 /etc/network.conf configuration file") |
pankso@98 | 264 </p> |
pankso@41 | 265 <pre> |
pankso@107 | 266 $(grep ^WIFI /etc/network.conf | syntax_highlighter conf) |
pankso@41 | 267 </pre> |
pankso@98 | 268 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit"> |
pankso@98 | 269 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a> |
pankso@106 | 270 |
pankso@106 | 271 <h3>$(gettext "Output of") iwconfig</h3> |
pankso@106 | 272 <pre> |
pankso@106 | 273 $(iwconfig) |
pankso@106 | 274 </pre> |
pankso@41 | 275 EOT |
pankso@41 | 276 ;; |
pankso@41 | 277 *) |
pankso@41 | 278 # Main Network page starting with a summary |
pankso@41 | 279 xhtml_header |
pankso@108 | 280 hostname=$(cat /etc/hostname) |
pankso@41 | 281 cat << EOT |
pascal@136 | 282 <h2>`gettext "Networking"`</h2> |
pankso@41 | 283 <p> |
pascal@136 | 284 `gettext "Manage network connections and services"` |
pankso@41 | 285 </p> |
pankso@41 | 286 <div id="actions"> |
pankso@74 | 287 <div class="float-left"> |
pankso@108 | 288 <a class="button" href="$SCRIPT_NAME?start"> |
pankso@108 | 289 <img src="$IMAGES/start.png" />$(gettext "Start")</a> |
pankso@108 | 290 <a class="button" href="$SCRIPT_NAME?stop"> |
pankso@108 | 291 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a> |
naitsirhc@269 | 292 <a class="button" href="$SCRIPT_NAME?restart"> |
naitsirhc@269 | 293 <img src="$IMAGES/recharge.png" />$(gettext "Restart")</a> |
pankso@74 | 294 </div> |
pankso@74 | 295 <div class="float-right"> |
pankso@108 | 296 `gettext "Configuration:"` |
pankso@74 | 297 <a class="button" href="index.cgi?file=/etc/network.conf">network.conf</a> |
pankso@108 | 298 <a class="button" href="$SCRIPT_NAME?eth">Ethernet</a> |
pankso@108 | 299 <a class="button" href="$SCRIPT_NAME?wifi">Wireless</a> |
pankso@74 | 300 </div> |
pankso@38 | 301 </div> |
pankso@38 | 302 |
pankso@106 | 303 $(list_network_interfaces) |
pankso@38 | 304 |
pascal@133 | 305 <a name="hosts"></a> |
pankso@108 | 306 <h3>$(gettext "Hosts")</h3> |
pankso@108 | 307 <pre> |
pankso@108 | 308 $(cat /etc/hosts) |
pankso@108 | 309 </pre> |
pankso@108 | 310 <a class="button" href="index.cgi?file=/etc/hosts&action=edit"> |
pankso@108 | 311 <img src="$IMAGES/edit.png" />$(gettext "Edit hosts")</a> |
pankso@108 | 312 |
pankso@108 | 313 <h3>$(gettext "Hostname")</h3> |
pankso@108 | 314 <form method="get" name="$SCRIPT_NAME" |
pankso@108 | 315 <input type="text" name="hostname" value="$hostname" /> |
pankso@108 | 316 <input type="submit" value="$(gettext "Change hostname")" |
pankso@108 | 317 </form> |
pankso@108 | 318 |
pankso@108 | 319 |
pascal@133 | 320 <a name="ifconfig"></a> |
pankso@106 | 321 <h3>$(gettext "Output of ") ifconfig</h3> |
pankso@38 | 322 <pre> |
pankso@106 | 323 $(ifconfig) |
pankso@38 | 324 </pre> |
pascal@68 | 325 |
pascal@133 | 326 <a name="routing"></a> |
pascal@68 | 327 <h3>`gettext "Routing table"`</h3> |
pascal@68 | 328 <pre> |
pankso@106 | 329 $(route -n) |
pascal@68 | 330 </pre> |
pascal@68 | 331 |
pascal@133 | 332 <a name="dns"></a> |
pascal@68 | 333 <h3>`gettext "Domain name resolution"`</h3> |
pascal@68 | 334 <pre> |
pankso@106 | 335 $(cat /etc/resolv.conf) |
pascal@68 | 336 </pre> |
pascal@68 | 337 |
pascal@133 | 338 <a name="arp"></a> |
pascal@68 | 339 <h3>`gettext "ARP table"`</h3> |
pascal@68 | 340 <pre> |
pankso@106 | 341 $(arp) |
pascal@68 | 342 </pre> |
pascal@131 | 343 |
pascal@133 | 344 <a name="connections"></a> |
pascal@131 | 345 <h3>`gettext "IP Connections"`</h3> |
pascal@131 | 346 <pre> |
pascal@156 | 347 $(netstat -anp 2> /dev/null | sed -e '/UNIX domain sockets/,$d' \ |
pascal@156 | 348 -e 's#\([0-9]*\)/#<a href="boot.cgi?daemons=pid=\1">\1</a>/#') |
pascal@131 | 349 </pre> |
pankso@38 | 350 EOT |
pankso@38 | 351 ;; |
pankso@38 | 352 esac |
pankso@38 | 353 |
pankso@38 | 354 xhtml_footer |
pankso@38 | 355 exit 0 |