tazinst annotate installer.cgi @ rev 0

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