tazpanel view installer.cgi @ rev 312

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