tazpanel annotate installer.cgi @ rev 288

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