Project

General

Profile

Download (95.7 KB) Statistics
| Branch: | Tag: | Revision:
1 8a9edda5 Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 5b237745 Scott Ullrich
/*
4 b2bc44cd Scott Ullrich
	interfaces.php
5 78fcfb9c Scott Ullrich
	Copyright (C) 2004-2008 Scott Ullrich
6 744ea190 Scott Ullrich
	Copyright (C) 2006 Daniel S. Haischt.
7 dd18038e Ermal
	Copyright (C) 2008-2010 Ermal Lu?i
8 c3b3cd36 Scott Ullrich
	All rights reserved.
9 b1c525ee Scott Ullrich
10 c3b3cd36 Scott Ullrich
	originally part of m0n0wall (http://m0n0.ch/wall)
11 5b237745 Scott Ullrich
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
12
	All rights reserved.
13 e2cd32df Scott Ullrich
14 5b237745 Scott Ullrich
	Redistribution and use in source and binary forms, with or without
15
	modification, are permitted provided that the following conditions are met:
16 e2cd32df Scott Ullrich
17 5b237745 Scott Ullrich
	1. Redistributions of source code must retain the above copyright notice,
18
	   this list of conditions and the following disclaimer.
19 e2cd32df Scott Ullrich
20 5b237745 Scott Ullrich
	2. Redistributions in binary form must reproduce the above copyright
21
	   notice, this list of conditions and the following disclaimer in the
22
	   documentation and/or other materials provided with the distribution.
23 e2cd32df Scott Ullrich
24 5b237745 Scott Ullrich
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
25
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
26
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
28
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
	POSSIBILITY OF SUCH DAMAGE.
34
*/
35 7ac5a4cb Scott Ullrich
/*
36
	pfSense_BUILDER_BINARIES:	/usr/sbin/arp
37
	pfSense_MODULE:	interfaces
38
*/
39 5b237745 Scott Ullrich
40 6b07c15a Matthew Grooms
##|+PRIV
41 01eb687d Ermal Luçi
##|*IDENT=page-interfaces
42 6b07c15a Matthew Grooms
##|*NAME=Interfaces: WAN page
43 998552f8 Ermal Luçi
##|*DESCR=Allow access to the 'Interfaces' page.
44 01eb687d Ermal Luçi
##|*MATCH=interfaces.php*
45 6b07c15a Matthew Grooms
##|-PRIV
46
47 f81cfcc9 jim-p
require_once("guiconfig.inc");
48
require_once("ipsec.inc");
49
require_once("functions.inc");
50
require_once("captiveportal.inc");
51
require_once("filter.inc");
52
require_once("shaper.inc");
53
require_once("rrd.inc");
54
require_once("vpn.inc");
55 1fb064e8 Erik Fonnesbeck
require_once("xmlparse_attr.inc");
56 199d8121 Ermal Luçi
57 94556105 Scott Ullrich
// Get configured interface list
58 dd18038e Ermal
$ifdescrs = get_configured_interface_with_descr(false, true);
59 94556105 Scott Ullrich
60 dd18038e Ermal
$if = "wan";
61
if ($_REQUEST['if'])
62 bd58d230 Scott Ullrich
	$if = $_REQUEST['if'];
63 dd18038e Ermal
64
if (empty($ifdescrs[$if])) {
65
	Header("Location: interfaces.php");
66
	exit;
67 9ff9a1c7 Seth Mos
}
68 6b07c15a Matthew Grooms
69 58af5941 Scott Ullrich
define("CRON_MONTHLY_PATTERN", "0 0 1 * *");
70
define("CRON_WEEKLY_PATTERN", "0 0 * * 0");
71
define("CRON_DAILY_PATTERN", "0 0 * * *");
72
define("CRON_HOURLY_PATTERN", "0 * * * *");
73 dc711694 Scott Ullrich
74 d85ba87f gnhb
if (!is_array($config['ppps']['ppp']))
75
	$config['ppps']['ppp'] = array();
76
77
$a_ppps = &$config['ppps']['ppp'];
78 58af5941 Scott Ullrich
79 f1f60c92 Ermal Luçi
function remove_bad_chars($string) {
80 e7346f05 Erik Fonnesbeck
	return preg_replace('/[^a-z_0-9]/i','',$string);
81 f1f60c92 Ermal Luçi
}
82
83 d173230c Seth Mos
if (!is_array($config['gateways']['gateway_item']))
84
	$config['gateways']['gateway_item'] = array();
85
$a_gateways = &$config['gateways']['gateway_item'];
86
87 f1f60c92 Ermal Luçi
$wancfg = &$config['interfaces'][$if];
88 dd18038e Ermal
// Populate page descr if it does not exist.
89
if ($if == "wan" && !$wancfg['descr'])
90
	$wancfg['descr'] = "WAN";
91
else if ($if == "lan" && !$wancfg['descr'])
92
	$wancfg['descr'] = "LAN";
93
94 5b237745 Scott Ullrich
95 8256f324 gnhb
foreach ($a_ppps as $pppid => $ppp) {
96 1d7e1d6c gnhb
	if ($wancfg['if'] == $ppp['if'])
97 8256f324 gnhb
		break;
98 30ade846 gnhb
}
99
100 1d7e1d6c gnhb
if ($wancfg['if'] == $a_ppps[$pppid]['if']) {
101 30ade846 gnhb
	$pconfig['pppid'] = $pppid;
102 1d7e1d6c gnhb
	$pconfig['ptpid'] = $a_ppps[$pppid]['ptpid'];
103
	$pconfig['port'] = $a_ppps[$pppid]['ports'];
104 3a906378 gnhb
	if ($a_ppps[$pppid]['type'] == "ppp"){
105
		$pconfig['username'] = $a_ppps[$pppid]['username'];
106
		$pconfig['password'] = base64_decode($a_ppps[$pppid]['password']);
107 c0948c6c Renato Botelho
108 3a906378 gnhb
		$pconfig['phone'] = $a_ppps[$pppid]['phone'];
109
		$pconfig['apn'] = $a_ppps[$pppid]['apn'];
110
	}
111 c0948c6c Renato Botelho
112 d85ba87f gnhb
	if ($a_ppps[$pppid]['type'] == "pppoe"){
113
		$pconfig['pppoe_username'] = $a_ppps[$pppid]['username'];
114
		$pconfig['pppoe_password'] = base64_decode($a_ppps[$pppid]['password']);
115
		$pconfig['provider'] = $a_ppps[$pppid]['provider'];
116
		$pconfig['pppoe_dialondemand'] = isset($a_ppps[$pppid]['ondemand']);
117
		$pconfig['pppoe_idletimeout'] = $a_ppps[$pppid]['idletimeout'];
118 5b237745 Scott Ullrich
119 d85ba87f gnhb
		/* ================================================ */
120
		/* = force a connection reset at a specific time? = */
121
		/* ================================================ */
122 c0948c6c Renato Botelho
123 d85ba87f gnhb
		if (isset($a_ppps[$pppid]['pppoe-reset-type'])) {
124
			$pconfig['pppoe-reset-type'] = $a_ppps[$pppid]['pppoe-reset-type'];
125 1d7e1d6c gnhb
			$itemhash = getMPDCRONSettings($a_ppps[$pppid]['if']);
126 e40e6724 gnhb
			$cronitem = $itemhash['ITEM'];
127
			if (isset($cronitem)) {
128
				$resetTime = "{$cronitem['minute']} {$cronitem['hour']} {$cronitem['mday']} {$cronitem['month']} {$cronitem['wday']}";
129
			} else {
130
				$resetTime = NULL;
131
			}
132
			log_error("ResetTime:".$resetTime);
133 d85ba87f gnhb
			if ($a_ppps[$pppid]['pppoe-reset-type'] == "custom") {
134
				$resetTime_a = split(" ", $resetTime);
135
				$pconfig['pppoe_pr_custom'] = true;
136
				$pconfig['pppoe_resetminute'] = $resetTime_a[0];
137
				$pconfig['pppoe_resethour'] = $resetTime_a[1];
138
				/*  just initialize $pconfig['pppoe_resetdate'] if the
139
				 *  coresponding item contains appropriate numeric values.
140
				 */
141 c0948c6c Renato Botelho
				if ($resetTime_a[2] <> "*" && $resetTime_a[3] <> "*")
142 d85ba87f gnhb
					$pconfig['pppoe_resetdate'] = "{$resetTime_a[3]}/{$resetTime_a[2]}/" . date("Y");
143
			} else if ($a_ppps[$pppid]['pppoe-reset-type'] == "preset") {
144
				$pconfig['pppoe_pr_preset'] = true;
145
				switch ($resetTime) {
146
					case CRON_MONTHLY_PATTERN:
147
						$pconfig['pppoe_monthly'] = true;
148
						break;
149
					case CRON_WEEKLY_PATTERN:
150
						$pconfig['pppoe_weekly'] = true;
151
						break;
152
					case CRON_DAILY_PATTERN:
153
						$pconfig['pppoe_daily'] = true;
154
						break;
155
					case CRON_HOURLY_PATTERN:
156
						$pconfig['pppoe_hourly'] = true;
157
						break;
158
				}
159
			}
160
		}// End force pppoe reset at specific time
161 c0948c6c Renato Botelho
	}// End if type == pppoe
162 ef130e9f Ermal
	else if ($a_ppps[$pppid]['type'] == "pptp"){
163 d85ba87f gnhb
		$pconfig['pptp_username'] = $a_ppps[$pppid]['username'];
164
		$pconfig['pptp_password'] = base64_decode($a_ppps[$pppid]['password']);
165 4a1ee8ac gnhb
		$pconfig['pptp_local'] = explode(",",$a_ppps[$pppid]['localip']);
166
		$pconfig['pptp_subnet'] = explode(",",$a_ppps[$pppid]['subnet']);
167
		$pconfig['pptp_remote'] = explode(",",$a_ppps[$pppid]['gateway']);
168 d85ba87f gnhb
		$pconfig['pptp_dialondemand'] = isset($a_ppps[$pppid]['ondemand']);
169
		$pconfig['pptp_idletimeout'] = $a_ppps[$pppid]['timeout'];
170
	}
171 8256f324 gnhb
} else {
172 1d7e1d6c gnhb
	$pconfig['ptpid'] = interfaces_ptpid_next();
173 8256f324 gnhb
	$pppid = count($a_ppps);
174 d85ba87f gnhb
}
175 5b237745 Scott Ullrich
$pconfig['dhcphostname'] = $wancfg['dhcphostname'];
176 bc40d758 Seth Mos
$pconfig['alias-address'] = $wancfg['alias-address'];
177
$pconfig['alias-subnet'] = $wancfg['alias-subnet'];
178 f1f60c92 Ermal Luçi
$pconfig['descr'] = remove_bad_chars($wancfg['descr']);
179 6a688547 Ermal
$pconfig['enable'] = isset($wancfg['enable']);
180 f1f60c92 Ermal Luçi
181 9ff9a1c7 Seth Mos
if (is_array($config['aliases']['alias'])) {
182
	foreach($config['aliases']['alias'] as $alias) {
183
		if($alias['name'] == $wancfg['descr']) {
184 ea6be4a7 Erik Fonnesbeck
			$input_errors[] = sprintf(gettext("Sorry, an alias with the name %s already exists."),$wancfg['descr']);
185 9ff9a1c7 Seth Mos
		}
186
	}
187
}
188
189
switch($wancfg['ipaddr']) {
190
	case "dhcp":
191
		$pconfig['type'] = "dhcp";
192
		break;
193
	case "carpdev-dhcp":
194
		$pconfig['type'] = "carpdev-dhcp";
195
		$pconfig['ipaddr'] = "";
196
		break;
197
	case "pppoe":
198
	case "pptp":
199 611ae852 Ermal
	case "ppp":
200 d85ba87f gnhb
		$pconfig['type'] = $wancfg['ipaddr'];
201 611ae852 Ermal
		break;
202 9ff9a1c7 Seth Mos
	default:
203
		if(is_ipaddr($wancfg['ipaddr'])) {
204
			$pconfig['type'] = "static";
205
			$pconfig['ipaddr'] = $wancfg['ipaddr'];
206
			$pconfig['subnet'] = $wancfg['subnet'];
207
			$pconfig['gateway'] = $wancfg['gateway'];
208 dd18038e Ermal
		} else
209 9ff9a1c7 Seth Mos
			$pconfig['type'] = "none";
210
		break;
211
}
212 5b237745 Scott Ullrich
213
$pconfig['blockpriv'] = isset($wancfg['blockpriv']);
214 ff1955ee Bill Marquette
$pconfig['blockbogons'] = isset($wancfg['blockbogons']);
215 5b237745 Scott Ullrich
$pconfig['spoofmac'] = $wancfg['spoofmac'];
216
$pconfig['mtu'] = $wancfg['mtu'];
217 4cea5cf8 Ermal
$pconfig['mss'] = $wancfg['mss'];
218 5b237745 Scott Ullrich
219
/* Wireless interface? */
220 b7f01f59 Bill Marquette
if (isset($wancfg['wireless'])) {
221 ebf94efb Erik Fonnesbeck
	/* Sync first to be sure it displays the actual settings that will be used */
222
	interface_sync_wireless_clones($wancfg, false);
223 4634cb48 Ermal Luçi
	/* Get wireless modes */
224 10394059 Scott Ullrich
	$wlanif = get_real_interface($if);
225 3f23b74d Erik Fonnesbeck
	if (!does_interface_exist($wlanif))
226
		interface_wireless_clone($wlanif, $wancfg);
227 34808d4e Erik Fonnesbeck
	$wlanbaseif = interface_get_wireless_base($wancfg['if']);
228 6681fdd3 Erik Fonnesbeck
	preg_match("/^(.*?)([0-9]*)$/", $wlanbaseif, $wlanbaseif_split);
229 10394059 Scott Ullrich
	$wl_modes = get_wireless_modes($if);
230 f4094f0d Erik Fonnesbeck
	$wl_chaninfo = get_wireless_channel_info($if);
231 6681fdd3 Erik Fonnesbeck
	$wl_sysctl_prefix = 'dev.' . $wlanbaseif_split[1] . '.' . $wlanbaseif_split[2];
232 537bf7b3 Erik Fonnesbeck
	$wl_sysctl = get_sysctl(array("{$wl_sysctl_prefix}.diversity", "{$wl_sysctl_prefix}.txantenna", "{$wl_sysctl_prefix}.rxantenna",
233
	                              "{$wl_sysctl_prefix}.slottime", "{$wl_sysctl_prefix}.acktimeout", "{$wl_sysctl_prefix}.ctstimeout"));
234 071d63b9 Erik Fonnesbeck
	$wl_regdomain_xml_attr = array();
235
	$wl_regdomain_xml = parse_xml_regdomain($wl_regdomain_xml_attr);
236
	$wl_regdomains = &$wl_regdomain_xml['regulatory-domains']['rd'];
237
	$wl_regdomains_attr = &$wl_regdomain_xml_attr['regulatory-domains']['rd'];
238
	$wl_countries = &$wl_regdomain_xml['country-codes']['country'];
239
	$wl_countries_attr = &$wl_regdomain_xml_attr['country-codes']['country'];
240 f62c44d8 Erik Fonnesbeck
	$pconfig['persistcommonwireless'] = isset($config['wireless']['interfaces'][$wlanbaseif]);
241 4634cb48 Ermal Luçi
	$pconfig['standard'] = $wancfg['wireless']['standard'];
242
	$pconfig['mode'] = $wancfg['wireless']['mode'];
243
	$pconfig['protmode'] = $wancfg['wireless']['protmode'];
244 ff2f4e43 Ermal Luçi
	$pconfig['ssid'] = $wancfg['wireless']['ssid'];
245 4634cb48 Ermal Luçi
	$pconfig['channel'] = $wancfg['wireless']['channel'];
246
	$pconfig['txpower'] = $wancfg['wireless']['txpower'];
247 537bf7b3 Erik Fonnesbeck
	$pconfig['diversity'] = $wancfg['wireless']['diversity'];
248
	$pconfig['txantenna'] = $wancfg['wireless']['txantenna'];
249
	$pconfig['rxantenna'] = $wancfg['wireless']['rxantenna'];
250 4634cb48 Ermal Luçi
	$pconfig['distance'] = $wancfg['wireless']['distance'];
251 20f09b3b Erik Fonnesbeck
	$pconfig['regdomain'] = $wancfg['wireless']['regdomain'];
252
	$pconfig['regcountry'] = $wancfg['wireless']['regcountry'];
253
	$pconfig['reglocation'] = $wancfg['wireless']['reglocation'];
254 4634cb48 Ermal Luçi
	$pconfig['wme_enable'] = isset($wancfg['wireless']['wme']['enable']);
255 57bbd532 Erik Fonnesbeck
	if (isset($wancfg['wireless']['puren']['enable']))
256
		$pconfig['puremode'] = '11n';
257
	else if (isset($wancfg['wireless']['pureg']['enable']))
258
		$pconfig['puremode'] = '11g';
259
	else
260
		$pconfig['puremode'] = 'any';
261 4634cb48 Ermal Luçi
	$pconfig['apbridge_enable'] = isset($wancfg['wireless']['apbridge']['enable']);
262
	$pconfig['authmode'] = $wancfg['wireless']['authmode'];
263
	$pconfig['hidessid_enable'] = isset($wancfg['wireless']['hidessid']['enable']);
264 5949124c Scott Ullrich
	$pconfig['auth_server_addr'] = $wancfg['wireless']['auth_server_addr'];
265
	$pconfig['auth_server_port'] = $wancfg['wireless']['auth_server_port'];
266
	$pconfig['auth_server_shared_secret'] = $wancfg['wireless']['auth_server_shared_secret'];
267 4634cb48 Ermal Luçi
	if (is_array($wancfg['wireless']['wpa'])) {
268
		$pconfig['debug_mode'] = $wancfg['wireless']['wpa']['debug_mode'];
269
		$pconfig['macaddr_acl'] = $wancfg['wireless']['wpa']['macaddr_acl'];
270
		$pconfig['mac_acl_enable'] = isset($wancfg['wireless']['wpa']['mac_acl_enable']);
271
		$pconfig['auth_algs'] = $wancfg['wireless']['wpa']['auth_algs'];
272
		$pconfig['wpa_mode'] = $wancfg['wireless']['wpa']['wpa_mode'];
273
		$pconfig['wpa_key_mgmt'] = $wancfg['wireless']['wpa']['wpa_key_mgmt'];
274
		$pconfig['wpa_pairwise'] = $wancfg['wireless']['wpa']['wpa_pairwise'];
275
		$pconfig['wpa_group_rekey'] = $wancfg['wireless']['wpa']['wpa_group_rekey'];
276
		$pconfig['wpa_gmk_rekey'] = $wancfg['wireless']['wpa']['wpa_gmk_rekey'];
277
		$pconfig['wpa_strict_rekey'] = isset($wancfg['wireless']['wpa']['wpa_strict_rekey']);
278
		$pconfig['passphrase'] = $wancfg['wireless']['wpa']['passphrase'];
279 bfe1ef8c Ermal Luçi
		$pconfig['ieee8021x'] = isset($wancfg['wireless']['wpa']['ieee8021x']['enable']);
280 ea62cd32 Scott Ullrich
		$pconfig['rsn_preauth'] = isset($wancfg['wireless']['wpa']['rsn_preauth']);
281 4634cb48 Ermal Luçi
		$pconfig['ext_wpa_sw'] = $wancfg['wireless']['wpa']['ext_wpa_sw'];
282
		$pconfig['wpa_enable'] = isset($wancfg['wireless']['wpa']['enable']);
283
	}
284
	$pconfig['wep_enable'] = isset($wancfg['wireless']['wep']['enable']);
285
	$pconfig['mac_acl'] = $wancfg['wireless']['mac_acl'];
286 270c4607 Scott Ullrich
	if (is_array($wancfg['wireless']['wep']) && is_array($wancfg['wireless']['wep']['key'])) {
287 53c82ef9 Scott Ullrich
		$i = 1;
288
		foreach ($wancfg['wireless']['wep']['key'] as $wepkey) {
289
			$pconfig['key' . $i] = $wepkey['value'];
290
			if (isset($wepkey['txkey']))
291
				$pconfig['txkey'] = $i;
292
			$i++;
293
		}
294
		if (!isset($wepkey['txkey']))
295
			$pconfig['txkey'] = 1;
296 4634cb48 Ermal Luçi
	}
297 5b237745 Scott Ullrich
}
298
299 43e255d2 Ermal Luçi
if ($_POST['apply']) {
300 7994c3f8 Ermal Luçi
	unset($input_errors);
301 a368a026 Ermal Lu?i
	if (!is_subsystem_dirty('interfaces'))
302 136c598d Carlos Eduardo Ramos
		$intput_errors[] = gettext("You have already applied your settings!");
303 c0948c6c Renato Botelho
	else {
304 270c4607 Scott Ullrich
		unlink_if_exists("{$g['tmp_path']}/config.cache");
305 a368a026 Ermal Lu?i
		clear_subsystem_dirty('interfaces');
306 c0948c6c Renato Botelho
307 dd18038e Ermal
		if (file_exists("{$g['tmp_path']}/.interfaces.apply")) {
308
			$toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.interfaces.apply"));
309
			foreach ($toapplylist as $ifapply) {
310
				if (isset($config['interfaces'][$ifapply]['enable']))
311
					interface_configure($ifapply, true);
312
				else
313
					interface_bring_down($ifapply);
314
			}
315
		}
316 c0948c6c Renato Botelho
		/* restart snmp so that it binds to correct address */
317
		services_snmpd_configure();
318 a5d6f60b Ermal Lu?i
319 270c4607 Scott Ullrich
		/* sync filter configuration */
320 61fc1160 Scott Ullrich
		setup_gateways_monitor();
321 a5d6f60b Ermal Lu?i
322 a368a026 Ermal Lu?i
		clear_subsystem_dirty('staticroutes');
323 c0948c6c Renato Botelho
324 b4d36392 Scott Ullrich
		filter_configure();
325 c0948c6c Renato Botelho
326 1ee5d4b3 sullrich
		enable_rrd_graphing();
327 7994c3f8 Ermal Luçi
	}
328 dd18038e Ermal
	@unlink("{$g['tmp_path']}/.interfaces.apply");
329 7994c3f8 Ermal Luçi
	header("Location: interfaces.php?if={$if}");
330
	exit;
331 dd18038e Ermal
} else if ($_POST && $_POST['enable'] != "yes") {
332 270c4607 Scott Ullrich
	unset($wancfg['enable']);
333 dd18038e Ermal
	if (isset($wancfg['wireless']))
334 8f0289e7 Erik Fonnesbeck
		interface_sync_wireless_clones($wancfg, false);
335 270c4607 Scott Ullrich
	write_config("Interface {$_POST['descr']}({$if}) is now disabled.");
336 a368a026 Ermal Lu?i
	mark_subsystem_dirty('interfaces');
337 dd18038e Ermal
	if (file_exists("{$g['tmp_path']}/.interfaces.apply"))
338
		$toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.interfaces.apply"));
339
	else
340
		$toapplylist = array();
341
	$toapplylist[$if] = $if; 
342
	file_put_contents("{$g['tmp_path']}/.interfaces.apply", serialize($toapplylist));
343 270c4607 Scott Ullrich
	header("Location: interfaces.php?if={$if}");
344
	exit;
345 dd18038e Ermal
} else if ($_POST) {
346 270c4607 Scott Ullrich
347 53c82ef9 Scott Ullrich
	unset($input_errors);
348
	$pconfig = $_POST;
349
	conf_mount_rw();
350 fe24301f Ermal
351 53c82ef9 Scott Ullrich
	/* filter out spaces from descriptions  */
352
	$_POST['descr'] = remove_bad_chars($_POST['descr']);
353 fe24301f Ermal
354 b4d36392 Scott Ullrich
	/* okay first of all, cause we are just hiding the PPPoE HTML
355 53c82ef9 Scott Ullrich
	 * fields releated to PPPoE resets, we are going to unset $_POST
356
	 * vars, if the reset feature should not be used. Otherwise the
357
	 * data validation procedure below, may trigger a false error
358
	 * message.
359
	 */
360 e40e6724 gnhb
	if (empty($_POST['pppoe-reset-type'])) {
361 c0948c6c Renato Botelho
		unset($_POST['pppoe_pr_type']);
362 53c82ef9 Scott Ullrich
		unset($_POST['pppoe_resethour']);
363
		unset($_POST['pppoe_resetminute']);
364
		unset($_POST['pppoe_resetdate']);
365
		unset($_POST['pppoe_pr_preset_val']);
366
	}
367
	/* description unique? */
368 dd18038e Ermal
	foreach ($ifdescrs as $ifent => $ifdescr) {
369 79851fc8 Ermal
		if ($if != $ifent && $ifdescr == $_POST['descr']) {
370 136c598d Carlos Eduardo Ramos
			$input_errors[] = gettext("An interface with the specified description already exists.");
371 79851fc8 Ermal
			break;
372
		}
373 53c82ef9 Scott Ullrich
	}
374
	/* input validation */
375 f94cf5f8 Ermal Lu?i
	if (isset($config['dhcpd']) && isset($config['dhcpd'][$if]['enable']) && $_POST['type'] != "static")
376 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The DHCP Server is active on this interface and it can be used only with a static IP configuration. Please disable the DHCP Server service on this interface first, then change the interface configuration.");
377 0c9da721 Ermal Lu?i
378 ef130e9f Ermal
	switch(strtolower($_POST['type'])) {
379 9ff9a1c7 Seth Mos
		case "static":
380
			$reqdfields = explode(" ", "ipaddr subnet gateway");
381 8cc6876f groo
			$reqdfieldsn = array(gettext("IP address"),gettext("Subnet bit count"),gettext("Gateway"));
382 9ff9a1c7 Seth Mos
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
383 8fc0b2dc Ermal
			break;
384 88c00a65 Ermal
		case "none":
385 62a4abc9 Ermal
			if(is_array($config['virtualip']['vip'])) {
386
				foreach ($config['virtualip']['vip'] as $vip) {
387
					if ($vip['interface'] == $if)
388
						$input_errors[] = gettext("This interface is referenced by VIPs please delete those before setting the interface to 'none' configuration.");
389
				}
390
			}
391 88c00a65 Ermal
		case "dhcp":
392 9ff9a1c7 Seth Mos
			break;
393 513b762e gnhb
		case "ppp":
394
			$reqdfields = explode(" ", "port phone");
395 8cc6876f groo
			$reqdfieldsn = array(gettext("Modem Port"),gettext("Phone Number"));
396 513b762e gnhb
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
397
			break;
398 ef130e9f Ermal
		case "pppoe":
399 9ff9a1c7 Seth Mos
			if ($_POST['pppoe_dialondemand']) {
400
				$reqdfields = explode(" ", "pppoe_username pppoe_password pppoe_dialondemand pppoe_idletimeout");
401 8cc6876f groo
				$reqdfieldsn = array(gettext("PPPoE username"),gettext("PPPoE password"),gettext("Dial on demand"),gettext("Idle timeout value"));
402 9ff9a1c7 Seth Mos
			} else {
403
				$reqdfields = explode(" ", "pppoe_username pppoe_password");
404 8cc6876f groo
				$reqdfieldsn = array(gettext("PPPoE username"),gettext("PPPoE password"));
405 9ff9a1c7 Seth Mos
			}
406
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
407
			break;
408 ef130e9f Ermal
		case "pptp":
409 9ff9a1c7 Seth Mos
			if ($_POST['pptp_dialondemand']) {
410
				$reqdfields = explode(" ", "pptp_username pptp_password pptp_local pptp_subnet pptp_remote pptp_dialondemand pptp_idletimeout");
411 8cc6876f groo
				$reqdfieldsn = array(gettext("PPTP username"),gettext("PPTP password"),gettext("PPTP local IP address"),gettext("PPTP subnet"),gettext("PPTP remote IP address"),gettext("Dial on demand"),gettext("Idle timeout value"));
412 9ff9a1c7 Seth Mos
			} else {
413
				$reqdfields = explode(" ", "pptp_username pptp_password pptp_local pptp_subnet pptp_remote");
414 8cc6876f groo
				$reqdfieldsn = array(gettext("PPTP username"),gettext("PPTP password"),gettext("PPTP local IP address"),gettext("PPTP subnet"),gettext("PPTP remote IP address"));
415 9ff9a1c7 Seth Mos
			}
416
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
417
			break;
418 53c82ef9 Scott Ullrich
	}
419 9ff9a1c7 Seth Mos
420 53c82ef9 Scott Ullrich
	/* normalize MAC addresses - lowercase and convert Windows-ized hyphenated MACs to colon delimited */
421
	$_POST['spoofmac'] = strtolower(str_replace("-", ":", $_POST['spoofmac']));
422 c0948c6c Renato Botelho
	if (($_POST['ipaddr'] && !is_ipaddr($_POST['ipaddr'])))
423 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid IP address must be specified.");
424 c0948c6c Renato Botelho
	if (($_POST['subnet'] && !is_numeric($_POST['subnet'])))
425 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid subnet bit count must be specified.");
426 c0948c6c Renato Botelho
	if (($_POST['alias-address'] && !is_ipaddr($_POST['alias-address'])))
427 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid alias IP address must be specified.");
428 c0948c6c Renato Botelho
	if (($_POST['alias-subnet'] && !is_numeric($_POST['alias-subnet'])))
429 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid alias subnet bit count must be specified.");
430 53c82ef9 Scott Ullrich
	if ($_POST['gateway'] != "none") {
431
		$match = false;
432 9ff9a1c7 Seth Mos
		foreach($a_gateways as $gateway) {
433
			if(in_array($_POST['gateway'], $gateway)) {
434 53c82ef9 Scott Ullrich
				$match = true;
435 9ff9a1c7 Seth Mos
			}
436
		}
437
		if(!$match) {
438 136c598d Carlos Eduardo Ramos
			$input_errors[] = gettext("A valid gateway must be specified.");
439 9ff9a1c7 Seth Mos
		}
440 53c82ef9 Scott Ullrich
	}
441 c0948c6c Renato Botelho
	if (($_POST['provider'] && !is_domain($_POST['provider'])))
442 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The service name contains invalid characters.");
443 c0948c6c Renato Botelho
	if (($_POST['pppoe_idletimeout'] != "") && !is_numericint($_POST['pppoe_idletimeout']))
444 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The idle timeout value must be an integer.");
445 c0948c6c Renato Botelho
	if ($_POST['pppoe_resethour'] <> "" && !is_numericint($_POST['pppoe_resethour']) &&
446
		$_POST['pppoe_resethour'] >= 0 && $_POST['pppoe_resethour'] <=23)
447 53c82ef9 Scott Ullrich
			$input_errors[] = gettext("A valid PPPoE reset hour must be specified (0-23).");
448 c0948c6c Renato Botelho
	if ($_POST['pppoe_resetminute'] <> "" && !is_numericint($_POST['pppoe_resetminute']) &&
449
		$_POST['pppoe_resetminute'] >= 0 && $_POST['pppoe_resetminute'] <=59)
450 53c82ef9 Scott Ullrich
			$input_errors[] = gettext("A valid PPPoE reset minute must be specified (0-59).");
451 c0948c6c Renato Botelho
	if ($_POST['pppoe_resetdate'] <> "" && !is_numeric(str_replace("/", "", $_POST['pppoe_resetdate'])))
452 53c82ef9 Scott Ullrich
		$input_errors[] = gettext("A valid PPPoE reset date must be specified (mm/dd/yyyy).");
453 c0948c6c Renato Botelho
	if (($_POST['pptp_local'] && !is_ipaddr($_POST['pptp_local'])))
454 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid PPTP local IP address must be specified.");
455 c0948c6c Renato Botelho
	if (($_POST['pptp_subnet'] && !is_numeric($_POST['pptp_subnet'])))
456 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid PPTP subnet bit count must be specified.");
457 c0948c6c Renato Botelho
	if (($_POST['pptp_remote'] && !is_ipaddr($_POST['pptp_remote'])))
458 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid PPTP remote IP address must be specified.");
459 c0948c6c Renato Botelho
	if (($_POST['pptp_idletimeout'] != "") && !is_numericint($_POST['pptp_idletimeout']))
460 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The idle timeout value must be an integer.");
461 c0948c6c Renato Botelho
	if (($_POST['spoofmac'] && !is_macaddr($_POST['spoofmac'])))
462 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid MAC address must be specified.");
463 c0948c6c Renato Botelho
	if ($_POST['mtu'] && ($_POST['mtu'] < 576))
464 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The MTU must be greater than 576 bytes.");
465 c0948c6c Renato Botelho
	if ($_POST['mss'] && ($_POST['mss'] < 576))
466 4cea5cf8 Ermal
		$input_errors[] = gettext("The MSS must be greater than 576 bytes.");
467 53c82ef9 Scott Ullrich
	/* Wireless interface? */
468
	if (isset($wancfg['wireless'])) {
469
		$reqdfields = explode(" ", "mode ssid");
470 8cc6876f groo
		$reqdfieldsn = array(gettext("Mode"),gettext("SSID"));
471 53c82ef9 Scott Ullrich
		do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
472 597330aa Erik Fonnesbeck
		check_wireless_mode();
473 53c82ef9 Scott Ullrich
		/* loop through keys and enforce size */
474
		for ($i = 1; $i <= 4; $i++) {
475
			if ($_POST['key' . $i]) {
476
				/* 64 bit */
477
				if (strlen($_POST['key' . $i]) == 5)
478
					continue;
479
				if (strlen($_POST['key' . $i]) == 10) {
480
					/* hex key */
481
					if (stristr($_POST['key' . $i], "0x") == false) {
482 4634cb48 Ermal Luçi
						$_POST['key' . $i] = "0x" . $_POST['key' . $i];
483
					}
484 53c82ef9 Scott Ullrich
					continue;
485
				}
486
				if (strlen($_POST['key' . $i]) == 12) {
487
					/* hex key */
488
					if(stristr($_POST['key' . $i], "0x") == false) {
489
					$_POST['key' . $i] = "0x" . $_POST['key' . $i];
490 4634cb48 Ermal Luçi
					}
491 53c82ef9 Scott Ullrich
					continue;
492
				}
493
				/* 128 bit */
494
				if (strlen($_POST['key' . $i]) == 13)
495
					continue;
496
				if (strlen($_POST['key' . $i]) == 26) {
497
					/* hex key */
498
					if (stristr($_POST['key' . $i], "0x") == false)
499
						$_POST['key' . $i] = "0x" . $_POST['key' . $i];
500
					continue;
501 4634cb48 Ermal Luçi
				}
502 53c82ef9 Scott Ullrich
				if(strlen($_POST['key' . $i]) == 28)
503
					continue;
504 136c598d Carlos Eduardo Ramos
				$input_errors[] =  gettext("Invalid WEP key size.   Sizes should be 40 (64) bit keys or 104 (128) bit.");
505 53c82ef9 Scott Ullrich
				break;
506 4634cb48 Ermal Luçi
			}
507 5b237745 Scott Ullrich
		}
508 08fae438 Ermal Lu?i
509
		if ($_POST['passphrase']) {
510
                	$passlen = strlen($_POST['passphrase']);
511
                	if ($passlen < 8 || $passlen > 64)
512 136c598d Carlos Eduardo Ramos
                        	$input_errors[] = gettext("The length of the passphrase should be between 8 and 63 characters.");
513 08fae438 Ermal Lu?i
		}
514 53c82ef9 Scott Ullrich
	}
515
	if (!$input_errors) {
516 ef130e9f Ermal
		if ($wancfg['type'] != $_POST['type']) {
517
			if (in_array($wancfg['ipaddr'], array("ppp", "pppoe", "pptp", "l2tp"))) {
518
				$wancfg['if'] = $a_ppps[$pppid]['ports'];
519
				unset($a_ppps[$pppid]);
520 1f676b67 Ermal
			} else if ($wancfg['type'] == "dhcp") {
521
				$pid = find_dhclient_process($realif);
522
				if($pid)
523
					posix_kill($pid, SIGTERM);
524 ef130e9f Ermal
			}
525 1f676b67 Ermal
				
526 ef130e9f Ermal
		}
527 d85ba87f gnhb
		$ppp = array();
528 da75413d Ermal
		if ($wancfg['ipaddr'] != "ppp")
529
			unset($wancfg['ipaddr']);
530 53c82ef9 Scott Ullrich
		unset($wancfg['subnet']);
531
		unset($wancfg['gateway']);
532
		unset($wancfg['dhcphostname']);
533
		unset($wancfg['pppoe_username']);
534
		unset($wancfg['pppoe_password']);
535
		unset($wancfg['pptp_username']);
536
		unset($wancfg['pptp_password']);
537
		unset($wancfg['provider']);
538
		unset($wancfg['ondemand']);
539
		unset($wancfg['timeout']);
540 8b7ae9a3 jim-p
		if (isset($wancfg['pppoe']['pppoe-reset-type']))
541
			unset($wancfg['pppoe']['pppoe-reset-type']);
542 53c82ef9 Scott Ullrich
		unset($wancfg['local']);
543
		unset($wancfg['subnet']);
544
		unset($wancfg['remote']);
545 8256f324 gnhb
		unset($a_ppps[$pppid]['apn']);
546
		unset($a_ppps[$pppid]['phone']);
547
		unset($a_ppps[$pppid]['localip']);
548
		unset($a_ppps[$pppid]['subnet']);
549
		unset($a_ppps[$pppid]['gateway']);
550
		unset($a_ppps[$pppid]['pppoe-reset-type']);
551 1d7e1d6c gnhb
		unset($a_ppps[$pppid]['provider']);
552 c0948c6c Renato Botelho
553 53c82ef9 Scott Ullrich
		$wancfg['descr'] = remove_bad_chars($_POST['descr']);
554 6a688547 Ermal
		$wancfg['enable'] =  $_POST['enable']  == "yes" ? true : false;
555 9ff9a1c7 Seth Mos
556
		/* for dynamic interfaces we tack a gateway item onto the array to prevent system
557
		 * log messages from appearing. They can also manually add these items */
558
		/* 1st added gateway gets a default bit */
559 2f678757 Ermal
		if(!empty($a_gateways)) {
560
			$gateway_item = array();
561 9ff9a1c7 Seth Mos
			/* check for duplicates */
562
			$skip = false;
563
			foreach($a_gateways as $item) {
564
				if(($item['interface'] == "$if") && ($item['gateway'] == "dynamic")) {
565
					$skip = true;
566
				}
567
			}
568
			if($skip == false) {
569 136c598d Carlos Eduardo Ramos
				$gateway_item['gateway'] = gettext("dynamic");
570
				$gateway_item['descr'] = gettext("Interface") . $if . gettext("dynamic gateway");
571 9ff9a1c7 Seth Mos
				$gateway_item['name'] = "GW_" . strtoupper($if);
572
				$gateway_item['interface'] = "{$if}";
573
			} else {
574
				unset($gateway_item);
575
			}
576
		}
577 c0948c6c Renato Botelho
578 9ff9a1c7 Seth Mos
		switch($_POST['type']) {
579
			case "static":
580
				$wancfg['ipaddr'] = $_POST['ipaddr'];
581
				$wancfg['subnet'] = $_POST['subnet'];
582
				if ($_POST['gateway'] != "none") {
583
					$wancfg['gateway'] = $_POST['gateway'];
584
				}
585
				break;
586
			case "dhcp":
587
				$wancfg['ipaddr'] = "dhcp";
588
				$wancfg['dhcphostname'] = $_POST['dhcphostname'];
589
				$wancfg['alias-address'] = $_POST['alias-address'];
590
				$wancfg['alias-subnet'] = $_POST['alias-subnet'];
591
				if($gateway_item) {
592
					$a_gateways[] = $gateway_item;
593
				}
594
				break;
595
			case "carpdev-dhcp":
596
				$wancfg['ipaddr'] = "carpdev-dhcp";
597
				$wancfg['dhcphostname'] = $_POST['dhcphostname'];
598
				$wancfg['alias-address'] = $_POST['alias-address'];
599
				$wancfg['alias-subnet'] = $_POST['alias-subnet'];
600
				if($gateway_item) {
601
					$a_gateways[] = $gateway_item;
602
				}
603
				break;
604 3a906378 gnhb
			case "ppp":
605
				$a_ppps[$pppid]['ptpid'] = $_POST['ptpid'];
606
				$a_ppps[$pppid]['type'] = $_POST['type'];
607 1d7e1d6c gnhb
				$a_ppps[$pppid]['if'] = $_POST['type'].$_POST['ptpid'];
608 3a906378 gnhb
				$a_ppps[$pppid]['ports'] = $_POST['port'];
609
				$a_ppps[$pppid]['username'] = $_POST['username'];
610
				$a_ppps[$pppid]['password'] = base64_encode($_POST['password']);
611 8256f324 gnhb
				$a_ppps[$pppid]['phone'] = $_POST['phone'];
612 3a906378 gnhb
				$a_ppps[$pppid]['apn'] = $_POST['apn'];
613 1d7e1d6c gnhb
				$wancfg['if'] = $_POST['type'] . $_POST['ptpid'];
614 8256f324 gnhb
				$wancfg['ipaddr'] = $_POST['type'];
615
				unset($a_ppps[$pppid]['ondemand']);
616
				unset($a_ppps[$pppid]['idletimeout']);
617 3a906378 gnhb
				break;
618
619 9ff9a1c7 Seth Mos
			case "pppoe":
620 6c05cfb0 gnhb
				$a_ppps[$pppid]['ptpid'] = $_POST['ptpid'];
621
				$a_ppps[$pppid]['type'] = $_POST['type'];
622 1d7e1d6c gnhb
				$a_ppps[$pppid]['if'] = $_POST['type'].$_POST['ptpid'];
623 d85ba87f gnhb
				if (isset($_POST['ppp_port']))
624 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $_POST['ppp_port'];
625 d85ba87f gnhb
				else
626 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $wancfg['if'];
627
				$a_ppps[$pppid]['username'] = $_POST['pppoe_username'];
628
				$a_ppps[$pppid]['password'] = base64_encode($_POST['pppoe_password']);
629 d85ba87f gnhb
				if (!empty($_POST['provider']))
630 6c05cfb0 gnhb
					$a_ppps[$pppid]['provider'] = $_POST['provider'];
631 d85ba87f gnhb
				else
632 6c05cfb0 gnhb
					unset($a_ppps[$pppid]['provider']);
633
				$a_ppps[$pppid]['ondemand'] = $_POST['pppoe_dialondemand'] ? true : false;
634 d85ba87f gnhb
				if (!empty($_POST['idletimeout']))
635 6c05cfb0 gnhb
					$a_ppps[$pppid]['idletimeout'] = $_POST['pppoe_idletimeout'];
636 d85ba87f gnhb
				else
637 6c05cfb0 gnhb
					unset($a_ppps[$pppid]['idletimeout']);
638 d85ba87f gnhb
639
				if (!empty($_POST['pppoe-reset-type']))
640 6c05cfb0 gnhb
					$a_ppps[$pppid]['pppoe-reset-type'] = $_POST['pppoe-reset-type'];
641 d85ba87f gnhb
				else
642 6c05cfb0 gnhb
					unset($a_ppps[$pppid]['pppoe-reset-type']);
643 1d7e1d6c gnhb
				$wancfg['if'] = $_POST['type'].$_POST['ptpid'];
644 d85ba87f gnhb
				$wancfg['ipaddr'] = $_POST['type'];
645 9ff9a1c7 Seth Mos
				if($gateway_item) {
646
					$a_gateways[] = $gateway_item;
647
				}
648 c0948c6c Renato Botelho
649 9ff9a1c7 Seth Mos
				break;
650
			case "pptp":
651 6c05cfb0 gnhb
				$a_ppps[$pppid]['ptpid'] = $_POST['ptpid'];
652
				$a_ppps[$pppid]['type'] = $_POST['type'];
653 1d7e1d6c gnhb
				$a_ppps[$pppid]['if'] = $_POST['type'].$_POST['ptpid'];
654 d85ba87f gnhb
				if (isset($_POST['ppp_port']))
655 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $_POST['ppp_port'];
656 d85ba87f gnhb
				else
657 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $wancfg['if'];
658
				$a_ppps[$pppid]['username'] = $_POST['pptp_username'];
659
				$a_ppps[$pppid]['password'] = base64_encode($_POST['pptp_password']);
660 ced4df74 gnhb
				$a_ppps[$pppid]['localip'] = $_POST['pptp_local'];
661 6c05cfb0 gnhb
				$a_ppps[$pppid]['subnet'] = $_POST['pptp_subnet'];
662
				$a_ppps[$pppid]['gateway'] = $_POST['pptp_remote'];
663
				$a_ppps[$pppid]['ondemand'] = $_POST['pptp_dialondemand'] ? true : false;
664 d85ba87f gnhb
				if (!empty($_POST['idletimeout']))
665 6c05cfb0 gnhb
					$a_ppps[$pppid]['idletimeout'] = $_POST['pptp_idletimeout'];
666 d85ba87f gnhb
				else
667 6c05cfb0 gnhb
					unset($a_ppps[$pppid]['idletimeout']);
668 1d7e1d6c gnhb
				$wancfg['if'] = $_POST['type'].$_POST['ptpid'];
669 d85ba87f gnhb
				$wancfg['ipaddr'] = $_POST['type'];
670 9ff9a1c7 Seth Mos
				if($gateway_item) {
671
					$a_gateways[] = $gateway_item;
672
				}
673
				break;
674 6c05cfb0 gnhb
			case "none":
675
				break;
676 4634cb48 Ermal Luçi
		}
677 1d7e1d6c gnhb
		handle_pppoe_reset($_POST);
678 c0948c6c Renato Botelho
679 9ff9a1c7 Seth Mos
		if($_POST['blockpriv'] == "yes") {
680 53c82ef9 Scott Ullrich
			$wancfg['blockpriv'] = true;
681 9ff9a1c7 Seth Mos
		} else {
682 53c82ef9 Scott Ullrich
			unset($wancfg['blockpriv']);
683 9ff9a1c7 Seth Mos
		}
684
		if($_POST['blockbogons'] == "yes") {
685 53c82ef9 Scott Ullrich
			$wancfg['blockbogons'] = true;
686 9ff9a1c7 Seth Mos
		} else {
687 53c82ef9 Scott Ullrich
			unset($wancfg['blockbogons']);
688 9ff9a1c7 Seth Mos
		}
689 53c82ef9 Scott Ullrich
		$wancfg['spoofmac'] = $_POST['spoofmac'];
690 9ff9a1c7 Seth Mos
		if (empty($_POST['mtu'])) {
691 d6a891da Ermal Lu?i
			unset($wancfg['mtu']);
692 9ff9a1c7 Seth Mos
		} else {
693 d6a891da Ermal Lu?i
			$wancfg['mtu'] = $_POST['mtu'];
694 9ff9a1c7 Seth Mos
		}
695 4cea5cf8 Ermal
		if (empty($_POST['mss'])) {
696
			unset($wancfg['mss']);
697
		} else {
698
			$wancfg['mss'] = $_POST['mss'];
699
		}
700 9ff9a1c7 Seth Mos
		if (isset($wancfg['wireless'])) {
701 25a6411a Scott Ullrich
			handle_wireless_post();
702 9ff9a1c7 Seth Mos
		}
703 c0948c6c Renato Botelho
704 dd18038e Ermal
		conf_mount_ro();
705 53c82ef9 Scott Ullrich
		write_config();
706 dd18038e Ermal
707
		if (file_exists("{$g['tmp_path']}/.interfaces.apply"))
708
			$toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.interfaces.apply"));
709
		else
710
			$toapplylist = array();
711
		$toapplylist[$if] = $if; 
712
		file_put_contents("{$g['tmp_path']}/.interfaces.apply", serialize($toapplylist));
713
714 a368a026 Ermal Lu?i
		mark_subsystem_dirty('interfaces');
715 dd18038e Ermal
716 53c82ef9 Scott Ullrich
		/* regenerate cron settings/crontab file */
717
		configure_cron();
718 dd18038e Ermal
719 53c82ef9 Scott Ullrich
		header("Location: interfaces.php?if={$if}");
720
		exit;
721
	}
722 c0948c6c Renato Botelho
723
} // end if($_POST)
724 270c4607 Scott Ullrich
725 25a6411a Scott Ullrich
function handle_wireless_post() {
726 f62c44d8 Erik Fonnesbeck
	global $_POST, $config, $g, $wancfg, $if, $wl_countries_attr, $wlanbaseif;
727 270c4607 Scott Ullrich
	if (!is_array($wancfg['wireless']))
728
		$wancfg['wireless'] = array();
729
	$wancfg['wireless']['standard'] = $_POST['standard'];
730
	$wancfg['wireless']['mode'] = $_POST['mode'];
731
	$wancfg['wireless']['protmode'] = $_POST['protmode'];
732
	$wancfg['wireless']['ssid'] = $_POST['ssid'];
733
	$wancfg['wireless']['channel'] = $_POST['channel'];
734
	$wancfg['wireless']['authmode'] = $_POST['authmode'];
735
	$wancfg['wireless']['txpower'] = $_POST['txpower'];
736
	$wancfg['wireless']['distance'] = $_POST['distance'];
737 20f09b3b Erik Fonnesbeck
	$wancfg['wireless']['regdomain'] = $_POST['regdomain'];
738
	$wancfg['wireless']['regcountry'] = $_POST['regcountry'];
739
	$wancfg['wireless']['reglocation'] = $_POST['reglocation'];
740
	if (!empty($wancfg['wireless']['regdomain']) && !empty($wancfg['wireless']['regcountry'])) {
741 071d63b9 Erik Fonnesbeck
		foreach($wl_countries_attr as $wl_country) {
742
			if ($wancfg['wireless']['regcountry'] == $wl_country['ID']) {
743
				$wancfg['wireless']['regdomain'] = $wl_country['rd'][0]['REF'];
744 20f09b3b Erik Fonnesbeck
				break;
745
			}
746
		}
747
	}
748 270c4607 Scott Ullrich
	if (!is_array($wancfg['wireless']['wpa']))
749
		$wancfg['wireless']['wpa'] = array();
750
	$wancfg['wireless']['wpa']['macaddr_acl'] = $_POST['macaddr_acl'];
751
	$wancfg['wireless']['wpa']['auth_algs'] = $_POST['auth_algs'];
752
	$wancfg['wireless']['wpa']['wpa_mode'] = $_POST['wpa_mode'];
753
	$wancfg['wireless']['wpa']['wpa_key_mgmt'] = $_POST['wpa_key_mgmt'];
754
	$wancfg['wireless']['wpa']['wpa_pairwise'] = $_POST['wpa_pairwise'];
755
	$wancfg['wireless']['wpa']['wpa_group_rekey'] = $_POST['wpa_group_rekey'];
756
	$wancfg['wireless']['wpa']['wpa_gmk_rekey'] = $_POST['wpa_gmk_rekey'];
757
	$wancfg['wireless']['wpa']['passphrase'] = $_POST['passphrase'];
758
	$wancfg['wireless']['wpa']['ext_wpa_sw'] = $_POST['ext_wpa_sw'];
759 5949124c Scott Ullrich
	$wancfg['wireless']['auth_server_addr'] = $_POST['auth_server_addr'];
760
	$wancfg['wireless']['auth_server_port'] = $_POST['auth_server_port'];
761
	$wancfg['wireless']['auth_server_shared_secret'] = $_POST['auth_server_shared_secret'];
762 f62c44d8 Erik Fonnesbeck
	if ($_POST['persistcommonwireless'] == "yes") {
763
		if (!is_array($config['wireless']['interfaces'][$wlanbaseif]))
764
			$config['wireless']['interfaces'][$wlanbaseif] = array();
765
	} else if (isset($config['wireless']['interfaces'][$wlanbaseif]))
766
		unset($config['wireless']['interfaces'][$wlanbaseif]);
767 1930ccb6 Erik Fonnesbeck
	if (isset($_POST['diversity']) && is_numeric($_POST['diversity']))
768 537bf7b3 Erik Fonnesbeck
		$wancfg['wireless']['diversity'] = $_POST['diversity'];
769
	else if (isset($wancfg['wireless']['diversity']))
770
		unset($wancfg['wireless']['diversity']);
771 1930ccb6 Erik Fonnesbeck
	if (isset($_POST['txantenna']) && is_numeric($_POST['txantenna']))
772 537bf7b3 Erik Fonnesbeck
		$wancfg['wireless']['txantenna'] = $_POST['txantenna'];
773
	else if (isset($wancfg['wireless']['txantenna']))
774
		unset($wancfg['wireless']['txantenna']);
775 1930ccb6 Erik Fonnesbeck
	if (isset($_POST['rxantenna']) && is_numeric($_POST['rxantenna']))
776 537bf7b3 Erik Fonnesbeck
		$wancfg['wireless']['rxantenna'] = $_POST['rxantenna'];
777
	else if (isset($wancfg['wireless']['rxantenna']))
778
		unset($wancfg['wireless']['rxantenna']);
779 270c4607 Scott Ullrich
	if ($_POST['hidessid_enable'] == "yes")
780
		$wancfg['wireless']['hidessid']['enable'] = true;
781
	else if (isset($wancfg['wireless']['hidessid']['enable']))
782
		unset($wancfg['wireless']['hidessid']['enable']);
783
	if ($_POST['mac_acl_enable'] == "yes")
784
		$wancfg['wireless']['wpa']['mac_acl_enable'] = true;
785
	else if (isset($wancfg['wireless']['wpa']['mac_acl_enable']))
786
		unset($wancfg['wireless']['wpa']['mac_acl_enable']);
787 c9e7d30d Scott Ullrich
	if ($_POST['rsn_preauth'] == "yes")
788 ea62cd32 Scott Ullrich
		$wancfg['wireless']['wpa']['rsn_preauth'] = true;
789 c0948c6c Renato Botelho
	else
790 ea62cd32 Scott Ullrich
		unset($wancfg['wireless']['wpa']['rsn_preauth']);
791 270c4607 Scott Ullrich
	if ($_POST['ieee8021x'] == "yes")
792
		$wancfg['wireless']['wpa']['ieee8021x']['enable'] = true;
793
	else if (isset($wancfg['wireless']['wpa']['ieee8021x']['enable']))
794
		unset($wancfg['wireless']['wpa']['ieee8021x']['enable']);
795
	if ($_POST['wpa_strict_rekey'] == "yes")
796
		$wancfg['wireless']['wpa']['wpa_strict_rekey'] = true;
797
	else if (isset($wancfg['wireless']['wpa']['wpa_strict_rekey']))
798
		unset($wancfg['wireless']['wpa']['wpa_strict_rekey']);
799
	if ($_POST['debug_mode'] == "yes")
800
		$wancfg['wireless']['wpa']['debug_mode'] = true;
801
	else if (isset($wancfg['wireless']['wpa']['debug_mode']))
802
		sunset($wancfg['wireless']['wpa']['debug_mode']);
803
	if ($_POST['wpa_enable'] == "yes")
804
		$wancfg['wireless']['wpa']['enable'] = $_POST['wpa_enable'] = true;
805
	else if (isset($wancfg['wireless']['wpa']['enable']))
806
		unset($wancfg['wireless']['wpa']['enable']);
807
	if ($_POST['wep_enable'] == "yes") {
808
		if (!is_array($wancfg['wireless']['wep']))
809
			$wancfg['wireless']['wep'] = array();
810
		$wancfg['wireless']['wep']['enable'] = $_POST['wep_enable'] = true;
811
	} else if (isset($wancfg['wireless']['wep']))
812
		unset($wancfg['wireless']['wep']);
813
	if ($_POST['wme_enable'] == "yes") {
814
		if (!is_array($wancfg['wireless']['wme']))
815
			$wancfg['wireless']['wme'] = array();
816
		$wancfg['wireless']['wme']['enable'] = $_POST['wme_enable'] = true;
817
	} else if (isset($wancfg['wireless']['wme']['enable']))
818
		unset($wancfg['wireless']['wme']['enable']);
819 57bbd532 Erik Fonnesbeck
	if ($_POST['puremode'] == "11g") {
820 270c4607 Scott Ullrich
		if (!is_array($wancfg['wireless']['pureg']))
821
			$wancfg['wireless']['pureg'] = array();
822 57bbd532 Erik Fonnesbeck
		$wancfg['wireless']['pureg']['enable'] = true;
823
	} else if ($_POST['puremode'] == "11n") {
824 ed459692 Erik Fonnesbeck
		if (!is_array($wancfg['wireless']['puren']))
825
			$wancfg['wireless']['puren'] = array();
826 57bbd532 Erik Fonnesbeck
		$wancfg['wireless']['puren']['enable'] = true;
827
	} else {
828
		if (isset($wancfg['wireless']['pureg']))
829
			unset($wancfg['wireless']['pureg']);
830
		if (isset($wancfg['wireless']['puren']))
831
			unset($wancfg['wireless']['puren']);
832
	}
833 270c4607 Scott Ullrich
	if ($_POST['apbridge_enable'] == "yes") {
834
		if (!is_array($wancfg['wireless']['apbridge']))
835
			$wancfg['wireless']['apbridge'] = array();
836
		$wancfg['wireless']['apbridge']['enable'] = $_POST['apbridge_enable'] = true;
837
	} else if (isset($wancfg['wireless']['apbridge']['enable']))
838
		unset($wancfg['wireless']['apbridge']['enable']);
839 9be20928 Erik Fonnesbeck
	if ($_POST['standard'] == "11g Turbo" || $_POST['standard'] == "11a Turbo") {
840 270c4607 Scott Ullrich
		if (!is_array($wancfg['wireless']['turbo']))
841
			$wancfg['wireless']['turbo'] = array();
842
		$wancfg['wireless']['turbo']['enable'] = true;
843
	} else if (isset($wancfg['wireless']['turbo']['enable']))
844
		unset($wancfg['wireless']['turbo']['enable']);
845
	$wancfg['wireless']['wep']['key'] = array();
846
	for ($i = 1; $i <= 4; $i++) {
847
		if ($_POST['key' . $i]) {
848
			$newkey = array();
849
			$newkey['value'] = $_POST['key' . $i];
850
			if ($_POST['txkey'] == $i)
851
				$newkey['txkey'] = true;
852
			$wancfg['wireless']['wep']['key'][] = $newkey;
853
		}
854 5b237745 Scott Ullrich
	}
855 8f0289e7 Erik Fonnesbeck
	interface_sync_wireless_clones($wancfg, true);
856 5b237745 Scott Ullrich
}
857 7f43ca88 Scott Ullrich
858 597330aa Erik Fonnesbeck
function check_wireless_mode() {
859 651fff4f Erik Fonnesbeck
	global $_POST, $config, $g, $wlan_modes, $wancfg, $if, $wlanif, $wlanbaseif, $old_wireless_mode, $input_errors;
860 597330aa Erik Fonnesbeck
861
	if ($wancfg['wireless']['mode'] == $_POST['mode'])
862
		return;
863
864
	if (does_interface_exist(interface_get_wireless_clone($wlanbaseif)))
865
		$clone_count = 1;
866
	else
867
		$clone_count = 0;
868
	if (is_array($config['wireless']['clone'])) {
869
		foreach ($config['wireless']['clone'] as $clone) {
870
			if ($clone['if'] == $wlanbaseif)
871
				$clone_count++;
872
		}
873
	}
874
	if ($clone_count > 1) {
875
		$old_wireless_mode = $wancfg['wireless']['mode'];
876
		$wancfg['wireless']['mode'] = $_POST['mode'];
877
		if (!interface_wireless_clone("{$wlanif}_", $wancfg)) {
878 4c807d76 Erik Fonnesbeck
			$input_errors[] = sprintf(gettext("Unable to change mode to %s.  You may already have the maximum number of wireless clones supported in this mode."), $wlan_modes[$wancfg['wireless']['mode']]);
879 597330aa Erik Fonnesbeck
		} else {
880
			mwexec("/sbin/ifconfig {$wlanif}_ destroy");
881
		}
882
		$wancfg['wireless']['mode'] = $old_wireless_mode;
883
	}
884
}
885
886 a6d9251e Scott Ullrich
$pgtitle = array(gettext("Interfaces"), $pconfig['descr']);
887 af1e2031 jim-p
$statusurl = "status_interfaces.php";
888
889 58af5941 Scott Ullrich
$closehead = false;
890 7f43ca88 Scott Ullrich
include("head.inc");
891 c0948c6c Renato Botelho
$types = array("none" => gettext("None"), "static" => gettext("Static"), "dhcp" => gettext("DHCP"), "ppp" => gettext("PPP"), "pppoe" => gettext("PPPoE"), "pptp" => gettext("PPTP") /* , "carpdev-dhcp" => "CarpDev"*/);
892 7f43ca88 Scott Ullrich
893 5b237745 Scott Ullrich
?>
894 7f43ca88 Scott Ullrich
895 8098302a Scott Ullrich
<script type="text/javascript" src="/javascript/numericupdown/js/numericupdown.js"></script>
896 58af5941 Scott Ullrich
<link href="/javascript/numericupdown/css/numericupdown.css" rel="stylesheet" type="text/css" />
897 8098302a Scott Ullrich
<script type="text/javascript" src="/javascript/datepicker/js/datepicker.js"></script>
898
<link href="/javascript/datepicker/css/datepicker.css" rel="stylesheet" type="text/css"/>
899 58af5941 Scott Ullrich
900
<script type="text/javascript">
901 9978e156 gnhb
	function updateType(t) {
902 886f1f69 Scott Ullrich
		switch(t) {
903 9978e156 gnhb
			case "none": {
904 6c05cfb0 gnhb
				$('static','dhcp','pppoe','pptp', 'ppp').invoke('hide');
905 9978e156 gnhb
				break;
906
			}
907
			case "static": {
908 6c05cfb0 gnhb
				$('none','dhcp','pppoe','pptp', 'ppp').invoke('hide');
909 9978e156 gnhb
				break;
910
			}
911
			case "dhcp": {
912 6c05cfb0 gnhb
				$('none','static','pppoe','pptp', 'ppp').invoke('hide');
913
				break;
914
			}
915
			case "ppp": {
916
				$('none','static','dhcp','pptp', 'pppoe').invoke('hide');
917 3a906378 gnhb
				country_list();
918 9978e156 gnhb
				break;
919
			}
920
			case "pppoe": {
921 6c05cfb0 gnhb
				$('none','static','dhcp','pptp', 'ppp').invoke('hide');
922 9978e156 gnhb
				break;
923
			}
924
			case "pptp": {
925 6c05cfb0 gnhb
				$('none','static','dhcp','pppoe', 'ppp').invoke('hide');
926 9978e156 gnhb
				break;
927 09583657 Scott Ullrich
			}
928 886f1f69 Scott Ullrich
		}
929 df00291c Scott Ullrich
		$(t).show();
930 09583657 Scott Ullrich
	}
931 15aea4cb Seth Mos
932 886f1f69 Scott Ullrich
	function show_allcfg(obj) {
933
		if (obj.checked)
934 df00291c Scott Ullrich
			$('allcfg').show();
935 886f1f69 Scott Ullrich
		else
936
			$('allcfg').hide();
937
	}
938 9978e156 gnhb
939 d85ba87f gnhb
	function show_reset_settings(reset_type) {
940 c0948c6c Renato Botelho
		if (reset_type == 'preset') {
941 d85ba87f gnhb
			Effect.Appear('pppoepresetwrap', { duration: 0.0 });
942 c0948c6c Renato Botelho
			Effect.Fade('pppoecustomwrap', { duration: 0.0 });
943
		}
944
		else if (reset_type == 'custom') {
945 d85ba87f gnhb
			Effect.Appear('pppoecustomwrap', { duration: 0.0 });
946
			Effect.Fade('pppoepresetwrap', { duration: 0.0 });
947
		} else {
948
			Effect.Fade('pppoecustomwrap', { duration: 0.0 });
949
			Effect.Fade('pppoepresetwrap', { duration: 0.0 });
950
		}
951
	}
952 886f1f69 Scott Ullrich
	function show_mon_config() {
953
		document.getElementById("showmonbox").innerHTML='';
954
		aodiv = document.getElementById('showmon');
955
		aodiv.style.display = "block";
956
	}
957 4634cb48 Ermal Luçi
958 886f1f69 Scott Ullrich
	function openwindow(url) {
959
		var oWin = window.open(url,"pfSensePop","width=620,height=400,top=150,left=150");
960 c0948c6c Renato Botelho
		if (oWin==null || typeof(oWin)=="undefined")
961 886f1f69 Scott Ullrich
			return false;
962 c0948c6c Renato Botelho
		else
963 886f1f69 Scott Ullrich
			return true;
964
	}
965 3a906378 gnhb
	function country_list() {
966
		$('country').childElements().each(function(node) { node.remove(); });
967
		$('provider').childElements().each(function(node) { node.remove(); });
968
		$('providerplan').childElements().each(function(node) { node.remove(); });
969
		new Ajax.Request("getserviceproviders.php",{
970
			onSuccess: function(response) {
971
				var responseTextArr = response.responseText.split("\n");
972
				responseTextArr.sort();
973
				responseTextArr.each( function(value) {
974
					var option = new Element('option');
975
					country = value.split(":");
976
					option.text = country[0];
977
					option.value = country[1];
978
					$('country').insert({ bottom : option });
979
				});
980
			}
981
		});
982
		$('trcountry').setStyle({display : "table-row"});
983
	}
984 c0948c6c Renato Botelho
985 3a906378 gnhb
	function providers_list() {
986
		$('provider').childElements().each(function(node) { node.remove(); });
987
		$('providerplan').childElements().each(function(node) { node.remove(); });
988
		new Ajax.Request("getserviceproviders.php",{
989
			parameters: {country : $F('country')},
990
			onSuccess: function(response) {
991
				var responseTextArr = response.responseText.split("\n");
992
				responseTextArr.sort();
993
				responseTextArr.each( function(value) {
994
					var option = new Element('option');
995
					option.text = value;
996
					option.value = value;
997
					$('provider').insert({ bottom : option });
998
				});
999
			}
1000
		});
1001
		$('trprovider').setStyle({display : "table-row"});
1002
		$('trproviderplan').setStyle({display : "none"});
1003
	}
1004 c0948c6c Renato Botelho
1005 3a906378 gnhb
	function providerplan_list() {
1006
		$('providerplan').childElements().each(function(node) { node.remove(); });
1007
		$('providerplan').insert( new Element('option') );
1008
		new Ajax.Request("getserviceproviders.php",{
1009
			parameters: {country : $F('country'), provider : $F('provider')},
1010
			onSuccess: function(response) {
1011
				var responseTextArr = response.responseText.split("\n");
1012
				responseTextArr.sort();
1013
				responseTextArr.each( function(value) {
1014
					if(value != "") {
1015
						providerplan = value.split(":");
1016 c0948c6c Renato Botelho
1017 3a906378 gnhb
						var option = new Element('option');
1018
						option.text = providerplan[0] + " - " + providerplan[1];
1019
						option.value = providerplan[1];
1020
						$('providerplan').insert({ bottom : option });
1021
					}
1022
				});
1023
			}
1024
		});
1025
		$('trproviderplan').setStyle({display : "table-row"});
1026
	}
1027 c0948c6c Renato Botelho
1028 3a906378 gnhb
	function prefill_provider() {
1029
		new Ajax.Request("getserviceproviders.php",{
1030
			parameters: {country : $F('country'), provider : $F('provider'), plan : $F('providerplan')},
1031
			onSuccess: function(response) {
1032
				var xmldoc = response.responseXML;
1033
				var provider = xmldoc.getElementsByTagName('connection')[0];
1034
				$('username').setValue('');
1035
				$('password').setValue('');
1036
				if(provider.getElementsByTagName('apn')[0].firstChild.data == "CDMA") {
1037 f1ca6b86 Chris Buechler
					$('phone').setValue('#777');
1038 3a906378 gnhb
					$('apn').setValue('');
1039
				} else {
1040
					$('phone').setValue('*99#');
1041
					$('apn').setValue(provider.getElementsByTagName('apn')[0].firstChild.data);
1042
				}
1043
				$('username').setValue(provider.getElementsByTagName('username')[0].firstChild.data);
1044
				$('password').setValue(provider.getElementsByTagName('password')[0].firstChild.data);
1045
			}
1046
		});
1047
	}
1048
1049 5b237745 Scott Ullrich
</script>
1050 58af5941 Scott Ullrich
</head>
1051 886f1f69 Scott Ullrich
	<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
1052
	<?php include("fbegin.inc"); ?>
1053
	<form action="interfaces.php" method="post" name="iform" id="iform">
1054
		<?php if ($input_errors) print_input_errors($input_errors); ?>
1055 a368a026 Ermal Lu?i
		<?php if (is_subsystem_dirty('interfaces')): ?><p>
1056 ea6be4a7 Erik Fonnesbeck
		<?php print_info_box_np(sprintf(gettext("The %s configuration has been changed."),$wancfg['descr'])."<p>".gettext("You must apply the changes in order for them to take effect.")."<p>".gettext("Don't forget to adjust the DHCP Server range if needed after applying."));?><br />
1057 744ea190 Scott Ullrich
		<?php endif; ?>
1058
		<?php if ($savemsg) print_info_box($savemsg); ?>
1059 98f43e13 Scott Ullrich
		<table width="100%" border="0" cellpadding="6" cellspacing="0">
1060 09583657 Scott Ullrich
			<tr>
1061 30ade846 gnhb
				<td id="mainarea">
1062
					<div class="tabcont">
1063 09583657 Scott Ullrich
					<table width="100%" border="0" cellpadding="6" cellspacing="0">
1064
						<tr>
1065 136c598d Carlos Eduardo Ramos
							<td colspan="2" valign="top" class="listtopic"><?=gettext("General configuration"); ?></td>
1066 09583657 Scott Ullrich
						</tr>
1067
						<tr>
1068 136c598d Carlos Eduardo Ramos
							<td width="22%" valign="top" class="vncell"><?=gettext("Enable"); ?></td>
1069 30ade846 gnhb
							<td width="78%" class="vtable">
1070
								<input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable'] == true) echo "checked"; ?> onClick="show_allcfg(this);">
1071 136c598d Carlos Eduardo Ramos
							<strong><?=gettext("Enable Interface"); ?></strong>
1072 09583657 Scott Ullrich
							</td>
1073
						</tr>
1074 30ade846 gnhb
					</table>
1075
					<div style="display:none;" name="allcfg" id="allcfg">
1076
					<table width="100%" border="0" cellpadding="6" cellspacing="0">
1077 09583657 Scott Ullrich
						<tr>
1078 136c598d Carlos Eduardo Ramos
							<td width="22%" valign="top" class="vncell"><?=gettext("Description"); ?></td>
1079 09583657 Scott Ullrich
							<td width="78%" class="vtable">
1080 30ade846 gnhb
								<input name="descr" type="text" class="formfld unknown" id="descr" size="30" value="<?=htmlspecialchars($pconfig['descr']);?>">
1081 8cc6876f groo
								<br><span class="vexpl"><?= gettext("Enter a description (name) for the interface here."); ?></span>
1082 30ade846 gnhb
							</td>
1083
						</tr>
1084
						<tr>
1085 136c598d Carlos Eduardo Ramos
							<td valign="middle" class="vncell"><strong><?=gettext("Type"); ?></strong></td>
1086 c0948c6c Renato Botelho
							<td class="vtable">
1087 30ade846 gnhb
								<select name="type" onChange="updateType(this.value);" class="formselect" id="type">
1088 c0948c6c Renato Botelho
								<?php
1089
									foreach ($types as $key => $opt) {
1090 3a13f094 gnhb
										echo "<option onClick=\"updateType('{$key}');\"";
1091 c0948c6c Renato Botelho
										if ($key == $pconfig['type'])
1092 3a13f094 gnhb
											echo " selected";
1093
										echo " value=\"{$key}\" >" . htmlspecialchars($opt);
1094
										echo "</option>";
1095 c0948c6c Renato Botelho
									}
1096 30ade846 gnhb
								?>
1097 667a3184 Scott Ullrich
								</select>
1098 30ade846 gnhb
							</td>
1099
						</tr>
1100
						<tr>
1101 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("MAC address"); ?></td>
1102 30ade846 gnhb
							<td class="vtable">
1103
								<input name="spoofmac" type="text" class="formfld unknown" id="spoofmac" size="30" value="<?=htmlspecialchars($pconfig['spoofmac']);?>">
1104
								<?php
1105
									$ip = getenv('REMOTE_ADDR');
1106
									$mac = `/usr/sbin/arp -an | grep {$ip} | cut -d" " -f4`;
1107
									$mac = str_replace("\n","",$mac);
1108
									if($mac):
1109
								?>
1110 136c598d Carlos Eduardo Ramos
									<a OnClick="document.forms[0].spoofmac.value='<?=$mac?>';" href="#"><?=gettext("Insert my local MAC address"); ?></a>
1111 30ade846 gnhb
								<?php endif; ?>
1112
								<br>
1113 136c598d Carlos Eduardo Ramos
								<?=gettext("This field can be used to modify (\"spoof\") the MAC " .
1114
								"address of the WAN interface"); ?><br>
1115
								<?=gettext("(may be required with some cable connections)"); ?><br>
1116
								<?=gettext("Enter a MAC address in the following format: xx:xx:xx:xx:xx:xx " .
1117
								"or leave blank"); ?>
1118 30ade846 gnhb
							</td>
1119
						</tr>
1120
						<tr>
1121 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("MTU"); ?></td>
1122 c0948c6c Renato Botelho
							<td class="vtable">
1123 30ade846 gnhb
								<input name="mtu" type="text" class="formfld unknown" id="mtu" size="8" value="<?=htmlspecialchars($pconfig['mtu']);?>">
1124
								<br>
1125 bd6f4dcc jim-p
								<?=gettext("If you leave this field blank, the adapter's default MTU will " .
1126
								"be used. This is typically 1500 bytes but can vary on some hardware."); ?>
1127 4cea5cf8 Ermal
							</td>
1128
						</tr>
1129
						<tr>
1130
							<td valign="top" class="vncell"><?=gettext("MSS"); ?></td>
1131 c0948c6c Renato Botelho
							<td class="vtable">
1132 4cea5cf8 Ermal
								<input name="mss" type="text" class="formfld unknown" id="mss" size="8" value="<?=htmlspecialchars($pconfig['mss']);?>">
1133
								<br>
1134 136c598d Carlos Eduardo Ramos
								<?=gettext("If you enter a value in this field, then MSS clamping for " .
1135 c0948c6c Renato Botelho
								"TCP connections to the value entered above minus 40 (TCP/IP " .
1136
								"header size) will be in effect."); ?>
1137 30ade846 gnhb
							</td>
1138
						</tr>
1139
						<tr>
1140
							<td colspan="2" valign="top" height="16"></td>
1141 c0948c6c Renato Botelho
						</tr>
1142 30ade846 gnhb
						<tr style="display:none;" name="none" id="none">
1143
						</tr>
1144
						<tr style="display:none;" name="static" id="static">
1145
							<td colspan="2" style="padding:0px;">
1146
								<table width="100%" border="0" cellpadding="6" cellspacing="0">
1147
									<tr>
1148 136c598d Carlos Eduardo Ramos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("Static IP configuration"); ?></td>
1149 30ade846 gnhb
									</tr>
1150
									<tr>
1151 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("IP address"); ?></td>
1152 c0948c6c Renato Botelho
										<td width="78%" class="vtable">
1153 30ade846 gnhb
											<input name="ipaddr" type="text" class="formfld unknown" id="ipaddr" size="20" value="<?=htmlspecialchars($pconfig['ipaddr']);?>">
1154
											/
1155
											<select name="subnet" class="formselect" id="subnet">
1156
												<?php
1157
												for ($i = 32; $i > 0; $i--) {
1158
													if($i <> 31) {
1159
														echo "<option value=\"{$i}\" ";
1160
														if ($i == $pconfig['subnet']) echo "selected";
1161
														echo ">" . $i . "</option>";
1162
													}
1163
												}
1164
												?>
1165
											</select>
1166
										</td>
1167
									</tr>
1168
									<tr>
1169 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Gateway"); ?></td>
1170 30ade846 gnhb
										<td width="78%" class="vtable">
1171
											<select name="gateway" class="formselect" id="gateway">
1172 136c598d Carlos Eduardo Ramos
												<option value="none" selected><?=gettext("None"); ?></option>
1173 9978e156 gnhb
													<?php
1174 30ade846 gnhb
													if(count($a_gateways) > 0) {
1175
														foreach ($a_gateways as $gateway) {
1176
															if($gateway['interface'] == $if) {
1177 9978e156 gnhb
													?>
1178 30ade846 gnhb
															<option value="<?=$gateway['name'];?>" <?php if ($gateway['name'] == $pconfig['gateway']) echo "selected"; ?>>
1179
																<?=htmlspecialchars($gateway['name']) . " - " . htmlspecialchars($gateway['gateway']);?>
1180
															</option>
1181
													<?php
1182
															}
1183
														}
1184
													}
1185
													?>
1186
											</select>
1187
											<br/>
1188
											<div id='addgwbox'>
1189 933ea015 Carlos Eduardo Ramos
												<?=gettext("If this interface is an Internet connection, select an existing Gateway from the list or"); ?> <a OnClick="show_add_gateway();" href="#"><?=gettext("add a new one."); ?></a>
1190 30ade846 gnhb
											</div>
1191
											<div id='notebox'>
1192
											</div>
1193
											<div id="status">
1194 c0948c6c Renato Botelho
											</div>
1195 30ade846 gnhb
											<div style="display:none" id="addgateway" name="addgateway">
1196 c0948c6c Renato Botelho
												<p>
1197 30ade846 gnhb
												<table border="1" style="background:#990000; border-style: none none none none; width:225px;">
1198 9978e156 gnhb
													<tr>
1199 30ade846 gnhb
														<td>
1200
															<table bgcolor="#990000" cellpadding="1" cellspacing="1">
1201
																<tr><td>&nbsp;</td>
1202
																<tr>
1203 933ea015 Carlos Eduardo Ramos
																	<td colspan="2"><center><b><font color="white"><?=gettext("Add new gateway:"); ?></font></b></center></td>
1204 30ade846 gnhb
																</tr>
1205
																<tr><td>&nbsp;</td>
1206
																<?php
1207
																if($if == "wan" || $if == "WAN")
1208
																	$checked = " CHECKED";
1209
																?>
1210
																<tr>
1211 933ea015 Carlos Eduardo Ramos
																	<td width="45%" align="right"><font color="white"><?=gettext("Default  gateway:"); ?></td><td><input type="checkbox" id="defaultgw" name="defaultgw"<?=$checked?>></td>
1212 c0948c6c Renato Botelho
																</tr>
1213 30ade846 gnhb
																<tr>
1214 933ea015 Carlos Eduardo Ramos
																	<td align="right"><font color="white"><?=gettext("Gateway Name:"); ?></td><td><input id="name" name="name" value="<?=$wancfg['descr'] . "GW"?>"></td>
1215 30ade846 gnhb
																</tr>
1216
																<tr>
1217 933ea015 Carlos Eduardo Ramos
																	<td align="right"><font color="white"><?=gettext("Gateway IP:"); ?></td><td><input id="gatewayip" name="gatewayip"></td>
1218 30ade846 gnhb
																</tr>
1219
																<tr>
1220 933ea015 Carlos Eduardo Ramos
																	<td align="right"><font color="white"><?=gettext("Description:"); ?></td><td><input id="gatewaydescr" name="gatewaydescr"></td>
1221 30ade846 gnhb
																</tr>
1222
																<tr><td>&nbsp;</td>
1223
																<tr>
1224 7b8db0c3 Erik Fonnesbeck
																	<td>&nbsp;</td>
1225
																	<td>
1226 30ade846 gnhb
																		<center>
1227
																			<div id='savebuttondiv'>
1228
																				<input type="hidden" name="addrtype" id="addrtype" value="IPv4" />
1229 c0948c6c Renato Botelho
																				<input id="gwsave" type="Button" value="<?=gettext("Save Gateway"); ?>" onClick='hide_add_gatewaysave();'>
1230 136c598d Carlos Eduardo Ramos
																				<input id="gwcancel" type="Button" value="<?=gettext("Cancel"); ?>" onClick='hide_add_gateway();'>
1231 30ade846 gnhb
																			</div>
1232
																		</center>
1233
																	</td>
1234
																</tr>
1235 93ee6323 gnhb
																<tr><td>&nbsp;</td></tr>
1236 30ade846 gnhb
															</table>
1237 9978e156 gnhb
														</td>
1238
													</tr>
1239
												</table>
1240 30ade846 gnhb
												<p/>
1241
											</div>
1242
										</td>
1243
									</tr>
1244
								</table>
1245
							</td>
1246
						</tr>
1247
						<tr style="display:none;" name="dhcp" id="dhcp">
1248
							<td colspan="2" style="padding: 0px;">
1249
								<table width="100%" border="0" cellpadding="6" cellspacing="0">
1250
									<tr>
1251 136c598d Carlos Eduardo Ramos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("DHCP client configuration"); ?></td>
1252 30ade846 gnhb
									</tr>
1253
									<tr>
1254 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Hostname"); ?></td>
1255 30ade846 gnhb
										<td width="78%" class="vtable">
1256
											<input name="dhcphostname" type="text" class="formfld unknown" id="dhcphostname" size="40" value="<?=htmlspecialchars($pconfig['dhcphostname']);?>">
1257
											<br>
1258 136c598d Carlos Eduardo Ramos
											<?=gettext("The value in this field is sent as the DHCP client identifier " .
1259
											"and hostname when requesting a DHCP lease. Some ISPs may require " .
1260 933ea015 Carlos Eduardo Ramos
											"this (for client identification)."); ?>
1261 30ade846 gnhb
										</td>
1262
									</tr>
1263
									<tr>
1264 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Alias IP address"); ?></td>
1265 c0948c6c Renato Botelho
										<td width="78%" class="vtable">
1266 30ade846 gnhb
											<input name="alias-address" type="text" class="formfld unknown" id="alias-address" size="20" value="<?=htmlspecialchars($pconfig['alias-address']);?>">
1267
											<select name="alias-subnet" class="formselect" id="alias-subnet">
1268
												<?php
1269
												for ($i = 32; $i > 0; $i--) {
1270
													if($i <> 31) {
1271
														echo "<option value=\"{$i}\" ";
1272
														if ($i == $pconfig['alias-subnet']) echo "selected";
1273
														echo ">" . $i . "</option>";
1274
													}
1275
												}
1276
												?>
1277
											</select>
1278 136c598d Carlos Eduardo Ramos
											<?=gettext("The value in this field is used as a fixed alias IP address by the " .
1279 933ea015 Carlos Eduardo Ramos
											"DHCP client."); ?>
1280 30ade846 gnhb
										</td>
1281
									</tr>
1282
								</table>
1283
							</td>
1284
						</tr>
1285 6c05cfb0 gnhb
						<tr style="display:none;" name="ppp" id="ppp">
1286
							<td colspan="2" style="padding: 0px;">
1287
								<table width="100%" border="0" cellpadding="6" cellspacing="0">
1288
									<tr>
1289 136c598d Carlos Eduardo Ramos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("PPP configuration"); ?></td>
1290 6c05cfb0 gnhb
									</tr>
1291 3a906378 gnhb
									<tr name="ppp_provider" id="ppp_provider">
1292 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Service Provider"); ?></td>
1293 3a906378 gnhb
										<td width="78%" class="vtable">
1294
											<table border="0" cellpadding="0" cellspacing="0">
1295
												<tr id="trcountry">
1296 933ea015 Carlos Eduardo Ramos
													<td><?=gettext("Country:"); ?> &nbsp;&nbsp;</td>
1297 3a906378 gnhb
													<td>
1298
														<select class="formselect" name="country" id="country" onChange="providers_list()">
1299
															<option></option>
1300
														</select>
1301
													</td>
1302
												</tr>
1303
												<tr id="trprovider" style="display:none">
1304 933ea015 Carlos Eduardo Ramos
													<td><?=gettext("Provider:"); ?> &nbsp;&nbsp;</td>
1305 3a906378 gnhb
													<td>
1306
														<select class="formselect" name="provider" id="provider" onChange="providerplan_list()">
1307
															<option></option>
1308
														</select>
1309
													</td>
1310
												</tr>
1311
												<tr id="trproviderplan" style="display:none">
1312 933ea015 Carlos Eduardo Ramos
													<td><?=gettext("Plan:"); ?> &nbsp;&nbsp;</td>
1313 3a906378 gnhb
													<td>
1314
														<select class="formselect" name="providerplan" id="providerplan" onChange="prefill_provider()">
1315
															<option></option>
1316
														</select>
1317
													</td>
1318
												</tr>
1319
											</table>
1320 136c598d Carlos Eduardo Ramos
											<br/><span class="vexpl"><?=gettext("Select to fill in data for your service provider."); ?></span>
1321 3a906378 gnhb
										</td>
1322
									</tr>
1323 6c05cfb0 gnhb
									<tr>
1324 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Username"); ?></td>
1325 3a906378 gnhb
										<td width="78%" class="vtable">
1326
										<input name="username" type="text" class="formfld user" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>">
1327
										</td>
1328
									</tr>
1329
									<tr>
1330 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Password"); ?></td>
1331 3a906378 gnhb
										<td width="78%" class="vtable">
1332
										<input name="password" type="password" class="formfld pwd" id="password" size="20" value="<?=htmlspecialchars($pconfig['password']);?>">
1333
										</td>
1334
									</tr>
1335
									<tr name="phone_num" id="phone_num">
1336 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Phone Number"); ?></td>
1337 3a906378 gnhb
										<td width="78%" class="vtable">
1338
											<input name="phone" type="text" class="formfld unknown" id="phone" size="12" value="<?=htmlspecialchars($pconfig['phone']);?>">
1339
										</td>
1340
									</tr>
1341
									<tr name="apn_" id="apn_">
1342 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Access Point Name (APN)"); ?></td>
1343 3a906378 gnhb
										<td width="78%" class="vtable">
1344
											<input name="apn" type="text" class="formfld unknown" id="apn" size="40" value="<?=htmlspecialchars($pconfig['apn']);?>">
1345
										</td>
1346
									</tr>
1347
									<tr name="interface" id="interface" >
1348 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Modem Port"); ?></td>
1349 3a906378 gnhb
										<td width="78%" class="vtable">
1350
											<select name="port" id="port" class="formselect">
1351
											<?php
1352
												$portlist = glob("/dev/cua*");
1353
												$modems = glob("/dev/modem*");
1354
												$portlist = array_merge($portlist, $modems);
1355
												foreach ($portlist as $port) {
1356
													if(preg_match("/\.(lock|init)$/", $port))
1357
														continue;
1358
													echo "<option value=\"".trim($port)."\"";
1359
													if ($pconfig['port'] == $port)
1360
														echo "selected";
1361
													echo ">{$port}</option>";
1362
												}?>
1363
											</select>
1364
										</td>
1365
									</tr>
1366 136c598d Carlos Eduardo Ramos
									<td width="22%" valign="top" class="vncell"><?=gettext("Advanced PPP"); ?></td>
1367 6c05cfb0 gnhb
										<?php if (isset($pconfig['pppid'])): ?>
1368
											<td width="78%" class="vtable">
1369 933ea015 Carlos Eduardo Ramos
											<a href="/interfaces_ppps_edit.php?id=<?=htmlspecialchars($pconfig['pppid']);?>" class="navlnk"><?=gettext("Click here"); ?> </a>
1370
											<?=gettext("to edit PPP configuration."); ?>
1371 6c05cfb0 gnhb
											</td>
1372 ee9933b6 Renato Botelho
										<?php else: ?>
1373 6c05cfb0 gnhb
											<td width="78%" class="vtable">
1374 933ea015 Carlos Eduardo Ramos
											<a href="/interfaces_ppps_edit.php" class="navlnk"><?=gettext("Click here"); ?> </a>
1375
											<?=gettext("to create a PPP configuration."); ?>
1376 6c05cfb0 gnhb
											</td>
1377 c0948c6c Renato Botelho
										<?php endif; ?>
1378 6c05cfb0 gnhb
									</tr>
1379
								</table>
1380
							</td>
1381
						</tr>
1382 30ade846 gnhb
						<tr style="display:none;" name="pppoe" id="pppoe">
1383
							<td colspan="2" style="padding:0px;">
1384
								<table width="100%" border="0" cellpadding="6" cellspacing="0">
1385
									<tr>
1386 136c598d Carlos Eduardo Ramos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("PPPoE configuration"); ?></td>
1387 30ade846 gnhb
									</tr>
1388
									<tr>
1389 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Username"); ?></td>
1390 30ade846 gnhb
										<td width="78%" class="vtable">
1391
												<input name="pppoe_username" type="text" class="formfld user" id="pppoe_username" size="20" value="<?=htmlspecialchars($pconfig['pppoe_username']);?>">
1392
										</td>
1393
									</tr>
1394
									<tr>
1395 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Password"); ?></td>
1396 30ade846 gnhb
										<td width="78%" class="vtable">
1397
											<input name="pppoe_password" type="password" class="formfld pwd" id="pppoe_password" size="20" value="<?=htmlspecialchars($pconfig['pppoe_password']);?>">
1398
										</td>
1399
									</tr>
1400
									<tr>
1401 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Service name"); ?></td>
1402 30ade846 gnhb
										<td width="78%" class="vtable"><input name="provider" type="text" class="formfld unknown" id="provider" size="20" value="<?=htmlspecialchars($pconfig['provider']);?>">
1403 136c598d Carlos Eduardo Ramos
											<br> <span class="vexpl"><?=gettext("Hint: this field can usually be left empty"); ?></span>
1404 30ade846 gnhb
										</td>
1405
									</tr>
1406
									<tr>
1407 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Dial on demand"); ?></td>
1408 30ade846 gnhb
										<td width="78%" class="vtable">
1409
											<input name="pppoe_dialondemand" type="checkbox" id="pppoe_dialondemand" value="enable" <?php if ($pconfig['pppoe_dialondemand']) echo "checked"; ?>>
1410 136c598d Carlos Eduardo Ramos
											<strong><?=gettext("Enable Dial-On-Demand mode"); ?></strong><br>
1411 933ea015 Carlos Eduardo Ramos
											<?=gettext("This option causes the interface to operate in dial-on-demand mode, allowing you to have a "); ?><i><?=gettext("virtual full time"); ?></i> <?=gettext("connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected."); ?>
1412 30ade846 gnhb
										</td>
1413
									</tr>
1414
									<tr>
1415 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Idle timeout"); ?></td>
1416 30ade846 gnhb
										<td width="78%" class="vtable">
1417 933ea015 Carlos Eduardo Ramos
											<input name="pppoe_idletimeout" type="text" class="formfld unknown" id="pppoe_idletimeout" size="8" value="<?=htmlspecialchars($pconfig['pppoe_idletimeout']);?>"> <?=gettext("seconds"); ?><br><?=gettext("If no qualifying outgoing packets are transmitted for the specified number of seconds, the connection is brought down. An idle timeout of zero disables this feature."); ?>
1418 30ade846 gnhb
										</td>
1419
									</tr>
1420
									<tr>
1421
										<td width="22%" valign="top" class="vncell"><?=gettext("Periodic reset");?></td>
1422
										<td width="78%" class="vtable">
1423
											<table id="presetwrap" cellspacing="0" cellpadding="0" width="100%">
1424
												<tr>
1425
													<td align="left" valign="top">
1426
														<p style="margin: 4px; padding: 4px 0 4px 0; width: 94%;">
1427
														<select valign="top" id="reset_type" name="pppoe-reset-type" class="formselect" onChange="show_reset_settings(this.value);">
1428 136c598d Carlos Eduardo Ramos
															<option value = ""><?=gettext("Disabled"); ?></option>
1429
															<option value="custom" <?php if ($pconfig['pppoe-reset-type'] == "custom") echo "selected"; ?>><?=gettext("Custom"); ?></option>
1430
															<option value="preset" <?php if ($pconfig['pppoe-reset-type'] == "preset") echo "selected"; ?>><?=gettext("Pre-Set"); ?></option>
1431
														</select> <?=gettext("Select a reset timing type"); ?>
1432 30ade846 gnhb
														</p>
1433
														<?php if ($pconfig['pppoe_pr_custom']): ?>
1434
															<p style="margin: 2px; padding: 4px; width: 94%;" id="pppoecustomwrap">
1435
														<?php else: ?>
1436
															<p style="margin: 2px; padding: 4px; width: 94%; display: none;" id="pppoecustomwrap">
1437
														<?php endif; ?>
1438 c0948c6c Renato Botelho
														<input type="text" name="pppoe_resethour" class="fd_incremental_inp_range_0_23 fd_increment_1 fd_classname_dec_buttonDec fd_classname_inc_buttonInc" maxlength="2" id="pppoe_resethour" value="<?= $pconfig['pppoe_resethour']; ?>" size="3" />
1439 136c598d Carlos Eduardo Ramos
														<?=gettext("hour (0-23)"); ?><br />
1440 c0948c6c Renato Botelho
														<input type="text" name="pppoe_resetminute" class="fd_incremental_inp_range_0_59 fd_increment_1 fd_classname_dec_buttonDec fd_classname_inc_buttonInc" maxlength="2" id="pppoe_resetminute" value="<?= $pconfig['pppoe_resetminute']; ?>" size="3" />
1441 136c598d Carlos Eduardo Ramos
														<?=gettext("minute (0-59)"); ?><br />
1442 c0948c6c Renato Botelho
														<input name="pppoe_resetdate" type="text" class="w8em format-m-d-y highlight-days-67" id="pppoe_resetdate" maxlength="10" size="10" value="<?=htmlspecialchars($pconfig['pppoe_resetdate']);?>" />
1443 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at a specific date (mm/dd/yyyy)"); ?>
1444 30ade846 gnhb
														<br />&nbsp;<br />
1445 933ea015 Carlos Eduardo Ramos
														<span class="red"><strong><?=gettext("Note:"); ?> </strong></span>
1446 136c598d Carlos Eduardo Ramos
														<?=gettext("If you leave the date field empty, the reset will be executed each day at the time you did specify using the minutes and hour field."); ?>
1447 30ade846 gnhb
														</p>
1448
														<?php if ($pconfig['pppoe_pr_preset']): ?>
1449
															<p style="margin: 2px; padding: 4px; width: 94%;" id="pppoepresetwrap">
1450
														<?php else: ?>
1451
															<p style="margin: 2px; padding: 4px; width: 94%; display: none;" id="pppoepresetwrap">
1452
														<?php endif; ?>
1453 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_monthly" value="monthly" <?php if ($pconfig['pppoe_monthly']) echo "checked=\"checked\""; ?> />
1454 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each month ('0 0 1 * *')"); ?>
1455 30ade846 gnhb
														<br />
1456 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_weekly" value="weekly" <?php if ($pconfig['pppoe_weekly']) echo "checked=\"checked\""; ?> />
1457 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each week ('0 0 * * 0')"); ?>
1458 30ade846 gnhb
														<br />
1459 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_daily" value="daily" <?php if ($pconfig['pppoe_daily']) echo "checked=\"checked\""; ?> />
1460 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each day ('0 0 * * *')"); ?>
1461 30ade846 gnhb
														<br />
1462 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_hourly" value="hourly" <?php if ($pconfig['pppoe_hourly']) echo "checked=\"checked\""; ?> />
1463 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each hour ('0 * * * *')"); ?>
1464 30ade846 gnhb
														</p>
1465
													</td>
1466
												</tr>
1467
											</table>
1468
										</td>
1469
									</tr>
1470 c0948c6c Renato Botelho
1471 30ade846 gnhb
									<tr>
1472 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Advanced and MLPPP"); ?></td>
1473 30ade846 gnhb
										<?php if (isset($pconfig['pppid'])): ?>
1474 09637075 gnhb
											<td width="78%" class="vtable">
1475 c0948c6c Renato Botelho
											<a href="/interfaces_ppps_edit.php?id=<?=htmlspecialchars($pconfig['pppid']);?>" class="navlnk"><?=gettext("Click here"); ?> </a>
1476 933ea015 Carlos Eduardo Ramos
											<?=gettext("for additional PPPoE configuration options. Save first if you made changes."); ?>
1477 9978e156 gnhb
											</td>
1478 ee9933b6 Renato Botelho
										<?php else: ?>
1479 09637075 gnhb
											<td width="78%" class="vtable">
1480 136c598d Carlos Eduardo Ramos
											<a href="/interfaces_ppps_edit.php" class="navlnk"><?=gettext("Click here"); ?> </a>
1481 933ea015 Carlos Eduardo Ramos
											<?=gettext("for advanced PPPoE configuration options and MLPPP configuration."); ?>
1482 30ade846 gnhb
											</td>
1483 c0948c6c Renato Botelho
										<?php endif; ?>
1484 30ade846 gnhb
									</tr>
1485
								</table>
1486 87f0be87 Chris Buechler
							</td>
1487 667a3184 Scott Ullrich
						</tr>
1488 30ade846 gnhb
						<tr style="display:none;" name="pptp" id="pptp">
1489
							<td colspan="2" style="padding:0px;">
1490
								<table width="100%" border="0" cellpadding="6" cellspacing="0">
1491
									<tr>
1492 136c598d Carlos Eduardo Ramos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("PPTP configuration"); ?></td>
1493 30ade846 gnhb
									</tr>
1494
									<tr>
1495 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Username"); ?></td>
1496 30ade846 gnhb
										<td width="78%" class="vtable">
1497
											<input name="pptp_username" type="text" class="formfld user" id="pptp_username" size="20" value="<?=htmlspecialchars($pconfig['pptp_username']);?>">
1498
										</td>
1499
									</tr>
1500
									<tr>
1501 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Password"); ?></td>
1502 30ade846 gnhb
										<td width="78%" class="vtable">
1503 4a1ee8ac gnhb
											<input name="pptp_password" type="password" class="formfld pwd" id="pptp_password" size="20" value="<?=htmlspecialchars($pconfig['pptp_password']);?>">
1504 30ade846 gnhb
										</td>
1505
									</tr>
1506
									<tr>
1507 136c598d Carlos Eduardo Ramos
										<td width="22%" width="100" valign="top" class="vncellreq"><?=gettext("Local IP address"); ?></td>
1508 c0948c6c Renato Botelho
										<td width="78%" class="vtable">
1509 4a1ee8ac gnhb
											<input name="pptp_local" type="text" class="formfld unknown" id="pptp_local" size="20"  value="<?=htmlspecialchars($pconfig['pptp_local'][0]);?>">
1510 30ade846 gnhb
											/
1511
											<select name="pptp_subnet" class="formselect" id="pptp_subnet">
1512
												<?php for ($i = 31; $i > 0; $i--): ?>
1513 4a1ee8ac gnhb
													<option value="<?=$i;?>" <?php if ($i == $pconfig['pptp_subnet'][0]) echo "selected"; ?>>
1514 30ade846 gnhb
														<?=$i;?></option>
1515
												<?php endfor; ?>
1516
											</select>
1517
										</td>
1518
									</tr>
1519
									<tr>
1520 136c598d Carlos Eduardo Ramos
										<td width="22%" width="100" valign="top" class="vncellreq"><?=gettext("Remote IP address"); ?></td>
1521 30ade846 gnhb
										<td width="78%" class="vtable">
1522 4a1ee8ac gnhb
											<input name="pptp_remote" type="text" class="formfld unknown" id="pptp_remote" size="20" value="<?=htmlspecialchars($pconfig['pptp_remote'][0]);?>">
1523 30ade846 gnhb
										</td>
1524
									</tr>
1525
									<tr>
1526 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Dial on demand"); ?></td>
1527 30ade846 gnhb
										<td width="78%" class="vtable">
1528
											<input name="pptp_dialondemand" type="checkbox" id="pptp_dialondemand" value="enable" <?php if ($pconfig['pptp_dialondemand']) echo "checked"; ?>>
1529 136c598d Carlos Eduardo Ramos
											<strong><?=gettext("Enable Dial-On-Demand mode"); ?></strong><br>
1530 933ea015 Carlos Eduardo Ramos
											<?=gettext("This option causes the interface to operate in dial-on-demand mode, allowing you to have a"); ?> <i><?=gettext("virtual full time"); ?></i> <?=gettext("connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected."); ?>
1531 30ade846 gnhb
										</td>
1532
									</tr>
1533
									<tr>
1534 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Idle timeout"); ?></td>
1535 30ade846 gnhb
										<td width="78%" class="vtable">
1536 933ea015 Carlos Eduardo Ramos
											<input name="pptp_idletimeout" type="text" class="formfld unknown" id="pptp_idletimeout" size="8" value="<?=htmlspecialchars($pconfig['pptp_idletimeout']);?>"> <?=gettext("seconds"); ?><br><?=gettext("If no qualifying outgoing packets are transmitted for the specified number of seconds, the connection is brought down. An idle timeout of zero disables this feature."); ?>
1537 30ade846 gnhb
										</td>
1538
									</tr>
1539 4a1ee8ac gnhb
									<tr>
1540 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Advanced"); ?></td>
1541 4a1ee8ac gnhb
										<?php if (isset($pconfig['pppid'])): ?>
1542
											<td width="78%" class="vtable">
1543 c0948c6c Renato Botelho
											<a href="/interfaces_ppps_edit.php?id=<?=htmlspecialchars($pconfig['pppid']);?>" class="navlnk"><?=gettext("Click here");?></a>
1544 933ea015 Carlos Eduardo Ramos
											<?=gettext("for additional PPTP and L2TP configuration options. Save first if you made changes.");?>
1545 4a1ee8ac gnhb
											</td>
1546 ee9933b6 Renato Botelho
										<?php else: ?>
1547 4a1ee8ac gnhb
											<td width="78%" class="vtable">
1548 4256d115 Renato Botelho
											<a href="/interfaces_ppps_edit.php" class="navlnk"><?=gettext("Click here");?></a>
1549
											<?=gettext("for advanced PPTP and L2TP configuration options");?>.
1550 4a1ee8ac gnhb
											</td>
1551 c0948c6c Renato Botelho
										<?php endif; ?>
1552 4a1ee8ac gnhb
									</tr>
1553 30ade846 gnhb
								</table>
1554
							</td>
1555
						</tr>
1556
						<?php
1557
							/* Wireless interface? */
1558
							if (isset($wancfg['wireless'])):
1559
						?>
1560
						<tr>
1561
							<td colspan="2" valign="top" height="16"></td>
1562 c0948c6c Renato Botelho
						</tr>
1563 9978e156 gnhb
						<tr>
1564 136c598d Carlos Eduardo Ramos
							<td colspan="2" valign="top" class="listtopic"><?=gettext("Common wireless configuration - Settings apply to all wireless networks on"); ?> <?=$wlanbaseif;?>.</td>
1565 9978e156 gnhb
						</tr>
1566 f62c44d8 Erik Fonnesbeck
						<tr>
1567 4256d115 Renato Botelho
							<td valign="top" class="vncell"><?=gettext("Persist common settings");?></td>
1568 f62c44d8 Erik Fonnesbeck
							<td class="vtable">
1569 ee9933b6 Renato Botelho
								<input name="persistcommonwireless" type="checkbox" value="yes"  class="formfld" id="persistcommonwireless" <?php if ($pconfig['persistcommonwireless']) echo "checked";?>>
1570 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Enabling this preserves the common wireless configuration through interface deletions and reassignments.");?>
1571 f62c44d8 Erik Fonnesbeck
							</td>
1572
						</tr>
1573 9978e156 gnhb
						<tr>
1574 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Standard"); ?></td>
1575 30ade846 gnhb
							<td class="vtable">
1576 3a13f094 gnhb
							<select name="standard" class="formselect" id="standard">
1577
								<?php
1578
								foreach($wl_modes as $wl_standard => $wl_channels) {
1579
									echo "<option ";
1580
									if ($pconfig['standard'] == "$wl_standard")
1581
										echo "selected ";
1582
									echo "value=\"$wl_standard\">802.$wl_standard</option>\n";
1583
								}
1584
								?>
1585
							</select>
1586 30ade846 gnhb
							</td>
1587
						</tr>
1588
						<?php if (isset($wl_modes['11g'])): ?>
1589
						<tr>
1590 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq">802.11g OFDM <?=gettext("Protection Mode"); ?></td>
1591 30ade846 gnhb
							<td class="vtable">
1592
								<select name="protmode" class="formselect" id="protmode">
1593 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['protmode'] == 'off') echo "selected";?> value="off"><?=gettext("Protection mode off"); ?></option>
1594
									<option <?php if ($pconfig['protmode'] == 'cts') echo "selected";?> value="cts"><?=gettext("Protection mode CTS to self"); ?></option>
1595
									<option <?php if ($pconfig['protmode'] == 'rtscts') echo "selected";?> value="rtscts"><?=gettext("Protection mode RTS and CTS"); ?></option>
1596 30ade846 gnhb
								</select>
1597
								<br/>
1598 933ea015 Carlos Eduardo Ramos
								<?=gettext("For IEEE 802.11g, use the specified technique for protecting OFDM frames in a mixed 11b/11g network."); ?>
1599 30ade846 gnhb
								<br/>
1600
							</td>
1601
						</tr>
1602
						<?php else: ?>
1603
						<input name="protmode" type="hidden" id="protmode" value="off">
1604
						<?php endif; ?>
1605
						<tr>
1606 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Transmit power"); ?></td>
1607 30ade846 gnhb
							<td class="vtable">
1608
								<select name="txpower" class="formselect" id="txpower">
1609
									<?
1610
									for($x = 99; $x > 0; $x--) {
1611
										if($pconfig["txpower"] == $x)
1612
											$SELECTED = " SELECTED";
1613
										else
1614
											$SELECTED = "";
1615
										echo "<option {$SELECTED}>{$x}</option>\n";
1616
									}
1617
									?>
1618
								</select><br/>
1619 3b7f0f53 Erik Fonnesbeck
								<?=gettext("Note: Typically only a few discreet power settings are available and the driver will use the setting closest to the specified value.  Not all adapters support changing the transmit power setting."); ?>
1620 9978e156 gnhb
							</td>
1621
						</tr>
1622
						<tr>
1623 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Channel"); ?></td>
1624 30ade846 gnhb
							<td class="vtable">
1625
								<select name="channel" class="formselect" id="channel">
1626 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['channel'] == 0) echo "selected"; ?> value="0"><?=gettext("Auto"); ?></option>
1627 9978e156 gnhb
									<?php
1628 30ade846 gnhb
									foreach($wl_modes as $wl_standard => $wl_channels) {
1629
										if($wl_standard == "11g") { $wl_standard = "11b/g"; }
1630
										else if($wl_standard == "11ng") { $wl_standard = "11b/g/n"; }
1631
										else if($wl_standard == "11na") { $wl_standard = "11a/n"; }
1632
										foreach($wl_channels as $wl_channel) {
1633
											echo "<option ";
1634
											if ($pconfig['channel'] == "$wl_channel") {
1635
												echo "selected ";
1636
											}
1637
											echo "value=\"$wl_channel\">$wl_standard - $wl_channel";
1638
											if(isset($wl_chaninfo[$wl_channel]))
1639
												echo " ({$wl_chaninfo[$wl_channel][1]} @ {$wl_chaninfo[$wl_channel][2]} / {$wl_chaninfo[$wl_channel][3]})";
1640
											echo "</option>\n";
1641 d85ba87f gnhb
										}
1642 9978e156 gnhb
									}
1643
									?>
1644
								</select>
1645 30ade846 gnhb
								<br/>
1646 136c598d Carlos Eduardo Ramos
								<?=gettext("Legend: wireless standards - channel # (frequency @ max TX power / TX power allowed in reg. domain)"); ?>
1647 30ade846 gnhb
								<br/>
1648 933ea015 Carlos Eduardo Ramos
								<?=gettext("Note: Not all channels may be supported by your card.  Auto may override the wireless standard selected above."); ?>
1649 9978e156 gnhb
							</td>
1650
						</tr>
1651 537bf7b3 Erik Fonnesbeck
						<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.diversity"]) || isset($wl_sysctl["{$wl_sysctl_prefix}.txantenna"]) || isset($wl_sysctl["{$wl_sysctl_prefix}.rxantenna"])): ?>
1652
						<tr>
1653
							<td valign="top" class="vncell"><?=gettext("Antenna settings"); ?></td>
1654
							<td class="vtable">
1655
								<table border="0" cellpadding="0" cellspacing="0">
1656
									<tr>
1657
										<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.diversity"])): ?>
1658
										<td>
1659
											<?=gettext("Diversity"); ?><br/>
1660
											<select name="diversity" class="formselect" id="diversity">
1661 1930ccb6 Erik Fonnesbeck
												<option <?php if (!isset($pconfig['diversity'])) echo "selected"; ?> value=""><?=gettext("Default"); ?></option>
1662
												<option <?php if ($pconfig['diversity'] === '0') echo "selected"; ?> value="0"><?=gettext("Off"); ?></option>
1663
												<option <?php if ($pconfig['diversity'] === '1') echo "selected"; ?> value="1"><?=gettext("On"); ?></option>
1664 537bf7b3 Erik Fonnesbeck
											</select>
1665
										</td>
1666
										<td>&nbsp;&nbsp</td>
1667
										<?php endif; ?>
1668
										<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.txantenna"])): ?>
1669
										<td>
1670
											<?=gettext("Transmit antenna"); ?><br/>
1671
											<select name="txantenna" class="formselect" id="txantenna">
1672 1930ccb6 Erik Fonnesbeck
												<option <?php if (!isset($pconfig['txantenna'])) echo "selected"; ?> value=""><?=gettext("Default"); ?></option>
1673
												<option <?php if ($pconfig['txantenna'] === '0') echo "selected"; ?> value="0"><?=gettext("Auto"); ?></option>
1674
												<option <?php if ($pconfig['txantenna'] === '1') echo "selected"; ?> value="1"><?=gettext("#1"); ?></option>
1675
												<option <?php if ($pconfig['txantenna'] === '2') echo "selected"; ?> value="2"><?=gettext("#2"); ?></option>
1676 537bf7b3 Erik Fonnesbeck
											</select>
1677
										</td>
1678
										<td>&nbsp;&nbsp</td>
1679
										<?php endif; ?>
1680
										<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.rxantenna"])): ?>
1681
										<td>
1682
											<?=gettext("Receive antenna"); ?><br/>
1683
											<select name="rxantenna" class="formselect" id="rxantenna">
1684 1930ccb6 Erik Fonnesbeck
												<option <?php if (!isset($pconfig['rxantenna'])) echo "selected"; ?> value=""><?=gettext("Default"); ?></option>
1685
												<option <?php if ($pconfig['rxantenna'] === '0') echo "selected"; ?> value="0"><?=gettext("Auto"); ?></option>
1686
												<option <?php if ($pconfig['rxantenna'] === '1') echo "selected"; ?> value="1"><?=gettext("#1"); ?></option>
1687
												<option <?php if ($pconfig['rxantenna'] === '2') echo "selected"; ?> value="2"><?=gettext("#2"); ?></option>
1688 537bf7b3 Erik Fonnesbeck
											</select>
1689
										</td>
1690
										<?php endif; ?>
1691
									</tr>
1692
								</table>
1693
								<br/>
1694
								<?=gettext("Note: The antenna numbers do not always match up with the labels on the card."); ?>
1695
							</td>
1696
						</tr>
1697
						<?php endif; ?>
1698 6681fdd3 Erik Fonnesbeck
						<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.slottime"]) && isset($wl_sysctl["{$wl_sysctl_prefix}.acktimeout"]) && isset($wl_sysctl["{$wl_sysctl_prefix}.ctstimeout"])): ?>
1699 9978e156 gnhb
						<tr>
1700 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Distance setting"); ?></td>
1701 30ade846 gnhb
							<td class="vtable">
1702
								<input name="distance" type="text" class="formfld unknown" id="distance" size="5" value="<?=htmlspecialchars($pconfig['distance']);?>">
1703
								<br/>
1704 136c598d Carlos Eduardo Ramos
								<?=gettext("Note: This field can be used to tune ACK/CTS timers to fit the distance between AP and Client"); ?><br/>
1705
								<?=gettext("(measured in Meters and works only for Atheros based cards !)"); ?>
1706 30ade846 gnhb
							</td>
1707 9978e156 gnhb
						</tr>
1708 6681fdd3 Erik Fonnesbeck
						<?php endif; ?>
1709 9978e156 gnhb
						<tr>
1710 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Regulatory settings"); ?></td>
1711 30ade846 gnhb
							<td class="vtable">
1712 136c598d Carlos Eduardo Ramos
								<?=gettext("Regulatory domain"); ?><br/>
1713 30ade846 gnhb
								<select name="regdomain" class="formselect" id="regdomain">
1714 ee9933b6 Renato Botelho
									<option <?php if (empty($pconfig['regdomain'])) echo "selected"; ?> value=""><?=gettext("Default"); ?></option>
1715 30ade846 gnhb
									<?php
1716
									foreach($wl_regdomains as $wl_regdomain_key => $wl_regdomain) {
1717
										echo "<option ";
1718
										if ($pconfig['regdomain'] == $wl_regdomains_attr[$wl_regdomain_key]['ID']) {
1719
											echo "selected ";
1720
										}
1721
										echo "value=\"{$wl_regdomains_attr[$wl_regdomain_key]['ID']}\">{$wl_regdomain['name']}</option>\n";
1722
									}
1723
									?>
1724
								</select>
1725
								<br/>
1726 933ea015 Carlos Eduardo Ramos
								<?=gettext("Note: Some cards have a default that is not recognized and require changing the regulatory domain to one in this list for the changes to other regulatory settings to work."); ?>
1727 30ade846 gnhb
								<br/><br/>
1728 136c598d Carlos Eduardo Ramos
								<?=gettext("Country (listed with country code and regulatory domain)"); ?><br/>
1729 30ade846 gnhb
								<select name="regcountry" class="formselect" id="regcountry">
1730 ee9933b6 Renato Botelho
									<option <?php if (empty($pconfig['regcountry'])) echo "selected"; ?> value=""><?=gettext("Default"); ?></option>
1731 30ade846 gnhb
									<?php
1732
									foreach($wl_countries as $wl_country_key => $wl_country) {
1733
										echo "<option ";
1734
										if ($pconfig['regcountry'] == $wl_countries_attr[$wl_country_key]['ID']) {
1735
											echo "selected ";
1736
										}
1737
										echo "value=\"{$wl_countries_attr[$wl_country_key]['ID']}\">{$wl_country['name']} -- ({$wl_countries_attr[$wl_country_key]['ID']}, " . strtoupper($wl_countries_attr[$wl_country_key]['rd'][0]['REF']) . ")</option>\n";
1738
									}
1739
									?>
1740
								</select>
1741
								<br/>
1742 136c598d Carlos Eduardo Ramos
								<?=gettext("Note: Any country setting other than \"Default\" will override the regulatory domain setting"); ?>.
1743 30ade846 gnhb
								<br/><br/>
1744 136c598d Carlos Eduardo Ramos
								<?=gettext("Location"); ?><br/>
1745 30ade846 gnhb
								<select name="reglocation" class="formselect" id="reglocation">
1746 ee9933b6 Renato Botelho
									<option <?php if (empty($pconfig['reglocation'])) echo "selected"; ?> value=""><?=gettext("Default"); ?></option>
1747
									<option <?php if ($pconfig['reglocation'] == 'indoor') echo "selected"; ?> value="indoor"><?=gettext("Indoor"); ?></option>
1748
									<option <?php if ($pconfig['reglocation'] == 'outdoor') echo "selected"; ?> value="outdoor"><?=gettext("Outdoor"); ?></option>
1749
									<option <?php if ($pconfig['reglocation'] == 'anywhere') echo "selected"; ?> value="anywhere"><?=gettext("Anywhere"); ?></option>
1750 30ade846 gnhb
								</select>
1751
								<br/><br/>
1752 933ea015 Carlos Eduardo Ramos
								<?=gettext("These settings may affect which channels are available and the maximum transmit power allowed on those channels.  Using the correct settings to comply with local regulatory requirements is recommended."); ?>
1753 30ade846 gnhb
								<br/>
1754 933ea015 Carlos Eduardo Ramos
								<?=gettext("Note: All wireless networks on this interface will be temporarily brought down when changing regulatory settings.  Some of the regulatory domains or country codes may not be allowed by some cards.  These settings may not be able to add additional channels that are not already supported."); ?>
1755 9978e156 gnhb
							</td>
1756
						</tr>
1757
						<tr>
1758 30ade846 gnhb
							<td colspan="2" valign="top" height="16"></td>
1759 c0948c6c Renato Botelho
						</tr>
1760 30ade846 gnhb
						<tr>
1761 4256d115 Renato Botelho
							<td colspan="2" valign="top" class="listtopic"><?=gettext("Network-specific wireless configuration");?></td>
1762 30ade846 gnhb
						</tr>
1763
						<tr>
1764 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Mode"); ?></td>
1765 30ade846 gnhb
							<td class="vtable">
1766
								<select name="mode" class="formselect" id="mode">
1767 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['mode'] == 'bss') echo "selected";?> value="bss"><?=gettext("Infrastructure (BSS)"); ?></option>
1768
									<option <?php if ($pconfig['mode'] == 'adhoc') echo "selected";?> value="adhoc"><?=gettext("Ad-hoc (IBSS)"); ?></option>
1769
									<option <?php if ($pconfig['mode'] == 'hostap') echo "selected";?> value="hostap"><?=gettext("Access Point"); ?></option>
1770 30ade846 gnhb
								</select>
1771 9978e156 gnhb
							</td>
1772
						</tr>
1773
						<tr>
1774 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("SSID"); ?></td>
1775 30ade846 gnhb
							<td class="vtable">
1776
								<input name="ssid" type="text" class="formfld unknown" id="ssid" size="20" value="<?=htmlspecialchars($pconfig['ssid']); ?>">
1777 9978e156 gnhb
							</td>
1778
						</tr>
1779 30ade846 gnhb
						<?php if (isset($wl_modes['11ng']) || isset($wl_modes['11na'])): ?>
1780 9978e156 gnhb
						<tr>
1781 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Minimum wireless standard"); ?></td>
1782 30ade846 gnhb
							<td class="vtable">
1783
								<select name="puremode" class="formselect" id="puremode">
1784 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['puremode'] == 'any') echo "selected";?> value="any"><?=gettext("Any"); ?></option>
1785 30ade846 gnhb
									<?php if (isset($wl_modes['11g'])): ?>
1786 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['puremode'] == '11g') echo "selected";?> value="11g"><?=gettext("802.11g"); ?></option>
1787 30ade846 gnhb
									<?php endif; ?>
1788 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['puremode'] == '11n') echo "selected";?> value="11n"><?=gettext("802.11n"); ?></option>
1789 30ade846 gnhb
								</select>
1790
								<br/>
1791 933ea015 Carlos Eduardo Ramos
								<?=gettext("When operating as an access point, allow only stations capable of the selected wireless standard to associate (stations not capable are not permitted to associate)."); ?>
1792 9978e156 gnhb
							</td>
1793
						</tr>
1794 30ade846 gnhb
						<?php elseif (isset($wl_modes['11g'])): ?>
1795 9978e156 gnhb
						<tr>
1796 933ea015 Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.11g only"); ?></td>
1797 30ade846 gnhb
							<td class="vtable">
1798 ee9933b6 Renato Botelho
								<input name="puremode" type="checkbox" value="11g"  class="formfld" id="puremode" <?php if ($pconfig['puremode'] == '11g') echo "checked";?>>
1799 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("When operating as an access point in 802.11g mode, allow only 11g-capable stations to associate (11b-only stations are not permitted to associate)."); ?>
1800 9978e156 gnhb
							</td>
1801
						</tr>
1802 30ade846 gnhb
						<?php endif; ?>
1803 9978e156 gnhb
						<tr>
1804 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Allow intra-BSS communication"); ?></td>
1805 30ade846 gnhb
							<td class="vtable">
1806 ee9933b6 Renato Botelho
								<input name="apbridge_enable" type="checkbox" value="yes"  class="formfld" id="apbridge_enable" <?php if ($pconfig['apbridge_enable']) echo "checked";?>>
1807 30ade846 gnhb
								<br/>
1808 933ea015 Carlos Eduardo Ramos
								<?=gettext("When operating as an access point, enable this if you want to pass packets between wireless clients directly."); ?>
1809 30ade846 gnhb
								<br/>
1810 933ea015 Carlos Eduardo Ramos
								<?=gettext("Disabling the internal bridging is useful when traffic is to be processed with packet filtering."); ?>
1811 30ade846 gnhb
							</td>
1812
						</tr>
1813
						<tr>
1814 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Enable WME"); ?></td>
1815 30ade846 gnhb
							<td class="vtable">
1816 ee9933b6 Renato Botelho
								<input name="wme_enable" type="checkbox" class="formfld" id="wme_enable" value="yes" <?php if ($pconfig['wme_enable']) echo "checked";?>>
1817 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Setting this option will force the card to use WME (wireless QoS)."); ?>
1818 30ade846 gnhb
							</td>
1819
						</tr>
1820
						<tr>
1821 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Enable Hide SSID"); ?></td>
1822 30ade846 gnhb
							<td class="vtable">
1823 ee9933b6 Renato Botelho
								<input name="hidessid_enable" type="checkbox" class="formfld" id="hidessid_enable" value="yes" <?php if ($pconfig['hidessid_enable']) echo "checked";?>>
1824 30ade846 gnhb
								<br/>
1825 136c598d Carlos Eduardo Ramos
								<?=gettext("Setting this option will force the card to NOT broadcast its SSID"); ?>
1826 30ade846 gnhb
								<br/>
1827 933ea015 Carlos Eduardo Ramos
								<?=gettext("(this might create problems for some clients)."); ?>
1828 30ade846 gnhb
							</td>
1829
						</tr>
1830
						<tr>
1831 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WEP"); ?></td>
1832 c0948c6c Renato Botelho
							<td class="vtable">
1833 ee9933b6 Renato Botelho
								<input name="wep_enable" type="checkbox" id="wep_enable" value="yes" <?php if ($pconfig['wep_enable']) echo "checked"; ?>>
1834 136c598d Carlos Eduardo Ramos
								<strong><?=gettext("Enable WEP"); ?></strong>
1835 30ade846 gnhb
								<table border="0" cellspacing="0" cellpadding="0">
1836 9978e156 gnhb
									<tr>
1837 30ade846 gnhb
										<td>&nbsp;</td>
1838
										<td>&nbsp;</td>
1839 136c598d Carlos Eduardo Ramos
										<td>&nbsp;<?=gettext("TX key"); ?>&nbsp;</td>
1840 30ade846 gnhb
									</tr>
1841
									<tr>
1842 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 1:"); ?>&nbsp;&nbsp;</td>
1843 30ade846 gnhb
										<td>
1844
											<input name="key1" type="text" class="formfld unknown" id="key1" size="30" value="<?=htmlspecialchars($pconfig['key1']);?>">
1845
										</td>
1846
										<td align="center">
1847 ee9933b6 Renato Botelho
											<input name="txkey" type="radio" value="1" <?php if ($pconfig['txkey'] == 1) echo "checked";?>>
1848 30ade846 gnhb
										</td>
1849
									</tr>
1850
									<tr>
1851 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 2:"); ?>&nbsp;&nbsp;</td>
1852 30ade846 gnhb
										<td>
1853
											<input name="key2" type="text" class="formfld unknown" id="key2" size="30" value="<?=htmlspecialchars($pconfig['key2']);?>">
1854
										</td>
1855
										<td align="center">
1856 ee9933b6 Renato Botelho
											<input name="txkey" type="radio" value="2" <?php if ($pconfig['txkey'] == 2) echo "checked";?>>
1857 30ade846 gnhb
										</td>
1858
									</tr>
1859
									<tr>
1860 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 3:"); ?>&nbsp;&nbsp;</td>
1861 30ade846 gnhb
										<td>
1862
											<input name="key3" type="text" class="formfld unknown" id="key3" size="30" value="<?=htmlspecialchars($pconfig['key3']);?>">
1863
										</td>
1864
										<td align="center">
1865 ee9933b6 Renato Botelho
											<input name="txkey" type="radio" value="3" <?php if ($pconfig['txkey'] == 3) echo "checked";?>>
1866 30ade846 gnhb
										</td>
1867
									</tr>
1868
									<tr>
1869 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 4:"); ?>&nbsp;&nbsp;</td>
1870 30ade846 gnhb
										<td>
1871
											<input name="key4" type="text" class="formfld unknown" id="key4" size="30" value="<?=htmlspecialchars($pconfig['key4']);?>">
1872
										</td>
1873
										<td align="center">
1874 ee9933b6 Renato Botelho
											<input name="txkey" type="radio" value="4" <?php if ($pconfig['txkey'] == 4) echo "checked";?>>
1875 9978e156 gnhb
										</td>
1876
									</tr>
1877
								</table>
1878 30ade846 gnhb
								<br/>
1879 933ea015 Carlos Eduardo Ramos
								<?=gettext("40 (64) bit keys may be entered as 5 ASCII characters or 10 hex digits preceded by '0x'."); ?><br/>
1880
								<?=gettext("104 (128) bit keys may be entered as 13 ASCII characters or 26 hex digits preceded by '0x'."); ?>
1881 9978e156 gnhb
							</td>
1882
						</tr>
1883
						<tr>
1884 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA"); ?></td>
1885 30ade846 gnhb
							<td class="vtable">
1886 ee9933b6 Renato Botelho
								<input name="wpa_enable" type="checkbox" class="formfld" id="wpa_enable" value="yes" <?php if ($pconfig['wpa_enable']) echo "checked"; ?>>
1887 136c598d Carlos Eduardo Ramos
								<strong><?=gettext("Enable WPA"); ?></strong>
1888 30ade846 gnhb
								<br/><br/>
1889
								<table border="0" cellspacing="0" cellpadding="0">
1890
									<tr>
1891
										<td>&nbsp;</td>
1892 136c598d Carlos Eduardo Ramos
										<td>&nbsp;<?=gettext("WPA Pre Shared Key"); ?>&nbsp;</td>
1893 30ade846 gnhb
									</tr>
1894
									<tr>
1895 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("PSK:"); ?>&nbsp;&nbsp;</td>
1896 30ade846 gnhb
										<td>
1897
											<input name="passphrase" type="text" class="formfld unknown" id="passphrase" size="66" value="<?=htmlspecialchars($pconfig['passphrase']);?>">
1898
										</td>
1899
									</tr>
1900
								</table>
1901 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Passphrase must be from 8 to 63 characters."); ?>
1902 30ade846 gnhb
							</td>
1903 9978e156 gnhb
						</tr>
1904
						<tr>
1905 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA Mode"); ?></td>
1906 30ade846 gnhb
							<td class="vtable">
1907
								<select name="wpa_mode" class="formselect" id="wpa_mode">
1908 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['wpa_mode'] == '1') echo "selected";?> value="1"><?=gettext("WPA"); ?></option>
1909
									<option <?php if ($pconfig['wpa_mode'] == '2') echo "selected";?> value="2"><?=gettext("WPA2"); ?></option>
1910
									<option <?php if ($pconfig['wpa_mode'] == '3') echo "selected";?> value="3"><?=gettext("Both"); ?></option>
1911 30ade846 gnhb
								</select>
1912 9978e156 gnhb
							</td>
1913
						</tr>
1914
						<tr>
1915 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA Key Management Mode"); ?></td>
1916 c0948c6c Renato Botelho
							<td class="vtable">
1917 30ade846 gnhb
								<select name="wpa_key_mgmt" class="formselect" id="wpa_key_mgmt">
1918 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['wpa_key_mgmt'] == 'WPA-PSK') echo "selected";?> value="WPA-PSK"><?=gettext("Pre Shared Key"); ?></option>
1919
									<option <?php if ($pconfig['wpa_key_mgmt'] == 'WPA-EAP') echo "selected";?> value="WPA-EAP"><?=gettext("Extensible Authentication Protocol"); ?></option>
1920
									<option <?php if ($pconfig['wpa_key_mgmt'] == 'WPA-PSK WPA-EAP') echo "selected";?> value="WPA-PSK WPA-EAP"><?=gettext("Both"); ?></option>
1921 30ade846 gnhb
								</select>
1922 9978e156 gnhb
							</td>
1923
						</tr>
1924
						<tr>
1925 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Authentication"); ?></td>
1926 30ade846 gnhb
							<td class="vtable">
1927
								<select name="auth_algs" class="formselect" id="auth_algs">
1928 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['auth_algs'] == '1') echo "selected";?> value="1"><?=gettext("Open System Authentication"); ?></option>
1929
									<option <?php if ($pconfig['auth_algs'] == '2') echo "selected";?> value="2"><?=gettext("Shared Key Authentication"); ?></option>
1930
									<option <?php if ($pconfig['auth_algs'] == '3') echo "selected";?> value="3"><?=gettext("Both"); ?></option>
1931 9978e156 gnhb
								</select>
1932 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Note: Shared Key Authentication requires WEP."); ?></br>
1933 9978e156 gnhb
							</td>
1934
						</tr>
1935
						<tr>
1936 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA Pairwise"); ?></td>
1937 30ade846 gnhb
							<td class="vtable">
1938
								<select name="wpa_pairwise" class="formselect" id="wpa_pairwise">
1939 ee9933b6 Renato Botelho
									<option <?php if ($pconfig['wpa_pairwise'] == 'CCMP TKIP') echo "selected";?> value="CCMP TKIP"><?=gettext("Both"); ?></option>
1940
									<option <?php if ($pconfig['wpa_pairwise'] == 'CCMP') echo "selected";?> value="CCMP"><?=gettext("AES (recommended)"); ?></option>
1941
									<option <?php if ($pconfig['wpa_pairwise'] == 'TKIP') echo "selected";?> value="TKIP"><?=gettext("TKIP"); ?></option>
1942 30ade846 gnhb
								</select>
1943 9978e156 gnhb
							</td>
1944
						</tr>
1945
						<tr>
1946 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Key Rotation"); ?></td>
1947 30ade846 gnhb
							<td class="vtable">
1948 ee9933b6 Renato Botelho
								<input name="wpa_group_rekey" type="text" class="formfld unknown" id="wpa_group_rekey" size="30" value="<?php echo $pconfig['wpa_group_rekey'] ? $pconfig['wpa_group_rekey'] : "60";?>">
1949 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Allowed values are 1-9999 but should not be longer than Master Key Regeneration time."); ?>
1950 9978e156 gnhb
							</td>
1951
						</tr>
1952
						<tr>
1953 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Master Key Regeneration"); ?></td>
1954 30ade846 gnhb
							<td class="vtable">
1955 ee9933b6 Renato Botelho
								<input name="wpa_gmk_rekey" type="text" class="formfld" id="wpa_gmk_rekey" size="30" value="<?php echo $pconfig['wpa_gmk_rekey'] ? $pconfig['wpa_gmk_rekey'] : "3600";?>">
1956 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Allowed values are 1-9999 but should not be shorter than Key Rotation time."); ?>
1957 9978e156 gnhb
							</td>
1958
						</tr>
1959
						<tr>
1960 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Strict Key Regeneration"); ?></td>
1961 30ade846 gnhb
							<td class="vtable">
1962 ee9933b6 Renato Botelho
								<input name="wpa_strict_rekey" type="checkbox" value="yes"  class="formfld" id="wpa_strict_rekey" <?php if ($pconfig['wpa_strict_rekey']) echo "checked"; ?>>
1963 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Setting this option will force the AP to rekey whenever a client disassociates."); ?>
1964 30ade846 gnhb
							</td>
1965 9978e156 gnhb
						</tr>
1966
						<tr>
1967 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Enable IEEE802.1X Authentication"); ?></td>
1968 30ade846 gnhb
							<td class="vtable">
1969 ee9933b6 Renato Botelho
								<input name="ieee8021x" type="checkbox" value="yes"  class="formfld" id="ieee8021x" <?php if ($pconfig['ieee8021x']) echo "checked";?>>
1970 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Setting this option will enable 802.1x authentication."); ?>
1971 10e4d55e Pierre POMES
								<br/><span class="red"><strong><?=gettext("NOTE"); ?>:</strong></span> <?=gettext("this option requires checking the \"Enable WPA box\"."); ?>
1972 9978e156 gnhb
							</td>
1973
						</tr>
1974
						<tr>
1975 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.1X Authentication Server IP Address"); ?></td>
1976 30ade846 gnhb
							<td class="vtable">
1977
								<input name="auth_server_addr" id="auth_server_addr" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_addr']);?>">
1978 136c598d Carlos Eduardo Ramos
								<br/><?=gettext("Enter the IP address of the 802.1X Authentication Server.  This is commonly a Radius server (FreeRadius, Internet Authentication Services, etc.)"); ?>
1979 9978e156 gnhb
							</td>
1980
						</tr>
1981
						<tr>
1982 933ea015 Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.1X Authentication Server Port"); ?></td>
1983 30ade846 gnhb
							<td class="vtable">
1984
								<input name="auth_server_port" id="auth_server_port" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_port']);?>">
1985 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Leave blank for the default 1812 port."); ?>
1986 9978e156 gnhb
							</td>
1987
						</tr>
1988
						<tr>
1989 933ea015 Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.1X Authentication Server Shared Secret"); ?></td>
1990 30ade846 gnhb
							<td class="vtable">
1991
								<input name="auth_server_shared_secret" id="auth_server_shared_secret" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_shared_secret']);?>">
1992
								<br/>
1993 9978e156 gnhb
							</td>
1994 30ade846 gnhb
						</tr>
1995 c9e7d30d Scott Ullrich
						<tr>
1996
							<td valign="top" class="vncell">802.1X <?=gettext("Authentication Roaming Preauth"); ?></td>
1997
							<td class="vtable">
1998
								<input name="rsn_preauth" id="rsn_preauth" type="checkbox" class="formfld unknown" size="66" value="yes" <? if ($pconfig['rsn_preauth']) echo "checked"; ?>>
1999
								<br/>
2000
							</td>
2001
						</tr>
2002 ee9933b6 Renato Botelho
						<?php endif; ?>
2003 30ade846 gnhb
						<tr>
2004
							<td colspan="2" valign="top" height="16"></td>
2005
						</tr>
2006
						<tr>
2007 136c598d Carlos Eduardo Ramos
							<td colspan="2" valign="top" class="listtopic"><?=gettext("Private networks"); ?></td>
2008 30ade846 gnhb
						</tr>
2009
						<tr>
2010
							<td valign="middle" class="vncell">&nbsp;</td>
2011
							<td class="vtable">
2012 c0948c6c Renato Botelho
								<a name="rfc1918"></a>
2013 30ade846 gnhb
								<input name="blockpriv" type="checkbox" id="blockpriv" value="yes" <?php if ($pconfig['blockpriv']) echo "checked"; ?>>
2014 136c598d Carlos Eduardo Ramos
								<strong><?=gettext("Block private networks"); ?></strong><br>
2015
								<?=gettext("When set, this option blocks traffic from IP addresses that are reserved " .
2016
								"for private  networks as per RFC 1918 (10/8, 172.16/12, 192.168/16) as"); ?>
2017 933ea015 Carlos Eduardo Ramos
								<?=gettext("well as loopback addresses (127/8)."); ?>&nbsp;&nbsp; <?=gettext("You should generally " .
2018 136c598d Carlos Eduardo Ramos
								"leave this option turned on, unless your WAN network lies in such " .
2019 c0948c6c Renato Botelho
								"a private address space, too."); ?>
2020 9978e156 gnhb
							</td>
2021
						</tr>
2022
						<tr>
2023 30ade846 gnhb
							<td valign="middle" class="vncell">&nbsp;</td>
2024 c0948c6c Renato Botelho
							<td class="vtable">
2025 30ade846 gnhb
								<input name="blockbogons" type="checkbox" id="blockbogons" value="yes" <?php if ($pconfig['blockbogons']) echo "checked"; ?>>
2026 136c598d Carlos Eduardo Ramos
								<strong><?=gettext("Block bogon networks"); ?></strong><br>
2027
								<?=gettext("When set, this option blocks traffic from IP addresses that are reserved " .
2028 933ea015 Carlos Eduardo Ramos
								"(but not RFC 1918) or not yet assigned by IANA."); ?>&nbsp;&nbsp;
2029 136c598d Carlos Eduardo Ramos
								<?=gettext("Bogons are prefixes that should never appear in the Internet routing table, " .
2030 933ea015 Carlos Eduardo Ramos
								"and obviously should not appear as the source address in any packets you receive."); ?>
2031 30ade846 gnhb
							</td>
2032 9978e156 gnhb
						</tr>
2033 1600b1af Scott Ullrich
					</table> <!-- End "allcfg" table -->
2034
					</div> <!-- End "allcfg" div -->
2035
2036
					<table width="100%" border="0" cellpadding="6" cellspacing="0">
2037 9978e156 gnhb
						<tr>
2038 7b8db0c3 Erik Fonnesbeck
							<td width="22%" valign="top">
2039 30ade846 gnhb
								&nbsp;
2040
							</td>
2041 7b8db0c3 Erik Fonnesbeck
							<td width="78%">
2042 30ade846 gnhb
								<br/>
2043 c0948c6c Renato Botelho
								<input id="save" name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>">
2044 136c598d Carlos Eduardo Ramos
								<input id="cancel" type="button" class="formbtn" value="<?=gettext("Cancel"); ?>" onclick="history.back()">
2045 30ade846 gnhb
								<input name="if" type="hidden" id="if" value="<?=$if;?>">
2046 1d7e1d6c gnhb
								<?php if ($wancfg['if'] == $a_ppps[$pppid]['if']) : ?>
2047 dd5bf424 Scott Ullrich
								<input name="ppp_port" type="hidden" value="<?=htmlspecialchars($pconfig['port']);?>">
2048 30ade846 gnhb
								<?php endif; ?>
2049 dd5bf424 Scott Ullrich
								<input name="ptpid" type="hidden" value="<?=htmlspecialchars($pconfig['ptpid']);?>">
2050 9978e156 gnhb
							</td>
2051
						</tr>
2052 1600b1af Scott Ullrich
					</table>
2053 9978e156 gnhb
				</td>
2054
			</tr>
2055
		</table>
2056 30ade846 gnhb
		<!--
2057 9978e156 gnhb
		</div>
2058
		</td></tr>
2059
		</table>
2060 30ade846 gnhb
		-->
2061 9978e156 gnhb
	</form>
2062 30ade846 gnhb
	<script type="text/javascript">
2063
		var gatewayip;
2064
		var name;
2065
		function show_add_gateway() {
2066
			document.getElementById("addgateway").style.display = '';
2067
			document.getElementById("addgwbox").style.display = 'none';
2068
			document.getElementById("gateway").style.display = 'none';
2069
			document.getElementById("save").style.display = 'none';
2070
			document.getElementById("cancel").style.display = 'none';
2071
			document.getElementById("gwsave").style.display = '';
2072
			document.getElementById("gwcancel").style.display = '';
2073
			$('notebox').innerHTML="";
2074
		}
2075
		function hide_add_gateway() {
2076
			document.getElementById("addgateway").style.display = 'none';
2077 c0948c6c Renato Botelho
			document.getElementById("addgwbox").style.display = '';
2078 30ade846 gnhb
			document.getElementById("gateway").style.display = '';
2079
			document.getElementById("save").style.display = '';
2080
			document.getElementById("cancel").style.display = '';
2081
			document.getElementById("gwsave").style.display = '';
2082
			document.getElementById("gwcancel").style.display = '';
2083
		}
2084
		function hide_add_gatewaysave() {
2085
			document.getElementById("addgateway").style.display = 'none';
2086
			$('status').innerHTML = '<img src="/themes/metallic/images/misc/loader.gif"> One moment please...';
2087
			var iface = $F('if');
2088
			name = $('name').getValue();
2089
			var descr = $('gatewaydescr').getValue();
2090
			gatewayip = $('gatewayip').getValue();
2091
			addrtype = $('addrtype').getValue();
2092
			var defaultgw = $('defaultgw').getValue();
2093
			var url = "system_gateways_edit.php";
2094
			var pars = 'isAjax=true&defaultgw=' + escape(defaultgw) + '&interface=' + escape(iface) + '&name=' + escape(name) + '&descr=' + escape(descr) + '&gateway=' + escape(gatewayip) + '&type=' + escape(addrtype);
2095
			var myAjax = new Ajax.Request(
2096
				url,
2097
				{
2098
					method: 'post',
2099
					parameters: pars,
2100
					onFailure: report_failure,
2101
					onComplete: save_callback
2102 c0948c6c Renato Botelho
				});
2103 30ade846 gnhb
		}
2104
		function addOption(selectbox,text,value)
2105
		{
2106
			var optn = document.createElement("OPTION");
2107
			optn.text = text;
2108
			optn.value = value;
2109
			selectbox.options.add(optn);
2110
			selectbox.selectedIndex = (selectbox.options.length-1);
2111 933ea015 Carlos Eduardo Ramos
			$('notebox').innerHTML="<p/><strong><?=gettext("NOTE:"); ?></strong> <?=gettext("You can manage Gateways"); ?> <a target='_new' href='system_gateways.php'><?=gettext("here"); ?></a>.";
2112 c0948c6c Renato Botelho
		}
2113 30ade846 gnhb
		function report_failure() {
2114
			alert("Sorry, we could not create your gateway at this time.");
2115
			hide_add_gateway();
2116
		}
2117
		function save_callback(transport) {
2118
			var response = transport.responseText;
2119
			if(response) {
2120
				document.getElementById("addgateway").style.display = 'none';
2121
				hide_add_gateway();
2122
				$('status').innerHTML = '';
2123
				addOption($('gateway'), name, name);
2124
				// Auto submit form?
2125
				//document.iform.submit();
2126
				//$('status').innerHTML = '<img src="/themes/metallic/images/misc/loader.gif">';
2127
			} else {
2128
				report_failure();
2129
			}
2130
		}
2131
		<?php
2132 8672329c Erik Fonnesbeck
		echo "show_allcfg(document.iform.enable);";
2133 30ade846 gnhb
		echo "updateType('{$pconfig['type']}');\n";
2134 6c05cfb0 gnhb
		?>
2135 30ade846 gnhb
	</script>
2136
	<?php include("fend.inc"); ?>
2137
	</body>
2138 b09a92b7 Ermal Luçi
</html>