tazpanel annotate installer.cgi @ rev 330

Added tag 1.6.0 for changeset c7eec6914e54
author Christopher Rogers <slaxemulator@gmail.com>
date Wed Nov 21 13:39:07 2012 +0000 (2012-11-21)
parents a66d70e402b9
children
rev   line source
pascal@208 1 #!/bin/sh
pascal@208 2 #
pascal@208 3 # Main CGI interface for Tazinst, the SliTaz installer.
pascal@208 4 #
pankso@254 5 # Copyright (C) 2012 SliTaz GNU/Linux - BSD License
pascal@208 6 #
pascal@208 7 # Authors : Dominique Corbex <domcox@slitaz.org>
pascal@208 8 #
pascal@208 9
domcox@294 10 VERSION=0.30
pascal@208 11
pascal@208 12 # Common functions from libtazpanel
pascal@208 13 . lib/libtazpanel
pascal@208 14 header
pascal@208 15 get_config
pascal@208 16
pascal@208 17 # Include gettext helper script.
pascal@208 18 . /usr/bin/gettext.sh
pascal@208 19
pascal@208 20 # Export package name for gettext.
al@303 21 #TEXTDOMAIN='installer'
al@303 22 #export TEXTDOMAIN
pascal@208 23
domcox@295 24 TITLE=$(gettext 'TazPanel - Installer')
pascal@208 25
pascal@208 26 # Tazinst required version
pascal@208 27 TAZINST_REQUIRED_VERSION="3.3"
pascal@208 28
pascal@208 29 # Tazinst setup file
pascal@208 30 INSTFILE=/var/lib/tazinst.conf
pascal@208 31
pascal@208 32
pascal@208 33 write_setup()
pascal@208 34 {
pascal@208 35 if [ -e "$INSTFILE" ]; then
pascal@208 36 # Install type
pascal@208 37 INST_TYPE=$(GET INST_TYPE)
pascal@208 38 # Source File
pascal@208 39 case "$INST_TYPE" in
pascal@208 40 usb)
pascal@208 41 SRC_FILE=$(GET SRC_USB) ;;
pascal@208 42 iso)
pascal@208 43 SRC_FILE=$(GET SRC_ISO) ;;
pascal@208 44 web)
pascal@208 45 SRC_FILE=$(GET SRC_WEB) ;;
pascal@208 46 esac
pascal@208 47 SRC_FILE=$(echo "$SRC_FILE" | sed 's/\//\\\//'g)
pascal@208 48 [ -n $(GET URL) ] && SRC_WEB=$(GET URL)
pascal@208 49 # Main Partition
pascal@208 50 TGT_PARTITION=$(echo "$(GET TGT_PARTITION)" | sed 's/\//\\\//'g)
pascal@208 51 [ -n "$(GET MAIN_FMT)" ] && TGT_FS=$(GET MAIN_FS) || TGT_FS=""
pascal@208 52 # Home Partition
domcox@258 53 if [ -n "$(GET HOME_SELECT)" ] ; then
domcox@258 54 TGT_HOME=$(echo "$(GET TGT_HOME)" | sed 's/\//\\\//'g)
domcox@294 55 [ -n "$(GET HOME_FMT)" ] && TGT_HOME_FS=$(GET HOME_FS) || TGT_HOME_FS=""
pascal@208 56 else
pascal@208 57 TGT_HOME=""
pascal@208 58 TGT_HOME_FS=""
pascal@208 59 fi
pascal@208 60 # Hostname
pascal@208 61 TGT_HOSTNAME=$(GET TGT_HOSTNAME)
pascal@208 62 # Root pwd
pascal@208 63 TGT_ROOT_PWD=$(GET TGT_ROOT_PWD)
pascal@208 64 # User Login
pascal@208 65 TGT_USER=$(GET TGT_USER)
pascal@208 66 # User Pwd
pascal@208 67 TGT_USER_PWD=$(GET TGT_USER_PWD)
pascal@208 68 # Grub
pascal@208 69 TGT_GRUB=$(GET TGT_GRUB)
pascal@208 70 [ "$TGT_GRUB" == "yes" ] || TGT_GRUB=no
pascal@208 71 # Win Dual-Boot
pascal@208 72 TGT_WINBOOT=$(GET TGT_WINBOOT)
pascal@208 73
pascal@208 74 # Save changes to INSTFILE
pascal@208 75 sed -i s/"^INST_TYPE=.*"/"INST_TYPE=\"$INST_TYPE\"/" $INSTFILE
pascal@208 76 sed -i s/"^SRC_FILE=.*"/"SRC_FILE=\"$SRC_FILE\"/" $INSTFILE
pascal@208 77 sed -i s/"^TGT_PARTITION=.*"/"TGT_PARTITION=\"$TGT_PARTITION\"/" $INSTFILE
pascal@208 78 sed -i s/"^TGT_FS=.*"/"TGT_FS=\"$TGT_FS\"/" $INSTFILE
pascal@208 79 sed -i s/"^TGT_HOME=.*"/"TGT_HOME=\"$TGT_HOME\"/" $INSTFILE
pascal@208 80 sed -i s/"^TGT_HOME_FS=.*"/"TGT_HOME_FS=\"$TGT_HOME_FS\"/" $INSTFILE
pascal@208 81 sed -i s/"^TGT_HOSTNAME=.*"/"TGT_HOSTNAME=\"$TGT_HOSTNAME\"/" $INSTFILE
pascal@208 82 sed -i s/"^TGT_ROOT_PWD=.*"/"TGT_ROOT_PWD=\"$TGT_ROOT_PWD\"/" $INSTFILE
pascal@208 83 sed -i s/"^TGT_USER=.*"/"TGT_USER=\"$TGT_USER\"/" $INSTFILE
pascal@208 84 sed -i s/"^TGT_USER_PWD=.*"/"TGT_USER_PWD=\"$TGT_USER_PWD\"/" $INSTFILE
pascal@208 85 sed -i s/"^TGT_GRUB=.*"/"TGT_GRUB=\"$TGT_GRUB\"/" $INSTFILE
pascal@208 86 sed -i s/"^TGT_WINBOOT=.*"/"TGT_WINBOOT=\"$TGT_WINBOOT\"/" $INSTFILE
pascal@208 87 fi
pascal@208 88 }
pascal@208 89
domcox@258 90 read_setup()
pascal@208 91 {
domcox@258 92 # various checks on setup file
domcox@258 93 if [ -e "$INSTFILE" ]; then
domcox@258 94 # validity check + reformat output
domcox@266 95 tazinst check $INSTFILE | awk '
domcox@266 96 BEGIN{
domcox@266 97 fmt1="<span class=\"msg-nok\">"
domcox@266 98 fmt2="<br /></span>"
domcox@266 99 OFS=""
domcox@266 100 }
domcox@266 101 {
domcox@266 102 # make html compliant
domcox@266 103 str=$0
domcox@266 104 gsub(/\[1m/,"",str)
domcox@266 105 gsub(/\[0m/,"",str)
domcox@266 106 gsub(/\s/,"\\&nbsp;",str)
domcox@266 107 gsub(/</,"\\&lt",str)
domcox@266 108 gsub(/>/,"\\&gt",str)
domcox@266 109 a[i++]=str
domcox@266 110 } END {
domcox@266 111 {print fmt1,a[i-1],fmt2}
domcox@266 112 {for (j=0; j<i-1;) print fmt1,substr(a[j++],3),fmt2}
domcox@266 113 }'
domcox@258 114 else
domcox@258 115 # no setup file found: creating
al@303 116 eval_gettext 'Creating setup file $INSTFILE.'
domcox@258 117 tazinst new $INSTFILE
domcox@258 118 if [ ! -e "$INSTFILE" ]; then
domcox@258 119 cat <<EOT
al@303 120 <span class="msg-nok">$(gettext 'Setup File Error')<br />
al@303 121 $(eval_gettext "The setup file <strong>\$INSTFILE</strong> doesn't \
al@303 122 exist.")</span><br />
domcox@258 123 EOT
domcox@258 124 else
domcox@258 125 if [ ! -r $INSTFILE ]; then
domcox@258 126 cat <<EOT
al@303 127 <span class="msg-nok">$(gettext 'Setup File Error')<br />
al@303 128 $(eval_gettext "The setup file <strong>$INSTFILE</strong> is not readable. \
domcox@265 129 Check permissions and ownership.")</span><br />
domcox@258 130 EOT
al@303 131 fi
domcox@258 132 fi
domcox@258 133 fi
domcox@258 134 # read setup file
domcox@258 135 . $INSTFILE
pascal@208 136 }
pascal@208 137
pascal@208 138 select_action()
pascal@208 139 {
pascal@208 140 cat <<EOT
pascal@208 141 <div id="wrapper">
al@303 142 <h2>$(gettext 'SliTaz Installer')</h2>
al@303 143
al@303 144 <p>$(gettext "The SliTaz Installer installs or upgrades SliTaz to a hard disk \
al@303 145 drive from a device like a Live-CD or LiveUSB key, from a SliTaz ISO file, or \
al@303 146 from the web by downloading an ISO file.")</p>
pascal@208 147 </div>
pascal@208 148 EOT
pascal@208 149 }
pascal@208 150
pascal@208 151 select_install()
pascal@208 152 {
pascal@208 153 cat <<EOT
al@312 154 <section>
al@303 155 <h4>$(gettext 'Install')</h4>
al@303 156
al@303 157 <p>$(gettext "Install SliTaz on a partition of your hard disk drive. If you \
al@303 158 decide to format your partition, all data will be lost. If you do not format, \
paul@319 159 all data except for any existing /home directory will be removed (note the home \
paul@319 160 directory contents will be kept as is).")</p>
al@303 161
al@303 162 <p>$(gettext "Before installation, you may need to create or resize partitions \
al@303 163 on your hard disk drive in order to make space for SliTaz GNU/Linux. You can \
paul@319 164 graphically manage your partitions with Gparted.")</p>
al@312 165
al@312 166 <a class="button" href="$SCRIPT_NAME?page=partitioning">$(gettext "Install \
al@318 167 SliTaz") <img src="$IMAGES/go-next.png" /></a>
al@312 168 </section>
pascal@208 169 EOT
pascal@208 170 }
pascal@208 171
pascal@208 172 select_upgrade()
pascal@208 173 {
pascal@208 174 cat <<EOT
al@312 175 <section>
al@303 176 <h4>$(gettext 'Upgrade')</h4>
al@303 177
al@303 178 <p>$(gettext "Upgrade an already installed SliTaz system on your hard disk \
al@303 179 drive. Your /home /etc /var/www directories will be kept, all other \
al@303 180 directories will be removed. Any additional packages added to your old Slitaz \
al@303 181 system will be updated as long you have an active internet connection.")</p>
al@312 182
al@312 183 <a class="button" href="$SCRIPT_NAME?page=upgrade">$(gettext "Upgrade \
al@318 184 SliTaz") <img src="$IMAGES/go-next.png" /></a>
al@312 185 </section>
pascal@208 186 EOT
pascal@208 187 }
pascal@208 188
domcox@277 189 select_gparted()
domcox@277 190 {
domcox@277 191 cat <<EOT
al@303 192 <h4>$(gettext 'Partitioning')</h4>
domcox@277 193 <div class="box">
al@303 194
al@303 195 <p>$(gettext "On most used systems, the hard drive is already dedicated to \
al@303 196 partitions for Windows<sup>&trade;</sup>, or Linux, or another operating \
al@303 197 system. You'll need to resize these partitions in order to make space for \
al@303 198 SliTaz GNU/Linux. SliTaz will co-exist with other operating systems already \
al@303 199 installed on your hard drive.")</p>
al@303 200
al@303 201 <p>$(gettext "The amount of space needed depends on how much software you plan \
al@303 202 to install and how much space you require for users. It's conceivable that you \
al@303 203 could run a minimal SliTaz system in 300 megs or less, but 2 gigs is indeed \
al@303 204 more comfy.")</p>
al@303 205
al@303 206 <p>$(gettext "A separate home partition, and a partition that will be used as \
al@303 207 Linux swap space may be created if needed. Slitaz detects and uses swap \
al@303 208 partitions automatically.")</p>
al@303 209
domcox@277 210 </div>
al@303 211
domcox@277 212 <div class="box">
al@303 213
al@303 214 <p>$(gettext "You can graphically manage your partitions with Gparted. GParted \
al@303 215 is a partition editor for graphically managing your disk partitions. Gparted \
al@303 216 allows you to create, destroy, resize and copy partitions without data loss.")</p>
al@303 217
al@303 218 <p>$(gettext "Gparted supports ext2, ext3, ext4, linux swap, ntfs and fat32 \
al@303 219 filesystems right out of the box. Support for xjs, jfs, hfs and other \
al@303 220 filesystems is available as well but you first need to add drivers for these \
al@303 221 filesystems by installing the related packages xfsprogs, jfsutils, linux-hfs \
al@303 222 and so on.")</p>
domcox@277 223 </div>
al@303 224
al@303 225 <a class="button" href="$SCRIPT_NAME?page=gparted">$(gettext 'Execute Gparted')</a>
al@303 226
al@303 227 <h5>$(gettext 'Continue installation')</h5>
al@303 228
al@303 229 <p>$(gettext "Once you've made room for SliTaz on your drive, you should be \
al@303 230 able to continue installation.")
domcox@277 231
domcox@277 232 <hr />
domcox@277 233 <a class="button" value="$1" href="$SCRIPT_NAME?page=home" >
al@318 234 <img src="$IMAGES/go-first.png"/> $(gettext 'Back to Installer Start Page')</a>
domcox@277 235 <a class="button" value="$2" href="$SCRIPT_NAME?page=install">
al@318 236 $(gettext 'Continue Installation') <img src="$IMAGES/go-next.png" /></a>
domcox@277 237 EOT
domcox@277 238 }
domcox@277 239
pascal@208 240 display_action()
pascal@208 241 {
pascal@208 242 case $1 in
pascal@208 243 install)
pascal@208 244 cat << EOT
pascal@208 245 <div id="wrapper">
al@303 246 <h3>$(gettext 'Install SliTaz')</h3>
al@303 247
al@303 248 <p>$(gettext "You're going to install SliTaz on a partition of your hard disk \
al@303 249 drive. If you decide to format your HDD, all data will be lost. If you do not \
paul@320 250 format, all data except for any existing /home directory will be removed (note the \
paul@320 251 home directory contents will be kept as is)."<p>
pascal@208 252 </div>
pascal@208 253 <input type="hidden" name="INST_ACTION" value="$1">
pascal@208 254 EOT
pascal@208 255 ;;
pascal@208 256 upgrade)
pascal@208 257 cat << EOT
pascal@208 258 <div id="wrapper">
al@303 259 <h2>$(gettext 'Upgrade SliTaz')</h2>
al@303 260
al@303 261 <p>$(gettext "You're going to upgrade an already installed SliTaz system on \
al@303 262 your hard disk drive. Your /home /etc /var/www directories will be kept, all \
al@303 263 other directories will be removed. Any additional packages added to your old \
al@303 264 Slitaz system will be updated as long you have an active internet connection.")<p>
pascal@208 265 </div>
pascal@208 266 <input type="hidden" name="INST_ACTION" value="$1">
pascal@208 267 EOT
pascal@208 268 ;;
pascal@208 269 esac
pascal@208 270 }
pascal@208 271
pascal@208 272 select_source()
pascal@208 273 {
pascal@208 274 cat <<EOT
al@303 275 <h4 id="source">$(gettext 'Slitaz source media')</h4>
al@303 276
domcox@260 277 <div class="box">
domcox@260 278 <input type="radio" name="INST_TYPE" value="cdrom" $([ "$INST_TYPE" == "cdrom" ] && echo "checked") id="cdrom" />
al@303 279 <label for="cdrom">$(gettext 'LiveCD')</label>
domcox@260 280 <br />
domcox@260 281 <input type="radio" name="INST_TYPE" value="usb" $([ "$INST_TYPE" == "usb" ] && echo "checked") id="usb" />
al@303 282 <label for="usb">$(gettext 'LiveUSB:')
domcox@260 283 <select name="SRC_USB">
pascal@208 284 EOT
pascal@208 285 # List disks if plugged USB device
pascal@208 286 usb=0
pascal@208 287 if [ -d /proc/scsi/usb-storage ]; then
pascal@208 288 for DEV in /sys/block/sd* ; do
pascal@208 289 if readlink $DEV | grep -q usb; then
pascal@208 290 DEV=$(basename $DEV)
pascal@208 291 if [ -d /sys/block/${DEV}/${DEV}1 ]; then
pascal@208 292 for i in $(fdisk -l /dev/$DEV | awk '/^\/dev/ {printf "%s ", $1}') ; do
al@303 293 echo "<option value='$i' $([ "$i" == "$SRC_FILE" ] && echo 'selected') >$i</option>"
pascal@208 294 usb=$usb+1
pascal@208 295 done
pascal@208 296 fi
pascal@208 297 fi
pascal@208 298 done
pascal@208 299 fi
pascal@208 300 if [ $usb -lt 1 ]; then
al@303 301 echo "<option value="">$(gettext 'Not found')</option>"
pascal@208 302 fi
pascal@208 303 cat << EOT
domcox@260 304 </select>
domcox@260 305 </label>
domcox@260 306 <br />
domcox@260 307 <input type="radio" name="INST_TYPE" value="iso" $([ "$INST_TYPE" == "iso" ] && echo "checked") id="iso" />
al@303 308 <label for="iso">$(gettext 'ISO file:')</label>
al@303 309 <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')" />
domcox@260 310 <br />
domcox@260 311 <input type="radio" name="INST_TYPE" value="web" $([ "$INST_TYPE" == "web" ] && echo "checked") id="web" />
al@303 312 <label for="web">$(gettext 'Web:')
al@303 313 <a class="button" onclick="document.forms['ConfigForm'].url.value = '$(tazinst showurl stable)'; return true;">$(gettext 'Stable')</a>
al@303 314 <a class="button" onclick="document.forms['ConfigForm'].url.value = '$(tazinst showurl cooking)'; return true;">$(gettext 'Cooking')</a>
al@303 315
al@303 316 $(gettext 'URL:')
al@303 317 <input id="url" type="url" size="55" name="SRC_WEB" $([ "$INST_TYPE" == "web" ] && echo -e "value=\"$SRC_FILE\"") placeholder="$(gettext 'Full url to an ISO image file')" />
domcox@260 318 </label>
domcox@260 319 </div>
pascal@208 320 EOT
pascal@208 321 }
pascal@208 322
domcox@277 323 select_hdd()
domcox@277 324 {
domcox@277 325 cat <<EOT
al@303 326 <h4 id="hdd">$(gettext 'Hard Disk Drive')</h4>
domcox@277 327 EOT
domcox@277 328 }
domcox@277 329
pascal@208 330 select_partition()
pascal@208 331 {
domcox@260 332 cat <<EOT
domcox@277 333 <div class="box">
pascal@208 334 <a name="partition"></a>
al@303 335 $(gettext 'Install Slitaz to partition:')
domcox@260 336 <select name="TGT_PARTITION">
pascal@208 337 EOT
pascal@208 338 # List partitions
pascal@208 339 if fdisk -l | grep -q ^/dev/ ; then
al@303 340 echo "<option value="">$(gettext 'None')</option>"
pascal@208 341 for i in $(fdisk -l | awk '/^\/dev/ {printf "%s " $1}'); do
al@303 342 echo "<option value='$i' $([ "$i" == "$TGT_PARTITION" ] && echo 'selected')>$i</option>"
pascal@208 343 done
pascal@208 344 else
al@303 345 echo "<option value="">$(gettext 'Not found')</option>"
pascal@208 346 fi
pascal@208 347 cat << EOT
domcox@277 348 </select>
domcox@260 349 <br />
domcox@260 350 <input type="checkbox" name="MAIN_FMT" value="yes" $([ -n "$TGT_FS" ] && echo "checked") id="mainfs" />
al@303 351 <label for="mainfs">$(gettext 'Format partition as:')</label>
domcox@260 352 <select name="MAIN_FS">
pascal@208 353 EOT
pascal@208 354 scan_mkfs
pascal@208 355 for i in $FS
pascal@208 356 do
al@303 357 echo "<option value='$i' $([ "$i" == "$TGT_FS" ] && echo 'selected')>$i</option>"
pascal@208 358 done
pascal@208 359 cat <<EOT
pascal@208 360 </select>
domcox@260 361 </div>
pascal@208 362 EOT
pascal@208 363 }
pascal@208 364
pascal@208 365 select_old_slitaz()
pascal@208 366 {
domcox@260 367 cat <<EOT
domcox@277 368 <div class="box">
pascal@208 369 <a name="partition"></a>
al@303 370 $(gettext 'Existing SliTaz partition to upgrade:')
domcox@260 371 <select name="TGT_PARTITION">
pascal@208 372 EOT
pascal@208 373 # List partitions
pascal@208 374 if fdisk -l | grep -q ^/dev/ ; then
al@303 375 echo "<option value="">$(gettext 'None')</option>"
al@303 376 for i in $(blkid | cut -d ":" -f 1); do
al@303 377 echo "<option value='$i' $([ "$i" == "$TGT_PARTITION" ] && echo 'selected')>$i</option>"
pascal@208 378 done
pascal@208 379 else
al@303 380 echo "<option value="">$(gettext 'Not found')</option>"
pascal@208 381 fi
pascal@208 382 cat <<EOT
pascal@208 383 </select>
domcox@260 384 </div>
pascal@208 385 EOT
pascal@208 386 }
pascal@208 387
domcox@277 388 select_options()
domcox@277 389 {
domcox@277 390 cat <<EOT
al@303 391 <h4 id="options">$(gettext 'Options')</h4>
domcox@277 392 EOT
domcox@277 393 }
domcox@277 394
pascal@208 395 select_home()
pascal@208 396 {
pascal@208 397 cat <<EOT
domcox@277 398 <div>
al@303 399 <h5 id="home">$(gettext 'home partition')</h5>
al@303 400
domcox@258 401 <input type="checkbox" name="HOME_SELECT" value="yes" $([ -n "$TGT_HOME" ] && echo "checked") id="homepart" />
al@303 402 <label for="homepart">$(gettext 'Use a separate partition for /home:')</label>
domcox@260 403 <select name="TGT_HOME">
pascal@208 404 EOT
pascal@208 405 # List disk if plugged USB device
pascal@208 406 if fdisk -l | grep -q ^/dev/ ; then
al@303 407 echo "<option value="">$(gettext 'None')</option>"
pascal@208 408 for i in $(fdisk -l | awk '/^\/dev/ {printf "%s " $1}'); do
al@303 409 echo "<option value='$i' $([ "$i" == "$TGT_HOME" ] && echo 'selected')>$i</option>"
pascal@208 410 done
pascal@208 411 else
al@303 412 echo "<option value="">$(gettext 'Not found')</option>"
pascal@208 413 fi
pascal@208 414 cat <<EOT
domcox@260 415 </select>
al@303 416
domcox@260 417 <input type="checkbox" name="HOME_FMT" value="yes" $([ -n "$TGT_HOME_FS" ] && echo "checked") id="homefs" />
al@303 418 <label for="homefs">$(gettext 'Format partition as:')</label>
domcox@260 419 <select name="HOME_FS">"
pascal@208 420 EOT
pascal@208 421 for i in $FS
pascal@208 422 do
al@303 423 echo "<option value='$i' $([ "$i" == "$TGT_HOME_FS" ] && echo 'selected')>$i</option>"
pascal@208 424 done
domcox@277 425 cat <<EOT
domcox@277 426 </select>
domcox@277 427 </div>
domcox@277 428 EOT
pascal@208 429 }
pascal@208 430
pascal@208 431 select_hostname()
pascal@208 432 {
pascal@208 433 cat << EOT
domcox@277 434 <div>
al@303 435 <h5 id="hostname">$(gettext 'Hostname')</h5>
al@303 436
al@303 437 $(gettext 'Set Hostname to:')
domcox@315 438 <input type="text" id="hst" name="TGT_HOSTNAME" value="$TGT_HOSTNAME" placeholder="$(gettext 'Name of your system')" onkeyup="checkLogin('hst','msgHst'); return false;" />
domcox@315 439 <span id="msgHst"></span>
domcox@277 440 </div>
pascal@208 441 EOT
pascal@208 442 }
pascal@208 443
pascal@208 444 select_root()
pascal@208 445 {
pascal@208 446 cat << EOT
domcox@315 447 <div>
al@303 448 <h5 id="root">$(gettext 'Root')</h5>
al@303 449
al@303 450 $(gettext 'Root passwd:')
al@303 451 <input type="password" id="rootPwd1" name="TGT_ROOT_PWD" value="$TGT_ROOT_PWD" placeholder="$(gettext 'Password of root')" onkeyup="checkPwd('rootPwd1','rootPwd2','msgRootPwd'); return false;" />
al@303 452
al@303 453 $(gettext 'Confirm password:')
al@303 454 <input type="password" id="rootPwd2" value="$TGT_ROOT_PWD" placeholder="$(gettext 'Password of root')" onkeyup="checkPwd('rootPwd1','rootPwd2','msgRootPwd'); return false;" />
al@303 455
al@303 456 <span id="msgRootPwd"></span>
domcox@277 457 </div>
pascal@208 458 EOT
pascal@208 459 }
pascal@208 460
pascal@208 461 select_user()
pascal@208 462 {
pascal@208 463 cat << EOT
domcox@315 464 <div>
al@303 465 <h5 id="user">$(gettext 'User')</h5>
al@303 466
al@303 467 $(gettext 'User login:')
domcox@315 468 <input type="text" id="usr" name="TGT_USER" value="$TGT_USER" placeholder="$(gettext 'Name of the first user')" onkeyup="checkLogin('usr','msgUsr'); return false;" />
domcox@315 469 <span id="msgUsr"></span>
al@303 470 <br /><br />
al@303 471
al@303 472 $(gettext 'User passwd:')
al@303 473 <input type="password" id="userPwd1" name="TGT_USER_PWD" value="$TGT_USER_PWD" placeholder="$(gettext 'Password of the first user')" onkeyup="checkPwd('userPwd1','userPwd2','msgUserPwd'); return false;" />
al@303 474
al@303 475 $(gettext 'Confirm password:')
al@303 476 <input class="confirm" type="password" id="userPwd2" value="$TGT_USER_PWD" placeholder="$(gettext 'Password of the first user')" onkeyup="checkPwd('userPwd1','userPwd2','msgUserPwd'); return false;" />
al@303 477 <span id="msgUserPwd"></span>
domcox@277 478 </div>
pascal@208 479 EOT
pascal@208 480 }
pascal@208 481
pascal@208 482 select_grub()
pascal@208 483 {
pascal@208 484 cat << EOT
domcox@277 485 <div>
al@303 486 <h5 id="grub">$(gettext 'Grub')</h5>
al@303 487
al@303 488 <input type="checkbox" name="TGT_GRUB" value="yes" $([ "$TGT_GRUB" == "yes" ] && echo "checked") id="grub" />
al@303 489 <label for="grub">$(gettext "Install Grub bootloader. Usually you should \
al@303 490 answer yes, unless you want to install grub by hand yourself.")<br /></label>
al@303 491 <input type="checkbox" name="TGT_WINBOOT" value="auto" $([ -n "$TGT_WINBOOT" ] && echo "checked") id="dualboot" />
al@303 492 <label for="dualboot">$(gettext 'Enable Windows Dual-Boot.')</label>
domcox@277 493 </div>
pascal@208 494 EOT
pascal@208 495 }
pascal@208 496
pascal@208 497 moveto_page()
pascal@208 498 {
pascal@208 499 case $1 in
domcox@277 500 partitioning)
al@318 501 title1="<img src=\"$IMAGES/go-previous.png\" /> $(gettext 'Back to partitioning')" ;;
pascal@208 502 *)
pascal@208 503 page=home
al@318 504 title1="<img src=\"$IMAGES/go-first.png\" /> $(gettext 'Back to Installer Start Page')" ;;
pascal@208 505 esac
pascal@208 506 case $2 in
pascal@208 507 write|run)
al@318 508 title2="$(gettext 'Proceed to SliTaz installation') <img src=\"$IMAGES/go-next.png\" />" ;;
pascal@208 509 reboot)
al@303 510 title2=$(gettext 'Installation complete. You can now restart (reboot)') ;;
pascal@208 511 failed)
al@303 512 title2=$(gettext 'Installation failed. See log') ;;
pascal@208 513 *)
pascal@208 514 page=home
al@318 515 title2="<img src=\"$IMAGES/go-first.png\" /> $(gettext 'Back to Installer Start Page')" ;;
pascal@208 516 esac
pascal@208 517 cat <<EOT
pascal@208 518 <hr />
pascal@208 519 <a class="button" value="$1" href="$SCRIPT_NAME?page=$1" >$title1</a>
al@318 520 <a class="button" value="$2" href="$SCRIPT_NAME?page=$2" >$title2</a>
pascal@208 521 EOT
pascal@208 522 }
pascal@208 523
pascal@208 524 page_redirection()
pascal@208 525 {
al@318 526 cat << EOT
al@303 527 <!DOCTYPE html>
pascal@208 528 <html>
pascal@208 529 <head>
al@303 530 <meta charset="utf-8">
al@303 531 <title>$(gettext "A web page that points a browser to a different page after \
al@303 532 2 seconds")</title>
pascal@208 533 <meta http-equiv="refresh" content="0; URL=$SCRIPT_NAME?page=$1">
pascal@208 534 <meta name="keywords" content="automatic redirection">
pascal@208 535 </head>
pascal@208 536 <body>
al@303 537 <p>$(gettext "If your browser doesn't automatically redirect within a few \
al@303 538 seconds, you may want to go there manually")</p>
al@303 539 <p><a href="$SCRIPT_NAME?page=$1">$1</a></p>
pascal@208 540 </body>
pascal@208 541 </html>
pascal@208 542 EOT
pascal@208 543 }
pascal@208 544
pascal@208 545 check_ressources()
pascal@208 546 {
al@303 547 local code
pascal@208 548 code=0
pascal@208 549 # Check tazinst
al@326 550 if ! [ -x /usr/sbin/tazinst ] ; then
pascal@208 551 cat <<EOT
al@303 552 <h3>$(gettext 'Tazinst Error')</h3>
al@303 553 <p>$(gettext "<strong>tazinst</strong>, the lightweight SliTaz HDD installer \
paul@320 554 is missing. Any installation cannot be done without tazinst.")</p>
al@303 555
al@303 556 <p>$(gettext "Check tazinst' permissions, or reinstall the slitaz-tools \
al@303 557 package:")</p>
pascal@208 558 <code># tazpkg get-install slitaz-tools --forced</code>
pascal@208 559 EOT
pascal@208 560 code=1
pascal@208 561 else
pascal@208 562 # Check tazinst required version
pascal@208 563 v=$(tazinst version | tr -d '[:alpha:]')
pascal@208 564 r=$TAZINST_REQUIRED_VERSION
pascal@208 565 if ! (echo "$v" | awk -v r=$r '{v=$v+0}{ if (v < r) exit 1}') ; then
pascal@208 566 cat <<EOT
al@303 567 <h3>$(gettext 'Tazinst Error')</h3>
al@303 568
al@303 569 <p>$(eval_gettext "<strong>tazinst</strong> ($v) is not at the required \
al@303 570 version ($r), use tazinst in a xterm or reinstall the slitaz-tools package:")</p>
pascal@208 571 <code># tazpkg get-install slitaz-tools --forced</code>
pascal@208 572 EOT
pascal@208 573 code=1
pascal@208 574 fi
pascal@208 575 fi
pascal@208 576 return $code
pascal@208 577 }
pascal@208 578
pascal@208 579 run_tazinst()
pascal@208 580 {
al@303 581 cat << EOT
al@303 582 <h4>$(gettext 'Proceeding: ()')</h4>
al@303 583 <p>$(gettext 'Please wait until processing is complete')</p>
al@303 584 EOT
pascal@208 585 table_start
pascal@208 586 tazinst $(GET INST_ACTION) $INSTFILE | \
pascal@208 587 awk '{print "<tr><td><tt>" $0 "</tt></td></tr>"}'
pascal@208 588 table_end
al@303 589 echo "<p>$(gettext 'Completed.')</p>"
pascal@208 590 return $(grep -c "cancelled on error" $INSTFILE)
pascal@208 591 }
pascal@208 592
pascal@208 593 tazinst_log()
pascal@208 594 {
al@303 595 echo "<pre>$(tazinst log)</pre>"
pascal@208 596 }
pascal@208 597
pascal@208 598 scan_mkfs()
pascal@208 599 {
pascal@208 600 for path in /bin /sbin /usr/bin /usr/sbin
pascal@208 601 do
pascal@208 602 [ -e $path/mkfs.btrfs ] && FS=btrfs
pascal@208 603 [ -e $path/mkfs.cramfs ] && FS="$FS cramfs"
pascal@208 604 [ -e $path/mkfs.ext2 ] && FS="$FS ext2"
pascal@208 605 [ -e $path/mkfs.ext3 ] && FS="$FS ext3"
pascal@208 606 [ -e $path/mkfs.ext4 ] && FS="$FS ext4"
pascal@208 607 [ -e $path/mkfs.jfs ] && FS="$FS jfs"
pascal@208 608 [ -e $path/mkfs.minix ] && FS="$FS minix"
pascal@208 609 [ -e $path/mkfs.reiserfs ] && FS="$FS reiserfs"
pascal@208 610 [ -e $path/mkfs.xfs ] && FS="$FS xfs"
pascal@208 611 done
pascal@208 612 }
pascal@208 613
pascal@208 614 form_start()
pascal@208 615 {
pascal@208 616 cat <<EOT
domcox@277 617 <script src="lib/user.js"></script>
domcox@277 618 <script type="text/javascript">
domcox@277 619 function Validate(page) {
domcox@277 620 if (page == "install") {
domcox@277 621 // hostname
domcox@315 622 if (false == checkLogin('hst','msgHst')) {
al@303 623 alert("$(gettext 'Hostname error')");
domcox@277 624 return false;
domcox@277 625 // root pwd
domcox@277 626 } else if (false == checkPwd('rootPwd1','rootPwd2','msgRootPwd')) {
al@303 627 alert("$(gettext 'Root password error')");
domcox@277 628 return false;
domcox@277 629 // user
domcox@315 630 } else if (false == checkLogin('usr','msgUsr')) {
al@303 631 alert("$(gettext 'User login error')");
domcox@277 632 return false;
domcox@277 633 // user pwd
domcox@277 634 } else if (false == checkPwd('userPwd1','userPwd2','msgUserPwd')) {
al@303 635 alert("$(gettext 'User password error')");
domcox@277 636 return false;
domcox@277 637 } else {
al@303 638 var r=confirm("$(gettext 'Do you really want to continue?')");
domcox@277 639 if (r==true)
domcox@277 640 {
domcox@277 641 document.ConfigForm.submit();
domcox@277 642 } else {
domcox@277 643 return false;
domcox@277 644 }
domcox@277 645 }
domcox@277 646 } else if (page == "write") {
domcox@277 647 return true;
domcox@277 648 } else {
al@303 649 var r=confirm("$(gettext 'Do you really want to continue?')");
domcox@277 650 if (r==true)
domcox@277 651 {
domcox@277 652 document.ConfigForm.submit();
domcox@277 653 } else {
domcox@277 654 return false;
domcox@277 655 }
domcox@277 656 }
domcox@277 657 }
domcox@277 658 </script>
domcox@277 659 <form name="ConfigForm" method="get" onsubmit="return Validate('$1')" action="$SCRIPT_NAME">
pascal@208 660 EOT
pascal@208 661 }
pascal@208 662
pascal@208 663 form_end()
pascal@208 664 {
pascal@208 665 echo "</form>"
pascal@208 666 }
pascal@208 667
pascal@208 668 #
pascal@208 669 # Main
pascal@208 670 #
pascal@208 671
pascal@208 672 case "$(GET page)" in
domcox@277 673 home)
domcox@277 674 xhtml_header
domcox@277 675 select_action
domcox@277 676 select_install
domcox@277 677 select_upgrade
domcox@277 678 ;;
domcox@277 679 partitioning)
domcox@277 680 xhtml_header
domcox@277 681 display_action install
domcox@277 682 select_gparted
domcox@277 683 ;;
pascal@208 684 gparted)
domcox@272 685 su - -c "exec env DISPLAY=':0.0' XAUTHORITY='/var/run/slim.auth' /usr/sbin/gparted"
pascal@208 686 xhtml_header
domcox@277 687 page_redirection partitioning
pascal@208 688 ;;
pascal@208 689 install)
pascal@208 690 xhtml_header
domcox@277 691 form_start install
pascal@208 692 display_action install
domcox@258 693 read_setup
pascal@208 694 select_source
domcox@277 695 select_hdd
pascal@208 696 select_partition
domcox@277 697 select_options
pascal@208 698 select_home
pascal@208 699 select_hostname
pascal@208 700 select_root
pascal@208 701 select_user
pascal@208 702 select_grub
domcox@277 703 moveto_page partitioning write
pascal@208 704 form_end
pascal@208 705 ;;
pascal@208 706 upgrade)
pascal@208 707 xhtml_header
domcox@277 708 form_start upgrade
pascal@208 709 display_action upgrade
domcox@258 710 read_setup
pascal@208 711 select_source
domcox@277 712 select_hdd
pascal@208 713 select_old_slitaz
domcox@277 714 select_options
pascal@208 715 select_grub
pascal@208 716 moveto_page home write
pascal@208 717 form_end
pascal@208 718 ;;
pascal@208 719 write)
pascal@208 720 write_setup
pascal@208 721 xhtml_header
pascal@208 722 if ! (tazinst check $INSTFILE); then
pascal@208 723 page_redirection $(GET INST_ACTION)
pascal@208 724 else
pascal@208 725 read_setup
domcox@277 726 form_start write
pascal@208 727 display_action $(GET INST_ACTION)
pascal@208 728 if run_tazinst; then
pascal@208 729 moveto_page home reboot
pascal@208 730 else
pascal@208 731 moveto_page home failed
pascal@208 732 fi
pascal@208 733 form_end
pascal@208 734 fi
pascal@208 735 ;;
pascal@208 736 reboot)
pascal@208 737 reboot ;;
pascal@208 738 failed)
pascal@208 739 xhtml_header
pascal@208 740 display_log
pascal@208 741 ;;
domcox@234 742 menu_install)
domcox@234 743 xhtml_header
domcox@234 744 if check_ressources; then
domcox@277 745 page_redirection partitioning
domcox@234 746 fi
domcox@234 747 ;;
domcox@234 748 menu_upgrade)
domcox@234 749 xhtml_header
domcox@234 750 if check_ressources; then
domcox@258 751 page_redirection upgrade
domcox@234 752 fi
domcox@234 753 ;;
pascal@208 754 *)
pascal@208 755 xhtml_header
pascal@208 756 if check_ressources; then
pascal@208 757 page_redirection home
pascal@208 758 fi
pascal@208 759 ;;
pascal@208 760 esac
pascal@208 761
pascal@208 762 xhtml_footer
pascal@208 763
pascal@208 764 exit 0