aboutsummaryrefslogtreecommitdiffstats
path: root/config/pfstat.xml
diff options
context:
space:
mode:
Diffstat (limited to 'config/pfstat.xml')
-rw-r--r--config/pfstat.xml324
1 files changed, 324 insertions, 0 deletions
diff --git a/config/pfstat.xml b/config/pfstat.xml
new file mode 100644
index 00000000..29d52bc2
--- /dev/null
+++ b/config/pfstat.xml
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE packagegui SYSTEM "./schema/packages.dtd">
+<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
+<packagegui>
+ <copyright>
+ <![CDATA[
+/* $Id$ */
+/* ========================================================================== */
+/*
+ authng.xml
+ part of pfSense (http://www.pfSense.com)
+ Copyright (C) 2007 to whom it may belong
+ All rights reserved.
+
+ Based on m0n0wall (http://m0n0.ch/wall)
+ Copyright (C) 2003-2006 Manuel Kasper <mk@neon1.net>.
+ 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.
+ */
+/* ========================================================================== */
+ ]]>
+ </copyright>
+ <description>Describe your package here</description>
+ <requirements>Describe your package requirements here</requirements>
+ <faq>Currently there are no FAQ items provided.</faq>
+ <name>pfstat</name>
+ <version>1.7</version>
+ <title>Services: PFStat Settings</title>
+ <!-- Menu is where this packages menu will appear -->
+ <menu>
+ <name>PFStat Settings</name>
+ <tooltiptext>pfstat is a small utility that collects packet filter statistics and produces graphs.</tooltiptext>
+ <section>Services</section>
+ <configfile>pfstat.xml</configfile>
+ </menu>
+ <menu>
+ <name>PFStat Graphs</name>
+ <tooltiptext>pfstat is a small utility that collects packet filter statistics and produces graphs.</tooltiptext>
+ <section>Status</section>
+ <url>/pfstat.php</url>
+ </menu>
+ <modify_system>
+ <modifyitem>
+ <modifyfilename>/etc/crontab</modifyfilename>
+ <textneeded>
+*/5 * * * * root nice -n 20 /usr/local/bin/pfstat -q >> /var/log/pfstat
+ </textneeded>
+ </modifyitem>
+ <modifyitem>
+ <modifyfilename>/etc/crontab</modifyfilename>
+ <textneeded>
+*/10 * * * * root nice -n 20 /usr/local/bin/pfstat -c /usr/local/etc/pfstat.conf -d /var/log/pfstat
+ </textneeded>
+ </modifyitem>
+ <modifyitem>
+ <modifyfilename>/etc/crontab</modifyfilename>
+ <textneeded>
+1 1 * * 1 root nice -n 20 tail -n 50000 /var/log/pfstat >/tmp/pfstat &amp;&amp; mv /tmp/pfstat /var/log/pfstat
+ </textneeded>
+ </modifyitem>
+ </modify_system>
+ <!-- configpath gets expanded out automatically and config items will be
+ stored in that location -->
+ <configpath>['installedpackages']['pfstat']['config']</configpath>
+ <adddeleteeditpagefields>
+ <columnitem>
+ <fielddescr>Graph Name</fielddescr>
+ <fieldname>graphname</fieldname>
+ </columnitem>
+ <columnitem>
+ <fielddescr>Description</fielddescr>
+ <fieldname>description</fieldname>
+ </columnitem>
+ </adddeleteeditpagefields>
+
+ <additional_files_needed>
+ <prefix>/usr/local/www/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.com/packages/config/pfstat.php</item>
+ </additional_files_needed>
+ <!-- modify system will modify a file and make sure the text needed to run the
+ package is in place. The following example edits /etc/crontab and adds the
+ code necessart to invoke the pfstat command every 5 minutes. -->
+ <!-- adddeleteeditpagefields items will appear on the first page where you can add / delete or edit
+ items. An example of this would be the nat page where you add new nat redirects -->
+ <!-- fields gets invoked when the user adds or edits a item. the following items
+ will be parsed and rendered for the user as a gui with input, and selectboxes. -->
+ <fields>
+ <field>
+ <fielddescr>Graph Name</fielddescr>
+ <fieldname>graphname</fieldname>
+ <description>Enter the name of the graph here</description>
+ <type>input</type>
+ </field>
+ <field>
+ <fielddescr>Graph Description</fielddescr>
+ <fieldname>description</fieldname>
+ <description>Enter the description of the graph here</description>
+ <type>input</type>
+ </field>
+ <field>
+ <fielddescr>Image Name</fielddescr>
+ <fieldname>imagename</fieldname>
+ <description>Enter the filename for this image. Must end in .jpg. ex. filename.jpg</description>
+ <type>input</type>
+ </field>
+ <field>
+ <fielddescr>Graph Size Width</fielddescr>
+ <fieldname>graphsizewidth</fieldname>
+ <description>Graph width in pixels. Recommend 960 for large images, 320 for small images.</description>
+ <type>input</type>
+ </field>
+ <field>
+ <fielddescr>Graph Size Height</fielddescr>
+ <fieldname>graphsizeheight</fieldname>
+ <description>Graph height in pixels. Recommend 300 for large images, 200 for small images.</description>
+ <type>input</type>
+ </field>
+ <field>
+ <fielddescr>Update interval</fielddescr>
+ <fieldname>from</fieldname>
+ <description></description>
+ <type>input</type>
+ <size>1</size>
+ <value>1</value>
+ <combinefieldsbegin>true</combinefieldsbegin>
+ </field>
+ <field>
+ <fielddescr>Update interval duration</fielddescr>
+ <fieldname>fromclassification</fieldname>
+ <description></description>
+ <type>select</type>
+ <options>
+ <option><name>Minutes</name><value>minutes</value></option>
+ <option><name>Hours</name><value>hours</value></option>
+ <option><name>Days</name><value>days</value></option>
+ <option><name>Weeks</name><value>weeks</value></option>
+ <option><name>Months</name><value>months</value></option>
+ </options>
+ <combinefieldsend>true</combinefieldsend>
+ <dontdisplayname>true</dontdisplayname>
+ <dontcombinecells>true</dontcombinecells>
+ </field>
+ <field>
+ <fielddescr>none</fielddescr>
+ <fieldname>none</fieldname>
+ <type>rowhelper</type>
+ <rowhelper>
+ <rowhelperfield>
+ <fielddescr>Location</fielddescr>
+ <fieldname>location</fieldname>
+ <description>Location of graph</description>
+ <type>select</type>
+ <options>
+ <option><name>Left</name><value>left</value></option>
+ <option><name>Right</name><value>right</value></option>
+ </options>
+ </rowhelperfield>
+ <rowhelperfield>
+ <fielddescr>Graph Source</fielddescr>
+ <fieldname>counters</fieldname>
+ <description></description>
+ <type>select</type>
+ <options>
+ <option><name>Bytes in (IPv4)</name><value>bytes_v4_in</value></option>
+ <option><name>Bytes out (IPv4)</name><value>bytes_v4_out</value></option>
+ <option><name>Bytes in (IPv6)</name><value>bytes_v6_in</value></option>
+ <option><name>Bytes out (IPv6)</name><value>bytes_v6_out</value></option>
+ <option><name>Packets in passed (IPv4)</name><value>packets_v4_in_pass</value></option>
+ <option><name>Packets in dropped (IPv4)</name><value>packets_v4_in_drop</value></option>
+ <option><name>Packets out passed (IPv4)</name><value>packets_v4_out_pass</value></option>
+ <option><name>Packets out dropped (IPv4)</name><value>packets_v4_out_drop</value></option>
+ <option><name>Packets in passed (IPv6)</name><value>packets_v6_in_pass</value></option>
+ <option><name>Packets in dropped (IPv6)</name><value>packets_v6_in_drop</value></option>
+ <option><name>Packets out passed (IPv6)</name><value>packets_v6_out_pass</value></option>
+ <option><name>Packets out dropped (IPv6)</name><value>packets_v6_out_drop</value></option>
+ <option><name>State table entries</name><value>states_entries</value></option>
+ <option><name>State searches</name><value>states_searches</value></option>
+ <option><name>State Table Insertions</name><value>states_inserts</value></option>
+ <option><name>State Table Removals</name><value>states_removals</value></option>
+ <option><name>Match Counter</name><value>counters_match</value></option>
+ <option><name>Bad Offset Counter</name><value>counters_badoffset</value></option>
+ <option><name>Fragment Counter</name><value>counters_fragment</value></option>
+ <option><name>Short Counter</name><value>counters_short</value></option>
+ <option><name>Normalize Counter</name><value>counters_normalize</value></option>
+ <option><name>Memory Counter</name><value>counters_memory</value></option>
+ </options>
+ </rowhelperfield>
+ <rowhelperfield>
+ <fielddescr>Color</fielddescr>
+ <fieldname>color</fieldname>
+ <description>Color of graph</description>
+ <type>select</type>
+ <options>
+ <option><name>Light Hard Azure</name><value>51 153 255</value></option>
+ <option><name>Light Faded Blue</name><value>102 102 255</value></option>
+ <option><name>Blue</name><value>0 0 255</value></option>
+ <option><name>Dark Dull Red</name><value>153 51 51</value></option>
+ <option><name>Pale Weak Red</name><value>255 204 204</value></option>
+ <option><name>Red</name><value>255 204 204</value></option>
+ <option><name>Pale Weak Red</name><value>255 0 0</value></option>
+ <option><name>Light Hard Pink</name><value>255 51 153</value></option>
+ <option><name>Dark Dull Pink</name><value>153 51 102</value></option>
+ <option><name>Light Faded Red</name><value>255 102 102</value></option>
+ <option><name>Pale Weak Green</name><value>204 255 204</value></option>
+ <option><name>Green</name><value>0 255 0</value></option>
+ <option><name>Pale Weak Yellow</name><value>255 255 204</value></option>
+ <option><name>Yellow</name><value>125 125 0</value></option>
+ <option><name>Purple</name><value>72 00 190</value></option>
+ <option><name>Pale Weak Magenta</name><value>255 204 255</value></option>
+ <option><name>Pale Weak Cyan</name><value>204 255 255</value></option>
+ <option><name>Cyan</name><value>00 120 120</value></option>
+ <option><name>Dark Dull Cyan</name><value>51 153 153</value></option>
+ <option><name>Orange</name><value>255 255 0</value></option>
+ <option><name>Dark Dull Orange</name><value>153 102 51</value></option>
+ <option><name>Pale Dull Orange</name><value>255 204 153</value></option>
+ <option><name>Grey</name><value>125 125 125</value></option>
+ <option><name>Pale Gray</name><value>204 204 204</value></option>
+ <option><name>Black</name><value>0 0 0</value></option>
+ </options>
+ </rowhelperfield>
+ <rowhelperfield>
+ <fielddescr>Appearance</fielddescr>
+ <fieldname>appearance</fieldname>
+ <description>Appearance type</description>
+ <type>select</type>
+ <options>
+ <option><name>Filled</name><value>filled</value></option>
+ <option><name>Unfilled</name><value></value></option>
+ </options>
+ </rowhelperfield>
+ </rowhelper>
+ </field>
+ </fields>
+ <custom_php_global_functions>
+ function sync_package_pfstat() {
+ conf_mount_rw();
+ config_lock();
+ global $config;
+ $fout = fopen("/usr/local/etc/pfstat.conf","w");
+ if($config['installedpackages']['pfstat']['config'] != "") {
+ foreach($config['installedpackages']['pfstat']['config'] as $rowhelper) {
+ $leftgraphtext = "";
+ $rightgraphtext = "";
+ $isfirstleft = 0;
+ $isfirstright = 0;
+ $fromclassification = $rowhelper['fromclassification'];
+ $imagename = $rowhelper['imagename'];
+ $pos = strrpos($imagename, ".jpg");
+ if ($pos === false) {
+ $imagename .= ".jpg";
+ }
+ $from = $rowhelper['from'];
+ $graphsizewidth = $rowhelper['graphsizewidth'];
+ $graphsizeheight = $rowhelper['graphsizeheight'];
+ foreach($rowhelper['row'] as $row) {
+ if($row['location'] == "left") {
+ if($isfirstleft == 1) $leftgraphtext .= ",\n";
+ $leftgraphtext .= "graph " . $row['counters'] . " label \"" . $row['counters'] . "\" color " . $row['color'] . " " . $row['appearance'];
+ $isfirstleft = 1;
+ } else {
+ if($isfirstright == 1) $rightgraphtext .= ",\n";
+ $rightgraphtext .= "graph " . $row['counters'] . " label \"" . $row['counters'] . "\" color " . $row['color'] . " " . $row['appearance'];
+ $isfirstright = 1;
+ }
+ }
+ fwrite($fout, "image \"/usr/local/www/pfstat/" . $imagename ."\" { \n");
+ if($from == "") $from = "30";
+ fwrite($fout, "from " . $from . " " . $fromclassification . " to now \n");
+ fwrite($fout, "width " . $graphsizewidth . " height " . $graphsizeheight . " \n");
+ if($leftgraphtext != "") {
+ fwrite($fout, " left \n");
+ fwrite($fout, " " . $leftgraphtext . "\n");
+ }
+ if($rightgraphtext != "") {
+ fwrite($fout, " right \n");
+ fwrite($fout, " " . $rightgraphtext . "\n");
+ }
+ fwrite($fout, "}\n\n");
+ }
+ }
+ fclose($fout);
+ conf_mount_ro();
+ config_unlock();
+ }
+ </custom_php_global_functions>
+ <custom_php_command_before_form>
+ sync_package_pfstat();
+ </custom_php_command_before_form>
+ <custom_php_resync_config_command>
+ sync_package_pfstat();
+ </custom_php_resync_config_command>
+ <custom_php_install_command>
+ make_dirs("/usr/local/www/pfstat");
+ system("/usr/bin/killall cron 2>/dev/null");
+ system("/usr/sbin/cron 2>/dev/null");
+ </custom_php_install_command>
+ <custom_php_deinstall_command>
+ unlink_if_exists("/usr/local/etc/pfstat");
+ rmdir_recursive("/usr/local/www/pfstat");
+ </custom_php_deinstall_command>
+</packagegui>