Project

General

Profile

Download (22.9 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2
/* $Id$ */
3
/*
4
    wizard.php
5
    Copyright (C) 2004 Scott Ullrich
6
    All rights reserved.
7

    
8
    Redistribution and use in source and binary forms, with or without
9
    modification, are permitted provided that the following conditions are met:
10

    
11
    1. Redistributions of source code must retain the above copyright notice,
12
       this list of conditions and the following disclaimer.
13

    
14
    2. Redistributions in binary form must reproduce the above copyright
15
       notice, this list of conditions and the following disclaimer in the
16
       documentation and/or other materials provided with the distribution.
17

    
18
    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
19
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21
    AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
22
    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
    POSSIBILITY OF SUCH DAMAGE.
28
*/
29

    
30
##|+PRIV
31
##|*IDENT=page-pfsensewizardsubsystem
32
##|*NAME=pfSense wizard subsystem page
33
##|*DESCR=Allow access to the 'pfSense wizard subsystem' page.
34
##|*MATCH=wizard.php*
35
##|-PRIV
36

    
37

    
38
require("guiconfig.inc");
39

    
40
function gentitle_pkg($pgname) {
41
	global $config;
42
	return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pgname;
43
}
44

    
45
$stepid = htmlspecialchars($_GET['stepid']);
46
if (isset($_POST['stepid']))
47
    $stepid = htmlspecialchars($_POST['stepid']);
48
if (!$stepid) $stepid = "0";
49

    
50
$xml = htmlspecialchars($_GET['xml']);
51
if($_POST['xml']) $xml = htmlspecialchars($_POST['xml']);
52

    
53
if($xml == "") {
54
	$xml = "not_defined";
55
	print_info_box_np("ERROR:  Could not open " . $xml . ".");
56
	die;
57
} else {
58
	if (file_exists("{$g['www_path']}/wizards/{$xml}"))
59
		$pkg = parse_xml_config_pkg("{$g['www_path']}/wizards/" . $xml, "pfsensewizard");
60
	else {
61
		print_info_box_np("ERROR:  Could not open " . $xml . ".");
62
		die;
63
	}
64
}
65

    
66
$title          = $pkg['step'][$stepid]['title'];
67
$description    = $pkg['step'][$stepid]['description'];
68
$totalsteps     = $pkg['totalsteps'];
69

    
70
exec('/usr/bin/tar -tzf /usr/share/zoneinfo.tgz', $timezonelist);
71
$timezonelist = array_filter($timezonelist, 'is_timezone');
72
sort($timezonelist);
73

    
74
/* kill carriage returns */
75
for($x=0; $x<count($timezonelist); $x++)
76
		$timezonelist[$x] = str_replace("\n", "", $timezonelist[$x]);
77

    
78
if ($pkg['step'][$stepid]['includefile'])
79
	require($pkg['step'][$stepid]['includefile']);
80

    
81
if($pkg['step'][$stepid]['stepsubmitbeforesave']) {
82
		eval($pkg['step'][$stepid]['stepsubmitbeforesave']);
83
}
84

    
85
if ($_POST) {
86
    foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
87
        if($field['bindstofield'] <> "" and $field['type'] <> "submit") {
88
		$fieldname = $field['name'];
89
		$unset_fields = "";
90
		$fieldname = ereg_replace(" ", "", $fieldname);
91
		$fieldname = strtolower($fieldname);
92
		// update field with posted values.
93
                if($field['unsetfield'] <> "") $unset_fields = "yes";
94
		if($field['arraynum'] <> "") $arraynum = $field['arraynum'];
95
		if($field['bindstofield'])
96
			update_config_field( $field['bindstofield'], $_POST[$fieldname], $unset_fields, $arraynum, $field['type']);
97
        }
98

    
99
    }
100
    // run custom php code embedded in xml config.
101
    if($pkg['step'][$stepid]['stepsubmitphpaction'] <> "") {
102
		eval($pkg['step'][$stepid]['stepsubmitphpaction']);
103
    }
104
	write_config();
105
    $stepid++;
106
    if($stepid > $totalsteps) $stepid = $totalsteps;
107
}
108

    
109
$title          = $pkg['step'][$stepid]['title'];
110
$description    = $pkg['step'][$stepid]['description'];
111

    
112
function update_config_field($field, $updatetext, $unset, $arraynum, $field_type) {
113
	global $config;
114
	$field_split = split("->",$field);
115
	foreach ($field_split as $f) $field_conv .= "['" . $f . "']";
116
	if($field_conv == "") return;
117
	if($field_type == "checkbox" and $updatetext <> "on") {
118
		/*
119
		    item is a checkbox, it should have the value "on"
120
		    if it was checked
121
                */
122
		$text = "unset(\$config" . $field_conv . ");";
123
		eval($text);
124
		return;
125
	}
126

    
127
	if($field_type == "interfaces_selection") {
128
		$text = "unset(\$config" . $field_conv . ");";
129
		eval($text);
130
		$text = "\$config" . $field_conv . " = \"" . $updatetext . "\";";
131
		eval($text);
132
		return;
133
	}
134

    
135
	if($unset <> "") {
136
		$text = "unset(\$config" . $field_conv . ");";
137
		eval($text);
138
		$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
139
		eval($text);
140
	} else {
141
		if($arraynum <> "") {
142
			$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
143
		} else {
144
			$text = "\$config" . $field_conv . " = \"" . $updatetext . "\";";
145
		}
146
		eval($text);
147
	}
148
}
149

    
150
if($pkg['step'][$stepid]['stepbeforeformdisplay'] <> "") {
151
	// handle before form display event.
152
        // good for modifying posted values, etc.
153
	eval($pkg['step'][$stepid]['stepbeforeformdisplay']);
154
}
155

    
156
$pgtitle = array($title);
157
include("head.inc");
158

    
159
?>
160
<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onLoad="enablechange();">
161

    
162
<?php
163
	if(file_exists("/usr/local/www/themes/{$g['theme']}/wizard.css")) 
164
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/wizard.css\" media=\"all\" />\n";
165
	else 
166
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/all.css\" media=\"all\" />";
167
?>
168

    
169
<?php if($pkg['step'][$stepid]['fields']['field'] <> "") { ?>
170
<script language="JavaScript">
171
<!--
172

    
173
function  FieldValidate(userinput,  regexp,  message)
174
{
175
                if(!userinput.match(regexp))
176
                                alert(message);
177
}
178

    
179
function enablechange() {
180
<?php
181
        foreach($pkg['step'][$stepid]['fields']['field'] as $field) {
182
                if(isset($field['enablefields']) or isset($field['checkenablefields'])) {
183
                        print "\t" . 'if (document.iform.' . strtolower($field['name']) . '.checked == false) {' . "\n";
184
                        if(isset($field['enablefields'])) {
185
                                $enablefields = explode(',', $field['enablefields']);
186
                                foreach($enablefields as $enablefield) {
187
                                        $enablefield = strtolower($enablefield);
188
                                        print "\t\t" . 'document.iform.' . $enablefield . '.disabled = 1;' . "\n";
189
                                }
190
                        }
191
                        if(isset($field['checkenablefields'])) {
192
                                $checkenablefields = explode(',', $field['checkenablefields']);
193
                                foreach($checkenablefields as $checkenablefield) {
194
                                        $checkenablefield = strtolower($checkenablefield);
195
                                        print "\t\t" . 'document.iform.' . $checkenablefield . '.checked = 0;' . "\n";
196
                                }
197
                        }
198
                        print "\t" . '} else {' . "\n";
199
                        if(isset($field['enablefields'])) {
200
                                foreach($enablefields as $enablefield) {
201
                                        $enablefield = strtolower($enablefield);
202
                                        print "\t\t" . 'document.iform.' . $enablefield . '.disabled = 0;' . "\n";
203
                                }
204
                        }
205
                        if(isset($field['checkenablefields'])) {
206
                                foreach($checkenablefields as $checkenablefield) {
207
                                        $checkenablefield = strtolower($checkenablefield);
208
                                        print "\t\t" . 'document.iform.' . $checkenablefield . '.checked = 1;' . "\n";
209
                                }
210
                        }
211
                        print "\t" . '}' . "\n";
212
                }
213
        }
214
?>
215
}
216
//-->
217
</script>
218
<?php } ?>
219

    
220
<form action="wizard.php" method="post" name="iform" id="iform">
221
<input type="hidden" name="xml" value="<?= $xml ?>">
222
<input type="hidden" name="stepid" value="<?= $stepid ?>">
223
<?php if ($savemsg) print_info_box($savemsg); ?>
224

    
225
<center>
226

    
227
&nbsp;<br>
228

    
229
<?php
230
	if($title == "Reload in progress") {
231
		$ip = "http://" . get_interface_ip("lan");
232
	} else {
233
		$ip = "/";
234
	}
235
	echo "<a href='$ip'>";
236
?>
237
<img border="0" src="./themes/<?= $g['theme']; ?>/images/logo.gif"></a>
238
<p>
239
<div style="width:700px;background-color:#ffffff" id="roundme">
240
<table bgcolor="#ffffff" width="600" cellspacing="0" cellpadding="3">
241
    <!-- wizard goes here -->
242
    <tr><td>&nbsp;</td></tr>
243
    <tr><td colspan='2'>
244
<?php
245
	if ($_GET['message'] != "")
246
		print_info_box(htmlspecialchars($_GET['message']));
247
	if ($_POST['message'] != "")
248
		print_info_box(htmlspecialchars($_POST['message']));
249
?></td></tr>
250
    <tr><td colspan='2'><center><b><?= fixup_string($description) ?></b></center></td></tr><tr><td>&nbsp;</td></tr>
251
    <?php
252
	if(!$pkg['step'][$stepid]['disableheader'])
253
		echo "<tr><td colspan=\"2\" class=\"listtopic\">" . fixup_string($title) . "</td></tr>";
254
    ?>
255

    
256
    <?php
257
	if($pkg['step'][$stepid]['fields']['field'] <> "") {
258
		foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
259

    
260
		    $value = $field['value'];
261
		    $name  = $field['name'];
262

    
263
		    $name = ereg_replace(" ", "", $name);
264
		    $name = strtolower($name);
265

    
266
		    if($field['bindstofield'] <> "") {
267
				$arraynum = "";
268
				$field_conv = "";
269
				$field_split = split("->", $field['bindstofield']);
270
				// arraynum is used in cases where there is an array of the same field
271
				// name such as dnsserver (2 of them)
272
				if($field['arraynum'] <> "") $arraynum = "[" . $field['arraynum'] . "]";
273
				foreach ($field_split as $f) $field_conv .= "['" . $f . "']";
274
					$toeval = "\$value = \$config" . $field_conv . $arraynum . ";";
275
					eval($toeval);
276
					if ($field['type'] == "checkbox") {
277
						$toeval = "if(isset(\$config" . $field_conv . $arraynum . ")) \$value = \" CHECKED\";";
278
						eval($toeval);
279
					}
280
		    }
281

    
282
		    if(!$field['combinefieldsend'])
283
			echo "<tr>";
284

    
285
		    if ($field['type'] == "input") {
286
			if ($field['displayname']) {
287
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
288
                                echo $field['displayname'];
289
                                echo ":</td>\n";
290
			} else if(!$field['dontdisplayname']) {
291
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
292
				echo fixup_string($field['name']);
293
				echo ":</td>\n";
294
			}
295
			if(!$field['dontcombinecells'])
296
				echo "<td class=\"vtable\">\n";
297

    
298
			echo "<input id='" . $name . "' name='" . $name . "' value='" . $value . "'";
299
			if($field['validate'])
300
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
301
			echo ">\n";
302

    
303

    
304

    
305
		    } else if ($field['type'] == "inputalias") {
306
			if ($field['displayname']) {
307
                                echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
308
                                echo $field['displayname'];
309
                                echo ":</td>\n";
310
			} else if(!$field['dontdisplayname']) {
311
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
312
				echo fixup_string($field['name']);
313
				echo ":</td>\n";
314
			}
315
			if(!$field['dontcombinecells'])
316
				echo "<td class=\"vtable\">\n";
317

    
318
			echo "<input  autocomplete='off' class='formfldalias' id='" . $name . "' name='" . $name . "' value='" . $value . "'";
319
			if($field['validate'])
320
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
321
			echo ">\n";
322

    
323

    
324

    
325
		    } else if($field['type'] == "interfaces_selection") {
326
			$size = "";
327
			$multiple = "";
328
			$name = strtolower($name);
329
			echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
330
			echo fixup_string($field['displayname'] ? $field['displayname'] : $field['name']) . ":\n";
331
			echo "</td>";
332
			echo "<td class=\"vtable\">\n";
333
			if($field['size'] <> "") $size = "size=\"{$field['size']}\"";
334
			if($field['multiple'] <> "" and $field['multiple'] <> "0") {
335
			  $multiple = "multiple=\"multiple\"";
336
			  $name .= "[]";
337
			}
338
			echo "<select id='{$name}' name='{$name}' {$size} {$multiple}>\n";
339
			if($field['add_to_interfaces_selection'] <> "") {
340
				$SELECTED = "";
341
				if($field['add_to_interfaces_selection'] == $value) $SELECTED = " SELECTED";
342
				echo "<option value='" . $field['add_to_interfaces_selection'] . "'" . $SELECTED . ">" . $field['add_to_interfaces_selection'] . "</option>\n";
343
			}
344
			$interfaces = $config['interfaces'];
345
			if($field['all_interfaces'] <> "") {
346
				$ints = split(" ", `/sbin/ifconfig -l`);
347
				$interfaces = array();
348
				foreach ($ints as $int) {
349
					$interfaces[]['descr'] = $int;
350
					$interfaces[] = $int;
351
				}
352
			}
353
			foreach ($interfaces as $ifname => $iface) {
354
			  if ($iface['descr'])
355
				  $ifdescr = $iface['descr'];
356
			  else
357
				  $ifdescr = strtoupper($ifname);
358
			  $ip = "";
359
			  if($field['all_interfaces'] <> "") {
360
				$ifdescr = $iface;
361
				$ip = " " . find_interface_ip($iface);
362
			  }
363
			  $SELECTED = "";
364
			  if ($value == $ifname) $SELECTED = " SELECTED";
365
			  $to_echo = "<option value='" . $ifname . "'" . $SELECTED . ">" . $ifdescr . $ip . "</option>\n";
366
			  $to_echo .= "<!-- {$value} -->";
367
			  $canecho = 0;
368
			  if($field['interface_filter'] <> "") {
369
				if(stristr($iface, $field['interface_filter']) == true)
370
					$canecho = 1;
371
			  } else {
372
				$canecho = 1;
373
			  }
374
			  if($canecho == 1)
375
				echo $to_echo;
376
			}
377
				echo "</select>\n";
378
			} else if ($field['type'] == "password") {
379
			if(!$field['dontdisplayname']) {
380
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
381
				echo fixup_string($field['name']);
382
				echo ":</td>\n";
383
			}
384
			if(!$field['dontcombinecells'])
385
				echo "<td class=\"vtable\">";
386
			echo "<input id='" . $name . "' name='" . $name . "' value='" . $value . "' type='password'>\n";
387
		    } else if ($field['type'] == "select") {
388
			if ($field['displayname']) {
389
                                echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
390
                                echo $field['displayname'];
391
                                echo ":</td>\n";
392
			} else if(!$field['dontdisplayname']) {
393
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
394
				echo fixup_string($field['name']);
395
				echo ":</td>\n";
396
			}
397
			if($field['size']) $size = " size='" . $field['size'] . "' ";
398
			if($field['multiple'] == "yes") $multiple = "MULTIPLE ";
399
			if(!$field['dontcombinecells'])
400
				echo "<td class=\"vtable\">\n";
401
			$onchange = "";
402
			foreach ($field['options']['option'] as $opt) {
403
				if($opt['enablefields'] <> "") {
404
					$onchange = "onchange=\"enableitems(this.selectedIndex);\" ";
405
				}
406
			}
407
			echo "<select " . $onchange . $multiple . $size . "id='" . $name . "' name='" . $name . "'>\n";
408
			foreach ($field['options']['option'] as $opt) {
409
				$selected = "";
410
				if($value == $opt['value']) $selected = " SELECTED";
411
			    echo "\t<option name='" . $opt['name'] . "' value='" . $opt['value'] . "'" . $selected . ">";
412
				if ($opt['displayname'])
413
					echo $opt['displayname'];
414
				else
415
					echo $opt['name'];
416
				echo "</option>\n";
417
			}
418
			echo "</select>\n";
419
		    } else if ($field['type'] == "textarea") {
420
			if ($field['displayname']) {
421
                                echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
422
                                echo $field['displayname'];
423
                                echo ":</td>\n";
424
			} else if(!$field['dontdisplayname']) {
425
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
426
				echo fixup_string($field['name']);
427
				echo ":</td>";
428
			}
429
			if(!$field['dontcombinecells'])
430
				echo "<td class=\"vtable\">";
431
			echo "<textarea id='" . $name . "' name='" . $name . ">" . $value . "</textarea>\n";
432
		    } else if ($field['type'] == "submit") {
433
			echo "<td>&nbsp;<br></td></tr>";
434
			echo "<tr><td colspan='2'><center>";
435
			echo "<input type='submit' name='" . $name . "' value='" . $field['name'] . "'>\n";
436
		    } else if ($field['type'] == "listtopic") {
437
			echo "<td>&nbsp;</td><tr>";
438
			echo "<tr><td colspan=\"2\" class=\"listtopic\">" . $field['name'] . "<br></td>\n";
439
		    } else if ($field['type'] == "subnet_select") {
440
			if ($field['displayname']) {
441
                                echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
442
                                echo $field['displayname'];
443
                                echo ":</td>\n";
444
			} else if(!$field['dontdisplayname']) {
445
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
446
				echo fixup_string($field['name']);
447
				echo ":</td>";
448
			}
449
			if(!$field['dontcombinecells'])
450
				echo "<td class=\"vtable\">";
451
			echo "<select name='{$name}'>\n";
452
			for($x=1; $x<33; $x++) {
453
				$CHECKED = "";
454
				if($value == $x) $CHECKED = " SELECTED";
455
				if($x <> 31)
456
					echo "<option value='{$x}' {$CHECKED}>{$x}</option>\n";
457
			}
458
			echo "</select>\n";
459
		    } else if ($field['type'] == "timezone_select") {
460
			if ($field['displayname']) {
461
                                echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
462
                                echo $field['displayname'];
463
                                echo ":</td>\n";
464
			} else if(!$field['dontdisplayname']) {
465
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
466
				echo fixup_string($field['name']);
467
				echo ":</td>";
468
			}
469
			if(!$field['dontcombinecells'])
470
				echo "<td class=\"vtable\">";
471
			echo "<select name='{$name}'>\n";
472
			foreach ($timezonelist as $tz) {
473
				$SELECTED = "";
474
				if ($value == $tz) $SELECTED = " SELECTED";
475
				echo "<option value='" . htmlspecialchars($tz) . "' {$SELECTED}>";
476
				echo htmlspecialchars($tz);
477
				echo "</option>\n";
478
			}
479
			echo "</select>\n";
480
		    } else if ($field['type'] == "checkbox") {
481
			if ($field['displayname']) {
482
                                echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
483
                                echo $field['displayname'];
484
                                echo ":</td>\n";
485
			} else if(!$field['dontdisplayname']) {
486
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
487
				echo $field['name'];
488
				echo ":</td>";
489
			}
490
			$checked = "";
491
			if($value <> "") $checked = " CHECKED";
492
			echo "<td class=\"vtable\"><input type='checkbox' id='" . $name . "' name='" . $name . "' " . $checked;
493
			if(isset($field['enablefields']) or isset($field['checkenablefields'])) echo " onClick=\"enablechange()\"";
494
			echo ">\n";
495
		    }
496

    
497
		    if($field['typehint'] <> "") {
498
			echo $field['typehint'];
499
		    }
500

    
501
		    if($field['description'] <> "") {
502
			echo "<br>" . $field['description'];
503
			echo "</td>";
504
		    }
505

    
506
		    if(!$field['combinefieldsbegin'])
507
			 echo "</tr>\n";
508

    
509
		    if($field['warning'] <> "") {
510
			echo "<br><b><font color=\"red\">" . $field['warning'] . "</font></b>";
511
		    }
512

    
513
		}
514
	}
515
    ?>
516
</table>
517
<br>&nbsp;
518
</div>
519
</form>
520
<script language="JavaScript">
521
<!--
522
	if (typeof ext_change != 'undefined') {
523
		ext_change();
524
	}
525
	if (typeof proto_change != 'undefined') {
526
		ext_change();
527
	}
528
	if (typeof proto_change != 'undefined') {
529
		proto_change();
530
	}
531

    
532
<?php
533
	$isfirst = 0;
534
	$aliases = "";
535
	$addrisfirst = 0;
536
	$aliasesaddr = "";
537
	if($config['aliases']['alias'] <> "" and is_array($config['aliases']['alias']))
538
		foreach($config['aliases']['alias'] as $alias_name) {
539
			if(!stristr($alias_name['address'], ".")) {
540
				if($isfirst == 1) $aliases .= ",";
541
				$aliases .= "'" . $alias_name['name'] . "'";
542
				$isfirst = 1;
543
			} else {
544
				if($addrisfirst == 1) $aliasesaddr .= ",";
545
				$aliasesaddr .= "'" . $alias_name['name'] . "'";
546
				$addrisfirst = 1;
547
			}
548
		}
549
?>
550

    
551
	var addressarray=new Array(<?php echo $aliasesaddr; ?>);
552
	var customarray=new Array(<?php echo $aliases; ?>);
553

    
554
//-->
555
</script>
556
<script type="text/javascript">
557
NiftyCheck();
558
var bgcolor = document.getElementsByTagName("body")[0].style.backgroundColor;
559
Rounded("div#roundme","all",bgcolor,"#FFFFFF","smooth");
560
</script>
561

    
562
<?php
563

    
564
$fieldnames_array = Array();
565
if($pkg['step'][$stepid]['disableallfieldsbydefault'] <> "") {
566
	// create a fieldname loop that can be used with javascript
567
	// hide and enable features.
568
	echo "\n<script language=\"JavaScript\">\n";
569
	echo "function disableall() {\n";
570
	foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
571
		if($field['type'] <> "submit" and $field['type'] <> "listtopic") {
572
			if(!$field['donotdisable'] <> "") {
573
				array_push($fieldnames_array, $field['name']);
574
				$fieldname = ereg_replace(" ", "", $field['name']);
575
				$fieldname = strtolower($fieldname);
576
				echo "\tdocument.forms[0]." . $fieldname . ".disabled = 1;\n";
577
			}
578
		}
579
	}
580
	echo "}\ndisableall();\n";
581
	echo "function enableitems(selectedindex) {\n";
582
	echo "disableall();\n";
583
	$idcounter = 0;
584
	if($pkg['step'][$stepid]['fields']['field'] <> "") {
585
		echo "\tswitch(selectedindex) {\n";
586
		foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
587
			if($field['options']['option'] <> "") {
588
				foreach ($field['options']['option'] as $opt) {
589
					if($opt['enablefields'] <> "") {
590
						echo "\t\tcase " . $idcounter . ":\n";
591
						$enablefields_split = split(",", $opt['enablefields']);
592
						foreach ($enablefields_split as $efs) {
593
							$fieldname = ereg_replace(" ", "", $efs);
594
							$fieldname = strtolower($fieldname);
595
							if($fieldname <> "") {
596
								$onchange = "\t\t\tdocument.forms[0]." . $fieldname . ".disabled = 0; \n";
597
								echo $onchange;
598
							}
599
						}
600
						echo "\t\t\tbreak;\n";
601
					}
602
					$idcounter = $idcounter + 1;
603
				}
604
			}
605
		}
606
		echo "\t}\n";
607
	}
608
	echo "}\n";
609
	echo "disableall();\n";
610
	echo "</script>\n\n";
611
}
612

    
613

    
614
if($pkg['step'][$stepid]['stepafterformdisplay'] <> "") {
615
	// handle after form display event.
616
	eval($pkg['step'][$stepid]['stepafterformdisplay']);
617
}
618

    
619
if($pkg['step'][$stepid]['javascriptafterformdisplay'] <> "") {
620
	// handle after form display event.
621
        echo "\n<script language=\"JavaScript\">\n";
622
	echo $pkg['step'][$stepid]['javascriptafterformdisplay'] . "\n";
623
	echo "</script>\n\n";
624
}
625

    
626
/*
627
 *  HELPER FUNCTIONS
628
 */
629

    
630
function fixup_string($string) {
631
	global $config, $myurl;
632
	$newstring = $string;
633
	// fixup #1: $myurl -> http[s]://ip_address:port/
634
	switch($config['system']['webguiproto']) {
635
		case "http":
636
			$proto = "http";
637
			break;
638
		case "https":
639
			$proto = "https";
640
			break;
641
		default:
642
			$proto = "http";
643
			break;
644
	}
645
	$port = $config['system']['webguiport'];
646
	if($port != "") {
647
		if(($port == "443" and $proto != "https") or ($port == "80" and $proto != "http")) {
648
			$urlport = ":" . $port;
649
		} elseif ($port != "80" and $port != "443") {
650
			$urlport = ":" . $port;
651
		} else {
652
			$urlport = "";
653
		}
654
	}
655
	$myurl = $proto . "://" . get_interface_ip("lan") . $urlport . "/";
656
	$newstring = str_replace("\$myurl", $myurl, $newstring);
657
	// fixup #2: $wanip
658
	$curwanip = get_interface_ip();
659
	$newstring = str_replace("\$wanip", $curwanip, $newstring);
660
	// fixup #3: $lanip
661
	$lanip = get_interface_ip("lan");
662
	$newstring = str_replace("\$lanip", $lanip, $newstring);
663
	// fixup #4: fix'r'up here.
664
	return $newstring;
665
}
666

    
667
function is_timezone($elt) {
668
	return !preg_match("/\/$/", $elt);
669
}
670

    
671
?>
672

    
673
</body>
674
</html>
675

    
(217-217/218)