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