tazpanel annotate hardware.cgi @ rev 307
fix bug with config file. config reverts (mainly) to the old format
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri May 04 22:58:21 2012 +0300 (2012-05-04) |
parents | 72e9955ebdff |
children | 3e9acc16f728 |
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 |
pankso@46 | 15 # |
pankso@46 | 16 # Commands |
pankso@46 | 17 # |
pankso@46 | 18 |
pascal@81 | 19 case " $(GET) " in |
pascal@81 | 20 *\ print\ *) |
al@303 | 21 xhtml_header |
al@303 | 22 echo "<h2>TODO</h2>" ;; |
pankso@242 | 23 *\ detect\ *) |
pankso@242 | 24 # Front end for Tazhw |
pankso@242 | 25 # TODO: Add button to detect webcam, etc. Like in tazhw box. |
pankso@242 | 26 xhtml_header |
al@303 | 27 cat << EOT |
pankso@242 | 28 <div id="wrapper"> |
al@303 | 29 <h2>$(gettext 'Detect hardware')</h2> |
al@303 | 30 <p>$(gettext 'Detect PCI and USB hardware')</p> |
pankso@242 | 31 </div> |
al@303 | 32 |
al@303 | 33 <pre>$(tazhw detect-pci | syntax_highlighter sh)</pre> |
al@303 | 34 |
al@303 | 35 <pre>$(tazhw detect-usb | syntax_highlighter sh)</pre> |
pankso@242 | 36 EOT |
al@303 | 37 ;; |
pascal@81 | 38 *\ modules\ *|*\ modinfo\ *) |
pankso@46 | 39 xhtml_header |
pankso@46 | 40 cat << EOT |
pankso@46 | 41 <div id="wrapper"> |
al@303 | 42 <h2>$(gettext 'Kernel modules')</h2> |
al@303 | 43 <div class="float-right"> |
al@303 | 44 <form method="get" action="$SCRIPT_NAME"> |
al@303 | 45 <input type="hidden" name="modules" /> |
al@303 | 46 <input type="search" placeholder="$(gettext 'Modules search')" name="search" /> |
al@303 | 47 </form> |
al@303 | 48 </div> |
al@303 | 49 <p>$(gettext 'Manage, search or get information about the Linux kernel modules')</p> |
pankso@46 | 50 </div> |
pankso@46 | 51 EOT |
pankso@66 | 52 # Request may be modinfo output that we want in the page itself |
al@303 | 53 get_modinfo="$(GET modinfo)" |
al@303 | 54 if [ -n "$get_modinfo" ]; then |
al@303 | 55 cat << EOT |
al@303 | 56 <strong>$(eval_gettext 'Detailed information for module: $get_modinfo')</strong> |
al@303 | 57 |
al@303 | 58 <pre>$(modinfo $get_modinfo)</pre> |
al@303 | 59 EOT |
pascal@81 | 60 fi |
pascal@81 | 61 if [ -n "$(GET modprobe)" ]; then |
al@303 | 62 echo "<pre>$(modprobe -v $(GET modprobe))</pre>" |
pascal@81 | 63 fi |
pascal@81 | 64 if [ -n "$(GET rmmod)" ]; then |
pascal@81 | 65 echo "Removing" |
pascal@81 | 66 rmmod -w $(GET rmmod) |
pascal@81 | 67 fi |
al@303 | 68 get_search="$(GET search)" |
al@303 | 69 if [ -n "$get_search" ]; then |
al@303 | 70 eval_gettext 'Matching result(s) for: $get_search' |
pascal@81 | 71 echo '<pre>' |
pascal@81 | 72 modprobe -l | grep "$(GET search)" | while read line |
pascal@81 | 73 do |
pascal@81 | 74 name=$(basename $line) |
pascal@81 | 75 mod=${name%.ko.gz} |
al@303 | 76 echo "$(gettext 'Module:') <a href='$SCRIPT_NAME?modinfo=$mod'>$mod</a>" |
pascal@81 | 77 done |
pascal@81 | 78 echo '</pre>' |
pascal@81 | 79 fi |
pankso@46 | 80 cat << EOT |
al@303 | 81 $(table_start) |
pankso@46 | 82 <tr class="thead"> |
al@303 | 83 <td>$(gettext 'Module')</td> |
al@303 | 84 <td>$(gettext 'Size')</td> |
al@303 | 85 <td>$(gettext 'Used')</td> |
al@303 | 86 <td>$(gettext 'by')</td> |
pankso@46 | 87 </tr> |
pankso@46 | 88 EOT |
pankso@46 | 89 # Get the list of modules and link to modinfo |
pankso@46 | 90 lsmod | grep ^[a-z] | while read MOD SIZE USED BY |
pankso@46 | 91 do |
pankso@46 | 92 cat << EOT |
pankso@46 | 93 <tr> |
pankso@46 | 94 <td><a href="$SCRIPT_NAME?modinfo=$MOD">$MOD</a></td> |
pankso@46 | 95 <td>$SIZE</td> |
pankso@46 | 96 <td>$USED</td> |
al@303 | 97 <td>$(echo $BY | sed s/","/" "/g)</td> |
pankso@46 | 98 </tr> |
pankso@46 | 99 EOT |
pankso@46 | 100 done |
pankso@66 | 101 table_end ;; |
pankso@66 | 102 *) |
pascal@217 | 103 [ -n "$(GET brightness)" ] && |
pascal@262 | 104 echo -n $(GET brightness) > /sys/devices/virtual/backlight/$(GET dev)/brightness |
al@292 | 105 |
pankso@66 | 106 # |
pankso@66 | 107 # Default to summary with mounted filesystem, loaded modules |
pankso@66 | 108 # |
pankso@66 | 109 xhtml_header |
pankso@66 | 110 cat << EOT |
pankso@66 | 111 <div id="wrapper"> |
al@303 | 112 <h2>$(gettext 'Drivers & Devices')</h2> |
al@303 | 113 <p>$(gettext 'Manage your computer hardware')</p> |
pascal@219 | 114 </div> |
pascal@219 | 115 <div> |
pascal@219 | 116 <a class="button" href="$SCRIPT_NAME?modules"> |
al@303 | 117 <img src="$IMAGES/tux.png" />$(gettext 'Kernel modules')</a> |
pankso@242 | 118 <a class="button" href="$SCRIPT_NAME?detect"> |
al@303 | 119 <img src="$IMAGES/monitor.png" />$(gettext 'Detect PCI/USB')</a> |
pascal@219 | 120 </div> |
pascal@219 | 121 |
pascal@219 | 122 <div id="wrapper"> |
pascal@217 | 123 EOT |
pascal@219 | 124 if [ -n "$(ls /proc/acpi/battery/*/info 2> /dev/null)" ]; then |
pascal@219 | 125 echo "<table>" |
pascal@219 | 126 for dev in /proc/acpi/battery/*; do |
pascal@219 | 127 grep ^present $dev/info | grep -q yes || continue |
pascal@219 | 128 design=$(sed '/design capacity:/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
pascal@219 | 129 remain=$(sed '/remaining capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 130 rate=$(sed '/present rate/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 131 full=$(sed '/last full capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
al@303 | 132 warning=$(sed '/design capacity warning/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
al@303 | 133 low=$(sed '/design capacity low/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
al@303 | 134 state=$(sed '/charging state/!d;s/\([^:]*:[ ]\+\)\([a-z]\+\)/\2/' < $dev/state) |
al@303 | 135 |
al@303 | 136 rempct=$(( $remain * 100 / $full )) |
pascal@219 | 137 cat << EOT |
pascal@219 | 138 <tr> |
pascal@219 | 139 <td><img src="$IMAGES/battery.png" /> |
al@303 | 140 $(gettext 'Battery') $(grep "^battery type" $dev/info | sed 's/.*: *//') |
pascal@219 | 141 $(grep "^design capacity:" $dev/info | sed 's/.*: *//') </td> |
al@303 | 142 <td>$(gettext 'health') $(( (100*$full)/$design))%</td> |
al@303 | 143 <td class="meter"><meter min="0" max="$full" value="$remain" low="$low" |
al@303 | 144 high="$warning" optimum="$full"></meter> |
al@303 | 145 <span> |
pascal@219 | 146 EOT |
al@303 | 147 case "$state" in |
al@303 | 148 "discharging") |
al@303 | 149 remtime=$(( $remain * 60 / $rate )) |
al@303 | 150 remtimef=$(printf "%d:%02d" $(($remtime/60)) $(($remtime%60))) |
al@303 | 151 eval_gettext 'Discharging $rempct% - $remtimef' ;; |
al@303 | 152 "charging") |
al@303 | 153 remtime=$(( ($full - $remain) * 60 / $rate )) |
al@303 | 154 remtimef=$(printf "%d:%02d" $(($remtime/60)) $(($remtime%60))) |
al@303 | 155 eval_gettext 'Charging $rempct% - $remtimef' ;; |
al@303 | 156 "charged") |
al@303 | 157 gettext 'Charged 100%' ;; |
al@303 | 158 esac |
al@303 | 159 echo '</span></td></tr>' |
pascal@219 | 160 done |
pascal@219 | 161 echo "</table>" |
pascal@219 | 162 fi |
al@303 | 163 |
pascal@262 | 164 if [ -n "$(ls /sys/devices/virtual/thermal/*/temp 2> /dev/null)" ]; then |
al@303 | 165 echo -n '<p>'; gettext 'Temperature:' |
pascal@262 | 166 for temp in /sys/devices/virtual/thermal/*/temp; do |
pascal@262 | 167 awk '{ print $1/1000 }' < $temp |
pascal@219 | 168 done |
al@303 | 169 echo '</p>' |
pascal@219 | 170 fi |
al@303 | 171 |
pascal@262 | 172 if [ -n "$(ls /sys/devices/virtual/backlight/*/brightness 2> /dev/null)" ]; then |
pascal@217 | 173 cat <<EOT |
pascal@217 | 174 <form method="get" action="$SCRIPT_NAME"> |
pascal@217 | 175 EOT |
pascal@262 | 176 for dev in /sys/devices/virtual/backlight/*/brightness ; do |
pascal@262 | 177 name=$(echo $dev | sed 's|.*/backlight/\([^/]*\).*|\1|') |
pascal@217 | 178 cat <<EOT |
pascal@217 | 179 <input type="hidden" name="dev" value="$name" /> |
al@303 | 180 $(gettext 'Brightness') \ |
pascal@263 | 181 $(sed 's/.*\.//;s/_*$//' < /sys/devices/virtual/backlight/$name/device/path): |
pascal@263 | 182 <select name="brightness" onchange="submit();"> |
pascal@217 | 183 EOT |
pascal@262 | 184 max=$(cat /sys/devices/virtual/backlight/$name/max_brightness) |
pascal@262 | 185 for i in $(seq 0 $max); do |
pascal@262 | 186 echo -n "<option value=\"$i\"" |
pascal@262 | 187 [ $i -eq $(cat /sys/devices/virtual/backlight/$name/actual_brightness) ] && |
pascal@262 | 188 echo -n " selected=\"selected\"" |
pascal@262 | 189 echo "> $(( (($i + 1) * 100) / ($max + 1) ))% </option>" |
pascal@262 | 190 done |
pascal@217 | 191 cat <<EOT |
pascal@217 | 192 </select> |
pascal@217 | 193 EOT |
pascal@217 | 194 done |
pascal@217 | 195 cat << EOT |
pascal@217 | 196 </form> |
pascal@217 | 197 EOT |
pascal@217 | 198 fi |
pascal@217 | 199 cat << EOT |
pankso@66 | 200 </div> |
pankso@152 | 201 |
al@303 | 202 <h3>$(gettext 'Filesystem usage statistics')</h3> |
pankso@152 | 203 <pre> |
pankso@66 | 204 EOT |
pankso@152 | 205 fdisk -l | fgrep Disk |
pankso@66 | 206 echo '</pre>' |
al@303 | 207 |
al@303 | 208 |
pankso@153 | 209 # |
al@303 | 210 # Disk stats and management (mount, umount, check) |
pankso@153 | 211 # |
al@303 | 212 cat << EOT |
al@303 | 213 <table class="zebra"> |
al@303 | 214 EOT |
pankso@153 | 215 df_thead |
al@303 | 216 echo '<tbody>' |
pankso@153 | 217 df -h | grep ^/dev | while read fs size used av pct mp |
pankso@153 | 218 do |
pankso@153 | 219 cat << EOT |
pankso@153 | 220 <tr> |
pankso@190 | 221 <td><img src="$IMAGES/harddisk.png" />${fs#/dev/}</td> |
al@303 | 222 <td>$(blkid -o value $fs | head -n1)</td> |
al@303 | 223 <td>$(blkid -o value $fs | tail -n1)</td> |
pankso@153 | 224 <td>$size</td> |
pankso@153 | 225 <td>$av</td> |
al@303 | 226 <td class="meter"><meter min="0" max="100" value="${pct%%%}" low="70" |
al@303 | 227 high="90" optimum="10"></meter> |
al@303 | 228 <span>$used - $pct</span> |
al@303 | 229 </td> |
pankso@153 | 230 <td>$mp</td> |
pankso@153 | 231 </tr> |
pankso@153 | 232 EOT |
pankso@153 | 233 done |
al@303 | 234 cat << EOT |
al@303 | 235 </tbody> |
al@303 | 236 </table> |
al@303 | 237 |
al@303 | 238 EOT |
al@303 | 239 |
al@303 | 240 |
al@303 | 241 cat << EOT |
al@303 | 242 <h3>$(gettext 'System memory')</h3> |
al@303 | 243 <pre> |
al@303 | 244 EOT |
pascal@219 | 245 free -m | sed \ |
pankso@152 | 246 -e s"#total.*\([^']\)#<span class='top'>\0</span>#"g \ |
pankso@152 | 247 -e s"#^[A-Z-].*:\([^']\)#<span class='sh-comment'>\0</span>#"g |
al@303 | 248 cat << EOT |
al@303 | 249 </pre> |
al@303 | 250 |
al@303 | 251 <h3>lspci</h3> |
al@303 | 252 <pre> |
al@303 | 253 EOT |
pascal@155 | 254 lspci -k | sed \ |
pascal@155 | 255 -e s"#^[0-9].*\([^']\)#<span class='diff-at'>\0</span>#" \ |
pascal@155 | 256 -e s"#use: \(.*\)#use: <span class='diff-rm'>\1</span>#" |
al@303 | 257 cat << EOT |
al@303 | 258 </pre> |
al@303 | 259 |
al@303 | 260 <h3>lsusb</h3> |
al@303 | 261 <pre>$(lsusb)</pre> |
al@303 | 262 EOT |
pankso@46 | 263 ;; |
pankso@46 | 264 esac |
pankso@46 | 265 |
pankso@46 | 266 xhtml_footer |
pankso@46 | 267 exit 0 |