.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
##|+PRIV
##|*IDENT=page-diagnostics-logs-pptpvpn
##|*NAME=Status: Logs: VPN
##|*DESCR=Allow access to the 'Status: Logs: VPN' page.
##|*MATCH=status_logs_vpn.php*
##|-PRIV
require_once("status_logs_common.inc");
require_once("vpn.inc");
/*
Build a list of allowed log files so we can reject others to prevent the page
from acting on unauthorized files.
*/
$allowed_logs = array(
"vpn" => array("name" => gettext("VPN Logins"),
"shortcut" => "poes"),
"poes" => array("name" => gettext("PPPoE Service"),
"shortcut" => "pppoes"),
"l2tps" => array("name" => gettext("L2TP Service"),
"shortcut" => "l2tps"),
);
// The logs to display are specified in a GET argument. Default to 'system' logs
if (!$_GET['logfile']) {
$logfile = 'vpn';
$vpntype = "poes";
} else {
$logfile = $_GET['logfile'];
$vpntype = $_GET['vpntype'];
if (!array_key_exists($logfile, $allowed_logs)) {
/* Do not let someone attempt to load an unauthorized log. */
$logfile = 'vpn';
$vpntype = "poes";
}
}
if ($vpntype == 'poes') { $allowed_logs['vpn']['name'] = gettext("PPPoE Logins"); }
if ($vpntype == 'l2tp') { $allowed_logs['vpn']['name'] = gettext("L2TP Logins"); }
// Log Filter Submit - VPN
log_filter_form_vpn_submit();
// Manage Log Section - Code
manage_log_code();
// Status Logs Common - Code
status_logs_common_code();
if ($filtertext) {
$filtertextmeta="?filtertext=$filtertext";
}
$pgtitle = array(gettext("Status"), gettext("System Logs"), gettext("VPN"), gettext($allowed_logs[$logfile]["name"]));
$pglinks = array("", "status_logs.php", "status_logs_vpn.php", "@self");
include("head.inc");
if (!$input_errors && $savemsg) {
print_info_box($savemsg, 'success');
$manage_log_active = false;
}
// Tab Array
tab_array_logs_common();
// Manage Log - Section/Form
if ($system_logs_manage_log_form_hidden) {
manage_log_section();
}
// Filter Section/Form - VPN
filter_form_vpn();
// Now the forms are complete we can draw the log table and its controls
if (!$rawfilter) {
system_log_filter();
// Remove those not of the selected vpn type (poes / l2tp).
if ($logfile == "vpn") {
foreach ($filterlog as $key => $filterent) {
if (!preg_match('/' . $vpntype . '/', $filterent['type'])) {
unset($filterlog[$key]);
}
}
}
?>
=gettext("Time")?> |
=gettext("Action")?> |
=gettext("User")?> |
=gettext("IP Address")?> |
=htmlspecialchars($filterent['time'])?>
|
=htmlspecialchars($filterent['action'])?>
|
=htmlspecialchars($filterent['user'])?>
|
=htmlspecialchars($filterent['ip_address'])?>
|
=gettext("Time")?> |
=gettext("Type")?> |
=gettext("PID")?> |
=gettext("Log Message")?> |
=htmlspecialchars($filterent['time'])?>
|
=htmlspecialchars($filterent['type'])?>
|
=htmlspecialchars($filterent['pid'])?>
|
=htmlspecialchars($filterent['message'])?>
|
\n";
echo "" . htmlspecialchars(join(" ", array_slice($logent, 0, 3))) . " | \n";
if ($llent[0] == "login") {
echo " | \n";
} else {
echo " | \n";
}
echo "" . htmlspecialchars($llent[3]) . " | \n";
echo "" . htmlspecialchars($llent[2]) . " | \n";
echo "\n";
}
return($rows);
}
// Log Filter Submit - VPN
function log_filter_form_vpn_submit() {
global $filtersubmit, $interfacefilter, $filtertext;
global $filterlogentries_submit, $filterfieldsarray, $actpass, $actblock;
global $filter_active, $filterlogentries_qty;
$filtersubmit = getGETPOSTsettingvalue('filtersubmit', null);
if ($filtersubmit) {
$filter_active = true;
$filtertext = getGETPOSTsettingvalue('filtertext', "");
$filterlogentries_qty = getGETPOSTsettingvalue('filterlogentries_qty', null);
}
$filterlogentries_submit = getGETPOSTsettingvalue('filterlogentries_submit', null);
if ($filterlogentries_submit) {
$filter_active = true;
$filterfieldsarray = array();
$filterfieldsarray['time'] = getGETPOSTsettingvalue('filterlogentries_time', null);
$filterfieldsarray['type'] = getGETPOSTsettingvalue('filterlogentries_type', null);
$filterfieldsarray['pid'] = getGETPOSTsettingvalue('filterlogentries_pid', null);
$filterfieldsarray['message'] = getGETPOSTsettingvalue('filterlogentries_message', null);
$filterfieldsarray['action'] = getGETPOSTsettingvalue('filterlogentries_action', null);
$filterfieldsarray['user'] = getGETPOSTsettingvalue('filterlogentries_user', null);
$filterfieldsarray['ip_address'] = getGETPOSTsettingvalue('filterlogentries_ip_address', null);
$filterlogentries_qty = getGETPOSTsettingvalue('filterlogentries_qty', null);
}
}
// Filter Section/Form - VPN
function filter_form_vpn() {
global $filter_active, $rawfilter, $filterfieldsarray, $filtertext, $filterlogentries_qty, $nentries, $Include_Act, $interfacefilter;
global $logfile;
global $system_logs_filter_form_hidden;
if ($filter_active) {
$panel_state = 'in';
$panel_body_state = SEC_OPEN;
} else {
if ($system_logs_filter_form_hidden) {
$panel_state = 'out';
$panel_body_state = SEC_OPEN;
} else {
$panel_state = 'in';
$panel_body_state = SEC_CLOSED;
}
}
if (!$rawfilter) { // Advanced log filter form
$form = new Form(false);
$form->setAttribute('id', 'filter-form')->addClass('collapse ' . $panel_state);
$section = new Form_Section('Advanced Log Filter', 'filter-panel', COLLAPSIBLE|$panel_body_state);
if ($logfile == "vpn") {
$group = new Form_Group('');
$group->add(new Form_Input(
'filterlogentries_time',
null,
'text',
$filterfieldsarray['time']
))->setWidth(3)->setHelp('Time');
$group->add(new Form_Input(
'filterlogentries_action',
null,
'text',
$filterfieldsarray['action']
))->setWidth(3)->setHelp('Action');
$group->add(new Form_Input(
'filterlogentries_qty',
null,
'number',
$filterlogentries_qty,
['placeholder' => $nentries]
))->setWidth(2)->setHelp('Quantity');
$section->add($group);
$group = new Form_Group('');
$group->add(new Form_Input(
'filterlogentries_user',
null,
'text',
$filterfieldsarray['user']
))->setWidth(3)->setHelp('User');
$group->add(new Form_Input(
'filterlogentries_ip_address',
null,
'text',
$filterfieldsarray['ip_address']
))->setWidth(4)->setHelp('IP Address');
} else {
$group = new Form_Group('');
$group->add(new Form_Input(
'filterlogentries_time',
null,
'text',
$filterfieldsarray['time']
))->setWidth(3)->setHelp('Time');
$group->add(new Form_Input(
'filterlogentries_type',
null,
'text',
$filterfieldsarray['type']
))->setWidth(2)->setHelp('Type');
$group->add(new Form_Input(
'filterlogentries_pid',
null,
'text',
$filterfieldsarray['pid']
))->setWidth(2)->setHelp('PID');
$group->add(new Form_Input(
'filterlogentries_qty',
null,
'number',
$filterlogentries_qty,
['placeholder' => $nentries]
))->setWidth(2)->setHelp('Quantity');
$section->add($group);
$group = new Form_Group('');
$group->add(new Form_Input(
'filterlogentries_message',
null,
'text',
$filterfieldsarray['message']
))->setWidth(7)->setHelp('Log Message');
}
$btnsubmit = new Form_Button(
'filterlogentries_submit',
gettext('Apply Filter'),
null,
'fa-filter'
);
} else { // Simple log filter form
$form = new Form(false);
$form->setAttribute('id', 'filter-form')->addClass('collapse ' . $panel_state);
$section = new Form_Section('Log Filter', 'filter-panel', COLLAPSIBLE|$panel_body_state);
$group = new Form_Group('');
$group->add(new Form_Input(
'filtertext',
null,
'text',
$filtertext
))->setWidth(6)->setHelp('Filter Expression');
$group->add(new Form_Input(
'filterlogentries_qty',
null,
'number',
$filterlogentries_qty,
['placeholder' => $nentries]
))->setWidth(2)->setHelp('Quantity');
$btnsubmit = new Form_Button(
'filtersubmit',
gettext('Apply Filter'),
null,
'fa-filter'
);
}
$btnsubmit->removeClass('btn-primary')->addClass('btn-success')->addClass('btn-sm');
$group->add(new Form_StaticText(
'',
$btnsubmit
));
$group->setHelp('' . gettext('Regular expression reference') . ' ' . gettext('Precede with exclamation (!) to exclude match.'));
$section->add($group);
$form->add($section);
print $form;
}
?>