tazpanel annotate installer.cgi @ rev 266

installer.cgi: add i18n, new pot and po files, fr.po updated
author Dominique Corbex <domcox@slitaz.org>
date Thu Mar 08 21:06:46 2012 +0100 (2012-03-08)
parents 6f39fe45dc31
children 64b3c8572756
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@265 10 VERSION=0.27
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>
paul@209 142 <p>$(gettext "The SliTaz Installer installs or upgrades SliTaz to a hard disk
paul@209 143 drive from a device like a Live-CD or LiveUSB key, from a SliTaz ISO file, or
pascal@208 144 from the web by downloading an ISO file.")<p>
pascal@208 145 </div>
pascal@208 146 EOT
pascal@208 147 }
pascal@208 148
pascal@208 149 select_gparted()
pascal@208 150 {
pascal@208 151 cat <<EOT
pankso@254 152 <div class="box">
pankso@254 153 <h4>$(gettext "About")</h4>
pankso@254 154 <p>
pankso@254 155 $(gettext "Before installation, you may need to resize partitions
pankso@254 156 on your hard disk drive in order to make space for SliTaz GNU/Linux.
paul@257 157 You can graphically manage your partitions with Gparted")
pankso@254 158 </p>
pankso@254 159 </div>
domcox@258 160 <a class="button" href="$SCRIPT_NAME?page=gparted">$(gettext "Execute Gparted")</a>
pascal@208 161 EOT
pascal@208 162 }
pascal@208 163
pascal@208 164 select_install()
pascal@208 165 {
pascal@208 166 cat <<EOT
pankso@254 167 <div class="box">
pankso@254 168 <h4>$(gettext "Install")</h4>
pankso@254 169 <p>
pankso@254 170 $(gettext "Install SliTaz on a partition of your hard disk drive. If
pascal@208 171 you decide to format your HDD, all data will be lost. If you do not
pascal@208 172 format, all data except for any existing /home directory will be removed,
pankso@254 173 the home directory will be kept as is.")
pankso@254 174 </p>
pankso@254 175 </div>
pankso@254 176 <p>
pankso@254 177 <a class="button" href="$SCRIPT_NAME?page=install">$(gettext "Install SliTaz")</a>
pascal@208 178 EOT
pascal@208 179 }
pascal@208 180
pascal@208 181 select_upgrade()
pascal@208 182 {
pascal@208 183 cat <<EOT
pankso@254 184 <div class="box">
pankso@254 185 <h4>$(gettext "Upgrade")</h4>
pankso@254 186 <p>
pankso@254 187 $(gettext "Upgrade an already installed SliTaz system on your hard disk
pascal@208 188 drive. Your /home /etc /var/www directories will be kept, all other directories
paul@209 189 will be removed. Any additional packages added to your old Slitaz system
pankso@254 190 will be updated as long you have an active internet connection.")
pankso@254 191 </p>
pankso@254 192 </div>
pankso@254 193 <p>
pankso@254 194 <a class="button" href="$SCRIPT_NAME?page=upgrade">$(gettext "Upgrade SliTaz")</a>
pankso@254 195 </p>
pascal@208 196 EOT
pascal@208 197 }
pascal@208 198
pascal@208 199 display_action()
pascal@208 200 {
pascal@208 201 case $1 in
pascal@208 202 install)
pascal@208 203 cat << EOT
pascal@208 204 <div id="wrapper">
pascal@208 205 <h3>$(gettext "Install SliTaz")</h3>
pascal@208 206 <p>$(gettext "You're going to install SliTaz on a partition of your hard disk drive. If
pascal@208 207 you decide to format your HDD, all data will be lost. If you do not
pascal@208 208 format, all data except for any existing /home directory will be removed,
pascal@208 209 the home directory will be kept as is.")<p>
pascal@208 210 </div>
pascal@208 211 <input type="hidden" name="INST_ACTION" value="$1">
pascal@208 212 EOT
pascal@208 213 ;;
pascal@208 214 upgrade)
pascal@208 215 cat << EOT
pascal@208 216 <div id="wrapper">
pascal@208 217 <h2>$(gettext "Upgrade SliTaz")</h2>
pascal@208 218 <p>$(gettext "You're going to upgrade an already installed SliTaz system on your hard disk
pascal@208 219 drive. Your /home /etc /var/www directories will be kept, all other directories
paul@209 220 will be removed. Any additional packages added to your old Slitaz system
pascal@208 221 will be updated as long you have an active internet connection.")<p>
pascal@208 222 </div>
pascal@208 223 <input type="hidden" name="INST_ACTION" value="$1">
pascal@208 224 EOT
pascal@208 225 ;;
pascal@208 226 esac
pascal@208 227 }
pascal@208 228
pascal@208 229 select_source()
pascal@208 230 {
pascal@208 231 cat <<EOT
pascal@208 232 <a name="source"></a>
pascal@208 233 <h4>$(gettext "Source")</h4>
domcox@260 234 <div class="box">
domcox@260 235 <input type="radio" name="INST_TYPE" value="cdrom" $([ "$INST_TYPE" == "cdrom" ] && echo "checked") id="cdrom" />
domcox@260 236 <label for="cdrom">$(gettext "LiveCD")</td></label>
domcox@260 237 <br />
domcox@260 238 <input type="radio" name="INST_TYPE" value="usb" $([ "$INST_TYPE" == "usb" ] && echo "checked") id="usb" />
domcox@260 239 <label for="usb">$(gettext "LiveUSB"):
domcox@260 240 <select name="SRC_USB">
pascal@208 241 EOT
pascal@208 242 # List disks if plugged USB device
pascal@208 243 usb=0
pascal@208 244 if [ -d /proc/scsi/usb-storage ]; then
pascal@208 245 for DEV in /sys/block/sd* ; do
pascal@208 246 if readlink $DEV | grep -q usb; then
pascal@208 247 DEV=$(basename $DEV)
pascal@208 248 if [ -d /sys/block/${DEV}/${DEV}1 ]; then
pascal@208 249 for i in $(fdisk -l /dev/$DEV | awk '/^\/dev/ {printf "%s ", $1}') ; do
pascal@208 250 echo "<option value='$i' $([ "$i" == "$SRC_FILE" ] && echo "selected") >$i</option>"
pascal@208 251 usb=$usb+1
pascal@208 252 done
pascal@208 253 fi
pascal@208 254 fi
pascal@208 255 done
pascal@208 256 fi
pascal@208 257 if [ $usb -lt 1 ]; then
pascal@208 258 echo "<option value="">$(gettext "Not found")</option>"
pascal@208 259 fi
pascal@208 260 cat << EOT
domcox@260 261 </select>
domcox@260 262 </label>
domcox@260 263 <br />
domcox@260 264 <input type="radio" name="INST_TYPE" value="iso" $([ "$INST_TYPE" == "iso" ] && echo "checked") id="iso" />
domcox@260 265 <label for="iso">$(gettext "ISO file"):</label>
domcox@260 266 <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 267 <br />
domcox@260 268 <input type="radio" name="INST_TYPE" value="web" $([ "$INST_TYPE" == "web" ] && echo "checked") id="web" />
domcox@260 269 <label for="web">$(gettext "Web"):
domcox@260 270 <a class="button" onclick="document.forms['ConfigForm'].url.value = '$(tazinst showurl stable)'; return true;">$(gettext "Stable")</a>
domcox@260 271 <a class="button" onclick="document.forms['ConfigForm'].url.value = '$(tazinst showurl cooking)'; return true;">$(gettext "Cooking")</a>
domcox@260 272 $(gettext "URL:")
domcox@260 273 <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 274 </label>
domcox@260 275 </div>
pascal@208 276 EOT
pascal@208 277 }
pascal@208 278
pascal@208 279 select_partition()
pascal@208 280 {
domcox@260 281 cat <<EOT
pascal@208 282 <a name="partition"></a>
pascal@208 283 <h4></span>$(gettext "Main Partition")</h4>
domcox@260 284 <div class="box">
domcox@260 285 $(gettext "Partition to use:")
domcox@260 286 <select name="TGT_PARTITION">
pascal@208 287 EOT
pascal@208 288 # List partitions
pascal@208 289 if fdisk -l | grep -q ^/dev/ ; then
domcox@258 290 echo "<option value="">$(gettext "None")</option>"
pascal@208 291 for i in $(fdisk -l | awk '/^\/dev/ {printf "%s " $1}'); do
pascal@208 292 echo "<option value='$i' $([ "$i" == "$TGT_PARTITION" ] && echo "selected")>$i</option>"
pascal@208 293 done
pascal@208 294 else
pascal@208 295 echo "<option value="">$(gettext "Not found")</option>"
pascal@208 296 fi
pascal@208 297 cat << EOT
domcox@260 298 </select>
domcox@260 299 <br />
domcox@260 300 <input type="checkbox" name="MAIN_FMT" value="yes" $([ -n "$TGT_FS" ] && echo "checked") id="mainfs" />
domcox@260 301 <label for="mainfs">$(gettext "Format partition as"):</label>
domcox@260 302 <select name="MAIN_FS">
pascal@208 303 EOT
pascal@208 304 scan_mkfs
pascal@208 305 for i in $FS
pascal@208 306 do
pascal@208 307 echo "<option value='$i' $([ "$i" == "$TGT_FS" ] && echo "selected")>$i</option>"
pascal@208 308 done
pascal@208 309 cat <<EOT
pascal@208 310 </select>
domcox@260 311 </div>
pascal@208 312 EOT
pascal@208 313 }
pascal@208 314
pascal@208 315 select_old_slitaz()
pascal@208 316 {
domcox@260 317 cat <<EOT
pascal@208 318 <a name="partition"></a>
pascal@208 319 <h4></span>$(gettext "Existing SliTaz Partition")</h4>
domcox@260 320 <div class="box">
domcox@260 321 $(gettext "Partition in use:")
domcox@260 322 <select name="TGT_PARTITION">
pascal@208 323 EOT
pascal@208 324 # List partitions
pascal@208 325 if fdisk -l | grep -q ^/dev/ ; then
domcox@258 326 echo "<option value="">$(gettext "None")</option>"
pascal@208 327 for i in `blkid | cut -d ":" -f 1`; do
pascal@208 328 echo "<option value='$i' $([ "$i" == "$TGT_PARTITION" ] && echo "selected")>$i</option>"
pascal@208 329 done
pascal@208 330 else
pascal@208 331 echo "<option value="">$(gettext "Not found")</option>"
pascal@208 332 fi
pascal@208 333 cat <<EOT
pascal@208 334 </select>
domcox@260 335 </div>
pascal@208 336 EOT
pascal@208 337 }
pascal@208 338
pascal@208 339 select_home()
pascal@208 340 {
pascal@208 341 cat <<EOT
pascal@208 342 <a name="home"></a>
pascal@208 343 <h4>$(gettext "Home partition")</h4>
domcox@258 344 <input type="checkbox" name="HOME_SELECT" value="yes" $([ -n "$TGT_HOME" ] && echo "checked") id="homepart" />
domcox@260 345 <label for="homepart">$(gettext "Use a separate partition for /home:")</label>
domcox@260 346 <select name="TGT_HOME">
pascal@208 347 EOT
pascal@208 348 # List disk if plugged USB device
pascal@208 349 if fdisk -l | grep -q ^/dev/ ; then
domcox@258 350 echo "<option value="">$(gettext "None")</option>"
pascal@208 351 for i in $(fdisk -l | awk '/^\/dev/ {printf "%s " $1}'); do
pascal@208 352 echo "<option value='$i' $([ "$i" == "$TGT_HOME" ] && echo "selected")>$i</option>"
pascal@208 353 done
pascal@208 354 else
pascal@208 355 echo "<option value="">$(gettext "Not found")</option>"
pascal@208 356 fi
pascal@208 357 cat <<EOT
domcox@260 358 </select>
pascal@208 359
domcox@260 360 <input type="checkbox" name="HOME_FMT" value="yes" $([ -n "$TGT_HOME_FS" ] && echo "checked") id="homefs" />
domcox@260 361 <label for="homefs">$(gettext "Format partition as:")</label>
domcox@260 362 <select name="HOME_FS">"
pascal@208 363 EOT
pascal@208 364 for i in $FS
pascal@208 365 do
pascal@208 366 echo "<option value='$i' $([ "$i" == "$TGT_HOME_FS" ] && echo "selected")>$i</option>"
pascal@208 367 done
pascal@208 368 echo "</select>"
pascal@208 369 }
pascal@208 370
pascal@208 371 select_hostname()
pascal@208 372 {
pascal@208 373 cat << EOT
pascal@208 374 <a name="hostname"></a>
pascal@208 375 <h4>$(gettext "Host")</h4>
pascal@208 376 $(gettext "Hostname:")
domcox@265 377 <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 378 <span id="msgHostname"></span>
pascal@208 379 EOT
pascal@208 380 }
pascal@208 381
pascal@208 382 select_root()
pascal@208 383 {
pascal@208 384 cat << EOT
pascal@208 385 <a name="root"></a>
pascal@208 386 <h4>$(gettext "Root")</h4>
pascal@208 387 $(gettext "Root passwd:")
domcox@265 388 <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 389 $(gettext "Confirm password:")
domcox@265 390 <input type="password" id="rootPwd2" value="$TGT_ROOT_PWD" placeholder="$(gettext "Password of root")" onkeyup="checkPwd('rootPwd1','rootPwd2','msgRootPwd'); return false;" />
domcox@265 391 <span id="msgRootPwd"></span>
pascal@208 392 EOT
pascal@208 393 }
pascal@208 394
pascal@208 395 select_user()
pascal@208 396 {
pascal@208 397 cat << EOT
pascal@208 398 <a name="user"></a>
pascal@208 399 <h4>$(gettext "User")</h4>
pascal@208 400 $(gettext "User login:")
domcox@265 401 <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 402 <span id="msgUser"></span>
domcox@260 403 <br /><br />
pascal@208 404 $(gettext "User passwd:")
domcox@265 405 <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 406 $(gettext "Confirm password:")
domcox@265 407 <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 408 <span id="msgUserPwd"></span>
pascal@208 409 EOT
pascal@208 410 }
pascal@208 411
pascal@208 412 select_grub()
pascal@208 413 {
pascal@208 414 cat << EOT
pascal@208 415 <a name="grub"></a>
pascal@208 416 <h4>$(gettext "Grub")</h4>
pascal@208 417 <input type="checkbox" name="TGT_GRUB" value="yes" $([ "$TGT_GRUB" == "yes" ] && echo "checked") id="grub" />
pascal@208 418 <label for="grub">$(gettext "Install Grub bootloader")<br /></label>
pascal@208 419 <input type="checkbox" name="TGT_WINBOOT" value="auto" $([ -n "$TGT_WINBOOT" ] && echo "checked") id="dualboot" />
pascal@208 420 <label for="dualboot">$(gettext "Enable Windows Dual-Boot")</label>
pascal@208 421 EOT
pascal@208 422 }
pascal@208 423
domcox@261 424 validate()
domcox@261 425 {
domcox@261 426 case $1 in
domcox@261 427 install)
domcox@261 428 cat << EOT
domcox@265 429 <script src="lib/user.js"></script>
domcox@261 430 <script type="text/javascript">
domcox@261 431 function SubmitForm() {
domcox@265 432 // hostname
domcox@265 433 if (false == checkLogin('hostname','msgHostname')) {
domcox@261 434 alert("Hostname error");
domcox@265 435 // root pwd
domcox@265 436 } else if (false == checkPwd('rootPwd1','rootPwd2','msgRootPwd')) {
domcox@261 437 alert("Root password error");
domcox@265 438 // user
domcox@265 439 } else if (false == checkLogin('user','msgUser')) {
domcox@261 440 alert("User login error");
domcox@265 441 // user pwd
domcox@265 442 } else if (false == checkPwd('userPwd1','userPwd2','msgUserPwd')) {
domcox@261 443 alert("User password error");
domcox@261 444 } else {
domcox@261 445 var r=confirm("$(gettext "Do you really want to continue?")");
domcox@261 446 if (r==true)
domcox@261 447 {
domcox@261 448 document.ConfigForm.submit();
domcox@261 449 }
domcox@261 450 }
domcox@261 451 }
domcox@261 452 </script>
domcox@261 453 EOT
domcox@261 454 ;;
domcox@266 455 *)
domcox@261 456 cat << EOT
domcox@261 457 <script>
domcox@261 458 function SubmitForm() {
domcox@261 459 var r=confirm("$(gettext "Do you really want to continue?")");
domcox@261 460 if (r==true)
domcox@261 461 {
domcox@261 462 document.ConfigForm.submit();
domcox@261 463 }
domcox@261 464 }
domcox@261 465 </script>
domcox@261 466 EOT
domcox@261 467 ;;
domcox@261 468 esac
domcox@261 469 }
domcox@261 470
pascal@208 471 moveto_page()
pascal@208 472 {
pascal@208 473 case $1 in
pascal@208 474 *)
pascal@208 475 page=home
pascal@208 476 title1=$(gettext "Back to Installer Start Page") ;;
pascal@208 477 esac
pascal@208 478 case $2 in
pascal@208 479 write|run)
pascal@208 480 title2=$(gettext "Proceed to SliTaz installation") ;;
pascal@208 481 reboot)
pascal@208 482 title2=$(gettext "Installation complete. You can now restart (reboot)") ;;
pascal@208 483 failed)
pascal@208 484 title2=$(gettext "Installation failed. See log") ;;
pascal@208 485 *)
pascal@208 486 page=home
pascal@208 487 title2=$(gettext "Back to Installer Start Page") ;;
pascal@208 488 esac
pascal@208 489 cat <<EOT
pascal@208 490 <hr />
pascal@208 491 <input type="hidden" name="page" value="$2" />
pascal@208 492 <a class="button" value="$1" href="$SCRIPT_NAME?page=$1" >$title1</a>
pascal@208 493 <a class="button" value="$2" onclick="SubmitForm()">$title2</a>
pascal@208 494 EOT
pascal@208 495 }
pascal@208 496
pascal@208 497 page_redirection()
pascal@208 498 {
pascal@208 499 cat <<EOT
pascal@208 500 <html>
pascal@208 501 <head>
pascal@208 502 <title>$(gettext "A web page that points a browser to a different page after 2 seconds")</title>
pascal@208 503 <meta http-equiv="refresh" content="0; URL=$SCRIPT_NAME?page=$1">
pascal@208 504 <meta name="keywords" content="automatic redirection">
pascal@208 505 </head>
pascal@208 506 <body>
paul@209 507 $(gettext "If your browser doesn't automatically redirect within a few seconds,
paul@209 508 you may want to go there manually")
pascal@208 509 <a href="$SCRIPT_NAME?page=$1">$1</a>
pascal@208 510 </body>
pascal@208 511 </html>
pascal@208 512 EOT
pascal@208 513 }
pascal@208 514
pascal@208 515 check_ressources()
pascal@208 516 {
pascal@208 517 local code
pascal@208 518 code=0
pascal@208 519 # Check tazinst
pascal@208 520 if ! tazinst usage | grep -q Usage: ; then
pascal@208 521 cat <<EOT
pascal@208 522 <h3>$(gettext "Tazinst Error")</h3>
pascal@208 523 <p><strong>tazinst</strong>, $(gettext "the lightweight SliTaz HDD installer
paul@209 524 is missing. Any installation can not be done without tazinst.")</p>
pascal@208 525 <p>$(gettext "Check tazinst' permissions, or reinstall the slitaz-tools package:")</p>
pascal@208 526 <code># tazpkg get-install slitaz-tools --forced</code>
pascal@208 527 EOT
pascal@208 528 code=1
pascal@208 529 else
pascal@208 530 # Check tazinst required version
pascal@208 531 v=$(tazinst version | tr -d '[:alpha:]')
pascal@208 532 r=$TAZINST_REQUIRED_VERSION
pascal@208 533 if ! (echo "$v" | awk -v r=$r '{v=$v+0}{ if (v < r) exit 1}') ; then
pascal@208 534 cat <<EOT
pascal@208 535 <h3>$(gettext "Tazinst Error")</h3>
pascal@208 536 <p><strong>tazinst</strong> ($v) $(gettext "is not at the required version ($r),
pascal@208 537 use tazinst in a xterm or reinstall the slitaz-tools package:")</p>
pascal@208 538 <code># tazpkg get-install slitaz-tools --forced</code>
pascal@208 539 EOT
pascal@208 540 code=1
pascal@208 541 fi
pascal@208 542 fi
pascal@208 543 return $code
pascal@208 544 }
pascal@208 545
pascal@208 546 run_tazinst()
pascal@208 547 {
pascal@208 548 echo "<h4>$(gettext "Proceeding: ()")</h4>"
pascal@208 549 gettext "Please wait until processing is complete"
pascal@208 550 table_start
pascal@208 551 tazinst $(GET INST_ACTION) $INSTFILE | \
pascal@208 552 awk '{print "<tr><td><tt>" $0 "</tt></td></tr>"}'
pascal@208 553 table_end
domcox@265 554 gettext "Completed."
pascal@208 555 return $(grep -c "cancelled on error" $INSTFILE)
pascal@208 556 }
pascal@208 557
pascal@208 558 tazinst_log()
pascal@208 559 {
pascal@208 560 echo "<pre>"
pascal@208 561 tazinst log
pascal@208 562 echo "</pre>"
pascal@208 563 }
pascal@208 564
pascal@208 565 scan_mkfs()
pascal@208 566 {
pascal@208 567 for path in /bin /sbin /usr/bin /usr/sbin
pascal@208 568 do
pascal@208 569 [ -e $path/mkfs.btrfs ] && FS=btrfs
pascal@208 570 [ -e $path/mkfs.cramfs ] && FS="$FS cramfs"
pascal@208 571 [ -e $path/mkfs.ext2 ] && FS="$FS ext2"
pascal@208 572 [ -e $path/mkfs.ext3 ] && FS="$FS ext3"
pascal@208 573 [ -e $path/mkfs.ext4 ] && FS="$FS ext4"
pascal@208 574 [ -e $path/mkfs.jfs ] && FS="$FS jfs"
pascal@208 575 [ -e $path/mkfs.minix ] && FS="$FS minix"
pascal@208 576 [ -e $path/mkfs.reiserfs ] && FS="$FS reiserfs"
pascal@208 577 [ -e $path/mkfs.xfs ] && FS="$FS xfs"
pascal@208 578 done
pascal@208 579 }
pascal@208 580
pascal@208 581 form_start()
pascal@208 582 {
pascal@208 583 cat <<EOT
pascal@208 584 <form name="ConfigForm" method="get" action="$SCRIPT_NAME">
pascal@208 585 EOT
pascal@208 586 }
pascal@208 587
pascal@208 588 form_end()
pascal@208 589 {
pascal@208 590 echo "</form>"
pascal@208 591 }
pascal@208 592
pascal@208 593 #
pascal@208 594 # Main
pascal@208 595 #
pascal@208 596
pascal@208 597 case "$(GET page)" in
pascal@208 598 gparted)
pascal@208 599 /usr/sbin/gparted
pascal@208 600 xhtml_header
pascal@208 601 page_redirection home
pascal@208 602 ;;
pascal@208 603 install)
pascal@208 604 xhtml_header
pascal@208 605 form_start
pascal@208 606 display_action install
domcox@261 607 validate install
domcox@258 608 read_setup
pascal@208 609 select_source
pascal@208 610 select_partition
pascal@208 611 select_home
pascal@208 612 select_hostname
pascal@208 613 select_root
pascal@208 614 select_user
pascal@208 615 select_grub
pascal@208 616 moveto_page home write
pascal@208 617 form_end
pascal@208 618 ;;
pascal@208 619 upgrade)
pascal@208 620 xhtml_header
pascal@208 621 form_start
pascal@208 622 display_action upgrade
domcox@261 623 validate upgrade
domcox@258 624 read_setup
pascal@208 625 select_source
pascal@208 626 select_old_slitaz
pascal@208 627 select_grub
pascal@208 628 moveto_page home write
pascal@208 629 form_end
pascal@208 630 ;;
pascal@208 631 write)
pascal@208 632 write_setup
pascal@208 633 xhtml_header
pascal@208 634 if ! (tazinst check $INSTFILE); then
pascal@208 635 page_redirection $(GET INST_ACTION)
pascal@208 636 else
pascal@208 637 read_setup
pascal@208 638 form_start
pascal@208 639 display_action $(GET INST_ACTION)
pascal@208 640 if run_tazinst; then
pascal@208 641 moveto_page home reboot
pascal@208 642 else
pascal@208 643 moveto_page home failed
pascal@208 644 fi
pascal@208 645 form_end
pascal@208 646 fi
pascal@208 647 ;;
pascal@208 648 reboot)
pascal@208 649 reboot ;;
pascal@208 650 home)
pascal@208 651 xhtml_header
pascal@208 652 select_action
pascal@208 653 select_gparted
pascal@208 654 select_install
pascal@208 655 select_upgrade
pascal@208 656 ;;
pascal@208 657 failed)
pascal@208 658 xhtml_header
pascal@208 659 display_log
pascal@208 660 ;;
domcox@234 661 menu_install)
domcox@234 662 xhtml_header
domcox@234 663 if check_ressources; then
domcox@258 664 page_redirection install
domcox@234 665 fi
domcox@234 666 ;;
domcox@234 667 menu_upgrade)
domcox@234 668 xhtml_header
domcox@234 669 if check_ressources; then
domcox@258 670 page_redirection upgrade
domcox@234 671 fi
domcox@234 672 ;;
pascal@208 673 *)
pascal@208 674 xhtml_header
pascal@208 675 if check_ressources; then
pascal@208 676 page_redirection home
pascal@208 677 fi
pascal@208 678 ;;
pascal@208 679 esac
pascal@208 680
pascal@208 681 xhtml_footer
pascal@208 682
pascal@208 683 exit 0