From c9d46a8e801650dccea466f86c81df3fa626713c Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Tue, 15 Sep 2015 17:45:00 -0300 Subject: Retire PPTP server, fixes #4226: - Remove PPTP server and all related code - Bump config version 12.2 - Write upgrade config code to remove pptpd section and also cleanup firewall and NAT rules using PPTP interface or src/des --- src/usr/local/www/diag_backup.php | 3 +- src/usr/local/www/diag_logs_filter.php | 3 - src/usr/local/www/diag_logs_vpn.php | 15 +- src/usr/local/www/firewall_nat_1to1_edit.php | 10 - src/usr/local/www/firewall_nat_edit.php | 12 +- src/usr/local/www/firewall_nat_npt_edit.php | 6 +- src/usr/local/www/firewall_nat_out_edit.php | 6 +- src/usr/local/www/firewall_rules.php | 8 +- src/usr/local/www/firewall_rules_edit.php | 5 - src/usr/local/www/guiconfig.inc | 2 +- src/usr/local/www/vpn_pptp.php | 509 --------------------------- src/usr/local/www/vpn_pptp_users.php | 147 -------- src/usr/local/www/vpn_pptp_users_edit.php | 189 ---------- 13 files changed, 9 insertions(+), 906 deletions(-) delete mode 100644 src/usr/local/www/vpn_pptp.php delete mode 100644 src/usr/local/www/vpn_pptp_users.php delete mode 100644 src/usr/local/www/vpn_pptp_users_edit.php (limited to 'src/usr/local') diff --git a/src/usr/local/www/diag_backup.php b/src/usr/local/www/diag_backup.php index 943d57d..cc93b5c 100644 --- a/src/usr/local/www/diag_backup.php +++ b/src/usr/local/www/diag_backup.php @@ -579,7 +579,6 @@ function build_area_list($showall) { "nat" => gettext("NAT"), "openvpn" => gettext("OpenVPN"), "installedpackages" => gettext("Package Manager"), - "pptpd" => gettext("PPTP Server"), "rrddata" => gettext("RRD Data"), "cron" => gettext("Scheduled Tasks"), "syslog" => gettext("Syslog"), @@ -777,4 +776,4 @@ include("foot.inc"); if (is_subsystem_dirty('restore')) { system_reboot(); -} \ No newline at end of file +} diff --git a/src/usr/local/www/diag_logs_filter.php b/src/usr/local/www/diag_logs_filter.php index d43f3a9..5f31998 100644 --- a/src/usr/local/www/diag_logs_filter.php +++ b/src/usr/local/www/diag_logs_filter.php @@ -168,9 +168,6 @@ function build_if_list() { if ($config['l2tp']['mode'] == "server") $interfaces['l2tp'] = "L2TP VPN"; - if ($config['pptpd']['mode'] == "server") - $interfaces['pptp'] = "PPTP VPN"; - if (is_pppoe_server_enabled() && have_ruleint_access("pppoe")) $interfaces['pppoe'] = "PPPoE Server"; diff --git a/src/usr/local/www/diag_logs_vpn.php b/src/usr/local/www/diag_logs_vpn.php index 6429a0c..4394080 100755 --- a/src/usr/local/www/diag_logs_vpn.php +++ b/src/usr/local/www/diag_logs_vpn.php @@ -69,7 +69,7 @@ ##|-PRIV -$vpns = array('pptp' => 'PPTP', 'poes' => 'PPPoE', 'l2tp' => 'L2TP'); +$vpns = array('poes' => 'PPPoE', 'l2tp' => 'L2TP'); $pgtitle = array(gettext("Status"), gettext("System logs"), gettext("VPN")); require("guiconfig.inc"); @@ -85,7 +85,7 @@ if (htmlspecialchars($_POST['vpntype'])) { } elseif (htmlspecialchars($_GET['vpntype'])) { $vpntype = htmlspecialchars($_GET['vpntype']); } else { - $vpntype = "pptp"; + $vpntype = "poes"; } if (htmlspecialchars($_POST['mode'])) { $mode = htmlspecialchars($_POST['mode']); @@ -95,9 +95,6 @@ if (htmlspecialchars($_POST['mode'])) { $mode = "login"; } switch ($vpntype) { - case 'pptp': - $logname = "pptps"; - break; case 'poes': $logname = "poes"; break; @@ -168,12 +165,6 @@ $tab_array[] = array(gettext("Settings"), false, "diag_logs_settings.php"); display_top_tabs($tab_array); $tab_array = array(); -$tab_array[] = array(gettext("PPTP Logins"), - (($vpntype == "pptp") && ($mode != "raw")), - "/diag_logs_vpn.php?vpntype=pptp"); -$tab_array[] = array(gettext("PPTP Raw"), - (($vpntype == "pptp") && ($mode == "raw")), - "/diag_logs_vpn.php?vpntype=pptp&mode=raw"); $tab_array[] = array(gettext("PPPoE Logins"), (($vpntype == "poes") && ($mode != "raw")), "/diag_logs_vpn.php?vpntype=poes"); @@ -239,4 +230,4 @@ display_top_tabs($tab_array, false, 'nav nav-tabs');

- 'Any', 'single' => 'Single host or alias', 'network' => 'Network', '(self)' => 'This Firewall (self)'); - if (have_ruleint_access("pptp")) - $list['pptp'] = 'PPTP clients'; - if (have_ruleint_access("pppoe")) $list['pppoe'] = 'PPPoE clients'; @@ -409,10 +403,6 @@ if ($config['l2tp']['mode'] == "server") if (have_ruleint_access("l2tp")) $interfaces['l2tp'] = "L2TP VPN"; -if ($config['pptpd']['mode'] == "server") - if (have_ruleint_access("pptp")) - $interfaces['pptp'] = "PPTP VPN"; - if (is_pppoe_server_enabled() && have_ruleint_access("pppoe")) $interfaces['pppoe'] = "PPPoE Server"; diff --git a/src/usr/local/www/firewall_nat_edit.php b/src/usr/local/www/firewall_nat_edit.php index 7b63ff6..e2c90f7 100644 --- a/src/usr/local/www/firewall_nat_edit.php +++ b/src/usr/local/www/firewall_nat_edit.php @@ -534,9 +534,6 @@ function build_srctype_list() { $sel = is_specialnet($pconfig['src']); - if (have_ruleint_access("pptp")) - $list['pptp'] = 'PPTP clients'; - if (have_ruleint_access("pppoe")) $list['pppoe'] = 'PPPoE clients'; @@ -559,9 +556,6 @@ function build_dsttype_list() { $sel = is_specialnet($pconfig['dst']); $list = array('any' => 'Any', 'single' => 'Single host or alias', 'network' => 'Network', '(self)' => 'This Firewall (self)'); - if (have_ruleint_access("pptp")) - $list['pptp'] = 'PPTP clients'; - if (have_ruleint_access("pppoe")) $list['pppoe'] = 'PPPoE clients'; @@ -669,10 +663,6 @@ if ($config['l2tp']['mode'] == "server") if (have_ruleint_access("l2tp")) $interfaces['l2tp'] = "L2TP VPN"; -if ($config['pptpd']['mode'] == "server") - if (have_ruleint_access("pptp")) - $interfaces['pptp'] = "PPTP VPN"; - if (is_pppoe_server_enabled() && have_ruleint_access("pppoe")) $interfaces['pppoe'] = "PPPoE Server"; @@ -1265,4 +1255,4 @@ events.push(function(){ //]]> -add($section); print($form); -include("foot.inc"); \ No newline at end of file +include("foot.inc"); diff --git a/src/usr/local/www/firewall_nat_out_edit.php b/src/usr/local/www/firewall_nat_out_edit.php index 7b149db..74c0aed 100644 --- a/src/usr/local/www/firewall_nat_out_edit.php +++ b/src/usr/local/www/firewall_nat_out_edit.php @@ -472,10 +472,6 @@ if ($config['l2tp']['mode'] == "server") if (have_ruleint_access("l2tp")) $interfaces['l2tp'] = "L2TP VPN"; -if ($config['pptpd']['mode'] == "server") - if (have_ruleint_access("pptp")) - $interfaces['pptp'] = "PPTP VPN"; - if (is_pppoe_server_enabled() && have_ruleint_access("pppoe")) $interfaces['pppoe'] = "PPPoE Server"; @@ -857,4 +853,4 @@ events.push(function(){ //]]> - - \ No newline at end of file + diff --git a/src/usr/local/www/firewall_rules_edit.php b/src/usr/local/www/firewall_rules_edit.php index 1630395..c32a226 100644 --- a/src/usr/local/www/firewall_rules_edit.php +++ b/src/usr/local/www/firewall_rules_edit.php @@ -1132,9 +1132,6 @@ foreach (get_configured_interface_with_descr() as $ifent => $ifdesc) if ($config['l2tp']['mode'] == "server" && have_ruleint_access("l2tp")) $interfaces['l2tp'] = 'L2TP VPN'; -if ($config['pptpd']['mode'] == "server" && have_ruleint_access("pptp")) - $interfaces['pptp'] = 'PPTP VPN'; - if (is_pppoe_server_enabled() && have_ruleint_access("pppoe")) $interfaces['pppoe'] = "PPPoE Server"; @@ -1256,8 +1253,6 @@ foreach (['src' => 'Source', 'dst' => 'Destination'] as $type => $name) { ); if (isset($a_filter[$id]['floating']) || $if == "FloatingRules") $ruleValues['(self)'] = 'This Firewall (self)'; - if (have_ruleint_access("pptp")) - $ruleValues['pptp'] = 'PPTP clients'; if (have_ruleint_access("pppoe")) $ruleValues['pppoe'] = 'PPPoE clients'; if (have_ruleint_access("l2tp")) diff --git a/src/usr/local/www/guiconfig.inc b/src/usr/local/www/guiconfig.inc index 5bd0882..9c7b14b 100644 --- a/src/usr/local/www/guiconfig.inc +++ b/src/usr/local/www/guiconfig.inc @@ -256,7 +256,7 @@ $wkports = array( /* TCP flags */ $tcpflags = array("fin", "syn", "rst", "psh", "ack", "urg", "ece", "cwr"); -$specialnets = array("(self)" => "This Firewall", "pptp" => "PPTP clients", "pppoe" => "PPPoE clients", "l2tp" => "L2TP clients"); +$specialnets = array("(self)" => "This Firewall", "pppoe" => "PPPoE clients", "l2tp" => "L2TP clients"); $spiflist = get_configured_interface_with_descr(false, true); foreach ($spiflist as $ifgui => $ifdesc) { diff --git a/src/usr/local/www/vpn_pptp.php b/src/usr/local/www/vpn_pptp.php deleted file mode 100644 index fc918b4..0000000 --- a/src/usr/local/www/vpn_pptp.php +++ /dev/null @@ -1,509 +0,0 @@ -. - Copyright (C) 2013-2015 Electric Sheep Fencing, LP - 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-vpn-vpnpptp -##|*NAME=VPN: VPN PPTP page -##|*DESCR=Allow access to the 'VPN: VPN PPTP' page. -##|*MATCH=vpn_pptp.php* -##|-PRIV - -require("guiconfig.inc"); -require_once("functions.inc"); -require_once("filter.inc"); -require_once("shaper.inc"); -require_once("vpn.inc"); - -if (!is_array($config['pptpd']['radius'])) { - $config['pptpd']['radius'] = array(); -} -$pptpcfg = &$config['pptpd']; - -$pconfig['remoteip'] = $pptpcfg['remoteip']; -$pconfig['localip'] = $pptpcfg['localip']; -$pconfig['redir'] = $pptpcfg['redir']; -$pconfig['mode'] = $pptpcfg['mode']; -$pconfig['wins'] = $pptpcfg['wins']; -$pconfig['req128'] = isset($pptpcfg['req128']); -$pconfig['n_pptp_units'] = $pptpcfg['n_pptp_units']; -$pconfig['pptp_dns1'] = $pptpcfg['dns1']; -$pconfig['pptp_dns2'] = $pptpcfg['dns2']; -$pconfig['radiusenable'] = isset($pptpcfg['radius']['server']['enable']); -$pconfig['radiusissueips'] = isset($pptpcfg['radius']['radiusissueips']); -$pconfig['radiussecenable'] = isset($pptpcfg['radius']['server2']['enable']); -$pconfig['radacct_enable'] = isset($pptpcfg['radius']['accounting']); -$pconfig['radiusserver'] = $pptpcfg['radius']['server']['ip']; -$pconfig['radiusserverport'] = $pptpcfg['radius']['server']['port']; -$pconfig['radiusserveracctport'] = $pptpcfg['radius']['server']['acctport']; -$pconfig['radiussecret'] = $pptpcfg['radius']['server']['secret']; -$pconfig['radiusserver2'] = $pptpcfg['radius']['server2']['ip']; -$pconfig['radiusserver2port'] = $pptpcfg['radius']['server2']['port']; -$pconfig['radiusserver2acctport'] = $pptpcfg['radius']['server2']['acctport']; -$pconfig['radiussecret2'] = $pptpcfg['radius']['server2']['secret2']; -$pconfig['radius_acct_update'] = $pptpcfg['radius']['acct_update']; -$pconfig['radius_nasip'] = $pptpcfg['radius']['nasip']; - -if ($_POST) { - - if (isset($input_errors)) - 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 (is_ipaddr_configured($_POST['localip'])) { - $input_errors[] = gettext("'Server address' parameter should NOT be set to any IP address currently in use on this firewall."); - } - if (!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) { - $subnet_start = ip2ulong($_POST['remoteip']); - $subnet_end = ip2ulong($_POST['remoteip']) + $_POST['n_pptp_units'] - 1; - - if ((ip2ulong($_POST['localip']) >= $subnet_start) && - (ip2ulong($_POST['localip']) <= $subnet_end)) { - $input_errors[] = gettext("The specified server address lies in the remote subnet."); - } - // TODO: Should this check be for any local IP address? - if ($_POST['localip'] == $config['interfaces']['lan']['ipaddr']) { - $input_errors[] = gettext("The specified server address is equal to the LAN interface address."); - } - } - } else if ($_POST['mode'] == "redir") { - $reqdfields = explode(" ", "redir"); - $reqdfieldsn = array(gettext("PPTP redirection target address")); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); - - if (($_POST['redir'] && !is_ipaddr($_POST['redir']))) { - $input_errors[] = gettext("A valid target address must be specified."); - } - } else if (isset($config['pptpd']['mode'])) { - unset($config['pptpd']['mode']); - } - - if (!$input_errors) { - $pptpcfg['remoteip'] = $_POST['remoteip']; - $pptpcfg['redir'] = $_POST['redir']; - $pptpcfg['localip'] = $_POST['localip']; - $pptpcfg['mode'] = $_POST['mode']; - $pptpcfg['wins'] = $_POST['wins']; - $pptpcfg['n_pptp_units'] = $_POST['n_pptp_units']; - $pptpcfg['radius']['server']['ip'] = $_POST['radiusserver']; - $pptpcfg['radius']['server']['port'] = $_POST['radiusserverport']; - $pptpcfg['radius']['server']['acctport'] = $_POST['radiusserveracctport']; - $pptpcfg['radius']['server']['secret'] = $_POST['radiussecret']; - $pptpcfg['radius']['server2']['ip'] = $_POST['radiusserver2']; - $pptpcfg['radius']['server2']['port'] = $_POST['radiusserver2port']; - $pptpcfg['radius']['server2']['acctport'] = $_POST['radiusserver2acctport']; - $pptpcfg['radius']['server2']['secret2'] = $_POST['radiussecret2']; - $pptpcfg['radius']['nasip'] = $_POST['radius_nasip']; - $pptpcfg['radius']['acct_update'] = $_POST['radius_acct_update']; - - if ($_POST['pptp_dns1'] == "") { - if (isset($pptpcfg['dns1'])) - unset($pptpcfg['dns1']); - } else - $pptpcfg['dns1'] = $_POST['pptp_dns1']; - - if ($_POST['pptp_dns2'] == "") { - if (isset($pptpcfg['dns2'])) - unset($pptpcfg['dns2']); - } else - $pptpcfg['dns2'] = $_POST['pptp_dns2']; - - if($_POST['req128'] == "yes") - $pptpcfg['req128'] = true; - else if (isset($pptpcfg['req128'])) - unset($pptpcfg['req128']); - - if($_POST['radiusenable'] == "yes") - $pptpcfg['radius']['server']['enable'] = true; - else if (isset($pptpcfg['radius']['server']['enable'])) - unset($pptpcfg['radius']['server']['enable']); - - if($_POST['radiussecenable'] == "yes") - $pptpcfg['radius']['server2']['enable'] = true; - else if (isset($pptpcfg['radius']['server2']['enable'])) - unset($pptpcfg['radius']['server2']['enable']); - - if($_POST['radacct_enable'] == "yes") - $pptpcfg['radius']['accounting'] = true; - else if (isset($pptpcfg['radius']['accounting'])) - unset($pptpcfg['radius']['accounting']); - - if($_POST['radiusissueips'] == "yes") { - $pptpcfg['radius']['radiusissueips'] = true; - } else if (isset($pptpcfg['radius']['radiusissueips'])) - unset($pptpcfg['radius']['radiusissueips']); - - write_config(); - - $retval = 0; - $retval = vpn_pptpd_configure(); - $savemsg = get_std_save_message($retval); - - filter_configure(); - } -} - -$pgtitle = array(gettext("VPN"),gettext("VPN PPTP")); -$shortcut_section = "pptps"; -include("head.inc"); - -?> - - - - -
- - -
Read More")); ?> - - - - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - /> -
  - - /> - :
- -
- .
  - /> -
- -
-
- -
- . -
- . -
-
- .
- -
- .
-
- -
- -
-
-
- -
- /> -
- .
-
- /> -
-
.
-
- /> -
-
-
- /> - -
. -
- -
- -
- - - -
- .
- -
- .
- - - -
- .
- -
- .
  - /> -
- .
  - " onclick="enable_change(true)" /> -
 :
-
!
-
-
-
- - - - diff --git a/src/usr/local/www/vpn_pptp_users.php b/src/usr/local/www/vpn_pptp_users.php deleted file mode 100644 index da62e6a..0000000 --- a/src/usr/local/www/vpn_pptp_users.php +++ /dev/null @@ -1,147 +0,0 @@ -. - Copyright (C) 2013-2015 Electric Sheep Fencing, LP - 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-vpn-vpnpptp-users -##|*NAME=VPN: VPN PPTP: Users page -##|*DESCR=Allow access to the 'VPN: VPN PPTP: Users' page. -##|*MATCH=vpn_pptp_users.php* -##|-PRIV - -require("guiconfig.inc"); -require_once("vpn.inc"); - -if (!is_array($config['pptpd']['user'])) { - $config['pptpd']['user'] = array(); -} -$a_secret = &$config['pptpd']['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('pptpusers')) - clear_subsystem_dirty('pptpusers'); - } - } -} - -if ($_GET['act'] == "del") { - if ($a_secret[$_GET['id']]) { - unset($a_secret[$_GET['id']]); - write_config(); - mark_subsystem_dirty('pptpusers'); - header("Location: vpn_pptp_users.php"); - exit; - } -} - -$pgtitle = array(gettext("VPN"),gettext("VPN PPTP"),gettext("Users")); -$shortcut_section = "pptps"; -include("head.inc"); - -?> - - - -
- - -
-".gettext("You must apply the changes in order for them to take effect").".
".gettext("Warning: this will terminate all current PPTP sessions")."!");?>
- - - - - - -
-
- -
- - - - diff --git a/src/usr/local/www/vpn_pptp_users_edit.php b/src/usr/local/www/vpn_pptp_users_edit.php deleted file mode 100644 index 5c5d787..0000000 --- a/src/usr/local/www/vpn_pptp_users_edit.php +++ /dev/null @@ -1,189 +0,0 @@ -. - Copyright (C) 2013-2015 Electric Sheep Fencing, LP - 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-vpn-vpnpptp-user-edit -##|*NAME=VPN: VPN PPTP: User: Edit page -##|*DESCR=Allow access to the 'VPN: VPN PPTP: User: Edit' page. -##|*MATCH=vpn_pptp_users_edit.php* -##|-PRIV - -function pptpusercmp($a, $b) { - return strcasecmp($a['name'], $b['name']); -} - -function pptpd_users_sort() { - global $config; - - if (!is_array($config['ppptpd']['user'])) - return; - - usort($config['pptpd']['user'], "pptpusercmp"); -} - -require("guiconfig.inc"); -require_once("vpn.inc"); - -if (!is_array($config['pptpd']['user'])) { - $config['pptpd']['user'] = array(); -} -$a_secret = &$config['pptpd']['user']; - -if (is_numericint($_GET['id'])) - $id = $_GET['id']; -if (isset($_POST['id']) && is_numericint($_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 passwordfld1"); - $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("/^!/", $_POST['passwordfld1'])) - $input_errors[] = gettext("The password cannot start with '!'."); - - if (!preg_match("/^[\x20-\x7E]*$/", $_POST['passwordfld1'])) - $input_errors[] = gettext("The password contains invalid characters."); - - if (($_POST['passwordfld1']) && ($_POST['passwordfld1'] != $_POST['passwordfld2'])) { - $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['passwordfld1']) - $secretent['password'] = $_POST['passwordfld1']; - - if (isset($id) && $a_secret[$id]) - $a_secret[$id] = $secretent; - else - $a_secret[] = $secretent; - pptpd_users_sort(); - - write_config(); - mark_subsystem_dirty('pptpusers'); - - header("Location: vpn_pptp_users.php"); - exit; - } -} - -$pgtitle = array(gettext("VPN"),gettext("VPN PPTP"),gettext("User"),gettext("Edit")); -$shortcut_section = "pptps"; -include("head.inc"); - -?> - - - -
-
- - - - - - - - - - - - - - - - - -
- -
- -
-  ()
-
- -
  - " /> - - - -
-
-
- - - -- cgit v1.1