tazpanel annotate hardware.cgi @ rev 373
hardware.cgi: add loop support
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Jul 24 15:14:47 2013 +0000 (2013-07-24) |
parents | 4a8f56bb08cb |
children | c48b0c995b14 |
rev | line source |
---|---|
pankso@46 | 1 #!/bin/sh |
pankso@46 | 2 # |
pankso@46 | 3 # Hardware part of TazPanel - Devices, drivers, printing |
pankso@46 | 4 # |
pankso@112 | 5 # Copyright (C) 2011 SliTaz GNU/Linux - BSD License |
pankso@46 | 6 # |
pankso@46 | 7 |
pankso@46 | 8 # Common functions from libtazpanel |
pankso@46 | 9 . lib/libtazpanel |
pankso@46 | 10 get_config |
pascal@81 | 11 header |
pankso@46 | 12 |
al@292 | 13 TITLE=$(gettext 'TazPanel - Hardware') |
pankso@46 | 14 |
pascal@373 | 15 # Call an optionnal module |
pascal@373 | 16 lib() |
pascal@373 | 17 { |
pascal@373 | 18 module=lib/$1 |
pascal@373 | 19 shift |
pascal@373 | 20 [ -s $module ] && . $module "$@" |
pascal@373 | 21 } |
pascal@373 | 22 |
al@363 | 23 lsusb_table() |
al@363 | 24 { |
al@363 | 25 cat << EOT |
al@363 | 26 <table class="zebra outbox"> |
al@363 | 27 <thead><tr><td>Bus</td><td>Device</td><td>ID</td><td>Name</td></thead> |
al@363 | 28 <tbody> |
al@363 | 29 EOT |
al@363 | 30 lsusb | sed 's|^Bus \([0-9]*\)|<tr><td>\1</td>|; |
al@363 | 31 s|</td> Device \([0-9]*\):|</td><td>\1</td>|; |
al@363 | 32 s|</td> ID \([^:]*:[^ ]*\)|</td><td><a href="?lsusb=\1">\1</a></td>|; |
al@363 | 33 s| |<td>|2; |
al@363 | 34 s|.*$|\0</td></tr>|' |
al@363 | 35 echo "</tbody></table>" |
al@363 | 36 } |
al@363 | 37 |
al@363 | 38 lspci_table() |
al@363 | 39 { |
al@363 | 40 cat << EOT |
al@363 | 41 <table class="zebra outbox"> |
al@363 | 42 <thead><tr><td>Slot</td><td>Device</td><td>Name</td></thead> |
al@363 | 43 <tbody> |
al@363 | 44 EOT |
al@363 | 45 lspci | sed 's| |</td><td>|; |
al@363 | 46 s|: |</td><td>|; |
al@363 | 47 s|^\([^<]*\)|<a href="?lspci=\1">\1</a>|; |
al@363 | 48 s|^.*$|<tr><td>\0</td></tr>|' |
al@363 | 49 echo "</tbody></table>" |
al@363 | 50 } |
al@363 | 51 |
pankso@46 | 52 # |
pankso@46 | 53 # Commands |
pankso@46 | 54 # |
pankso@46 | 55 |
pascal@81 | 56 case " $(GET) " in |
pascal@81 | 57 *\ print\ *) |
al@303 | 58 xhtml_header |
al@303 | 59 echo "<h2>TODO</h2>" ;; |
pankso@242 | 60 *\ detect\ *) |
pankso@242 | 61 # Front end for Tazhw |
pankso@242 | 62 # TODO: Add button to detect webcam, etc. Like in tazhw box. |
pankso@242 | 63 xhtml_header |
al@303 | 64 cat << EOT |
pankso@242 | 65 <div id="wrapper"> |
al@303 | 66 <h2>$(gettext 'Detect hardware')</h2> |
al@303 | 67 <p>$(gettext 'Detect PCI and USB hardware')</p> |
pankso@242 | 68 </div> |
al@303 | 69 |
al@303 | 70 <pre>$(tazhw detect-pci | syntax_highlighter sh)</pre> |
al@303 | 71 |
al@303 | 72 <pre>$(tazhw detect-usb | syntax_highlighter sh)</pre> |
pankso@242 | 73 EOT |
al@303 | 74 ;; |
pascal@81 | 75 *\ modules\ *|*\ modinfo\ *) |
pankso@46 | 76 xhtml_header |
pankso@46 | 77 cat << EOT |
pankso@46 | 78 <div id="wrapper"> |
al@303 | 79 <h2>$(gettext 'Kernel modules')</h2> |
al@303 | 80 <div class="float-right"> |
al@303 | 81 <form method="get" action="$SCRIPT_NAME"> |
al@303 | 82 <input type="hidden" name="modules" /> |
al@303 | 83 <input type="search" placeholder="$(gettext 'Modules search')" name="search" /> |
al@303 | 84 </form> |
al@303 | 85 </div> |
al@303 | 86 <p>$(gettext 'Manage, search or get information about the Linux kernel modules')</p> |
pankso@46 | 87 </div> |
pankso@46 | 88 EOT |
pankso@66 | 89 # Request may be modinfo output that we want in the page itself |
al@303 | 90 get_modinfo="$(GET modinfo)" |
al@303 | 91 if [ -n "$get_modinfo" ]; then |
al@303 | 92 cat << EOT |
al@303 | 93 <strong>$(eval_gettext 'Detailed information for module: $get_modinfo')</strong> |
al@303 | 94 |
al@303 | 95 <pre>$(modinfo $get_modinfo)</pre> |
al@303 | 96 EOT |
pascal@81 | 97 fi |
pascal@81 | 98 if [ -n "$(GET modprobe)" ]; then |
al@303 | 99 echo "<pre>$(modprobe -v $(GET modprobe))</pre>" |
pascal@81 | 100 fi |
pascal@81 | 101 if [ -n "$(GET rmmod)" ]; then |
pascal@81 | 102 echo "Removing" |
pascal@81 | 103 rmmod -w $(GET rmmod) |
pascal@81 | 104 fi |
al@303 | 105 get_search="$(GET search)" |
al@303 | 106 if [ -n "$get_search" ]; then |
al@303 | 107 eval_gettext 'Matching result(s) for: $get_search' |
pascal@81 | 108 echo '<pre>' |
pascal@81 | 109 modprobe -l | grep "$(GET search)" | while read line |
pascal@81 | 110 do |
pascal@81 | 111 name=$(basename $line) |
pascal@81 | 112 mod=${name%.ko.gz} |
al@303 | 113 echo "$(gettext 'Module:') <a href='$SCRIPT_NAME?modinfo=$mod'>$mod</a>" |
pascal@81 | 114 done |
pascal@81 | 115 echo '</pre>' |
pascal@81 | 116 fi |
pankso@46 | 117 cat << EOT |
al@303 | 118 $(table_start) |
pankso@46 | 119 <tr class="thead"> |
al@303 | 120 <td>$(gettext 'Module')</td> |
al@303 | 121 <td>$(gettext 'Size')</td> |
al@303 | 122 <td>$(gettext 'Used')</td> |
al@303 | 123 <td>$(gettext 'by')</td> |
pankso@46 | 124 </tr> |
pankso@46 | 125 EOT |
pankso@46 | 126 # Get the list of modules and link to modinfo |
pankso@46 | 127 lsmod | grep ^[a-z] | while read MOD SIZE USED BY |
pankso@46 | 128 do |
pankso@46 | 129 cat << EOT |
pankso@46 | 130 <tr> |
pankso@46 | 131 <td><a href="$SCRIPT_NAME?modinfo=$MOD">$MOD</a></td> |
pankso@46 | 132 <td>$SIZE</td> |
pankso@46 | 133 <td>$USED</td> |
al@303 | 134 <td>$(echo $BY | sed s/","/" "/g)</td> |
pankso@46 | 135 </tr> |
pankso@46 | 136 EOT |
pankso@46 | 137 done |
pankso@66 | 138 table_end ;; |
al@363 | 139 *\ lsusb\ *) |
al@363 | 140 xhtml_header |
al@363 | 141 vidpid="$(GET lsusb)" |
al@363 | 142 cat << EOT |
al@363 | 143 <div id="wrapper"> |
al@363 | 144 <h2>$(eval_gettext 'Information for USB Device $vidpid')</h2> |
al@363 | 145 <p>$(gettext 'Detailed information about specified device.')</p> |
al@363 | 146 EOT |
al@363 | 147 lsusb_table |
al@363 | 148 cat << EOT |
al@363 | 149 </div> |
al@363 | 150 <pre>$(lsusb -vd $vidpid | syntax_highlighter lsusb)</pre> |
al@363 | 151 EOT |
al@363 | 152 ;; |
al@363 | 153 *\ lspci\ *) |
al@363 | 154 xhtml_header |
al@363 | 155 slot="$(GET lspci)" |
al@363 | 156 cat << EOT |
al@363 | 157 <div id="wrapper"> |
al@363 | 158 <h2>$(eval_gettext 'Information for PCI Device $slot')</h2> |
al@363 | 159 <p>$(gettext 'Detailed information about specified device.')</p> |
al@363 | 160 EOT |
al@363 | 161 lspci_table |
al@363 | 162 cat << EOT |
al@363 | 163 </div> |
al@363 | 164 <pre>$(lspci -vs $slot | syntax_highlighter lspci)</pre> |
al@363 | 165 EOT |
al@363 | 166 ;; |
pankso@66 | 167 *) |
pascal@217 | 168 [ -n "$(GET brightness)" ] && |
pascal@262 | 169 echo -n $(GET brightness) > /sys/devices/virtual/backlight/$(GET dev)/brightness |
al@292 | 170 |
pankso@66 | 171 # |
pankso@66 | 172 # Default to summary with mounted filesystem, loaded modules |
pankso@66 | 173 # |
pankso@66 | 174 xhtml_header |
pankso@66 | 175 cat << EOT |
pankso@66 | 176 <div id="wrapper"> |
al@303 | 177 <h2>$(gettext 'Drivers & Devices')</h2> |
al@303 | 178 <p>$(gettext 'Manage your computer hardware')</p> |
pascal@219 | 179 </div> |
pascal@219 | 180 <div> |
pascal@219 | 181 <a class="button" href="$SCRIPT_NAME?modules"> |
al@303 | 182 <img src="$IMAGES/tux.png" />$(gettext 'Kernel modules')</a> |
pankso@242 | 183 <a class="button" href="$SCRIPT_NAME?detect"> |
al@303 | 184 <img src="$IMAGES/monitor.png" />$(gettext 'Detect PCI/USB')</a> |
pascal@219 | 185 </div> |
pascal@219 | 186 |
pascal@217 | 187 EOT |
pascal@219 | 188 if [ -n "$(ls /proc/acpi/battery/*/info 2> /dev/null)" ]; then |
pascal@219 | 189 echo "<table>" |
pascal@219 | 190 for dev in /proc/acpi/battery/*; do |
pascal@219 | 191 grep ^present $dev/info | grep -q yes || continue |
pascal@219 | 192 design=$(sed '/design capacity:/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
pascal@219 | 193 remain=$(sed '/remaining capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 194 rate=$(sed '/present rate/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 195 full=$(sed '/last full capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
al@303 | 196 warning=$(sed '/design capacity warning/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
al@303 | 197 low=$(sed '/design capacity low/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
al@303 | 198 state=$(sed '/charging state/!d;s/\([^:]*:[ ]\+\)\([a-z]\+\)/\2/' < $dev/state) |
al@303 | 199 |
al@303 | 200 rempct=$(( $remain * 100 / $full )) |
pascal@219 | 201 cat << EOT |
pascal@219 | 202 <tr> |
pascal@219 | 203 <td><img src="$IMAGES/battery.png" /> |
al@303 | 204 $(gettext 'Battery') $(grep "^battery type" $dev/info | sed 's/.*: *//') |
pascal@219 | 205 $(grep "^design capacity:" $dev/info | sed 's/.*: *//') </td> |
al@303 | 206 <td>$(gettext 'health') $(( (100*$full)/$design))%</td> |
al@303 | 207 <td class="meter"><meter min="0" max="$full" value="$remain" low="$low" |
al@303 | 208 high="$warning" optimum="$full"></meter> |
al@303 | 209 <span> |
pascal@219 | 210 EOT |
al@303 | 211 case "$state" in |
al@303 | 212 "discharging") |
al@303 | 213 remtime=$(( $remain * 60 / $rate )) |
al@303 | 214 remtimef=$(printf "%d:%02d" $(($remtime/60)) $(($remtime%60))) |
al@303 | 215 eval_gettext 'Discharging $rempct% - $remtimef' ;; |
al@303 | 216 "charging") |
al@303 | 217 remtime=$(( ($full - $remain) * 60 / $rate )) |
al@303 | 218 remtimef=$(printf "%d:%02d" $(($remtime/60)) $(($remtime%60))) |
al@303 | 219 eval_gettext 'Charging $rempct% - $remtimef' ;; |
al@303 | 220 "charged") |
al@303 | 221 gettext 'Charged 100%' ;; |
al@303 | 222 esac |
al@303 | 223 echo '</span></td></tr>' |
pascal@219 | 224 done |
pascal@219 | 225 echo "</table>" |
pascal@219 | 226 fi |
al@303 | 227 |
pascal@262 | 228 if [ -n "$(ls /sys/devices/virtual/thermal/*/temp 2> /dev/null)" ]; then |
al@303 | 229 echo -n '<p>'; gettext 'Temperature:' |
pascal@262 | 230 for temp in /sys/devices/virtual/thermal/*/temp; do |
pascal@262 | 231 awk '{ print $1/1000 }' < $temp |
pascal@219 | 232 done |
al@303 | 233 echo '</p>' |
pascal@219 | 234 fi |
al@303 | 235 |
pascal@262 | 236 if [ -n "$(ls /sys/devices/virtual/backlight/*/brightness 2> /dev/null)" ]; then |
pascal@217 | 237 cat <<EOT |
pascal@217 | 238 <form method="get" action="$SCRIPT_NAME"> |
pascal@217 | 239 EOT |
pascal@262 | 240 for dev in /sys/devices/virtual/backlight/*/brightness ; do |
pascal@262 | 241 name=$(echo $dev | sed 's|.*/backlight/\([^/]*\).*|\1|') |
pascal@217 | 242 cat <<EOT |
pascal@217 | 243 <input type="hidden" name="dev" value="$name" /> |
al@303 | 244 $(gettext 'Brightness') \ |
pascal@263 | 245 $(sed 's/.*\.//;s/_*$//' < /sys/devices/virtual/backlight/$name/device/path): |
pascal@263 | 246 <select name="brightness" onchange="submit();"> |
pascal@217 | 247 EOT |
pascal@262 | 248 max=$(cat /sys/devices/virtual/backlight/$name/max_brightness) |
pascal@262 | 249 for i in $(seq 0 $max); do |
pascal@262 | 250 echo -n "<option value=\"$i\"" |
pascal@262 | 251 [ $i -eq $(cat /sys/devices/virtual/backlight/$name/actual_brightness) ] && |
pascal@262 | 252 echo -n " selected=\"selected\"" |
pascal@262 | 253 echo "> $(( (($i + 1) * 100) / ($max + 1) ))% </option>" |
pascal@262 | 254 done |
pascal@217 | 255 cat <<EOT |
pascal@217 | 256 </select> |
pascal@217 | 257 EOT |
pascal@217 | 258 done |
pascal@217 | 259 cat << EOT |
pascal@217 | 260 </form> |
pascal@217 | 261 EOT |
pascal@217 | 262 fi |
pascal@217 | 263 cat << EOT |
pankso@152 | 264 |
al@363 | 265 |
al@363 | 266 <h3 id="disk">$(gettext 'Filesystem usage statistics')</h3> |
al@363 | 267 |
pankso@152 | 268 <pre> |
al@363 | 269 $(fdisk -l | fgrep Disk) |
al@363 | 270 </pre> |
pankso@66 | 271 EOT |
al@303 | 272 |
al@303 | 273 |
pankso@153 | 274 # |
al@303 | 275 # Disk stats and management (mount, umount, check) |
pankso@153 | 276 # |
pascal@344 | 277 device=$(GET device) |
pascal@373 | 278 lib crypto $device |
pascal@344 | 279 case "$device" in |
pascal@344 | 280 *[\;\`\&\|\$]*) ;; |
pascal@344 | 281 mount\ *) |
pascal@344 | 282 $device $(GET mountpoint);; |
pascal@344 | 283 umount\ *|swapon\ *|swapoff\ *) |
pascal@344 | 284 $device ;; |
pascal@344 | 285 esac |
al@303 | 286 cat << EOT |
pascal@344 | 287 <form method="get" action="$SCRIPT_NAME#mount"> |
al@363 | 288 <table id="mount" class="zebra outbox nowrap"> |
al@303 | 289 EOT |
pankso@153 | 290 df_thead |
al@303 | 291 echo '<tbody>' |
pascal@373 | 292 for fs in $(blkid | sort | sed 's/:.*//') |
pankso@153 | 293 do |
pascal@373 | 294 set -- $(df -h | grep "^$fs ") |
pascal@343 | 295 size=$2 |
pascal@343 | 296 used=$3 |
pascal@343 | 297 av=$4 |
pascal@343 | 298 pct=$5 |
pascal@343 | 299 mp=$6 |
pascal@344 | 300 action="mount" |
pascal@344 | 301 [ -n "$mp" ] && action="umount" |
pascal@344 | 302 type=$(blkid $fs | sed '/TYPE=/!d;s/.*TYPE="\([^"]*\).*/\1/') |
pascal@344 | 303 [ "$type" == "swap" ] && action="swapon" |
pascal@344 | 304 if grep -q "^$fs " /proc/swaps; then |
pascal@344 | 305 action="swapoff" |
pascal@344 | 306 set -- $(grep "^$fs " /proc/swaps) |
pascal@364 | 307 size=$(blk2h $(($3*2))) |
pascal@364 | 308 used=$(blk2h $(($4*2))) |
pascal@364 | 309 av=$(blk2h $((2*($3-$4)))) |
pascal@344 | 310 pct=$(((100*$4)/$3))% |
pascal@344 | 311 mp=swap |
pascal@344 | 312 fi |
pascal@364 | 313 [ -z "$size" ] && |
pascal@364 | 314 size="$(blk2h $(cat /sys/block/${fs#/dev/}/size /sys/block/*/${fs#/dev/}/size))" |
pascal@373 | 315 img="harddisk.png" |
pascal@373 | 316 case "$(cat /sys/block/${fs#/dev/}/removable 2> /dev/null || |
pascal@373 | 317 cat /sys/block/${fs:5:3}/removable 2> /dev/null)" in |
pascal@373 | 318 1) img="floppy.png" ;; |
pascal@373 | 319 esac |
pascal@373 | 320 case "$(cat /sys/block/${fs#/dev/}/ro 2> /dev/null || |
pascal@373 | 321 cat /sys/block/${fs:5:3}/ro 2> /dev/null)" in |
pascal@373 | 322 1) img="tazlito.png" ;; |
pascal@373 | 323 esac |
pascal@373 | 324 [ -s ".$IMAGES/$img" ] || img="harddisk.png" |
pascal@343 | 325 cat << EOT |
pankso@153 | 326 <tr> |
pascal@344 | 327 <td><input type="radio" name="device" value="$action $fs" /> |
pascal@373 | 328 <img src="$IMAGES/$img" />${fs#/dev/}</td> |
pascal@343 | 329 <td>$(blkid $fs | sed '/LABEL=/!d;s/.*LABEL="\([^"]*\).*/\1/')</td> |
pascal@344 | 330 <td>$type</td> |
pankso@153 | 331 <td>$size</td> |
pankso@153 | 332 <td>$av</td> |
pascal@343 | 333 EOT |
pascal@343 | 334 if [ -n "$pct" ]; then |
pascal@343 | 335 cat << EOT |
al@303 | 336 <td class="meter"><meter min="0" max="100" value="${pct%%%}" low="70" |
al@303 | 337 high="90" optimum="10"></meter> |
al@303 | 338 <span>$used - $pct</span> |
al@303 | 339 </td> |
pascal@343 | 340 EOT |
pascal@343 | 341 else |
pascal@343 | 342 cat << EOT |
al@363 | 343 <td> </td> |
pascal@343 | 344 EOT |
pascal@343 | 345 fi |
pascal@343 | 346 cat << EOT |
pankso@153 | 347 <td>$mp</td> |
pascal@344 | 348 <td>$(blkid $fs | sed '/UUID=/!d;s/.*UUID="\([^"]*\).*/\1/')</td> |
pankso@153 | 349 </tr> |
pankso@153 | 350 EOT |
pankso@153 | 351 done |
al@303 | 352 cat << EOT |
al@303 | 353 </tbody> |
al@303 | 354 </table> |
pascal@373 | 355 $(lib crypto input) |
pascal@344 | 356 <input type="submit" value="mount / umount" /> - |
pascal@344 | 357 new mount point <input type=text" name="mountpoint" value="/media/usbdisk" /> |
pascal@344 | 358 </form> |
al@363 | 359 |
al@363 | 360 |
pascal@345 | 361 <h3>$(gettext 'Filesystems table')</h3> |
al@363 | 362 EOT |
al@363 | 363 |
al@363 | 364 grep -v '^#' /etc/fstab | awk 'BEGIN{print "<table class=\"zebra outbox\">\ |
al@363 | 365 <thead><tr><td>spec</td><td>file</td><td>vfstype</td><td>mntops</td><td>\ |
al@363 | 366 freq</td><td>passno</td></thead><tbody>"}{print "<tr><td>"$1"</td><td>"$2\ |
al@363 | 367 "</td><td>"$3"</td><td>"$4"</td><td>"$5"</td><td>"$6"</td></tr>"} |
al@363 | 368 END{print "</tbody></table>"}' |
al@363 | 369 |
al@363 | 370 cat << EOT |
pascal@345 | 371 <a class="button" href="index.cgi?file=/etc/fstab&action=edit"> |
pascal@345 | 372 <img src="$IMAGES/edit.png" />$(gettext 'Manual Edit')</a> |
al@363 | 373 |
al@363 | 374 |
pascal@373 | 375 <h3>$(gettext 'Loop devices')</h3> |
pascal@373 | 376 EOT |
pascal@373 | 377 # |
pascal@373 | 378 # Loop device management |
pascal@373 | 379 # |
pascal@373 | 380 device=$(GET loopdev) |
pascal@373 | 381 lib crypto $device |
pascal@373 | 382 case "$device" in |
pascal@373 | 383 /dev/loop*) |
pascal@373 | 384 set -- $(losetup | grep ^$device:) |
pascal@373 | 385 [ -n "$3" ] && losetup -d $device |
pascal@373 | 386 ro="" |
pascal@373 | 387 [ -n "$(GET readonly)" ] && ro="-r" |
pascal@373 | 388 file="$(GET backingfile)" |
pascal@373 | 389 [ -n "$file" ] && losetup -o $(GET offset) $ro $device $file |
pascal@373 | 390 esac |
pascal@373 | 391 cat << EOT |
pascal@373 | 392 <form method="get" action="$SCRIPT_NAME#loop"> |
pascal@373 | 393 <table id="loop" class="zebra outbox nowrap"> |
pascal@373 | 394 <thead> |
pascal@373 | 395 <tr><td>Device</td><td>Backing file</td><td>Access</td><td>Offset</td></tr> |
pascal@373 | 396 </thead> |
pascal@373 | 397 <tbody> |
pascal@373 | 398 EOT |
pascal@373 | 399 for loop in $(ls /dev/loop[0-9]*); do |
pascal@373 | 400 case "$(cat /sys/block/${loop#/dev/}/ro 2> /dev/null)" in |
pascal@373 | 401 0) ro="read/write" ;; |
pascal@373 | 402 1) ro="read only" ;; |
pascal@373 | 403 *) ro="" ;; |
pascal@373 | 404 esac |
pascal@373 | 405 set -- $(losetup | grep ^$loop:) $ro |
pascal@373 | 406 cat << EOT |
pascal@373 | 407 <tr> |
pascal@373 | 408 <td><input type="radio" name="loopdev" value="$loop" /> |
pascal@373 | 409 <img src="$IMAGES/harddisk.png" />${loop#/dev/}</td> |
pascal@373 | 410 <td>$3</td><td align="center">$4</td><td align="right">$2</td> |
pascal@373 | 411 </tr> |
pascal@373 | 412 EOT |
pascal@373 | 413 done |
pascal@373 | 414 cat << EOT |
pascal@373 | 415 </tbody> |
pascal@373 | 416 </table> |
pascal@373 | 417 $(lib crypto input) |
pascal@373 | 418 <input type="submit" value="Setup" /> - |
pascal@373 | 419 new backing file <input type="file" name="backingfile" /> - |
pascal@373 | 420 offset in bytes <input type="text" name="offset" size="8" value="0" /> - |
pascal@373 | 421 <input type="checkbox" name "readonly"> read-only |
pascal@373 | 422 </form> |
pascal@373 | 423 EOT |
pascal@373 | 424 |
pascal@373 | 425 cat << EOT |
al@363 | 426 <h3>$(gettext 'System memory')</h3> |
al@303 | 427 EOT |
al@303 | 428 |
al@363 | 429 echo "<table class=\"zebra outbox\"><thead><tr><td> </td><td>total</td>\ |
al@363 | 430 <td>used</td><td>free</td><td>shared</td><td>buffers</td></tr></thead><tbody>" |
al@363 | 431 freem=$(free -m) |
al@363 | 432 echo "$freem" | grep Mem: | awk '{print "<tr><td>"$1"</td><td>"$2"</td><td>"$3\ |
al@363 | 433 "</td><td>"$4"</td><td>"$5"</td><td>"$6"</td></tr>"}' |
al@363 | 434 echo "$freem" | grep buffers: | awk '{print "<tr><td>"$1 $2"</td><td> </td>\ |
al@363 | 435 <td>"$3"</td><td>"$4"</td><td> </td><td> </td></tr>"}' |
al@363 | 436 echo "$freem" | grep Swap: | awk '{print "<tr><td>"$1"</td><td>"$2"</td><td>"$3\ |
al@363 | 437 "</td><td>"$4"</td><td> </td><td> </td></tr></tbody></table>"}' |
al@303 | 438 |
al@303 | 439 cat << EOT |
al@303 | 440 <h3>lspci</h3> |
al@363 | 441 $(lspci_table) |
al@303 | 442 |
al@303 | 443 <h3>lsusb</h3> |
al@363 | 444 $(lsusb_table) |
al@303 | 445 EOT |
al@363 | 446 ;; |
pankso@46 | 447 esac |
pankso@46 | 448 |
pankso@46 | 449 xhtml_footer |
pankso@46 | 450 exit 0 |