diff options
author | Ermal Luçi <eri@pfsense.org> | 2009-03-16 17:53:28 +0000 |
---|---|---|
committer | Ermal Luçi <eri@pfsense.org> | 2009-03-16 17:53:28 +0000 |
commit | f6a30b172395825a9edc56013dbea7eb97bcd6ef (patch) | |
tree | bd1429cc68bfa46b1646dbb4be783842e6f4e9ca /usr | |
parent | 049a688e5daac240b2651bbd2cc178612741d23a (diff) | |
download | pfsense-f6a30b172395825a9edc56013dbea7eb97bcd6ef.zip pfsense-f6a30b172395825a9edc56013dbea7eb97bcd6ef.tar.gz |
Strange how this has survived the interface changes!
Diffstat (limited to 'usr')
-rwxr-xr-x | usr/local/www/interfaces_wan.php | 987 |
1 files changed, 0 insertions, 987 deletions
diff --git a/usr/local/www/interfaces_wan.php b/usr/local/www/interfaces_wan.php deleted file mode 100755 index 562dd50..0000000 --- a/usr/local/www/interfaces_wan.php +++ /dev/null @@ -1,987 +0,0 @@ -<?php -/* $Id$ */ -/* - interfaces_wan.php - Copyright (C) 2007 Scott Ullrich - Copyright (C) 2008 Ermal Luçi - All rights reserved. - - originally part of m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - -##|+PRIV -##|*IDENT=page-interfaces-wan -##|*NAME=Interfaces: WAN page -##|*DESCR=Allow access to the 'Interfaces: WAN' page. -##|*MATCH=interfaces_wan.php* -##|-PRIV - -if ($_REQUEST['if']) - $if = $_REQUEST['if']; -else - $if = "wan"; - -define("CRON_MONTHLY_PATTERN", "0 0 1 * *"); -define("CRON_WEEKLY_PATTERN", "0 0 * * 0"); -define("CRON_DAILY_PATTERN", "0 0 * * *"); -define("CRON_HOURLY_PATTERN", "0 * * * *"); -define("CRON_PPPOE_CMD_FILE", "/etc/pppoerestart"); -define("CRON_PPPOE_CMD", "#!/bin/sh\necho '<?php require(\"interfaces.inc\"); interfaces_wan_pppoe_restart($if); services_dyndns_reset($if); ?>' | /usr/local/bin/php -q"); - -function getMPDCRONSettings() { - global $config; - - if (is_array($config['cron']['item'])) { - for ($i = 0; $i < count($config['cron']['item']); $i++) { - $item =& $config['cron']['item'][$i]; - - if (strpos($item['command'], CRON_PPPOE_CMD_FILE) !== false) { - return array("ID" => $i, "ITEM" => $item); - } - } - } - - return NULL; -} - -function getMPDResetTimeFromConfig() { - $itemhash = getMPDCRONSettings(); - $cronitem = $itemhash['ITEM']; - - if (isset($cronitem)) { - - return "{$cronitem['minute']} {$cronitem['hour']} {$cronitem['mday']} {$cronitem['month']} {$cronitem['wday']}"; - } else { - return NULL; - } -} - -function remove_bad_chars($string) { - return preg_replace('/[^a-z|_|0-9]/i','',$string); -} - -require("guiconfig.inc"); - -if (!is_array($config['gateways']['gateway_item'])) - $config['gateways']['gateway_item'] = array(); -$a_gateways = &$config['gateways']['gateway_item']; - -$wancfg = &$config['interfaces'][$if]; - -$pconfig['pppoe_username'] = $wancfg['pppoe_username']; -$pconfig['pppoe_password'] = $wancfg['pppoe_password']; -$pconfig['provider'] = $wancfg['provider']; -$pconfig['pppoe_dialondemand'] = isset($wancfg['ondemand']); -$pconfig['pppoe_idletimeout'] = $wancfg['timeout']; - -/* ================================================ */ -/* = force a connection reset at a specific time? = */ -/* ================================================ */ - -if (isset($wancfg['pppoe']['pppoe-reset-type'])) { - $resetTime = getMPDResetTimeFromConfig(); - $pconfig['pppoe_preset'] = true; - - if ($wancfg['pppoe']['pppoe-reset-type'] == "custom") { - $resetTime_a = split(" ", $resetTime); - $pconfig['pppoe_pr_custom'] = true; - $pconfig['pppoe_resetminute'] = $resetTime_a[0]; - $pconfig['pppoe_resethour'] = $resetTime_a[1]; - - /* just initialize $pconfig['pppoe_resetdate'] if the - * coresponding item contains appropriate numeric values. - */ - if ($resetTime_a[2] <> "*" && $resetTime_a[3] <> "*") { - $pconfig['pppoe_resetdate'] = "{$resetTime_a[3]}/{$resetTime_a[2]}/" . date("Y"); - } - } else if ($wancfg['pppoe']['pppoe-reset-type'] == "preset") { - $pconfig['pppoe_pr_preset'] = true; - - switch ($resetTime) { - case CRON_MONTHLY_PATTERN: - $pconfig['pppoe_monthly'] = true; - break; - case CRON_WEEKLY_PATTERN: - $pconfig['pppoe_weekly'] = true; - break; - case CRON_DAILY_PATTERN: - $pconfig['pppoe_daily'] = true; - break; - case CRON_HOURLY_PATTERN: - $pconfig['pppoe_hourly'] = true; - break; - } - } -} - -$pconfig['pptp_username'] = $wancfg['pptp_username']; -$pconfig['pptp_password'] = $wancfg['pptp_password']; -$pconfig['pptp_local'] = $wancfg['local']; -$pconfig['pptp_subnet'] = $wancfg['subnet']; -$pconfig['pptp_remote'] = $wancfg['remote']; -$pconfig['pptp_dialondemand'] = isset($wancfg['ondemand']); -$pconfig['pptp_idletimeout'] = $wancfg['timeout']; - -$pconfig['disableftpproxy'] = isset($wancfg['disableftpproxy']); - -$pconfig['dhcphostname'] = $wancfg['dhcphostname']; -$pconfig['alias-address'] = $wancfg['alias-address']; -$pconfig['alias-subnet'] = $wancfg['alias-subnet']; -$pconfig['descr'] = remove_bad_chars($wancfg['descr']); -if ($if == "wan" || $if == "lan") - $pconfig['enable'] = true; -else - $pconfig['enable'] = isset($wancfg['enable']); - -if (is_array($config['aliases']['alias'])) -foreach($config['aliases']['alias'] as $alias) - if($alias['name'] == $wancfg['descr']) - $input_errors[] = gettext("Sorry, an alias with the name {$wancfg['descr']} a -lready exists."); - -if ($wancfg['ipaddr'] == "dhcp") { - $pconfig['type'] = "dhcp"; -} else if ($wancfg['ipaddr'] == "carpdev-dhcp") { - $pconfig['type'] = "carpdev-dhcp"; - $pconfig['ipaddr'] = ""; -} else if ($wancfg['ipaddr'] == "pppoe") { - $pconfig['type'] = "pppoe"; -} else if ($wancfg['ipaddr'] == "pptp") { - $pconfig['type'] = "pptp"; -} else if ($wancfg['ipaddr'] != "") { - $pconfig['type'] = "static"; - $pconfig['ipaddr'] = $wancfg['ipaddr']; - $pconfig['subnet'] = $wancfg['subnet']; - $pconfig['gateway'] = $wancfg['gateway']; - $pconfig['pointtopoint'] = $wancfg['pointtopoint']; -} else - $pconfig['type'] = "none"; - -$pconfig['blockpriv'] = isset($wancfg['blockpriv']); -$pconfig['blockbogons'] = isset($wancfg['blockbogons']); -$pconfig['spoofmac'] = $wancfg['spoofmac']; -$pconfig['mtu'] = $wancfg['mtu']; - -/* Wireless interface? */ -if (isset($wancfg['wireless'])) { - require("interfaces_wlan.inc"); - wireless_config_init($wancfg); -} - -if ($_POST) { - - unset($input_errors); - $pconfig = $_POST; - - /* filter out spaces from descriptions */ - $_POST['descr'] = remove_bad_chars($_POST['descr']); - - if ($_POST['enable'] || $if == "wan" || $if = "lan") { - /* optional interface if list */ - $iflist = get_configured_interface_with_descr(true); - - /* description unique? */ - foreach ($iflist as $ifent => $ifdescr) { - if ($if != $ifent && $ifdescr == $_POST['descr']) - $input_errors[] = "An interface with the specified descriptio -n already exists."; - } - - /* okay first of all, cause we are just hidding the PPPoE HTML - * fields releated to PPPoE resets, we are going to unset $_POST - * vars, if the reset feature should not be used. Otherwise the - * data validation procedure below, may trigger a false error - * message. - */ - if (empty($_POST['pppoe_preset'])) { - unset($_POST['pppoe_pr_type']); - unset($_POST['pppoe_resethour']); - unset($_POST['pppoe_resetminute']); - unset($_POST['pppoe_resetdate']); - unset($_POST['pppoe_pr_preset_val']); - unlink_if_exists(CRON_PPPOE_CMD_FILE); - } - - /* input validation */ - if ($_POST['type'] == "static") { - if ($if == "wan") { - $reqdfields = explode(" ", "ipaddr subnet gateway"); - $reqdfieldsn = explode(",", "IP address,Subnet bit count,Gateway"); - } else { - $reqdfields = explode(" ", "ipaddr subnet"); - $reqdfieldsn = explode(",", "IP address,Subnet bit count"); - } - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - } else if ($_POST['type'] == "PPPoE") { - if ($_POST['pppoe_dialondemand']) { - $reqdfields = explode(" ", "pppoe_username pppoe_password pppoe_dialondemand pppoe_idletimeout"); - $reqdfieldsn = explode(",", "PPPoE username,PPPoE password,Dial on demand,Idle timeout value"); - } else { - $reqdfields = explode(" ", "pppoe_username pppoe_password"); - $reqdfieldsn = explode(",", "PPPoE username,PPPoE password"); - } - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - } else if ($_POST['type'] == "PPTP") { - if ($_POST['pptp_dialondemand']) { - $reqdfields = explode(" ", "pptp_username pptp_password pptp_local pptp_subnet pptp_remote pptp_dialondemand pptp_idletimeout"); - $reqdfieldsn = explode(",", "PPTP username,PPTP password,PPTP local IP address,PPTP subnet,PPTP remote IP address,Dial on demand,Idle timeout value"); - } else { - $reqdfields = explode(" ", "pptp_username pptp_password pptp_local pptp_subnet pptp_remote"); - $reqdfieldsn = explode(",", "PPTP username,PPTP password,PPTP local IP address,PPTP subnet,PPTP remote IP address"); - } - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - } - - /* normalize MAC addresses - lowercase and convert Windows-ized hyphenated MACs to colon delimited */ - $_POST['spoofmac'] = strtolower(str_replace("-", ":", $_POST['spoofmac'])); - - if (($_POST['ipaddr'] && !is_ipaddr($_POST['ipaddr']))) { - $input_errors[] = "A valid IP address must be specified."; - } - if (($_POST['subnet'] && !is_numeric($_POST['subnet']))) { - $input_errors[] = "A valid subnet bit count must be specified."; - } - if (($_POST['alias-address'] && !is_ipaddr($_POST['alias-address']))) { - $input_errors[] = "A valid alias IP address must be specified."; - } - if (($_POST['alias-subnet'] && !is_numeric($_POST['alias-subnet']))) { - $input_errors[] = "A valid alias subnet bit count must be specified."; - } - if ($_POST['gateway']) { - $match = false; - foreach($a_gateways as $gateway) { - if(in_array($_POST['gateway'], $gateway)) { - $match = true; - } - } - if(!$match) - $input_errors[] = "A valid gateway must be specified."; - } - if (($_POST['pointtopoint'] && !is_ipaddr($_POST['pointtopoint']))) { - $input_errors[] = "A valid point-to-point IP address must be specified."; - } - if (($_POST['provider'] && !is_domain($_POST['provider']))) { - $input_errors[] = "The service name contains invalid characters."; - } - if (($_POST['pppoe_idletimeout'] != "") && !is_numericint($_POST['pppoe_idletimeout'])) { - $input_errors[] = "The idle timeout value must be an integer."; - } - if ($_POST['pppoe_resethour'] <> "" && !is_numericint($_POST['pppoe_resethour']) && - $_POST['pppoe_resethour'] >= 0 && $_POST['pppoe_resethour'] <=23) { - $input_errors[] = gettext("A valid PPPoE reset hour must be specified (0-23)."); - } - if ($_POST['pppoe_resetminute'] <> "" && !is_numericint($_POST['pppoe_resetminute']) && - $_POST['pppoe_resetminute'] >= 0 && $_POST['pppoe_resetminute'] <=59) { - $input_errors[] = gettext("A valid PPPoE reset minute must be specified (0-59)."); - } - if ($_POST['pppoe_resetdate'] <> "" && !is_numeric(str_replace("/", "", $_POST['pppoe_resetdate']))) { - $input_errors[] = gettext("A valid PPPoE reset date must be specified (mm/dd/yyyy)."); - } - if (($_POST['pptp_local'] && !is_ipaddr($_POST['pptp_local']))) { - $input_errors[] = "A valid PPTP local IP address must be specified."; - } - if (($_POST['pptp_subnet'] && !is_numeric($_POST['pptp_subnet']))) { - $input_errors[] = "A valid PPTP subnet bit count must be specified."; - } - if (($_POST['pptp_remote'] && !is_ipaddr($_POST['pptp_remote']))) { - $input_errors[] = "A valid PPTP remote IP address must be specified."; - } - if (($_POST['pptp_idletimeout'] != "") && !is_numericint($_POST['pptp_idletimeout'])) { - $input_errors[] = "The idle timeout value must be an integer."; - } - if (($_POST['spoofmac'] && !is_macaddr($_POST['spoofmac']))) { - $input_errors[] = "A valid MAC address must be specified."; - } - if ($_POST['mtu'] && ($_POST['mtu'] < 576)) { - $input_errors[] = "The MTU must be greater than 576 bytes."; - } - } - - /* Wireless interface? */ - if (isset($wancfg['wireless'])) { - $wi_input_errors = wireless_config_post($wancfg); - if (!is_array($input_errors)) - $input_errors = array(); - if (is_array($wi_input_errors)) { - $input_errors = array_merge($input_errors, $wi_input_errors); - } - } - - if (!$input_errors) { - - unset($wancfg['ipaddr']); - unset($wancfg['subnet']); - unset($wancfg['gateway']); - unset($wancfg['pointtopoint']); - unset($wancfg['dhcphostname']); - unset($wancfg['pppoe_username']); - unset($wancfg['pppoe_password']); - unset($wancfg['pptp_username']); - unset($wancfg['pptp_password']); - unset($wancfg['provider']); - unset($wancfg['ondemand']); - unset($wancfg['timeout']); - if ($wancfg['pppoe']['pppoe-reset-type']) - unset($wancfg['pppoe']['pppoe-reset-type']); - unset($wancfg['local']); - unset($wancfg['subnet']); - unset($wancfg['remote']); - unset($wancfg['disableftpproxy']); - - /* per interface pftpx helper */ - if($_POST['disableftpproxy'] == "yes") { - $wancfg['disableftpproxy'] = true; - system_start_ftp_helpers(); - } else { - system_start_ftp_helpers(); - } - - $wancfg['descr'] = remove_bad_chars($_POST['descr']); - if ($if == "wan" || $if == "lan") - $wancfg['enable'] = true; - else - $wancfg['enable'] = $_POST['enable'] ? true : false; - - if ($_POST['type'] == "static") { - $wancfg['ipaddr'] = $_POST['ipaddr']; - $wancfg['subnet'] = $_POST['subnet']; - $wancfg['gateway'] = $_POST['gateway']; - if (isset($wancfg['ispointtopoint'])) - $wancfg['pointtopoint'] = $_POST['pointtopoint']; - } else if ($_POST['type'] == "dhcp") { - $wancfg['ipaddr'] = "dhcp"; - $wancfg['dhcphostname'] = $_POST['dhcphostname']; - $wancfg['alias-address'] = $_POST['alias-address']; - $wancfg['alias-subnet'] = $_POST['alias-subnet']; - } else if ($_POST['type'] == "carpdev-dhcp") { - $wancfg['ipaddr'] = "carpdev-dhcp"; - $wancfg['dhcphostname'] = $_POST['dhcphostname']; - $wancfg['alias-address'] = $_POST['alias-address']; - $wancfg['alias-subnet'] = $_POST['alias-subnet']; - } else if ($_POST['type'] == "pppoe") { - $wancfg['ipaddr'] = "pppoe"; - $wancfg['pppoe_username'] = $_POST['pppoe_username']; - $wancfg['pppoe_password'] = $_POST['pppoe_password']; - $wancfg['provider'] = $_POST['provider']; - $wancfg['ondemand'] = $_POST['pppoe_dialondemand'] ? true : false; - $wancfg['timeout'] = $_POST['pppoe_idletimeout']; - - /* perform a periodic reset? */ - if (isset($_POST['pppoe_preset'])) { - if (! is_array($config['cron']['item'])) { $config['cron']['item'] = array(); } - - $itemhash = getMPDCRONSettings(); - $item = $itemhash['ITEM']; - - if (empty($item)) { - $item = array(); - } - - if (isset($_POST['pppoe_pr_type']) && $_POST['pppoe_pr_type'] == "custom") { - $wancfg['pppoe']['pppoe-reset-type'] = "custom"; - $pconfig['pppoe_pr_custom'] = true; - - $item['minute'] = $_POST['pppoe_resetminute']; - $item['hour'] = $_POST['pppoe_resethour']; - - if (isset($_POST['pppoe_resetdate']) && - $_POST['pppoe_resetdate'] <> "" && - strlen($_POST['pppoe_resetdate']) == 10) { - $date = explode("/", $_POST['pppoe_resetdate']); - $item['mday'] = $date[1]; - $item['month'] = $date[0]; - } else { - $item['mday'] = "*"; - $item['month'] = "*"; - } - $item['wday'] = "*"; - $item['who'] = "root"; - $item['command'] = CRON_PPPOE_CMD_FILE; - } else if (isset($_POST['pppoe_pr_type']) && $_POST['pppoe_pr_type'] = "preset") { - $wancfg['pppoe']['pppoe-reset-type'] = "preset"; - $pconfig['pppoe_pr_preset'] = true; - - switch ($_POST['pppoe_pr_preset_val']) { - case "monthly": - $item['minute'] = "0"; - $item['hour'] = "0"; - $item['mday'] = "1"; - $item['month'] = "*"; - $item['wday'] = "*"; - $item['who'] = "root"; - $item['command'] = CRON_PPPOE_CMD_FILE; - break; - case "weekly": - $item['minute'] = "0"; - $item['hour'] = "0"; - $item['mday'] = "*"; - $item['month'] = "*"; - $item['wday'] = "0"; - $item['who'] = "root"; - $item['command'] = CRON_PPPOE_CMD_FILE; - break; - case "daily": - $item['minute'] = "0"; - $item['hour'] = "0"; - $item['mday'] = "*"; - $item['month'] = "*"; - $item['wday'] = "*"; - $item['who'] = "root"; - $item['command'] = CRON_PPPOE_CMD_FILE; - break; - case "hourly": - $item['minute'] = "0"; - $item['hour'] = "*"; - $item['mday'] = "*"; - $item['month'] = "*"; - $item['wday'] = "*"; - $item['who'] = "root"; - $item['command'] = CRON_PPPOE_CMD_FILE; - break; - } // end switch - } // end if - if (isset($itemhash['ID'])) { - $config['cron']['item'][$itemhash['ID']] = $item; - } else { - $config['cron']['item'][] = $item; - } - } // end if - } else if ($_POST['type'] == "pptp") { - $wancfg['ipaddr'] = "pptp"; - $wancfg['pptp_username'] = $_POST['pptp_username']; - $wancfg['pptp_password'] = $_POST['pptp_password']; - $wancfg['local'] = $_POST['pptp_local']; - $wancfg['subnet'] = $_POST['pptp_subnet']; - $wancfg['remote'] = $_POST['pptp_remote']; - $wancfg['ondemand'] = $_POST['pptp_dialondemand'] ? true : false; - $wancfg['timeout'] = $_POST['pptp_idletimeout']; - } - - /* reset cron items if necessary */ - if (empty($_POST['pppoe_preset'])) { - /* test whether a cron item exists and unset() it if necessary */ - $itemhash = getMPDCRONSettings(); - $item = $itemhash['ITEM']; - if (isset($item)) { unset($config['cron']['item'][$itemhash['ID']]); } - } - - if($_POST['blockpriv'] == "yes") - $wancfg['blockpriv'] = true; - else - unset($wancfg['blockpriv']); - - if($_POST['blockbogons'] == "yes") - $wancfg['blockbogons'] = true; - else - unset($wancfg['blockbogons']); - - $wancfg['spoofmac'] = $_POST['spoofmac']; - $wancfg['mtu'] = $_POST['mtu']; - - write_config(); - - if ($if = "lan") { - /* restart snmp so that it binds to correct address */ - services_snmpd_configure(); - $savemsg = "The changes have been applied. You may need to correct your web browser's IP address."; - } - - /* finally install the pppoerestart file */ - if (isset($_POST['pppoe_preset'])) { - config_lock(); - conf_mount_rw(); - - if (! file_exists(CRON_PPPOE_CMD_FILE)) { - file_put_contents(CRON_PPPOE_CMD_FILE, CRON_PPPOE_CMD); - chmod(CRON_PPPOE_CMD_FILE, 0700); - } - - /* regenerate cron settings/crontab file */ - configure_cron(); - sigkillbypid("{$g['varrun_path']}/cron.pid", "HUP"); - - conf_mount_ro(); - config_unlock(); - } - - $retval = 0; - $savemsg = get_std_save_message($retval); - } -} - -// Populate page descr if it does not exist. -if($if == "wan" && !$wancfg['descr']) - $wancfg['descr'] = "WAN"; -else if ($if == "lan" && !$wancfg['descr']) - $wancfg['descr'] = "LAN"; - -$pgtitle = array("Interfaces", $wancfg['descr']); -$closehead = false; -include("head.inc"); - - $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe" => "PPPoE", "pptp" => "PPTP" /* , "carpdev-dhcp" => "CarpDev"*/); -?> - -<script type="text/javascript" src="/javascript/numericupdown/js/numericupdown.js"></script> -<link href="/javascript/numericupdown/css/numericupdown.css" rel="stylesheet" type="text/css" /> - -<script type="text/javascript" src="/javascript/datepicker/js/datepicker.js"></script> -<link href="/javascript/datepicker/css/datepicker.css" rel="stylesheet" type="text/css" /> - -<script type="text/javascript"> -<!-- - -function updateType(t){ - switch(t) { -<?php - /* OK, so this is sick using php to generate javascript, but it needed to be done */ - foreach ($types as $key => $val) { - echo " case \"{$key}\": {\n"; - $t = $types; - foreach ($t as $k => $v) { - if ($k != $key) { - echo " $('{$k}').hide();\n"; - } - } - echo " }\n"; - } -?> - } - $(t).appear(); -} - -function show_allcfg(obj) { - if (obj.checked) - $('allcfg').appear(); - else - $('allcfg').hide(); -} - -function show_mon_config() { - document.getElementById("showmonbox").innerHTML=''; - aodiv = document.getElementById('showmon'); - aodiv.style.display = "block"; -} - -//--> -</script> -</head> -<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> -<?php include("fbegin.inc"); ?> -<?php if ($input_errors) print_input_errors($input_errors); ?> - -<?php if ($savemsg) print_info_box($savemsg); ?> - <form action="interfaces_wan.php?if=<?php echo "{$if}";?>" method="post" name="iform" id="iform"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td colspan="2" valign="top" class="listtopic">General configuration</td> - </tr> -<?php if ($if != "wan" || $if != "lan"): ?> - <tr> - <td width="22%" valign="top" class="vtable"> </td> - <td width="78%" class="vtable"> - <input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked"; ?> onClick="show_allcfg(this);"> - <strong>Enable Interface</strong></td> - </tr> -<?php endif; ?> - <tr style="display:none;" name="allcfg" id="allcfg"> - <td colspan="2"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td width="22%" valign="top" class="vncell">Description</td> - <td width="78%" class="vtable"> - <input name="descr" type="text" class="formfld unknown" id="descr" size="30" value="<?=htmlspecialchars($pconfig['descr']);?>"> - <br> <span class="vexpl">Enter a description (name) for the interface here.</span> - </td> - </tr> - <tr> - <td valign="middle" class="vncell"><strong>Type</strong></td> - <td class="vtable"> <select name="type" onChange="updateType(this.value);" class="formselect" id="type"> - <?php - foreach ($types as $key => $opt) { - echo "<option onClick=\"updateType('{$key}');\""; - if ($key == $pconfig['type']) - echo " selected"; - echo " value=\"{$key}\" >" . htmlspecialchars($opt); - echo "</option>"; - } ?> - </select></td> - </tr> - <tr> - <td valign="top" class="vncell">MAC address</td> - <td class="vtable"> <input name="spoofmac" type="text" class="formfld unknown" id="spoofmac" size="30" value="<?=htmlspecialchars($pconfig['spoofmac']);?>"> - <?php - $ip = getenv('REMOTE_ADDR'); - $mac = `/usr/sbin/arp -an | grep {$ip} | cut -d" " -f4`; - $mac = str_replace("\n","",$mac); - ?> - <a OnClick="document.forms[0].spoofmac.value='<?=$mac?>';" href="#">Copy my MAC address</a> - <br> - This field can be used to modify ("spoof") the MAC - address of the WAN interface<br> - (may be required with some cable connections)<br> - Enter a MAC address in the following format: xx:xx:xx:xx:xx:xx - or leave blank</td> - </tr> - <tr> - <td valign="top" class="vncell">MTU</td> - <td class="vtable"> <input name="mtu" type="text" class="formfld unknown" id="mtu" size="8" value="<?=htmlspecialchars($pconfig['mtu']);?>"> - <br> - If you enter a value in this field, then MSS clamping for - TCP connections to the value entered above minus 40 (TCP/IP - header size) will be in effect. If you leave this field blank, - an MTU of 1492 bytes for PPPoE and 1500 bytes for all other - connection types will be assumed.</td> - </tr> - <tr style="display:none;" name="none" id="none"> - </tr> - <tr style="display:none;" name="static" id="static"> - <td colspan="2"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td colspan="2" valign="top" class="listtopic">Static IP configuration</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq">IP address</td> - <td width="78%" class="vtable"> <input name="ipaddr" type="text" class="formfld unknown" id="ipaddr" size="20" value="<?=htmlspecialchars($pconfig['ipaddr']);?>"> - / - <select name="subnet" class="formselect" id="subnet"> - <?php - for ($i = 32; $i > 0; $i--) { - if($i <> 31) { - echo "<option value=\"{$i}\" "; - if ($i == $pconfig['subnet']) echo "selected"; - echo ">" . $i . "</option>"; - } - } - ?> - </select></td> - </tr><?php if (isset($wancfg['ispointtopoint'])): ?> - <tr> - <td width="22%" valign="top" class="vncellreq">Point-to-point IP address </td> - <td width"78%" class="vtable"> - <input name="pointtopoint" type="text" class="formfld unknown" id="pointtopoint" size="20" value="<?=htmlspecialchars($pconfig['pointtopoint']);?>"> - </td> - </tr><?php endif; ?> - <tr> - <td width="22%" valign="top" class="vncellreq">Gateway</td> - <td width="78%" class="vtable"><select name="gateway" class="formselect" id="gateway"> - <?php - if(count($a_gateways) > 0) { - foreach ($a_gateways as $gateway) { - if($gateway['interface'] == $if) { - ?> - <option value="<?=$gateway['name'];?>" <?php if ($gateway['name'] == $pconfig['gateway']) echo "selected"; ?>> - <?=htmlspecialchars($gateway['name']);?> - </option> - <?php - } - } - } - ?> - </select>Select a existing Gateway from the list or add one on the <a href="/system_gateways.php">Gateways</a> page<br> - </td> - </tr> - </table> - </td> - </tr> - <tr style="display:none;" name="dhcp" id="dhcp"> - <td colspan="2"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td colspan="2" valign="top" class="listtopic">DHCP client configuration</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell">Hostname</td> - <td width="78%" class="vtable"> <input name="dhcphostname" type="text" class="formfld unknown" id="dhcphostname" size="40" value="<?=htmlspecialchars($pconfig['dhcphostname']);?>"> - <br> - The value in this field is sent as the DHCP client identifier - and hostname when requesting a DHCP lease. Some ISPs may require - this (for client identification).</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq">Alias IP address</td> - <td width="78%" class="vtable"> <input name="alias-address" type="text" class="formfld unknown" id="alias-address" size="20" value="<?=htmlspecialchars($pconfig['alias-address']);?>"> - <select name="alias-subnet" class="formselect" id="alias-subnet"> - <?php - for ($i = 32; $i > 0; $i--) { - if($i <> 31) { - echo "<option value=\"{$i}\" "; - if ($i == $pconfig['alias-subnet']) echo "selected"; - echo ">" . $i . "</option>"; - } - } - ?> - </select> - The value in this field is used as a fixed alias IP address by the - DHCP client.</td> - </tr> - </table> - </td> - </tr> - <tr style="display:none;" name="pppoe" id="pppoe"> - <td colspan="2"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td colspan="2" valign="top" class="listtopic">PPPoE configuration</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq">Username</td> - <td width="78%" class="vtable"><input name="pppoe_username" type="text" class="formfld user" id="pppoe_username" size="20" value="<?=htmlspecialchars($pconfig['pppoe_username']);?>"> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq">Password</td> - <td width="78%" class="vtable"><input name="pppoe_password" type="password" class="formfld pwd" id="pppoe_password" size="20" value="<?=htmlspecialchars($pconfig['pppoe_password']);?>"> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell">Service name</td> - <td width="78%" class="vtable"><input name="provider" type="text" class="formfld unknown" id="provider" size="20" value="<?=htmlspecialchars($pconfig['provider']);?>"> - <br> <span class="vexpl">Hint: this field can usually be left - empty</span></td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell">Dial on demand</td> - <td width="78%" class="vtable"><input name="pppoe_dialondemand" type="checkbox" id="pppoe_dialondemand" value="enable" <?php if ($pconfig['pppoe_dialondemand']) echo "checked"; ?>" > - <strong>Enable Dial-On-Demand mode</strong><br> - This option causes the interface to operate in dial-on-demand mode, allowing you to have a <i>virtual full time</i> connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected.</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell">Idle timeout</td> - <td width="78%" class="vtable"> - <input name="pppoe_idletimeout" type="text" class="formfld unknown" id="pppoe_idletimeout" size="8" value="<?=htmlspecialchars($pconfig['pppoe_idletimeout']);?>"> -seconds<br>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.</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("Periodic reset");?></td> - <td width="78%" class="vtable"> - <input name="pppoe_preset" type="checkbox" id="pppoe_preset" value="yes" <?php if ($pconfig['pppoe_preset']) echo "checked=\"checked\""; ?> onclick="Effect.toggle('presetwrap', 'appear', { duration: 1.0 });" /> - <?= gettext("enable periodic PPPoE resets"); ?> - <br /> - <?php if ($pconfig['pppoe_preset']): ?> - <table id="presetwrap" cellspacing="0" cellpadding="0" width="100%"> - <?php else: ?> - <table id="presetwrap" cellspacing="0" cellpadding="0" width="100%" style="display: none;"> - <?php endif; ?> - <tr> - <td align="left" valign="top"> - <p style="margin: 4px; padding: 4px 0 4px 0; width: 94%;"> - <input name="pppoe_pr_type" type="radio" id="pppoe_pr_custom" value="custom" <?php if ($pconfig['pppoe_pr_custom']) echo "checked=\"checked\""; ?> onclick="if (this.checked) { Effect.Appear('pppoecustomwrap', { duration: 1.0 }); Effect.Fade('pppoepresetwrap', { duration: 1.0 }); }" /> - <?= gettext("provide a custom reset time"); ?> - <br /> - <input name="pppoe_pr_type" type="radio" id="pppoe_pr_preset" value="preset" <?php if ($pconfig['pppoe_pr_preset']) echo "checked=\"checked\""; ?> onclick="if (this.checked) { Effect.Appear('pppoepresetwrap', { duration: 1.0 }); Effect.Fade('pppoecustomwrap', { duration: 1.0 }); }" /> - <?= gettext("select reset time from a preset"); ?> - </p> - <?php if ($pconfig['pppoe_pr_custom']): ?> - <p style="margin: 2px; padding: 4px; width: 94%;" id="pppoecustomwrap"> - <?php else: ?> - <p style="margin: 2px; padding: 4px; width: 94%; display: none;" id="pppoecustomwrap"> - <?php endif; ?> - <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" /> - <?= gettext("hour (0-23)"); ?><br /> - <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" /> - <?= gettext("minute (0-59)"); ?><br /> - <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']);?>" /> - <?= gettext("reset at a specific date (mm/dd/yyyy)"); ?> - <br /> <br /> - <span class="red"><strong>Note: </strong></span> - 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. - </p> - <?php if ($pconfig['pppoe_pr_preset']): ?> - <p style="margin: 2px; padding: 4px; width: 94%;" id="pppoepresetwrap"> - <?php else: ?> - <p style="margin: 2px; padding: 4px; width: 94%; display: none;" id="pppoepresetwrap"> - <?php endif; ?> - <input name="pppoe_pr_preset_val" type="radio" id="pppoe_monthly" value="monthly" <?php if ($pconfig['pppoe_monthly']) echo "checked=\"checked\""; ?> /> - <?= gettext("reset at each month ('0 0 1 * *')"); ?> - <br /> - <input name="pppoe_pr_preset_val" type="radio" id="pppoe_weekly" value="weekly" <?php if ($pconfig['pppoe_weekly']) echo "checked=\"checked\""; ?> /> - <?= gettext("reset at each week ('0 0 * * 0')"); ?> - <br /> - <input name="pppoe_pr_preset_val" type="radio" id="pppoe_daily" value="daily" <?php if ($pconfig['pppoe_daily']) echo "checked=\"checked\""; ?> /> - <?= gettext("reset at each day ('0 0 * * *')"); ?> - <br /> - <input name="pppoe_pr_preset_val" type="radio" id="pppoe_hourly" value="hourly" <?php if ($pconfig['pppoe_hourly']) echo "checked=\"checked\""; ?> /> - <?= gettext("reset at each hour ('0 * * * *')"); ?> - </p> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - <tr style="display:none;" name="pptp" id="pptp"> - <td colspan="2"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td colspan="2" valign="top" class="listtopic">PPTP configuration</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq">Username</td> - <td width="78%" class="vtable"><input name="pptp_username" type="text" class="formfld user" id="pptp_username" size="20" value="<?=htmlspecialchars($pconfig['pptp_username']);?>"> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq">Password</td> - <td width="78%" class="vtable"><input name="pptp_password" type="text" class="formfld pwd" id="pptp_password" size="20" -value="<?=htmlspecialchars($pconfig['pptp_password']);?>"> - </td> - </tr> - <tr> - <td width="22%" width="100" valign="top" class="vncellreq">Local IP address</td> - <td width="78%" class="vtable"> <input name="pptp_local" type="text" class="formfld unknown" id="pptp_local" size="20" -value="<?=htmlspecialchars($pconfig['pptp_local']);?>"> - / - <select name="pptp_subnet" class="formselect" id="pptp_subnet"> - <?php for ($i = 31; $i > 0; $i--): ?> - <option value="<?=$i;?>" <?php if ($i == $pconfig['pptp_subnet']) echo "selected"; ?>> - <?=$i;?> - </option> - <?php endfor; ?> - </select></td> - </tr> - <tr> - <td width="22%" width="100" valign="top" class="vncellreq">Remote IP address</td> - <td width="78%" class="vtable"> <input name="pptp_remote" type="text" class="formfld unknown" id="pptp_remote" size="20" value="<?=htmlspecialchars($pconfig['pptp_remote']);?>"> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell">Dial on demand</td> - <td width="78%" class="vtable"><input name="pptp_dialondemand" type="checkbox" id="pptp_dialondemand" value="enable" <?php if ($pconfig['pptp_dialondemand']) echo "checked"; ?>" > - <strong>Enable Dial-On-Demand mode</strong><br> - This option causes the interface to operate in dial-on-demand mode, allowing you to have a <i>virtual full time</i> connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected.</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell">Idle timeout</td> - <td width="78%" class="vtable"> - <input name="pptp_idletimeout" type="text" class="formfld unknown" id="pptp_idletimeout" size="8" value="<?=htmlspecialchars($pconfig['pptp_idletimeout']);?>"> -seconds<br>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.</td> - </tr> - </table> - </td> - </tr> - <tr> - <td width="100" valign="top"></td> - <td> <input name="Submit" type="submit" class="formbtn" value="Save"></td> - </tr> - <tr> - <td colspan="2" valign="top" height="10"></td> - </tr> - <tr> - <td colspan="2" valign="top" class="listtopic">Other</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell">FTP Helper</td> - <td width="78%" class="vtable"> - <input name="disableftpproxy" type="checkbox" id="disableftpproxy" value="yes" <?php if ($pconfig['disableftpproxy']) echo "checked"; ?> /> - <strong>Disable the userland FTP-Proxy application</strong> - <br /> - </td> - </tr> - <?php - /* Wireless interface? */ - if (isset($wancfg['wireless'])) - wireless_config_print($wancfg); - ?> - <tr> - <td height="16" colspan="2" valign="top"></td> - </tr> - <tr> - <td valign="middle"> </td> - <td class="vtable"><a name="rfc1918"></a> <input name="blockpriv" type="checkbox" id="blockpriv" value="yes" <?php if ($pconfig['blockpriv']) echo "checked"; ?>> - <strong>Block private networks</strong><br> - When set, this option blocks traffic from IP addresses that - are reserved for private<br> - networks as per RFC 1918 (10/8, 172.16/12, 192.168/16) as - well as loopback addresses<br> - (127/8). You should generally leave this option turned on, - unless your WAN network<br> - lies in such a private address space, too.</td> - </tr> - <tr> - <td valign="middle"> </td> - <td class="vtable"> <input name="blockbogons" type="checkbox" id="blockbogons" value="yes" <?php if ($pconfig['blockbogons']) echo "checked"; ?>> - <strong>Block bogon networks</strong><br> - When set, this option blocks traffic from IP addresses that - are reserved (but not RFC 1918) or not yet assigned by IANA.<br> - Bogons are prefixes that should never appear in the Internet routing table, and obviously should not appear as the source address in any packets you receive.</td> - </tr> - </table> - </td> - </tr> - <tr> - <td width="100" valign="top"> </td> - <td> <br> <input name="Submit" type="submit" class="formbtn" value="Save"> - <input name="if" type="hidden" id="if" value="<?=$if;?>"> - </td> - </tr> - </table> -</form> -<script language="JavaScript"> -<!-- -<?php -if ($if == "wan" || $if == "lan") - echo "\$('allcfg').appear();"; -else - echo "show_allcfg(document.iform.enable);"; -echo "updateType('{$pconfig['type']}')"; -?> -//--> -</script> -<?php include("fend.inc"); ?> -</body> -</html> - - -<?php - -if ($_POST) { - - if (!$input_errors) { - - unlink_if_exists("{$g['tmp_path']}/config.cache"); - - ob_flush(); - flush(); - sleep(1); - - interfaces_wan_configure($if); - - reset_carp(); - - /* sync filter configuration */ - filter_configure(); - - /* set up static routes */ - system_routing_configure(); - - } -} - -?> |