Project

General

Profile

Download (23 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
require("functions.inc");
40
require("filter.inc");
41
require("shaper.inc");
42
require("rrd.inc");
43

    
44
function gentitle_pkg($pgname) {
45
	global $config;
46
	return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pgname;
47
}
48

    
49
$stepid = htmlspecialchars($_GET['stepid']);
50
if (isset($_POST['stepid']))
51
    $stepid = htmlspecialchars($_POST['stepid']);
52
if (!$stepid) $stepid = "0";
53

    
54
$xml = htmlspecialchars($_GET['xml']);
55
if($_POST['xml']) $xml = htmlspecialchars($_POST['xml']);
56

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

    
70
$title          = $pkg['step'][$stepid]['title'];
71
$description    = $pkg['step'][$stepid]['description'];
72
$totalsteps     = $pkg['totalsteps'];
73

    
74
exec('/usr/bin/tar -tzf /usr/share/zoneinfo.tgz', $timezonelist);
75
$timezonelist = array_filter($timezonelist, 'is_timezone');
76
sort($timezonelist);
77

    
78
/* kill carriage returns */
79
for($x=0; $x<count($timezonelist); $x++)
80
		$timezonelist[$x] = str_replace("\n", "", $timezonelist[$x]);
81

    
82
if ($pkg['step'][$stepid]['includefile'])
83
	require($pkg['step'][$stepid]['includefile']);
84

    
85
if($pkg['step'][$stepid]['stepsubmitbeforesave']) {
86
		eval($pkg['step'][$stepid]['stepsubmitbeforesave']);
87
}
88

    
89
if ($_POST) {
90
    foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
91
        if(!empty($field['bindstofield']) and $field['type'] <> "submit") {
92
		$fieldname = $field['name'];
93
		$fieldname = ereg_replace(" ", "", $fieldname);
94
		$fieldname = strtolower($fieldname);
95
		// update field with posted values.
96
                if($field['unsetfield'] <> "")
97
			$unset_fields = "yes";
98
		else
99
			$unset_fields = "";
100
		if($field['arraynum'] <> "")
101
			$arraynum = $field['arraynum'];
102
		else
103
			$arraynum = "";
104
		if(!empty($field['bindstofield']))
105
			update_config_field( $field['bindstofield'], $_POST[$fieldname], $unset_fields, $arraynum, $field['type']);
106
        }
107

    
108
    }
109
    // run custom php code embedded in xml config.
110
    if($pkg['step'][$stepid]['stepsubmitphpaction'] <> "") {
111
		eval($pkg['step'][$stepid]['stepsubmitphpaction']);
112
    }
113
	write_config();
114
    $stepid++;
115
    if($stepid > $totalsteps) $stepid = $totalsteps;
116
}
117

    
118
$title          = $pkg['step'][$stepid]['title'];
119
$description    = $pkg['step'][$stepid]['description'];
120

    
121
function update_config_field($field, $updatetext, $unset, $arraynum, $field_type) {
122
	global $config;
123
	$field_split = split("->",$field);
124
	foreach ($field_split as $f) $field_conv .= "['" . $f . "']";
125
	if($field_conv == "") return;
126
	if($field_type == "checkbox" and $updatetext <> "on") {
127
		/*
128
		    item is a checkbox, it should have the value "on"
129
		    if it was checked
130
                */
131
		$text = "unset(\$config" . $field_conv . ");";
132
		eval($text);
133
		return;
134
	}
135

    
136
	if($field_type == "interfaces_selection") {
137
		$text = "unset(\$config" . $field_conv . ");";
138
		eval($text);
139
		$text = "\$config" . $field_conv . " = \"" . $updatetext . "\";";
140
		eval($text);
141
		return;
142
	}
143

    
144
	if($unset <> "") {
145
		$text = "unset(\$config" . $field_conv . ");";
146
		eval($text);
147
		$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
148
		eval($text);
149
	} else {
150
		if($arraynum <> "") {
151
			$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
152
		} else {
153
			$text = "\$config" . $field_conv . " = \"" . $updatetext . "\";";
154
		}
155
		eval($text);
156
	}
157
}
158

    
159
if($pkg['step'][$stepid]['stepbeforeformdisplay'] <> "") {
160
	// handle before form display event.
161
        // good for modifying posted values, etc.
162
	eval($pkg['step'][$stepid]['stepbeforeformdisplay']);
163
}
164

    
165
$pgtitle = array($title);
166
include("head.inc");
167

    
168
?>
169
<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onLoad="enablechange();">
170

    
171
<?php
172
	if(file_exists("/usr/local/www/themes/{$g['theme']}/wizard.css")) 
173
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/wizard.css\" media=\"all\" />\n";
174
	else 
175
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/all.css\" media=\"all\" />";
176
?>
177

    
178
<?php if($pkg['step'][$stepid]['fields']['field'] <> "") { ?>
179
<script type="text/javascript">
180
<!--
181

    
182
function  FieldValidate(userinput,  regexp,  message)
183
{
184
                if(!userinput.match(regexp))
185
                                alert(message);
186
}
187

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

    
229
<form action="wizard.php" method="post" name="iform" id="iform">
230
<input type="hidden" name="xml" value="<?= $xml ?>">
231
<input type="hidden" name="stepid" value="<?= $stepid ?>">
232
<?php if ($savemsg) print_info_box($savemsg); ?>
233

    
234
<center>
235

    
236
&nbsp;<br>
237

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

    
265
    <?php
266
	$inputaliases = array();
267
	if($pkg['step'][$stepid]['fields']['field'] <> "") {
268
		foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
269

    
270
		    $value = $field['value'];
271
		    $name  = $field['name'];
272

    
273
		    $name = ereg_replace(" ", "", $name);
274
		    $name = strtolower($name);
275

    
276
		    if($field['bindstofield'] <> "") {
277
				$arraynum = "";
278
				$field_conv = "";
279
				$field_split = split("->", $field['bindstofield']);
280
				// arraynum is used in cases where there is an array of the same field
281
				// name such as dnsserver (2 of them)
282
				if($field['arraynum'] <> "") $arraynum = "[" . $field['arraynum'] . "]";
283
				foreach ($field_split as $f) $field_conv .= "['" . $f . "']";
284
					$toeval = "\$value = \$config" . $field_conv . $arraynum . ";";
285
					eval($toeval);
286
					if ($field['type'] == "checkbox") {
287
						$toeval = "if(isset(\$config" . $field_conv . $arraynum . ")) \$value = \" CHECKED\";";
288
						eval($toeval);
289
					}
290
		    }
291

    
292
		    if(!$field['combinefieldsend'])
293
			echo "<tr>";
294

    
295
		    if ($field['type'] == "input") {
296
			if ($field['displayname']) {
297
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
298
                                echo $field['displayname'];
299
                                echo ":</td>\n";
300
			} else if(!$field['dontdisplayname']) {
301
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
302
				echo fixup_string($field['name']);
303
				echo ":</td>\n";
304
			}
305
			if(!$field['dontcombinecells'])
306
				echo "<td class=\"vtable\">\n";
307

    
308
			echo "<input id='" . $name . "' name='" . $name . "' value='" . $value . "'";
309
			if($field['validate'])
310
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
311
			echo ">\n";
312

    
313

    
314

    
315
		    } else if ($field['type'] == "inputalias") {
316
			if ($field['displayname']) {
317
                                echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
318
                                echo $field['displayname'];
319
                                echo ":</td>\n";
320
			} else if(!$field['dontdisplayname']) {
321
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
322
				echo fixup_string($field['name']);
323
				echo ":</td>\n";
324
				$inputaliases[] = $name;
325
			}
326
			if(!$field['dontcombinecells'])
327
				echo "<td class=\"vtable\">\n";
328

    
329
			echo "<input  autocomplete='off' class='formfldalias' id='" . $name . "' name='" . $name . "' value='" . $value . "'";
330
			if($field['validate'])
331
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
332
			echo ">\n";
333

    
334

    
335

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

    
491
		    if($field['typehint'] <> "") {
492
			echo $field['typehint'];
493
		    }
494

    
495
		    if($field['description'] <> "") {
496
			echo "<br>" . $field['description'];
497
			echo "</td>";
498
		    }
499

    
500
		    if(!$field['combinefieldsbegin'])
501
			 echo "</tr>\n";
502

    
503
		    if($field['warning'] <> "") {
504
			echo "<br><b><font color=\"red\">" . $field['warning'] . "</font></b>";
505
		    }
506

    
507
		}
508
	}
509
    ?>
510
</table>
511
<br>&nbsp;
512
</div>
513
</form>
514
<script type="text/javascript">
515
<!--
516
	if (typeof ext_change != 'undefined') {
517
		ext_change();
518
	}
519
	if (typeof proto_change != 'undefined') {
520
		ext_change();
521
	}
522
	if (typeof proto_change != 'undefined') {
523
		proto_change();
524
	}
525

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

    
545
	var addressarray=new Array(<?php echo $aliasesaddr; ?>);
546
	var customarray=new Array(<?php echo $aliases; ?>);
547

    
548
	window.onload = function () {
549

    
550
		<?php
551
			$counter=0;
552
			foreach($inputaliases as $alias) {
553
				echo "var oTextbox$counter = new AutoSuggestControl(document.getElementById(\"$alias\"), new StateSuggestions(addressarray));\n";
554
				$counter++;
555
			}
556
		?>
557

    
558
	}
559

    
560
//-->
561
</script>
562
<script type="text/javascript">
563
NiftyCheck();
564
var bgcolor = document.getElementsByTagName("body")[0].style.backgroundColor;
565
Rounded("div#roundme","all",bgcolor,"#FFFFFF","smooth");
566
</script>
567

    
568
<?php
569

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

    
619

    
620
if($pkg['step'][$stepid]['stepafterformdisplay'] <> "") {
621
	// handle after form display event.
622
	eval($pkg['step'][$stepid]['stepafterformdisplay']);
623
}
624

    
625
if($pkg['step'][$stepid]['javascriptafterformdisplay'] <> "") {
626
	// handle after form display event.
627
        echo "\n<script type=\"text/javascript\">\n";
628
	echo $pkg['step'][$stepid]['javascriptafterformdisplay'] . "\n";
629
	echo "</script>\n\n";
630
}
631

    
632
/*
633
 *  HELPER FUNCTIONS
634
 */
635

    
636
function fixup_string($string) {
637
	global $config, $myurl;
638
	$newstring = $string;
639
	// fixup #1: $myurl -> http[s]://ip_address:port/
640
	switch($config['system']['webgui']['protocol']) {
641
		case "http":
642
			$proto = "http";
643
			break;
644
		case "https":
645
			$proto = "https";
646
			break;
647
		default:
648
			$proto = "http";
649
			break;
650
	}
651
	$port = $config['system']['webgui']['port'];
652
	if($port != "") {
653
		if(($port == "443" and $proto != "https") or ($port == "80" and $proto != "http")) {
654
			$urlport = ":" . $port;
655
		} elseif ($port != "80" and $port != "443") {
656
			$urlport = ":" . $port;
657
		} else {
658
			$urlport = "";
659
		}
660
	}
661
	$myurl = $proto . "://" . $_SERVER['HTTP_HOST'] . $urlport . "/";
662

    
663
	if (strstr($newstring, "\$myurl"))
664
		$newstring = str_replace("\$myurl", $myurl, $newstring);
665
	// fixup #2: $wanip
666
	if (strstr($newstring, "\$wanip")) {
667
		$curwanip = get_interface_ip();
668
		$newstring = str_replace("\$wanip", $curwanip, $newstring);
669
	}
670
	// fixup #3: $lanip
671
	if (strstr($newstring, "\$lanip")) {
672
		$lanip = get_interface_ip("lan");
673
		$newstring = str_replace("\$lanip", $lanip, $newstring);
674
	}
675
	// fixup #4: fix'r'up here.
676
	return $newstring;
677
}
678

    
679
function is_timezone($elt) {
680
	return !preg_match("/\/$/", $elt);
681
}
682

    
683
?>
684

    
685
</body>
686
</html>
687

    
(217-217/218)