tazpanel rev 208

Add Install tab (thanks Dominique)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Sep 02 13:46:24 2011 +0200 (2011-09-02)
parents 7e3623f26c5e
children f85527dffa0c
files installer.cgi styles/default/header.html
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/installer.cgi	Fri Sep 02 13:46:24 2011 +0200
     1.3 @@ -0,0 +1,639 @@
     1.4 +#!/bin/sh
     1.5 +#
     1.6 +# Main CGI interface for Tazinst, the SliTaz installer.
     1.7 +#
     1.8 +# Copyright (C) 2011 SliTaz GNU/Linux - BSD License
     1.9 +#
    1.10 +# Authors : Dominique Corbex <domcox@slitaz.org>
    1.11 +#
    1.12 +
    1.13 +VERSION=0.21
    1.14 +
    1.15 +# Common functions from libtazpanel
    1.16 +. lib/libtazpanel
    1.17 +header
    1.18 +get_config
    1.19 +
    1.20 +# Include gettext helper script.
    1.21 +. /usr/bin/gettext.sh
    1.22 +
    1.23 +# Export package name for gettext.
    1.24 +TEXTDOMAIN='installer'
    1.25 +export TEXTDOMAIN
    1.26 +
    1.27 +TITLE="- Installer"
    1.28 +
    1.29 +# Tazinst required version
    1.30 +TAZINST_REQUIRED_VERSION="3.3"
    1.31 +
    1.32 +# Tazinst setup file
    1.33 +INSTFILE=/var/lib/tazinst.conf
    1.34 +
    1.35 +read_setup()
    1.36 +{
    1.37 +	[ -e "$INSTFILE" ] && . $INSTFILE  || gettext "Tazinst setup file not found!"
    1.38 +}
    1.39 +
    1.40 +write_setup()
    1.41 +{
    1.42 +	if [ -e "$INSTFILE" ]; then
    1.43 +		# Install type
    1.44 +		INST_TYPE=$(GET INST_TYPE)
    1.45 +		# Source File
    1.46 +		case "$INST_TYPE" in
    1.47 +			usb)
    1.48 +				SRC_FILE=$(GET SRC_USB) ;;
    1.49 +			iso)
    1.50 +				SRC_FILE=$(GET SRC_ISO) ;;
    1.51 +			web)
    1.52 +				SRC_FILE=$(GET SRC_WEB) ;;
    1.53 +		esac
    1.54 +		SRC_FILE=$(echo "$SRC_FILE" | sed 's/\//\\\//'g)
    1.55 +		[ -n $(GET URL) ] && SRC_WEB=$(GET URL)
    1.56 +		# Main Partition
    1.57 +		TGT_PARTITION=$(echo "$(GET TGT_PARTITION)" | sed 's/\//\\\//'g)
    1.58 +		[ -n "$(GET MAIN_FMT)" ] && TGT_FS=$(GET MAIN_FS) || TGT_FS=""
    1.59 +		# Home Partition
    1.60 +		if [ -n "$(GET HOME_SPLIT)" ] ; then
    1.61 +			TGT_HOME=$(echo "$(GET HOME_PART)" | sed 's/\//\\\//'g)
    1.62 +			[ -n "$(GET HOME_FMT)" ] && TGT_HOME_FS=$(GET HOME_FS)
    1.63 +		else
    1.64 +			TGT_HOME=""
    1.65 +			TGT_HOME_FS=""
    1.66 +		fi
    1.67 +		# Hostname
    1.68 +		TGT_HOSTNAME=$(GET TGT_HOSTNAME)
    1.69 +		# Root pwd
    1.70 +		TGT_ROOT_PWD=$(GET TGT_ROOT_PWD)
    1.71 +		# User Login
    1.72 +		TGT_USER=$(GET TGT_USER)
    1.73 +		# User Pwd
    1.74 +		TGT_USER_PWD=$(GET TGT_USER_PWD)
    1.75 +		# Grub
    1.76 +		TGT_GRUB=$(GET TGT_GRUB)
    1.77 +		[ "$TGT_GRUB" == "yes" ] || TGT_GRUB=no
    1.78 +		# Win Dual-Boot
    1.79 +		TGT_WINBOOT=$(GET TGT_WINBOOT)
    1.80 +
    1.81 +		# Save changes to INSTFILE
    1.82 +		sed -i s/"^INST_TYPE=.*"/"INST_TYPE=\"$INST_TYPE\"/" $INSTFILE
    1.83 +		sed -i s/"^SRC_FILE=.*"/"SRC_FILE=\"$SRC_FILE\"/" $INSTFILE
    1.84 +		sed -i s/"^TGT_PARTITION=.*"/"TGT_PARTITION=\"$TGT_PARTITION\"/" $INSTFILE
    1.85 +		sed -i s/"^TGT_FS=.*"/"TGT_FS=\"$TGT_FS\"/" $INSTFILE
    1.86 +		sed -i s/"^TGT_HOME=.*"/"TGT_HOME=\"$TGT_HOME\"/" $INSTFILE
    1.87 +		sed -i s/"^TGT_HOME_FS=.*"/"TGT_HOME_FS=\"$TGT_HOME_FS\"/" $INSTFILE
    1.88 +		sed -i s/"^TGT_HOSTNAME=.*"/"TGT_HOSTNAME=\"$TGT_HOSTNAME\"/" $INSTFILE
    1.89 +		sed -i s/"^TGT_ROOT_PWD=.*"/"TGT_ROOT_PWD=\"$TGT_ROOT_PWD\"/" $INSTFILE
    1.90 +		sed -i s/"^TGT_USER=.*"/"TGT_USER=\"$TGT_USER\"/" $INSTFILE
    1.91 +		sed -i s/"^TGT_USER_PWD=.*"/"TGT_USER_PWD=\"$TGT_USER_PWD\"/" $INSTFILE
    1.92 +		sed -i s/"^TGT_GRUB=.*"/"TGT_GRUB=\"$TGT_GRUB\"/" $INSTFILE
    1.93 +		sed -i s/"^TGT_WINBOOT=.*"/"TGT_WINBOOT=\"$TGT_WINBOOT\"/" $INSTFILE
    1.94 +	fi
    1.95 +}
    1.96 +
    1.97 +check_setup()
    1.98 +{
    1.99 +	local ret
   1.100 +	IFS=$'\n'
   1.101 +	for line in $(tazinst check $INSTFILE; ret=$?)  
   1.102 +	do
   1.103 +		line=$(echo $line | sed 's/\[1m//g')
   1.104 +		line=$(echo $line | sed 's/\[0m//g')
   1.105 +		line=$(echo $line | sed 's/\s/\&nbsp;/g')
   1.106 +		line=$(echo $line | sed 's/</\&lt;/g')
   1.107 +		line=$(echo $line | sed 's/>/\&gt;/g')
   1.108 +		echo "<font color=\"red\">$line<br /></font>"
   1.109 +	done  
   1.110 +	unset IFS
   1.111 +	return $ret
   1.112 +}
   1.113 +
   1.114 +select_action()
   1.115 +{
   1.116 +	cat <<EOT
   1.117 +<div id="wrapper">
   1.118 +	<h2>$(gettext "SliTaz Installer")</h2>
   1.119 +	<p>$(gettext "The SliTaz Installer installs or upgrade SliTaz to a hard disk 
   1.120 +		drive from a	device like a Live-CD or LiveUSB key, from a SliTaz ISO file, or 
   1.121 +		from the web by downloading an ISO file.")<p>
   1.122 +</div>
   1.123 +EOT
   1.124 +}
   1.125 +
   1.126 +select_gparted()
   1.127 +{
   1.128 +	cat <<EOT
   1.129 +<table>
   1.130 +<tr>
   1.131 +	<td>$(gettext "Before installation, you'll may need to resize partitions
   1.132 +on your hard disk drive in order to make space for SlItaz GNU/Linux.")</td>
   1.133 +</tr>
   1.134 +</table>
   1.135 +EOT
   1.136 +}
   1.137 +
   1.138 +select_install()
   1.139 +{
   1.140 +	cat <<EOT
   1.141 +</table>
   1.142 +<form method="get" action="$SCRIPT_NAME">
   1.143 +<table>
   1.144 +<tr>
   1.145 +	<td><h4>$(gettext "Install")</h4></td>
   1.146 +</tr>
   1.147 +<tr>
   1.148 +	<td>$(gettext "Install SliTaz on a partition of your hard disk drive. If
   1.149 +	you decide to format your HDD, all data will be lost. If you do not 
   1.150 +	format, all data except for any existing /home directory will be removed, 
   1.151 +	the home directory will be kept as is.")</td>
   1.152 +</tr>
   1.153 +<tr>
   1.154 +	<td><a class="button" href="$SCRIPT_NAME?page=install">$(gettext "Install SliTaz")</a></td>
   1.155 +</tr>
   1.156 +</table>
   1.157 +EOT
   1.158 +}
   1.159 +
   1.160 +select_upgrade()
   1.161 +{
   1.162 +	cat <<EOT
   1.163 +<table>
   1.164 +<tr>
   1.165 +	<td><h4>$(gettext "Upgrade")</h4></td>
   1.166 +</tr>
   1.167 +<tr>
   1.168 +	<td>$(gettext "Upgrade an already installed SliTaz system on your hard disk
   1.169 +	drive. Your /home /etc /var/www directories will be kept, all other directories
   1.170 +	will be removed. Any additional package added to your old Slitaz system
   1.171 +	will be updated as long you have an active internet connection.")</td>
   1.172 +</tr>
   1.173 +<tr>
   1.174 +	<td><a class="button" href="$SCRIPT_NAME?page=upgrade">$(gettext "Upgrade SliTaz")</a></td>
   1.175 +</tr>
   1.176 +</table>
   1.177 +</form>
   1.178 +EOT
   1.179 +}
   1.180 +
   1.181 +display_action()
   1.182 +{
   1.183 +	case $1 in
   1.184 +		install)
   1.185 +			cat << EOT
   1.186 +<div id="wrapper">
   1.187 +<h3>$(gettext "Install SliTaz")</h3>
   1.188 +<p>$(gettext "You're going to install SliTaz on a partition of your hard disk drive. If
   1.189 +	you decide to format your HDD, all data will be lost. If you do not 
   1.190 +	format, all data except for any existing /home directory will be removed, 
   1.191 +	the home directory will be kept as is.")<p>
   1.192 +</div>
   1.193 +<input type="hidden" name="INST_ACTION" value="$1">
   1.194 +EOT
   1.195 +			;;
   1.196 +		upgrade)
   1.197 +			cat << EOT
   1.198 +<div id="wrapper">
   1.199 +<h2>$(gettext "Upgrade SliTaz")</h2>
   1.200 +<p>$(gettext "You're going to upgrade an already installed SliTaz system on your hard disk
   1.201 +	drive. Your /home /etc /var/www directories will be kept, all other directories
   1.202 +	will be removed. Any additional package added to your old Slitaz system
   1.203 +	will be updated as long you have an active internet connection.")<p>
   1.204 +</div>
   1.205 +<input type="hidden" name="INST_ACTION" value="$1">
   1.206 +EOT
   1.207 +			;;
   1.208 +	esac
   1.209 +}
   1.210 +
   1.211 +select_source()
   1.212 +{
   1.213 +	cat <<EOT
   1.214 +<a name="source"></a>
   1.215 +<h4>$(gettext "Source")</h4>
   1.216 +	<table>
   1.217 +	<tr>
   1.218 +	<td><input type="radio" name="INST_TYPE" value="cdrom" $([ "$INST_TYPE" == "cdrom" ] && echo "checked") id="cdrom" />
   1.219 +	<label for="cdrom">$(gettext "LiveCD")</td></label>
   1.220 +	</tr>
   1.221 +	<tr>
   1.222 +	<td><input type="radio" name="INST_TYPE" value="usb" $([ "$INST_TYPE" == "usb" ] && echo "checked") id="usb" />
   1.223 +	<label for="usb">$(gettext "LiveUSB"):</label>
   1.224 +	<select name="SRC_USB">
   1.225 +EOT
   1.226 +	# List disks if plugged USB device
   1.227 +	usb=0
   1.228 +	if [ -d /proc/scsi/usb-storage ]; then
   1.229 +		for DEV in /sys/block/sd* ; do
   1.230 +			if readlink $DEV | grep -q usb; then
   1.231 +				DEV=$(basename $DEV)
   1.232 +				if [ -d /sys/block/${DEV}/${DEV}1 ]; then
   1.233 +					for i in $(fdisk -l /dev/$DEV | awk '/^\/dev/ {printf "%s ", $1}') ; do
   1.234 +						echo "<option value='$i' $([ "$i" == "$SRC_FILE" ] && echo "selected") >$i</option>"
   1.235 +						usb=$usb+1
   1.236 +					done
   1.237 +				fi
   1.238 +			fi
   1.239 +		done
   1.240 +	fi
   1.241 +	if [ $usb -lt 1 ]; then
   1.242 +		echo "<option value="">$(gettext "Not found")</option>"
   1.243 +	fi
   1.244 +	cat << EOT
   1.245 +	</select>
   1.246 +	</td>
   1.247 +	</tr>
   1.248 +	<tr>
   1.249 +	<td><input type="radio" name="INST_TYPE" value="iso" $([ "$INST_TYPE" == "iso" ] && echo "checked") id="iso" />
   1.250 +	<label for="iso">$(gettext "ISO file"):</label>
   1.251 +	<input type="url" size="50" name="SRC_ISO" $([ "$INST_TYPE" == "iso" ] && echo -e "value=\"$SRC_FILE\"") placeholder="$(gettext "Full path to the ISO image file")" />
   1.252 +	</td>
   1.253 +	</tr>
   1.254 +	<tr>
   1.255 +	<td><input type="radio" name="INST_TYPE" value="web" $([ "$INST_TYPE" == "web" ] && echo "checked" id="web") />
   1.256 +	<label for="web">$(gettext "Web"):
   1.257 +	<a class="button" href="$SCRIPT_NAME?page=$(GET page)&SRC_WEB=stable">$(gettext "Stable")</a>
   1.258 +	<a class="button" href="$SCRIPT_NAME?page=$(GET page)&SRC_WEB=cooking">$(gettext "Cooking")</a>
   1.259 +	$(gettext "URL:")</label>
   1.260 +EOT
   1.261 +	case $(GET SRC_WEB) in
   1.262 +		stable|cooking)
   1.263 +			get_SRC_WEB=$(tazinst showurl $(GET SRC_WEB)) ;;
   1.264 +		*)
   1.265 +			[ "$INST_TYPE" == "web" ] && get_SRC_WEB=$SRC_FILE ;;
   1.266 +	esac
   1.267 +cat <<EOT
   1.268 +	<input type="url" size="55" name="SRC_WEB" value="$get_SRC_WEB" placeholder="$(gettext "Full url to an ISO image file")" /></td>
   1.269 +	</tr>
   1.270 +	</table>
   1.271 +EOT
   1.272 +}
   1.273 +
   1.274 +select_partition()
   1.275 +{
   1.276 +cat <<EOT
   1.277 +<a name="partition"></a>
   1.278 +<h4></span>$(gettext "Main Partition")</h4>
   1.279 +<table>
   1.280 +<tr><td>
   1.281 +	$(gettext "Partition to use:")
   1.282 +	<select name="TGT_PARTITION">
   1.283 +EOT
   1.284 +	# List partitions
   1.285 +	if fdisk -l | grep -q ^/dev/ ; then
   1.286 +		for i in $(fdisk -l | awk '/^\/dev/ {printf "%s " $1}'); do
   1.287 +			echo "<option value='$i' $([ "$i" == "$TGT_PARTITION" ] && echo "selected")>$i</option>"
   1.288 +		done
   1.289 +	else
   1.290 +		echo "<option value="">$(gettext "Not found")</option>"
   1.291 +	fi
   1.292 +	cat << EOT
   1.293 +	</select>
   1.294 +	<br />
   1.295 +	<input type="checkbox" name="MAIN_FMT" value="yes" $([ -n "$TGT_FS" ] && echo "checked") id="mainfs" />
   1.296 +	<label for="mainfs">$(gettext "Format partition as"):</label>
   1.297 +	<select name="MAIN_FS">
   1.298 +EOT
   1.299 +	scan_mkfs
   1.300 +	for i in $FS
   1.301 +	do
   1.302 +		echo  "<option value='$i' $([ "$i" == "$TGT_FS" ] && echo "selected")>$i</option>"
   1.303 +	done
   1.304 +	cat <<EOT
   1.305 +</select>
   1.306 +</td></tr>
   1.307 +</table>
   1.308 +EOT
   1.309 +}
   1.310 +
   1.311 +select_old_slitaz()
   1.312 +{
   1.313 +cat <<EOT
   1.314 +<a name="partition"></a>
   1.315 +<h4></span>$(gettext "Existing SliTaz Partition")</h4>
   1.316 +<table>
   1.317 +<tr><td>
   1.318 +	$(gettext "Partition in use:")
   1.319 +	<select name="TGT_PARTITION">
   1.320 +EOT
   1.321 +	# List partitions
   1.322 +	if fdisk -l | grep -q ^/dev/ ; then
   1.323 +		for i in `blkid | cut -d ":" -f 1`; do
   1.324 +			echo "<option value='$i' $([ "$i" == "$TGT_PARTITION" ] && echo "selected")>$i</option>"
   1.325 +		done
   1.326 +	else
   1.327 +		echo "<option value="">$(gettext "Not found")</option>"
   1.328 +	fi
   1.329 +	cat <<EOT
   1.330 +</select>
   1.331 +</td></tr>
   1.332 +</table>
   1.333 +EOT
   1.334 +}
   1.335 +
   1.336 +select_home()
   1.337 +{
   1.338 +	cat <<EOT
   1.339 +<a name="home"></a>
   1.340 +<h4>$(gettext "Home partition")</h4>
   1.341 +<input type="checkbox" name="HOME_SPLIT" value="yes" $([ -n "$TGT_HOME" ] && echo "checked") id="homepart" />
   1.342 +	<label for="homepart">$(gettext "Use a separate partition for /home:")</label>
   1.343 +	<select name="HOME_PART">
   1.344 +EOT
   1.345 +	# List disk if plugged USB device
   1.346 +	if fdisk -l | grep -q ^/dev/ ; then
   1.347 +		for i in $(fdisk -l | awk '/^\/dev/ {printf "%s " $1}'); do
   1.348 +			echo "<option value='$i' $([ "$i" == "$TGT_HOME" ] && echo "selected")>$i</option>"
   1.349 +		done
   1.350 +	else
   1.351 +		echo "<option value="">$(gettext "Not found")</option>"
   1.352 +	fi
   1.353 +cat <<EOT
   1.354 +	</select>
   1.355 +	
   1.356 +	<input type="checkbox" name="HOME_FMT" value="yes" $([ -n "$TGT_HOME_FS" ] && echo "checked") id="homefs" />
   1.357 +	<label for="homefs">$(gettext "Format partition as:")</label>
   1.358 +	<select name="HOME_FS">"
   1.359 +EOT
   1.360 +	for i in $FS
   1.361 +	do
   1.362 +		echo  "<option value='$i' $([ "$i" == "$TGT_HOME_FS" ] && echo "selected")>$i</option>"
   1.363 +	done
   1.364 +	echo "</select>"
   1.365 +}
   1.366 +
   1.367 +select_hostname()
   1.368 +{
   1.369 +cat << EOT
   1.370 +<a name="hostname"></a>
   1.371 +<h4>$(gettext "Host")</h4>
   1.372 +$(gettext "Hostname:")
   1.373 +<input type="text" name="TGT_HOSTNAME" value="$TGT_HOSTNAME" placeholder="$(gettext "Name of your system")" />
   1.374 +EOT
   1.375 +}
   1.376 +
   1.377 +select_root()
   1.378 +{
   1.379 +cat << EOT
   1.380 +<a name="root"></a>
   1.381 +<h4>$(gettext "Root")</h4>
   1.382 +$(gettext "Root passwd:")
   1.383 +<input type="text" name="TGT_ROOT_PWD" value="$TGT_ROOT_PWD" placeholder="$(gettext "Password of root")" />
   1.384 +EOT
   1.385 +}
   1.386 +
   1.387 +select_user()
   1.388 +{
   1.389 +cat << EOT
   1.390 +<a name="user"></a>
   1.391 +<h4>$(gettext "User")</h4>
   1.392 +$(gettext "User login:")
   1.393 +<input type="text" name="TGT_USER" value="$TGT_USER" placeholder="$(gettext "Name of the first user")" />
   1.394 +$(gettext "User passwd:")
   1.395 +<input type="text" name="TGT_USER_PWD" value="$TGT_USER_PWD" placeholder="$(gettext "Password of the first user")" />
   1.396 +EOT
   1.397 +}
   1.398 +
   1.399 +select_grub()
   1.400 +{
   1.401 +cat << EOT
   1.402 +<a name="grub"></a>
   1.403 +<h4>$(gettext "Grub")</h4>
   1.404 +<input type="checkbox" name="TGT_GRUB" value="yes" $([ "$TGT_GRUB" == "yes" ] && echo "checked") id="grub" />
   1.405 +<label for="grub">$(gettext "Install Grub bootloader")<br /></label>
   1.406 +<input type="checkbox" name="TGT_WINBOOT" value="auto" $([ -n "$TGT_WINBOOT" ] && echo "checked") id="dualboot" />
   1.407 +<label for="dualboot">$(gettext "Enable Windows Dual-Boot")</label>
   1.408 +EOT
   1.409 +}
   1.410 +
   1.411 +moveto_page()
   1.412 +{
   1.413 +	case $1 in
   1.414 +		*)
   1.415 +			page=home
   1.416 +			title1=$(gettext "Back to Installer Start Page") ;;
   1.417 +	esac
   1.418 +	case $2 in
   1.419 +		write|run)
   1.420 +			title2=$(gettext "Proceed to SliTaz installation") ;;
   1.421 +		reboot)
   1.422 +			title2=$(gettext "Installation complete. You can now restart (reboot)") ;;
   1.423 +		failed)
   1.424 +			title2=$(gettext "Installation failed. See log") ;;
   1.425 +		*)
   1.426 +			page=home
   1.427 +			title2=$(gettext "Back to Installer Start Page") ;;
   1.428 +	esac
   1.429 +	cat <<EOT
   1.430 +<script type="text/javascript">
   1.431 +	function SubmitForm() {
   1.432 +		var r=confirm("$(gettext "Do you really want to continue?")");
   1.433 +		if (r==true)
   1.434 +		{
   1.435 +			document.ConfigForm.submit();
   1.436 +		}
   1.437 +	}
   1.438 +</script>
   1.439 +<hr />
   1.440 +<input type="hidden" name="page" value="$2" />
   1.441 +<a class="button" value="$1"  href="$SCRIPT_NAME?page=$1" >$title1</a>
   1.442 +<a class="button" value="$2" onclick="SubmitForm()">$title2</a>
   1.443 +EOT
   1.444 +}
   1.445 +
   1.446 +page_redirection()
   1.447 +{
   1.448 +	cat <<EOT
   1.449 +<html>
   1.450 +<head>
   1.451 +<title>$(gettext "A web page that points a browser to a different page after 2 seconds")</title>
   1.452 +<meta http-equiv="refresh" content="0; URL=$SCRIPT_NAME?page=$1">
   1.453 +<meta name="keywords" content="automatic redirection">
   1.454 +</head>
   1.455 +<body>
   1.456 +$(gettext "If your browser doesn't automatically go there within a few seconds, 
   1.457 +you may want to go manually to ")
   1.458 +<a href="$SCRIPT_NAME?page=$1">$1</a> 
   1.459 +</body>
   1.460 +</html>
   1.461 +EOT
   1.462 +}
   1.463 +
   1.464 +check_ressources()
   1.465 +{
   1.466 +	local code 
   1.467 +	code=0
   1.468 +	# Check tazinst
   1.469 +	if ! tazinst usage | grep -q Usage: ; then
   1.470 +		cat <<EOT
   1.471 +<h3>$(gettext "Tazinst Error")</h3>
   1.472 +<p><strong>tazinst</strong>, $(gettext "the lightweight SliTaz HDD installer
   1.473 +is missing. Any installation can't be done without tazinst.")</p>
   1.474 +<p>$(gettext "Check tazinst' permissions, or reinstall the slitaz-tools package:")</p>
   1.475 +<code># tazpkg get-install slitaz-tools --forced</code>
   1.476 +EOT
   1.477 +		code=1
   1.478 +	else
   1.479 +		# Check tazinst required version
   1.480 +		v=$(tazinst version | tr -d '[:alpha:]')
   1.481 +		r=$TAZINST_REQUIRED_VERSION
   1.482 +		if ! (echo "$v" | awk -v r=$r '{v=$v+0}{ if (v < r) exit 1}') ; then
   1.483 +			cat <<EOT
   1.484 +<h3>$(gettext "Tazinst Error")</h3>
   1.485 +<p><strong>tazinst</strong> ($v) $(gettext "is not at the required version ($r),
   1.486 +use tazinst in a xterm or reinstall the slitaz-tools package:")</p>
   1.487 +<code># tazpkg get-install slitaz-tools --forced</code>
   1.488 +EOT
   1.489 +			code=1
   1.490 +		fi
   1.491 +		# Check setup file
   1.492 +		if [ !  -e "$INSTFILE" ]; then
   1.493 +			gettext "Creating setup file $INSTFILE."
   1.494 +			tazinst new $INSTFILE
   1.495 +		fi
   1.496 +		if [ ! -e "$INSTFILE" ]; then
   1.497 +			cat <<EOT
   1.498 +<h3>$(gettext "Setup File Error")</h3>
   1.499 +<p>$(gettext "The setup file <strong>$INSTFILE</strong> doesn't exists.")</p>
   1.500 +EOT
   1.501 +			code=1
   1.502 +		else
   1.503 +			if [ ! -r $INSTFILE ]; then
   1.504 +				cat <<EOT
   1.505 +<h3>$(gettext "Setup File Error")</h3>
   1.506 +<p>$(gettext "The setup file <strong>$INSTFILE</strong> is not readable. 
   1.507 +Check permissions and ownership.")</p>
   1.508 +EOT
   1.509 +				code=1
   1.510 +			fi
   1.511 +		fi
   1.512 +	fi
   1.513 +	return $code
   1.514 +}
   1.515 +
   1.516 +run_tazinst()
   1.517 +{
   1.518 +	echo "<h4>$(gettext "Proceeding: ()")</h4>"
   1.519 +	gettext "Please wait until processing is complete"
   1.520 +	table_start
   1.521 +	tazinst $(GET INST_ACTION) $INSTFILE | \
   1.522 +		awk '{print "<tr><td><tt>" $0 "</tt></td></tr>"}'
   1.523 +	table_end
   1.524 +	return $(grep -c "cancelled on error" $INSTFILE)
   1.525 +}
   1.526 +
   1.527 +tazinst_log()
   1.528 +{
   1.529 +	echo "<pre>"
   1.530 +	tazinst log
   1.531 +	echo "</pre>"
   1.532 +}
   1.533 +
   1.534 +scan_mkfs()
   1.535 +{
   1.536 +	for path in /bin /sbin /usr/bin /usr/sbin
   1.537 +	do
   1.538 +		[ -e $path/mkfs.btrfs ] && FS=btrfs
   1.539 +		[ -e $path/mkfs.cramfs ] && FS="$FS cramfs"
   1.540 +		[ -e $path/mkfs.ext2 ] && FS="$FS ext2"
   1.541 +		[ -e $path/mkfs.ext3 ] && FS="$FS ext3"
   1.542 +		[ -e $path/mkfs.ext4 ] && FS="$FS ext4"
   1.543 +		[ -e $path/mkfs.vfat ] && FS="$FS fat32"
   1.544 +		[ -e $path/mkfs.jfs ] && FS="$FS jfs"
   1.545 +		[ -e $path/mkfs.minix ] && FS="$FS minix"
   1.546 +		[ -e $path/mkfs.ntfs ] && FS="$FS ntfs"
   1.547 +		[ -e $path/mkfs.reiserfs ] && FS="$FS reiserfs"
   1.548 +		[ -e $path/mkfs.xfs ] && FS="$FS xfs"
   1.549 +	done
   1.550 +}
   1.551 +
   1.552 +form_start()
   1.553 +{
   1.554 +	cat <<EOT
   1.555 +<form name="ConfigForm" method="get" action="$SCRIPT_NAME">
   1.556 +EOT
   1.557 +}
   1.558 +
   1.559 +form_end()
   1.560 +{
   1.561 +	echo "</form>"
   1.562 +}
   1.563 +
   1.564 +#
   1.565 +# Main
   1.566 +#
   1.567 +
   1.568 +case "$(GET page)" in
   1.569 +	gparted)
   1.570 +		/usr/sbin/gparted
   1.571 + 		xhtml_header
   1.572 +		page_redirection home
   1.573 +		;;
   1.574 +	install)
   1.575 +		read_setup
   1.576 +		xhtml_header
   1.577 +		form_start
   1.578 +		display_action install
   1.579 +		check_setup
   1.580 +		select_source
   1.581 +		select_partition
   1.582 +		select_home
   1.583 +		select_hostname
   1.584 +		select_root
   1.585 +		select_user
   1.586 +		select_grub
   1.587 +		moveto_page home write
   1.588 +		form_end
   1.589 +		;;
   1.590 +	upgrade)
   1.591 +		read_setup
   1.592 +		xhtml_header
   1.593 +		form_start
   1.594 +		display_action upgrade
   1.595 +		check_setup
   1.596 +		select_source
   1.597 +		select_old_slitaz
   1.598 +		select_grub
   1.599 +		moveto_page home write
   1.600 +		form_end
   1.601 +		;;
   1.602 +	write)
   1.603 +		write_setup
   1.604 +		xhtml_header
   1.605 +		if ! (tazinst check $INSTFILE); then
   1.606 +			page_redirection $(GET INST_ACTION)
   1.607 +		else
   1.608 +			read_setup
   1.609 +			form_start
   1.610 +			display_action $(GET INST_ACTION)
   1.611 +			if run_tazinst; then
   1.612 +				moveto_page home reboot
   1.613 +			else
   1.614 +				moveto_page home failed
   1.615 +			fi
   1.616 +			form_end
   1.617 +		fi
   1.618 +		;;
   1.619 +	reboot)
   1.620 +		reboot ;;
   1.621 +	home)
   1.622 +		xhtml_header
   1.623 +		select_action
   1.624 +		select_gparted
   1.625 +		select_install
   1.626 +		select_upgrade
   1.627 +		;;
   1.628 +	failed)
   1.629 +		xhtml_header
   1.630 +		display_log
   1.631 +		;;
   1.632 +	*)
   1.633 +		xhtml_header
   1.634 +		if check_ressources; then
   1.635 +			page_redirection home
   1.636 +		fi
   1.637 +		;;
   1.638 +esac
   1.639 +
   1.640 +xhtml_footer
   1.641 +
   1.642 +exit 0
     2.1 --- a/styles/default/header.html	Tue Aug 30 17:15:31 2011 +0200
     2.2 +++ b/styles/default/header.html	Fri Sep 02 13:46:24 2011 +0200
     2.3 @@ -27,6 +27,7 @@
     2.4  		<a href="/live.cgi">Live</a>
     2.5  		<a href="/boot.cgi">Boot</a>
     2.6  		<a href="/hardware.cgi">Hardware</a>
     2.7 +		<a href="/installer.cgi">Install</a>
     2.8  	</div>
     2.9  </div>
    2.10