summaryrefslogtreecommitdiffstats
path: root/usr
diff options
context:
space:
mode:
Diffstat (limited to 'usr')
-rw-r--r--usr/local/sbin/mpd.script34
-rwxr-xr-xusr/local/www/diag_logs.php1
-rwxr-xr-xusr/local/www/diag_logs_auth.php1
-rwxr-xr-xusr/local/www/diag_logs_dhcp.php1
-rwxr-xr-xusr/local/www/diag_logs_filter.php1
-rwxr-xr-xusr/local/www/diag_logs_filter_dynamic.php1
-rw-r--r--usr/local/www/diag_logs_filter_summary.php1
-rwxr-xr-xusr/local/www/diag_logs_ipsec.php1
-rw-r--r--usr/local/www/diag_logs_ntpd.php1
-rw-r--r--usr/local/www/diag_logs_openvpn.php1
-rwxr-xr-xusr/local/www/diag_logs_ppp.php124
-rwxr-xr-xusr/local/www/diag_logs_relayd.php1
-rwxr-xr-xusr/local/www/diag_logs_settings.php1
-rwxr-xr-xusr/local/www/diag_logs_vpn.php1
-rw-r--r--usr/local/www/help.php1
-rwxr-xr-xusr/local/www/interfaces.php454
-rwxr-xr-xusr/local/www/interfaces_assign.php145
-rw-r--r--usr/local/www/interfaces_bridge.php2
-rw-r--r--usr/local/www/interfaces_gif.php4
-rw-r--r--usr/local/www/interfaces_gre.php2
-rwxr-xr-xusr/local/www/interfaces_groups.php20
-rw-r--r--usr/local/www/interfaces_lagg.php4
-rw-r--r--usr/local/www/interfaces_ppp.php9
-rw-r--r--usr/local/www/interfaces_ppps.php133
-rw-r--r--usr/local/www/interfaces_ppps_edit.php910
-rwxr-xr-xusr/local/www/interfaces_qinq.php6
-rwxr-xr-xusr/local/www/interfaces_vlan.php6
-rw-r--r--usr/local/www/interfaces_wireless.php2
-rw-r--r--usr/local/www/javascript/interfaces_ppps_edit/ppps_edit.js160
29 files changed, 1733 insertions, 295 deletions
diff --git a/usr/local/sbin/mpd.script b/usr/local/sbin/mpd.script
index aa2501e..f69ac4b 100644
--- a/usr/local/sbin/mpd.script
+++ b/usr/local/sbin/mpd.script
@@ -77,7 +77,7 @@ DialPeer1:
set $ModTelephone $Telephone
call ModemIdent
if $ModemDescription != "" goto DialPeer2
- log "The modem is not responding."
+ log "No match found in the ModemIdent function in the chat script."
failure
DialPeer2:
@@ -352,16 +352,13 @@ ModemIdent:
print "ATI\r\n"
match "ADTRAN EXPRESS XR" ModemIdentAdtranXRT
match "Model: Ovation MC950D Card" ModemIdentMC950D
- match "C885" ModemIdentC885
match "ERR" ModemIdentGeneric
match "OK\r\n" ModemIdentGeneric
wait 3
- print "ATI8\r\n"
- match "BitSURFR PRO\r" ModemIdentBitsurfr
- match "BitSURFR PRO EZ" ModemIdentBitsurfrEZ
- match "3C882" ModemIdentImpactIQ
- match "ERR"
- match "OK\r\n"
+ print "ATI1\r\n"
+ match "NTK omni.net" ModemIdentNTK
+ match "ERR" ModemIdentGeneric
+ match "OK\r\n" ModemIdentGeneric
wait 3
print "ATI3\r\n"
match "Courier" ModemIdentUsr
@@ -381,12 +378,19 @@ ModemIdent:
match "ERR"
match "OK\r\n"
wait 3
- print "ATI1\r\n"
- match "NTK omni.net" ModemIdentNTK
- match "ERR" ModemIdentGeneric
+ print "ATI5\r\n"
+ match "C885" ModemIdentC885
+ match "ERR"
match "OK\r\n" ModemIdentGeneric
wait 3
- log "The modem is not responding."
+ print "ATI8\r\n"
+ match "BitSURFR PRO\r" ModemIdentBitsurfr
+ match "BitSURFR PRO EZ" ModemIdentBitsurfrEZ
+ match "3C882" ModemIdentImpactIQ
+ match "ERR"
+ match "OK\r\n"
+ wait 3
+ log "The modem is not responding to any ATI[1,3-5,8] commands."
failure
ModemIdentGeneric:
@@ -1432,14 +1436,14 @@ ModemCmd0:
wait $modemCmdTimeout
set $modemCmdResult "TIMEOUT"
ModemCmdTimeout:
- set $ErrorMsg "The modem is not responding."
+ set $ErrorMsg "The modem is not responding to \"AT$modemCmd\" at ModemCmd: label."
return
ModemCmdOk:
set $modemCmdResult "OK"
return
ModemCmdErr:
set $modemCmdResult "ERROR"
- set $ErrorMsg "The modem did not accept the command AT$modemCmd."
+ set $ErrorMsg "The modem responded with \"ERROR\" to the command \"AT$modemCmd\" at ModemCmd: label."
return
##
@@ -1518,7 +1522,7 @@ ReadLineDone:
GetOK:
match "OK\r\n" GotOK
wait 3
- log "The modem is not responding."
+ log "The modem did not respond with \"OK\"."
failure
GotOK:
return
diff --git a/usr/local/www/diag_logs.php b/usr/local/www/diag_logs.php
index 58470f9..85b61df 100755
--- a/usr/local/www/diag_logs.php
+++ b/usr/local/www/diag_logs.php
@@ -79,6 +79,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_auth.php b/usr/local/www/diag_logs_auth.php
index 25e92d6..700b6dc 100755
--- a/usr/local/www/diag_logs_auth.php
+++ b/usr/local/www/diag_logs_auth.php
@@ -67,6 +67,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", true, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_dhcp.php b/usr/local/www/diag_logs_dhcp.php
index 0b94962..b95b969 100755
--- a/usr/local/www/diag_logs_dhcp.php
+++ b/usr/local/www/diag_logs_dhcp.php
@@ -69,6 +69,7 @@ include("head.inc");
$tab_array[] = array("DHCP", true, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_filter.php b/usr/local/www/diag_logs_filter.php
index 819a4ce..9d8d9cd 100755
--- a/usr/local/www/diag_logs_filter.php
+++ b/usr/local/www/diag_logs_filter.php
@@ -103,6 +103,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_filter_dynamic.php b/usr/local/www/diag_logs_filter_dynamic.php
index a8ac4b5..a07b52b 100755
--- a/usr/local/www/diag_logs_filter_dynamic.php
+++ b/usr/local/www/diag_logs_filter_dynamic.php
@@ -102,6 +102,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_filter_summary.php b/usr/local/www/diag_logs_filter_summary.php
index 485e26b..4904127 100644
--- a/usr/local/www/diag_logs_filter_summary.php
+++ b/usr/local/www/diag_logs_filter_summary.php
@@ -186,6 +186,7 @@ include("head.inc"); ?>
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_ipsec.php b/usr/local/www/diag_logs_ipsec.php
index 33052b5..039193b 100755
--- a/usr/local/www/diag_logs_ipsec.php
+++ b/usr/local/www/diag_logs_ipsec.php
@@ -89,6 +89,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", true, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_ntpd.php b/usr/local/www/diag_logs_ntpd.php
index 033b6fc..d168f70 100644
--- a/usr/local/www/diag_logs_ntpd.php
+++ b/usr/local/www/diag_logs_ntpd.php
@@ -67,6 +67,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_openvpn.php b/usr/local/www/diag_logs_openvpn.php
index 73e6ed5..aa50856 100644
--- a/usr/local/www/diag_logs_openvpn.php
+++ b/usr/local/www/diag_logs_openvpn.php
@@ -71,6 +71,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", true, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_ppp.php b/usr/local/www/diag_logs_ppp.php
new file mode 100755
index 0000000..470d33d
--- /dev/null
+++ b/usr/local/www/diag_logs_ppp.php
@@ -0,0 +1,124 @@
+<?php
+/* $Id$ */
+/*
+ diag_logs.php
+ Copyright (C) 2004-2009 Scott Ullrich
+ 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.
+*/
+
+/*
+ pfSense_BUILDER_BINARIES: /sbin/ifconfig /usr/bin/awk
+ pfSense_MODULE:
+*/
+
+##|+PRIV
+##|*IDENT=page-status-systemlogs-ppp
+##|*NAME=Status: System logs: IPsec VPN page
+##|*DESCR=Allow access to the 'Status: System logs: IPsec VPN' page.
+##|*MATCH=diag_logs_ppp.php*
+##|-PRIV
+
+require("guiconfig.inc");
+
+$ppp_logfile = "{$g['varlog_path']}/ppp.log";
+
+$nentries = $config['syslog']['nentries'];
+if (!$nentries)
+ $nentries = 50;
+
+if ($_POST['clear'])
+ clear_log_file($ppp_logfile);
+
+$ppp_logarr = return_clog($ppp_logfile, $nentries);
+
+$pgtitle = array("Status","System logs","PPP");
+include("head.inc");
+
+?>
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+<?php
+ $tab_array = array();
+ $tab_array[] = array("System", false, "diag_logs.php");
+ $tab_array[] = array("Firewall", false, "diag_logs_filter.php");
+ $tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
+ $tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
+ $tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", true, "diag_logs_ppp.php");
+ $tab_array[] = array("VPN", false, "diag_logs_vpn.php");
+ $tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
+ $tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
+ $tab_array[] = array("OpenNTPD", false, "diag_logs_ntpd.php");
+ $tab_array[] = array("Settings", false, "diag_logs_settings.php");
+ display_top_tabs($tab_array);
+?>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div id="mainarea">
+ <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td colspan="2" class="listtopic">Last <?=$nentries;?> PPP log entries</td>
+ </tr>
+ <?php
+ foreach($ppp_logarr as $logent){
+ if(isset($match)) {
+ $logent = preg_replace($search, $replace, $logent);
+ } else {
+ $searchs = "/(racoon: )([A-Z:].*?)([0-9].+\.[0-9].+.[0-9].+.[0-9].+\[[0-9].+\])(.*)/i";
+ $replaces = "$1<strong><font color=red>[Unknown Gateway/Dynamic]</font></strong>: $2$3$4";
+ $logent = preg_replace($searchs, $replaces, $logent);
+ }
+ $logent = preg_split("/\s+/", $logent, 6);
+ echo "<tr valign=\"top\">\n";
+ $entry_date_time = htmlspecialchars(join(" ", array_slice($logent, 0, 3)));
+ echo "<td class=\"listlr\" nowrap>" . $entry_date_time . "</td>\n";
+ echo "<td class=\"listr\">" . $logent[4] . " " . $logent[5] . "</td>\n";
+ echo "</tr>\n";
+ }
+ ?>
+ <tr>
+ <td>
+ <br>
+ <form action="diag_logs_ppp.php" method="post">
+ <input name="clear" type="submit" class="formbtn" value="Clear log">
+ </form>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+</table>
+<?php include("fend.inc"); ?>
+</body>
+</html>
diff --git a/usr/local/www/diag_logs_relayd.php b/usr/local/www/diag_logs_relayd.php
index a7a52a0..f267c74 100755
--- a/usr/local/www/diag_logs_relayd.php
+++ b/usr/local/www/diag_logs_relayd.php
@@ -67,6 +67,7 @@ include("head.inc");
$tab_array[] = array("Firewall", false, "diag_logs_filter.php");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", true, "diag_logs_relayd.php");
diff --git a/usr/local/www/diag_logs_settings.php b/usr/local/www/diag_logs_settings.php
index 93e1169..f2b7861 100755
--- a/usr/local/www/diag_logs_settings.php
+++ b/usr/local/www/diag_logs_settings.php
@@ -171,6 +171,7 @@ function enable_change(enable_over) {
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", false, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/diag_logs_vpn.php b/usr/local/www/diag_logs_vpn.php
index e0faf23..83d0ecd 100755
--- a/usr/local/www/diag_logs_vpn.php
+++ b/usr/local/www/diag_logs_vpn.php
@@ -103,6 +103,7 @@ include("head.inc");
$tab_array[] = array("DHCP", false, "diag_logs_dhcp.php");
$tab_array[] = array("Portal Auth", false, "diag_logs_auth.php");
$tab_array[] = array("IPsec", false, "diag_logs_ipsec.php");
+ $tab_array[] = array("PPP", false, "diag_logs_ppp.php");
$tab_array[] = array("VPN", true, "diag_logs_vpn.php");
$tab_array[] = array("Load Balancer", false, "diag_logs_relayd.php");
$tab_array[] = array("OpenVPN", false, "diag_logs_openvpn.php");
diff --git a/usr/local/www/help.php b/usr/local/www/help.php
index 8a7514d..e5ac529 100644
--- a/usr/local/www/help.php
+++ b/usr/local/www/help.php
@@ -58,6 +58,7 @@ $helppages = array(
'diag_logs_filter_dynamic.php' => 'http://doc.pfsense.org/index.php/Firewall_Logs',
'diag_logs_filter_summary.php' => 'http://doc.pfsense.org/index.php/Firewall_Logs',
'diag_logs_ntpd.php' => 'http://doc.pfsense.org/index.php/NTP_Logs',
+ 'diag_logs_ppp.php' => 'http://doc.pfsense.org/index.php/PPP_Logs',
'diag_logs_relayd.php' => 'http://doc.pfsense.org/index.php/Load_Balancer_Logs',
'diag_logs_settings.php' => 'http://doc.pfsense.org/index.php/Log_Settings',
'diag_logs_vpn.php' => 'http://doc.pfsense.org/index.php/PPTP_VPN_Logs',
diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php
index 5ec2e36..1cda057 100755
--- a/usr/local/www/interfaces.php
+++ b/usr/local/www/interfaces.php
@@ -59,18 +59,18 @@ if ($_REQUEST['if']) {
$if = "wan";
}
-define("CRON_PPPOE_CMD_FILE", "/conf/pppoe{$if}restart");
+define("CRON_PPPOE_CMD_FILE", "{$g['varetc_path']}/pppoe_restart_");
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 * * * *");
-function getMPDCRONSettings() {
+function getMPDCRONSettings($ptpid_) {
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) {
+ if (strpos($item['command'], CRON_PPPOE_CMD_FILE.$ptpid_) !== false) {
return array("ID" => $i, "ITEM" => $item);
}
}
@@ -78,15 +78,10 @@ function getMPDCRONSettings() {
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;
- }
-}
+if (!is_array($config['ppps']['ppp']))
+ $config['ppps']['ppp'] = array();
+
+$a_ppps = &$config['ppps']['ppp'];
function remove_bad_chars($string) {
return preg_replace('/[^a-z|_|0-9]/i','',$string);
@@ -99,56 +94,75 @@ $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;
- }
+if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
+ foreach ($a_ppps as $pppid => $ppp) {
+ if ($wancfg['ptpid'] == $ppp['ptpid'])
+ 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'];
+if ($wancfg['ptpid'] == $a_ppps[$pppid]['ptpid']) {
+ $pconfig['pppid'] = $pppid;
+ if ($a_ppps[$pppid]['type'] == "pppoe"){
+ $pconfig['pppoe_username'] = $a_ppps[$pppid]['username'];
+ $pconfig['pppoe_password'] = base64_decode($a_ppps[$pppid]['password']);
+ $pconfig['provider'] = $a_ppps[$pppid]['provider'];
+ $pconfig['pppoe_dialondemand'] = isset($a_ppps[$pppid]['ondemand']);
+ $pconfig['pppoe_idletimeout'] = $a_ppps[$pppid]['idletimeout'];
+ /* ================================================ */
+ /* = force a connection reset at a specific time? = */
+ /* ================================================ */
+
+ if (isset($a_ppps[$pppid]['pppoe-reset-type'])) {
+ $pconfig['pppoe-reset-type'] = $a_ppps[$pppid]['pppoe-reset-type'];
+ $itemhash = getMPDCRONSettings($a_ppps[$pppid]['ptpid']);
+ $cronitem = $itemhash['ITEM'];
+ if (isset($cronitem)) {
+ $resetTime = "{$cronitem['minute']} {$cronitem['hour']} {$cronitem['mday']} {$cronitem['month']} {$cronitem['wday']}";
+ } else {
+ $resetTime = NULL;
+ }
+ log_error("ResetTime:".$resetTime);
+ if ($a_ppps[$pppid]['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 ($a_ppps[$pppid]['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;
+ }
+ }
+ }// End force pppoe reset at specific time
+ }// End if type == pppoe
+ if ($a_ppps[$pppid]['type'] == "pptp"){
+ $pconfig['pptp_username'] = $a_ppps[$pppid]['username'];
+ $pconfig['pptp_password'] = base64_decode($a_ppps[$pppid]['password']);
+ $pconfig['pptp_local'] = $a_ppps[$pppid]['localip'];
+ $pconfig['pptp_subnet'] = $a_ppps[$pppid]['subnet'];
+ $pconfig['pptp_remote'] = $a_ppps[$pppid]['gateway'];
+ $pconfig['pptp_dialondemand'] = isset($a_ppps[$pppid]['ondemand']);
+ $pconfig['pptp_idletimeout'] = $a_ppps[$pppid]['timeout'];
+ }
+}
$pconfig['dhcphostname'] = $wancfg['dhcphostname'];
$pconfig['alias-address'] = $wancfg['alias-address'];
$pconfig['alias-subnet'] = $wancfg['alias-subnet'];
@@ -180,13 +194,9 @@ switch($wancfg['ipaddr']) {
$pconfig['ipaddr'] = "";
break;
case "pppoe":
- $pconfig['type'] = "pppoe";
- break;
case "pptp":
- $pconfig['type'] = "pptp";
- break;
case "ppp":
- $pconfig['type'] = "ppp";
+ $pconfig['type'] = $wancfg['ipaddr'];
break;
default:
if(is_ipaddr($wancfg['ipaddr'])) {
@@ -327,7 +337,7 @@ if ($_POST) {
* data validation procedure below, may trigger a false error
* message.
*/
- if (empty($_POST['pppoe_preset'])) {
+ if (empty($_POST['pppoe-reset-type'])) {
unset($_POST['pppoe_pr_type']);
unset($_POST['pppoe_resethour']);
unset($_POST['pppoe_resetminute']);
@@ -467,6 +477,7 @@ if ($_POST) {
}
}
if (!$input_errors) {
+ $ppp = array();
if ($wancfg['ipaddr'] != "ppp")
unset($wancfg['ipaddr']);
unset($wancfg['subnet']);
@@ -509,7 +520,13 @@ if ($_POST) {
unset($gateway_item);
}
}
-
+
+ // Here the else condition code assumes only that strings of form "opt#" will be passed.
+ if ($if == "wan")
+ $if_num = "0";
+ else
+ $if_num = substr($if, 3);
+
switch($_POST['type']) {
case "static":
$wancfg['ipaddr'] = $_POST['ipaddr'];
@@ -537,25 +554,57 @@ if ($_POST) {
}
break;
case "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'];
+ $ppp['ptpid'] = $_POST['ptpid'];
+ $ppp['type'] = $_POST['type'];
+ if (isset($_POST['ppp_port']))
+ $ppp['ports'] = $_POST['ppp_port'];
+ else
+ $ppp['ports'] = $wancfg['if'];
+ $ppp['username'] = $_POST['pppoe_username'];
+ $ppp['password'] = base64_encode($_POST['pppoe_password']);
+ if (!empty($_POST['provider']))
+ $ppp['provider'] = $_POST['provider'];
+ else
+ unset($ppp['provider']);
+ $ppp['ondemand'] = $_POST['pppoe_dialondemand'] ? true : false;
+ if (!empty($_POST['idletimeout']))
+ $ppp['idletimeout'] = $_POST['pppoe_idletimeout'];
+ else
+ unset($ppp['idletimeout']);
+
+ if (!empty($_POST['pppoe-reset-type']))
+ $ppp['pppoe-reset-type'] = $_POST['pppoe-reset-type'];
+ else
+ unset($ppp['pppoe-reset-type']);
+ $wancfg['if'] = $_POST['type'] . $if_num;
+ $wancfg['ptpid'] = $_POST['ptpid'];
+ $wancfg['ipaddr'] = $_POST['type'];
if($gateway_item) {
$a_gateways[] = $gateway_item;
}
+
break;
case "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'];
+ $ppp['ptpid'] = $_POST['ptpid'];
+ $ppp['type'] = $_POST['type'];
+ if (isset($_POST['ppp_port']))
+ $ppp['ports'] = $_POST['ppp_port'];
+ else
+ $ppp['ports'] = $wancfg['if'];
+ $ppp['username'] = $_POST['pptp_username'];
+ $ppp['password'] = base64_encode($_POST['pptp_password']);
+ $ppp['localip'] = $_POST['pptp_local'];
+ $ppp['subnet'] = $_POST['pptp_subnet'];
+ $ppp['gateway'] = $_POST['pptp_remote'];
+ $ppp['ondemand'] = $_POST['pptp_dialondemand'] ? true : false;
+ if (!empty($_POST['idletimeout']))
+ $ppp['idletimeout'] = $_POST['pptp_idletimeout'];
+ else
+ unset($ppp['idletimeout']);
+
+ $wancfg['if'] = $_POST['type'] . $if_num;
+ $wancfg['ptpid'] = $_POST['ptpid'];
+ $wancfg['ipaddr'] = $_POST['type'];
if($gateway_item) {
$a_gateways[] = $gateway_item;
}
@@ -563,9 +612,9 @@ if ($_POST) {
}
handle_pppoe_reset();
/* reset cron items if necessary */
- if (empty($_POST['pppoe_preset'])) {
+ if (empty($_POST['pppoe-reset-type'])) {
/* test whether a cron item exists and unset() it if necessary */
- $itemhash = getMPDCRONSettings();
+ $itemhash = getMPDCRONSettings($_POST['ptpid']);
$item = $itemhash['ITEM'];
if (isset($item))
unset($config['cron']['item'][$itemhash['ID']]);
@@ -589,6 +638,12 @@ if ($_POST) {
if (isset($wancfg['wireless'])) {
handle_wireless_post();
}
+
+ if (isset($_POST['pppid']) && $a_ppps[$pppid])
+ $a_ppps[$pppid] = $ppp;
+ else
+ $a_ppps[] = $ppp;
+
write_config();
mark_subsystem_dirty('interfaces');
/* regenerate cron settings/crontab file */
@@ -597,24 +652,25 @@ if ($_POST) {
header("Location: interfaces.php?if={$if}");
exit;
}
+
+
+
} // end if($_POST)
function handle_pppoe_reset() {
global $_POST, $config, $g, $wancfg, $if;
/* perform a periodic reset? */
- if(!isset($_POST['pppoe_preset'])) {
- setup_pppoe_reset_file($if, false);
+ if(!isset($_POST['pppoe-reset-type'])) {
+ setup_pppoe_reset_file($_POST['ptpid']);
return;
}
if (!is_array($config['cron']['item']))
$config['cron']['item'] = array();
- $itemhash = getMPDCRONSettings();
+ $itemhash = getMPDCRONSettings($_POST['ptpid'], $_POST['if']);
$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;
+ if (isset($_POST['pppoe-reset-type']) && $_POST['pppoe-reset-type'] == "custom") {
$item['minute'] = $_POST['pppoe_resetminute'];
$item['hour'] = $_POST['pppoe_resethour'];
if (isset($_POST['pppoe_resetdate']) && $_POST['pppoe_resetdate'] <> "" && strlen($_POST['pppoe_resetdate']) == 10) {
@@ -627,10 +683,8 @@ function handle_pppoe_reset() {
}
$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;
+ $item['command'] = CRON_PPPOE_CMD_FILE.$_POST['ptpid'];
+ } else if (isset($_POST['pppoe-reset-type']) && $_POST['pppoe-reset-type'] == "preset") {
switch ($_POST['pppoe_pr_preset_val']) {
case "monthly":
$item['minute'] = "0";
@@ -639,16 +693,16 @@ function handle_pppoe_reset() {
$item['month'] = "*";
$item['wday'] = "*";
$item['who'] = "root";
- $item['command'] = CRON_PPPOE_CMD_FILE;
+ $item['command'] = CRON_PPPOE_CMD_FILE.$_POST['ptpid'];
break;
- case "weekly":
+ case "weekly":
$item['minute'] = "0";
$item['hour'] = "0";
$item['mday'] = "*";
$item['month'] = "*";
$item['wday'] = "0";
$item['who'] = "root";
- $item['command'] = CRON_PPPOE_CMD_FILE;
+ $item['command'] = CRON_PPPOE_CMD_FILE.$_POST['ptpid'];
break;
case "daily":
$item['minute'] = "0";
@@ -657,7 +711,7 @@ function handle_pppoe_reset() {
$item['month'] = "*";
$item['wday'] = "*";
$item['who'] = "root";
- $item['command'] = CRON_PPPOE_CMD_FILE;
+ $item['command'] = CRON_PPPOE_CMD_FILE.$_POST['ptpid'];
break;
case "hourly":
$item['minute'] = "0";
@@ -666,25 +720,15 @@ function handle_pppoe_reset() {
$item['month'] = "*";
$item['wday'] = "*";
$item['who'] = "root";
- $item['command'] = CRON_PPPOE_CMD_FILE;
- break;
+ $item['command'] = CRON_PPPOE_CMD_FILE.$_POST['ptpid'];
+ break;
} // end switch
} // end if
if (isset($itemhash['ID']))
$config['cron']['item'][$itemhash['ID']] = $item;
else
$config['cron']['item'][] = $item;
- /* finally install the pppoerestart file */
- if (isset($_POST['pppoe_preset'])) {
- setup_pppoe_reset_file($if, true);
- $wancfg['pppoe_reset'] = true;
- $wancfg['pppoe_preset'] = true;
- sigkillbypid("{$g['varrun_path']}/cron.pid", "HUP");
- } else {
- unset($wancfg['pppoe_reset']);
- unset($wancfg['pppoe_preset']);
- setup_pppoe_reset_file($if, false);
- }
+
}
function handle_wireless_post() {
@@ -840,21 +884,28 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
<link href="/javascript/datepicker/css/datepicker.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
- function updateType(t){
+ 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";
- }
+ case "none": {
+ $('static','dhcp','pppoe','pptp').invoke('hide');
+ break;
+ }
+ case "static": {
+ $('none','dhcp','pppoe','pptp').invoke('hide');
+ break;
+ }
+ case "dhcp": {
+ $('none','static','pppoe','pptp').invoke('hide');
+ break;
+ }
+ case "pppoe": {
+ $('none','static','dhcp','pptp').invoke('hide');
+ break;
+ }
+ case "pptp": {
+ $('none','static','dhcp','pppoe').invoke('hide');
+ break;
}
- echo "}\n";
- }
- ?>
}
$(t).show();
}
@@ -865,14 +916,20 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
else
$('allcfg').hide();
}
-
- function show_periodic_reset(obj) {
- if (obj.checked)
- $('presetwrap').show();
- else
- $('presetwrap').hide();
- }
+ function show_reset_settings(reset_type) {
+ if (reset_type == 'preset') {
+ Effect.Appear('pppoepresetwrap', { duration: 0.0 });
+ Effect.Fade('pppoecustomwrap', { duration: 0.0 });
+ }
+ else if (reset_type == 'custom') {
+ Effect.Appear('pppoecustomwrap', { duration: 0.0 });
+ Effect.Fade('pppoepresetwrap', { duration: 0.0 });
+ } else {
+ Effect.Fade('pppoecustomwrap', { duration: 0.0 });
+ Effect.Fade('pppoepresetwrap', { duration: 0.0 });
+ }
+ }
function show_mon_config() {
document.getElementById("showmonbox").innerHTML='';
aodiv = document.getElementById('showmon');
@@ -1156,63 +1213,70 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
<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="show_periodic_reset(this);" />
- <?= 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;">
+ <table id="presetwrap" cellspacing="0" cellpadding="0" width="100%">
+ <tr>
+ <td align="left" valign="top">
+ <p style="margin: 4px; padding: 4px 0 4px 0; width: 94%;">
+ <select valign="top" id="reset_type" name="pppoe-reset-type" class="formselect" onChange="show_reset_settings(this.value);">
+ <option value = ""><?= gettext("Disabled"); ?></option>
+ <option value="custom" <?php if ($pconfig['pppoe-reset-type'] == "custom") echo "selected"; ?>><?= gettext("Custom"); ?></option>
+ <option value="preset" <?php if ($pconfig['pppoe-reset-type'] == "preset") echo "selected"; ?>><?= gettext("Pre-Set"); ?></option>
+ </select> <?= gettext("Select a reset timing type"); ?>
+ </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; ?>
- <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: 0.0 }); Effect.Fade('pppoepresetwrap', { duration: 0.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: 0.0 }); Effect.Fade('pppoecustomwrap', { duration: 0.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 />&nbsp;<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>
+ <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 />&nbsp;<br />
+ <span class="red"><strong>Note: </strong></span>
+ <?= 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."); ?>
+ </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>
+
+ <tr>
+ <td width="22%" valign="top" class="vncell">More</td>
+ <?php if (isset($pconfig['pppid'])): ?>
+ <td width="78%" class="vtable">For additional PPPoE configuration options
+ <a href="/interfaces_ppps_edit.php?id=<?=htmlspecialchars($pconfig['pppid']);?>" class="navlnk">click here</a>
+ </td>
+ <? else: ?>
+ <td width="78%" class="vtable">For advanced PPPoE configuration options or MLPPP configuration
+ <a href="/interfaces_ppps_edit.php" class="navlnk">click here</a>
+ </td>
+ <? endif; ?>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
<tr style="display:none;" name="pptp" id="pptp">
<td colspan="2" style="padding:0px;">
<table width="100%" border="0" cellpadding="6" cellspacing="0">
@@ -1239,8 +1303,7 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
<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>
+ <?=$i;?></option>
<?php endfor; ?>
</select>
</td>
@@ -1682,9 +1745,9 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
and obviously should not appear as the source address in any packets you receive.
</td>
</tr>
- </tr>
- </table>
- </div>
+ </table> <!-- End "allcfg" table -->
+ </div> <!-- End "allcfg" div -->
+
<table width="100%" border="0" cellpadding="6" cellspacing="0">
<tr>
<td width="100" valign="top">
@@ -1695,14 +1758,24 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
<input id="save" name="Submit" type="submit" class="formbtn" value="Save">
<input id="cancel" type="button" class="formbtn" value="Cancel" onclick="history.back()">
<input name="if" type="hidden" id="if" value="<?=$if;?>">
+ <?php if ($wancfg['ptpid'] == $a_ppps[$pppid]['ptpid']) : ?>
+ <input name="pppid" type="hidden" value="<?=$pppid;?>">
+ <input name="ppp_port" type="hidden" value="<?=$a_ppps[$pppid]['ports'];?>">
+ <input name="ptpid" type="hidden" value="<?=$a_ppps[$pppid]['ptpid'];?>">
+ <?php else: ?>
+ <input name="ptpid" type="hidden" value="<?=uniqid('', true);?>">
+ <?php endif; ?>
</td>
</tr>
</table>
</td>
- </table>
+ </tr>
+ </table>
+ <!--
</div>
</td></tr>
</table>
+ -->
</form>
<script type="text/javascript">
var gatewayip;
@@ -1775,11 +1848,10 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
}
<?php
if ($if == "wan" || $if == "lan")
- echo "\$('allcfg').show();";
+ echo "\$('allcfg').show();\n";
else
echo "show_allcfg(document.iform.enable);";
- echo "updateType('{$pconfig['type']}')";
- ?>
+ echo "updateType('{$pconfig['type']}');\n";
</script>
<?php include("fend.inc"); ?>
</body>
diff --git a/usr/local/www/interfaces_assign.php b/usr/local/www/interfaces_assign.php
index 407755f..36aa469 100755
--- a/usr/local/www/interfaces_assign.php
+++ b/usr/local/www/interfaces_assign.php
@@ -128,10 +128,16 @@ if (is_array($config['qinqs']['qinqentry']) && count($config['qinqs']['qinqentry
/* add PPP interfaces */
if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
- $portname = basename($ppp['port']);
+ $portname = $ppp['type'].$pppid;
$portlist[$portname] = $ppp;
$portlist[$portname]['isppp'] = true;
- $portlist[$portname]['descr'] = "PPP " . basename($ppp['port']);
+ $ports_base = basename($ppp['ports']);
+ if (isset($ppp['descr']))
+ $portlist[$portname]['descr'] = strtoupper($ppp['type']). "({$ports_base}) - {$ppp['descr']}";
+ else if (isset($ppp['username']))
+ $portlist[$portname]['descr'] = strtoupper($ppp['type']). "({$ports_base}) - {$ppp['username']}";
+ else
+ $portlist[$portname]['descr'] = strtoupper($ppp['type']). "({$ports_base})";
}
}
@@ -201,11 +207,20 @@ if ($_POST['apply']) {
$reloadif = true;
}
$config['interfaces'][$ifname]['if'] = $ifport;
- if (file_exists("/dev/{$ifport}")) {
- $config['interfaces'][$ifname]['if'] = basename($portlist[$ifport]['port']);
- $config['interfaces'][$ifname]['ipaddr'] = "ppp";
- }
-
+
+ /*For PPP interfaces, write link type to IP address field to signal that IP
+ addr is dynamic and comes from PPP, PPPoE, or PPTP */
+ if (isset($portlist[$ifport]['isppp'])){
+ if ($ifname == "wan")
+ $config['interfaces'][$ifname]['if'] = $portlist[$ifport]['type'] ."0";
+ else
+ $config['interfaces'][$ifname]['if'] = $portlist[$ifport]['type'] . substr($ifname,3);
+
+ $config['interfaces'][$ifname]['ipaddr'] = $portlist[$ifport]['type'];
+ $config['interfaces'][$ifname]['ptpid'] = $portlist[$ifport]['ptpid'];
+ } else
+ unset($config['interfaces'][$ifname]['ptpid']);
+
/* check for wireless interfaces, set or clear ['wireless'] */
if (preg_match($g['wireless_regex'], $ifport)) {
if (!is_array($config['interfaces'][$ifname]['wireless']))
@@ -217,6 +232,7 @@ if ($_POST['apply']) {
/* make sure there is a descr for all interfaces */
if (!isset($config['interfaces'][$ifname]['descr']))
$config['interfaces'][$ifname]['descr'] = strtoupper($ifname);
+
if ($reloadif == true) {
if (preg_match($g['wireless_regex'], $ifport))
interface_sync_wireless_clones($config['interfaces'][$ifname], false);
@@ -263,23 +279,23 @@ if ($_GET['act'] == "del") {
}
if (count($config['filter']['rule']) > 0) {
- foreach ($config['filter']['rule'] as $x => $rule) {
- if($rule['interface'] == $id)
- unset($config['filter']['rule'][$x]);
+ foreach ($config['filter']['rule'] as $x => $rule) {
+ if($rule['interface'] == $id)
+ unset($config['filter']['rule'][$x]);
}
}
if (is_array($config['nat']['advancedoutbound']) && count($config['nat']['advancedoutbound']['rule']) > 0) {
- foreach ($config['nat']['advancedoutbound']['rule'] as $x => $rule) {
- if($rule['interface'] == $id)
- unset($config['nat']['advancedoutbound']['rule'][$x]['interface']);
+ foreach ($config['nat']['advancedoutbound']['rule'] as $x => $rule) {
+ if($rule['interface'] == $id)
+ unset($config['nat']['advancedoutbound']['rule'][$x]['interface']);
}
}
- if (is_array($config['nat']['rule']) && count($config['nat']['rule']) > 0) {
- foreach ($config['nat']['rule'] as $x => $rule) {
- if($rule['interface'] == $id)
- unset($config['nat']['rule'][$x]['interface']);
+ if (is_array($config['nat']['rule']) && count($config['nat']['rule']) > 0) {
+ foreach ($config['nat']['rule'] as $x => $rule) {
+ if($rule['interface'] == $id)
+ unset($config['nat']['rule'][$x]['interface']);
}
- }
+ }
write_config();
@@ -392,11 +408,11 @@ if(file_exists("/var/run/interface_mismatch_reboot_needed"))
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[6] = array("GRE", false, "interfaces_gre.php");
- $tab_array[7] = array("GIF", false, "interfaces_gif.php");
- $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
+ $tab_array[7] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[8] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[9] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[10] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
</td></tr>
@@ -420,45 +436,50 @@ if(file_exists("/var/run/interface_mismatch_reboot_needed"))
<td valign="middle" class="listr">
<select name="<?=$ifname;?>" id="<?=$ifname;?>">
<?php foreach ($portlist as $portname => $portinfo): ?>
- <option value="<?=$portname;?>" <?php if ($portname == $iface['if']) echo "selected";?>>
- <?php if ($portinfo['isvlan']) {
- $descr = "VLAN {$portinfo['tag']} on {$portinfo['if']}";
- if ($portinfo['descr'])
- $descr .= " (" . $portinfo['descr'] . ")";
- echo htmlspecialchars($descr);
- } elseif ($portinfo['iswlclone']) {
- $descr = $portinfo['cloneif'];
- if ($portinfo['descr'])
- $descr .= " (" . $portinfo['descr'] . ")";
- echo htmlspecialchars($descr);
- } elseif ($portinfo['isppp']) {
- echo htmlspecialchars($portinfo['descr']);
- } elseif ($portinfo['isbridge']) {
- $descr = strtoupper($portinfo['bridgeif']);
- if ($portinfo['descr'])
- $descr .= " (" . $portinfo['descr'] . ")";
- echo htmlspecialchars($descr);
- } elseif ($portinfo['isgre']) {
- $descr = "GRE {$portinfo['remote-addr']}";
- if ($portinfo['descr'])
- $descr .= " (" . $portinfo['descr'] . ")";
- echo htmlspecialchars($descr);
- } elseif ($portinfo['isgif']) {
- $descr = "GRE {$portinfo['remote-addr']}";
- if ($portinfo['descr'])
- $descr .= " (" . $portinfo['descr'] . ")";
- echo htmlspecialchars($descr);
- } elseif ($portinfo['islagg']) {
- $descr = strtoupper($portinfo['laggif']);
- if ($portinfo['descr'])
- $descr .= " (" . $portinfo['descr'] . ")";
- echo htmlspecialchars($descr);
- } elseif ($portinfo['isqinq']) {
- echo htmlspecialchars($portinfo['descr']);
- } else
- echo htmlspecialchars($portname . " (" . $portinfo['mac'] . ")");
- ?>
- </option>
+ <option value="<?=$portname;?>" <?php
+ if (isset($portinfo['isppp'])){
+ if ($portinfo['ptpid'] == $iface['ptpid']) echo "selected";
+ }
+ else
+ if ($portname == $iface['if']) echo "selected";
+ ?>><?php
+ if ($portinfo['isvlan']) {
+ $descr = "VLAN {$portinfo['tag']} on {$portinfo['if']}";
+ if ($portinfo['descr'])
+ $descr .= " (" . $portinfo['descr'] . ")";
+ echo htmlspecialchars($descr);
+ } elseif ($portinfo['iswlclone']) {
+ $descr = $portinfo['cloneif'];
+ if ($portinfo['descr'])
+ $descr .= " (" . $portinfo['descr'] . ")";
+ echo htmlspecialchars($descr);
+ } elseif ($portinfo['isppp']) {
+ echo htmlspecialchars($portinfo['descr']);
+ } elseif ($portinfo['isbridge']) {
+ $descr = strtoupper($portinfo['bridgeif']);
+ if ($portinfo['descr'])
+ $descr .= " (" . $portinfo['descr'] . ")";
+ echo htmlspecialchars($descr);
+ } elseif ($portinfo['isgre']) {
+ $descr = "GRE {$portinfo['remote-addr']}";
+ if ($portinfo['descr'])
+ $descr .= " (" . $portinfo['descr'] . ")";
+ echo htmlspecialchars($descr);
+ } elseif ($portinfo['isgif']) {
+ $descr = "GRE {$portinfo['remote-addr']}";
+ if ($portinfo['descr'])
+ $descr .= " (" . $portinfo['descr'] . ")";
+ echo htmlspecialchars($descr);
+ } elseif ($portinfo['islagg']) {
+ $descr = strtoupper($portinfo['laggif']);
+ if ($portinfo['descr'])
+ $descr .= " (" . $portinfo['descr'] . ")";
+ echo htmlspecialchars($descr);
+ } elseif ($portinfo['isqinq']) {
+ echo htmlspecialchars($portinfo['descr']);
+ } else
+ echo htmlspecialchars($portname . " (" . $portinfo['mac'] . ")");
+ ?></option>
<?php endforeach; ?>
</select>
</td>
diff --git a/usr/local/www/interfaces_bridge.php b/usr/local/www/interfaces_bridge.php
index 9e009ba..e7aa71d 100644
--- a/usr/local/www/interfaces_bridge.php
+++ b/usr/local/www/interfaces_bridge.php
@@ -91,7 +91,7 @@ include("head.inc");
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
$tab_array[6] = array("GRE", false, "interfaces_gre.php");
$tab_array[7] = array("GIF", false, "interfaces_gif.php");
$tab_array[8] = array("Bridges", true, "interfaces_bridge.php");
diff --git a/usr/local/www/interfaces_gif.php b/usr/local/www/interfaces_gif.php
index 64eb6a4..92439fa 100644
--- a/usr/local/www/interfaces_gif.php
+++ b/usr/local/www/interfaces_gif.php
@@ -73,7 +73,7 @@ if ($_GET['act'] == "del") {
}
}
-$pgtitle = array("Interfaces","gif");
+$pgtitle = array("Interfaces","GIF");
include("head.inc");
?>
@@ -90,7 +90,7 @@ include("head.inc");
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
$tab_array[6] = array("GRE", false, "interfaces_gre.php");
$tab_array[7] = array("GIF", true, "interfaces_gif.php");
$tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
diff --git a/usr/local/www/interfaces_gre.php b/usr/local/www/interfaces_gre.php
index bcef63a..a1a959e 100644
--- a/usr/local/www/interfaces_gre.php
+++ b/usr/local/www/interfaces_gre.php
@@ -90,7 +90,7 @@ include("head.inc");
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
$tab_array[6] = array("GRE", true, "interfaces_gre.php");
$tab_array[7] = array("GIF", false, "interfaces_gif.php");
$tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
diff --git a/usr/local/www/interfaces_groups.php b/usr/local/www/interfaces_groups.php
index 65564dd..27a088a 100755
--- a/usr/local/www/interfaces_groups.php
+++ b/usr/local/www/interfaces_groups.php
@@ -70,18 +70,18 @@ include("head.inc");
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td>
<?php
- $tab_array = array();
- $tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
+ $tab_array = array();
+ $tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", true, "interfaces_groups.php");
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
- $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[6] = array("GRE", false, "interfaces_gre.php");
- $tab_array[7] = array("GIF", false, "interfaces_gif.php");
- $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
- display_top_tabs($tab_array);
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
+ display_top_tabs($tab_array);
?>
</td></tr>
<tr>
diff --git a/usr/local/www/interfaces_lagg.php b/usr/local/www/interfaces_lagg.php
index 0beac77..a8445e2 100644
--- a/usr/local/www/interfaces_lagg.php
+++ b/usr/local/www/interfaces_lagg.php
@@ -96,11 +96,11 @@ include("head.inc");
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
$tab_array[6] = array("GRE", false, "interfaces_gre.php");
$tab_array[7] = array("GIF", false, "interfaces_gif.php");
$tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[9] = array("LAGG", true, "interfaces_lagg.php");
+ $tab_array[9] = array("LAGG", true, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
</td></tr>
diff --git a/usr/local/www/interfaces_ppp.php b/usr/local/www/interfaces_ppp.php
index 41d36f9..0ef20f0 100644
--- a/usr/local/www/interfaces_ppp.php
+++ b/usr/local/www/interfaces_ppp.php
@@ -90,10 +90,11 @@ include("head.inc");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
$tab_array[5] = array("PPP", true, "interfaces_ppp.php");
- $tab_array[6] = array("GRE", false, "interfaces_gre.php");
- $tab_array[7] = array("GIF", false, "interfaces_gif.php");
- $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[6] = array("MLPPP", false, "interfaces_mlppp.php");
+ $tab_array[7] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[8] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[9] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[10] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
</td></tr>
diff --git a/usr/local/www/interfaces_ppps.php b/usr/local/www/interfaces_ppps.php
new file mode 100644
index 0000000..fc598b6
--- /dev/null
+++ b/usr/local/www/interfaces_ppps.php
@@ -0,0 +1,133 @@
+<?php
+/* $Id$ */
+/*
+ interfaces_ppps.php
+ 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.
+*/
+/*
+ pfSense_BUILDER_BINARIES: /sbin/ifconfig
+ pfSense_MODULE: interfaces
+*/
+
+##|+PRIV
+##|*IDENT=page-interfaces-ppps
+##|*NAME=Interfaces: ppps page
+##|*DESCR=Allow access to the 'Interfaces: ppps' page.
+##|*MATCH=interfaces_ppps.php*
+##|-PRIV
+
+require("guiconfig.inc");
+
+if (!is_array($config['ppps']['ppp']))
+ $config['ppps']['ppp'] = array();
+
+$a_ppps = &$config['ppps']['ppp'] ;
+
+function ppp_inuse($num) {
+ global $config, $g, $a_ppps;
+ $iflist = get_configured_interface_list(false, true);
+ foreach ($iflist as $if) {
+ if (isset($config['interfaces'][$if]['ptpid']) && $config['interfaces'][$if]['ptpid'] == $a_ppps[$num]['ptpid'])
+ return true;
+ }
+ return false;
+}
+
+if ($_GET['act'] == "del") {
+ /* check if still in use */
+ if (ppp_inuse($_GET['id'])) {
+ $input_errors[] = "This point-to-point link cannot be deleted because it is still being used as an interface.";
+ } else {
+ unset($a_ppps[$_GET['id']]);
+ write_config();
+ header("Location: interfaces_ppps.php");
+ exit;
+ }
+}
+
+$pgtitle = "Interfaces: PPPs";
+include("head.inc");
+
+?>
+
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<?php if ($input_errors) print_input_errors($input_errors); ?>
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr><td>
+<?php
+ $tab_array = array();
+ $tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
+ $tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
+ display_top_tabs($tab_array);
+?>
+ </td></tr>
+ <tr>
+ <td>
+ <div id="mainarea">
+ <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="20%" class="listhdrr">Type</td>
+ <td width="20%" class="listhdrr">Interface(s)/Port(s)</td>
+ <td width="40%" class="listhdr">Description</td>
+ <td width="10%" class="list"></td>
+ </tr>
+ <?php $i = 0; foreach ($a_ppps as $id => $ppp): ?>
+ <tr ondblclick="document.location='interfaces_ppps_edit.php?id=<?=$i;?>'">
+ <td class="listr">
+ <?=htmlspecialchars($ppp['type']);?>
+ </td>
+ <td class="listr">
+ <?=htmlspecialchars($ppp['ports']);?>
+ </td>
+ <td class="listbg">
+ <?=htmlspecialchars($ppp['descr']);?>&nbsp;
+ </td>
+ <td valign="middle" nowrap class="list"> <a href="interfaces_ppps_edit.php?id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a>
+ &nbsp;<a href="interfaces_ppps.php?act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this PPP interface?')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td>
+ </tr>
+ <?php $i++; endforeach; ?>
+ <tr>
+ <td class="list" colspan="3">&nbsp;</td>
+ <td class="list"> <a href="interfaces_ppps_edit.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+</table>
+<?php include("fend.inc"); ?>
+</body>
+</html>
diff --git a/usr/local/www/interfaces_ppps_edit.php b/usr/local/www/interfaces_ppps_edit.php
new file mode 100644
index 0000000..2fe8fa7
--- /dev/null
+++ b/usr/local/www/interfaces_ppps_edit.php
@@ -0,0 +1,910 @@
+<?php
+/* $Id$ */
+/*
+ interfaces_ppps_edit.php
+ part of m0n0wall (http://m0n0.ch/wall)
+
+ Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
+ All rights reserved.
+ Copyright (C) 2010 Gabriel B. <gnoahb@gmail.com>.
+ 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.
+*/
+/*
+ pfSense_MODULE: interfaces
+*/
+
+##|+PRIV
+##|*IDENT=page-interfaces-ppps-edit
+##|*NAME=Interfaces: PPPs: Edit page
+##|*DESCR=Allow access to the 'Interfaces: PPPs: Edit' page.
+##|*MATCH=interfaces_ppps_edit.php*
+##|-PRIV
+
+require("guiconfig.inc");
+require("functions.inc");
+
+define("CRON_PPPOE_CMD_FILE", "{$g['varetc_path']}/pppoe_restart_");
+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 * * * *");
+
+function getMPDCRONSettings($ptpid_) {
+ 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.$ptpid_) !== false) {
+ return array("ID" => $i, "ITEM" => $item);
+ }
+ }
+ }
+ return NULL;
+}
+
+if (!is_array($config['ppps']['ppp']))
+ $config['ppps']['ppp'] = array();
+
+$a_ppps = &$config['ppps']['ppp'];
+
+$portlist = get_interface_list();
+
+$id = $_GET['id'];
+if (isset($_POST['id']))
+ $id = $_POST['id'];
+
+
+if (isset($id) && $a_ppps[$id]) {
+ $pconfig['type'] = $a_ppps[$id]['type'];
+ $pconfig['interfaces'] = $a_ppps[$id]['ports'];
+ $pconfig['username'] = $a_ppps[$id]['username'];
+ $pconfig['password'] = base64_decode($a_ppps[$id]['password']);
+ if (isset($a_ppps[$id]['ondemand']))
+ $pconfig['ondemand'] = true;
+ $pconfig['idletimeout'] = $a_ppps[$id]['idletimeout'];
+ $pconfig['uptime'] = $a_ppps[$id]['uptime'];
+ $pconfig['descr'] = $a_ppps[$id]['descr'];
+ $pconfig['bandwidth'] = explode(",",$a_ppps[$id]['bandwidth']);
+ $pconfig['mtu'] = explode(",",$a_ppps[$id]['mtu']);
+ $pconfig['mru'] = explode(",",$a_ppps[$id]['mru']);
+ $pconfig['mrru'] = $a_ppps[$id]['mrru'];
+ if (isset($a_ppps[$id]['shortseq']))
+ $pconfig['shortseq'] = true;
+ if (isset($a_ppps[$id]['acfcomp']))
+ $pconfig['acfcomp'] = true;
+ if (isset($a_ppps[$id]['protocomp']))
+ $pconfig['protocomp'] = true;
+ if (isset($a_ppps[$id]['vjcomp']))
+ $pconfig['vjcomp'] = true;
+ if (isset($a_ppps[$id]['tcpmssfix']))
+ $pconfig['tcpmssfix'] = true;
+ switch($a_ppps[$id]['type']) {
+ case "ppp":
+ $pconfig['initstr'] = base64_decode($a_ppps[$id]['initstr']);
+ $pconfig['simpin'] = $a_ppps[$id]['simpin'];
+ $pconfig['pin-wait'] = $a_ppps[$id]['pin-wait'];
+ $pconfig['apn'] = $a_ppps[$id]['apn'];
+ $pconfig['apnum'] = $a_ppps[$id]['apnum'];
+ $pconfig['phone'] = $a_ppps[$id]['phone'];
+ $pconfig['connect-timeout'] = $a_ppps[$id]['connect-timeout'];
+ $pconfig['localip'] = explode(",",$a_ppps[$id]['localip']);
+ $pconfig['gateway'] = explode(",",$a_ppps[$id]['gateway']);
+ break;
+ case "l2tp":
+ case "pptp":
+ $pconfig['localip'] = explode(",",$a_ppps[$id]['localip']);
+ $pconfig['subnet'] = explode(",",$a_ppps[$id]['subnet']);
+ $pconfig['gateway'] = explode(",",$a_ppps[$id]['gateway']);
+ if (isset($a_ppps[$id]['dhcp']))
+ $pconfig['pptp_dhcp'] = true;
+ break;
+ case "pppoe":
+ $pconfig['provider'] = $a_ppps[$id]['provider'];
+ /* ================================================ */
+ /* = force a connection reset at a specific time? = */
+ /* ================================================ */
+
+ if (isset($a_ppps[$id]['pppoe-reset-type'])) {
+ $pconfig['pppoe-reset-type'] = $a_ppps[$id]['pppoe-reset-type'];
+ $itemhash = getMPDCRONSettings($a_ppps[$id]['ptpid']);
+ $cronitem = $itemhash['ITEM'];
+ if (isset($cronitem)) {
+ $resetTime = "{$cronitem['minute']} {$cronitem['hour']} {$cronitem['mday']} {$cronitem['month']} {$cronitem['wday']}";
+ } else {
+ $resetTime = NULL;
+ }
+
+ if ($a_ppps[$id]['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 ($a_ppps[$id]['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;
+ }
+ }
+ }
+ break;
+ }
+
+}
+
+if ($_POST) {
+
+ unset($input_errors);
+ $pconfig = $_POST;
+
+ /* okay first of all, cause we are just hiding 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-reset-type'])) {
+ unset($_POST['pppoe_resethour']);
+ unset($_POST['pppoe_resetminute']);
+ unset($_POST['pppoe_resetdate']);
+ unset($_POST['pppoe_pr_preset_val']);
+ }
+
+ /* input validation */
+ switch($_POST['type']) {
+ case "ppp":
+ $reqdfields = explode(" ", "interfaces phone");
+ $reqdfieldsn = explode(",", "Link Interface(s),Phone Number");
+ do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
+ break;
+ case "pppoe":
+ if ($_POST['ondemand']) {
+ $reqdfields = explode(" ", "interfaces username password ondemand idletimeout");
+ $reqdfieldsn = explode(",", "Link Interface(s),Username,Password,Dial on demand,Idle timeout value");
+ } else {
+ $reqdfields = explode(" ", "interfaces username password");
+ $reqdfieldsn = explode(",", "Link Interface(s),Username,Password");
+ }
+ do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
+ break;
+ case "l2tp":
+ case "pptp":
+ if ($_POST['ondemand']) {
+ $reqdfields = explode(" ", "interfaces username password localip subnet gateway ondemand idletimeout");
+ $reqdfieldsn = explode(",", "Link Interface(s),Username,Password,Local IP address,Subnet,Remote IP address,Dial on demand,Idle timeout value");
+ } else {
+ $reqdfields = explode(" ", "interfaces username password localip subnet gateway");
+ $reqdfieldsn = explode(",", "Link Interface(s),Username,Password,Local IP address,Subnet,Remote IP address");
+ }
+ do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
+ break;
+ default:
+ $input_errors[] = "Please choose a Link Type.";
+ break;
+ }
+ if ($_POST['type'] == "ppp" && count($_POST['interfaces']) > 1)
+ $input_errors[] = "Multilink connections (MLPPP) using the PPP link type is not currently supported. Please select only one Link Interface.";
+ if (($_POST['provider'] && !is_domain($_POST['provider'])))
+ $input_errors[] = "The service name contains invalid characters.";
+ if (($_POST['idletimeout'] != "") && !is_numericint($_POST['idletimeout']))
+ $input_errors[] = "The idle timeout value must be an integer.";
+ if ($_POST['pppoe-reset-type'] == "custom" && $_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-reset-type'] == "custom" && $_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-reset-type'] == "custom" && $_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['pppoe-reset-type'] == "custom" && $_POST['pppoe_resetdate'] <> "" && is_numeric(str_replace("/", "", $_POST['pppoe_resetdate']))){
+ $date_nums = explode("/",$_POST['pppoe_resetdate']);
+ if ($date_nums[0] < 1 || $date_nums[0] > 12)
+ $input_errors[] = gettext("A valid PPPoE reset month must be specified (1-12) in the Custom PPPoE Periodic reset fields.");
+ if ($date_nums[1] < 1 || $date_nums[1] > 31)
+ $input_errors[] = gettext("A valid PPPoE reset day of month must be specified (1-31) in the Custom PPPoE Periodic reset fields. No checks are done on valid # of days per month");
+ if ($date_nums[2] < date("Y"))
+ $input_errors[] = gettext("A valid PPPoE reset year must be specified. Don't select a year in the past!");
+ }
+
+ foreach($_POST['interfaces'] as $iface){
+ if ($_POST['localip'][$iface] && !is_ipaddr($_POST['localip'][$iface]))
+ $input_errors[] = "A valid local IP address must be specified for {$iface}.";
+ if ($_POST['gateway'][$iface] && !is_ipaddr($_POST['gateway'][$iface]) && !is_hostname($_POST['gateway'][$iface]))
+ $input_errors[] = "A valid gateway IP address OR hostname must be specified for {$iface}.";
+ if ($_POST['bandwidth'][$iface] && !is_numericint($_POST['bandwidth'][$iface]))
+ $input_errors[] = "The bandwidth value for {$iface} must be an integer.";
+ if ($_POST['mtu'][$iface] && ($_POST['mtu'][$iface] < 576))
+ $input_errors[] = "The MTU for {$iface} must be greater than 576 bytes.";
+ if ($_POST['mru'][$iface] && ($_POST['mru'][$iface] < 576))
+ $input_errors[] = "The MRU for {$iface} must be greater than 576 bytes.";
+ }
+
+/*
+ foreach ($a_ppps as $ppp) {
+ if (isset($id) && ($a_ppps[$id]) && ($a_ppps[$id] === $ppp))
+ continue;
+
+ if ($ppp['serialport'] == $_POST['serialport']) {
+ $input_errors[] = "Serial port is in use";
+ break;
+ }
+ }
+*/
+
+ if (!$input_errors) {
+ $ppp = array();
+ $ppp['ptpid'] = $_POST['ptpid'];
+ $ppp['type'] = $_POST['type'];
+ $ppp['ports'] = implode(',',$_POST['interfaces']);
+ $ppp['username'] = $_POST['username'];
+ $ppp['password'] = base64_encode($_POST['password']);
+ $ppp['ondemand'] = $_POST['ondemand'] ? true : false;
+ if (!empty($_POST['idletimeout']))
+ $ppp['idletimeout'] = $_POST['idletimeout'];
+ else
+ unset($ppp['idletimeout']);
+ $ppp['uptime'] = $_POST['uptime'] ? true : false;
+ if (!empty($_POST['descr']))
+ $ppp['descr'] = $_POST['descr'];
+ else
+ unset($ppp['descr']);
+
+ switch($_POST['type']) {
+ case "ppp":
+ if (!empty($_POST['initstr']))
+ $ppp['initstr'] = base64_encode($_POST['initstr']);
+ else
+ unset($ppp['initstr']);
+ if (!empty($_POST['simpin'])) {
+ $ppp['simpin'] = $_POST['simpin'];
+ $ppp['pin-wait'] = $_POST['pin-wait'];
+ } else {
+ unset($ppp['simpin']);
+ unset($ppp['pin-wait']);
+ }
+
+ if (!empty($_POST['apn'])){
+ $ppp['apn'] = $_POST['apn'];
+ if (!empty($_POST['apnum']))
+ $ppp['apnum'] = $_POST['apnum'];
+ else
+ $ppp['apnum'] = "1";
+ } else {
+ unset($ppp['apn']);
+ unset($ppp['apnum']);
+ }
+ $ppp['phone'] = $_POST['phone'];
+ foreach($_POST['interfaces'] as $iface){
+ if (isset($_POST['localip'][$iface]))
+ $localip_array[] = $_POST['localip'][$iface];
+ if (isset($_POST['gateway'][$iface]))
+ $gateway_array[] = $_POST['gateway'][$iface];
+ }
+ if (count($localip_array))
+ $ppp['localip'] = implode(',',$localip_array);
+ else
+ unset($ppp['localip']);
+ if (count($gateway_array))
+ $ppp['gateway'] = implode(',',$gateway_array);
+ else
+ unset($ppp['gateway']);
+ if (!empty($_POST['connect-timeout']))
+ $ppp['connect-timeout'] = $_POST['connect-timeout'];
+ else
+ unset($ppp['connect-timeout']);
+ break;
+ case "pppoe":
+ if (!empty($_POST['provider']))
+ $ppp['provider'] = $_POST['provider'];
+ else
+ unset($ppp['provider']);
+ if (!empty($_POST['pppoe-reset-type']))
+ $ppp['pppoe-reset-type'] = $_POST['pppoe-reset-type'];
+ else
+ unset($ppp['pppoe-reset-type']);
+
+ break;
+ case "pptp":
+ case "l2tp":
+ foreach($_POST['interfaces'] as $iface){
+ if (isset($_POST['localip'][$iface]))
+ $localip_array[] = $_POST['localip'][$iface];
+ if (isset($_POST['gateway'][$iface]))
+ $gateway_array[] = $_POST['gateway'][$iface];
+ if (isset($_POST['subnet'][$iface]))
+ $subnet_array[] = $_POST['subnet'][$iface];
+ }
+
+ $ppp['dhcp'] = $_POST['pptp_dhcp'] ? true : false;
+ if (count($localip_array))
+ $ppp['localip'] = implode(',',$localip_array);
+ else
+ unset($ppp['localip']);
+ if (count($gateway_array))
+ $ppp['gateway'] = implode(',',$gateway_array);
+ else
+ unset($ppp['gateway']);
+ if (count($subnet_array))
+ $ppp['subnet'] = implode(',',$subnet_array);
+ else
+ unset($ppp['subnet']);
+ break;
+ default:
+ break;
+
+ }
+
+ $ppp['shortseq'] = $_POST['shortseq'] ? true : false;
+ $ppp['acfcomp'] = $_POST['acfcomp'] ? true : false;
+ $ppp['protocomp'] = $_POST['protocomp'] ? true : false;
+ $ppp['vjcomp'] = $_POST['vjcomp'] ? true : false;
+ $ppp['tcpmssfix'] = $_POST['tcpmssfix'] ? true : false;
+
+ foreach($_POST['interfaces'] as $iface){
+ if (isset($_POST['bandwidth'][$iface]))
+ $bw_array[] = $_POST['bandwidth'][$iface];
+ if (isset($_POST['mtu'][$iface]))
+ $mtu_array[] = $_POST['mtu'][$iface];
+ if (isset($_POST['mru'][$iface]))
+ $mru_array[] = $_POST['mru'][$iface];
+ if (isset($_POST['mrru'][$iface]))
+ $mrru_array[] = $_POST['mrru'][$iface];
+ }
+ if (isset($bw_array))
+ $ppp['bandwidth'] = implode(',', $bw_array);
+ else
+ unset($ppp['bandwidth']);
+
+ if (isset($mtu_array))
+ $ppp['mtu'] = implode(',', $mtu_array);
+ else
+ unset($ppp['mtu']);
+
+ if (isset($mru_array))
+ $ppp['mru'] = implode(',', $mru_array);
+ else
+ unset($ppp['mru']);
+ /* handle_pppoe_reset is called here because if user changes Link Type from PPPoE to another type we
+ must be able to clear the config data in the <cron> section of config.xml if it exists
+ */
+ handle_pppoe_reset();
+
+ $iflist = get_configured_interface_list();
+ foreach ($iflist as $if) {
+ if ($config['interfaces'][$if]['ptpid'] == $_POST['ptpid']){
+ $thisif = $if;
+ break;
+ }
+ }
+ if (isset($id) && $a_ppps[$id])
+ $a_ppps[$id] = $ppp;
+ else
+ $a_ppps[] = $ppp;
+
+ write_config();
+ configure_cron();
+
+ if (isset($thisif)){
+ interface_ppps_configure($thisif);
+ }
+ header("Location: interfaces_ppps.php");
+ exit;
+ }
+} // end if($_POST)
+
+function handle_pppoe_reset() {
+ global $_POST, $config, $g;
+
+ if (!is_array($config['cron']['item']))
+ $config['cron']['item'] = array();
+ $itemhash = getMPDCRONSettings($_POST['ptpid']);
+ $item = $itemhash['ITEM'];
+
+ /* reset cron items if necessary and return*/
+ if (empty($_POST['pppoe-reset-type'])) {
+ if (isset($item))
+ unset($config['cron']['item'][$itemhash['ID']]);
+ sigkillbypid("{$g['varrun_path']}/cron.pid", "HUP");
+ return;
+ }
+
+ if (empty($item))
+ $item = array();
+ if (isset($_POST['pppoe-reset-type']) && $_POST['pppoe-reset-type'] == "custom") {
+ $item['minute'] = $_POST['pppoe_resetminute'];
+ $item['hour'] = $_POST['pppoe_resethour'];
+ if (isset($_POST['pppoe_resetdate']) && $_POST['pppoe_resetdate'] <> "") {
+ $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.$_POST['ptpid'];
+ } else if (isset($_POST['pppoe-reset-type']) && $_POST['pppoe-reset-type'] == "preset") {
+ 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.$_POST['ptpid'];
+ 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.$_POST['ptpid'];
+ break;
+ case "daily":
+ $item['minute'] = "0";
+ $item['hour'] = "0";
+ $item['mday'] = "*";
+ $item['month'] = "*";
+ $item['wday'] = "*";
+ $item['who'] = "root";
+ $item['command'] = CRON_PPPOE_CMD_FILE.$_POST['ptpid'];
+ break;
+ case "hourly":
+ $item['minute'] = "0";
+ $item['hour'] = "*";
+ $item['mday'] = "*";
+ $item['month'] = "*";
+ $item['wday'] = "*";
+ $item['who'] = "root";
+ $item['command'] = CRON_PPPOE_CMD_FILE.$_POST['ptpid'];
+ break;
+ } // end switch
+ }// end if
+ if (isset($itemhash['ID']))
+ $config['cron']['item'][$itemhash['ID']] = $item;
+ else
+ $config['cron']['item'][] = $item;
+}
+
+$closehead = false;
+$pgtitle = array("Interfaces","PPPs","Edit");
+include("head.inc");
+
+$types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp" => "PPTP", "l2tp" => "L2TP"/*, "tcp" => "TCP", "udp" => "UDP"*/ );
+
+?>
+ <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" >
+ document.observe("dom:loaded", function() { updateType(<?php echo "'{$pconfig['type']}'";?>); });
+ </script>
+</head>
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC" >
+<?php include("fbegin.inc"); ?>
+<?php if ($input_errors) print_input_errors($input_errors); ?>
+ <form action="interfaces_ppps_edit.php" method="post" name="iform" id="iform">
+ <table id="interfacetable" width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td colspan="2" valign="top" class="listtopic"><?= gettext("PPPs configuration"); ?></td>
+ </tr>
+ <tr>
+ <td valign="middle" class="vncell"><strong><?= gettext("Link 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) . "</option>";
+ }
+ ?>
+ </select>
+ </td>
+ </tr>
+ <tr name="interface" id="interface" >
+ <td width="22%" valign="top" class="vncellreq"><?= gettext("Link interface(s)"); ?></td>
+ <td width="78%" class="vtable">
+ <select valign="top" name="interfaces[]" multiple="true" class="formselect" size="4" onChange="show_hide_linkfields(this.options);">
+ <option></option>
+ </select>
+
+ <br/><span class="vexpl"><?= gettext("Interface(s) or port(s) participating in the connection."); ?></span>
+ <span style="display:none" id="prefil_ppp">
+ <p/><?= gettext("Click a link to fill in defaults for these carriers:"); ?>&nbsp;
+ <a href='#' onClick='javascript:prefill_att();'>ATT</A>
+ <a href='#' onClick='javascript:prefill_sprint();'>Sprint</A>
+ <a href='#' onClick='javascript:prefill_vzw();'>Verizon</A>
+ </span>
+ </td>
+ </tr>
+ <tr style="display:none" name="portlists" id="portlists">
+ <td id="serialports"><?php
+ $selected_ports = explode(',',$pconfig['interfaces']);
+ $serial = glob("/dev/cua*");
+ $modems = glob("/dev/modem*");
+ $serialports = array_merge($serial, $modems);
+ $serport_count = 0;
+ foreach ($serialports as $port) {
+ if(preg_match("/\.(lock|init)$/", $port))
+ continue;
+ $serport_count++;
+ echo $port.",".trim($port);
+ if (in_array($port,$selected_ports))
+ echo ",1|";
+ else
+ echo ",|";
+ }
+ echo $serport_count;
+ ?></td>
+ <td id="ports"><?php
+ $port_count = 0;
+ foreach ($portlist as $ifn => $ifinfo){
+ $port_count++;
+ echo htmlspecialchars($ifn . " (" . $ifinfo['mac'] . ")") . ",{$ifn}";
+ if (in_array($ifn,$selected_ports))
+ echo ",1|";
+ else
+ echo ",|";
+ }
+ echo $port_count;
+ if($serport_count > $port_count)
+ $port_count=$serport_count;
+ ?></td>
+ <td style="display:none" name="port_count" id="port_count"><?=htmlspecialchars($port_count);?></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Username"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="username" type="text" class="formfld user" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>">
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Password"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="password" type="password" class="formfld pwd" id="password" size="20" value="<?=htmlspecialchars($pconfig['password']);?>">
+ </td>
+ </tr>
+
+ <tr>
+ <td valign="top" class="vncell"><?= gettext("Dial On Demand"); ?></td>
+ <td class="vtable">
+ <input type="checkbox" value="on" id="ondemand" name="ondemand" <?php if (isset($pconfig['ondemand'])) echo "checked"; ?>> <?= gettext("Enable Dial-on-Demand mode"); ?>
+ <br/> <span class="vexpl"><?= gettext("This option causes the interface to operate in dial-on-demand mode, allowing you to have a virtual full time connection.
+ The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected."); ?> </span>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" class="vncell"><?= gettext("Idle Timeout"); ?></td>
+ <td class="vtable">
+ <input name="idletimeout" type="text" class="formfld unknown" id="idletimeout" size="12" value="<?=htmlspecialchars($pconfig['idletimeout']);?>"> <?= gettext("(seconds) Default is 0, which disables the timeout feature."); ?>
+ <br/> <span class="vexpl"><?= gettext("If no incoming or outgoing packets are transmitted for the entered number of seconds the connection is brought down.
+ <br/>When the idle timeout occurs, if the dial-on-demand option is enabled, mpd goes back into dial-on-demand mode. Otherwise, the interface is brought down and all associated routes removed."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" class="vncell"><?= gettext("Uptime Logging"); ?></td>
+ <td class="vtable">
+ <input type="checkbox" value="on" id="uptime" name="uptime" <?php if (isset($pconfig['uptime'])) echo "checked"; ?>> <?= gettext("Enable persistent logging of connection uptime."); ?>
+ <br/> <span class="vexpl"><?= gettext("This option causes cumulative uptime to be recorded and displayed on the Status Interfaces page."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Description"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>">
+ <br/> <span class="vexpl"><?= gettext("You may enter a description here for your reference. Description will appear in the \"Interfaces Assign\" select lists."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" valign="top" height="16"></td>
+ </tr>
+ <tr style="display:none" name="select" id="select">
+ </tr>
+ <tr style="display:none" name="ppp" id="ppp">
+ <td colspan="2" style="padding:0px;">
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td colspan="2" valign="top" class="listtopic"><?= gettext("PPP configuration"); ?></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Init String"); ?></td>
+ <td width="78%" class="vtable">
+ <input type="text" size="40" class="formfld unknown" id="initstr" name="initstr" value="<?=htmlspecialchars($pconfig['initstr']);?>">
+ <br/><span class="vexpl"><?= gettext("Note: Enter the modem initialization string here. Do NOT include the \"AT\"
+ string at the beginning of the command. Many modern USB 3G modems don't need an initialization string."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Sim PIN"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="simpin" type="text" class="formfld unknown" id="simpin" size="12" value="<?=htmlspecialchars($pconfig['simpin']);?>">
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Sim PIN wait"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="pin-wait" type="text" class="formfld unknown" id="pin-wait" size="2" value="<?=htmlspecialchars($pconfig['pin-wait']);?>">
+ <br/><span class="vexpl"><?= gettext("Note: Time to wait for SIM to discover network after PIN is sent to SIM (seconds)."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Access Point Name (APN)"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="apn" type="text" class="formfld unknown" id="apn" size="40" value="<?=htmlspecialchars($pconfig['apn']);?>">
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("APN number (optional)"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="apnum" type="text" class="formfld unknown" id="apnum" size="2" value="<?=htmlspecialchars($pconfig['apnum']);?>">
+ <br/><span class="vexpl"><?= gettext("Note: Defaults to 1 if you set APN above. Ignored if you set no APN above."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Phone Number"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="phone" type="text" class="formfld unknown" id="phone" size="40" value="<?=htmlspecialchars($pconfig['phone']);?>">
+ <br/><span class="vexpl"><?= gettext("Note: Typically (*99# or *99***# or *99***1#) for GSM networks and *777 for CDMA networks"); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Connection Timeout"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="connect-timeout" type="text" class="formfld unknown" id="connect-timeout" size="2" value="<?=htmlspecialchars($pconfig['connect-timeout']);?>">
+ <br/><span class="vexpl"><?= gettext("Note: Enter timeout in seconds for connection to be established (sec.) Default is 45 sec."); ?></span>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr style="display:none" name="pppoe" id="pppoe">
+ <td colspan="2" style="padding:0px;">
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td colspan="2" valign="top" class="listtopic"><?= gettext("PPPoE configuration"); ?></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("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"><?= gettext("Hint: this field can usually be left empty"); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?=gettext("Periodic reset");?></td>
+ <td width="78%" class="vtable">
+ <table id="presetwrap" cellspacing="0" cellpadding="0" width="100%">
+ <tr>
+ <td align="left" valign="top">
+ <p style="margin: 4px; padding: 4px 0 4px 0; width: 94%;">
+ <select valign="top" id="reset_type" name="pppoe-reset-type" class="formselect" onChange="show_reset_settings(this.value);">
+ <option value = ""><?= gettext("Disabled"); ?></option>
+ <option value="custom" <?php if ($pconfig['pppoe-reset-type'] == "custom") echo "selected"; ?>><?= gettext("Custom"); ?></option>
+ <option value="preset" <?php if ($pconfig['pppoe-reset-type'] == "preset") echo "selected"; ?>><?= gettext("Pre-Set"); ?></option>
+ </select> <?= gettext("Select a reset timing type"); ?>
+ </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 />&nbsp;<br />
+ <span class="red"><strong>Note: </strong></span>
+ <?= 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."); ?>
+ </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" style="padding:0px;">
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td colspan="2" valign="top" class="listtopic"><?= gettext("PPTP/L2TP Configuration"); ?></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Use DHCP/DNS"); ?></td>
+ <td width="78%" class="vtable">
+ <input type="checkbox" value="on" name="pptp_dhcp" id="pptp_dhcp" <?php if (isset($pconfig['pptp_dhcp'])) echo "checked"; ?>> <?= gettext("Configure Local IP and Gateway IP using DHCP/DNS"); ?>
+ <br/> <span class="vexpl"><?= gettext("Use DHCP to configure the underlying interface IP, and optionally DNS to configure the remote IP for PPtP and L2TP. If a hostname is entered in \"Gateway\" field(s) below, Gateway IP will be set via DNS."); ?></span>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <?php for($j=0; $j < $port_count; $j++) : ?>
+ <tr style="display:none" id="ipfields<?=$j;?>">
+ <td colspan="2" style="padding:0px;">
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td width="22%" id="localiplabel<?=$j;?>" valign="top" class="vncell"><?= gettext("Local IP"); ?></td>
+ <td width="78%" class="vtable">
+ <input name="localip[]" type="text" class="formfld unknown" id="localip<?=$j;?>" size="20" value="<?=htmlspecialchars($pconfig['localip'][$j]);?>">
+ /
+ <select name="subnet[]" class="formselect" id="subnet<?=$j;?>" disabled="true">
+ <?php for ($i = 31; $i > 0; $i--): ?>
+ <option value="<?=$i;?>"<?php if ($i == $pconfig['subnet'][$j]) echo "selected"; ?>><?=$i;?></option>
+ <?php endfor; ?>
+ </select>
+ <br><span class="vexpl"><?= gettext("Note: Local IP/subnet is required for PPTP connections. LocalIP is automatically assigned for PPP links if this field is empty."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" id="gatewaylabel<?=$j;?>" valign="top" class="vncell"></td>
+ <td width="78%" class="vtable">
+ <input name="gateway[]" type="text" class="formfld unknown" id="gateway<?=$j;?>" size="20" value="<?=htmlspecialchars($pconfig['gateway'][$j]);?>"><?= gettext("IP Address OR Hostname"); ?>
+ <br><span class="vexpl"><?= gettext("Note: This is where the packets will be routed. Remote IP OR Hostname is required for PPTP connections. Remote IP is automatically assigned for PPP links if this field is empty."); ?></span>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr><?php endfor; ?>
+ <tr>
+ <td colspan="2" valign="top" height="16"></td>
+ </tr>
+ <tr>
+ <td colspan="2" valign="top" class="listtopic"><?= gettext("Advanced Options"); ?></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("Compression"); ?></td>
+ <td width="78%" class="vtable">
+ <input type="checkbox" value="on" id="vjcomp" name="vjcomp" <?php if (isset($pconfig['vjcomp'])) echo "checked"; ?>>&nbsp;<?= gettext("Disable vjcomp(compression) (enabled by default)."); ?>
+ <br/> <span class="vexpl">This option enables Van Jacobson TCP header compression, which saves several bytes per TCP data packet.
+ You almost always want this option. This compression ineffective for TCP connections with enabled modern extensions like time
+ stamping or SACK, which modify TCP options between sequential packets.</span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell"><?= gettext("TCPmssFix"); ?></td>
+ <td width="78%" class="vtable">
+ <input type="checkbox" value="on" id="tcpmssfix" name="tcpmssfix" <?php if (isset($pconfig['tcpmssfix'])) echo "checked"; ?>>&nbsp;<?= gettext("Enable tcpmssfix (disabled by default)."); ?>
+ <br/> <span class="vexpl">This option causes mpd to adjust incoming and outgoing TCP SYN segments so that the requested maximum segment size is not greater than the amount
+ allowed by the interface MTU. This is necessary in many setups to avoid problems caused by routers that drop ICMP Datagram Too Big messages. Without these messages,
+ the originating machine sends data, it passes the rogue router then hits a machine that has an MTU that is not big enough for the data. Because the IP Don't Fragment option is set,
+ this machine sends an ICMP Datagram Too Big message back to the originator and drops the packet. The rogue router drops the ICMP message and the originator never
+ gets to discover that it must reduce the fragment size or drop the IP Don't Fragment option from its outgoing data.</span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">ShortSeq</td>
+ <td width="78%" class="vtable">
+ <input type="checkbox" value="on" id="shortseq" name="shortseq" <?php if (isset($pconfig['shortseq'])) echo "checked"; ?>>&nbsp;<?= gettext("Disable shortseq (enabled by default)."); ?>
+ <br/> <span class="vexpl"><?= gettext("This option is only meaningful if multi-link PPP is negotiated. It proscribes shorter multi-link fragment headers, saving two bytes on every frame.
+ It is not necessary to disable this for connections that are not multi-link."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">ACFComp</td>
+ <td width="78%" class="vtable">
+ <input type="checkbox" value="on" id="acfcomp" name="acfcomp" <?php if (isset($pconfig['acfcomp'])) echo "checked"; ?>>&nbsp;<?= gettext("Disable acfcomp(compression) (enabled by default)."); ?>
+ <br/> <span class="vexpl"><?= gettext("Address and control field compression. This option only applies to asynchronous link types. It saves two bytes per frame."); ?></span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">ProtoComp</td>
+ <td width="78%" class="vtable">
+ <input type="checkbox" value="on" id="protocomp" name="protocomp" <?php if (isset($pconfig['protocomp'])) echo "checked"; ?>>&nbsp;<?= gettext("Disable protocomp(compression) (enabled by default)."); ?>
+ <br/> <span class="vexpl"><?= gettext("Protocol field compression. This option saves one byte per frame for most frames."); ?></span>
+ </td>
+ </tr>
+
+ <?php for($i=0; $i < $port_count; $i++) : ?>
+ <tr style="display:none" id="link<?=$i;?>">
+ <td width="22%" valign="top" id="linklabel<?=$i;?>" class="vncell"> Link Parameters</td>
+ <td class="vtable">
+ <table name="link_parameters" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td width="22%" id="bwlabel<?=$i;?>" valign="top"class="vncell"> Bandwidth</td>
+ <td width="78%" class="vtable">
+ <br/><input name="bandwidth[]" id="bandwidth<?=$i;?>" type="text" class="formfld unknown" size="40" value="<?=htmlspecialchars($pconfig['bandwidth'][$i]);?>">
+ <br/> <span class="vexpl">Set Bandwidth for each link ONLY for MLPPP connections and ONLY when links have different bandwidths.</span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" id="mtulabel<?=$i;?>" valign="top" class="vncell"> MTU</td>
+ <td width="78%" class="vtable">
+ <input name="mtu[]" id="mtu<?=$i;?>" type="text" class="formfld unknown" size="6" value="<?=htmlspecialchars($pconfig['mtu'][$i]);?>">
+ <br> <span class="vexpl">Set MTU for each link if links have different bandwidths, otherwise, mtu will default to 1492.</span>
+ </td>
+ </tr>
+ <tr>
+ <td width="22%" id="mrulabel<?=$i;?>" valign="top" class="vncell"> MRU</td>
+ <td width="78%" class="vtable">
+ <input name="mru[]" id="mru<?=$i;?>" type="text" class="formfld unknown" size="6" value="<?=htmlspecialchars($pconfig['mru'][$i]);?>">
+ <br> <span class="vexpl">Set MRU for each link if links have different bandwidths, otherwise, mru will default to 1492.</span>
+ </td>
+ </tr>
+ </table
+ </td>
+ </tr><?php endfor; ?>
+ <tr>
+ <td width="22%" valign="top">&nbsp;</td>
+ <td width="78%">
+ <input name="Submit" type="submit" class="formbtn" value="Save">
+ <input type="button" value="Cancel" onclick="history.back()">
+ <?php
+ if (isset($a_ppps[$id]['ptpid']))
+ $ptpid = $a_ppps[$id]['ptpid'];
+ else
+ $ptpid = uniqid('', true);
+ ?>
+ <input name="ptpid" type="hidden" value="<?=$ptpid;?>">
+ <?php if (isset($id) && $a_ppps[$id]): ?>
+ <input name="id" type="hidden" value="<?=$id;?>">
+ <?php endif; ?>
+ </td>
+ </tr>
+ </table>
+</form>
+<?php include("fend.inc"); ?>
+</body>
+</html> \ No newline at end of file
diff --git a/usr/local/www/interfaces_qinq.php b/usr/local/www/interfaces_qinq.php
index 604d778..f25a5dc 100755
--- a/usr/local/www/interfaces_qinq.php
+++ b/usr/local/www/interfaces_qinq.php
@@ -98,9 +98,9 @@ include("head.inc");
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", true, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[6] = array("GRE", false, "interfaces_gre.php");
- $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
$tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
$tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
diff --git a/usr/local/www/interfaces_vlan.php b/usr/local/www/interfaces_vlan.php
index 0adfa7d..cd8975c 100755
--- a/usr/local/www/interfaces_vlan.php
+++ b/usr/local/www/interfaces_vlan.php
@@ -92,9 +92,9 @@ include("head.inc");
$tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", true, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[6] = array("GRE", false, "interfaces_gre.php");
- $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
$tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
$tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
diff --git a/usr/local/www/interfaces_wireless.php b/usr/local/www/interfaces_wireless.php
index f833fba..42fd149 100644
--- a/usr/local/www/interfaces_wireless.php
+++ b/usr/local/www/interfaces_wireless.php
@@ -90,7 +90,7 @@ include("head.inc");
$tab_array[2] = array("Wireless", true, "interfaces_wireless.php");
$tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
$tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[5] = array("PPPs", false, "interfaces_ppps.php");
$tab_array[6] = array("GRE", false, "interfaces_gre.php");
$tab_array[7] = array("GIF", false, "interfaces_gif.php");
$tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
diff --git a/usr/local/www/javascript/interfaces_ppps_edit/ppps_edit.js b/usr/local/www/javascript/interfaces_ppps_edit/ppps_edit.js
new file mode 100644
index 0000000..20d0fdd
--- /dev/null
+++ b/usr/local/www/javascript/interfaces_ppps_edit/ppps_edit.js
@@ -0,0 +1,160 @@
+
+function update_select_list(new_options, select_list){
+ var option_array = new_options.split("|");
+ var i = 0;
+ select_list.length = 0;
+ for(var j=0; j < option_array.length-1; j++){
+ var option = option_array[j].split(",");
+ var selected = Boolean(parseInt(option[2]));
+ select_list[j] = new Option(option[0], option[1], false, selected);
+ //for testing and debugging
+ //select_list.options[option_array.length-1+j] = new Option(option[2].toString() +" "+ selected.toString());
+ //select_list.options[option_array.length-1+j] = new Option("Link Label: " + linklabel + " Label Text:" + label_text);
+ }
+ show_hide_linkfields(select_list);
+}
+
+function clear_selected(list_name){
+ var select_list = document.iform[list_name];
+ for(var j=0; j < select_list.options.length; j++){
+ select_list.options[j].selected = 0;
+ }
+}
+
+function show_hide_linkfields(options){
+ var select_count = 0;
+ var port_count = parseInt($('port_count').innerHTML);
+ for(var j=0; j < port_count; j++){
+ var count = j.toString();
+ var link = "link" + count;
+ var ipfields = "ipfields" + count;
+ var subnet = "subnet" + count;
+ $(ipfields,link).invoke('hide');
+ $(subnet).disabled = true;
+ }
+ for(var j=0; j < options.length; j++){
+ var count = select_count.toString();
+ var type = $('type').value;
+ var link = "link" + count;
+ var lnklabel = "linklabel" + count;
+ var bw = "bandwidth" + count;
+ var bwlabel = "bwlabel" + count;
+ var mtu = "mtu" + count;
+ var mru = "mru" + count;
+ var ipfields = "ipfields" + count;
+ var localip = "localip" + count;
+ var localiplabel = "localiplabel" + count;
+ var subnet = "subnet" + count;
+ var gateway = "gateway" + count;
+ var gatewaylabel = "gatewaylabel" + count;
+ /*
+ $(ipfields,link).invoke('hide');
+ $(bw).name = "bandwidth[]";
+ $(mtu).name = "mtu[]";
+ $(mru).name = "mru[]";
+ $(localip).name = "localip[]";
+ $(subnet).name = "subnet[]";
+ $(subnet).disabled = true;
+ $(gateway).name = "gateway[]";
+ */
+ if (options[j].selected){
+ $(lnklabel).innerHTML = "Link Parameters (" + options[j].value + ")";
+ $(bwlabel).innerHTML = "Bandwidth (" + options[j].value + ")";
+ $(bw).name = "bandwidth[" + options[j].value + "]";
+ $(mtu).name = "mtu[" + options[j].value + "]";
+ $(mru).name = "mru[" + options[j].value + "]";
+ $(localiplabel).innerHTML = "Local IP (" + options[j].value + ")";
+ $(gatewaylabel).innerHTML = "Gateway (" + options[j].value + ")";
+ $(localip).name = "localip[" + options[j].value + "]";
+ $(subnet).name = "subnet[" + options[j].value + "]";
+ $(gateway).name = "gateway[" + options[j].value + "]";
+ if (type == 'pptp' || type == 'ppp' || type == 'l2tp'){
+ $(ipfields).show();
+ if (type == 'pptp' || type == 'l2tp'){
+ $(subnet).disabled = false;
+ }
+ }
+ $(link).show();
+ select_count++;
+ }
+ }
+}
+
+
+function updateType(t){
+ var serialports = $('serialports').innerHTML;
+ var ports = $('ports').innerHTML;
+ var select_list = document.iform["interfaces[]"].options;
+ switch(t) {
+ case "select": {
+ $('ppp','pppoe','pptp','prefil_ppp').invoke('hide');
+ select_list.length = 0;
+ select_list[0] = new Option("Select Link Type First","");
+ break;
+ }
+ case "ppp": {
+ update_select_list(serialports, select_list);
+ $('select','pppoe','pptp').invoke('hide');
+ $('prefil_ppp').show();
+ break;
+ }
+ case "pppoe": {
+ update_select_list(ports, select_list);
+ $('select','ppp','pptp','prefil_ppp').invoke('hide');
+ break;
+ }
+ case "l2tp": {
+ t = "pptp";
+ }
+ case "pptp": {
+ update_select_list(ports, select_list);
+ $('select','ppp','pppoe','prefil_ppp').invoke('hide');
+ break;
+ }
+ default:
+ select_list.length = 0;
+ select_list[0] = new Option("Select Link Type First","");
+ break;
+ }
+ if (t != ''){
+ $(t).show();
+ }
+}
+
+function show_reset_settings(reset_type) {
+ if (reset_type == 'preset') {
+ Effect.Appear('pppoepresetwrap', { duration: 0.0 });
+ Effect.Fade('pppoecustomwrap', { duration: 0.0 });
+ }
+ else if (reset_type == 'custom') {
+ Effect.Appear('pppoecustomwrap', { duration: 0.0 });
+ Effect.Fade('pppoepresetwrap', { duration: 0.0 });
+ } else {
+ Effect.Fade('pppoecustomwrap', { duration: 0.0 });
+ Effect.Fade('pppoepresetwrap', { duration: 0.0 });
+ }
+}
+function prefill_att() {
+ $('initstr').value = "Q0V1E1S0=0&C1&D2+FCLASS=0";
+ $('apn').value = "ISP.CINGULAR";
+ $('apnum').value = "1";
+ $('phone').value = "*99#";
+ $('username').value = "att";
+ $('password').value = "att";
+}
+function prefill_sprint() {
+ $('initstr').value = "E1Q0";
+ $('apn').value = "";
+ $('apnum').value = "";
+ $('phone').value = "#777";
+ $('username').value = "sprint";
+ $('password').value = "sprint";
+}
+function prefill_vzw() {
+ $('initstr').value = "E1Q0s7=60";
+ $('apn').value = "";
+ $('apnum').value = "";
+ $('phone').value = "#777";
+ $('username').value = "123@vzw3g.com";
+ $('password').value = "vzw";
+}
OpenPOWER on IntegriCloud