Project

General

Profile

Download (21.1 KB) Statistics
| Branch: | Tag: | Revision:
1 658292ef Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 658292ef Scott Ullrich
/*
4 57333fa0 Scott Ullrich
    wizard.php
5 658292ef Scott Ullrich
    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 6b07c15a Matthew Grooms
##|+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 658292ef Scott Ullrich
require("guiconfig.inc");
39
40
function gentitle_pkg($pgname) {
41 2fbd6806 Scott Ullrich
	global $config;
42
	return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pgname;
43 658292ef Scott Ullrich
}
44
45 d8c1a6c5 Scott Ullrich
$stepid = htmlspecialchars($_GET['stepid']);
46 658292ef Scott Ullrich
if (isset($_POST['stepid']))
47 d8c1a6c5 Scott Ullrich
    $stepid = htmlspecialchars($_POST['stepid']);
48 2fbd6806 Scott Ullrich
if (!$stepid) $stepid = "0";
49 658292ef Scott Ullrich
50 d8c1a6c5 Scott Ullrich
$xml = htmlspecialchars($_GET['xml']);
51
if($_POST['xml']) $xml = htmlspecialchars($_POST['xml']);
52 658292ef Scott Ullrich
53
if($xml == "") {
54 bb0c9569 Bill Marquette
	$xml = "not_defined";
55
	print_info_box_np("ERROR:  Could not open " . $xml . ".");
56
	die;
57 658292ef Scott Ullrich
} else {
58 bd31336e Scott Ullrich
	if (file_exists("{$g['www_path']}/wizards/{$xml}"))
59 fc19d371 Scott Ullrich
		$pkg = parse_xml_config_pkg("{$g['www_path']}/wizards/" . $xml, "pfsensewizard");
60 bb0c9569 Bill Marquette
	else {
61
		print_info_box_np("ERROR:  Could not open " . $xml . ".");
62
		die;
63
	}
64 658292ef Scott Ullrich
}
65
66
$title          = $pkg['step'][$stepid]['title'];
67
$description    = $pkg['step'][$stepid]['description'];
68 46985f19 Scott Ullrich
$totalsteps     = $pkg['totalsteps'];
69 658292ef Scott Ullrich
70 bd31336e Scott Ullrich
exec('/usr/bin/tar -tzf /usr/share/zoneinfo.tgz', $timezonelist);
71
$timezonelist = array_filter($timezonelist, 'is_timezone');
72
sort($timezonelist);
73
74 98b5b72b Scott Ullrich
/* kill carriage returns */
75 e881d1f3 Scott Ullrich
for($x=0; $x<count($timezonelist); $x++)
76 98b5b72b Scott Ullrich
		$timezonelist[$x] = str_replace("\n", "", $timezonelist[$x]);
77
78 b3f4e57c Scott Ullrich
if ($pkg['step'][$stepid]['includefile'])
79
	require($pkg['step'][$stepid]['includefile']);
80
81 e1e7a425 Scott Ullrich
if($pkg['step'][$stepid]['stepsubmitbeforesave']) {
82
		eval($pkg['step'][$stepid]['stepsubmitbeforesave']);
83
}
84
85 658292ef Scott Ullrich
if ($_POST) {
86 e48fc17d Scott Ullrich
    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 46985f19 Scott Ullrich
		if($field['arraynum'] <> "") $arraynum = $field['arraynum'];
95 e48fc17d Scott Ullrich
		if($field['bindstofield'])
96 3f83de3d Scott Ullrich
			update_config_field( $field['bindstofield'], $_POST[$fieldname], $unset_fields, $arraynum, $field['type']);
97 658292ef Scott Ullrich
        }
98 3ed807e4 Scott Ullrich
99 2fbd6806 Scott Ullrich
    }
100 3ed807e4 Scott Ullrich
    // 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 e48fc17d Scott Ullrich
    $stepid++;
106 46985f19 Scott Ullrich
    if($stepid > $totalsteps) $stepid = $totalsteps;
107 658292ef Scott Ullrich
}
108
109 46985f19 Scott Ullrich
$title          = $pkg['step'][$stepid]['title'];
110
$description    = $pkg['step'][$stepid]['description'];
111
112 3f83de3d Scott Ullrich
function update_config_field($field, $updatetext, $unset, $arraynum, $field_type) {
113 e48fc17d Scott Ullrich
	global $config;
114
	$field_split = split("->",$field);
115
	foreach ($field_split as $f) $field_conv .= "['" . $f . "']";
116
	if($field_conv == "") return;
117 3f83de3d Scott Ullrich
	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 496f9155 Scott Ullrich
	}
126 e881d1f3 Scott Ullrich
127 496f9155 Scott Ullrich
	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 e881d1f3 Scott Ullrich
135 e48fc17d Scott Ullrich
	if($unset <> "") {
136
		$text = "unset(\$config" . $field_conv . ");";
137
		eval($text);
138 46985f19 Scott Ullrich
		$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
139 e48fc17d Scott Ullrich
		eval($text);
140
	} else {
141 46985f19 Scott Ullrich
		if($arraynum <> "") {
142
			$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
143
		} else {
144
			$text = "\$config" . $field_conv . " = \"" . $updatetext . "\";";
145
		}
146 e48fc17d Scott Ullrich
		eval($text);
147
	}
148 658292ef Scott Ullrich
}
149
150 34b5c5a0 Scott Ullrich
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 d88c6a9f Scott Ullrich
$pgtitle = array($title);
157 4df96eff Scott Ullrich
include("head.inc");
158 6bb5c9aa Bill Marquette
159 4df96eff Scott Ullrich
?>
160 fc7bea0e Scott Ullrich
<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onLoad="enablechange();">
161 4e3391a3 Scott Ullrich
162 8c01d3bb Scott Ullrich
<?php
163 ba21539c Scott Ullrich
	if(file_exists("/usr/local/www/themes/{$g['theme']}/wizard.css")) 
164 8c01d3bb Scott Ullrich
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/wizard.css\" media=\"all\" />\n";
165 4e3391a3 Scott Ullrich
	else 
166
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/all.css\" media=\"all\" />";
167 8c01d3bb Scott Ullrich
?>
168
169 33a56b27 Colin Smith
<?php if($pkg['step'][$stepid]['fields']['field'] <> "") { ?>
170
<script language="JavaScript">
171 f9e35766 Scott Ullrich
<!--
172 38e7d556 Scott Ullrich
173 e881d1f3 Scott Ullrich
function  FieldValidate(userinput,  regexp,  message)
174
{
175
                if(!userinput.match(regexp))
176
                                alert(message);
177
}
178 38e7d556 Scott Ullrich
179 33a56b27 Colin Smith
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 e881d1f3 Scott Ullrich
                        }
211 33a56b27 Colin Smith
                        print "\t" . '}' . "\n";
212
                }
213
        }
214
?>
215 6bb5c9aa Bill Marquette
}
216
//-->
217
</script>
218 33a56b27 Colin Smith
<?php } ?>
219 6bb5c9aa Bill Marquette
220 33a56b27 Colin Smith
<form action="wizard.php" method="post" name="iform" id="iform">
221 658292ef Scott Ullrich
<input type="hidden" name="xml" value="<?= $xml ?>">
222 e48fc17d Scott Ullrich
<input type="hidden" name="stepid" value="<?= $stepid ?>">
223 658292ef Scott Ullrich
<?php if ($savemsg) print_info_box($savemsg); ?>
224
225 e48fc17d Scott Ullrich
<center>
226
227
&nbsp;<br>
228 1c3d61fe Scott Ullrich
229 fe2bfbfc Scott Ullrich
<?php
230 1c3d61fe Scott Ullrich
	if($title == "Reload in progress") {
231 a55e9c70 Ermal Lu?i
		$ip = "http://" . get_interface_ip("lan");
232 1c3d61fe Scott Ullrich
	} else {
233 fe2bfbfc Scott Ullrich
		$ip = "/";
234 1c3d61fe Scott Ullrich
	}
235 2576dace Ermal Luçi
	echo "<a href='$ip'>";
236 fe2bfbfc Scott Ullrich
?>
237 1c3d61fe Scott Ullrich
<img border="0" src="./themes/<?= $g['theme']; ?>/images/logo.gif"></a>
238 d51f86e0 Scott Ullrich
<p>
239 85dc4438 Scott Ullrich
<div style="width:700px;background-color:#ffffff" id="roundme">
240 50f60bca Scott Ullrich
<table bgcolor="#ffffff" width="600" cellspacing="0" cellpadding="3">
241 34b5c5a0 Scott Ullrich
    <!-- wizard goes here -->
242
    <tr><td>&nbsp;</td></tr>
243 77851510 Scott Ullrich
    <tr><td colspan='2'>
244 55b8d602 Scott Ullrich
<?php
245
	if ($_GET['message'] != "")
246 d8c1a6c5 Scott Ullrich
		print_info_box(htmlspecialchars($_GET['message']));
247 55b8d602 Scott Ullrich
	if ($_POST['message'] != "")
248 d8c1a6c5 Scott Ullrich
		print_info_box(htmlspecialchars($_POST['message']));
249 77851510 Scott Ullrich
?></td></tr>
250 d51f86e0 Scott Ullrich
    <tr><td colspan='2'><center><b><?= fixup_string($description) ?></b></center></td></tr><tr><td>&nbsp;</td></tr>
251 34b5c5a0 Scott Ullrich
    <?php
252
	if(!$pkg['step'][$stepid]['disableheader'])
253 d51f86e0 Scott Ullrich
		echo "<tr><td colspan=\"2\" class=\"listtopic\">" . fixup_string($title) . "</td></tr>";
254 34b5c5a0 Scott Ullrich
    ?>
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 2fbd6806 Scott Ullrich
		    $name  = $field['name'];
262 658292ef Scott Ullrich
263 2fbd6806 Scott Ullrich
		    $name = ereg_replace(" ", "", $name);
264
		    $name = strtolower($name);
265 658292ef Scott Ullrich
266 a8df0181 Scott Ullrich
		    if($field['bindstofield'] <> "") {
267 b1919dd0 Scott Ullrich
				$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 33a56b27 Colin Smith
					if ($field['type'] == "checkbox") {
277 35fecd55 Scott Ullrich
						$toeval = "if(isset(\$config" . $field_conv . $arraynum . ")) \$value = \" CHECKED\";";
278 f2ec2c48 Scott Ullrich
						eval($toeval);
279
					}
280 a8df0181 Scott Ullrich
		    }
281
282 34b5c5a0 Scott Ullrich
		    if(!$field['combinefieldsend'])
283
			echo "<tr>";
284
285
		    if ($field['type'] == "input") {
286
			if(!$field['dontdisplayname']) {
287
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
288 d51f86e0 Scott Ullrich
				echo fixup_string($field['name']);
289 34b5c5a0 Scott Ullrich
				echo ":</td>\n";
290
			}
291
			if(!$field['dontcombinecells'])
292
				echo "<td class=\"vtable\">\n";
293 6bb5c9aa Bill Marquette
294
			echo "<input id='" . $name . "' name='" . $name . "' value='" . $value . "'";
295
			if($field['validate'])
296
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
297
			echo ">\n";
298 62a48760 Scott Ullrich
299
300 e881d1f3 Scott Ullrich
301 62a48760 Scott Ullrich
		    } else if ($field['type'] == "inputalias") {
302
			if(!$field['dontdisplayname']) {
303
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
304
				echo fixup_string($field['name']);
305
				echo ":</td>\n";
306
			}
307
			if(!$field['dontcombinecells'])
308
				echo "<td class=\"vtable\">\n";
309
310
			echo "<input  autocomplete='off' class='formfldalias' id='" . $name . "' name='" . $name . "' value='" . $value . "'";
311
			if($field['validate'])
312
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
313 e881d1f3 Scott Ullrich
			echo ">\n";
314
315 62a48760 Scott Ullrich
316
317 496f9155 Scott Ullrich
		    } else if($field['type'] == "interfaces_selection") {
318
			$size = "";
319
			$multiple = "";
320
			$name = strtolower($name);
321
			echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
322 7b4710f9 Scott Ullrich
			echo fixup_string($field['name']) . ":\n";
323 496f9155 Scott Ullrich
			echo "</td>";
324
			echo "<td class=\"vtable\">\n";
325 7b4710f9 Scott Ullrich
			if($field['size'] <> "") $size = "size=\"{$field['size']}\"";
326 496f9155 Scott Ullrich
			if($field['multiple'] <> "" and $field['multiple'] <> "0") {
327 7b4710f9 Scott Ullrich
			  $multiple = "multiple=\"multiple\"";
328 496f9155 Scott Ullrich
			  $name .= "[]";
329
			}
330 7b4710f9 Scott Ullrich
			echo "<select id='{$name}' name='{$name}' {$size} {$multiple}>\n";
331 496f9155 Scott Ullrich
			if($field['add_to_interfaces_selection'] <> "") {
332
				$SELECTED = "";
333
				if($field['add_to_interfaces_selection'] == $value) $SELECTED = " SELECTED";
334
				echo "<option value='" . $field['add_to_interfaces_selection'] . "'" . $SELECTED . ">" . $field['add_to_interfaces_selection'] . "</option>\n";
335
			}
336 62a48760 Scott Ullrich
			$interfaces = $config['interfaces'];
337 496f9155 Scott Ullrich
			if($field['all_interfaces'] <> "") {
338
				$ints = split(" ", `/sbin/ifconfig -l`);
339
				$interfaces = array();
340
				foreach ($ints as $int) {
341
					$interfaces[]['descr'] = $int;
342
					$interfaces[] = $int;
343
				}
344
			}
345
			foreach ($interfaces as $ifname => $iface) {
346
			  if ($iface['descr'])
347
				  $ifdescr = $iface['descr'];
348
			  else
349
				  $ifdescr = strtoupper($ifname);
350
			  $ip = "";
351
			  if($field['all_interfaces'] <> "") {
352
				$ifdescr = $iface;
353
				$ip = " " . find_interface_ip($iface);
354
			  }
355
			  $SELECTED = "";
356 aecffb0a Scott Ullrich
			  if ($value == $ifname) $SELECTED = " SELECTED";
357
			  $to_echo = "<option value='" . $ifname . "'" . $SELECTED . ">" . $ifdescr . $ip . "</option>\n";
358 496f9155 Scott Ullrich
			  $to_echo .= "<!-- {$value} -->";
359
			  $canecho = 0;
360
			  if($field['interface_filter'] <> "") {
361
				if(stristr($iface, $field['interface_filter']) == true)
362
					$canecho = 1;
363
			  } else {
364
				$canecho = 1;
365
			  }
366 e881d1f3 Scott Ullrich
			  if($canecho == 1)
367 496f9155 Scott Ullrich
				echo $to_echo;
368
			}
369
				echo "</select>\n";
370
			} else if ($field['type'] == "password") {
371 34b5c5a0 Scott Ullrich
			if(!$field['dontdisplayname']) {
372
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
373 d51f86e0 Scott Ullrich
				echo fixup_string($field['name']);
374 34b5c5a0 Scott Ullrich
				echo ":</td>\n";
375
			}
376
			if(!$field['dontcombinecells'])
377
				echo "<td class=\"vtable\">";
378
			echo "<input id='" . $name . "' name='" . $name . "' value='" . $value . "' type='password'>\n";
379
		    } else if ($field['type'] == "select") {
380
			if(!$field['dontdisplayname']) {
381
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
382 d51f86e0 Scott Ullrich
				echo fixup_string($field['name']);
383 34b5c5a0 Scott Ullrich
				echo ":</td>\n";
384
			}
385
			if($field['size']) $size = " size='" . $field['size'] . "' ";
386
			if($field['multiple'] == "yes") $multiple = "MULTIPLE ";
387
			if(!$field['dontcombinecells'])
388
				echo "<td class=\"vtable\">\n";
389
			$onchange = "";
390
			foreach ($field['options']['option'] as $opt) {
391
				if($opt['enablefields'] <> "") {
392
					$onchange = "onchange=\"enableitems(this.selectedIndex);\" ";
393
				}
394
			}
395
			echo "<select " . $onchange . $multiple . $size . "id='" . $name . "' name='" . $name . "'>\n";
396
			foreach ($field['options']['option'] as $opt) {
397 46985f19 Scott Ullrich
				$selected = "";
398
				if($value == $opt['value']) $selected = " SELECTED";
399 34b5c5a0 Scott Ullrich
			    echo "\t<option name='" . $opt['name'] . "' value='" . $opt['value'] . "'" . $selected . ">" . $opt['name'] . "</option>\n";
400
			}
401
			echo "</select>\n";
402
		    } else if ($field['type'] == "textarea") {
403
			if(!$field['dontdisplayname']) {
404
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
405 d51f86e0 Scott Ullrich
				echo fixup_string($field['name']);
406 34b5c5a0 Scott Ullrich
				echo ":</td>";
407
			}
408
			if(!$field['dontcombinecells'])
409
				echo "<td class=\"vtable\">";
410
			echo "<textarea id='" . $name . "' name='" . $name . ">" . $value . "</textarea>\n";
411
		    } else if ($field['type'] == "submit") {
412
			echo "<td>&nbsp;<br></td></tr>";
413 2fbd6806 Scott Ullrich
			echo "<tr><td colspan='2'><center>";
414
			echo "<input type='submit' name='" . $name . "' value='" . $field['name'] . "'>\n";
415 34b5c5a0 Scott Ullrich
		    } else if ($field['type'] == "listtopic") {
416
			echo "<td>&nbsp;</td><tr>";
417
			echo "<tr><td colspan=\"2\" class=\"listtopic\">" . $field['name'] . "<br></td>\n";
418 bd31336e Scott Ullrich
		    } else if ($field['type'] == "subnet_select") {
419
			if(!$field['dontdisplayname']) {
420
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
421
				echo fixup_string($field['name']);
422
				echo ":</td>";
423
			}
424
			if(!$field['dontcombinecells'])
425
				echo "<td class=\"vtable\">";
426
			echo "<select name='{$name}'>\n";
427
			for($x=1; $x<33; $x++) {
428
				$CHECKED = "";
429
				if($value == $x) $CHECKED = " SELECTED";
430
				if($x <> 31)
431
					echo "<option value='{$x}' {$CHECKED}>{$x}</option>\n";
432
			}
433
			echo "</select>\n";
434
		    } else if ($field['type'] == "timezone_select") {
435
			if(!$field['dontdisplayname']) {
436
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
437
				echo fixup_string($field['name']);
438
				echo ":</td>";
439
			}
440
			if(!$field['dontcombinecells'])
441
				echo "<td class=\"vtable\">";
442
			echo "<select name='{$name}'>\n";
443
			foreach ($timezonelist as $tz) {
444
				$SELECTED = "";
445
				if ($value == $tz) $SELECTED = " SELECTED";
446
				echo "<option value='" . htmlspecialchars($tz) . "' {$SELECTED}>";
447
				echo htmlspecialchars($tz);
448
				echo "</option>\n";
449
			}
450
			echo "</select>\n";
451 34b5c5a0 Scott Ullrich
		    } else if ($field['type'] == "checkbox") {
452
			if(!$field['dontdisplayname']) {
453
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
454
				echo $field['name'];
455
				echo ":</td>";
456
			}
457
			$checked = "";
458 f2ec2c48 Scott Ullrich
			if($value <> "") $checked = " CHECKED";
459 33a56b27 Colin Smith
			echo "<td class=\"vtable\"><input type='checkbox' id='" . $name . "' name='" . $name . "' " . $checked;
460
			if(isset($field['enablefields']) or isset($field['checkenablefields'])) echo " onClick=\"enablechange()\"";
461
			echo ">\n";
462 34b5c5a0 Scott Ullrich
		    }
463
464
		    if($field['typehint'] <> "") {
465
			echo $field['typehint'];
466 2fbd6806 Scott Ullrich
		    }
467 34b5c5a0 Scott Ullrich
468 788ff7cb Scott Ullrich
		    if($field['description'] <> "") {
469
			echo "<br>" . $field['description'];
470 34b5c5a0 Scott Ullrich
			echo "</td>";
471 788ff7cb Scott Ullrich
		    }
472 34b5c5a0 Scott Ullrich
473
		    if(!$field['combinefieldsbegin'])
474
			 echo "</tr>\n";
475 f3c6fdc0 Bill Marquette
476
		    if($field['warning'] <> "") {
477
			echo "<br><b><font color=\"red\">" . $field['warning'] . "</font></b>";
478
		    }
479
480 34b5c5a0 Scott Ullrich
		}
481
	}
482
    ?>
483 658292ef Scott Ullrich
</table>
484 85dc4438 Scott Ullrich
<br>&nbsp;
485 5adb3375 Scott Ullrich
</div>
486 658292ef Scott Ullrich
</form>
487 62a48760 Scott Ullrich
<script language="JavaScript">
488
<!--
489
	if (typeof ext_change != 'undefined') {
490
		ext_change();
491
	}
492
	if (typeof proto_change != 'undefined') {
493
		ext_change();
494
	}
495
	if (typeof proto_change != 'undefined') {
496
		proto_change();
497
	}
498 5adb3375 Scott Ullrich
499 62a48760 Scott Ullrich
<?php
500
	$isfirst = 0;
501
	$aliases = "";
502
	$addrisfirst = 0;
503
	$aliasesaddr = "";
504
	if($config['aliases']['alias'] <> "" and is_array($config['aliases']['alias']))
505
		foreach($config['aliases']['alias'] as $alias_name) {
506
			if(!stristr($alias_name['address'], ".")) {
507
				if($isfirst == 1) $aliases .= ",";
508
				$aliases .= "'" . $alias_name['name'] . "'";
509
				$isfirst = 1;
510
			} else {
511
				if($addrisfirst == 1) $aliasesaddr .= ",";
512
				$aliasesaddr .= "'" . $alias_name['name'] . "'";
513
				$addrisfirst = 1;
514
			}
515
		}
516
?>
517
518
	var addressarray=new Array(<?php echo $aliasesaddr; ?>);
519
	var customarray=new Array(<?php echo $aliases; ?>);
520
521
//-->
522
</script>
523 5adb3375 Scott Ullrich
<script type="text/javascript">
524
NiftyCheck();
525 e881d1f3 Scott Ullrich
var bgcolor = document.getElementsByTagName("body")[0].style.backgroundColor;
526
Rounded("div#roundme","all",bgcolor,"#FFFFFF","smooth");
527 5adb3375 Scott Ullrich
</script>
528
529 34b5c5a0 Scott Ullrich
<?php
530
531
$fieldnames_array = Array();
532
if($pkg['step'][$stepid]['disableallfieldsbydefault'] <> "") {
533
	// create a fieldname loop that can be used with javascript
534
	// hide and enable features.
535
	echo "\n<script language=\"JavaScript\">\n";
536
	echo "function disableall() {\n";
537
	foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
538
		if($field['type'] <> "submit" and $field['type'] <> "listtopic") {
539
			if(!$field['donotdisable'] <> "") {
540
				array_push($fieldnames_array, $field['name']);
541
				$fieldname = ereg_replace(" ", "", $field['name']);
542
				$fieldname = strtolower($fieldname);
543
				echo "\tdocument.forms[0]." . $fieldname . ".disabled = 1;\n";
544
			}
545
		}
546
	}
547
	echo "}\ndisableall();\n";
548
	echo "function enableitems(selectedindex) {\n";
549
	echo "disableall();\n";
550
	$idcounter = 0;
551
	if($pkg['step'][$stepid]['fields']['field'] <> "") {
552
		echo "\tswitch(selectedindex) {\n";
553
		foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
554
			if($field['options']['option'] <> "") {
555
				foreach ($field['options']['option'] as $opt) {
556
					if($opt['enablefields'] <> "") {
557
						echo "\t\tcase " . $idcounter . ":\n";
558
						$enablefields_split = split(",", $opt['enablefields']);
559
						foreach ($enablefields_split as $efs) {
560
							$fieldname = ereg_replace(" ", "", $efs);
561
							$fieldname = strtolower($fieldname);
562
							if($fieldname <> "") {
563
								$onchange = "\t\t\tdocument.forms[0]." . $fieldname . ".disabled = 0; \n";
564
								echo $onchange;
565
							}
566
						}
567
						echo "\t\t\tbreak;\n";
568
					}
569
					$idcounter = $idcounter + 1;
570
				}
571
			}
572
		}
573
		echo "\t}\n";
574
	}
575
	echo "}\n";
576
	echo "disableall();\n";
577
	echo "</script>\n\n";
578
}
579
580
581
if($pkg['step'][$stepid]['stepafterformdisplay'] <> "") {
582
	// handle after form display event.
583
	eval($pkg['step'][$stepid]['stepafterformdisplay']);
584
}
585
586
if($pkg['step'][$stepid]['javascriptafterformdisplay'] <> "") {
587
	// handle after form display event.
588
        echo "\n<script language=\"JavaScript\">\n";
589
	echo $pkg['step'][$stepid]['javascriptafterformdisplay'] . "\n";
590
	echo "</script>\n\n";
591
}
592
593 d51f86e0 Scott Ullrich
/*
594
 *  HELPER FUNCTIONS
595
 */
596
597
function fixup_string($string) {
598 a0190b50 Scott Ullrich
	global $config, $myurl;
599 78818d7a Scott Ullrich
	$newstring = $string;
600 d51f86e0 Scott Ullrich
	// fixup #1: $myurl -> http[s]://ip_address:port/
601 037304d8 Scott Ullrich
	switch($config['system']['webguiproto']) {
602
		case "http":
603
			$proto = "http";
604
			break;
605
		case "https":
606
			$proto = "https";
607
			break;
608
		default:
609
			$proto = "http";
610
			break;
611
	}
612 d51f86e0 Scott Ullrich
	$port = $config['system']['webguiport'];
613 037304d8 Scott Ullrich
	if($port != "") {
614
		if(($port == "443" and $proto != "https") or ($port == "80" and $proto != "http")) {
615
			$urlport = ":" . $port;
616
		} elseif ($port != "80" and $port != "443") {
617
			$urlport = ":" . $port;
618
		} else {
619
			$urlport = "";
620
		}
621
	}
622 a55e9c70 Ermal Lu?i
	$myurl = $proto . "://" . get_interface_ip("lan") . $urlport . "/";
623 78818d7a Scott Ullrich
	$newstring = str_replace("\$myurl", $myurl, $newstring);
624 d2133701 Scott Ullrich
	// fixup #2: $wanip
625 85a5da13 Ermal Luçi
	$curwanip = get_interface_ip();
626 78818d7a Scott Ullrich
	$newstring = str_replace("\$wanip", $curwanip, $newstring);
627 d2133701 Scott Ullrich
	// fixup #3: $lanip
628 a55e9c70 Ermal Lu?i
	$lanip = get_interface_ip("lan");
629 78818d7a Scott Ullrich
	$newstring = str_replace("\$lanip", $lanip, $newstring);
630 d2133701 Scott Ullrich
	// fixup #4: fix'r'up here.
631 d51f86e0 Scott Ullrich
	return $newstring;
632
}
633
634 bd31336e Scott Ullrich
function is_timezone($elt) {
635
	return !preg_match("/\/$/", $elt);
636
}
637 d51f86e0 Scott Ullrich
638 c8000491 Scott Ullrich
?>
639
640
</body>
641
</html>