diff --git a/usr/local/www/interfaces_mlppp_edit.php b/usr/local/www/interfaces_mlppp_edit.php
index 22266d88a1..7fb99425e2 100644
--- a/usr/local/www/interfaces_mlppp_edit.php
+++ b/usr/local/www/interfaces_mlppp_edit.php
@@ -91,7 +91,7 @@ if (isset($_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['user'] = $a_ppps[$id]['username'];
$pconfig['password'] = $a_ppps[$id]['password'];
if (isset($a_ppps[$id]['defaultgw']))
$pconfig['defaultgw'] = true;
@@ -203,20 +203,20 @@ if ($_POST) {
break;
case "pppoe":
if ($_POST['ondemand']) {
- $reqdfields = explode(" ", "interfaces username password ondemand idletimeout");
+ $reqdfields = explode(" ", "interfaces user password ondemand idletimeout");
$reqdfieldsn = explode(",", "Link Interface(s),Username,Password,Dial on demand,Idle timeout value");
} else {
- $reqdfields = explode(" ", "interfaces username password");
+ $reqdfields = explode(" ", "interfaces user password");
$reqdfieldsn = explode(",", "Link Interface(s),Username,Password");
}
do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
break;
case "pptp":
if ($_POST['ondemand']) {
- $reqdfields = explode(" ", "interfaces username password localip subnet gateway ondemand idletimeout");
+ $reqdfields = explode(" ", "interfaces user 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");
+ $reqdfields = explode(" ", "interfaces user 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);
@@ -264,7 +264,7 @@ if ($_POST) {
$ppp = array();
$ppp['type'] = $_POST['type'];
$ppp['ports'] = implode(',', $_POST['interfaces']);
- $ppp['username'] = $_POST['username'];
+ $ppp['username'] = $_POST['user'];
$ppp['password'] = $_POST['password'];
$ppp['defaultgw'] = $_POST['defaultgw'] ? true : false;
$ppp['ondemand'] = $_POST['ondemand'] ? true : false;
@@ -480,7 +480,8 @@ $types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
for(var j=0; j < option_array.length-1; j++){
var option = option_array[j].split(",");
var selected = Boolean(parseInt(option[2]));
- select_list.options[j] = new Option(" "+option[0]+" ", option[1], false, selected);
+ select_list.options[j] = new Option(option[0], option[1], false, selected);
+ //this line for debugging the javascript above
//select_list.options[option_array.length-1+j] = new Option(option[2].toString() +" "+ selected.toString());
}
}
@@ -538,7 +539,7 @@ $types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
$('apn').value = "ISP.CINGULAR";
$('apnum').value = "1";
$('phone').value = "*99#";
- $('username').value = "att";
+ $('user').value = "att";
$('password').value = "att";
}
function prefill_sprint() {
@@ -546,7 +547,7 @@ $types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
$('apn').value = "";
$('apnum').value = "";
$('phone').value = "#777";
- $('username').value = "sprint";
+ $('user').value = "sprint";
$('password').value = "sprint";
}
function prefill_vzw() {
@@ -554,7 +555,7 @@ $types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
$('apn').value = "";
$('apnum').value = "";
$('phone').value = "#777";
- $('username').value = "123@vzw3g.com";
+ $('user').value = "123@vzw3g.com";
$('password').value = "vzw";
}
document.observe("dom:loaded", function() { updateType(); });
@@ -587,12 +588,13 @@ $types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
Link interface(s)
-
+
- Interfaces participating in the multilink connection.
+ Select one or more interfaces or ports to participate in the connection. Select more than one
+ interface to create a multilink (MLPPP) connection.
-
+
"Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
if (stristr($pconfig['interfaces'], $port))
echo ",1|";
else
- echo ",0|";
+ echo ",|";
}
?>
"Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
if (stristr($pconfig['interfaces'], $ifn))
echo ",1|";
else
- echo ",0|";
+ echo ",|";
}
?>
Username
-
+
@@ -679,6 +681,15 @@ $types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
PPP configuration
+
+ Default PPP settings
+
+ ATT
+ Sprint
+ Verizon
+ Click the links to fill default connection settings for these carriers.
+
+
Init String
@@ -846,8 +857,8 @@ $types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp"
Bandwidth
onclick="show_more_settings(this,bandwidth_input);" />
- Set unequal bandwidths for links in this multilink connection.
-
+ Set bandwidths for links in multilink connections.
+
Set Bandwidth for each link ONLY when links have different bandwidths.
diff --git a/usr/local/www/interfaces_ppp.php b/usr/local/www/interfaces_ppp.php
index 0ef20f08d0..5e9d9f26fe 100644
--- a/usr/local/www/interfaces_ppp.php
+++ b/usr/local/www/interfaces_ppp.php
@@ -1,13 +1,10 @@
- Changes by Chris Buechler
-
- Copyright (C) 2004-2008 BSD Perimeter LLC.
- Copyright (C) 2004-2009 Scott Ullrich
+ Copyright (C) 2003-2004 Manuel Kasper .
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -32,14 +29,14 @@
POSSIBILITY OF SUCH DAMAGE.
*/
/*
- pfSense_BUILDER_BINARIES: /bin/kill /sbin/ifconfig
+ pfSense_BUILDER_BINARIES: /sbin/ifconfig
pfSense_MODULE: interfaces
*/
##|+PRIV
##|*IDENT=page-interfaces-ppp
-##|*NAME=Interfaces: PPP page
-##|*DESCR=Allow access to the 'Interfaces: PPP' page.
+##|*NAME=Interfaces: ppp page
+##|*DESCR=Allow access to the 'Interfaces: ppp' page.
##|*MATCH=interfaces_ppp.php*
##|-PRIV
@@ -63,7 +60,7 @@ function ppp_inuse($num) {
if ($_GET['act'] == "del") {
/* check if still in use */
if (ppp_inuse($_GET['id'])) {
- $input_errors[] = "This PPP interface cannot be deleted because it is still being used as an interface.";
+ $input_errors[] = "This interface cannot be deleted because it is still being used as an interface.";
} else {
unset($a_ppps[$_GET['id']]);
write_config();
@@ -89,8 +86,8 @@ 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", true, "interfaces_ppp.php");
- $tab_array[6] = array("MLPPP", false, "interfaces_mlppp.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("MLPPP", true, "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");
@@ -103,14 +100,18 @@ include("head.inc");
- Serial Port
+ Type
+ Interface(s)/Port(s)
Description
$ppp): ?>
+
+ =htmlspecialchars($ppp['type']);?>
+
- =htmlspecialchars($ppp['port']);?>
+ =htmlspecialchars($ppp['ports']);?>
=htmlspecialchars($ppp['descr']);?>
@@ -120,7 +121,7 @@ include("head.inc");
-
+
diff --git a/usr/local/www/interfaces_ppp_edit.php b/usr/local/www/interfaces_ppp_edit.php
index c6a23ec767..0ca8cfeec7 100644
--- a/usr/local/www/interfaces_ppp_edit.php
+++ b/usr/local/www/interfaces_ppp_edit.php
@@ -1,14 +1,12 @@
- Changes by Chris Buechler
- Additions by Scott Ullrich
-
- Copyright (C) 2004-2009 BSD Perimeter LLC.
- Copyright (C) 2009 Scott Ullrich
+ Copyright (C) 2003-2004 Manuel Kasper .
+ All rights reserved.
+ Copyright (C) 2010 Gabriel B. .
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -45,136 +43,503 @@
require("guiconfig.inc");
+define("CRON_PPPOE_CMD_FILE", "/conf/pppoe{$if}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 * * * *");
+
if (!is_array($config['ppps']['ppp']))
$config['ppps']['ppp'] = array();
$a_ppps = &$config['ppps']['ppp'];
+$portlist = get_interface_list();
+
+function getMPDCRONSettings() {
+ global $config;
+ if (is_array($config['cron']['item'])) {
+ for ($i = 0; $i < count($config['cron']['item']); $i++) {
+ $item = $config['cron']['item'][$i];
+ if (strpos($item['command'], CRON_PPPOE_CMD_FILE) !== false) {
+ return array("ID" => $i, "ITEM" => $item);
+ }
+ }
+ }
+ return NULL;
+}
+
+function getMPDResetTimeFromConfig() {
+ $itemhash = getMPDCRONSettings();
+ $cronitem = $itemhash['ITEM'];
+ if (isset($cronitem)) {
+ return "{$cronitem['minute']} {$cronitem['hour']} {$cronitem['mday']} {$cronitem['month']} {$cronitem['wday']}";
+ } else {
+ return NULL;
+ }
+}
+
+function remove_bad_chars($string) {
+ return preg_replace('/[^a-z|_|0-9]/i','',$string);
+}
+
$id = $_GET['id'];
if (isset($_POST['id']))
$id = $_POST['id'];
+
if (isset($id) && $a_ppps[$id]) {
- $pconfig['port'] = $a_ppps[$id]['port'];
- $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['username'] = $a_ppps[$id]['username'];
+ $pconfig['type'] = $a_ppps[$id]['type'];
+ $pconfig['interfaces'] = $a_ppps[$id]['ports'];
+ $pconfig['user'] = $a_ppps[$id]['username'];
$pconfig['password'] = $a_ppps[$id]['password'];
- $pconfig['localip'] = $a_ppps[$id]['localip'];
- $pconfig['gateway'] = $a_ppps[$id]['gateway'];
if (isset($a_ppps[$id]['defaultgw']))
$pconfig['defaultgw'] = true;
- $pconfig['connect-timeout'] = $a_ppps[$id]['connect-timeout'];
+ 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'] = $a_ppps[$id]['bandwidth'];
+ $pconfig['mtu'] = $a_ppps[$id]['mtu'];
+ $pconfig['mru'] = $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;
+ if ($a_ppps[$id]['type'] == "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'] = $a_ppps[$id]['localip'];
+ $pconfig['gateway'] = $a_ppps[$id]['gateway'];
+ }
+ if ($a_ppps[$id]['type'] == "pptp") {
+ $pconfig['localip'] = $a_ppps[$id]['localip'];
+ $pconfig['subnet'] = $a_ppps[$id]['subnet'];
+ $pconfig['gateway'] = $a_ppps[$id]['gateway'];
+ }
+ if ($a_ppps[$id]['type'] == "pppoe") {
+ $pconfig['provider'] = $a_ppps[$id]['provider'];
+ /* ================================================ */
+ /* = force a connection reset at a specific time? = */
+ /* ================================================ */
+
+ if (isset($a_ppps[$id]['pppoe-reset-type'])) {
+ $resetTime = getMPDResetTimeFromConfig();
+ $pconfig['pppoe_preset'] = true;
+ 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;
+ }
+ }
+ }
+ }
+
}
if ($_POST) {
unset($input_errors);
$pconfig = $_POST;
+
+ /* filter out spaces from descriptions */
+ $_POST['descr'] = remove_bad_chars($_POST['descr']);
+
+ /* 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_preset'])) {
+ unset($_POST['pppoe_pr_type']);
+ unset($_POST['pppoe_resethour']);
+ unset($_POST['pppoe_resetminute']);
+ unset($_POST['pppoe_resetdate']);
+ unset($_POST['pppoe_pr_preset_val']);
+ }
/* input validation */
- $reqdfields = explode(" ", "port");
- $reqdfieldsn = explode(",", "Serial Port");
-
- do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
+ 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 user password ondemand idletimeout");
+ $reqdfieldsn = explode(",", "Link Interface(s),Username,Password,Dial on demand,Idle timeout value");
+ } else {
+ $reqdfields = explode(" ", "interfaces user password");
+ $reqdfieldsn = explode(",", "Link Interface(s),Username,Password");
+ }
+ do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
+ break;
+ case "pptp":
+ if ($_POST['ondemand']) {
+ $reqdfields = explode(" ", "interfaces user 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 user 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['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_resethour'] <> "" && !is_numericint($_POST['pppoe_resethour']) &&
+ $_POST['pppoe_resethour'] >= 0 && $_POST['pppoe_resethour'] <=23)
+ $input_errors[] = gettext("A valid PPPoE reset hour must be specified (0-23).");
+ if ($_POST['pppoe_resetminute'] <> "" && !is_numericint($_POST['pppoe_resetminute']) &&
+ $_POST['pppoe_resetminute'] >= 0 && $_POST['pppoe_resetminute'] <=59)
+ $input_errors[] = gettext("A valid PPPoE reset minute must be specified (0-59).");
+ if ($_POST['pppoe_resetdate'] <> "" && !is_numeric(str_replace("/", "", $_POST['pppoe_resetdate'])))
+ $input_errors[] = gettext("A valid PPPoE reset date must be specified (mm/dd/yyyy).");
+ if (($_POST['localip'] && !is_ipaddr($_POST['localip'])))
+ $input_errors[] = "A valid PPTP local IP address must be specified.";
+ if (($_POST['subnet'] && !is_numeric($_POST['subnet'])))
+ $input_errors[] = "A valid PPTP subnet bit count must be specified.";
+ if (($_POST['gateway'] && !is_ipaddr($_POST['gateway'])))
+ $input_errors[] = "A valid PPTP remote IP address must be specified.";
+
+ if ($_POST['mtu'] && ($_POST['mtu'] < 576))
+ $input_errors[] = "The MTU must be greater than 576 bytes.";
+ if ($_POST['mru'] && ($_POST['mru'] < 576))
+ $input_errors[] = "The MRU must be greater than 576 bytes.";
+/*
foreach ($a_ppps as $ppp) {
if (isset($id) && ($a_ppps[$id]) && ($a_ppps[$id] === $ppp))
continue;
- if ($ppp['port'] == $_POST['port']) {
- $input_errors[] = "Port is in use";
+ if ($ppp['serialport'] == $_POST['serialport']) {
+ $input_errors[] = "Serial port is in use";
break;
}
}
+*/
if (!$input_errors) {
$ppp = array();
-
- $ppp['port'] = $_POST['port'];
- if ($_POST['initstr'] <> "")
- $ppp['initstr'] = base64_encode($_POST['initstr']);
- else
- unset($ppp['initstr']);
-
- if ($_POST['simpin'] <> "") {
- $ppp['simpin'] = $_POST['simpin'];
- $ppp['pin-wait'] = $_POST['pin-wait'];
- } else {
- unset($ppp['simpin']);
- unset($ppp['pin-wait']);
- }
-
- $ppp['apn'] = $_POST['apn'];
- if ($ppp['apn'] <> ""){
- if ($_POST['apnum'] <> "")
- $ppp['apnum'] = $_POST['apnum'];
- else
- $ppp['apnum'] = "1";
- } else {
- unset($ppp['apn']);
- unset($ppp['apnum']);
- }
-
- $ppp['phone'] = $_POST['phone'];
- $ppp['username'] = $_POST['username'];
+ $ppp['type'] = $_POST['type'];
+ $ppp['ports'] = implode(',', $_POST['interfaces']);
+ $ppp['username'] = $_POST['user'];
$ppp['password'] = $_POST['password'];
- $ppp['localip'] = $_POST['localip'];
- $ppp['gateway'] = $_POST['gateway'];
- if ($_POST['defaultgw'] == "on")
- $ppp['defaultgw'] = true;
+ $ppp['defaultgw'] = $_POST['defaultgw'] ? true : false;
+ $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['defaultgw']);
- if ($_POST['connect-timeout'] <> "")
- $ppp['connect-timeout'] = $_POST['connect-timeout'];
- else
- unset($ppp['connect-timeout']);
- $ppp['descr'] = $_POST['descr'];
-
- $iflist = get_configured_interface_list();
- foreach ($iflist as $if) {
- if ($config['interfaces'][$if]['if'] == basename($a_ppps[$id]['port'])) {
- $config['interfaces'][$if]['if'] = basename($ppp['port']);
- $thisif = $if;
- }
+ 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'];
+ if (!empty($_POST['localip']))
+ $ppp['localip'] = $_POST['localip'];
+ else
+ unset($ppp['localip']);
+ if (!empty($_POST['gateway']))
+ $ppp['gateway'] = $_POST['gateway'];
+ 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']);
+ handle_pppoe_reset();
+ break;
+ case "pptp":
+ $ppp['localip'] = $_POST['localip'];
+ $ppp['subnet'] = $_POST['subnet'];
+ $ppp['gateway'] = $_POST['gateway'];
+ break;
+ default:
+ break;
+
}
+ /* reset cron items if necessary */
+ if (empty($_POST['pppoe_preset'])) {
+ /* test whether a cron item exists and unset() it if necessary */
+ $itemhash = getMPDCRONSettings();
+ $item = $itemhash['ITEM'];
+ if (isset($item))
+ unset($config['cron']['item'][$itemhash['ID']]);
+ }
+ $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;
+ if (isset($_POST['bandwidth']))
+ $ppp['bandwidth'] = $_POST['bandwidth'];
+ else
+ unset($ppp['bandwidth']);
+ if (isset($_POST['mtu']))
+ $ppp['mtu'] = $_POST['mtu'];
+ else
+ unset($ppp['mtu']);
+ if (isset($_POST['mru']))
+ $ppp['mru'] = $_POST['mru'];
+ else
+ unset($ppp['mru']);
+
+
+ $iflist = get_configured_interface_list();
+ /*
+ foreach ($iflist as $if) {
+ if ($config['interfaces'][$if]['if'] == basename($a_ppps[$id]['port']))
+ $config['interfaces'][$if]['if'] = basename($ppp['port']);
+ }
+ */
if (isset($id) && $a_ppps[$id])
$a_ppps[$id] = $ppp;
else
$a_ppps[] = $ppp;
-
+
write_config();
- if (!empty($thisif))
- interface_ppp_configure($thisif);
header("Location: interfaces_ppp.php");
exit;
}
+} // end if($_POST)
+
+function handle_pppoe_reset() {
+ global $_POST, $config, $g, $ppp, $if;
+ /* perform a periodic reset? */
+ if(!isset($_POST['pppoe_preset'])) {
+ setup_pppoe_reset_file($if, false);
+ return;
+ }
+ if (!is_array($config['cron']['item']))
+ $config['cron']['item'] = array();
+ $itemhash = getMPDCRONSettings();
+ $item = $itemhash['ITEM'];
+ if (empty($item))
+ $item = array();
+ if (isset($_POST['pppoe_pr_type']) && $_POST['pppoe_pr_type'] == "custom") {
+ $ppp['pppoe-reset-type'] = "custom";
+ $pconfig['pppoe_pr_custom'] = true;
+ $item['minute'] = $_POST['pppoe_resetminute'];
+ $item['hour'] = $_POST['pppoe_resethour'];
+ if (isset($_POST['pppoe_resetdate']) && $_POST['pppoe_resetdate'] <> "" && strlen($_POST['pppoe_resetdate']) == 10) {
+ $date = explode("/", $_POST['pppoe_resetdate']);
+ $item['mday'] = $date[1];
+ $item['month'] = $date[0];
+ } else {
+ $item['mday'] = "*";
+ $item['month'] = "*";
+ }
+ $item['wday'] = "*";
+ $item['who'] = "root";
+ $item['command'] = CRON_PPPOE_CMD_FILE;
+ } else if (isset($_POST['pppoe_pr_type']) && $_POST['pppoe_pr_type'] = "preset") {
+ $ppp['pppoe-reset-type'] = "preset";
+ $pconfig['pppoe_pr_preset'] = true;
+ switch ($_POST['pppoe_pr_preset_val']) {
+ case "monthly":
+ $item['minute'] = "0";
+ $item['hour'] = "0";
+ $item['mday'] = "1";
+ $item['month'] = "*";
+ $item['wday'] = "*";
+ $item['who'] = "root";
+ $item['command'] = CRON_PPPOE_CMD_FILE;
+ break;
+ case "weekly":
+ $item['minute'] = "0";
+ $item['hour'] = "0";
+ $item['mday'] = "*";
+ $item['month'] = "*";
+ $item['wday'] = "0";
+ $item['who'] = "root";
+ $item['command'] = CRON_PPPOE_CMD_FILE;
+ break;
+ case "daily":
+ $item['minute'] = "0";
+ $item['hour'] = "0";
+ $item['mday'] = "*";
+ $item['month'] = "*";
+ $item['wday'] = "*";
+ $item['who'] = "root";
+ $item['command'] = CRON_PPPOE_CMD_FILE;
+ break;
+ case "hourly":
+ $item['minute'] = "0";
+ $item['hour'] = "*";
+ $item['mday'] = "*";
+ $item['month'] = "*";
+ $item['wday'] = "*";
+ $item['who'] = "root";
+ $item['command'] = CRON_PPPOE_CMD_FILE;
+ break;
+ } // end switch
+ } // end if
+ if (isset($itemhash['ID']))
+ $config['cron']['item'][$itemhash['ID']] = $item;
+ else
+ $config['cron']['item'][] = $item;
+ /* finally install the pppoerestart file */
+ if (isset($_POST['pppoe_preset'])) {
+ setup_pppoe_reset_file($if, true);
+ //$ppp['pppoe_reset'] = true;
+ $ppp['pppoe_preset'] = true;
+ sigkillbypid("{$g['varrun_path']}/cron.pid", "HUP");
+ } else {
+ //unset($ppp['pppoe_reset']);
+ unset($ppp['pppoe_preset']);
+ setup_pppoe_reset_file($if, false);
+ }
}
-$pgtitle = "Interfaces: PPP: Edit";
+$closehead = false;
+$pgtitle = array("Interfaces","PPP","Edit");
include("head.inc");
+$types = array("select" => "Select", "ppp" => "PPP", "pppoe" => "PPPoE", "pptp" => "PPTP"/*, "l2tp" => "L2TP", "tcp" => "TCP", "udp" => "UDP", "ng" => "Netgraph" */ );
+
?>
-
-
-
-