#!/usr/local/bin/php * part of m0n0wall (http://m0n0.ch/wall) * * 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. * * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgment: * "This product includes software developed by the pfSense Project * for use in the pfSense software distribution. (http://www.pfsense.org/). * * 4. The names "pfSense" and "pfSense Project" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * coreteam@pfsense.org. * * 5. Products derived from this software may not be called "pfSense" * nor may "pfSense" appear in their names without prior written * permission of the Electric Sheep Fencing, LLC. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * * "This product includes software developed by the pfSense Project * for use in the pfSense software distribution (http://www.pfsense.org/). * * THIS SOFTWARE IS PROVIDED BY THE pfSense PROJECT ``AS IS'' AND ANY * EXPRESSED 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 pfSense PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * ==================================================================== * */ /* pfSense_BUILDER_BINARIES: /usr/sbin/fifolog_reader /usr/local/sbin/clog pfSense_MODULE: vpn */ ##|+PRIV ##|*IDENT=page-diagnostics-logs-pptpvpn ##|*NAME=Diagnostics: Logs: VPN page ##|*DESCR=Allow access to the 'Diagnostics: Logs: VPN' page. ##|*MATCH=diag_logs_vpn.php* ##|-PRIV $vpns = array('pptp' => 'PPTP', 'poes' => 'PPPoE', 'l2tp' => 'L2TP'); $pgtitle = array(gettext("Status"), gettext("System logs"), gettext("VPN")); require("guiconfig.inc"); require_once("vpn.inc"); $nentries = $config['syslog']['nentries']; if (!$nentries) { $nentries = 50; } if (htmlspecialchars($_POST['vpntype'])) { $vpntype = htmlspecialchars($_POST['vpntype']); } elseif (htmlspecialchars($_GET['vpntype'])) { $vpntype = htmlspecialchars($_GET['vpntype']); } else { $vpntype = "pptp"; } if (htmlspecialchars($_POST['mode'])) { $mode = htmlspecialchars($_POST['mode']); } elseif (htmlspecialchars($_GET['mode'])) { $mode = htmlspecialchars($_GET['mode']); } else { $mode = "login"; } switch ($vpntype) { case 'pptp': $logname = "pptps"; break; case 'poes': $logname = "poes"; break; case 'l2tp': $logname = "l2tps"; break; } if ($_POST['clear']) { if ($mode != "raw") { clear_log_file("/var/log/vpn.log"); } else { clear_log_file("/var/log/{$logname}.log"); } } function dump_clog_vpn($logfile, $tail) { global $g, $config, $vpntype; $sor = isset($config['syslog']['reverse']) ? "-r" : ""; $logarr = ""; if (isset($config['system']['usefifolog'])) { exec("/usr/sbin/fifolog_reader " . escapeshellarg($logfile) . " | tail {$sor} -n " . $tail, $logarr); } else { exec("/usr/local/sbin/clog " . escapeshellarg($logfile) . " | tail {$sor} -n " . $tail, $logarr); } $rows = 0; foreach ($logarr as $logent) { $logent = preg_split("/\s+/", $logent, 6); $llent = explode(",", $logent[5]); $iftype = substr($llent[1], 0, 4); if ($iftype != $vpntype) { continue; } echo "
=gettext("Time")?> | =gettext("Action")?> | =gettext("User")?> | =gettext("IP address")?> |
---|---|---|---|