Project

General

Profile

Download (23.2 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 type="text/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
	$inputaliases = array();
258
	if($pkg['step'][$stepid]['fields']['field'] <> "") {
259
		foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
260

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

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

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

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

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

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

    
304

    
305

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

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

    
325

    
326

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

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

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

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

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

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

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

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

    
556
	window.onload = function () {
557

    
558
		<?php
559
			$counter=0;
560
			foreach($inputaliases as $alias) {
561
				echo "var oTextbox$counter = new AutoSuggestControl(document.getElementById(\"$alias\"), new StateSuggestions(addressarray));\n";
562
				$counter++;
563
			}
564
		?>
565

    
566
	}
567

    
568
//-->
569
</script>
570
<script type="text/javascript">
571
NiftyCheck();
572
var bgcolor = document.getElementsByTagName("body")[0].style.backgroundColor;
573
Rounded("div#roundme","all",bgcolor,"#FFFFFF","smooth");
574
</script>
575

    
576
<?php
577

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

    
627

    
628
if($pkg['step'][$stepid]['stepafterformdisplay'] <> "") {
629
	// handle after form display event.
630
	eval($pkg['step'][$stepid]['stepafterformdisplay']);
631
}
632

    
633
if($pkg['step'][$stepid]['javascriptafterformdisplay'] <> "") {
634
	// handle after form display event.
635
        echo "\n<script type=\"text/javascript\">\n";
636
	echo $pkg['step'][$stepid]['javascriptafterformdisplay'] . "\n";
637
	echo "</script>\n\n";
638
}
639

    
640
/*
641
 *  HELPER FUNCTIONS
642
 */
643

    
644
function fixup_string($string) {
645
	global $config, $myurl;
646
	$newstring = $string;
647
	// fixup #1: $myurl -> http[s]://ip_address:port/
648
	switch($config['system']['webguiproto']) {
649
		case "http":
650
			$proto = "http";
651
			break;
652
		case "https":
653
			$proto = "https";
654
			break;
655
		default:
656
			$proto = "http";
657
			break;
658
	}
659
	$port = $config['system']['webguiport'];
660
	if($port != "") {
661
		if(($port == "443" and $proto != "https") or ($port == "80" and $proto != "http")) {
662
			$urlport = ":" . $port;
663
		} elseif ($port != "80" and $port != "443") {
664
			$urlport = ":" . $port;
665
		} else {
666
			$urlport = "";
667
		}
668
	}
669
	$myurl = $proto . "://" . get_interface_ip("lan") . $urlport . "/";
670
	$newstring = str_replace("\$myurl", $myurl, $newstring);
671
	// fixup #2: $wanip
672
	$curwanip = get_interface_ip();
673
	$newstring = str_replace("\$wanip", $curwanip, $newstring);
674
	// fixup #3: $lanip
675
	$lanip = get_interface_ip("lan");
676
	$newstring = str_replace("\$lanip", $lanip, $newstring);
677
	// fixup #4: fix'r'up here.
678
	return $newstring;
679
}
680

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

    
685
?>
686

    
687
</body>
688
</html>
689

    
(216-216/217)