tazpanel rev 454

boot.cgi: add ISO mine
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Apr 11 17:30:12 2015 +0200 (2015-04-11)
parents 61395bbfe889
children 1bc6783d2671
files boot.cgi styles/default/header.html
line diff
     1.1 --- a/boot.cgi	Sat Apr 11 08:01:42 2015 +0200
     1.2 +++ b/boot.cgi	Sat Apr 11 17:30:12 2015 +0200
     1.3 @@ -36,7 +36,7 @@
     1.4  case " $(GET) " in
     1.5  	*\ syslog\ *)
     1.6  		logtype="$(GET syslog)"
     1.7 -		[ "$logtype" == "syslog" ] && logtype=messages
     1.8 +		[ "${logtype:-syslog}" == "syslog" ] && logtype=messages
     1.9  		xhtml_header
    1.10  		[ -w /etc/syslog.conf ] && cat <<EOT
    1.11  <a href="index.cgi?file=/etc/syslog.conf&amp;action=edit" data-img="conf"></a>syslog.conf
    1.12 @@ -361,6 +361,99 @@
    1.13  	;;
    1.14  
    1.15  
    1.16 +	*\ iso\ *)
    1.17 +		xhtml_header
    1.18 +		iso=$(POST iso)
    1.19 +		workdir=$(POST workdir)
    1.20 +		action=$(POST action)
    1.21 +		[ "$action" ] || action=$(GET action)
    1.22 +		[ -d $workdir ] || workdir=$(dirname $workdir)
    1.23 +		[ -w $workdir -a "$workdir" ] || workdir=/tmp
    1.24 +		[ -s "$iso" ] || unset iso
    1.25 +		echo "<h2>$(_ 'ISO mine')</h2>"
    1.26 +		[ "$iso" ] || cat <<EOT
    1.27 +<section>
    1.28 +Invalid ISO image.
    1.29 +</section>
    1.30 +EOT
    1.31 +		if [ "$iso" -a "$action" -a "$action" != "nop" ]; then
    1.32 +			case "$action" in
    1.33 +			install*) dev=$(POST instdev) ;;
    1.34 +			*) dev=$(POST usbkeydev) ;;
    1.35 +			esac
    1.36 +			cat <<EOT
    1.37 +<section>
    1.38 +<pre>
    1.39 +$(taziso $iso $action $dev)
    1.40 +</pre>
    1.41 +</section>
    1.42 +EOT
    1.43 +		fi
    1.44 +		cat <<EOT
    1.45 +<section>
    1.46 +<form method="post" action="?iso">
    1.47 +EOT
    1.48 +		cat <<EOT
    1.49 +<p>
    1.50 +ISO image file full path (set /dev/cdrom for a physical CD-ROM)<br />
    1.51 +<input type="text" name="iso" value="$iso" size="50" />
    1.52 +</p>
    1.53 +<p>
    1.54 +Working directory
    1.55 +<input type="text" name="workdir" value="$workdir" />
    1.56 +</p>
    1.57 +<p>
    1.58 +Windows partition
    1.59 +<select name="instdev">
    1.60 +	<option value="/dev/null">Choose a partition</option>
    1.61 +EOT
    1.62 +		blkid | grep -iE "(msdos|vfat|ntfs)" | \
    1.63 +		sed 's|^/dev/\(.*\):.*LABEL="\([^"]*\).*|\1 "\2"|' | \
    1.64 +		while read dev label; do
    1.65 +			echo -n "<option value=\"/dev/$dev\">/dev/$dev $label "
    1.66 +			echo "$(($(cat /sys/block/${dev:0:3}/$dev/size)/2048))MB</option>"
    1.67 +		done 
    1.68 +		cat <<EOT
    1.69 +</select>
    1.70 +</p>
    1.71 +<p>
    1.72 +USB key device
    1.73 +<select name="usbkeydev">
    1.74 +	<option value="/dev/null">Choose an USB key</option>
    1.75 +EOT
    1.76 +		grep -l 1 /sys/block/*/removable | \
    1.77 +		sed 's|/sys/block/\(.*\)/removable|\1|' | while read dev; do
    1.78 +			grep -qs 1 /sys/block/$DEV/ro && continue
    1.79 +			echo -n "<option value=\"/dev/$dev\">/dev/$dev "
    1.80 +			echo "$(($(cat /sys/block/$dev/size)/2048))MB $(cat \
    1.81 +				/sys/block/$i/device/model 2> /dev/null)</option>"
    1.82 +		done
    1.83 +		cat <<EOT
    1.84 +</select>
    1.85 +</p>
    1.86 +<footer>
    1.87 +EOT
    1.88 +		if [ "$iso" ]; then
    1.89 +			cat <<EOT
    1.90 +<select name="action">
    1.91 +	<option value="nop">Choose an action</option>
    1.92 +$(taziso $iso list | sed -e \
    1.93 +'s/"\(.*\)"[\t ]*"\(.*\)"/<option value="\1\">\2<\/option>/' -e \
    1.94 +"s|value=\"$action\"|& selected|")
    1.95 +</select>
    1.96 +EOT
    1.97 +		elif [ "$action" ]; then
    1.98 +			cat <<EOT
    1.99 +<input type="hidden" name="action" value="$action" />
   1.100 +EOT
   1.101 +		fi
   1.102 +		cat <<EOT
   1.103 +	<button data-icon="cd" name="mine">Mine</button>
   1.104 +</footer>
   1.105 +</form>
   1.106 +</section>
   1.107 +EOT
   1.108 +		;;
   1.109  	*)
   1.110  		#
   1.111  		# Default content with summary
   1.112 @@ -377,6 +470,9 @@
   1.113  	<button name="syslog"  data-icon="logs"   >$(_ 'System logs')</button>
   1.114  	<button name="daemons" data-icon="daemons" data-root>$(_ 'Manage daemons')</button>
   1.115  EOT
   1.116 +		[ "$REMOTE_USER" == "root" -a -x /usr/bin/taziso ] && cat <<EOT
   1.117 +	<button name="iso"     data-icon="cd"      >$(_ 'ISO mine')</button>
   1.118 +EOT
   1.119  		[ -w /boot/grub/menu.lst ] && cat <<EOT
   1.120  	<button name="grub"    data-icon="grub"   >$(_ 'Boot loader')</button>
   1.121  EOT
     2.1 --- a/styles/default/header.html	Sat Apr 11 08:01:42 2015 +0200
     2.2 +++ b/styles/default/header.html	Sat Apr 11 17:30:12 2015 +0200
     2.3 @@ -59,6 +59,8 @@
     2.4      </li>
     2.5      <li><a data-icon="logs" href="boot.cgi?syslog">$(_ 'System logs')</a>
     2.6      <li><a data-icon="daemons" href="boot.cgi?daemons" data-root>$(_ 'Manage daemons')</a></li>
     2.7 +    $([ "$REMOTE_USER" == "root" -a -x /usr/bin/taziso ] &&
     2.8 +	echo "<li><a data-icon=\"cd\" href=\"boot.cgi?iso\">$(_ 'ISO mine')</a>")
     2.9      $(for i in menu.d/boot/* ; do [ -f $i ] && sh $i menu $i ; done)
    2.10     </menu>
    2.11    </li>