summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2010-09-02 17:26:33 +0000
committerErmal <eri@pfsense.org>2010-09-02 17:27:14 +0000
commit0e642c78b469f0de3fe9ab4479389d86d0a2bfd7 (patch)
treeda7ba24ba2dc3205c3e5ef9b7e1d7e1e449c7ec5
parentc73c126fdad559dbcb4f19cc16c9b05aef94cac8 (diff)
downloadpfsense-0e642c78b469f0de3fe9ab4479389d86d0a2bfd7.zip
pfsense-0e642c78b469f0de3fe9ab4479389d86d0a2bfd7.tar.gz
Make possible to run multiple instances of pppoe server. Not yet switched to mpd4.
-rw-r--r--etc/inc/vpn.inc83
-rw-r--r--etc/inc/xmlparse.inc2
-rw-r--r--etc/inc/xmlreader.inc2
-rwxr-xr-xusr/local/www/javascript/row_helper.js2
-rwxr-xr-xusr/local/www/vpn_pppoe.php526
-rwxr-xr-xusr/local/www/vpn_pppoe_users.php143
-rwxr-xr-xusr/local/www/vpn_pppoe_users_edit.php179
7 files changed, 150 insertions, 787 deletions
diff --git a/etc/inc/vpn.inc b/etc/inc/vpn.inc
index ce24b29..99d59e8 100644
--- a/etc/inc/vpn.inc
+++ b/etc/inc/vpn.inc
@@ -945,7 +945,7 @@ function vpn_setup() {
vpn_pptpd_configure();
/* start pppoe server */
- vpn_pppoe_configure();
+ vpn_pppoes_configure();
/* setup l2tp */
vpn_l2tp_configure();
@@ -1156,15 +1156,23 @@ EOD;
return 0;
}
-function vpn_pppoe_configure() {
+function vpn_pppoes_configure() {
+ global $config;
+
+ if (is_array($config['pppoes']['pppoe'])) {
+ foreach ($config['pppoes']['pppoe'] as $pppoe)
+ vpn_pppoe_configure($pppoe);
+ }
+}
+
+function vpn_pppoe_configure(&$pppoecfg) {
global $config, $g;
$syscfg = $config['system'];
- $pppoecfg = $config['pppoe'];
/* create directory if it does not exist */
- if (!is_dir("{$g['varetc_path']}/pppoe-vpn"))
- mkdir("{$g['varetc_path']}/pppoe-vpn");
+ if (!is_dir("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn"))
+ mkdir("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn");
if ($g['booting']) {
if (!$pppoecfg['mode'] || ($pppoecfg['mode'] == "off"))
@@ -1173,22 +1181,18 @@ function vpn_pppoe_configure() {
echo "Configuring PPPoE VPN service... ";
} else {
/* kill mpd */
- killbypid("{$g['varrun_path']}/pppoe-vpn.pid");
+ killbypid("{$g['varrun_path']}/pppoe{$pppoecfg['pppoeid']}-vpn.pid");
/* wait for process to die */
sleep(2);
}
- /* make sure pppoe-vpn directory exists */
- if (!file_exists("{$g['varetc_path']}/pppoe-vpn"))
- mkdir("{$g['varetc_path']}/pppoe-vpn");
-
switch ($pppoecfg['mode']) {
case 'server' :
- $pppoe_interface = interface_translate_type_to_real($pppoecfg['interface']);
+ $pppoe_interface = get_real_interface($pppoecfg['interface']);
if ($pppoecfg['paporchap'] == "chap")
$paporchap = "set link enable chap";
@@ -1196,19 +1200,16 @@ function vpn_pppoe_configure() {
$paporchap = "set link enable pap";
/* write mpd.conf */
- $fd = fopen("{$g['varetc_path']}/pppoe-vpn/mpd.conf", "w");
+ $fd = fopen("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.conf", "w");
if (!$fd) {
printf("Error: cannot open mpd.conf in vpn_pppoe_configure().\n");
return 1;
}
$mpdconf = "\n\n";
- $mpdconf .=<<<EOD
-pppoe:
-
-EOD;
+ $mpdconf .= "pppoe:\n";
for ($i = 0; $i < $pppoecfg['n_pppoe_units']; $i++) {
- $mpdconf .= " load pppoe{$i}\n";
+ $mpdconf .= " load poes{$pppoecfg['pppoeid']}{$i}\n";
}
for ($i = 0; $i < $pppoecfg['n_pppoe_units']; $i++) {
@@ -1223,8 +1224,8 @@ EOD;
$mpdconf .=<<<EOD
-pppoe{$i}:
- new -i ppoed{$i} pppoe{$i} pppoe{$i}
+poes{$pppoecfg['pppoeid']}{$i}:
+ new -i poes{$pppoecfg['pppoeid']}{$i} poes{$pppoecfg['pppoeid']}{$i} poes{$pppoecfg['pppoeid']}{$i}
{$isssue_ip_type}
load pppoe_standart
@@ -1296,7 +1297,7 @@ EOD;
fclose($fd);
/* write mpd.links */
- $fd = fopen("{$g['varetc_path']}/pppoe-vpn/mpd.links", "w");
+ $fd = fopen("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.links", "w");
if (!$fd) {
printf("Error: cannot open mpd.links in vpn_pppoe_configure().\n");
return 1;
@@ -1307,7 +1308,7 @@ EOD;
for ($i = 0; $i < $pppoecfg['n_pppoe_units']; $i++) {
$mpdlinks .=<<<EOD
-pppoe{$i}:
+poes{$pppoecfg['pppoeid']}{$i}:
set phys type pppoe
set pppoe iface {$pppoe_interface}
set pppoe service "*"
@@ -1320,31 +1321,33 @@ EOD;
fwrite($fd, $mpdlinks);
fclose($fd);
- /* write mpd.secret */
- $fd = fopen("{$g['varetc_path']}/pppoe-vpn/mpd.secret", "w");
- if (!$fd) {
- printf("Error: cannot open mpd.secret in vpn_pppoe_configure().\n");
- return 1;
- }
+ if ($pppoecfg['username']) {
+ /* write mpd.secret */
+ $fd = fopen("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.secret", "w");
+ if (!$fd) {
+ printf("Error: cannot open mpd.secret in vpn_pppoe_configure().\n");
+ return 1;
+ }
- $mpdsecret = "\n\n";
+ $mpdsecret = "\n\n";
- if (is_array($pppoecfg['user'])) {
- foreach ($pppoecfg['user'] as $user)
- $mpdsecret .= "{$user['name']} \"{$user['password']}\" {$user['ip']}\n";
- }
+ if (!empty($pppoecfg['username'])) {
+ $item = explode(" ", $pppoecfg['username']);
+ foreach($item as $userdata) {
+ $data = explode(":", $userdata);
+ $mpdsecret .= "{$data[0]} \"{$user[1]}\" {$user[2]}\n";
+ }
+ }
- fwrite($fd, $mpdsecret);
- fclose($fd);
- chmod("{$g['varetc_path']}/pppoe-vpn/mpd.secret", 0600);
+ fwrite($fd, $mpdsecret);
+ fclose($fd);
+ chmod("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.secret", 0600);
+ }
/* fire up mpd */
- mwexec("/usr/local/sbin/mpd4 -b -d {$g['varetc_path']}/pppoe-vpn -p {$g['varrun_path']}/pppoe-vpn.pid -s pppoe pppoe");
+ mwexec("/usr/local/sbin/mpd4 -b -d {$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn -p {$g['varrun_path']}/pppoe{$pppoecfg['pppoeid']}-vpn.pid -s pppoe pppoe");
break;
-
- case 'redir' :
- break;
}
if ($g['booting'])
@@ -1708,4 +1711,4 @@ function reload_tunnel_spd_policy($phase1, $phase2, $old_phase1, $old_phase2) {
return true;
}
-?> \ No newline at end of file
+?>
diff --git a/etc/inc/xmlparse.inc b/etc/inc/xmlparse.inc
index 4d6bbd3..118a97b 100644
--- a/etc/inc/xmlparse.inc
+++ b/etc/inc/xmlparse.inc
@@ -44,7 +44,7 @@ function listtags() {
"lbaction lbpool l7rules lbprotocol ".
"member menu tab mobilekey monitor_type mount ntpserver onetoone ".
"openvpn-server openvpn-client openvpn-csc " .
- "option ppp package passthrumac phase1 phase2 priv proxyarpnet qinqentry queue ".
+ "option package passthrumac phase1 phase2 ppp pppoe priv proxyarpnet qinqentry queue ".
"pages pipe roll route row rrddatafile rule schedule service servernat servers ".
"serversdisabled earlyshellcmd shellcmd staticmap subqueue timerange ".
"tunnel user vip virtual_server vlan winsserver wolentry widget"
diff --git a/etc/inc/xmlreader.inc b/etc/inc/xmlreader.inc
index 7047a19..3d21be1 100644
--- a/etc/inc/xmlreader.inc
+++ b/etc/inc/xmlreader.inc
@@ -48,7 +48,7 @@ function listtags() {
"lbaction lbpool l7rules lbprotocol ".
"member menu tab mobilekey monitor_type mount ntpserver onetoone ".
"openvpn-server openvpn-client openvpn-csc " .
- "option ppp package passthrumac phase1 phase2 priv proxyarpnet qinqentry queue ".
+ "option package passthrumac phase1 phase2 ppp pppoe priv proxyarpnet qinqentry queue ".
"pages pipe roll route row rrddatafile rule schedule service servernat servers ".
"serversdisabled earlyshellcmd shellcmd staticmap subqueue timerange ".
"tunnel user vip virtual_server vlan winsserver wolentry widget"
diff --git a/usr/local/www/javascript/row_helper.js b/usr/local/www/javascript/row_helper.js
index 476602b..5e8df31 100755
--- a/usr/local/www/javascript/row_helper.js
+++ b/usr/local/www/javascript/row_helper.js
@@ -26,6 +26,8 @@ var addRowTo = (function() {
td = d.createElement("td");
if(rowtype[i] == 'textbox') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input size='" + rowsize[i] + "' class='formfld unknown' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> ";
+ } else if(rowtype[i] == 'password') {
+ td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input type='password' size='" + rowsize[i] + "' class='formfld pwd' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> ";
} else if(rowtype[i] == 'select') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><select size='1' name='" + rowname[i] + totalrows + "'><option value=\"32\" selected>32</option><option value=\"31\" >31</option><option value=\"30\" >30</option><option value=\"29\" >29</option><option value=\"28\" >28</option><option value=\"27\" >27</option><option value=\"26\" >26</option><option value=\"25\" >25</option><option value=\"24\" >24</option><option value=\"23\" >23</option><option value=\"22\" >22</option><option value=\"21\" >21</option><option value=\"20\" >20</option><option value=\"19\" >19</option><option value=\"18\" >18</option><option value=\"17\" >17</option><option value=\"16\" >16</option><option value=\"15\" >15</option><option value=\"14\" >14</option><option value=\"13\" >13</option><option value=\"12\" >12</option><option value=\"11\" >11</option><option value=\"10\" >10</option><option value=\"9\" >9</option><option value=\"8\" >8</option><option value=\"7\" >7</option><option value=\"6\" >6</option><option value=\"5\" >5</option><option value=\"4\" >4</option><option value=\"3\" >3</option><option value=\"2\" >2</option><option value=\"1\" >1</option></select> ";
} else if(rowtype[i] == 'select_source') {
diff --git a/usr/local/www/vpn_pppoe.php b/usr/local/www/vpn_pppoe.php
index 46e8c3e..8052466 100755
--- a/usr/local/www/vpn_pppoe.php
+++ b/usr/local/www/vpn_pppoe.php
@@ -1,21 +1,18 @@
<?php
/*
- vpn_pppoe.php
- part of pfSense
-
- Copyright (C) 2005 Scott Ullrich (sullrich@gmail.com)
+ Copyright (C) 2010 Ermal Luçi
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
@@ -27,6 +24,9 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
+/*
+ pfSense_MODULE: pppoe
+*/
##|+PRIV
##|*IDENT=page-services-pppoeserver
@@ -35,440 +35,120 @@
##|*MATCH=vpn_pppoe.php*
##|-PRIV
-require("guiconfig.inc");
+require_once("guiconfig.inc");
+require_once("filter.inc");
require_once("vpn.inc");
-if (!is_array($config['pppoe']['radius'])) {
- $config['pppoe']['radius'] = array();
-}
-$pppoecfg = &$config['pppoe'];
-
-$pconfig['remoteip'] = $pppoecfg['remoteip'];
-$pconfig['localip'] = $pppoecfg['localip'];
-$pconfig['mode'] = $pppoecfg['mode'];
-$pconfig['interface'] = $pppoecfg['interface'];
-$pconfig['n_pppoe_units'] = $pppoecfg['n_pppoe_units'];
-$pconfig['pppoe_subnet'] = $pppoecfg['pppoe_subnet'];
-$pconfig['pppoe_dns1'] = $pppoecfg['dns1'];
-$pconfig['pppoe_dns2'] = $pppoecfg['dns2'];
-$pconfig['radacct_enable'] = isset($pppoecfg['radius']['accounting']);
-$pconfig['radiusissueips'] = isset($pppoecfg['radius']['radiusissueips']);
-$pconfig['radiusenable'] = isset($pppoecfg['radius']['server']['enable']);
-$pconfig['radiusserver'] = $pppoecfg['radius']['server']['ip'];
-$pconfig['radiusserverport'] = $pppoecfg['radius']['server']['port'];
-$pconfig['radiusserveracctport'] = $pppoecfg['radius']['server']['acctport'];
-$pconfig['radiussecret'] = $pppoecfg['radius']['server']['secret'];
-$pconfig['radiussecenable'] = isset($pppoecfg['radius']['server2']['enable']);
-$pconfig['radiusserver2'] = $pppoecfg['radius']['server2']['ip'];
-$pconfig['radiusserver2port'] = $pppoecfg['radius']['server2']['port'];
-$pconfig['radiusserver2acctport'] = $pppoecfg['radius']['server2']['acctport'];
-$pconfig['radiussecret2'] = $pppoecfg['radius']['server2']['secret2'];
-$pconfig['radiusissueips'] = isset($pppoecfg['radius']['radiusissueips']);
-$pconfig['radius_nasip'] = $pppoecfg['radius']['nasip'];
-$pconfig['radius_acct_update'] = $pppoecfg['radius']['acct_update'];
+if (!is_array($config['pppoes']['pppoe']))
+ $config['pppoes']['pppoe'] = array();
+$a_pppoes = &$config['pppoes']['pppoe'];
if ($_POST) {
+ $pconfig = $_POST;
+
+ if ($_POST['apply']) {
+ if (file_exists("{$g['tmp_path']}/.vpn_pppoe.apply")) {
+ $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.vpn_pppoe.apply"));
+ foreach ($toapplylist as $pppoeid) {
+ if (!is_numeric($pppoeid))
+ continue;
+ if (is_array($config['pppoes']['pppoe'])) {
+ foreach ($config['pppoes']['pppoe'] as $pppoe) {
+ if ($pppoe['pppoeid'] == $pppoeid) {
+ vpn_pppoe_configure($pppoe);
+ break;
+ }
+ }
+ }
+ }
+ @unlink("{$g['tmp_path']}/.vpn_pppoe.apply");
+ }
+ $retval = 0;
+ $retval |= filter_configure();
+ $savemsg = get_std_save_message($retval);
+ clear_subsystem_dirty('vpnpppoe');
+ }
+}
- unset($input_errors);
- $pconfig = $_POST;
-
- /* input validation */
- if ($_POST['mode'] == "server") {
- $reqdfields = explode(" ", "localip remoteip");
- $reqdfieldsn = array(gettext("Server address"),gettext("Remote start address"));
-
- if ($_POST['radiusenable']) {
- $reqdfields = array_merge($reqdfields, explode(" ", "radiusserver radiussecret"));
- $reqdfieldsn = array_merge($reqdfieldsn,
- array(gettext("RADIUS server address"),gettext("RADIUS shared secret")));
- }
-
- do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
-
- if (($_POST['localip'] && !is_ipaddr($_POST['localip']))) {
- $input_errors[] = gettext("A valid server address must be specified.");
- }
- if (($_POST['pppoe_subnet'] && !is_ipaddr($_POST['remoteip']))) {
- $input_errors[] = gettext("A valid remote start address must be specified.");
- }
- if (($_POST['radiusserver'] && !is_ipaddr($_POST['radiusserver']))) {
- $input_errors[] = gettext("A valid RADIUS server address must be specified.");
- }
-
- if (!$input_errors) {
- $_POST['remoteip'] = $pconfig['remoteip'] = gen_subnet($_POST['remoteip'], $_POST['pppoe_subnet']);
- $subnet_start = ip2ulong($_POST['remoteip']);
- $subnet_end = ip2ulong($_POST['remoteip']) + $_POST['pppoe_subnet'] - 1;
-
- if ((ip2ulong($_POST['localip']) >= $subnet_start) &&
- (ip2ulong($_POST['localip']) <= $subnet_end)) {
- $input_errors[] = gettext("The specified server address lies in the remote subnet.");
- }
- if ($_POST['localip'] == get_interface_ip("lan")) {
- $input_errors[] = gettext("The specified server address is equal to the LAN interface address.");
- }
- }
- } else {
- /* turning pppoe off, lets dump any custom rules */
- $rules = &$config['filter']['rule'];
- for($x=0; $x<count($rules); $x++) {
- if($rules[$x]['interface'] == "pppoe") {
- unset($rules[$x]);
- }
- }
- unset($config['pppoe']);
- }
-
- if (!$input_errors) {
- $pppoecfg['remoteip'] = $_POST['remoteip'];
- $pppoecfg['localip'] = $_POST['localip'];
- $pppoecfg['mode'] = $_POST['mode'];
- $pppoecfg['interface'] = $_POST['interface'];
- $pppoecfg['n_pppoe_units'] = $_POST['n_pppoe_units'];
- $pppoecfg['pppoe_subnet'] = $_POST['pppoe_subnet'];
- $pppoecfg['radius']['server']['ip'] = $_POST['radiusserver'];
- $pppoecfg['radius']['server']['secret'] = $_POST['radiussecret'];
- $pppoecfg['radius']['server']['port'] = $_POST['radiusserverport'];
- $pppoecfg['radius']['server']['acctport'] = $_POST['radiusserveracctport'];
- $pppoecfg['radius']['server2']['ip'] = $_POST['radiusserver2'];
- $pppoecfg['radius']['server2']['secret2'] = $_POST['radiussecret2'];
- $pppoecfg['radius']['server2']['port'] = $_POST['radiusserver2port'];
- $pppoecfg['radius']['server2']['acctport'] = $_POST['radiusserver2acctport'];
- $pppoecfg['radius']['nasip'] = $_POST['radius_nasip'];
- $pppoecfg['radius']['acct_update'] = $_POST['radius_acct_update'];
-
- if ($_POST['pppoe_dns1'] == "")
- unset($pppoecfg['dns1']);
- else
- $pppoecfg['dns1'] = $_POST['pppoe_dns1'];
-
- if ($_POST['pppoe_dns2'] == "")
- unset($pppoecfg['dns2']);
- else
- $pppoecfg['dns2'] = $_POST['pppoe_dns2'];
-
- if($_POST['radiusenable'] == "yes")
- $pppoecfg['radius']['server']['enable'] = true;
- else
- unset($pppoecfg['radius']['server']['enable']);
-
- if($_POST['radiussecenable'] == "yes")
- $pppoecfg['radius']['server2']['enable'] = true;
- else
- unset($pppoecfg['radius']['server2']['enable']);
-
- if($_POST['radacct_enable'] == "yes")
- $pppoecfg['radius']['accounting'] = true;
- else
- unset($pppoecfg['radius']['accounting']);
-
- if($_POST['radiusissueips'] == "yes") {
- $pppoecfg['radius']['radiusissueips'] = true;
- } else
- unset($pppoecfg['radius']['radiusissueips']);
-
+if ($_GET['act'] == "del") {
+ if ($a_pppoes[$_GET['id']]) {
+ if ("{$g['varrun_path']}/pppoe" . $a_pppoes[$_GET['id']]['pppoeid'] . "-vpn.pid")
+ killbypid("{$g['varrun_path']}/pppoe" . $a_pppoes[$_GET['id']]['pppoeid'] . "-vpn.pid");
+ mwexec("/bin/rm -r {$g['varetc_path']}/pppoe" . $a_pppoes[$_GET['id']]['pppoeid']);
+ unset($a_pppoes[$_GET['id']]);
write_config();
-
- $retval = 0;
- $retval = vpn_pppoe_configure();
- $savemsg = get_std_save_message($retval);
+ header("Location: vpn_pppoe.php");
+ exit;
}
}
-$pgtitle = array(gettext("Services"),gettext("PPPoE Server"));
+$pgtitle = array(gettext("VPN"),gettext("PPPoE"));
include("head.inc");
?>
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
<?php include("fbegin.inc"); ?>
-<script language="JavaScript">
-<!--
-function get_radio_value(obj)
-{
- for (i = 0; i < obj.length; i++) {
- if (obj[i].checked)
- return obj[i].value;
- }
- return null;
-}
-
-function enable_change(enable_over) {
- if ((get_radio_value(document.iform.mode) == "server") || enable_over) {
- document.iform.remoteip.disabled = 0;
- document.iform.localip.disabled = 0;
- document.iform.radiusenable.disabled = 0;
- document.iform.interface.disabled = 0;
- document.iform.n_pppoe_units.disabled = 0;
- document.iform.pppoe_subnet.disabled = 0;
- document.iform.pppoe_dns1.disabled = 0;
- document.iform.pppoe_dns2.disabled = 0;
- if (document.iform.radiusenable.checked || enable_over) {
- document.iform.radacct_enable.disabled = 0;
- document.iform.radiusserver.disabled = 0;
- document.iform.radiussecret.disabled = 0;
- document.iform.radiusserverport.disabled = 0;
- document.iform.radiusserveracctport.disabled = 0;
- document.iform.radiusissueips.disabled = 0;
- document.iform.radius_nasip.disabled = 0;
- document.iform.radiusissueips.disabled = 0;
- document.iform.radius_nasip.disabled = 0;
- document.iform.radius_acct_update.disabled = 0;
- document.iform.radiussecenable.disabled = 0;
- if (document.iform.radiussecenable.checked || enable_over) {
- document.iform.radiusserver2.disabled = 0;
- document.iform.radiussecret2.disabled = 0;
- document.iform.radiusserver2port.disabled = 0;
- document.iform.radiusserver2acctport.disabled = 0;
- } else {
-
- document.iform.radiusserver2.disabled = 1;
- document.iform.radiussecret2.disabled = 1;
- document.iform.radiusserver2port.disabled = 1;
- document.iform.radiusserver2acctport.disabled = 1;
- }
- } else {
- document.iform.radacct_enable.disabled = 1;
- document.iform.radiusserver.disabled = 1;
- document.iform.radiussecret.disabled = 1;
- document.iform.radiusserverport.disabled = 1;
- document.iform.radiusserveracctport.disabled = 1;
- document.iform.radiusissueips.disabled = 1;
- document.iform.radius_nasip.disabled = 1;
- document.iform.radius_acct_update.disabled = 1;
- document.iform.radiussecenable.disabled = 1;
- }
- } else {
- document.iform.interface.disabled = 1;
- document.iform.n_pppoe_units.disabled = 1;
- document.iform.pppoe_subnet.disabled = 1;
- document.iform.remoteip.disabled = 1;
- document.iform.localip.disabled = 1;
- document.iform.pppoe_dns1.disabled = 1;
- document.iform.pppoe_dns2.disabled = 1;
- document.iform.radiusenable.disabled = 1;
- document.iform.radiussecenable.disabled = 1;
- document.iform.radacct_enable.disabled = 1;
- document.iform.radiusserver.disabled = 1;
- document.iform.radiussecret.disabled = 1;
- document.iform.radiusserverport.disabled = 1;
- document.iform.radiusserveracctport.disabled = 1;
- document.iform.radiusserver2.disabled = 1;
- document.iform.radiussecret2.disabled = 1;
- document.iform.radiusserver2port.disabled = 1;
- document.iform.radiusserver2acctport.disabled = 1;
- document.iform.radiusissueips.disabled = 1;
- document.iform.radius_nasip.disabled = 1;
- document.iform.radius_acct_update.disabled = 1;
- }
-}
-//-->
-</script>
-<form action="vpn_pppoe.php" method="post" name="iform" id="iform">
-<?php if ($input_errors) print_input_errors($input_errors); ?>
+<form action="vpn_pppoe.php" method="post">
<?php if ($savemsg) print_info_box($savemsg); ?>
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr><td class="tabnavtbl">
-<?php
- $tab_array = array();
- $tab_array[0] = array(gettext("Configuration"), true, "vpn_pppoe.php");
- $tab_array[1] = array(gettext("Users"), false, "vpn_pppoe_users.php");
- display_top_tabs($tab_array);
-?>
- </td></tr>
- <tr>
- <td>
- <div id="mainarea">
- <table class="tabcont" width="100%" border="0" cellpadding="6" cellspacing="0">
- <tr>
- <td width="22%" valign="top" class="vtable">&nbsp;</td>
- <td width="78%" class="vtable">
- <input name="mode" type="radio" onclick="enable_change(false)" value="off"
- <?php if (($pconfig['mode'] != "server") && ($pconfig['mode'] != "redir")) echo "checked";?>>
- <?=gettext("Off"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vtable">&nbsp;</td>
- <td width="78%" class="vtable">
- <input type="radio" name="mode" value="server" onclick="enable_change(false)" <?php if ($pconfig['mode'] == "server") echo "checked"; ?>>
- <?=gettext("Enable PPPoE server"); ?></td>
- </tr>
-
- <tr>
- <td width="22%" valign="top" class="vncell"><b><?=gettext("Interface"); ?></b></td>
- <td width="78%" valign="top" class="vtable">
-
- <select name="interface" class="formselect" id="interface">
- <?php
- $interfaces = get_configured_interface_with_descr();
-
- foreach ($interfaces as $iface => $ifacename):
- ?>
- <option value="<?=$iface;?>" <?php if ($iface == $pconfig['interface']) echo "selected"; ?>>
- <?=htmlspecialchars($ifacename);?>
- </option>
- <?php endforeach; ?>
- </select> <br>
-
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Subnet netmask"); ?></td>
- <td width="78%" class="vtable">
- <select id="pppoe_subnet" name="pppoe_subnet">
- <?php
- for($x=0; $x<33; $x++) {
- if($x == $pconfig['pppoe_subnet'])
- $SELECTED = " SELECTED";
- else
- $SELECTED = "";
- echo "<option value=\"{$x}\"{$SELECTED}>{$x}</option>\n";
- }
- ?>
- </select>
- <br><?=gettext("Hint"); ?>: 24 <?=gettext("is"); ?> 255.255.255.0
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("No. PPPoE users"); ?></td>
- <td width="78%" class="vtable">
- <select id="n_pppoe_units" name="n_pppoe_units">
- <?php
- for($x=0; $x<255; $x++) {
- if($x == $pconfig['n_pppoe_units'])
- $SELECTED = " SELECTED";
- else
- $SELECTED = "";
- echo "<option value=\"{$x}\"{$SELECTED}>{$x}</option>\n";
- }
- ?>
- </select>
- <br><?=gettext("Hint: 10 is ten PPPoE clients"); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Server address"); ?></td>
- <td width="78%" class="vtable">
- <?=$mandfldhtml;?><input name="localip" type="text" class="formfld unknown" id="localip" size="20" value="<?=htmlspecialchars($pconfig['localip']);?>">
- <br>
- <?=gettext("Enter the IP address the PPPoE server should use on its side " .
- "for all clients"); ?>.</td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Remote address range"); ?></td>
- <td width="78%" class="vtable">
- <?=$mandfldhtml;?><input name="remoteip" type="text" class="formfld unknown" id="remoteip" size="20" value="<?=htmlspecialchars($pconfig['remoteip']);?>">
- <br>
- <?=gettext("Specify the starting address for the client IP address subnet"); ?>.<br>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("DNS servers"); ?></td>
- <td width="78%" class="vtable">
- <?=$mandfldhtml;?><input name="pppoe_dns1" type="text" class="formfld unknown" id="pppoe_dns1" size="20" value="<?=htmlspecialchars($pconfig['pppoe_dns1']);?>">
- <br>
- <input name="pppoe_dns2" type="text" class="formfld unknown" id="pppoe_dns2" size="20" value="<?=htmlspecialchars($pconfig['pppoe_dns2']);?>">
- <br>
- <?=gettext("If entered they will be given to all PPPoE clients, else LAN DNS and one WAN DNS will go to all clients"); ?><br>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS"); ?></td>
- <td width="78%" class="vtable">
- <input name="radiusenable" type="checkbox" id="radiusenable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radiusenable']) echo "checked"; ?>>
- <strong><?=gettext("Use a RADIUS server for authentication"); ?><br>
- </strong><?=gettext("When set, all users will be authenticated using " .
- "the RADIUS server specified below. The local user database " .
- "will not be used"); ?>.<br>
- <br>
- <input name="radacct_enable" type="checkbox" id="radacct_enable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radacct_enable']) echo "checked"; ?>>
- <strong><?=gettext("Enable RADIUS accounting"); ?> <br>
- <br>
- </strong><?=gettext("Sends accounting packets to the RADIUS server"); ?>.<br>
- <input name="radiussecenable" type="checkbox" id="radiussecenable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radiussecenable']) echo "checked"; ?>>
- <strong><?=gettext("Use Backup RADIUS Server"); ?></strong><br>
- <?=gettext("When set, if primary server fails all requests will be sent via backup server"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("NAS IP Address"); ?></td>
- <td width="78%" class="vtable">
- <?=$mandfldhtml;?><input name="radius_nasip" type="text" class="formfld unknown" id="radius_nasip" size="20" value="<?=htmlspecialchars($pconfig['radius_nasip']);?>">
- <br><?=gettext("RADIUS server NAS IP Address"); ?><br>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("RADIUS Accounting Update"); ?></td>
- <td width="78%" class="vtable">
- <?=$mandfldhtml;?><input name="radius_acct_update" type="text" class="formfld unknown" id="radius_acct_update" size="20" value="<?=htmlspecialchars($pconfig['radius_acct_update']);?>">
- <br><?=gettext("RADIUS accounting update period in seconds"); ?>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS issued IPs"); ?></td>
- <td width="78%" valign="top" class="vtable">
- <input name="radiusissueips" value="yes" type="checkbox" class="formfld" id="radiusissueips"<?php if($pconfig['radiusissueips']) echo " CHECKED"; ?>>
- <br><?=gettext("Issue IP Addresses via RADIUS server"); ?>.</td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS server Primary"); ?></td>
- <td width="78%" class="vtable">
- <input name="radiusserver" type="text" class="formfld unknown" id="radiusserver" size="20" value="<?=htmlspecialchars($pconfig['radiusserver']);?>">
- <input name="radiusserverport" type="text" class="formfld unknown" id="radiusserverport" size="4" value="<?=htmlspecialchars($pconfig['radiusserverport']);?>">
- <input name="radiusserveracctport" type="text" class="formfld unknown" id="radiusserveracctport" size="4" value="<?=htmlspecialchars($pconfig['radiusserveracctport']);?>">
- <br><?=gettext("Enter the IP address, authentication port and accounting port (optional) of the RADIUS server."); ?><br>
- <br> <?=gettext("standard port 1812 and 1813 accounting"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS primary shared secret"); ?></td>
- <td width="78%" valign="top" class="vtable">
- <input name="radiussecret" type="password" class="formfld pwd" id="radiussecret" size="20" value="<?=htmlspecialchars($pconfig['radiussecret']);?>">
- <br><?=gettext("Enter the shared secret that will be used to authenticate " .
- "to the RADIUS server"); ?>.</td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS server Secondary"); ?></td>
- <td width="78%" class="vtable">
- <input name="radiusserver2" type="text" class="formfld unknown" id="radiusserver2" size="20" value="<?=htmlspecialchars($pconfig['radiusserver2']);?>">
- <input name="radiusserver2port" type="text" class="formfld unknown" id="radiusserver2port" size="4" value="<?=htmlspecialchars($pconfig['radiusserver2port']);?>">
- <input name="radiusserver2acctport" type="text" class="formfld unknown" id="radiusserver2acctport" size="4" value="<?=htmlspecialchars($pconfig['radiusserver2acctport']);?>">
- <br><?=gettext("Enter the IP address, authentication port and accounting port (optional) of the backup RADIUS server."); ?><br>
- <br> <?=gettext("standard port 1812 and 1813 accounting"); ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS secondary shared secret"); ?></td>
- <td width="78%" valign="top" class="vtable">
- <input name="radiussecret2" type="password" class="formfld pwd" id="radiussecret2" size="20" value="<?=htmlspecialchars($pconfig['radiussecret2']);?>">
- <br>
- <?=gettext("Enter the shared secret that will be used to authenticate " .
- "to the RADIUS server"); ?>.</td>
- </tr>
- <tr>
- <td height="16" colspan="2" valign="top"></td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>" onclick="enable_change(true)">
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%"><span class="vexpl"><span class="red"><strong><?=gettext("Note"); ?>:<br>
- </strong></span><?=gettext("don't forget to add a firewall rule to permit " .
- "traffic from PPPoE clients"); ?>!</span></td>
- </tr>
- </table>
- </div>
- </td>
- </tr>
+<?php if (is_subsystem_dirty('vpnpppoe')): ?><p>
+<?php print_info_box_np(gettext("The PPPoE entry list has been changed") . ".<br>" . gettext("You must apply the changes in order for them to take effect."));?>
+<?php endif; ?>
+
+<table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr>
+ <td width="15%" class="listhdrr"><?=gettext("Interface");?></td>
+ <td width="10%" class="listhdrr"><?=gettext("Local ip");?></td>
+ <td width="25%" class="listhdrr"><?=gettext("Number of users");?></td>
+ <td width="25%" class="listhdr"><?=gettext("Description");?></td>
+ <td width="5%" class="list">
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td valign="middle" width="17">&nbsp;</td>
+ <td valign="middle"><a href="vpn_pppoe_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add a new pppoe instance");?>"></a></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <?php $i = 0; foreach ($a_pppoes as $pppoe): ?>
+<tr>
+ <td class="listlr" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';">
+ <?=htmlspecialchars(strtoupper($pppoe['interface']));?>
+ </td>
+ <td class="listlr" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';">
+ <?=htmlspecialchars($pppoe['localip']);?>
+ </td>
+ <td class="listr" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';">
+ <?=htmlspecialchars($pppoe['n_pppoe_units']);?>
+ </td>
+ <td class="listbg" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';">
+ <?=htmlspecialchars($pppoe['descr']);?>&nbsp;
+ </td>
+ <td valign="middle" nowrap class="list">
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td valign="middle"><a href="vpn_pppoe_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="<?=gettext("edit pppoe instance"); ?>"></a></td>
+ <td><a href="vpn_pppoe.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this entry? All elements that still use it will become invalid (e.g. filter rules)!");?>')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete pppoe instance");?>"></a></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <?php $i++; endforeach; ?>
+<tr>
+ <td class="list" colspan="4"></td>
+ <td class="list">
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td valign="middle" width="17">&nbsp;</td>
+ <td valign="middle"><a href="vpn_pppoe_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add a new pppoe instance");?>"></a></td>
+ </td>
+ </tr>
+ </table>
+ </td>
+</tr>
</table>
</form>
-<script language="JavaScript">
-<!--
-enable_change(false);
-//-->
-</script>
<?php include("fend.inc"); ?>
</body>
</html>
diff --git a/usr/local/www/vpn_pppoe_users.php b/usr/local/www/vpn_pppoe_users.php
deleted file mode 100755
index f9395e5..0000000
--- a/usr/local/www/vpn_pppoe_users.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-/*
- vpn_pppoe_users.php
- part of pfSense
-
- Copyright (C) 2005 Scott Ullrich (sullrich@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.
-*/
-
-##|+PRIV
-##|*IDENT=page-services-pppoeserver-users
-##|*NAME=Services: PPPoE Server: Users page
-##|*DESCR=Allow access to the 'Services: PPPoE Server: Users' page.
-##|*MATCH=vpn_pppoe_users.php*
-##|-PRIV
-
-require("guiconfig.inc");
-require_once("vpn.inc");
-
-if (!is_array($config['pppoe']['user'])) {
- $config['pppoe']['user'] = array();
-}
-$a_secret = &$config['pppoe']['user'];
-
-if ($_POST) {
-
- $pconfig = $_POST;
-
- if ($_POST['apply']) {
- $retval = 0;
- $retval = vpn_setup();
- $savemsg = get_std_save_message($retval);
- if ($retval == 0) {
- if (is_subsystem_dirty('pppoeusers'))
- clear_subsystem_dirty('pppoeusers');
- }
- }
-}
-
-if ($_GET['act'] == "del") {
- if ($a_secret[$_GET['id']]) {
- unset($a_secret[$_GET['id']]);
- write_config();
- mark_subsystem_dirty('pppoeusers');
- header("Location: vpn_pppoe_users.php");
- exit;
- }
-}
-
-$pgtitle = array(gettext("Services"),gettext("PPPoE Server"),gettext("Users"));
-include("head.inc");
-
-?>
-
-<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
-<?php include("fbegin.inc"); ?>
-<form action="vpn_pppoe_users.php" method="post">
-<?php if ($savemsg) print_info_box($savemsg); ?>
-<?php if (isset($config['pppoe']['radius']['enable']))
- print_info_box(gettext("Warning: RADIUS is enabled. The local user database will not be used.")); ?>
-<?php if (is_subsystem_dirty('pppoeusers')): ?><p>
-<?php print_info_box_np(gettext("The PPPoE user list has been modified") . ".<br>" . gettext("You must apply the changes in order for them to take effect") . ".<br><b>" . gettext("Warning: this will terminate all current PPPoE sessions") . "!</b>");?><br>
-<?php endif; ?>
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr><td class="tabnavtbl">
-<?php
- $tab_array = array();
- $tab_array[0] = array(gettext("Configuration"), false, "vpn_pppoe.php");
- $tab_array[1] = array(gettext("Users"), true, "vpn_pppoe_users.php");
- display_top_tabs($tab_array);
-?> </td></tr>
- <tr>
- <td>
- <div id="mainarea">
- <table class="tabcont" width="100%" border="0" cellpadding="6" cellspacing="0">
- <tr>
- <td class="listhdrr"><?=gettext("Username"); ?></td>
- <td class="listhdr"><?=gettext("IP address"); ?></td>
- <td class="list">
- <table border="0" cellspacing="0" cellpadding="1">
- <tr>
- <td width="17"></td>
- <td><a href="vpn_pppoe_users_edit.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add user"); ?>" width="17" height="17" border="0"></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <?php $i = 0; foreach ($a_secret as $secretent): ?>
- <tr>
- <td class="listlr">
- <?=htmlspecialchars($secretent['name']);?>
- </td>
- <td class="listr">
- <?php if($secretent['ip'] == "") $secretent['ip'] = "Dynamic"; ?>
- <?=htmlspecialchars($secretent['ip']);?>&nbsp;
- </td>
- <td class="list" nowrap> <a href="vpn_pppoe_users_edit.php?id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" title="<?=gettext("edit user"); ?>" width="17" height="17" border="0"></a>
- &nbsp;<a href="vpn_pppoe_users.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this user?"); ?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" title="<?=gettext("delete user"); ?>" width="17" height="17" border="0"></a></td>
- </tr>
- <?php $i++; endforeach; ?>
- <tr>
- <td class="list" colspan="2"></td>
- <td class="list">
- <table border="0" cellspacing="0" cellpadding="1">
- <tr>
- <td width="17"></td>
- <td><a href="vpn_pppoe_users_edit.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add user"); ?>" width="17" height="17" border="0"></a></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</div>
- </td>
- </tr>
-</table>
-</form>
-<?php include("fend.inc"); ?>
-</body>
-</html>
-
-
diff --git a/usr/local/www/vpn_pppoe_users_edit.php b/usr/local/www/vpn_pppoe_users_edit.php
deleted file mode 100755
index 6c15d35..0000000
--- a/usr/local/www/vpn_pppoe_users_edit.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/*
- vpn_pppoe_users_edit.php
- part of pfSense
-
- Copyright (C) 2005 Scott Ullrich (sullrich@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.
-*/
-
-##|+PRIV
-##|*IDENT=page-services-pppoeserver-user-edit
-##|*NAME=Services: PPPoE Server: User: Edit page
-##|*DESCR=Allow access to the 'Services: PPPoE Server: User: Edit' page.
-##|*MATCH=vpn_pppoe_users_edit.php*
-##|-PRIV
-
-function pppoeusercmp($a, $b) {
- return strcasecmp($a['name'], $b['name']);
-}
-
-function pppoe_users_sort() {
- global $config;
-
- if (!is_array($config['pppoe']['user']))
- return;
-
- usort($config['pppoe']['user'], "pppoeusercmp");
-}
-
-require("guiconfig.inc");
-require_once("vpn.inc");
-
-if (!is_array($config['pppoe']['user'])) {
- $config['pppoe']['user'] = array();
-}
-$a_secret = &$config['pppoe']['user'];
-
-$id = $_GET['id'];
-if (isset($_POST['id']))
- $id = $_POST['id'];
-
-if (isset($id) && $a_secret[$id]) {
- $pconfig['username'] = $a_secret[$id]['name'];
- $pconfig['ip'] = $a_secret[$id]['ip'];
-}
-
-if ($_POST) {
-
- unset($input_errors);
- $pconfig = $_POST;
-
- /* input validation */
- if (isset($id) && ($a_secret[$id])) {
- $reqdfields = explode(" ", "username");
- $reqdfieldsn = array(gettext("Username"));
- } else {
- $reqdfields = explode(" ", "username password");
- $reqdfieldsn = array(gettext("Username"),gettext("Password"));
- }
-
- do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
-
- if (preg_match("/[^a-zA-Z0-9\.\-\@_]/", $_POST['username']))
- $input_errors[] = gettext("The username contains invalid characters.");
-
- if (preg_match("/[^a-zA-Z0-9\.\-_]/", $_POST['password']))
- $input_errors[] = gettext("The password contains invalid characters.");
-
- if (($_POST['password']) && ($_POST['password'] != $_POST['password2'])) {
- $input_errors[] = gettext("The passwords do not match.");
- }
- if (($_POST['ip'] && !is_ipaddr($_POST['ip']))) {
- $input_errors[] = gettext("The IP address entered is not valid.");
- }
-
- if (!$input_errors && !(isset($id) && $a_secret[$id])) {
- /* make sure there are no dupes */
- foreach ($a_secret as $secretent) {
- if ($secretent['name'] == $_POST['username']) {
- $input_errors[] = gettext("Another entry with the same username already exists.");
- break;
- }
- }
- }
-
- if (!$input_errors) {
-
- if (isset($id) && $a_secret[$id])
- $secretent = $a_secret[$id];
-
- $secretent['name'] = $_POST['username'];
- $secretent['ip'] = $_POST['ip'];
-
- if ($_POST['password'])
- $secretent['password'] = $_POST['password'];
-
- if (isset($id) && $a_secret[$id])
- $a_secret[$id] = $secretent;
- else
- $a_secret[] = $secretent;
- pppoe_users_sort();
-
- write_config();
-
- $retval = vpn_setup();
-
- header("Location: vpn_pppoe_users.php");
- exit;
- }
-}
-
-$pgtitle = array(gettext("Services"),gettext("PPPoE Server"),gettext("User"),gettext("Edit"));
-include("head.inc");
-
-?>
-<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
-<?php include("fbegin.inc"); ?>
-<?php if ($input_errors) print_input_errors($input_errors); ?>
- <form action="vpn_pppoe_users_edit.php" method="post" name="iform" id="iform">
- <div id="mainarea">
- <table width="100%" border="0" cellpadding="6" cellspacing="0">
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Username"); ?></td>
- <td width="78%" class="vtable">
- <?=$mandfldhtml;?><input name="username" type="text" class="formfld user" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>">
- </td>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Password"); ?></td>
- <td width="78%" class="vtable">
- <?=$mandfldhtml;?><input name="password" type="password" class="formfld pwd" id="password" size="20">
- <br><?=$mandfldhtml;?><input name="password2" type="password" class="formfld pwd" id="password2" size="20">
- &nbsp;(<?=gettext("confirmation"); ?>)<?php if (isset($id) && $a_secret[$id]): ?><br>
- <span class="vexpl"><?=gettext("If you want to change the users' password, " .
- "enter it here twice"); ?>.</span><?php endif; ?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("IP address"); ?></td>
- <td width="78%" class="vtable">
- <input name="ip" type="text" class="formfld unknown" id="ip" size="20" value="<?=htmlspecialchars($pconfig['ip']);?>">
- <br><span class="vexpl"><?=gettext("If you want the user to be assigned a specific IP address, enter it here"); ?>.</span></td>
- </tr>
- <tr>
- <td class="vncell" width="22%" valign="top">&nbsp;</td>
- <td class="vncell" width="78%">
- <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>">
- <?php if (isset($id) && $a_secret[$id]): ?>
- <input name="id" type="hidden" value="<?=$id;?>">
- <?php endif; ?>
- </td>
- </tr>
- </table>
- </div>
-</form>
-<?php include("fend.inc"); ?>
-</body>
-</html>
-
-
OpenPOWER on IntegriCloud