tazpanel diff 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
line diff
     1.1 --- a/hardware.cgi	Sat Jun 29 17:06:39 2013 +0200
     1.2 +++ b/hardware.cgi	Wed Jul 24 15:14:47 2013 +0000
     1.3 @@ -12,6 +12,14 @@
     1.4  
     1.5  TITLE=$(gettext 'TazPanel - Hardware')
     1.6  
     1.7 +# Call an optionnal module
     1.8 +lib()
     1.9 +{
    1.10 +	module=lib/$1
    1.11 +	shift
    1.12 +	[ -s $module ] && . $module "$@"
    1.13 +}
    1.14 +
    1.15  lsusb_table()
    1.16  {
    1.17  	cat << EOT
    1.18 @@ -267,6 +275,7 @@
    1.19  		# Disk stats and management (mount, umount, check)
    1.20  		#
    1.21  		device=$(GET device)
    1.22 +		lib crypto $device
    1.23  		case "$device" in
    1.24  		*[\;\`\&\|\$]*) ;;
    1.25  		mount\ *)
    1.26 @@ -280,11 +289,9 @@
    1.27  EOT
    1.28  		df_thead
    1.29  		echo '<tbody>'
    1.30 -		blkid | sort | while read dev misc
    1.31 +		for fs in $(blkid | sort | sed 's/:.*//')
    1.32  		do
    1.33 -			fs=${dev%:}
    1.34 -			set --
    1.35 -			df | grep -q "^$fs " && set -- $(df -h | grep "^$fs ")
    1.36 +			set -- $(df -h | grep "^$fs ")
    1.37  			size=$2
    1.38  			used=$3
    1.39  			av=$4
    1.40 @@ -305,10 +312,20 @@
    1.41  			fi
    1.42  			[ -z "$size" ] &&
    1.43  			size="$(blk2h $(cat /sys/block/${fs#/dev/}/size /sys/block/*/${fs#/dev/}/size))"
    1.44 +			img="harddisk.png"
    1.45 +			case "$(cat /sys/block/${fs#/dev/}/removable 2> /dev/null ||
    1.46 +				cat /sys/block/${fs:5:3}/removable 2> /dev/null)" in
    1.47 +			1) img="floppy.png" ;; 
    1.48 +			esac
    1.49 +			case "$(cat /sys/block/${fs#/dev/}/ro 2> /dev/null ||
    1.50 +				cat /sys/block/${fs:5:3}/ro 2> /dev/null)" in
    1.51 +			1) img="tazlito.png" ;; 
    1.52 +			esac
    1.53 +			[ -s ".$IMAGES/$img" ] || img="harddisk.png"
    1.54  			cat << EOT
    1.55  <tr>
    1.56  	<td><input type="radio" name="device" value="$action $fs" />
    1.57 -	    <img src="$IMAGES/harddisk.png" />${fs#/dev/}</td>
    1.58 +	    <img src="$IMAGES/$img" />${fs#/dev/}</td>
    1.59  	<td>$(blkid $fs | sed '/LABEL=/!d;s/.*LABEL="\([^"]*\).*/\1/')</td>
    1.60  	<td>$type</td>
    1.61  	<td>$size</td>
    1.62 @@ -335,6 +352,7 @@
    1.63  		cat << EOT
    1.64  </tbody>
    1.65  </table>
    1.66 +$(lib crypto input)
    1.67  <input type="submit" value="mount / umount" /> -
    1.68  new mount point <input type=text" name="mountpoint" value="/media/usbdisk" />
    1.69  </form>
    1.70 @@ -354,6 +372,57 @@
    1.71  	<img src="$IMAGES/edit.png" />$(gettext 'Manual Edit')</a>
    1.72  
    1.73  
    1.74 +<h3>$(gettext 'Loop devices')</h3>
    1.75 +EOT
    1.76 +		#
    1.77 +		# Loop device management
    1.78 +		#
    1.79 +		device=$(GET loopdev)
    1.80 +		lib crypto $device
    1.81 +		case "$device" in
    1.82 +		/dev/loop*)
    1.83 +			set -- $(losetup | grep ^$device:)
    1.84 +			[ -n "$3" ] && losetup -d $device
    1.85 +			ro=""
    1.86 +			[ -n "$(GET readonly)" ] && ro="-r"
    1.87 +			file="$(GET backingfile)"
    1.88 +			[ -n "$file" ] && losetup -o $(GET offset) $ro $device $file
    1.89 +		esac
    1.90 +		cat << EOT
    1.91 +<form method="get" action="$SCRIPT_NAME#loop">
    1.92 +<table id="loop" class="zebra outbox nowrap">
    1.93 +<thead>
    1.94 +<tr><td>Device</td><td>Backing file</td><td>Access</td><td>Offset</td></tr>
    1.95 +</thead>
    1.96 +<tbody>
    1.97 +EOT
    1.98 +for loop in $(ls /dev/loop[0-9]*); do
    1.99 +	case "$(cat /sys/block/${loop#/dev/}/ro 2> /dev/null)" in
   1.100 +	0) ro="read/write" ;;
   1.101 +	1) ro="read&nbsp;only" ;;
   1.102 +	*) ro="" ;;
   1.103 +	esac
   1.104 +	set -- $(losetup | grep ^$loop:) $ro
   1.105 +	cat << EOT
   1.106 +<tr>
   1.107 +	<td><input type="radio" name="loopdev" value="$loop" />
   1.108 +	    <img src="$IMAGES/harddisk.png" />${loop#/dev/}</td>
   1.109 +	<td>$3</td><td align="center">$4</td><td align="right">$2</td>
   1.110 +</tr>
   1.111 +EOT
   1.112 +done
   1.113 +		cat << EOT
   1.114 +</tbody>
   1.115 +</table>
   1.116 +$(lib crypto input)
   1.117 +<input type="submit" value="Setup" /> -
   1.118 +new backing file <input type="file" name="backingfile" /> -
   1.119 +offset in bytes <input type="text" name="offset" size="8" value="0" /> -
   1.120 +<input type="checkbox" name "readonly"> read-only
   1.121 +</form>
   1.122 +EOT
   1.123 +
   1.124 +		cat << EOT
   1.125  <h3>$(gettext 'System memory')</h3>
   1.126  EOT
   1.127