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 #
|
al@46
|
5 # Copyright (C) 2012-2015 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
|
domcox@2
|
11 # restricted path
|
domcox@2
|
12 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
domcox@0
|
13
|
al@46
|
14 VERSION=3.98
|
domcox@2
|
15
|
domcox@13
|
16 # Common functions from libtazpanel
|
domcox@13
|
17 . lib/libtazpanel
|
domcox@13
|
18 get_config
|
domcox@2
|
19
|
domcox@13
|
20 TITLE=$(gettext 'TazPanel - Installer')
|
domcox@0
|
21
|
domcox@2
|
22 # export package name for gettext.
|
domcox@2
|
23 TEXTDOMAIN='installer'
|
domcox@2
|
24 export TEXTDOMAIN
|
domcox@0
|
25
|
domcox@2
|
26 # tazinst required version
|
domcox@2
|
27 TAZINST_MINIMUM_VERSION="3.8"
|
domcox@2
|
28 TAZINST_MAXIMUM_VERSION="4.99"
|
domcox@0
|
29
|
domcox@2
|
30 # tazinst setup file
|
domcox@2
|
31 INSTFILE=/root/tazinst.conf
|
domcox@0
|
32
|
al@50
|
33
|
pascal@22
|
34 #------
|
pascal@22
|
35 # menu
|
pascal@22
|
36 #------
|
al@50
|
37
|
pascal@22
|
38 case "$1" in
|
al@46
|
39 menu)
|
al@46
|
40 [ "$REMOTE_USER" == "root" ] && cat << EOT
|
al@46
|
41 <li tabindex="0">
|
al@46
|
42 <span>$(gettext 'Install')</span>
|
al@46
|
43 <menu>
|
al@46
|
44 <li><a data-icon="install"
|
al@46
|
45 href="/installer.cgi">$(gettext 'Install')</a></li>
|
al@46
|
46 <li><a data-icon="slitaz"
|
al@49
|
47 href="/installer.cgi?page=install">$(gettext 'Install SliTaz')</a></li>
|
al@46
|
48 <li><a data-icon="upgrade"
|
al@49
|
49 href="/installer.cgi?page=upgrade">$(gettext 'Upgrade system')</a></li>
|
al@46
|
50 </menu>
|
pascal@22
|
51 </li>
|
pascal@22
|
52 EOT
|
pascal@22
|
53 exit
|
pascal@22
|
54 esac
|
domcox@0
|
55
|
al@50
|
56
|
domcox@2
|
57 #-----------
|
domcox@2
|
58 # home page
|
domcox@2
|
59 #-----------
|
domcox@0
|
60
|
al@50
|
61 select_action() {
|
al@50
|
62 cat <<EOT
|
al@50
|
63 <!-- Welcome message -->
|
al@50
|
64
|
al@50
|
65 <h2>$(gettext "Welcome to the Slitaz Installer!")</h2>
|
al@50
|
66
|
al@50
|
67 <p>$(gettext "The SliTaz Installer installs or upgrades SliTaz to a \
|
al@6
|
68 hard disk drive from a device like a Live-CD or LiveUSB key, from a SliTaz \
|
al@50
|
69 ISO file, or from the web by downloading an ISO file.")</p>
|
al@50
|
70
|
al@50
|
71 <p>$(gettext "Which type of installation do you want to start?")</p>
|
al@50
|
72 EOT
|
domcox@0
|
73 }
|
domcox@0
|
74
|
al@50
|
75
|
al@50
|
76 select_install() {
|
al@50
|
77 cat <<EOT
|
al@50
|
78 <!-- Install message -->
|
al@50
|
79
|
al@50
|
80 <section>
|
al@50
|
81 <header>$(gettext 'Install')</header>
|
al@50
|
82
|
al@50
|
83 <div>
|
al@50
|
84 <p>$(gettext "Install SliTaz on a partition of your hard disk drive. If \
|
domcox@13
|
85 you decide to format your partition, all data will be lost. If you do not \
|
paul@16
|
86 format, all data except for any existing /home directory will be removed \
|
al@50
|
87 (the home directory will be kept as is).")</p>
|
al@50
|
88 <p>$(gettext "Before installation, you may need to create or resize \
|
al@6
|
89 partitions on your hard disk drive in order to make space for SliTaz \
|
al@50
|
90 GNU/Linux. You can graphically manage your partitions with Gparted")</p>
|
al@50
|
91 </div>
|
al@50
|
92
|
al@50
|
93 <footer>
|
al@50
|
94 <form>
|
al@50
|
95 <button name="page" value="install" data-icon="slitaz"
|
al@50
|
96 title="$(gettext 'Proceed to a new SliTaz installation')"
|
al@50
|
97 >$(gettext 'Install SliTaz')</button>
|
al@50
|
98 </form>
|
al@50
|
99 </footer>
|
al@50
|
100 </section>
|
al@50
|
101 EOT
|
domcox@0
|
102 }
|
domcox@0
|
103
|
al@50
|
104
|
al@50
|
105 select_upgrade() {
|
al@50
|
106 cat <<EOT
|
al@50
|
107 <!-- Upgrade message -->
|
al@50
|
108
|
al@50
|
109 <section>
|
al@50
|
110 <header>$(gettext 'Upgrade')</header>
|
al@50
|
111
|
al@50
|
112 <div>
|
al@50
|
113 <p>$(gettext "Upgrade an already installed SliTaz system on your hard disk \
|
al@6
|
114 drive. Your /home /etc /var/www directories will be kept, all other \
|
al@6
|
115 directories will be removed. Any additional packages added to your old \
|
al@50
|
116 Slitaz system will be updated as long you have an active internet connection.")</p>
|
al@50
|
117 </div>
|
al@50
|
118
|
al@50
|
119 <footer>
|
al@50
|
120 <form>
|
al@50
|
121 <button name="page" value="upgrade" data-icon="upgrade"
|
al@50
|
122 title="$(gettext 'Upgrade an existing SliTaz system')"
|
al@50
|
123 >$(gettext 'Upgrade SliTaz')</button>
|
al@50
|
124 </form>
|
al@50
|
125 </footer>
|
al@50
|
126 </section>
|
al@50
|
127 EOT
|
domcox@2
|
128 }
|
domcox@0
|
129
|
al@50
|
130
|
domcox@2
|
131 #--------------------
|
paul@31
|
132 # partitioning page
|
domcox@2
|
133 #--------------------
|
domcox@0
|
134
|
al@50
|
135 exec_gparted() {
|
domcox@13
|
136 /bin/su - -c \
|
domcox@13
|
137 "exec env DISPLAY=':0.0' XAUTHORITY='/var/run/slim.auth' /usr/sbin/gparted"
|
domcox@0
|
138 }
|
domcox@0
|
139
|
al@50
|
140
|
al@50
|
141 select_gparted() {
|
al@50
|
142 cat <<EOT
|
al@50
|
143 <!-- GParted message -->
|
al@50
|
144
|
al@50
|
145 <section>
|
al@50
|
146 <header>$(gettext "Partitioning")</header>
|
al@50
|
147
|
al@50
|
148 <div>
|
al@50
|
149 <p>$(gettext "On most used systems, the hard drive is already dedicated to \
|
al@50
|
150 partitions for Windows™, or Linux, or another operating \
|
al@6
|
151 system. You'll need to resize these partitions in order to make space for \
|
al@6
|
152 SliTaz GNU/Linux. SliTaz will co-exist with other operating systems already \
|
al@50
|
153 installed on your hard drive.")</p>
|
al@50
|
154 <p>$(gettext "The amount of space needed depends on how much software you \
|
al@6
|
155 plan to install and how much space you require for users. It's conceivable \
|
al@6
|
156 that you could run a minimal SliTaz system in 300 megs or less, but 2 gigs \
|
al@50
|
157 is indeed more comfy.")</p>
|
al@50
|
158 <p>$(gettext "A separate home partition and a partition that will be used \
|
al@6
|
159 as Linux swap space may be created if needed. Slitaz detects and uses swap \
|
al@50
|
160 partitions automatically.")</p>
|
al@50
|
161 <hr/>
|
al@50
|
162 <p>$(gettext "You can graphically manage your partitions with GParted. \
|
al@6
|
163 GParted is a partition editor for graphically managing your disk partitions. \
|
al@6
|
164 GParted allows you to create, destroy, resize and copy partitions without \
|
al@50
|
165 data loss.")</p>
|
al@50
|
166 <p>$(gettext "GParted supports ext2, ext3, ext4, linux swap, ntfs and \
|
domcox@13
|
167 fat32 filesystems right out of the box. Support for xjs, jfs, hfs and other \
|
al@6
|
168 filesystems is available as well but you first need to add drivers for these \
|
al@6
|
169 filesystems by installing the related packages xfsprogs, jfsutils, linux-hfs \
|
al@50
|
170 and so on.")</p>
|
al@50
|
171 </div>
|
al@50
|
172
|
al@50
|
173 <footer>
|
al@50
|
174 <!-- Launch GParted -->
|
al@50
|
175 <form>
|
al@50
|
176 <button name="page" value="gparted" data-icon="hdd"
|
al@50
|
177 title="$(gettext 'Launch GParted, the partition editor tool')"
|
al@50
|
178 >$(gettext 'Execute GParted')</button>
|
al@50
|
179 </form>
|
al@50
|
180 </footer>
|
al@50
|
181 </section>
|
al@50
|
182
|
al@50
|
183
|
al@50
|
184 <h5>$(gettext "Continue installation")</h5>
|
al@50
|
185
|
al@50
|
186 <p>$(gettext "Once you've made room for SliTaz on your drive, you should \
|
al@50
|
187 be able to continue installation.")</p>
|
al@50
|
188 EOT
|
domcox@0
|
189 }
|
domcox@0
|
190
|
al@50
|
191
|
domcox@2
|
192 #------------
|
domcox@2
|
193 # input page
|
domcox@2
|
194 #------------
|
domcox@2
|
195
|
al@50
|
196 select_source() {
|
domcox@2
|
197 local media="$(/usr/sbin/tazinst get media "$INSTFILE")"
|
domcox@2
|
198 local source="$(/usr/sbin/tazinst get source "$INSTFILE")"
|
domcox@2
|
199 local list_media="$(/usr/sbin/tazinst list media)"
|
domcox@13
|
200 local error
|
domcox@2
|
201
|
domcox@13
|
202 # set default media
|
domcox@2
|
203 [ "$media" ] || media="$(tazinst list media | cut -d ' ' -f1)"
|
domcox@13
|
204
|
domcox@13
|
205 comment "Source selection"
|
domcox@2
|
206 # cdrom
|
domcox@13
|
207 if printf '%s' "$list_media" | grep -q "cdrom"; then
|
al@6
|
208 input_media "cdrom" \
|
al@6
|
209 "$media"
|
al@6
|
210 label_media "cdrom" \
|
al@6
|
211 "$(gettext 'LiveCD')" \
|
al@6
|
212 "$media" \
|
al@6
|
213 "$(gettext 'Use the SliTaz LiveCD')"
|
domcox@2
|
214 br
|
domcox@2
|
215 fi
|
domcox@2
|
216 # usb
|
domcox@13
|
217 if printf '%s' "$list_media" | grep -q "usb"; then
|
al@6
|
218 input_media "usb" \
|
al@6
|
219 "$media"
|
al@6
|
220 label_media "usb" \
|
al@6
|
221 "$(gettext 'LiveUSB:')" \
|
al@6
|
222 "$media" \
|
domcox@13
|
223 "$(gettext 'Enter the partition where SliTaz Live is located on
|
domcox@13
|
224 your USB Key')"
|
domcox@2
|
225 error="$?"
|
domcox@19
|
226 select "$(/usr/sbin/tazinst list usb "$INSTFILE" | cut -d' ' -f2)" \
|
al@6
|
227 "$source" \
|
al@6
|
228 "SRC_USB"
|
al@6
|
229 error_msg "$error" \
|
al@6
|
230 "source" \
|
al@6
|
231 2
|
domcox@2
|
232 br
|
domcox@2
|
233 fi
|
domcox@2
|
234 # iso
|
al@6
|
235 input_media "iso" \
|
al@6
|
236 "$media"
|
al@6
|
237 label_media "iso" \
|
al@6
|
238 "$(gettext 'ISO file:')" \
|
al@6
|
239 "$media" \
|
al@6
|
240 "$(gettext 'Select a SliTaz ISO file located on a local disk')"
|
domcox@2
|
241 error="$?"
|
domcox@2
|
242 if [ "$media" == "iso" ]; then
|
al@6
|
243 input "text" \
|
al@6
|
244 "src_iso" \
|
al@6
|
245 "$source" "" \
|
domcox@13
|
246 "$(gettext 'Select an ISO or enter the full path to the ISO file')"\
|
domcox@2
|
247 "iso"
|
domcox@2
|
248 else
|
al@6
|
249 input "text" \
|
al@6
|
250 "src_iso" \
|
al@6
|
251 "" \
|
al@6
|
252 "none" \
|
domcox@13
|
253 "$(gettext 'Select an ISO or enter the full path to the ISO file')"\
|
domcox@2
|
254 "iso"
|
domcox@2
|
255 fi
|
al@6
|
256 datalist "$(/usr/sbin/tazinst list iso "$INSTFILE")" \
|
al@6
|
257 "src_iso"
|
al@6
|
258 error_msg "$error" \
|
al@6
|
259 "source"
|
domcox@2
|
260 br
|
domcox@2
|
261 # web
|
al@6
|
262 input_media "web" \
|
al@6
|
263 "$media"
|
al@6
|
264 label_media "web" \
|
al@6
|
265 "$(gettext 'Web:')" \
|
al@6
|
266 "$media" \
|
al@6
|
267 "$(gettext 'Select a SliTaz version on the Web')"
|
domcox@2
|
268 error="$?"
|
domcox@2
|
269
|
domcox@2
|
270 if [ "$media" == "web" ]; then
|
al@6
|
271 input "text" \
|
al@6
|
272 "src_web" \
|
al@6
|
273 "$source" "" \
|
domcox@13
|
274 "$(gettext 'Select a version or enter the full url to an ISO file')"\
|
domcox@2
|
275 "web"
|
domcox@2
|
276 else
|
al@6
|
277 input "text" \
|
al@6
|
278 "src_web" \
|
al@6
|
279 "" \
|
al@6
|
280 "none" \
|
domcox@13
|
281 "$(gettext 'Select a version or enter the full url to an ISO file')"\
|
domcox@2
|
282 "web"
|
domcox@2
|
283 fi
|
al@6
|
284 datalist "$(/usr/sbin/tazinst help web "$INSTFILE")" \
|
al@6
|
285 "src_web"
|
al@6
|
286 error_msg "$error" \
|
al@6
|
287 "source"
|
domcox@2
|
288 }
|
domcox@2
|
289
|
domcox@2
|
290 select_root_uuid()
|
domcox@2
|
291 {
|
domcox@2
|
292 local root_uuid="$(/usr/sbin/tazinst get root_uuid "$INSTFILE")"
|
domcox@2
|
293 local mode="$(/usr/sbin/tazinst get mode "$INSTFILE")"
|
domcox@2
|
294 comment "root_uuid selection"
|
domcox@2
|
295 if [ "$mode" == "upgrade" ]; then
|
al@6
|
296 label "root_uuid" \
|
al@6
|
297 "$(gettext 'Existing SliTaz partition to upgrade:')" \
|
al@6
|
298 "$(gettext 'Specify the partition containing the system to upgrade')"
|
domcox@2
|
299 error="$?"
|
domcox@2
|
300 else
|
al@6
|
301 label "root_uuid" \
|
al@6
|
302 "$(gettext 'Install Slitaz to partition:')" \
|
al@6
|
303 "$(gettext 'Specify the partition where to install SliTaz')"
|
domcox@2
|
304 error="$?"
|
domcox@2
|
305 fi
|
al@6
|
306 select "$(/usr/sbin/tazinst list uuid "$INSTFILE")" \
|
al@6
|
307 "$root_uuid" \
|
al@6
|
308 "ROOT_UUID" \
|
domcox@28
|
309 0
|
al@6
|
310 error_msg "$error" \
|
al@6
|
311 "root_uuid" \
|
domcox@28
|
312 0
|
domcox@2
|
313 br
|
domcox@2
|
314 }
|
domcox@2
|
315
|
domcox@2
|
316 select_root_format()
|
domcox@2
|
317 {
|
domcox@2
|
318 local root_format="$(/usr/sbin/tazinst get root_format "$INSTFILE")"
|
domcox@2
|
319 comment "root_format selection"
|
al@6
|
320 format "$(/usr/sbin/tazinst list format "$INSTFILE")" \
|
al@6
|
321 "$root_format" \
|
al@6
|
322 "ROOT_FORMAT"
|
domcox@2
|
323 }
|
domcox@2
|
324
|
al@50
|
325 select_home_uuid() {
|
al@50
|
326 local home_uuid="$(/usr/sbin/tazinst get home_uuid "$INSTFILE")"
|
domcox@2
|
327
|
al@50
|
328 cat <<EOT
|
al@50
|
329 <!-- home_uuid selection -->
|
al@50
|
330
|
al@50
|
331 <fieldset>
|
al@50
|
332 <legend>$(gettext "home partition")</legend>
|
al@50
|
333
|
al@50
|
334 $(
|
al@6
|
335 label "home_uuid" \
|
al@6
|
336 "$(gettext 'Separate partition for /home:')" \
|
al@6
|
337 "$(gettext 'Specify the partition containing /home')"
|
al@6
|
338 select "$(/usr/sbin/tazinst list uuid "$INSTFILE")" \
|
al@6
|
339 "$home_uuid" \
|
al@6
|
340 "HOME_UUID" \
|
domcox@28
|
341 0
|
al@50
|
342 )
|
al@50
|
343 <br/>
|
al@50
|
344 EOT
|
domcox@2
|
345 }
|
domcox@2
|
346
|
domcox@2
|
347 select_home_format()
|
domcox@2
|
348 {
|
domcox@2
|
349 local home_format="$(/usr/sbin/tazinst get home_format "$INSTFILE")"
|
al@50
|
350
|
domcox@2
|
351 comment "home_format selection"
|
al@6
|
352 format "$(/usr/sbin/tazinst list format "$INSTFILE")" \
|
al@6
|
353 "$home_format" \
|
al@6
|
354 "HOME_FORMAT"
|
al@50
|
355 cat <<EOT
|
al@50
|
356 </fieldset>
|
al@50
|
357 EOT
|
domcox@2
|
358 }
|
domcox@2
|
359
|
al@50
|
360
|
al@50
|
361 select_hostname() {
|
domcox@2
|
362 local hostname="$(/usr/sbin/tazinst get hostname "$INSTFILE")" error
|
al@50
|
363
|
al@50
|
364 cat <<EOT
|
al@50
|
365 <!-- hostname selection -->
|
al@50
|
366
|
al@50
|
367 <fieldset>
|
al@50
|
368 <legend>$(gettext "Hostname")</legend>
|
al@50
|
369 $(
|
al@6
|
370 label "hostname" \
|
al@6
|
371 "$(gettext 'Set Hostname to:')" \
|
al@6
|
372 "$(gettext 'Hostname configuration allows you to specify the machine name')"
|
domcox@2
|
373 error=$?
|
al@6
|
374 input "text" \
|
al@6
|
375 "HOSTNAME" \
|
al@6
|
376 "$hostname" \
|
al@6
|
377 "" \
|
al@6
|
378 "$(gettext 'Name of your system')"
|
al@6
|
379 error_msg "$error" \
|
al@6
|
380 "hostname" \
|
al@6
|
381 2
|
al@50
|
382 )
|
al@50
|
383 </fieldset>
|
al@50
|
384 EOT
|
domcox@2
|
385 }
|
domcox@2
|
386
|
al@50
|
387
|
al@50
|
388 select_root_pwd() {
|
domcox@2
|
389 local root_pwd="$(/usr/sbin/tazinst get root_pwd "$INSTFILE")" error
|
al@50
|
390
|
al@50
|
391 cat <<EOT
|
al@50
|
392 <!-- root_pwd selection -->
|
al@50
|
393
|
al@50
|
394 <fieldset>
|
al@50
|
395 <legend>$(gettext "Root superuser")</legend>
|
al@50
|
396 $(
|
al@6
|
397 label "root_pwd" \
|
al@6
|
398 "$(gettext 'Root passwd:')" \
|
al@6
|
399 "$(gettext 'Enter the password for root')"
|
domcox@2
|
400 error="$?"
|
al@6
|
401 input "text" \
|
al@6
|
402 "ROOT_PWD" \
|
al@6
|
403 "$root_pwd" \
|
al@6
|
404 "" \
|
al@6
|
405 "$(gettext 'Password of root')"
|
al@6
|
406 error_msg "$error" \
|
al@6
|
407 "root_pwd"
|
al@50
|
408 )
|
al@50
|
409 </fieldset>
|
al@50
|
410 EOT
|
domcox@2
|
411 }
|
domcox@2
|
412
|
al@50
|
413
|
al@50
|
414 select_user_login() {
|
domcox@2
|
415 local user_login="$(/usr/sbin/tazinst get user_login "$INSTFILE")" error
|
al@50
|
416
|
al@50
|
417 cat <<EOT
|
al@50
|
418 <!-- user_login selection -->
|
al@50
|
419
|
al@50
|
420 <fieldset>
|
al@50
|
421 <legend>$(gettext "User")</legend>
|
al@50
|
422 $(
|
al@6
|
423 label "user_login" \
|
al@6
|
424 "$(gettext 'User login:')" \
|
al@6
|
425 "$(gettext 'Enter the name of the first user')"
|
domcox@2
|
426 error="$?"
|
al@6
|
427 input "text" \
|
al@6
|
428 "USER_LOGIN" \
|
al@6
|
429 "$user_login" \
|
al@6
|
430 "" \
|
domcox@2
|
431 "$(gettext 'Name of the first user')"
|
al@6
|
432 error_msg "$error" \
|
al@6
|
433 "user_login" \
|
al@6
|
434 2
|
al@50
|
435 )
|
al@50
|
436 <br/>
|
al@50
|
437 EOT
|
domcox@2
|
438 }
|
domcox@2
|
439
|
al@50
|
440
|
domcox@2
|
441 select_user_pwd()
|
domcox@2
|
442 {
|
domcox@2
|
443 local user_pwd="$(/usr/sbin/tazinst get user_pwd "$INSTFILE")" error
|
al@50
|
444
|
al@6
|
445 label "user_pwd" \
|
al@6
|
446 "$(gettext 'User passwd:')" \
|
al@6
|
447 "$(gettext 'The password for default user')"
|
domcox@2
|
448 error="$?"
|
al@6
|
449 input "text" \
|
al@6
|
450 "USER_PWD" \
|
al@6
|
451 "$user_pwd" \
|
al@6
|
452 "" \
|
domcox@2
|
453 "$(gettext 'Password of the first user')"
|
al@6
|
454 error_msg "$error" \
|
al@6
|
455 "user_pwd"
|
al@50
|
456 cat <<EOT
|
al@50
|
457 </fieldset>
|
al@50
|
458 EOT
|
domcox@2
|
459 }
|
domcox@2
|
460
|
al@50
|
461
|
domcox@2
|
462 select_bootloader()
|
domcox@2
|
463 {
|
domcox@2
|
464 local bootloader="$(/usr/sbin/tazinst get bootloader "$INSTFILE")" error
|
al@50
|
465
|
al@50
|
466 cat <<EOT
|
al@50
|
467 <!-- bootloader selection -->
|
al@50
|
468
|
al@50
|
469 <fieldset>
|
al@50
|
470 <legend>$(gettext "Bootloader")</legend>
|
al@50
|
471
|
al@50
|
472 $(
|
al@6
|
473 input "checkbox" \
|
al@6
|
474 "bootloader" \
|
al@6
|
475 "auto" \
|
al@6
|
476 "$bootloader"
|
al@6
|
477 label "bootloader" \
|
al@6
|
478 "$(gettext 'Install a bootloader.')" \
|
domcox@13
|
479 "$(gettext "Usually you should answer yes, unless you want to install \
|
domcox@13
|
480 a bootloader by hand yourself.")"
|
domcox@2
|
481 error="$?"
|
al@6
|
482 error_msg "$error" \
|
al@6
|
483 "bootloader"
|
al@50
|
484 )
|
al@50
|
485 <br/>
|
al@50
|
486 EOT
|
domcox@2
|
487 }
|
domcox@2
|
488
|
al@50
|
489
|
domcox@2
|
490 select_winboot()
|
domcox@2
|
491 {
|
domcox@2
|
492 local winboot="$(/usr/sbin/tazinst get winboot "$INSTFILE")" error
|
al@50
|
493
|
domcox@2
|
494 comment "winboot selection"
|
al@6
|
495 input "checkbox" \
|
al@6
|
496 "winboot" \
|
al@6
|
497 "auto" \
|
al@6
|
498 "$winboot"
|
al@6
|
499 label "winboot" \
|
al@6
|
500 "$(gettext 'Enable Windows Dual-Boot.')" \
|
domcox@13
|
501 "$(gettext "At start-up, you will be asked whether you want to boot \
|
al@50
|
502 into Windows™ or SliTaz GNU/Linux.")"
|
domcox@2
|
503 error="$?"
|
al@6
|
504 error_msg "$error" \
|
al@6
|
505 "winboot"
|
al@50
|
506 cat <<EOT
|
al@50
|
507 </fieldset>
|
al@50
|
508 EOT
|
domcox@2
|
509 }
|
domcox@2
|
510
|
al@50
|
511
|
domcox@2
|
512 errors_msg()
|
domcox@2
|
513 {
|
domcox@2
|
514 if [ "$CHECK" ]; then
|
domcox@13
|
515 echo '<span class="alert">'
|
domcox@28
|
516 p "$(gettext "Errors found. Please check your settings.")"
|
domcox@13
|
517 echo '</span>'
|
domcox@2
|
518 fi
|
domcox@2
|
519 }
|
domcox@2
|
520
|
al@50
|
521
|
al@50
|
522 select_settings() {
|
domcox@2
|
523 local settings="$(/usr/sbin/tazinst get settings "$INSTFILE")"
|
domcox@2
|
524 CHECK=$(GET CHECK)
|
domcox@2
|
525 errors_msg
|
al@50
|
526
|
al@50
|
527 cat<<EOT
|
al@50
|
528 <fieldset>
|
al@50
|
529 <legend>$(gettext "Select source media:")</legend>
|
al@50
|
530
|
al@50
|
531 <div class="media">$(select_source)</div>
|
al@50
|
532 </fieldset>
|
al@50
|
533
|
al@50
|
534
|
al@50
|
535 <fieldset>
|
al@50
|
536 <legend>$(gettext "Select destination")</legend>
|
al@50
|
537
|
al@50
|
538 <div>$(
|
al@50
|
539 select_root_uuid
|
al@50
|
540 printf '%s' "$settings" | grep -q "root_format" && select_root_format
|
al@50
|
541 )</div>
|
al@50
|
542 </fieldset>
|
al@50
|
543
|
al@50
|
544
|
al@50
|
545 <fieldset id="options">
|
al@50
|
546 <legend>$(gettext 'Options')</legend>
|
al@50
|
547
|
al@50
|
548 <div class="options">$(
|
domcox@13
|
549 printf '%s' "$settings" | grep -q "home_uuid" && select_home_uuid
|
al@50
|
550 printf '%s' "$settings" | grep -q "home_format" && select_home_format
|
domcox@13
|
551 printf '%s' "$settings" | grep -q "hostname" && select_hostname
|
domcox@13
|
552 printf '%s' "$settings" | grep -q "root_pwd" && select_root_pwd
|
domcox@13
|
553 printf '%s' "$settings" | grep -q "user_login" && select_user_login
|
domcox@13
|
554 printf '%s' "$settings" | grep -q "user_pwd" && select_user_pwd
|
al@50
|
555 )</div>
|
al@50
|
556
|
al@50
|
557 <div class="bootloader">$(
|
domcox@13
|
558 printf '%s' "$settings" | grep -q "bootloader" && select_bootloader
|
domcox@13
|
559 printf '%s' "$settings" | grep -q "winboot" && select_winboot
|
al@50
|
560 )</div>
|
al@50
|
561 </fieldset>
|
al@50
|
562
|
al@50
|
563 <br/>
|
al@50
|
564 EOT
|
domcox@2
|
565 }
|
domcox@2
|
566
|
al@50
|
567
|
domcox@2
|
568 #--------------
|
domcox@2
|
569 # execute page
|
domcox@2
|
570 #--------------
|
domcox@2
|
571
|
domcox@2
|
572 save_settings()
|
domcox@2
|
573 {
|
domcox@19
|
574 h5 "$(gettext "Checking settings...")"
|
al@50
|
575
|
domcox@2
|
576 # install type
|
domcox@2
|
577 /usr/sbin/tazinst set media "$(GET MEDIA)" "$INSTFILE"
|
al@50
|
578
|
domcox@2
|
579 # source File
|
domcox@2
|
580 case "$(/usr/sbin/tazinst get media "$INSTFILE")" in
|
domcox@2
|
581 usb)
|
domcox@2
|
582 /usr/sbin/tazinst set source "$(GET SRC_USB)" "$INSTFILE" ;;
|
domcox@2
|
583 iso)
|
domcox@2
|
584 /usr/sbin/tazinst set source "$(GET SRC_ISO)" "$INSTFILE" ;;
|
domcox@2
|
585 web)
|
domcox@2
|
586 /usr/sbin/tazinst set source "$(GET SRC_WEB)" "$INSTFILE" ;;
|
domcox@2
|
587 esac
|
al@50
|
588
|
domcox@2
|
589 # set defined url
|
domcox@2
|
590 [ $(GET URL) ] && SRC_WEB=$(GET URL)
|
al@50
|
591
|
domcox@2
|
592 # root Partition
|
domcox@2
|
593 /usr/sbin/tazinst set root_uuid "$(GET ROOT_UUID)" "$INSTFILE"
|
al@50
|
594
|
domcox@2
|
595 # format root partition
|
domcox@2
|
596 [ "$(GET ROOT_FORMAT)" ] \
|
domcox@2
|
597 && /usr/sbin/tazinst set root_format "$(GET ROOT_FORMAT)" "$INSTFILE" \
|
domcox@2
|
598 || /usr/sbin/tazinst unset root_format "$INSTFILE"
|
al@50
|
599
|
domcox@2
|
600 # home Partition
|
domcox@2
|
601 if [ "$(GET HOME_UUID)" ] ; then
|
domcox@2
|
602 /usr/sbin/tazinst set home_uuid "$(GET HOME_UUID)" "$INSTFILE"
|
domcox@2
|
603 [ "$(GET HOME_FORMAT)" ] \
|
domcox@2
|
604 && /usr/sbin/tazinst set home_format "$(GET HOME_FORMAT)" \
|
domcox@2
|
605 "$INSTFILE" \
|
domcox@2
|
606 || /usr/sbin/tazinst unset home_format "$INSTFILE"
|
domcox@2
|
607 else
|
domcox@2
|
608 /usr/sbin/tazinst unset home_uuid "$INSTFILE"
|
domcox@2
|
609 /usr/sbin/tazinst unset home_format "$INSTFILE"
|
domcox@2
|
610 fi
|
al@50
|
611
|
domcox@2
|
612 # hostname
|
domcox@2
|
613 /usr/sbin/tazinst set hostname "$(GET HOSTNAME)" "$INSTFILE"
|
al@50
|
614
|
domcox@2
|
615 # root pwd
|
domcox@2
|
616 /usr/sbin/tazinst set root_pwd "$(GET ROOT_PWD)" "$INSTFILE"
|
al@50
|
617
|
domcox@2
|
618 # user Login
|
domcox@2
|
619 /usr/sbin/tazinst set user_login "$(GET USER_LOGIN)" "$INSTFILE"
|
al@50
|
620
|
domcox@2
|
621 # user Pwd
|
domcox@2
|
622 /usr/sbin/tazinst set user_pwd "$(GET USER_PWD)" "$INSTFILE"
|
al@50
|
623
|
domcox@2
|
624 # win Dual-Boot
|
domcox@2
|
625 /usr/sbin/tazinst set winboot "$(GET WINBOOT)" "$INSTFILE"
|
al@50
|
626
|
domcox@2
|
627 # bootloader
|
domcox@2
|
628 if [ "$(GET BOOTLOADER)" == "auto" ]; then
|
domcox@2
|
629 /usr/sbin/tazinst set bootloader "auto" "$INSTFILE"
|
domcox@2
|
630 else
|
domcox@2
|
631 /usr/sbin/tazinst unset bootloader "$INSTFILE"
|
domcox@2
|
632 /usr/sbin/tazinst unset winboot "$INSTFILE"
|
domcox@2
|
633 fi
|
domcox@2
|
634 input_hidden "CHECK" "yes"
|
domcox@2
|
635 }
|
domcox@2
|
636
|
al@50
|
637
|
domcox@2
|
638 tazinst_run()
|
domcox@2
|
639 {
|
domcox@2
|
640 local mode="$(/usr/sbin/tazinst get mode "$INSTFILE")" error
|
domcox@2
|
641 h4 "Proceeding to: $mode"
|
domcox@2
|
642 /usr/sbin/tazinst execute "$INSTFILE" | /bin/busybox awk '{
|
domcox@2
|
643 num=$1+0
|
domcox@2
|
644 if (num>0 && num<=100){
|
domcox@2
|
645 print "<script type=\"text/javascript\">"
|
domcox@2
|
646 printf "document.write(\047<div id=\"progress\">"
|
domcox@2
|
647 printf "<img src=\"/styles/default/images/loader.gif\" />"
|
domcox@2
|
648 printf $1 "% " substr($0, length($1)+2, 40)
|
domcox@2
|
649 print "</div>\047)"
|
domcox@2
|
650 print "</script>"
|
domcox@2
|
651 }
|
domcox@2
|
652 }'
|
domcox@2
|
653 # end_of_install
|
domcox@2
|
654 if /usr/sbin/tazinst log | grep -q "x-x-" ; then
|
domcox@2
|
655 error=1
|
domcox@2
|
656 echo "<script type=\"text/javascript\">"
|
domcox@2
|
657 printf "document.write(\047<div id=\"progress\">"
|
domcox@2
|
658 printf "<img src=\"/styles/default/images/stop.png\" />"
|
al@6
|
659 printf "$(gettext 'Errors encountered.')"
|
domcox@2
|
660 printf "</div>\047)\n"
|
domcox@2
|
661 echo "</script>"
|
domcox@2
|
662 br
|
domcox@2
|
663 br
|
domcox@2
|
664 /usr/sbin/tazinst log | \
|
domcox@2
|
665 /bin/busybox awk '$1 == "-x-x-",$1 == "x-x-x"' | sed 's/-x-x-/ /' \
|
domcox@2
|
666 | grep -v "x-x-x"
|
domcox@2
|
667 else
|
domcox@2
|
668 error=0
|
domcox@2
|
669 echo "<script type=\"text/javascript\">"
|
domcox@2
|
670 printf "document.write(\047<div id=\"progress\">"
|
domcox@2
|
671 printf "<img src=\"/styles/default/images/tux.png\" />"
|
al@6
|
672 printf "$(gettext 'Process completed!')"
|
domcox@2
|
673 printf "</div>\047)\n"
|
domcox@2
|
674 echo "</script>"
|
domcox@2
|
675 br
|
domcox@2
|
676 br
|
domcox@2
|
677 br
|
al@6
|
678 p $(gettext "Installation is now finished, you can exit the installer \
|
al@6
|
679 or reboot on your new SliTaz GNU/Linux operating system.")
|
domcox@2
|
680 fi
|
domcox@2
|
681 return "$error"
|
domcox@2
|
682
|
domcox@2
|
683 }
|
domcox@2
|
684
|
al@50
|
685
|
domcox@2
|
686 tazinst_log()
|
domcox@2
|
687 {
|
domcox@13
|
688 h4 "$(gettext "Tazinst log")"
|
domcox@13
|
689 printf '<pre>%s</pre>' "$(/usr/sbin/tazinst log | sed 's/\%/ percent/g')"
|
domcox@2
|
690 }
|
domcox@2
|
691
|
domcox@2
|
692
|
domcox@2
|
693 #-----------------
|
domcox@2
|
694 # page navigation
|
domcox@2
|
695 #-----------------
|
domcox@2
|
696
|
al@50
|
697 display_mode() {
|
domcox@2
|
698 local mode="$(/usr/sbin/tazinst get mode "$INSTFILE")"
|
domcox@2
|
699 case $mode in
|
domcox@0
|
700 install)
|
al@50
|
701 cat <<EOT
|
al@50
|
702 <h2>$(gettext "Install SliTaz")</h2>
|
al@50
|
703
|
al@50
|
704 <p>$(gettext "You're going to install SliTaz on a partition of \
|
domcox@13
|
705 your hard disk drive. If you decide to format your HDD, all data will be \
|
al@6
|
706 lost. If you do not format, all data except for any existing /home \
|
al@50
|
707 directory will be removed (the home directory will be kept as is).")</p>
|
al@50
|
708 EOT
|
domcox@0
|
709 ;;
|
domcox@0
|
710 upgrade)
|
al@50
|
711 cat <<EOT
|
al@50
|
712 <h2>$(gettext "Upgrade SliTaz")</h2>
|
al@50
|
713
|
al@50
|
714 <p>$(gettext "You're going to upgrade an already installed SliTaz \
|
al@6
|
715 system on your hard disk drive. Your /home /etc /var/www directories \
|
al@6
|
716 will be kept, all other directories will be removed. Any additional \
|
al@6
|
717 packages added to your old Slitaz system will be updated as long you \
|
al@50
|
718 have an active internet connection.")</p>
|
al@50
|
719 EOT
|
domcox@0
|
720 ;;
|
domcox@0
|
721 esac
|
domcox@0
|
722 }
|
domcox@0
|
723
|
al@50
|
724
|
domcox@2
|
725 moveto_page()
|
domcox@0
|
726 {
|
domcox@13
|
727 local back_page="$1" next_page="$2" back_msg next_msg
|
al@50
|
728
|
domcox@13
|
729 case "$back_page" in
|
domcox@2
|
730 partitioning)
|
domcox@2
|
731 back_msg=$(gettext 'Back to partitioning') ;;
|
domcox@2
|
732 input)
|
domcox@2
|
733 back_msg=$(gettext 'Back to entering settings') ;;
|
domcox@2
|
734 *)
|
domcox@2
|
735 back_msg=$(gettext 'Back to Installer Start Page') ;;
|
domcox@2
|
736 esac
|
al@50
|
737
|
domcox@13
|
738 case "$next_page" in
|
domcox@2
|
739 execute|run)
|
domcox@2
|
740 next_msg=$(gettext 'Proceed to SliTaz installation') ;;
|
domcox@2
|
741 reboot)
|
domcox@2
|
742 next_msg=$(gettext 'Installation complete. You can now restart') ;;
|
domcox@2
|
743 failed)
|
domcox@2
|
744 next_msg=$(gettext 'Installation failed. See log') ;;
|
domcox@2
|
745 input)
|
domcox@2
|
746 next_msg=$(gettext 'Continue installation.') ;;
|
domcox@2
|
747 *)
|
domcox@2
|
748 next_msg=$(gettext 'Back to Installer Start Page') ;;
|
domcox@2
|
749 esac
|
al@50
|
750
|
al@50
|
751 cat <<EOT
|
al@50
|
752 <hr/>
|
al@50
|
753 <form>
|
al@50
|
754 <button name="page" value="$back_page" data-icon="back" >$back_msg</button>
|
al@50
|
755 <button name="page" value="$next_page" data-icon="start">$next_msg</button>
|
al@50
|
756 </form>
|
al@50
|
757 EOT
|
domcox@0
|
758 }
|
domcox@0
|
759
|
al@50
|
760
|
al@50
|
761 moveto_home() {
|
al@50
|
762 cat <<EOT
|
al@50
|
763 <form>
|
al@50
|
764 <button name="page" value="home" data-icon="back"
|
al@50
|
765 >$(gettext 'Back to Installer Start Page')</button>
|
al@50
|
766 </form>
|
al@50
|
767 EOT
|
domcox@0
|
768 }
|
domcox@0
|
769
|
al@50
|
770
|
al@50
|
771 page_redirection() {
|
domcox@2
|
772 local page="$1"
|
domcox@2
|
773 cat <<EOT
|
domcox@0
|
774 <!DOCTYPE html>
|
domcox@0
|
775 <html>
|
domcox@0
|
776 <head>
|
al@50
|
777 <meta charset="UTF-8">
|
domcox@0
|
778 <title>$(gettext "A web page that points a browser to a different page after \
|
domcox@0
|
779 2 seconds")</title>
|
domcox@0
|
780 <meta http-equiv="refresh" content="0; URL=$SCRIPT_NAME?page=$1">
|
domcox@0
|
781 <meta name="keywords" content="automatic redirection">
|
domcox@0
|
782 </head>
|
domcox@0
|
783 <body>
|
domcox@0
|
784 <p>$(gettext "If your browser doesn't automatically redirect within a few \
|
domcox@2
|
785 seconds, you may want to go there manually")
|
domcox@2
|
786 <a href="$SCRIPT_NAME?page=$page">$(gettext "here")</a></p>
|
domcox@0
|
787 </body>
|
domcox@0
|
788 </html>
|
domcox@0
|
789 EOT
|
domcox@0
|
790 }
|
domcox@0
|
791
|
al@50
|
792
|
domcox@2
|
793 #----------
|
domcox@2
|
794 # checking
|
domcox@2
|
795 #----------
|
domcox@2
|
796
|
al@50
|
797 check_ressources() {
|
domcox@2
|
798 local errorcode=0
|
domcox@2
|
799 comment "check_ressources"
|
domcox@0
|
800 if ! [ -x /usr/sbin/tazinst ] ; then
|
al@6
|
801 h4 $(gettext "Tazinst Error")
|
al@6
|
802 p $(gettext "<strong>tazinst</strong>, the backend to slitaz-installer \
|
al@6
|
803 is missing. Any installation can not be done without tazinst.")
|
al@6
|
804 p $(gettext "Check tazinst permissions, or reinstall the \
|
al@6
|
805 slitaz-installer package.")
|
domcox@2
|
806 errorcode=1
|
domcox@0
|
807 else
|
domcox@2
|
808 # check tazinst minimum version
|
domcox@2
|
809 v=$(/usr/sbin/tazinst version | tr -d '[:alpha:]')
|
domcox@2
|
810 r=$TAZINST_MINIMUM_VERSION
|
domcox@13
|
811 if ! (printf '%s' "$v" | /bin/busybox awk -v r=$r \
|
domcox@2
|
812 '{v=$v+0}{ if (v < r) exit 1}') ; then
|
al@6
|
813 h4 $(gettext "Tazinst Error")
|
al@6
|
814 p $(gettext "<strong>tazinst</strong>, the slitaz-installer \
|
al@6
|
815 backend, is not at the minimum required version. Any installation \
|
al@6
|
816 cannot be done without tazinst.")
|
al@6
|
817 p $(gettext "Reinstall the slitaz-installer package, or use \
|
al@6
|
818 tazinst in CLI mode.")
|
domcox@2
|
819 errorcode=1
|
domcox@2
|
820 fi
|
domcox@2
|
821 # check tazinst maximum version
|
domcox@2
|
822 v=$(/usr/sbin/tazinst version | tr -d '[:alpha:]')
|
domcox@2
|
823 r=$TAZINST_MAXIMUM_VERSION
|
domcox@13
|
824 if ! (printf '%s' "$v" | /bin/busybox awk -v r=$r \
|
domcox@2
|
825 '{v=$v+0}{ if (v > r) exit 1}') ; then
|
al@6
|
826 h4 $(gettext "Tazinst Error")
|
al@6
|
827 p $(gettext "<strong>tazinst</strong>, the slitaz-installer \
|
al@6
|
828 backend, is at a higher version than the maximum authorized \
|
al@6
|
829 by the slitaz-installer. Any installation cannot be done.")
|
al@6
|
830 p $(gettext "Reinstall the slitaz-installer package, or use \
|
al@6
|
831 tazinst in CLI mode.")
|
domcox@2
|
832 errorcode=1
|
domcox@0
|
833 fi
|
domcox@0
|
834 fi
|
domcox@2
|
835 return $errorcode
|
domcox@0
|
836 }
|
domcox@0
|
837
|
domcox@2
|
838
|
domcox@2
|
839 #---------------
|
domcox@2
|
840 # html snippets
|
domcox@2
|
841 #---------------
|
domcox@2
|
842
|
al@50
|
843 br() {
|
domcox@13
|
844 echo '<br />'
|
domcox@0
|
845 }
|
domcox@0
|
846
|
al@50
|
847 hr() {
|
domcox@13
|
848 echo '<hr />'
|
domcox@0
|
849 }
|
domcox@0
|
850
|
al@50
|
851 comment() {
|
domcox@13
|
852 printf '<!-- %s -->\n' "$@"
|
domcox@2
|
853 }
|
domcox@2
|
854
|
al@50
|
855 a() {
|
domcox@13
|
856 local page="$1" text="$2"
|
domcox@13
|
857 printf '<a class="button" value="%s" href="%s?page=%s">%s</a>\n' \
|
domcox@13
|
858 "$page" "$SCRIPT_NAME" "$page" "$text"
|
domcox@13
|
859 }
|
domcox@13
|
860
|
al@50
|
861 button() {
|
domcox@13
|
862 local action="$1" msg="$2" title="$3"
|
domcox@13
|
863 printf '<a class="button" href="%s?page=%s" title="%s">%s</a>\n' \
|
domcox@13
|
864 "$SCRIPT_NAME" "$action" "$title" "$msg"
|
domcox@2
|
865 }
|
domcox@2
|
866
|
al@50
|
867 open_div() {
|
domcox@13
|
868 [ "$1" ] && printf '<div %s>\n' "$1" || echo '<div>'
|
domcox@2
|
869 }
|
domcox@2
|
870
|
al@50
|
871 close_div() {
|
domcox@13
|
872 echo '</div>'
|
domcox@2
|
873 }
|
domcox@2
|
874
|
al@50
|
875 p() {
|
domcox@13
|
876 printf '<p>%s</p>\n' "$@"
|
domcox@2
|
877 }
|
domcox@2
|
878
|
al@50
|
879 h4() {
|
domcox@13
|
880 printf '<h4>%s</h4>\n' "$@"
|
domcox@2
|
881 }
|
domcox@2
|
882
|
al@50
|
883 h5() {
|
domcox@13
|
884 printf '<h5>%s</h5>\n' "$@"
|
domcox@2
|
885 }
|
domcox@2
|
886
|
al@50
|
887 label() {
|
domcox@2
|
888 local setting="$1" label="$2" title="$3" name="$4" error=0
|
domcox@2
|
889 [ -z "$name" ] && name="$setting"
|
domcox@13
|
890 printf '<label for="%s"' "$name"
|
domcox@13
|
891 [ "$title" ] && printf ' title="%s">' "$title" || printf '%s' '>'
|
domcox@2
|
892 # display label in red in case of error
|
domcox@2
|
893 if [ "$CHECK" ]; then
|
domcox@2
|
894 /usr/sbin/tazinst check "$setting" "$INSTFILE"
|
domcox@2
|
895 error="$?"
|
domcox@2
|
896 [ "$error" -gt "0" ] && [ "$error" -lt "127" ] && \
|
domcox@13
|
897 printf '%s' '<span class="alert">'
|
domcox@13
|
898 printf '%s' "$label"
|
domcox@2
|
899 [ "$error" -gt "0" ] && [ "$error" -lt "127" ] && \
|
domcox@13
|
900 printf '%s' "<sup>*</sup></span>"
|
domcox@2
|
901 else
|
domcox@13
|
902 printf '%s' "$label"
|
domcox@2
|
903 fi
|
domcox@13
|
904 echo '</label>'
|
domcox@2
|
905 return "$error"
|
domcox@2
|
906 }
|
domcox@2
|
907
|
al@50
|
908
|
al@50
|
909 label_media() {
|
domcox@2
|
910 local id="$1" label="$2" media="$3" title="$4" retcode=0
|
domcox@2
|
911 if [ "$media" == "$id" ]; then
|
al@6
|
912 label "source" \
|
al@6
|
913 "$label" \
|
al@6
|
914 "$title" \
|
al@6
|
915 "$media"
|
domcox@2
|
916 retcode="$?"
|
domcox@2
|
917 else
|
domcox@13
|
918 printf '<label for="%s"' "$id"
|
domcox@13
|
919 [ "$title" ] && printf ' title="%s">' "$title" || echo '>'
|
domcox@2
|
920 echo "$label</label>"
|
domcox@2
|
921 fi
|
domcox@2
|
922 return "$retcode"
|
domcox@2
|
923 }
|
domcox@2
|
924
|
al@50
|
925
|
al@50
|
926 error_msg() {
|
domcox@2
|
927 local error="$1" setting="$2" line="$3"
|
domcox@2
|
928 if [ "$CHECK" ]; then
|
domcox@2
|
929 if [ "$error" -gt "0" ]; then
|
domcox@13
|
930 [ "$error" -lt "128" ] && printf '%s' '<span class="alert">' \
|
domcox@13
|
931 || printf '%s' '<span class="warning">'
|
domcox@2
|
932 if [ "$line" ]; then
|
domcox@2
|
933 /usr/sbin/tazinst check "$setting" "$INSTFILE" 2>&1 | \
|
domcox@2
|
934 /bin/busybox awk -v LINE="$line" '{if (NR==LINE){print}}'
|
domcox@2
|
935 else
|
domcox@2
|
936 /usr/sbin/tazinst check "$setting" "$INSTFILE" 2>&1
|
domcox@2
|
937 fi
|
domcox@13
|
938 echo '</span>'
|
domcox@2
|
939 fi
|
domcox@2
|
940 fi
|
domcox@2
|
941 }
|
domcox@2
|
942
|
al@50
|
943
|
al@50
|
944 select() {
|
domcox@13
|
945 local list="$1" selected="$2" name="$3" type="$4"
|
domcox@13
|
946 printf '%s' "$list" | \
|
domcox@13
|
947 /bin/busybox awk -v SELECTED="$selected" -v NONE="$(gettext "None")" \
|
domcox@13
|
948 -v NAME="$name" -v TYPE="$type" 'BEGIN{
|
domcox@2
|
949 TYPE=TYPE+0
|
domcox@2
|
950 print "<select name=\"" NAME "\">"
|
domcox@2
|
951 print "<option value=>< " NONE " ></option>"
|
domcox@2
|
952 }
|
domcox@2
|
953 {
|
domcox@2
|
954 printf "<option value=\"" $1 "\""
|
domcox@2
|
955 if ($1 == SELECTED) printf " selected"
|
domcox@2
|
956 if (TYPE == 0)
|
domcox@2
|
957 print ">" $0 "</option>"
|
domcox@2
|
958 if (TYPE == 1)
|
domcox@2
|
959 print ">" substr($0,12) "</option>"
|
domcox@2
|
960 if (TYPE == 2)
|
domcox@2
|
961 print ">" $2 "</option>"
|
domcox@2
|
962 }
|
domcox@2
|
963 END{
|
domcox@2
|
964 print "</select>"
|
domcox@2
|
965 }'
|
domcox@2
|
966 }
|
domcox@2
|
967
|
domcox@2
|
968 input()
|
domcox@2
|
969 {
|
domcox@2
|
970 local type="$1" name="$2" value="$3" selected="$4" help="$5" action="$6"
|
domcox@13
|
971 printf '<input type="%s" id="%s" list="list_%s" ' "$type" "$name" "$name"
|
domcox@13
|
972 printf 'name="%s" class="%s" ' "$(printf $name | tr [a-z] [A-Z])" "$type"
|
domcox@13
|
973 [ "$value" ] && printf 'value="%s" ' "$value"
|
domcox@13
|
974 [ "$value" == "$selected" ] && printf '%s' "checked "
|
domcox@2
|
975 [ "$action" ] && printf \
|
domcox@13
|
976 'onInput="document.getElementById(%s).checked = true;" ' "'$action'"
|
domcox@13
|
977 [ "$help" ] && printf 'placeholder="%s" />\n' "$help" || echo "/>"
|
domcox@2
|
978 }
|
domcox@2
|
979
|
domcox@2
|
980 input_media()
|
domcox@2
|
981 {
|
domcox@2
|
982 local id="$1" media="$2"
|
domcox@13
|
983 printf '<input type="radio" name="MEDIA" value="%s" id="%s" ' "$id" "$id"
|
domcox@13
|
984 [ "$media" == "$id" ] && echo 'checked />' || echo '/>'
|
domcox@2
|
985 }
|
domcox@2
|
986
|
domcox@2
|
987 input_hidden()
|
domcox@2
|
988 {
|
domcox@13
|
989 local name="$1" value="$2"
|
domcox@13
|
990 printf '<input type="hidden" name="%s" value="%s" />\n' "$name" "$value"
|
domcox@2
|
991 }
|
domcox@2
|
992
|
domcox@2
|
993 datalist()
|
domcox@2
|
994 {
|
domcox@13
|
995 local list="$1" name="$2"
|
domcox@13
|
996 printf '<datalist id="list_%s">\n' "$name"
|
domcox@2
|
997 # workaround for browsers that don’t support the datalist element..
|
domcox@13
|
998 local script="displaySelValue(\"select_$name\",\"$name\")"
|
domcox@13
|
999 printf '<select class="workaround" id="select_%s" ' "$name"
|
domcox@13
|
1000 printf "onChange='%s' onBlur='%s'>\n" "$script" "$script"
|
domcox@13
|
1001
|
domcox@2
|
1002 # workaround ..end
|
domcox@13
|
1003 printf '%s' "$list" | \
|
domcox@13
|
1004 /bin/busybox awk -v NONE="$(gettext "None")" 'BEGIN{
|
domcox@2
|
1005 line=0
|
domcox@2
|
1006 }
|
domcox@2
|
1007 {
|
domcox@2
|
1008 TEXT=$1
|
domcox@2
|
1009 sub(".*/","",TEXT)
|
domcox@13
|
1010 printf "<option value=\"%s\">%s</option>\n", $1, TEXT
|
domcox@2
|
1011 line++
|
domcox@2
|
1012 }
|
domcox@2
|
1013 END{
|
domcox@2
|
1014 if (line < 1)
|
domcox@13
|
1015 printf "<option value=>< %s ></option>\n", NONE
|
domcox@2
|
1016 }'
|
domcox@2
|
1017 echo "</select>"
|
domcox@2
|
1018 echo "</datalist>"
|
domcox@2
|
1019 }
|
domcox@2
|
1020
|
domcox@2
|
1021 format()
|
domcox@2
|
1022 {
|
al@6
|
1023 list_fs="$1" selected="$2" name="$3" none="$(gettext 'Do not format')"
|
domcox@13
|
1024 printf '<label for="%s" ' "$name"
|
domcox@13
|
1025 printf 'title="%s">' "$(gettext "To format this partition, select a \
|
domcox@13
|
1026 filesystem, usually it's safe to use ext4")"
|
domcox@13
|
1027 printf '%s</label>\n' "$(gettext "Formatting option:")"
|
domcox@13
|
1028 printf '%s' "$list_fs" | \
|
domcox@13
|
1029 /bin/busybox awk -v SELECTED=$selected -v NONE="$none" -v NAME="$name" '
|
domcox@13
|
1030 BEGIN{
|
domcox@2
|
1031 RS=" "
|
domcox@2
|
1032 print "<select name=\"" NAME "\">"
|
domcox@2
|
1033 print "<option value=\"\">" NONE "</option>"
|
domcox@2
|
1034 line=0
|
domcox@2
|
1035 }
|
domcox@2
|
1036 {
|
domcox@2
|
1037 printf "<option value=\"" $1 "\""
|
domcox@2
|
1038 if ($1 == SELECTED) printf " selected"
|
domcox@2
|
1039 print ">" $0 "</option>"
|
domcox@2
|
1040 line++
|
domcox@2
|
1041 }
|
domcox@2
|
1042 END{
|
domcox@2
|
1043 if (line < 1)
|
domcox@2
|
1044 print "<option value=>< " NONE " ></option>"
|
domcox@2
|
1045 print "</select>"
|
domcox@2
|
1046 }'
|
domcox@2
|
1047 }
|
domcox@2
|
1048
|
domcox@0
|
1049 form_start()
|
domcox@0
|
1050 {
|
domcox@13
|
1051 printf '<form name="%s" method="get" ' "Form"
|
domcox@13
|
1052 printf 'onsubmit="return true" action="%s">\n' "$SCRIPT_NAME"
|
domcox@0
|
1053 }
|
domcox@0
|
1054
|
domcox@0
|
1055 form_end()
|
domcox@0
|
1056 {
|
domcox@13
|
1057 echo '</form>'
|
domcox@0
|
1058 }
|
domcox@0
|
1059
|
domcox@13
|
1060 add_style()
|
domcox@2
|
1061 {
|
domcox@13
|
1062 printf '<!-- add specific styles -->
|
domcox@13
|
1063 <style type="text/css">
|
al@50
|
1064 section label {
|
domcox@13
|
1065 display:inline-block;
|
domcox@13
|
1066 vertical-align:middle;
|
domcox@13
|
1067 width: 130px;
|
domcox@13
|
1068 }
|
domcox@13
|
1069 .media label {
|
domcox@13
|
1070 display:inline-block;
|
domcox@13
|
1071 vertical-align:middle;
|
domcox@13
|
1072 width: 110px;
|
domcox@13
|
1073 }
|
domcox@13
|
1074 .options label {
|
domcox@13
|
1075 display:inline-block;
|
domcox@13
|
1076 vertical-align:middle;
|
domcox@13
|
1077 width: 140px;
|
domcox@13
|
1078 }
|
al@50
|
1079 .text {
|
domcox@13
|
1080 width: 350px;
|
domcox@13
|
1081 }
|
domcox@13
|
1082 input {margin-bottom:3px;}
|
domcox@13
|
1083 span.alert {color: red}
|
domcox@13
|
1084 span.warning { color: darkgray}
|
domcox@13
|
1085 #progress {
|
domcox@13
|
1086 background-color: #f8f8f8;
|
domcox@13
|
1087 border: 1px solid #ddd;
|
domcox@13
|
1088 color: #666;
|
domcox@13
|
1089 cursor: progress;
|
domcox@13
|
1090 position: absolute;
|
domcox@13
|
1091 width: 348px;
|
domcox@13
|
1092 padding: 4px 4px 2px;
|
domcox@13
|
1093 }
|
domcox@13
|
1094 </style>
|
domcox@13
|
1095 <!-- workaround for browsers that do not support the datalist element -->
|
domcox@13
|
1096 <style type="text/css">
|
domcox@13
|
1097 .workaround {width: 110px;}
|
domcox@13
|
1098 </style>
|
domcox@13
|
1099 <script>
|
domcox@13
|
1100 function displaySelValue(selectId,inputId)
|
domcox@13
|
1101 {
|
domcox@13
|
1102 var slct = document.getElementById(selectId);
|
domcox@13
|
1103 var input = document.getElementById(inputId);
|
domcox@13
|
1104 document.getElementById("src_iso").value="";
|
domcox@13
|
1105 document.getElementById("src_web").value="";
|
domcox@13
|
1106 if (inputId =="src_iso"){
|
domcox@13
|
1107 document.getElementById("iso").checked = true;
|
domcox@2
|
1108 }
|
domcox@13
|
1109 if (inputId =="src_web"){
|
domcox@13
|
1110 document.getElementById("web").checked = true;
|
domcox@2
|
1111 }
|
domcox@13
|
1112 input.value = slct.options[slct.selectedIndex].value;
|
domcox@13
|
1113 }
|
domcox@13
|
1114 </script>
|
domcox@13
|
1115 <!-- datalist workaround end -->
|
domcox@13
|
1116 \n'
|
domcox@2
|
1117 }
|
domcox@2
|
1118
|
domcox@2
|
1119
|
domcox@0
|
1120 #
|
domcox@2
|
1121 # main
|
domcox@0
|
1122 #
|
domcox@0
|
1123
|
domcox@2
|
1124 header
|
domcox@2
|
1125
|
domcox@0
|
1126 case "$(GET page)" in
|
domcox@0
|
1127 home)
|
domcox@0
|
1128 xhtml_header
|
domcox@0
|
1129 select_action
|
domcox@0
|
1130 select_install
|
domcox@0
|
1131 select_upgrade
|
domcox@0
|
1132 ;;
|
domcox@2
|
1133 install)
|
domcox@2
|
1134 xhtml_header
|
domcox@2
|
1135 /usr/sbin/tazinst set mode install "$INSTFILE"
|
domcox@2
|
1136 page_redirection partitioning
|
domcox@2
|
1137 ;;
|
domcox@0
|
1138 partitioning)
|
domcox@0
|
1139 xhtml_header
|
domcox@2
|
1140 form_start
|
domcox@2
|
1141 display_mode
|
domcox@0
|
1142 select_gparted
|
domcox@2
|
1143 moveto_page home input
|
domcox@2
|
1144 form_end
|
domcox@0
|
1145 ;;
|
domcox@0
|
1146 gparted)
|
domcox@2
|
1147 exec_gparted
|
domcox@2
|
1148 xhtml_header
|
domcox@0
|
1149 page_redirection partitioning
|
domcox@0
|
1150 ;;
|
domcox@0
|
1151 upgrade)
|
domcox@0
|
1152 xhtml_header
|
domcox@2
|
1153 /usr/sbin/tazinst set mode upgrade "$INSTFILE"
|
domcox@2
|
1154 page_redirection input
|
domcox@2
|
1155 ;;
|
domcox@2
|
1156 input)
|
domcox@2
|
1157 xhtml_header
|
domcox@13
|
1158 add_style
|
domcox@2
|
1159 form_start
|
domcox@2
|
1160 display_mode
|
domcox@2
|
1161 select_settings
|
domcox@13
|
1162 moveto_page home execute
|
domcox@0
|
1163 form_end
|
domcox@0
|
1164 ;;
|
domcox@2
|
1165 execute)
|
domcox@0
|
1166 xhtml_header
|
domcox@2
|
1167 form_start
|
domcox@2
|
1168 display_mode
|
domcox@2
|
1169 save_settings
|
domcox@2
|
1170 if ! (/usr/sbin/tazinst check all $INSTFILE > /dev/null); then
|
domcox@2
|
1171 page_redirection "input&CHECK=yes"
|
domcox@0
|
1172 else
|
domcox@29
|
1173 tazinst_run && moveto_page home reboot \
|
domcox@29
|
1174 || moveto_page input failed
|
domcox@0
|
1175 fi
|
domcox@2
|
1176 form_end
|
domcox@0
|
1177 ;;
|
domcox@0
|
1178 reboot)
|
domcox@2
|
1179 /usr/sbin/tazinst clean "$INSTFILE"
|
domcox@0
|
1180 reboot ;;
|
domcox@0
|
1181 failed)
|
domcox@0
|
1182 xhtml_header
|
domcox@2
|
1183 form_start
|
domcox@2
|
1184 tazinst_log
|
domcox@2
|
1185 moveto_home
|
domcox@2
|
1186 form_end
|
domcox@0
|
1187 ;;
|
domcox@0
|
1188 *)
|
domcox@0
|
1189 xhtml_header
|
domcox@0
|
1190 if check_ressources; then
|
domcox@2
|
1191 /usr/sbin/tazinst new "$INSTFILE"
|
domcox@0
|
1192 page_redirection home
|
domcox@0
|
1193 fi
|
domcox@0
|
1194 ;;
|
domcox@0
|
1195 esac
|
domcox@0
|
1196
|
domcox@0
|
1197 xhtml_footer
|
domcox@0
|
1198
|
domcox@0
|
1199 exit 0
|