From e0c80e78f616b11c327188e8908731d85eb199fe Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sun, 19 Jan 2014 23:05:35 -0500 Subject: Declare $config as global to fix problems on pkg install. --- config/snort/snort_check_for_rule_updates.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/snort/snort_check_for_rule_updates.php b/config/snort/snort_check_for_rule_updates.php index 807b7844..0306c90d 100755 --- a/config/snort/snort_check_for_rule_updates.php +++ b/config/snort/snort_check_for_rule_updates.php @@ -34,7 +34,7 @@ require_once("functions.inc"); require_once("service-utils.inc"); require_once "/usr/local/pkg/snort/snort.inc"; -global $g, $pkg_interface, $snort_gui_include, $rebuild_rules; +global $g, $config, $pkg_interface, $snort_gui_include, $rebuild_rules; if (!defined("VRT_DNLD_URL")) define("VRT_DNLD_URL", "https://www.snort.org/reg-rules/"); -- cgit v1.2.3 From 19016394152847b136ca0a1c02f498fa04ddba51 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sun, 19 Jan 2014 23:06:54 -0500 Subject: Tidy up syntax to match other include file calls. --- config/snort/snort_post_install.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/snort/snort_post_install.php b/config/snort/snort_post_install.php index 003628be..bfb7bb9c 100644 --- a/config/snort/snort_post_install.php +++ b/config/snort/snort_post_install.php @@ -1409,7 +1409,7 @@ if ($config['installedpackages']['snortglobal']['forcekeepsettings'] == 'on') { update_output_window(gettext("Please wait... downloading and updating configured rule types...")); if ($pkg_interface <> "console") $snort_gui_include = true; - include "/usr/local/pkg/snort/snort_check_for_rule_updates.php"; + include("/usr/local/pkg/snort/snort_check_for_rule_updates.php"); update_status(gettext("Generating snort.conf configuration file from saved settings...")); $rebuild_rules = true; -- cgit v1.2.3 From 9a33bc918c1078402479101249b770ebc7e64d6b Mon Sep 17 00:00:00 2001 From: Stephane Lapie Date: Mon, 20 Jan 2014 16:03:33 +0900 Subject: Separate CAs for client certs and server cert chain - Modified the VirtualHost screen to make more clear the difference between "server certificate chain" and "client certification authority" - Modified configuration generation accordingly with proper options (SSLCertificateChainFile for server cert chain, SSLCACertificateFile for client certificates) according to Apache documentation --- config/apache_mod_security-dev/apache_mod_security.inc | 9 +++++++-- config/apache_mod_security-dev/apache_virtualhost.xml | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/config/apache_mod_security-dev/apache_mod_security.inc b/config/apache_mod_security-dev/apache_mod_security.inc index 31be95cf..2728e2e9 100644 --- a/config/apache_mod_security-dev/apache_mod_security.inc +++ b/config/apache_mod_security-dev/apache_mod_security.inc @@ -569,9 +569,14 @@ EOF; $vh_config.= " SSLCertificateKeyFile ". APACHEDIR . "/etc/apache22/{$virtualhost["ssl_cert"]}.key\n"; } } - $svr_ca =lookup_ca($virtualhost["reverse_int_ca"]); + $svr_ca =lookup_ca($virtualhost["ssl_cert_chain"]); if ($svr_ca != false) { - file_put_contents(APACHEDIR . "/etc/apache22/{$virtualhost["reverse_int_ca"]}.crt",apache_textarea_decode($svr_ca['crt']),LOCK_EX); + file_put_contents(APACHEDIR . "/etc/apache22/{$virtualhost["ssl_cert_chain"]}.crt",apache_textarea_decode($svr_ca['crt']),LOCK_EX); + $vh_config.= " SSLCertificateChainFile ". APACHEDIR . "/etc/apache22/{$virtualhost["ssl_cert_chain"]}.crt\n"; + } + $cli_ca =lookup_ca($virtualhost["reverse_int_ca"]); + if ($cli_ca != false) { + file_put_contents(APACHEDIR . "/etc/apache22/{$virtualhost["reverse_int_ca"]}.crt",apache_textarea_decode($cli_ca['crt']),LOCK_EX); $vh_config.= " SSLCACertificateFile ". APACHEDIR . "/etc/apache22/{$virtualhost["reverse_int_ca"]}.crt\n"; } } diff --git a/config/apache_mod_security-dev/apache_virtualhost.xml b/config/apache_mod_security-dev/apache_virtualhost.xml index 747ef975..7851e683 100644 --- a/config/apache_mod_security-dev/apache_virtualhost.xml +++ b/config/apache_mod_security-dev/apache_virtualhost.xml @@ -267,9 +267,19 @@ none - Intermediate CA certificate (optional) + HTTPS SSL certificate chain + ssl_cert_chain + Select intermediate CA assigned to server certificate. Not all certificates require this. + select_source + + descr + refid + none + + + Client certificates CA (optional) reverse_int_ca - Select intermediate CA assigned to certificate. Not all certificates require this. + Select CA assigned to client certificates. select_source descr -- cgit v1.2.3 From 238612a72478ce9c00d25b31f9a7516a69f996c5 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Wed, 22 Jan 2014 23:08:05 -0500 Subject: Updated pkg_config.8.* vnstat2 maintainer/version --- pkg_config.8.xml | 4 ++-- pkg_config.8.xml.amd64 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 0e40dfb2..6e03c0a7 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -827,10 +827,10 @@ vnstat-1.11.tbz vnstat-1.11_1-i386.pbi /usr/ports/net/vnstat - 1.10_2 + 1.11_1 Stable 2.0 - crazypark2@yahoo.dk + bryan.paradis@gmail.com http://www.pfsense.com/packages/config/vnstat2/vnstat2.xml vnstat2.xml diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 6454a58e..39911a23 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -814,10 +814,10 @@ vnstat-1.11.tbz vnstat-1.11_1-amd64.pbi /usr/ports/net/vnstat - 1.10_2 + 1.11_1 Stable 2.0 - crazypark2@yahoo.dk + bryan.paradis@gmail.com http://www.pfsense.com/packages/config/vnstat2/vnstat2.xml vnstat2.xml -- cgit v1.2.3 From 3f126784b31d5b5011fb10be7802cf122d953d16 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Wed, 22 Jan 2014 23:09:02 -0500 Subject: added vnstat_php_frontend moving away from tar --- config/vnstat2/vnstat_php_frontend/COPYING | 341 +++++++++++++++++++ config/vnstat2/vnstat_php_frontend/README | 52 +++ config/vnstat2/vnstat_php_frontend/VeraBd.ttf | Bin 0 -> 58716 bytes config/vnstat2/vnstat_php_frontend/config.php | 69 ++++ config/vnstat2/vnstat_php_frontend/graph.php | 303 +++++++++++++++++ config/vnstat2/vnstat_php_frontend/graph_svg.php | 362 +++++++++++++++++++++ config/vnstat2/vnstat_php_frontend/index.php | 196 +++++++++++ config/vnstat2/vnstat_php_frontend/lang/cs.php | 39 +++ config/vnstat2/vnstat_php_frontend/lang/en.php | 39 +++ config/vnstat2/vnstat_php_frontend/lang/nl.php | 40 +++ config/vnstat2/vnstat_php_frontend/localize.php | 15 + .../vnstat_php_frontend/themes/dark/style.css | 21 ++ .../vnstat_php_frontend/themes/dark/theme.php | 16 + .../vnstat_php_frontend/themes/espresso/style.css | 170 ++++++++++ .../vnstat_php_frontend/themes/espresso/theme.php | 17 + .../vnstat_php_frontend/themes/light/style.css | 159 +++++++++ .../vnstat_php_frontend/themes/light/theme.php | 15 + .../vnstat_php_frontend/themes/pfSense/style.css | 170 ++++++++++ .../vnstat_php_frontend/themes/pfSense/theme.php | 17 + .../vnstat_php_frontend/themes/red/style.css | 170 ++++++++++ .../vnstat_php_frontend/themes/red/theme.php | 16 + .../vnstat2/vnstat_php_frontend/vera_copyright.txt | 124 +++++++ config/vnstat2/vnstat_php_frontend/vnstat.php | 211 ++++++++++++ 23 files changed, 2562 insertions(+) create mode 100644 config/vnstat2/vnstat_php_frontend/COPYING create mode 100644 config/vnstat2/vnstat_php_frontend/README create mode 100644 config/vnstat2/vnstat_php_frontend/VeraBd.ttf create mode 100644 config/vnstat2/vnstat_php_frontend/config.php create mode 100644 config/vnstat2/vnstat_php_frontend/graph.php create mode 100644 config/vnstat2/vnstat_php_frontend/graph_svg.php create mode 100644 config/vnstat2/vnstat_php_frontend/index.php create mode 100644 config/vnstat2/vnstat_php_frontend/lang/cs.php create mode 100644 config/vnstat2/vnstat_php_frontend/lang/en.php create mode 100644 config/vnstat2/vnstat_php_frontend/lang/nl.php create mode 100644 config/vnstat2/vnstat_php_frontend/localize.php create mode 100644 config/vnstat2/vnstat_php_frontend/themes/dark/style.css create mode 100644 config/vnstat2/vnstat_php_frontend/themes/dark/theme.php create mode 100644 config/vnstat2/vnstat_php_frontend/themes/espresso/style.css create mode 100644 config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php create mode 100644 config/vnstat2/vnstat_php_frontend/themes/light/style.css create mode 100644 config/vnstat2/vnstat_php_frontend/themes/light/theme.php create mode 100644 config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css create mode 100644 config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php create mode 100644 config/vnstat2/vnstat_php_frontend/themes/red/style.css create mode 100644 config/vnstat2/vnstat_php_frontend/themes/red/theme.php create mode 100644 config/vnstat2/vnstat_php_frontend/vera_copyright.txt create mode 100644 config/vnstat2/vnstat_php_frontend/vnstat.php diff --git a/config/vnstat2/vnstat_php_frontend/COPYING b/config/vnstat2/vnstat_php_frontend/COPYING new file mode 100644 index 00000000..a17bdaff --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/COPYING @@ -0,0 +1,341 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + diff --git a/config/vnstat2/vnstat_php_frontend/README b/config/vnstat2/vnstat_php_frontend/README new file mode 100644 index 00000000..20053152 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/README @@ -0,0 +1,52 @@ +0. WHAT IS IT? + +This is a PHP frontend end to vnstat, a network traffic logger. +Since vnstat is console mode only I created this script to +make a 'nice' report of the data collected by vnstat. +For more information about vnstat check out http://humdi.net/vnstat/ +For updates to this script check http://www.sqweek.com + + +1. REQUIREMENTS + +- vnstat setup and collecting data +- webserver with PHP +- php-gd extension installed for PNG graphs + + +2. INSTALL + +Installation should be really straightforward: + +Put the files from this package somewhere inside the webroot of +your webserver. Then edit the few configuration options in config.php +to suit your situation and your good to go. The various options are +explained in config.php. + + +3. LICENSE + +vnstat PHP frontend 1.5.1 +Copyright (c)2006-2008 Bjorge Dijkstra (bjd@jooz.net) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +NOTE: + The Truetype font file VeraBd.ttf is copyright by Bitstream Inc. + See vera_copyright.txt for more information. + + + diff --git a/config/vnstat2/vnstat_php_frontend/VeraBd.ttf b/config/vnstat2/vnstat_php_frontend/VeraBd.ttf new file mode 100644 index 00000000..51d6111d Binary files /dev/null and b/config/vnstat2/vnstat_php_frontend/VeraBd.ttf differ diff --git a/config/vnstat2/vnstat_php_frontend/config.php b/config/vnstat2/vnstat_php_frontend/config.php new file mode 100644 index 00000000..3a4cd51a --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/config.php @@ -0,0 +1,69 @@ + /path/to/data_dir/vnstat_dump_$iface + // + $vnstat_bin = '/usr/local/bin/vnstat'; + $data_dir = './dumps'; + + // graphics format to use: svg or png + $graph_format='svg'; + + // Font to use for PNG graphs + define('GRAPH_FONT',dirname(__FILE__).'/VeraBd.ttf'); + + // Font to use for SVG graphs + define('SVG_FONT', 'Verdana'); + + define('DEFAULT_COLORSCHEME', 'pfSense'); +?> \ No newline at end of file diff --git a/config/vnstat2/vnstat_php_frontend/graph.php b/config/vnstat2/vnstat_php_frontend/graph.php new file mode 100644 index 00000000..fb00be67 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/graph.php @@ -0,0 +1,303 @@ + $high) + $high = $data[$i]['rx']; + if ($data[$i]['tx'] > $high) + $high = $data[$i]['tx']; + } + + while ($high > ($prescale * $y_scale * $y_ticks)) + { + $y_scale = $y_scale * 2; + if ($y_scale >= 1024) + { + $prescale = $prescale * 1024; + $y_scale = $y_scale / 1024; + if ($unit == 'K') + $unit = 'M'; + else if ($unit == 'M') + $unit = 'G'; + else if ($unit == 'G') + $unit = 'T'; + } + } + + draw_grid($x_ticks, $y_ticks); + + // + // graph scale factor (per pixel) + // + imagesetthickness($im, 1); + $sf = ($prescale * $y_scale * $y_ticks) / $gr_h; + + if ($data[0] == 'nodata') + { + $text = 'no data available'; + $bbox = imagettfbbox(10, 0, GRAPH_FONT, $text); + $textwidth = $bbox[2] - $bbox[0]; + imagettftext($im, 10, 0, ($iw-$textwidth)/2, $ytm + 80, $cl['text'], GRAPH_FONT, $text); + } + else + { + // + // draw bars + // + for ($i=0; $i<$x_ticks; $i++) + { + $x = $xlm + ($i * $x_step); + $y = $ytm + ($ih - $ytm - $ybm) - (($data[$i]['rx'] - $offset) / $sf); + + $depth = $x_step / 8; + $space = 0; + + $x1 = $x; + $y1 = $y; + $x2 = $x + $bar_w - $space; + $y2 = $ih - $ybm; + + imagefilledrectangle($im, $x1, $y1, $x2, $y2, $cl['rx']); + imagerectangle($im, $x1, $y1, $x2, $y2, $cl['rx_border']); + + imagefilledrectangle($im, $x1 - $depth, $y1 + $depth, $x2 -$depth, $y2 + $depth, $cl['rx']); + imagerectangle($im, $x1 - $depth, $y1 + $depth, $x2 - $depth, $y2 + $depth, $cl['rx_border']); + + imagefilledpolygon($im, array($x1, $y1, $x2, $y1, $x2 - $depth, $y1 + $depth, $x1 - $depth, $y1 + $depth), 4, $cl['rx']); + imagepolygon($im, array($x1, $y1, $x2, $y1, $x2 - $depth, $y1 + $depth, $x1 - $depth, $y1 + $depth), 4, $cl['rx_border']); + imagefilledpolygon($im, array($x2, $y1, $x2, $y2, $x2 - $depth, $y2 + $depth, $x2 - $depth, $y1 + $depth), 4, $cl['rx']); + imagepolygon($im, array($x2, $y1, $x2, $y2, $x2 - $depth, $y2 + $depth, $x2 - $depth, $y1 + $depth), 4, $cl['rx_border']); + + $y1 = $ytm + ($ih - $ytm - $ybm) - (($data[$i]['tx'] - $offset) / $sf); + $x1 = $x1 + $bar_w; + $x2 = $x2 + $bar_w; + + imagefilledrectangle($im, $x1, $y1, $x2, $y2, $cl['tx']); + imagerectangle($im, $x1, $y1, $x2, $y2, $cl['tx_border']); + + imagefilledrectangle($im, $x1 - $depth, $y1 + $depth, $x2 - $depth, $y2 + $depth, $cl['tx']); + imagerectangle($im, $x1 - $depth, $y1 + $depth, $x2 - $depth, $y2 + $depth, $cl['tx_border']); + + imagefilledpolygon($im, array($x1, $y1, $x2, $y1, $x2 - $depth, $y1 + $depth, $x1 - $depth, $y1 + $depth), 4, $cl['tx']); + imagepolygon($im, array($x1, $y1, $x2, $y1, $x2 - $depth, $y1 + $depth, $x1 - $depth, $y1 + $depth), 4, $cl['tx_border']); + imagefilledpolygon($im, array($x2, $y1, $x2, $y2, $x2 - $depth, $y2 + $depth, $x2 - $depth, $y1 + $depth), 4, $cl['tx']); + imagepolygon($im, array($x2, $y1, $x2, $y2, $x2 - $depth, $y2 + $depth, $x2 - $depth, $y1 + $depth), 4, $cl['tx_border']); + } + + // + // axis labels + // + for ($i=0; $i<=$y_ticks; $i++) + { + $label = ($i * $y_scale).$unit; + $bbox = imagettfbbox(8, 0, GRAPH_FONT, $label); + $textwidth = $bbox[2] - $bbox[0]; + imagettftext($im, 8, 0, $xlm - $textwidth - 16, ($ih - $ybm) - ($i * $y_step) + 8 + $depth, $cl['text'], GRAPH_FONT, $label); + } + + for ($i=0; $i<$x_ticks; $i++) + { + $label = $data[$i]['img_label']; + $bbox = imagettfbbox(9, 0, GRAPH_FONT, $label); + $textwidth = $bbox[2] - $bbox[0]; + imagettftext($im, 9, 0, $xlm + ($i * $x_step) + ($x_step / 2) - ($textwidth / 2) - $depth - 4, $ih - $ybm + 20 + $depth, $cl['text'], GRAPH_FONT, $label); + } + } + + draw_border(); + + + // + // legend + // + imagefilledrectangle($im, $xlm, $ih-$ybm+39, $xlm+8,$ih-$ybm+47,$cl['rx']); + imagerectangle($im, $xlm, $ih-$ybm+39, $xlm+8,$ih-$ybm+47,$cl['text']); + imagettftext($im, 8,0, $xlm+14, $ih-$ybm+48,$cl['text'], GRAPH_FONT,'bytes in'); + + imagefilledrectangle($im, $xlm+120 , $ih-$ybm+39, $xlm+128,$ih-$ybm+47,$cl['tx']); + imagerectangle($im, $xlm+120, $ih-$ybm+39, $xlm+128,$ih-$ybm+47,$cl['text']); + imagettftext($im, 8,0, $xlm+134, $ih-$ybm+48,$cl['text'], GRAPH_FONT,'bytes out'); + } + + function output_image() + { + global $page,$hour,$day,$month,$im,$iface; + + if ($page == 'summary') + return; + + init_image(); + + if ($page == 'h') + { + draw_data($hour); + } + else if ($page == 'd') + { + draw_data($day); + } + else if ($page == 'm') + { + draw_data($month); + } + + header('Content-type: image/png'); + imagepng($im); + } + + get_vnstat_data(); + output_image(); +?> diff --git a/config/vnstat2/vnstat_php_frontend/graph_svg.php b/config/vnstat2/vnstat_php_frontend/graph_svg.php new file mode 100644 index 00000000..8992ed12 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/graph_svg.php @@ -0,0 +1,362 @@ +\n"; + print "\n"; + print "\n"; + } + + function svg_end() + { + print "\n"; + print "\n"; + } + + function svg_options($options) + { + foreach ($options as $key => $value) { + print "$key=\"$value\" "; + } + } + + function svg_group($options) + { + print "\n"; + } + + function svg_group_end() + { + print "\n"; + } + + function svg_text($x, $y, $text, $options = array()) + { + printf("$text\n"; + } + + function svg_line($x1, $y1, $x2, $y2, $options = array()) + { + printf("\n"; + } + + function svg_rect($x, $y, $w, $h, $options = array()) + { + printf("\n"; + } + + function svg_poly($points, $options = array()) + { + print "\n"; + } + + function allocate_color($colors) + { + $col['rgb'] = sprintf("#%02X%02X%02X", $colors[0], $colors[1], $colors[2]); + $col['opacity'] = sprintf("%F", (127 - $colors[3]) / 127); + return $col; + } + + function init_image() + { + global $xlm, $xrm, $ytm, $ybm, $iw, $ih,$graph, $cl, $iface, $colorscheme, $style; + + if ($graph == 'none') + return; + + // + // image object + // + $xlm = 70; + $xrm = 20; + $ytm = 35; + $ybm = 60; + if ($graph == 'small') + { + $iw = 300 + $xrm + $xlm; + $ih = 100 + $ytm + $ybm; + } + else + { + $iw = 600 + $xrm + $xlm; + $ih = 200 + $ytm + $ybm; + } + + svg_create($iw, $ih); + + // + // colors + // + $cs = $colorscheme; + $cl['image_background'] = allocate_color($cs['image_background']); + $cl['background'] = allocate_color($cs['graph_background']); + $cl['background_2'] = allocate_color($cs['graph_background_2']); + $cl['grid_stipple_1'] = allocate_color($cs['grid_stipple_1']); + $cl['grid_stipple_2'] = allocate_color($cs['grid_stipple_2']); + $cl['text'] = allocate_color($cs['text']); + $cl['border'] = allocate_color($cs['border']); + $cl['rx'] = allocate_color($cs['rx']); + $cl['rx_border'] = allocate_color($cs['rx_border']); + $cl['tx'] = allocate_color($cs['tx']); + $cl['tx_border'] = allocate_color($cs['tx_border']); + + svg_rect(0, 0, $iw, $ih, array( 'stroke' => 'none', 'stroke-width' => 0, 'fill' => $cl['image_background']['rgb']) ); + svg_rect($xlm, $ytm, $iw-$xrm-$xlm, $ih-$ybm-$ytm, array( 'stroke' => 'none', 'stroke-width' => 0, 'fill' => $cl['background']['rgb']) ); + + $depth = 12; + svg_group( array( 'stroke' => 'none', 'stroke-width' => 0, 'fill' => $cl['background_2']['rgb'], 'fill-opacity' => $cl['background_2']['opacity']) ); + svg_poly(array($xlm, $ytm, $xlm, $ih - $ybm, $xlm - $depth, $ih - $ybm + $depth, $xlm - $depth, $ytm + $depth)); + svg_poly(array($xlm, $ih - $ybm, $xlm - $depth, $ih - $ybm + $depth, $iw - $xrm - $depth, $ih - $ybm + $depth, $iw - $xrm, $ih - $ybm)); + svg_group_end(); + + // draw title + $text = T('Traffic data for')." $iface"; + svg_text($iw / 2, ($ytm / 2), $text, array( 'stroke' => $cl['text'], 'fill' => $cl['text']['rgb'],'stroke-width' => 0, 'font-family' => SVG_FONT, 'font-weight' => 'bold', 'text-anchor' => 'middle' )); + } + + function draw_border() + { + global $cl, $iw, $ih; + svg_rect(1, 1, $iw-2, $ih-2, array( 'stroke' => $cl['border']['rgb'], 'stroke-opacity' => $cl['border']['opacity'], 'stroke-width' => 1, 'fill' => 'none') ); + } + + function draw_grid($x_ticks, $y_ticks) + { + global $cl, $iw, $ih, $xlm, $xrm, $ytm, $ybm; + $x_step = ($iw - $xlm - $xrm) / $x_ticks; + $y_step = ($ih - $ytm - $ybm) / $y_ticks; + + $depth = 12; + + svg_group( array( 'stroke' => $cl['grid_stipple_1']['rgb'], 'stroke-opacity' => $cl['grid_stipple_1']['opacity'], 'stroke-width' => '1px', 'stroke-dasharray' => '1,1' ) ); + for ($i = $xlm; $i <= ($iw - $xrm); $i += $x_step) + { + svg_line($i, $ytm, $i, $ih-$ybm); + svg_line($i, $ih-$ybm, $i-$depth, $ih-$ybm+$depth); + } + for ($i = $ytm; $i <= ($ih - $ybm); $i += $y_step) + { + svg_line($xlm, $i, $iw - $xrm, $i); + svg_line($xlm, $i, $xlm - $depth, $i + $depth); + } + svg_group_end(); + + svg_group( array( 'stroke' => $cl['border']['rgb'], 'stroke-width' => '1px', 'stroke-opacity' => $cl['border']['opacity'] ) ); + svg_line($xlm, $ytm, $xlm, $ih - $ybm); + svg_line($xlm, $ih - $ybm, $iw - $xrm, $ih - $ybm); + svg_group_end(); + } + + + function draw_data($data) + { + global $cl,$iw,$ih,$xlm,$xrm,$ytm,$ybm; + + sort($data); + + $x_ticks = count($data); + $y_ticks = 10; + $y_scale = 1; + $prescale = 1; + $unit = 'K'; + $offset = 0; + $gr_h = $ih - $ytm - $ybm; + $x_step = ($iw - $xlm - $xrm) / $x_ticks; + $y_step = ($ih - $ytm - $ybm) / $y_ticks; + $bar_w = ($x_step / 2) ; + + // + // determine scale + // + $low = 99999999999; + $high = 0; + for ($i=0; $i<$x_ticks; $i++) + { + if ($data[$i]['rx'] < $low) + $low = $data[$i]['rx']; + if ($data[$i]['tx'] < $low) + $low = $data[$i]['tx']; + if ($data[$i]['rx'] > $high) + $high = $data[$i]['rx']; + if ($data[$i]['tx'] > $high) + $high = $data[$i]['tx']; + } + + while ($high > ($prescale * $y_scale * $y_ticks)) + { + $y_scale = $y_scale * 2; + if ($y_scale >= 1024) + { + $prescale = $prescale * 1024; + $y_scale = $y_scale / 1024; + if ($unit == 'K') + $unit = 'M'; + else if ($unit == 'M') + $unit = 'G'; + else if ($unit == 'G') + $unit = 'T'; + } + } + + draw_grid($x_ticks, $y_ticks); + + // + // graph scale factor (per pixel) + // + $sf = ($prescale * $y_scale * $y_ticks) / $gr_h; + + if ($data[0] == 'nodata') + { + $text = 'no data available'; + svg_text($iw/2, $ytm + 80, $text, array( 'stroke' => $cl['text']['rgb'], 'fill' => $cl['text']['rgb'], 'stroke-width' => 0, 'font-family' => SVG_FONT, 'font-size' => '16pt', 'text-anchor' => 'middle') ); + } + else + { + // + // draw bars + // + for ($i=0; $i<$x_ticks; $i++) + { + $x = $xlm + ($i * $x_step); + $y = $ytm + ($ih - $ytm - $ybm) - (($data[$i]['rx'] - $offset) / $sf); + + $depth = ($x_ticks < 20) ? 8 : 6; + $space = 0; + + $x1 = (int)$x; + $y1 = (int)$y; + $w = (int)($bar_w - $space); + $h = (int)($ih - $ybm - $y); + $x2 = (int)($x + $bar_w - $space); + $y2 = (int)($ih - $ybm); + + svg_group( array( 'stroke' => $cl['rx_border']['rgb'], 'stroke-opacity' => $cl['rx_border']['opacity'], + 'stroke-width' => 1, 'stroke-linejoin' => 'round', + 'fill' => $cl['rx']['rgb'], 'fill-opacity' => $cl['rx']['opacity'] ) ); + svg_rect($x1, $y1, $w, $h); + svg_rect($x1 - $depth, $y1 + $depth, $w, $h); + svg_poly(array($x1, $y1, $x2, $y1, $x2 - $depth, $y1 + $depth, $x1 - $depth, $y1 + $depth)); + svg_poly(array($x2, $y1, $x2, $y2, $x2 - $depth, $y2 + $depth, $x2 - $depth, $y1 + $depth)); + svg_group_end(); + + $y1 = (int)($ytm + ($ih - $ytm - $ybm) - (($data[$i]['tx'] - $offset) / $sf)); + $x1 = (int)($x1 + $bar_w); + $x2 = (int)($x2 + $bar_w); + $w = (int)($bar_w - $space); + $h = (int)($ih - $ybm - $y1 - 1); + + svg_group( array( 'stroke' => $cl['tx_border']['rgb'], 'stroke-opacity' => $cl['tx_border']['opacity'], + 'stroke-width' => 1, 'stroke-linejoin' => 'round', + 'fill' => $cl['tx']['rgb'], 'fill-opacity' => $cl['tx']['opacity'] ) ); + svg_rect($x1, $y1, $w, $h); + svg_rect($x1 - $depth, $y1 + $depth, $w, $h); + svg_poly(array($x1, $y1, $x2, $y1, $x2 - $depth, $y1 + $depth, $x1 - $depth, $y1 + $depth)); + svg_poly(array($x2, $y1, $x2, $y2, $x2 - $depth, $y2 + $depth, $x2 - $depth, $y1 + $depth)); + svg_group_end(); + } + + // + // axis labels + // + svg_group( array( 'fill' => $cl['text']['rgb'], 'fill-opacity' => $cl['text']['opacity'], 'stroke-width' => '0', 'font-family' => SVG_FONT, 'font-size' => '10pt', 'text-anchor' => 'end' ) ); + for ($i=0; $i<=$y_ticks; $i++) + { + $label = ($i * $y_scale).$unit; + $tx = $xlm - 16; + $ty = (int)(($ih - $ybm) - ($i * $y_step) + 8 + $depth); + svg_text($tx, $ty, $label); + } + svg_group_end(); + + svg_group( array( 'fill' => $cl['text']['rgb'], 'fill-opacity' => $cl['text']['opacity'], 'stroke-width' => '0', 'font-family' => SVG_FONT, 'font-size' => '10pt', 'text-anchor' => 'middle' ) ); + for ($i=0; $i<$x_ticks; $i++) + { + $label = $data[$i]['img_label']; + svg_text($xlm + ($i * $x_step) + ($x_step / 2) - $depth - 4, $ih - $ybm + 20 + $depth, $label); + } + svg_group_end(); + } + + draw_border(); + + + // + // legend + // + svg_rect($xlm, $ih-$ybm+39, 8, 8, array( 'stroke' => $cl['text']['rgb'], 'stroke-width' => 1, 'fill' => $cl['rx']['rgb']) ); + svg_text($xlm+14, $ih-$ybm+48, T('bytes in'), array( 'fill' => $cl['text']['rgb'], 'stroke-width' => 0, 'font-family' => SVG_FONT, 'font-size' => '8pt') ); + + svg_rect($xlm+120 , $ih-$ybm+39, 8, 8, array( 'stroke' => $cl['text']['rgb'], 'stroke-width' => 1, 'fill' => $cl['tx']['rgb']) ); + svg_text($xlm+134, $ih-$ybm+48, T('bytes out'), array( 'fill' => $cl['text']['rgb'], 'stroke-width' => 0, 'font-family' => SVG_FONT, 'font-size' => '8pt') ); + } + + function output_image() + { + global $page,$hour,$day,$month,$iface; + + if ($page == 'summary') + return; + + init_image(); + + if ($page == 'h') + { + draw_data($hour); + } + else if ($page == 'd') + { + draw_data($day); + } + else if ($page == 'm') + { + draw_data($month); + } + + svg_end(); + } + + get_vnstat_data(); + output_image(); +?> diff --git a/config/vnstat2/vnstat_php_frontend/index.php b/config/vnstat2/vnstat_php_frontend/index.php new file mode 100644 index 00000000..70c0427f --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/index.php @@ -0,0 +1,196 @@ +\n"; + foreach ($iface_list as $if) + { + print "
  • "; + if (isset($iface_title[$if])) + { + print $iface_title[$if]; + } + else + { + print $if; + } + print "
  • \n"; + + } + print "\n"; + } + + + function kbytes_to_string($kb) + { + $units = array('TB','GB','MB','KB'); + $scale = 1024*1024*1024; + $ui = 0; + + while (($kb < $scale) && ($scale > 1)) + { + $ui++; + $scale = $scale / 1024; + } + return sprintf("%0.2f %s", ($kb/$scale),$units[$ui]); + } + + function write_summary() + { + global $summary,$top,$day,$hour,$month; + + $trx = $summary['totalrx']*1024+$summary['totalrxk']; + $ttx = $summary['totaltx']*1024+$summary['totaltxk']; + + // + // build array for write_data_table + // + $sum[0]['act'] = 1; + $sum[0]['label'] = T('This hour'); + $sum[0]['rx'] = $hour[0]['rx']; + $sum[0]['tx'] = $hour[0]['tx']; + + $sum[1]['act'] = 1; + $sum[1]['label'] = T('This day'); + $sum[1]['rx'] = $day[0]['rx']; + $sum[1]['tx'] = $day[0]['tx']; + + $sum[2]['act'] = 1; + $sum[2]['label'] = T('This month'); + $sum[2]['rx'] = $month[0]['rx']; + $sum[2]['tx'] = $month[0]['tx']; + + $sum[3]['act'] = 1; + $sum[3]['label'] = T('All time'); + $sum[3]['rx'] = $trx; + $sum[3]['tx'] = $ttx; + + write_data_table(T('Summary'), $sum); + print "
    \n"; + write_data_table(T('Top 10 days'), $top); + } + + + function write_data_table($caption, $tab) + { + print "\n"; + print "\n"; + print ""; + print ""; + print ""; + print ""; + print ""; + print "\n"; + + for ($i=0; $i"; + print ""; + print ""; + print ""; + print ""; + print "\n"; + } + } + print "
    $caption
     ".T('In')."".T('Out')."".T('Total')."
    $t$rx$tx$total
    \n"; + } + + get_vnstat_data(); + + // + // html start + // + header('Content-type: text/html; charset=utf-8'); + print ''; +?> + + + + vnStat - PHP frontend + + + + +
    + +
    + +
    + \n"; + } else { + print "\"graph\"/\n"; + } + + if ($page == 's') + { + write_summary(); + } + else if ($page == 'h') + { + write_data_table(T('Last 24 hours'), $hour); + } + else if ($page == 'd') + { + write_data_table(T('Last 30 days'), $day); + } + else if ($page == 'm') + { + write_data_table(T('Last 12 months'), $month); + } + ?> +
    + +
    +
    + + diff --git a/config/vnstat2/vnstat_php_frontend/lang/cs.php b/config/vnstat2/vnstat_php_frontend/lang/cs.php new file mode 100644 index 00000000..8704a503 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/lang/cs.php @@ -0,0 +1,39 @@ + diff --git a/config/vnstat2/vnstat_php_frontend/themes/dark/style.css b/config/vnstat2/vnstat_php_frontend/themes/dark/style.css new file mode 100644 index 00000000..8cf475fe --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/dark/style.css @@ -0,0 +1,21 @@ +* {margin:0; padding:0;} +body {background:#2f2f2f; font-family:Verdana; font-size:12px;} +#wrap {width: 960px; background:#242424; padding:10px; margin:0 auto; border:1px solid #474747;} +#sidebar {width: 160px; float: left; padding: 3px 4px; color: #fff; background-color: #2F2F2F; border:1px solid #474747; -moz-border-radius:8px;} +#sidebar ul.iface {} +#sidebar li.iface {list-style-type:none; color:#08BB08; text-transform:uppercase; padding-bottom:10px; text-align:center;} +#sidebar a{color:#aaa;} +#sidebar ul.page {} +#sidebar li.page {list-style-type:none; text-transform:none;} +#content {margin-left: 180px; width: 780px;} +#header {padding: 3px; color: #fff; background-color: #2F2F2F; text-align: center; border:1px solid #474747; font-size:14px; font-weight:bold; -moz-border-radius:8px;} +#footer {padding: 3px; color: #fff; background-color: #2F2F2F; text-align: center; border:1px solid #474747; font-size:11px; -moz-border-radius:8px; clear:both; margin-top:10px;} +#footer a {color:#fff;} +#main {padding: 10px 10px 10px 10px; color: #fff; background-color: #2F2F2F; text-align: center; border:1px solid #474747; -moz-border-radius:8px; margin-top:10px;} +#main td {padding:1px 0;} +#main td.numeric_odd {text-align: right; color: #fff; background:#474747;} +#main td.numeric_even {text-align: right; color: #fff; background:#242424;} +#main td.label_odd {color: #fff; background:#474747;} +#main td.label_even {color: #fff; background:#242424;} +#main th.label {color: #fff; padding:2px 0; border-bottom:1px solid #fff;} +#main caption {padding: 3px 0 4px 0; color:#08BB08; text-transform:uppercase;} \ No newline at end of file diff --git a/config/vnstat2/vnstat_php_frontend/themes/dark/theme.php b/config/vnstat2/vnstat_php_frontend/themes/dark/theme.php new file mode 100644 index 00000000..6df45cb2 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/dark/theme.php @@ -0,0 +1,16 @@ + array( 36, 36, 36, 0 ), + 'graph_background' => array( 220, 220, 230, 0 ), + 'graph_background_2' => array( 205, 205, 220, 0 ), + 'grid_stipple_1' => array( 140, 140, 140, 0 ), + 'grid_stipple_2' => array( 200, 200, 200, 0 ), + 'border' => array( 71, 71, 71, 0 ), + 'text' => array( 255, 255, 255,0 ), + 'rx' => array( 10, 180, 10, 50 ), + 'rx_border' => array( 0, 120, 0, 90 ), + 'tx' => array( 130, 130, 130, 50 ), + 'tx_border' => array( 60, 60, 60, 90 ) + ); +?> diff --git a/config/vnstat2/vnstat_php_frontend/themes/espresso/style.css b/config/vnstat2/vnstat_php_frontend/themes/espresso/style.css new file mode 100644 index 00000000..e5dff7f9 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/espresso/style.css @@ -0,0 +1,170 @@ +body +{ + background-color: #363330; + margin: 8px; + padding: 0; +} + +#content +{ + width: 898px; +} + +#sidebar +{ + position: absolute; + left: 8px; + top: 8px; + width: 160px; + border-right: 1px solid #D3CAAA; + border-collapse: collapse; + float: left; +} + +#sidebar ul.iface +{ + margin: 0px; + padding: 0px; + border-top: 1px dashed #D3CAAA; + background-color: #363330; + color: #D3CAAA; +} + +#sidebar li.iface +{ + list-style-type: none; + margin: 0px; + padding: 0px; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + border-bottom: 1px dashed #D3CAAA; +} + +#sidebar a +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; +} + +#sidebar ul.page +{ + margin: 0px; + padding: 0px; + border-top: 1px dashed #D3CAAA; +} + +#sidebar li.page +{ + list-style-type: none; + margin: 0px; + padding: 4px; + border: none; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.75em; + font-weight: normal; + text-align: right; + background-color: #413D39; + color: #D3CAAA; +} + + +#header +{ + width: 720px; + margin-left: 160px; + padding: 0px 8px 0px 8px; + border-width: 1px 1px 1px 1px; + border-style: dashed solid dashed solid; + border-color: #D3CAAA; + border-collapse: collapse; + background-color: #363330; + color: #D3CAAA; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + text-align: center; +} + +#footer +{ + width: 720px; + margin-left: 160px; + padding: 2px 8px 2px 8px; + border-width: 1px 1px 1px 1px; + border-style: solid; + border-color: #D3CAAA; + border-collapse: collapse; + background-color: #363330; + color: #D3CAAA; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.70em; + text-align: center; +} + +#main +{ + width: 720px; + margin-left: 160px; + padding: 8px 8px 8px 8px; + border-left: 1px solid #D3CAAA; + border-right: 1px solid #D3CAAA; + border-collapse: collapse; +} + +#main td +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.8em; +} + +#main td.numeric_odd +{ + text-align: right; + background-color: #756F68; + color: #D3CAAA; +} + +#main td.numeric_even +{ + text-align: right; + background-color: #544C4A; + color: #D3CAAA; +} + +#main td.label_odd +{ + background-color: #413D39; + color: #D3CAAA; +} + +#main td.label_even +{ + background-color: #5A514F; + color: #D3CAAA; +} + +#main th.label +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + background-color: #413D39; + color: #D3CAAA; +} + +#main caption +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1.25em; + font-weight: bold; + padding: 4px; + color: #D3CAAA; +} + +a +{ + text-decoration: none; + color: #D3CAAA; +} diff --git a/config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php b/config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php new file mode 100644 index 00000000..3c7818f5 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php @@ -0,0 +1,17 @@ + array( 065, 061, 057, 0 ), + 'graph_background' => array( 117, 111, 104, 30 ), + 'graph_background_2' => array( 128, 122, 102, 30 ), + 'grid_stipple_1' => array( 140, 140, 140, 0 ), + 'grid_stipple_2' => array( 200, 200, 200, 0 ), + 'border' => array( 211, 202, 170, 0 ), + 'text' => array( 211, 202, 170, 0 ), + 'rx' => array( 211, 202, 170, 50 ), + 'rx_border' => array( 80, 40, 40, 90 ), + 'tx' => array( 163, 156, 131, 50 ), + 'tx_border' => array( 60, 60, 60, 90 ) + ); +?> diff --git a/config/vnstat2/vnstat_php_frontend/themes/light/style.css b/config/vnstat2/vnstat_php_frontend/themes/light/style.css new file mode 100644 index 00000000..28503f1d --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/light/style.css @@ -0,0 +1,159 @@ +body +{ + margin: 0; + padding: 0; +} + +#wrap +{ + xwidth: 868px; +} + +#sidebar +{ + width: 160px; + border-right: 1px solid #99b; + border-collapse: collapse; + float: left; +} + +#sidebar ul.iface +{ + margin: 0; + padding: 0; + border-top: 1px solid #99b; + color: #000; + background-color: #eef; +} + +#sidebar li.iface +{ + margin: 0; + padding: 0; + list-style-type: none; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + xborder-top: 1px solid #99b; + border-bottom: 1px solid #99b; +} + +#sidebar a +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; +} + +#sidebar ul.page +{ + margin: 0; + padding: 0; + border-top: 1px solid #99b; +} + +#sidebar li.page +{ + margin: 0; + padding: 4px; + border: none; + list-style-type: none; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.75em; + font-weight: normal; + text-align: right; + color: #000; + background-color: #fff; +} + +#content +{ + margin-left: 160px; + width: 720px; +} + + +#header +{ + padding: 0px 8px 0px 8px; + border-width: 1px; + border-style: solid solid solid solid; + border-color: #99b; + border-collapse: collapse; + color: #000; + background-color: #eef; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + text-align: center; +} + +#footer +{ + padding: 2px 8px 2px 8px; + border: 1px solid #99b; + border-collapse: collapse; + color: #000; + background-color: #eef; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.65em; + font-weight: bold; + text-align: center; +} + +#main +{ + padding: 8px; + border-left: 1px solid #99b; + border-right: 1px solid #99b; + border-collapse: collapse; +} + +#main td +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.8em; +} + +#main td.numeric_odd +{ + text-align: right; + color: #000; + background-color: #eef; +} + +#main td.numeric_even +{ + text-align: right; + color: #000; + background-color: #fff; +} + +#main td.label_odd +{ + color: #000; + background-color: #dde; +} + +#main td.label_even +{ + color: #000; + background-color: #eee; +} + +#main th.label +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + color: #000; + background-color: #dde; +} + +#main caption +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1.25em; + font-weight: bold; + padding: 4px; +} diff --git a/config/vnstat2/vnstat_php_frontend/themes/light/theme.php b/config/vnstat2/vnstat_php_frontend/themes/light/theme.php new file mode 100644 index 00000000..2516c874 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/light/theme.php @@ -0,0 +1,15 @@ + array( 255, 255, 255, 0 ), + 'graph_background' => array( 220, 220, 230, 0 ), + 'graph_background_2' => array( 205, 205, 220, 0 ), + 'grid_stipple_1' => array( 140, 140, 140, 0 ), + 'grid_stipple_2' => array( 200, 200, 200, 0 ), + 'border' => array( 0, 0, 0, 0 ), + 'text' => array( 0, 0, 0, 0 ), + 'rx' => array( 190, 190, 20, 50 ), + 'rx_border' => array( 40, 80, 40, 90 ), + 'tx' => array( 130, 160, 100, 50 ), + 'tx_border' => array( 80, 40, 40, 90 ) + ); +?> diff --git a/config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css b/config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css new file mode 100644 index 00000000..0136624d --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css @@ -0,0 +1,170 @@ +body +{ + background-color: #FFFFFF; + margin: 8px; + padding: 0; +} + +#content +{ + width: 898px; +} + +#sidebar +{ + position: absolute; + left: 8px; + top: 8px; + width: 160px; + border-right: 1px solid #990000; + border-collapse: collapse; + float: left; +} + +#sidebar ul.iface +{ + margin: 0px; + padding: 0px; + border-top: 1px dashed #990000; + background-color: #990000; + color: #FFFFFF; +} + +#sidebar li.iface +{ + list-style-type: none; + margin: 1px; + padding: 0px; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + border-bottom: 1px dashed #990000; +} + +#sidebar a +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; +} + +#sidebar ul.page +{ + margin: 0px; + padding: 0px; + border-top: 1px dashed #990000; +} + +#sidebar li.page +{ + list-style-type: none; + margin: 0px; + padding: 4px; + border: none; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.75em; + font-weight: normal; + text-align: right; + background-color: #BBBBBB; + color: #000000; +} + + +#header +{ + width: 720px; + margin-left: 160px; + padding: 0px 8px 0px 8px; + border-width: 1px 1px 1px 1px; + border-style: dashed solid dashed solid; + border-color: #990000; + border-collapse: collapse; + background-color: #990000; + color: #FFFFFF; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + text-align: center; +} + +#footer +{ + width: 720px; + margin-left: 160px; + padding: 2px 8px 2px 8px; + border-width: 1px 1px 1px 1px; + border-style: solid; + border-color: #82001D; + border-collapse: collapse; + background-color: #D2D2D2; + color: #82001D; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.70em; + text-align: center; +} + +#main +{ + width: 720px; + margin-left: 160px; + padding: 8px 8px 8px 8px; + border-left: 1px solid #82001D; + border-right: 1px solid #82001D; + border-collapse: collapse; +} + +#main td +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.8em; +} + +#main td.numeric_odd +{ + text-align: right; + background-color: #C9C9C9; + color: #82001D; +} + +#main td.numeric_even +{ + text-align: right; + background-color: #CFCFCF; + color: #82001D; +} + +#main td.label_odd +{ + background-color: #A6A6A6; + color: #82001D; +} + +#main td.label_even +{ + background-color: #C1C1C1; + color: #82001D; +} + +#main th.label +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + background-color: #A6A6A6; + color: #82001D; +} + +#main caption +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1.25em; + font-weight: bold; + padding: 4px; + color: #82001D; +} + +a +{ + text-decoration: none; + color: #000000; +} diff --git a/config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php b/config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php new file mode 100644 index 00000000..6489f842 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php @@ -0,0 +1,17 @@ + array( 240, 240, 240, 0 ), + 'graph_background' => array( 255, 255, 255, 0 ), + 'graph_background_2' => array( 255, 255, 255, 0 ), + 'grid_stipple_1' => array( 144, 0, 0, 0 ), + 'grid_stipple_2' => array( 144, 0, 0, 0 ), + 'border' => array( 0, 0, 0, 0 ), + 'text' => array( 0, 0, 0, 0 ), + 'rx' => array( 190, 20, 20, 50 ), + 'rx_border' => array( 80, 40, 40, 90 ), + 'tx' => array( 130, 130, 130, 50 ), + 'tx_border' => array( 60, 60, 60, 90 ) + ); +?> \ No newline at end of file diff --git a/config/vnstat2/vnstat_php_frontend/themes/red/style.css b/config/vnstat2/vnstat_php_frontend/themes/red/style.css new file mode 100644 index 00000000..48ab8d55 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/red/style.css @@ -0,0 +1,170 @@ +body +{ + background-color: #D2D2D2; + margin: 8px; + padding: 0; +} + +#content +{ + width: 898px; +} + +#sidebar +{ + position: absolute; + left: 8px; + top: 8px; + width: 160px; + border-right: 1px solid #82001D; + border-collapse: collapse; + float: left; +} + +#sidebar ul.iface +{ + margin: 0px; + padding: 0px; + border-top: 1px dashed #82001D; + background-color: #D2D2D2; + color: #82001D; +} + +#sidebar li.iface +{ + list-style-type: none; + margin: 0px; + padding: 0px; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + border-bottom: 1px dashed #82001D; +} + +#sidebar a +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; +} + +#sidebar ul.page +{ + margin: 0px; + padding: 0px; + border-top: 1px dashed #82001D; +} + +#sidebar li.page +{ + list-style-type: none; + margin: 0px; + padding: 4px; + border: none; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.75em; + font-weight: normal; + text-align: right; + background-color: #C1C1C1; + color: #82001D; +} + + +#header +{ + width: 720px; + margin-left: 160px; + padding: 0px 8px 0px 8px; + border-width: 1px 1px 1px 1px; + border-style: dashed solid dashed solid; + border-color: #82001D; + border-collapse: collapse; + background-color: #D2D2D2; + color: #82001D; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + text-align: center; +} + +#footer +{ + width: 720px; + margin-left: 160px; + padding: 2px 8px 2px 8px; + border-width: 1px 1px 1px 1px; + border-style: solid; + border-color: #82001D; + border-collapse: collapse; + background-color: #D2D2D2; + color: #82001D; + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.70em; + text-align: center; +} + +#main +{ + width: 720px; + margin-left: 160px; + padding: 8px 8px 8px 8px; + border-left: 1px solid #82001D; + border-right: 1px solid #82001D; + border-collapse: collapse; +} + +#main td +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 0.8em; +} + +#main td.numeric_odd +{ + text-align: right; + background-color: #C9C9C9; + color: #82001D; +} + +#main td.numeric_even +{ + text-align: right; + background-color: #CFCFCF; + color: #82001D; +} + +#main td.label_odd +{ + background-color: #A6A6A6; + color: #82001D; +} + +#main td.label_even +{ + background-color: #C1C1C1; + color: #82001D; +} + +#main th.label +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1em; + font-weight: bold; + background-color: #A6A6A6; + color: #82001D; +} + +#main caption +{ + font-family: 'Trebuchet MS', Verdana, sans-serif; + font-size: 1.25em; + font-weight: bold; + padding: 4px; + color: #82001D; +} + +a +{ + text-decoration: none; + color: #A80022; +} diff --git a/config/vnstat2/vnstat_php_frontend/themes/red/theme.php b/config/vnstat2/vnstat_php_frontend/themes/red/theme.php new file mode 100644 index 00000000..2c9ba6f4 --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/themes/red/theme.php @@ -0,0 +1,16 @@ + array( 225, 225, 225, 0 ), + 'graph_background' => array( 220, 220, 230, 0 ), + 'graph_background_2' => array( 205, 205, 220, 0 ), + 'grid_stipple_1' => array( 140, 140, 140, 0 ), + 'grid_stipple_2' => array( 200, 200, 200, 0 ), + 'border' => array( 0, 0, 0, 0 ), + 'text' => array( 0, 0, 0, 0 ), + 'rx' => array( 190, 20, 20, 50 ), + 'rx_border' => array( 80, 40, 40, 90 ), + 'tx' => array( 130, 130, 130, 50 ), + 'tx_border' => array( 60, 60, 60, 90 ) + ); +?> diff --git a/config/vnstat2/vnstat_php_frontend/vera_copyright.txt b/config/vnstat2/vnstat_php_frontend/vera_copyright.txt new file mode 100644 index 00000000..e651be1c --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/vera_copyright.txt @@ -0,0 +1,124 @@ +Bitstream Vera Fonts Copyright + +The fonts have a generous copyright, allowing derivative works (as +long as "Bitstream" or "Vera" are not in the names), and full +redistribution (so long as they are not *sold* by themselves). They +can be be bundled, redistributed and sold with any software. + +The fonts are distributed under the following copyright: + +Copyright +========= + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream +Vera is a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute +the Font Software, including without limitation the rights to use, +copy, merge, publish, distribute, and/or sell copies of the Font +Software, and to permit persons to whom the Font Software is furnished +to do so, subject to the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Bitstream" or the word "Vera". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Bitstream Vera" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, +OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT +SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font +Software without prior written authorization from the Gnome Foundation +or Bitstream Inc., respectively. For further information, contact: +fonts at gnome dot org. + +Copyright FAQ +============= + + 1. I don't understand the resale restriction... What gives? + + Bitstream is giving away these fonts, but wishes to ensure its + competitors can't just drop the fonts as is into a font sale system + and sell them as is. It seems fair that if Bitstream can't make money + from the Bitstream Vera fonts, their competitors should not be able to + do so either. You can sell the fonts as part of any software package, + however. + + 2. I want to package these fonts separately for distribution and + sale as part of a larger software package or system. Can I do so? + + Yes. A RPM or Debian package is a "larger software package" to begin + with, and you aren't selling them independently by themselves. + See 1. above. + + 3. Are derivative works allowed? + Yes! + + 4. Can I change or add to the font(s)? + Yes, but you must change the name(s) of the font(s). + + 5. Under what terms are derivative works allowed? + + You must change the name(s) of the fonts. This is to ensure the + quality of the fonts, both to protect Bitstream and Gnome. We want to + ensure that if an application has opened a font specifically of these + names, it gets what it expects (though of course, using fontconfig, + substitutions could still could have occurred during font + opening). You must include the Bitstream copyright. Additional + copyrights can be added, as per copyright law. Happy Font Hacking! + + 6. If I have improvements for Bitstream Vera, is it possible they might get + adopted in future versions? + + Yes. The contract between the Gnome Foundation and Bitstream has + provisions for working with Bitstream to ensure quality additions to + the Bitstream Vera font family. Please contact us if you have such + additions. Note, that in general, we will want such additions for the + entire family, not just a single font, and that you'll have to keep + both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add + glyphs to the font, they must be stylistically in keeping with Vera's + design. Vera cannot become a "ransom note" font. Jim Lyles will be + providing a document describing the design elements used in Vera, as a + guide and aid for people interested in contributing to Vera. + + 7. I want to sell a software package that uses these fonts: Can I do so? + + Sure. Bundle the fonts with your software and sell your software + with the fonts. That is the intent of the copyright. + + 8. If applications have built the names "Bitstream Vera" into them, + can I override this somehow to use fonts of my choosing? + + This depends on exact details of the software. Most open source + systems and software (e.g., Gnome, KDE, etc.) are now converting to + use fontconfig (see www.fontconfig.org) to handle font configuration, + selection and substitution; it has provisions for overriding font + names and subsituting alternatives. An example is provided by the + supplied local.conf file, which chooses the family Bitstream Vera for + "sans", "serif" and "monospace". Other software (e.g., the XFree86 + core server) has other mechanisms for font substitution. + diff --git a/config/vnstat2/vnstat_php_frontend/vnstat.php b/config/vnstat2/vnstat_php_frontend/vnstat.php new file mode 100644 index 00000000..9c7e211c --- /dev/null +++ b/config/vnstat2/vnstat_php_frontend/vnstat.php @@ -0,0 +1,211 @@ + -- cgit v1.2.3 From 5f345d7ed67f48103b14c6e0e698c981698e0981 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Wed, 22 Jan 2014 23:11:02 -0500 Subject: updated vnstat2.inc paths, indents, uninstall --- config/vnstat2/vnstat2.inc | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/config/vnstat2/vnstat2.inc b/config/vnstat2/vnstat2.inc index 54a15aa6..64eaaa38 100644 --- a/config/vnstat2/vnstat2.inc +++ b/config/vnstat2/vnstat2.inc @@ -3,16 +3,16 @@ function vnstat_install_deinstall() { conf_mount_rw(); global $config; // Remove Vnstat package and files - exec("cd /var/db/pkg/ && pkg_delete `ls | grep vnstat`"); + exec("cd /var/db/pkg/ && pkg_delete `ls | grep vnstat`"); exec("rm -d -R /usr/local/www/vnstat2"); exec("rm -d -R /usr/local/www/vnstati"); - exec("rm /usr/local/pkg/vnstat_php_frontend.xml"); - exec("rm /usr/local/pkg/vnstat2.sh"); - exec("rm /usr/local/etc/vnstat2.conf"); exec("rm /usr/local/www/diag_vnstat.php"); exec("rm /usr/local/www/diag_vnstat2.php"); exec("rm /usr/local/www/vnstati.php"); exec("rm /usr/local/www/vnstat2_img.php"); + exec("rm -d -R /usr/local/pkg/vnstat2"); + exec("rm /usr/local/etc/vnstat2.conf"); + // Remove vnstat cron entry from config.xml vnstat2_install_cron(false); conf_mount_ro(); @@ -25,7 +25,7 @@ function vnstat2_install_cron($vnstat_cron_value) { return; $x=0; foreach($config['cron']['item'] as $item) { - if(strstr($item['command'], "/usr/local/pkg/vnstat2.sh")) { + if(strstr($item['command'], "/usr/local/pkg/vnstat2/vnstat2.sh")) { $is_installed = true; break; } @@ -41,7 +41,7 @@ function vnstat2_install_cron($vnstat_cron_value) { $cron_item['month'] = "*"; $cron_item['wday'] = "*"; $cron_item['who'] = "root"; - $cron_item['command'] = "/usr/local/pkg/vnstat2.sh"; + $cron_item['command'] = "/usr/local/pkg/vnstat2/vnstat2.sh"; $config['cron']['item'][] = $cron_item; write_config(); configure_cron(); @@ -70,10 +70,10 @@ function change_vnstat_conf(){ $no_vnstat_phpfrontend = $config['installedpackages']['vnstat2']['config'][0]['vnstat_phpfrontend']; if ($no_vnstat_phpfrontend == "on"){ vnstat_php_frontend(); - } + } else { exec("[ -d /usr/local/www/vnstat2 ] && rm -d -R /usr/local/www/vnstat2"); -} + } conf_mount_ro(); } @@ -149,16 +149,16 @@ function vnstat_install_config() { conf_mount_rw(); // Create vnstat database dir where it also will work for nanobsd // exec("[ -d /var/db/vnstat ] && mv /var/db/vnstat /conf/vnstat"); - exec("[ -d /usr/local/pkg/vnstat ] && mv /usr/local/pkg/vnstat /conf/vnstat"); + exec("[ -d /usr/local/pkg/vnstat2/vnstat ] && mv /usr/local/pkg/vnstat2/vnstat /conf/vnstat"); exec("[ ! -d /conf/vnstat ] && mkdir /conf/vnstat"); // Check for pbi install and arch type then create symlinks if (file_exists('/usr/pbi/vnstat-i386')) { exec("ln -s /usr/local/etc/vnstat.conf /usr/pbi/vnstat-i386/etc/vnstat.conf"); } if (file_exists('/usr/pbi/vnstat-amd64')) { exec("ln -s /usr/local/etc/vnstat.conf /usr/pbi/vnstat-amd64/etc/vnstat.conf"); } // Copy files to web dir - exec("[ ! -f /usr/local/www/diag_vnstat2.php ] && cp /usr/local/pkg/diag_vnstat2.abc /usr/local/www/diag_vnstat2.php"); - exec("[ ! -f /usr/local/www/diag_vnstat.php ] && cp /usr/local/pkg/diag_vnstat.abc /usr/local/www/diag_vnstat.php"); - exec("[ ! -f /usr/local/www/vnstati.php ] && cp /usr/local/pkg/vnstati.abc /usr/local/www/vnstati.php"); - exec("[ ! -f /usr/local/www/vnstat2_img.php ] && cp /usr/local/pkg/vnstat2_img.abc /usr/local/www/vnstat2_img.php"); + exec("[ ! -f /usr/local/www/diag_vnstat2.php ] && cp /usr/local/pkg/vnstat2/diag_vnstat2.abc /usr/local/www/diag_vnstat2.php"); + exec("[ ! -f /usr/local/www/diag_vnstat.php ] && cp /usr/local/pkg/vnstat2/diag_vnstat.abc /usr/local/www/diag_vnstat.php"); + exec("[ ! -f /usr/local/www/vnstati.php ] && cp /usr/local/pkg/vnstat2/vnstati.abc /usr/local/www/vnstati.php"); + exec("[ ! -f /usr/local/www/vnstat2_img.php ] && cp /usr/local/pkg/vnstat2/vnstat2_img.abc /usr/local/www/vnstat2_img.php"); // Add MonthRotate value to config.xml and write /usr/local/etc/vnstat.conf $no_monthrotate = $config['installedpackages']['vnstat2']['config'][0]['monthrotate']; if ($no_monthrotate == ""){ @@ -197,10 +197,8 @@ function vnstat_install_config() { function vnstat_php_frontend(){ global $config; -// Unpack and move Vnstat frontend - exec("cd .."); - exec("tar -zxovf /usr/local/pkg/vnstat_php_frontend-1.5.1-updated.tar.gz"); - exec("mv vnstat_php_frontend-1.5.1-updated /usr/local/www/vnstat2"); +// Copy vnstat_php_frontend to www + exec("cp -a /usr/local/pkg/vnstat2/vnstat_php_frontend/. /usr/local/www/vnstat2/"); // Find information to be writing in config.php // $iface_list_array_items exec("ls /conf/vnstat/ | grep -v '\.'", $vnstat_nic_in); @@ -228,8 +226,8 @@ function vnstat_php_frontend(){ $iface_title_array = implode($iface_title_array_items2); // php in php static items // added to new items for the front end version 1.5.1 - $locale = "\$locale = 'en_US.UTF-8';"; - $language = "\$language = 'en';"; + $locale = "\$locale = 'en_US.UTF-8';"; + $language = "\$language = 'en';"; $vnstat_bin2 = "\$vnstat_bin = '/usr/local/bin/vnstat';"; $data_dir2 = "\$data_dir = './dumps';"; $graph_format2 ="\$graph_format='svg';"; -- cgit v1.2.3 From b7ba2b9476ee4f66ce6a3710cd9b9883fc5e074d Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Thu, 23 Jan 2014 00:32:11 -0500 Subject: vnstat2.xml paths + additional vnstat_php_frontend --- config/vnstat2/vnstat2.xml | 138 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 124 insertions(+), 14 deletions(-) diff --git a/config/vnstat2/vnstat2.xml b/config/vnstat2/vnstat2.xml index 6d8ba41a..428b0f60 100644 --- a/config/vnstat2/vnstat2.xml +++ b/config/vnstat2/vnstat2.xml @@ -10,7 +10,7 @@ 1.0 Vnstat2 /pkg_edit.php?xml=vnstat2.xml&id=0 - /usr/local/pkg/vnstat2.inc + /usr/local/pkg/vnstat2/vnstat2.inc vnstat2 @@ -41,50 +41,160 @@ - /usr/local/pkg/ + /usr/local/pkg/vnstat2/ 0644 http://www.pfsense.com/packages/config/vnstat2/vnstat2.inc /usr/local/pkg/ 0644 - http://files.pfsense.org/packages/8/vnstat/vnstat_php_frontend-1.5.1-updated.tar.gz + http://www.pfsense.com/packages/config/vnstat2/vnstati.xml /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstati.xml + http://www.pfsense.com/packages/config/vnstat2/vnstatoutput.xml - /usr/local/pkg/ + /usr/local/pkg/vnstat2/ 0744 http://www.pfsense.com/packages/config/vnstat2/vnstat2.sh - /usr/local/pkg/ - 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstatoutput.xml - - - /usr/local/pkg/ + /usr/local/pkg/vnstat2/ 0644 http://www.pfsense.com/packages/config/vnstat2/bin/diag_vnstat.abc - /usr/local/pkg/ + /usr/local/pkg/vnstat2/ 0644 http://www.pfsense.com/packages/config/vnstat2/bin/diag_vnstat2.abc - /usr/local/pkg/ + /usr/local/pkg/vnstat2/ 0644 http://www.pfsense.com/packages/config/vnstat2/bin/vnstat2_img.abc - /usr/local/pkg/ + /usr/local/pkg/vnstat2/ 0644 http://www.pfsense.com/packages/config/vnstat2/bin/vnstati.abc + + /usr/local/pkg/vnstat2/vnstat_php_frontend/lang/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/lang/cs.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/lang/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/lang/en.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/lang/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/lang/nl.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/dark/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/dark/style.css + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/dark/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/dark/theme.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/espresso/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/style.css + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/espresso/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/light/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/light/style.css + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/light/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/light/theme.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/pfSense/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/pfSense/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/red/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/red/style.css + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/red/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/red/theme.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/config.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/COPYING + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/graph.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/graph_svg.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/index.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/localize.php + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/README + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/vera_copyright.txt + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/VeraBd.ttf + + + /usr/local/pkg/vnstat2/vnstat_php_frontend/ + 0644 + http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/vnstat.php + Change rotate day of the month (by default set to 1) -- cgit v1.2.3 From c8e0f450685d5d5086d6b48acdc898c62df4a633 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Thu, 23 Jan 2014 00:34:07 -0500 Subject: updated vnstat.inc path in two xml --- config/vnstat2/vnstati.xml | 2 +- config/vnstat2/vnstatoutput.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/vnstat2/vnstati.xml b/config/vnstat2/vnstati.xml index e2246ca0..65bcd4ba 100644 --- a/config/vnstat2/vnstati.xml +++ b/config/vnstat2/vnstati.xml @@ -10,7 +10,7 @@ 1.0 Vnstat2 /vnstati.php - /usr/local/pkg/vnstat2.inc + /usr/local/pkg/vnstat2/vnstat2.inc vnstat2 diff --git a/config/vnstat2/vnstatoutput.xml b/config/vnstat2/vnstatoutput.xml index 4b410aaa..32ac58f3 100644 --- a/config/vnstat2/vnstatoutput.xml +++ b/config/vnstat2/vnstatoutput.xml @@ -10,7 +10,7 @@ 1.0 Vnstat2 /diag_vnstat2.php - /usr/local/pkg/vnstat2.inc + /usr/local/pkg/vnstat2/vnstat2.inc vnstat2 -- cgit v1.2.3 From 6a50a095c6e3d7f5888f46d81fb8592bc284fd8e Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Thu, 23 Jan 2014 01:05:06 -0500 Subject: EOL conversion --- config/vnstat2/vnstat2.inc | 2 +- config/vnstat2/vnstat2.sh | 1 + config/vnstat2/vnstat2.xml | 1 + config/vnstat2/vnstati.xml | 1 + config/vnstat2/vnstatoutput.xml | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/config/vnstat2/vnstat2.inc b/config/vnstat2/vnstat2.inc index 64eaaa38..b200a388 100644 --- a/config/vnstat2/vnstat2.inc +++ b/config/vnstat2/vnstat2.inc @@ -2,7 +2,7 @@ function vnstat_install_deinstall() { conf_mount_rw(); global $config; -// Remove Vnstat package and files +// Remove Vnstat package and files exec("cd /var/db/pkg/ && pkg_delete `ls | grep vnstat`"); exec("rm -d -R /usr/local/www/vnstat2"); exec("rm -d -R /usr/local/www/vnstati"); diff --git a/config/vnstat2/vnstat2.sh b/config/vnstat2/vnstat2.sh index 05fb1136..54f30843 100644 --- a/config/vnstat2/vnstat2.sh +++ b/config/vnstat2/vnstat2.sh @@ -1,5 +1,6 @@ #!/bin/sh + /etc/rc.conf_mount_rw /usr/local/bin/vnstat -u sleep 0.2 diff --git a/config/vnstat2/vnstat2.xml b/config/vnstat2/vnstat2.xml index 428b0f60..049c11ca 100644 --- a/config/vnstat2/vnstat2.xml +++ b/config/vnstat2/vnstat2.xml @@ -246,3 +246,4 @@ vnstat_install_config(); vnstat_install_deinstall(); + diff --git a/config/vnstat2/vnstati.xml b/config/vnstat2/vnstati.xml index 65bcd4ba..7cd3f3be 100644 --- a/config/vnstat2/vnstati.xml +++ b/config/vnstat2/vnstati.xml @@ -54,3 +54,4 @@ vnstat_install_config(); vnstat_install_deinstall(); + diff --git a/config/vnstat2/vnstatoutput.xml b/config/vnstat2/vnstatoutput.xml index 32ac58f3..9d2e3d05 100644 --- a/config/vnstat2/vnstatoutput.xml +++ b/config/vnstat2/vnstatoutput.xml @@ -54,3 +54,4 @@ vnstat_install_config(); vnstat_install_deinstall(); + -- cgit v1.2.3 From fa3eedf5db1d2c3668d5b3425b945a7708a44018 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Thu, 23 Jan 2014 01:16:03 -0500 Subject: fixed uninstall of vnstat.con --- config/vnstat2/vnstat2.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/vnstat2/vnstat2.inc b/config/vnstat2/vnstat2.inc index b200a388..78259ea3 100644 --- a/config/vnstat2/vnstat2.inc +++ b/config/vnstat2/vnstat2.inc @@ -11,7 +11,7 @@ function vnstat_install_deinstall() { exec("rm /usr/local/www/vnstati.php"); exec("rm /usr/local/www/vnstat2_img.php"); exec("rm -d -R /usr/local/pkg/vnstat2"); - exec("rm /usr/local/etc/vnstat2.conf"); + exec("rm /usr/local/etc/vnstat.conf"); // Remove vnstat cron entry from config.xml vnstat2_install_cron(false); -- cgit v1.2.3 From 23688222d32aa23af5d38473e9b65a1b5a6c4ac4 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Thu, 23 Jan 2014 05:17:23 -0500 Subject: Typos dansguardian.inc --- config/dansguardian/dansguardian.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/dansguardian/dansguardian.inc b/config/dansguardian/dansguardian.inc index ad6e6482..18c9f171 100755 --- a/config/dansguardian/dansguardian.inc +++ b/config/dansguardian/dansguardian.inc @@ -934,8 +934,8 @@ EOF; } else{ if ($dansguardian_blacklist['cron']=="force_download"){ - log_error("Blacklist udpate process started"); - file_notice("Dansguardian - Blacklist udpate process started",""); + log_error("Blacklist update process started"); + file_notice("Dansguardian - Blacklist update process started",""); file_put_contents("/root/dansguardian_custom.script",base64_decode($dansguardian_blacklist['custom_script']),LOCK_EX); if ($dansguardian_blacklist['enable_custom_script'] && $dansguardian_blacklist['custom_script'] != "") mwexec_bg("/root/dansguardian_custom.script"); -- cgit v1.2.3 From 2dff0d13d21f2a52b9adbeb8bddfdcb179df76cb Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sat, 25 Jan 2014 14:19:50 -0500 Subject: Fix to return to same interface when unblocking a host. --- config/snort/snort_alerts.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/snort/snort_alerts.php b/config/snort/snort_alerts.php index f232f897..7e8c3a6c 100755 --- a/config/snort/snort_alerts.php +++ b/config/snort/snort_alerts.php @@ -421,7 +421,7 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { /* Add icon for auto-removing from Blocked Table if required */ if (isset($tmpblocked[$fields[6]])) { $alert_ip_src .= " "; - $alert_ip_src .= " + $alert_ip_src .= " \"Remove"; } /* IP SRC Port */ @@ -448,7 +448,7 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { /* Add icon for auto-removing from Blocked Table if required */ if (isset($tmpblocked[$fields[8]])) { $alert_ip_dst .= " "; - $alert_ip_dst .= " + $alert_ip_dst .= " \"Remove"; } /* IP DST Port */ -- cgit v1.2.3 From 3e99c60333f4a1cd5f5c57f1ecc36e857d653485 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sat, 25 Jan 2014 20:53:15 -0500 Subject: Mimic all DNS lookup features of F/W log with Alerts --- config/snort/snort_alerts.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/config/snort/snort_alerts.php b/config/snort/snort_alerts.php index 7e8c3a6c..8b00bf00 100755 --- a/config/snort/snort_alerts.php +++ b/config/snort/snort_alerts.php @@ -264,16 +264,14 @@ include_once("head.inc"); ?> - + \n"; -?> - -' . $pgtitle . '

    ';} +if($pfsense_stable == 'yes'){echo '

    ' . $pgtitle . '

    ';} /* Display Alert message */ if ($input_errors) { print_input_errors($input_errors); // TODO: add checks @@ -403,8 +401,11 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { $alert_ip_src = $fields[6]; /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_src = str_replace(":", ":​", $alert_ip_src); - /* Add Reverse DNS lookup icon */ - $alert_ip_src .= "
    "; + /* Add Reverse DNS lookup icons */ + $alert_ip_src .= "
    "; + $alert_ip_src .= ""; + $alert_ip_src .= " "; $alert_ip_src .= ""; /* Add icons for auto-adding to Suppress List if appropriate */ @@ -430,8 +431,11 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { $alert_ip_dst = $fields[8]; /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_dst = str_replace(":", ":​", $alert_ip_dst); - /* Add Reverse DNS lookup icon */ - $alert_ip_dst .= "
    "; + /* Add Reverse DNS lookup icons */ + $alert_ip_dst .= "
    "; + $alert_ip_dst .= ""; + $alert_ip_dst .= " "; $alert_ip_dst .= ""; /* Add icons for auto-adding to Suppress List if appropriate */ -- cgit v1.2.3 From 6e4487e155682494cf72e59cf8423f60c05a35c0 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Sun, 26 Jan 2014 13:23:31 -0200 Subject: apcupsd - add script to send mail reports --- config/apcupsd/apcupsd_mail.php | 96 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 config/apcupsd/apcupsd_mail.php diff --git a/config/apcupsd/apcupsd_mail.php b/config/apcupsd/apcupsd_mail.php new file mode 100755 index 00000000..3b1e40be --- /dev/null +++ b/config/apcupsd/apcupsd_mail.php @@ -0,0 +1,96 @@ + + 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. +*/ + +require_once("pkg-utils.inc"); +require_once("globals.inc"); +require_once("phpmailer/class.phpmailer.php"); + +global $config, $g; + +$apcstatus[killpower] = "UPS now committed to shut down"; +$apcstatus[commfailure] = "Communications with UPS lost"; +$apcstatus[commok] = "Communciations with UPS restored"; +$apcstatus[onbattery] = "Power failure. Running on UPS batteries"; +$apcstatus[offbattery] = "Power has returned..."; +$apcstatus[failing] = "UPS battery power exhaused. Doing shutdown"; +$apcstatus[timeout] = "UPS battery runtime limit exceeded. Doing shutdown"; +$apcstatus[loadlimit] = "UPS battery discharge limit reached. Doing shutdown"; +$apcstatus[runlimit] = "UPS battery runtime percent reached. Doing shutdown"; +$apcstatus[doreboot] = "Beginning Reboot Sequence"; +$apcstatus[doshutdown] = "Beginning Shutdown Sequence"; +$apcstatus[annoyme] = "Power problems please logoff"; +$apcstatus[emergency] = "Emergency Shutdown. Possible UPS battery failure"; +$apcstatus[changeme] = "Emergency! UPS batteries have failed. Change them NOW"; +$apcstatus[remotedown] = "Remote Shutdown. Beginning Shutdown Sequence"; + +if (empty($argv[1]) || empty($apcstatus["$argv[1]"])) + return; + +$apcsubject = $apcstatus["$argv[1]"]; + +if (empty($config['notifications']['smtp']['ipaddress'])) + return; + +$mail = new PHPMailer(); +$mail->IsSMTP(); +$mail->Host = $config['notifications']['smtp']['ipaddress']; + +if ($config['notifications']['smtp']['ssl'] == "checked") + $mail->SMTPSecure = "ssl"; + +$mail->Port = empty($config['notifications']['smtp']['port']) ? 25 : $config['notifications']['smtp']['port']; + +if($config['notifications']['smtp']['username'] && + $config['notifications']['smtp']['password']) { + $mail->SMTPAuth = true; + $mail->Username = $config['notifications']['smtp']['username']; + $mail->Password = $config['notifications']['smtp']['password']; +} + +$mail->ContentType = 'text/html'; +$mail->IsHTML(true); +$mail->AddReplyTo($config['notifications']['smtp']['fromaddress'], "Apcupsd"); +$mail->SetFrom($config['notifications']['smtp']['fromaddress'], "Apcupsd"); +$address = $config['notifications']['smtp']['notifyemailaddress']; +$mail->AddAddress($address, "Apcupsd Recipient"); +$mail->Subject = "{$config['system']['hostname']}.{$config['system']['domain']} - {$apcsubject}"; + +putenv("PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"); +$mail->Body = "
    ";
    +$ph = popen('apcaccess status 2>&1', "r" );
    +while ($line = fgets($ph)) $mail->Body .= htmlspecialchars($line);
    +pclose($ph);
    +$mail->Body .= "
    "; + +if(!$mail->Send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} + +?> + -- cgit v1.2.3 From 4f0d3bd5e09fb8ff371a6b56830b155adc48fed1 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Sun, 26 Jan 2014 13:33:00 -0200 Subject: apcupsd - modifying default scripts to send mail reports on install package process --- config/apcupsd/apcupsd.inc | 33 ++++++++++++++++++++++++++++++++- config/apcupsd/apcupsd.xml | 7 ++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/config/apcupsd/apcupsd.inc b/config/apcupsd/apcupsd.inc index 9abc23ba..08ddd17e 100644 --- a/config/apcupsd/apcupsd.inc +++ b/config/apcupsd/apcupsd.inc @@ -39,6 +39,7 @@ require_once("globals.inc"); function php_install_apcupsd(){ sync_package_apcupsd(); + apccontrol_scripts_install(); } function php_deinstall_apcupsd(){ @@ -185,7 +186,37 @@ function sync_package_apcupsd(){ unlink($apcupsd_rcfile); } } - + conf_mount_ro(); } + +function apccontrol_scripts_install(){ + + // check pfsense version + $pfs_version = substr(trim(file_get_contents("/etc/version")),0,3); + if ($pfs_version > 2.0){ + define('APCUPSD_BASE', '/usr/pbi/apcupsd-' . php_uname("m")); + } + else { + define('APCUPSD_BASE', '/usr/local'); + } + + $apccontrol_scripts = array("offbattery","onbattery","commfailure","commok","changeme"); + foreach($apccontrol_scripts as $apccontrol_script) { + + $apccontrol_script_file=<< /dev/null + +exit 0 + +EOF; + + file_put_contents(APCUPSD_BASE . "/etc/apcupsd/" . $apccontrol_script, $apccontrol_script_file, LOCK_EX); + } + +} + ?> + diff --git a/config/apcupsd/apcupsd.xml b/config/apcupsd/apcupsd.xml index 8674af61..ecd979f6 100644 --- a/config/apcupsd/apcupsd.xml +++ b/config/apcupsd/apcupsd.xml @@ -60,6 +60,11 @@ /usr/local/pkg/ 0755 + + http://www.pfsense.org/packages/config/apcupsd/apcupsd_mail.php + /usr/local/pkg/ + 0755 + Apcupsd Setup Apcupsd specific settings @@ -322,7 +327,7 @@ UPSTYPE DEVICE Description
    - sync_package_apcupsd(); + php_install_apcupsd(); -- cgit v1.2.3 From 9284e7398d6f6f3a1a3f12748f52fcc51331768c Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sun, 26 Jan 2014 11:46:04 -0500 Subject: Mimic all DNS lookup features of F/W log with Blocked IPs --- config/snort/snort_blocked.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/config/snort/snort_blocked.php b/config/snort/snort_blocked.php index 8d106a90..f190413c 100644 --- a/config/snort/snort_blocked.php +++ b/config/snort/snort_blocked.php @@ -127,6 +127,7 @@ include_once("head.inc"); ?> + {$counter} - {$tmp_ip}  + {$tmp_ip}
    +
    + + {$blocked_desc} -- cgit v1.2.3 From e80ce28e1110ce1ec1e22d4e26336a119fa9ae47 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Mon, 27 Jan 2014 04:52:44 -0500 Subject: Menu name capitalization --- config/vnstat2/vnstat2.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/vnstat2/vnstat2.xml b/config/vnstat2/vnstat2.xml index 049c11ca..18d3f911 100644 --- a/config/vnstat2/vnstat2.xml +++ b/config/vnstat2/vnstat2.xml @@ -12,7 +12,7 @@ /pkg_edit.php?xml=vnstat2.xml&id=0 /usr/local/pkg/vnstat2/vnstat2.inc - vnstat2 + Vnstat2
    Status
    /pkg_edit.php?xml=vnstat2.xml&id=0 -- cgit v1.2.3 From 03ac95899a4c7f4e883fbddd29296c442787ac47 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 27 Jan 2014 20:24:52 -0500 Subject: Add enable/disable for decoder & preproc rules --- config/snort/snort.inc | 116 ++++++------- config/snort/snort_migrate_config.php | 38 +++- config/snort/snort_post_install.php | 43 +---- config/snort/snort_rules.php | 318 +++++++++++++++++++++++++--------- config/snort/snort_rules_edit.php | 7 +- 5 files changed, 336 insertions(+), 186 deletions(-) diff --git a/config/snort/snort.inc b/config/snort/snort.inc index 52aaed2a..d983d995 100755 --- a/config/snort/snort.inc +++ b/config/snort/snort.inc @@ -5,7 +5,7 @@ * Copyright (C) 2006 Scott Ullrich * Copyright (C) 2009-2010 Robert Zelaya * Copyright (C) 2011-2012 Ermal Luci - * Copyright (C) 2013 Bill Meeks + * Copyright (C) 2013,2014 Bill Meeks * part of pfSense * All rights reserved. * @@ -1739,34 +1739,32 @@ function snort_write_enforcing_rules_file($rule_map, $rule_path) { } } -function snort_load_sid_mods($sids, $value) { +function snort_load_sid_mods($sids) { /*****************************************/ /* This function parses the string of */ - /* SID values in $sids and returns an */ - /* array with the SID as the key and */ - /* value. The SID values in $sids are */ + /* GID:SID values in $sids and returns */ + /* an array with the GID and SID as the */ + /* keys. The values in $sids are */ /* assumed to be delimited by "||". */ /* */ - /* $sids ==> string of SID values from */ - /* saved config file. */ + /* $sids ==> string of GID:SID values */ + /* from the config file. */ /* */ - /* $value ==> type of mod (enable or */ - /* disable). Not currently */ - /* utilized, but maintained */ - /* so as not to break legacy */ - /* code elsewhere. */ + /* Returns ==> a multidimensional array */ + /* with GID and SID as the */ + /* keys ($result[GID][SID]) */ /*****************************************/ $result = array(); - if (empty($sids) || empty($value)) + if (empty($sids)) return $result; $tmp = explode("||", $sids); foreach ($tmp as $v) { - if (preg_match('/\s\d+/', $v, $match)) { - if (!is_array($result[trim($match[0])])) - $result[trim($match[0])] = array(); - $result[trim($match[0])] = trim($match[0]); + if (preg_match('/(\d+)\s*:\s*(\d+)/', $v, $match)) { + if (!is_array($result[$match[1]])) + $result[$match[1]] = array(); + $result[$match[1]][$match[2]] = "{$match[1]}:{$match[2]}"; } } unset($tmp); @@ -1791,15 +1789,15 @@ function snort_modify_sids(&$rule_map, $snortcfg) { /* Load up our enablesid and disablesid */ /* arrays with lists of modified SIDs */ - $enablesid = snort_load_sid_mods($snortcfg['rule_sid_on'], "enablesid"); - $disablesid = snort_load_sid_mods($snortcfg['rule_sid_off'], "disablesid"); + $enablesid = snort_load_sid_mods($snortcfg['rule_sid_on']); + $disablesid = snort_load_sid_mods($snortcfg['rule_sid_off']); /* Turn on any rules that need to be */ /* forced "on" with enablesid mods. */ if (!empty($enablesid)) { foreach ($rule_map as $k1 => $rulem) { foreach ($rulem as $k2 => $v) { - if (in_array($k2, $enablesid) && $v['disabled'] == 1) { + if (isset($enablesid[$k1][$k2]) && $v['disabled'] == 1) { $rule_map[$k1][$k2]['rule'] = ltrim($v['rule'], " \t#"); $rule_map[$k1][$k2]['disabled'] = 0; } @@ -1812,7 +1810,7 @@ function snort_modify_sids(&$rule_map, $snortcfg) { if (!empty($disablesid)) { foreach ($rule_map as $k1 => $rulem) { foreach ($rulem as $k2 => $v) { - if (in_array($k2, $disablesid) && $v['disabled'] == 0) { + if (isset($disablesid[$k1][$k2]) && $v['disabled'] == 0) { $rule_map[$k1][$k2]['rule'] = "# " . $v['rule']; $rule_map[$k1][$k2]['disabled'] = 1; } @@ -2209,12 +2207,13 @@ function snort_prepare_rule_files($snortcfg, $snortcfgdir) { /* to be written. */ /***********************************************************/ - global $rebuild_rules; + global $g, $rebuild_rules; $snortdir = SNORTDIR; $flowbit_rules_file = FLOWBITS_FILENAME; $snort_enforcing_rules_file = ENFORCING_RULES_FILENAME; $no_rules_defined = true; + $enabled_rules = array(); /* If there is no reason to rebuild the rules, exit to save time. */ if (!$rebuild_rules) @@ -2223,14 +2222,37 @@ function snort_prepare_rule_files($snortcfg, $snortcfgdir) { /* Log a message for rules rebuild in progress */ log_error(gettext("[Snort] Updating rules configuration for: " . snort_get_friendly_interface($snortcfg['interface']) . " ...")); + /* Enable all, some or none of the SDF rules depending on setting. */ + if ($snortcfg['sensitive_data'] == 'on' && $snortcfg['protect_preproc_rules'] != 'on') { + if (file_exists(SNORTDIR."/preproc_rules/sensitive-data.rules")) { + $sdf_alert_pattern="(".preg_replace("/,/","|",$snortcfg['sdf_alert_data_type']).")"; + $sd_tmp_file=file(SNORTDIR."/preproc_rules/sensitive-data.rules"); + $sd_tmp_new_file=""; + foreach ($sd_tmp_file as $sd_tmp_line) + $sd_tmp_new_file.=preg_match("/$sdf_alert_pattern/i",$sd_tmp_line) ? $sd_tmp_line : ""; + file_put_contents("{$snortcfgdir}/preproc_rules/sensitive-data.rules",$sd_tmp_new_file,LOCK_EX); + } + } + elseif ($snortcfg['sensitive_data'] != 'on' && $snortcfg['protect_preproc_rules'] != 'on') { + /* Setting is "off", so disable all SDF rules. */ + $sedcmd = '/^alert.*classtype:sdf/s/^/#/'; + @file_put_contents("{$g['tmp_path']}/sedcmd", $sedcmd); + mwexec("/usr/bin/sed -I '' -f {$g['tmp_path']}/sedcmd {$snortcfgdir}/preproc_rules/sensitive-data.rules"); + @unlink("{$g['tmp_path']}/sedcmd"); + } + + /* Load the decoder, preprocessor and sensitive-data */ + /* rules from the interface's preproc_rule directory */ + /* into the $enabled_rules array. */ + $enabled_rules = snort_load_rules_map("{$snortcfgdir}/preproc_rules/"); + /* Only rebuild rules if some are selected or an IPS Policy is enabled */ if (!empty($snortcfg['rulesets']) || $snortcfg['ips_policy_enable'] == 'on') { - $enabled_rules = array(); $enabled_files = array(); $all_rules = array(); $no_rules_defined = false; - /* Load up all the rules into a Rules Map array. */ + /* Load up all the text rules into a Rules Map array. */ $all_rules = snort_load_rules_map("{$snortdir}/rules/"); /* Create an array with the filenames of the enabled */ @@ -2320,7 +2342,8 @@ function snort_prepare_rule_files($snortcfg, $snortcfgdir) { /* Just put an empty file to always have the file present */ snort_write_flowbit_rules_file(array(), "{$snortcfgdir}/rules/{$flowbit_rules_file}"); } else { - snort_write_enforcing_rules_file(array(), "{$snortcfgdir}/rules/{$snort_enforcing_rules_file}"); + /* No regular rules or policy were selected, so just use the decoder and preproc rules */ + snort_write_enforcing_rules_file($enabled_rules, "{$snortcfgdir}/rules/{$snort_enforcing_rules_file}"); snort_write_flowbit_rules_file(array(), "{$snortcfgdir}/rules/{$flowbit_rules_file}"); } @@ -2333,7 +2356,7 @@ function snort_prepare_rule_files($snortcfg, $snortcfgdir) { /* Log a warning if the interface has no rules defined or enabled */ if ($no_rules_defined) - log_error(gettext("[Snort] Warning - no text rules selected for: " . snort_get_friendly_interface($snortcfg['interface']) . " ...")); + log_error(gettext("[Snort] Warning - no text rules or IPS-Policy selected for: " . snort_get_friendly_interface($snortcfg['interface']) . " ...")); /* Build a new sid-msg.map file from the enabled */ /* rules and copy it to the interface directory. */ @@ -3219,43 +3242,9 @@ EOD; $snort_misc_include_rules .= "include {$snortcfgdir}/reference.config\n"; if (file_exists("{$snortcfgdir}/classification.config")) $snort_misc_include_rules .= "include {$snortcfgdir}/classification.config\n"; - if (is_dir("{$snortcfgdir}/preproc_rules")) { - if ($snortcfg['sensitive_data'] == 'on' && $protect_preproc_rules == "off") { - $sedcmd = '/^#alert.*classtype:sdf/s/^#//'; - if (file_exists("{$snortcfgdir}/preproc_rules/sensitive-data.rules")){ - $snort_misc_include_rules .= "include \$PREPROC_RULE_PATH/sensitive-data.rules\n"; - #enable only selected sensitive data - if (file_exists(SNORTDIR."/preproc_rules/sensitive-data.rules")){ - $sdf_alert_pattern="(".preg_replace("/,/","|",$snortcfg['sdf_alert_data_type']).")"; - $sd_tmp_file=file(SNORTDIR."/preproc_rules/sensitive-data.rules"); - $sd_tmp_new_file=""; - foreach ($sd_tmp_file as $sd_tmp_line) - $sd_tmp_new_file.=preg_match("/$sdf_alert_pattern/i",$sd_tmp_line) ? $sd_tmp_line : ""; - file_put_contents("{$snortcfgdir}/preproc_rules/sensitive-data.rules",$sd_tmp_new_file,LOCK_EX); - } - } - } else - $sedcmd = '/^alert.*classtype:sdf/s/^/#/'; - if (file_exists("{$snortcfgdir}/preproc_rules/decoder.rules") && - file_exists("{$snortcfgdir}/preproc_rules/preprocessor.rules") && $protect_preproc_rules == "off") { - @file_put_contents("{$g['tmp_path']}/sedcmd", $sedcmd); - mwexec("/usr/bin/sed -I '' -f {$g['tmp_path']}/sedcmd {$snortcfgdir}/preproc_rules/preprocessor.rules"); - mwexec("/usr/bin/sed -I '' -f {$g['tmp_path']}/sedcmd {$snortcfgdir}/preproc_rules/decoder.rules"); - @unlink("{$g['tmp_path']}/sedcmd"); - $snort_misc_include_rules .= "include \$PREPROC_RULE_PATH/decoder.rules\n"; - $snort_misc_include_rules .= "include \$PREPROC_RULE_PATH/preprocessor.rules\n"; - } else if (file_exists("{$snortcfgdir}/preproc_rules/decoder.rules") && - file_exists("{$snortcfgdir}/preproc_rules/preprocessor.rules") && $protect_preproc_rules == "on") { - $snort_misc_include_rules .= "include \$PREPROC_RULE_PATH/decoder.rules\n"; - $snort_misc_include_rules .= "include \$PREPROC_RULE_PATH/preprocessor.rules\n"; - } - else { - $snort_misc_include_rules .= "config autogenerate_preprocessor_decoder_rules\n"; - log_error("[Snort] Seems preprocessor/decoder rules are missing, enabling autogeneration of them"); - } - } else { + if (!file_exists("{$snortcfgdir}/preproc_rules/decoder.rules") || !file_exists("{$snortcfgdir}/preproc_rules/preprocessor.rules")) { $snort_misc_include_rules .= "config autogenerate_preprocessor_decoder_rules\n"; - log_error("[Snort] Seems preprocessor/decoder rules are missing, enabling autogeneration of them"); + log_error("[Snort] Seems preprocessor and/or decoder rules are missing, enabling autogeneration of them in conf file."); } /* generate rule sections to load */ @@ -3673,9 +3662,8 @@ EOD; ipvar HOME_NET [{$home_net}] ipvar EXTERNAL_NET [{$external_net}] -# Define Rule Paths # +# Define Rule Path # var RULE_PATH {$snortcfgdir}/rules -var PREPROC_RULE_PATH {$snortcfgdir}/preproc_rules # Define Servers # {$ipvardef} diff --git a/config/snort/snort_migrate_config.php b/config/snort/snort_migrate_config.php index 61989e99..1a812b24 100644 --- a/config/snort/snort_migrate_config.php +++ b/config/snort/snort_migrate_config.php @@ -1,8 +1,8 @@ "console") $snort_gui_include = true; - include("/usr/local/pkg/snort/snort_check_for_rule_updates.php"); + include('/usr/local/pkg/snort/snort_check_for_rule_updates.php'); update_status(gettext("Generating snort.conf configuration file from saved settings...")); $rebuild_rules = true; diff --git a/config/snort/snort_rules.php b/config/snort/snort_rules.php index a82d81d2..4307c8de 100755 --- a/config/snort/snort_rules.php +++ b/config/snort/snort_rules.php @@ -5,6 +5,7 @@ * Copyright (C) 2004, 2005 Scott Ullrich * Copyright (C) 2008, 2009 Robert Zelaya * Copyright (C) 2011 Ermal Luci + * Copyright (C) 2013, 2014 Bill Meeks * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,7 +30,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ - require_once("guiconfig.inc"); require_once("/usr/local/pkg/snort/snort.inc"); @@ -51,7 +51,6 @@ if (is_null($id)) { } if (isset($id) && $a_rule[$id]) { - $pconfig['enable'] = $a_rule[$id]['enable']; $pconfig['interface'] = $a_rule[$id]['interface']; $pconfig['rulesets'] = $a_rule[$id]['rulesets']; if (!empty($a_rule[$id]['customrules'])) @@ -109,8 +108,20 @@ $snort_uuid = $a_rule[$id]['uuid']; $snortcfgdir = "{$snortdir}/snort_{$snort_uuid}_{$if_real}"; $snortdownload = $config['installedpackages']['snortglobal']['snortdownload']; $emergingdownload = $config['installedpackages']['snortglobal']['emergingthreats']; +$etprodownload = $config['installedpackages']['snortglobal']['emergingthreats_pro']; $categories = explode("||", $pconfig['rulesets']); +// add the standard rules files to the categories list +$categories[] = "custom.rules"; +$categories[] = "decoder.rules"; +$categories[] = "preprocessor.rules"; +$categories[] = "sensitive-data.rules"; +if (!empty($a_rule[$id]['ips_policy'])) + $categories[] = "IPS Policy - " . ucfirst($a_rule[$id]['ips_policy']); +if ($a_rule[$id]['autoflowbitrules'] == 'on') + $categories[] = "Auto-Flowbit Rules"; +natcasesort($categories); + if ($_GET['openruleset']) $currentruleset = $_GET['openruleset']; else if ($_POST['openruleset']) @@ -118,13 +129,6 @@ else if ($_POST['openruleset']) else $currentruleset = $categories[0]; -if (empty($categories[0]) && ($currentruleset != "custom.rules") && ($currentruleset != "Auto-Flowbit Rules")) { - if (!empty($a_rule[$id]['ips_policy'])) - $currentruleset = "IPS Policy - " . ucfirst($a_rule[$id]['ips_policy']); - else - $currentruleset = "custom.rules"; -} - /* One last sanity check -- if the rules directory is empty, default to loading custom rules */ $tmp = glob("{$snortdir}/rules/*.rules"); if (empty($tmp)) @@ -136,58 +140,72 @@ if ($currentruleset != 'custom.rules') { // Read the current rules file into our rules map array. // If it is the auto-flowbits file, set the full path. if ($currentruleset == "Auto-Flowbit Rules") - $rulefile = "{$snortcfgdir}/rules/" . FLOWBITS_FILENAME; + $rules_map = snort_load_rules_map("{$snortcfgdir}/rules/" . FLOWBITS_FILENAME); // Test for the special case of an IPS Policy file. - if (substr($currentruleset, 0, 10) == "IPS Policy") + elseif (substr($currentruleset, 0, 10) == "IPS Policy") $rules_map = snort_load_vrt_policy($a_rule[$id]['ips_policy']); - elseif (!file_exists($rulefile)) - $input_errors[] = gettext("{$currentruleset} seems to be missing!!! Please verify rules files have been downloaded, then go to the Categories tab and save the rule set again."); - else + // Test for preproc_rules file and set the full path. + elseif (file_exists("{$snortdir}/preproc_rules/{$currentruleset}")) + $rules_map = snort_load_rules_map("{$snortdir}/preproc_rules/{$currentruleset}"); + // Test for existence of regular text rules file and load it. + elseif (file_exists($rulefile)) $rules_map = snort_load_rules_map($rulefile); + else + $input_errors[] = gettext("{$currentruleset} seems to be missing!!! Please verify rules files have been downloaded, then go to the Categories tab and save the rule set again."); } /* Load up our enablesid and disablesid arrays with enabled or disabled SIDs */ -$enablesid = snort_load_sid_mods($a_rule[$id]['rule_sid_on'], "enablesid"); -$disablesid = snort_load_sid_mods($a_rule[$id]['rule_sid_off'], "disablesid"); +$enablesid = snort_load_sid_mods($a_rule[$id]['rule_sid_on']); +$disablesid = snort_load_sid_mods($a_rule[$id]['rule_sid_off']); if ($_GET['act'] == "toggle" && $_GET['ids'] && !empty($rules_map)) { + // Get the GID tag embedded in the clicked rule icon. + $gid = $_GET['gid']; + // Get the SID tag embedded in the clicked rule icon. $sid= $_GET['ids']; // See if the target SID is in our list of modified SIDs, // and toggle it if present; otherwise, add it to the // appropriate list. - if (isset($enablesid[$sid])) { - unset($enablesid[$sid]); - if (!isset($disablesid[$sid])) - $disablesid[$sid] = "disablesid"; + if (isset($enablesid[$gid][$sid])) { + unset($enablesid[$gid][$sid]); + if (!isset($disablesid[$gid][$sid])) + $disablesid[$gid][$sid] = "disablesid"; } - elseif (isset($disablesid[$sid])) { - unset($disablesid[$sid]); - if (!isset($enablesid[$sid])) - $enablesid[$sid] = "enablesid"; + elseif (isset($disablesid[$gid][$sid])) { + unset($disablesid[$gid][$sid]); + if (!isset($enablesid[$gid][$sid])) + $enablesid[$gid][$sid] = "enablesid"; } else { - if ($rules_map[1][$sid]['disabled'] == 1) - $enablesid[$sid] = "enablesid"; + if ($rules_map[$gid][$sid]['disabled'] == 1) + $enablesid[$gid][$sid] = "enablesid"; else - $disablesid[$sid] = "disablesid"; + $disablesid[$gid][$sid] = "disablesid"; } // Write the updated enablesid and disablesid values to the config file. $tmp = ""; - foreach ($enablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_on'] = $tmp; else unset($a_rule[$id]['rule_sid_on']); + $tmp = ""; - foreach ($disablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_off'] = $tmp; else @@ -197,7 +215,7 @@ if ($_GET['act'] == "toggle" && $_GET['ids'] && !empty($rules_map)) { write_config(); $_GET['openruleset'] = $currentruleset; - $anchor = "rule_{$sid}"; + $anchor = "rule_{$gid}_{$sid}"; } if ($_GET['act'] == "disable_all" && !empty($rules_map)) { @@ -205,28 +223,37 @@ if ($_GET['act'] == "disable_all" && !empty($rules_map)) { // Mark all rules in the currently selected category "disabled". foreach (array_keys($rules_map) as $k1) { foreach (array_keys($rules_map[$k1]) as $k2) { - if (isset($enablesid[$k2])) - unset($enablesid[$k2]); - $disablesid[$k2] = "disablesid"; + if (isset($enablesid[$k1][$k2])) + unset($enablesid[$k1][$k2]); + $disablesid[$k1][$k2] = "disablesid"; } } + // Write the updated enablesid and disablesid values to the config file. $tmp = ""; - foreach ($enablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_on'] = $tmp; else unset($a_rule[$id]['rule_sid_on']); + $tmp = ""; - foreach ($disablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_off'] = $tmp; else unset($a_rule[$id]['rule_sid_off']); + write_config(); $_GET['openruleset'] = $currentruleset; @@ -239,28 +266,36 @@ if ($_GET['act'] == "enable_all" && !empty($rules_map)) { // Mark all rules in the currently selected category "enabled". foreach (array_keys($rules_map) as $k1) { foreach (array_keys($rules_map[$k1]) as $k2) { - if (isset($disablesid[$k2])) - unset($disablesid[$k2]); - $enablesid[$k2] = "enablesid"; + if (isset($disablesid[$k1][$k2])) + unset($disablesid[$k1][$k2]); + $enablesid[$k1][$k2] = "enablesid"; } } // Write the updated enablesid and disablesid values to the config file. $tmp = ""; - foreach ($enablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_on'] = $tmp; else unset($a_rule[$id]['rule_sid_on']); + $tmp = ""; - foreach ($disablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_off'] = $tmp; else unset($a_rule[$id]['rule_sid_off']); + write_config(); $_GET['openruleset'] = $currentruleset; @@ -273,30 +308,38 @@ if ($_GET['act'] == "resetcategory" && !empty($rules_map)) { // Reset any modified SIDs in the current rule category to their defaults. foreach (array_keys($rules_map) as $k1) { foreach (array_keys($rules_map[$k1]) as $k2) { - if (isset($enablesid[$k2])) - unset($enablesid[$k2]); - if (isset($disablesid[$k2])) - unset($disablesid[$k2]); + if (isset($enablesid[$k1][$k2])) + unset($enablesid[$k1][$k2]); + if (isset($disablesid[$k1][$k2])) + unset($disablesid[$k1][$k2]); } } // Write the updated enablesid and disablesid values to the config file. $tmp = ""; - foreach ($enablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_on'] = $tmp; else unset($a_rule[$id]['rule_sid_on']); + $tmp = ""; - foreach ($disablesid as $k => $v) { - $tmp .= "||{$v} {$k}"; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; } + $tmp = rtrim($tmp, "||"); + if (!empty($tmp)) $a_rule[$id]['rule_sid_off'] = $tmp; else unset($a_rule[$id]['rule_sid_off']); + write_config(); $_GET['openruleset'] = $currentruleset; @@ -416,15 +459,15 @@ if ($savemsg) { display_top_tabs($tab_array); echo ''; echo ''; - $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface ");; - $tab_array = array(); - $tab_array[] = array($menu_iface . gettext("Settings"), false, "/snort/snort_interfaces_edit.php?id={$id}"); - $tab_array[] = array($menu_iface . gettext("Categories"), false, "/snort/snort_rulesets.php?id={$id}"); - $tab_array[] = array($menu_iface . gettext("Rules"), true, "/snort/snort_rules.php?id={$id}"); - $tab_array[] = array($menu_iface . gettext("Variables"), false, "/snort/snort_define_servers.php?id={$id}"); - $tab_array[] = array($menu_iface . gettext("Preprocessors"), false, "/snort/snort_preprocessors.php?id={$id}"); - $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/snort/snort_barnyard.php?id={$id}"); - display_top_tabs($tab_array); + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface "); + $tab_array = array(); + $tab_array[] = array($menu_iface . gettext("Settings"), false, "/snort/snort_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), false, "/snort/snort_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), true, "/snort/snort_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), false, "/snort/snort_define_servers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Preprocessors"), false, "/snort/snort_preprocessors.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/snort/snort_barnyard.php?id={$id}"); + display_top_tabs($tab_array); ?>
    @@ -435,19 +478,14 @@ if ($savemsg) {   

    " . - gettext("Snort must be restarted to activate any SID enable/disable changes made on this tab."); ?> + gettext("Snort must be restarted to activate any rule enable/disable changes made on this tab."); ?> + + - - + + + @@ -558,6 +599,7 @@ if ($savemsg) { + @@ -579,24 +621,24 @@ if ($savemsg) { $counter = $enable_cnt = $disable_cnt = 0; foreach ($rules_map as $k1 => $rulem) { foreach ($rulem as $k2 => $v) { - $sid = snort_get_sid($v['rule']); - $gid = snort_get_gid($v['rule']); + $sid = $k2; + $gid = $k1; - if (isset($disablesid[$sid])) { + if (isset($disablesid[$gid][$sid])) { $textss = ""; $textse = ""; $iconb = "icon_reject_d.gif"; $disable_cnt++; $title = gettext("Disabled by user. Click to toggle to enabled state"); } - elseif (($v['disabled'] == 1) && (!isset($enablesid[$sid]))) { + elseif (($v['disabled'] == 1) && (!isset($enablesid[$gid][$sid]))) { $textss = ""; $textse = ""; $iconb = "icon_block_d.gif"; $disable_cnt++; $title = gettext("Disabled by default. Click to toggle to enabled state"); } - elseif (isset($enablesid[$sid])) { + elseif (isset($enablesid[$gid][$sid])) { $textss = $textse = ""; $iconb = "icon_reject.gif"; $enable_cnt++; @@ -630,12 +672,15 @@ if ($savemsg) { $message = snort_get_msg($v['rule']); echo " + @@ -673,6 +718,119 @@ if ($savemsg) { ?>
     
    $textss - + $textse + {$textss}{$gid}{$textse} + {$textss}{$sid}{$textse}
    + + + + + + + + + + + + + + + + + + + + + + + + + + $rulem) { + foreach ($rulem as $k2 => $v) { + $sid = snort_get_sid($v['rule']); + $gid = snort_get_gid($v['rule']); + if (isset($disablesid[$gid][$sid])) { + $textss = ""; + $textse = ""; + $iconb = "icon_reject_d.gif"; + $disable_cnt++; + $title = gettext("Disabled by user. Click to toggle to enabled state"); + } + elseif (($v['disabled'] == 1) && (!isset($enablesid[$gid][$sid]))) { + $textss = ""; + $textse = ""; + $iconb = "icon_block_d.gif"; + $disable_cnt++; + $title = gettext("Disabled by default. Click to toggle to enabled state"); + } + elseif (isset($enablesid[$gid][$sid])) { + $textss = $textse = ""; + $iconb = "icon_reject.gif"; + $enable_cnt++; + $title = gettext("Enabled by user. Click to toggle to disabled state"); + } + else { + $textss = $textse = ""; + $iconb = "icon_block.gif"; + $enable_cnt++; + $title = gettext("Enabled by default. Click to toggle to disabled state"); + } + $message = snort_get_msg($v['rule']); + $matches = array(); + if (preg_match('/(?:classtype\b\s*:)\s*(\S*\s*;)/iU', $v['rule'], $matches)) + $classtype = trim($matches[1], " ;"); + else + $classtype = "No Classtype Defined"; + $matches = array(); + if (preg_match_all('/(\S*-ips)(?:\s*drop|alert)(?:,|\s*|;)/i', $v['rule'], $matches)) + $policy = implode("
    ", $matches[1]); + else + $policy = "none"; + + echo " + + + + + "; + ?> + + + + +
      + + title="" width="17" height="17" border="0">
    $textss + + + $textse + + {$textss}{$gid}{$textse} + + {$textss}{$sid}{$textse} + + {$textss}{$classtype} + + {$textss}{$policy} + + {$textss}{$message}{$textse} + + + " width="17" height="17" border="0"> +
    + diff --git a/config/snort/snort_rules_edit.php b/config/snort/snort_rules_edit.php index c0087464..28deccd5 100755 --- a/config/snort/snort_rules_edit.php +++ b/config/snort/snort_rules_edit.php @@ -4,6 +4,7 @@ * * Copyright (C) 2004, 2005 Scott Ullrich * Copyright (C) 2011 Ermal Luci + * Copyright (C) 2014 Bill Meeks * All rights reserved. * * Adapted for FreeNAS by Volker Theile (votdev@gmx.de) @@ -97,18 +98,22 @@ elseif (isset($_GET['ids'])) { // If flowbit rule, point to interface-specific file if ($file == "Auto-Flowbit Rules") $rules_map = snort_load_rules_map("{$snortcfgdir}/rules/" . FLOWBITS_FILENAME); + elseif (file_exists("{$snortdir}/preproc_rules/{$file}")) + $rules_map = snort_load_rules_map("{$snortdir}/preproc_rules/{$file}"); else $rules_map = snort_load_rules_map("{$snortdir}/rules/{$file}"); $contents = $rules_map[$_GET['gid']][trim($_GET['ids'])]['rule']; $wrap_flag = "soft"; } - // Is it our special flowbit rules file? elseif ($file == "Auto-Flowbit Rules") $contents = file_get_contents("{$snortcfgdir}/rules/{$flowbit_rules_file}"); // Is it a rules file in the ../rules/ directory? elseif (file_exists("{$snortdir}/rules/{$file}")) $contents = file_get_contents("{$snortdir}/rules/{$file}"); +// Is it a rules file in the ../preproc_rules/ directory? +elseif (file_exists("{$snortdir}/preproc_rules/{$file}")) + $contents = file_get_contents("{$snortdir}/preproc_rules/{$file}"); // Is it a fully qualified path and file? elseif (file_exists($file)) $contents = file_get_contents($file); -- cgit v1.2.3 From 7694df7ce3ab4c570e2d9ba1e270d1aa3192d665 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 27 Jan 2014 21:55:53 -0500 Subject: Add disable SID icon for alerts on Alerts tab --- config/snort/snort_alerts.php | 78 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/config/snort/snort_alerts.php b/config/snort/snort_alerts.php index 8b00bf00..eb6190f5 100755 --- a/config/snort/snort_alerts.php +++ b/config/snort/snort_alerts.php @@ -7,6 +7,7 @@ * Copyright (C) 2003-2004 Manuel Kasper . * Copyright (C) 2006 Scott Ullrich * Copyright (C) 2012 Ermal Luci + * Copyright (C) 2013,2014 Bill Meeks * All rights reserved. * * Modified for the Pfsense snort package v. 1.8+ @@ -141,6 +142,11 @@ $a_instance = &$config['installedpackages']['snortglobal']['rule']; $snort_uuid = $a_instance[$instanceid]['uuid']; $if_real = snort_get_real_interface($a_instance[$instanceid]['interface']); +// Load up the arrays of force-enabled and force-disabled SIDs +$enablesid = snort_load_sid_mods($a_instance[$instanceid]['rule_sid_on']); +$disablesid = snort_load_sid_mods($a_instance[$instanceid]['rule_sid_off']); + +$pconfig = array(); if (is_array($config['installedpackages']['snortglobal']['alertsblocks'])) { $pconfig['arefresh'] = $config['installedpackages']['snortglobal']['alertsblocks']['arefresh']; $pconfig['alertnumber'] = $config['installedpackages']['snortglobal']['alertsblocks']['alertnumber']; @@ -215,6 +221,64 @@ if (($_GET['act'] == "addsuppress_srcip" || $_GET['act'] == "addsuppress_dstip") $input_errors[] = gettext("Suppress List '{$a_instance[$instanceid]['suppresslistname']}' is defined for this interface, but it could not be found!"); } +if ($_GET['act'] == "togglesid" && is_numeric($_GET['sidid']) && is_numeric($_GET['gen_id'])) { + // Get the GID tag embedded in the clicked rule icon. + $gid = $_GET['gen_id']; + + // Get the SID tag embedded in the clicked rule icon. + $sid= $_GET['sidid']; + + // See if the target SID is in our list of modified SIDs, + // and toggle it if present. + if (isset($enablesid[$gid][$sid])) + unset($enablesid[$gid][$sid]); + if (isset($disablesid[$gid][$sid])) + unset($disablesid[$gid][$sid]); + elseif (!isset($disablesid[$gid][$sid])) + $disablesid[$gid][$sid] = "disablesid"; + + // Write the updated enablesid and disablesid values to the config file. + $tmp = ""; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_instance[$instanceid]['rule_sid_on'] = $tmp; + else + unset($a_instance[$instanceid]['rule_sid_on']); + + $tmp = ""; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_instance[$instanceid]['rule_sid_off'] = $tmp; + else + unset($a_instance[$instanceid]['rule_sid_off']); + + /* Update the config.xml file. */ + write_config(); + + /*************************************************/ + /* Update the snort.conf file and rebuild the */ + /* rules for this interface. */ + /*************************************************/ + $rebuild_rules = true; + snort_generate_conf($a_instance[$instanceid]); + $rebuild_rules = false; + + /* Soft-restart Snort to live-load the new rules */ + snort_reload_config($a_instance[$instanceid]); + + $savemsg = gettext("The state for rule {$gid}:{$sid} has been modified. Snort is 'live-reloading' the new rules list. Please wait at least 30 secs for the process to complete before toggling additional rules."); +} + if ($_GET['action'] == "clear" || $_POST['delete']) { snort_post_delete_logs($snort_uuid); $fd = @fopen("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert", "w+"); @@ -468,6 +532,18 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { $sidsupplink = ""; } + /* Add icon for toggling rule state */ + if (isset($disablesid[$fields[1]][$fields[2]])) { + $sid_dsbl_link = ""; + $sid_dsbl_link .= ""; + } + else { + $sid_dsbl_link = ""; + $sid_dsbl_link .= ""; + } + /* DESCRIPTION */ $alert_class = $fields[11]; echo " @@ -479,7 +555,7 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { {$alert_src_p} {$alert_ip_dst} {$alert_dst_p} - {$alert_sid_str}
    {$sidsupplink} + {$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link} {$alert_descr} \n"; -- cgit v1.2.3 From a9356103959a9aeb0a466cd3c1adcf730e630076 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 28 Jan 2014 11:15:14 -0500 Subject: Tweak new Reverse DNS feature based on pfSense version --- config/snort/snort_alerts.php | 30 ++++++++++++++++++++---------- config/snort/snort_blocked.php | 24 +++++++++++++++--------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/config/snort/snort_alerts.php b/config/snort/snort_alerts.php index eb6190f5..804c6e8a 100755 --- a/config/snort/snort_alerts.php +++ b/config/snort/snort_alerts.php @@ -146,6 +146,9 @@ $if_real = snort_get_real_interface($a_instance[$instanceid]['interface']); $enablesid = snort_load_sid_mods($a_instance[$instanceid]['rule_sid_on']); $disablesid = snort_load_sid_mods($a_instance[$instanceid]['rule_sid_off']); +// Grab pfSense version so we can refer to it later on this page +$pfs_version=substr(trim(file_get_contents("/etc/version")),0,3); + $pconfig = array(); if (is_array($config['installedpackages']['snortglobal']['alertsblocks'])) { $pconfig['arefresh'] = $config['installedpackages']['snortglobal']['alertsblocks']['arefresh']; @@ -465,13 +468,17 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { $alert_ip_src = $fields[6]; /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_src = str_replace(":", ":​", $alert_ip_src); - /* Add Reverse DNS lookup icons */ - $alert_ip_src .= "
    "; - $alert_ip_src .= ""; - $alert_ip_src .= " "; + /* Add Reverse DNS lookup icons (two different links if pfSense version supports them) */ + $alert_ip_src .= "
    "; + if ($pfs_version > 2.0) { + $alert_ip_src .= "
    "; + $alert_ip_src .= " "; + } + $alert_ip_src .= ""; $alert_ip_src .= ""; + /* Add icons for auto-adding to Suppress List if appropriate */ if (!snort_is_alert_globally_suppressed($supplist, $fields[1], $fields[2]) && !isset($supplist[$fields[1]][$fields[2]]['by_src'][$fields[6]])) { @@ -495,11 +502,14 @@ if (file_exists("/var/log/snort/snort_{$if_real}{$snort_uuid}/alert")) { $alert_ip_dst = $fields[8]; /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_dst = str_replace(":", ":​", $alert_ip_dst); - /* Add Reverse DNS lookup icons */ - $alert_ip_dst .= "
    "; - $alert_ip_dst .= ""; - $alert_ip_dst .= " "; + /* Add Reverse DNS lookup icons (two different links if pfSense version supports them) */ + $alert_ip_dst .= "
    "; + if ($pfs_version > 2.0) { + $alert_ip_dst .= "
    "; + $alert_ip_dst .= " "; + } + $alert_ip_dst .= ""; $alert_ip_dst .= ""; /* Add icons for auto-adding to Suppress List if appropriate */ diff --git a/config/snort/snort_blocked.php b/config/snort/snort_blocked.php index f190413c..4fc470d3 100644 --- a/config/snort/snort_blocked.php +++ b/config/snort/snort_blocked.php @@ -7,6 +7,7 @@ * * Modified for the Pfsense snort package v. 1.8+ * Copyright (C) 2009 Robert Zelaya Sr. Developer + * Copyright (C) 2014 Bill Meeks * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -33,6 +34,9 @@ require_once("guiconfig.inc"); require_once("/usr/local/pkg/snort/snort.inc"); +// Grab pfSense version so we can refer to it later on this page +$pfs_version=substr(trim(file_get_contents("/etc/version")),0,3); + if (!is_array($config['installedpackages']['snortglobal']['alertsblocks'])) $config['installedpackages']['snortglobal']['alertsblocks'] = array(); @@ -261,23 +265,25 @@ if ($pconfig['brefresh'] == 'on') /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $tmp_ip = str_replace(":", ":​", $blocked_ip); - + /* Add reverse DNS lookup icons (two different links if pfSense version supports them) */ + $rdns_link = ""; + if ($pfs_version > 2.0) { + $rdns_link .= ""; + $rdns_link .= " "; + } + $rdns_link .= ""; + $rdns_link .= ""; /* use one echo to do the magic*/ echo " {$counter} - {$tmp_ip}
    - - - - + {$tmp_ip}
    {$rdns_link} {$blocked_desc} \"Delete \n"; } - } ?> -- cgit v1.2.3 From e1e2edc25cdecd36af6f2bb2d1e75b7857cafaed Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 28 Jan 2014 11:43:56 -0500 Subject: Fix so forced rule toggles back to its default on 2nd click --- config/snort/snort_rules.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/config/snort/snort_rules.php b/config/snort/snort_rules.php index 4307c8de..71fdbd16 100755 --- a/config/snort/snort_rules.php +++ b/config/snort/snort_rules.php @@ -167,18 +167,12 @@ if ($_GET['act'] == "toggle" && $_GET['ids'] && !empty($rules_map)) { $sid= $_GET['ids']; // See if the target SID is in our list of modified SIDs, - // and toggle it if present; otherwise, add it to the - // appropriate list. - if (isset($enablesid[$gid][$sid])) { + // and toggle it back to default if present; otherwise, + // add it to the appropriate modified SID list. + if (isset($enablesid[$gid][$sid])) unset($enablesid[$gid][$sid]); - if (!isset($disablesid[$gid][$sid])) - $disablesid[$gid][$sid] = "disablesid"; - } - elseif (isset($disablesid[$gid][$sid])) { + elseif (isset($disablesid[$gid][$sid])) unset($disablesid[$gid][$sid]); - if (!isset($enablesid[$gid][$sid])) - $enablesid[$gid][$sid] = "enablesid"; - } else { if ($rules_map[$gid][$sid]['disabled'] == 1) $enablesid[$gid][$sid] = "enablesid"; @@ -759,7 +753,7 @@ if ($savemsg) { $textse = ""; $iconb = "icon_reject_d.gif"; $disable_cnt++; - $title = gettext("Disabled by user. Click to toggle to enabled state"); + $title = gettext("Disabled by user. Click to toggle to default state"); } elseif (($v['disabled'] == 1) && (!isset($enablesid[$gid][$sid]))) { $textss = ""; @@ -772,7 +766,7 @@ if ($savemsg) { $textss = $textse = ""; $iconb = "icon_reject.gif"; $enable_cnt++; - $title = gettext("Enabled by user. Click to toggle to disabled state"); + $title = gettext("Enabled by user. Click to toggle to default state"); } else { $textss = $textse = ""; -- cgit v1.2.3 From c613223747934c62488bb55fb72138bec353ff61 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 28 Jan 2014 16:01:01 -0500 Subject: Fix snort_rules_edit.php to address http://seclist.org/fulldisclosure/2014/Jan/187 --- config/snort/snort_rules_edit.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/config/snort/snort_rules_edit.php b/config/snort/snort_rules_edit.php index 28deccd5..61a9574a 100755 --- a/config/snort/snort_rules_edit.php +++ b/config/snort/snort_rules_edit.php @@ -115,8 +115,12 @@ elseif (file_exists("{$snortdir}/rules/{$file}")) elseif (file_exists("{$snortdir}/preproc_rules/{$file}")) $contents = file_get_contents("{$snortdir}/preproc_rules/{$file}"); // Is it a fully qualified path and file? -elseif (file_exists($file)) - $contents = file_get_contents($file); +elseif (file_exists($file)) { + if (substr(realpath($file), 0, strlen(SNORTLOGDIR)) != SNORTLOGDIR) + $contents = gettext("\n\nERROR -- File: {$file} can not be viewed!"); + else + $contents = file_get_contents($file); +} // It is not something we can display, so exit. else $input_errors[] = gettext("Unable to open file: {$displayfile}"); -- cgit v1.2.3 From ec1200d91b3ad257379cf8d267c3098073b78b5d Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 28 Jan 2014 16:19:59 -0500 Subject: Bump Snort package to 2.9.5.6 v3.0.4 --- config/snort/snort.inc | 4 ++-- config/snort/snort.xml | 6 +++--- config/snort/snort_check_for_rule_updates.php | 2 +- config/snort/snort_migrate_config.php | 2 +- config/snort/snort_post_install.php | 2 +- pkg_config.10.xml | 6 +++++- pkg_config.8.xml | 10 +++++++--- pkg_config.8.xml.amd64 | 10 +++++++--- 8 files changed, 27 insertions(+), 15 deletions(-) diff --git a/config/snort/snort.inc b/config/snort/snort.inc index d983d995..777ae9d8 100755 --- a/config/snort/snort.inc +++ b/config/snort/snort.inc @@ -51,10 +51,10 @@ $snortver = array(); exec("/usr/local/bin/snort -V 2>&1 |/usr/bin/grep Version | /usr/bin/cut -c20-26", $snortver); $snort_version = $snortver[0]; if (empty($snort_version)) - $snort_version = "2.9.5.5"; + $snort_version = "2.9.5.6"; /* package version */ -$pfSense_snort_version = "3.0.2"; +$pfSense_snort_version = "3.0.4"; $snort_package_version = "Snort {$snort_version} pkg v{$pfSense_snort_version}"; // Define SNORTDIR and SNORTLIBDIR constants according to pfSense version diff --git a/config/snort/snort.xml b/config/snort/snort.xml index 9d4f1d61..a2d14bf0 100755 --- a/config/snort/snort.xml +++ b/config/snort/snort.xml @@ -46,8 +46,8 @@ None Currently there are no FAQ items provided. Snort - 2.9.5.5 - Services:2.9.5.5 pkg v3.0.2 + 2.9.5.6 + Services:2.9.5.6 pkg v3.0.4 /usr/local/pkg/snort/snort.inc
    Snort @@ -244,7 +244,7 @@ diff --git a/config/snort/snort_check_for_rule_updates.php b/config/snort/snort_check_for_rule_updates.php index 0306c90d..9a69db1c 100755 --- a/config/snort/snort_check_for_rule_updates.php +++ b/config/snort/snort_check_for_rule_updates.php @@ -96,7 +96,7 @@ exec("/usr/local/bin/snort -V 2>&1 |/usr/bin/grep Version | /usr/bin/cut -c20-26 // Save the version with decimal delimiters for use in extracting the rules $snort_version = $snortver[0]; if (empty($snort_version)) - $snort_version = "2.9.5.5"; + $snort_version = "2.9.5.6"; // Create a collapsed version string for use in the tarball filename $snortver[0] = str_replace(".", "", $snortver[0]); diff --git a/config/snort/snort_migrate_config.php b/config/snort/snort_migrate_config.php index 1a812b24..218237ab 100644 --- a/config/snort/snort_migrate_config.php +++ b/config/snort/snort_migrate_config.php @@ -330,7 +330,7 @@ unset($r); // Write out the new configuration to disk if we changed anything if ($updated_cfg) { - $config['installedpackages']['snortglobal']['snort_config_ver'] = "3.0.2"; + $config['installedpackages']['snortglobal']['snort_config_ver'] = "3.0.4"; log_error("[Snort] Saving configuration settings in new format..."); write_config(); log_error("[Snort] Settings successfully migrated to new configuration format..."); diff --git a/config/snort/snort_post_install.php b/config/snort/snort_post_install.php index a3c8eced..945ddd04 100644 --- a/config/snort/snort_post_install.php +++ b/config/snort/snort_post_install.php @@ -1417,7 +1417,7 @@ if ($config['installedpackages']['snortglobal']['forcekeepsettings'] == 'on') { } /* Update Snort package version in configuration */ -$config['installedpackages']['snortglobal']['snort_config_ver'] = "3.0.2"; +$config['installedpackages']['snortglobal']['snort_config_ver'] = "3.0.4"; write_config(); /* Done with post-install, so clear flag */ diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 75bcedde..e519a088 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -393,7 +393,7 @@ http://www.snort.org Snort is an open source network intrusion prevention and detection system (IDS/IPS). Combining the benefits of signature, protocol, and anomaly-based inspection. Security - snort-2.9.5.5-##ARCH##.pbi + snort-2.9.5.6-##ARCH##.pbi security/snort security/barnyard2 @@ -401,7 +401,11 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml +<<<<<<< Updated upstream 2.9.5.5 pkg v3.0.3 +======= + 2.9.5.6 pkg v3.0.4 +>>>>>>> Stashed changes 2.2 Stable /snort.xml diff --git a/pkg_config.8.xml b/pkg_config.8.xml index b5505b8e..47709a5d 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -504,13 +504,13 @@ Security http://files.pfsense.org/packages/8/All/ mysql-client-5.5.34.tbz - barnyard2-1.12.tbz + barnyard2-1.13.tbz libnet11-1.1.6,1.tbz libdnet-1.11_3.tbz libpcap-1.4.0.tbz daq-2.0.1.tbz - snort-2.9.5.5.tbz - snort-2.9.5.5-i386.pbi + snort-2.9.5.6.tbz + snort-2.9.5.6-i386.pbi /usr/ports/devel/pcre /usr/ports/net/daq /usr/ports/net/libnet @@ -525,7 +525,11 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml +<<<<<<< Updated upstream 2.9.5.5 pkg v3.0.3 +======= + 2.9.5.6 pkg v3.0.4 +>>>>>>> Stashed changes 2.0 Stable /snort.xml diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 9ab48dcb..6a9e6173 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -491,13 +491,13 @@ Security http://files.pfsense.org/packages/amd64/8/All/ mysql-client-5.5.34.tbz - barnyard2-1.12.tbz + barnyard2-1.13.tbz libnet11-1.1.6,1.tbz libdnet-1.11_3.tbz libpcap-1.4.0.tbz daq-2.0.1.tbz - snort-2.9.5.5.tbz - snort-2.9.5.5-amd64.pbi + snort-2.9.5.6.tbz + snort-2.9.5.6-amd64.pbi /usr/ports/devel/pcre /usr/ports/net/daq /usr/ports/net/libnet @@ -512,7 +512,11 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml +<<<<<<< Updated upstream 2.9.5.5 pkg v3.0.3 +======= + 2.9.5.6 pkg v3.0.4 +>>>>>>> Stashed changes 2.0 Stable /snort.xml -- cgit v1.2.3 From 6cde50b14bd3f75584f391500a4e337c5d45bcc3 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 28 Jan 2014 16:24:16 -0500 Subject: Bump Snort package to 2.9.5.6 v3.0.4 --- pkg_config.10.xml | 4 ---- pkg_config.8.xml | 4 ---- pkg_config.8.xml.amd64 | 4 ---- 3 files changed, 12 deletions(-) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index e519a088..6fffdd20 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -401,11 +401,7 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml -<<<<<<< Updated upstream - 2.9.5.5 pkg v3.0.3 -======= 2.9.5.6 pkg v3.0.4 ->>>>>>> Stashed changes 2.2 Stable /snort.xml diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 47709a5d..e2d5998c 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -525,11 +525,7 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml -<<<<<<< Updated upstream - 2.9.5.5 pkg v3.0.3 -======= 2.9.5.6 pkg v3.0.4 ->>>>>>> Stashed changes 2.0 Stable /snort.xml diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 6a9e6173..40e3ffce 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -512,11 +512,7 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml -<<<<<<< Updated upstream - 2.9.5.5 pkg v3.0.3 -======= 2.9.5.6 pkg v3.0.4 ->>>>>>> Stashed changes 2.0 Stable /snort.xml -- cgit v1.2.3 From 5689d3b8bda555037f94f9a219f8c5d6c4f99a10 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Wed, 29 Jan 2014 12:29:35 -0500 Subject: Update tooltip text for rule enable/disable icon. --- config/snort/snort_rules.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/snort/snort_rules.php b/config/snort/snort_rules.php index 71fdbd16..86c0eba2 100755 --- a/config/snort/snort_rules.php +++ b/config/snort/snort_rules.php @@ -623,7 +623,7 @@ if ($savemsg) { $textse = ""; $iconb = "icon_reject_d.gif"; $disable_cnt++; - $title = gettext("Disabled by user. Click to toggle to enabled state"); + $title = gettext("Disabled by user. Click to toggle to default state"); } elseif (($v['disabled'] == 1) && (!isset($enablesid[$gid][$sid]))) { $textss = ""; @@ -636,7 +636,7 @@ if ($savemsg) { $textss = $textse = ""; $iconb = "icon_reject.gif"; $enable_cnt++; - $title = gettext("Enabled by user. Click to toggle to disabled state"); + $title = gettext("Enabled by user. Click to toggle to default state"); } else { $textss = $textse = ""; -- cgit v1.2.3 From a519779703195b8f16b86295ca047b01c8c8eebb Mon Sep 17 00:00:00 2001 From: mbfgit Date: Mon, 3 Feb 2014 01:17:25 +0000 Subject: Update reverse zone for dhcp static map Addresses Bug #3323, add PTR records for reverse zone. --- config/bind/bind.inc | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/config/bind/bind.inc b/config/bind/bind.inc index ff3728fb..40d626db 100644 --- a/config/bind/bind.inc +++ b/config/bind/bind.inc @@ -438,12 +438,33 @@ EOD; $zone_conf .= "$hostname \t IN $hosttype $hostvalue \t$hostdst\n"; } - if (($zone[regdhcpstatic] == 'on') && is_array($config['dhcpd'])) { - foreach ($config['dhcpd'] as $dhcpif => $dhcpifconf) + if (($zone[regdhcpstatic] == 'on') && is_array($config['dhcpd'])) { + foreach ($config['dhcpd'] as $dhcpif => $dhcpifconf) if(is_array($dhcpifconf['staticmap']) && isset($dhcpifconf['enable'])) foreach ($dhcpifconf['staticmap'] as $host) if ($host['ipaddr'] && $host['hostname']) { - $zone_conf .= "{$host['hostname']}\tIN A\t{$host['ipaddr']}\n"; + if($zonereverso == "on") { + $hostdomain = $dhcpifconf['domain']; + if(strlen($hostdomain) == 0) { + $hostdomain = $config['system']['domain']; + } + if(strlen($hostdomain) != 0) { + $hostdomain .= '.'; + } + $zoneparts = array_reverse(explode('.',$zonename)); + $addressparts = explode('.',$host['ipaddr']); + $addressstart = 0; + while($addressstart < count($zoneparts) && $addressstart < count($addressparts) && $zoneparts[$addressstart] == $addressparts[$addressstart]) { + $addressstart++; + } + $shortaddress=''; + for($addresspointer = count($addressparts)-1; $addresspointer >= $addressstart; $addresspointer--) { + $shortaddress .= (strlen($shortaddress) > 0 ? '.' : '') . $addressparts[$addresspointer]; + } + $zone_conf .= "{$shortaddress}\tIN PTR\t{$host['hostname']}.{$hostdomain}\n"; + } else { + $zone_conf .= "{$host['hostname']}\tIN A\t{$host['ipaddr']}\n"; + } } } if ($zone['customzonerecords']!=""){ -- cgit v1.2.3 From e6510bf16633cd1198141fce80543a0bc983c133 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Wed, 5 Feb 2014 08:27:15 -0200 Subject: apcupsd - bump version --- config/apcupsd/apcupsd.xml | 2 +- pkg_config.10.xml | 2 +- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/apcupsd/apcupsd.xml b/config/apcupsd/apcupsd.xml index ecd979f6..239046e4 100644 --- a/config/apcupsd/apcupsd.xml +++ b/config/apcupsd/apcupsd.xml @@ -40,7 +40,7 @@ Apcupsd Services: Apcupsd (General) Monitoring - 0.1 + 0.2 /usr/local/pkg/apcupsd.inc Apcupsd has been created/modified. Apcupsd has been deleted. diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 6dfd6f02..5bfa7d35 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -1644,7 +1644,7 @@ Set of programs for controlling APC UPS. Services http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml - apcupsd-3.14.10_1 pkg v0.1 + apcupsd-3.14.10_1 pkg v0.2 BETA 2.2 apcupsd.xml diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 0e40dfb2..7f704180 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -2010,7 +2010,7 @@ Set of programs for controlling APC UPS. Services http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml - apcupsd-3.14.10_1 pkg v0.1 + apcupsd-3.14.10_1 pkg v0.2 BETA 2.0 apcupsd.xml diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 6454a58e..07754ff9 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -1997,7 +1997,7 @@ Set of programs for controlling APC UPS. Services http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml - apcupsd-3.14.10_1 pkg v0.1 + apcupsd-3.14.10_1 pkg v0.2 BETA 2.0 apcupsd.xml -- cgit v1.2.3 From 3cac08dbc7eec3334cb8a638299c96fc6f014979 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Thu, 6 Feb 2014 23:49:28 -0500 Subject: Fix typo in path to file. --- config/snort/snort.priv.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/snort/snort.priv.inc b/config/snort/snort.priv.inc index 5e159747..795924ea 100644 --- a/config/snort/snort.priv.inc +++ b/config/snort/snort.priv.inc @@ -38,7 +38,7 @@ $priv_list['page-services-snort']['match'][] = "snort/snort_rulesets.php*"; $priv_list['page-services-snort']['match'][] = "snort/snort_select_alias.php*"; $priv_list['page-services-snort']['match'][] = "snort/snort_stream5_engine.php*"; $priv_list['page-services-snort']['match'][] = "pkg_edit.php?xml=snort_sync.xml*"; -$priv_list['page-services-snort']['match'][] = "pkg_edit.php?xml=sort/snort.xml*"; +$priv_list['page-services-snort']['match'][] = "pkg_edit.php?xml=snort/snort.xml*"; $priv_list['page-services-snort']['match'][] = "snort/snort_check_cron_misc.inc*"; $priv_list['page-services-snort']['match'][] = "snort/snort.inc*"; -- cgit v1.2.3 From c4ce3c7de5313e77cca2b29b656294208f02c86d Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sun, 9 Feb 2014 15:50:41 -0500 Subject: Remove quotes around string variable -- shouldn't be there anyway. --- config/snort/snort.inc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/config/snort/snort.inc b/config/snort/snort.inc index 777ae9d8..847a0dba 100755 --- a/config/snort/snort.inc +++ b/config/snort/snort.inc @@ -825,11 +825,11 @@ function snort_rm_blocked_install_cron($should_install) { switch($should_install) { case true: $cron_item = array(); - $cron_item['minute'] = "$snort_rm_blocked_min"; - $cron_item['hour'] = "$snort_rm_blocked_hr"; - $cron_item['mday'] = "$snort_rm_blocked_mday"; - $cron_item['month'] = "$snort_rm_blocked_month"; - $cron_item['wday'] = "$snort_rm_blocked_wday"; + $cron_item['minute'] = $snort_rm_blocked_min; + $cron_item['hour'] = $snort_rm_blocked_hr; + $cron_item['mday'] = $snort_rm_blocked_mday; + $cron_item['month'] = $snort_rm_blocked_month; + $cron_item['wday'] = $snort_rm_blocked_wday; $cron_item['who'] = "root"; $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/sbin/expiretable -t $snort_rm_blocked_expire snort2c"; @@ -927,11 +927,11 @@ function snort_rules_up_install_cron($should_install) { switch($should_install) { case true: $cron_item = array(); - $cron_item['minute'] = "$snort_rules_up_min"; - $cron_item['hour'] = "$snort_rules_up_hr"; - $cron_item['mday'] = "$snort_rules_up_mday"; - $cron_item['month'] = "$snort_rules_up_month"; - $cron_item['wday'] = "$snort_rules_up_wday"; + $cron_item['minute'] = $snort_rules_up_min; + $cron_item['hour'] = $snort_rules_up_hr; + $cron_item['mday'] = $snort_rules_up_mday; + $cron_item['month'] = $snort_rules_up_month; + $cron_item['wday'] = $snort_rules_up_wday; $cron_item['who'] = "root"; $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/snort/snort_check_for_rule_updates.php"; -- cgit v1.2.3 From 0bb5cb1d7b77b16b4c0ae9ab058ea2fc116dce58 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Wed, 12 Feb 2014 08:33:03 -0200 Subject: apcupsd - added device field --- config/apcupsd/apcupsd.conf.php | 1 + config/apcupsd/apcupsd.inc | 1 + config/apcupsd/apcupsd.xml | 13 +++++++------ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/config/apcupsd/apcupsd.conf.php b/config/apcupsd/apcupsd.conf.php index 6a19b915..7a0340cd 100644 --- a/config/apcupsd/apcupsd.conf.php +++ b/config/apcupsd/apcupsd.conf.php @@ -109,6 +109,7 @@ UPSCABLE {$upscable} # default of 3052 will be used. # UPSTYPE {$upstype} +{$device} # POLLTIME # Interval (in seconds) at which apcupsd polls the UPS for status. This diff --git a/config/apcupsd/apcupsd.inc b/config/apcupsd/apcupsd.inc index 08ddd17e..a2b8d2ff 100644 --- a/config/apcupsd/apcupsd.inc +++ b/config/apcupsd/apcupsd.inc @@ -139,6 +139,7 @@ function sync_package_apcupsd(){ $upsname=$apcupsd_config['upsname']; $upscable=$apcupsd_config['upscable']; $upstype=$apcupsd_config['upstype']; + $device=($apcupsd_config['device'] != ''? "DEVICE {$apcupsd_config['device']}" : "#DEVICE"); $polltime=($apcupsd_config['polltime'] != ''? $apcupsd_config['polltime'] : "60"); $onbatterydelay=($apcupsd_config['onbatterydelay'] != ''? $apcupsd_config['onbatterydelay'] : "6"); $batterylevel=($apcupsd_config['batterylevel'] != ''? $apcupsd_config['batterylevel'] : "5"); diff --git a/config/apcupsd/apcupsd.xml b/config/apcupsd/apcupsd.xml index 239046e4..85148b2b 100644 --- a/config/apcupsd/apcupsd.xml +++ b/config/apcupsd/apcupsd.xml @@ -157,12 +157,6 @@ UPSTYPE DEVICE Description
    catching; you usually want "APC". Port is usually 161. Community is usually "private".

    -netsnmp hostname:port:vendor:community - OBSOLETE - Same as SNMP above but requires use of the - net-snmp library. Unless you have a specific need - for this old driver, you should use 'snmp' instead.
    -
    dumb /dev/tty** Old serial character device for use with simple-signaling UPSes.

    @@ -182,6 +176,13 @@ UPSTYPE DEVICE Description
    60 true + + Device + device + + input + 60 + Poll Time polltime -- cgit v1.2.3 From 4b06e8adc9bc8ddd25de359b0d6d130e853483b5 Mon Sep 17 00:00:00 2001 From: stilez Date: Mon, 17 Feb 2014 22:47:06 +0000 Subject: Add PERMIT BOTH option, and minor enhancements 1) Add PERMIT ALL as a list type (allows whitelisting without alias->multiple manual rules) 2) Fix typo "beggining" 3) Improve SWITCH-CASE code flows in 2 places (avoid dup. code) 4) Improve explanatory text for deny/permit Files modified: "pfblocker.inc" "pfblocker_lists.xml" --- config/pf-blocker/pfblocker.inc | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/config/pf-blocker/pfblocker.inc b/config/pf-blocker/pfblocker.inc index c40d742e..9740dce5 100755 --- a/config/pf-blocker/pfblocker.inc +++ b/config/pf-blocker/pfblocker.inc @@ -167,15 +167,6 @@ function sync_package_pfblocker($cron="") { #Create rule if action permits switch($continent_config['action']){ case "Deny_Both": - $rule = $base_rule; - $rule["type"] = $deny_action_inbound; - $rule["descr"]= "$pfb_alias auto rule"; - $rule["source"]= array("address"=> $pfb_alias); - $rule["destination"]=array("any"=>""); - if ($pfblocker_config['enable_log']){ - $rule["log"]=""; - } - $deny_inbound[]=$rule; case "Deny_Outbound": $rule = $base_rule; $rule["type"] = $deny_action_outbound; @@ -185,8 +176,9 @@ function sync_package_pfblocker($cron="") { if ($pfblocker_config['enable_log']){ $rule["log"]=""; } - $deny_outbound[]=$rule; - break; + $deny_outbound[]=$rule; + if ($continent_config['action'] != "Deny_Both") + break; case "Deny_Inbound": $rule = $base_rule; $rule["type"] = $deny_action_inbound; @@ -198,6 +190,7 @@ function sync_package_pfblocker($cron="") { } $deny_inbound[]=$rule; break; + case "Permit_Both": case "Permit_Outbound": $rule = $base_rule; $rule["type"] = "pass"; @@ -208,7 +201,8 @@ function sync_package_pfblocker($cron="") { $rule["log"]=""; } $permit_outbound[]=$rule; - break; + if ($continent_config['action'] != "Permit_Both") + break; case "Permit_Inbound": $rule = $base_rule; $rule["type"] = "pass"; @@ -317,15 +311,6 @@ function sync_package_pfblocker($cron="") { #Create rule if action permits switch($list['action']){ case "Deny_Both": - $rule = $base_rule; - $rule["type"] = $deny_action_inbound; - $rule["descr"]= "$alias auto rule"; - $rule["source"]= array("address"=> $alias); - $rule["destination"]=array("any"=>""); - if ($pfblocker_config['enable_log']){ - $rule["log"]=""; - } - $deny_inbound[]=$rule; case "Deny_Outbound": $rule = $base_rule; $rule["type"] = $deny_action_outbound; @@ -335,8 +320,9 @@ function sync_package_pfblocker($cron="") { if ($pfblocker_config['enable_log']){ $rule["log"]=""; } - $deny_outbound[]=$rule; - break; + $deny_outbound[]=$rule; + if ($list['action'] != "Deny_Both") + break; case "Deny_Inbound": $rule = $base_rule; $rule["type"] = $deny_action_inbound; @@ -348,6 +334,7 @@ function sync_package_pfblocker($cron="") { } $deny_inbound[]=$rule; break; + case "Permit_Both": case "Permit_Outbound": $rule = $base_rule; $rule["type"] = "pass"; @@ -358,7 +345,8 @@ function sync_package_pfblocker($cron="") { $rule["log"]=""; } $permit_outbound[]=$rule; - break; + if ($list['action'] != "Permit_Both") + break; case "Permit_Inbound": $rule = $base_rule; $rule["type"] = "pass"; -- cgit v1.2.3 From d01c1a51c6d984d5ea4a5c0e5859b0f3c07f5062 Mon Sep 17 00:00:00 2001 From: stilez Date: Mon, 17 Feb 2014 22:58:02 +0000 Subject: Add PERMIT BOTH option, and minor enhancements 1) Add PERMIT ALL as a list type (allows whitelisting without alias->multiple manual rules) 2) Fix typo "beggining" 3) Improve SWITCH-CASE code flows in 2 places (avoid dup. code) 4) Improve explanatory text for deny/permit Files modified: "pfblocker.inc" "pfblocker_lists.xml" --- config/pf-blocker/pfblocker_lists.xml | 40 +++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/config/pf-blocker/pfblocker_lists.xml b/config/pf-blocker/pfblocker_lists.xml index 4bde4b49..f1798d36 100755 --- a/config/pf-blocker/pfblocker_lists.xml +++ b/config/pf-blocker/pfblocker_lists.xml @@ -18,13 +18,16 @@ 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 @@ -63,20 +66,24 @@ + Top Spammers /pkg_edit.php?xml=pfblocker_topspammers.xml&id=0 - + + Africa /pkg_edit.php?xml=pfblocker_Africa.xml&id=0 - + + Asia /pkg_edit.php?xml=pfblocker_Asia.xml&id=0 - + + Europe @@ -109,6 +116,7 @@ description + Action action @@ -176,15 +184,19 @@ List Action Deny Inbound

    Select action for network on lists you have selected.

    - Note:
    'Deny Both' - Will deny access on Both directions.
    - 'Deny Inbound' - Will deny access from selected lists to your network.
    - 'Deny Outbound' - Will deny access from your users to ip lists you selected to block.
    - 'Permit Inbound' - Will allow access from selected lists to your network.
    - 'Permit Outbound' - Will allow access from your users to ip lists you selected to block.
    - 'Disabled' - Will just keep selection and do nothing to selected Lists.
    - 'Alias Only' - Will create an alias with selected Lists to help custom rule assignments.

    - While creating rules with this list, keep aliasname in the beggining of rule description and do not end description with 'rule'.
    - custom rules with 'Aliasname something rule' description will be removed by package.]]> + 'Deny' Rules:
    + 'Deny' rules create high priority 'block' or 'reject' rules on the stated interfaces. They don't change the 'pass' rules on other interfaces. Typical uses of 'Deny' rules are:
    +
    • Deny Both - blocks all traffic in both directions, if the source or destination IP is in the block list
    • +
    • Deny Inbound/Deny Outbound - blocks all traffic in one direction unless it is part of a session started by traffic sent in the other direction. Does not affect traffic in the other direction.
    • +
    • One way 'Deny' rules can be used to selectively block unsolicited incoming (new session) packets in one direction, while still allowing deliberate outgoing sessions to be created in the other direction.
    + 'Permit' Rules:
    + 'Permit' rules create high priority 'pass' rules on the stated interfaces. They are not the opposite of Deny rules, and don't create any 'blocking' effect anywhere. They have priority over all Deny rules. Typical uses of 'Permit' rules are:
    +
    • To ensure that traffic to/from the listed IPs will always be allowed in the stated directions. They override almost all other Firewall rules on the stated interfaces.
    • +
    • To act as a whitelist for Deny rule exceptions, for example if a large IP range or pre-created blocklist blocks a few IPs that should be accessible.
    + 'Alias' and 'Disabled' Rules:
    +
    • 'Alias' rules create an alias for the list (and do nothing else). This enables a Pfblocker list to be used by name, in any firewall rule or Pfsense function, as desired.
    • +
    • 'Disabled' rules are kept for future use, but nothing is done with them.

    + While creating rules with this list, keep aliasname in the beginning of rule description and do not end description with 'rule'. Custom rules with 'Aliasname something rule' description will be removed by package.]]> action select @@ -193,6 +205,7 @@ + @@ -238,4 +251,5 @@ sync_package_pfblocker(); - \ No newline at end of file + + -- cgit v1.2.3 From 3e7fcc5bc0ff436c58b42ae3d07c58dbdc55f0c1 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 17 Feb 2014 19:08:02 -0500 Subject: Fix problem with saving empty custom rules element. --- config/snort/snort_rules.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/config/snort/snort_rules.php b/config/snort/snort_rules.php index 86c0eba2..afc764fc 100755 --- a/config/snort/snort_rules.php +++ b/config/snort/snort_rules.php @@ -37,6 +37,7 @@ global $g, $rebuild_rules; $snortdir = SNORTDIR; $rules_map = array(); +$pconfig = array(); if (!is_array($config['installedpackages']['snortglobal']['rule'])) $config['installedpackages']['snortglobal']['rule'] = array(); @@ -53,8 +54,6 @@ if (is_null($id)) { if (isset($id) && $a_rule[$id]) { $pconfig['interface'] = $a_rule[$id]['interface']; $pconfig['rulesets'] = $a_rule[$id]['rulesets']; - if (!empty($a_rule[$id]['customrules'])) - $pconfig['customrules'] = base64_decode($a_rule[$id]['customrules']); } function truncate($string, $length) { @@ -365,8 +364,11 @@ if ($_POST['clear']) { exit; } -if ($_POST['customrules']) { - $a_rule[$id]['customrules'] = base64_encode($_POST['customrules']); +if ($_POST['submit']) { + if ($_POST['customrules']) + $a_rule[$id]['customrules'] = base64_encode($_POST['customrules']); + else + unset($a_rule[$id]['customrules']); write_config(); $rebuild_rules = true; snort_generate_conf($a_rule[$id]); @@ -500,12 +502,12 @@ if ($savemsg) { - + - " title=" "/>   + " title=" "/>   " title=""/>   " onclick="return confirm('')" title=""/> -- cgit v1.2.3 From f39947784f044a819d41916451336b5a827e033d Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 17 Feb 2014 22:45:16 -0500 Subject: Enable new PORT_PCAP options knob for barnyard2. --- pkg_config.10.xml | 2 +- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 6fffdd20..5346150e 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -399,7 +399,7 @@ security/barnyard2 - barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true + barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml 2.9.5.6 pkg v3.0.4 2.2 diff --git a/pkg_config.8.xml b/pkg_config.8.xml index e2d5998c..312dadb4 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -523,7 +523,7 @@ security/barnyard2 - barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true + barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml 2.9.5.6 pkg v3.0.4 2.0 diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 40e3ffce..07a71880 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -510,7 +510,7 @@ security/barnyard2 - barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true + barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml 2.9.5.6 pkg v3.0.4 2.0 -- cgit v1.2.3 From 3b2e843e625ab989c6491694f1bd7a5e895d88cc Mon Sep 17 00:00:00 2001 From: PiBa-NL Date: Tue, 18 Feb 2014 19:40:27 +0100 Subject: haproxy-devel, use same checks to show if acl's are used and for writing the configuration file --- config/haproxy-devel/haproxy.inc | 72 +++++++++++++++++------------- config/haproxy-devel/haproxy_listeners.php | 4 -- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/config/haproxy-devel/haproxy.inc b/config/haproxy-devel/haproxy.inc index d039b55a..24be5363 100644 --- a/config/haproxy-devel/haproxy.inc +++ b/config/haproxy-devel/haproxy.inc @@ -898,10 +898,8 @@ function haproxy_writeconf($configpath) { $default_backend = ""; $i = 0; foreach ($bind['config'] as $frontend) { - $a_acl=&$frontend['ha_acls']['item']; - if(!is_array($a_acl)) - $a_acl=array(); - + $a_acl = &get_frontend_acls($frontend); + $poolname = $frontend['backend_serverpool'] . "_" . strtolower($frontend['type']); // Create different pools if the svrport is set @@ -913,31 +911,6 @@ function haproxy_writeconf($configpath) { $a_pendingpl[$poolname]['name'] = $poolname; $a_pendingpl[$poolname]['frontend'] = $frontend; } - - if (strtolower($bind['type']) == "http" && $frontend['ssloffload']) { - $aclname = "SNI_" . $poolname; - if ($frontend['ssloffloadacl']){ - $cert = lookup_cert($frontend['ssloffloadcert']); - $cert_cn = cert_get_cn($cert['crt']); - $descr = haproxy_escape_acl_name($cert['descr']); - $a_acl[] = array('name' => "{$aclname}_{$descr}",'expression' => 'host_matches', 'value' => $cert_cn); - unset($cert); - } - if ($frontend['ssloffloadacladditional']){ - $certs = $frontend['ha_certificates']['item']; - if (is_array($certs)){ - if (count($certs) > 0){ - foreach($certs as $certref){ - $cert = lookup_cert($certref['ssl_certificate']); - $cert_cn = cert_get_cn($cert['crt']); - $descr = haproxy_escape_acl_name($cert['descr']); - $a_acl[] = array('name' => "{$aclname}_{$descr}",'expression' => 'host_matches', 'value' => $cert_cn); - unset($cert); - } - } - } - } - } // Write this out once, and must be before any backend config text if (($default_backend == "" || $frontend['secondary'] != 'yes') && count($a_acl) == 0 ) { @@ -947,8 +920,8 @@ function haproxy_writeconf($configpath) { // combine acl's with same name to allow for 'combined checks' to check for example hostname and fileextension together.. $a_acl_combine = array(); foreach ($a_acl as $entry) { - $name = $entry['name']; - $a_acl_combine[$name][] = $entry; + $name = $entry['ref']['name']; + $a_acl_combine[$name][] = $entry['ref']; } foreach ($a_acl_combine as $a_usebackend) { @@ -1338,6 +1311,43 @@ function get_frontend_acls($frontend) { $result[] = $acl_item; } } + + $mainfrontend = get_primaryfrontend($frontend); + if (strtolower($mainfrontend['type']) == "http" && $mainfrontend['ssloffload']) { + $a_acl = &$frontend['ha_acls']['item']; + if(!is_array($a_acl)) + $a_acl=array(); + + $poolname = $frontend['backend_serverpool'] . "_" . strtolower($frontend['type']); + $aclname = "SNI_" . $poolname; + if ($frontend['ssloffloadacl']){ + $cert = lookup_cert($frontend['ssloffloadcert']); + $cert_cn = cert_get_cn($cert['crt']); + $descr = haproxy_escape_acl_name($cert['descr']); + unset($cert); + $acl_item = array(); + $acl_item['descr'] = "Certificate ACL ".$cert_cn; + $acl_item['ref'] = array('name' => "{$aclname}_{$descr}",'expression' => 'host_matches', 'value' => $cert_cn); + $result[] = $acl_item; + } + if ($frontend['ssloffloadacladditional']){ + $certs = $frontend['ha_certificates']['item']; + if (is_array($certs)){ + if (count($certs) > 0){ + foreach($certs as $certref){ + $cert = lookup_cert($certref['ssl_certificate']); + $cert_cn = cert_get_cn($cert['crt']); + $descr = haproxy_escape_acl_name($cert['descr']); + unset($cert); + $acl_item = array(); + $acl_item['descr'] = "Additional certificate ACLs: ".$cert_cn; + $acl_item['ref'] = array('name' => "{$aclname}_{$descr}",'expression' => 'host_matches', 'value' => $cert_cn); + $result[] = $acl_item; + } + } + } + } + } return $result; } diff --git a/config/haproxy-devel/haproxy_listeners.php b/config/haproxy-devel/haproxy_listeners.php index 2a1f12e6..ea289b1f 100644 --- a/config/haproxy-devel/haproxy_listeners.php +++ b/config/haproxy-devel/haproxy_listeners.php @@ -169,10 +169,6 @@ include("head.inc"); foreach ($acls as $acl) { $isaclset .= " " . $acl['descr']; } - if ($frontend['ssloffloadacl']) - $isaclset .= " " . "Certificate ACL"; - if ($frontend['ssloffloadacladditional']) - $isaclset .= " " . "Additional certificate ACLs"; if ($isaclset) echo ""; -- cgit v1.2.3 From 02f1cef4b3a8a980e204b895590c7a4c8509aceb Mon Sep 17 00:00:00 2001 From: PiBa-NL Date: Tue, 18 Feb 2014 20:21:05 +0100 Subject: haproxy-devel, add some extra 'help' text and correction on source formating tabs --- config/haproxy-devel/haproxy_global.php | 30 ++++++------- config/haproxy-devel/haproxy_listeners_edit.php | 9 ++-- config/haproxy-devel/haproxy_pool_edit.php | 57 +++++++++++++++++++++---- 3 files changed, 67 insertions(+), 29 deletions(-) diff --git a/config/haproxy-devel/haproxy_global.php b/config/haproxy-devel/haproxy_global.php index 8264558f..c9a25eee 100755 --- a/config/haproxy-devel/haproxy_global.php +++ b/config/haproxy-devel/haproxy_global.php @@ -161,20 +161,6 @@ function enable_change(enable_change) {
    - - - - - - - - @@ -357,7 +343,8 @@ function enable_change(enable_change) { @@ -367,6 +354,19 @@ function enable_change(enable_change) {   + + + + + + + diff --git a/config/haproxy-devel/haproxy_listeners_edit.php b/config/haproxy-devel/haproxy_listeners_edit.php index bd0f93d5..09af1c5b 100644 --- a/config/haproxy-devel/haproxy_listeners_edit.php +++ b/config/haproxy-devel/haproxy_listeners_edit.php @@ -57,8 +57,6 @@ function haproxy_js_acl_select($mode) { return $seltext; } -$d_haproxyconfdirty_path = $g['varrun_path'] . "/haproxy.conf.dirty"; - if (!is_array($config['installedpackages']['haproxy']['ha_backends']['item'])) { $config['installedpackages']['haproxy']['ha_backends']['item'] = array(); } @@ -445,7 +443,7 @@ $interfaces = haproxy_get_bindable_interfaces(); @@ -546,7 +544,8 @@ $interfaces = haproxy_get_bindable_interfaces(); @@ -597,7 +596,7 @@ $interfaces = haproxy_get_bindable_interfaces(); @@ -459,6 +496,7 @@ foreach($simplefields as $field){ @@ -494,7 +532,8 @@ foreach($simplefields as $field){ @@ -629,10 +668,10 @@ set by the 'retries' parameter. - + - - + + - + - + - + - + - -
    Recalculate certificate chain.
      - - -
    - This can be required after certificates have been created or imported. As pfSense 2.1.0 currently does not - always keep track of these dependencies which might be required to create a proper certificate chain when using SSLoffloading. -
    General settings
      - + +
    NOTE: paste text into this box that you would like to pass thru in the global settings area.
    Recalculate certificate chain.
      + + (Other changes on this page will be lost) +
    + This can be required after certificates have been created or imported. As pfSense 2.1.0 currently does not + always keep track of these dependencies which might be required to create a proper certificate chain when using SSLoffloading. +
    Configuration synchronization
    External port size="10" maxlength="500" /> -
    The port to listen to. To specify multiple ports, separate with a comma (,). EXAMPLE: 80,443
    +
    The port to listen to. To specify multiple ports, separate with a comma (,). EXAMPLE: 80,8000
    Advanced pass thru - + +
    NOTE: paste text into this box that you would like to pass thru.
    Advanced ssl options - maxlength="64" /> + />
    NOTE: Paste additional ssl options(without commas) to include on ssl listening options.
    some options: force-sslv3, force-tlsv10 force-tlsv11 force-tlsv12 no-sslv3 no-tlsv10 no-tlsv11 no-tlsv12 no-tls-tickets diff --git a/config/haproxy-devel/haproxy_pool_edit.php b/config/haproxy-devel/haproxy_pool_edit.php index 9b64df87..86b325c1 100644 --- a/config/haproxy-devel/haproxy_pool_edit.php +++ b/config/haproxy-devel/haproxy_pool_edit.php @@ -308,6 +308,18 @@ foreach($simplefields as $field){ } } } + function toggleCSSdisplay(cssID) + { + var ss = document.styleSheets; + for (var i=0; i
    Server list + + Toggle serverlist help. ">help + + + +
    + Mode: Active: server will be used normally
    + Backup: server is only used in load balancing when all other non-backup servers are unavailable
    + Disabled: server is marked down in maintenance mode
    + Inactive: server will not be available for use +
    + Name: Used to as a name for the server in for example the stats
    EXAMPLE: MyWebServer +
    + Address: IP or hostname(only resolved on start-up.)
    EXAMPLE: 192.168.1.22 , fe80::1000:2000:3000:4000%em0 , WebServer1.localdomain +
    + Port: The port of the backend.
    EXAMPLE: 80 or 443
    +
    + SSL: Is the backend using SSL (commonly with port 443)
    +
    + Weight: A weight between 0 and 256, this setting can be used when multiple servers on different hardware need to be balanced with with a different part the traffic. A server with weight 0 wont get new traffic. Default if empty: 1 +
    + Cookie: the value of the cookie used to identify a server (only when cookie-persistence is enabled below) +
    + Advanced: More advanced settings like rise,fall,error-limit,send-proxy and others can be configured here.
    For a full list of options see the HAProxy manual: Server and default-server options +
    Transparent ClientIP + WARNING Activating this option will load rules in IPFW and might interfere with CaptivePortal and possibly other services due to the way server return traffic must be 'captured' with a automatically created fwd rule. This also breaks directly accessing the (web)server on the ports configured above. Also a automatic sloppy pf rule is made to allow HAProxy to server traffic.
    onclick='updatevisibility();' /> Use Client-IP to connect to backend servers.
    @@ -479,7 +517,7 @@ foreach($simplefields as $field){ For proper workings this requires the reply's traffic to pass through pfSense by means of correct routing. (uses the option "source 0.0.0.0 usesrc clientip")

    - Note : When this is enabled for a single backend HAProxy will run as 'root', which reduces security. + Note : When this is enabled for a single backend HAProxy will run as 'root' instead of chrooting to a lower privileged user, this reduces security in case of a a bit.
    Backend pass thru - + +
    NOTE: paste text into this box that you would like to pass thru. Applied to the backend section.
     
    Cookie persistence
    Cookie Enabled onclick='updatevisibility();' /> @@ -664,7 +703,7 @@ set by the 'retries' parameter.
     
    Stick-table persistence
    These options are used to make sure seperate requests from a single client go to the same backend. This can be required for servers that keep track of for example a shopping cart.
    Stick tables Date: Tue, 18 Feb 2014 19:41:20 +0000 Subject: Add ladvd package from Ticket #3456. With modification to bring it to current levels and pfsense urls. --- config/ladvd/ladvd.inc | 104 +++++++++++++++++++++++++++++ config/ladvd/ladvd.xml | 149 ++++++++++++++++++++++++++++++++++++++++++ config/ladvd/status_ladvd.php | 118 +++++++++++++++++++++++++++++++++ 3 files changed, 371 insertions(+) create mode 100644 config/ladvd/ladvd.inc create mode 100644 config/ladvd/ladvd.xml create mode 100644 config/ladvd/status_ladvd.php diff --git a/config/ladvd/ladvd.inc b/config/ladvd/ladvd.inc new file mode 100644 index 00000000..acf277b3 --- /dev/null +++ b/config/ladvd/ladvd.inc @@ -0,0 +1,104 @@ + "ladvd.sh", + "start" => "/usr/local/sbin/ladvd $cmdline", + "stop" => "/usr/bin/killall -9 ladvd" + ) + ); + + restart_service("ladvd"); + sleep(1); + conf_mount_ro(); +} + +?> diff --git a/config/ladvd/ladvd.xml b/config/ladvd/ladvd.xml new file mode 100644 index 00000000..d250f16c --- /dev/null +++ b/config/ladvd/ladvd.xml @@ -0,0 +1,149 @@ + + + + + + Link Layer Discovery Protocol + LADVD + 1.0.2 + Network Management + Services: LADVD + ladvd + /usr/local/pkg/ladvd.inc + /pkg_edit.php?xml=ladvd.xml&id=0 + + http://www.pfsense.com/packages/config/ladvd/ladvd.inc + /usr/local/pkg/ + 0644 + + + /usr/local/www/ + 0755 + http://www.pfsense.com/packages/config/ladvd/status_ladvd.php + + + LADVD + Modify LADVD settings. +
    Services
    + /pkg_edit.php?xml=ladvd.xml&id=0 +
    + + LADVD Status + +
    Status
    + /status_ladvd.php +
    + + ladvd + ladvd.sh + ladvd + Send and decode link layer advertisements + + + + General + /pkg_edit.php?xml=ladvd.xml&id=0 + + + + Status + /status_ladvd.php + + + + + Enable ladvd + enable + Enable or disable ladvd + iface_array[],autoenable,silent,management,location,lldp,cdp,edp,ndp + checkbox + + + Interfaces + iface_array + lan + true + 3 + interfaces_selection + Select the interfaces that LADVD will bind to. You can use the CTRL or COMMAND key to select multiple interfaces. + + + Auto-enable protocols + autoenable + Auto-enable protocols based on received packets (also enables receive mode). + checkbox + + + Silent + silent + Silent, don't transmit packets. + checkbox + + + Management interfaces + management + lan + interfaces_selection + The management interface for this host. Addresses on this interface are auto-detected (IPv4 and IPv6). + + + System Location + location + input + 30 + Specify the physical location of the host. + + + Enable LLDP + lldp + Enable LLDP (Link Layer Discovery Protocol). + checkbox + + + Enable CDP + cdp + Enable CDP (Cisco Discovery Protocol). + checkbox + + + Enable EDP + edp + Enable EDP (Extreme Discovery Protocol). + checkbox + + + Enable NDP + ndp + Enable NDP (Nortel Discovery Protocol) formerly called SynOptics Network Management Protocol (SONMP). + checkbox + + + ladvd_resync_config(); +
    diff --git a/config/ladvd/status_ladvd.php b/config/ladvd/status_ladvd.php new file mode 100644 index 00000000..3333145a --- /dev/null +++ b/config/ladvd/status_ladvd.php @@ -0,0 +1,118 @@ +This status page includes the following information:\n"; + echo "\n"; +} + +function execCmds() { + global $commands; + for ($i = 0; isset($commands[$i]); $i++ ) { + doCmdT($commands[$i][0], $commands[$i][1]); + } +} + +/* Define a command, with a title, to be executed later. */ +function defCmdT($title, $command) { + global $commands; + $title = htmlspecialchars($title,ENT_NOQUOTES); + $commands[] = array($title, $command); +} + +function doCmdT($title, $command) { + echo "

    \n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
    " . $title . "
    ";		/* no newline after pre */
    +
    +	$execOutput = "";
    +	$execStatus = "";
    +	$fd = popen("{$command} 2>&1", "r");
    +	while (($line = fgets($fd)) !== FALSE) {
    +		echo htmlspecialchars($line, ENT_NOQUOTES);
    +	}
    +	pclose($fd);
    +	echo "
    \n"; +} + +?> + + + + + + + + + + + +
    + +
    +
    + + + + +
    + +
    + + +
    +
    +
    +
    + + + -- cgit v1.2.3 From d355b7face9f7788f49521c0e6bc5da0f5ae7112 Mon Sep 17 00:00:00 2001 From: Ermal Date: Tue, 18 Feb 2014 20:25:49 +0000 Subject: Fix some obvious issues in dansguardian package --- config/dansguardian/dansguardian.inc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/config/dansguardian/dansguardian.inc b/config/dansguardian/dansguardian.inc index ad6e6482..53262ab0 100755 --- a/config/dansguardian/dansguardian.inc +++ b/config/dansguardian/dansguardian.inc @@ -87,6 +87,7 @@ function check_ca_hashes(){ $cert=0; } } + conf_mount_ro(); } } @@ -1094,6 +1095,7 @@ EOF; conf_mount_rw(); write_config(); + #update cron if ($cron_found > 0){ $config['cron']=$new_cron; @@ -1180,8 +1182,8 @@ EOF; $script='/usr/local/etc/rc.d/dansguardian.sh'; unlink_if_exists('/usr/local/etc/rc.d/dansguardian'); if($config['installedpackages']['dansguardian']['config'][0]['enable']=="on"){ - copy('/usr/local/pkg/dansguardian_rc.template',$script); - chmod ($script,0755); + @copy('/usr/local/pkg/dansguardian_rc.template',$script); + @chmod ($script,0755); if (is_process_running('dansguardian')){ log_error('Reloading Dansguardian'); exec("/usr/local/sbin/dansguardian -r"); @@ -1195,13 +1197,12 @@ EOF; if (is_process_running('dansguardian')){ log_error('Dansguardian is disabled, stopping process...'); mwexec("$script stop"); - } - if (file_exists($script)) - chmod ($script,444); + } + @unlink($script)) } if (!file_exists(DANSGUARDIAN_DIR . '/etc/dansguardian/lists/phraselists/pornography/weighted_russian_utf8')) - file_put_contents(DANSGUARDIAN_DIR . '/etc/dansguardian/lists/phraselists/pornography/weighted_russian_utf8',"",LOCK_EX); + @file_put_contents(DANSGUARDIAN_DIR . '/etc/dansguardian/lists/phraselists/pornography/weighted_russian_utf8',"",LOCK_EX); #check ca certs hashes check_ca_hashes(); @@ -1299,7 +1300,7 @@ function dansguardian_php_deinstall_command() { if (file_exists("/usr/local/etc/rc.d/dansguardian.sh")){ conf_mount_rw(); - chmod ("/usr/local/etc/rc.d/dansguardian.sh",0444); + @unlink("/usr/local/etc/rc.d/dansguardian.sh"); conf_mount_ro(); } } -- cgit v1.2.3 From 6830930c219ba92582e04cc49d6ac2cfbce4a374 Mon Sep 17 00:00:00 2001 From: Ermal Date: Tue, 18 Feb 2014 20:36:22 +0000 Subject: Remove code lying from old snort history --- .../bin/oinkmaster_contrib/README.contrib | 84 - config/snort-dev/bin/oinkmaster_contrib/addmsg.pl | 299 -- config/snort-dev/bin/oinkmaster_contrib/addsid.pl | 382 --- .../bin/oinkmaster_contrib/create-sidmap.pl | 280 -- .../bin/oinkmaster_contrib/make_snortsam_map.pl | 265 -- .../snort-dev/bin/oinkmaster_contrib/makesidex.pl | 261 -- config/snort-dev/bin/oinkmaster_contrib/oinkgui.pl | 1046 ------- .../snort-dev/bin/oinkmaster_contrib/oinkmaster.pl | 2754 ----------------- .../bin/oinkmaster_contrib/snort_rename.pl | 100 - config/snort-dev/css/sexybuttons.css | 342 --- config/snort-dev/css/style.css | 206 -- config/snort-dev/help_and_info.php | 247 -- config/snort-dev/images/alert.jpg | Bin 13730 -> 0 bytes config/snort-dev/images/arrow_down.png | Bin 379 -> 0 bytes config/snort-dev/images/awesome-overlay-sprite.png | Bin 214 -> 0 bytes config/snort-dev/images/down.gif | Bin 54 -> 0 bytes config/snort-dev/images/down2.gif | Bin 60 -> 0 bytes config/snort-dev/images/footer.jpg | Bin 57411 -> 0 bytes config/snort-dev/images/footer2.jpg | Bin 31878 -> 0 bytes config/snort-dev/images/icon-table-sort-asc.png | Bin 2906 -> 0 bytes config/snort-dev/images/icon-table-sort-desc.png | Bin 2913 -> 0 bytes config/snort-dev/images/icon-table-sort.png | Bin 3025 -> 0 bytes config/snort-dev/images/icon_excli.png | Bin 5280 -> 0 bytes config/snort-dev/images/logo.jpg | Bin 74306 -> 0 bytes config/snort-dev/images/logo22.png | Bin 27841 -> 0 bytes config/snort-dev/images/page_white_text.png | Bin 342 -> 0 bytes config/snort-dev/images/up.gif | Bin 54 -> 0 bytes config/snort-dev/images/up2.gif | Bin 60 -> 0 bytes config/snort-dev/snort.inc | 2706 ---------------- config/snort-dev/snort.xml | 209 -- config/snort-dev/snort_alerts.php | 587 ---- config/snort-dev/snort_barnyard.php | 269 -- config/snort-dev/snort_blocked.php | 426 --- config/snort-dev/snort_check_cron_misc.inc | 76 - config/snort-dev/snort_check_for_rule_updates.php | 690 ----- config/snort-dev/snort_define_servers.php | 541 ---- config/snort-dev/snort_download_rules.php | 776 ----- config/snort-dev/snort_download_updates.php | 322 -- config/snort-dev/snort_gui.inc | 203 -- config/snort-dev/snort_interfaces.php | 448 --- config/snort-dev/snort_interfaces_edit.php | 755 ----- config/snort-dev/snort_interfaces_global.php | 437 --- config/snort-dev/snort_interfaces_suppress.php | 171 -- .../snort-dev/snort_interfaces_suppress_edit.php | 295 -- config/snort-dev/snort_interfaces_whitelist.php | 189 -- .../snort-dev/snort_interfaces_whitelist_edit.php | 494 --- config/snort-dev/snort_preprocessors.php | 391 --- config/snort-dev/snort_rules.php | 458 --- config/snort-dev/snort_rules_edit.php | 188 -- config/snort-dev/snort_rulesets.php | 313 -- config/snort-dev/snort_startstop.php | 93 - .../snortsam-package-code/css/new_tab_menu.css | 110 - .../snortsam-package-code/css/style_snort2.css | 571 ---- .../snortsam-package-code/images/alert.jpg | Bin 13730 -> 0 bytes .../snortsam-package-code/images/arrow_down.png | Bin 379 -> 0 bytes .../images/awesome-overlay-sprite.png | Bin 214 -> 0 bytes .../snortsam-package-code/images/close_9x9.gif | Bin 836 -> 0 bytes .../snortsam-package-code/images/controls.png | Bin 1633 -> 0 bytes .../snortsam-package-code/images/down.gif | Bin 54 -> 0 bytes .../snortsam-package-code/images/down2.gif | Bin 60 -> 0 bytes .../snortsam-package-code/images/footer.jpg | Bin 57411 -> 0 bytes .../snortsam-package-code/images/footer2.jpg | Bin 31878 -> 0 bytes .../images/icon-table-sort-asc.png | Bin 2906 -> 0 bytes .../images/icon-table-sort-desc.png | Bin 2913 -> 0 bytes .../images/icon-table-sort.png | Bin 3025 -> 0 bytes .../snortsam-package-code/images/icon_excli.png | Bin 5280 -> 0 bytes .../snortsam-package-code/images/loading.gif | Bin 404 -> 0 bytes .../snortsam-package-code/images/logo.jpg | Bin 74306 -> 0 bytes .../snortsam-package-code/images/logo22.png | Bin 27841 -> 0 bytes .../snortsam-package-code/images/new_tab_menu.png | Bin 3257 -> 0 bytes .../images/page_white_text.png | Bin 342 -> 0 bytes .../snortsam-package-code/images/progress_bar2.gif | Bin 63777 -> 0 bytes .../snortsam-package-code/images/progressbar.gif | Bin 1052 -> 0 bytes .../images/top_modal_bar_lil.jpg | Bin 11071 -> 0 bytes .../snortsam-package-code/images/transparent.gif | Bin 156 -> 0 bytes .../snortsam-package-code/images/transparentbg.png | Bin 2818 -> 0 bytes .../snort-dev/snortsam-package-code/images/up.gif | Bin 54 -> 0 bytes .../snort-dev/snortsam-package-code/images/up2.gif | Bin 60 -> 0 bytes .../javascript/jquery-1.6.2.min.js | 18 - .../javascript/jquery.form.js | 785 ----- .../javascript/jquery.progressbar.min.js | 20 - .../javascript/snort_globalsend.js | 442 --- .../patches/SnortSam/TODAO.txt | 1 - .../patches/SnortSam/snortsam-2.8.6.1.diff | 3021 ------------------ .../patches/inlinemode_options_flags.txt | 0 .../patches/spoink_patch/2.8.6/Makefile.am | 17 - .../patches/spoink_patch/2.8.6/Makefile.in | 445 --- .../patches/spoink_patch/2.8.6/plugbase.c | 1544 ---------- .../patches/spoink_patch/2.8.6/util.c | 3233 -------------------- .../patches/spoink_patch/spo_pf.c | 462 --- .../patches/spoink_patch/spo_pf.h | 60 - config/snort-dev/snortsam-package-code/snort.xml | 272 -- config/snort-dev/snortsam-package-code/snortDB | Bin 16384 -> 0 bytes .../snort-dev/snortsam-package-code/snortDBrules | Bin 18432 -> 0 bytes config/snort-dev/snortsam-package-code/snortDBtemp | Bin 7168 -> 0 bytes .../snortsam-package-code/snort_alerts.php | 189 -- .../snortsam-package-code/snort_barnyard.php | 289 -- .../snortsam-package-code/snort_blocked.php | 193 -- .../snortsam-package-code/snort_build.inc | 1288 -------- .../snortsam-package-code/snort_define_servers.php | 450 --- .../snortsam-package-code/snort_download_rules.inc | 1036 ------- .../snort_download_updates.php | 365 --- .../snort-dev/snortsam-package-code/snort_gui.inc | 83 - .../snort-dev/snortsam-package-code/snort_head.inc | 148 - .../snortsam-package-code/snort_headbase.inc | 73 - .../snortsam-package-code/snort_help_info.php | 353 --- .../snortsam-package-code/snort_install.inc | 429 --- .../snortsam-package-code/snort_interfaces.php | 415 --- .../snort_interfaces_edit.php | 536 ---- .../snort_interfaces_global.php | 367 --- .../snort_interfaces_rules.php | 289 -- .../snort_interfaces_rules_edit.php | 282 -- .../snort_interfaces_suppress.php | 211 -- .../snort_interfaces_suppress_edit.php | 231 -- .../snort_interfaces_whitelist.php | 241 -- .../snort_interfaces_whitelist_edit.php | 341 --- .../snortsam-package-code/snort_json_get.php | 137 - .../snortsam-package-code/snort_json_post.php | 568 ---- .../snort-dev/snortsam-package-code/snort_new.inc | 1368 --------- .../snortsam-package-code/snort_preprocessors.php | 337 -- .../snortsam-package-code/snort_rules.php | 600 ---- .../snortsam-package-code/snort_rules_ips.php | 471 --- .../snortsam-package-code/snort_rulesets.php | 347 --- .../snortsam-package-code/snort_rulesets_ips.php | 411 --- 124 files changed, 40352 deletions(-) delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/README.contrib delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/addmsg.pl delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/addsid.pl delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/create-sidmap.pl delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/make_snortsam_map.pl delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/makesidex.pl delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/oinkgui.pl delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/oinkmaster.pl delete mode 100644 config/snort-dev/bin/oinkmaster_contrib/snort_rename.pl delete mode 100644 config/snort-dev/css/sexybuttons.css delete mode 100644 config/snort-dev/css/style.css delete mode 100644 config/snort-dev/help_and_info.php delete mode 100644 config/snort-dev/images/alert.jpg delete mode 100644 config/snort-dev/images/arrow_down.png delete mode 100644 config/snort-dev/images/awesome-overlay-sprite.png delete mode 100644 config/snort-dev/images/down.gif delete mode 100644 config/snort-dev/images/down2.gif delete mode 100644 config/snort-dev/images/footer.jpg delete mode 100644 config/snort-dev/images/footer2.jpg delete mode 100644 config/snort-dev/images/icon-table-sort-asc.png delete mode 100644 config/snort-dev/images/icon-table-sort-desc.png delete mode 100644 config/snort-dev/images/icon-table-sort.png delete mode 100644 config/snort-dev/images/icon_excli.png delete mode 100644 config/snort-dev/images/logo.jpg delete mode 100644 config/snort-dev/images/logo22.png delete mode 100644 config/snort-dev/images/page_white_text.png delete mode 100644 config/snort-dev/images/up.gif delete mode 100644 config/snort-dev/images/up2.gif delete mode 100644 config/snort-dev/snort.inc delete mode 100644 config/snort-dev/snort.xml delete mode 100644 config/snort-dev/snort_alerts.php delete mode 100644 config/snort-dev/snort_barnyard.php delete mode 100644 config/snort-dev/snort_blocked.php delete mode 100644 config/snort-dev/snort_check_cron_misc.inc delete mode 100644 config/snort-dev/snort_check_for_rule_updates.php delete mode 100644 config/snort-dev/snort_define_servers.php delete mode 100644 config/snort-dev/snort_download_rules.php delete mode 100644 config/snort-dev/snort_download_updates.php delete mode 100644 config/snort-dev/snort_gui.inc delete mode 100644 config/snort-dev/snort_interfaces.php delete mode 100644 config/snort-dev/snort_interfaces_edit.php delete mode 100644 config/snort-dev/snort_interfaces_global.php delete mode 100644 config/snort-dev/snort_interfaces_suppress.php delete mode 100644 config/snort-dev/snort_interfaces_suppress_edit.php delete mode 100644 config/snort-dev/snort_interfaces_whitelist.php delete mode 100644 config/snort-dev/snort_interfaces_whitelist_edit.php delete mode 100644 config/snort-dev/snort_preprocessors.php delete mode 100644 config/snort-dev/snort_rules.php delete mode 100644 config/snort-dev/snort_rules_edit.php delete mode 100644 config/snort-dev/snort_rulesets.php delete mode 100644 config/snort-dev/snort_startstop.php delete mode 100644 config/snort-dev/snortsam-package-code/css/new_tab_menu.css delete mode 100644 config/snort-dev/snortsam-package-code/css/style_snort2.css delete mode 100644 config/snort-dev/snortsam-package-code/images/alert.jpg delete mode 100644 config/snort-dev/snortsam-package-code/images/arrow_down.png delete mode 100644 config/snort-dev/snortsam-package-code/images/awesome-overlay-sprite.png delete mode 100644 config/snort-dev/snortsam-package-code/images/close_9x9.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/controls.png delete mode 100644 config/snort-dev/snortsam-package-code/images/down.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/down2.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/footer.jpg delete mode 100644 config/snort-dev/snortsam-package-code/images/footer2.jpg delete mode 100644 config/snort-dev/snortsam-package-code/images/icon-table-sort-asc.png delete mode 100644 config/snort-dev/snortsam-package-code/images/icon-table-sort-desc.png delete mode 100644 config/snort-dev/snortsam-package-code/images/icon-table-sort.png delete mode 100644 config/snort-dev/snortsam-package-code/images/icon_excli.png delete mode 100644 config/snort-dev/snortsam-package-code/images/loading.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/logo.jpg delete mode 100644 config/snort-dev/snortsam-package-code/images/logo22.png delete mode 100644 config/snort-dev/snortsam-package-code/images/new_tab_menu.png delete mode 100644 config/snort-dev/snortsam-package-code/images/page_white_text.png delete mode 100644 config/snort-dev/snortsam-package-code/images/progress_bar2.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/progressbar.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/top_modal_bar_lil.jpg delete mode 100644 config/snort-dev/snortsam-package-code/images/transparent.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/transparentbg.png delete mode 100644 config/snort-dev/snortsam-package-code/images/up.gif delete mode 100644 config/snort-dev/snortsam-package-code/images/up2.gif delete mode 100644 config/snort-dev/snortsam-package-code/javascript/jquery-1.6.2.min.js delete mode 100644 config/snort-dev/snortsam-package-code/javascript/jquery.form.js delete mode 100644 config/snort-dev/snortsam-package-code/javascript/jquery.progressbar.min.js delete mode 100644 config/snort-dev/snortsam-package-code/javascript/snort_globalsend.js delete mode 100644 config/snort-dev/snortsam-package-code/patches/SnortSam/TODAO.txt delete mode 100644 config/snort-dev/snortsam-package-code/patches/SnortSam/snortsam-2.8.6.1.diff delete mode 100644 config/snort-dev/snortsam-package-code/patches/inlinemode_options_flags.txt delete mode 100644 config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.am delete mode 100644 config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.in delete mode 100644 config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/plugbase.c delete mode 100644 config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/util.c delete mode 100644 config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.c delete mode 100644 config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.h delete mode 100644 config/snort-dev/snortsam-package-code/snort.xml delete mode 100644 config/snort-dev/snortsam-package-code/snortDB delete mode 100644 config/snort-dev/snortsam-package-code/snortDBrules delete mode 100644 config/snort-dev/snortsam-package-code/snortDBtemp delete mode 100644 config/snort-dev/snortsam-package-code/snort_alerts.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_barnyard.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_blocked.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_build.inc delete mode 100644 config/snort-dev/snortsam-package-code/snort_define_servers.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_download_rules.inc delete mode 100644 config/snort-dev/snortsam-package-code/snort_download_updates.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_gui.inc delete mode 100644 config/snort-dev/snortsam-package-code/snort_head.inc delete mode 100644 config/snort-dev/snortsam-package-code/snort_headbase.inc delete mode 100644 config/snort-dev/snortsam-package-code/snort_help_info.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_install.inc delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_edit.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_global.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_rules.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_rules_edit.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_suppress.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_suppress_edit.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_whitelist.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_interfaces_whitelist_edit.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_json_get.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_json_post.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_new.inc delete mode 100644 config/snort-dev/snortsam-package-code/snort_preprocessors.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_rules.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_rules_ips.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_rulesets.php delete mode 100644 config/snort-dev/snortsam-package-code/snort_rulesets_ips.php diff --git a/config/snort-dev/bin/oinkmaster_contrib/README.contrib b/config/snort-dev/bin/oinkmaster_contrib/README.contrib deleted file mode 100644 index 6923fa26..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/README.contrib +++ /dev/null @@ -1,84 +0,0 @@ -# $Id: README.contrib,v 1.21 2005/10/18 10:41:20 andreas_o Exp $ # - -------------------------------------------------------------------------------- -* oinkgui.pl by Andreas Östling - - A graphical front-end to Oinkmaster written in Perl/Tk. - See README.gui for complete documentation. -------------------------------------------------------------------------------- - - - -------------------------------------------------------------------------------- -* addsid.pl by Andreas Östling - - A script that parses *.rules in all specified directories and adds a - SID to (active) rules that don't have any. (Actually, rev and classtype - are also added if missing, unless you edit addsid.pl and tune this.) The - script first looks for the current highest SID (even in inactive rules) - and starts at the next one, unless this value is below MIN_SID (defined - inside addsid.pl). By default, this value is set to 1000001 since this - is the lowest SID assigned for local usage. Handles multi-line rules. -------------------------------------------------------------------------------- - - - -------------------------------------------------------------------------------- -* create-sidmap.pl by Andreas Östling - - A script that parses all active rules in *.rules in all specified - directories and creates a SID map. (Like Snort's regen-sidmap, but this - one handles multi-line rules.) Result goes to standard output which can - be redirected to a sid-msg.map file. -------------------------------------------------------------------------------- - - - -------------------------------------------------------------------------------- -* makesidex.pl, originally by Jerry Applebaum but later rewritten by - Andreas Östling to handle multi-line rules and - multiple rules directories. - - It reads *.rules in all specified directories, looks for all disabled - rules and prints a "disablesid # " line for each disabled rule. - The output can be appended to oinkmaster.conf. - Useful to new Oinkmaster users. -------------------------------------------------------------------------------- - - - -------------------------------------------------------------------------------- -* addmsg.pl by Andreas Östling : - - A script that will parse your oinkmaster.conf for - localsid/enablesid/disablesid lines and add their rule message as a #comment. - If your oinkmaster.conf looks like this before addmsg.pl has been run: - - disablesid 286 - disablesid 287 - disablesid 288 - - It will look something like this afterward: - - disablesid 286 # POP3 EXPLOIT x86 bsd overflow - disablesid 287 # POP3 EXPLOIT x86 bsd overflow - disablesid 288 # POP3 EXPLOIT x86 linux overflow - - addmsg.pl will not touch lines that already has a comment in them. - It's not able to handle SID lists when written like this: - disablesid 1,2,3, ... - But it should handle them if written like this: - disablesid \ - 1, \ - 2, \ - 3 - - The new config file will be printed to standard output, so you - probably want to redirect the output to a file, for example: - - ./addmsg.pl oinkmaster.conf rules/ > oinkmaster.conf.new - - If oinkmaster.conf.new looks ok, simply rename it to oinkmaster.conf. - Do NOT redirect to the same file you read from, as this will destroy - that file. -------------------------------------------------------------------------------- diff --git a/config/snort-dev/bin/oinkmaster_contrib/addmsg.pl b/config/snort-dev/bin/oinkmaster_contrib/addmsg.pl deleted file mode 100644 index e5866d6f..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/addmsg.pl +++ /dev/null @@ -1,299 +0,0 @@ -#!/usr/bin/perl -w - -# $Id: addmsg.pl,v 1.19 2005/12/31 13:42:46 andreas_o Exp $ # - -# Copyright (c) 2004-2006 Andreas Östling -# 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. -# -# 3. Neither the name of the author nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "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 COPYRIGHT OWNER OR -# 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. - - -use strict; - -sub get_next_entry($ $ $ $ $ $); -sub parse_singleline_rule($ $ $); - - -my $USAGE = << "RTFM"; - -Parse Oinkmaster configuration file and add the rule's "msg" string as a -#comment for each disablesid/enablesid line. - -Usage: $0 [rulesdir2, ...] - -The new config file will be printed to standard output, so you -probably want to redirect the output to a new file (*NOT* the same -file you used as input, because that will destroy the file!). -For example: - -$0 /etc/oinkmaster.conf /etc/rules/ > oinkmaster.conf.new - -If oinkmaster.conf.new looks ok, simply rename it to /etc/oinkmaster.conf. - -RTFM - - -# Regexp to match the start of a multi-line rule. -# %ACTIONS% will be replaced with content of $config{actions} later. -my $MULTILINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.*\\\\\s*\n$'; # '; - -# Regexp to match a single-line rule. -my $SINGLELINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.+;\s*\)\s*$'; # '; - - -my $config = shift || die($USAGE); - -my @rulesdirs = @ARGV; -die($USAGE) unless ($#rulesdirs > -1); - -my $verbose = 1; -my (%sidmsgmap, %config); - -$config{rule_actions} = "alert|drop|log|pass|reject|sdrop|activate|dynamic"; - -$SINGLELINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; -$MULTILINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; - - - -# Read in oinkmaster.conf. -open(CONFIG, "<" , "$config") or die("could not open \"$config\" for reading: $!\n"); -my @config = ; -close(CONFIG); - - -# Read in *.rules in all rulesdirs and create %sidmsgmap ($sidmsgmap{sid} = msg). -foreach my $rulesdir (@rulesdirs) { - opendir(RULESDIR, "$rulesdir") or die("could not open \"$rulesdir\": $!\n"); - - while (my $file = readdir(RULESDIR)) { - next unless ($file =~ /\.rules$/); - - open(FILE, "<", "$rulesdir/$file") or die("could not open \"$rulesdir/$file\": $!\n"); - my @file = ; - close(FILE); - - my ($single, $multi, $nonrule, $msg, $sid); - - while (get_next_entry(\@file, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - $sidmsgmap{$sid} = $msg - if (defined($single)); - } - } -} - - -# Print new oinkmaster.conf. -while ($_ = shift(@config)) { - if (/^\s*(?:disable|enable|local)sid\s+(\d+)\s*$/ || /^\s*(\d+)\s*,\s*\\$/ || /^\s*(\d+)\s*$/) { - my $sid = $1; - my $is_multiline = 0; - chomp; - - if (/\\$/) { - $is_multiline = 1; - s/\\$//; - } - - $_ = sprintf("%-25s", $_); - if (exists($sidmsgmap{$sid})) { - print "$_ # $sidmsgmap{$sid}"; - } else { - print "$_"; - } - print " \\" if ($is_multiline); - print "\n"; - } else { - print; - } -} - - - -# From oinkmaster.pl. -sub get_next_entry($ $ $ $ $ $) -{ - my $arr_ref = shift; - my $single_ref = shift; - my $multi_ref = shift; - my $nonrule_ref = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - undef($$single_ref); - undef($$multi_ref); - undef($$nonrule_ref); - undef($$msg_ref); - undef($$sid_ref); - - my $line = shift(@$arr_ref) || return(0); - my $disabled = 0; - my $broken = 0; - - # Possible beginning of multi-line rule? - if ($line =~ /$MULTILINE_RULE_REGEXP/oi) { - $$single_ref = $line; - $$multi_ref = $line; - - $disabled = 1 if ($line =~ /^\s*#/); - - # Keep on reading as long as line ends with "\". - while (!$broken && $line =~ /\\\s*\n$/) { - - # Remove trailing "\" and newline for single-line version. - $$single_ref =~ s/\\\s*\n//; - - # If there are no more lines, this can not be a valid multi-line rule. - if (!($line = shift(@$arr_ref))) { - - warn("\nWARNING: got EOF while parsing multi-line rule: $$multi_ref\n") - if ($config{verbose}); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - - # Multi-line continuation. - $$multi_ref .= $line; - - # If there are non-comment lines in the middle of a disabled rule, - # mark the rule as broken to return as non-rule lines. - if ($line !~ /^\s*#/ && $disabled) { - $broken = 1; - } elsif ($line =~ /^\s*#/ && !$disabled) { - # comment line (with trailing slash) in the middle of an active rule - ignore it - } else { - $line =~ s/^\s*#*\s*//; # remove leading # in single-line version - $$single_ref .= $line; - } - - } # while line ends with "\" - - # Single-line version should now be a valid rule. - # If not, it wasn't a valid multi-line rule after all. - if (!$broken && parse_singleline_rule($$single_ref, $msg_ref, $sid_ref)) { - - $$single_ref =~ s/^\s*//; # remove leading whitespaces - $$single_ref =~ s/^#+\s*/#/; # remove whitespaces next to leading # - $$single_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - $$multi_ref =~ s/^\s*//; - $$multi_ref =~ s/\s*\n$/\n/; - $$multi_ref =~ s/^#+\s*/#/; - - return (1); # return multi - } else { - warn("\nWARNING: invalid multi-line rule: $$single_ref\n") - if ($config{verbose} && $$multi_ref !~ /^\s*#/); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - } elsif (parse_singleline_rule($line, $msg_ref, $sid_ref)) { - $$single_ref = $line; - $$single_ref =~ s/^\s*//; - $$single_ref =~ s/^#+\s*/#/; - $$single_ref =~ s/\s*\n$/\n/; - - return (1); # return single - } else { # non-rule line - - # Do extra check and warn if it *might* be a rule anyway, - # but that we just couldn't parse for some reason. - warn("\nWARNING: line may be a rule but it could not be parsed ". - "(missing sid or msg?): $line\n") - if ($config{verbose} && $line =~ /^\s*alert .+msg\s*:\s*".+"\s*;/); - - $$nonrule_ref = $line; - $$nonrule_ref =~ s/\s*\n$/\n/; - - return (1); # return non-rule - } -} - - - -# From oinkmaster.pl. -sub parse_singleline_rule($ $ $) -{ - my $line = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - if ($line =~ /$SINGLELINE_RULE_REGEXP/oi) { - - if ($line =~ /\bmsg\s*:\s*"(.+?)"\s*;/i) { - $$msg_ref = $1; - } else { - return (0); - } - - if ($line =~ /\bsid\s*:\s*(\d+)\s*;/i) { - $$sid_ref = $1; - } else { - return (0); - } - - return (1); - } - - return (0); -} diff --git a/config/snort-dev/bin/oinkmaster_contrib/addsid.pl b/config/snort-dev/bin/oinkmaster_contrib/addsid.pl deleted file mode 100644 index 64255d22..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/addsid.pl +++ /dev/null @@ -1,382 +0,0 @@ -#!/usr/bin/perl -w - -# $Id: addsid.pl,v 1.30 2005/12/31 13:42:46 andreas_o Exp $ # - -# Copyright (c) 2004-2006 Andreas Östling -# 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. -# -# 3. Neither the name of the author nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "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 COPYRIGHT OWNER OR -# 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. - - -use strict; - - -sub get_next_entry($ $ $ $ $ $); -sub parse_singleline_rule($ $ $); -sub get_next_available_sid(@); - - -# Set this to the default classtype you want to add, if missing. -# Set to 0 or "" if you don't want to add a classtype. -my $CLASSTYPE = "misc-attack"; - -# If ADD_REV is set to 1, "rev: 1;" will be added to rule if it has no rev. -# Set to 0 if you don't want to add it. -my $ADD_REV = 1; - -# Minimum SID to add. Normally, the next available SID will be used, -# unless it's below this value. Only SIDs >= 1000000 are reserved for -# personal use. -my $MIN_SID = 1000001; - -# Regexp to match the start of a multi-line rule. -# %ACTIONS% will be replaced with content of $config{actions} later. -my $MULTILINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.*\\\\\s*\n$'; # '; - -# Regexp to match a single-line rule. -my $SINGLELINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.+;\s*\)\s*$'; # '; - - -my $USAGE = << "RTFM"; - -Parse *.rules in one or more directories and add "sid:;" to -active rules that don't have any "sid" entry, starting with the next -available SID after parsing all rules files (but $MIN_SID at minumum). -Also, "rev:1;" is added to rules without a "rev" entry, and -"classtype:misc-attack;" is added to rules without a "classtype" entry -(edit options at the top of $0 if you want to change this). - -Usage: $0 [rulesdir2, ...] - -RTFM - - -# Start in verbose mode. -my $verbose = 1; - -my (%all_sids, %active_sids, %config); - -my @rulesdirs = @ARGV; - -die($USAGE) unless ($#rulesdirs > -1); - -$config{rule_actions} = "alert|drop|log|pass|reject|sdrop|activate|dynamic"; - -$SINGLELINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; -$MULTILINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; - - -# Find out the next available SID. -my $next_sid = get_next_available_sid(@rulesdirs); - -# Avoid seeing possible warnings about broken rules twice. -$verbose = 0; - -# Add sid/rev/classtype to active rules that don't have any. -foreach my $dir (@rulesdirs) { - opendir(RULESDIR, "$dir") or die("could not open \"$dir\": $!\n"); - - while (my $file = readdir(RULESDIR)) { - next unless ($file =~ /\.rules$/); - - open(OLDFILE, "$dir/$file") - or die("could not open \"$dir/$file\": $!\n"); - my @file = ; - close(OLDFILE); - - open(NEWFILE, ">", "$dir/$file") - or die("could not open \"$dir/$file\" for writing: $!\n"); - - my ($single, $multi, $nonrule, $msg, $sid); - while (get_next_entry(\@file, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - - if (defined($nonrule)) { - print NEWFILE "$nonrule"; - next; - } - - $multi = $single unless (defined($multi)); - - # Don't care about inactive rules. - if ($single =~ /^\s*#/) { - print NEWFILE "$multi"; - next; - } - - my $added; - - # Add SID. - if ($single !~ /sid\s*:\s*\d+\s*;/) { - $added .= "SID $next_sid,"; - $multi =~ s/\)\s*\n/sid:$next_sid;)\n/; - $next_sid++; - } - - # Add revision. - if ($ADD_REV && $single !~ /rev\s*:\s*\d+\s*;/) { - $added .= "rev,"; - $multi =~ s/\)\s*\n/rev:1;)\n/; - } - - # Add classtype. - if ($CLASSTYPE && $single !~ /classtype\s*:\s*.+\s*;/) { - $added .= "classtype $CLASSTYPE,"; - $multi =~ s/\)\s*\n/classtype:$CLASSTYPE;)\n/; - } - - if (defined($added)) { - $added =~ s/,$//; - print "Adding $added to rule \"$msg\"\n" - if (defined($added)); - } - - print NEWFILE "$multi"; - } - - close(NEWFILE); - } - - closedir(RULESDIR); -} - - - -# Read in *.rules in given directory and return highest SID. -sub get_next_available_sid(@) -{ - my @dirs = @_; - - foreach my $dir (@dirs) { - opendir(RULESDIR, "$dir") or die("could not open \"$dir\": $!\n"); - - # Only care about *.rules. - while (my $file = readdir(RULESDIR)) { - next unless ($file =~ /\.rules$/); - - open(OLDFILE, "<$dir/$file") or die("could not open \"$dir/$file\": $!\n"); - my @file = ; - close(OLDFILE); - - my ($single, $multi, $nonrule, $msg, $sid); - - while (get_next_entry(\@file, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - if (defined($single) && defined($sid)) { - $all_sids{$sid}++; - - # If this is an active rule add to %active_sids and - # warn if it already exists. - if ($single =~ /^\s*alert/) { - print STDERR "WARNING: duplicate SID: $sid\n" - if (exists($active_sids{$sid})); - $active_sids{$sid}++ - } - } - } - } - } - - # Sort sids and use highest one + 1, unless it's below MIN_SID. - @_ = sort {$a <=> $b} keys(%all_sids); - my $sid = pop(@_); - - if (!defined($sid)) { - $sid = $MIN_SID - } else { - $sid++; - } - - # If it's below MIN_SID, use MIN_SID instead. - $sid = $MIN_SID if ($sid < $MIN_SID); - - return ($sid) -} - - - -sub get_next_entry($ $ $ $ $ $) -{ - my $arr_ref = shift; - my $single_ref = shift; - my $multi_ref = shift; - my $nonrule_ref = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - undef($$single_ref); - undef($$multi_ref); - undef($$nonrule_ref); - undef($$msg_ref); - undef($$sid_ref); - - my $line = shift(@$arr_ref) || return(0); - my $disabled = 0; - my $broken = 0; - - # Possible beginning of multi-line rule? - if ($line =~ /$MULTILINE_RULE_REGEXP/oi) { - $$single_ref = $line; - $$multi_ref = $line; - - $disabled = 1 if ($line =~ /^\s*#/); - - # Keep on reading as long as line ends with "\". - while (!$broken && $line =~ /\\\s*\n$/) { - - # Remove trailing "\" and newline for single-line version. - $$single_ref =~ s/\\\s*\n//; - - # If there are no more lines, this can not be a valid multi-line rule. - if (!($line = shift(@$arr_ref))) { - - warn("\nWARNING: got EOF while parsing multi-line rule: $$multi_ref\n") - if ($config{verbose}); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - - # Multi-line continuation. - $$multi_ref .= $line; - - # If there are non-comment lines in the middle of a disabled rule, - # mark the rule as broken to return as non-rule lines. - if ($line !~ /^\s*#/ && $disabled) { - $broken = 1; - } elsif ($line =~ /^\s*#/ && !$disabled) { - # comment line (with trailing slash) in the middle of an active rule - ignore it - } else { - $line =~ s/^\s*#*\s*//; # remove leading # in single-line version - $$single_ref .= $line; - } - - } # while line ends with "\" - - # Single-line version should now be a valid rule. - # If not, it wasn't a valid multi-line rule after all. - if (!$broken && parse_singleline_rule($$single_ref, $msg_ref, $sid_ref)) { - - $$single_ref =~ s/^\s*//; # remove leading whitespaces - $$single_ref =~ s/^#+\s*/#/; # remove whitespaces next to leading # - $$single_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - $$multi_ref =~ s/^\s*//; - $$multi_ref =~ s/\s*\n$/\n/; - $$multi_ref =~ s/^#+\s*/#/; - - return (1); # return multi - } else { - warn("\nWARNING: invalid multi-line rule: $$single_ref\n") - if ($config{verbose} && $$multi_ref !~ /^\s*#/); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - } elsif (parse_singleline_rule($line, $msg_ref, $sid_ref)) { - $$single_ref = $line; - $$single_ref =~ s/^\s*//; - $$single_ref =~ s/^#+\s*/#/; - $$single_ref =~ s/\s*\n$/\n/; - - return (1); # return single - } else { # non-rule line - - # Do extra check and warn if it *might* be a rule anyway, - # but that we just couldn't parse for some reason. - warn("\nWARNING: line may be a rule but it could not be parsed ". - "(missing sid or msg?): $line\n") - if ($config{verbose} && $line =~ /^\s*alert .+msg\s*:\s*".+"\s*;/); - - $$nonrule_ref = $line; - $$nonrule_ref =~ s/\s*\n$/\n/; - - return (1); # return non-rule - } -} - - - -# From oinkmaster.pl except that this version -# has been modified so that the sid is *optional*. -sub parse_singleline_rule($ $ $) -{ - my $line = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - if ($line =~ /$SINGLELINE_RULE_REGEXP/oi) { - - if ($line =~ /\bmsg\s*:\s*"(.+?)"\s*;/i) { - $$msg_ref = $1; - } else { - return (0); - } - - if ($line =~ /\bsid\s*:\s*(\d+)\s*;/i) { - $$sid_ref = $1; -# } else { -# return (0); - } - - return (1); - } - - return (0); -} diff --git a/config/snort-dev/bin/oinkmaster_contrib/create-sidmap.pl b/config/snort-dev/bin/oinkmaster_contrib/create-sidmap.pl deleted file mode 100644 index 26a9040c..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/create-sidmap.pl +++ /dev/null @@ -1,280 +0,0 @@ -#!/usr/local/bin/perl -w - -# $Id: create-sidmap.pl,v 1.21 2005/12/31 13:42:46 andreas_o Exp $ # - -# Copyright (c) 2004-2006 Andreas Östling -# 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. -# -# 3. Neither the name of the author nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "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 COPYRIGHT OWNER OR -# 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. - - -use strict; - -sub get_next_entry($ $ $ $ $ $); -sub parse_singleline_rule($ $ $); - -# Files to ignore. -my %skipfiles = ( - 'deleted.rules' => 1, -); - -# Regexp to match the start of a multi-line rule. -# %ACTIONS% will be replaced with content of $config{actions} later. -my $MULTILINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.*\\\\\s*\n$'; # '; - -# Regexp to match a single-line rule. -my $SINGLELINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.+;\s*\)\s*$'; # '; - -my $USAGE = << "RTFM"; - -Parse active rules in *.rules in one or more directories and create a SID -map. Result is sent to standard output, which can be redirected to a -sid-msg.map file. - -Usage: $0 [rulesdir2, ...] - -RTFM - -my $verbose = 1; - -my (%sidmap, %config); - -my @rulesdirs = @ARGV; - -die($USAGE) unless ($#rulesdirs > -1); - -$config{rule_actions} = "alert|drop|log|pass|reject|sdrop|activate|dynamic"; - -$SINGLELINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; -$MULTILINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; - - -# Read in all rules from each rules file (*.rules) in each rules dir. -# into %sidmap. -foreach my $rulesdir (@rulesdirs) { - opendir(RULESDIR, "$rulesdir") or die("could not open \"$rulesdir\": $!\n"); - - while (my $file = readdir(RULESDIR)) { - next unless ($file =~ /\.rules$/); - next if ($skipfiles{$file}); - - open(FILE, "$rulesdir/$file") or die("could not open \"$rulesdir/$file\": $!\n"); - my @file = ; - close(FILE); - - my ($single, $multi, $nonrule, $msg, $sid); - - while (get_next_entry(\@file, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - if (defined($single)) { - - warn("WARNING: duplicate SID: $sid (discarding old)\n") - if (exists($sidmap{$sid})); - - $sidmap{$sid} = "$sid || $msg"; - - # Print all references. Borrowed from Brian Caswell's regen-sidmap script. - my $ref = $single; - while ($ref =~ s/(.*)reference\s*:\s*([^\;]+)(.*)$/$1 $3/) { - $sidmap{$sid} .= " || $2" - } - - $sidmap{$sid} .= "\n"; - } - } - } -} - -# Print results. -foreach my $sid (sort { $a <=> $b } keys(%sidmap)) { - print "$sidmap{$sid}"; -} - - - -# Same as in oinkmaster.pl. -sub get_next_entry($ $ $ $ $ $) -{ - my $arr_ref = shift; - my $single_ref = shift; - my $multi_ref = shift; - my $nonrule_ref = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - undef($$single_ref); - undef($$multi_ref); - undef($$nonrule_ref); - undef($$msg_ref); - undef($$sid_ref); - - my $line = shift(@$arr_ref) || return(0); - my $disabled = 0; - my $broken = 0; - - # Possible beginning of multi-line rule? - if ($line =~ /$MULTILINE_RULE_REGEXP/oi) { - $$single_ref = $line; - $$multi_ref = $line; - - $disabled = 1 if ($line =~ /^\s*#/); - - # Keep on reading as long as line ends with "\". - while (!$broken && $line =~ /\\\s*\n$/) { - - # Remove trailing "\" and newline for single-line version. - $$single_ref =~ s/\\\s*\n//; - - # If there are no more lines, this can not be a valid multi-line rule. - if (!($line = shift(@$arr_ref))) { - - warn("\nWARNING: got EOF while parsing multi-line rule: $$multi_ref\n") - if ($config{verbose}); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - - # Multi-line continuation. - $$multi_ref .= $line; - - # If there are non-comment lines in the middle of a disabled rule, - # mark the rule as broken to return as non-rule lines. - if ($line !~ /^\s*#/ && $disabled) { - $broken = 1; - } elsif ($line =~ /^\s*#/ && !$disabled) { - # comment line (with trailing slash) in the middle of an active rule - ignore it - } else { - $line =~ s/^\s*#*\s*//; # remove leading # in single-line version - $$single_ref .= $line; - } - - } # while line ends with "\" - - # Single-line version should now be a valid rule. - # If not, it wasn't a valid multi-line rule after all. - if (!$broken && parse_singleline_rule($$single_ref, $msg_ref, $sid_ref)) { - - $$single_ref =~ s/^\s*//; # remove leading whitespaces - $$single_ref =~ s/^#+\s*/#/; # remove whitespaces next to leading # - $$single_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - $$multi_ref =~ s/^\s*//; - $$multi_ref =~ s/\s*\n$/\n/; - $$multi_ref =~ s/^#+\s*/#/; - - return (1); # return multi - } else { - warn("\nWARNING: invalid multi-line rule: $$single_ref\n") - if ($config{verbose} && $$multi_ref !~ /^\s*#/); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - } elsif (parse_singleline_rule($line, $msg_ref, $sid_ref)) { - $$single_ref = $line; - $$single_ref =~ s/^\s*//; - $$single_ref =~ s/^#+\s*/#/; - $$single_ref =~ s/\s*\n$/\n/; - - return (1); # return single - } else { # non-rule line - - # Do extra check and warn if it *might* be a rule anyway, - # but that we just couldn't parse for some reason. - warn("\nWARNING: line may be a rule but it could not be parsed ". - "(missing sid or msg?): $line\n") - if ($config{verbose} && $line =~ /^\s*alert .+msg\s*:\s*".+"\s*;/); - - $$nonrule_ref = $line; - $$nonrule_ref =~ s/\s*\n$/\n/; - - return (1); # return non-rule - } -} - - - -# Same as in oinkmaster.pl. -sub parse_singleline_rule($ $ $) -{ - my $line = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - if ($line =~ /$SINGLELINE_RULE_REGEXP/oi) { - - if ($line =~ /\bmsg\s*:\s*"(.+?)"\s*;/i) { - $$msg_ref = $1; - } else { - return (0); - } - - if ($line =~ /\bsid\s*:\s*(\d+)\s*;/i) { - $$sid_ref = $1; - } else { - return (0); - } - - return (1); - } - - return (0); -} diff --git a/config/snort-dev/bin/oinkmaster_contrib/make_snortsam_map.pl b/config/snort-dev/bin/oinkmaster_contrib/make_snortsam_map.pl deleted file mode 100644 index 42ce2b3b..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/make_snortsam_map.pl +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/perl -w - -# $Id: makesidex.pl,v 1.11 2005/12/31 13:42:46 andreas_o Exp $ # - -# Copyright (c) 2004-2006 Andreas Östling -# 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. -# -# 3. Neither the name of the author nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "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 COPYRIGHT OWNER OR -# 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. - -# Modified by Robert Zelaya for the snort package. -# gets enabled sids and msgs for all rules in a dir - - - -use strict; - -sub get_next_entry($ $ $ $ $ $); -sub parse_singleline_rule($ $ $); - - -# Regexp to match the start of a multi-line rule. -# %ACTIONS% will be replaced with content of $config{actions} later. -my $MULTILINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.*\\\\\s*\n$'; # '; - -# Regexp to match a single-line rule. -my $SINGLELINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.+;\s*\)\s*$'; # '; - -my $USAGE = << "RTFM"; - -Parse *.rules in one or more directories and look for all rules that are -disabled (i.e. begin with "#") and print "disablesid # " to -standard output for all those rules. This output can be redirected to a -file, which will be understood by Oinkmaster. - -Usage: $0 [rulesdir2, ...] - -RTFM - -my $verbose = 1; - -my (%disabled, %config); - -my @rulesdirs = @ARGV; - -die($USAGE) unless ($#rulesdirs > -1); - -$config{rule_actions} = "alert|drop|log|pass|reject|sdrop|activate|dynamic"; - -$SINGLELINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; -$MULTILINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; - -foreach my $rulesdir (@rulesdirs) { - opendir(RULESDIR, "$rulesdir") or die("could not open \"$rulesdir\": $!\n"); - - while (my $file = readdir(RULESDIR)) { - next unless ($file =~ /\.rules$/); - - open(FILE, "$rulesdir/$file") or die("could not open \"$rulesdir/$file\": $!\n"); - my @file = ; - close(FILE); - - my ($single, $multi, $nonrule, $msg, $sid); - - while (get_next_entry(\@file, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - $single = $multi if (defined($multi)); - $disabled{$sid} = $msg - if (defined($single) && $single =~ /^alert/); - } - } -} - -# Print results. -foreach my $sid (sort { $a <=> $b } keys(%disabled)) { - printf("%-25s # %s\n", "$sid", $disabled{$sid}); -} - - - -# Same as in oinkmaster.pl. -sub get_next_entry($ $ $ $ $ $) -{ - my $arr_ref = shift; - my $single_ref = shift; - my $multi_ref = shift; - my $nonrule_ref = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - undef($$single_ref); - undef($$multi_ref); - undef($$nonrule_ref); - undef($$msg_ref); - undef($$sid_ref); - - my $line = shift(@$arr_ref) || return(0); - my $disabled = 0; - my $broken = 0; - - # Possible beginning of multi-line rule? - if ($line =~ /$MULTILINE_RULE_REGEXP/oi) { - $$single_ref = $line; - $$multi_ref = $line; - - $disabled = 1 if ($line =~ /^alert/); - - # Keep on reading as long as line ends with "\". - while (!$broken && $line =~ /\\\s*\n$/) { - - # Remove trailing "\" and newline for single-line version. - $$single_ref =~ s/\\\s*\n//; - - # If there are no more lines, this can not be a valid multi-line rule. - if (!($line = shift(@$arr_ref))) { - - warn("\nWARNING: got EOF while parsing multi-line rule: $$multi_ref\n") - if ($config{verbose}); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - - # Multi-line continuation. - $$multi_ref .= $line; - - # If there are non-comment lines in the middle of a disabled rule, - # mark the rule as broken to return as non-rule lines. - if ($line !~ /^alert/ && $disabled) { - $broken = 1; - } elsif ($line =~ /^alert/ && !$disabled) { - # comment line (with trailing slash) in the middle of an active rule - ignore it - } else { - $line =~ s/^\s*alert*\s*/alert/; # remove leading # in single-line version - $$single_ref .= $line; - } - - } # while line ends with "\" - - # Single-line version should now be a valid rule. - # If not, it wasn't a valid multi-line rule after all. - if (!$broken && parse_singleline_rule($$single_ref, $msg_ref, $sid_ref)) { - - $$single_ref =~ s/^\s*//; # remove leading whitespaces - $$single_ref =~ s/^alert+\s*/#/; # remove whitespaces next to leading # - $$single_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - $$multi_ref =~ s/^\s*//; - $$multi_ref =~ s/\s*\n$/\n/; - $$multi_ref =~ s/^alert+\s*/alert/; - - return (1); # return multi - } else { - warn("\nWARNING: invalid multi-line rule: $$single_ref\n") - if ($config{verbose} && $$multi_ref !~ /^alert/); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - } elsif (parse_singleline_rule($line, $msg_ref, $sid_ref)) { - $$single_ref = $line; - $$single_ref =~ s/^\s*//; - $$single_ref =~ s/^alert+\s*/alert/; - $$single_ref =~ s/\s*\n$/\n/; - - return (1); # return single - } else { # non-rule line - - # Do extra check and warn if it *might* be a rule anyway, - # but that we just couldn't parse for some reason. - warn("\nWARNING: line may be a rule but it could not be parsed ". - "(missing sid or msg?): $line\n") - if ($config{verbose} && $line =~ /^\s*alert .+msg\s*:\s*".+"\s*;/); - - $$nonrule_ref = $line; - $$nonrule_ref =~ s/\s*\n$/\n/; - - return (1); # return non-rule - } -} - - - -# Same as in oinkmaster.pl. -sub parse_singleline_rule($ $ $) -{ - my $line = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - if ($line =~ /$SINGLELINE_RULE_REGEXP/oi) { - - if ($line =~ /\bmsg\s*:\s*"(.+?)"\s*;/i) { - $$msg_ref = $1; - } else { - return (0); - } - - if ($line =~ /\bsid\s*:\s*(\d+)\s*;/i) { - $$sid_ref = $1; - } else { - return (0); - } - - return (1); - } - - return (0); -} diff --git a/config/snort-dev/bin/oinkmaster_contrib/makesidex.pl b/config/snort-dev/bin/oinkmaster_contrib/makesidex.pl deleted file mode 100644 index 80354735..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/makesidex.pl +++ /dev/null @@ -1,261 +0,0 @@ -#!/usr/bin/perl -w - -# $Id: makesidex.pl,v 1.11 2005/12/31 13:42:46 andreas_o Exp $ # - -# Copyright (c) 2004-2006 Andreas Östling -# 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. -# -# 3. Neither the name of the author nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "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 COPYRIGHT OWNER OR -# 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. - - -use strict; - -sub get_next_entry($ $ $ $ $ $); -sub parse_singleline_rule($ $ $); - - -# Regexp to match the start of a multi-line rule. -# %ACTIONS% will be replaced with content of $config{actions} later. -my $MULTILINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.*\\\\\s*\n$'; # '; - -# Regexp to match a single-line rule. -my $SINGLELINE_RULE_REGEXP = '^\s*#*\s*(?:%ACTIONS%)'. - '\s.+;\s*\)\s*$'; # '; - -my $USAGE = << "RTFM"; - -Parse *.rules in one or more directories and look for all rules that are -disabled (i.e. begin with "#") and print "disablesid # " to -standard output for all those rules. This output can be redirected to a -file, which will be understood by Oinkmaster. - -Usage: $0 [rulesdir2, ...] - -RTFM - -my $verbose = 1; - -my (%disabled, %config); - -my @rulesdirs = @ARGV; - -die($USAGE) unless ($#rulesdirs > -1); - -$config{rule_actions} = "alert|drop|log|pass|reject|sdrop|activate|dynamic"; - -$SINGLELINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; -$MULTILINE_RULE_REGEXP =~ s/%ACTIONS%/$config{rule_actions}/; - -foreach my $rulesdir (@rulesdirs) { - opendir(RULESDIR, "$rulesdir") or die("could not open \"$rulesdir\": $!\n"); - - while (my $file = readdir(RULESDIR)) { - next unless ($file =~ /\.rules$/); - - open(FILE, "$rulesdir/$file") or die("could not open \"$rulesdir/$file\": $!\n"); - my @file = ; - close(FILE); - - my ($single, $multi, $nonrule, $msg, $sid); - - while (get_next_entry(\@file, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - $single = $multi if (defined($multi)); - $disabled{$sid} = $msg - if (defined($single) && $single =~ /^\s*#/); - } - } -} - -# Print results. -foreach my $sid (sort { $a <=> $b } keys(%disabled)) { - printf("%-25s # %s\n", "disablesid $sid", $disabled{$sid}); -} - - - -# Same as in oinkmaster.pl. -sub get_next_entry($ $ $ $ $ $) -{ - my $arr_ref = shift; - my $single_ref = shift; - my $multi_ref = shift; - my $nonrule_ref = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - undef($$single_ref); - undef($$multi_ref); - undef($$nonrule_ref); - undef($$msg_ref); - undef($$sid_ref); - - my $line = shift(@$arr_ref) || return(0); - my $disabled = 0; - my $broken = 0; - - # Possible beginning of multi-line rule? - if ($line =~ /$MULTILINE_RULE_REGEXP/oi) { - $$single_ref = $line; - $$multi_ref = $line; - - $disabled = 1 if ($line =~ /^\s*#/); - - # Keep on reading as long as line ends with "\". - while (!$broken && $line =~ /\\\s*\n$/) { - - # Remove trailing "\" and newline for single-line version. - $$single_ref =~ s/\\\s*\n//; - - # If there are no more lines, this can not be a valid multi-line rule. - if (!($line = shift(@$arr_ref))) { - - warn("\nWARNING: got EOF while parsing multi-line rule: $$multi_ref\n") - if ($config{verbose}); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - - # Multi-line continuation. - $$multi_ref .= $line; - - # If there are non-comment lines in the middle of a disabled rule, - # mark the rule as broken to return as non-rule lines. - if ($line !~ /^\s*#/ && $disabled) { - $broken = 1; - } elsif ($line =~ /^\s*#/ && !$disabled) { - # comment line (with trailing slash) in the middle of an active rule - ignore it - } else { - $line =~ s/^\s*#*\s*//; # remove leading # in single-line version - $$single_ref .= $line; - } - - } # while line ends with "\" - - # Single-line version should now be a valid rule. - # If not, it wasn't a valid multi-line rule after all. - if (!$broken && parse_singleline_rule($$single_ref, $msg_ref, $sid_ref)) { - - $$single_ref =~ s/^\s*//; # remove leading whitespaces - $$single_ref =~ s/^#+\s*/#/; # remove whitespaces next to leading # - $$single_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - $$multi_ref =~ s/^\s*//; - $$multi_ref =~ s/\s*\n$/\n/; - $$multi_ref =~ s/^#+\s*/#/; - - return (1); # return multi - } else { - warn("\nWARNING: invalid multi-line rule: $$single_ref\n") - if ($config{verbose} && $$multi_ref !~ /^\s*#/); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - } elsif (parse_singleline_rule($line, $msg_ref, $sid_ref)) { - $$single_ref = $line; - $$single_ref =~ s/^\s*//; - $$single_ref =~ s/^#+\s*/#/; - $$single_ref =~ s/\s*\n$/\n/; - - return (1); # return single - } else { # non-rule line - - # Do extra check and warn if it *might* be a rule anyway, - # but that we just couldn't parse for some reason. - warn("\nWARNING: line may be a rule but it could not be parsed ". - "(missing sid or msg?): $line\n") - if ($config{verbose} && $line =~ /^\s*alert .+msg\s*:\s*".+"\s*;/); - - $$nonrule_ref = $line; - $$nonrule_ref =~ s/\s*\n$/\n/; - - return (1); # return non-rule - } -} - - - -# Same as in oinkmaster.pl. -sub parse_singleline_rule($ $ $) -{ - my $line = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - if ($line =~ /$SINGLELINE_RULE_REGEXP/oi) { - - if ($line =~ /\bmsg\s*:\s*"(.+?)"\s*;/i) { - $$msg_ref = $1; - } else { - return (0); - } - - if ($line =~ /\bsid\s*:\s*(\d+)\s*;/i) { - $$sid_ref = $1; - } else { - return (0); - } - - return (1); - } - - return (0); -} diff --git a/config/snort-dev/bin/oinkmaster_contrib/oinkgui.pl b/config/snort-dev/bin/oinkmaster_contrib/oinkgui.pl deleted file mode 100644 index 4e96f7db..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/oinkgui.pl +++ /dev/null @@ -1,1046 +0,0 @@ -#!/usr/bin/perl -w - -# $Id: oinkgui.pl,v 1.52 2005/12/31 13:42:46 andreas_o Exp $ # - -# Copyright (c) 2004-2006 Andreas Östling -# 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. -# -# 3. Neither the name of the author nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "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 COPYRIGHT OWNER OR -# 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. - - -use 5.006001; - -use strict; -use File::Spec; -use Tk; -use Tk::Balloon; -use Tk::BrowseEntry; -use Tk::FileSelect; -use Tk::NoteBook; -use Tk::ROText; - -use constant CSIDL_DRIVES => 17; - -sub update_rules(); -sub clear_messages(); -sub create_cmdline($); -sub fileDialog($ $ $ $); -sub load_config(); -sub save_config(); -sub save_messages(); -sub update_file_label_color($ $ $); -sub create_fileSelectFrame($ $ $ $ $ $); -sub create_checkbutton($ $ $); -sub create_radiobutton($ $ $); -sub create_actionbutton($ $ $); -sub execute_oinkmaster(@); -sub logmsg($ $); - - -my $version = 'Oinkmaster GUI v1.1'; - -my @oinkmaster_conf = qw( - /etc/oinkmaster.conf - /usr/local/etc/oinkmaster.conf -); - -# List of URLs that will show up in the URL BrowseEntry. -my @urls = qw( - http://www.bleedingsnort.com/bleeding.rules.tar.gz - http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules.tar.gz - http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-CURRENT.tar.gz - http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-2.3.tar.gz -); - -my %color = ( - background => 'Bisque3', - button => 'Bisque2', - label => 'Bisque1', - notebook_bg => 'Bisque2', - notebook_inact => 'Bisque3', - file_label_ok => '#00e000', - file_label_not_ok => 'red', - out_frame_fg => 'white', - out_frame_bg => 'black', - entry_bg => 'white', - button_active => 'white', - button_bg => 'Bisque4', -); - -my %config = ( - animate => 1, - careful => 0, - enable_all => 0, - check_removed => 0, - output_mode => 'normal', - diff_mode => 'detailed', - perl => $^X, - oinkmaster => "", - oinkmaster_conf => "", - outdir => "", - url => "", - varfile => "", - backupdir => "", - editor => "", -); - -my %help = ( - - # File locations. - oinkscript => 'Location of the executable Oinkmaster script (oinkmaster.pl).', - oinkconf => 'The Oinkmaster configuration file to use.', - outdir => 'Where to put the new rules. This should be the directory where you '. - 'store your current rules.', - - url => 'Alternate location of rules archive to download/copy. '. - 'Leave empty to use the location set in oinkmaster.conf.', - varfile => 'Variables that exist in downloaded snort.conf but not in '. - 'this file will be added to it. Leave empty to skip.', - backupdir => 'Directory to put tarball of old rules before overwriting them. '. - 'Leave empty to skip backup.', - editor => 'Full path to editor to execute when pressing the "edit" button '. - '(wordpad is recommended on Windows). ', - - # Checkbuttons. - careful => 'In careful mode, Oinkmaster will just check for changes, '. - 'not update anything.', - enable => 'Some rules may be commented out by default (for a reason!). '. - 'This option will make Oinkmaster enable those.', - removed => 'Check for rules files that exist in the output directory but not '. - 'in the downloaded rules archive.', - - # Action buttons. - clear => 'Clear current output messages.', - save => 'Save current output messages to file.', - exit => 'Exit the GUI.', - update => 'Execute Oinkmaster to update the rules.', - test => 'Test current Oinkmaster configuration. ' . - 'If there are no fatal errors, you are ready to update the rules.', - version => 'Request version information from Oinkmaster.', -); - - -my $gui_config_file = ""; -my $use_fileop = 0; - - -#### MAIN #### - -select STDERR; -$| = 1; -select STDOUT; -$| = 1; - -# Find out if can use Win32::FileOp. -if ($^O eq 'MSWin32') { - BEGIN { $^W = 0 } - $use_fileop = 1 if (eval "require Win32::FileOp"); -} - -# Find out which oinkmaster.pl file to default to. -foreach my $dir (File::Spec->path()) { - my $file = "$dir/oinkmaster"; - if (-f "$file" && (-x "$file" || $^O eq 'MSWin32')) { - $config{oinkmaster} = $file; - last; - } elsif (-f "$file.pl" && (-x "$file" || $^O eq 'MSWin32')) { - $config{oinkmaster} = "$file.pl"; - last; - } -} - -# Find out which oinkmaster config file to default to. -foreach my $file (@oinkmaster_conf) { - if (-e "$file") { - $config{oinkmaster_conf} = $file; - last; - } -} - -# Find out where the GUI config file is (it's not required). -if ($ENV{HOME}) { - $gui_config_file = "$ENV{HOME}/.oinkguirc" -} elsif ($ENV{HOMEDRIVE} && $ENV{HOMEPATH}) { - $gui_config_file = "$ENV{HOMEDRIVE}$ENV{HOMEPATH}\\.oinkguirc"; -} - - -# Create main window. -my $main = MainWindow->new( - -background => "$color{background}", - -title => "$version", -); - - -# Create scrolled frame with output messages. -my $out_frame = $main->Scrolled('ROText', - -setgrid => 'true', - -scrollbars => 'e', - -background => $color{out_frame_bg}, - -foreground => $color{out_frame_fg}, -); - - -my $help_label = $main->Label( - -relief => 'groove', - -background => "$color{label}", -); - -my $balloon = $main->Balloon( - -statusbar => $help_label, -); - - -# Create notebook. -my $notebook = $main->NoteBook( - -ipadx => 6, - -ipady => 6, - -background => $color{notebook_bg}, - -inactivebackground => $color{notebook_inact}, - -backpagecolor => $color{background}, -); - - -# Create tab with required files/dirs. -my $req_tab = $notebook->add("required", - -label => "Required files and directories", - -underline => 0, -); - -$req_tab->configure(-bg => "$color{notebook_inact}"); - - -# Create frame with oinkmaster.pl location. -my $filetypes = [ - ['Oinkmaster script', 'oinkmaster.pl'], - ['All files', '*' ] -]; - -my $oinkscript_frame = - create_fileSelectFrame($req_tab, "oinkmaster.pl", 'EXECFILE', - \$config{oinkmaster}, 'NOEDIT', $filetypes); - -$balloon->attach($oinkscript_frame, -statusmsg => $help{oinkscript}); - - -# Create frame with oinkmaster.conf location. -$filetypes = [ - ['configuration files', '.conf'], - ['All files', '*' ] -]; - -my $oinkconf_frame = - create_fileSelectFrame($req_tab, "oinkmaster.conf", 'ROFILE', - \$config{oinkmaster_conf}, 'EDIT', $filetypes); - -$balloon->attach($oinkconf_frame, -statusmsg => $help{oinkconf}); - - -# Create frame with output directory. -my $outdir_frame = - create_fileSelectFrame($req_tab, "output directory", 'WRDIR', - \$config{outdir}, 'NOEDIT', undef); - -$balloon->attach($outdir_frame, -statusmsg => $help{outdir}); - - - -# Create tab with optional files/dirs. -my $opt_tab = $notebook->add("optional", - -label => "Optional files and directories", - -underline => 0, -); - -$opt_tab->configure(-bg => "$color{notebook_inact}"); - -# Create frame with alternate URL location. -$filetypes = [ - ['compressed tar files', '.tar.gz'] -]; - -my $url_frame = - create_fileSelectFrame($opt_tab, "Alternate URL", 'URL', - \$config{url}, 'NOEDIT', $filetypes); - -$balloon->attach($url_frame, -statusmsg => $help{url}); - - -# Create frame with variable file. -$filetypes = [ - ['Snort configuration files', ['.conf', '.config']], - ['All files', '*' ] -]; - -my $varfile_frame = - create_fileSelectFrame($opt_tab, "Variable file", 'WRFILE', - \$config{varfile}, 'EDIT', $filetypes); - -$balloon->attach($varfile_frame, -statusmsg => $help{varfile}); - - -# Create frame with backup dir location. -my $backupdir_frame = - create_fileSelectFrame($opt_tab, "Backup directory", 'WRDIR', - \$config{backupdir}, 'NOEDIT', undef); - -$balloon->attach($backupdir_frame, -statusmsg => $help{backupdir}); - - -# Create frame with editor location. -$filetypes = [ - ['executable files', ['.exe']], - ['All files', '*' ] -]; - -my $editor_frame = - create_fileSelectFrame($opt_tab, "Editor", 'EXECFILE', - \$config{editor}, 'NOEDIT', $filetypes); - -$balloon->attach($editor_frame, -statusmsg => $help{editor}); - - - -$notebook->pack( - -expand => 'no', - -fill => 'x', - -padx => '5', - -pady => '5', - -side => 'top' -); - - -# Create the frame to the left. -my $left_frame = $main->Frame( - -background => "$color{label}", - -border => '2', -)->pack( - -side => 'left', - -fill => 'y', -); - - -# Create "GUI settings" label. -$left_frame->Label( - -text => "GUI settings:", - -background => "$color{label}", -)->pack( - -side => 'top', - -fill => 'x', -); - - -create_actionbutton($left_frame, "Load saved settings", \&load_config); -create_actionbutton($left_frame, "Save current settings", \&save_config); - - -# Create "options" label at the top of the left frame. -$left_frame->Label( - -text => "Options:", - -background => "$color{label}", -)->pack(-side => 'top', - -fill => 'x', -); - - -# Create checkbuttons in the left frame. -$balloon->attach( - create_checkbutton($left_frame, "Careful mode", \$config{careful}), - -statusmsg => $help{careful} -); - -$balloon->attach( - create_checkbutton($left_frame, "Enable all", \$config{enable_all}), - -statusmsg => $help{enable} -); - -$balloon->attach( - create_checkbutton($left_frame, "Check for removed files", \$config{check_removed}), - -statusmsg => $help{removed} -); - - -# Create "mode" label. -$left_frame->Label( - -text => "Output mode:", - -background => "$color{label}", -)->pack( - -side => 'top', - -fill => 'x', -); - -# Create mode radiobuttons in the left frame. -create_radiobutton($left_frame, "super-quiet", \$config{output_mode}); -create_radiobutton($left_frame, "quiet", \$config{output_mode}); -create_radiobutton($left_frame, "normal", \$config{output_mode}); -create_radiobutton($left_frame, "verbose", \$config{output_mode}); - -# Create "Diff mode" label. -$left_frame->Label( - -text => "Diff mode:", - -background => "$color{label}", -)->pack( - -side => 'top', - -fill => 'x', -); - -create_radiobutton($left_frame, "detailed", \$config{diff_mode}); -create_radiobutton($left_frame, "summarized", \$config{diff_mode}); -create_radiobutton($left_frame, "remove common", \$config{diff_mode}); - - -# Create "activity messages" label. -$main->Label( - -text => "Output messages:", - -width => '130', - -background => "$color{label}", -)->pack( - -side => 'top', - -fill => 'x', -); - - - -# Pack output frame. -$out_frame->pack( - -expand => 'yes', - -fill => 'both', -); - - -# Pack help label below output window. -$help_label->pack( - -fill => 'x', -); - - -# Create "actions" label. -$left_frame->Label( - -text => "Actions:", - -background => "$color{label}", -)->pack( - -side => 'top', - -fill => 'x', -); - - -# Create action buttons. - -$balloon->attach( - create_actionbutton($left_frame, "Update rules!", \&update_rules), - -statusmsg => $help{update} -); - -$balloon->attach( - create_actionbutton($left_frame, "Clear output messages", \&clear_messages), - -statusmsg => $help{clear} -); - -$balloon->attach( - create_actionbutton($left_frame, "Save output messages", \&save_messages), - -statusmsg => $help{save} -); - -$balloon->attach( - create_actionbutton($left_frame, "Exit", \&exit), - -statusmsg => $help{exit} -); - - - -# Make the mousewheel scroll the output window. Taken from Mastering Perl/Tk. -if ($^O eq 'MSWin32') { - $out_frame->bind('' => - [ sub { $_[0]->yview('scroll', -($_[1] / 120) * 3, 'units')}, - Ev('D') ] - ); -} else { - $out_frame->bind('<4>' => sub { - $_[0]->yview('scroll', -3, 'units') unless $Tk::strictMotif; - }); - - $out_frame->bind('<5>' => sub { - $_[0]->yview('scroll', +3, 'units') unless $Tk::strictMotif; - }); -} - - - -# Now the fun begins. -if ($config{animate}) { - foreach (split(//, "Welcome to $version")) { - logmsg("$_", 'MISC'); - $out_frame->after(5); - } -} else { - logmsg("Welcome to $version", 'MISC'); -} - -logmsg("\n\n", 'MISC'); - -# Load gui settings into %config. -load_config(); - - -# Warn if any required file/directory is not set. -logmsg("No oinkmaster.pl set, please select one above!\n\n", 'ERROR') - if ($config{oinkmaster} !~ /\S/); - -logmsg("No oinkmaster configuration file set, please select one above!\n\n", 'ERROR') - if ($config{oinkmaster_conf} !~ /\S/); - -logmsg("Output directory is not set, please select one above!\n\n", 'ERROR') - if ($config{outdir} !~ /\S/); - - -MainLoop; - - - -#### END #### - - - -sub fileDialog($ $ $ $) -{ - my $var_ref = shift; - my $title = shift; - my $type = shift; - my $filetypes = shift; - my $dirname; - - if ($type eq 'WRDIR') { - if ($use_fileop) { - $dirname = Win32::FileOp::BrowseForFolder("title", CSIDL_DRIVES); - } else { - my $fs = $main->FileSelect(); - $fs->configure(-verify => ['-d', '-w'], -title => $title); - $dirname = $fs->Show; - } - $$var_ref = $dirname if ($dirname); - } elsif ($type eq 'EXECFILE' || $type eq 'ROFILE' || $type eq 'WRFILE' || $type eq 'URL') { - my $filename = $main->getOpenFile(-title => $title, -filetypes => $filetypes); - $$var_ref = $filename if ($filename); - } elsif ($type eq 'SAVEFILE') { - my $filename = $main->getSaveFile(-title => $title, -filetypes => $filetypes); - $$var_ref = $filename if ($filename); - } else { - logmsg("Unknown type ($type)\n", 'ERROR'); - } -} - - - -sub update_file_label_color($ $ $) -{ - my $label = shift; - my $filename = shift; - my $type = shift; - - $filename =~ s/^\s+//; - $filename =~ s/\s+$//; - - unless ($filename) { - $label->configure(-background => $color{file_label_not_ok}); - return (1); - } - - if ($type eq "URL") { - if ($filename =~ /^(?:http|ftp|scp):\/\/.+\.tar\.gz$/) { - $label->configure(-background => $color{file_label_ok}); - } elsif ($filename =~ /^(?:file:\/\/)*(.+\.tar\.gz)$/) { - my $file = $1; - if (-f "$file" && -r "$file") { - $label->configure(-background => $color{file_label_ok}); - } else { - $label->configure(-background => $color{file_label_not_ok}); - } - } else { - $label->configure(-background => $color{file_label_not_ok}); - } - } elsif ($type eq "ROFILE") { - if (-f "$filename" && -r "$filename") { - $label->configure(-background => $color{file_label_ok}); - } else { - $label->configure(-background => $color{file_label_not_ok}); - } - } elsif ($type eq "EXECFILE") { - if (-f "$filename" && (-x "$filename" || $^O eq 'MSWin32')) { - $label->configure(-background => $color{file_label_ok}); - } else { - $label->configure(-background => $color{file_label_not_ok}); - } - } elsif ($type eq "WRFILE") { - if (-f "$filename" && -w "$filename") { - $label->configure(-background => $color{file_label_ok}); - } else { - $label->configure(-background => $color{file_label_not_ok}); - } - } elsif ($type eq "WRDIR") { - if (-d "$filename" && -w "$filename") { - $label->configure(-background => $color{file_label_ok}); - } else { - $label->configure(-background => $color{file_label_not_ok}); - } - } else { - print STDERR "incorrect type ($type)\n"; - exit; - } - - return (1); -} - - - -sub create_checkbutton($ $ $) -{ - my $frame = shift; - my $name = shift; - my $var_ref = shift; - - my $button = $frame->Checkbutton( - -text => $name, - -background => $color{button}, - -activebackground => $color{button_active}, - -highlightbackground => $color{button_bg}, - -variable => $var_ref, - -relief => 'raise', - -anchor => 'w', - )->pack( - -fill => 'x', - -side => 'top', - -pady => '1', - ); - - return ($button); -} - - - -sub create_actionbutton($ $ $) -{ - my $frame = shift; - my $name = shift; - my $func_ref = shift; - - my $button = $frame->Button( - -text => $name, - -command => sub { - &$func_ref; - $out_frame->focus; - }, - -background => $color{button}, - -activebackground => $color{button_active}, - -highlightbackground => $color{button_bg}, - )->pack( - -fill => 'x', - ); - - return ($button); -} - - - -sub create_radiobutton($ $ $) -{ - my $frame = shift; - my $name = shift; - my $mode_ref = shift; - - my $button = $frame->Radiobutton( - -text => $name, - -highlightbackground => $color{button_bg}, - -background => $color{button}, - -activebackground => $color{button_active}, - -variable => $mode_ref, - -relief => 'raised', - -anchor => 'w', - -value => $name, - )->pack( - -side => 'top', - -pady => '1', - -fill => 'x', - ); - - return ($button); -} - - - -# Create

    Backup your old rules into before overwriting them --c Careful mode (dry run) - check for changes but do not update anything --C Use this configuration file instead of the default - May be specified multiple times to load multiple files --e Enable all rules that are disabled by default --h Show this usage information --i Interactive mode - you will be asked to approve the changes (if any) --m Minimize diff when printing result by removing common parts in rules --q Quiet mode - no output unless changes were found --Q Super-quiet mode - like -q but even more quiet --r Check for rules files that exist in the output directory - but not in the downloaded rules archive --s Leave out details in rules results, just print SID, msg and filename --S Look for new variables in this file in the downloaded archive instead - of the default (@DEFAULT_DIST_VAR_FILES). Used in conjunction with -U. - May be specified multiple times to search multiple files. --T Config test - just check configuration file(s) for errors/warnings --u Download from this URL instead of URL(s) in the configuration file - (http|https|ftp|file|scp:// ... .tar.gz|.gz, or dir://) - May be specified multiple times to grab multiple rules archives --U Merge new variables from downloaded snort.conf(s) into --v Verbose mode (debug) --V Show version and exit - -RTFM - exit; -} - - - -# Parse the command line arguments and exit if we don't like them. -sub parse_cmdline($) -{ - my $cfg_ref = shift; - - Getopt::Long::Configure("bundling"); - - my $cmdline_ok = GetOptions( - "b=s" => \$$cfg_ref{backup_dir}, - "c" => \$$cfg_ref{careful}, - "C=s" => \@{$$cfg_ref{config_files}}, - "e" => \$$cfg_ref{enable_all}, - "h" => \&show_usage, - "i" => \$$cfg_ref{interactive}, - "m" => \$$cfg_ref{minimize_diff}, - "o=s" => \$$cfg_ref{output_dir}, - "q" => \$$cfg_ref{quiet}, - "Q" => \$$cfg_ref{super_quiet}, - "r" => \$$cfg_ref{check_removed}, - "s" => \$$cfg_ref{summary_output}, - "S=s" => \@{$$cfg_ref{dist_var_files}}, - "T" => \$$cfg_ref{config_test_mode}, - "u=s" => \@{$$cfg_ref{url}}, - "U=s" => \$$cfg_ref{varfile}, - "v" => \$$cfg_ref{verbose}, - "V" => sub { - print "$VERSION\n"; - exit(0); - } - ); - - - show_usage unless ($cmdline_ok && $#ARGV == -1); - - $$cfg_ref{quiet} = 1 if ($$cfg_ref{super_quiet}); - $$cfg_ref{update_vars} = 1 if ($$cfg_ref{varfile}); - - if ($$cfg_ref{backup_dir}) { - $$cfg_ref{backup_dir} = File::Spec->canonpath($$cfg_ref{backup_dir}); - $$cfg_ref{make_backup} = 1; - } - - # Cannot specify dist var files without specifying var target file. - if (@{$$cfg_ref{dist_var_files}} && !$$cfg_ref{update_vars}) { - clean_exit("You can not specify distribution variable file(s) without ". - "also specifying local file to merge into"); - } - - # -o is the only required option in normal usage. - if ($$cfg_ref{output_dir}) { - $$cfg_ref{output_dir} = File::Spec->canonpath($$cfg_ref{output_dir}); - } else { - warn("Error: no output directory specified.\n"); - show_usage(); - } - - # Mark that url was set on command line (so we don't override it later). - $$cfg_ref{cmdline_url} = 1 if ($#{$config{url}} > -1); -} - - - -# Read in stuff from the configuration file. -sub read_config($ $) -{ - my $config_file = shift; - my $cfg_ref = shift; - my $linenum = 0; - my $multi; - my %templates; - - $config_file = File::Spec->canonpath(File::Spec->rel2abs($config_file)); - - clean_exit("configuration file \"$config_file\" does not exist.\n") - unless (-e "$config_file"); - - clean_exit("\"$config_file\" is not a file.\n") - unless (-f "$config_file"); - - print STDERR "Loading $config_file\n" - unless ($config{quiet}); - - # Avoid loading the same file multiple times to avoid infinite recursion etc. - if ($^O eq "MSWin32") { - clean_exit("attempt to load \"$config_file\" twice.") - if ($loaded{$config_file}++); - } else { - my ($dev, $ino) = (stat($config_file))[0,1] - or clean_exit("unable to stat $config_file: $!"); - clean_exit("attempt to load \"$config_file\" twice.") - if ($loaded{$dev, $ino}++); - } - - open(CONF, "<", "$config_file") - or clean_exit("could not open configuration file \"$config_file\": $!"); - my @conf = ; - close(CONF); - - LINE:while ($_ = shift(@conf)) { - $linenum++; - - unless ($multi) { - s/^\s*//; - s/^#.*//; - } - - # Multi-line start/continuation. - if (/\\\s*\n$/) { - s/\\\s*\n$//; - s/^\s*#.*//; - - # Be strict about removing #comments in modifysid/define_template statements, as - # they may contain other '#' chars. - if (defined($multi) && ($multi =~ /^modifysid/i || $multi =~ /^define_template/i)) { - s/#.*// if (/^\s*\d+[,\s\d]+#/); - } else { - s/\s*\#.*// unless (/^modifysid/i || /^define_template/i); - } - - $multi .= $_; - next LINE; - } - - # Last line of multi-line directive. - if (defined($multi)) { - $multi .= $_; - $_ = $multi; - undef($multi); - } - - # Remove traling whitespaces (*after* a possible multi-line is rebuilt). - s/\s*$//; - - # Remove comments unless it's a modifysid/define_template line - # (the "#" may be part of the modifysid expression). - s/\s*\#.*// unless (/^modifysid/i || /^define_template/i); - - # Skip blank lines. - next unless (/\S/); - - # Use a template and make $_ a "modifysid" line. - if (/^use_template\s+(\S+)\s+(\S+[^"]*)\s*(".*")*(?:#.*)*/i) { - my ($template_name, $sid, $args) = ($1, $2, $3); - - if (exists($templates{$template_name})) { - my $template = $templates{$template_name}; # so we don't substitute %ARGx% globally - - # Evaluate each "%ARGx%" in the template to the corresponding value. - if (defined($args)) { - my @args = split(/"\s+"/, $args); - foreach my $i (1 .. @args) { - $args[$i - 1] =~ s/^"//; - $args[$i - 1] =~ s/"$//; - $template =~ s/%ARG$i%/$args[$i - 1]/g; - } - } - - # There should be no %ARGx% stuff left now. - if ($template =~ /%ARG\d%/) { - warn("WARNING: too few arguments for template \"$template_name\"\n"); - $_ = "error"; # so it will be reported as an invalid line later - } - - unless ($_ eq "error") { - $_ = "modifysid $sid $template\n"; - print STDERR "Template \"$template_name\" expanded to: $_" - if ($config{verbose}); - } - - } else { - warn("WARNING: template \"$template_name\" has not been defined\n"); - } - } - - # new template definition. - if (/^define_template\s+(\S+)\s+(".+"\s+\|\s+".*")\s*(?:#.*)*$/i) { - my ($template_name, $template) = ($1, $2); - - if (exists($templates{$template_name})) { - warn("WARNING: line $linenum in $config_file: ". - "template \"$template_name\" already defined, keeping old\n"); - } else { - $templates{$template_name} = $template; - } - - # modifysid "substthis" | "withthis" - } elsif (/^modifysids*\s+(\S+.*)\s+"(.+)"\s+\|\s+"(.*)"\s*(?:#.*)*$/i) { - my ($sid_list, $subst, $repl) = ($1, $2, $3); - warn("WARNING: line $linenum in $config_file is invalid, ignoring\n") - unless(parse_mod_expr(\@{$$cfg_ref{sid_modify_list}}, - $sid_list, $subst, $repl)); - - # disablesid - } elsif (/^disablesids*\s+(\d.*)/i) { - my $sid_list = $1; - foreach my $sid (split(/\s*,\s*/, $sid_list)) { - if ($sid =~ /^\d+$/) { - $$cfg_ref{sid_disable_list}{$sid}++; - } else { - warn("WARNING: line $linenum in $config_file: ". - "\"$sid\" is not a valid SID, ignoring\n"); - } - } - - # localsid - } elsif (/^localsids*\s+(\d.*)/i) { - my $sid_list = $1; - foreach my $sid (split(/\s*,\s*/, $sid_list)) { - if ($sid =~ /^\d+$/) { - $$cfg_ref{sid_local_list}{$sid}++; - } else { - warn("WARNING: line $linenum in $config_file: ". - "\"$sid\" is not a valid SID, ignoring\n"); - } - } - - # enablesid - } elsif (/^enablesids*\s+(\d.*)/i) { - my $sid_list = $1; - foreach my $sid (split(/\s*,\s*/, $sid_list)) { - if ($sid =~ /^\d+$/) { - $$cfg_ref{sid_enable_list}{$sid}++; - } else { - warn("WARNING: line $linenum in $config_file: ". - "\"$sid\" is not a valid SID, ignoring\n"); - } - } - - # skipfile - } elsif (/^skipfiles*\s+(.*)/i) { - my $args = $1; - foreach my $file (split(/\s*,\s*/, $args)) { - if ($file =~ /^\S+$/) { - $config{verbose} && print STDERR "Adding file to ignore list: $file.\n"; - $$cfg_ref{file_ignore_list}{$file}++; - } else { - warn("WARNING: line $linenum in $config_file is invalid, ignoring\n"); - } - } - - } elsif (/^url\s*=\s*(.*)/i) { - push(@{$$cfg_ref{url}}, $1) - unless ($$cfg_ref{cmdline_url}); - - } elsif (/^path\s*=\s*(.+)/i) { - $$cfg_ref{path} = $1; - - } elsif (/^update_files\s*=\s*(.+)/i) { - $$cfg_ref{update_files} = $1; - - } elsif (/^rule_actions\s*=\s*(.+)/i) { - $$cfg_ref{rule_actions} = $1; - - } elsif (/^umask\s*=\s*([0-7]{4})$/i) { - $$cfg_ref{umask} = oct($1); - - } elsif (/^min_files\s*=\s*(\d+)/i) { - $$cfg_ref{min_files} = $1; - - } elsif (/^min_rules\s*=\s*(\d+)/i) { - $$cfg_ref{min_rules} = $1; - - } elsif (/^tmpdir\s*=\s*(.+)/i) { - $$cfg_ref{tmp_basedir} = $1; - - } elsif (/^use_external_bins\s*=\s*([01])/i) { - $$cfg_ref{use_external_bins} = $1; - - } elsif (/^scp_key\s*=\s*(.+)/i) { - $$cfg_ref{scp_key} = $1; - - } elsif (/^use_path_checks\s*=\s*([01])/i) { - $$cfg_ref{use_path_checks} = $1; - - } elsif (/^user_agent\s*=\s*(.+)/i) { - $$cfg_ref{user_agent} = $1; - - } elsif (/^include\s+(\S+.*)/i) { - my $include = $1; - read_config($include, $cfg_ref); - } else { - warn("WARNING: line $linenum in $config_file is invalid, ignoring\n"); - } - } -} - - - -# Make a few basic tests to make sure things look ok. -# Will also set a new PATH as defined in the config file. -sub sanity_check() -{ - my @req_params = qw(path update_files); # required parameters in conf - my @req_binaries = qw(gzip tar); # required binaries (unless we use modules) - - # Can't use both quiet mode and verbose mode. - clean_exit("quiet mode and verbose mode at the same time doesn't make sense.") - if ($config{quiet} && $config{verbose}); - - # Can't use multiple output modes. - clean_exit("can't use multiple output modes at the same time.") - if ($config{minimize_diff} && $config{summary_output}); - - # Make sure all required variables are defined in the config file. - foreach my $param (@req_params) { - clean_exit("the required parameter \"$param\" is not defined in the configuration file.") - unless (exists($config{$param})); - } - - # We now know a path was defined in the config, so set it. - # If we're under cygwin and path was specified as msdos style, convert - # it to cygwin style to avoid problems. - if ($^O eq "cygwin" && $config{path} =~ /^[a-zA-Z]:[\/\\]/) { - $ENV{PATH} = ""; - foreach my $path (split(/;/, $config{path})) { - $ENV{PATH} .= "$path:" if (msdos_to_cygwin_path(\$path)); - } - chop($ENV{PATH}); - } else { - $ENV{PATH} = $config{path}; - } - - # Reset environment variables that may cause trouble. - delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'}; - - # Make sure $config{update_files} is a valid regexp. - eval { - "foo" =~ /$config{update_files}/; - }; - - clean_exit("update_files (\"$config{update_files}\") is not a valid regexp: $@") - if ($@); - - # Make sure $config{rule_actions} is a valid regexp. - eval { - "foo" =~ /$config{rule_actions}/; - }; - - clean_exit("rule_actions (\"$config{rule_actions}\") is not a valid regexp: $@") - if ($@); - - # If a variable file (probably local snort.conf) has been specified, - # it must exist. It must also be writable unless we're in careful mode. - if ($config{update_vars}) { - $config{varfile} = untaint_path($config{varfile}); - - clean_exit("variable file \"$config{varfile}\" does not exist.") - unless (-e "$config{varfile}"); - - clean_exit("variable file \"$config{varfile}\" is not a file.") - unless (-f "$config{varfile}"); - - clean_exit("variable file \"$config{varfile}\" is not writable by you.") - if (!$config{careful} && !-w "$config{varfile}"); - - # Make sure dist var files don't contain [back]slashes - # (probably means user confused it with local var file). - my %dist_var_files; - foreach my $dist_var_file (@{${config{dist_var_files}}}) { - clean_exit("variable file \"$dist_var_file\" specified multiple times") - if (exists($dist_var_files{$dist_var_file})); - $dist_var_files{$dist_var_file} = 1; - clean_exit("variable file \"$dist_var_file\" contains slashes or backslashes ". - "but it must be specified as a filename (without path) ". - "that exists in the downloaded rules, e.g. \"snort.conf\"") - if ($dist_var_file =~ /\// || $dist_var_file =~ /\\/); - } - } - - # Make sure all required binaries can be found, unless - # we're used to use Perl modules instead. - # Wget is only required if url is http[s] or ftp. - if ($config{use_external_bins}) { - foreach my $binary (@req_binaries) { - clean_exit("$binary not found in PATH ($ENV{PATH}).") - unless (is_in_path($binary)); - } - } - - # Make sure $url is defined (either by -u or url=... in the conf). - clean_exit("URL not specified. Specify at least one \"url=\" in the \n". - "Oinkmaster configuration file or use the \"-u \" argument") - if ($#{$config{url}} == -1); - - # Make sure all urls look ok, and untaint them. - my @urls = @{$config{url}}; - $#{$config{url}} = -1; - foreach my $url (@urls) { - clean_exit("incorrect URL: \"$url\"") - unless ($url =~ /^((?:https*|ftp|file|scp):\/\/.+\.(?:tar\.gz|tgz))$/ - || $url =~ /^(dir:\/\/.+)/); - my $ok_url = $1; - - if ($ok_url =~ /^dir:\/\/(.+)/) { - my $dir = untaint_path($1); - clean_exit("\"$dir\" does not exist or is not a directory") - unless (-d $dir); - - # Simple check if the output dir is specified as url (probably a mistake). - if (File::Spec->canonpath(File::Spec->rel2abs($dir)) - eq File::Spec->canonpath(File::Spec->rel2abs($config{output_dir}))) { - clean_exit("Download directory can not be same as output directory"); - } - } - push(@{$config{url}}, $ok_url); - } - - # Wget must be found if url is http[s]:// or ftp://. - if ($config{use_external_bins}) { - clean_exit("wget not found in PATH ($ENV{PATH}).") - if ($config{'url'} =~ /^(https*|ftp):/ && !is_in_path("wget")); - } - - # scp must be found if scp://... - clean_exit("scp not found in PATH ($ENV{PATH}).") - if ($config{'url'} =~ /^scp:/ && !is_in_path("scp")); - - # ssh key must exist if specified and url is scp://... - clean_exit("ssh key \"$config{scp_key}\" does not exist.") - if ($config{'url'} =~ /^scp:/ && exists($config{scp_key}) - && !-e $config{scp_key}); - - # Untaint output directory string. - $config{output_dir} = untaint_path($config{output_dir}); - - # Make sure the output directory exists and is readable. - clean_exit("the output directory \"$config{output_dir}\" doesn't exist ". - "or isn't readable by you.") - if (!-d "$config{output_dir}" || !-x "$config{output_dir}"); - - # Make sure the output directory is writable unless running in careful mode. - clean_exit("the output directory \"$config{output_dir}\" isn't writable by you.") - if (!$config{careful} && !-w "$config{output_dir}"); - - # Make sure we have read permission on all rules files in the output dir, - # and also write permission unless we're in careful mode. - # This is to avoid bailing out in the middle of an execution if a copy - # fails because of permission problem. - opendir(OUTDIR, "$config{output_dir}") - or clean_exit("could not open directory $config{output_dir}: $!"); - - while ($_ = readdir(OUTDIR)) { - next if (/^\.\.?$/ || exists($config{file_ignore_list}{$_})); - - if (/$config{update_files}/) { - unless (-r "$config{output_dir}/$_") { - closedir(OUTDIR); - clean_exit("no read permission on \"$config{output_dir}/$_\"\n". - "Read permission is required on all rules files ". - "inside the output directory.\n") - } - - if (!$config{careful} && !-w "$config{output_dir}/$_") { - closedir(OUTDIR); - clean_exit("no write permission on \"$config{output_dir}/$_\"\n". - "Write permission is required on all rules files ". - "inside the output directory.\n") - } - } - } - - closedir(OUTDIR); - - # Make sure the backup directory exists and is writable if running with -b. - if ($config{make_backup}) { - $config{backup_dir} = untaint_path($config{backup_dir}); - clean_exit("the backup directory \"$config{backup_dir}\" doesn't exist or ". - "isn't writable by you.") - if (!-d "$config{backup_dir}" || !-w "$config{backup_dir}"); - } - - # Convert tmp_basedir to cygwin style if running cygwin and msdos style was specified. - if ($^O eq "cygwin" && $config{tmp_basedir} =~ /^[a-zA-Z]:[\/\\]/) { - msdos_to_cygwin_path(\$config{tmp_basedir}) - or clean_exit("could not convert temporary dir to cygwin style"); - } - - # Make sure temporary directory exists. - clean_exit("the temporary directory \"$config{tmp_basedir}\" does not ". - "exist or isn't writable by you.") - if (!-d "$config{tmp_basedir}" || !-w "$config{tmp_basedir}"); - - # Also untaint it. - $config{tmp_basedir} = untaint_path($config{tmp_basedir}); - - # Make sure stdin and stdout are ttys if we're running in interactive mode. - clean_exit("you can not run in interactive mode when STDIN/STDOUT is not a TTY.") - if ($config{interactive} && !(-t STDIN && -t STDOUT)); -} - - - -# Download the rules archive. -sub download_file($ $) -{ - my $url = shift; - my $localfile = shift; - my $log = "$tmpdir/wget.log"; - my $ret; - - # If there seems to be a password in the url, replace it with "*password*" - # and use new string when printing the url to screen. - my $obfuscated_url = $url; - $obfuscated_url = "$1:*password*\@$2" - if ($obfuscated_url =~ /^(\S+:\/\/.+?):.+?@(.+)/); - - # Ofbuscate oinkcode as well. - $obfuscated_url = "$1*oinkcode*$2" - if ($obfuscated_url =~ /^(\S+:\/\/.+\.cgi\/)[0-9a-z]{32,64}(\/.+)/i); - - my @user_agent_opt; - @user_agent_opt = ("-U", $config{user_agent}) if (exists($config{user_agent})); - - # Use wget if URL starts with "http[s]" or "ftp" and we use external binaries. - if ($config{use_external_bins} && $url =~ /^(?:https*|ftp)/) { - print STDERR "Downloading file from $obfuscated_url... " - unless ($config{quiet}); - - if ($config{verbose}) { - print STDERR "\n"; - my @wget_cmd = ("wget", "-v", "-O", $localfile, $url, @user_agent_opt); - clean_exit("could not download from $obfuscated_url") - if (system(@wget_cmd)); - - } else { - my @wget_cmd = ("wget", "-v", "-o", $log, "-O", $localfile, $url, @user_agent_opt); - if (system(@wget_cmd)) { - my $log_output; - open(LOG, "<", "$log") - or clean_exit("could not open $log for reading: $!"); - # Sanitize oinkcode in wget's log (password is automatically sanitized). - while () { - $_ = "$1*oinkcode*$2" - if (/(\S+:\/\/.+\.cgi\/)[0-9a-z]{32,64}(\/.+)/i); - $log_output .= $_; - } - close(LOG); - clean_exit("could not download from $obfuscated_url. ". - "Output from wget follows:\n\n $log_output"); - } - print STDERR "done.\n" unless ($config{quiet}); - } - - # Use LWP if URL starts with "http[s]" or "ftp" and use_external_bins=0. - } elsif (!$config{use_external_bins} && $url =~ /^(?:https*|ftp)/) { - print STDERR "Downloading file from $obfuscated_url... " - unless ($config{quiet}); - - my %lwp_opt; - $lwp_opt{agent} = $config{user_agent} if (exists($config{user_agent})); - - my $ua = LWP::UserAgent->new(%lwp_opt); - $ua->env_proxy; - my $request = HTTP::Request->new(GET => $url); - my $response = $ua->request($request, $localfile); - - clean_exit("could not download from $obfuscated_url: " . $response->status_line) - unless $response->is_success; - - print "done.\n" unless ($config{quiet}); - - # Grab file from local filesystem if file://... - } elsif ($url =~ /^file/) { - $url =~ s/^file:\/\///; - - clean_exit("the file $url does not exist.") - unless (-e "$url"); - - clean_exit("the file $url is empty.") - unless (-s "$url"); - - print STDERR "Copying file from $url... " - unless ($config{quiet}); - - copy("$url", "$localfile") - or clean_exit("unable to copy $url to $localfile: $!"); - - print STDERR "done.\n" - unless ($config{quiet}); - - # Grab file using scp if scp://... - } elsif ($url =~ /^scp/) { - $url =~ s/^scp:\/\///; - - my @cmd; - push(@cmd, "scp"); - push(@cmd, "-i", "$config{scp_key}") if (exists($config{scp_key})); - push(@cmd, "-q") if ($config{quiet}); - push(@cmd, "-v") if ($config{verbose}); - push(@cmd, "$url", "$localfile"); - - print STDERR "Copying file from $url using scp:\n" - unless ($config{quiet}); - - clean_exit("scp returned error when trying to copy $url") - if (system(@cmd)); - - # Unknown download method. - } else { - clean_exit("unknown or unsupported download method\n"); - } - - # Make sure the downloaded file actually exists. - clean_exit("failed to download $url: ". - "local target file $localfile doesn't exist after download.") - unless (-e "$localfile"); - - # Also make sure it's at least non-empty. - clean_exit("failed to download $url: local target file $localfile is empty ". - "after download (perhaps you're out of diskspace or file in url is empty?)") - unless (-s "$localfile"); -} - - - -# Copy all rules files from the tmp dirs (one for each url) -# into a single directory inside the tmp dir, except for files -# matching a 'skipfile' directive'. -# Will exit in case of colliding filenames. -sub join_tmp_rules_dirs($ $ @) -{ - my $rules_dir = shift; - my $new_files_ref = shift; - my @url_tmpdirs = @_; - - my %rules_files; - - clean_exit("failed to create directory \"$rules_dir\": $!") - unless (mkdir($rules_dir)); - - foreach my $url_tmpdir (@url_tmpdirs) { - opendir(URL_TMPDIR, "$url_tmpdir") - or clean_exit("could not open directory \"$url_tmpdir\": $!"); - - while ($_ = readdir(URL_TMPDIR)) { - next if (/^\.\.?$/ || exists($config{file_ignore_list}{$_}) || !/$config{update_files}/); - - if (exists($rules_files{$_})) { - closedir(URL_TMPDIR); - clean_exit("a file called \"$_\" exists in multiple rules archives") - } - - # Make sure it's a regular file. - unless (-f "$url_tmpdir/$_" && !-l "$url_tmpdir/$_") { - closedir(URL_TMPDIR); - clean_exit("downloaded \"$_\" is not a regular file.") - } - - $rules_files{$_} = 1; - $$new_files_ref{"$rules_dir/$_"} = 1; - - my $src_file = untaint_path("$url_tmpdir/$_"); - unless (copy("$src_file", "$rules_dir")) { - closedir(URL_TMPDIR); - clean_exit("could not copy \"$src_file\" to \"$rules_dir\": $!"); - } - } - - closedir(URL_TMPDIR); - } - - return (keys(%$new_files_ref)); -} - - - -# Make a few basic sanity checks on the rules archive and then -# uncompress/untar it if everything looked ok. -sub unpack_rules_archive($ $ $) -{ - my $url = shift; # only used when printing warnings/errors - my $archive = shift; - my $rules_dir = shift; - - my ($tar, @tar_content); - - my $old_dir = untaint_path(File::Spec->rel2abs(File::Spec->curdir())); - - my $dir = dirname($archive); - chdir("$dir") or clean_exit("$url: could not change directory to \"$dir\": $!"); - - if ($config{use_external_bins}) { - - # Run integrity check on the gzip file. - clean_exit("$url: integrity check on gzip file failed (file transfer failed or ". - "file in URL not in gzip format?).") - if (system("gzip", "-t", "$archive")); - - # Decompress it. - system("gzip", "-d", "$archive") - and clean_exit("$url: unable to uncompress $archive."); - - # Suffix has now changed from .tar.gz|.tgz to .tar. - $archive =~ s/\.gz$//; - - # Make sure the .tar file now exists. - # (Gzip may not return an error if it was not a gzipped file...) - clean_exit("$url: failed to unpack gzip file (file transfer failed or ". - "file in URL not in tar'ed gzip format?).") - unless (-e "$archive"); - - my $stdout_file = "$tmpdir/tar_content.out"; - - open(OLDOUT, ">&STDOUT") or clean_exit("could not dup STDOUT: $!"); - open(STDOUT, ">$stdout_file") or clean_exit("could not redirect STDOUT: $!"); - - my $ret = system("tar", "tf", "$archive"); - - close(STDOUT); - open(STDOUT, ">&OLDOUT") or clean_exit("could not dup STDOUT: $!"); - close(OLDOUT); - - clean_exit("$url: could not list files in tar archive (is it broken?)") - if ($ret); - - open(TAR, "$stdout_file") or clean_exit("failed to open $stdout_file: $!"); - @tar_content = ; - close(TAR); - - # use_external_bins=0 - } else { - $tar = Archive::Tar->new($archive, 1); - clean_exit("$url: failed to read $archive (file transfer failed or ". - "file in URL not in tar'ed gzip format?).") - unless (defined($tar)); - @tar_content = $tar->list_files(); - } - - # Make sure we could grab some content from the tarball. - clean_exit("$url: could not list files in tar archive (is it broken?)") - if ($#tar_content < 0); - - # For each filename in the archive, do some basic sanity checks. - foreach my $filename (@tar_content) { - chomp($filename); - - # We don't want absolute filename. - clean_exit("$url: rules archive contains absolute filename. ". - "Offending file/line:\n$filename") - if ($filename =~ /^\//); - - # We don't want to have any weird characters anywhere in the filename. - clean_exit("$url: illegal character in filename in tar archive. Allowed are ". - "$OK_PATH_CHARS\nOffending file/line:\n$filename") - if ($config{use_path_checks} && $filename =~ /[^$OK_PATH_CHARS]/); - - # We don't want to unpack any "../../" junk (check is useless now though). - clean_exit("$url: filename in tar archive contains \"..\".\n". - "Offending file/line:\n$filename") - if ($filename =~ /\.\./); - } - - # Looks good. Now we can untar it. - print STDERR "Archive successfully downloaded, unpacking... " - unless ($config{quiet}); - - if ($config{use_external_bins}) { - clean_exit("failed to untar $archive.") - if system("tar", "xf", "$archive"); - } else { - mkdir("$rules_dir") or clean_exit("could not create \"$rules_dir\" directory: $!\n"); - foreach my $file ($tar->list_files) { - next unless ($file =~ /^$rules_dir\/[^\/]+$/); # only ^rules/$ - - my $content = $tar->get_content($file); - - # Symlinks in the archive will make get_content return undef. - clean_exit("could not get content from file \"$file\" in downloaded archive, ". - "make sure it is a regular file\n") - unless (defined($content)); - - open(RULEFILE, ">", "$file") - or clean_exit("could not open \"$file\" for writing: $!\n"); - print RULEFILE $content; - close(RULEFILE); - } - } - - # Make sure that non-empty rules directory existed in archive. - # We permit empty rules directory if min_files is set to 0 though. - clean_exit("$url: no \"$rules_dir\" directory found in tar file.") - unless (-d "$dir/$rules_dir"); - - my $num_files = 0; - opendir(RULESDIR, "$dir/$rules_dir") - or clean_exit("could not open directory \"$dir/$rules_dir\": $!"); - - while ($_ = readdir(RULESDIR)) { - next if (/^\.\.?$/); - $num_files++; - } - - closedir(RULESDIR); - - clean_exit("$url: directory \"$rules_dir\" in unpacked archive is empty") - if ($num_files == 0 && $config{min_files} != 0); - - chdir($old_dir) - or clean_exit("could not change directory back to $old_dir: $!"); - - print STDERR "done.\n" - unless ($config{quiet}); -} - - - -# Open all rules files in the temporary directory and disable/modify all -# rules/lines as requested in oinkmaster.conf, and then write back to the -# same files. Also clean unwanted whitespaces and duplicate sids from them. -sub process_rules($ $ $ $ $ $) -{ - my $modify_sid_ref = shift; - my $disable_sid_ref = shift; - my $enable_sid_ref = shift; - my $local_sid_ref = shift; - my $rh_tmp_ref = shift; - my $newfiles_ref = shift; - my %sids; - - my %stats = ( - disabled => 0, - enabled => 0, - modified => 0, - total => 0, - ); - - warn("WARNING: all rules that are disabled by default will be enabled\n") - if ($config{enable_all} && !$config{quiet}); - - print STDERR "Processing downloaded rules... " - unless ($config{quiet}); - - print STDERR "\n" - if ($config{verbose}); - - # Phase #1 - process all active rules and store in temporary hash. - # In case of dups, we use the one with the highest rev. - foreach my $file (sort(keys(%$newfiles_ref))) { - - open(INFILE, "<", "$file") - or clean_exit("could not open $file for reading: $!"); - my @infile = ; - close(INFILE); - - my ($single, $multi, $nonrule, $msg, $sid); - - RULELOOP:while (get_next_entry(\@infile, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - - # We don't care about non-rules in this phase. - next RULELOOP if (defined($nonrule)); - - # Even if it was a single-line rule, we want a copy in $multi. - $multi = $single unless (defined($multi)); - - my %rule = ( - single => $single, - multi => $multi, - ); - - # modify/disable/enable this rule as requested unless there is a matching - # localsid statement. Possible verbose messages and warnings will be printed. - unless (exists($$local_sid_ref{$sid})) { - process_rule($modify_sid_ref, $disable_sid_ref, $enable_sid_ref, - \%rule, $sid, \%stats, 1, basename($file)); - } - - $stats{total}++; - - $single = $rule{single}; - $multi = $rule{multi}; - - # Only care about active rules in this phase (the rule may have been - # disabled by a disablesid or a modifysid statement above, so we can't - # do this check earlier). - next RULELOOP if ($multi =~ /^#/); - - # Is it a dup? If so, see if this seems to be more recent (higher rev). - if (exists($sids{$sid})) { - warn("\nWARNING: duplicate SID in downloaded archive, SID=$sid, ". - "only keeping rule with highest 'rev'\n") - unless($config{super_quiet}); - - my ($old_rev) = ($sids{$sid}{single} =~ /\brev\s*:\s*(\d+)\s*;/); - my ($new_rev) = ($single =~ /\brev\s*:\s*(\d+)\s*;/); - - # This is so rules with a rev gets higher prio than - # rules without any rev. - $old_rev = -1 unless (defined($old_rev)); - $new_rev = -1 unless (defined($new_rev)); - - # If this rev is higher than the one in the last stored rule with - # this sid, replace rule with this one. This is also done if the - # revs are equal because we assume the rule appearing last in the - # rules file is the more recent rule. - if ($new_rev >= $old_rev) { - $sids{$sid}{single} = $single; - $sids{$sid}{multi} = $multi; - } - - # No dup. - } else { - $sids{$sid}{single} = $single; - $sids{$sid}{multi} = $multi; - } - } - } - - # Phase #2 - read all rules files again, but when writing active rules - # back to the files, use the one stored in the sid hash (which is free of dups). - foreach my $file (sort(keys(%$newfiles_ref))) { - - open(INFILE, "<", "$file") - or clean_exit("could not open $file for reading: $!"); - my @infile = ; - close(INFILE); - - # Write back to the same file. - open(OUTFILE, ">", "$file") - or clean_exit("could not open $file for writing: $!"); - - my ($single, $multi, $nonrule, $msg, $sid); - - RULELOOP:while (get_next_entry(\@infile, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - if (defined($nonrule)) { - print OUTFILE "$nonrule"; - next RULELOOP; - } - - # Even if it was a single-line rule, we want a copy in $multi. - $multi = $single unless (defined($multi)); - - # If this rule is marked as localized and has not yet been written, - # write the old version to the new rules file. - if (exists($$local_sid_ref{$sid}) && !exists($sids{$sid}{printed})) { - - # Just ignore the rule in the downloaded file if it doesn't - # exist in the same local file. - unless(exists($$rh_tmp_ref{old}{rules}{basename($file)}{$sid})) { - warn("WARNING: SID $sid is marked as local and exists in ". - "downloaded " . basename($file) . " but the SID does not ". - "exist in the local file, ignoring rule\n") - if ($config{verbose}); - - next RULELOOP; - } - - print OUTFILE $$rh_tmp_ref{old}{rules}{basename($file)}{$sid}; - $sids{$sid}{printed} = 1; - - warn("SID $sid is marked as local, keeping your version from ". - basename($file) . ".\n". - "Your version: $$rh_tmp_ref{old}{rules}{basename($file)}{$sid}". - "Downloaded version: $multi\n") - if ($config{verbose}); - - next RULELOOP; - } - - my %rule = ( - single => $single, - multi => $multi, - ); - - # modify/disable/enable this rule. Possible verbose messages and warnings - # will not be printed (again) as this was done in the first phase. - # We send the stats to a dummy var as this was collected on the - # first phase as well. - process_rule($modify_sid_ref, $disable_sid_ref, $enable_sid_ref, - \%rule, $sid, \my %unused_stats, 0, basename($file)); - - $single = $rule{single}; - $multi = $rule{multi}; - - # Disabled rules are printed right back to the file, unless - # there also is an active rule with the same sid. Als o make - # sure we only print the sid once, even though it's disabled. - if ($multi =~ /^#/ && !exists($sids{$sid}) && !exists($sids{$sid}{printed})) { - print OUTFILE $multi; - $sids{$sid}{printed} = 1; - next RULELOOP; - } - - # If this sid has not yet been printed and this is the place where - # the sid with the highest rev was, print the rule to the file. - # (There can be multiple totally different rules with the same sid - # and we don't want to put the wrong rule in the wrong place. - if (!exists($sids{$sid}{printed}) && $single eq $sids{$sid}{single}) { - print OUTFILE $multi; - $sids{$sid}{printed} = 1; - } - } - - close(OUTFILE); - } - - print STDERR "disabled $stats{disabled}, enabled $stats{enabled}, ". - "modified $stats{modified}, total=$stats{total}\n" - unless ($config{quiet}); - - # Print warnings on attempt at enablesid/disablesid/localsid on non-existent - # rule if we're in verbose mode. - if ($config{verbose}) { - foreach my $sid (keys(%$enable_sid_ref)) { - warn("WARNING: attempt to use \"enablesid\" on non-existent SID $sid\n") - unless (exists($sids{$sid})); - } - - foreach my $sid (keys(%$disable_sid_ref)) { - warn("WARNING: attempt to use \"disablesid\" on non-existent SID $sid\n") - unless (exists($sids{$sid})); - } - - foreach my $sid (keys(%$local_sid_ref)) { - warn("WARNING: attempt to use \"localsid\" on non-existent SID $sid\n") - unless (exists($sids{$sid})); - } - } - - # Print warnings on attempt at modifysid'ing non-existent stuff, unless quiet mode. - unless ($config{quiet}) { - my %new_files; - foreach my $file (sort(keys(%$newfiles_ref))) { - $new_files{basename($file)} = 1; - } - - my %mod_tmp; - foreach my $mod_expr (@$modify_sid_ref) { - my ($type, $arg) = ($mod_expr->[2], $mod_expr->[3]); - $mod_tmp{$type}{$arg} = 1; - } - - foreach my $sid (keys(%{$mod_tmp{sid}})) { - warn("WARNING: attempt to use \"modifysid\" on non-existent SID $sid\n") - unless (exists($sids{$sid})); - } - - foreach my $file (keys(%{$mod_tmp{file}})) { - warn("WARNING: attempt to use \"modifysid\" on non-existent file $file\n") - unless(exists($new_files{$file})); - } - } - - # Return total number of valid rules. - return ($stats{total}); -} - - - -# Process (modify/enable/disable) a rule as requested. -sub process_rule($ $ $ $ $ $ $ $) -{ - my $modify_sid_ref = shift; - my $disable_sid_ref = shift; - my $enable_sid_ref = shift; - my $rule_ref = shift; - my $sid = shift; - my $stats_ref = shift; - my $print_messages = shift; - my $filename = shift; - - # Just for easier access. - my $single = $$rule_ref{single}; - my $multi = $$rule_ref{multi}; - - # Some rules may be commented out by default. - # Enable them if -e is specified (both single-line and multi-line, - # version, because we don't know which version one we're going to - # use below. - # Enable them if -e is specified. - if ($multi =~ /^#/ && $config{enable_all}) { - $multi =~ s/^#*//; - $multi =~ s/\n#*/\n/g; - $single =~ s/^#*//; - $$stats_ref{enabled}++; - } - - # Modify rule if requested. For disablesid/enablesid we work - # on the multi-line version of the rule (if exists). For - # modifysid that's no good since we don't know where in the - # rule the trailing backslashes and newlines are going to be - # and we don't want them to affect the regexp. - MOD_EXP:foreach my $mod_expr (@$modify_sid_ref) { - my ($subst, $repl, $type, $arg) = - ($mod_expr->[0], $mod_expr->[1], $mod_expr->[2], $mod_expr->[3]); - - my $print_modify_warnings = 0; - $print_modify_warnings = 1 if (!$config{super_quiet} && $print_messages && $type eq "sid"); - - if ($type eq "wildcard" || ($type eq "sid" && $sid eq $arg) || - ($type eq "file" && $filename eq $arg)) { - - if ($single =~ /$subst/si) { - print STDERR "Modifying rule, SID=$sid, filename=$filename, ". - "match type=$type, subst=$subst, ". - "repl=$repl\nBefore: $single" - if ($print_messages && $config{verbose}); - - - # If user specified a backreference but the regexp did not set $1 - don't modify rule. - if (!defined($1) && ($repl =~ /[^\\]\$\d+/ || $repl =~ /[^\\]\$\{\d+\}/ - || $repl =~ /^qq\/\$\d+/ || $repl =~ /^qq\/\$\{\d+\}/)) { - warn("WARNING: SID $sid matches modifysid expression \"$subst\" but ". - "backreference variable \$1 is undefined after match, ". - "keeping original rule\n") - if ($print_modify_warnings); - next MOD_EXP; - } - - # Do the substitution on the single-line version and put it - # back in $multi. - $single =~ s/$subst/$repl/eei; - $multi = $single; - - print STDERR "After: $single\n" - if ($print_messages && $config{verbose}); - - $$stats_ref{modified}++; - } else { - if ($print_modify_warnings) { - warn("WARNING: SID $sid does not match modifysid ". - "expression \"$subst\", keeping original rule\n"); - } - } - } - } - - # Disable rule if requested and it's not already disabled. - if (exists($$disable_sid_ref{$sid}) && $multi !~ /^\s*#/) { - $multi = "#$multi"; - $multi =~ s/\n([^#].+)/\n#$1/g; - $$stats_ref{disabled}++; - } - - # Enable rule if requested and it's not already enabled. - if (exists($$enable_sid_ref{$sid}) && $multi =~ /^\s*#/) { - $multi =~ s/^#+//; - $multi =~ s/\n#+(.+)/\n$1/g; - $$stats_ref{enabled}++; - } - - $$rule_ref{single} = $single; - $$rule_ref{multi} = $multi; -} - - - -# Setup rules hash. -# Format for rules will be: rh{old|new}{rules{filename}{sid} = single-line rule -# Format for non-rules will be: rh{old|new}{other}{filename} = array of lines -# List of added files will be stored as rh{added_files}{filename} -sub setup_rules_hash($ $) -{ - my $new_files_ref = shift; - my $output_dir = shift; - - my (%rh, %old_sids); - - print STDERR "Setting up rules structures... " - unless ($config{quiet}); - - foreach my $file (sort(keys(%$new_files_ref))) { - warn("\nWARNING: downloaded rules file $file is empty\n") - if (!-s "$file" && $config{verbose}); - - open(NEWFILE, "<", "$file") - or clean_exit("could not open $file for reading: $!"); - my @newfile = ; - close(NEWFILE); - - # From now on we don't care about the path, so remove it. - $file = basename($file); - - my ($single, $multi, $nonrule, $msg, $sid); - - while (get_next_entry(\@newfile, \$single, \$multi, \$nonrule, \$msg, \$sid)) { - if (defined($single)) { - $rh{new}{rules}{"$file"}{"$sid"} = $single; - } else { - push(@{$rh{new}{other}{"$file"}}, $nonrule); - } - } - - # Also read in old (aka local) file if it exists. - # We do a sid dup check in these files. - if (-f "$output_dir/$file") { - open(OLDFILE, "<", "$output_dir/$file") - or clean_exit("could not open $output_dir/$file for reading: $!"); - my @oldfile = ; - close(OLDFILE); - - while (get_next_entry(\@oldfile, \$single, \$multi, \$nonrule, undef, \$sid)) { - if (defined($single)) { - warn("\nWARNING: duplicate SID in your local rules, SID ". - "$sid exists multiple times, you may need to fix this manually!\n") - if (exists($old_sids{$sid})); - - $rh{old}{rules}{"$file"}{"$sid"} = $single; - $old_sids{$sid}++; - } else { - push(@{$rh{old}{other}{"$file"}}, $nonrule); - } - } - } else { - $rh{added_files}{"$file"}++; - } - } - - print STDERR "done.\n" - unless ($config{quiet}); - - return (%rh); -} - - - -# Return lines that exist only in first array but not in second one. -sub get_first_only($ $ $) -{ - my $first_only_ref = shift; - my $first_arr_ref = shift; - my $second_arr_ref = shift; - my %arr_hash; - - @arr_hash{@$second_arr_ref} = (); - - foreach my $line (@$first_arr_ref) { - - # Skip blank lines and CVS Id tags. - next unless ($line =~ /\S/); - next if ($line =~ /^\s*#+\s*\$I\S:.+Exp\s*\$/); - - push(@$first_only_ref, $line) - unless(exists($arr_hash{$line})); - } -} - - - -# Backup files in output dir matching $config{update_files} into the backup dir. -sub make_backup($ $) -{ - my $src_dir = shift; # dir with the rules to be backed up - my $dest_dir = shift; # where to put the backup tarball - - my ($sec, $min, $hour, $mday, $mon, $year) = (localtime)[0 .. 5]; - - my $date = sprintf("%4d%02d%02d-%02d%02d%02d", - $year + 1900, $mon + 1, $mday, $hour, $min, $sec); - - my $backup_tarball = "rules-backup-$date.tar"; - my $backup_tmp_dir = File::Spec->catdir("$tmpdir", "rules-backup-$date"); - my $dest_file = File::Spec->catfile("$dest_dir", "$backup_tarball.gz"); - - print STDERR "Creating backup of old rules..." - unless ($config{quiet}); - - mkdir("$backup_tmp_dir", 0700) - or clean_exit("could not create temporary backup directory $backup_tmp_dir: $!"); - - # Copy all rules files from the rules dir to the temporary backup dir. - opendir(OLDRULES, "$src_dir") - or clean_exit("could not open directory $src_dir: $!"); - - while ($_ = readdir(OLDRULES)) { - next if (/^\.\.?$/); - if (/$config{update_files}/) { - my $src_file = untaint_path("$src_dir/$_"); - copy("$src_file", "$backup_tmp_dir/") - or warn("WARNING: could not copy $src_file to $backup_tmp_dir/: $!"); - } - } - - closedir(OLDRULES); - - # Also backup the -U (as "variable-file.conf") if specified. - if ($config{update_vars}) { - copy("$config{varfile}", "$backup_tmp_dir/variable-file.conf") - or warn("WARNING: could not copy $config{varfile} to $backup_tmp_dir: $!") - } - - my $old_dir = untaint_path(File::Spec->rel2abs(File::Spec->curdir())); - - # Change directory to $tmpdir (so we'll be right below the directory where - # we have our rules to be backed up). - chdir("$tmpdir") or clean_exit("could not change directory to $tmpdir: $!"); - - if ($config{use_external_bins}) { - clean_exit("tar command returned error when archiving backup files.\n") - if (system("tar","cf","$backup_tarball","rules-backup-$date")); - - clean_exit("gzip command returned error when compressing backup file.\n") - if (system("gzip","$backup_tarball")); - - $backup_tarball .= ".gz"; - - } else { - my $tar = Archive::Tar->new; - opendir(RULES, "rules-backup-$date") - or clean_exit("unable to open directory \"rules-backup-$date\": $!"); - - while ($_ = readdir(RULES)) { - next if (/^\.\.?$/); - $tar->add_files("rules-backup-$date/$_"); - } - - closedir(RULES); - - $backup_tarball .= ".gz"; - - # Write tarball. Print stupid error message if it fails as - # we can't use $tar->error or Tar::error on all platforms. - $tar->write("$backup_tarball", 1); - - clean_exit("could not create backup archive: tarball empty after creation\n") - unless (-s "$backup_tarball"); - } - - # Change back to old directory (so it will work with -b as either - # an absolute or a relative path. - chdir("$old_dir") - or clean_exit("could not change directory back to $old_dir: $!"); - - copy("$tmpdir/$backup_tarball", "$dest_file") - or clean_exit("unable to copy $tmpdir/$backup_tarball to $dest_file/: $!\n"); - - print STDERR " saved as $dest_file.\n" - unless ($config{quiet}); -} - - - -# Print the results. -sub print_changes($ $) -{ - my $ch_ref = shift; - my $rh_ref = shift; - - my ($sec, $min, $hour, $mday, $mon, $year) = (localtime)[0 .. 5]; - - my $date = sprintf("%4d%02d%02d %02d:%02d:%02d", - $year + 1900, $mon + 1, $mday, $hour, $min, $sec); - - print "\n[***] Results from Oinkmaster started $date [***]\n"; - - # Print new variables. - if ($config{update_vars}) { - if ($#{$$ch_ref{new_vars}} > -1) { - print "\n[*] New variables: [*]\n"; - foreach my $var (@{$$ch_ref{new_vars}}) { - print " $var"; - } - } else { - print "\n[*] New variables: [*]\n None.\n" - unless ($config{super_quiet}); - } - } - - - # Print rules modifications. - print "\n[*] Rules modifications: [*]\n None.\n" - if (!keys(%{$$ch_ref{rules}}) && !$config{super_quiet}); - - # Print added rules. - if (exists($$ch_ref{rules}{added})) { - print "\n[+++] Added rules: [+++]\n"; - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{added}}, $rh_ref); - } else { - print_changetype($PRINT_NEW, "Added to", - \%{$$ch_ref{rules}{added}}, $rh_ref); - } - } - - # Print enabled rules. - if (exists($$ch_ref{rules}{ena})) { - print "\n[+++] Enabled rules: [+++]\n"; - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{ena}}, $rh_ref); - } else { - print_changetype($PRINT_NEW, "Enabled in", - \%{$$ch_ref{rules}{ena}}, $rh_ref); - } - } - - # Print enabled + modified rules. - if (exists($$ch_ref{rules}{ena_mod})) { - print "\n[+++] Enabled and modified rules: [+++]\n"; - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{ena_mod}}, $rh_ref); - } else { - print_changetype($PRINT_BOTH, "Enabled and modified in", - \%{$$ch_ref{rules}{ena_mod}}, $rh_ref); - } - } - - # Print modified active rules. - if (exists($$ch_ref{rules}{mod_act})) { - print "\n[///] Modified active rules: [///]\n"; - - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{mod_act}}, $rh_ref); - } else { - print_changetype($PRINT_BOTH, "Modified active in", - \%{$$ch_ref{rules}{mod_act}}, $rh_ref); - } - } - - # Print modified inactive rules. - if (exists($$ch_ref{rules}{mod_ina})) { - print "\n[///] Modified inactive rules: [///]\n"; - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{mod_ina}}, $rh_ref); - } else { - print_changetype($PRINT_BOTH, "Modified inactive in", - \%{$$ch_ref{rules}{mod_ina}}, $rh_ref); - } - } - - # Print disabled + modified rules. - if (exists($$ch_ref{rules}{dis_mod})) { - print "\n[---] Disabled and modified rules: [---]\n"; - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{dis_mod}}, $rh_ref); - } else { - print_changetype($PRINT_BOTH, "Disabled and modified in", - \%{$$ch_ref{rules}{dis_mod}}, $rh_ref); - } - } - - # Print disabled rules. - if (exists($$ch_ref{rules}{dis})) { - print "\n[---] Disabled rules: [---]\n"; - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{dis}}, $rh_ref); - } else { - print_changetype($PRINT_NEW, "Disabled in", - \%{$$ch_ref{rules}{dis}}, $rh_ref); - } - } - - # Print removed rules. - if (exists($$ch_ref{rules}{removed})) { - print "\n[---] Removed rules: [---]\n"; - if ($config{summary_output}) { - print_summary_change(\%{$$ch_ref{rules}{removed}}, $rh_ref); - } else { - print_changetype($PRINT_OLD, "Removed from", - \%{$$ch_ref{rules}{removed}}, $rh_ref); - } - } - - - # Print non-rule modifications. - print "\n[*] Non-rule line modifications: [*]\n None.\n" - if (!keys(%{$$ch_ref{other}}) && !$config{super_quiet}); - - # Print added non-rule lines. - if (exists($$ch_ref{other}{added})) { - print "\n[+++] Added non-rule lines: [+++]\n"; - foreach my $file (sort({uc($a) cmp uc($b)} keys(%{$$ch_ref{other}{added}}))) { - my $num = $#{$$ch_ref{other}{added}{$file}} + 1; - print "\n -> Added to $file ($num):\n"; - foreach my $line (@{$$ch_ref{other}{added}{$file}}) { - print " $line"; - } - } - } - - # Print removed non-rule lines. - if (keys(%{$$ch_ref{other}{removed}}) > 0) { - print "\n[---] Removed non-rule lines: [---]\n"; - foreach my $file (sort({uc($a) cmp uc($b)} keys(%{$$ch_ref{other}{removed}}))) { - my $num = $#{$$ch_ref{other}{removed}{$file}} + 1; - print "\n -> Removed from $file ($num):\n"; - foreach my $other (@{$$ch_ref{other}{removed}{$file}}) { - print " $other"; - } - } - } - - - # Print list of added files. - if (keys(%{$$ch_ref{added_files}})) { - print "\n[+] Added files (consider updating your snort.conf to include them if needed): [+]\n\n"; - foreach my $added_file (sort({uc($a) cmp uc($b)} keys(%{$$ch_ref{added_files}}))) { - print " -> $added_file\n"; - } - } else { - print "\n[*] Added files: [*]\n None.\n" - unless ($config{super_quiet} || $config{summary_output}); - } - - # Print list of possibly removed files if requested. - if ($config{check_removed}) { - if (keys(%{$$ch_ref{removed_files}})) { - print "\n[-] Files possibly removed from the archive ". - "(consider removing them from your snort.conf if needed): [-]\n\n"; - foreach my $removed_file (sort({uc($a) cmp uc($b)} keys(%{$$ch_ref{removed_files}}))) { - print " -> $removed_file\n"; - } - } else { - print "\n[*] Files possibly removed from the archive: [*]\n None.\n" - unless ($config{super_quiet} || $config{summary_output}); - } - } - - print "\n"; -} - - - -# Helper for print_changes(). -sub print_changetype($ $ $ $) -{ - my $type = shift; # $PRINT_OLD|$PRINT_NEW|$PRINT_BOTH - my $string = shift; # string to print before filename - my $ch_ref = shift; # reference to an entry in the rules changes hash - my $rh_ref = shift; # reference to rules hash - - foreach my $file (sort({uc($a) cmp uc($b)} keys(%$ch_ref))) { - my $num = keys(%{$$ch_ref{$file}}); - print "\n -> $string $file ($num):\n"; - foreach my $sid (keys(%{$$ch_ref{$file}})) { - if ($type == $PRINT_OLD) { - print " $$rh_ref{old}{rules}{$file}{$sid}" - } elsif ($type == $PRINT_NEW) { - print " $$rh_ref{new}{rules}{$file}{$sid}" - } elsif ($type == $PRINT_BOTH) { - - my $old = $$rh_ref{old}{rules}{$file}{$sid}; - my $new = $$rh_ref{new}{rules}{$file}{$sid}; - - if ($config{minimize_diff}) { - my ($old, $new) = minimize_diff($old, $new); - print "\n old SID $sid: $old"; - print " new SID $sid: $new"; - } else { - print "\n old: $old"; - print " new: $new"; - } - } - } - } -} - - - -# Print changes in bmc style, i.e. only sid and msg, no full details. -sub print_summary_change($ $) -{ - my $ch_ref = shift; # reference to an entry in the rules changes hash - my $rh_ref = shift; # reference to rules hash - - my (@sids, %sidmap); - - print "\n"; - - # First get all the sids (may be spread across multiple files. - foreach my $file (keys(%$ch_ref)) { - foreach my $sid (keys(%{$$ch_ref{$file}})) { - push(@sids, $sid); - if (exists($$rh_ref{new}{rules}{$file}{$sid})) { - $sidmap{$sid}{rule} = $$rh_ref{new}{rules}{$file}{$sid}; - } else { - $sidmap{$sid}{rule} = $$rh_ref{old}{rules}{$file}{$sid}; - } - $sidmap{$sid}{file} = $file; - } - } - - # Print rules, sorted by sid. - foreach my $sid (sort {$a <=> $b} (@sids)) { - my @rule = $sidmap{$sid}{rule}; - my $file = $sidmap{$sid}{file}; - get_next_entry(\@rule, undef, undef, undef, \(my $msg), undef); - printf("%8d - %s (%s)\n", $sid, $msg, $file); - } - - print "\n"; -} - - - -# Compare the new rules to the old ones. -sub get_changes($ $ $) -{ - my $rh_ref = shift; - my $new_files_ref = shift; - my $rules_dir = shift; - my %changes; - - print STDERR "Comparing new files to the old ones... " - unless ($config{quiet}); - - # We have the list of added files (without full path) in $rh_ref{added_files} - # but we'd rather want to have it in $changes{added_files} now. - $changes{added_files} = $$rh_ref{added_files}; - - # New files are also regarded as modified since we want to update - # (i.e. add) those as well. Here we want them with full path. - foreach my $file (keys(%{$changes{added_files}})) { - $changes{modified_files}{"$tmpdir/$rules_dir/$file"}++; - } - - # Add list of possibly removed files if requested. - if ($config{check_removed}) { - opendir(OLDRULES, "$config{output_dir}") - or clean_exit("could not open directory $config{output_dir}: $!"); - - while ($_ = readdir(OLDRULES)) { - next if (/^\.\.?$/); - $changes{removed_files}{"$_"} = 1 - if (/$config{update_files}/ && - !exists($config{file_ignore_list}{$_}) && - !-e "$tmpdir/$rules_dir/$_"); - } - - closedir(OLDRULES); - } - - # For each new rules file... - FILELOOP:foreach my $file_w_path (sort(keys(%$new_files_ref))) { - my $file = basename($file_w_path); - - # Skip comparison if it's an added file. - next FILELOOP if (exists($$rh_ref{added_files}{$file})); - - # For each sid in the new file... - foreach my $sid (keys(%{$$rh_ref{new}{rules}{$file}})) { - my $new_rule = $$rh_ref{new}{rules}{$file}{$sid}; - - # Sid also exists in the old file? - if (exists($$rh_ref{old}{rules}{$file}{$sid})) { - my $old_rule = $$rh_ref{old}{rules}{$file}{$sid}; - - # Are they identical? - unless ($new_rule eq $old_rule) { - $changes{modified_files}{$file_w_path}++; - - # Find out in which way the rules are different. - if ("#$old_rule" eq $new_rule) { - $changes{rules}{dis}{$file}{$sid}++; - } elsif ($old_rule eq "#$new_rule") { - $changes{rules}{ena}{$file}{$sid}++; - } elsif ($old_rule =~ /^\s*#/ && $new_rule !~ /^\s*#/) { - $changes{rules}{ena_mod}{$file}{$sid}++; - } elsif ($old_rule !~ /^\s*#/ && $new_rule =~ /^\s*#/) { - $changes{rules}{dis_mod}{$file}{$sid}++; - } elsif ($old_rule =~ /^\s*#/ && $new_rule =~ /^\s*#/) { - $changes{rules}{mod_ina}{$file}{$sid}++; - } else { - $changes{rules}{mod_act}{$file}{$sid}++; - } - - } - } else { # sid not found in old file, i.e. it's added - $changes{modified_files}{$file_w_path}++; - $changes{rules}{added}{$file}{$sid}++; - } - } # foreach sid - - # Check for removed rules, i.e. sids that exist in the old file but - # not in the new one. - foreach my $sid (keys(%{$$rh_ref{old}{rules}{$file}})) { - unless (exists($$rh_ref{new}{rules}{$file}{$sid})) { - $changes{modified_files}{$file_w_path}++; - $changes{rules}{removed}{$file}{$sid}++; - } - } - - # Check for added non-rule lines. - get_first_only(\my @added, - \@{$$rh_ref{new}{other}{$file}}, - \@{$$rh_ref{old}{other}{$file}}); - - if (scalar(@added)) { - @{$changes{other}{added}{$file}} = @added; - $changes{modified_files}{$file_w_path}++; - } - - # Check for removed non-rule lines. - get_first_only(\my @removed, - \@{$$rh_ref{old}{other}{$file}}, - \@{$$rh_ref{new}{other}{$file}}); - - if (scalar(@removed)) { - @{$changes{other}{removed}{$file}} = @removed; - $changes{modified_files}{$file_w_path}++; - } - - } # foreach new file - - print STDERR "done.\n" unless ($config{quiet}); - - return (%changes); -} - - - -# Simply copy the modified rules files to the output directory. -sub update_rules($ @) -{ - my $dst_dir = shift; - my @modified_files = @_; - - print STDERR "Updating local rules files... " - if (!$config{quiet} || $config{interactive}); - - foreach my $file_w_path (@modified_files) { - copy("$file_w_path", "$dst_dir") - or clean_exit("could not copy $file_w_path to $dst_dir: $!"); - } - - print STDERR "done.\n" - if (!$config{quiet} || $config{interactive}); -} - - -# Simply copy rules files from one dir to another. -# Links are not allowed. -sub copy_rules($ $) -{ - my $src_dir = shift; - my $dst_dir = shift; - - print STDERR "Copying rules from $src_dir... " - if (!$config{quiet} || $config{interactive}); - - opendir(SRC_DIR, $src_dir) - or clean_exit("could not open directory $src_dir: $!"); - - my $num_files = 0; - while ($_ = readdir(SRC_DIR)) { - next if (/^\.\.?$/ || exists($config{file_ignore_list}{$_}) - || !/$config{update_files}/); - - my $src_file = untaint_path("$src_dir/$_"); - - # Make sure it's a regular file. - unless (-f "$src_file" && !-l "$src_file") { - closedir(SRC_DIR); - clean_exit("\"$src_file\" is not a regular file.") - } - - unless (copy($src_file, $dst_dir)) { - closedir(SRC_DIR); - clean_exit("could not copy \"$src_file\" to \"$dst_dir\"/: $!"); - } - $num_files++; - } - - closedir(SRC_DIR); - - print STDERR "$num_files files copied.\n" - if (!$config{quiet} || $config{interactive}); -} - - - -# Return true if file is in PATH and is executable. -sub is_in_path($) -{ - my $file = shift; - - foreach my $dir (File::Spec->path()) { - if ((-f "$dir/$file" && -x "$dir/$file") - || (-f "$dir/$file.exe" && -x "$dir/$file.exe")) { - print STDERR "Found $file binary in $dir\n" - if ($config{verbose}); - return (1); - } - } - - return (0); -} - - - -# get_next_entry() will parse the array referenced in the first arg -# and return the next entry. The array should contain a rules file, -# and the returned entry will be removed from the array. -# An entry is one of: -# - single-line rule (put in 2nd ref) -# - multi-line rule (put in 3rd ref) -# - non-rule line (put in 4th ref) -# If the entry is a multi-line rule, its single-line version is also -# returned (put in the 2nd ref). -# If it's a rule, the msg string will be put in 4th ref and sid in 5th. -sub get_next_entry($ $ $ $ $ $) -{ - my $arr_ref = shift; - my $single_ref = shift; - my $multi_ref = shift; - my $nonrule_ref = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - undef($$single_ref); - undef($$multi_ref); - undef($$nonrule_ref); - undef($$msg_ref); - undef($$sid_ref); - - my $line = shift(@$arr_ref) || return(0); - my $disabled = 0; - my $broken = 0; - - chomp($line); - $line .= "\n"; - - # Possible beginning of multi-line rule? - if ($line =~ /$MULTILINE_RULE_REGEXP/oi) { - $$single_ref = $line; - $$multi_ref = $line; - - $disabled = 1 if ($line =~ /^\s*#/); - - # Keep on reading as long as line ends with "\". - while (!$broken && $line =~ /\\\s*\n$/) { - - # Remove trailing "\" and newline for single-line version. - $$single_ref =~ s/\\\s*\n//; - - # If there are no more lines, this can not be a valid multi-line rule. - if (!($line = shift(@$arr_ref))) { - - warn("\nWARNING: got EOF while parsing multi-line rule: $$multi_ref\n") - if ($config{verbose}); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - - # Multi-line continuation. - $$multi_ref .= $line; - - # If there are non-comment lines in the middle of a disabled rule, - # mark the rule as broken to return as non-rule lines. - if ($line !~ /^\s*#/ && $disabled) { - $broken = 1; - } elsif ($line =~ /^\s*#/ && !$disabled) { - # comment line (with trailing slash) in the middle of an active rule - ignore it - } else { - $line =~ s/^\s*#*\s*//; # remove leading # in single-line version - $$single_ref .= $line; - } - - } # while line ends with "\" - - # Single-line version should now be a valid rule. - # If not, it wasn't a valid multi-line rule after all. - if (!$broken && parse_singleline_rule($$single_ref, $msg_ref, $sid_ref)) { - - $$single_ref =~ s/^\s*//; # remove leading whitespaces - $$single_ref =~ s/^#+\s*/#/; # remove whitespaces next to leading # - $$single_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - $$multi_ref =~ s/^\s*//; - $$multi_ref =~ s/\s*\n$/\n/; - $$multi_ref =~ s/^#+\s*/#/; - - return (1); # return multi - - # Invalid multi-line rule. - } else { - warn("\nWARNING: invalid multi-line rule: $$single_ref\n") - if ($config{verbose} && $$multi_ref !~ /^\s*#/); - - @_ = split(/\n/, $$multi_ref); - - undef($$multi_ref); - undef($$single_ref); - - # First line of broken multi-line rule will be returned as a non-rule line. - $$nonrule_ref = shift(@_) . "\n"; - $$nonrule_ref =~ s/\s*\n$/\n/; # remove trailing whitespaces - - # The rest is put back to the array again. - foreach $_ (reverse((@_))) { - unshift(@$arr_ref, "$_\n"); - } - - return (1); # return non-rule - } - - # Check if it's a regular single-line rule. - } elsif (parse_singleline_rule($line, $msg_ref, $sid_ref)) { - $$single_ref = $line; - $$single_ref =~ s/^\s*//; - $$single_ref =~ s/^#+\s*/#/; - $$single_ref =~ s/\s*\n$/\n/; - - return (1); # return single - - # Non-rule line. - } else { - - # Do extra check and warn if it *might* be a rule anyway, - # but that we just couldn't parse for some reason. - warn("\nWARNING: line may be a rule but it could not be parsed ". - "(missing sid?): $line\n") - if ($config{verbose} && $line =~ /^\s*alert .+msg\s*:\s*".+"\s*;/); - - $$nonrule_ref = $line; - $$nonrule_ref =~ s/\s*\n$/\n/; - - return (1); # return non-rule - } -} - - - -# Look for variables that exist in dist var files but not in local var file. -sub get_new_vars($ $ $ $) -{ - my $ch_ref = shift; - my $dist_var_files_ref = shift; - my $local_var_file = shift; - my $url_tmpdirs_ref = shift; - - my %new_vars; - my (%old_vars, %dist_var_files, %found_dist_var_files); - my $confs_found = 0; - - - # Warn in case we can't find a specified dist file. - foreach my $dir (@$url_tmpdirs_ref) { - foreach my $dist_var_file (@$dist_var_files_ref) { - if (-e "$dir/$dist_var_file") { - $found_dist_var_files{$dist_var_file} = 1; - $confs_found++; - } - } - } - - foreach my $dist_var_file (@$dist_var_files_ref) { - unless (exists($found_dist_var_files{$dist_var_file})) { - warn("WARNING: did not find variable file \"$dist_var_file\" in ". - "downloaded archive(s)\n") - unless($config{quiet}); - } - } - - unless ($confs_found) { - unless ($config{quiet}) { - warn("WARNING: no variable files found in downloaded archive(s), ". - "aborting check for new variables\n"); - return; - } - } - - # Read in variable names from old (target) var file. - open(LOCAL_VAR_FILE, "<", "$local_var_file") - or clean_exit("could not open $local_var_file for reading: $!"); - - my @local_var_conf = ; - - foreach $_ (join_multilines(\@local_var_conf)) { - $old_vars{lc($1)}++ if (/$VAR_REGEXP/i); - } - - close(LOCAL_VAR_FILE); - - # Read in variables from new file(s). - foreach my $dir (@$url_tmpdirs_ref) { - foreach my $dist_var_file (@$dist_var_files_ref) { - my $conf = "$dir/$dist_var_file"; - if (-e "$conf") { - my $num_new = 0; - print STDERR "Checking downloaded $dist_var_file for new variables... " - unless ($config{quiet}); - - open(DIST_CONF, "<", "$conf") - or clean_exit("could not open $conf for reading: $!"); - my @dist_var_conf = ; - close(DIST_CONF); - - foreach $_ (join_multilines(\@dist_var_conf)) { - if (/$VAR_REGEXP/i && !exists($old_vars{lc($1)})) { - my ($varname, $varval) = (lc($1), $2); - if (exists($new_vars{$varname})) { - warn("\nWARNING: new variable \"$varname\" is defined multiple ". - "times in downloaded files\n"); - } - s/^\s*//; - push(@{$$ch_ref{new_vars}}, "$_\n"); - $new_vars{$varname} = $varval; - $num_new++; - } - } - - close(DIST_CONF); - print STDERR "$num_new new found.\n" - unless ($config{quiet}); - } - } - } -} - - - -# Add new variables to local snort.conf. -sub add_new_vars($ $) -{ - my $ch_ref = shift; - my $varfile = shift; - my $tmp_varfile = "$tmpdir/tmp_varfile.conf"; - my $new_content; - - return unless ($#{$changes{new_vars}} > -1); - - print STDERR "Adding new variables to $varfile... " - unless ($config{quiet}); - - open(OLD_LOCAL_CONF, "<", "$varfile") - or clean_exit("could not open $varfile for reading: $!"); - my @old_content = ; - close(OLD_LOCAL_CONF); - - open(NEW_LOCAL_CONF, ">", "$tmp_varfile") - or clean_exit("could not open $tmp_varfile for writing: $!"); - - my @old_vars = grep(/$VAR_REGEXP/i, @old_content); - - - # If any vars exist in old file, put new vars right after them. - if ($#old_vars > -1) { - while ($_ = shift(@old_content)) { - print NEW_LOCAL_CONF $_; - last if ($_ eq $old_vars[$#old_vars]); - } - } - - print NEW_LOCAL_CONF @{$changes{new_vars}}; - print NEW_LOCAL_CONF @old_content; - - close(NEW_LOCAL_CONF); - - clean_exit("could not copy $tmp_varfile to $varfile: $!") - unless (copy("$tmp_varfile", "$varfile")); - - print STDERR "done.\n" - unless ($config{quiet}); -} - - - -# Convert msdos style path to cygwin style, e.g. -# c:\foo => /cygdrive/c/foo -sub msdos_to_cygwin_path($) -{ - my $path_ref = shift; - - if ($$path_ref =~ /^([a-zA-Z]):[\/\\](.*)/) { - my ($drive, $dir) = ($1, $2); - $dir =~ s/\\/\//g; - $$path_ref = "/cygdrive/$drive/$dir"; - return (1); - } - - return (0); -} - - - -# Parse and process a modifysid expression. -# Return 1 if valid, or otherwise 0. -sub parse_mod_expr($ $ $ $) -{ - my $mod_list_ref = shift; # where to store valid entries - my $sid_arg_list = shift; # comma-separated list of SIDs/files or wildcard - my $subst = shift; # regexp to look for - my $repl = shift; # regexp to replace it with - - my @tmp_mod_list; - - $sid_arg_list =~ s/\s+$//; - - foreach my $sid_arg (split(/\s*,\s*/, $sid_arg_list)) { - my $type = ""; - - $type = "sid" if ($sid_arg =~ /^\d+$/); - $type = "file" if ($sid_arg =~ /^\S+.*\.\S+$/); - $type = "wildcard" if ($sid_arg eq "*"); - - return (0) unless ($type); - - # Sanity check to make sure user escaped at least all the "$" in $subst. - if ($subst =~ /[^\\]\$./ || $subst =~ /^\$/) { - warn("WARNING: unescaped \$ in expression \"$subst\", all special ". - "characters must be escaped\n"); - return (0); - } - - # Only allow backreference variables. The check should at least catch some user typos. - if (($repl =~ /[^\\]\$(\D.)/ && $1 !~ /{\d/) || $repl =~ /[^\\]\$$/ - || ($repl =~ /^\$(\D.)/ && $1 !~ /{\d/)) { - warn("WARNING: illegal replacement expression \"$repl\": unescaped \$ ". - "that isn't a backreference\n"); - return (0); - } - - # Don't permit unescaped @. - if ($repl =~ /[^\\]\@/ || $repl =~ /^\@/) { - warn("WARNING: illegal replacement expression \"$repl\": unescaped \@\n"); - return (0); - } - - # Make sure the regexp is valid. - my $repl_qq = "qq/$repl/"; - my $dummy = "foo"; - - eval { - $dummy =~ s/$subst/$repl_qq/ee; - }; - - # We should probably check for warnings as well as errors... - if ($@) { - warn("Invalid regexp: $@"); - return (0); - } - - push(@tmp_mod_list, [$subst, $repl_qq, $type, $sid_arg]); - } - - # If we come this far, all sids and the regexp were parsed successfully, so - # append them to real mod list array. - foreach my $mod_entry (@tmp_mod_list) { - push(@$mod_list_ref, $mod_entry); - } - - return (1); -} - - - -# Untaint a path. Die if it contains illegal chars. -sub untaint_path($) -{ - my $path = shift; - my $orig_path = $path; - - return $path unless ($config{use_path_checks}); - - (($path) = $path =~ /^([$OK_PATH_CHARS]+)$/) - or clean_exit("illegal character in path/filename ". - "\"$orig_path\", allowed are $OK_PATH_CHARS\n". - "Fix this or set use_path_checks=0 in oinkmaster.conf ". - "to disable this check completely if it is too strict.\n"); - - return ($path); -} - - - -# Ask user to approve changes. Return 1 for yes, 0 for no. -sub approve_changes() -{ - my $answer = ""; - - while ($answer !~ /^[yn]/i) { - print "Do you approve these changes? [Yn] "; - $answer = ; - $answer = "y" unless ($answer =~ /\S/); - } - - return ($answer =~ /^y/i); -} - - - -# Remove common leading and trailing stuff from two rules. -sub minimize_diff($ $) -{ - my $old_rule = shift; - my $new_rule = shift; - - my $original_old = $old_rule; - my $original_new = $new_rule; - - # Additional chars to print next to the diffing part. - my $additional_chars = 20; - - # Remove the rev keyword from the rules, as it often - # makes the whole diff minimizing useless. - $old_rule =~ s/\s*\b(rev\s*:\s*\d+\s*;)\s*//; - my $old_rev = $1; - - $new_rule =~ s/\s*\b(rev\s*:\s*\d+\s*;)\s*//; - my $new_rev = $1; - - # If rev was the only thing that changed, we want to restore the rev - # before continuing so we don't remove common stuff from rules that - # are identical. - if ($old_rule eq $new_rule) { - $old_rule = $original_old; - $new_rule = $original_new; - } - - # Temporarily remove possible leading # so it works nicely - # with modified rules that are also being either enabled or disabled. - my $old_is_disabled = 0; - my $new_is_disabled = 0; - - $old_is_disabled = 1 if ($old_rule =~ s/^#//); - $new_is_disabled = 1 if ($new_rule =~ s/^#//); - - # Go forward char by char until they aren't equeal. - # $i will bet set to the index where they diff. - my @old = split(//, $old_rule); - my @new = split(//, $new_rule); - - my $i = 0; - while ($i <= $#old && $i <= $#new && $old[$i] eq $new[$i]) { - $i++; - } - - # Now same thing but backwards. - # $j will bet set to the index where they diff. - @old = reverse(split(//, $old_rule)); - @new = reverse(split(//, $new_rule)); - - my $j = 0; - while ($j <= $#old && $j <= $#new && $old[$j] eq $new[$j]) { - $j++; - } - - # Print some additional chars on either side, if there is room for it. - $i -= $additional_chars; - $i = 0 if ($i < 0); - - $j = -$j + $additional_chars; - $j = 0 if ($j > -1); - - my ($old, $new); - - # Print entire rules (i.e. they can not be shortened). - if (!$i && !$j) { - $old = $old_rule; - $new = $new_rule; - - # Leading and trailing stuff can be removed. - } elsif ($i && $j) { - $old = "..." . substr($old_rule, $i, $j) . "..."; - $new = "..." . substr($new_rule, $i, $j) . "..."; - - # Trailing stuff can be removed. - } elsif (!$i && $j) { - $old = substr($old_rule, $i, $j) . "..."; - $new = substr($new_rule, $i, $j) . "..."; - - # Leading stuff can be removed. - } elsif ($i && !$j) { - $old = "..." . substr($old_rule, $i); - $new = "..." . substr($new_rule, $i); - } - - chomp($old, $new); - $old .= "\n"; - $new .= "\n"; - - # Restore possible leading # now. - $old = "#$old" if ($old_is_disabled); - $new = "#$new" if ($new_is_disabled); - - return ($old, $new); -} - - - -# Check a string and return 1 if it's a valid single-line snort rule. -# Msg string is put in second arg, sid in third (those are the only -# required keywords, besides the leading rule actions). -sub parse_singleline_rule($ $ $) -{ - my $line = shift; - my $msg_ref = shift; - my $sid_ref = shift; - - undef($$msg_ref); - undef($$sid_ref); - - if ($line =~ /$SINGLELINE_RULE_REGEXP/oi) { - - if ($line =~ /\bmsg\s*:\s*"(.+?)"\s*;/i) { - $$msg_ref = $1; - } else { - return (0); - } - - if ($line =~ /\bsid\s*:\s*(\d+)\s*;/i) { - $$sid_ref = $1; - } else { - return (0); - } - - return (1); - } - - return (0); -} - - - -# Merge multiline directives in an array by simply removing traling backslashes. -sub join_multilines($) -{ - my $multiline_conf_ref = shift; - my $joined_conf = ""; - - foreach $_ (@$multiline_conf_ref) { - s/\\\s*\n$//; - $joined_conf .= $_; - } - - return (split/\n/, $joined_conf); -} - - - -# Catch SIGINT. -sub catch_sigint() -{ - $SIG{INT} = 'IGNORE'; - print STDERR "\nInterrupted, cleaning up.\n"; - sleep(1); - clean_exit("interrupted by signal"); -} - - - -# Remove temporary directory and exit. -# If a non-empty string is given as argument, it will be regarded -# as an error message and we will use die() with the message instead -# of just exit(0). -sub clean_exit($) -{ - my $err_msg = shift; - - $SIG{INT} = 'DEFAULT'; - - if (defined($tmpdir) && -d "$tmpdir") { - chdir(File::Spec->rootdir()); - rmtree("$tmpdir", 0, 1); - undef($tmpdir); - } - - if (!defined($err_msg) || $err_msg eq "") { - exit(0); - } else { - chomp($err_msg); - die("\n$0: Error: $err_msg\n\nOink, oink. Exiting...\n"); - } -} - - - -#### EOF #### diff --git a/config/snort-dev/bin/oinkmaster_contrib/snort_rename.pl b/config/snort-dev/bin/oinkmaster_contrib/snort_rename.pl deleted file mode 100644 index e5f0d39e..00000000 --- a/config/snort-dev/bin/oinkmaster_contrib/snort_rename.pl +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/perl -w - -#usage: rename perl_expression [files] -my $usage = qq{rename [-v] s/pat/repl/ [filenames...]\t (c)2001 hellweg\@snark.de -rename files read from the commandline or stdin - -License to use, modify and redistribute granted to each and every lifeform on -this planet (as long as credit to hellweg\@snark.de remains). No guarantee that -'rename' does or does not perform the way you want... - -} ; -$verbose = 0 ; -$quiet = 0 ; - -$op=shift || 0 ; -if($op eq "-v") { - $verbose++ ; $quiet = 0 ; - $op=shift || 0 ; -} -if($op eq "-q") { - $quiet++ ; $verbose = 0 ; - $op=shift || 0 ; -} -if($op =~ /^-h/) { - print $usage; exit(0) ; -} - -if(! $op) { - print $usage; exit(-1) ; -} - -if (!@ARGV) { - @ARGV = ; -} - -$count=0 ; -my($m, $d, $y, $T) ; -for (@ARGV) { - chomp ; - if(-e $_) { - $was = $_; - if($op =~ /\$[Tdym]/) { - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime((stat($_))[9]); - $m = sprintf("%0.2i", $mon+1); - $d = sprintf("%0.2i", $mday); - $y = $year + 1900 ; - $T = "$y$m$d" ; - } - eval $op; - die $@ if $@; - if(-f $_) { print("! exists already: $was -> $_ \n") unless $quiet ; } - else { - if(rename($was, $_)) { - print("$was -> $_\n") if $verbose ; - $count++; - } else { - if(/\//) { - # maybe we need to create dirs? - my $createRes = createDirs($_) ; - if($createRes) { - print("! fauled to create $createRes for $_\n") - unless $quiet ; - } - else { # try again - if(rename($was, $_)) { - print("$was -> $_\n") if $verbose ; - $count++; - } else { - print("! failed to rename $was -> $_ \n") - unless $quiet ; - } - } - } - else { - print("! failed to rename $was -> $_ \n") unless $quiet ; - } - } - } - } - else { print("! not found: $_ \n") ; } -} -print("renamed $count files\n") if $verbose ; - - -sub createDirs { # return the dir we failed to create or 0 - my $file = shift ; - my @dirs = split /\//, $file ; - pop @dirs ; # don't try to mkdir the file itself - my $current = "" ; - $current = "/" if ($file =~ /^\//) ; - foreach (@dirs) { - $current .= $_ ; - if(! -d $current) { - mkdir $current, 0700 || return $current ; - print "mkdir $current\n" if ($verbose) ; - } - $current .= "/" ; - } - return 0 ; # success -} diff --git a/config/snort-dev/css/sexybuttons.css b/config/snort-dev/css/sexybuttons.css deleted file mode 100644 index c3834b44..00000000 --- a/config/snort-dev/css/sexybuttons.css +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Sexy Buttons - * - * DESCRIPTION: - * Sexy, skinnable HTML/CSS buttons with icons. - * - * PROJECT URL: - * http://code.google.com/p/sexybuttons/ - * - * AUTHOR: - * Richard Davies - * http://www.richarddavies.us - * Richard@richarddavies.us - * - * VERSION: - * 1.1 - * - * LICENSE: - * Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) - * Creative Commons 3.0 Attribution (http://creativecommons.org/licenses/by/3.0/) - * - * CREDITS: - * Inspired by, derived from, and thanks to: - * http://www.p51labs.com/simply-buttons-v2/ - * http://www.oscaralexander.com/tutorials/how-to-make-sexy-buttons-with-css.html - * http://www.zurb.com/article/266/super-awesome-buttons-with-css3-and-rgba - * http://www.elctech.com/snippets/make-your-buttons-look-super-awesome - * - * USAGE: - * Simply add class="sexybutton [skin]" to a - */ - - -/* - * Generic styles for all Sexy Buttons - */ - -.sexybutton { - display: inline-block; - margin: 0; - padding: 0; - font: bold 13px "Helvetica Neue", Helvetica, Arial !important; - text-decoration: none !important; - text-shadow: 1px 1px 2px rgba(0,0,0,0.20); - background: none; - border: none; - white-space: nowrap; - cursor: pointer; - user-select: none; - -moz-user-select: none; - - /* Fix extra width padding in IE */ - _width: 0; - overflow: visible; -} - -.sexybutton span { - display: block; /* Prevents :active from working in IE--oh well! */ - height: 24px; - padding-right: 12px; - background-repeat: no-repeat; - background-position: right top; -} - -.sexybutton span span { - padding-right: 0; - padding-left: 12px; - line-height: 24px; - background-position: left top; -} - -.sexybutton span span span { - padding-left: 21px; - background-image: none; - background-repeat: no-repeat; - background-position: left center; - /* IE6 still requires a PNG transparency fix */ - /* _background-image: none; Or just hide icons from the undeserving IE6 */ - /* _padding-left: 0; Or just hide icons from the undeserving IE6 */ -} - -.sexybutton span span span.after { - padding-left: 0px; - padding-right: 21px; - background-position: right center; - /* IE6 still requires a PNG transparency fix */ - /* _padding-right: 0; Or just hide icons from the undeserving IE6 */ -} - -.sexybutton[disabled], -.sexybutton[disabled]:hover, -.sexybutton[disabled]:focus, -.sexybutton[disabled]:active, -.sexybutton.disabled, -.sexybutton.disabled:hover, -.sexybutton.disabled:focus, -.sexybutton.disabled:active { - color: #333 !important; - cursor: inherit; - text-shadow: none; - opacity: 0.33; -} - -.sexybutton:hover span, -.sexybutton:focus span { - background-position: 100% -24px; -} - -.sexybutton:hover span span, -.sexybutton:focus span span { - background-position: 0% -24px; -} - -.sexybutton:active span { - background-position: 100% -48px; -} - -.sexybutton:active span span { - background-position: 0% -48px; -} - -.sexybutton[disabled] span, -.sexybutton.disabled span { - background-position: 100% -72px; -} - -.sexybutton[disabled] span span, -.sexybutton.disabled span span { - background-position: 0% -72px; -} - -.sexybutton:hover span span span, -.sexybutton:focus span span span, -.sexybutton:active span span span, -.sexybutton[disabled] span span span, -.sexybutton.disabled span span span { - background-position: left center; -} - -.sexybutton:hover span span span.after, -.sexybutton:focus span span span.after, -.sexybutton:active span span span.after, -.sexybutton[disabled] span span span.after, -.sexybutton.disabled span span span.after { - background-position: right center; -} - -.sexybutton img { - margin-right: 5px; - vertical-align: text-top; - /* IE6 Hack */ - _margin-top: 4px; - _vertical-align: text-bottom; - /* IE6 still requires a PNG transparency fix */ - /* _display: none; Or just hide icons from the undeserving IE6 */ -} - -.sexybutton img.after { - margin-right: 0; - margin-left: 5px; - /* IE6 still requires a PNG transparency fix */ - /* _margin-left: 0; Or just hide icons from the undeserving IE6 */ -} - -.sexybutton.sexysmalls { font-size:.8em !important; } -.sexybutton.sexymedium { font-size: 15px !important; } -.sexybutton.sexylarge { font-size: 18px !important; } - - -/* - * Button Skins - * - * .PNG background images with alpha transparency are also supplied if you'd rather use them instead of the - * default .GIF images. (Just beware of IE6's lack of support.) - * - * Additional skins can be added below. The images/skins/ButtonTemplate.psd can be used to create new skins. - * Prefix the skin name with "sexy" to avoid any potential conflicts with other class names. - */ - -/* - * Simple Skin Buttons - */ - -.sexybutton.sexysimple { - position: relative; - padding: 5px 10px 5px; - font: inherit; - font-size: .85em !important; - font-style: normal !important; - font-weight: bold !important; - color: #fff !important; - line-height: 1; - background-image: url(/snort/images//awesome-overlay-sprite.png); - background-repeat: repeat-x; - background-position: 0 0; - - /* Special effects */ - text-shadow: 0 -1px 1px rgba(0,0,0,0.25), -2px 0 1px rgba(0,0,0,0.25); - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5); - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5); - - /* IE only stuff */ - border-bottom: 1px solid transparent\9; - _background-image: none; - - /* Cross browser inline block hack - http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/ */ - display: -moz-inline-stack; - display: inline-block; - vertical-align: middle; - *display: inline !important; - position: relative; - - /* Force hasLayout in IE */ - zoom: 1; - - /* Disable text selection (Firefox only)*/ - -moz-user-select: none; -} - -.sexybutton.sexysimple::selection { - background: transparent; -} - -.sexybutton.sexysimple:hover, -.sexybutton.sexysimple:focus { - background-position: 0 -50px; - color: #fff !important; -} - -.sexybutton.sexysimple:active { - background-position: 0 -100px; - -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.7); - /* Unfortunately, Safari doesn't support inset yet */ - -webkit-box-shadow: none; - - /* IE only stuff */ - border-bottom: 0\9; - border-top: 1px solid #666\9; -} - -.sexybutton.sexysimple[disabled], -.sexybutton.sexysimple.disabled { - background-position: 0 -150px; - color: #333 !important; - text-shadow: none; -} - -.sexybutton.sexysimple[disabled]:hover, -.sexybutton.sexysimple[disabled]:focus, -.sexybutton.sexysimple[disabled]:active, -.sexybutton.sexysimple.disabled:hover, -.sexybutton.sexysimple.disabled:focus, -.sexybutton.sexysimple.disabled:active { - -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5); - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5); -} - -.sexybutton.sexysimple span { - height: auto; - padding-left: 24px; - padding-right: 0; - background-position: left center; - background-repeat: no-repeat; - /* IE6 still requires a PNG transparency fix */ - /* _padding-left: 0; Or just hide icons from the undeserving IE6 */ -} - -.sexybutton.sexysimple span.after { - padding-left: 0; - padding-right: 24px; - background-position: right center; - /* IE6 still requires a PNG transparency fix */ - /* _padding-right: 0; Or just hide icons from the undeserving IE6 */ -} - -/* Simple button colors */ -.sexybutton.sexysimple { background-color: #333; } /* Default */ -.sexybutton.sexysimple.sexyblack { background-color: #333; } -.sexybutton.sexysimple.sexyred { background-color: #a90118; } -.sexybutton.sexysimple.sexyorange { background-color: #ff8a00; } -.sexybutton.sexysimple.sexyyellow { background-color: #ffb515; } -.sexybutton.sexysimple.sexygreen { background-color: #59a901; } -.sexybutton.sexysimple.sexyblue { background-color: #015ea9; } -.sexybutton.sexysimple.sexyteal { background-color: #2daebf; } -.sexybutton.sexysimple.sexymagenta { background-color: #a9014b; } -.sexybutton.sexysimple.sexypurple { background-color: #9d01a9; } - -/* Simple button sizes */ -.sexybutton.sexysimple.sexysmall { padding: 4px 7px 5px; font-size: 10px !important; } -.sexybutton.sexysimple.sexysmall:active { padding: 5px 7px 4px; } -.sexybutton.sexysimple { /* default */ } -.sexybutton.sexysimple:active { padding: 6px 10px 4px; } -.sexybutton.sexysimple.sexymedium { /* default */ } -.sexybutton.sexysimple.sexymedium:active { padding: 6px 10px 4px; } -.sexybutton.sexysimple.sexylarge { padding: 8px 14px 8px; font-size: 14px !important; } -.sexybutton.sexysimple.sexylarge:active { padding: 9px 14px 7px; } -.sexybutton.sexysimple.sexyxl { padding: 8px 14px 8px; font-size: 16px !important; } -.sexybutton.sexysimple.sexyxl:active { padding: 9px 14px 7px; } -.sexybutton.sexysimple.sexyxxl { padding: 8px 14px 8px; font-size: 20px !important; } -.sexybutton.sexysimple.sexyxxl:active { padding: 9px 14px 7px; } -.sexybutton.sexysimple.sexyxxxl { padding: 8px 14px 8px; font-size: 26px !important; } -.sexybutton.sexysimple.sexyxxxl:active { padding: 9px 14px 7px; } - -.sexybutton.sexysimple.sexysmall[disabled]:active, -.sexybutton.sexysimple.sexysmall.disabled:active { padding: 4px 7px 5px; } -.sexybutton.sexysimple[disabled]:active, -.sexybutton.sexysimple.disabled:active { padding: 5px 10px 5px; } -.sexybutton.sexysimple.sexymedium[disabled]:active, -.sexybutton.sexysimple.sexymedium.disabled:active { padding: 6px 10px 4px; } -.sexybutton.sexysimple.sexylarge[disabled]:active, -.sexybutton.sexysimple.sexylarge.disabled:active { padding: 8px 14px 8px; } -.sexybutton.sexysimple.sexyxl[disabled]:active, -.sexybutton.sexysimple.sexyxl.disabled:active { padding: 8px 14px 8px; } -.sexybutton.sexysimple.sexyxxl[disabled]:active, -.sexybutton.sexysimple.sexyxxl.disabled:active { padding: 8px 14px 8px; } -.sexybutton.sexysimple.sexyxxxl[disabled]:active, -.sexybutton.sexysimple.sexyxxxl.disabled:active { padding: 8px 14px 8px; } - - -/* - * Icon Definitions - */ - -/* Silk Icons - http://www.famfamfam.com/lab/icons/silk/ */ -/* (Obviously not all Silk icons are defined here. Feel free to define any other icons that you may need.) */ - -.sexybutton span.ok { background-image: url(/snort/images//tick.png) !important; } -.sexybutton span.cancel { background-image: url(/snort/images//cross.png) !important; } -.sexybutton span.add { background-image: url(/snort/images//add.png) !important; } -.sexybutton span.delete { background-image: url(/snort/images//delete.png) !important; } -.sexybutton span.download { background-image: url(/snort/images//arrow_down.png) !important; } -.sexybutton span.pwhitetxt { background-image: url(/snort/images//page_white_text.png) !important; } - diff --git a/config/snort-dev/css/style.css b/config/snort-dev/css/style.css deleted file mode 100644 index b484966c..00000000 --- a/config/snort-dev/css/style.css +++ /dev/null @@ -1,206 +0,0 @@ -.alert { - position:absolute; - top:10px; - left:0px; - width:94%; -background:#FCE9C0; -background-position: 15px; -border-top:2px solid #DBAC48; -border-bottom:2px solid #DBAC48; -padding: 15px 10px 85% 50px; -} - -.formpre { -font-family:arial; -font-size: 1.1em; -} - -#download_rules { -font-family: arial; -font-size: 13px; -font-weight: bold; -text-align: center -} - -#download_rules_td { -font-family: arial; -font-size: 13px; -font-weight: bold; -text-align: center -} - -/* hack fix the hard coded fbegin link */ -#header-left2 { -position: absolute; -background-position: center center; -height: 67px; -width: 147px; -top: -77px; -left: 8px; -float: left; -z-index:999; -} -#header-left2 #status-link2 { - position: relative; - top: 3px; - left: 2px; -} -/* end of fbegin hack */ - -.body2 { -font-family:arial; -font-size:12px; -} - - - - -/* Start of main css Pfsense */ -/* Start of main css Pfsense */ - -@charset "utf-8"; -.textstyle { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - font-style: normal; - background-color: #666; - color: #CCC; -} -.textstyle p2 a { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - font-style: normal; - color: #CCC; -} - -.textstyle p { - font-family: Arial, Helvetica, sans-serif; - font-size: 24px; - font-weight: bold; - color: #FFF; - text-decoration: underline; -} -.textstyle p2 { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - color: #CCC; -} - -/* Start of main css for table sort */ -/* Start of main css for table sort */ - -table { - margin: 0; - padding: 0; - border: 0; - font-weight: inherit; - font-style: inherit; - font-size: 9; - font-family: Arial, Helvetica, sans-serif; - vertical-align: baseline; -} - -/* Tables still need 'cellspacing="0"' in the markup. */ -table { border-collapse: separate; border-spacing: 0; } -caption, th, td { text-align: left; font-weight:400; } - -/* Remove possible quote marks (") from ,
    . */ -blockquote:before, blockquote:after, q:before, q:after { content: ""; } -blockquote, q { quotes: "" ""; } - -#container { - width: auto; - margin: 0px; - padding-top: 10px; - padding-bottom: 10px; -} - - - -/************************************************************** - - Sortable Table - v 1.4 - -**************************************************************/ - - - -th { - background-color: #eee; - background: #eee url(/snort/images/icon-table-sort.png) no-repeat 2px 8px; - padding: 4px 4px 4px 14px; -} - -.allRow { - background-color: #eee; - padding: 4px; -} - -tr.altRow { - background-color: #fff; -} - -.leftAlign { - text-align: left; -} - -.centerAlign { - text-align: center; -} - -.rightAlign { - text-align: right; -} - -.sortedASC { - background: url(/snort/images/icon-table-sort-asc.png) no-repeat 2px 4px #eee; -} - -.sortedDESC { - background: url(/snort/images/icon-table-sort-desc.png) no-repeat 2px 10px #eee; -} - -.tableHeaderOver { - cursor: pointer; - color: #354158; -} - - -tr.selected { - background-color: 9999ff; - color: #000000; -} - -tr.over { - background-color: #993333; - color: #fff; - cursor: pointer; -} - -tr.hide { - display: none; -} -/***************************/ - -.mainTableFilter { - position: absolute; - top: 0; - left: -10px; - width: auto; -} - -.tableFilter { - border: 1px solid #ccc; - padding: 2px; - margin: 5px 0 10px 0; -} - -.tableFilter input { - border: 1px solid #ccc; -} - -.tableFilter select { - border: 1px solid #ccc; -} - diff --git a/config/snort-dev/help_and_info.php b/config/snort-dev/help_and_info.php deleted file mode 100644 index af8eb4ae..00000000 --- a/config/snort-dev/help_and_info.php +++ /dev/null @@ -1,247 +0,0 @@ - - - - -The Snort Package Help Page - - - - - - - - - - -
    - -
    -
    -

    Snort Package

    - -

    - Snort Package is a GUI based front-end for Sourcefire\'s Snort ® IDS/IPS software. The Snort Package goal is to be - the best open-source GUI to manage multiple snort sensors and multiple rule snapshots. The project other goal is to be a highly competitive GUI for - network monitoring for both private and enterprise use. Lastly, this project software development should bring programmers and users together to create - software. -

    -

    - What is Snort ? Used by fortune 500 companies and goverments Snort is the most widely deployed IDS/IPS technology worldwide. It features rules based logging and - can perform content searching/matching in addition to being used to detect a variety of other attacks and probes, such as buffer overflows, stealth port - scans, CGI attacks, SMB probes, and much more. -

    -

    - Requirements :
    - Minimum requirement 256 mb ram, 500 MHz CPU.
    - Recommended 500 mb ram, 1 Ghz CPU.
    - The more rules you run the more memory you need.
    - The more interfaces you select the more memory you need.

    - Development is done on a Alix 2D3 system (500 MHz AMD Geode LX800 CPU 256MB DDR DRAM). -

    - -
    - -
    -

    Snort Package

    - -

    Change Log

    - -

    Changes to this package can be viewed by following packages repository

    -
    - -
    -

    Snort Package

    - -

    Getting Help

    - -

    -Obtaining Support
    - -We provide several means of obtaining support for pfSense. -

    - -

    -Free Options
    -Our free options include our forum, mailing list , and IRC channel. Before using any of these resources, please review the Project Rules below. -

    - -

    -Commercial Support
    - -Commercial support is available from the company founded by the founders of the pfSense project, BSD Perimeter. Phone and email support is available for support subscribers only. -

    - -

    -Project Rules
    -To keep things orderly, and be fair to everyone, we must enforce these rules. -

    - -

    -Please do not post support questions to the blog comments. The comments are for discussion of the post, and letting people ask questions there would make a mess of the purpose of those comments. Any support questions will not be moderator approved. -

    - -

    -Please do not cross post questions between the forum and mailing list, unless your inquiry has gone unanswered for at least 24 hours. Do not bump your mailing list or forum posts for at least 24 hours. If you have not received a reply after more than 24 hours, you are welcome to bump your thread. -

    - -

    -Please do not email individuals, the coreteam address, or private message people on the forum to ask questions. We provide a wide variety of means for obtaining help in a public forum, where it helps others who have the same questions in the future. We don\'t have enough time to answer all the questions our users post in the public forums, much less via email and private messages. Since we cannot possibly reply to everyone\'s email and private messages, to be fair we will not reply to anyone. Individual attention via phone and email support is available for commercial support customers. -

    -
    - -
    -

    Snort Package

    - -

    Heros

    - -

    Pfsense Snort Package users who have cared enough to donate to this project. I can\'t thank you enough for all your help. With-out your support I would have stoped long time ago.

    - -

    If your not on this list PM me and I will add you. If you would like to be removed pm me and I will remove you.

    - -

    Names

    - -

    sandro tavella

    -

    João Kemp Filho

    -

    Julio Fumoso

    -

    Rolland Hart

    -

    DiMarco Technology Solutions Inc.

    -

    Brett Burley

    -

    Tomasz Iskra

    -

    Bruno Buchschacher

    -

    Marco Pannetto

    -

    Christopher Weakland

    -

    Antonio Riveros

    -

    DigitalJer

    -

    Serialdie

    -

    Dlawley

    -

    Onhel

    -

    Jerrygoldsmith

    - - -
    -
    -
    - - - - -'; - -?> diff --git a/config/snort-dev/images/alert.jpg b/config/snort-dev/images/alert.jpg deleted file mode 100644 index 96c24e35..00000000 Binary files a/config/snort-dev/images/alert.jpg and /dev/null differ diff --git a/config/snort-dev/images/arrow_down.png b/config/snort-dev/images/arrow_down.png deleted file mode 100644 index 2c4e2793..00000000 Binary files a/config/snort-dev/images/arrow_down.png and /dev/null differ diff --git a/config/snort-dev/images/awesome-overlay-sprite.png b/config/snort-dev/images/awesome-overlay-sprite.png deleted file mode 100644 index c3af7dd9..00000000 Binary files a/config/snort-dev/images/awesome-overlay-sprite.png and /dev/null differ diff --git a/config/snort-dev/images/down.gif b/config/snort-dev/images/down.gif deleted file mode 100644 index 2b3c99fc..00000000 Binary files a/config/snort-dev/images/down.gif and /dev/null differ diff --git a/config/snort-dev/images/down2.gif b/config/snort-dev/images/down2.gif deleted file mode 100644 index 71bf92eb..00000000 Binary files a/config/snort-dev/images/down2.gif and /dev/null differ diff --git a/config/snort-dev/images/footer.jpg b/config/snort-dev/images/footer.jpg deleted file mode 100644 index 4af05707..00000000 Binary files a/config/snort-dev/images/footer.jpg and /dev/null differ diff --git a/config/snort-dev/images/footer2.jpg b/config/snort-dev/images/footer2.jpg deleted file mode 100644 index 3332e085..00000000 Binary files a/config/snort-dev/images/footer2.jpg and /dev/null differ diff --git a/config/snort-dev/images/icon-table-sort-asc.png b/config/snort-dev/images/icon-table-sort-asc.png deleted file mode 100644 index 0c127919..00000000 Binary files a/config/snort-dev/images/icon-table-sort-asc.png and /dev/null differ diff --git a/config/snort-dev/images/icon-table-sort-desc.png b/config/snort-dev/images/icon-table-sort-desc.png deleted file mode 100644 index 5c52f2d0..00000000 Binary files a/config/snort-dev/images/icon-table-sort-desc.png and /dev/null differ diff --git a/config/snort-dev/images/icon-table-sort.png b/config/snort-dev/images/icon-table-sort.png deleted file mode 100644 index 3cae604b..00000000 Binary files a/config/snort-dev/images/icon-table-sort.png and /dev/null differ diff --git a/config/snort-dev/images/icon_excli.png b/config/snort-dev/images/icon_excli.png deleted file mode 100644 index 4b54fa31..00000000 Binary files a/config/snort-dev/images/icon_excli.png and /dev/null differ diff --git a/config/snort-dev/images/logo.jpg b/config/snort-dev/images/logo.jpg deleted file mode 100644 index fa01d818..00000000 Binary files a/config/snort-dev/images/logo.jpg and /dev/null differ diff --git a/config/snort-dev/images/logo22.png b/config/snort-dev/images/logo22.png deleted file mode 100644 index 64ed9d75..00000000 Binary files a/config/snort-dev/images/logo22.png and /dev/null differ diff --git a/config/snort-dev/images/page_white_text.png b/config/snort-dev/images/page_white_text.png deleted file mode 100644 index 813f712f..00000000 Binary files a/config/snort-dev/images/page_white_text.png and /dev/null differ diff --git a/config/snort-dev/images/up.gif b/config/snort-dev/images/up.gif deleted file mode 100644 index 89596771..00000000 Binary files a/config/snort-dev/images/up.gif and /dev/null differ diff --git a/config/snort-dev/images/up2.gif b/config/snort-dev/images/up2.gif deleted file mode 100644 index 21c5a254..00000000 Binary files a/config/snort-dev/images/up2.gif and /dev/null differ diff --git a/config/snort-dev/snort.inc b/config/snort-dev/snort.inc deleted file mode 100644 index 3a1df760..00000000 --- a/config/snort-dev/snort.inc +++ /dev/null @@ -1,2706 +0,0 @@ - 6) - $snort_pfsense_basever = 'no'; -else - $snort_pfsense_basever = 'yes'; - -/* find out what arch where in x86 , x64 */ -global $snort_arch; -$snort_arch = 'x86'; -$snort_arch_ck = php_uname("m"); -if ($snort_arch_ck == 'i386') - $snort_arch = 'x86'; -else if ($snort_arch_ck == "amd64") - $snort_arch = 'x64'; -else - $snort_arch = "Unknown"; - -/* tell me my theme */ -$pfsense_theme_is = $config['theme']; - -/* func builds custom white lists */ -function find_whitelist_key($find_wlist_number) { - global $config, $g; - - if (!is_array($config['installedpackages']['snortglobal']['whitelist'])) - $config['installedpackages']['snortglobal']['whitelist'] = array(); - if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item'])) - return 0; /* XXX */ - - foreach ($config['installedpackages']['snortglobal']['whitelist']['item'] as $w_key => $value) { - if ($value['name'] == $find_wlist_number) - return $w_key; - } -} - -/* func builds custom suppress lists */ -function find_suppress_key($find_slist_number) { - global $config, $g; - - if (!is_array($config['installedpackages']['snortglobal']['suppress'])) - $config['installedpackages']['snortglobal']['suppress'] = array(); - if (!is_array($config['installedpackages']['snortglobal']['suppress']['item'])) - return 0; /* XXX */ - - foreach ($config['installedpackages']['snortglobal']['suppress']['item'] as $s_key => $value) { - if ($value['name'] == $find_slist_number) - return $s_key; - } -} - -function snort_find_interface_ipv6($interface, $flush = false) -{ - global $interface_ipv6_arr_cache; - global $interface_snv6_arr_cache; - global $config; - - $interface = trim($interface); - $interface = get_real_interface($interface); - - if (!does_interface_exist($interface)) - return; - - /* Setup IP cache */ - if (!isset($interface_ipv6_arr_cache[$interface]) or $flush) { - $ifinfo = pfSense_get_interface_addresses($interface); - // FIXME: Add IPv6 support to the pfSense module - exec("/sbin/ifconfig {$interface} inet6", $output); - foreach($output as $line) { - if(preg_match("/inet6/", $line)) { - $parts = explode(" ", $line); - if(preg_match("/fe80::/", $parts[1])) { - $ifinfo['ipaddrv6'] = $parts[1]; - if($parts[2] == "-->") { - $parts[5] = "126"; - $ifinfo['subnetbitsv6'] = $parts[5]; - } else { - $ifinfo['subnetbitsv6'] = $parts[3]; - } - } - } - } - $interface_ipv6_arr_cache[$interface] = $ifinfo['ipaddrv6']; - $interface_snv6_arr_cache[$interface] = $ifinfo['subnetbitsv6']; - } - - return $interface_ipv6_arr_cache[$interface]; -} - -function snort_get_interface_ipv6($interface = "wan") -{ - global $config; - $realif = get_failover_interface($interface); - switch($config['interfaces'][$interface]['ipaddrv6']) { - case "6rd": - case "6to4": - $realif = "stf0"; - break; - } - if (!$realif) { - if (preg_match("/^carp/i", $interface)) - $realif = $interface; - else if (preg_match("/^[a-z0-9]+_vip/i", $interface)) - $realif = $interface; - else - return null; - } - - $curip = snort_find_interface_ipv6($realif); - - if (strstr($curip, '%', TRUE)) { - $curip = strstr($curip, '%', TRUE); - }else if (is_ipaddrv6($curip)){ - $curip = $curip; - } - - if ($curip && is_ipaddrv6($curip) && ($curip != "::")) - return $curip; - else - return null; -} - -/* func builds custom whitelests */ -function build_base_whitelist($build_netlist, $wanip, $wangw, $wandns, $vips, $vpns, $userwips) { - global $config, $g, $snort_pfsense_basever; - - // build an interface array list - $int_array = get_configured_interface_list(); - - /* calculate ipv4 interface subnet information */ - $home_net = ''; - $snort_calc_iface_subnet_list = function($int) use(&$home_net) { - - $subnet = get_interface_ip($int); - $sn = get_interface_subnet($int); - $subnet_v6 = snort_get_interface_ipv6($int); - $sn_v6 = get_interface_subnetv6($int); - - if (is_ipaddr($subnet) && !empty($subnet)) { - $home_net .= "{$subnet}/{$sn},"; - } - - if (is_ipaddr($subnet_v6) && !empty($subnet_v6)) { - $home_net .= "{$subnet_v6}/{$sn_v6},"; - } - - }; - - /* Add Gateway on WAN interface to whitelist (For RRD graphs) */ - $snort_calc_gateway_list = function($int) use (&$home_net) { - - $gw = get_interface_gateway($int); - $sn = get_interface_subnet($int); - $gw_v6 = get_interface_gateway_v6($int); - $sn_v6 = get_interface_subnetv6($int); - - - if(!empty($gw) && is_ipaddr($gw)) { - $home_net .= "{$gw}/{$sn},"; - } - - if(!empty($gw_v6) && is_ipaddr($gw_v6)) { - $home_net .= "{$gw_v6}/{$sn_v6},"; - } - - }; - - // iterate through interface list and write out whitelist items and also compile a home_net list for snort. - foreach ($int_array as $int) { - - if (!empty($int)) { - $snort_calc_iface_subnet_list($int); - - if ($wangw == 'yes') - $snort_calc_gateway_list($int); - - } - - } - - /* - * Add DNS server for WAN interface to whitelist - * - * NOTE: does this get ipv6 ips - */ - $snort_dns_list = function() use(&$home_net) { - - $dns_servers = get_dns_servers(); - foreach ($dns_servers as $dns) { - if(!empty($dns) && is_ipaddr($dns)) { - $home_net .= "{$dns},"; - } - } - - }; - - if($wandns == 'yes') { - $snort_dns_list(); - } - - /* - * iterate all vips and add to whitelist - * NOTE: does this get ipv6 ips - * - */ - $snort_vips_list = function() use(&$home_net, &$config) { - - if (is_array($config['virtualip']) && is_array($config['virtualip']['vip'])) { - foreach($config['virtualip']['vip'] as $vip) - if(!empty($vip['subnet'])) - $home_net .= "{$vip['subnet']},"; - } - - }; - - if($vips == 'yes') { - $snort_vips_list(); - } - - /* - * grab a list of vpns and whitelist if user desires added by nestorfish 954 - * - * NOTE: does this get ipv6 ips - */ - $snort_vpns_list = function() use(&$home_net, &$config) { - $vpns_list = filter_get_vpns_list(); - - if (!empty($vpns_list)) { - // convert spaces to , returns - $vpns_list = str_replace(' ', ",", $vpns_list); - $vpns_list = str_replace(' ', ",", $vpns_list); - - $home_net .= "{$vpns_list},"; - } - - }; - - if ($vpns == 'yes') { - $snort_vpns_list(); - } - - $snort_userwips_list = function() use(&$home_net, &$userwips, &$config) { - - if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item'])) - $config['installedpackages']['snortglobal']['whitelist']['item'] = array(); - - $home_net .= $config['installedpackages']['snortglobal']['whitelist']['item'][$userwips]['address'] . ','; - - }; - - if ($userwips > -1) { - $snort_userwips_list(); - } - - // add loopback iface - $home_net .= '127.0.0.1,'; - $home_net .= '::1,'; - - /* - * makes sure there is no duplicates - * splits $home_net to (ipv6 ip), (ipv6 cidr), (ipv4 ip), (ipv4 cidr) - */ - $snort_clean_home_net = function() use(&$home_net) { - - $home_net = trim($home_net); - $home_net = explode(',', $home_net); - $net_ipv4_cidr = array(); - $net_ipv4 = array(); - $net_ipv6_cidr = array(); - $net_ipv6 = array(); - - // split into 4 arrays - foreach ($home_net as $net_ip) { - - if (preg_match("/\./", $net_ip)) { - if (preg_match("/\//", $net_ip)) { - if (!in_array($net_ip, $net_ipv4_cidr)) - array_push($net_ipv4_cidr, $net_ip); - }else{ - if (!in_array($net_ip, $net_ipv4)) - array_push($net_ipv4, $net_ip); - } - } - - if (preg_match("/:/", $net_ip)) { - if (preg_match("/\//", $net_ip)) { - if (!in_array($net_ip, $net_ipv6_cidr)) - array_push($net_ipv6_cidr, $net_ip); - }else{ - if (!in_array($net_ip, $net_ipv6)) - array_push($net_ipv6, $net_ip); - } - } - } // end foreach - - // TODO: make sure that ips are not in cidr - - $home_net = ''; - foreach ($net_ipv4_cidr as $net_ipv4_cidr_ip) { - if (!empty($net_ipv4_cidr_ip)) - $home_net .= $net_ipv4_cidr_ip . ','; - } - foreach ($net_ipv4 as $net_ipv4_ip) { - if (!empty($net_ipv4_ip)) - $home_net .= $net_ipv4_ip . ','; - } - foreach ($net_ipv6_cidr as $net_ipv6_cidr_ip) { - if (!empty($net_ipv6_cidr_ip)) - $home_net .= $net_ipv6_cidr_ip . ','; - } - foreach ($net_ipv6 as $net_ipv6_ip) { - if (!empty($net_ipv6_ip)) - $home_net .= $net_ipv6_ip . ','; - } - - // remove , if its the last char - if($home_net[strlen($home_net)-1] === ',') { - $home_net = substr_replace($home_net, '', -1); - } - - }; - - $snort_clean_home_net(); - - return $home_net; - -} // end func builds custom whitelests - - -/* checks to see if snort is running yes/no and stop/start */ -function snortRunningChk($type, $snort_uuid, $if_real) { - global $config; - - if ($type === 'snort') { - $snort_pgrep_chk = exec("/bin/pgrep -f 'snort.*R {$snort_uuid}'"); - } - - if ($type === 'barnyard2') { - $snort_pgrep_chk = exec("/bin/pgrep -f 'barnyard2.*{$snort_uuid}_{$if_real}'"); - } - - if (!empty($snort_pgrep_chk)) { - return $snort_pgrep_chk; - } - - return NULL; - -} - -function Running_Stop($snort_uuid, $if_real, $id) { - global $config, $g; - - // if snort.sh crashed this will remove the pid - @unlink("{$g['tmp_path']}/snort.sh.pid"); - - // wait until snort stops - $snort_WaitForStop = function ($type) use (&$snort_uuid, &$if_real) { - - $snort_pgrep_chk = snortRunningChk($type, $snort_uuid, $if_real); - - if (!empty($snort_pgrep_chk)){ - exec("/usr/bin/touch /tmp/snort_{$if_real}{$snort_uuid}.stoplck"); - } - - $i = 0; - while(file_exists("/tmp/snort_{$if_real}{$snort_uuid}.stoplck") || file_exists("/var/log/snort/run/{$type}_{$if_real}{$snort_uuid}.pid")) { - $i++; - exec("/usr/bin/logger -p daemon.info -i -t SnortStop '{$type} Stop count...{$i}'"); - - $snort_pgrep_chk = snortRunningChk($type, $snort_uuid, $if_real); - - if (empty($snort_pgrep_chk)){ - @exec("/bin/rm /tmp/snort_{$if_real}{$snort_uuid}.stoplck"); - } - - sleep(2); - - } - }; - - if (isvalidpid("/var/log/snort/run/snort_{$if_real}{$snort_uuid}.pid")) { - - // send kill cmd - killbypid("/var/log/snort/run/snort_{$if_real}{$snort_uuid}.pid"); - exec("/bin/rm /var/log/snort/run/snort_{$if_real}{$snort_uuid}.pid.lck"); - - // wait until snort stops - $snort_WaitForStop('snort'); - - } - - if (isvalidpid("/var/log/snort/run/barnyard2_{$if_real}{$snort_uuid}.pid")) { - - // send kill cmd - killbypid("/var/log/snort/run/barnyard2_{$if_real}{$snort_uuid}.pid"); - exec("/bin/rm /var/log/snort/run/barnyard2_{$snort_uuid}_{$if_real}.pid.lck"); - - // wait until barnyard2 stops - $snort_WaitForStop('barnyard2'); - - } - - // TODO: Add a GUI option that lets the user keep full logs - /* - @exec("/bin/rm /var/log/snort/run/snort_{$if_real}{$snort_uuid}*"); - @exec("/bin/rm /var/log/snort/{$snort_uuid}_{$if_real}/snort.u1*"); - @exec("/bin/rm /var/log/snort/{$snort_uuid}_{$if_real}/snort.u2*"); - - @exec("/bin/rm /var/log/snort/run/barnyard2_{$snort_uuid}_{$if_real}*"); - @exec("/bin/rm /var/log/snort/barnyard2/{$snort_uuid}_{$if_real}/snort.u1*"); - @exec("/bin/rm /var/log/snort/barnyard2/{$snort_uuid}_{$if_real}/snort.u2*"); - */ - - // Log Iface stop - exec("/usr/bin/logger -p daemon.info -i -t SnortStartup 'Interface Rule STOP for {$snort_uuid}_{$if_real}...'"); -} - -function Running_Start($snort_uuid, $if_real, $id) { - global $config; - - /* if snort.sh crashed this will remove the pid */ - @unlink("{$g['tmp_path']}/snort.sh.pid"); - - // wait until snort starts - $snort_WaitForStart = function ($type) use (&$snort_uuid, &$if_real) { - - // calls to see if snort or barnyard is running - $snort_pgrep_chk = snortRunningChk($type, $snort_uuid, $if_real); - - if (empty($snort_pgrep_chk)){ - exec("/usr/bin/touch /tmp/snort_{$if_real}{$snort_uuid}.startlck"); - } - - $i = 0; - while(file_exists("/tmp/snort_{$if_real}{$snort_uuid}.startlck") || !file_exists("/var/log/snort/run/{$type}_{$if_real}{$snort_uuid}.pid")) { - - $i++; - exec("/usr/bin/logger -p daemon.info -i -t SnortStart 'Snort Start count...{$i}'"); - - $snort_pgrep_chk = snortRunningChk($type, $snort_uuid, $if_real); - - // stop if snort error is in syslogd - $snort_error_chk = exec("/usr/bin/grep -e 'snort.*{$snort_pgrep_chk}.*FATAL.*ERROR.*' /var/log/system.log"); - if(!empty($snort_error_chk)) { - break; - } - - if (!empty($snort_pgrep_chk)){ - @exec("/bin/rm /tmp/snort_{$if_real}{$snort_uuid}.startlck"); - } - sleep(2); - } - }; - - // only start if iface is on or iface is not running - $snort_info_chk = $config['installedpackages']['snortglobal']['rule'][$id]['enable']; - $snortRunningChkPreStart = snortRunningChk($id, $snort_uuid, $if_real); - if ($snort_info_chk === 'on' && empty($snortRunningChkPreStart)) { - - // start snort cmd - exec("/usr/local/bin/snort -R \"{$snort_uuid}\" -D -q -l /var/log/snort/{$snort_uuid}_{$if_real} --pid-path /var/log/snort/run -G {$snort_uuid} -c /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/snort.conf -i {$if_real}"); - - // wait until snort starts - $snort_WaitForStart('snort'); - - }else{ - return; - } - - // define snortbarnyardlog_chk - $snortbarnyardlog_info_chk = $config['installedpackages']['snortglobal']['rule'][$id]['barnyard_enable']; - if ($snortbarnyardlog_info_chk == 'on') { - - // start barnyard2 cmd - exec("/usr/local/bin/barnyard2 -f \"snort.u2\" --pid-path /var/log/snort/run -c /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/barnyard2.conf -d /var/log/snort/{$snort_uuid}_{$if_real} -D -q"); - - // wait until snort starts - $snort_WaitForStart('barnyard2'); - - } - - /* Log Iface stop */ - exec("/usr/bin/logger -p daemon.info -i -t SnortStartup 'Interface Rule START for {$id}_{$snort_uuid}_{$if_real}...'"); -} - -function snort_get_friendly_interface($interface) { - - if (function_exists('convert_friendly_interface_to_friendly_descr')) - $iface = convert_friendly_interface_to_friendly_descr($interface); - else { - if (!$interface || ($interface == "wan")) - $iface = "WAN"; - else if(strtolower($interface) == "lan") - $iface = "LAN"; - else if(strtolower($interface) == "pppoe") - $iface = "PPPoE"; - else if(strtolower($interface) == "pptp") - $iface = "PPTP"; - else - $iface = strtoupper($interface); - } - - return $iface; -} - -/* get the real iface name of wan */ -function snort_get_real_interface($interface) { - global $config; - - $lc_interface = strtolower($interface); - if (function_exists('get_real_interface')) - return get_real_interface($lc_interface); - else { - if ($lc_interface == "lan") { - if ($config['inerfaces']['lan']) - return $config['interfaces']['lan']['if']; - return $interface; - } - if ($lc_interface == "wan") - return $config['interfaces']['wan']['if']; - $ifdescrs = array(); - for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) { - $ifname = "opt{$j}"; - if(strtolower($ifname) == $lc_interface) - return $config['interfaces'][$ifname]['if']; - if(isset($config['interfaces'][$ifname]['descr']) && (strtolower($config['interfaces'][$ifname]['descr']) == $lc_interface)) - return $config['interfaces'][$ifname]['if']; - } - } - - return $interface; -} - -/* - this code block is for deleteing logs while keeping the newest file, - snort is linked to these files while running, do not take the easy way out - by touch and rm, snort will lose sync and not log. - - this code needs to be watched. - */ - -/* list dir files */ -function snort_file_list($snort_log_dir, $snort_log_file) -{ - $dir = opendir ("$snort_log_dir"); - while (false !== ($file = readdir($dir))) { - if (strpos($file, "$snort_log_file",1) ) - $file_list[] = basename($file); - } - return $file_list; -} - -/* snort dir files */ -function snort_file_sort($snort_file1, $snort_file2) -{ - if ($snort_file1 == $snort_file2) - return 0; - - return ($snort_file1 < $snort_file2); // ? -1 : 1; // this flips the array -} - -/* build files newest first array */ -function snort_build_order($snort_list) -{ - foreach ($snort_list as $value_list) - $list_order[] = $value_list; - - return $list_order; -} - -/* keep the newest remove the rest */ -function snort_remove_files($snort_list_rm, $snort_file_safe) -{ - foreach ($snort_list_rm as $value_list) { - if ($value_list != $snort_file_safe) - @unlink("/var/log/snort/$value_list"); - else - file_put_contents("/var/log/snort/$snort_file_safe", ""); - } -} - -/* - * TODO: - * This is called by snort_alerts.php. - * - * This func needs to be made to only clear one interface rule log - * at a time. - * - */ -function post_delete_logs() -{ - global $config, $g; - - /* do not start config build if rules is empty */ - if (!is_array($config['installedpackages']['snortglobal']['rule'])) - return; - - $snort_log_dir = '/var/log/snort'; - - foreach ($config['installedpackages']['snortglobal']['rule'] as $value) { - $result_lan = $value['interface']; - $if_real = snort_get_real_interface($result_lan); - $snort_uuid = $value['uuid']; - - if ($if_real != '' && $snort_uuid != '') { - if ($value['snortunifiedlog'] == 'on') { - $snort_log_file_u2 = "snort.u2."; - $snort_list_u2 = snort_file_list($snort_log_dir, $snort_log_file_u2); - if (is_array($snort_list_u2)) { - usort($snort_list_u2, "snort_file_sort"); - $snort_u2_rm_list = snort_build_order($snort_list_u2); - snort_remove_files($snort_u2_rm_list, $snort_u2_rm_list[0]); - } - } else - exec("/bin/rm $snort_log_dir/{$snort_uuid}_{$if_real}/snort.u2*"); - - if ($value['tcpdumplog'] == 'on') { - $snort_log_file_tcpd = "snort.tcpdump."; - $snort_list_tcpd = snort_file_list($snort_log_dir, $snort_log_file_tcpd); - if (is_array($snort_list_tcpd)) { - usort($snort_list_tcpd, "snort_file_sort"); - $snort_tcpd_rm_list = snort_build_order($snort_list_tcpd); - snort_remove_files($snort_tcpd_rm_list, $snort_tcpd_rm_list[0]); - } - } else { - exec("/bin/rm $snort_log_dir/{$snort_uuid}_{$if_real}/snort.tcpdump*"); - - if ($value['perform_stat'] == 'on') - @file_put_contents("$snort_log_dirt/{$snort_uuid}_{$if_real}/snort.stats", ""); - } - } - } // end foreach -} - -function snort_postinstall() -{ - global $config, $g, $snort_pfsense_basever, $snort_arch; - - /* snort -> advanced features */ - if (is_array($config['installedpackages']['snortglobal'])) { - $bpfbufsize = $config['installedpackages']['snortglobal']['bpfbufsize']; - $bpfmaxbufsize = $config['installedpackages']['snortglobal']['bpfmaxbufsize']; - $bpfmaxinsns = $config['installedpackages']['snortglobal']['bpfmaxinsns']; - } - - /* cleanup default files */ - @rename('/usr/local/etc/snort/snort.conf-sample', '/usr/local/etc/snort/snort.conf'); - @rename('/usr/local/etc/snort/threshold.conf-sample', '/usr/local/etc/snort/threshold.conf'); - @rename('/usr/local/etc/snort/sid-msg.map-sample', '/usr/local/etc/snort/sid-msg.map'); - @rename('/usr/local/etc/snort/unicode.map-sample', '/usr/local/etc/snort/unicode.map'); - @rename('/usr/local/etc/snort/classification.config-sample', '/usr/local/etc/snort/classification.config'); - @rename('/usr/local/etc/snort/generators-sample', '/usr/local/etc/snort/generators'); - @rename('/usr/local/etc/snort/reference.config-sample', '/usr/local/etc/snort/reference.config'); - @rename('/usr/local/etc/snort/gen-msg.map-sample', '/usr/local/etc/snort/gen-msg.map'); - @unlink('/usr/local/etc/snort/sid'); - @unlink('/usr/local/etc/rc.d/snort'); - @unlink('/usr/local/etc/rc.d/bardyard2'); - - /* remove example files */ - if (file_exists('/usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so.0')) - exec('/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example*'); - - if (file_exists('/usr/local/lib/snort/dynamicpreprocessor/lib_sfdynamic_preprocessor_example.so')) - exec('/bin/rm /usr/local/lib/snort/dynamicpreprocessor/lib_sfdynamic_preprocessor_example*'); - - /* create a few directories and ensure the sample files are in place */ - if (!is_dir('/usr/local/etc/snort')) - exec('/bin/mkdir -p /usr/local/etc/snort/custom_rules'); - if (!is_dir('/usr/local/etc/snort/whitelist')) - exec('/bin/mkdir -p /usr/local/etc/snort/whitelist/'); - /* NOTE: the diff between the if check and the exec() extra run is by design */ - if (!is_dir('/var/log/snort')) - exec('/bin/mkdir -p /var/log/snort/run'); - else - exec('/bin/rm -r /var/log/snort/*; /bin/mkdir -p /var/log/snort/run'); - - if (!is_dir('/var/log/snort/barnyard2')) - exec('/bin/mkdir -p /var/log/snort/barnyard2'); - if (!is_dir('/usr/local/lib/snort/dynamicrules/')) - exec('/bin/mkdir -p /usr/local/lib/snort/dynamicrules/'); - if (!file_exists('/var/db/whitelist')) - touch('/var/db/whitelist'); - - /* XXX: These are needed if you run snort as snort user - mwexec('/usr/sbin/chown -R snort:snort /var/log/snort', true); - mwexec('/usr/sbin/chown -R snort:snort /usr/local/etc/snort', true); - mwexec('/usr/sbin/chown -R snort:snort /usr/local/lib/snort', true); - mwexec('/usr/sbin/chown snort:snort /tmp/snort*', true); - mwexec('/usr/sbin/chown snort:snort /var/db/whitelist', true); - */ - /* important */ - mwexec('/bin/chmod 660 /var/db/whitelist', true); - mwexec('/bin/chmod -R 660 /usr/local/etc/snort/*', true); - mwexec('/bin/chmod -R 660 /tmp/snort*', true); - mwexec('/bin/chmod -R 660 /var/run/snort*', true); - mwexec('/bin/chmod -R 660 /var/snort/run/*', true); - mwexec('/bin/chmod 770 /usr/local/lib/snort', true); - mwexec('/bin/chmod 770 /usr/local/etc/snort', true); - mwexec('/bin/chmod 770 /usr/local/etc/whitelist', true); - mwexec('/bin/chmod 770 /var/log/snort', true); - mwexec('/bin/chmod 770 /var/log/snort/run', true); - mwexec('/bin/chmod 770 /var/log/snort/barnyard2', true); - - /* move files around, make it look clean */ - mwexec('/bin/mkdir -p /usr/local/www/snort/css'); - mwexec('/bin/mkdir -p /usr/local/www/snort/images'); - - chdir ("/usr/local/www/snort/css/"); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/css/style.css'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/css/sexybuttons.css'); - chdir("/usr/local/www/snort/images/"); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/alert.jpg'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/down.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/down2.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon-table-sort.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon-table-sort-asc.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon-table-sort-desc.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/up.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/up2.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/logo.jpg'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon_excli.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/arrow_down.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/awesome-overlay-sprite.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/logo22.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/page_white_text.png'); - - /* remake saved settings */ - if ($config['installedpackages']['snortglobal']['forcekeepsettings'] == 'on') { - update_status(gettext("Saved settings detected...")); - update_output_window(gettext("Please wait... rebuilding files...")); - sync_snort_package_config(); - update_output_window(gettext("Finnished Rebuilding files...")); - } -} - -function snort_Getdirsize($node) { - if(!is_readable($node)) - return false; - - $blah = exec( "/usr/bin/du -kd $node" ); - return substr( $blah, 0, strpos($blah, 9) ); -} - -/* func for log dir size limit cron */ -function snort_snortloglimit_install_cron($should_install) { - global $config, $g; - - if (!is_array($config['cron']['item'])) - $config['cron']['item'] = array(); - - $x=0; - $is_installed = false; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], '/usr/local/pkg/snort/snort_check_cron_misc.inc')) { - $is_installed = true; - break; - } - $x++; - } - - switch($should_install) { - case true: - if(!$is_installed) { - - $cron_item = array(); - $cron_item['minute'] = "*/5"; - $cron_item['hour'] = "*"; - $cron_item['mday'] = "*"; - $cron_item['month'] = "*"; - $cron_item['wday'] = "*"; - $cron_item['who'] = "root"; - $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/snort/snort_check_cron_misc.inc"; - $config['cron']['item'][] = $cron_item; - } - break; - case false: - if($is_installed == true) - unset($config['cron']['item'][$x]); - break; - } -} - -/* func for updating cron */ -function snort_rm_blocked_install_cron($should_install) { - global $config, $g; - - if (!is_array($config['cron']['item'])) - $config['cron']['item'] = array(); - - $x=0; - $is_installed = false; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], "snort2c")) { - $is_installed = true; - break; - } - $x++; - } - - $snort_rm_blocked_info_ck = $config['installedpackages']['snortglobal']['rm_blocked']; - if ($snort_rm_blocked_info_ck == "1h_b") { - $snort_rm_blocked_min = "*/5"; - $snort_rm_blocked_hr = "*"; - $snort_rm_blocked_mday = "*"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "3600"; - } - if ($snort_rm_blocked_info_ck == "3h_b") { - $snort_rm_blocked_min = "*/15"; - $snort_rm_blocked_hr = "*"; - $snort_rm_blocked_mday = "*"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "10800"; - } - if ($snort_rm_blocked_info_ck == "6h_b") { - $snort_rm_blocked_min = "*/30"; - $snort_rm_blocked_hr = "*"; - $snort_rm_blocked_mday = "*"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "21600"; - } - if ($snort_rm_blocked_info_ck == "12h_b") { - $snort_rm_blocked_min = "2"; - $snort_rm_blocked_hr = "*/1"; - $snort_rm_blocked_mday = "*"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "43200"; - } - if ($snort_rm_blocked_info_ck == "1d_b") { - $snort_rm_blocked_min = "2"; - $snort_rm_blocked_hr = "*/2"; - $snort_rm_blocked_mday = "*"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "86400"; - } - if ($snort_rm_blocked_info_ck == "4d_b") { - $snort_rm_blocked_min = "2"; - $snort_rm_blocked_hr = "*/8"; - $snort_rm_blocked_mday = "*"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "345600"; - } - if ($snort_rm_blocked_info_ck == "7d_b") { - $snort_rm_blocked_min = "2"; - $snort_rm_blocked_hr = "*/14"; - $snort_rm_blocked_mday = "*"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "604800"; - } - if ($snort_rm_blocked_info_ck == "28d_b") { - $snort_rm_blocked_min = "2"; - $snort_rm_blocked_hr = "0"; - $snort_rm_blocked_mday = "*/2"; - $snort_rm_blocked_month = "*"; - $snort_rm_blocked_wday = "*"; - $snort_rm_blocked_expire = "2419200"; - } - switch($should_install) { - case true: - if(!$is_installed) { - $cron_item = array(); - $cron_item['minute'] = "$snort_rm_blocked_min"; - $cron_item['hour'] = "$snort_rm_blocked_hr"; - $cron_item['mday'] = "$snort_rm_blocked_mday"; - $cron_item['month'] = "$snort_rm_blocked_month"; - $cron_item['wday'] = "$snort_rm_blocked_wday"; - $cron_item['who'] = "root"; - $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/sbin/expiretable -t $snort_rm_blocked_expire snort2c"; - $config['cron']['item'][] = $cron_item; - } - break; - case false: - if ($is_installed == true) - unset($config['cron']['item'][$x]); - break; - } -} - -/* func to install snort update */ -function snort_rules_up_install_cron($should_install) { - global $config, $g; - - if(!$config['cron']['item']) - $config['cron']['item'] = array(); - - $x=0; - $is_installed = false; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], "snort_check_for_rule_updates.php")) { - $is_installed = true; - break; - } - $x++; - } - $snort_rules_up_info_ck = $config['installedpackages']['snortglobal']['autorulesupdate7']; - if ($snort_rules_up_info_ck == "6h_up") { - $snort_rules_up_min = "3"; - $snort_rules_up_hr = "*/6"; - $snort_rules_up_mday = "*"; - $snort_rules_up_month = "*"; - $snort_rules_up_wday = "*"; - } - if ($snort_rules_up_info_ck == "12h_up") { - $snort_rules_up_min = "3"; - $snort_rules_up_hr = "*/12"; - $snort_rules_up_mday = "*"; - $snort_rules_up_month = "*"; - $snort_rules_up_wday = "*"; - } - if ($snort_rules_up_info_ck == "1d_up") { - $snort_rules_up_min = "3"; - $snort_rules_up_hr = "0"; - $snort_rules_up_mday = "*/1"; - $snort_rules_up_month = "*"; - $snort_rules_up_wday = "*"; - } - if ($snort_rules_up_info_ck == "4d_up") { - $snort_rules_up_min = "3"; - $snort_rules_up_hr = "0"; - $snort_rules_up_mday = "*/4"; - $snort_rules_up_month = "*"; - $snort_rules_up_wday = "*"; - } - if ($snort_rules_up_info_ck == "7d_up") { - $snort_rules_up_min = "3"; - $snort_rules_up_hr = "0"; - $snort_rules_up_mday = "*/7"; - $snort_rules_up_month = "*"; - $snort_rules_up_wday = "*"; - } - if ($snort_rules_up_info_ck == "28d_up") { - $snort_rules_up_min = "3"; - $snort_rules_up_hr = "0"; - $snort_rules_up_mday = "*/28"; - $snort_rules_up_month = "*"; - $snort_rules_up_wday = "*"; - } - switch($should_install) { - case true: - if(!$is_installed) { - $cron_item = array(); - $cron_item['minute'] = "$snort_rules_up_min"; - $cron_item['hour'] = "$snort_rules_up_hr"; - $cron_item['mday'] = "$snort_rules_up_mday"; - $cron_item['month'] = "$snort_rules_up_month"; - $cron_item['wday'] = "$snort_rules_up_wday"; - $cron_item['who'] = "root"; - $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/snort/snort_check_for_rule_updates.php >> /tmp/snort_update.log"; - $config['cron']['item'][] = $cron_item; - } - break; - case false: - if($is_installed == true) - unset($config['cron']['item'][$x]); - break; - } -} - -/* Only run when all ifaces needed to sync. Expects filesystem rw */ -function sync_snort_package_config() -{ - global $config, $g; - - /* RedDevil suggested code */ - /* TODO: more testing needs to be done */ - /* may cause voip to fail */ - //exec("/sbin/sysctl net.bpf.bufsize=8388608"); - //exec("/sbin/sysctl net.bpf.maxbufsize=4194304"); - //exec("/sbin/sysctl net.bpf.maxinsns=512"); - //exec("/sbin/sysctl net.inet.tcp.rfc1323=1"); - - conf_mount_rw(); - - /* do not start config build if rules is empty */ - if (!is_array($config['installedpackages']['snortglobal']['rule'])) { - exec('/bin/rm /usr/local/etc/rc.d/snort.sh'); - conf_mount_ro(); - return; - } - - foreach ($config['installedpackages']['snortglobal']['rule'] as $id => $value) { - $if_real = snort_get_real_interface($value['interface']); - $snort_uuid = $value['uuid']; - - if ($if_real != '' && $snort_uuid != '') { - - // only build whitelist when needed - if ($value['blockoffenders7'] === 'on') { - create_snort_whitelist($id, $if_real); - } - - // only build threshold when needed - if ($value['suppresslistname'] !== 'default'){ - create_snort_suppress($id, $if_real); - } - - // create snort configuration file - create_snort_conf($id, $if_real, $snort_uuid); - - // if rules exist cp rules to each iface - create_rules_iface($id, $if_real, $snort_uuid); - - // create barnyard2 configuration file - if ($value['barnyard_enable'] == 'on') { - create_barnyard2_conf($id, $if_real, $snort_uuid); - } - } - } - - /* create snort bootup file snort.sh only create once */ - create_snort_sh(); - - /* all new files are for the user snort nologin */ - if (!is_dir("/var/log/snort/{$snort_uuid}_{$if_real}")) - exec("/bin/mkdir -p /var/log/snort/{$snort_uuid}_{$if_real}"); - - if (!is_dir('/var/log/snort/run')) - exec('/bin/mkdir -p /var/log/snort/run'); - - if (!is_dir("/var/log/snort/barnyard2/{$snort_uuid}_{$if_real}")) - exec("/bin/mkdir -p /var/log/snort/barnyard2/{$snort_uuid}_{$if_real}"); - - /* XXX: These are needed if snort is run as snort user - mwexec('/usr/sbin/chown -R snort:snort /var/log/snort', true); - mwexec('/usr/sbin/chown -R snort:snort /usr/local/etc/snort', true); - mwexec('/usr/sbin/chown -R snort:snort /usr/local/lib/snort', true); - mwexec('/usr/sbin/chown snort:snort /tmp/snort*', true); - mwexec('/usr/sbin/chown snort:snort /var/db/whitelist', true); - */ - - /* important */ - mwexec('/bin/chmod 770 /var/db/whitelist', true); - mwexec('/bin/chmod 770 /var/run/snort*', true); - mwexec('/bin/chmod 770 /tmp/snort*', true); - mwexec('/bin/chmod -R 770 /var/log/snort', true); - mwexec('/bin/chmod -R 770 /usr/local/lib/snort', true); - mwexec('/bin/chmod -R 770 /usr/local/etc/snort/', true); - - conf_mount_ro(); -} - -/* Start of main config files */ - -/* create threshold file */ -function create_snort_suppress($id, $if_real) { - global $config, $g; - - /* make sure dir is there */ - if (!is_dir('/usr/local/etc/snort/suppress')) - exec('/bin/mkdir -p /usr/local/etc/snort/suppress'); - - if (!is_array($config['installedpackages']['snortglobal']['rule'])) - return; - - if ($config['installedpackages']['snortglobal']['rule'][$id]['suppresslistname'] != 'default') { - $whitelist_key_s = find_suppress_key($config['installedpackages']['snortglobal']['rule'][$id]['suppresslistname']); - - /* file name */ - $suppress_file_name = $config['installedpackages']['snortglobal']['suppress']['item'][$whitelist_key_s]['name']; - - /* Message */ - $s_data = '# This file is auto generated by the snort package. Please do not edit this file by hand.' . "\n\n"; - - /* user added arguments */ - $s_data .= str_replace("\r", "", base64_decode($config['installedpackages']['snortglobal']['suppress']['item'][$whitelist_key_s]['suppresspassthru'])); - - /* open snort's whitelist for writing */ - @file_put_contents("/usr/local/etc/snort/suppress/$suppress_file_name", $s_data); - } -} - -function create_snort_whitelist($id, $if_real) { - global $config, $g; - - /* make sure dir is there */ - if (!is_dir('/usr/local/etc/snort/whitelist')) - exec('/bin/mkdir -p /usr/local/etc/snort/whitelist'); - - if ($config['installedpackages']['snortglobal']['rule'][$id]['whitelistname'] == 'default') { - - $w_data = build_base_whitelist('whitelist', 'yes', 'yes', 'yes', 'yes', 'yes', 'no'); - - /* open snort's whitelist for writing */ - @file_put_contents("/usr/local/etc/snort/whitelist/defaultwlist", $w_data); - - } else if (!empty($config['installedpackages']['snortglobal']['rule'][$id]['whitelistname'])) { - $whitelist_key_w = find_whitelist_key($config['installedpackages']['snortglobal']['rule'][$id]['whitelistname']); - - if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item'])) { - return; - } - - $whitelist = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_w]; - $w_data = build_base_whitelist($whitelist['snortlisttype'], $whitelist['wanips'], $whitelist['wangateips'], $whitelist['wandnsips'], $whitelist['vips'], $whitelist['vpnips'], $whitelist_key_w); - - // convert spaces to carriage returns - $w_data = str_replace(',', "\n", $w_data); - $w_data = str_replace(',,', "\n", $w_data); - - /* open snort's whitelist for writing */ - @file_put_contents("/usr/local/etc/snort/whitelist/" . $config['installedpackages']['snortglobal']['rule'][$id]['whitelistname'], $w_data); - } -} - -function create_snort_homenet($id, $if_real) { - global $config, $g; - - if ($config['installedpackages']['snortglobal']['rule'][$id]['homelistname'] == 'default' || $config['installedpackages']['snortglobal']['rule'][$id]['homelistname'] == '') - return build_base_whitelist('netlist', 'yes', 'yes', 'yes', 'yes', 'yes', 'no'); - else if (!empty($config['installedpackages']['snortglobal']['rule'][$id]['homelistname'])) { - $whitelist_key_h = find_whitelist_key($config['installedpackages']['snortglobal']['rule'][$id]['homelistname']); - - if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item'])) - return; - - $build_netlist_h = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_h]['snortlisttype']; - $wanip_h = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_h]['wanips']; - $wangw_h = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_h]['wangateips']; - $wandns_h = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_h]['wandnsips']; - $vips_h = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_h]['vips']; - $vpns_h = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_h]['vpnips']; - - return build_base_whitelist($build_netlist_h, $wanip_h, $wangw_h, $wandns_h, $vips_h, $vpns_h, $whitelist_key_h); - } -} - -function create_snort_externalnet($id, $if_real) { - global $config, $g; - - if (!empty($config['installedpackages']['snortglobal']['rule'][$id]['externallistname'])) { - $whitelist_key_ex = find_whitelist_key($config['installedpackages']['snortglobal']['rule'][$id]['externallistname']); - - if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item'])) - return; - - $build_netlist_ex = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_ex]['snortlisttype']; - $wanip_ex = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_ex]['wanips']; - $wangw_ex = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_ex]['wangateips']; - $wandns_ex = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_ex]['wandnsips']; - $vips_ex = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_ex]['vips']; - $vpns_ex = $config['installedpackages']['snortglobal']['whitelist']['item'][$whitelist_key_ex]['vpnips']; - - return build_base_whitelist($build_netlist_ex, $wanip_ex, $wangw_ex, $wandns_ex, $vips_ex, $vpns_ex, $whitelist_key_ex); - } -} - -// open snort.sh for writing -function create_snort_sh() -{ - global $config, $g; - - $snortconf =& $config['installedpackages']['snortglobal']['rule']; - - // do not start config build if rules is empty - if (!is_array($snortconf) || empty($snortconf)) { - return; - } - - $i = 0; - foreach ($snortconf as $value) { - $snort_uuid = $value['uuid']; - $result_lan = $value['interface']; - $if_real = snort_get_real_interface($result_lan); - - $snortstart_list .= "{$snort_uuid}_{$if_real}_{$i}" . ','; - - $i++; - - } // end foreach - - // remove , if its the last char - if($snortstart_list[strlen($snortstart_list)-1] === ',') { - $snortstart_list = substr_replace($snortstart_list, '', -1); - } - - -$snort_sh_text = << /tmp/snort.sh.pid - - -/usr/local/bin/php -f /usr/local/pkg/snort/snort_startstop.php snortstart={$snortstart_list} & - - -/bin/rm /tmp/snort.sh.pid - -} - -rc_stop() { - -if [ -f /tmp/snort.sh.pid ]; then - exit; -fi - -/bin/echo "snort.sh run" > /tmp/snort.sh.pid - - -/usr/local/bin/php -f /usr/local/pkg/snort/snort_startstop.php snortstop={$snortstart_list} & - - -/bin/rm /tmp/snort.sh.pid - -} - -case $1 in - start) - rc_start - ;; - stop) - rc_stop - ;; - restart) - rc_start - ;; -esac - -EOD; - - // write out snort.sh - $bconf = fopen("/usr/local/etc/rc.d/snort.sh", "w"); - if(!$bconf) { - log_error("Could not open /usr/local/etc/rc.d/snort.sh for writing."); - return; - } - fwrite($bconf, $snort_sh_text); - fclose($bconf); - @chmod("/usr/local/etc/rc.d/snort.sh", 0755); -} - -/* if rules exist copy to new interfaces */ -function create_rules_iface($id, $if_real, $snort_uuid) -{ - global $config, $g; - - $if_rule_dir = "/usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}"; - $folder_chk = (count(glob("{$if_rule_dir}/rules/*")) === 0) ? 'empty' : 'full'; - - if ($folder_chk == "empty") { - if (!is_dir("/usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/rules")) - exec("/bin/mkdir -p /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/rules"); - exec("/bin/cp /usr/local/etc/snort/rules/* {$if_rule_dir}/rules"); - if (file_exists("/usr/local/etc/snort/custom_rules/local_{$snort_uuid}_{$if_real}.rules")) - exec("/bin/cp /usr/local/etc/snort/custom_rules/local_{$snort_uuid}_{$if_real}.rules {$if_rule_dir}/local_{$snort_uuid}_{$if_real}.rules"); - } -} - -/* open barnyard2.conf for writing */ -function create_barnyard2_conf($id, $if_real, $snort_uuid) { - global $config, $g; - - if (!file_exists("/usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/barnyard2.conf")) - exec("/usr/bin/touch /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/barnyard2.conf"); - - if (!file_exists("/var/log/snort/{$snort_uuid}_{$if_real}/barnyard2.waldo")) { - mwexec("/usr/bin/touch /var/log/snort/{$snort_uuid}_{$if_real}/barnyard2.waldo", true); - /* XXX: This is needed if snort is run as snort user */ - //mwexec("/usr/sbin/chown snort:snort /var/log/snort/barnyard2/{$snort_uuid}_{$if_real}.waldo", true); - mwexec("/bin/chmod 770 /var/log/snort/{$snort_uuid}_{$if_real}/barnyard2.waldo", true); - } - - $barnyard2_conf_text = generate_barnyard2_conf($id, $if_real, $snort_uuid); - - /* write out barnyard2_conf */ - $bconf = fopen("/usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/barnyard2.conf", "w"); - if(!$bconf) { - log_error("Could not open /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/barnyard2.conf for writing."); - return; - } - fwrite($bconf, $barnyard2_conf_text); - fclose($bconf); -} - -/* open barnyard2.conf for writing" */ -function generate_barnyard2_conf($id, $if_real, $snort_uuid) { - global $config, $g; - - /* define snortbarnyardlog */ - /* TODO: add support for the other 5 output plugins */ - - $snortbarnyardlog_database_info_chk = $config['installedpackages']['snortglobal']['rule'][$id]['barnyard_mysql']; - $snortbarnyardlog_hostname_info_chk = exec("/bin/hostname"); - /* user add arguments */ - $snortbarnyardlog_config_pass_thru = str_replace("\r", "", base64_decode($config['installedpackages']['snortglobal']['rule'][$id]['barnconfigpassthru'])); - - $barnyard2_conf_text = << \ - cmd_validity EPSV < [ { char 12 | char A char L char L } ] > \ - cmd_validity MACB < string > \ - cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string > \ - cmd_validity MODE < char ASBCZ > \ - cmd_validity PORT < host_port > \ - cmd_validity PROT < char CSEP > \ - cmd_validity STRU < char FRPO [ string ] > \ - cmd_validity TYPE < { char AE [ char NTC ] | char I | char L [ number ] } > - -preprocessor ftp_telnet_protocol: ftp client default \ - max_resp_len 256 \ - bounce yes \ - telnet_cmds yes - -EOD; - - $def_ftp_preprocessor_info_chk = $snortcfg['ftp_preprocessor']; - if ($def_ftp_preprocessor_info_chk == "on") - $def_ftp_preprocessor_type = "$snort_ftp_preprocessor"; - else - $def_ftp_preprocessor_type = ""; - - /* def smtp_preprocessor */ - $snort_smtp_preprocessor = << -# config daq_dir: -# config daq_mode: -# config daq_var: -# -# ::= pcap | afpacket | dump | nfq | ipq | ipfw -# ::= read-file | passive | inline -# ::= arbitrary = ::= path as to where to look for DAQ module so's - -## gui needed for pfsense ## -# config daq: afpacket - -############################################################# - -######################################## -# Configure specific UID and GID -# to run snort as after dropping privs -# -# config set_gid: -# config set_uid: -######################################## - -######################################## -# -# Configure default snaplen. Snort -# defaults to MTU of in use interface -# -# config snaplen: -# -# TODO: gui needed for pfsense -# -######################################## - -################################################################ -# -# Configure default bpf_file to use for filtering what traffic -# reaches snort. options (-F) -# -# config bpf_file: -# -# TODO: gui needed for pfsense -# -############################################################### - -##################################################################### -# -# Configure default log directory for snort to log to. options (-l) -# -# config logdir: -# -##################################################################### - -################################### - # -# Configure the detection engine # -# Use lower memory models # - # -################################### - -# TODO: gui needed for pfsense -# Configure PCRE match limitations -config pcre_match_limit: 3500 -config pcre_match_limit_recursion: 1500 - -############################################################################# -# # -# Configure the detection engine # -# Use lower memory models for pfsense # -# # -# # -# Notes # -# # -# ac, ac-q, ac-bnfa, ac-bnfa-q, lowmem, lowmem-q # -# ac-split shorthand for search-method ac, split-any-any, intel-cpm,ac-nq, # -# ac-bnfa-nq This is the default search method if none is specified. # -# lowmem-nq, ac-std, acs, ac-banded, ac-sparsebands # -# # -############################################################################# - -config detection: search-method {$snort_performance} search-optimize max-pattern-len 20 -config event_queue: max_queue 8 log 3 order_events content_length - -################################################### -# Configure GTP if it is to be used -#################################################### - -# TODO: gui needed for pfsense -# config enable_gtp - -################################################### -# Per packet and rule latency enforcement, README.ppm -################################################### - -# Per Packet latency configuration -#config ppm: max-pkt-time 250, \ -# fastpath-expensive-packets, \ -# pkt-log - -# Per Rule latency configuration -#config ppm: max-rule-time 200, \ -# threshold 3, \ -# suspend-expensive-rules, \ -# suspend-timeout 20, \ -# rule-log alert - -################################################### -# Configure Perf Profiling for debugging, README.PerfProfiling -################################################### - -#config profile_rules: print all, sort avg_ticks -#config profile_preprocs: print all, sort avg_ticks - -################################################### -# Configure protocol aware flushing. README.stream5 -################################################### -config paf_max: 16000 - -################################################## -# Configure dynamic loaded libraries -################################################## - -dynamicpreprocessor directory /usr/local/lib/snort/dynamicpreprocessor -dynamicengine /usr/local/lib/snort/dynamicengine/libsf_engine.so -dynamicdetection directory /usr/local/lib/snort/dynamicrules - -################### - # -# Flow and stream # - # -################### - -# TODO: gui needed for pfsense -# GTP Control Channle Preprocessor, README.GTP -# preprocessor gtp: ports { 2123 3386 2152 } - -#################################################### -# Inline packet normalization, README.normalize -# Does nothing in IDS mode -# -# preprocessor normalize_ip4 -# preprocessor normalize_tcp: ips ecn stream -# preprocessor normalize_icmp4 -# preprocessor normalize_ip6 -# preprocessor normalize_icmp6 -#################################################### - -# this tuning ,may need testing -preprocessor frag3_global: max_frags 65536 -preprocessor frag3_engine: policy bsd detect_anomalies - -preprocessor stream5_global: track_tcp yes, track_udp yes, track_icmp yes, max_tcp 262144, max_udp 131072, max_active_responses 2, min_response_seconds 5 - -preprocessor stream5_tcp: policy BSD, ports both all, timeout 180, {$def_max_queued_bytes_type}{$def_max_queued_segs_type} -preprocessor stream5_udp: timeout 180 -preprocessor stream5_icmp: - - {$def_perform_stat_type} - - {$def_http_inspect_type} - - {$def_other_preprocs_type} - - {$def_ftp_preprocessor_type} - - {$def_smtp_preprocessor_type} - - {$def_sf_portscan_type} - -######################## - # -# ARP spoof detection. # - # -######################## - -# preprocessor arpspoof -# preprocessor arpspoof_detect_host: 192.168.40.1 f0:0f:00:f0:0f:00 - -########################## - # -# SSH anomaly detection # - # -########################## - -preprocessor ssh: server_ports { 22 } \ - autodetect \ - max_client_bytes 19600 \ - max_encrypted_packets 20 \ - max_server_version_len 100 \ - enable_respoverflow enable_ssh1crc32 \ - enable_srvoverflow enable_protomismatch - - - {$def_dce_rpc_2_type} - - {$def_dns_preprocessor_type} - -############################## - # -# NEW # -# Ignore SSL and Encryption # - # -############################## - -preprocessor ssl: ports { {$def_ssl_ports_ignore_type} }, trustservers, noinspect_encrypted - - -########################################################### - # -# SDF sensitive data preprocessor, README.sensitive_data # - # -########################################################### - -# TODO: add pfsense GUI -preprocessor sensitive_data: alert_threshold 20 - -############################################################# - # -# SIP Session Initiation Protocol preprocessor, README.sip # - # -############################################################# - -# TODO: add pfsense GUI -preprocessor sip: max_sessions 40000, \ - ports { 5060 5061 5600 }, \ - methods { invite \ - cancel \ - ack \ - bye \ - register \ - options \ - refer \ - subscribe \ - update \ - join \ - info \ - message \ - notify \ - benotify \ - do \ - qauth \ - sprack \ - publish \ - service \ - unsubscribe \ - prack }, \ - max_uri_len 512, \ - max_call_id_len 80, \ - max_requestName_len 20, \ - max_from_len 256, \ - max_to_len 256, \ - max_via_len 1024, \ - max_contact_len 512, \ - max_content_len 2048 - -################################## - # -# IMAP preprocessor, README.imap # - # -################################## - -# TODO: add pfsense GUI -preprocessor imap: \ - ports { 143 } \ - b64_decode_depth 0 \ - qp_decode_depth 0 \ - bitenc_decode_depth 0 \ - uu_decode_depth 0 - -################################## - # -# POP preprocessor, README.pop # - # -################################## - -# TODO: add pfsense GUI -preprocessor pop: \ - ports { 110 } \ - b64_decode_depth 0 \ - qp_decode_depth 0 \ - bitenc_decode_depth 0 \ - uu_decode_depth 0 - -####################################### - # -# Modbus preprocessor, README.modbus # -# Used for SCADA # - # -####################################### - -# TODO: add pfsense GUI -preprocessor modbus: ports { 502 } - - -############################################### - # -# DNP3 preprocessor, EADME.dnp3 # - # -############################################### - -# TODO: add pfsense GUI -preprocessor dnp3: ports { 20000 } \ - memcap 262144 \ - check_crc - -############################################### - # -# Reputation preprocessor, README.reputation # - # -############################################### - -#preprocessor reputation: \ -# memcap 500, \ -# priority whitelist, \ -# nested_ip inner, \ -# whitelist \$WHITE_LIST_PATH/white_list.rules, \ -# blacklist \$BLACK_LIST_PATH/black_list.rules - - -##################### - # -# Snort Output Logs # - # -##################### - -$snortalertlogtype_type -$alertsystemlog_type -$tcpdumplog_type -$snortunifiedlogbasic_type -$snortunifiedlog_type -$snortalertcvs_type -$spoink_type - -################# - # -# Misc Includes # - # -################# - -include /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/reference.config -include /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}/classification.config -$threshold_file_name - -# Snort user pass through configuration -{$snort_config_pass_thru} - -################### - # -# Rules Selection # - # -################### - - -{$selected_rules_sections} - - -EOD; - - return $snort_conf_text; -} - -/* hide progress bar */ -function hide_progress_bar_status() { - global $snort_filename, $snort_filename_md5, $console_mode; - - ob_flush(); - if(!$console_mode) - echo "\n"; -} - -/* unhide progress bar */ -function unhide_progress_bar_status() { - global $snort_filename, $snort_filename_md5, $console_mode; - - ob_flush(); - if(!$console_mode) - echo "\n"; -} - -/* update both top and bottom text box during an operation */ -function update_all_status($status) { - global $snort_filename, $snort_filename_md5, $console_mode; - - ob_flush(); - if(!$console_mode) { - update_status($status); - update_output_window($status); - } -} - -######## new - -// returns array that matches pattern, option to replace objects in matches -function snortScanDirFilter($arrayList, $pattmatch, $pattreplace, $pattreplacewith) -{ - foreach ( $arrayList as $val ) - { - if (preg_match($pattmatch, $val, $matches)) { - if ($pattreplace != '') { - $matches2 = preg_replace($pattreplace, $pattreplacewith, $matches[0]); - $filterDirList[] = $matches2; - }else{ - $filterDirList[] = $matches[0]; - } - } - } - return $filterDirList; -} - -?> diff --git a/config/snort-dev/snort.xml b/config/snort-dev/snort.xml deleted file mode 100644 index 8f64a5e3..00000000 --- a/config/snort-dev/snort.xml +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - . - 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. - */ -/* ========================================================================== */ - ]]> - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - Snort - 2.9.2.3 - Services:2.9.2.3 pkg v. 2.2 - /usr/local/pkg/snort/snort.inc - - Snort - Setup snort specific settings -
    Services
    - /snort/snort_interfaces.php -
    - - snort - snort.sh - snort - Snort IDS/IPS Daemon - - - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_gui.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_check_cron_misc.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_startstop.php - - - /usr/local/bin/ - 077 - http://www.pfsense.com/packages/config/snort-dev/bin/oinkmaster_contrib/create-sidmap.pl - - - /usr/local/bin/ - 077 - http://www.pfsense.com/packages/config/snort-dev/bin/oinkmaster_contrib/oinkmaster.pl - - - /usr/local/bin/ - 077 - http://www.pfsense.com/packages/config/snort-dev/bin/oinkmaster_contrib/snort_rename.pl - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_alerts.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_barnyard.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_blocked.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_define_servers.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_download_rules.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_download_updates.php - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_check_for_rule_updates.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/help_and_info.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_edit.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_global.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_rules.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_rules_edit.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_rulesets.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_preprocessors.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_whitelist.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_whitelist_edit.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_suppress.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_suppress_edit.php - - - - - - - sync_snort_package_config(); - - - snort_postinstall(); - - - snort_deinstall(); - -
    diff --git a/config/snort-dev/snort_alerts.php b/config/snort-dev/snort_alerts.php deleted file mode 100644 index 3eafcf21..00000000 --- a/config/snort-dev/snort_alerts.php +++ /dev/null @@ -1,587 +0,0 @@ -. - Copyright (C) 2003-2004 Manuel Kasper . - Copyright (C) 2006 Scott Ullrich - All rights reserved. - - Modified for the Pfsense snort package v. 1.8+ - Copyright (C) 2009 Robert Zelaya Sr. Developer - - 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. - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -/* load only javascript that is needed */ -$snort_load_sortabletable = 'yes'; -$snort_load_mootools = 'yes'; - -$snortalertlogt = $config['installedpackages']['snortglobal']['snortalertlogtype']; - -if (!is_array($config['installedpackages']['snortglobal']['rule'])) - $config['installedpackages']['snortglobal']['rule'] = array(); -$a_instance = &$config['installedpackages']['snortglobal']['rule']; -$snort_uuid = $a_instance[0]['uuid']; -$if_real = snort_get_real_interface($a_instance[0]['interface']); - -if ($_POST['instance']) { - $snort_uuid = $a_instance[$_POST]['instance']['uuid']; - $if_real = snort_get_real_interface($a_instance[$_POST]['instance']['interface']); -} - - -if (is_array($config['installedpackages']['snortglobal']['alertsblocks'])) { - $pconfig['arefresh'] = $config['installedpackages']['snortglobal']['alertsblocks']['arefresh']; - $pconfig['alertnumber'] = $config['installedpackages']['snortglobal']['alertsblocks']['alertnumber']; - $anentries = $pconfig['alertnumber']; -} else { - $anentries = '250'; - $pconfig['alertnumber'] = '250'; - $pconfig['arefresh'] = 'off'; -} - -if ($_POST['save']) -{ - //unset($input_errors); - //$pconfig = $_POST; - - /* input validation */ - if ($_POST['save']) - { - - // if (($_POST['radiusacctport'] && !is_port($_POST['radiusacctport']))) { - // $input_errors[] = "A valid port number must be specified. [".$_POST['radiusacctport']."]"; - // } - - } - - /* no errors */ - if (!$input_errors) { - if (!is_array($config['installedpackages']['snortglobal']['alertsblocks'])) - $config['installedpackages']['snortglobal']['alertsblocks'] = array(); - $config['installedpackages']['snortglobal']['alertsblocks']['arefresh'] = $_POST['arefresh'] ? 'on' : 'off'; - $config['installedpackages']['snortglobal']['alertsblocks']['alertnumber'] = $_POST['alertnumber']; - - write_config(); - - header("Location: /snort/snort_alerts.php"); - exit; - } - -} - -if ($_GET['action'] == "clear" || $_POST['clear']) -{ - if (file_exists("/var/log/snort/{$snort_uuid}_{$if_real}/alert")) - { - conf_mount_rw(); - @file_put_contents("/var/log/snort/{$snort_uuid}_{$if_real}/alert", ""); - post_delete_logs(); - /* XXX: This is needed is snort is run as snort user */ - //mwexec('/usr/sbin/chown snort:snort /var/log/snort/*', true); - mwexec('/bin/chmod 660 /var/log/snort/*', true); - mwexec('/usr/bin/killall -HUP snort', true); - conf_mount_ro(); - } - header("Location: /snort/snort_alerts.php"); - exit; -} - -if ($_POST['download']) -{ - - $save_date = exec('/bin/date "+%Y-%m-%d-%H-%M-%S"'); - $file_name = "snort_logs_{$save_date}.tar.gz"; - exec("/usr/bin/tar cfz /tmp/{$file_name} /var/log/snort/{$snort_uuid}_{$if_real}"); - - if (file_exists("/tmp/{$file_name}")) { - $file = "/tmp/snort_logs_{$save_date}.tar.gz"; - header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n"); - header("Pragma: private"); // needed for IE - header("Cache-Control: private, must-revalidate"); // needed for IE - header('Content-type: application/force-download'); - header('Content-Transfer-Encoding: Binary'); - header("Content-length: ".filesize($file)); - header("Content-disposition: attachment; filename = {$file_name}"); - readfile("$file"); - exec("/bin/rm /tmp/{$file_name}"); - } - - header("Location: /snort/snort_alerts.php"); - exit; -} - - -/* WARNING: took me forever to figure reg expression, dont lose */ -// $fileline = '12/09-18:12:02.086733 [**] [122:6:0] (portscan) TCP Filtered Decoy Portscan [**] [Priority: 3] {PROTO:255} 125.135.214.166 -> 70.61.243.50'; -function get_snort_alert_date($fileline) -{ - /* date full date \d+\/\d+-\d+:\d+:\d+\.\d+\s */ - if (preg_match("/\d+\/\d+-\d+:\d+:\d\d/", $fileline, $matches1)) - $alert_date = "$matches1[0]"; - - return $alert_date; -} - -function get_snort_alert_disc($fileline) -{ - /* disc */ - if (preg_match("/\[\*\*\] (\[.*\]) (.*) (\[\*\*\])/", $fileline, $matches)) - $alert_disc = "$matches[2]"; - - return $alert_disc; -} - -function get_snort_alert_class($fileline) -{ - /* class */ - if (preg_match('/\[Classification:\s.+[^\d]\]/', $fileline, $matches2)) - $alert_class = "$matches2[0]"; - - return $alert_class; -} - -function get_snort_alert_priority($fileline) -{ - /* Priority */ - if (preg_match('/Priority:\s\d/', $fileline, $matches3)) - $alert_priority = "$matches3[0]"; - - return $alert_priority; -} - -function get_snort_alert_proto($fileline) -{ - /* Priority */ - if (preg_match('/\{.+\}/', $fileline, $matches3)) - $alert_proto = "$matches3[0]"; - - return $alert_proto; -} - -function get_snort_alert_proto_full($fileline) -{ - /* Protocal full */ - if (preg_match('/.+\sTTL/', $fileline, $matches2)) - $alert_proto_full = "$matches2[0]"; - - return $alert_proto_full; -} - -function get_snort_alert_ip_src($fileline) -{ - /* SRC IP */ - $re1='.*?'; # Non-greedy match on filler - $re2='((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?![\\d])'; # IPv4 IP Address 1 - - if ($c=preg_match_all ("/".$re1.$re2."/is", $fileline, $matches4)) - $alert_ip_src = $matches4[1][0]; - - return $alert_ip_src; -} - -function get_snort_alert_src_p($fileline) -{ - /* source port */ - if (preg_match('/:\d+\s-/', $fileline, $matches5)) - $alert_src_p = "$matches5[0]"; - - return $alert_src_p; -} - -function get_snort_alert_flow($fileline) -{ - /* source port */ - if (preg_match('/(->|<-)/', $fileline, $matches5)) - $alert_flow = "$matches5[0]"; - - return $alert_flow; -} - -function get_snort_alert_ip_dst($fileline) -{ - /* DST IP */ - $re1dp='.*?'; # Non-greedy match on filler - $re2dp='(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?![\\d])'; # Uninteresting: ipaddress - $re3dp='.*?'; # Non-greedy match on filler - $re4dp='((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?![\\d])'; # IPv4 IP Address 1 - - if ($c=preg_match_all ("/".$re1dp.$re2dp.$re3dp.$re4dp."/is", $fileline, $matches6)) - $alert_ip_dst = $matches6[1][0]; - - return $alert_ip_dst; -} - -function get_snort_alert_dst_p($fileline) -{ - /* dst port */ - if (preg_match('/:\d+$/', $fileline, $matches7)) - $alert_dst_p = "$matches7[0]"; - - return $alert_dst_p; -} - -function get_snort_alert_dst_p_full($fileline) -{ - /* dst port full */ - if (preg_match('/:\d+\n[A-Z]+\sTTL/', $fileline, $matches7)) - $alert_dst_p = "$matches7[0]"; - - return $alert_dst_p; -} - -function get_snort_alert_sid($fileline) -{ - /* SID */ - if (preg_match('/\[\d+:\d+:\d+\]/', $fileline, $matches8)) - $alert_sid = "$matches8[0]"; - - return $alert_sid; -} - -$pgtitle = "Services: Snort: Snort Alerts"; -include_once("head.inc"); - -?> - - - -\n"; -?> - -
    ' . $pgtitle . '

    ';}?> - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Last Alert Entries.Latest Alert Entries Are Listed First.
    Instance to inspect -

    Choose which instance alerts you want to inspect. -
    Save or Remove Logs - All - log files will be saved. - - Warning: all log files will be deleted. -
    Auto Refresh and Log View - - Refresh > - Default is ON. - - Enter the number of log entries to view. Default is 250. -
    -
    -
    - - -

    -
    -
    Filter:
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n"; - } - - // - - } - } - - ?> - -
    #PRIPROTODESCRIPTIONCLASSSRCSPORTFLOWDSTDPORTSIDDate
    {$counter}{$alert_priority}{$alert_proto}{$alert_disc}{$alert_class}{$alert_ip_src}{$alert_src_p}{$alert_flow}{$alert_ip_dst}{$alert_dst_p}{$alert_sid}{$alert_date}
    -
    - -
    - - - - diff --git a/config/snort-dev/snort_barnyard.php b/config/snort-dev/snort_barnyard.php deleted file mode 100644 index b647c007..00000000 --- a/config/snort-dev/snort_barnyard.php +++ /dev/null @@ -1,269 +0,0 @@ -. - Copyright (C) 2008-2009 Robert Zelaya. - 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. - */ - -/* - -TODO: Nov 12 09 -Clean this code up its ugly -Important add error checking - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -global $g; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (is_null($id)) { - header("Location: /snort/snort_interfaces.php"); - exit; -} - -if (!is_array($config['installedpackages']['snortglobal']['rule'])) - $config['installedpackages']['snortglobal']['rule'] = array(); -$a_nat = &$config['installedpackages']['snortglobal']['rule']; - -if (isset($_GET['dup'])) { - $id = $_GET['dup']; - $after = $_GET['dup']; -} - -$pconfig = array(); -if (isset($id) && $a_nat[$id]) { - /* old options */ - $pconfig = $a_nat[$id]; - $pconfig['barnyard_enable'] = $a_nat[$id]['barnyard_enable']; - $pconfig['barnyard_mysql'] = $a_nat[$id]['barnyard_mysql']; - $pconfig['barnconfigpassthru'] = base64_decode($a_nat[$id]['barnconfigpassthru']); -} - -if (isset($_GET['dup'])) - unset($id); - -$if_real = snort_get_real_interface($pconfig['interface']); -$snort_uuid = $pconfig['uuid']; - -/* alert file */ -$d_snortconfdirty_path = "/var/run/snort_conf_{$snort_uuid}_{$if_real}.dirty"; - -if ($_POST) { - - /* XXX: Mising error reporting?! - * check for overlaps - foreach ($a_nat as $natent) { - if (isset($id) && ($a_nat[$id]) && ($a_nat[$id] === $natent)) - continue; - if ($natent['interface'] != $_POST['interface']) - continue; - } - */ - - /* if no errors write to conf */ - if (!$input_errors) { - $natent = array(); - /* repost the options already in conf */ - $natent = $pconfig; - - $natent['barnyard_enable'] = $_POST['barnyard_enable'] ? 'on' : 'off'; - $natent['barnyard_mysql'] = $_POST['barnyard_mysql'] ? $_POST['barnyard_mysql'] : $pconfig['barnyard_mysql']; - $natent['barnconfigpassthru'] = $_POST['barnconfigpassthru'] ? base64_encode($_POST['barnconfigpassthru']) : $pconfig['barnconfigpassthru']; - if ($_POST['barnyard_enable'] == "on") - $natent['snortunifiedlog'] = 'on'; - else - $natent['snortunifiedlog'] = 'off'; - - if (isset($id) && $a_nat[$id]) - $a_nat[$id] = $natent; - else { - if (is_numeric($after)) - array_splice($a_nat, $after+1, 0, array($natent)); - else - $a_nat[] = $natent; - } - - write_config(); - sync_snort_package_config(); - - /* after click go to this page */ - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: snort_barnyard.php?id=$id"); - exit; - } -} - -$pgtitle = "Snort: Interface: $id$if_real Barnyard2 Edit"; -include_once("head.inc"); - -?> - - - - -' . $pgtitle . '

    ';}?> - - - -
    - - - - - -
    - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    General Barnyard2 - Settings
    Enable - onClick="enable_change(false)"> - Enable Barnyard2
    - This will enable barnyard2 for this interface. You will also have to set the database credentials.
    Mysql Settings
    Log to a Mysql Database
    - Example: output database: alert, mysql, - dbname=snort user=snort host=localhost password=xyz
    - Example: output database: log, mysql, dbname=snort user=snort - host=localhost password=xyz
    Advanced Settings
    Advanced configuration - pass through -
    - Arguments here will be automatically inserted into the running - barnyard2 configuration.
      - -
     Note: -
    - Please save your settings befor you click start.
    - -
    -
    - -
    - - - - - diff --git a/config/snort-dev/snort_blocked.php b/config/snort-dev/snort_blocked.php deleted file mode 100644 index 932e0983..00000000 --- a/config/snort-dev/snort_blocked.php +++ /dev/null @@ -1,426 +0,0 @@ - /tmp/snort_block.pf'); - - $blocked_ips_array_save = str_replace(' ', '', array_filter(explode("\n", file_get_contents('/tmp/snort_block.pf')))); - - if ($blocked_ips_array_save[0] != '') { - /* build the list */ - file_put_contents("/tmp/snort_blocked/snort_block.pf", ""); - foreach($blocked_ips_array_save as $counter => $fileline3) - file_put_contents("/tmp/snort_blocked/snort_block.pf", "{$fileline3}\n", FILE_APPEND); - } - - exec("/usr/bin/tar cfz /tmp/snort_blocked_{$save_date}.tar.gz /tmp/snort_blocked"); - - if(file_exists("/tmp/snort_blocked_{$save_date}.tar.gz")) { - $file = "/tmp/snort_blocked_{$save_date}.tar.gz"; - header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n"); - header("Pragma: private"); // needed for IE - header("Cache-Control: private, must-revalidate"); // needed for IE - header('Content-type: application/force-download'); - header('Content-Transfer-Encoding: Binary'); - header("Content-length: ".filesize($file)); - header("Content-disposition: attachment; filename = {$file_name}"); - readfile("$file"); - exec("/bin/rm /tmp/snort_blocked_{$save_date}.tar.gz"); - exec("/bin/rm /tmp/snort_block.pf"); - exec("/bin/rm /tmp/snort_blocked/snort_block.pf"); - od_end_clean(); //importanr or other post will fail - } else - echo 'Error no saved file.'; - -} - -if ($_POST['save']) -{ - - /* input validation */ - if ($_POST['save']) - { - - - } - - /* no errors */ - if (!$input_errors) - { - $config['installedpackages']['snortglobal']['alertsblocks']['brefresh'] = $_POST['brefresh'] ? 'on' : 'off'; - $config['installedpackages']['snortglobal']['alertsblocks']['blertnumber'] = $_POST['blertnumber']; - - write_config(); - - header("Location: /snort/snort_blocked.php"); - - } - -} - -/* build filter funcs */ -function get_snort_alert_ip_src($fileline) -{ - /* SRC IP */ - $re1='.*?'; # Non-greedy match on filler - $re2='((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?![\\d])'; # IPv4 IP Address 1 - - if ($c=preg_match_all ("/".$re1.$re2."/is", $fileline, $matches4)) - $alert_ip_src = $matches4[1][0]; - - return $alert_ip_src; -} - -function get_snort_alert_disc($fileline) -{ - /* disc */ - if (preg_match("/\[\*\*\] (\[.*\]) (.*) (\[\*\*\])/", $fileline, $matches)) - $alert_disc = "$matches[2]"; - - return $alert_disc; -} - -/* build sec filters */ -function get_snort_block_ip($fileline) -{ - /* ip */ - if (preg_match("/\[\d+\.\d+\.\d+\.\d+\]/", $fileline, $matches)) - $alert_block_ip = "$matches[0]"; - - return $alert_block_ip; -} - -function get_snort_block_disc($fileline) -{ - /* disc */ - if (preg_match("/\]\s\[.+\]$/", $fileline, $matches)) - $alert_block_disc = "$matches[0]"; - - return $alert_block_disc; -} - -/* tell the user what settings they have */ -$blockedtab_msg_chk = $config['installedpackages']['snortglobal']['rm_blocked']; -if ($blockedtab_msg_chk == "1h_b") { - $blocked_msg = "hour"; -} -if ($blockedtab_msg_chk == "3h_b") { - $blocked_msg = "3 hours"; -} -if ($blockedtab_msg_chk == "6h_b") { - $blocked_msg = "6 hours"; -} -if ($blockedtab_msg_chk == "12h_b") { - $blocked_msg = "12 hours"; -} -if ($blockedtab_msg_chk == "1d_b") { - $blocked_msg = "day"; -} -if ($blockedtab_msg_chk == "4d_b") { - $blocked_msg = "4 days"; -} -if ($blockedtab_msg_chk == "7d_b") { - $blocked_msg = "7 days"; -} -if ($blockedtab_msg_chk == "28d_b") { - $blocked_msg = "28 days"; -} - -if ($blockedtab_msg_chk != "never_b") -{ - $blocked_msg_txt = "Hosts are removed every $blocked_msg."; -}else{ - $blocked_msg_txt = "Settings are set to never remove hosts."; -} - -$pgtitle = "Services: Snort Blocked Hosts"; -include_once("head.inc"); - -?> - - - -\n"; -?> - -
    ' . $pgtitle . '

    ';}?> - - - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - -
    Last - Blocked.This page lists hosts that have - been blocked by Snort.  
    Save or Remove Hosts -
    All - blocked hosts will be saved. Warning: - all hosts will be removed.
    -
    Auto Refresh and Log View -
    Refresh > - Default is ON. Enter the - number of blocked entries to view. Default is 500. -
    -
    -
    -
    -
    - - "; - else - echo "\n"; - - ?> - - -
    - - - - - - - - /tmp/snort_block.cache'); - $blocked_ips_array = str_replace(' ', '', array_filter(explode("\n", file_get_contents('/tmp/snort_block.cache')))); - foreach (glob("/var/log/snort/alert_*") as $alert) { - $alerts_array = array_reverse(explode("\n\n", file_get_contents("{$alert}"))); - - $logent = $bnentries; - - if ($blocked_ips_array[0] != '' && $alerts_array[0] != '') - { - - /* build the list and compare blocks to alerts */ - $counter = 0; - foreach($alerts_array as $fileline) - { - - $counter++; - - $alert_ip_src = get_snort_alert_ip_src($fileline); - $alert_ip_disc = get_snort_alert_disc($fileline); - $alert_ip_src_array[] = get_snort_alert_ip_src($fileline); - - if (in_array("$alert_ip_src", $blocked_ips_array)) - $input[] = "[$alert_ip_src] " . "[$alert_ip_disc]\n"; - } - - foreach($blocked_ips_array as $alert_block_ip) - { - - if (!in_array($alert_block_ip, $alert_ip_src_array)) - { - $input[] = "[$alert_block_ip] " . "[N\A]\n"; - } - } - - /* reduce double occurrences */ - $result = array_unique($input); - - /* buil final list, preg_match, buld html */ - $counter2 = 0; - - foreach($result as $fileline2) - { - if($logent <= $counter2) - continue; - - $counter2++; - - $alert_block_ip_str = get_snort_block_ip($fileline2); - - if($alert_block_ip_str != '') - { - $alert_block_ip_match = array('[',']'); - $alert_block_ip = str_replace($alert_block_ip_match, '', "$alert_block_ip_str"); - }else{ - $alert_block_ip = 'empty'; - } - - $alert_block_disc_str = get_snort_block_disc($fileline2); - - if($alert_block_disc_str != '') - { - $alert_block_disc_match = array('] [',']'); - $alert_block_disc = str_replace($alert_block_disc_match, '', "$alert_block_disc_str"); - }else{ - $alert_block_disc = 'empty'; - } - - /* use one echo to do the magic*/ - echo " - - - - - \n"; - - } - - }else{ - - /* if alerts file is empty and blocked table is not empty */ - $counter2 = 0; - - foreach($blocked_ips_array as $alert_block_ip) - { - if($logent <= $counter2) - continue; - - $counter2++; - - $alert_block_disc = 'N/A'; - - /* use one echo to do the magic*/ - echo " - - - - - \n"; - } - } - } - - echo '
    Remove#IPAlert Description
    - \"Delete\" {$counter2} {$alert_block_ip} {$alert_block_disc}
    - \"Delete\" {$counter2} {$alert_block_ip} {$alert_block_disc}
    ' . "\n"; - - if (empty($blocked_ips_array[0])) - echo "\n

    There are currently no items being blocked by snort.
    {$counter2} items listed.
    -
    -
    - - - - - diff --git a/config/snort-dev/snort_check_cron_misc.inc b/config/snort-dev/snort_check_cron_misc.inc deleted file mode 100644 index 28d454b0..00000000 --- a/config/snort-dev/snort_check_cron_misc.inc +++ /dev/null @@ -1,76 +0,0 @@ - 1, -// 'KB' => 1024, -// 'MB' => 1024 * 1024, -// 'GB' => 1024 * 1024 * 1024, -// 'TB' => 1024 * 1024 * 1024 * 1024, -// 'PB' => 1024 * 1024 * 1024 * 1024 * 1024, - - -/* chk if snort log dir is full if so clear it */ -$snortloglimit = $config['installedpackages']['snortglobal']['snortloglimit']; -$snortloglimitsize = $config['installedpackages']['snortglobal']['snortloglimitsize']; - -if ($g['booting']==true) - return; - -if ($snortloglimit == 'off') - return; - -$snortloglimitDSKsize = exec('/bin/df -k /var | grep -v "Filesystem" | awk \'{print $4}\''); - -$snortlogAlertsizeKB = snort_Getdirsize('/var/log/snort/alert'); -$snortloglimitAlertsizeKB = round($snortlogAlertsizeKB * .70); -$snortloglimitsizeKB = round($snortloglimitsize * 1024); - -/* do I need HUP kill ? */ -if (snort_Getdirsize('/var/log/snort/') >= $snortloglimitsizeKB ) { - - conf_mount_rw(); - if(file_exists('/var/log/snort/alert')) { - if ($snortlogAlertsizeKB >= $snortloglimitAlertsizeKB) { - exec('/bin/echo "" > /var/log/snort/alert'); - } - post_delete_logs(); - /* XXX: This is needed if snort is run as snort user */ - //mwexec('/usr/sbin/chown snort:snort /var/log/snort/*', true); - mwexec('/bin/chmod 660 /var/log/snort/*', true); - } - conf_mount_ro(); - -} - -?> diff --git a/config/snort-dev/snort_check_for_rule_updates.php b/config/snort-dev/snort_check_for_rule_updates.php deleted file mode 100644 index 41995e9d..00000000 --- a/config/snort-dev/snort_check_for_rule_updates.php +++ /dev/null @@ -1,690 +0,0 @@ - 0) { - update_status(gettext("snort.org md5 temp file exists...")); - } else { - update_status(gettext("Downloading snort.org md5 file...")); - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - - //$image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename_md5}"); - $image = @file_get_contents("http://www.snort.org/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename_md5}"); - @file_put_contents("{$tmpfname}/{$snort_filename_md5}", $image); - update_status(gettext("Done downloading snort.org md5")); - } -} - -/* download md5 sig from emergingthreats.net */ -if ($emergingthreats == 'on') -{ - update_status(gettext("Downloading emergingthreats md5 file...")); - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - // $image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/version.txt"); - $image = @file_get_contents('http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz.md5'); - @file_put_contents("{$tmpfname}/{$emergingthreats_filename_md5}", $image); - update_status(gettext("Done downloading emergingthreats md5")); -} - -/* download md5 sig from pfsense.org */ -if (file_exists("{$tmpfname}/{$pfsense_rules_filename_md5}")) { - update_status(gettext("pfsense md5 temp file exists...")); -} else { - update_status(gettext("Downloading pfsense md5 file...")); - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - //$image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/pfsense_rules.tar.gz.md5"); - $image = @file_get_contents("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz.md5"); - @file_put_contents("{$tmpfname}/pfsense_rules.tar.gz.md5", $image); - update_status(gettext("Done downloading pfsense md5.")); -} - -/* If md5 file is empty wait 15min exit */ -if ($snortdownload == 'on') -{ - if (0 == filesize("{$tmpfname}/{$snort_filename_md5}")) - { - update_status(gettext("Please wait... You may only check for New Rules every 15 minutes...")); - update_output_window(gettext("Rules are released every month from snort.org. You may download the Rules at any time.")); - $snortdownload = 'off'; - } -} - -/* If pfsense md5 file is empty wait 15min exit */ -if (0 == filesize("{$tmpfname}/$pfsense_rules_filename_md5")){ - update_status(gettext("Please wait... You may only check for New Pfsense Rules every 15 minutes...")); - update_output_window(gettext("Rules are released to support Pfsense packages.")); - $pfsensedownload = 'off'; -} - -/* Check if were up to date snort.org */ -if ($snortdownload == 'on') -{ - if (file_exists("{$snortdir}/{$snort_filename_md5}")) - { - $md5_check_new_parse = file_get_contents("{$tmpfname}/{$snort_filename_md5}"); - $md5_check_new = `/bin/echo "{$md5_check_new_parse}" | /usr/bin/awk '{ print $1 }'`; - $md5_check_old_parse = file_get_contents("{$snortdir}/{$snort_filename_md5}"); - $md5_check_old = `/bin/echo "{$md5_check_old_parse}" | /usr/bin/awk '{ print $1 }'`; - if ($md5_check_new == $md5_check_old) - { - update_status(gettext("Your rules are up to date...")); - update_output_window(gettext("You may start Snort now, check update.")); - $snort_md5_check_ok = 'on'; - } else { - update_status(gettext("Your rules are not up to date...")); - $snort_md5_check_ok = 'off'; - } - } -} - -/* Check if were up to date emergingthreats.net */ -if ($emergingthreats == 'on') -{ - if (file_exists("{$snortdir}/{$emergingthreats_filename_md5}")) - { - $emerg_md5_check_new_parse = file_get_contents("{$tmpfname}/{$emergingthreats_filename_md5}"); - $emerg_md5_check_new = `/bin/echo "{$emerg_md5_check_new_parse}" | /usr/bin/awk '{ print $1 }'`; - $emerg_md5_check_old_parse = file_get_contents("{$snortdir}/{$emergingthreats_filename_md5}"); - $emerg_md5_check_old = `/bin/echo "{$emerg_md5_check_old_parse}" | /usr/bin/awk '{ print $1 }'`; - if ($emerg_md5_check_new == $emerg_md5_check_old) - { - $emerg_md5_check_ok = 'on'; - } else - $emerg_md5_check_ok = 'off'; - } -} - -/* Check if were up to date pfsense.org */ -if ($pfsensedownload == 'on' && file_exists("{$snortdir}/pfsense_rules.tar.gz.md5")) -{ - $pfsense_check_new_parse = file_get_contents("{$tmpfname}/pfsense_rules.tar.gz.md5"); - $pfsense_md5_check_new = `/bin/echo "{$pfsense_md5_check_new_parse}" | /usr/bin/awk '{ print $1 }'`; - $pfsense_md5_check_old_parse = file_get_contents("{$snortdir}/pfsense_rules.tar.gz.md5"); - $pfsense_md5_check_old = `/bin/echo "{$pfsense_md5_check_old_parse}" | /usr/bin/awk '{ print $1 }'`; - if ($pfsense_md5_check_new == $pfsense_md5_check_old) - { - $pfsense_md5_check_ok = 'on'; - } else - $pfsense_md5_check_ok = 'off'; -} - -if ($snortdownload == 'on') { - if ($snort_md5_check_ok == 'on') - { - update_status(gettext("Your snort.org rules are up to date...")); - update_output_window(gettext("You may start Snort now...")); - $snortdownload = 'off'; - } -} -if ($emergingthreats == 'on') { - if ($emerg_md5_check_ok == 'on') - { - update_status(gettext("Your Emergingthreats rules are up to date...")); - update_output_window(gettext("You may start Snort now...")); - $emergingthreats = 'off'; - } -} - -/* download snortrules file */ -if ($snortdownload == 'on') -{ - if ($snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$snort_filename}")) { - update_status(gettext("Snortrule tar file exists...")); - } else { - update_status(gettext("There is a new set of Snort.org rules posted. Downloading...")); - update_output_window(gettext("May take 4 to 10 min...")); - download_file_with_progress_bar("http://www.snort.org/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename}", "{$tmpfname}/{$snort_filename}"); - update_all_status($static_output); - update_status(gettext("Done downloading rules file.")); - if (300000 > filesize("{$tmpfname}/$snort_filename")){ - update_status(gettext("Error with the snort rules download...")); - update_output_window(gettext("Snort rules file downloaded failed...")); - $snortdownload = 'off'; - } - } - } -} - -/* download emergingthreats rules file */ -if ($emergingthreats == "on") -{ - if ($emerg_md5_check_ok != 'on') - { - if (file_exists("{$tmpfname}/{$emergingthreats_filename}")) - { - update_status(gettext('Emergingthreats tar file exists...')); - }else{ - update_status(gettext("There is a new set of Emergingthreats rules posted. Downloading...")); - update_output_window(gettext("May take 4 to 10 min...")); - download_file_with_progress_bar('http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz', "{$tmpfname}/{$emergingthreats_filename}"); - update_status(gettext('Done downloading Emergingthreats rules file.')); - } - } -} - -/* download pfsense rules file */ -if ($pfsensedownload == 'on' && $pfsense_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { - update_status(gettext("Snortrule tar file exists...")); - } else { - update_status(gettext("There is a new set of Pfsense rules posted. Downloading...")); - update_output_window(gettext("May take 4 to 10 min...")); - download_file_with_progress_bar("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz", $tmpfname . "/{$pfsense_rules_filename}"); - update_all_status($static_output); - update_status(gettext("Done downloading rules file.")); - } -} - -/* Compair md5 sig to file sig */ - -//$premium_url_chk = $config['installedpackages']['snort']['config'][0]['subscriber']; -//if ($premium_url_chk == on) { -//$md5 = file_get_contents("{$tmpfname}/{$snort_filename_md5}"); -//$file_md5_ondisk = `/sbin/md5 {$tmpfname}/{$snort_filename} | /usr/bin/awk '{ print $4 }'`; -// if ($md5 == $file_md5_ondisk) { -// update_status(gettext("Valid md5 checksum pass...")); -//} else { -// update_status(gettext("The downloaded file does not match the md5 file...P is ON")); -// update_output_window(gettext("Error md5 Mismatch...")); -// return; -// } -//} - -//$premium_url_chk = $config['installedpackages']['snort']['config'][0]['subscriber']; -//if ($premium_url_chk != on) { -//$md55 = `/bin/cat {$tmpfname}/{$snort_filename_md5} | /usr/bin/awk '{ print $4 }'`; -//$file_md5_ondisk2 = `/sbin/md5 {$tmpfname}/{$snort_filename} | /usr/bin/awk '{ print $4 }'`; -// if ($md55 == $file_md5_ondisk2) { -// update_status(gettext("Valid md5 checksum pass...")); -//} else { -// update_status(gettext("The downloaded file does not match the md5 file...Not P")); -// update_output_window(gettext("Error md5 Mismatch...")); -// return; -// } -//} - -/* Untar snort rules file individually to help people with low system specs */ -if ($snortdownload == 'on') -{ - if ($snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$snort_filename}")) { - - if ($pfsense_stable == 'yes') - $freebsd_version_so = 'FreeBSD-7-2'; - else - $freebsd_version_so = 'FreeBSD-8-1'; - - update_status(gettext("Extracting Snort.org rules...")); - update_output_window(gettext("May take a while...")); - /* extract snort.org rules and add prefix to all snort.org files*/ - exec("/bin/rm -r {$snortdir}/rules"); - sleep(2); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} rules/"); - chdir ("/usr/local/etc/snort/rules"); - sleep(2); - exec('/usr/local/bin/perl /usr/local/bin/snort_rename.pl s/^/snort_/ *.rules'); - - /* extract so rules */ - exec('/bin/mkdir -p /usr/local/lib/snort/dynamicrules/'); - if($snort_arch == 'x86'){ - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} so_rules/precompiled/$freebsd_version_so/i386/2.9.0.5/"); - exec("/bin/mv -f {$snortdir}/so_rules/precompiled/$freebsd_version_so/i386/2.9.0.5/* /usr/local/lib/snort/dynamicrules/"); - } else if ($snort_arch == 'x64') { - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} so_rules/precompiled/$freebsd_version_so/x86-64/2.9.0.5/"); - exec("/bin/mv -f {$snortdir}/so_rules/precompiled/$freebsd_version_so/x86-64/2.9.0.5/* /usr/local/lib/snort/dynamicrules/"); - } - /* extract so rules none bin and rename */ - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} so_rules/bad-traffic.rules/" . - " so_rules/chat.rules/" . - " so_rules/dos.rules/" . - " so_rules/exploit.rules/" . - " so_rules/icmp.rules/" . - " so_rules/imap.rules/" . - " so_rules/misc.rules/" . - " so_rules/multimedia.rules/" . - " so_rules/netbios.rules/" . - " so_rules/nntp.rules/" . - " so_rules/p2p.rules/" . - " so_rules/smtp.rules/" . - " so_rules/sql.rules/" . - " so_rules/web-activex.rules/" . - " so_rules/web-client.rules/" . - " so_rules/web-iis.rules/" . - " so_rules/web-misc.rules/"); - - exec("/bin/mv -f {$snortdir}/so_rules/bad-traffic.rules {$snortdir}/rules/snort_bad-traffic.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/chat.rules {$snortdir}/rules/snort_chat.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/dos.rules {$snortdir}/rules/snort_dos.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/exploit.rules {$snortdir}/rules/snort_exploit.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/icmp.rules {$snortdir}/rules/snort_icmp.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/imap.rules {$snortdir}/rules/snort_imap.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/misc.rules {$snortdir}/rules/snort_misc.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/multimedia.rules {$snortdir}/rules/snort_multimedia.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/netbios.rules {$snortdir}/rules/snort_netbios.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/nntp.rules {$snortdir}/rules/snort_nntp.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/p2p.rules {$snortdir}/rules/snort_p2p.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/smtp.rules {$snortdir}/rules/snort_smtp.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/sql.rules {$snortdir}/rules/snort_sql.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/web-activex.rules {$snortdir}/rules/snort_web-activex.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/web-client.rules {$snortdir}/rules/snort_web-client.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/web-iis.rules {$snortdir}/rules/snort_web-iis.so.rules"); - exec("/bin/mv -f {$snortdir}/so_rules/web-misc.rules {$snortdir}/rules/snort_web-misc.so.rules"); - exec("/bin/rm -r {$snortdir}/so_rules"); - } - - /* extract base etc files */ - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} etc/"); - exec("/bin/mv -f {$snortdir}/etc/* {$snortdir}"); - exec("/bin/rm -r {$snortdir}/etc"); - - update_status(gettext("Done extracting Snort.org Rules.")); - }else{ - update_status(gettext("Error extracting Snort.org Rules...")); - update_output_window(gettext("Error Line 755")); - $snortdownload = 'off'; - } -} - -/* Untar emergingthreats rules to tmp */ -if ($emergingthreats == 'on') -{ - if ($emerg_md5_check_ok != 'on') - { - if (file_exists("{$tmpfname}/{$emergingthreats_filename}")) - { - update_status(gettext("Extracting rules...")); - update_output_window(gettext("May take a while...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$emergingthreats_filename} -C {$snortdir} rules/"); - } - } -} - -/* Untar Pfsense rules to tmp */ -if ($pfsensedownload == 'on' && $pfsense_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { - update_status(gettext("Extracting Pfsense rules...")); - update_output_window(gettext("May take a while...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$pfsense_rules_filename} -C {$snortdir} rules/"); - } -} - -/* Untar snort signatures */ -if ($snortdownload == 'on' && $snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$snort_filename}")) { - $signature_info_chk = $config['installedpackages']['snortglobal']['signatureinfo']; - if ($premium_url_chk == 'on') { - update_status(gettext("Extracting Signatures...")); - update_output_window(gettext("May take a while...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} doc/signatures/"); - update_status(gettext("Done extracting Signatures.")); - } - } -} - -/* Copy md5 sig to snort dir */ -if ($snortdownload == 'on') -{ - if ($snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/$snort_filename_md5")) { - update_status(gettext("Copying md5 sig to snort directory...")); - exec("/bin/cp {$tmpfname}/$snort_filename_md5 {$snortdir}/$snort_filename_md5"); - }else{ - update_status(gettext("The md5 file does not exist...")); - update_output_window(gettext("Error copying config...")); - $snortdownload = 'off'; - } - } -} - -/* Copy emergingthreats md5 sig to snort dir */ -if ($emergingthreats == "on") -{ - if ($emerg_md5_check_ok != 'on') - { - if (file_exists("{$tmpfname}/$emergingthreats_filename_md5")) - { - update_status(gettext("Copying md5 sig to snort directory...")); - exec("/bin/cp {$tmpfname}/$emergingthreats_filename_md5 {$snortdir}/$emergingthreats_filename_md5"); - }else{ - update_status(gettext("The emergingthreats md5 file does not exist...")); - update_output_window(gettext("Error copying config...")); - $emergingthreats = 'off'; - } - } -} - -/* Copy Pfsense md5 sig to snort dir */ -if ($pfsensedownload == 'on' && $pfsense_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/$pfsense_rules_filename_md5")) { - update_status(gettext("Copying Pfsense md5 sig to snort directory...")); - exec("/bin/cp {$tmpfname}/$pfsense_rules_filename_md5 {$snortdir}/$pfsense_rules_filename_md5"); - } else { - update_status(gettext("The Pfsense md5 file does not exist...")); - update_output_window(gettext("Error copying config...")); - $pfsensedownload = 'off'; - } -} - -/* Copy signatures dir to snort dir */ -if ($snortdownload == 'on') -{ - if ($snort_md5_check_ok != 'on') - { - $signature_info_chk = $config['installedpackages']['snortglobal']['signatureinfo']; - if ($premium_url_chk == 'on') - { - if (file_exists("{$snortdir}/doc/signatures")) { - update_status(gettext("Copying signatures...")); - update_output_window(gettext("May take a while...")); - exec("/bin/mv -f {$snortdir}/doc/signatures {$snortdir}/signatures"); - exec("/bin/rm -r {$snortdir}/doc/signatures"); - update_status(gettext("Done copying signatures.")); - }else{ - update_status(gettext("Directory signatures exist...")); - update_output_window(gettext("Error copying signature...")); - $snortdownload = 'off'; - } - } - } -} - -/* double make shure cleanup emerg rules that dont belong */ -if (file_exists("/usr/local/etc/snort/rules/emerging-botcc-BLOCK.rules")) { - apc_clear_cache(); - @unlink("/usr/local/etc/snort/rules/emerging-botcc-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-botcc.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-compromised-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-drop-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-dshield-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-rbn-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-tor-BLOCK.rules"); -} - -if (file_exists("/usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so")) { - exec("/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so"); - exec("/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example\*"); -} - -/* make shure default rules are in the right format */ -exec("/usr/local/bin/perl -pi -e 's/#alert/# alert/g' /usr/local/etc/snort/rules/*.rules"); -exec("/usr/local/bin/perl -pi -e 's/##alert/# alert/g' /usr/local/etc/snort/rules/*.rules"); -exec("/usr/local/bin/perl -pi -e 's/## alert/# alert/g' /usr/local/etc/snort/rules/*.rules"); - -/* create a msg-map for snort */ -update_status(gettext("Updating Alert Messages...")); -update_output_window(gettext("Please Wait...")); -exec("/usr/local/bin/perl /usr/local/bin/create-sidmap.pl /usr/local/etc/snort/rules > /usr/local/etc/snort/sid-msg.map"); - - -////////////////// -/* open oinkmaster_conf for writing" function */ -function oinkmaster_conf($id, $if_real, $iface_uuid) -{ - global $config, $g, $snort_md5_check_ok, $emerg_md5_check_ok, $pfsense_md5_check_ok; - - @unlink("/usr/local/etc/snort/snort_{$iface_uuid}_{$if_real}/oinkmaster_{$iface_uuid}_{$if_real}.conf"); - - /* enable disable setting will carry over with updates */ - /* TODO carry signature changes with the updates */ - if ($snort_md5_check_ok != 'on' || $emerg_md5_check_ok != 'on' || $pfsense_md5_check_ok != 'on') { - - $selected_sid_on_section = ""; - $selected_sid_off_sections = ""; - - if (!empty($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_on'])) { - $enabled_sid_on = trim($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_on']); - $enabled_sid_on_array = split('\|\|', $enabled_sid_on); - foreach($enabled_sid_on_array as $enabled_item_on) - $selected_sid_on_sections .= "$enabled_item_on\n"; - } - - if (!empty($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_off'])) { - $enabled_sid_off = trim($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_off']); - $enabled_sid_off_array = split('\|\|', $enabled_sid_off); - foreach($enabled_sid_off_array as $enabled_item_off) - $selected_sid_off_sections .= "$enabled_item_off\n"; - } - - if (!empty($selected_sid_off_sections) || !empty($selected_sid_on_section)) { - $snort_sid_text = << /usr/local/etc/snort/oinkmaster_{$iface_uuid}_{$if_real}.log"); - - } - } -} - -/* Start the proccess for every interface rule */ -/* TODO: try to make the code smother */ -if (is_array($config['installedpackages']['snortglobal']['rule'])) -{ - foreach ($config['installedpackages']['snortglobal']['rule'] as $id => $value) { - $result_lan = $value['interface']; - $if_real = snort_get_real_interface($result_lan); - $iface_uuid = $value['uuid']; - - /* make oinkmaster.conf for each interface rule */ - oinkmaster_conf($id, $if_real, $iface_uuid); - - /* run oinkmaster for each interface rule */ - oinkmaster_run($id, $if_real, $iface_uuid); - } -} - -////////////// - -/* mark the time update finnished */ -$config['installedpackages']['snortglobal']['last_rules_install'] = date("Y-M-jS-h:i-A"); - -/* remove old $tmpfname files */ -if (is_dir('/usr/local/etc/snort/tmp')) { - update_status(gettext("Cleaning up...")); - exec("/bin/rm -r /usr/local/etc/snort/tmp/snort_rules_up"); - sleep(2); - exec("/bin/rm -r /usr/local/etc/snort/tmp/rules_bk"); -} - -/* XXX: These are needed if snort is run as snort user -mwexec("/usr/sbin/chown -R snort:snort /var/log/snort", true); -mwexec("/usr/sbin/chown -R snort:snort /usr/local/etc/snort", true); -mwexec("/usr/sbin/chown -R snort:snort /usr/local/lib/snort", true); -*/ -/* make all dirs snorts */ -mwexec("/bin/chmod -R 755 /var/log/snort", true); -mwexec("/bin/chmod -R 755 /usr/local/etc/snort", true); -mwexec("/bin/chmod -R 755 /usr/local/lib/snort", true); - -if ($snortdownload == 'off' && $emergingthreats == 'off' && $pfsensedownload == 'off') - update_output_window(gettext("Finished...")); -else if ($snort_md5_check_ok == 'on' && $emerg_md5_check_ok == 'on' && $pfsense_md5_check_ok == 'on') - update_output_window(gettext("Finished...")); -else { - /* You are Not Up to date, always stop snort when updating rules for low end machines */; - update_status(gettext("You are NOT up to date...")); - exec("/bin/sh /usr/local/etc/rc.d/snort.sh start"); - update_status(gettext("The Rules update finished...")); - update_output_window(gettext("Snort has restarted with your new set of rules...")); - exec("/bin/rm /tmp/snort_download_halt.pid"); -} - -update_status(gettext("The Rules update finished...")); -conf_mount_ro(); - -?> diff --git a/config/snort-dev/snort_define_servers.php b/config/snort-dev/snort_define_servers.php deleted file mode 100644 index 497f0a79..00000000 --- a/config/snort-dev/snort_define_servers.php +++ /dev/null @@ -1,541 +0,0 @@ -. - Copyright (C) 2008-2009 Robert Zelaya. - 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. - */ - -/* - -TODO: Nov 12 09 -Clean this code up its ugly -Important add error checking - -*/ - -//require_once("globals.inc"); -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -global $g; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (is_null($id)) { - header("Location: /snort/snort_interfaces.php"); - exit; -} - -if (!is_array($config['installedpackages']['snortglobal']['rule'])) { - $config['installedpackages']['snortglobal']['rule'] = array(); -} -$a_nat = &$config['installedpackages']['snortglobal']['rule']; - -$pconfig = array(); -if (isset($id) && $a_nat[$id]) { - $pconfig = $a_nat[$id]; - - /* old options */ - $pconfig['def_dns_servers'] = $a_nat[$id]['def_dns_servers']; - $pconfig['def_dns_ports'] = $a_nat[$id]['def_dns_ports']; - $pconfig['def_smtp_servers'] = $a_nat[$id]['def_smtp_servers']; - $pconfig['def_smtp_ports'] = $a_nat[$id]['def_smtp_ports']; - $pconfig['def_mail_ports'] = $a_nat[$id]['def_mail_ports']; - $pconfig['def_http_servers'] = $a_nat[$id]['def_http_servers']; - $pconfig['def_www_servers'] = $a_nat[$id]['def_www_servers']; - $pconfig['def_http_ports'] = $a_nat[$id]['def_http_ports']; - $pconfig['def_sql_servers'] = $a_nat[$id]['def_sql_servers']; - $pconfig['def_oracle_ports'] = $a_nat[$id]['def_oracle_ports']; - $pconfig['def_mssql_ports'] = $a_nat[$id]['def_mssql_ports']; - $pconfig['def_telnet_servers'] = $a_nat[$id]['def_telnet_servers']; - $pconfig['def_telnet_ports'] = $a_nat[$id]['def_telnet_ports']; - $pconfig['def_snmp_servers'] = $a_nat[$id]['def_snmp_servers']; - $pconfig['def_snmp_ports'] = $a_nat[$id]['def_snmp_ports']; - $pconfig['def_ftp_servers'] = $a_nat[$id]['def_ftp_servers']; - $pconfig['def_ftp_ports'] = $a_nat[$id]['def_ftp_ports']; - $pconfig['def_ssh_servers'] = $a_nat[$id]['def_ssh_servers']; - $pconfig['def_ssh_ports'] = $a_nat[$id]['def_ssh_ports']; - $pconfig['def_pop_servers'] = $a_nat[$id]['def_pop_servers']; - $pconfig['def_pop2_ports'] = $a_nat[$id]['def_pop2_ports']; - $pconfig['def_pop3_ports'] = $a_nat[$id]['def_pop3_ports']; - $pconfig['def_imap_servers'] = $a_nat[$id]['def_imap_servers']; - $pconfig['def_imap_ports'] = $a_nat[$id]['def_imap_ports']; - $pconfig['def_sip_proxy_ip'] = $a_nat[$id]['def_sip_proxy_ip']; - $pconfig['def_sip_servers'] = $a_nat[$id]['def_sip_servers']; - $pconfig['def_sip_ports'] = $a_nat[$id]['def_sip_ports']; - $pconfig['def_sip_proxy_ports'] = $a_nat[$id]['def_sip_proxy_ports']; - $pconfig['def_auth_ports'] = $a_nat[$id]['def_auth_ports']; - $pconfig['def_finger_ports'] = $a_nat[$id]['def_finger_ports']; - $pconfig['def_irc_ports'] = $a_nat[$id]['def_irc_ports']; - $pconfig['def_nntp_ports'] = $a_nat[$id]['def_nntp_ports']; - $pconfig['def_rlogin_ports'] = $a_nat[$id]['def_rlogin_ports']; - $pconfig['def_rsh_ports'] = $a_nat[$id]['def_rsh_ports']; - $pconfig['def_ssl_ports'] = $a_nat[$id]['def_ssl_ports']; -} - -/* convert fake interfaces to real */ -$if_real = snort_get_real_interface($pconfig['interface']); -$snort_uuid = $config['installedpackages']['snortglobal']['rule'][$id]['uuid']; - -/* alert file */ -$d_snortconfdirty_path = "/var/run/snort_conf_{$snort_uuid}_{$if_real}.dirty"; - -if ($_POST) { - - $natent = array(); - $natent = $pconfig; - - /* if no errors write to conf */ - if (!$input_errors) { - /* post new options */ - if ($_POST['def_dns_servers'] != "") { $natent['def_dns_servers'] = $_POST['def_dns_servers']; }else{ $natent['def_dns_servers'] = ""; } - if ($_POST['def_dns_ports'] != "") { $natent['def_dns_ports'] = $_POST['def_dns_ports']; }else{ $natent['def_dns_ports'] = ""; } - if ($_POST['def_smtp_servers'] != "") { $natent['def_smtp_servers'] = $_POST['def_smtp_servers']; }else{ $natent['def_smtp_servers'] = ""; } - if ($_POST['def_smtp_ports'] != "") { $natent['def_smtp_ports'] = $_POST['def_smtp_ports']; }else{ $natent['def_smtp_ports'] = ""; } - if ($_POST['def_mail_ports'] != "") { $natent['def_mail_ports'] = $_POST['def_mail_ports']; }else{ $natent['def_mail_ports'] = ""; } - if ($_POST['def_http_servers'] != "") { $natent['def_http_servers'] = $_POST['def_http_servers']; }else{ $natent['def_http_servers'] = ""; } - if ($_POST['def_www_servers'] != "") { $natent['def_www_servers'] = $_POST['def_www_servers']; }else{ $natent['def_www_servers'] = ""; } - if ($_POST['def_http_ports'] != "") { $natent['def_http_ports'] = $_POST['def_http_ports']; }else{ $natent['def_http_ports'] = ""; } - if ($_POST['def_sql_servers'] != "") { $natent['def_sql_servers'] = $_POST['def_sql_servers']; }else{ $natent['def_sql_servers'] = ""; } - if ($_POST['def_oracle_ports'] != "") { $natent['def_oracle_ports'] = $_POST['def_oracle_ports']; }else{ $natent['def_oracle_ports'] = ""; } - if ($_POST['def_mssql_ports'] != "") { $natent['def_mssql_ports'] = $_POST['def_mssql_ports']; }else{ $natent['def_mssql_ports'] = ""; } - if ($_POST['def_telnet_servers'] != "") { $natent['def_telnet_servers'] = $_POST['def_telnet_servers']; }else{ $natent['def_telnet_servers'] = ""; } - if ($_POST['def_telnet_ports'] != "") { $natent['def_telnet_ports'] = $_POST['def_telnet_ports']; }else{ $natent['def_telnet_ports'] = ""; } - if ($_POST['def_snmp_servers'] != "") { $natent['def_snmp_servers'] = $_POST['def_snmp_servers']; }else{ $natent['def_snmp_servers'] = ""; } - if ($_POST['def_snmp_ports'] != "") { $natent['def_snmp_ports'] = $_POST['def_snmp_ports']; }else{ $natent['def_snmp_ports'] = ""; } - if ($_POST['def_ftp_servers'] != "") { $natent['def_ftp_servers'] = $_POST['def_ftp_servers']; }else{ $natent['def_ftp_servers'] = ""; } - if ($_POST['def_ftp_ports'] != "") { $natent['def_ftp_ports'] = $_POST['def_ftp_ports']; }else{ $natent['def_ftp_ports'] = ""; } - if ($_POST['def_ssh_servers'] != "") { $natent['def_ssh_servers'] = $_POST['def_ssh_servers']; }else{ $natent['def_ssh_servers'] = ""; } - if ($_POST['def_ssh_ports'] != "") { $natent['def_ssh_ports'] = $_POST['def_ssh_ports']; }else{ $natent['def_ssh_ports'] = ""; } - if ($_POST['def_pop_servers'] != "") { $natent['def_pop_servers'] = $_POST['def_pop_servers']; }else{ $natent['def_pop_servers'] = ""; } - if ($_POST['def_pop2_ports'] != "") { $natent['def_pop2_ports'] = $_POST['def_pop2_ports']; }else{ $natent['def_pop2_ports'] = ""; } - if ($_POST['def_pop3_ports'] != "") { $natent['def_pop3_ports'] = $_POST['def_pop3_ports']; }else{ $natent['def_pop3_ports'] = ""; } - if ($_POST['def_imap_servers'] != "") { $natent['def_imap_servers'] = $_POST['def_imap_servers']; }else{ $natent['def_imap_servers'] = ""; } - if ($_POST['def_imap_ports'] != "") { $natent['def_imap_ports'] = $_POST['def_imap_ports']; }else{ $natent['def_imap_ports'] = ""; } - if ($_POST['def_sip_proxy_ip'] != "") { $natent['def_sip_proxy_ip'] = $_POST['def_sip_proxy_ip']; }else{ $natent['def_sip_proxy_ip'] = ""; } - if ($_POST['def_sip_proxy_ports'] != "") { $natent['def_sip_proxy_ports'] = $_POST['def_sip_proxy_ports']; }else{ $natent['def_sip_proxy_ports'] = ""; } - if ($_POST['def_sip_servers'] != "") { $natent['def_sip_servers'] = $_POST['def_sip_servers']; }else{ $natent['def_sip_servers'] = ""; } - if ($_POST['def_sip_ports'] != "") { $natent['def_sip_ports'] = $_POST['def_sip_ports']; }else{ $natent['def_sip_ports'] = ""; } - if ($_POST['def_auth_ports'] != "") { $natent['def_auth_ports'] = $_POST['def_auth_ports']; }else{ $natent['def_auth_ports'] = ""; } - if ($_POST['def_finger_ports'] != "") { $natent['def_finger_ports'] = $_POST['def_finger_ports']; }else{ $natent['def_finger_ports'] = ""; } - if ($_POST['def_irc_ports'] != "") { $natent['def_irc_ports'] = $_POST['def_irc_ports']; }else{ $natent['def_irc_ports'] = ""; } - if ($_POST['def_nntp_ports'] != "") { $natent['def_nntp_ports'] = $_POST['def_nntp_ports']; }else{ $natent['def_nntp_ports'] = ""; } - if ($_POST['def_rlogin_ports'] != "") { $natent['def_rlogin_ports'] = $_POST['def_rlogin_ports']; }else{ $natent['def_rlogin_ports'] = ""; } - if ($_POST['def_rsh_ports'] != "") { $natent['def_rsh_ports'] = $_POST['def_rsh_ports']; }else{ $natent['def_rsh_ports'] = ""; } - if ($_POST['def_ssl_ports'] != "") { $natent['def_ssl_ports'] = $_POST['def_ssl_ports']; }else{ $natent['def_ssl_ports'] = ""; } - - - if (isset($id) && $a_nat[$id]) - $a_nat[$id] = $natent; - else { - if (is_numeric($after)) - array_splice($a_nat, $after+1, 0, array($natent)); - else - $a_nat[] = $natent; - } - - write_config(); - - sync_snort_package_config(); - - /* after click go to this page */ - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: snort_define_servers.php?id=$id"); - exit; - } -} - -$pgtitle = "Snort: Interface $id$if_real Define Servers"; -include_once("head.inc"); - -?> - - -' . $pgtitle . '

    ';} - -echo "{$snort_general_css}\n"; -?> - -
    - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Note:
    - Please save your settings before you click start.
    - Please make sure there are no spaces in your - definitions.
    Define Servers
    Define DNS_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define DNS_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 53.
    Define SMTP_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define SMTP_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 25.
    Define Mail_Ports
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 25,143,465,691.
    Define HTTP_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define WWW_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define HTTP_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 80.
    Define SQL_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define ORACLE_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 1521.
    Define MSSQL_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 1433.
    Define TELNET_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define TELNET_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 23.
    Define SNMP_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define SNMP_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 161.
    Define FTP_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define FTP_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 21.
    Define SSH_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define SSH_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is the firewall's SSH port.
    Define POP_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define POP2_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 109.
    Define POP3_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 110.
    Define IMAP_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define IMAP_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 143.
    Define SIP_PROXY_IP
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define SIP_PROXY_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 5060:5090,16384:32768.
    Define SIP_SERVERS
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave - blank to scan all networks.
    Define SIP_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 5060:5090,16384:32768.
    Define AUTH_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 113.
    Define FINGER_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 79.
    Define IRC_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 6665,6666,6667,6668,6669,7000.
    Define NNTP_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 119.
    Define RLOGIN_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 513.
    Define RSH_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 514.
    Define SSL_PORTS
    - Example: Specific ports "25,443" or All ports - betwen "5060:5090 . Default is 25,443,465,636,993,995.
      - - -
     Note: -
    - Please save your settings before you click start.
    - -
    -
    - - - diff --git a/config/snort-dev/snort_download_rules.php b/config/snort-dev/snort_download_rules.php deleted file mode 100644 index 521a7b0f..00000000 --- a/config/snort-dev/snort_download_rules.php +++ /dev/null @@ -1,776 +0,0 @@ - - - - - -' . $pgtitle . '

    ';}?> - -
    - - - - - -
    -
    - - - - -
    - - - - -
    /images/misc/progress_bar.gif' - width='280' height='23' name='progressbar' id='progressbar' - alt='' /> -
    -
    - - -
    -
    -
    -
    - - - - - 0) { - update_status(gettext("snort.org md5 temp file exists...")); - } else { - update_status(gettext("Downloading snort.org md5 file...")); - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - - //$image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename_md5}"); - $image = @file_get_contents("http://www.snort.org/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename_md5}"); - @file_put_contents("{$tmpfname}/{$snort_filename_md5}", $image); - update_status(gettext("Done downloading snort.org md5")); - } -} - -/* download md5 sig from emergingthreats.net */ -if ($emergingthreats == 'on') -{ - update_status(gettext("Downloading emergingthreats md5 file...")); - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - // $image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/version.txt"); - $image = @file_get_contents('http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz.md5'); - @file_put_contents("{$tmpfname}/{$emergingthreats_filename_md5}", $image); - update_status(gettext("Done downloading emergingthreats md5")); -} - -/* download md5 sig from pfsense.org */ -if (file_exists("{$tmpfname}/{$pfsense_rules_filename_md5}")) { - update_status(gettext("pfsense md5 temp file exists...")); -} else { - update_status(gettext("Downloading pfsense md5 file...")); - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - //$image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/pfsense_rules.tar.gz.md5"); - $image = @file_get_contents("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz.md5"); - @file_put_contents("{$tmpfname}/pfsense_rules.tar.gz.md5", $image); - update_status(gettext("Done downloading pfsense md5.")); -} - -/* If md5 file is empty wait 15min exit */ -if ($snortdownload == 'on') -{ - if (0 == filesize("{$tmpfname}/{$snort_filename_md5}")) - { - update_status(gettext("Please wait... You may only check for New Rules every 15 minutes...")); - update_output_window(gettext("Rules are released every month from snort.org. You may download the Rules at any time.")); - hide_progress_bar_status(); - $snortdownload = 'off'; - } -} - -/* If pfsense md5 file is empty wait 15min exit */ -if (0 == filesize("{$tmpfname}/$pfsense_rules_filename_md5")){ - update_status(gettext("Please wait... You may only check for New Pfsense Rules every 15 minutes...")); - update_output_window(gettext("Rules are released to support Pfsense packages.")); - hide_progress_bar_status(); - $pfsensedownload = 'off'; -} - -/* Check if were up to date snort.org */ -if ($snortdownload == 'on') -{ - if (file_exists("{$snortdir}/{$snort_filename_md5}")) - { - $md5_check_new_parse = file_get_contents("{$tmpfname}/{$snort_filename_md5}"); - $md5_check_new = `/bin/echo "{$md5_check_new_parse}" | /usr/bin/awk '{ print $1 }'`; - $md5_check_old_parse = file_get_contents("{$snortdir}/{$snort_filename_md5}"); - $md5_check_old = `/bin/echo "{$md5_check_old_parse}" | /usr/bin/awk '{ print $1 }'`; - if ($md5_check_new == $md5_check_old) - { - update_status(gettext("Your rules are up to date...")); - update_output_window(gettext("You may start Snort now, check update.")); - hide_progress_bar_status(); - $snort_md5_check_ok = 'on'; - } else { - update_status(gettext("Your rules are not up to date...")); - $snort_md5_check_ok = 'off'; - } - } -} - -/* Check if were up to date emergingthreats.net */ -if ($emergingthreats == 'on') -{ - if (file_exists("{$snortdir}/{$emergingthreats_filename_md5}")) - { - $emerg_md5_check_new_parse = file_get_contents("{$tmpfname}/{$emergingthreats_filename_md5}"); - $emerg_md5_check_new = `/bin/echo "{$emerg_md5_check_new_parse}" | /usr/bin/awk '{ print $1 }'`; - $emerg_md5_check_old_parse = file_get_contents("{$snortdir}/{$emergingthreats_filename_md5}"); - $emerg_md5_check_old = `/bin/echo "{$emerg_md5_check_old_parse}" | /usr/bin/awk '{ print $1 }'`; - if ($emerg_md5_check_new == $emerg_md5_check_old) - { - hide_progress_bar_status(); - $emerg_md5_check_ok = 'on'; - } else - $emerg_md5_check_ok = 'off'; - } -} - -/* Check if were up to date pfsense.org */ -if ($pfsensedownload == 'on' && file_exists("{$snortdir}/pfsense_rules.tar.gz.md5")) -{ - $pfsense_check_new_parse = file_get_contents("{$tmpfname}/pfsense_rules.tar.gz.md5"); - $pfsense_md5_check_new = `/bin/echo "{$pfsense_md5_check_new_parse}" | /usr/bin/awk '{ print $1 }'`; - $pfsense_md5_check_old_parse = file_get_contents("{$snortdir}/pfsense_rules.tar.gz.md5"); - $pfsense_md5_check_old = `/bin/echo "{$pfsense_md5_check_old_parse}" | /usr/bin/awk '{ print $1 }'`; - if ($pfsense_md5_check_new == $pfsense_md5_check_old) - { - hide_progress_bar_status(); - $pfsense_md5_check_ok = 'on'; - } else - $pfsense_md5_check_ok = 'off'; -} - -if ($snortdownload == 'on') { - if ($snort_md5_check_ok == 'on') - { - update_status(gettext("Your snort.org rules are up to date...")); - update_output_window(gettext("You may start Snort now...")); - $snortdownload = 'off'; - } -} -if ($emergingthreats == 'on') { - if ($emerg_md5_check_ok == 'on') - { - update_status(gettext("Your Emergingthreats rules are up to date...")); - update_output_window(gettext("You may start Snort now...")); - $emergingthreats = 'off'; - } -} - -/* download snortrules file */ -if ($snortdownload == 'on') -{ - if ($snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$snort_filename}")) { - update_status(gettext("Snortrule tar file exists...")); - } else { - unhide_progress_bar_status(); - update_status(gettext("There is a new set of Snort.org rules posted. Downloading...")); - update_output_window(gettext("May take 4 to 10 min...")); - download_file_with_progress_bar("http://www.snort.org/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename}", "{$tmpfname}/{$snort_filename}"); - update_all_status($static_output); - update_status(gettext("Done downloading rules file.")); - if (150000 > filesize("{$tmpfname}/$snort_filename")){ - update_status(gettext("Error with the snort rules download...")); - - update_output_window(gettext("Snort rules file downloaded failed...")); - $snortdownload = 'off'; - } - } - } -} - -/* download emergingthreats rules file */ -if ($emergingthreats == "on") -{ - if ($emerg_md5_check_ok != 'on') - { - if (file_exists("{$tmpfname}/{$emergingthreats_filename}")) - { - update_status(gettext('Emergingthreats tar file exists...')); - }else{ - update_status(gettext("There is a new set of Emergingthreats rules posted. Downloading...")); - update_output_window(gettext("May take 4 to 10 min...")); - download_file_with_progress_bar('http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz', "{$tmpfname}/{$emergingthreats_filename}"); - update_status(gettext('Done downloading Emergingthreats rules file.')); - } - } -} - -/* download pfsense rules file */ -if ($pfsensedownload == 'on' && $pfsense_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { - update_status(gettext("Snortrule tar file exists...")); - } else { - unhide_progress_bar_status(); - update_status(gettext("There is a new set of Pfsense rules posted. Downloading...")); - update_output_window(gettext("May take 4 to 10 min...")); - download_file_with_progress_bar("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz", $tmpfname . "/{$pfsense_rules_filename}"); - update_all_status($static_output); - update_status(gettext("Done downloading rules file.")); - } -} - -/* Compair md5 sig to file sig */ - -//$premium_url_chk = $config['installedpackages']['snort']['config'][0]['subscriber']; -//if ($premium_url_chk == on) { -//$md5 = file_get_contents("{$tmpfname}/{$snort_filename_md5}"); -//$file_md5_ondisk = `/sbin/md5 {$tmpfname}/{$snort_filename} | /usr/bin/awk '{ print $4 }'`; -// if ($md5 == $file_md5_ondisk) { -// update_status(gettext("Valid md5 checksum pass...")); -//} else { -// update_status(gettext("The downloaded file does not match the md5 file...P is ON")); -// update_output_window(gettext("Error md5 Mismatch...")); -// return; -// } -//} - -//$premium_url_chk = $config['installedpackages']['snort']['config'][0]['subscriber']; -//if ($premium_url_chk != on) { -//$md55 = `/bin/cat {$tmpfname}/{$snort_filename_md5} | /usr/bin/awk '{ print $4 }'`; -//$file_md5_ondisk2 = `/sbin/md5 {$tmpfname}/{$snort_filename} | /usr/bin/awk '{ print $4 }'`; -// if ($md55 == $file_md5_ondisk2) { -// update_status(gettext("Valid md5 checksum pass...")); -//} else { -// update_status(gettext("The downloaded file does not match the md5 file...Not P")); -// update_output_window(gettext("Error md5 Mismatch...")); -// return; -// } -//} - -/* Untar snort rules file individually to help people with low system specs */ -if ($snortdownload == 'on' && $snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$snort_filename}")) { - - // find out if were in 1.2.3-RELEASE - $pfsense_ver_chk = exec('/bin/cat /etc/version'); - if ($pfsense_ver_chk === '1.2.3-RELEASE') { - $pfsense_stable = 'yes'; - }else{ - $pfsense_stable = 'no'; - } - - // get the system arch - $snort_arch_ck = exec('/usr/bin/uname -m'); - if ($snort_arch_ck === 'i386') { - $snort_arch = 'i386'; - }else{ - $snort_arch = 'x86-64'; // amd64 - } - - if ($pfsense_stable === 'yes') { - $freebsd_version_so = 'FreeBSD-7-3'; - }else{ - $freebsd_version_so = 'FreeBSD-8-1'; - } - - update_status(gettext("Extracting Snort.org rules...")); - update_output_window(gettext("May take a while...")); - /* extract snort.org rules and add prefix to all snort.org files*/ - exec("/bin/rm -r {$snortdir}/rules"); - sleep(2); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} rules/"); - chdir ("/usr/local/etc/snort/rules"); - sleep(2); - - $snort_dirList = scandir("{$snortdir}/rules"); // Waning: only in php 5 - $snortrules_filterList = snortscandirfilter($snort_dirList, '/.*\.rules/', '/\.rules/', ''); - - if (!empty($snortrules_filterList)) { - foreach ($snortrules_filterList as $snort_rule_move) - { - exec("/bin/mv -f {$snortdir}/rules/{$snort_rule_move}.rules {$snortdir}/rules/snort_{$snort_rule_move}.rules"); - } - } - - /* extract so_rules */ - - // list so_rules and exclude dir - exec("/usr/bin/tar --exclude='precompiled' --exclude='src' -tf {$tmpfname}/{$snort_filename} so_rules", $so_rules_list); - - $so_rulesPattr = array('/\//', '/\.rules/'); - $so_rulesPattw = array('', ''); - - // build list of so_rules - $so_rules_filterList = snortscandirfilter($so_rules_list, '/\/.*\.rules/', $so_rulesPattr, $so_rulesPattw); - - if (!empty($so_rules_filterList)) { - // cp rule to so tmp dir - foreach ($so_rules_filterList as $so_rule) - { - - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} so_rules/{$so_rule}.rules"); - - } - // mv and rename so rules - foreach ($so_rules_filterList as $so_rule_move) - { - exec("/bin/mv -f {$snortdir}/so_rules/{$so_rule_move}.rules {$snortdir}/rules/snort_{$so_rule_move}.so.rules"); - } - } - - /* extract preproc_rules */ - - // list so_rules and exclude dir - exec("/usr/bin/tar --exclude='precompiled' --exclude='src' -tf {$tmpfname}/{$snort_filename} preproc_rules", $preproc_rules_list); - - $preproc_rules_filterList = snortscandirfilter($preproc_rules_list, '/\/.*\.rules/', $so_rulesPattr, $so_rulesPattw); - - if (!empty($preproc_rules_filterList)) { - // cp rule to so tmp dir - foreach ($preproc_rules_filterList as $preproc_rule) - { - - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} preproc_rules/{$preproc_rule}.rules"); - - } - // mv and rename preproc_rules - foreach ($preproc_rules_filterList as $preproc_rule_move) - { - exec("/bin/mv -f {$snortdir}/preproc_rules/{$preproc_rule_move}.rules {$snortdir}/rules/snort_{$preproc_rule_move}.preproc.rules"); - } - } - - /* extract base etc files */ - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} etc/"); - exec("/bin/mv -f {$snortdir}/etc/* {$snortdir}"); - exec("/bin/rm -r {$snortdir}/etc"); - - update_status(gettext("Done extracting Snort.org Rules.")); - }else{ - update_status(gettext("Error extracting Snort.org Rules...")); - update_output_window(gettext("Error Line 755")); - $snortdownload = 'off'; - } -} - -/* Untar emergingthreats rules to tmp */ -if ($emergingthreats == 'on') -{ - if ($emerg_md5_check_ok != 'on') - { - if (file_exists("{$tmpfname}/{$emergingthreats_filename}")) - { - update_status(gettext("Extracting rules...")); - update_output_window(gettext("May take a while...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$emergingthreats_filename} -C {$snortdir} rules/"); - } - } -} - -/* Untar Pfsense rules to tmp */ -if ($pfsensedownload == 'on' && $pfsense_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { - update_status(gettext("Extracting Pfsense rules...")); - update_output_window(gettext("May take a while...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$pfsense_rules_filename} -C {$snortdir} rules/"); - } -} - -/* Untar snort signatures */ -if ($snortdownload == 'on' && $snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/{$snort_filename}")) { - $signature_info_chk = $config['installedpackages']['snortglobal']['signatureinfo']; - if ($premium_url_chk == 'on') { - update_status(gettext("Extracting Signatures...")); - update_output_window(gettext("May take a while...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} doc/signatures/"); - update_status(gettext("Done extracting Signatures.")); - } - } -} - -/* Copy md5 sig to snort dir */ -if ($snortdownload == 'on') -{ - if ($snort_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/$snort_filename_md5")) { - update_status(gettext("Copying md5 sig to snort directory...")); - exec("/bin/cp {$tmpfname}/$snort_filename_md5 {$snortdir}/$snort_filename_md5"); - }else{ - update_status(gettext("The md5 file does not exist...")); - update_output_window(gettext("Error copying config...")); - $snortdownload = 'off'; - } - } -} - -/* Copy emergingthreats md5 sig to snort dir */ -if ($emergingthreats == "on") -{ - if ($emerg_md5_check_ok != 'on') - { - if (file_exists("{$tmpfname}/$emergingthreats_filename_md5")) - { - update_status(gettext("Copying md5 sig to snort directory...")); - exec("/bin/cp {$tmpfname}/$emergingthreats_filename_md5 {$snortdir}/$emergingthreats_filename_md5"); - }else{ - update_status(gettext("The emergingthreats md5 file does not exist...")); - update_output_window(gettext("Error copying config...")); - $emergingthreats = 'off'; - } - } -} - -/* Copy Pfsense md5 sig to snort dir */ -if ($pfsensedownload == 'on' && $pfsense_md5_check_ok != 'on') { - if (file_exists("{$tmpfname}/$pfsense_rules_filename_md5")) { - update_status(gettext("Copying Pfsense md5 sig to snort directory...")); - exec("/bin/cp {$tmpfname}/$pfsense_rules_filename_md5 {$snortdir}/$pfsense_rules_filename_md5"); - } else { - update_status(gettext("The Pfsense md5 file does not exist...")); - update_output_window(gettext("Error copying config...")); - $pfsensedownload = 'off'; - } -} - -/* Copy signatures dir to snort dir */ -if ($snortdownload == 'on') -{ - if ($snort_md5_check_ok != 'on') - { - $signature_info_chk = $config['installedpackages']['snortglobal']['signatureinfo']; - if ($premium_url_chk == 'on') - { - if (file_exists("{$snortdir}/doc/signatures")) { - update_status(gettext("Copying signatures...")); - update_output_window(gettext("May take a while...")); - exec("/bin/mv -f {$snortdir}/doc/signatures {$snortdir}/signatures"); - exec("/bin/rm -r {$snortdir}/doc/signatures"); - update_status(gettext("Done copying signatures.")); - }else{ - update_status(gettext("Directory signatures exist...")); - update_output_window(gettext("Error copying signature...")); - $snortdownload = 'off'; - } - } - } -} - -/* double make shure cleanup emerg rules that dont belong */ -if (file_exists("/usr/local/etc/snort/rules/emerging-botcc-BLOCK.rules")) { - apc_clear_cache(); - @unlink("/usr/local/etc/snort/rules/emerging-botcc-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-botcc.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-compromised-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-drop-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-dshield-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-rbn-BLOCK.rules"); - @unlink("/usr/local/etc/snort/rules/emerging-tor-BLOCK.rules"); -} - -if (file_exists("/usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so")) { - exec("/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so"); - exec("/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example\*"); -} - -/* make shure default rules are in the right format */ -exec("/usr/bin/sed -i '' 's/^[ \t]*//' /usr/local/etc/snort/rules/*.rules"); // remove white spaces from begining of line -exec("/usr/bin/sed -i '' 's/^#alert*/\# alert/' /usr/local/etc/snort/rules/*.rules"); -exec("/usr/bin/sed -i '' 's/^##alert*/\# alert/' /usr/local/etc/snort/rules/*.rules"); -exec("/usr/bin/sed -i '' 's/^## alert*/\# alert/' /usr/local/etc/snort/rules/*.rules"); - -/* create a msg-map for snort */ -update_status(gettext("Updating Alert Messages...")); -update_output_window(gettext("Please Wait...")); -exec("/usr/local/bin/perl /usr/local/bin/create-sidmap.pl /usr/local/etc/snort/rules > /usr/local/etc/snort/sid-msg.map"); - - -////////////////// - -/* open oinkmaster_conf for writing" function */ -function oinkmaster_conf($id, $if_real, $iface_uuid) -{ - global $config, $snort_md5_check_ok, $emerg_md5_check_ok, $pfsense_md5_check_ok; - - @unlink("/usr/local/etc/snort/snort_{$iface_uuid}_{$if_real}/oinkmaster_{$iface_uuid}_{$if_real}.conf"); - - /* enable disable setting will carry over with updates */ - /* TODO carry signature changes with the updates */ - if ($snort_md5_check_ok != 'on' || $emerg_md5_check_ok != 'on' || $pfsense_md5_check_ok != 'on') { - - $selected_sid_on_sections = ""; - $selected_sid_off_sections = ""; - - if (!empty($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_on'])) { - $enabled_sid_on = trim($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_on']); - $enabled_sid_on_array = split('\|\|', $enabled_sid_on); - foreach($enabled_sid_on_array as $enabled_item_on) - $selected_sid_on_sections .= "$enabled_item_on\n"; - } - - if (!empty($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_off'])) { - $enabled_sid_off = trim($config['installedpackages']['snortglobal']['rule'][$id]['rule_sid_off']); - $enabled_sid_off_array = split('\|\|', $enabled_sid_off); - foreach($enabled_sid_off_array as $enabled_item_off) - $selected_sid_off_sections .= "$enabled_item_off\n"; - } - - if (!empty($selected_sid_on_sections) || !empty($selected_sid_off_sections)) { - $snort_sid_text = << /usr/local/etc/snort/oinkmaster_{$iface_uuid}_{$if_real}.log"); - } - } -} - -/* Start the proccess for every interface rule */ -/* TODO: try to make the code smother */ -if (is_array($config['installedpackages']['snortglobal']['rule'])) -{ - foreach ($config['installedpackages']['snortglobal']['rule'] as $id => $value) { - $result_lan = $value['interface']; - $if_real = snort_get_real_interface($result_lan); - $iface_uuid = $value['uuid']; - - /* make oinkmaster.conf for each interface rule */ - oinkmaster_conf($id, $if_real, $iface_uuid); - - /* run oinkmaster for each interface rule */ - oinkmaster_run($id, $if_real, $iface_uuid); - } -} - -////////////// - -/* mark the time update finnished */ -$config['installedpackages']['snortglobal']['last_rules_install'] = date("Y-M-jS-h:i-A"); - -/* remove old $tmpfname files */ -if (is_dir('/usr/local/etc/snort/tmp')) { - update_status(gettext("Cleaning up...")); - exec("/bin/rm -r /usr/local/etc/snort/tmp/snort_rules_up"); - sleep(2); - exec("/bin/rm -r /usr/local/etc/snort/tmp/rules_bk"); -} - -/* XXX: These are needed if snort is run as snort user -mwexec("/usr/sbin/chown -R snort:snort /var/log/snort", true); -mwexec("/usr/sbin/chown -R snort:snort /usr/local/etc/snort", true); -mwexec("/usr/sbin/chown -R snort:snort /usr/local/lib/snort", true); -*/ -/* make all dirs snorts */ -mwexec("/bin/chmod -R 755 /var/log/snort", true); -mwexec("/bin/chmod -R 755 /usr/local/etc/snort", true); -mwexec("/bin/chmod -R 755 /usr/local/lib/snort", true); - -/* hide progress bar and lets end this party */ -hide_progress_bar_status(); - -if ($snortdownload == 'off' && $emergingthreats == 'off' && $pfsensedownload == 'off') - update_output_window(gettext("Finished...")); -else if ($snort_md5_check_ok == 'on' && $emerg_md5_check_ok == 'on' && $pfsense_md5_check_ok == 'on') - update_output_window(gettext("Finished...")); -else { - /* You are Not Up to date, always stop snort when updating rules for low end machines */; - update_status(gettext("You are NOT up to date...")); - exec("/bin/sh /usr/local/etc/rc.d/snort.sh start"); - update_status(gettext("The Rules update finished...")); - update_output_window(gettext("Snort has restarted with your new set of rules...")); - exec("/bin/rm /tmp/snort_download_halt.pid"); -} - -update_status(gettext("The Rules update finished...")); -conf_mount_ro(); - -?> diff --git a/config/snort-dev/snort_download_updates.php b/config/snort-dev/snort_download_updates.php deleted file mode 100644 index e902cd64..00000000 --- a/config/snort-dev/snort_download_updates.php +++ /dev/null @@ -1,322 +0,0 @@ -. - 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. - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -global $g; - -/* load only javascript that is needed */ -$snort_load_jquery = 'yes'; -$snort_load_jquery_colorbox = 'yes'; - - -/* quick md5s chk */ -$snort_org_sig_chk_local = 'N/A'; -if (file_exists("/usr/local/etc/snort/{$snort_rules_file}.md5")) - $snort_org_sig_chk_local = exec("/bin/cat /usr/local/etc/snort/{$snort_rules_file}.md5"); - -$emergingt_net_sig_chk_local = 'N/A'; -if(file_exists('/usr/local/etc/snort/emerging.rules.tar.gz.md5')) - $emergingt_net_sig_chk_local = exec('/bin/cat /usr/local/etc/snort/emerging.rules.tar.gz.md5'); - -$pfsense_org_sig_chk_local = 'N/A'; -if(file_exists('/usr/local/etc/snort/pfsense_rules.tar.gz.md5')) - $pfsense_org_sig_chk_local = exec('/bin/cat /usr/local/etc/snort/pfsense_rules.tar.gz.md5'); - -/* define checks */ -$oinkid = $config['installedpackages']['snortglobal']['oinkmastercode']; -$snortdownload = $config['installedpackages']['snortglobal']['snortdownload']; -$emergingthreats = $config['installedpackages']['snortglobal']['emergingthreats']; - -if ($snortdownload != 'on' && $emergingthreats != 'on') - $snort_emrging_info = 'stop'; - -if ($oinkid == '' && $snortdownload != 'off') - $snort_oinkid_info = 'stop'; - -if ($snort_emrging_info == 'stop' || $snort_oinkid_info == 'stop') - $error_stop = 'true'; - -/* check if main rule directory is empty */ -$if_mrule_dir = "/usr/local/etc/snort/rules"; -$mfolder_chk = (count(glob("$if_mrule_dir/*")) === 0) ? 'empty' : 'full'; - -/* check for logfile */ -$update_logfile_chk = 'no'; -if (file_exists('/usr/local/etc/snort/snort_update.log')) - $update_logfile_chk = 'yes'; - -header("snort_help_info.php"); -header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" ); -header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ); -header( "Cache-Control: no-cache, must-revalidate" ); -header( "Pragma: no-cache" ); - - -$pgtitle = "Services: Snort: Updates"; -include_once("head.inc"); - -?> - - - - - - - -' . $pgtitle . '

    ';}?> - - - - - - - - -
    - -
    -
    - - - - -
    - - - - -
    -
    -
    -
    - -
    - - - - - -
    -
    - - INSTALLED SIGNATURE RULESET
    -
    -

    SNORT.ORG >>>  
    - EMERGINGTHREATS.NET >>>  
    - PFSENSE.ORG >>>  
    -

    - -
    -
    - -
    - - - - - - -
    -
    -
    -
    - -
    - - - - - -
    -
    - - UPDATE YOUR RULES
    -
    - - Update Rules    
    -

    - WARNING:  No rule types have been selected for download. "Global Settings Tab"
    '; - - if ($mfolder_chk == 'empty') { - - echo ' - WARNING:  The main rules directory is empty. /usr/local/etc/snort/rules' ."\n"; - } - - echo '

    ' . "\n"; - - }else{ - - echo ' - -
    ' . "\n"; - - if ($mfolder_chk == 'empty') { - - echo ' -

    - WARNING:  The main rules directory is empty. /usr/local/etc/snort/rules -

    '; - } - - } - - ?>
    - -
    -
    - -
    - - - - - -
    -
    - - VIEW UPDATE LOG
    -
    - - Update Log    ' . "\n"; - }else{ - echo ' - ' . "\n"; - } - - ?>
    -
    - -
    -
    - -
    - - - - - -
    -
    -
    -
    - -
    - - - - - -
    -
    - - NOTE:  Snort.org and Emergingthreats.net - will go down from time to time. Please be patient.
    -
    - -
    - - - - - -
    -
    -
    -
    - -
    -
    - - - - - -
    -
    -
    - - - - - - - diff --git a/config/snort-dev/snort_gui.inc b/config/snort-dev/snort_gui.inc deleted file mode 100644 index d2fd4e30..00000000 --- a/config/snort-dev/snort_gui.inc +++ /dev/null @@ -1,203 +0,0 @@ -\n"; - echo " \n"; - echo " \n"; - echo "
    \n"; - echo " \n"; - echo " "; - if(stristr($msg, "apply") == true) { - echo " "; - } - echo "
    \n"; - echo "    \n"; - echo " {$msg}\n"; - echo " "; - echo " \n"; - echo "
    \n"; - echo "
    \n"; - echo " \n"; - echo "\n"; - echo "\n"; - echo "\n
    \n"; - - -} - - -/* makes boxes round */ -/* load at bottom */ - -$snort_custom_rnd_box = ' -' . "\n"; - -/* general css code */ -$snort_general_css = ' - - ' . "\n"; - - -/* general css code for snort_interface.php */ -$snort_interfaces_css = ' - -' . "\n"; - -?> diff --git a/config/snort-dev/snort_interfaces.php b/config/snort-dev/snort_interfaces.php deleted file mode 100644 index 5ee7a176..00000000 --- a/config/snort-dev/snort_interfaces.php +++ /dev/null @@ -1,448 +0,0 @@ -. -Copyright (C) 2008-2009 Robert Zelaya. -Copyright (C) 2011 Ermal Luci -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. -*/ - -//$nocsrf = true; -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -global $g; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; - -if (!is_array($config['installedpackages']['snortglobal']['rule'])) - $config['installedpackages']['snortglobal']['rule'] = array(); -$a_nat = &$config['installedpackages']['snortglobal']['rule']; -$id_gen = count($config['installedpackages']['snortglobal']['rule']); - -if (isset($_POST['del_x'])) { - /* delete selected rules */ - if (is_array($_POST['rule'])) { - conf_mount_rw(); - foreach ($_POST['rule'] as $rulei) { - - /* convert fake interfaces to real */ - $if_real = snort_get_real_interface($a_nat[$rulei]['interface']); - $snort_uuid = $a_nat[$rulei]['uuid']; - - Running_Stop($snort_uuid,$if_real, $rulei); - - /* delete iface rule dirs */ - if (file_exists("/usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}")) { - exec("/bin/rm -r /usr/local/etc/snort/snort_{$snort_uuid}_{$if_real}"); - } - if (file_exists("/var/log/snort/{$snort_uuid}_{$if_real}")) { - exec("/bin/rm -r /var/log/snort/{$snort_uuid}_{$if_real}"); - } - if (file_exists("/var/log/snort/barnyard2/{$snort_uuid}_{$if_real}")) { - exec("/bin/rm -r /var/log/snort/barnyard2/{$snort_uuid}_{$if_real}"); - } - - unset($a_nat[$rulei]); - } - conf_mount_ro(); - - write_config(); - sleep(2); - - /* if there are no ifaces do not create snort.sh */ - if (!empty($config['installedpackages']['snortglobal']['rule'])) - create_snort_sh(); - else { - conf_mount_rw(); - exec('/bin/rm /usr/local/etc/rc.d/snort.sh'); - conf_mount_ro(); - } - - sync_snort_package_config(); - - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: /snort/snort_interfaces.php"); - exit; - } - -} - - -/* start/stop snort */ -if ($_GET['act'] == 'toggle' && is_numeric($id)) { - - $if_real = snort_get_real_interface($config['installedpackages']['snortglobal']['rule'][$id]['interface']); - $snort_uuid = $config['installedpackages']['snortglobal']['rule'][$id]['uuid']; - - /* Log Iface stop */ - exec("/usr/bin/logger -p daemon.info -i -t SnortStartup 'Toggle for {$snort_uuid}_{$if_real}...'"); - - sync_snort_package_config(); - - $snort_pgrep_chk_toggle = snortRunningChk('snort', $snort_uuid, $if_real); - - if (!empty($snort_pgrep_chk_toggle)) { - Running_Stop($snort_uuid, $if_real, $id); - - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - - } else { - Running_Start($snort_uuid, $if_real, $id); - - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - } - sleep(4); // So the GUI reports correctly - header("Location: /snort/snort_interfaces.php"); - exit; -} - - -$pgtitle = "Services: $snort_package_version"; -include_once("head.inc"); - -?> - - -' . $pgtitle . '

    '; -?> - - - -
    -'; - - if($savemsg) - print_info_box_np2("{$savemsg}"); - else { - print_info_box_np2(' - The Snort configuration has changed for one or more interfaces.
    - You must apply the changes in order for them to take effect.
    - '); - } - } -?> - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IfSnortPerformanceBlockBarnyard2Description - - - - - -
    -
    - - - - - - - - -   - - - - - -
    - -
    - - - - -
    -
    -
    -
    - -
    - - - - -
    -
    - - - - -
    Note:
    - This is the Snort Menu where you can see an over - view of all your interface settings.
    - Please edit the Global Settings tab before adding - an interface.
    -
    - Warning:
    - New settings will not take effect until interface restart. -
    -
    - Click on the icon to add a - interface.                                            Click - on the icon to start - snort and barnyard2.
    - Click on the icon to edit a - interface and settings.                       Click - on the icon to stop - snort and barnyard2.
    - Click on the icon to - delete a interface and settings.
    -
    - -
    - - "") { - echo ""; - } - ?>
    - - -
    -
    -
    - - - -
    SNORT registered � by Sourcefire, Inc, Barnyard2 -registered � by securixlive.com, Orion registered � by Robert Zelaya, -Emergingthreats registered � by emergingthreats.net, Mysql registered � -by Mysql.com
    - - - - - - - - diff --git a/config/snort-dev/snort_interfaces_edit.php b/config/snort-dev/snort_interfaces_edit.php deleted file mode 100644 index aee7bee1..00000000 --- a/config/snort-dev/snort_interfaces_edit.php +++ /dev/null @@ -1,755 +0,0 @@ -. - Copyright (C) 2008-2009 Robert Zelaya. - Copyright (C) 2011 Ermal Luci - 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. - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -global $g; - -if (!is_array($config['installedpackages']['snortglobal']['rule'])) - $config['installedpackages']['snortglobal']['rule'] = array(); - -$a_nat = &$config['installedpackages']['snortglobal']['rule']; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (is_null($id)) { - header("Location: /snort/snort_interfaces.php"); - exit; -} - -if (isset($_GET['dup'])) { - $id = $_GET['dup']; - $after = $_GET['dup']; -} - - -/* always have a limit of (65535) numbers only or snort will not start do to id limits */ -/* TODO: When inline gets added make the uuid the port number lisstening */ -$pconfig = array(); - -/* gen uuid for each iface !inportant */ -if (empty($config['installedpackages']['snortglobal']['rule'][$id]['uuid'])) { - //$snort_uuid = gen_snort_uuid(strrev(uniqid(true))); - $snort_uuid = 0; - while ($snort_uuid > 65535 || $snort_uuid == 0) { - $snort_uuid = mt_rand(1, 65535); - $pconfig['uuid'] = $snort_uuid; - } -} else { - $snort_uuid = $a_nat[$id]['uuid']; - $pconfig['uuid'] = $snort_uuid; -} - -if (isset($id) && $a_nat[$id]) { - - /* old options */ - $pconfig['def_ssl_ports_ignore'] = $a_nat[$id]['def_ssl_ports_ignore']; - $pconfig['flow_depth'] = $a_nat[$id]['flow_depth']; - $pconfig['max_queued_bytes'] = $a_nat[$id]['max_queued_bytes']; - $pconfig['max_queued_segs'] = $a_nat[$id]['max_queued_segs']; - $pconfig['perform_stat'] = $a_nat[$id]['perform_stat']; - $pconfig['http_inspect'] = $a_nat[$id]['http_inspect']; - $pconfig['other_preprocs'] = $a_nat[$id]['other_preprocs']; - $pconfig['ftp_preprocessor'] = $a_nat[$id]['ftp_preprocessor']; - $pconfig['smtp_preprocessor'] = $a_nat[$id]['smtp_preprocessor']; - $pconfig['sf_portscan'] = $a_nat[$id]['sf_portscan']; - $pconfig['dce_rpc_2'] = $a_nat[$id]['dce_rpc_2']; - $pconfig['dns_preprocessor'] = $a_nat[$id]['dns_preprocessor']; - $pconfig['def_dns_servers'] = $a_nat[$id]['def_dns_servers']; - $pconfig['def_dns_ports'] = $a_nat[$id]['def_dns_ports']; - $pconfig['def_smtp_servers'] = $a_nat[$id]['def_smtp_servers']; - $pconfig['def_smtp_ports'] = $a_nat[$id]['def_smtp_ports']; - $pconfig['def_mail_ports'] = $a_nat[$id]['def_mail_ports']; - $pconfig['def_http_servers'] = $a_nat[$id]['def_http_servers']; - $pconfig['def_www_servers'] = $a_nat[$id]['def_www_servers']; - $pconfig['def_http_ports'] = $a_nat[$id]['def_http_ports']; - $pconfig['def_sql_servers'] = $a_nat[$id]['def_sql_servers']; - $pconfig['def_oracle_ports'] = $a_nat[$id]['def_oracle_ports']; - $pconfig['def_mssql_ports'] = $a_nat[$id]['def_mssql_ports']; - $pconfig['def_telnet_servers'] = $a_nat[$id]['def_telnet_servers']; - $pconfig['def_telnet_ports'] = $a_nat[$id]['def_telnet_ports']; - $pconfig['def_snmp_servers'] = $a_nat[$id]['def_snmp_servers']; - $pconfig['def_snmp_ports'] = $a_nat[$id]['def_snmp_ports']; - $pconfig['def_ftp_servers'] = $a_nat[$id]['def_ftp_servers']; - $pconfig['def_ftp_ports'] = $a_nat[$id]['def_ftp_ports']; - $pconfig['def_ssh_servers'] = $a_nat[$id]['def_ssh_servers']; - $pconfig['def_ssh_ports'] = $a_nat[$id]['def_ssh_ports']; - $pconfig['def_pop_servers'] = $a_nat[$id]['def_pop_servers']; - $pconfig['def_pop2_ports'] = $a_nat[$id]['def_pop2_ports']; - $pconfig['def_pop3_ports'] = $a_nat[$id]['def_pop3_ports']; - $pconfig['def_imap_servers'] = $a_nat[$id]['def_imap_servers']; - $pconfig['def_imap_ports'] = $a_nat[$id]['def_imap_ports']; - $pconfig['def_sip_proxy_ip'] = $a_nat[$id]['def_sip_proxy_ip']; - $pconfig['def_sip_servers'] = $a_nat[$id]['def_sip_servers']; - $pconfig['def_sip_ports'] = $a_nat[$id]['def_sip_ports']; - $pconfig['def_sip_proxy_ports'] = $a_nat[$id]['def_sip_proxy_ports']; - $pconfig['def_auth_ports'] = $a_nat[$id]['def_auth_ports']; - $pconfig['def_finger_ports'] = $a_nat[$id]['def_finger_ports']; - $pconfig['def_irc_ports'] = $a_nat[$id]['def_irc_ports']; - $pconfig['def_nntp_ports'] = $a_nat[$id]['def_nntp_ports']; - $pconfig['def_rlogin_ports'] = $a_nat[$id]['def_rlogin_ports']; - $pconfig['def_rsh_ports'] = $a_nat[$id]['def_rsh_ports']; - $pconfig['def_ssl_ports'] = $a_nat[$id]['def_ssl_ports']; - $pconfig['barnyard_enable'] = $a_nat[$id]['barnyard_enable']; - $pconfig['barnyard_mysql'] = $a_nat[$id]['barnyard_mysql']; - $pconfig['enable'] = $a_nat[$id]['enable']; - $pconfig['interface'] = $a_nat[$id]['interface']; - $pconfig['descr'] = $a_nat[$id]['descr']; - $pconfig['performance'] = $a_nat[$id]['performance']; - $pconfig['blockoffenders7'] = $a_nat[$id]['blockoffenders7']; - $pconfig['blockoffenderskill'] = $a_nat[$id]['blockoffenderskill']; - $pconfig['blockoffendersip'] = $a_nat[$id]['blockoffendersip']; - $pconfig['whitelistname'] = $a_nat[$id]['whitelistname']; - $pconfig['homelistname'] = $a_nat[$id]['homelistname']; - $pconfig['externallistname'] = $a_nat[$id]['externallistname']; - $pconfig['suppresslistname'] = $a_nat[$id]['suppresslistname']; - $pconfig['snortalertlogtype'] = $a_nat[$id]['snortalertlogtype']; - $pconfig['alertsystemlog'] = $a_nat[$id]['alertsystemlog']; - $pconfig['tcpdumplog'] = $a_nat[$id]['tcpdumplog']; - $pconfig['snortunifiedlog'] = $a_nat[$id]['snortunifiedlog']; - $pconfig['snortalertcvs'] = $a_nat[$id]['snortalertcvs']; - $pconfig['snortunifiedlogbasic'] = $a_nat[$id]['snortunifiedlogbasic']; - $pconfig['configpassthru'] = base64_decode($a_nat[$id]['configpassthru']); - $pconfig['barnconfigpassthru'] = $a_nat[$id]['barnconfigpassthru']; - $pconfig['rulesets'] = $a_nat[$id]['rulesets']; - $pconfig['rule_sid_off'] = $a_nat[$id]['rule_sid_off']; - $pconfig['rule_sid_on'] = $a_nat[$id]['rule_sid_on']; - - - if (!$pconfig['interface']) - $pconfig['interface'] = "wan"; - } else - $pconfig['interface'] = "wan"; - -/* convert fake interfaces to real */ -$if_real = snort_get_real_interface($pconfig['interface']); - -if (isset($_GET['dup'])) - unset($id); - - /* alert file */ - $d_snortconfdirty_path = "/var/run/snort_conf_{$snort_uuid}_{$if_real}.dirty"; - - if ($_POST["Submit"]) { - - if ($_POST['descr'] == '' && $pconfig['descr'] == '') { - $input_errors[] = "Please enter a description for your reference."; - } - - if ($id == "" && $config['installedpackages']['snortglobal']['rule'][0]['interface'] != "") { - - $rule_array = $config['installedpackages']['snortglobal']['rule']; - foreach ($config['installedpackages']['snortglobal']['rule'] as $value) { - - $result_lan = $value['interface']; - $if_real = snort_get_real_interface($result_lan); - - if ($_POST['interface'] == $result_lan) - $input_errors[] = "Interface $result_lan is in use. Please select another interface."; - } - } - - /* XXX: Void code - * check for overlaps - foreach ($a_nat as $natent) { - if (isset($id) && ($a_nat[$id]) && ($a_nat[$id] === $natent)) - continue; - if ($natent['interface'] != $_POST['interface']) - continue; - } - */ - - /* if no errors write to conf */ - if (!$input_errors) { - $natent = array(); - - /* write to conf for 1st time or rewrite the answer */ - if ($_POST['interface']) - $natent['interface'] = $_POST['interface']; - - /* if post write to conf or rewite the answer */ - $natent['enable'] = $_POST['enable'] ? 'on' : 'off'; - $natent['uuid'] = $pconfig['uuid']; - $natent['descr'] = $_POST['descr'] ? $_POST['descr'] : $pconfig['descr']; - $natent['performance'] = $_POST['performance'] ? $_POST['performance'] : $pconfig['performance']; - /* if post = on use on off or rewrite the conf */ - if ($_POST['blockoffenders7'] == "on") - $natent['blockoffenders7'] = 'on'; - else - $natent['blockoffenders7'] = 'off'; - if ($_POST['blockoffenderskill'] == "on") - $natent['blockoffenderskill'] = 'on'; - if ($_POST['blockoffendersip']) - $natent['blockoffendersip'] = $_POST['blockoffendersip']; - - $natent['whitelistname'] = $_POST['whitelistname'] ? $_POST['whitelistname'] : $pconfig['whitelistname']; - $natent['homelistname'] = $_POST['homelistname'] ? $_POST['homelistname'] : $pconfig['homelistname']; - $natent['externallistname'] = $_POST['externallistname'] ? $_POST['externallistname'] : $pconfig['externallistname']; - $natent['suppresslistname'] = $_POST['suppresslistname'] ? $_POST['suppresslistname'] : $pconfig['suppresslistname']; - $natent['snortalertlogtype'] = $_POST['snortalertlogtype'] ? $_POST['snortalertlogtype'] : $pconfig['snortalertlogtype']; - if ($_POST['alertsystemlog'] == "on") { $natent['alertsystemlog'] = 'on'; }else{ $natent['alertsystemlog'] = 'off'; } - if ($_POST['enable']) { $natent['enable'] = 'on'; } else unset($natent['enable']); - if ($_POST['tcpdumplog'] == "on") { $natent['tcpdumplog'] = 'on'; }else{ $natent['tcpdumplog'] = 'off'; } - if ($_POST['snortunifiedlog'] == "on") { $natent['snortunifiedlog'] = 'on'; }else{ $natent['snortunifiedlog'] = 'off'; } - if ($_POST['snortalertcvs'] == "on") { $natent['snortalertcvs'] = 'on'; }else{ $natent['snortalertcvs'] = 'off'; } - if ($_POST['snortunifiedlogbasic'] == "on") { $natent['snortunifiedlogbasic'] = 'on'; }else{ $natent['snortunifiedlogbasic'] = 'off'; } - $natent['configpassthru'] = $_POST['configpassthru'] ? base64_encode($_POST['configpassthru']) : $pconfig['configpassthru']; - /* if optiion = 0 then the old descr way will not work */ - - /* rewrite the options that are not in post */ - /* make shure values are set befor repost or conf.xml will be broken */ - if ($pconfig['def_ssl_ports_ignore'] != "") { $natent['def_ssl_ports_ignore'] = $pconfig['def_ssl_ports_ignore']; } - if ($pconfig['flow_depth'] != "") { $natent['flow_depth'] = $pconfig['flow_depth']; } - if ($pconfig['max_queued_bytes'] != "") { $natent['max_queued_bytes'] = $pconfig['max_queued_bytes']; } - if ($pconfig['max_queued_segs'] != "") { $natent['max_queued_segs'] = $pconfig['max_queued_segs']; } - if ($pconfig['perform_stat'] != "") { $natent['perform_stat'] = $pconfig['perform_stat']; } - if ($pconfig['http_inspect'] != "") { $natent['http_inspect'] = $pconfig['http_inspect']; } - if ($pconfig['other_preprocs'] != "") { $natent['other_preprocs'] = $pconfig['other_preprocs']; } - if ($pconfig['ftp_preprocessor'] != "") { $natent['ftp_preprocessor'] = $pconfig['ftp_preprocessor']; } - if ($pconfig['smtp_preprocessor'] != "") { $natent['smtp_preprocessor'] = $pconfig['smtp_preprocessor']; } - if ($pconfig['sf_portscan'] != "") { $natent['sf_portscan'] = $pconfig['sf_portscan']; } - if ($pconfig['dce_rpc_2'] != "") { $natent['dce_rpc_2'] = $pconfig['dce_rpc_2']; } - if ($pconfig['dns_preprocessor'] != "") { $natent['dns_preprocessor'] = $pconfig['dns_preprocessor']; } - if ($pconfig['def_dns_servers'] != "") { $natent['def_dns_servers'] = $pconfig['def_dns_servers']; } - if ($pconfig['def_dns_ports'] != "") { $natent['def_dns_ports'] = $pconfig['def_dns_ports']; } - if ($pconfig['def_smtp_servers'] != "") { $natent['def_smtp_servers'] = $pconfig['def_smtp_servers']; } - if ($pconfig['def_smtp_ports'] != "") { $natent['def_smtp_ports'] = $pconfig['def_smtp_ports']; } - if ($pconfig['def_mail_ports'] != "") { $natent['def_mail_ports'] = $pconfig['def_mail_ports']; } - if ($pconfig['def_http_servers'] != "") { $natent['def_http_servers'] = $pconfig['def_http_servers']; } - if ($pconfig['def_www_servers'] != "") { $natent['def_www_servers'] = $pconfig['def_www_servers']; } - if ($pconfig['def_http_ports'] != "") { $natent['def_http_ports'] = $pconfig['def_http_ports']; } - if ($pconfig['def_sql_servers'] != "") { $natent['def_sql_servers'] = $pconfig['def_sql_servers']; } - if ($pconfig['def_oracle_ports'] != "") { $natent['def_oracle_ports'] = $pconfig['def_oracle_ports']; } - if ($pconfig['def_mssql_ports'] != "") { $natent['def_mssql_ports'] = $pconfig['def_mssql_ports']; } - if ($pconfig['def_telnet_servers'] != "") { $natent['def_telnet_servers'] = $pconfig['def_telnet_servers']; } - if ($pconfig['def_telnet_ports'] != "") { $natent['def_telnet_ports'] = $pconfig['def_telnet_ports']; } - if ($pconfig['def_snmp_servers'] != "") { $natent['def_snmp_servers'] = $pconfig['def_snmp_servers']; } - if ($pconfig['def_snmp_ports'] != "") { $natent['def_snmp_ports'] = $pconfig['def_snmp_ports']; } - if ($pconfig['def_ftp_servers'] != "") { $natent['def_ftp_servers'] = $pconfig['def_ftp_servers']; } - if ($pconfig['def_ftp_ports'] != "") { $natent['def_ftp_ports'] = $pconfig['def_ftp_ports']; } - if ($pconfig['def_ssh_servers'] != "") { $natent['def_ssh_servers'] = $pconfig['def_ssh_servers']; } - if ($pconfig['def_ssh_ports'] != "") { $natent['def_ssh_ports'] = $pconfig['def_ssh_ports']; } - if ($pconfig['def_pop_servers'] != "") { $natent['def_pop_servers'] = $pconfig['def_pop_servers']; } - if ($pconfig['def_pop2_ports'] != "") { $natent['def_pop2_ports'] = $pconfig['def_pop2_ports']; } - if ($pconfig['def_pop3_ports'] != "") { $natent['def_pop3_ports'] = $pconfig['def_pop3_ports']; } - if ($pconfig['def_imap_servers'] != "") { $natent['def_imap_servers'] = $pconfig['def_imap_servers']; } - if ($pconfig['def_imap_ports'] != "") { $natent['def_imap_ports'] = $pconfig['def_imap_ports']; } - if ($pconfig['def_sip_proxy_ip'] != "") { $natent['def_sip_proxy_ip'] = $pconfig['def_sip_proxy_ip']; } - if ($pconfig['def_sip_servers'] != "") { $natent['def_sip_servers'] = $pconfig['def_sip_servers']; }else{ $natent['def_sip_servers'] = ""; } - if ($pconfig['def_sip_ports'] != "") { $natent['def_sip_ports'] = $pconfig['def_sip_ports']; }else{ $natent['def_sip_ports'] = ""; } - if ($pconfig['def_sip_proxy_ports'] != "") { $natent['def_sip_proxy_ports'] = $pconfig['def_sip_proxy_ports']; } - if ($pconfig['def_auth_ports'] != "") { $natent['def_auth_ports'] = $pconfig['def_auth_ports']; } - if ($pconfig['def_finger_ports'] != "") { $natent['def_finger_ports'] = $pconfig['def_finger_ports']; } - if ($pconfig['def_irc_ports'] != "") { $natent['def_irc_ports'] = $pconfig['def_irc_ports']; } - if ($pconfig['def_nntp_ports'] != "") { $natent['def_nntp_ports'] = $pconfig['def_nntp_ports']; } - if ($pconfig['def_rlogin_ports'] != "") { $natent['def_rlogin_ports'] = $pconfig['def_rlogin_ports']; } - if ($pconfig['def_rsh_ports'] != "") { $natent['def_rsh_ports'] = $pconfig['def_rsh_ports']; } - if ($pconfig['def_ssl_ports'] != "") { $natent['def_ssl_ports'] = $pconfig['def_ssl_ports']; } - if ($pconfig['barnyard_enable'] != "") { $natent['barnyard_enable'] = $pconfig['barnyard_enable']; } - if ($pconfig['barnyard_mysql'] != "") { $natent['barnyard_mysql'] = $pconfig['barnyard_mysql']; } - if ($pconfig['barnconfigpassthru'] != "") { $natent['barnconfigpassthru'] = $pconfig['barnconfigpassthru']; } - if ($pconfig['rulesets'] != "") { $natent['rulesets'] = $pconfig['rulesets']; } - if ($pconfig['rule_sid_off'] != "") { $natent['rule_sid_off'] = $pconfig['rule_sid_off']; } - if ($pconfig['rule_sid_on'] != "") { $natent['rule_sid_on'] = $pconfig['rule_sid_on']; } - - - $if_real = snort_get_real_interface($natent['interface']); - - if (isset($id) && $a_nat[$id]) { - if ($natent['interface'] != $a_nat[$id]['interface']) - Running_Stop($snort_uuid, $if_real, $id); - $a_nat[$id] = $natent; - } else { - if (is_numeric($after)) - array_splice($a_nat, $after+1, 0, array($natent)); - else - $a_nat[] = $natent; - } - - write_config(); - - sync_snort_package_config(); - sleep(1); - - /* if snort.sh crashed this will remove the pid */ - exec('/bin/rm /tmp/snort.sh.pid'); - - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: /snort/snort_interfaces.php"); - - exit; - } - } - - if ($_POST["Submit2"]) { - - sync_snort_package_config(); - sleep(1); - - Running_Start($snort_uuid, $if_real, $id); - - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: /snort/snort_interfaces_edit.php?id=$id"); - exit; - } - -$pgtitle = "Snort: Interface Edit: $id $snort_uuid $if_real"; -include_once("head.inc"); - -?> - - - - - - - - - -
    -'; - - if($savemsg) - print_info_box_np2("{$savemsg}"); - else { - print_info_box_np2(' - The Snort configuration has changed and snort needs to be restarted on this interface.
    - You must apply the changes in order for them to take effect.
    - '); - } - } -?> - - - - - - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    General Settings
    Enable  - // care with spaces - if ($pconfig['enable'] == "on") - $checked = checked; - - $onclick_enable = "onClick=\"enable_change(false)\">"; - - echo " - \n\n"; - ?>
    Interface -
    - Choose which interface this rule applies to.
    - Hint: in most cases, you'll want to use WAN here.
    Description
    - You may enter a description here for your - reference (not parsed).
    Memory Performance
    - Lowmem and ac-bnfa are recommended for low end - systems, Ac: high memory, best performance, ac-std: moderate - memory,high performance, acs: small memory, moderateperformance, - ac-banded: small memory,moderate performance, ac-sparsebands: small - memory, high performance.
    -
    Choose the networks - snort should inspect and whitelist.
    Home net
    - Choose the home net you will like this rule to - use.  
    Note: Default home - net adds only local networks.
    - Hint: Most users add a list of - friendly ips that the firewall cant see.
    External net
    - Choose the external net you will like this rule - to use.  
    Note: Default - external net, networks that are not home net.
    - Hint: Most users should leave this - setting at default.
    Block offenders - - onClick="enable_blockoffenders()">
    - Checking this option will automatically block hosts that generate a - Snort alert.
    Kill states - > -
    Should firewall states be killed for the blocked ip -
    Which ip to block - -
    Which ip extracted from the packet you want to block -
    Whitelist -
    - Choose the whitelist you will like this rule to - use.  
    Note: Default - whitelist adds only local networks.
    - Note: This option will only be used when block offenders is on. -
    Suppression and - filtering -
    - Choose the suppression or filtering file you - will like this rule to use.  
    Note: Default - option disables suppression and filtering.
    Choose the types of - logs snort should create.
    Send alerts to main - System logs - onClick="enable_change(false)">
    - Snort will send Alerts to the firewall's system logs.
    Log to a Tcpdump file - onClick="enable_change(false)">
    - Snort will log packets to a tcpdump-formatted file. The file then - can be analyzed by an application such as Wireshark which - understands pcap file formats. WARNING: - File may become large.
    Log Alerts to a snort unified file - onClick="enable_change(false)"> -
    - Snort will log Alerts to a file in the UNIFIED format. -
    Log Alerts to a snort - unified2 file - onClick="enable_change(false)">
    - Snort will log Alerts to a file in the UNIFIED2 format. This is a - requirement for barnyard2.
    Log Alerts to a snort cvs file - onClick="enable_change(false)"> -
    - Snort will log Alerts to a file in the CVS format. -
    Arguments here will - be automatically inserted into the snort configuration.
    Advanced configuration - pass through -
    - - -
     Note: -
    - Please save your settings before you click start.
    - -
    -
    - - - - - - diff --git a/config/snort-dev/snort_interfaces_global.php b/config/snort-dev/snort_interfaces_global.php deleted file mode 100644 index a267f561..00000000 --- a/config/snort-dev/snort_interfaces_global.php +++ /dev/null @@ -1,437 +0,0 @@ -. - Copyright (C) 2011 Ermal Luci - All rights reserved. - - Copyright (C) 2008-2009 Robert Zelaya - Modified for the Pfsense snort package. - 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. - */ - - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -global $g; - -$d_snort_global_dirty_path = '/var/run/snort_global.dirty'; - -/* make things short */ -$pconfig['snortdownload'] = $config['installedpackages']['snortglobal']['snortdownload']; -$pconfig['oinkmastercode'] = $config['installedpackages']['snortglobal']['oinkmastercode']; -$pconfig['emergingthreats'] = $config['installedpackages']['snortglobal']['emergingthreats']; -$pconfig['rm_blocked'] = $config['installedpackages']['snortglobal']['rm_blocked']; -$pconfig['snortloglimit'] = $config['installedpackages']['snortglobal']['snortloglimit']; -$pconfig['snortloglimitsize'] = $config['installedpackages']['snortglobal']['snortloglimitsize']; -$pconfig['autorulesupdate7'] = $config['installedpackages']['snortglobal']['autorulesupdate7']; -$pconfig['snortalertlogtype'] = $config['installedpackages']['snortglobal']['snortalertlogtype']; -$pconfig['forcekeepsettings'] = $config['installedpackages']['snortglobal']['forcekeepsettings']; - -/* if no errors move foward */ -if (!$input_errors) { - - if ($_POST["Submit"]) { - - $config['installedpackages']['snortglobal']['snortdownload'] = $_POST['snortdownload']; - $config['installedpackages']['snortglobal']['oinkmastercode'] = $_POST['oinkmastercode']; - $config['installedpackages']['snortglobal']['emergingthreats'] = $_POST['emergingthreats'] ? 'on' : 'off'; - $config['installedpackages']['snortglobal']['rm_blocked'] = $_POST['rm_blocked']; - if ($_POST['snortloglimitsize']) { - $config['installedpackages']['snortglobal']['snortloglimit'] = $_POST['snortloglimit']; - $config['installedpackages']['snortglobal']['snortloglimitsize'] = $_POST['snortloglimitsize']; - } else { - $config['installedpackages']['snortglobal']['snortloglimit'] = 'on'; - - /* code will set limit to 21% of slice that is unused */ - $snortloglimitDSKsize = round(exec('df -k /var | grep -v "Filesystem" | awk \'{print $4}\'') * .22 / 1024); - $config['installedpackages']['snortglobal']['snortloglimitsize'] = $snortloglimitDSKsize; - } - $config['installedpackages']['snortglobal']['autorulesupdate7'] = $_POST['autorulesupdate7']; - $config['installedpackages']['snortglobal']['snortalertlogtype'] = $_POST['snortalertlogtype']; - $config['installedpackages']['snortglobal']['forcekeepsettings'] = $_POST['forcekeepsettings'] ? 'on' : 'off'; - - $retval = 0; - - $snort_snortloglimit_info_ck = $config['installedpackages']['snortglobal']['snortloglimit']; - snort_snortloglimit_install_cron($snort_snortloglimit_info_ck == 'ok' ? true : false); - - /* set the snort block hosts time IMPORTANT */ - $snort_rm_blocked_info_ck = $config['installedpackages']['snortglobal']['rm_blocked']; - if ($snort_rm_blocked_info_ck == "never_b") - $snort_rm_blocked_false = false; - else - $snort_rm_blocked_false = true; - - snort_rm_blocked_install_cron($snort_rm_blocked_false); - - /* set the snort rules update time */ - $snort_rules_up_info_ck = $config['installedpackages']['snortglobal']['autorulesupdate7']; - if ($snort_rules_up_info_ck == "never_up") - $snort_rules_up_false = false; - else - $snort_rules_up_false = true; - - snort_rules_up_install_cron($snort_rules_up_false); - - configure_cron(); - write_config(); - - /* create whitelist and homenet file then sync files */ - sync_snort_package_config(); - - /* forces page to reload new settings */ - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: /snort/snort_interfaces_global.php"); - exit; - } -} - - -if ($_POST["Reset"]) { - - function snort_deinstall_settings() { - global $config, $g, $id, $if_real; - - exec("/usr/usr/bin/killall snort"); - sleep(2); - exec("/usr/usr/bin/killall -9 snort"); - sleep(2); - exec("/usr/usr/bin/killall barnyard2"); - sleep(2); - exec("/usr/usr/bin/killall -9 barnyard2"); - sleep(2); - - /* Remove snort cron entries Ugly code needs smoothness*/ - if (!function_exists('snort_deinstall_cron')) { - function snort_deinstall_cron($cronmatch) { - global $config, $g; - - - if(!$config['cron']['item']) - return; - - $x=0; - $is_installed = false; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], $cronmatch)) { - $is_installed = true; - break; - } - $x++; - } - if($is_installed == true) - unset($config['cron']['item'][$x]); - - configure_cron(); - } - } - - snort_deinstall_cron("snort2c"); - snort_deinstall_cron("snort_check_for_rule_updates.php"); - - - /* Unset snort registers in conf.xml IMPORTANT snort will not start with out this */ - /* Keep this as a last step */ - unset($config['installedpackages']['snortglobal']); - - /* remove all snort iface dir */ - exec('rm -r /usr/local/etc/snort/snort_*'); - exec('rm /var/log/snort/*'); - } - - snort_deinstall_settings(); - write_config(); /* XXX */ - - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: /snort/snort_interfaces_global.php"); - exit; -} - -$pgtitle = 'Services: Snort: Global Settings'; -include_once("head.inc"); - -?> - - - -' . $pgtitle . '

    '; -?> - - - -
    - - You must apply the changes in order for them to take effect.
    - '); - } - } -?> - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Please Choose The - Type Of Rules You Wish To Download
    Install Snort.org rules - - - - - - - - - - -
    > - Do NOT Install
    > Install - Basic Rules or Premium rules
    -          Sign Up for a - Basic Rule Account
    -          Sign Up for Sourcefire VRT Certified Premium - Rules. This Is Highly Recommended
     
    - - - - - - - - -
    Oinkmaster code
    Code
    - Obtain a snort.org Oinkmaster code and paste here.
    - -
    Install Emergingthreats - rules - onClick="enable_change(false)">
    - Emerging Threats is an open source community that produces fastest - moving and diverse Snort Rules.
    Update rules - automatically
    - Please select the update times for rules.
    - Hint: in most cases, every 12 hours is a good choice.
    General Settings
    Log Directory Size - Limit
    -
    -
    -
    -
    -
    - Note:
    - Available space is MB
    - - - - - - - - - - -
    > - Enable directory size limit (Default)
    > Disable - directory size limit
    -
    - Warning: Nanobsd - should use no more than 10MB of space.
     
    - - - - - -
    Size in MB - Default is 20% of available space.
    - -
    Remove blocked hosts - every
    - Please select the amount of time you would like - hosts to be blocked for.
    - Hint: in most cases, 1 hour is a good choice.
    Alerts file description - type
    - Please choose the type of Alert logging you will - like see in your alert file.
    - Hint: Best pratice is to chose full logging.
     WARNING: On - change, alert file will be cleared.
    Keep snort settings - after deinstall - onClick="enable_change(false)">
    - Settings will not be removed during deinstall.
     WARNING:
    - This will reset all global and interface settings.
    -
     Note:
    -
    Changing any settings on this page will affect all - interfaces. Please, double check if your oink code is correct and - the type of snort.org account you hold.
    -
    -
    - - - - - - - - - diff --git a/config/snort-dev/snort_interfaces_suppress.php b/config/snort-dev/snort_interfaces_suppress.php deleted file mode 100644 index 4eeed42d..00000000 --- a/config/snort-dev/snort_interfaces_suppress.php +++ /dev/null @@ -1,171 +0,0 @@ -. - All rights reserved. - - modified for the pfsense snort package - Copyright (C) 2009-2010 Robert Zelaya. - 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. - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - - -if (!is_array($config['installedpackages']['snortglobal']['suppress'])) - $config['installedpackages']['snortglobal']['suppress'] = array(); -if (!is_array($config['installedpackages']['snortglobal']['suppress']['item'])) - $config['installedpackages']['snortglobal']['suppress']['item'] = array(); -$a_suppress = &$config['installedpackages']['snortglobal']['suppress']['item']; -$id_gen = count($config['installedpackages']['snortglobal']['suppress']['item']); - -$d_suppresslistdirty_path = '/var/run/snort_suppress.dirty'; - -if ($_GET['act'] == "del") { - if ($a_suppress[$_GET['id']]) { - /* make sure rule is not being referenced by any nat or filter rules */ - - unset($a_suppress[$_GET['id']]); - write_config(); - filter_configure(); - header("Location: /snort/snort_interfaces_suppress.php"); - exit; - } -} - -$pgtitle = "Services: Snort: Suppression"; -include_once("head.inc"); - -?> - - - - - -
    ' . $pgtitle . '

    ';}?> - -
    - -

    You must apply the changes in order for them to take effect.");?> - - - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - -
    File NameDescription
    - -   - - - - - - -
    -
    - - - - - -
     
    -
    -
    -
    - - -
    Note: -

    Here you can create event filtering and - suppression for your snort package rules.
    - Please note that you must restart a running rule so that changes can - take effect.

    - -

    - -
    - - - - diff --git a/config/snort-dev/snort_interfaces_suppress_edit.php b/config/snort-dev/snort_interfaces_suppress_edit.php deleted file mode 100644 index 7303349f..00000000 --- a/config/snort-dev/snort_interfaces_suppress_edit.php +++ /dev/null @@ -1,295 +0,0 @@ -. - All rights reserved. - - modified for the pfsense snort package - Copyright (C) 2009-2010 Robert Zelaya. - 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. - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -if (!is_array($config['installedpackages']['snortglobal']['suppress'])) - $config['installedpackages']['snortglobal']['suppress'] = array(); -if (!is_array($config['installedpackages']['snortglobal']['suppress']['item'])) - $config['installedpackages']['snortglobal']['suppress']['item'] = array(); -$a_suppress = &$config['installedpackages']['snortglobal']['suppress']['item']; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (!is_numeric($id)) - $id = 0; // XXX: safety belt - - -/* gen uuid for each iface */ -if (is_array($config['installedpackages']['snortglobal']['suppress']['item'][$id])) { - if ($config['installedpackages']['snortglobal']['suppress']['item'][$id]['uuid'] == '') { - //$snort_uuid = gen_snort_uuid(strrev(uniqid(true))); - $suppress_uuid = 0; - while ($suppress_uuid > 65535 || $suppress_uuid == 0) { - $suppress_uuid = mt_rand(1, 65535); - $pconfig['uuid'] = $suppress_uuid; - } - } else if ($config['installedpackages']['snortglobal']['suppress']['item'][$id]['uuid'] != '') { - $suppress_uuid = $config['installedpackages']['snortglobal']['suppress']['item'][$id]['uuid']; - } -} - -$d_snort_suppress_dirty_path = '/var/run/snort_suppress.dirty'; - -/* returns true if $name is a valid name for a whitelist file name or ip */ -function is_validwhitelistname($name) { - if (!is_string($name)) - return false; - - if (!preg_match("/[^a-zA-Z0-9\.\/]/", $name)) - return true; - - return false; -} - -if (isset($id) && $a_suppress[$id]) { - - /* old settings */ - $pconfig['name'] = $a_suppress[$id]['name']; - $pconfig['uuid'] = $a_suppress[$id]['uuid']; - $pconfig['descr'] = $a_suppress[$id]['descr']; - $pconfig['suppresspassthru'] = base64_decode($a_suppress[$id]['suppresspassthru']); -} - -if ($_POST['submit']) { - - unset($input_errors); - $pconfig = $_POST; - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if(strtolower($_POST['name']) == "defaultwhitelist") - $input_errors[] = "Whitelist file names may not be named defaultwhitelist."; - - $x = is_validwhitelistname($_POST['name']); - if (!isset($x)) { - $input_errors[] = "Reserved word used for whitelist file name."; - } else { - if (is_validwhitelistname($_POST['name']) == false) - $input_errors[] = "Whitelist file name may only consist of the characters a-z, A-Z and 0-9 _. Note: No Spaces. Press Cancel to reset."; - } - - - /* check for name conflicts */ - foreach ($a_suppress as $s_list) { - if (isset($id) && ($a_suppress[$id]) && ($a_suppress[$id] === $s_list)) - continue; - - if ($s_list['name'] == $_POST['name']) { - $input_errors[] = "A whitelist file name with this name already exists."; - break; - } - } - - - if (!$input_errors) { - $s_list = array(); - $s_list['name'] = $_POST['name']; - $s_list['uuid'] = $suppress_uuid; - $s_list['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto"); - $s_list['suppresspassthru'] = base64_encode($_POST['suppresspassthru']); - - if (isset($id) && $a_suppress[$id]) - $a_suppress[$id] = $s_list; - else - $a_suppress[] = $s_list; - - write_config(); - - sync_snort_package_config(); - - header("Location: /snort/snort_interfaces_suppress.php"); - exit; - } - -} - -$pgtitle = "Services: Snort: Suppression: Edit $suppress_uuid"; -include_once("head.inc"); - -?> - - - - - -
    ' . $pgtitle . '

    ';}?> - - -
    - -
    '; - - if($savemsg) { - print_info_box_np2("{$savemsg}"); - }else{ - print_info_box_np2(' - The Snort configuration has changed and snort needs to be restarted on this interface.
    - You must apply the changes in order for them to take effect.
    - '); - } - } - ?> - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    Add the name and - description of the file.
    Name
    - The list name may only consist of the - characters a-z, A-Z and 0-9. Note: No - Spaces.
    Description
    - You may enter a description here for your - reference (not parsed).
    - -
    - - - - - - - - - - - - - - - - -
    -
    - - - - - -
       NOTE: -   The threshold keyword - is deprecated as of version 2.8.5. Use the event_filter keyword - instead.
    -
    -
    Apply suppression or - filters to rules. Valid keywords are 'suppress', 'event_filter' and - 'rate_filter'.
    Example 1; - suppress gen_id 1, sig_id 1852, track by_src, ip 10.1.1.54
    - Example 2; event_filter gen_id 1, sig_id 1851, type limit, - track by_src, count 1, seconds 60
    - Example 3; rate_filter gen_id 135, sig_id 1, track by_src, - count 100, seconds 1, new_action log, timeout 10
    -
    - -
    -
    - - - -
    - -
    - - - - - diff --git a/config/snort-dev/snort_interfaces_whitelist.php b/config/snort-dev/snort_interfaces_whitelist.php deleted file mode 100644 index 2dc2d491..00000000 --- a/config/snort-dev/snort_interfaces_whitelist.php +++ /dev/null @@ -1,189 +0,0 @@ -. - All rights reserved. - - modified for the pfsense snort package - Copyright (C) 2009-2010 Robert Zelaya. - 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. - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - - -if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item'])) -$config['installedpackages']['snortglobal']['whitelist']['item'] = array(); - -//aliases_sort(); << what ? -$a_whitelist = &$config['installedpackages']['snortglobal']['whitelist']['item']; - -if (isset($config['installedpackages']['snortglobal']['whitelist']['item'])) { - $id_gen = count($config['installedpackages']['snortglobal']['whitelist']['item']); -}else{ - $id_gen = '0'; -} - -$d_whitelistdirty_path = '/var/run/snort_whitelist.dirty'; - -if ($_GET['act'] == "del") { - if ($a_whitelist[$_GET['id']]) { - /* make sure rule is not being referenced by any nat or filter rules */ - - unset($a_whitelist[$_GET['id']]); - write_config(); - filter_configure(); - header("Location: /snort/snort_interfaces_whitelist.php"); - exit; - } -} - -$pgtitle = "Services: Snort: Whitelist"; -include_once("head.inc"); - -?> - - - - - -
    ' . $pgtitle . '

    ';}?> - -
    - -

    You must apply the changes in order for them to take effect.");?> - - - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - -
    File NameValuesDescription
    - - -   - - - - - - -
    -
    - - - - - -
     
    -
    -
    -
    - - -
    Note: -

    Here you can create whitelist files for your - snort package rules.
    - Please add all the ips or networks you want to protect against snort - block decisions.
    - Remember that the default whitelist only includes local networks.
    - Be careful, it is very easy to get locked out of you system.

    - -

    - -
    - - - - diff --git a/config/snort-dev/snort_interfaces_whitelist_edit.php b/config/snort-dev/snort_interfaces_whitelist_edit.php deleted file mode 100644 index ef930eb9..00000000 --- a/config/snort-dev/snort_interfaces_whitelist_edit.php +++ /dev/null @@ -1,494 +0,0 @@ -. - All rights reserved. - - modified for the pfsense snort package - Copyright (C) 2009-2010 Robert Zelaya. - 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. - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item'])) - $config['installedpackages']['snortglobal']['whitelist']['item'] = array(); - -$a_whitelist = &$config['installedpackages']['snortglobal']['whitelist']['item']; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (is_null($id)) { - header("Location: /snort/snort_interfaces_whitelist.php"); - exit; -} - -/* gen uuid for each iface !inportant */ -if ($config['installedpackages']['snortglobal']['whitelist']['item'][$id]['uuid'] == '') { - $whitelist_uuid = 0; - while ($whitelist_uuid > 65535 || $whitelist_uuid == 0) { - $whitelist_uuid = mt_rand(1, 65535); - $pconfig['uuid'] = $whitelist_uuid; - } -} else if ($config['installedpackages']['snortglobal']['whitelist']['item'][$id]['uuid'] != '') { - $whitelist_uuid = $config['installedpackages']['snortglobal']['whitelist']['item'][$id]['uuid']; -} - -$d_snort_whitelist_dirty_path = '/var/run/snort_whitelist.dirty'; - -/* returns true if $name is a valid name for a whitelist file name or ip */ -function is_validwhitelistname($name, $type) { - if (!is_string($name)) - return false; - - if ($type === 'name' && !preg_match("/[^a-zA-Z0-9\_]/", $name)) - return true; - - if ($type === 'ip' && !preg_match("/[^a-zA-Z0-9\:\,\.\/]/", $name)) - return true; - - if ($type === 'detail' && !preg_match("/[^a-zA-Z0-9\:\,\.\+\s\-\']/", $name)) - return true; - - return false; -} - -if (isset($id) && $a_whitelist[$id]) { - - /* old settings */ - $pconfig = array(); - $pconfig['name'] = $a_whitelist[$id]['name']; - $pconfig['uuid'] = $a_whitelist[$id]['uuid']; - $pconfig['detail'] = $a_whitelist[$id]['detail']; - $pconfig['addressuuid'] = $a_whitelist[$id]['addressuuid']; - $pconfig['snortlisttype'] = $a_whitelist[$id]['snortlisttype']; - $pconfig['address'] = $a_whitelist[$id]['address']; - $pconfig['descr'] = html_entity_decode($a_whitelist[$id]['descr']); - $pconfig['wanips'] = $a_whitelist[$id]['wanips']; - $pconfig['wangateips'] = $a_whitelist[$id]['wangateips']; - $pconfig['wandnsips'] = $a_whitelist[$id]['wandnsips']; - $pconfig['vips'] = $a_whitelist[$id]['vips']; - $pconfig['vpnips'] = $a_whitelist[$id]['vpnips']; - $addresses = explode(' ', $pconfig['address']); - $address = explode(" ", $addresses[0]); -} - -if ($_POST['submit']) { - - conf_mount_rw(); - - unset($input_errors); - $pconfig = $_POST; - - //input validation - $reqdfields = explode(" ", "name"); // post name required - $reqdfieldsn = explode(",", "Name"); // error msg name - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if(strtolower($_POST['name']) == "defaultwhitelist") - $input_errors[] = "Whitelist file names may not be named defaultwhitelist."; - - - if (is_validwhitelistname($_POST['name'], 'name') == false) - $input_errors[] = "Whitelist name may only consist of the characters a-z, A-Z and 0-9. Note: No Spaces."; - - if (is_validwhitelistname($_POST['descr'], 'detail') == false) - $input_errors[] = "Whitelist description name may only consist of the characters [a-z, A-Z 0-9 + , :]. Note: No Spaces."; - - // check for name conflicts - foreach ($a_whitelist as $w_list) { - if (isset($id) && ($a_whitelist[$id]) && ($a_whitelist[$id] === $w_list)) - continue; - - if ($w_list['name'] == $_POST['name']) { - $input_errors[] = "A whitelist file name with this name already exists."; - break; - } - } - - // build string lists - if (!empty($pconfig[addresses])) { - $countArray = count($pconfig[addresses]); - $i = 0; - - foreach ($pconfig[addresses] as $address) { - - $i++; - - if (is_validwhitelistname($address[address], 'ip') == false) { - $input_errors[] = "List of IPs may only consist of the characters [. : 0-9]. Note: No Spaces."; - } - - if (is_validwhitelistname($address[detail], 'detail') == false) { - $input_errors[] = "List of IP descriptions may only consist of the characters [a-z, A-Z 0-9 + , : ' -]."; - } - - if (!empty($address[address]) && !empty($address[uuid])) { - - $final_address_ip .= $address[address]; - - $final_address_uuid .= $address[uuid]; - - if (empty($address[detail])) { - $final_address_details .= "Entry added " . date('r'); - }else{ - $final_address_details .= $address[detail]; - } - - if($i < $countArray){ - $final_address_ip .= ','; - $final_address_details .= '||'; - $final_address_uuid .= '||'; - } - } - } - } - - $w_list = array(); - // post user input - $w_list['name'] = $_POST['name']; - $w_list['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto"); - $w_list['uuid'] = $whitelist_uuid; - $w_list['snortlisttype'] = $_POST['snortlisttype']; - $w_list['wanips'] = $_POST['wanips']? 'yes' : 'no'; - $w_list['wangateips'] = $_POST['wangateips']? 'yes' : 'no'; - $w_list['wandnsips'] = $_POST['wandnsips']? 'yes' : 'no'; - $w_list['vips'] = $_POST['vips']? 'yes' : 'no'; - $w_list['vpnips'] = $_POST['vpnips']? 'yes' : 'no'; - - $w_list['addressuuid'] = $final_address_uuid; - $w_list['address'] = $final_address_ip; - $w_list['detail'] = $final_address_details; - - if (empty($final_address_ip) && $w_list['wanips'] === 'no' && $w_list['wangateips'] === 'no' && $w_list['wandnsips'] === 'no' && $w_list['vips'] === 'no' && $w_list['vpnips'] === 'no') - $input_errors[] = "You must add a \"auto generated ip\" or a \"custom ip\"! "; - - if (!$input_errors) { - if (isset($id) && $a_whitelist[$id]) - $a_whitelist[$id] = $w_list; - else - $a_whitelist[] = $w_list; - - write_config(); - - // create whitelist and homenet file then sync files - sync_snort_package_config(); - - header("Location: /snort/snort_interfaces_whitelist.php"); - exit; - } else { - - $pconfig['wanips'] = $a_whitelist[$id]['wanips']; - $pconfig['wangateips'] = $a_whitelist[$id]['wangateips']; - $pconfig['wandnsips'] = $a_whitelist[$id]['wandnsips']; - $pconfig['vips'] = $a_whitelist[$id]['vips']; - $pconfig['vpnips'] = $a_whitelist[$id]['vpnips']; - - $pconfig['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto"); - $pconfig['address'] = $final_address_ip; - $pconfig['detail'] = $final_address_details; - $pconfig['addressuuid'] = $final_address_uuid; - - $input_errors[] = 'Press Cancel to reset.'; - } - -} - -$pgtitle = "Services: Snort: Whitelist: Edit $whitelist_uuid"; -include_once("head.inc"); - -?> - - - - - - -
    - -
    - - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Add the name and - description of the file.
    Name
    - The list name may only consist of the - characters a-z, A-Z and 0-9. Note: No - Spaces.
    Description
    - You may enter a description here for your - reference (not parsed).
    List Type - -
    WHITELIST:   This - list specifies addresses that Snort Package should not block.
    -
    - NETLIST:   This list is for defining - addresses as $HOME_NET or $EXTERNAL_NET in the snort.conf file.
    - -    Choose the type of - list you will like see in your Interface Edit Tab. -
    Add auto generated - ips.
    WAN IPs /> - Add WAN IPs to the list.
    Wan Gateways /> - Add WAN Gateways to the list.
    Wan DNS servers /> - Add WAN DNS servers to the list.
    Virtual IP Addresses /> - Add Virtual IP Addresses to the list.
    VPNs /> - Add VPN Addresses to the list.
    Add your own custom - ips.
    -
    IP or CIDR items
    -
    - - - - - - - - - - - - - - - - - - - - -
    -
    For WHITELIST's enter ONLY - IPs not CIDRs. Example: 192.168.4.1
    -
    - For NETLIST's you may enter IPs and - CIDRs. Example: 192.168.4.1 or 192.168.4.0/24
    -
    -
    IP or CIDR
    -
    -
    Add a Description or leave blank and a date - will be added.
    -
    -
      - - - -
    -
    -
    - - - - - - diff --git a/config/snort-dev/snort_preprocessors.php b/config/snort-dev/snort_preprocessors.php deleted file mode 100644 index 7f89d433..00000000 --- a/config/snort-dev/snort_preprocessors.php +++ /dev/null @@ -1,391 +0,0 @@ -. - Copyright (C) 2008-2009 Robert Zelaya. - Copyright (C) 2011 Ermal Luci - 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. - */ - - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort.inc"); - -global $g; - -if (!is_array($config['installedpackages']['snortglobal']['rule'])) { - $config['installedpackages']['snortglobal']['rule'] = array(); -} -$a_nat = &$config['installedpackages']['snortglobal']['rule']; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (is_null($id)) { - header("Location: /snort/snort_interfaces.php"); - exit; -} - -$pconfig = array(); -if (isset($id) && $a_nat[$id]) { - $pconfig = $a_nat[$id]; - - /* new options */ - $pconfig['perform_stat'] = $a_nat[$id]['perform_stat']; - $pconfig['def_ssl_ports_ignore'] = $a_nat[$id]['def_ssl_ports_ignore']; - $pconfig['flow_depth'] = $a_nat[$id]['flow_depth']; - $pconfig['max_queued_bytes'] = $a_nat[$id]['max_queued_bytes']; - $pconfig['max_queued_segs'] = $a_nat[$id]['max_queued_segs']; - $pconfig['perform_stat'] = $a_nat[$id]['perform_stat']; - $pconfig['http_inspect'] = $a_nat[$id]['http_inspect']; - $pconfig['other_preprocs'] = $a_nat[$id]['other_preprocs']; - $pconfig['ftp_preprocessor'] = $a_nat[$id]['ftp_preprocessor']; - $pconfig['smtp_preprocessor'] = $a_nat[$id]['smtp_preprocessor']; - $pconfig['sf_portscan'] = $a_nat[$id]['sf_portscan']; - $pconfig['dce_rpc_2'] = $a_nat[$id]['dce_rpc_2']; - $pconfig['dns_preprocessor'] = $a_nat[$id]['dns_preprocessor']; -} - -/* convert fake interfaces to real */ -$if_real = snort_get_real_interface($pconfig['interface']); -$snort_uuid = $pconfig['uuid']; - -/* alert file */ -$d_snortconfdirty_path = "/var/run/snort_conf_{$snort_uuid}_{$if_real}.dirty"; - -if ($_POST) { - - $natent = array(); - $natent = $pconfig; - - /* if no errors write to conf */ - if (!$input_errors) { - /* post new options */ - $natent['perform_stat'] = $_POST['perform_stat']; - if ($_POST['def_ssl_ports_ignore'] != "") { $natent['def_ssl_ports_ignore'] = $_POST['def_ssl_ports_ignore']; }else{ $natent['def_ssl_ports_ignore'] = ""; } - if ($_POST['flow_depth'] != "") { $natent['flow_depth'] = $_POST['flow_depth']; }else{ $natent['flow_depth'] = ""; } - if ($_POST['max_queued_bytes'] != "") { $natent['max_queued_bytes'] = $_POST['max_queued_bytes']; }else{ $natent['max_queued_bytes'] = ""; } - if ($_POST['max_queued_segs'] != "") { $natent['max_queued_segs'] = $_POST['max_queued_segs']; }else{ $natent['max_queued_segs'] = ""; } - - $natent['perform_stat'] = $_POST['perform_stat'] ? 'on' : 'off'; - $natent['http_inspect'] = $_POST['http_inspect'] ? 'on' : 'off'; - $natent['other_preprocs'] = $_POST['other_preprocs'] ? 'on' : 'off'; - $natent['ftp_preprocessor'] = $_POST['ftp_preprocessor'] ? 'on' : 'off'; - $natent['smtp_preprocessor'] = $_POST['smtp_preprocessor'] ? 'on' : 'off'; - $natent['sf_portscan'] = $_POST['sf_portscan'] ? 'on' : 'off'; - $natent['dce_rpc_2'] = $_POST['dce_rpc_2'] ? 'on' : 'off'; - $natent['dns_preprocessor'] = $_POST['dns_preprocessor'] ? 'on' : 'off'; - - if (isset($id) && $a_nat[$id]) - $a_nat[$id] = $natent; - else { - if (is_numeric($after)) - array_splice($a_nat, $after+1, 0, array($natent)); - else - $a_nat[] = $natent; - } - - write_config(); - - $if_real = snort_get_real_interface($pconfig['interface']); - sync_snort_package_config(); - - /* after click go to this page */ - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: snort_preprocessors.php?id=$id"); - exit; - } -} - -$pgtitle = "Snort: Interface $id$if_real Preprocessors and Flow"; -include_once("head.inc"); - -?> - - - -' . $pgtitle . '

    ';}?> - - - -
    - - - - -
    - - - - -
    - -
    - - - .noid { - position:absolute; - top:10px; - left:0px; - width:94%; - background:#FCE9C0; - background-position: 15px; - border-top:2px solid #DBAC48; - border-bottom:2px solid #DBAC48; - padding: 15px 10px 85% 50px; - } - -
    You can not edit options without an interface ID.
    \n"; - - } - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Note: -
    - Rules may be dependent on preprocessors!
    - Defaults will be used when there is no user input.
    Performance - Statistics
    Enable - onClick="enable_change(false)"> Performance Statistics for this - interface.
    HTTP Inspect Settings
    Enable - onClick="enable_change(false)"> Use HTTP Inspect to - Normalize/Decode and detect HTTP traffic and protocol anomalies.
    HTTP server flow depth - - - - -
    -1 - to 1460 (-1 disables HTTP - inspect, 0 enables all HTTP inspect)
    - Amount of HTTP server response payload to inspect. Snort's - performance may increase by adjusting this value.
    - Setting this value too low may cause false negatives. Values above 0 - are specified in bytes. Default value is 0
    -
    Stream5 Settings
    Max Queued Bytes - - - - -
    - Minimum is 1024, Maximum is 1073741824 - ( default value is 1048576, 0 - means Maximum )
    - The number of bytes to be queued for reassembly for TCP sessions in - memory. Default value is 1048576
    -
    Max Queued Segs - - - - -
    - Minimum is 2, Maximum is 1073741824 - ( default value is 2621, 0 means - Maximum )
    - The number of segments to be queued for reassembly for TCP sessions - in memory. Default value is 2621
    -
    General Preprocessor - Settings
    Enable
    - RPC Decode and Back Orifice detector
    - onClick="enable_change(false)">
    - Normalize/Decode RPC traffic and detects Back Orifice traffic on the - network.
    Enable
    - FTP and Telnet Normalizer
    - onClick="enable_change(false)">
    - Normalize/Decode FTP and Telnet traffic and protocol anomalies.
    Enable
    - SMTP Normalizer
    - onClick="enable_change(false)">
    - Normalize/Decode SMTP protocol for enforcement and buffer overflows.
    Enable
    - Portscan Detection
    - onClick="enable_change(false)">
    - Detects various types of portscans and portsweeps.
    Enable
    - DCE/RPC2 Detection
    - onClick="enable_change(false)">
    - The DCE/RPC preprocessor detects and decodes SMB and DCE/RPC - traffic.
    Enable
    - DNS Detection
    - onClick="enable_change(false)">
    - The DNS preprocessor decodes DNS Response traffic and detects some - vulnerabilities.
    Define SSL_IGNORE
    - Encrypted traffic should be ignored by Snort - for both performance reasons and to reduce false positives.
    - Default: "443 465 563 636 989 990 992 993 994 995".
    Please - use spaces and not commas.
      - -
     Note: -
    - Please save your settings before you click Start.
    - -
    -
    - -
    - - - - diff --git a/config/snort-dev/snort_rules.php b/config/snort-dev/snort_rules.php deleted file mode 100644 index 871eb39e..00000000 --- a/config/snort-dev/snort_rules.php +++ /dev/null @@ -1,458 +0,0 @@ -"; - - if($pfsense_stable == 'yes'){echo '

    ' . $pgtitle . '

    ';} - - echo "\n - \n - \n - \n - \n - \n - \n -
    \n"; - - $tab_array = array(); - $tabid = 0; - $tab_array[$tabid] = array(gettext("Snort Interfaces"), false, "/snort/snort_interfaces.php"); - $tabid++; - $tab_array[$tabid] = array(gettext("If Settings"), false, "/snort/snort_interfaces_edit.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Categories"), false, "/snort/snort_rulesets.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Rules"), true, "/snort/snort_rules.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Servers"), false, "/snort/snort_define_servers.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Preprocessors"), false, "/snort/snort_preprocessors.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Barnyard2"), false, "/snort/snort_barnyard.php?id={$id}"); - display_top_tabs($tab_array); - echo "
    \n -
    \n - \n - \n - \n - \n -
    \n - # The rules directory is empty.\n -
    \n -
    \n -
    \n - \n - \n - \n -

    \n\n"; - - echo "Please click on the Update Rules tab to install your selected rule sets."; - include("fend.inc"); - - echo ""; - echo ""; - - exit(0); - } else { - /* Make sure that we have the rules */ - mwexec("/bin/cp /usr/local/etc/snort/rules/*.rules /usr/local/etc/snort/snort_{$iface_uuid}_{$if_real}/rules", true); - } -} - -function get_middle($source, $beginning, $ending, $init_pos) { - $beginning_pos = strpos($source, $beginning, $init_pos); - $middle_pos = $beginning_pos + strlen($beginning); - $ending_pos = strpos($source, $ending, $beginning_pos); - $middle = substr($source, $middle_pos, $ending_pos - $middle_pos); - return $middle; -} - -function write_rule_file($content_changed, $received_file) -{ - @file_put_contents($received_file, implode("\n", $content_changed)); -} - -function load_rule_file($incoming_file) -{ - //read file into string, and get filesize - $contents = @file_get_contents($incoming_file); - - //split the contents of the string file into an array using the delimiter - return explode("\n", $contents); -} - -$ruledir = "/usr/local/etc/snort/snort_{$iface_uuid}_{$if_real}/rules/"; -//$ruledir = "/usr/local/etc/snort/rules/"; -$dh = opendir($ruledir); -while (false !== ($filename = readdir($dh))) -{ - //only populate this array if its a rule file - $isrulefile = strstr($filename, ".rules"); - if ($isrulefile !== false) - $files[] = basename($filename); -} -sort($files); - -if ($_GET['openruleset']) - $rulefile = $_GET['openruleset']; -else - $rulefile = $ruledir.$files[0]; - -//Load the rule file -$splitcontents = load_rule_file($rulefile); - -if ($_GET['act'] == "toggle" && $_GET['ids']) { - - $lineid= $_GET['ids']; - - //copy rule contents from array into string - $tempstring = $splitcontents[$lineid]; - - //explode rule contents into an array, (delimiter is space) - $rule_content = explode(' ', $tempstring); - - $findme = "# alert"; //find string for disabled alerts - $disabled = strstr($tempstring, $findme); - - //if find alert is false, then rule is disabled - if ($disabled !== false) { - //rule has been enabled - $tempstring = substr($tempstring, 2); - } else - $tempstring = "# ". $tempstring; - - //copy string into array for writing - $splitcontents[$lineid] = $tempstring; - - //write the new .rules file - write_rule_file($splitcontents, $rulefile); - - //write disable/enable sid to config.xml - $sid = get_middle($tempstring, 'sid:', ';', 0); - if (is_numeric($sid)) { - // rule_sid_on registers - if (!empty($a_nat[$id]['rule_sid_on'])) - $a_nat[$id]['rule_sid_on'] = str_replace("||enablesid $sid", "", $a_nat[$id]['rule_sid_on']); - if (!empty($a_nat[$id]['rule_sid_on'])) - $a_nat[$id]['rule_sid_off'] = str_replace("||disablesid $sid", "", $a_nat[$id]['rule_sid_off']); - if ($disabled === false) - $a_nat[$id]['rule_sid_off'] = "||disablesid $sid_off" . $a_nat[$id]['rule_sid_off']; - else - $a_nat[$id]['rule_sid_on'] = "||enablesid $sid_on" . $a_nat[$id]['rule_sid_on']; - } - - write_config(); - - header("Location: /snort/snort_rules.php?id={$id}&openruleset={$rulefile}"); - exit; -} - -$currentruleset = basename($rulefile); - -$ifname = strtoupper($pconfig['interface']); - -require_once("guiconfig.inc"); -include_once("head.inc"); - -$pgtitle = "Snort: $id $iface_uuid $if_real Category: $currentruleset"; -?> - - -' . $pgtitle . '

    ';} - -echo "{$snort_general_css}\n"; -?> -
    - - - - - - - - - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - - $value ) - { - $disabled = "False"; - $comments = "False"; - $findme = "# alert"; //find string for disabled alerts - $disabled_pos = strstr($value, $findme); - - $counter2 = 1; - $sid = get_middle($value, 'sid:', ';', 0); - //check to see if the sid is numberical - if (!is_numeric($sid)) - continue; - - //if find alert is false, then rule is disabled - if ($disabled_pos !== false){ - $counter2 = $counter2+1; - $textss = ""; - $textse = ""; - $iconb = "icon_block_d.gif"; - - $ischecked = ""; - } else { - $textss = $textse = ""; - $iconb = "icon_block.gif"; - - $ischecked = "checked"; - } - - $rule_content = explode(' ', $value); - - $protocol = $rule_content[$counter2];//protocol location - $counter2++; - $source = substr($rule_content[$counter2], 0, 20) . "...";//source location - $counter2++; - $source_port = $rule_content[$counter2];//source port location - $counter2 = $counter2+2; - $destination = substr($rule_content[$counter2], 0, 20) . "...";//destination location - $counter2++; - $destination_port = $rule_content[$counter2];//destination port location - - if (strstr($value, 'msg: "')) - $message = get_middle($value, 'msg: "', '";', 0); - else if (strstr($value, 'msg:"')) - $message = get_middle($value, 'msg:"', '";', 0); - - echo " - - - - - - "; - ?> - - - -
    -
    Category: - -
     SIDProtoSourcePortDestinationPortMessage
    $textss\n"; - ?> - - - - - - $textss - $sid - $textse - - $textss - $protocol"; - echo "$textse - - $textss - $source - $textse - - $textss - $source_port - $textse - - $textss - $destination - $textse - - $textss - $destination_port - $textse - - $textss - $message - $textse - - - - - - -
    -
    -
    - There are {$counter} rules in this category.

    "; ?> -
    - - - - - - - - - - - - - - - - -
    Rule Enabled
    Rule Disabled
    -

    -

    -
    - - - -
    - - - diff --git a/config/snort-dev/snort_rules_edit.php b/config/snort-dev/snort_rules_edit.php deleted file mode 100644 index 330630f4..00000000 --- a/config/snort-dev/snort_rules_edit.php +++ /dev/null @@ -1,188 +0,0 @@ - 0 ) - $contents = file_get_contents($file); - -//delimiter for each new rule is a new line -$delimiter = "\n"; - -//split the contents of the string file into an array using the delimiter -$splitcontents = explode($delimiter, $contents); -$findme = "# alert"; //find string for disabled alerts -$highlight = "yes"; -if (strstr($splitcontents[$lineid], $findme)) - $highlight = "no"; -if ($highlight == "no") - $splitcontents[$lineid] = substr($splitcontents[$lineid], 2); - -if (!function_exists('get_middle')) { - function get_middle($source, $beginning, $ending, $init_pos) { - $beginning_pos = strpos($source, $beginning, $init_pos); - $middle_pos = $beginning_pos + strlen($beginning); - $ending_pos = strpos($source, $ending, $beginning_pos); - $middle = substr($source, $middle_pos, $ending_pos - $middle_pos); - return $middle; - } -} - -if ($_POST) { - if ($_POST['save']) { - - //copy string into file array for writing - if ($_POST['highlight'] == "yes") - $splitcontents[$lineid] = $_POST['code']; - else - $splitcontents[$lineid] = "# " . $_POST['code']; - - //write disable/enable sid to config.xml - $sid = get_middle($splitcontents[$lineid], 'sid:', ';', 0); - if (is_numeric($sid)) { - // rule_sid_on registers - if (!empty($a_nat[$id]['rule_sid_on'])) - $a_nat[$id]['rule_sid_on'] = str_replace("||enablesid $sid", "", $a_nat[$id]['rule_sid_on']); - if (!empty($a_nat[$id]['rule_sid_on'])) - $a_nat[$id]['rule_sid_off'] = str_replace("||disablesid $sid", "", $a_nat[$id]['rule_sid_off']); - if ($_POST['highlight'] == "yes") - $a_nat[$id]['rule_sid_on'] = "||enablesid $sid" . $a_nat[$id]['rule_sid_on']; - else - $a_nat[$id]['rule_sid_off'] = "||disablesid $sid" . $a_nat[$id]['rule_sid_off']; - } - - //write the new .rules file - @file_put_contents($file, implode($delimiter, $splitcontents)); - - write_config(); - - echo ""; - exit; - } -} - -$pgtitle = array(gettext("Advanced"), gettext("File Editor")); - -?> - - - - -
    - - - - - -
    - - - - - - - - - - - - -
    - - - - - -
    - Disable original rule :
    - - /> - - /> - -
    - - -
    -
    - -
    -
    -
    -
    - - - diff --git a/config/snort-dev/snort_rulesets.php b/config/snort-dev/snort_rulesets.php deleted file mode 100644 index 313daea2..00000000 --- a/config/snort-dev/snort_rulesets.php +++ /dev/null @@ -1,313 +0,0 @@ -"; - if($pfsense_stable == 'yes'){echo $pgtitle;} - echo "

    \n"; - - echo ""; - - echo " - \n - - \n - \n - \n -
    \n"; - - $tab_array = array(); - $tabid = 0; - $tab_array[$tabid] = array(gettext("Snort Interfaces"), false, "/snort/snort_interfaces.php"); - $tabid++; - $tab_array[$tabid] = array(gettext("If Settings"), false, "/snort/snort_interfaces_edit.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Categories"), true, "/snort/snort_rulesets.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Rules"), false, "/snort/snort_rules.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Servers"), false, "/snort/snort_define_servers.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Preprocessors"), false, "/snort/snort_preprocessors.php?id={$id}"); - $tabid++; - $tab_array[$tabid] = array(gettext("Barnyard2"), false, "/snort/snort_barnyard.php?id={$id}"); - display_top_tabs($tab_array); - echo " -
    \n -
    \n - \n - \n - \n - \n -
    \n - # The rules directory is empty. /usr/local/etc/snort/snort_{$iface_uuid}_{$if_real}/rules \n -
    \n -
    \n -
    \n - \n - \n - \n -

    \n\n"; - - echo "Please click on the Update Rules tab to install your selected rule sets. $isrulesfolderempty"; - include("fend.inc"); - - echo ""; - echo ""; - - exit(0); - } else { - /* Make sure that we have the rules */ - mwexec("/bin/cp /usr/local/etc/snort/rules/*.rules /usr/local/etc/snort/snort_{$iface_uuid}_{$if_real}/rules", true); - } -} - -/* alert file */ -$d_snortconfdirty_path = "/var/run/snort_conf_{$iface_uuid}_{$if_real}.dirty"; -if ($_POST["Submit"]) { - $enabled_items = ""; - $isfirst = true; - if (is_array($_POST['toenable'])) - $enabled_items = implode("||", $_POST['toenable']); - else - $enabled_items = $_POST['toenable']; - $a_nat[$id]['rulesets'] = $enabled_items; - - write_config(); - sync_snort_package_config(); - - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); - header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); - header( 'Cache-Control: no-store, no-cache, must-revalidate' ); - header( 'Cache-Control: post-check=0, pre-check=0', false ); - header( 'Pragma: no-cache' ); - header("Location: /snort/snort_rulesets.php?id=$id"); - exit; -} - -$enabled_rulesets = $a_nat[$id]['rulesets']; -if($enabled_rulesets) - $enabled_rulesets_array = split("\|\|", $enabled_rulesets); - -include_once("head.inc"); - -?> - - - - -' . $pgtitle . '

    ';}?> - - - -
    - - - -"; - -?> '; - - if($savemsg) { - print_info_box_np2("{$savemsg}"); - }else{ - print_info_box_np2(' - The Snort configuration has changed and snort needs to be restarted on this interface.
    - You must apply the changes in order for them to take effect.
    - '); - } -} - -?> - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - -
    - - - - - - - \n"; - echo "\n"; - echo "\n\n\n"; - //echo ""; - } - - ?> -
    Enabled
    "; - if(is_array($enabled_rulesets_array)) - if(in_array($file, $enabled_rulesets_array)) { - $CHECKED = " checked=\"checked\""; - } else { - $CHECKED = ""; - } - else - $CHECKED = ""; - echo " \n\n"; - echo "\n"; - echo "{$file}\n"; - echo "
    "; - //echo "description"; - //echo "
    -
     
    Check the rulesets that you would like Snort to load at startup.
     
    -
    -
    - - - -

    NOTE: You can click on a ruleset name to edit the ruleset.

    - -
    - - - - - diff --git a/config/snort-dev/snort_startstop.php b/config/snort-dev/snort_startstop.php deleted file mode 100644 index c006ced9..00000000 --- a/config/snort-dev/snort_startstop.php +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/local/bin/php -f - - /tmp/snort_startstop.php.pid"); - - // wait until boot is done - $snort_bootupWait = function() use(&$_GET, &$g) { - $i = 0; - exec("/bin/echo {$i} > /tmp/snort_testing.sh.pid"); - while(isset($g['booting']) || file_exists("{$g['varrun_path']}/booting")) { - $i++; - exec("/usr/bin/logger -p daemon.info -i -t SnortBoot 'Snort Boot count...{$i}'"); - exec("/bin/echo {$i} > /tmp/snort_testing.sh.pid"); // remove when finnished testing - sleep(2); - } - }; - $snort_bootupWait(); - - - $snort_bootupCleanStartStop = function($type) use(&$_GET, &$g) { - - $snortstartArray = explode(',', $_GET[$type]); - - foreach($snortstartArray as $iface_pre) { - - if (!empty($iface_pre)) { - $iface = explode('_', $iface_pre); - - if( !empty($iface[0]) && !empty($iface[1]) && is_numeric($iface[2]) ) { - - if($type === 'snortstart') { Running_Start($iface[0], $iface[1], $iface[2]); } - - if($type === 'snortstop') { Running_Stop($iface[0], $iface[1], $iface[2]); } - - } - } - } - }; - - - if (!empty($_GET[snortstart])) { - $snort_bootupCleanStartStop('snortstart'); - } - if (!empty($_GET[snortstop])) { - $snort_bootupCleanStartStop('snortstop'); - } - - // important - @exec("/bin/rm /tmp/snort_startstop.php.pid"); - exit(); - -?> diff --git a/config/snort-dev/snortsam-package-code/css/new_tab_menu.css b/config/snort-dev/snortsam-package-code/css/new_tab_menu.css deleted file mode 100644 index 1592be9f..00000000 --- a/config/snort-dev/snortsam-package-code/css/new_tab_menu.css +++ /dev/null @@ -1,110 +0,0 @@ -/* - new_tab_menu.css - part of pfSense - Copyright (C) 2010-2011 Robert Zelaya - - 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. - - - Replace your old tab menu with the following code. To add a second tab menu line just cut and paste again. - The following code is dependent on new_tab_menu.css and images/new_tab_menu.png. - - - - - - - -*/ - - -.spannewtab { - font-size: 0.9em; -} - -.newtabmenu ul, li{ - border:0; - margin:0; padding:0; - list-style:none; -} - -.newtabmenu li{float:left; margin-right:2px; text-align: center;} -.newtabmenu a:link, .newtabmenu a:visited{ - background:url(/snort/images/new_tab_menu.png) right 45px; - color:#ffffff; /* noactive font */ - display:block; - /* fix for IE6 */ - display: inline-block; - /* END */ - font-weight:bold; - font-size:.9em; - height:20px; - line-height:20px; - text-decoration:none; -} -.newtabmenu a span{ - background:url(/snort/images/new_tab_menu.png) left 45px; - display:block; - /* fix for IE6 */ - display: inline-block; - /* END */ - height:20px; - margin-right:7px; - padding-left:7px; -} -.newtabmenu a:hover{ - background:url(/snort/images/new_tab_menu.png) right 23px; - display:block; - /* fix for IE6 */ - display: inline-block; - /* END */ - color:#ffffff; /* hover over font */ -} -.newtabmenu a:hover span{ - background:url(/snort/images/new_tab_menu.png) left 23px; - display:block; - /* fix for IE6 */ - display: inline-block; - /* END */ -} - -/* -------------------------------- */ -/* ACTIVE ELEMENTS */ -.newtabmenu_active a:link, .newtabmenu_active a:visited, .newtabmenu_active a:visited, .newtabmenu_active a:hover{ - color:#000000; /* active font */ - background:url(/snort/images/new_tab_menu.png) right 0 no-repeat; -} -.newtabmenu_active a span, .newtabmenu_active a:hover span{ - background:url(/snort/images/new_tab_menu.png) left 0 no-repeat; -} diff --git a/config/snort-dev/snortsam-package-code/css/style_snort2.css b/config/snort-dev/snortsam-package-code/css/style_snort2.css deleted file mode 100644 index 16b2e327..00000000 --- a/config/snort-dev/snortsam-package-code/css/style_snort2.css +++ /dev/null @@ -1,571 +0,0 @@ -@charset "utf-8"; - - -/* ips tab css */ - -#infotext_ips { - - vertical-align: middle; - -} - -.nextClickList { - margin-bottom: 5px; -} - -.nextClickListColorEven { - padding-top: 2px; - padding-bottom: 2px; - padding-left: 10px; - padding-right: 10px; - background-color: #ffffff; - font-size: 11px; - border-bottom-color: #999999; - border-bottom-width: 1px; - border-bottom-style: solid; - border-right-color: #999999; - border-right-width: 1px; - border-right-style: solid; -} - -.nextClickListColorOdd { - padding-top: 2px; - padding-bottom: 2px; - padding-left: 10px; - padding-right: 10px; - background-color: #eeeeee; - font-size: 11px; - border-bottom-color: #999999; - border-bottom-width: 1px; - border-bottom-style: solid; - border-right-color: #999999; - border-right-width: 1px; - border-right-style: solid; -} - - -#right { - - position: relative; - top: -10px; - left: 0px; - width: 800px; - margin-top: 0px; - margin-left: 0px; - margin-right: 5px; - padding-top: 20px; - padding-left: 0px; - padding-right: 0px; - padding-bottom: 90px; - min-height: 400px; - -} - -.odd_ruleset2 { - text-align: center; - background-color: #ffffff; - border-left: 1px solid #999999; - border-bottom: 1px solid #999999; - font-size: 11px; - padding-right: 2px; - padding-left: 2px; - padding-top: 4px; - padding-bottom: 4px; -} - -.even_ruleset2 { - text-align: center; - background-color: #eeeeee; - border-left: 1px solid #999999; - border-bottom: 1px solid #999999; - font-size: 11px; - padding-right: 2px; - padding-left: 2px; - padding-top: 4px; - padding-bottom: 4px; -} - -.odd_ruleset { - - background-color: #ffffff; - border-left: 1px solid #999999; - border-bottom: 1px solid #999999; - font-size: 14px; - padding-right: 2px; - padding-left: 20px; - padding-top: 2px; - padding-bottom: 2px; - -} - -.even_ruleset { - - background-color: #eeeeee; - border-left: 1px solid #999999; - border-bottom: 1px solid #999999; - font-size: 14px; - padding-right: 2px; - padding-left: 20px; - padding-top: 2px; - padding-bottom: 2px; - -} - -.rulesetbkg { - background-color: #eeeeee; - padding-right: 0px; - padding-left: 0px; - border-bottom: 1px solid #999999; - font-size: 15px; -} - - -.hiddendownloadlink { - visibility:hidden; -} - -#loadingWaiting, #loadingRuleEditGUI, #loadingRuleUpadteGUI{ - display:none; - position:fixed; - left:0; - top:0; - width:100%; - height:100%; - background-image:url("/snort/images/transparentbg.png"); - z-index: 9998; - color: #ffffff; -} - -.loadingWaitingMessage{ - - text-align: center; - margin-top:40px; - -} - -.snortModal { - width:500px; - height:300px; - position:absolute; - z-index:999; - background-color:#000; -} - -.snortModalTop { - width:500px; - height:25px; - background-image:url( '/snort/images/top_modal_bar_lil.jpg' ); - background-repeat:repeat-x; - margin-bottom:1px; -} - -.snortModalTitle { - text-align: center; -} - -.snortModalTopClose { - width:9px; - height:9px; - float:right; - margin-right:10px; - margin-top:8px; -} - -.snortModalUpdate { - width: 700px; - height: 200px; - z-index:999; - background-color:#000000; -} - -.snortModalTopUpdate { - width: 700px; - height: 25px; - background-image:url( '/snort/images/top_modal_bar_lil.jpg' ); - background-repeat:repeat-x; - margin-bottom:1px; -} - -.snortModalTitleUpdate { - position:absolute; - left: 50px; - width: 600px; - margin-top: 0px; - margin-bottom: 0px; -} - -.snortModalTitleUpdateMsg1 { - top: 50px; - font-weight: bold; - font-size: 24px; -} - -.snortModalTitleUpdateBar { - top: 90px; -} - -.snortModalTitleUpdateMsg2 { - top: 145px; -} - -.listhdrr2 { - background-color: #BBBBBB; - padding-right: 1px; - padding-left: 1px; - font-weight: bold; - border-right: 1px solid #999999; - border-bottom: 1px solid #999999; - font-size: 11px; - padding-top: 5px; - padding-bottom: 5px; -} - -.listtopic2 { - border-bottom: 1px solid #999999; - font-size: 11px; - background-color: #eeeeee; - padding-right: 16px; - padding-left: 6px; - color: #000000; - font-weight: bold; - padding-top: 5px; - padding-bottom: 5px; -} - -.listtopic3 { - border-bottom: 1px solid #999999; - font-size: 11px; - background-color: #eeeeee; - padding-right: 6px; - padding-left: 16px; - color: #000000; - font-weight: bold; -} - -#footer2 { - background-color: transparent; - background-image: url("/snort/images/logo22.png"); - width: 720px; - height: 60px; - text-align: center; - font-size: 0.8em; -} - -.alert { - position:absolute; - top:10px; - left:-25px; - width:100%; - height:90%; - z-index:999; - background:#FCE9C0; - background-position: 15px; - border-top:2px solid #DBAC48; - border-bottom:2px solid #DBAC48; - padding: 15px 10px 85% 50px; -} - -.formpre { - font-family:arial; - font-size: 1.1em; -} - -#download_rules { - font-family: arial; - font-size: 13px; - font-weight: bold; - text-align: center; -} - -#download_rules_td { - font-family: arial; - font-size: 13px; - font-weight: bold; - text-align: center; -} - -/* hack fix the hard coded fbegin link */ -#header-left2 { - position: absolute; - background-position: center center; - height: 67px; - width: 147px; - top: -77px; - left: 8px; - float: left; - z-index:999; -} -#header-left2 #status-link2 { - position: relative; - top: 3px; - left: 2px; -} -/* end of fbegin hack */ - -.body2 { - font-family:arial; - font-size:12px; -} - -.tabcont { - background-color: #dddddd; - padding-right: 12px; - padding-left: 12px; - padding-top: 12px; - padding-bottom: 12px; -} - -.tabcont2 { - background-color: #eeeeee; - padding-right: 12px; - padding-left: 12px; - padding-top: 12px; - padding-bottom: 12px; -} - -.vncell2 { - background-color: #eeeeee; - padding-right: 5px; - padding-left: 5px; - border-bottom: 1px solid #999999; - font-size: 11px; -} - -.vncelltextbox { - background-color: #eeeeee; - padding-top: 8px; - padding-bottom: 8px; - padding-right: 8px; - padding-left: 8px; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: #999999; - font-size: 11px; -} - -/* global tab, white lil box */ -.vncell3 { - width: 50px; - background-color: #eeeeee; - padding-right: 2px; - padding-left: 2px; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: #999999; - font-size: 11px; -} - -.vncellreq2 { -background-color: #eeeeee; -padding-right: 20px; -padding-left: 8px; -font-weight: bold; -border-bottom-width: 1px; -border-bottom-style: solid; -border-bottom-color: #999999; -font-size: 11px; -} - -/* Start of main css Pfsense */ -/* Start of main css Pfsense */ - -.textstyle { - font-family: "Arial", "Helvetica", "sans-serif"; - font-size: 12px; - font-style: normal; - background-color: #666; - color: #CCC; -} -.textstyle p2 a { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - font-style: normal; - color: #CCC; -} - -.textstyle p { - font-family: Arial, Helvetica, sans-serif; - font-size: 24px; - font-weight: bold; - color: #FFF; - text-decoration: underline; -} -.textstyle p2 { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; - color: #CCC; -} - -/* Start of main css for table sort */ -/* Start of main css for table sort */ - -table { - margin: 0; - padding: 0; - border: 0; - font-weight: inherit; - font-style: inherit; - font-family: Arial, Helvetica, sans-serif; - vertical-align: baseline; -} - -/* Tables still need 'cellspacing="0"' in the markup. */ -table { border-collapse: separate; border-spacing: 0; } -caption, th, td { text-align: left; font-weight:400; } - -/* Remove possible quote marks (") from ,
    . */ -blockquote:before, blockquote:after, q:before, q:after { content: ""; } -blockquote, q { quotes: "" ""; } - -#container { - width: auto; - margin: 0px; - padding-top: 10px; - padding-bottom: 10px; -} - - - -/************************************************************** - - Sortable Table - v 1.4 - -**************************************************************/ - - - -th { - background-color: #eee; - background: #eee url(/snort/images/icon-table-sort.png) no-repeat 2px 8px; - padding: 4px 4px 4px 14px; -} - -.allRow { - background-color: #eee; - padding: 4px; -} - -tr.altRow { - background-color: #fff; -} - -.leftAlign { - text-align: left; -} - -.centerAlign { - text-align: center; -} - -.rightAlign { - text-align: right; -} - -.sortedASC { - background: url(/snort/images/icon-table-sort-asc.png) no-repeat 2px 4px #eee; -} - -.sortedDESC { - background: url(/snort/images/icon-table-sort-desc.png) no-repeat 2px 10px #eee; -} - -.tableHeaderOver { - cursor: pointer; - color: #354158; -} - - -tr.selected { - background-color: #9999ff; - color: #000000; -} - -tr.over { - background-color: #993333; - color: #fff; - cursor: pointer; -} - -tr.hide { - display: none; -} -/***************************/ - -.mainTableFilter { - position: absolute; - top: 0; - left: -10px; - width: auto; -} - -.tableFilter { - border: 1px solid #ccc; - padding: 2px; - margin: 5px 0 10px 0; -} - -.tableFilter input { - border: 1px solid #ccc; -} - -.tableFilter select { - border: 1px solid #ccc; -} - -.listbg2 { - border-right: 1px solid #999999; - border-bottom: 1px solid #999999; - font-size: 11px; - background-color: #090; - color: #000; - padding-right: 16px; - padding-left: 6px; - padding-top: 4px; - padding-bottom: 4px; -} - -.listbg3 { - border-right: 1px solid #999999; - border-bottom: 1px solid #999999; - font-size: 11px; - background-color: #777777; - color: #000; - padding-right: 16px; - padding-left: 6px; - padding-top: 4px; - padding-bottom: 4px; -} - -#tdbggrey { - -background-color: #ddd; - -} - -.formfld2 -{ -padding-left: 8px; -font-size: small; -} - -/*********Input Highlight*****************/ - -.formfld2 { - outline:none; - transition: all 0.25s ease-in-out; - -webkit-transition: all 0.25s ease-in-out; - -moz-transition: all 0.25s ease-in-out; - border-radius:1px; - -webkit-border-radius:1px; - -moz-border-radius:1px; - border:1px solid rgba(0,0,0, 0.2); -} - -.formfld2:focus { - box-shadow: 0 0 2px rgba(156, 156, 156, 1); - -webkit-box-shadow: 0 0 2px rgba(156, 156, 156, 1); - -moz-box-shadow: 0 0 2px rgba(156, 156, 156, 1); - border:1px solid rgba(156,156,156, 0.8); -} - diff --git a/config/snort-dev/snortsam-package-code/images/alert.jpg b/config/snort-dev/snortsam-package-code/images/alert.jpg deleted file mode 100644 index 96c24e35..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/alert.jpg and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/arrow_down.png b/config/snort-dev/snortsam-package-code/images/arrow_down.png deleted file mode 100644 index 2c4e2793..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/arrow_down.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/awesome-overlay-sprite.png b/config/snort-dev/snortsam-package-code/images/awesome-overlay-sprite.png deleted file mode 100644 index c3af7dd9..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/awesome-overlay-sprite.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/close_9x9.gif b/config/snort-dev/snortsam-package-code/images/close_9x9.gif deleted file mode 100644 index 326f5fa5..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/close_9x9.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/controls.png b/config/snort-dev/snortsam-package-code/images/controls.png deleted file mode 100644 index e1e97982..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/controls.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/down.gif b/config/snort-dev/snortsam-package-code/images/down.gif deleted file mode 100644 index 2b3c99fc..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/down.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/down2.gif b/config/snort-dev/snortsam-package-code/images/down2.gif deleted file mode 100644 index 71bf92eb..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/down2.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/footer.jpg b/config/snort-dev/snortsam-package-code/images/footer.jpg deleted file mode 100644 index 4af05707..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/footer.jpg and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/footer2.jpg b/config/snort-dev/snortsam-package-code/images/footer2.jpg deleted file mode 100644 index 3332e085..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/footer2.jpg and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/icon-table-sort-asc.png b/config/snort-dev/snortsam-package-code/images/icon-table-sort-asc.png deleted file mode 100644 index 0c127919..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/icon-table-sort-asc.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/icon-table-sort-desc.png b/config/snort-dev/snortsam-package-code/images/icon-table-sort-desc.png deleted file mode 100644 index 5c52f2d0..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/icon-table-sort-desc.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/icon-table-sort.png b/config/snort-dev/snortsam-package-code/images/icon-table-sort.png deleted file mode 100644 index 3cae604b..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/icon-table-sort.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/icon_excli.png b/config/snort-dev/snortsam-package-code/images/icon_excli.png deleted file mode 100644 index 4b54fa31..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/icon_excli.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/loading.gif b/config/snort-dev/snortsam-package-code/images/loading.gif deleted file mode 100644 index cbc00f09..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/loading.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/logo.jpg b/config/snort-dev/snortsam-package-code/images/logo.jpg deleted file mode 100644 index fa01d818..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/logo.jpg and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/logo22.png b/config/snort-dev/snortsam-package-code/images/logo22.png deleted file mode 100644 index 64ed9d75..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/logo22.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/new_tab_menu.png b/config/snort-dev/snortsam-package-code/images/new_tab_menu.png deleted file mode 100644 index f0e4cbeb..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/new_tab_menu.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/page_white_text.png b/config/snort-dev/snortsam-package-code/images/page_white_text.png deleted file mode 100644 index 813f712f..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/page_white_text.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/progress_bar2.gif b/config/snort-dev/snortsam-package-code/images/progress_bar2.gif deleted file mode 100644 index 81766a93..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/progress_bar2.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/progressbar.gif b/config/snort-dev/snortsam-package-code/images/progressbar.gif deleted file mode 100644 index 6d167f5b..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/progressbar.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/top_modal_bar_lil.jpg b/config/snort-dev/snortsam-package-code/images/top_modal_bar_lil.jpg deleted file mode 100644 index f0049de8..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/top_modal_bar_lil.jpg and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/transparent.gif b/config/snort-dev/snortsam-package-code/images/transparent.gif deleted file mode 100644 index e7ccd741..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/transparent.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/transparentbg.png b/config/snort-dev/snortsam-package-code/images/transparentbg.png deleted file mode 100644 index 86918930..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/transparentbg.png and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/up.gif b/config/snort-dev/snortsam-package-code/images/up.gif deleted file mode 100644 index 89596771..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/up.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/images/up2.gif b/config/snort-dev/snortsam-package-code/images/up2.gif deleted file mode 100644 index 21c5a254..00000000 Binary files a/config/snort-dev/snortsam-package-code/images/up2.gif and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/javascript/jquery-1.6.2.min.js b/config/snort-dev/snortsam-package-code/javascript/jquery-1.6.2.min.js deleted file mode 100644 index 48590ecb..00000000 --- a/config/snort-dev/snortsam-package-code/javascript/jquery-1.6.2.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
    a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
    ",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
    t
    ",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. -shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j -)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
    ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/config/snort-dev/snortsam-package-code/javascript/jquery.form.js b/config/snort-dev/snortsam-package-code/javascript/jquery.form.js deleted file mode 100644 index 2b853df4..00000000 --- a/config/snort-dev/snortsam-package-code/javascript/jquery.form.js +++ /dev/null @@ -1,785 +0,0 @@ -/*! - * jQuery Form Plugin - * version: 2.49 (18-OCT-2010) - * @requires jQuery v1.3.2 or later - * - * Examples and documentation at: http://malsup.com/jquery/form/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - */ -;(function($) { - -/* - Usage Note: - ----------- - Do not use both ajaxSubmit and ajaxForm on the same form. These - functions are intended to be exclusive. Use ajaxSubmit if you want - to bind your own submit handler to the form. For example, - - $(document).ready(function() { - $('#myForm').bind('submit', function(e) { - e.preventDefault(); // <-- important - $(this).ajaxSubmit({ - target: '#output' - }); - }); - }); - - Use ajaxForm when you want the plugin to manage all the event binding - for you. For example, - - $(document).ready(function() { - $('#myForm').ajaxForm({ - target: '#output' - }); - }); - - When using ajaxForm, the ajaxSubmit function will be invoked for you - at the appropriate time. -*/ - -/** - * ajaxSubmit() provides a mechanism for immediately submitting - * an HTML form using AJAX. - */ -$.fn.ajaxSubmit = function(options) { - // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) - if (!this.length) { - log('ajaxSubmit: skipping submit process - no element selected'); - return this; - } - - if (typeof options == 'function') { - options = { success: options }; - } - - var url = $.trim(this.attr('action')); - if (url) { - // clean url (don't include hash vaue) - url = (url.match(/^([^#]+)/)||[])[1]; - } - url = url || window.location.href || ''; - - options = $.extend(true, { - url: url, - type: this.attr('method') || 'GET', - iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' - }, options); - - // hook for manipulating the form data before it is extracted; - // convenient for use with rich editors like tinyMCE or FCKEditor - var veto = {}; - this.trigger('form-pre-serialize', [this, options, veto]); - if (veto.veto) { - log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); - return this; - } - - // provide opportunity to alter form data before it is serialized - if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { - log('ajaxSubmit: submit aborted via beforeSerialize callback'); - return this; - } - - var n,v,a = this.formToArray(options.semantic); - if (options.data) { - options.extraData = options.data; - for (n in options.data) { - if(options.data[n] instanceof Array) { - for (var k in options.data[n]) { - a.push( { name: n, value: options.data[n][k] } ); - } - } - else { - v = options.data[n]; - v = $.isFunction(v) ? v() : v; // if value is fn, invoke it - a.push( { name: n, value: v } ); - } - } - } - - // give pre-submit callback an opportunity to abort the submit - if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { - log('ajaxSubmit: submit aborted via beforeSubmit callback'); - return this; - } - - // fire vetoable 'validate' event - this.trigger('form-submit-validate', [a, this, options, veto]); - if (veto.veto) { - log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); - return this; - } - - var q = $.param(a); - - if (options.type.toUpperCase() == 'GET') { - options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; - options.data = null; // data is null for 'get' - } - else { - options.data = q; // data is the query string for 'post' - } - - var $form = this, callbacks = []; - if (options.resetForm) { - callbacks.push(function() { $form.resetForm(); }); - } - if (options.clearForm) { - callbacks.push(function() { $form.clearForm(); }); - } - - // perform a load on the target only if dataType is not provided - if (!options.dataType && options.target) { - var oldSuccess = options.success || function(){}; - callbacks.push(function(data) { - var fn = options.replaceTarget ? 'replaceWith' : 'html'; - $(options.target)[fn](data).each(oldSuccess, arguments); - }); - } - else if (options.success) { - callbacks.push(options.success); - } - - options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg - var context = options.context || options; // jQuery 1.4+ supports scope context - for (var i=0, max=callbacks.length; i < max; i++) { - callbacks[i].apply(context, [data, status, xhr || $form, $form]); - } - }; - - // are there files to upload? - var fileInputs = $('input:file', this).length > 0; - var mp = 'multipart/form-data'; - var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); - - // options.iframe allows user to force iframe mode - // 06-NOV-09: now defaulting to iframe mode if file input is detected - if (options.iframe !== false && (fileInputs || options.iframe || multipart)) { - // hack to fix Safari hang (thanks to Tim Molendijk for this) - // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d - if (options.closeKeepAlive) { - $.get(options.closeKeepAlive, fileUpload); - } - else { - fileUpload(); - } - } - else { - $.ajax(options); - } - - // fire 'notify' event - this.trigger('form-submit-notify', [this, options]); - return this; - - - // private function for handling file uploads (hat tip to YAHOO!) - function fileUpload() { - var form = $form[0]; - - if ($(':input[name=submit],:input[id=submit]', form).length) { - // if there is an input with a name or id of 'submit' then we won't be - // able to invoke the submit fn on the form (at least not x-browser) - alert('Error: Form elements must not have name or id of "submit".'); - return; - } - - var s = $.extend(true, {}, $.ajaxSettings, options); - s.context = s.context || s; - var id = 'jqFormIO' + (new Date().getTime()), fn = '_'+id; - window[fn] = function() { - var f = $io.data('form-plugin-onload'); - if (f) { - f(); - window[fn] = undefined; - try { delete window[fn]; } catch(e){} - } - } - var $io = $(''); - - var appendElem = jQuery('
    success...'); - appendElem.appendTo('.loadingWaitingMessage'); - setTimeout(hideLoading('#loadingWaiting'), 3000); - } - - // After Save Calls display - var appendElem = jQuery('
    success...'); - function finnish(){ - // hold msg for a min - setTimeout(function(){ - hideLoading('#loadingWaiting'); - appendElem.remove(); - updatestarted = 1; - }, 1200 ); - } - - function showResponse(data, responseText, statusText, xhr, $form){ - - // START of fill call to user - if (responseText === 'success') { - - // snort logs download success - if (data.downloadfilename !== '' && data.snortdownload === 'success'){ - downloadsnortlogs(data); - } - - // succsess display - if (data.snortgeneralsettings === 'success' || data.snortdelete === 'success' || data.snortreset === 'success'){ - // sucsses msg - appendElem.appendTo('.loadingWaitingMessage'); - - // Clean up Waiting code - finnish(); - - if (data.snortMiscTabCall === 'true'){ - jQuery.fn.miscTabCall(); // call tab misc functions - } - - if (data.snortreset) {location.reload();} // hard refresh - - } - - // END of fill call to user - }else{ - // On FAIL get some info back - //alert('responseText: \n' + data.responseText + 'FAIL'); - } - } - // END iform code - - // declare variable for iform - var options = { - beforeSubmit: showRequest, - dataType: 'json', - success: showResponse, - type: 'POST', - url: './snort_json_post.php' - }; - -}); // end of document ready - diff --git a/config/snort-dev/snortsam-package-code/patches/SnortSam/TODAO.txt b/config/snort-dev/snortsam-package-code/patches/SnortSam/TODAO.txt deleted file mode 100644 index 3abf0303..00000000 --- a/config/snort-dev/snortsam-package-code/patches/SnortSam/TODAO.txt +++ /dev/null @@ -1 +0,0 @@ -Patch current snort 2.9 \ No newline at end of file diff --git a/config/snort-dev/snortsam-package-code/patches/SnortSam/snortsam-2.8.6.1.diff b/config/snort-dev/snortsam-package-code/patches/SnortSam/snortsam-2.8.6.1.diff deleted file mode 100644 index 983165e1..00000000 --- a/config/snort-dev/snortsam-package-code/patches/SnortSam/snortsam-2.8.6.1.diff +++ /dev/null @@ -1,3021 +0,0 @@ -Index: snort-2.8.6.1/src/twofish.c -=================================================================== ---- snort-2.8.6.1/src/twofish.c (Revision 0) -+++ snort-2.8.6.1/src/twofish.c (Revision 3) -@@ -0,0 +1,971 @@ -+/* $Id: twofish.c,v 2.1 2008/12/15 20:36:05 fknobbe Exp $ -+ * -+ * -+ * Copyright (C) 1997-2000 The Cryptix Foundation Limited. -+ * Copyright (C) 2000 Farm9. -+ * Copyright (C) 2001 Frank Knobbe. -+ * All rights reserved. -+ * -+ * For Cryptix code: -+ * Use, modification, copying and distribution of this software is subject -+ * the terms and conditions of the Cryptix General Licence. You should have -+ * received a copy of the Cryptix General Licence along with this library; -+ * if not, you can download a copy from http://www.cryptix.org/ . -+ * -+ * For Farm9: -+ * --- jojo@farm9.com, August 2000, converted from Java to C++, added CBC mode and -+ * ciphertext stealing technique, added AsciiTwofish class for easy encryption -+ * decryption of text strings -+ * -+ * Frank Knobbe : -+ * --- April 2001, converted from C++ to C, prefixed global variables -+ * with TwoFish, substituted some defines, changed functions to make use of -+ * variables supplied in a struct, modified and added routines for modular calls. -+ * Cleaned up the code so that defines are used instead of fixed 16's and 32's. -+ * Created two general purpose crypt routines for one block and multiple block -+ * encryption using Joh's CBC code. -+ * Added crypt routines that use a header (with a magic and data length). -+ * (Basically a major rewrite). -+ * -+ * Note: Routines labeled _TwoFish are private and should not be used -+ * (or with extreme caution). -+ * -+ */ -+ -+#ifndef __TWOFISH_LIBRARY_SOURCE__ -+#define __TWOFISH_LIBRARY_SOURCE__ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#ifdef WIN32 -+ -+#ifndef u_long -+typedef unsigned long u_long; -+#endif -+#ifndef u_int32_t -+typedef unsigned long u_int32_t; -+#endif -+#ifndef u_word -+typedef unsigned short u_word; -+#endif -+#ifndef u_int16_t -+typedef unsigned short u_int16_t; -+#endif -+#ifndef u_char -+typedef unsigned char u_char; -+#endif -+#ifndef u_int8_t -+typedef unsigned char u_int8_t; -+#endif -+ -+#endif /* WIN32 */ -+ -+#include "twofish.h" -+ -+ -+bool TwoFish_srand=TRUE; /* if TRUE, first call of TwoFishInit will seed rand(); */ -+ /* of TwoFishInit */ -+ -+/* Fixed 8x8 permutation S-boxes */ -+static const u_int8_t TwoFish_P[2][256] = -+{ -+ { /* p0 */ -+ 0xA9, 0x67, 0xB3, 0xE8, 0x04, 0xFD, 0xA3, 0x76, 0x9A, 0x92, 0x80, 0x78, -+ 0xE4, 0xDD, 0xD1, 0x38, 0x0D, 0xC6, 0x35, 0x98, 0x18, 0xF7, 0xEC, 0x6C, -+ 0x43, 0x75, 0x37, 0x26, 0xFA, 0x13, 0x94, 0x48, 0xF2, 0xD0, 0x8B, 0x30, -+ 0x84, 0x54, 0xDF, 0x23, 0x19, 0x5B, 0x3D, 0x59, 0xF3, 0xAE, 0xA2, 0x82, -+ 0x63, 0x01, 0x83, 0x2E, 0xD9, 0x51, 0x9B, 0x7C, 0xA6, 0xEB, 0xA5, 0xBE, -+ 0x16, 0x0C, 0xE3, 0x61, 0xC0, 0x8C, 0x3A, 0xF5, 0x73, 0x2C, 0x25, 0x0B, -+ 0xBB, 0x4E, 0x89, 0x6B, 0x53, 0x6A, 0xB4, 0xF1, 0xE1, 0xE6, 0xBD, 0x45, -+ 0xE2, 0xF4, 0xB6, 0x66, 0xCC, 0x95, 0x03, 0x56, 0xD4, 0x1C, 0x1E, 0xD7, -+ 0xFB, 0xC3, 0x8E, 0xB5, 0xE9, 0xCF, 0xBF, 0xBA, 0xEA, 0x77, 0x39, 0xAF, -+ 0x33, 0xC9, 0x62, 0x71, 0x81, 0x79, 0x09, 0xAD, 0x24, 0xCD, 0xF9, 0xD8, -+ 0xE5, 0xC5, 0xB9, 0x4D, 0x44, 0x08, 0x86, 0xE7, 0xA1, 0x1D, 0xAA, 0xED, -+ 0x06, 0x70, 0xB2, 0xD2, 0x41, 0x7B, 0xA0, 0x11, 0x31, 0xC2, 0x27, 0x90, -+ 0x20, 0xF6, 0x60, 0xFF, 0x96, 0x5C, 0xB1, 0xAB, 0x9E, 0x9C, 0x52, 0x1B, -+ 0x5F, 0x93, 0x0A, 0xEF, 0x91, 0x85, 0x49, 0xEE, 0x2D, 0x4F, 0x8F, 0x3B, -+ 0x47, 0x87, 0x6D, 0x46, 0xD6, 0x3E, 0x69, 0x64, 0x2A, 0xCE, 0xCB, 0x2F, -+ 0xFC, 0x97, 0x05, 0x7A, 0xAC, 0x7F, 0xD5, 0x1A, 0x4B, 0x0E, 0xA7, 0x5A, -+ 0x28, 0x14, 0x3F, 0x29, 0x88, 0x3C, 0x4C, 0x02, 0xB8, 0xDA, 0xB0, 0x17, -+ 0x55, 0x1F, 0x8A, 0x7D, 0x57, 0xC7, 0x8D, 0x74, 0xB7, 0xC4, 0x9F, 0x72, -+ 0x7E, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, 0x6E, 0x50, 0xDE, 0x68, -+ 0x65, 0xBC, 0xDB, 0xF8, 0xC8, 0xA8, 0x2B, 0x40, 0xDC, 0xFE, 0x32, 0xA4, -+ 0xCA, 0x10, 0x21, 0xF0, 0xD3, 0x5D, 0x0F, 0x00, 0x6F, 0x9D, 0x36, 0x42, -+ 0x4A, 0x5E, 0xC1, 0xE0 -+ }, -+ { /* p1 */ -+ 0x75, 0xF3, 0xC6, 0xF4, 0xDB, 0x7B, 0xFB, 0xC8, 0x4A, 0xD3, 0xE6, 0x6B, -+ 0x45, 0x7D, 0xE8, 0x4B, 0xD6, 0x32, 0xD8, 0xFD, 0x37, 0x71, 0xF1, 0xE1, -+ 0x30, 0x0F, 0xF8, 0x1B, 0x87, 0xFA, 0x06, 0x3F, 0x5E, 0xBA, 0xAE, 0x5B, -+ 0x8A, 0x00, 0xBC, 0x9D, 0x6D, 0xC1, 0xB1, 0x0E, 0x80, 0x5D, 0xD2, 0xD5, -+ 0xA0, 0x84, 0x07, 0x14, 0xB5, 0x90, 0x2C, 0xA3, 0xB2, 0x73, 0x4C, 0x54, -+ 0x92, 0x74, 0x36, 0x51, 0x38, 0xB0, 0xBD, 0x5A, 0xFC, 0x60, 0x62, 0x96, -+ 0x6C, 0x42, 0xF7, 0x10, 0x7C, 0x28, 0x27, 0x8C, 0x13, 0x95, 0x9C, 0xC7, -+ 0x24, 0x46, 0x3B, 0x70, 0xCA, 0xE3, 0x85, 0xCB, 0x11, 0xD0, 0x93, 0xB8, -+ 0xA6, 0x83, 0x20, 0xFF, 0x9F, 0x77, 0xC3, 0xCC, 0x03, 0x6F, 0x08, 0xBF, -+ 0x40, 0xE7, 0x2B, 0xE2, 0x79, 0x0C, 0xAA, 0x82, 0x41, 0x3A, 0xEA, 0xB9, -+ 0xE4, 0x9A, 0xA4, 0x97, 0x7E, 0xDA, 0x7A, 0x17, 0x66, 0x94, 0xA1, 0x1D, -+ 0x3D, 0xF0, 0xDE, 0xB3, 0x0B, 0x72, 0xA7, 0x1C, 0xEF, 0xD1, 0x53, 0x3E, -+ 0x8F, 0x33, 0x26, 0x5F, 0xEC, 0x76, 0x2A, 0x49, 0x81, 0x88, 0xEE, 0x21, -+ 0xC4, 0x1A, 0xEB, 0xD9, 0xC5, 0x39, 0x99, 0xCD, 0xAD, 0x31, 0x8B, 0x01, -+ 0x18, 0x23, 0xDD, 0x1F, 0x4E, 0x2D, 0xF9, 0x48, 0x4F, 0xF2, 0x65, 0x8E, -+ 0x78, 0x5C, 0x58, 0x19, 0x8D, 0xE5, 0x98, 0x57, 0x67, 0x7F, 0x05, 0x64, -+ 0xAF, 0x63, 0xB6, 0xFE, 0xF5, 0xB7, 0x3C, 0xA5, 0xCE, 0xE9, 0x68, 0x44, -+ 0xE0, 0x4D, 0x43, 0x69, 0x29, 0x2E, 0xAC, 0x15, 0x59, 0xA8, 0x0A, 0x9E, -+ 0x6E, 0x47, 0xDF, 0x34, 0x35, 0x6A, 0xCF, 0xDC, 0x22, 0xC9, 0xC0, 0x9B, -+ 0x89, 0xD4, 0xED, 0xAB, 0x12, 0xA2, 0x0D, 0x52, 0xBB, 0x02, 0x2F, 0xA9, -+ 0xD7, 0x61, 0x1E, 0xB4, 0x50, 0x04, 0xF6, 0xC2, 0x16, 0x25, 0x86, 0x56, -+ 0x55, 0x09, 0xBE, 0x91 -+ } -+}; -+ -+static bool TwoFish_MDSready=FALSE; -+static u_int32_t TwoFish_MDS[4][256]; /* TwoFish_MDS matrix */ -+ -+ -+#define TwoFish_LFSR1(x) (((x)>>1)^(((x)&0x01)?TwoFish_MDS_GF_FDBK/2:0)) -+#define TwoFish_LFSR2(x) (((x)>>2)^(((x)&0x02)?TwoFish_MDS_GF_FDBK/2:0)^(((x)&0x01)?TwoFish_MDS_GF_FDBK/4:0)) -+ -+#define TwoFish_Mx_1(x) ((u_int32_t)(x)) /* force result to dword so << will work */ -+#define TwoFish_Mx_X(x) ((u_int32_t)((x)^TwoFish_LFSR2(x))) /* 5B */ -+#define TwoFish_Mx_Y(x) ((u_int32_t)((x)^TwoFish_LFSR1(x)^TwoFish_LFSR2(x))) /* EF */ -+#define TwoFish_RS_rem(x) { u_int8_t b=(u_int8_t)(x>>24); u_int32_t g2=((b<<1)^((b&0x80)?TwoFish_RS_GF_FDBK:0))&0xFF; u_int32_t g3=((b>>1)&0x7F)^((b&1)?TwoFish_RS_GF_FDBK>>1:0)^g2; x=(x<<8)^(g3<<24)^(g2<<16)^(g3<<8)^b; } -+ -+/*#define TwoFish__b(x,N) (((u_int8_t *)&x)[((N)&3)^TwoFish_ADDR_XOR])*/ /* pick bytes out of a dword */ -+ -+#define TwoFish_b0(x) TwoFish__b(x,0) /* extract LSB of u_int32_t */ -+#define TwoFish_b1(x) TwoFish__b(x,1) -+#define TwoFish_b2(x) TwoFish__b(x,2) -+#define TwoFish_b3(x) TwoFish__b(x,3) /* extract MSB of u_int32_t */ -+ -+u_int8_t TwoFish__b(u_int32_t x,int n) -+{ n&=3; -+ while(n-->0) -+ x>>=8; -+ return (u_int8_t)x; -+} -+ -+ -+/* TwoFish Initialization -+ * -+ * This routine generates a global data structure for use with TwoFish, -+ * initializes important values (such as subkeys, sBoxes), generates subkeys -+ * and precomputes the MDS matrix if not already done. -+ * -+ * Input: User supplied password (will be appended by default password of 'SnortHas2FishEncryptionRoutines!') -+ * -+ * Output: Pointer to TWOFISH structure. This data structure contains key dependent data. -+ * This pointer is used with all other crypt functions. -+ */ -+ -+TWOFISH *TwoFishInit(char *userkey) -+{ TWOFISH *tfdata; -+ int i,x,m; -+ char tkey[TwoFish_KEY_LENGTH+40]; -+ -+ tfdata=malloc(sizeof(TWOFISH)); /* allocate the TwoFish structure */ -+ if(tfdata!=NULL) -+ { if(*userkey) -+ { strncpy(tkey,userkey,TwoFish_KEY_LENGTH); /* use first 32 chars of user supplied password */ -+ tkey[TwoFish_KEY_LENGTH]=0; /* make sure it wasn't more */ -+ } -+ else -+ strcpy(tkey,TwoFish_DEFAULT_PW); /* if no key defined, use default password */ -+ for(i=0,x=0,m=strlen(tkey);ikey[i]=tkey[x++]; /* fill the whole keyspace with repeating key. */ -+ if(x==m) -+ x=0; -+ } -+ -+ if(!TwoFish_MDSready) -+ _TwoFish_PrecomputeMDSmatrix(); /* "Wake Up, Neo" */ -+ _TwoFish_MakeSubKeys(tfdata); /* generate subkeys */ -+ _TwoFish_ResetCBC(tfdata); /* reset the CBC */ -+ tfdata->output=NULL; /* nothing to output yet */ -+ tfdata->dontflush=FALSE; /* reset decrypt skip block flag */ -+ if(TwoFish_srand) -+ { TwoFish_srand=FALSE; -+ srand(time(NULL)); -+ } -+ } -+ return tfdata; /* return the data pointer */ -+} -+ -+ -+void TwoFishDestroy(TWOFISH *tfdata) -+{ if(tfdata!=NULL) -+ free(tfdata); -+} -+ -+ -+/* en/decryption with CBC mode */ -+unsigned long _TwoFish_CryptRawCBC(char *in,char *out,unsigned long len,bool decrypt,TWOFISH *tfdata) -+{ unsigned long rl; -+ -+ rl=len; /* remember how much data to crypt. */ -+ while(len>TwoFish_BLOCK_SIZE) /* and now we process block by block. */ -+ { _TwoFish_BlockCrypt(in,out,TwoFish_BLOCK_SIZE,decrypt,tfdata); /* de/encrypt it. */ -+ in+=TwoFish_BLOCK_SIZE; /* adjust pointers. */ -+ out+=TwoFish_BLOCK_SIZE; -+ len-=TwoFish_BLOCK_SIZE; -+ } -+ if(len>0) /* if we have less than a block left... */ -+ _TwoFish_BlockCrypt(in,out,len,decrypt,tfdata); /* ...then we de/encrypt that too. */ -+ if(tfdata->qBlockDefined && !tfdata->dontflush) /* in case len was exactly one block... */ -+ _TwoFish_FlushOutput(tfdata->qBlockCrypt,TwoFish_BLOCK_SIZE,tfdata); /* ...we need to write the... */ -+ /* ...remaining bytes of the buffer */ -+ return rl; -+} -+ -+/* en/decryption on one block only */ -+unsigned long _TwoFish_CryptRaw16(char *in,char *out,unsigned long len,bool decrypt,TWOFISH *tfdata) -+{ /* qBlockPlain already zero'ed through ResetCBC */ -+ memcpy(tfdata->qBlockPlain,in,len); /* toss the data into it. */ -+ _TwoFish_BlockCrypt16(tfdata->qBlockPlain,tfdata->qBlockCrypt,decrypt,tfdata); /* encrypt just that block without CBC. */ -+ memcpy(out,tfdata->qBlockCrypt,TwoFish_BLOCK_SIZE); /* and return what we got */ -+ return TwoFish_BLOCK_SIZE; -+} -+ -+/* en/decryption without reset of CBC and output assignment */ -+unsigned long _TwoFish_CryptRaw(char *in,char *out,unsigned long len,bool decrypt,TWOFISH *tfdata) -+{ -+ if(in!=NULL && out!=NULL && len>0 && tfdata!=NULL) /* if we have valid data, then... */ -+ { if(len>TwoFish_BLOCK_SIZE) /* ...check if we have more than one block. */ -+ return _TwoFish_CryptRawCBC(in,out,len,decrypt,tfdata); /* if so, use the CBC routines... */ -+ else -+ return _TwoFish_CryptRaw16(in,out,len,decrypt,tfdata); /* ...otherwise just do one block. */ -+ } -+ return 0; -+} -+ -+ -+/* TwoFish Raw Encryption -+ * -+ * Does not use header, but does use CBC (if more than one block has to be encrypted). -+ * -+ * Input: Pointer to the buffer of the plaintext to be encrypted. -+ * Pointer to the buffer receiving the ciphertext. -+ * The length of the plaintext buffer. -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes encrypted if successful, otherwise 0. -+ */ -+ -+unsigned long TwoFishEncryptRaw(char *in, -+ char *out, -+ unsigned long len, -+ TWOFISH *tfdata) -+{ _TwoFish_ResetCBC(tfdata); /* reset CBC flag. */ -+ tfdata->output=out; /* output straight into output buffer. */ -+ return _TwoFish_CryptRaw(in,out,len,FALSE,tfdata); /* and go for it. */ -+} -+ -+/* TwoFish Raw Decryption -+ * -+ * Does not use header, but does use CBC (if more than one block has to be decrypted). -+ * -+ * Input: Pointer to the buffer of the ciphertext to be decrypted. -+ * Pointer to the buffer receiving the plaintext. -+ * The length of the ciphertext buffer (at least one cipher block). -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes decrypted if successful, otherwise 0. -+ */ -+ -+unsigned long TwoFishDecryptRaw(char *in, -+ char *out, -+ unsigned long len, -+ TWOFISH *tfdata) -+{ _TwoFish_ResetCBC(tfdata); /* reset CBC flag. */ -+ tfdata->output=out; /* output straight into output buffer. */ -+ return _TwoFish_CryptRaw(in,out,len,TRUE,tfdata); /* and go for it. */ -+} -+ -+/* TwoFish Free -+ * -+ * Free's the allocated buffer. -+ * -+ * Input: Pointer to the TwoFish structure -+ * -+ * Output: (none) -+ */ -+ -+void TwoFishFree(TWOFISH *tfdata) -+{ if(tfdata->output!=NULL) /* if a valid buffer is present... */ -+ { free(tfdata->output); /* ...then we free it for you... */ -+ tfdata->output=NULL; /* ...and mark as such. */ -+ } -+} -+ -+/* TwoFish Set Output -+ * -+ * If you want to allocate the output buffer yourself, -+ * then you can set it with this function. -+ * -+ * Input: Pointer to your output buffer -+ * Pointer to the TwoFish structure -+ * -+ * Output: (none) -+ */ -+ -+void TwoFishSetOutput(char *outp,TWOFISH *tfdata) -+{ tfdata->output=outp; /* (do we really need a function for this?) */ -+} -+ -+/* TwoFish Alloc -+ * -+ * Allocates enough memory for the output buffer that would be required -+ * -+ * Input: Length of the plaintext. -+ * Boolean flag for BinHex Output. -+ * Pointer to the TwoFish structure. -+ * -+ * Output: Returns a pointer to the memory allocated. -+ */ -+ -+void *TwoFishAlloc(unsigned long len,bool binhex,bool decrypt,TWOFISH *tfdata) -+{ -+/* TwoFishFree(tfdata); */ /* (don't for now) discard whatever was allocated earlier. */ -+ if(decrypt) /* if decrypting... */ -+ { if(binhex) /* ...and input is binhex encoded... */ -+ len/=2; /* ...use half as much for output. */ -+ len-=TwoFish_BLOCK_SIZE; /* Also, subtract the size of the header. */ -+ } -+ else -+ { len+=TwoFish_BLOCK_SIZE; /* the size is just increased by the header... */ -+ if(binhex) -+ len*=2; /* ...and doubled if output is to be binhexed. */ -+ } -+ tfdata->output=malloc(len+TwoFish_BLOCK_SIZE);/* grab some memory...plus some extra (it's running over somewhere, crashes without extra padding) */ -+ -+ return tfdata->output; /* ...and return to caller. */ -+} -+ -+/* bin2hex and hex2bin conversion */ -+void _TwoFish_BinHex(u_int8_t *buf,unsigned long len,bool bintohex) -+{ u_int8_t *pi,*po,c; -+ -+ if(bintohex) -+ { for(pi=buf+len-1,po=buf+(2*len)-1;len>0;pi--,po--,len--) /* let's start from the end of the bin block. */ -+ { c=*pi; /* grab value. */ -+ c&=15; /* use lower 4 bits. */ -+ if(c>9) /* convert to ascii. */ -+ c+=('a'-10); -+ else -+ c+='0'; -+ *po--=c; /* set the lower nibble. */ -+ c=*pi; /* grab value again. */ -+ c>>=4; /* right shift 4 bits. */ -+ c&=15; /* make sure we only have 4 bits. */ -+ if(c>9) /* convert to ascii. */ -+ c+=('a'-10); -+ else -+ c+='0'; -+ *po=c; /* set the higher nibble. */ -+ } /* and keep going. */ -+ } -+ else -+ { for(pi=buf,po=buf;len>0;pi++,po++,len-=2) /* let's start from the beginning of the hex block. */ -+ { c=tolower(*pi++)-'0'; /* grab higher nibble. */ -+ if(c>9) /* convert to value. */ -+ c-=('0'-9); -+ *po=c<<4; /* left shit 4 bits. */ -+ c=tolower(*pi)-'0'; /* grab lower nibble. */ -+ if(c>9) /* convert to value. */ -+ c-=('0'-9); -+ *po|=c; /* and add to value. */ -+ } -+ } -+} -+ -+ -+/* TwoFish Encryption -+ * -+ * Uses header and CBC. If the output area has not been intialized with TwoFishAlloc, -+ * this routine will alloc the memory. In addition, it will include a small 'header' -+ * containing the magic and some salt. That way the decrypt routine can check if the -+ * packet got decrypted successfully, and return 0 instead of garbage. -+ * -+ * Input: Pointer to the buffer of the plaintext to be encrypted. -+ * Pointer to the pointer to the buffer receiving the ciphertext. -+ * The pointer either points to user allocated output buffer space, or to NULL, in which case -+ * this routine will set the pointer to the buffer allocated through the struct. -+ * The length of the plaintext buffer. -+ * Can be -1 if the input is a null terminated string, in which case we'll count for you. -+ * Boolean flag for BinHex Output (if used, output will be twice as large as input). -+ * Note: BinHex conversion overwrites (converts) input buffer! -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes encrypted if successful, otherwise 0. -+ */ -+ -+unsigned long TwoFishEncrypt(char *in, -+ char **out, -+ signed long len, -+ bool binhex, -+ TWOFISH *tfdata) -+{ unsigned long ilen,olen; -+ -+ -+ if(len== -1) /* if we got -1 for len, we'll assume IN is a... */ -+ ilen=strlen(in); /* ...\0 terminated string and figure len out ourselves... */ -+ else -+ ilen=len; /* ...otherwise we trust you supply a correct length. */ -+ -+ if(in!=NULL && out!=NULL && ilen>0 && tfdata!=NULL) /* if we got usable stuff, we'll do it. */ -+ { if(*out==NULL) /* if OUT points to a NULL pointer... */ -+ *out=TwoFishAlloc(ilen,binhex,FALSE,tfdata); /* ...we'll (re-)allocate buffer space. */ -+ if(*out!=NULL) -+ { tfdata->output=*out; /* set output buffer. */ -+ tfdata->header.salt=rand()*65536+rand(); /* toss in some salt. */ -+ tfdata->header.length[0]= (u_int8_t)(ilen); -+ tfdata->header.length[1]= (u_int8_t)(ilen>>8); -+ tfdata->header.length[2]= (u_int8_t)(ilen>>16); -+ tfdata->header.length[3]= (u_int8_t)(ilen>>24); -+ memcpy(tfdata->header.magic,TwoFish_MAGIC,TwoFish_MAGIC_LEN); /* set the magic. */ -+ olen=TwoFish_BLOCK_SIZE; /* set output counter. */ -+ _TwoFish_ResetCBC(tfdata); /* reset the CBC flag */ -+ _TwoFish_BlockCrypt((u_int8_t *)&(tfdata->header),*out,olen,FALSE,tfdata); /* encrypt first block (without flush on 16 byte boundary). */ -+ olen+=_TwoFish_CryptRawCBC(in,*out+TwoFish_BLOCK_SIZE,ilen,FALSE,tfdata); /* and encrypt the rest (we do not reset the CBC flag). */ -+ if(binhex) /* if binhex... */ -+ { _TwoFish_BinHex(*out,olen,TRUE); /* ...convert output to binhex... */ -+ olen*=2; /* ...and size twice as large. */ -+ } -+ tfdata->output=*out; -+ return olen; -+ } -+ } -+ return 0; -+} -+ -+/* TwoFish Decryption -+ * -+ * Uses header and CBC. If the output area has not been intialized with TwoFishAlloc, -+ * this routine will alloc the memory. In addition, it will check the small 'header' -+ * containing the magic. If magic does not match we return 0. Otherwise we return the -+ * amount of bytes decrypted (should be the same as the length in the header). -+ * -+ * Input: Pointer to the buffer of the ciphertext to be decrypted. -+ * Pointer to the pointer to the buffer receiving the plaintext. -+ * The pointer either points to user allocated output buffer space, or to NULL, in which case -+ * this routine will set the pointer to the buffer allocated through the struct. -+ * The length of the ciphertext buffer. -+ * Can be -1 if the input is a null terminated binhex string, in which case we'll count for you. -+ * Boolean flag for BinHex Input (if used, plaintext will be half as large as input). -+ * Note: BinHex conversion overwrites (converts) input buffer! -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes decrypted if successful, otherwise 0. -+ */ -+ -+unsigned long TwoFishDecrypt(char *in, -+ char **out, -+ signed long len, -+ bool binhex, -+ TWOFISH *tfdata) -+{ unsigned long ilen,elen,olen; -+ const u_int8_t cmagic[TwoFish_MAGIC_LEN]=TwoFish_MAGIC; -+ u_int8_t *tbuf; -+ -+ -+ -+ if(len== -1) /* if we got -1 for len, we'll assume IN is... */ -+ ilen=strlen(in); /* ...\0 terminated binhex and figure len out ourselves... */ -+ else -+ ilen=len; /* ...otherwise we trust you supply a correct length. */ -+ -+ if(in!=NULL && out!=NULL && ilen>0 && tfdata!=NULL) /* if we got usable stuff, we'll do it. */ -+ { if(*out==NULL) /* if OUT points to a NULL pointer... */ -+ *out=TwoFishAlloc(ilen,binhex,TRUE,tfdata); /* ...we'll (re-)allocate buffer space. */ -+ if(*out!=NULL) -+ { if(binhex) /* if binhex... */ -+ { _TwoFish_BinHex(in,ilen,FALSE); /* ...convert input to values... */ -+ ilen/=2; /* ...and size half as much. */ -+ } -+ _TwoFish_ResetCBC(tfdata); /* reset the CBC flag. */ -+ -+ tbuf=(u_int8_t *)malloc(ilen+TwoFish_BLOCK_SIZE); /* get memory for data and header. */ -+ if(tbuf==NULL) -+ return 0; -+ tfdata->output=tbuf; /* set output to temp buffer. */ -+ -+ olen=_TwoFish_CryptRawCBC(in,tbuf,ilen,TRUE,tfdata)-TwoFish_BLOCK_SIZE; /* decrypt the whole thing. */ -+ memcpy(&(tfdata->header),tbuf,TwoFish_BLOCK_SIZE); /* copy first block into header. */ -+ tfdata->output=*out; -+ for(elen=0;elenheader.magic[elen]!=cmagic[elen]) -+ break; -+ if(elen==TwoFish_MAGIC_LEN) /* if magic matches then... */ -+ { elen=(tfdata->header.length[0]) | -+ (tfdata->header.length[1])<<8 | -+ (tfdata->header.length[2])<<16 | -+ (tfdata->header.length[3])<<24; /* .. we know how much to expect. */ -+ if(elen>olen) /* adjust if necessary. */ -+ elen=olen; -+ memcpy(*out,tbuf+TwoFish_BLOCK_SIZE,elen); /* copy data into intended output. */ -+ free(tbuf); -+ return elen; -+ } -+ free(tbuf); -+ } -+ } -+ return 0; -+} -+ -+void _TwoFish_PrecomputeMDSmatrix(void) /* precompute the TwoFish_MDS matrix */ -+{ u_int32_t m1[2]; -+ u_int32_t mX[2]; -+ u_int32_t mY[2]; -+ u_int32_t i, j; -+ -+ for (i = 0; i < 256; i++) -+ { j = TwoFish_P[0][i] & 0xFF; /* compute all the matrix elements */ -+ m1[0] = j; -+ mX[0] = TwoFish_Mx_X( j ) & 0xFF; -+ mY[0] = TwoFish_Mx_Y( j ) & 0xFF; -+ -+ j = TwoFish_P[1][i] & 0xFF; -+ m1[1] = j; -+ mX[1] = TwoFish_Mx_X( j ) & 0xFF; -+ mY[1] = TwoFish_Mx_Y( j ) & 0xFF; -+ -+ TwoFish_MDS[0][i] = m1[TwoFish_P_00] | /* fill matrix w/ above elements */ -+ mX[TwoFish_P_00] << 8 | -+ mY[TwoFish_P_00] << 16 | -+ mY[TwoFish_P_00] << 24; -+ TwoFish_MDS[1][i] = mY[TwoFish_P_10] | -+ mY[TwoFish_P_10] << 8 | -+ mX[TwoFish_P_10] << 16 | -+ m1[TwoFish_P_10] << 24; -+ TwoFish_MDS[2][i] = mX[TwoFish_P_20] | -+ mY[TwoFish_P_20] << 8 | -+ m1[TwoFish_P_20] << 16 | -+ mY[TwoFish_P_20] << 24; -+ TwoFish_MDS[3][i] = mX[TwoFish_P_30] | -+ m1[TwoFish_P_30] << 8 | -+ mY[TwoFish_P_30] << 16 | -+ mX[TwoFish_P_30] << 24; -+ } -+ TwoFish_MDSready=TRUE; -+} -+ -+ -+void _TwoFish_MakeSubKeys(TWOFISH *tfdata) /* Expand a user-supplied key material into a session key. */ -+{ u_int32_t k64Cnt = TwoFish_KEY_LENGTH / 8; -+ u_int32_t k32e[4]; /* even 32-bit entities */ -+ u_int32_t k32o[4]; /* odd 32-bit entities */ -+ u_int32_t sBoxKey[4]; -+ u_int32_t offset,i,j; -+ u_int32_t A, B, q=0; -+ u_int32_t k0,k1,k2,k3; -+ u_int32_t b0,b1,b2,b3; -+ -+ /* split user key material into even and odd 32-bit entities and */ -+ /* compute S-box keys using (12, 8) Reed-Solomon code over GF(256) */ -+ -+ -+ for (offset=0,i=0,j=k64Cnt-1;i<4 && offsetkey[offset++]; -+ k32e[i]|= tfdata->key[offset++]<<8; -+ k32e[i]|= tfdata->key[offset++]<<16; -+ k32e[i]|= tfdata->key[offset++]<<24; -+ k32o[i] = tfdata->key[offset++]; -+ k32o[i]|= tfdata->key[offset++]<<8; -+ k32o[i]|= tfdata->key[offset++]<<16; -+ k32o[i]|= tfdata->key[offset++]<<24; -+ sBoxKey[j] = _TwoFish_RS_MDS_Encode( k32e[i], k32o[i] ); /* reverse order */ -+ } -+ -+ /* compute the round decryption subkeys for PHT. these same subkeys */ -+ /* will be used in encryption but will be applied in reverse order. */ -+ i=0; -+ while(i < TwoFish_TOTAL_SUBKEYS) -+ { A = _TwoFish_F32( k64Cnt, q, k32e ); /* A uses even key entities */ -+ q += TwoFish_SK_BUMP; -+ -+ B = _TwoFish_F32( k64Cnt, q, k32o ); /* B uses odd key entities */ -+ q += TwoFish_SK_BUMP; -+ -+ B = B << 8 | B >> 24; -+ -+ A += B; -+ tfdata->subKeys[i++] = A; /* combine with a PHT */ -+ -+ A += B; -+ tfdata->subKeys[i++] = A << TwoFish_SK_ROTL | A >> (32-TwoFish_SK_ROTL); -+ } -+ -+ /* fully expand the table for speed */ -+ k0 = sBoxKey[0]; -+ k1 = sBoxKey[1]; -+ k2 = sBoxKey[2]; -+ k3 = sBoxKey[3]; -+ -+ for (i = 0; i < 256; i++) -+ { b0 = b1 = b2 = b3 = i; -+ switch (k64Cnt & 3) -+ { case 1: /* 64-bit keys */ -+ tfdata->sBox[ 2*i ] = TwoFish_MDS[0][(TwoFish_P[TwoFish_P_01][b0]) ^ TwoFish_b0(k0)]; -+ tfdata->sBox[ 2*i+1] = TwoFish_MDS[1][(TwoFish_P[TwoFish_P_11][b1]) ^ TwoFish_b1(k0)]; -+ tfdata->sBox[0x200+2*i ] = TwoFish_MDS[2][(TwoFish_P[TwoFish_P_21][b2]) ^ TwoFish_b2(k0)]; -+ tfdata->sBox[0x200+2*i+1] = TwoFish_MDS[3][(TwoFish_P[TwoFish_P_31][b3]) ^ TwoFish_b3(k0)]; -+ break; -+ case 0: /* 256-bit keys (same as 4) */ -+ b0 = (TwoFish_P[TwoFish_P_04][b0]) ^ TwoFish_b0(k3); -+ b1 = (TwoFish_P[TwoFish_P_14][b1]) ^ TwoFish_b1(k3); -+ b2 = (TwoFish_P[TwoFish_P_24][b2]) ^ TwoFish_b2(k3); -+ b3 = (TwoFish_P[TwoFish_P_34][b3]) ^ TwoFish_b3(k3); -+ case 3: /* 192-bit keys */ -+ b0 = (TwoFish_P[TwoFish_P_03][b0]) ^ TwoFish_b0(k2); -+ b1 = (TwoFish_P[TwoFish_P_13][b1]) ^ TwoFish_b1(k2); -+ b2 = (TwoFish_P[TwoFish_P_23][b2]) ^ TwoFish_b2(k2); -+ b3 = (TwoFish_P[TwoFish_P_33][b3]) ^ TwoFish_b3(k2); -+ case 2: /* 128-bit keys */ -+ tfdata->sBox[ 2*i ]= -+ TwoFish_MDS[0][(TwoFish_P[TwoFish_P_01][(TwoFish_P[TwoFish_P_02][b0]) ^ -+ TwoFish_b0(k1)]) ^ TwoFish_b0(k0)]; -+ -+ tfdata->sBox[ 2*i+1]= -+ TwoFish_MDS[1][(TwoFish_P[TwoFish_P_11][(TwoFish_P[TwoFish_P_12][b1]) ^ -+ TwoFish_b1(k1)]) ^ TwoFish_b1(k0)]; -+ -+ tfdata->sBox[0x200+2*i ]= -+ TwoFish_MDS[2][(TwoFish_P[TwoFish_P_21][(TwoFish_P[TwoFish_P_22][b2]) ^ -+ TwoFish_b2(k1)]) ^ TwoFish_b2(k0)]; -+ -+ tfdata->sBox[0x200+2*i+1]= -+ TwoFish_MDS[3][(TwoFish_P[TwoFish_P_31][(TwoFish_P[TwoFish_P_32][b3]) ^ -+ TwoFish_b3(k1)]) ^ TwoFish_b3(k0)]; -+ } -+ } -+} -+ -+ -+/** -+ * Encrypt or decrypt exactly one block of plaintext in CBC mode. -+ * Use "ciphertext stealing" technique described on pg. 196 -+ * of "Applied Cryptography" to encrypt the final partial -+ * (i.e. <16 byte) block if necessary. -+ * -+ * jojo: the "ciphertext stealing" requires we read ahead and have -+ * special handling for the last two blocks. Because of this, the -+ * output from the TwoFish algorithm is handled internally here. -+ * It would be better to have a higher level handle this as well as -+ * CBC mode. Unfortunately, I've mixed the two together, which is -+ * pretty crappy... The Java version separates these out correctly. -+ * -+ * fknobbe: I have reduced the CBC mode to work on memory buffer only. -+ * Higher routines should use an intermediate buffer and handle -+ * their output seperately (mainly so the data can be flushed -+ * in one chunk, not seperate 16 byte blocks...) -+ * -+ * @param in The plaintext. -+ * @param out The ciphertext -+ * @param size how much to encrypt -+ * @param tfdata: Pointer to the global data structure containing session keys. -+ * @return none -+ */ -+void _TwoFish_BlockCrypt(u_int8_t *in,u_int8_t *out,unsigned long size,int decrypt,TWOFISH *tfdata) -+{ u_int8_t PnMinusOne[TwoFish_BLOCK_SIZE]; -+ u_int8_t CnMinusOne[TwoFish_BLOCK_SIZE]; -+ u_int8_t CBCplusCprime[TwoFish_BLOCK_SIZE]; -+ u_int8_t Pn[TwoFish_BLOCK_SIZE]; -+ u_int8_t *p,*pout; -+ unsigned long i; -+ -+ /* here is where we implement CBC mode and cipher block stealing */ -+ if(size==TwoFish_BLOCK_SIZE) -+ { /* if we are encrypting, CBC means we XOR the plain text block with the */ -+ /* previous cipher text block before encrypting */ -+ if(!decrypt && tfdata->qBlockDefined) -+ { for(p=in,i=0;iqBlockCrypt[i]; /* FK: I'm copying the xor'ed input into Pn... */ -+ } -+ else -+ memcpy(Pn,in,TwoFish_BLOCK_SIZE); /* FK: same here. we work of Pn all the time. */ -+ -+ /* TwoFish block level encryption or decryption */ -+ _TwoFish_BlockCrypt16(Pn,out,decrypt,tfdata); -+ -+ /* if we are decrypting, CBC means we XOR the result of the decryption */ -+ /* with the previous cipher text block to get the resulting plain text */ -+ if(decrypt && tfdata->qBlockDefined) -+ { for (p=out,i=0;iqBlockPlain[i]; -+ } -+ -+ /* save the input and output blocks, since CBC needs these for XOR */ -+ /* operations */ -+ _TwoFish_qBlockPush(Pn,out,tfdata); -+ } -+ else -+ { /* cipher block stealing, we are at Pn, */ -+ /* but since Cn-1 must now be replaced with CnC' */ -+ /* we pop it off, and recalculate Cn-1 */ -+ -+ if(decrypt) -+ { /* We are on an odd block, and had to do cipher block stealing, */ -+ /* so the PnMinusOne has to be derived differently. */ -+ -+ /* First we decrypt it into CBC and C' */ -+ _TwoFish_qBlockPop(CnMinusOne,PnMinusOne,tfdata); -+ _TwoFish_BlockCrypt16(CnMinusOne,CBCplusCprime,decrypt,tfdata); -+ -+ /* we then xor the first few bytes with the "in" bytes (Cn) */ -+ /* to recover Pn, which we put in out */ -+ for(p=in,pout=out,i=0;iprevCipher[i]; -+ -+ /* So at this point, out has PnMinusOne */ -+ _TwoFish_qBlockPush(CnMinusOne,PnMinusOne,tfdata); -+ _TwoFish_FlushOutput(tfdata->qBlockCrypt,TwoFish_BLOCK_SIZE,tfdata); -+ _TwoFish_FlushOutput(out,size,tfdata); -+ } -+ else -+ { _TwoFish_qBlockPop(PnMinusOne,CnMinusOne,tfdata); -+ memset(Pn,0,TwoFish_BLOCK_SIZE); -+ memcpy(Pn,in,size); -+ for(i=0;iqBlockCrypt,TwoFish_BLOCK_SIZE,tfdata); -+ _TwoFish_FlushOutput(CnMinusOne,size,tfdata); /* old Cn-1 becomes new partial Cn */ -+ } -+ tfdata->qBlockDefined=FALSE; -+ } -+} -+ -+void _TwoFish_qBlockPush(u_int8_t *p,u_int8_t *c,TWOFISH *tfdata) -+{ if(tfdata->qBlockDefined) -+ _TwoFish_FlushOutput(tfdata->qBlockCrypt,TwoFish_BLOCK_SIZE,tfdata); -+ memcpy(tfdata->prevCipher,tfdata->qBlockPlain,TwoFish_BLOCK_SIZE); -+ memcpy(tfdata->qBlockPlain,p,TwoFish_BLOCK_SIZE); -+ memcpy(tfdata->qBlockCrypt,c,TwoFish_BLOCK_SIZE); -+ tfdata->qBlockDefined=TRUE; -+} -+ -+void _TwoFish_qBlockPop(u_int8_t *p,u_int8_t *c,TWOFISH *tfdata) -+{ memcpy(p,tfdata->qBlockPlain,TwoFish_BLOCK_SIZE ); -+ memcpy(c,tfdata->qBlockCrypt,TwoFish_BLOCK_SIZE ); -+ tfdata->qBlockDefined=FALSE; -+} -+ -+/* Reset's the CBC flag and zero's PrevCipher (through qBlockPlain) (important) */ -+void _TwoFish_ResetCBC(TWOFISH *tfdata) -+{ tfdata->qBlockDefined=FALSE; -+ memset(tfdata->qBlockPlain,0,TwoFish_BLOCK_SIZE); -+} -+ -+void _TwoFish_FlushOutput(u_int8_t *b,unsigned long len,TWOFISH *tfdata) -+{ unsigned long i; -+ -+ for(i=0;idontflush;i++) -+ *tfdata->output++ = *b++; -+ tfdata->dontflush=FALSE; -+} -+ -+void _TwoFish_BlockCrypt16(u_int8_t *in,u_int8_t *out,bool decrypt,TWOFISH *tfdata) -+{ u_int32_t x0,x1,x2,x3; -+ u_int32_t k,t0,t1,R; -+ -+ -+ x0=*in++; -+ x0|=(*in++ << 8 ); -+ x0|=(*in++ << 16); -+ x0|=(*in++ << 24); -+ x1=*in++; -+ x1|=(*in++ << 8 ); -+ x1|=(*in++ << 16); -+ x1|=(*in++ << 24); -+ x2=*in++; -+ x2|=(*in++ << 8 ); -+ x2|=(*in++ << 16); -+ x2|=(*in++ << 24); -+ x3=*in++; -+ x3|=(*in++ << 8 ); -+ x3|=(*in++ << 16); -+ x3|=(*in++ << 24); -+ -+ if(decrypt) -+ { x0 ^= tfdata->subKeys[4]; /* swap input and output whitening keys when decrypting */ -+ x1 ^= tfdata->subKeys[5]; -+ x2 ^= tfdata->subKeys[6]; -+ x3 ^= tfdata->subKeys[7]; -+ -+ k = 7+(TwoFish_ROUNDS*2); -+ for (R = 0; R < TwoFish_ROUNDS; R += 2) -+ { t0 = _TwoFish_Fe320( tfdata->sBox, x0); -+ t1 = _TwoFish_Fe323( tfdata->sBox, x1); -+ x3 ^= t0 + (t1<<1) + tfdata->subKeys[k--]; -+ x3 = x3 >> 1 | x3 << 31; -+ x2 = x2 << 1 | x2 >> 31; -+ x2 ^= t0 + t1 + tfdata->subKeys[k--]; -+ -+ t0 = _TwoFish_Fe320( tfdata->sBox, x2); -+ t1 = _TwoFish_Fe323( tfdata->sBox, x3); -+ x1 ^= t0 + (t1<<1) + tfdata->subKeys[k--]; -+ x1 = x1 >> 1 | x1 << 31; -+ x0 = x0 << 1 | x0 >> 31; -+ x0 ^= t0 + t1 + tfdata->subKeys[k--]; -+ } -+ -+ x2 ^= tfdata->subKeys[0]; -+ x3 ^= tfdata->subKeys[1]; -+ x0 ^= tfdata->subKeys[2]; -+ x1 ^= tfdata->subKeys[3]; -+ } -+ else -+ { x0 ^= tfdata->subKeys[0]; -+ x1 ^= tfdata->subKeys[1]; -+ x2 ^= tfdata->subKeys[2]; -+ x3 ^= tfdata->subKeys[3]; -+ -+ k = 8; -+ for (R = 0; R < TwoFish_ROUNDS; R += 2) -+ { t0 = _TwoFish_Fe320( tfdata->sBox, x0); -+ t1 = _TwoFish_Fe323( tfdata->sBox, x1); -+ x2 ^= t0 + t1 + tfdata->subKeys[k++]; -+ x2 = x2 >> 1 | x2 << 31; -+ x3 = x3 << 1 | x3 >> 31; -+ x3 ^= t0 + (t1<<1) + tfdata->subKeys[k++]; -+ -+ t0 = _TwoFish_Fe320( tfdata->sBox, x2); -+ t1 = _TwoFish_Fe323( tfdata->sBox, x3); -+ x0 ^= t0 + t1 + tfdata->subKeys[k++]; -+ x0 = x0 >> 1 | x0 << 31; -+ x1 = x1 << 1 | x1 >> 31; -+ x1 ^= t0 + (t1<<1) + tfdata->subKeys[k++]; -+ } -+ -+ x2 ^= tfdata->subKeys[4]; -+ x3 ^= tfdata->subKeys[5]; -+ x0 ^= tfdata->subKeys[6]; -+ x1 ^= tfdata->subKeys[7]; -+ } -+ -+ *out++ = (u_int8_t)(x2 ); -+ *out++ = (u_int8_t)(x2 >> 8); -+ *out++ = (u_int8_t)(x2 >> 16); -+ *out++ = (u_int8_t)(x2 >> 24); -+ -+ *out++ = (u_int8_t)(x3 ); -+ *out++ = (u_int8_t)(x3 >> 8); -+ *out++ = (u_int8_t)(x3 >> 16); -+ *out++ = (u_int8_t)(x3 >> 24); -+ -+ *out++ = (u_int8_t)(x0 ); -+ *out++ = (u_int8_t)(x0 >> 8); -+ *out++ = (u_int8_t)(x0 >> 16); -+ *out++ = (u_int8_t)(x0 >> 24); -+ -+ *out++ = (u_int8_t)(x1 ); -+ *out++ = (u_int8_t)(x1 >> 8); -+ *out++ = (u_int8_t)(x1 >> 16); -+ *out++ = (u_int8_t)(x1 >> 24); -+} -+ -+/** -+ * Use (12, 8) Reed-Solomon code over GF(256) to produce a key S-box -+ * 32-bit entity from two key material 32-bit entities. -+ * -+ * @param k0 1st 32-bit entity. -+ * @param k1 2nd 32-bit entity. -+ * @return Remainder polynomial generated using RS code -+ */ -+u_int32_t _TwoFish_RS_MDS_Encode(u_int32_t k0,u_int32_t k1) -+{ u_int32_t i,r; -+ -+ for(r=k1,i=0;i<4;i++) /* shift 1 byte at a time */ -+ TwoFish_RS_rem(r); -+ r ^= k0; -+ for(i=0;i<4;i++) -+ TwoFish_RS_rem(r); -+ -+ return r; -+} -+ -+u_int32_t _TwoFish_F32(u_int32_t k64Cnt,u_int32_t x,u_int32_t *k32) -+{ u_int8_t b0,b1,b2,b3; -+ u_int32_t k0,k1,k2,k3,result = 0; -+ -+ b0=TwoFish_b0(x); -+ b1=TwoFish_b1(x); -+ b2=TwoFish_b2(x); -+ b3=TwoFish_b3(x); -+ k0=k32[0]; -+ k1=k32[1]; -+ k2=k32[2]; -+ k3=k32[3]; -+ -+ switch (k64Cnt & 3) -+ { case 1: /* 64-bit keys */ -+ result = -+ TwoFish_MDS[0][(TwoFish_P[TwoFish_P_01][b0] & 0xFF) ^ TwoFish_b0(k0)] ^ -+ TwoFish_MDS[1][(TwoFish_P[TwoFish_P_11][b1] & 0xFF) ^ TwoFish_b1(k0)] ^ -+ TwoFish_MDS[2][(TwoFish_P[TwoFish_P_21][b2] & 0xFF) ^ TwoFish_b2(k0)] ^ -+ TwoFish_MDS[3][(TwoFish_P[TwoFish_P_31][b3] & 0xFF) ^ TwoFish_b3(k0)]; -+ break; -+ case 0: /* 256-bit keys (same as 4) */ -+ b0 = (TwoFish_P[TwoFish_P_04][b0] & 0xFF) ^ TwoFish_b0(k3); -+ b1 = (TwoFish_P[TwoFish_P_14][b1] & 0xFF) ^ TwoFish_b1(k3); -+ b2 = (TwoFish_P[TwoFish_P_24][b2] & 0xFF) ^ TwoFish_b2(k3); -+ b3 = (TwoFish_P[TwoFish_P_34][b3] & 0xFF) ^ TwoFish_b3(k3); -+ -+ case 3: /* 192-bit keys */ -+ b0 = (TwoFish_P[TwoFish_P_03][b0] & 0xFF) ^ TwoFish_b0(k2); -+ b1 = (TwoFish_P[TwoFish_P_13][b1] & 0xFF) ^ TwoFish_b1(k2); -+ b2 = (TwoFish_P[TwoFish_P_23][b2] & 0xFF) ^ TwoFish_b2(k2); -+ b3 = (TwoFish_P[TwoFish_P_33][b3] & 0xFF) ^ TwoFish_b3(k2); -+ case 2: /* 128-bit keys (optimize for this case) */ -+ result = -+ TwoFish_MDS[0][(TwoFish_P[TwoFish_P_01][(TwoFish_P[TwoFish_P_02][b0] & 0xFF) ^ TwoFish_b0(k1)] & 0xFF) ^ TwoFish_b0(k0)] ^ -+ TwoFish_MDS[1][(TwoFish_P[TwoFish_P_11][(TwoFish_P[TwoFish_P_12][b1] & 0xFF) ^ TwoFish_b1(k1)] & 0xFF) ^ TwoFish_b1(k0)] ^ -+ TwoFish_MDS[2][(TwoFish_P[TwoFish_P_21][(TwoFish_P[TwoFish_P_22][b2] & 0xFF) ^ TwoFish_b2(k1)] & 0xFF) ^ TwoFish_b2(k0)] ^ -+ TwoFish_MDS[3][(TwoFish_P[TwoFish_P_31][(TwoFish_P[TwoFish_P_32][b3] & 0xFF) ^ TwoFish_b3(k1)] & 0xFF) ^ TwoFish_b3(k0)]; -+ break; -+ } -+ return result; -+} -+ -+u_int32_t _TwoFish_Fe320(u_int32_t *lsBox,u_int32_t x) -+{ return lsBox[ TwoFish_b0(x)<<1 ]^ -+ lsBox[ ((TwoFish_b1(x)<<1)|1)]^ -+ lsBox[0x200+ (TwoFish_b2(x)<<1) ]^ -+ lsBox[0x200+((TwoFish_b3(x)<<1)|1)]; -+} -+ -+u_int32_t _TwoFish_Fe323(u_int32_t *lsBox,u_int32_t x) -+{ return lsBox[ (TwoFish_b3(x)<<1) ]^ -+ lsBox[ ((TwoFish_b0(x)<<1)|1)]^ -+ lsBox[0x200+ (TwoFish_b1(x)<<1) ]^ -+ lsBox[0x200+((TwoFish_b2(x)<<1)|1)]; -+} -+ -+u_int32_t _TwoFish_Fe32(u_int32_t *lsBox,u_int32_t x,u_int32_t R) -+{ return lsBox[ 2*TwoFish__b(x,R ) ]^ -+ lsBox[ 2*TwoFish__b(x,R+1)+1]^ -+ lsBox[0x200+2*TwoFish__b(x,R+2) ]^ -+ lsBox[0x200+2*TwoFish__b(x,R+3)+1]; -+} -+ -+ -+#endif - -Index: snort-2.8.6.1/src/twofish.h -=================================================================== ---- snort-2.8.6.1/src/twofish.h (Revision 0) -+++ snort-2.8.6.1/src/twofish.h (Revision 3) -@@ -0,0 +1,276 @@ -+/* $Id: twofish.h,v 2.1 2008/12/15 20:36:05 fknobbe Exp $ -+ * -+ * -+ * Copyright (C) 1997-2000 The Cryptix Foundation Limited. -+ * Copyright (C) 2000 Farm9. -+ * Copyright (C) 2001 Frank Knobbe. -+ * All rights reserved. -+ * -+ * For Cryptix code: -+ * Use, modification, copying and distribution of this software is subject -+ * the terms and conditions of the Cryptix General Licence. You should have -+ * received a copy of the Cryptix General Licence along with this library; -+ * if not, you can download a copy from http://www.cryptix.org/ . -+ * -+ * For Farm9: -+ * --- jojo@farm9.com, August 2000, converted from Java to C++, added CBC mode and -+ * ciphertext stealing technique, added AsciiTwofish class for easy encryption -+ * decryption of text strings -+ * -+ * Frank Knobbe : -+ * --- April 2001, converted from C++ to C, prefixed global variables -+ * with TwoFish, substituted some defines, changed functions to make use of -+ * variables supplied in a struct, modified and added routines for modular calls. -+ * Cleaned up the code so that defines are used instead of fixed 16's and 32's. -+ * Created two general purpose crypt routines for one block and multiple block -+ * encryption using Joh's CBC code. -+ * Added crypt routines that use a header (with a magic and data length). -+ * (Basically a major rewrite). -+ * -+ * Note: Routines labeled _TwoFish are private and should not be used -+ * (or with extreme caution). -+ * -+ */ -+ -+#ifndef __TWOFISH_LIBRARY_HEADER__ -+#define __TWOFISH_LIBRARY_HEADER__ -+ -+#ifndef FALSE -+#define FALSE 0 -+#endif -+#ifndef TRUE -+#define TRUE !FALSE -+#endif -+#ifndef bool -+#define bool int -+#endif -+ -+ -+/* Constants */ -+ -+#define TwoFish_DEFAULT_PW "SnortHas2FishEncryptionRoutines!" /* default password (not more than 32 chars) */ -+#define TwoFish_MAGIC "TwoFish" /* to indentify a successful decryption */ -+ -+enum -+{ TwoFish_KEY_SIZE = 256, /* Valid values: 64, 128, 192, 256 */ -+ /* User 256, other key sizes have not been tested. */ -+ /* (But should work. I substituted as much as */ -+ /* I could with this define.) */ -+ TwoFish_ROUNDS = 16, -+ TwoFish_BLOCK_SIZE = 16, /* bytes in a data-block */ -+ TwoFish_KEY_LENGTH = TwoFish_KEY_SIZE/8, /* 32= 256-bit key */ -+ TwoFish_TOTAL_SUBKEYS = 4+4+2*TwoFish_ROUNDS, -+ TwoFish_MAGIC_LEN = TwoFish_BLOCK_SIZE-8, -+ TwoFish_SK_BUMP = 0x01010101, -+ TwoFish_SK_ROTL = 9, -+ TwoFish_P_00 = 1, -+ TwoFish_P_01 = 0, -+ TwoFish_P_02 = 0, -+ TwoFish_P_03 = TwoFish_P_01 ^ 1, -+ TwoFish_P_04 = 1, -+ TwoFish_P_10 = 0, -+ TwoFish_P_11 = 0, -+ TwoFish_P_12 = 1, -+ TwoFish_P_13 = TwoFish_P_11 ^ 1, -+ TwoFish_P_14 = 0, -+ TwoFish_P_20 = 1, -+ TwoFish_P_21 = 1, -+ TwoFish_P_22 = 0, -+ TwoFish_P_23 = TwoFish_P_21 ^ 1, -+ TwoFish_P_24 = 0, -+ TwoFish_P_30 = 0, -+ TwoFish_P_31 = 1, -+ TwoFish_P_32 = 1, -+ TwoFish_P_33 = TwoFish_P_31 ^ 1, -+ TwoFish_P_34 = 1, -+ TwoFish_GF256_FDBK = 0x169, -+ TwoFish_GF256_FDBK_2 = 0x169 / 2, -+ TwoFish_GF256_FDBK_4 = 0x169 / 4, -+ TwoFish_RS_GF_FDBK = 0x14D, /* field generator */ -+ TwoFish_MDS_GF_FDBK = 0x169 /* primitive polynomial for GF(256) */ -+}; -+ -+ -+/* Global data structure for callers */ -+ -+typedef struct -+{ u_int32_t sBox[4 * 256]; /* Key dependent S-box */ -+ u_int32_t subKeys[TwoFish_TOTAL_SUBKEYS]; /* Subkeys */ -+ u_int8_t key[TwoFish_KEY_LENGTH]; /* Encryption Key */ -+ u_int8_t *output; /* Pointer to output buffer */ -+ u_int8_t qBlockPlain[TwoFish_BLOCK_SIZE]; /* Used by CBC */ -+ u_int8_t qBlockCrypt[TwoFish_BLOCK_SIZE]; -+ u_int8_t prevCipher[TwoFish_BLOCK_SIZE]; -+ struct /* Header for crypt functions. Has to be at least one block long. */ -+ { u_int32_t salt; /* Random salt in first block (will salt the rest through CBC) */ -+ u_int8_t length[4]; /* The amount of data following the header */ -+ u_int8_t magic[TwoFish_MAGIC_LEN]; /* Magic to identify successful decryption */ -+ } header; -+ bool qBlockDefined; -+ bool dontflush; -+} TWOFISH; -+ -+#ifndef __TWOFISH_LIBRARY_SOURCE__ -+ -+extern bool TwoFish_srand; /* if set to TRUE (default), first call of TwoFishInit will seed rand(); */ -+ /* call of TwoFishInit */ -+#endif -+ -+ -+/**** Public Functions ****/ -+ -+/* TwoFish Initialization -+ * -+ * This routine generates a global data structure for use with TwoFish, -+ * initializes important values (such as subkeys, sBoxes), generates subkeys -+ * and precomputes the MDS matrix if not already done. -+ * -+ * Input: User supplied password (will be appended by default password of 'SnortHas2FishEncryptionRoutines!') -+ * -+ * Output: Pointer to TWOFISH structure. This data structure contains key dependent data. -+ * This pointer is used with all other crypt functions. -+ */ -+TWOFISH *TwoFishInit(char *userkey); -+ -+ -+/* TwoFish Destroy -+ * -+ * Nothing else but a free... -+ * -+ * Input: Pointer to the TwoFish structure. -+ * -+ */ -+void TwoFishDestroy(TWOFISH *tfdata); -+ -+ -+/* TwoFish Alloc -+ * -+ * Allocates enough memory for the output buffer as required. -+ * -+ * Input: Length of the plaintext. -+ * Boolean flag for BinHex Output. -+ * Pointer to the TwoFish structure. -+ * -+ * Output: Returns a pointer to the memory allocated. -+ */ -+void *TwoFishAlloc(unsigned long len,bool binhex,bool decrypt,TWOFISH *tfdata); -+ -+ -+/* TwoFish Free -+ * -+ * Free's the allocated buffer. -+ * -+ * Input: Pointer to the TwoFish structure -+ * -+ * Output: (none) -+ */ -+void TwoFishFree(TWOFISH *tfdata); -+ -+ -+/* TwoFish Set Output -+ * -+ * If you want to allocate the output buffer yourself, -+ * then you can set it with this function. -+ * -+ * Input: Pointer to your output buffer -+ * Pointer to the TwoFish structure -+ * -+ * Output: (none) -+ */ -+void TwoFishSetOutput(char *outp,TWOFISH *tfdata); -+ -+ -+/* TwoFish Raw Encryption -+ * -+ * Does not use header, but does use CBC (if more than one block has to be encrypted). -+ * -+ * Input: Pointer to the buffer of the plaintext to be encrypted. -+ * Pointer to the buffer receiving the ciphertext. -+ * The length of the plaintext buffer. -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes encrypted if successful, otherwise 0. -+ */ -+unsigned long TwoFishEncryptRaw(char *in,char *out,unsigned long len,TWOFISH *tfdata); -+ -+/* TwoFish Raw Decryption -+ * -+ * Does not use header, but does use CBC (if more than one block has to be decrypted). -+ * -+ * Input: Pointer to the buffer of the ciphertext to be decrypted. -+ * Pointer to the buffer receiving the plaintext. -+ * The length of the ciphertext buffer (at least one cipher block). -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes decrypted if successful, otherwise 0. -+ */ -+unsigned long TwoFishDecryptRaw(char *in,char *out,unsigned long len,TWOFISH *tfdata); -+ -+ -+/* TwoFish Encryption -+ * -+ * Uses header and CBC. If the output area has not been intialized with TwoFishAlloc, -+ * this routine will alloc the memory. In addition, it will include a small 'header' -+ * containing the magic and some salt. That way the decrypt routine can check if the -+ * packet got decrypted successfully, and return 0 instead of garbage. -+ * -+ * Input: Pointer to the buffer of the plaintext to be encrypted. -+ * Pointer to the pointer to the buffer receiving the ciphertext. -+ * The pointer either points to user allocated output buffer space, or to NULL, in which case -+ * this routine will set the pointer to the buffer allocated through the struct. -+ * The length of the plaintext buffer. -+ * Can be -1 if the input is a null terminated string, in which case we'll count for you. -+ * Boolean flag for BinHex Output (if used, output will be twice as large as input). -+ * Note: BinHex conversion overwrites (converts) input buffer! -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes encrypted if successful, otherwise 0. -+ */ -+unsigned long TwoFishEncrypt(char *in,char **out,signed long len,bool binhex,TWOFISH *tfdata); -+ -+ -+/* TwoFish Decryption -+ * -+ * Uses header and CBC. If the output area has not been intialized with TwoFishAlloc, -+ * this routine will alloc the memory. In addition, it will check the small 'header' -+ * containing the magic. If magic does not match we return 0. Otherwise we return the -+ * amount of bytes decrypted (should be the same as the length in the header). -+ * -+ * Input: Pointer to the buffer of the ciphertext to be decrypted. -+ * Pointer to the pointer to the buffer receiving the plaintext. -+ * The pointer either points to user allocated output buffer space, or to NULL, in which case -+ * this routine will set the pointer to the buffer allocated through the struct. -+ * The length of the ciphertext buffer. -+ * Can be -1 if the input is a null terminated binhex string, in which case we'll count for you. -+ * Boolean flag for BinHex Input (if used, plaintext will be half as large as input). -+ * Note: BinHex conversion overwrites (converts) input buffer! -+ * The TwoFish structure. -+ * -+ * Output: The amount of bytes decrypted if successful, otherwise 0. -+ */ -+unsigned long TwoFishDecrypt(char *in,char **out,signed long len,bool binhex,TWOFISH *tfdata); -+ -+ -+/**** Private Functions ****/ -+ -+u_int8_t TwoFish__b(u_int32_t x,int n); -+void _TwoFish_BinHex(u_int8_t *buf,unsigned long len,bool bintohex); -+unsigned long _TwoFish_CryptRawCBC(char *in,char *out,unsigned long len,bool decrypt,TWOFISH *tfdata); -+unsigned long _TwoFish_CryptRaw16(char *in,char *out,unsigned long len,bool decrypt,TWOFISH *tfdata); -+unsigned long _TwoFish_CryptRaw(char *in,char *out,unsigned long len,bool decrypt,TWOFISH *tfdata); -+void _TwoFish_PrecomputeMDSmatrix(void); -+void _TwoFish_MakeSubKeys(TWOFISH *tfdata); -+void _TwoFish_qBlockPush(u_int8_t *p,u_int8_t *c,TWOFISH *tfdata); -+void _TwoFish_qBlockPop(u_int8_t *p,u_int8_t *c,TWOFISH *tfdata); -+void _TwoFish_ResetCBC(TWOFISH *tfdata); -+void _TwoFish_FlushOutput(u_int8_t *b,unsigned long len,TWOFISH *tfdata); -+void _TwoFish_BlockCrypt(u_int8_t *in,u_int8_t *out,unsigned long size,int decrypt,TWOFISH *tfdata); -+void _TwoFish_BlockCrypt16(u_int8_t *in,u_int8_t *out,bool decrypt,TWOFISH *tfdata); -+u_int32_t _TwoFish_RS_MDS_Encode(u_int32_t k0,u_int32_t k1); -+u_int32_t _TwoFish_F32(u_int32_t k64Cnt,u_int32_t x,u_int32_t *k32); -+u_int32_t _TwoFish_Fe320(u_int32_t *lsBox,u_int32_t x); -+u_int32_t _TwoFish_Fe323(u_int32_t *lsBox,u_int32_t x); -+u_int32_t _TwoFish_Fe32(u_int32_t *lsBox,u_int32_t x,u_int32_t R); -+ -+ -+#endif - -Index: snort-2.8.6.1/src/plugin_enum.h -=================================================================== ---- snort-2.8.6.1/src/plugin_enum.h (Revision 1) -+++ snort-2.8.6.1/src/plugin_enum.h (Revision 3) -@@ -60,6 +60,7 @@ - PLUGIN_URILEN_CHECK, - PLUGIN_DYNAMIC, - PLUGIN_FLOWBIT, -+ PLUGIN_FWSAM, - PLUGIN_MAX /* sentinel value */ - }; - -Index: snort-2.8.6.1/src/fatal.h -=================================================================== ---- snort-2.8.6.1/src/fatal.h (Revision 0) -+++ snort-2.8.6.1/src/fatal.h (Revision 3) -@@ -0,0 +1,40 @@ -+/* $Id$ */ -+/* -+** Copyright (C) 2002-2008 Sourcefire, Inc. -+** Copyright (C) 1998-2002 Martin Roesch -+** -+** This program is free software; you can redistribute it and/or modify -+** it under the terms of the GNU General Public License Version 2 as -+** published by the Free Software Foundation. You may not use, modify or -+** distribute this program under any other version of the GNU General -+** Public License. -+** -+** This program is distributed in the hope that it will be useful, -+** but WITHOUT ANY WARRANTY; without even the implied warranty of -+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+** GNU General Public License for more details. -+** -+** You should have received a copy of the GNU General Public License -+** along with this program; if not, write to the Free Software -+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+*/ -+ -+#ifndef __FATAL_H__ -+#define __FATAL_H__ -+ -+ -+/* -+ * in debugging mode print out the filename and the line number where the -+ * failure have occured -+ */ -+ -+ -+#ifdef DEBUG -+ #define FATAL(msg) { printf("%s:%d: ", __FILE__, __LINE__); FatalError( (char *) msg); } -+#else -+ #define FATAL(msg) FatalError( (char *) msg) -+#endif -+ -+ -+ -+#endif /* __FATAL_H__ */ - -Index: snort-2.8.6.1/src/output-plugins/spo_alert_fwsam.c -=================================================================== ---- snort-2.8.6.1/src/output-plugins/spo_alert_fwsam.c (Revision 0) -+++ snort-2.8.6.1/src/output-plugins/spo_alert_fwsam.c (Revision 3) -@@ -0,0 +1,1380 @@ -+/* $id: snortpatchb,v 1.2 2002/10/26 03:32:35 fknobbe Exp $ -+** -+** spo_alert_fwsam.c -+** -+** Copyright (c) 2001-2004 Frank Knobbe -+** -+** This program is free software; you can redistribute it and/or modify -+** it under the terms of the GNU General Public License as published by -+** the Free Software Foundation; either version 2 of the License, or -+** (at your option) any later version. -+** -+** This program is distributed in the hope that it will be useful, -+** but WITHOUT ANY WARRANTY; without even the implied warranty of -+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+** GNU General Public License for more details. -+** -+** You should have received a copy of the GNU General Public License -+** along with this program; if not, write to the Free Software -+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+*/ -+ -+/* -+ * Purpose: -+ * -+ * This module sends alerts to a remote service on a host running SnortSam -+ * (the agent) which will block the intruding IP address on a variety of -+ * host and network firewalls. -+ * -+ * SnortSam also performs checks against a white-list of never-to-be-blocked IP addresses, -+ * can override block durations (for example for known proxies), and can detect attack conditions -+ * where too many blocks are received within a defined interval. If an attack is detected -+ * it will unblock the last x blocks and wait for the attack to end. -+ * -+ * See the SnortSam documentation for more information. -+ * -+ * -+ * Output Plugin Parameters: -+ *************************** -+ * -+ * output alert_fwsam: :/ -+ * -+ * : The IP address or host name of the host running SnortSam. -+ * : The port the remote SnortSam service listens on (default 898). -+ * : The key used for authentication (encryption really) -+ * of the communication to the remote service. -+ * -+ * Examples: -+ * -+ * output alert_fwsam: snortsambox/idspassword -+ * output alert_fwsam: fw1.domain.tld:898/mykey -+ * output alert_fwsam: 192.168.0.1/borderfw 192.168.1.254/wanfw -+ * -+ * -+ * Rule Options: -+ *************** -+ * -+ * fwsam: who[how],time; -+ * -+ * who: src, source, dst, dest, destination -+ * IP address to be blocked according to snort rule (some rules -+ * are reversed, i.e. homenet -> any [and you want to block any]). -+ * src denotes IP to the left of -> and dst denotes IP to the right -+ * -+ * how: Optional. In, out, src, dest, either, both, this, conn, connection -+ * Tells FW-1 to block packets INcoming from host, OUTgoing to host, -+ * EITHERway, or only THIS connection (IP/Service pair). -+ * See 'fw sam' for more information. May be ignored by other plugins. -+ * -+ * time: Duration of block in seconds. (Accepts 'days', 'months', 'weeks', -+ * 'years', 'minutes', 'seconds', 'hours'. Alternatively, a value of -+ * 0, or the keyword PERManent, INFinite, or ALWAYS, will block the -+ * host permanently. Be careful with this! -+ * Tells FW-1 (and others) how long to inhibit packets from the host. -+ * -+ * Examples: -+ * -+ * fwsam: src[either],15min; -+ * or dst[in], 2 days 4 hours -+ * or src, 1 hour -+ * -+ * (default: src[either],5min) -+ * -+ * -+ * Effect: -+ * -+ * Alerts are sent to the remote SnortSam services on Firewall-1 Management Stations -+ * or other hosts running SnortSam (as required for Cisco Routers and PIX). -+ * The remote services will invoke the SAM configuration via the fw sam -+ * command line, or by sending a packet to the SAM port 18183, or by using the official -+ * OPSEC API calls, or by telnetting into Cisco routers or PIX firewalls. -+ * The communication over the network is encrypted using two-fish. -+ * (Implementation ripped from CryptCat by Farm9 with permission.) -+ * -+ * Future Plans: -+ * -+ * - Custom alert trigger per rule (x alerts in y secs) --> Seems to exist in Snort 1.9 now. -+ * - Enable/Allow tagged fwsam: arguments to provide different values to -+ * different stations. --> Seems to be accomplished with custom rule-types -+ * -+ * -+ * Comments: -+ * -+ * It seem that above wishes can be implemented with todays setup. Feedback concerning -+ * these is greatly appreciated. -+ * -+*/ -+ -+ -+#include "spo_alert_fwsam.h" -+#include "twofish.h" -+/* external globals from rules.c */ -+extern char *file_name; -+extern int file_line; -+extern OptTreeNode *otn_tmp; -+extern char *snort_conf_dir; /* extern PV pv; */ -+ -+ -+/* my globals */ -+ -+FWsamList *FWsamStationList=NULL; /* Global (for all alert-types) list of snortsam stations */ -+FWsamOptions *FWsamOptionField=NULL; -+unsigned long FWsamMaxOptions=0; -+ -+ -+/* -+ * Function: AlertFWsamSetup() -+ * -+ * Purpose: Registers the output plugin keyword and initialization -+ * function into the output plugin list. This is the function that -+ * gets called from InitOutputPlugins() in plugbase.c. -+ * It also registers itself as a plugin in order to parse every rule -+ * and to set the appropiate flags from fwsam: option. -+ * -+ * Arguments: None. -+ * -+ * Returns: void function -+ * -+*/ -+void AlertFWsamSetup(void) -+{ -+ /* link the preprocessor keyword to the init function in -+ the preproc list */ -+ RegisterOutputPlugin("alert_fwsam", OUTPUT_TYPE_FLAG__ALERT, AlertFWsamInit); -+ RegisterRuleOption("fwsam", AlertFWsamOptionInit, NULL, OPT_TYPE_ACTION, NULL); -+ -+#ifdef FWSAMDEBUG /* This allows debugging of fwsam only */ -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamSetup) Output plugin is plugged in...\n"); -+#endif -+} -+ -+ -+/* This function checks if a given snortsam station is already in -+ * a given list. -+*/ -+int FWsamStationExists(FWsamStation *who,FWsamList *list) -+{ -+ while(list) -+ { -+ if(list->station) { -+// if( who->stationip.s_addr==list->station->stationip.s_addr && -+ if(IP_EQUALITY(&who->stationip, &list->station->stationip) && -+ who->stationport==list->station->stationport) -+ return TRUE; -+ } -+ list=list->next; -+ } -+ return FALSE; -+} -+ -+/* -+ * Function: AlertFWsamInit(char *args) -+ * -+ * Purpose: Calls the argument parsing function, performs final setup on data -+ * structs, links the preproc function into the function list. -+ * -+ * Arguments: args => ptr to argument string -+ * -+ * Returns: void function -+ * -+*/ -+void AlertFWsamInit(char *args) -+{ char *ap; -+ unsigned long statip,cnt,again,i; -+ char *stathost,*statport,*statpass; -+ FWsamStation *station; -+ FWsamList *fwsamlist=NULL; /* alert-type dependent list of snortsam stations */ -+ FWsamList *listp,*newlistp; -+ struct hostent *hoste; -+ char buf[1024]=""; -+ FILE *fp; -+ FWsamOptions tempopt; -+ -+#ifdef FWSAMDEBUG -+ unsigned long hostcnt=0; -+ -+ -+ -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamInit) Output plugin initializing...\n"); -+#endif -+ -+ /* pv.alert_plugin_active = 1; */ -+ -+ /* parse the argument list from the rules file */ -+ -+ if(args == NULL) -+ FatalError("ERROR %s (%d) => [Alert_FWsam](AlertFWsamInit) No arguments to alert_fwsam preprocessor!\n", file_name, file_line); -+ -+ if(!FWsamOptionField && !FWsamMaxOptions) -+ { strncpy(buf,snort_conf_dir,sizeof(buf)-1); -+ strncpy(buf+strlen(buf),SID_MAPFILE,sizeof(buf)-strlen(buf)-1); -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamSetup) Using file: %s\n",buf); -+#endif -+ fp=fopen(buf,"rt"); -+ if(!fp) -+ { strncpy(buf,snort_conf_dir,sizeof(buf)-1); -+ strncpy(buf+strlen(buf),SID_ALT_MAPFILE,sizeof(buf)-strlen(buf)-1); -+ fp=fopen(buf,"rt"); -+ } -+ if(fp) /* Check for presence of map file and read those in, sorted. */ -+ { LogMessage("INFO => [Alert_FWsam](AlertFWsamSetup) Using sid-map file: %s\n",buf); -+ -+ while(FWsamReadLine(buf,sizeof(buf),fp)) -+ if(*buf) -+ FWsamMaxOptions++; -+ if(FWsamMaxOptions) -+ { if((FWsamOptionField=(FWsamOptions *)malloc(sizeof(FWsamOptions)*FWsamMaxOptions))==NULL) -+ FatalError("ERROR => [Alert_FWsam](AlertFWsamSetup) malloc failed for OptionField!\n"); -+ fseek(fp,0,SEEK_SET); -+ for(cnt=0;cnt1) -+ { for(again=TRUE,cnt=FWsamMaxOptions-1;cnt>=1 && again;cnt--) -+ { for(again=FALSE,i=0;iFWsamOptionField[i+1].sid) -+ { memcpy(&tempopt,&(FWsamOptionField[i]),sizeof(FWsamOptions)); -+ memcpy(&(FWsamOptionField[i]),&(FWsamOptionField[i+1]),sizeof(FWsamOptions)); -+ memcpy(&(FWsamOptionField[i+1]),&tempopt,sizeof(FWsamOptions)); -+ again=TRUE; -+ } -+ } -+ } -+ } -+ } -+ else -+ FWsamMaxOptions=1; -+ fclose(fp); -+ } -+ else -+ FWsamMaxOptions=1; -+ } -+ -+ -+ ap=args; /* start at the beginning of the argument */ -+ while(*ap && isspace(*ap)) ap++; -+ while(*ap) -+ { stathost=ap; /* first argument should be host */ -+ statport=NULL; -+ statpass=NULL; -+ while(*ap && *ap!=':' && *ap!='/' && !isspace(*ap)) ap++; /* find token */ -+ switch(*ap) -+ { case ':': *ap++=0; /* grab the port */ -+ statport=ap; -+ while(*ap && *ap!='/' && !isspace(*ap)) ap++; -+ if(*ap!='/') -+ break; -+ case '/': *ap++=0; /* grab the key */ -+ statpass=ap; -+ while(*ap && !isspace(*ap)) ap++; -+ default: break; -+ } -+ if(*ap) -+ { *ap++=0; -+ while(isspace(*ap)) ap++; -+ } -+ /* now we have the first host with port and password (key) */ -+ /* next we check for valid/blank password/port */ -+ if(statpass!=NULL) -+ if(!*statpass) -+ statpass=NULL; -+ if(statport!=NULL) -+ if(!*statport) -+ statport=NULL; -+ statip=0; -+ /* now we check if a valid host was specified */ -+ if(inet_addr(stathost)==INADDR_NONE) -+ { hoste=gethostbyname(stathost); -+ if (!hoste) -+ LogMessage("WARNING %s (%d) => [Alert_FWsam](AlertFWsamInit) Unable to resolve host '%s'!\n",file_name,file_line,stathost); -+ else -+ statip=*(unsigned long *)hoste->h_addr; -+ } -+ else -+ { statip=inet_addr(stathost); -+ if(!statip) -+ LogMessage("WARNING %s (%d) => [Alert_FWsam](AlertFWsamInit) Invalid host address '%s'!\n",file_name,file_line,stathost); -+ } -+ if(statip) -+ { /* groovie, a valid host. Let's alloc and assemble the structure for it. */ -+ if((station=(FWsamStation *)malloc(sizeof(FWsamStation)))==NULL) -+ FatalError("ERROR => [Alert_FWsam](AlertFWsamInit) malloc failed for station!\n"); -+ -+// station->stationip.s_addr=statip; /* the IP address */ -+ station->stationip.ip32[0] = statip; /* the IP address */ -+ if(statport!=NULL && atoi(statport)>0) /* if the user specified one */ -+ station->stationport=atoi(statport); /* use users setting */ -+ else -+ station->stationport=FWSAM_DEFAULTPORT; /* set the default port */ -+ -+ if(statpass!=NULL) /* if specified by user */ -+ strncpy(station->stationkey,statpass,TwoFish_KEY_LENGTH); /* use defined key */ -+ else -+ station->stationkey[0]=0; -+ station->stationkey[TwoFish_KEY_LENGTH]=0; /* make sure it's terminated. (damn strncpy...) */ -+ -+ strcpy(station->initialkey,station->stationkey); -+ station->stationfish=TwoFishInit(station->stationkey); -+ -+ station->localsocketaddr.sin_port=htons(0); /* let's use dynamic ports for now */ -+ station->localsocketaddr.sin_addr.s_addr=0; -+ station->localsocketaddr.sin_family=AF_INET; -+ station->stationsocketaddr.sin_port=htons(station->stationport); -+ //station->stationsocketaddr.sin_addr=station->stationip; -+ station->stationsocketaddr.sin_addr.s_addr=station->stationip.ip32[0]; -+ station->stationsocketaddr.sin_family=AF_INET; /* load all socket crap and keep for later */ -+ -+ do -+ station->myseqno=rand(); /* the seqno this host will use */ -+ while(station->myseqno<20 || station->myseqno>65500); -+ station->mykeymod[0]=rand(); -+ station->mykeymod[1]=rand(); -+ station->mykeymod[2]=rand(); -+ station->mykeymod[3]=rand(); -+ station->stationseqno=0; /* peer hasn't answered yet. */ -+ -+ -+ if(!FWsamStationExists(station,FWsamStationList)) /* If we don't have the station already in global list....*/ -+ { if(FWsamCheckIn(station)) /* ...and we can talk to the agent... */ -+ { if((newlistp=(FWsamList *)malloc(sizeof(FWsamList)))==NULL) -+ FatalError("ERROR => [Alert_FWsam](AlertFWsamInit) malloc failed for global newlistp!\n"); -+ newlistp->station=station; -+ newlistp->next=NULL; -+ -+ if(!FWsamStationList) /* ... add it to the global list/ */ -+ FWsamStationList=newlistp; -+ else -+ { listp=FWsamStationList; -+ while(listp->next) -+ listp=listp->next; -+ listp->next=newlistp; -+ } -+ } -+ else -+ { TwoFishDestroy(station->stationfish); /* if not, we trash it. */ -+ free(station); -+ station=NULL; -+ } -+ } -+#ifdef FWSAMDEBUG -+ else -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamInit) Host %s:%i already in global list, skipping CheckIn.\n", sfip_ntoa(&station->stationip),station->stationport); -+#endif -+ -+ if(station) -+ { if(!FWsamStationExists(station,fwsamlist)) /* If we don't have the station already in local list....*/ -+ { if((newlistp=(FWsamList *)malloc(sizeof(FWsamList)))==NULL) -+ FatalError("ERROR => [Alert_FWsam](AlertFWsamInit) malloc failed for local newlistp!\n"); -+ newlistp->station=station; -+ newlistp->next=NULL; -+ -+ if(!fwsamlist) /* ... add it to the local list/ */ -+ fwsamlist=newlistp; -+ else -+ { listp=fwsamlist; -+ while(listp->next) -+ listp=listp->next; -+ listp->next=newlistp; -+ } -+ } -+ -+#ifdef FWSAMDEBUG -+ else -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamInit) Host %s:%i already in local list, skipping.\n",sfip_ntoa(&station->stationip),station->stationport); -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamInit) #%i: Host %s [%s] port %i password %s\n",++hostcnt,stathost,sfip_ntoa(&station->stationip),station->stationport,station->stationkey); -+#endif -+ } -+ -+ } -+ } /* next one */ -+ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamInit) Linking fwsam alert function to call list...\n"); -+#endif -+ -+ /* Set the preprocessor function into the function list */ -+ AddFuncToOutputList(AlertFWsam, OUTPUT_TYPE_FLAG__ALERT, fwsamlist); -+ AddFuncToCleanExitList(AlertFWsamCleanExitFunc, fwsamlist); -+ AddFuncToRestartList(AlertFWsamRestartFunc, fwsamlist); -+} -+ -+ -+/* This routine reads in a str from a file, snips white-spaces -+ * off the front and back, removes comments, and pretties the -+ * string. Returns true or false if a line was read or not. -+*/ -+int FWsamReadLine(char *buf,unsigned long bufsize,FILE *fp) -+{ char *p; -+ -+ if(fgets(buf,bufsize-1,fp)) -+ { buf[bufsize-1]=0; -+ -+#ifdef FWSAMDEBUG_off -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamReadLine) Line: %s\n",buf); -+#endif -+ -+ p=buf; -+ while(isspace(*p)) -+ p++; -+ if(p>buf); -+ strcpy(buf,p); -+ if(*buf) -+ { p=buf+strlen(buf)-1; /* remove leading and trailing spaces */ -+ while(isspace(*p)) -+ *p-- =0; -+ } -+ p=buf; -+ if(*p=='#' || *p==';') -+ *p=0; -+ else -+ p++; -+ while(*p) /* remove inline comments (except escaped #'s and ;'s) */ -+ { if(*p=='#' || *p==';') -+ { if(*(p-1)=='\\') -+ strcpy(p-1,p); -+ else -+ *p=0; -+ } -+ else -+ p++; -+ } -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+ -+/* Parses the duration of the argument, recognizing minutes, hours, etc.. -+*/ -+unsigned long FWsamParseDuration(char *p) -+{ unsigned long dur=0,tdu; -+ char *tok,c1,c2; -+ -+ while(*p) -+ { tok=p; -+ while(*p && isdigit(*p)) -+ p++; -+ if(*p) -+ { c1=tolower(*p); -+ *p=0; -+ p++; -+ if(*p && !isdigit(*p)) -+ { c2=tolower(*p++); -+ while(*p && !isdigit(*p)) -+ p++; -+ } -+ else -+ c2=0; -+ tdu=atol(tok); -+ switch(c1) -+ { case 'm': if(c2=='o') /* month */ -+ tdu*=(60*60*24*30); /* use 30 days */ -+ else -+ tdu*=60; /* minutes */ -+ case 's': break; /* seconds */ -+ case 'h': tdu*=(60*60); /* hours */ -+ break; -+ case 'd': tdu*=(60*60*24); /* days */ -+ break; -+ case 'w': tdu*=(60*60*24*7); /* week */ -+ break; -+ case 'y': tdu*=(60*60*24*365); /* year */ -+ break; -+ } -+ dur+=tdu; -+ } -+ else -+ dur+=atol(tok); -+ } -+ -+ return dur; -+} -+ -+ -+/* This routine parses an option line. It is called by FWsamParseLine, -+ * which parses the sid-block.map file, and also by AlertFWsamOptionInit, -+ * which is called by Snort when processing fwsam: options in rules. -+ * It returns TRUE it there is a possible option problem, otherwise FALSE. -+*/ -+int FWsamParseOption(FWsamOptions *optp,char *ap) -+{ int possprob=FALSE; -+ -+ /* set defaults */ -+ -+ optp->duration=300; /* default of 5 minute block */ -+ optp->how=FWSAM_HOW_INOUT; /* inbound and outbound block */ -+ optp->who=FWSAM_WHO_SRC; /* the source */ -+ optp->loglevel=FWSAM_LOG_LONGALERT; /* the log level default */ -+ /* parse the fwsam keywords */ -+ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWamOptionInit) Parse Options Args: %s\n",ap); -+#endif -+ -+ if(*ap) /* should be dst/src (the WHO) or duration */ -+ { if(isdigit(*ap)) -+ optp->duration=FWsamParseDuration(ap); -+ else -+ { switch(*ap) /* yeah, we're lazy and check only the first character */ -+ { case 'p': ; /* permanent, perm */ -+ case 'f': ; /* forever */ -+ case 'i': optp->duration=0; /* infinite, inf */ -+ break; -+ case 'd': optp->who=FWSAM_WHO_DST; /* destination, dest, dst */ -+ break; -+ case 's': optp->who=FWSAM_WHO_SRC; /* source, src */ -+ break; -+ default: possprob=TRUE; -+ } -+ while(*ap && *ap!=',' && *ap!='[') -+ ap++; -+ if(*ap=='[') -+ { ap++; /* now we have the HOW */ -+ switch(*ap) -+ { case 'i': ; /* in */ -+ case 's': optp->how=FWSAM_HOW_IN; /* source, src */ -+ break; -+ case 'o': ; /* out */ -+ case 'd': optp->how=FWSAM_HOW_OUT; /* destination, dest, dst */ -+ break; -+ case 'b': ; /* both */ -+ case 'e': optp->how=FWSAM_HOW_INOUT; /* either */ -+ break; -+ case 't': ; /* this */ -+ case 'c': optp->how=FWSAM_HOW_THIS; /* connection, conn */ -+ break; -+ default: possprob=TRUE; -+ } -+ while(*ap && *ap!=',') -+ ap++; -+ } -+ if(*ap==',') -+ { ap++; -+ if(isdigit(*ap)) /* and figure out how long to block */ -+ optp->duration=FWsamParseDuration(ap); -+ else if(*ap=='p' || *ap=='f' || *ap=='i') -+ optp->duration=0; -+ else -+ possprob=TRUE; -+ } -+ else if(!*ap) -+ possprob=TRUE; -+ } -+ } -+ else -+ possprob=TRUE; -+ -+ return possprob; -+} -+ -+ -+/* This goes through the lines of sid-block.map and sets the -+ * options for fwsam if the file is being used. -+*/ -+void FWsamParseLine(FWsamOptions *optp,char *buf) -+{ char *ap; -+ -+ ap=buf; /* start at the beginning of the argument */ -+ -+ while(*ap) -+ { if(isspace(*ap)) /* normalize spaces (tabs into space, etc) */ -+ *ap=' '; -+ if(isupper(*ap)) /* and set to lower case */ -+ *ap=tolower(*ap); -+ ap++; -+ } -+ while((ap=strrchr(buf,' '))!=NULL) /* remove spaces */ -+ strcpy(ap,ap+1); -+ -+ ap=buf; -+ if(*ap) -+ { while(*ap && *ap!=':' && *ap!='|') -+ ap++; -+ *ap++ =0; -+ while(*ap && (*ap==':' || *ap=='|')) -+ ap++; -+ -+ optp->sid=(unsigned long)atol(buf); -+ -+ if(FWsamParseOption(optp,ap)) -+ LogMessage("WARNING %s (%d) => [Alert_FWsam](AlertFWamOptionInit) Possible option problem. Using %s[%s],%lu.\n",file_name,file_line,(optp->who==FWSAM_WHO_SRC)?"src":"dst",(optp->how==FWSAM_HOW_IN)?"in":((optp->how==FWSAM_HOW_OUT)?"out":"either"),optp->duration); -+ } -+ else -+ optp->sid=0; -+} -+ -+ -+ -+/* -+ * Function: AlertFWsamOptionInit(char *data, OptTreeNode *otn, int protocol) -+ * -+ * Purpose: Parses each rule and sets the option flags in the tree. -+ * -+ * Arguments: args => ptr to argument string -+ * -+ * Returns: void function -+ * -+*/ -+void AlertFWsamOptionInit(char *args,OptTreeNode *otn,int protocol) -+{ -+ FWsamOptions *optp; -+ char *ap; -+ -+ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWamOptionInit) FWsamOptionInit is parsing...\n"); -+#endif -+ -+ if((optp=(FWsamOptions *)malloc(sizeof(FWsamOptions)))==NULL) -+ FatalError("ERROR => [Alert_FWsam](AlertFWamOptionInit) malloc failed for opt!\n"); -+ -+ -+ ap=args; /* start at the beginning of the argument */ -+ -+ while(*ap) -+ { if(isspace(*ap)) /* normalize spaces (tabs into space, etc) */ -+ *ap=' '; -+ if(isupper(*ap)) /* and set to lower case */ -+ *ap=tolower(*ap); -+ ap++; -+ } -+ while((ap=strrchr(args,' '))!=NULL) /* remove spaces */ -+ strcpy(ap,ap+1); -+ -+ -+ if(FWsamParseOption(optp,args)) -+ LogMessage("WARNING %s (%d) => [Alert_FWsam](AlertFWamOptionInit) Possible option problem. Using %s[%s],%lu.\n",file_name,file_line,(optp->who==FWSAM_WHO_SRC)?"src":"dst",(optp->how==FWSAM_HOW_IN)?"in":((optp->how==FWSAM_HOW_OUT)?"out":"either"),optp->duration); -+ -+ otn->ds_list[PLUGIN_FWSAM]=(FWsamOptions *)optp; -+} -+ -+ -+/* Generates a new encryption key for TwoFish based on seq numbers and a random that -+ * the SnortSam agents send on checkin (in protocol) -+*/ -+void FWsamNewStationKey(FWsamStation *station,FWsamPacket *packet) -+{ -+ //unsigned char newkey[TwoFish_KEY_LENGTH+2]; -+ char newkey[TwoFish_KEY_LENGTH+2]; -+ int i; -+ -+ newkey[0]=packet->snortseqno[0]; /* current snort seq # (which both know) */ -+ newkey[1]=packet->snortseqno[1]; -+ newkey[2]=packet->fwseqno[0]; /* current SnortSam seq # (which both know) */ -+ newkey[3]=packet->fwseqno[1]; -+ newkey[4]=packet->protocol[0]; /* the random SnortSam chose */ -+ newkey[5]=packet->protocol[1]; -+ -+ strncpy(newkey+6,station->stationkey,TwoFish_KEY_LENGTH-6); /* append old key */ -+ newkey[TwoFish_KEY_LENGTH]=0; -+ -+ newkey[0]^=station->mykeymod[0]; /* modify key with key modifiers which were */ -+ newkey[1]^=station->mykeymod[1]; /* exchanged during the check-in handshake. */ -+ newkey[2]^=station->mykeymod[2]; -+ newkey[3]^=station->mykeymod[3]; -+ newkey[4]^=station->fwkeymod[0]; -+ newkey[5]^=station->fwkeymod[1]; -+ newkey[6]^=station->fwkeymod[2]; -+ newkey[7]^=station->fwkeymod[3]; -+ -+ for(i=0;i<=7;i++) -+ if(newkey[i]==0) -+ newkey[i]++; -+ -+ strcpy(station->stationkey,newkey); -+ TwoFishDestroy(station->stationfish); -+ station->stationfish=TwoFishInit(newkey); -+} -+ -+ -+/* This routine will search the option list as defined -+ * by the sid-block.map file and return a pointer -+ * to the matching record. -+*/ -+FWsamOptions *FWsamGetOption(unsigned long sid) -+{ signed long i,step,diff,o,o2; -+ -+#ifdef FWSAM_FANCYFETCH /* Fancy-fetch jumps in decreasing n/2 steps and takes much less lookups */ -+ o=o2= -1; -+ i=step=FWsamMaxOptions>>1; -+ while(i>=0 && i1) -+ step=step>>1; -+ o2=o; -+ o=i; -+ if(diff>0) -+ i+=step; -+ else -+ i-=step; -+ } -+#else /* This is just a sequential list lookup */ -+ for(i=0;i pointer to the packet data struct -+ * msg => the message to print in the alert -+ * -+ * Returns: void function -+ * -+ ***************************************************************************/ -+void AlertFWsam(Packet *p, char *msg, void *arg, Event *event) -+{ FWsamOptions *optp; -+ FWsamPacket sampacket; -+ FWsamStation *station=NULL; -+ FWsamList *fwsamlist; -+ SOCKET stationsocket; -+ int i,len,deletestation,stationtry=0; -+ //unsigned char *encbuf,*decbuf; -+ char *encbuf,*decbuf; -+ static unsigned long lastbsip[FWSAM_REPET_BLOCKS],lastbdip[FWSAM_REPET_BLOCKS], -+ lastbduration[FWSAM_REPET_BLOCKS],lastbtime[FWSAM_REPET_BLOCKS]; -+ static unsigned short lastbsp[FWSAM_REPET_BLOCKS],lastbdp[FWSAM_REPET_BLOCKS], -+ lastbproto[FWSAM_REPET_BLOCKS],lastbpointer; -+ static unsigned char lastbmode[FWSAM_REPET_BLOCKS]; -+ static unsigned long btime=0; -+ -+ -+ if(otn_tmp==NULL) -+ { -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] NULL otn_tmp!\n"); -+#endif -+ return; -+ } -+ if(p == NULL) -+ { -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] NULL packet!\n"); -+#endif -+ return; -+ } -+ if(arg == NULL) -+ { -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] NULL arg!\n"); -+#endif -+ return; -+ } -+ -+ /* SnortSam does no IPv6 */ -+ if (!IS_IP4(p)) { -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] not acting on non-IP4 packet!\n"); -+#endif -+ return; -+ } -+ -+ optp=NULL; -+ -+ if(FWsamOptionField) /* If using the file (field present), let's use that */ -+ optp=FWsamGetOption(event->sig_id); -+ -+ if(!optp) /* If file not present, check if an fwsam option was defined on the triggering rule */ -+ optp=otn_tmp->ds_list[PLUGIN_FWSAM]; -+ -+ if(optp) /* if options specified for this rule */ -+ { if(!btime) /* if this is the first time this function is */ -+ { for(i=0;i [Alert_FWsam] Alert -> Msg=\"%s\"\n",msg); -+ -+ LogMessage("DEBUG => [Alert_FWsam] Alert -> Option: %s[%s],%lu.\n",(optp->who==FWSAM_WHO_SRC)?"src":"dst",(optp->how==FWSAM_HOW_IN)?"in":((optp->how==FWSAM_HOW_OUT)?"out":"either"),optp->duration); -+#endif -+ -+ len=TRUE; -+ btime=(unsigned long)time(NULL); /* get current time */ -+ /* This is a cheap check to see if the blocking request matches any of the previous requests. */ -+ for(i=0;ihow==FWSAM_HOW_THIS)? /* if blocking mode SERVICE, check for src and dst */ -+ ( lastbsip[i]==p->iph->ip_src.s_addr && lastbdip[i]==p->iph->ip_dst.s_addr &&lastbproto[i]==p->iph->ip_proto && -+ ((p->iph->ip_proto==IPPROTO_TCP || p->iph->ip_proto==IPPROTO_UDP)? /* check port only of TCP or UDP */ -+/* ((optp->who==FWSAM_WHO_SRC)?(lastbsp[i]==p->sp):(lastbdp[i]==p->dp)):TRUE) ): */ -+ lastbdp[i]==p->dp:TRUE) ): -+ ((optp->who==FWSAM_WHO_SRC)?(lastbsip[i]==p->iph->ip_src.s_addr):(lastbdip[i]==p->iph->ip_dst.s_addr))) && /* otherwise if we block source, only compare source. Same for dest. */ -+ lastbduration[i]==optp->duration && -+ (lastbmode[i]&(FWSAM_HOW|FWSAM_WHO))==(optp->how|optp->who) && -+ (btime-lastbtime[i]<((optp->duration>FWSAM_REPET_TIME)?FWSAM_REPET_TIME:optp->duration))) -+ { len=FALSE; /* If so, we don't need to block again. */ -+ } -+ } -+ if(len) -+ { if(++lastbpointer>=FWSAM_REPET_BLOCKS) /* increase repetitive check pointer */ -+ lastbpointer=0; -+ lastbsip[lastbpointer]=p->iph->ip_src.s_addr; /* and note packet details */ -+ lastbdip[lastbpointer]=p->iph->ip_dst.s_addr; -+ lastbduration[lastbpointer]=optp->duration; -+ lastbmode[lastbpointer]=optp->how|optp->who|optp->loglevel; -+ lastbproto[lastbpointer]=p->iph->ip_proto; -+ if(p->iph->ip_proto==IPPROTO_TCP || p->iph->ip_proto==IPPROTO_UDP) -+ { lastbsp[lastbpointer]=p->sp; /* set ports if TCP or UDP */ -+ lastbdp[lastbpointer]=p->dp; -+ } -+ lastbtime[lastbpointer]=btime; -+ -+ -+ while(fwsamlist!=NULL) -+ { station=fwsamlist->station; -+ //if(station->stationip.s_addr) -+ if(station->stationip.ip32[0]) -+ { deletestation=FALSE; -+ stationtry++; /* first try */ -+ /* create a socket for the station */ -+ stationsocket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); -+ if(stationsocket==INVALID_SOCKET) -+ FatalError("ERROR => [Alert_FWsam] Funky socket error (socket)!\n"); -+ if(bind(stationsocket,(struct sockaddr *)&(station->localsocketaddr),sizeof(struct sockaddr))) -+ FatalError("ERROR => [Alert_FWsam] Could not bind socket!\n"); -+ -+ /* let's connect to the agent */ -+ if(connect(stationsocket,(struct sockaddr *)&station->stationsocketaddr,sizeof(struct sockaddr))) -+ { -+ LogMessage("WARNING => [Alert_FWsam] Could not send block to host %s. Will try later.\n",sfip_ntoa(&station->stationip)); -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ stationtry=0; -+ } -+ else -+ { -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] Connected to host %s.\n",sfip_ntoa(&station->stationip)); -+#endif -+ /* now build the packet */ -+ station->myseqno+=station->stationseqno; /* increase my seqno by adding agent seq no */ -+ sampacket.endiancheck=1; /* This is an endian indicator for Snortsam */ -+ sampacket.snortseqno[0]=(char)station->myseqno; -+ sampacket.snortseqno[1]=(char)(station->myseqno>>8); -+ sampacket.fwseqno[0]=(char)station->stationseqno;/* fill station seqno */ -+ sampacket.fwseqno[1]=(char)(station->stationseqno>>8); -+ sampacket.status=FWSAM_STATUS_BLOCK; /* set block mode */ -+ sampacket.version=FWSAM_PACKETVERSION; /* set packet version */ -+ sampacket.duration[0]=(char)optp->duration; /* set duration */ -+ sampacket.duration[1]=(char)(optp->duration>>8); -+ sampacket.duration[2]=(char)(optp->duration>>16); -+ sampacket.duration[3]=(char)(optp->duration>>24); -+ sampacket.fwmode=optp->how|optp->who|optp->loglevel; /* set the mode */ -+ sampacket.dstip[0]=(char)p->iph->ip_dst.s_addr; /* destination IP */ -+ sampacket.dstip[1]=(char)(p->iph->ip_dst.s_addr>>8); -+ sampacket.dstip[2]=(char)(p->iph->ip_dst.s_addr>>16); -+ sampacket.dstip[3]=(char)(p->iph->ip_dst.s_addr>>24); -+ sampacket.srcip[0]=(char)p->iph->ip_src.s_addr; /* source IP */ -+ sampacket.srcip[1]=(char)(p->iph->ip_src.s_addr>>8); -+ sampacket.srcip[2]=(char)(p->iph->ip_src.s_addr>>16); -+ sampacket.srcip[3]=(char)(p->iph->ip_src.s_addr>>24); -+ sampacket.protocol[0]=(char)p->iph->ip_proto; /* protocol */ -+ sampacket.protocol[1]=(char)(p->iph->ip_proto>>8);/* protocol */ -+ -+ if(p->iph->ip_proto==IPPROTO_TCP || p->iph->ip_proto==IPPROTO_UDP) -+ { sampacket.srcport[0]=(char)p->sp; /* set ports */ -+ sampacket.srcport[1]=(char)(p->sp>>8); -+ sampacket.dstport[0]=(char)p->dp; -+ sampacket.dstport[1]=(char)(p->dp>>8); -+ } -+ else -+ sampacket.srcport[0]=sampacket.srcport[1]=sampacket.dstport[0]=sampacket.dstport[1]=0; -+ -+ sampacket.sig_id[0]=(char)event->sig_id; /* set signature ID */ -+ sampacket.sig_id[1]=(char)(event->sig_id>>8); -+ sampacket.sig_id[2]=(char)(event->sig_id>>16); -+ sampacket.sig_id[3]=(char)(event->sig_id>>24); -+ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] Sending BLOCK\n"); -+ LogMessage("DEBUG => [Alert_FWsam] Snort SeqNo: %x\n",station->myseqno); -+ LogMessage("DEBUG => [Alert_FWsam] Mgmt SeqNo : %x\n",station->stationseqno); -+ LogMessage("DEBUG => [Alert_FWsam] Status : %i\n",FWSAM_STATUS_BLOCK); -+ LogMessage("DEBUG => [Alert_FWsam] Mode : %i\n",optp->how|optp->who|optp->loglevel); -+ LogMessage("DEBUG => [Alert_FWsam] Duration : %li\n",optp->duration); -+ LogMessage("DEBUG => [Alert_FWsam] Protocol : %i\n",GET_IPH_PROTO(p)); -+#ifdef SUP_IP6 -+ LogMessage("DEBUG => [Alert_FWsam] Src IP : %s\n",sfip_ntoa(GET_SRC_IP(p))); -+ LogMessage("DEBUG => [Alert_FWsam] Dest IP : %s\n",sfip_ntoa(GET_DST_IP(p))); -+#else -+ LogMessage("DEBUG => [Alert_FWsam] Src IP : %s\n",inet_ntoa(p->iph->ip_src)); -+ LogMessage("DEBUG => [Alert_FWsam] Dest IP : %s\n",inet_ntoa(p->iph->ip_dst)); -+#endif -+ LogMessage("DEBUG => [Alert_FWsam] Src Port : %i\n",p->sp); -+ LogMessage("DEBUG => [Alert_FWsam] Dest Port : %i\n",p->dp); -+ LogMessage("DEBUG => [Alert_FWsam] Sig_ID : %lu\n",event->sig_id); -+ -+#endif -+ -+ encbuf=TwoFishAlloc(sizeof(FWsamPacket),FALSE,FALSE,station->stationfish); /* get the encryption buffer */ -+ len=TwoFishEncrypt((char *)&sampacket,&encbuf,sizeof(FWsamPacket),FALSE,station->stationfish); /* encrypt the packet with current key */ -+ -+ if(send(stationsocket,encbuf,len,0)!=len) /* weird...could not send */ -+ { LogMessage("WARNING => [Alert_FWsam] Could not send to host %s. Will try again later.\n",sfip_ntoa(&station->stationip)); -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ stationtry=0; -+ } -+ else -+ { i=FWSAM_NETWAIT; -+#ifdef WIN32 -+ ioctlsocket(stationsocket,FIONBIO,&i); /* set non blocking and wait for */ -+#else -+ ioctl(stationsocket,FIONBIO,&i); /* set non blocking and wait for */ -+#endif -+ while(i-- >1) /* the response packet */ -+ { waitms(10); /* wait for response (default maximum 3 secs */ -+ if(recv(stationsocket,encbuf,len,0)==len) -+ i=0; /* if we received packet we set the counter to 0. */ -+ /* by the time we check with if, it's already dec'ed to -1 */ -+ } -+ if(!i) /* id we timed out (i was one, then dec'ed)... */ -+ { LogMessage("WARNING => [Alert_FWsam] Did not receive response from host %s. Will try again later.\n",sfip_ntoa(&station->stationip)); -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ stationtry=0; -+ } -+ else /* got a packet */ -+ { decbuf=(char *)&sampacket; /* get the pointer to the packet struct */ -+ len=TwoFishDecrypt(encbuf,&decbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,FALSE,station->stationfish); /* try to decrypt the packet with current key */ -+ -+ if(len!=sizeof(FWsamPacket)) /* invalid decryption */ -+ { strcpy(station->stationkey,station->initialkey); /* try the intial key */ -+ TwoFishDestroy(station->stationfish); -+ station->stationfish=TwoFishInit(station->stationkey); /* re-initialize the TwoFish with the intial key */ -+ len=TwoFishDecrypt(encbuf,&decbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,FALSE,station->stationfish); /* try again to decrypt */ -+ LogMessage("INFO => [Alert_FWsam] Had to use initial key!\n"); -+ } -+ if(len==sizeof(FWsamPacket)) /* valid decryption */ -+ { if(sampacket.version==FWSAM_PACKETVERSION)/* master speaks my language */ -+ { if(sampacket.status==FWSAM_STATUS_OK || sampacket.status==FWSAM_STATUS_NEWKEY -+ || sampacket.status==FWSAM_STATUS_RESYNC || sampacket.status==FWSAM_STATUS_HOLD) -+ { station->stationseqno=sampacket.fwseqno[0] | (sampacket.fwseqno[1]<<8); /* get stations seqno */ -+ station->lastcontact=(unsigned long)time(NULL); /* set the last contact time (not used yet) */ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] Received %s\n",sampacket.status==FWSAM_STATUS_OK?"OK": -+ sampacket.status==FWSAM_STATUS_NEWKEY?"NEWKEY": -+ sampacket.status==FWSAM_STATUS_RESYNC?"RESYNC": -+ sampacket.status==FWSAM_STATUS_HOLD?"HOLD":"ERROR"); -+ LogMessage("DEBUG => [Alert_FWsam] Snort SeqNo: %x\n",sampacket.snortseqno[0]|(sampacket.snortseqno[1]<<8)); -+ LogMessage("DEBUG => [Alert_FWsam] Mgmt SeqNo : %x\n",station->stationseqno); -+ LogMessage("DEBUG => [Alert_FWsam] Status : %i\n",sampacket.status); -+ LogMessage("DEBUG => [Alert_FWsam] Version : %i\n",sampacket.version); -+#endif -+ if(sampacket.status==FWSAM_STATUS_HOLD) -+ { i=FWSAM_NETHOLD; /* Stay on hold for a maximum of 60 secs (default) */ -+ while(i-- >1) /* the response packet */ -+ { waitms(10); /* wait for response */ -+ if(recv(stationsocket,encbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,0)==sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE) -+ i=0; /* if we received packet we set the counter to 0. */ -+ } -+ if(!i) /* id we timed out (i was one, then dec'ed)... */ -+ { LogMessage("WARNING => [Alert_FWsam] Did not receive response from host %s. Will try again later.\n",sfip_ntoa(&station->stationip)); -+ stationtry=0; -+ sampacket.status=FWSAM_STATUS_ERROR; -+ } -+ else /* got a packet */ -+ { decbuf=(char *)&sampacket; /* get the pointer to the packet struct */ -+ len=TwoFishDecrypt(encbuf,&decbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,FALSE,station->stationfish); /* try to decrypt the packet with current key */ -+ -+ if(len!=sizeof(FWsamPacket)) /* invalid decryption */ -+ { strcpy(station->stationkey,station->initialkey); /* try the intial key */ -+ TwoFishDestroy(station->stationfish); -+ station->stationfish=TwoFishInit(station->stationkey); /* re-initialize the TwoFish with the intial key */ -+ len=TwoFishDecrypt(encbuf,&decbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,FALSE,station->stationfish); /* try again to decrypt */ -+ LogMessage("INFO => [Alert_FWsam] Had to use initial key again!\n"); -+ } -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] Received %s\n",sampacket.status==FWSAM_STATUS_OK?"OK": -+ sampacket.status==FWSAM_STATUS_NEWKEY?"NEWKEY": -+ sampacket.status==FWSAM_STATUS_RESYNC?"RESYNC": -+ sampacket.status==FWSAM_STATUS_HOLD?"HOLD":"ERROR"); -+ LogMessage("DEBUG => [Alert_FWsam] Snort SeqNo: %x\n",sampacket.snortseqno[0]|(sampacket.snortseqno[1]<<8)); -+ LogMessage("DEBUG => [Alert_FWsam] Mgmt SeqNo : %x\n",station->stationseqno); -+ LogMessage("DEBUG => [Alert_FWsam] Status : %i\n",sampacket.status); -+ LogMessage("DEBUG => [Alert_FWsam] Version : %i\n",sampacket.version); -+#endif -+ if(len!=sizeof(FWsamPacket)) /* invalid decryption */ -+ { ErrorMessage("ERROR => [Alert_FWsam] Password mismatch! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ deletestation=TRUE; -+ sampacket.status=FWSAM_STATUS_ERROR; -+ } -+ else if(sampacket.version!=FWSAM_PACKETVERSION) /* invalid protocol version */ -+ { ErrorMessage("ERROR => [Alert_FWsam] Protocol version error! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ deletestation=TRUE; -+ sampacket.status=FWSAM_STATUS_ERROR; -+ } -+ else if(sampacket.status!=FWSAM_STATUS_OK && sampacket.status!=FWSAM_STATUS_NEWKEY && sampacket.status!=FWSAM_STATUS_RESYNC) -+ { ErrorMessage("ERROR => [Alert_FWsam] Funky handshake error! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ deletestation=TRUE; -+ sampacket.status=FWSAM_STATUS_ERROR; -+ } -+ } -+ } -+ if(sampacket.status==FWSAM_STATUS_RESYNC) /* if station want's to resync... */ -+ { strcpy(station->stationkey,station->initialkey); /* ...we use the intial key... */ -+ memcpy(station->fwkeymod,sampacket.duration,4); /* and note the random key modifier */ -+ } -+ if(sampacket.status==FWSAM_STATUS_NEWKEY || sampacket.status==FWSAM_STATUS_RESYNC) -+ { -+ FWsamNewStationKey(station,&sampacket); /* generate new TwoFish keys */ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] Generated new encryption key...\n"); -+#endif -+ } -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ stationtry=0; -+ } -+ else if(sampacket.status==FWSAM_STATUS_ERROR) /* if SnortSam reports an error on second try, */ -+ { -+#ifdef WIN32 -+ closesocket(stationsocket); /* something is messed up and ... */ -+#else -+ close(stationsocket); -+#endif -+ if(stationtry>1) /* we ignore that station. */ -+ { deletestation=TRUE; /* flag for deletion */ -+ ErrorMessage("ERROR => [Alert_FWsam] Could not renegotiate key! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ } -+ else /* if we get an error on the first try, */ -+ { if(!FWsamCheckIn(station)) /* we first try to check in again. */ -+ { deletestation=TRUE; -+ ErrorMessage("ERROR => [Alert_FWsam] Password mismatch! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ } -+ } -+ } -+ else /* an unknown status means trouble... */ -+ { ErrorMessage("ERROR => [Alert_FWsam] Funky handshake error! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ deletestation=TRUE; -+ } -+ } -+ else /* if the SnortSam agent uses a different packet version, we have no choice but to ignore it. */ -+ { ErrorMessage("ERROR => [Alert_FWsam] Protocol version error! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ deletestation=TRUE; -+ } -+ } -+ else /* if the intial key failed to decrypt as well, the keys are not configured the same, and we ignore that SnortSam station. */ -+ { ErrorMessage("ERROR => [Alert_FWsam] Password mismatch! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ deletestation=TRUE; -+ } -+ } -+ } -+ free(encbuf); /* release of the TwoFishAlloc'ed encryption buffer */ -+ } -+ if(stationtry==0 || deletestation) /* if everything went real well, or real bad... */ -+ { if(deletestation){ /* If it went bad, we remove the station from the list by marking the IP */ -+// station->stationip.s_addr=0; -+ station->stationip.ip32[0]=0; -+ } -+ fwsamlist=fwsamlist->next; -+ } -+ } -+ else -+ fwsamlist=fwsamlist->next; -+ } -+ } -+ else -+ { -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam] Skipping repetitive block.\n"); -+#endif -+ } -+ } -+} -+ -+/* FWsamCheckOut will be called when Snort exists. It de-registeres this snort sensor -+ * from the list of sensor that the SnortSam agent keeps. -+ */ -+void FWsamCheckOut(FWsamStation *station) -+{ FWsamPacket sampacket; -+ SOCKET stationsocket; -+ int i,len; -+ char *encbuf,*decbuf; -+ //unsigned char *encbuf,*decbuf; -+ -+ -+ stationsocket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); -+ if(stationsocket==INVALID_SOCKET) -+ FatalError("ERROR => [Alert_FWsam](FWsamCheckOut) Funky socket error (socket)!\n"); -+ if(bind(stationsocket,(struct sockaddr *)&(station->localsocketaddr),sizeof(struct sockaddr))) -+ FatalError("ERROR => [Alert_FWsam](FWsamCheckOut) Could not bind socket!\n"); -+ -+ /* let's connect to the agent */ -+ if(!connect(stationsocket,(struct sockaddr *)&station->stationsocketaddr,sizeof(struct sockaddr))) -+ { LogMessage("INFO => [Alert_FWsam](FWsamCheckOut) Disconnecting from host %s.\n",sfip_ntoa(&station->stationip)); -+ /* now build the packet */ -+ station->myseqno+=station->stationseqno; /* increase my seqno */ -+ sampacket.endiancheck=1; -+ sampacket.snortseqno[0]=(char)station->myseqno; -+ sampacket.snortseqno[1]=(char)(station->myseqno>>8); -+ sampacket.fwseqno[0]=(char)station->stationseqno; /* fill station seqno */ -+ sampacket.fwseqno[1]=(char)(station->stationseqno>>8); -+ sampacket.status=FWSAM_STATUS_CHECKOUT; /* checking out... */ -+ sampacket.version=FWSAM_PACKETVERSION; -+ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckOut) Sending CHECKOUT\n"); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckOut) Snort SeqNo: %x\n",station->myseqno); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckOut) Mgmt SeqNo : %x\n",station->stationseqno); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckOut) Status : %i\n",sampacket.status); -+ -+#endif -+ -+ encbuf=TwoFishAlloc(sizeof(FWsamPacket),FALSE,FALSE,station->stationfish); /* get encryption buffer */ -+ len=TwoFishEncrypt((char *)&sampacket,&encbuf,sizeof(FWsamPacket),FALSE,station->stationfish); /* encrypt packet with current key */ -+ -+ if(send(stationsocket,encbuf,len,0)==len) -+ { i=FWSAM_NETWAIT; -+#ifdef WIN32 -+ ioctlsocket(stationsocket,FIONBIO,&i); /* set non blocking and wait for */ -+#else -+ ioctl(stationsocket,FIONBIO,&i); /* set non blocking and wait for */ -+#endif -+ while(i-- >1) -+ { waitms(10); /* ...wait a maximum of 3 secs for response... */ -+ if(recv(stationsocket,encbuf,len,0)==len) /* ... for the status packet */ -+ i=0; -+ } -+ if(i) /* if we got the packet */ -+ { decbuf=(char *)&sampacket; -+ len=TwoFishDecrypt(encbuf,&decbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,FALSE,station->stationfish); -+ -+ if(len!=sizeof(FWsamPacket)) /* invalid decryption */ -+ { strcpy(station->stationkey,station->initialkey); /* try initial key */ -+ TwoFishDestroy(station->stationfish); /* toss this fish */ -+ station->stationfish=TwoFishInit(station->stationkey); /* re-initialze TwoFish with initial key */ -+ len=TwoFishDecrypt(encbuf,&decbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,FALSE,station->stationfish); /* and try to decrypt again */ -+ LogMessage("INFO => [Alert_FWsam](FWsamCheckOut) Had to use initial key!\n"); -+ } -+ if(len==sizeof(FWsamPacket)) /* valid decryption */ -+ { if(sampacket.version!=FWSAM_PACKETVERSION) /* but don't really care since we are on the way out */ -+ ErrorMessage("WARNING => [Alert_FWsam](FWsamCheckOut) Protocol version error! What the hell, we're quitting anyway! :)\n"); -+ } -+ else -+ ErrorMessage("WARNING => [Alert_FWsam](FWsamCheckOut) Password mismatch! What the hell, we're quitting anyway! :)\n"); -+ } -+ } -+ free(encbuf); /* release TwoFishAlloc'ed buffer */ -+ } -+ else -+ LogMessage("WARNING => [Alert_FWsam] Could not connect to host %s for CheckOut. What the hell, we're quitting anyway! :)\n",sfip_ntoa(&station->stationip)); -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+} -+ -+ -+/* FWSamFree: Disconnects all FW-1 management stations, -+ * closes sockets, and frees the structures. -+ */ -+void FWsamFree(FWsamList *list) -+{ -+ FWsamList *next; -+ -+ while(list) /* Free pointer list for rule type */ -+ { -+ next=list->next; -+ free(list); -+ list=next; -+ } -+ list=FWsamStationList; -+ -+ while(list) /* Free global pointer list and stations */ -+ { -+ next=list->next; -+ if (list->station) -+ { -+ if(list->station->stationip.ip32[0]) -+ //if(list->station->stationip.s_addr) -+ FWsamCheckOut(list->station); /* Send a Check-Out to SnortSam, */ -+ -+ TwoFishDestroy(list->station->stationfish); /* toss the fish, */ -+ free(list->station); /* free station, */ -+ } -+ free(list); /* free pointer, */ -+ list=next; /* and move to next. */ -+ } -+ FWsamStationList=NULL; -+ if(FWsamOptionField) -+ free(FWsamOptionField); -+} -+ -+void AlertFWsamCleanExitFunc(int signal, void *arg) -+{ FWsamList *fwsamlist; -+ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamCleanExitFunc) Exiting...\n"); -+#endif -+ -+ fwsamlist=(FWsamList *)arg; -+ FWsamFree(fwsamlist); /* Free all elements */ -+} -+ -+void AlertFWsamRestartFunc(int signal, void *arg) -+{ FWsamList *fwsamlist; -+ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](AlertFWsamRestartFunc) Restarting...\n"); -+#endif -+ -+ fwsamlist=(FWsamList *)arg; -+ FWsamFree(fwsamlist); /* Free all elements */ -+} -+ -+/* This routine registers this Snort sensor with SnortSam. -+ * It will also change the encryption key based on some variables. -+ */ -+int FWsamCheckIn(FWsamStation *station) -+{ int i,len,stationok=TRUE; -+ FWsamPacket sampacket; -+ char *encbuf,*decbuf; -+ //unsigned char *encbuf,*decbuf; -+ SOCKET stationsocket; -+ -+ -+ /* create a socket for the station */ -+ stationsocket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); -+ if(stationsocket==INVALID_SOCKET) -+ FatalError("ERROR => [Alert_FWsam](FWsamCheckIn) Funky socket error (socket)!\n"); -+ if(bind(stationsocket,(struct sockaddr *)&(station->localsocketaddr),sizeof(struct sockaddr))) -+ FatalError("ERROR => [Alert_FWsam](FWsamCheckIn) Could not bind socket!\n"); -+ -+ i=TRUE; -+ /* let's connect to the agent */ -+ if(connect(stationsocket,(struct sockaddr *)&station->stationsocketaddr,sizeof(struct sockaddr))) -+ LogMessage("WARNING => [Alert_FWsam](FWsamCheckIn) Could not connect to host %s. Will try later.\n",sfip_ntoa(&station->stationip)); -+ else -+ { LogMessage("INFO => [Alert_FWsam](FWsamCheckIn) Connected to host %s.\n",sfip_ntoa(&station->stationip)); -+ /* now build the packet */ -+ sampacket.endiancheck=1; -+ sampacket.snortseqno[0]=(char)station->myseqno; /* fill my sequence number number */ -+ sampacket.snortseqno[1]=(char)(station->myseqno>>8); /* fill my sequence number number */ -+ sampacket.status=FWSAM_STATUS_CHECKIN; /* let's check in */ -+ sampacket.version=FWSAM_PACKETVERSION; /* set the packet version */ -+ memcpy(sampacket.duration,station->mykeymod,4); /* we'll send SnortSam our key modifier in the duration slot */ -+ /* (the checkin packet is just the plain initial key) */ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Sending CheckIn\n"); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Snort SeqNo: %x\n",station->myseqno); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Mode : %i\n",sampacket.status); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Version : %i\n",sampacket.version); -+#endif -+ encbuf=TwoFishAlloc(sizeof(FWsamPacket),FALSE,FALSE,station->stationfish); /* get buffer for encryption */ -+ len=TwoFishEncrypt((char *)&sampacket,&encbuf,sizeof(FWsamPacket),FALSE,station->stationfish); /* encrypt with initial key */ -+ if(send(stationsocket,encbuf,len,0)!=len) /* weird...could not send */ -+ LogMessage("WARNING => [Alert_FWsam](FWsamCheckIn) Could not send to host %s. Will try again later.\n",sfip_ntoa(&station->stationip)); -+ else -+ { i=FWSAM_NETWAIT; -+#ifdef WIN32 -+ ioctlsocket(stationsocket,FIONBIO,&i); /* set non blocking and wait for */ -+#else -+ ioctl(stationsocket,FIONBIO,&i); /* set non blocking and wait for */ -+#endif -+ while(i-- >1) -+ { waitms(10); /* wait a maximum of 3 secs for response */ -+ if(recv(stationsocket,encbuf,len,0)==len) -+ i=0; -+ } -+ if(!i) /* time up? */ -+ LogMessage("WARNING => [Alert_FWsam](FWsamCheckIn) Did not receive response from host %s. Will try again later.\n",sfip_ntoa(&station->stationip)); -+ else -+ { decbuf=(char *)&sampacket; /* got status packet */ -+ len=TwoFishDecrypt(encbuf,&decbuf,sizeof(FWsamPacket)+TwoFish_BLOCK_SIZE,FALSE,station->stationfish); /* try to decrypt with initial key */ -+ if(len==sizeof(FWsamPacket)) /* valid decryption */ -+ { -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Received %s\n",sampacket.status==FWSAM_STATUS_OK?"OK": -+ sampacket.status==FWSAM_STATUS_NEWKEY?"NEWKEY": -+ sampacket.status==FWSAM_STATUS_RESYNC?"RESYNC": -+ sampacket.status==FWSAM_STATUS_HOLD?"HOLD":"ERROR"); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Snort SeqNo: %x\n",sampacket.snortseqno[0]|(sampacket.snortseqno[1]<<8)); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Mgmt SeqNo : %x\n",sampacket.fwseqno[0]|(sampacket.fwseqno[1]<<8)); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Status : %i\n",sampacket.status); -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Version : %i\n",sampacket.version); -+#endif -+ if(sampacket.version==FWSAM_PACKETVERSION) /* master speaks my language */ -+ { if(sampacket.status==FWSAM_STATUS_OK || sampacket.status==FWSAM_STATUS_NEWKEY || sampacket.status==FWSAM_STATUS_RESYNC) -+ { station->stationseqno=sampacket.fwseqno[0]|(sampacket.fwseqno[1]<<8); /* get stations seqno */ -+ station->lastcontact=(unsigned long)time(NULL); -+ -+ if(sampacket.status==FWSAM_STATUS_NEWKEY || sampacket.status==FWSAM_STATUS_RESYNC) /* generate new keys */ -+ { memcpy(station->fwkeymod,sampacket.duration,4); /* note the key modifier */ -+ FWsamNewStationKey(station,&sampacket); /* and generate new TwoFish keys (with key modifiers) */ -+#ifdef FWSAMDEBUG -+ LogMessage("DEBUG => [Alert_FWsam](FWsamCheckIn) Generated new encryption key...\n"); -+#endif -+ } -+ } -+ else /* weird, got a strange status back */ -+ { ErrorMessage("ERROR => [Alert_FWsam](FWsamCheckIn) Funky handshake error! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ stationok=FALSE; -+ } -+ } -+ else /* packet version does not match */ -+ { ErrorMessage("ERROR =>[Alert_FWsam](FWsamCheckIn) Protocol version error! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ stationok=FALSE; -+ } -+ } -+ else /* key does not match */ -+ { ErrorMessage("ERROR => [Alert_FWsam](FWsamCheckIn) Password mismatch! Ignoring host %s.\n",sfip_ntoa(&station->stationip)); -+ stationok=FALSE; -+ } -+ } -+ } -+ free(encbuf); /* release TwoFishAlloc'ed buffer */ -+ } -+#ifdef WIN32 -+ closesocket(stationsocket); -+#else -+ close(stationsocket); -+#endif -+ return stationok; -+} -+#undef FWSAMDEBUG -+ - -Index: snort-2.8.6.1/src/output-plugins/spo_alert_fwsam.h -=================================================================== ---- snort-2.8.6.1/src/output-plugins/spo_alert_fwsam.h (Revision 0) -+++ snort-2.8.6.1/src/output-plugins/spo_alert_fwsam.h (Revision 3) -@@ -0,0 +1,216 @@ -+/* $Id: snortpatchb,v 1.5 2005/10/06 08:50:39 fknobbe Exp $ -+** -+** spo_alert_fwsam.h -+** -+** Copyright (c) 2001-2004 Frank Knobbe -+** -+** This program is free software; you can redistribute it and/or modify -+** it under the terms of the GNU General Public License as published by -+** the Free Software Foundation; either version 2 of the License, or -+** (at your option) any later version. -+** -+** This program is distributed in the hope that it will be useful, -+** but WITHOUT ANY WARRANTY; without even the implied warranty of -+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+** GNU General Public License for more details. -+** -+** You should have received a copy of the GNU General Public License -+** along with this program; if not, write to the Free Software -+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+*/ -+ -+/* This file gets included in plugbase.c when it is integrated into the rest -+ * of the program. -+ * -+ * For more info, see the beginning of spo_alert_fwsam.c -+ * -+ */ -+ -+#ifndef __SPO_FWSAM_H__ -+#define __SPO_FWSAM_H__ -+ -+#include "snort.h" -+#include "rules.h" -+#include "plugbase.h" -+#include "plugin_enum.h" -+#include "fatal.h" -+#include "util.h" -+#include "twofish.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+ -+/* just some compatibility stuff */ -+#ifdef WIN32 -+#if !defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) -+#include -+#endif -+#define waitms(x) Sleep(x) -+ -+#else -+ -+#include -+#include -+#include -+#include -+#include -+ -+#ifdef SOLARIS -+#include -+#endif -+ -+typedef int SOCKET; -+ -+#ifndef INVALID_SOCKET -+#define INVALID_SOCKET -1 -+#endif -+ -+#define waitms(x) usleep((x)*1000) -+ -+#endif -+ -+#ifndef FALSE -+#define FALSE 0 -+#endif -+#ifndef TRUE -+#define TRUE !FALSE -+#endif -+#ifndef bool -+#define bool int -+#endif -+ -+ -+#if defined(_DEBUG) || defined(DEBUG) -+#ifndef FWSAMDEBUG -+#define FWSAMDEBUG -+#endif -+#else -+#endif -+ -+ -+/* Official Snort PlugIn Number has been moved into plugin_enum.h */ -+ -+ -+/* fixed defines */ -+ -+#define FWSAM_DEFAULTPORT 898 /* Default port if user does not specify one in snort.conf */ -+ /* (Was unused last time I checked...) */ -+#define FWSAM_PACKETVERSION 14 /* version of the packet. Will increase with enhancements. */ -+ -+#define FWSAM_STATUS_CHECKIN 1 /* snort to fw */ -+#define FWSAM_STATUS_CHECKOUT 2 -+#define FWSAM_STATUS_BLOCK 3 -+#define FWSAM_STATUS_UNBLOCK 9 -+ -+#define FWSAM_STATUS_OK 4 /* fw to snort */ -+#define FWSAM_STATUS_ERROR 5 -+#define FWSAM_STATUS_NEWKEY 6 -+#define FWSAM_STATUS_RESYNC 7 -+#define FWSAM_STATUS_HOLD 8 -+ -+#define FWSAM_LOG_NONE 0 -+#define FWSAM_LOG_SHORTLOG 1 -+#define FWSAM_LOG_SHORTALERT 2 -+#define FWSAM_LOG_LONGLOG 3 -+#define FWSAM_LOG_LONGALERT 4 -+#define FWSAM_LOG (FWSAM_LOG_SHORTLOG|FWSAM_LOG_SHORTALERT|FWSAM_LOG_LONGLOG|FWSAM_LOG_LONGALERT) -+#define FWSAM_WHO_DST 8 -+#define FWSAM_WHO_SRC 16 -+#define FWSAM_WHO (FWSAM_WHO_DST|FWSAM_WHO_SRC) -+#define FWSAM_HOW_IN 32 -+#define FWSAM_HOW_OUT 64 -+#define FWSAM_HOW_INOUT (FWSAM_HOW_IN|FWSAM_HOW_OUT) -+#define FWSAM_HOW_THIS 128 -+#define FWSAM_HOW (FWSAM_HOW_IN|FWSAM_HOW_OUT|FWSAM_HOW_THIS) -+ -+ -+/* user adjustable defines */ -+ -+#define FWSAM_REPET_BLOCKS 10 /* Snort remembers this amount of last blocks and... */ -+#define FWSAM_REPET_TIME 20 /* ...checks if they fall within this time. If so,... */ -+ /* ...the blocking request is not send. */ -+ -+#define FWSAM_NETWAIT 300 /* 100th of a second. 3 sec timeout for network connections */ -+#define FWSAM_NETHOLD 6000 /* 100th of a second. 60 sec timeout for holding */ -+ -+#define SID_MAPFILE "sid-block.map" -+#define SID_ALT_MAPFILE "sid-fwsam.map" -+ -+#define FWSAM_FANCYFETCH /* This will invoke a fast sid lookup routine */ -+ -+ -+/* vars */ -+ -+typedef struct _FWsamstation /* structure of a mgmt station */ -+{ unsigned short myseqno; -+ unsigned short stationseqno; -+ unsigned char mykeymod[4]; -+ unsigned char fwkeymod[4]; -+ unsigned short stationport; -+ //struct in_addr stationip; -+ sfip_t stationip; -+ struct sockaddr_in localsocketaddr; -+ struct sockaddr_in stationsocketaddr; -+ TWOFISH *stationfish; -+ char initialkey[TwoFish_KEY_LENGTH+2]; -+ char stationkey[TwoFish_KEY_LENGTH+2]; -+ time_t lastcontact; -+/* time_t sleepstart; */ -+} FWsamStation; -+ -+typedef struct _FWsampacket /* 2 blocks (3rd block is header from TwoFish) */ -+{ unsigned short endiancheck; /* 0 */ -+ unsigned char srcip[4]; /* 2 */ -+ unsigned char dstip[4]; /* 6 */ -+ unsigned char duration[4]; /* 10 */ -+ unsigned char snortseqno[2]; /* 14 */ -+ unsigned char fwseqno[2]; /* 16 */ -+ unsigned char srcport[2]; /* 18 */ -+ unsigned char dstport[2]; /* 20 */ -+ unsigned char protocol[2]; /* 22 */ -+ unsigned char fwmode; /* 24 */ -+ unsigned char version; /* 25 */ -+ unsigned char status; /* 26 */ -+ unsigned char sig_id[4]; /* 27 */ -+ unsigned char fluff; /* 31 */ -+} FWsamPacket; /* 32 bytes in size */ -+ -+typedef struct _FWsamoptions /* snort rule options */ -+{ unsigned long sid; -+ unsigned long duration; -+ unsigned char who; -+ unsigned char how; -+ unsigned char loglevel; -+} FWsamOptions; -+ -+typedef struct _FWsamlistpointer -+{ FWsamStation *station; -+ struct _FWsamlistpointer *next; -+} FWsamList; -+ -+ -+/* functions */ -+void AlertFWsamSetup(void); -+void AlertFWsamInit(char *args); -+void AlertFWsamOptionInit(char *args,OptTreeNode *otn,int protocol); -+void AlertFWsamCleanExitFunc(int signal, void *arg); -+void AlertFWsamRestartFunc(int signal, void *arg); -+void AlertFWsam(Packet *p, char *msg, void *arg, Event *event); -+int FWsamCheckIn(FWsamStation *station); -+void FWsamCheckOut(FWsamStation *station); -+void FWsamNewStationKey(FWsamStation *station,FWsamPacket *packet); -+void FWsamFixPacketEndian(FWsamPacket *p); -+unsigned long FWsamParseDuration(char *p); -+void FWsamFree(FWsamList *fwsamlist); -+int FWsamStationExists(FWsamStation *who,FWsamList *list); -+int FWsamReadLine(char *,unsigned long,FILE *); -+void FWsamParseLine(FWsamOptions *,char *); -+FWsamOptions *FWsamGetOption(unsigned long); -+int FWsamParseOption(FWsamOptions *,char *); -+ -+#endif /* __SPO_FWSAM_H__ */ - -Index: snort-2.8.6.1/src/output-plugins/Makefile.am -=================================================================== ---- snort-2.8.6.1/src/output-plugins/Makefile.am (Revision 1) -+++ snort-2.8.6.1/src/output-plugins/Makefile.am (Revision 3) -@@ -11,6 +11,7 @@ - spo_log_tcpdump.h spo_unified.c spo_unified2.c spo_unified.h spo_unified2.h \ - spo_log_ascii.c spo_log_ascii.h spo_alert_sf_socket.h spo_alert_sf_socket.c \ - spo_alert_prelude.c spo_alert_prelude.h spo_alert_arubaaction.c spo_alert_arubaaction.h \ -+spo_alert_fwsam.c spo_alert_fwsam.h \ - spo_alert_test.c spo_alert_test.h - - INCLUDES = @INCLUDES@ -Index: snort-2.8.6.1/src/plugbase.c -=================================================================== ---- snort-2.8.6.1/src/plugbase.c (Revision 1) -+++ snort-2.8.6.1/src/plugbase.c (Revision 3) -@@ -125,6 +125,7 @@ - #endif - - #include "output-plugins/spo_alert_test.h" -+#include "output-plugins/spo_alert_fwsam.h" - - extern ListHead *head_tmp; - extern PreprocConfigFuncNode *preproc_config_funcs; -@@ -1240,6 +1241,7 @@ - #endif - - AlertTestSetup(); -+ AlertFWsamSetup(); - } - - /**************************************************************************** -Index: snort-2.8.6.1/src/Makefile.am -=================================================================== ---- snort-2.8.6.1/src/Makefile.am (Revision 1) -+++ snort-2.8.6.1/src/Makefile.am (Revision 3) -@@ -52,7 +52,8 @@ - detection_filter.c detection_filter.h \ - rate_filter.c rate_filter.h \ - obfuscation.c obfuscation.h \ --rule_option_types.h -+rule_option_types.h \ -+twofish.c twofish.h - - snort_LDADD = output-plugins/libspo.a \ - detection-plugins/libspd.a \ -Index: snort-2.8.6.1/autojunk.sh -=================================================================== ---- snort-2.8.6.1/autojunk.sh (Revision 0) -+++ snort-2.8.6.1/autojunk.sh (Revision 3) -@@ -0,0 +1,7 @@ -+#!/bin/sh -+# the list of commands that need to run before we do a compile -+libtoolize --automake --copy -+aclocal -I m4 -+autoheader -+automake --add-missing --copy -+autoconf - -Index: snort-2.8.6.1/etc/snort.conf -=================================================================== ---- snort-2.8.6.1/etc/snort.conf (Revision 1) -+++ snort-2.8.6.1/etc/snort.conf (Revision 3) -@@ -277,6 +277,32 @@ - # prelude - # output alert_prelude - -+# snortsam -+# In order to cause Snort to send a blocking request to the SnortSam agent, -+# that agent has to be listed, including the port it listens on, -+# and the encryption key it is using. The statement for that is: -+# -+# output alert_fwsam: {SnortSam Station}:{port}/{password} -+# -+# {SnortSam Station}: IP address or host name of the host where SnortSam is running. -+# {port}: The port the remote SnortSam agent listens on. -+# {password}: The password, or key, used for encryption of the -+# communication to the remote agent. -+# -+# At the very least, the IP address or host name of the host running SnortSam -+# needs to be specified. If the port is omitted, it defaults to TCP port 898. -+# If the password is omitted, it defaults to a preset password. -+# (In which case it needs to be omitted on the SnortSam agent as well) -+# -+# More than one host can be specified, but has to be done on the same line. -+# Just separate them with one or more spaces. -+# -+# Examples: -+# -+# output alert_fwsam: firewall/idspassword -+# output alert_fwsam: fw1.domain.tld:898/mykey -+# output alert_fwsam: 192.168.0.1/borderfw 192.168.1.254/wanfw -+ - # metadata reference data. do not modify these lines - include classification.config - include reference.config diff --git a/config/snort-dev/snortsam-package-code/patches/inlinemode_options_flags.txt b/config/snort-dev/snortsam-package-code/patches/inlinemode_options_flags.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.am b/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.am deleted file mode 100644 index 0879c6e3..00000000 --- a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -## $Id -AUTOMAKE_OPTIONS=foreign no-dependencies - -noinst_LIBRARIES = libspo.a - -libspo_a_SOURCES = spo_alert_fast.c spo_alert_fast.h \ -spo_alert_full.c spo_alert_full.h \ -spo_alert_syslog.c spo_alert_syslog.h spo_alert_unixsock.c \ -spo_alert_unixsock.h spo_csv.c spo_csv.h spo_database.c spo_database.h \ -spo_log_null.c spo_log_null.h spo_log_tcpdump.c \ -spo_log_tcpdump.h spo_unified.c spo_unified2.c spo_unified.h spo_unified2.h \ -spo_log_ascii.c spo_log_ascii.h spo_alert_sf_socket.h spo_alert_sf_socket.c \ -spo_alert_prelude.c spo_alert_prelude.h spo_alert_arubaaction.c spo_alert_arubaaction.h \ -spo_alert_test.c spo_alert_test.h \ -spo_pf.h spo_pf.c - -INCLUDES = @INCLUDES@ diff --git a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.in b/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.in deleted file mode 100644 index 3f06cc31..00000000 --- a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/Makefile.in +++ /dev/null @@ -1,445 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/output-plugins -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libprelude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -libspo_a_AR = $(AR) $(ARFLAGS) -libspo_a_LIBADD = -am_libspo_a_OBJECTS = spo_alert_fast.$(OBJEXT) \ - spo_alert_full.$(OBJEXT) spo_alert_syslog.$(OBJEXT) \ - spo_alert_unixsock.$(OBJEXT) spo_csv.$(OBJEXT) \ - spo_database.$(OBJEXT) spo_log_null.$(OBJEXT) \ - spo_log_tcpdump.$(OBJEXT) spo_unified.$(OBJEXT) \ - spo_unified2.$(OBJEXT) spo_log_ascii.$(OBJEXT) \ - spo_alert_sf_socket.$(OBJEXT) spo_alert_prelude.$(OBJEXT) \ - spo_alert_arubaaction.$(OBJEXT) spo_alert_test.$(OBJEXT) \ - spo_pf.$(OBJEXT) -libspo_a_OBJECTS = $(am_libspo_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = -am__depfiles_maybe = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libspo_a_SOURCES) -DIST_SOURCES = $(libspo_a_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BUILD_DYNAMIC_EXAMPLES_FALSE = @BUILD_DYNAMIC_EXAMPLES_FALSE@ -BUILD_DYNAMIC_EXAMPLES_TRUE = @BUILD_DYNAMIC_EXAMPLES_TRUE@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -HAVE_DYNAMIC_PLUGINS_FALSE = @HAVE_DYNAMIC_PLUGINS_FALSE@ -HAVE_DYNAMIC_PLUGINS_TRUE = @HAVE_DYNAMIC_PLUGINS_TRUE@ -HAVE_SUP_IP6_FALSE = @HAVE_SUP_IP6_FALSE@ -HAVE_SUP_IP6_TRUE = @HAVE_SUP_IP6_TRUE@ -HAVE_TARGET_BASED_FALSE = @HAVE_TARGET_BASED_FALSE@ -HAVE_TARGET_BASED_TRUE = @HAVE_TARGET_BASED_TRUE@ -HAVE_ZLIB_FALSE = @HAVE_ZLIB_FALSE@ -HAVE_ZLIB_TRUE = @HAVE_ZLIB_TRUE@ -INCLUDES = @INCLUDES@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LIBOBJS = @LIBOBJS@ -LIBPRELUDE_CFLAGS = @LIBPRELUDE_CFLAGS@ -LIBPRELUDE_CONFIG = @LIBPRELUDE_CONFIG@ -LIBPRELUDE_CONFIG_PREFIX = @LIBPRELUDE_CONFIG_PREFIX@ -LIBPRELUDE_LDFLAGS = @LIBPRELUDE_LDFLAGS@ -LIBPRELUDE_LIBS = @LIBPRELUDE_LIBS@ -LIBPRELUDE_PREFIX = @LIBPRELUDE_PREFIX@ -LIBPRELUDE_PTHREAD_CFLAGS = @LIBPRELUDE_PTHREAD_CFLAGS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ -MAKEINFO = @MAKEINFO@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -YACC = @YACC@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -extra_incl = @extra_incl@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -AUTOMAKE_OPTIONS = foreign no-dependencies -noinst_LIBRARIES = libspo.a -libspo_a_SOURCES = spo_alert_fast.c spo_alert_fast.h \ -spo_alert_full.c spo_alert_full.h \ -spo_alert_syslog.c spo_alert_syslog.h spo_alert_unixsock.c \ -spo_alert_unixsock.h spo_csv.c spo_csv.h spo_database.c spo_database.h \ -spo_log_null.c spo_log_null.h spo_log_tcpdump.c \ -spo_log_tcpdump.h spo_unified.c spo_unified2.c spo_unified.h spo_unified2.h \ -spo_log_ascii.c spo_log_ascii.h spo_alert_sf_socket.h spo_alert_sf_socket.c \ -spo_alert_prelude.c spo_alert_prelude.h spo_alert_arubaaction.c spo_alert_arubaaction.h \ -spo_alert_test.c spo_alert_test.h \ -spo_pf.h spo_pf.c - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/output-plugins/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/output-plugins/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libspo.a: $(libspo_a_OBJECTS) $(libspo_a_DEPENDENCIES) - -rm -f libspo.a - $(libspo_a_AR) libspo.a $(libspo_a_OBJECTS) $(libspo_a_LIBADD) - $(RANLIB) libspo.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -.c.o: - $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/plugbase.c b/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/plugbase.c deleted file mode 100644 index 31f381a8..00000000 --- a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/plugbase.c +++ /dev/null @@ -1,1544 +0,0 @@ -/* $Id$ */ -/* -** Copyright (C) 2002-2010 Sourcefire, Inc. -** Copyright (C) 1998-2002 Martin Roesch -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License Version 2 as -** published by the Free Software Foundation. You may not use, modify or -** distribute this program under any other version of the GNU General -** Public License. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include - -#ifdef HAVE_STRINGS_H -#include -#endif - -#ifndef WIN32 -#include -#include -#include -#endif /* !WIN32 */ -#include -#include - -#include "sf_types.h" -#include "plugbase.h" -#include "spo_plugbase.h" -#include "snort.h" -#include "debug.h" -#include "util.h" -#include "log.h" -#include "detect.h" - -/* built-in preprocessors */ -#include "preprocessors/spp_rpc_decode.h" -#include "preprocessors/spp_bo.h" -#include "preprocessors/spp_stream5.h" -#include "preprocessors/spp_arpspoof.h" -#include "preprocessors/spp_perfmonitor.h" -#include "preprocessors/spp_httpinspect.h" -#include "preprocessors/spp_sfportscan.h" -#include "preprocessors/spp_frag3.h" - -/* built-in detection plugins */ -#include "detection-plugins/sp_pattern_match.h" -#include "detection-plugins/sp_tcp_flag_check.h" -#include "detection-plugins/sp_icmp_type_check.h" -#include "detection-plugins/sp_icmp_code_check.h" -#include "detection-plugins/sp_ttl_check.h" -#include "detection-plugins/sp_ip_id_check.h" -#include "detection-plugins/sp_tcp_ack_check.h" -#include "detection-plugins/sp_tcp_seq_check.h" -#include "detection-plugins/sp_dsize_check.h" -#include "detection-plugins/sp_ipoption_check.h" -#include "detection-plugins/sp_rpc_check.h" -#include "detection-plugins/sp_icmp_id_check.h" -#include "detection-plugins/sp_icmp_seq_check.h" -#include "detection-plugins/sp_session.h" -#include "detection-plugins/sp_ip_tos_check.h" -#include "detection-plugins/sp_ip_fragbits.h" -#include "detection-plugins/sp_tcp_win_check.h" -#include "detection-plugins/sp_ip_same_check.h" -#include "detection-plugins/sp_ip_proto.h" -#include "detection-plugins/sp_ip_same_check.h" -#include "detection-plugins/sp_clientserver.h" -#include "detection-plugins/sp_byte_check.h" -#include "detection-plugins/sp_byte_jump.h" -#include "detection-plugins/sp_isdataat.h" -#include "detection-plugins/sp_pcre.h" -#include "detection-plugins/sp_flowbits.h" -#include "detection-plugins/sp_file_data.h" -#include "detection-plugins/sp_asn1.h" -#ifdef ENABLE_REACT -#include "detection-plugins/sp_react.h" -#endif -#ifdef ENABLE_RESPOND -#include "detection-plugins/sp_respond.h" -#endif -#include "detection-plugins/sp_ftpbounce.h" -#include "detection-plugins/sp_urilen_check.h" -#include "detection-plugins/sp_cvs.h" - -/* built-in output plugins */ -#include "output-plugins/spo_alert_syslog.h" -#include "output-plugins/spo_log_tcpdump.h" -#include "output-plugins/spo_database.h" -#include "output-plugins/spo_alert_fast.h" -#include "output-plugins/spo_alert_full.h" -#include "output-plugins/spo_alert_unixsock.h" -#include "output-plugins/spo_csv.h" -#include "output-plugins/spo_unified.h" -#include "output-plugins/spo_log_null.h" -#include "output-plugins/spo_log_ascii.h" -#include "output-plugins/spo_unified2.h" -#include "output-plugins/spo_pf.h" - -#ifdef ARUBA -#include "output-plugins/spo_alert_arubaaction.h" -#endif - -#ifdef HAVE_LIBPRELUDE -#include "output-plugins/spo_alert_prelude.h" -#endif - -#ifdef LINUX -#include "output-plugins/spo_alert_sf_socket.h" -#endif - -#include "output-plugins/spo_alert_test.h" - -extern ListHead *head_tmp; -extern PreprocConfigFuncNode *preproc_config_funcs; -extern OutputConfigFuncNode *output_config_funcs; -extern RuleOptConfigFuncNode *rule_opt_config_funcs; -extern RuleOptOverrideInitFuncNode *rule_opt_override_init_funcs; -extern RuleOptParseCleanupNode *rule_opt_parse_cleanup_list; -extern PreprocSignalFuncNode *preproc_restart_funcs; -extern PreprocSignalFuncNode *preproc_clean_exit_funcs; -extern PreprocSignalFuncNode *preproc_shutdown_funcs; -extern PreprocSignalFuncNode *preproc_reset_funcs; -extern PreprocSignalFuncNode *preproc_reset_stats_funcs; -extern PreprocStatsFuncNode *preproc_stats_funcs; -extern PluginSignalFuncNode *plugin_shutdown_funcs; -extern PluginSignalFuncNode *plugin_clean_exit_funcs; -extern PluginSignalFuncNode *plugin_restart_funcs; -extern OutputFuncNode *AlertList; -extern OutputFuncNode *LogList; - - -/**************************** Detection Plugin API ****************************/ -/* For translation from enum to char* */ -#ifdef DEBUG -static const char *optTypeMap[OPT_TYPE_MAX] = -{ - "action", - "logging", - "detection" -}; - -#define ENUM2STR(num, map) \ - ((num < sizeof(map)/sizeof(map[0])) ? map[num] : "undefined") -#endif - - -void RegisterRuleOptions(void) -{ - LogMessage("Initializing Plug-ins!\n"); - - SetupPatternMatch(); - SetupTCPFlagCheck(); - SetupIcmpTypeCheck(); - SetupIcmpCodeCheck(); - SetupTtlCheck(); - SetupIpIdCheck(); - SetupTcpAckCheck(); - SetupTcpSeqCheck(); - SetupDsizeCheck(); - SetupIpOptionCheck(); - SetupRpcCheck(); - SetupIcmpIdCheck(); - SetupIcmpSeqCheck(); - SetupSession(); - SetupIpTosCheck(); - SetupFragBits(); - SetupFragOffset(); - SetupTcpWinCheck(); - SetupIpProto(); - SetupIpSameCheck(); - SetupClientServer(); - SetupByteTest(); - SetupByteJump(); - SetupIsDataAt(); - SetupFileData(); - SetupPcre(); - SetupFlowBits(); - SetupAsn1(); -#ifdef ENABLE_REACT - SetupReact(); -#endif -#ifdef ENABLE_RESPOND - SetupRespond(); -#endif - SetupFTPBounce(); - SetupUriLenCheck(); - SetupCvs(); -} - -/**************************************************************************** - * - * Function: RegisterRuleOption(char *, void (*func)(), enum OptionType) - * - * Purpose: Associates a rule option keyword with an option setup/linking - * function. - * - * Arguments: keyword => The option keyword to associate with the option - * handler - * *func => function pointer to the handler - * type => used to determine where keyword is allowed - * - * Returns: void function - * - ***************************************************************************/ -void RegisterRuleOption(char *opt_name, RuleOptConfigFunc config_func, - RuleOptOverrideInitFunc override_init_func, - RuleOptType opt_type, - RuleOptOtnHandler otn_handler) -{ - RuleOptConfigFuncNode *node; - - DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "Registering keyword:func => %s/%s:%p\n", - ENUM2STR(opt_type, optTypeMap), opt_name, config_func);); - - node = (RuleOptConfigFuncNode *)SnortAlloc(sizeof(RuleOptConfigFuncNode)); - - if (rule_opt_config_funcs == NULL) - { - rule_opt_config_funcs = node; - } - else - { - RuleOptConfigFuncNode *tmp = rule_opt_config_funcs; - RuleOptConfigFuncNode *last; - - do - { - if (strcasecmp(tmp->keyword, opt_name) == 0) - { - free(node); - FatalError("Duplicate detection plugin keyword: %s.\n", - file_line, opt_name); - } - - last = tmp; - tmp = tmp->next; - - } while (tmp != NULL); - - last->next = node; - } - - node->keyword = SnortStrdup(opt_name); - node->type = opt_type; - node->func = config_func; - node->otn_handler = otn_handler; - - if (override_init_func != NULL) - { - RuleOptOverrideInitFuncNode *node_override = - (RuleOptOverrideInitFuncNode *)SnortAlloc(sizeof(RuleOptOverrideInitFuncNode)); - - if (rule_opt_override_init_funcs == NULL) - { - rule_opt_override_init_funcs = node_override; - } - else - { - RuleOptOverrideInitFuncNode *tmp = rule_opt_override_init_funcs; - RuleOptOverrideInitFuncNode *last; - - do - { - if (strcasecmp(tmp->keyword, opt_name) == 0) - { - free(node_override); - FatalError("RegisterRuleOption: Duplicate detection plugin keyword:" - " (%s) (%s)!\n", tmp->keyword, opt_name); - } - - last = tmp; - tmp = tmp->next; - - } while (tmp != NULL); - - last->next = node_override; - } - - node_override->keyword = SnortStrdup(opt_name); - node_override->type = opt_type; - node_override->func = override_init_func; - node_override->otn_handler = otn_handler; - } -} - -void RegisterOverrideKeyword(char *keyword, char *option, RuleOptOverrideFunc func) -{ - RuleOptOverrideInitFuncNode *node = rule_opt_override_init_funcs; - - while (node != NULL) - { - if (strcasecmp(node->keyword, keyword) == 0) - { - node->func(keyword, option, func); - break; - } - - node = node->next; - } -} - -/**************************************************************************** - * - * Function: DumpPlugIns() - * - * Purpose: Prints the keyword->function list - * - * Arguments: None. - * - * Returns: void function - * - ***************************************************************************/ -void DumpRuleOptions(void) -{ - RuleOptConfigFuncNode *node; - - node = rule_opt_config_funcs; - - LogMessage("-------------------------------------------------\n"); - LogMessage(" Keyword | Plugin Registered @\n"); - LogMessage("-------------------------------------------------\n"); - - while (node != NULL) - { - LogMessage("%-13s: %p\n", node->keyword, node->func); - node = node->next; - } - - LogMessage("-------------------------------------------------\n"); - LogMessage("\n"); -} - - -/**************************************************************************** - * - * Function: AddOptFuncToList(int (*func)(), OptTreeNode *) - * - * Purpose: Links the option detection module to the OTN - * - * Arguments: (*func)() => function pointer to the detection module - * otn => pointer to the current OptTreeNode - * - * Returns: void function - * - ***************************************************************************/ -OptFpList * AddOptFuncToList(RuleOptEvalFunc func, OptTreeNode *otn) -{ - OptFpList *ofp = (OptFpList *)SnortAlloc(sizeof(OptFpList)); - - DEBUG_WRAP(DebugMessage(DEBUG_CONFIGRULES,"Adding new rule to list\n");); - - /* if there are no nodes on the function list... */ - if (otn->opt_func == NULL) - { - otn->opt_func = ofp; - } - else - { - OptFpList *tmp = otn->opt_func; - - /* walk to the end of the list */ - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = ofp; - } - - DEBUG_WRAP(DebugMessage(DEBUG_CONFIGRULES,"Set OptTestFunc to %p\n", func);); - - ofp->OptTestFunc = func; - - return ofp; -} - -/**************************************************************************** - * - * Function: AddRspFuncToList(int (*func)(), OptTreeNode *) - * - * Purpose: Adds Response function to OTN - * - * Arguments: (*func)() => function pointer to the response module - * otn => pointer to the current OptTreeNode - * - * Returns: void function - * - ***************************************************************************/ -void AddRspFuncToList(ResponseFunc func, OptTreeNode *otn, void *params) -{ - RspFpList *rsp = (RspFpList *)SnortAlloc(sizeof(RspFpList)); - - DEBUG_WRAP(DebugMessage(DEBUG_CONFIGRULES,"Adding response to list\n");); - - /* if there are no nodes on the function list... */ - if (otn->rsp_func == NULL) - { - otn->rsp_func = rsp; - } - else - { - RspFpList *tmp = otn->rsp_func; - - /* walk to the end of the list */ - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = rsp; - } - - DEBUG_WRAP(DebugMessage(DEBUG_CONFIGRULES,"Set ResponseFunc to %p\n", func);); - - rsp->func = func; - rsp->params = params; -} - -void PostConfigInitPlugins(PluginSignalFuncNode *post_config_funcs) -{ - while (post_config_funcs != NULL) - { - post_config_funcs->func(0, post_config_funcs->arg); - post_config_funcs = post_config_funcs->next; - } -} - -void FreeRuleOptConfigFuncs(RuleOptConfigFuncNode *head) -{ - - while (head != NULL) - { - RuleOptConfigFuncNode *tmp = head; - - head = head->next; - - if (tmp->keyword != NULL) - free(tmp->keyword); - - free(tmp); - } -} - -void FreeRuleOptOverrideInitFuncs(RuleOptOverrideInitFuncNode *head) -{ - - while (head != NULL) - { - RuleOptOverrideInitFuncNode *tmp = head; - - head = head->next; - - if (tmp->keyword != NULL) - free(tmp->keyword); - - free(tmp); - } -} - -void FreePluginSigFuncs(PluginSignalFuncNode *head) -{ - while (head != NULL) - { - PluginSignalFuncNode *tmp = head; - - head = head->next; - - /* don't free sig->arg, that's free'd by the CleanExit/Restart func */ - free(tmp); - } -} - - -/************************** Preprocessor Plugin API ***************************/ -static void AddFuncToPreprocSignalList(PreprocSignalFunc, void *, - PreprocSignalFuncNode **, uint16_t, uint32_t); - - -void RegisterPreprocessors(void) -{ - LogMessage("Initializing Preprocessors!\n"); - - SetupARPspoof(); - SetupFrag3(); - SetupStream5(); - SetupRpcDecode(); - SetupBo(); - SetupHttpInspect(); - SetupPerfMonitor(); - SetupSfPortscan(); -} - -/**************************************************************************** - * - * Function: RegisterPreprocessor(char *, void (*)(char *)) - * - * Purpose: Associates a preprocessor statement with its function. - * - * Arguments: keyword => The option keyword to associate with the - * preprocessor - * *func => function pointer to the handler - * - * Returns: void function - * - ***************************************************************************/ -#ifndef SNORT_RELOAD -void RegisterPreprocessor(char *keyword, PreprocConfigFunc func) -#else -void RegisterPreprocessor(char *keyword, PreprocConfigFunc func, - PreprocReloadFunc rfunc, PreprocReloadSwapFunc sfunc, - PreprocReloadSwapFreeFunc ffunc) -#endif -{ - PreprocConfigFuncNode *node = - (PreprocConfigFuncNode *)SnortAlloc(sizeof(PreprocConfigFuncNode)); - - DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"Registering keyword:preproc => %s:%p\n", keyword, func);); - - if (preproc_config_funcs == NULL) - { - preproc_config_funcs = node; - } - else - { - PreprocConfigFuncNode *tmp = preproc_config_funcs; - PreprocConfigFuncNode *last; - - do - { - if (strcasecmp(tmp->keyword, keyword) == 0) - { - free(node); - FatalError("Duplicate preprocessor keyword: %s.\n", keyword); - } - - last = tmp; - tmp = tmp->next; - - } while (tmp != NULL); - - last->next = node; - } - - node->keyword = SnortStrdup(keyword); - node->config_func = func; - -#ifdef SNORT_RELOAD - node->reload_func = rfunc; - node->reload_swap_func = sfunc; - node->reload_swap_free_func = ffunc; -#endif -} - -PreprocConfigFuncNode * GetPreprocConfig(char *keyword) -{ - PreprocConfigFuncNode *head = preproc_config_funcs; - - if (keyword == NULL) - return NULL; - - while (head != NULL) - { - if (strcasecmp(head->keyword, keyword) == 0) - return head; - - head = head->next; - } - - return NULL; -} - -PreprocConfigFunc GetPreprocConfigFunc(char *keyword) -{ - PreprocConfigFuncNode *head = preproc_config_funcs; - - if (keyword == NULL) - return NULL; - - while (head != NULL) - { - if (strcasecmp(head->keyword, keyword) == 0) - return head->config_func; - - head = head->next; - } - - return NULL; -} - -/**************************************************************************** - * - * Function: RegisterPreprocStats(char *keyword, void (*func)(int)) - * - * Purpose: Registers a function for printing preprocessor final stats - * (or other if it has a use for printing final stats) - * - * Arguments: keyword => keyword (preprocessor) whose stats will print - * func => function pointer to the handler - * - * Returns: void function - * - ***************************************************************************/ -void RegisterPreprocStats(char *keyword, PreprocStatsFunc func) -{ - PreprocStatsFuncNode *node; - - DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"Registering final stats function: " - "preproc => %s:%p\n", keyword, func);); - - node = (PreprocStatsFuncNode *)SnortAlloc(sizeof(PreprocStatsFuncNode)); - - if (preproc_stats_funcs == NULL) - { - preproc_stats_funcs = node; - } - else - { - PreprocStatsFuncNode *tmp = preproc_stats_funcs; - PreprocStatsFuncNode *last; - - do - { - if (strcasecmp(tmp->keyword, keyword) == 0) - { - free(node); - FatalError("Duplicate preprocessor keyword: %s.\n", keyword); - } - - last = tmp; - tmp = tmp->next; - - } while (tmp != NULL); - - last->next = node; - } - - node->keyword = SnortStrdup(keyword); - node->func = func; -} - -/**************************************************************************** - * - * Function: DumpPreprocessors() - * - * Purpose: Prints the keyword->preprocess list - * - * Arguments: None. - * - * Returns: void function - * - ***************************************************************************/ -void DumpPreprocessors(void) -{ - PreprocConfigFuncNode *node = preproc_config_funcs; - - LogMessage("-------------------------------------------------\n"); - LogMessage(" Keyword | Preprocessor @ \n"); - LogMessage("-------------------------------------------------\n"); - - while (node != NULL) - { - LogMessage("%-13s: %p\n", node->keyword, node->config_func); - node = node->next; - } - - LogMessage("-------------------------------------------------\n\n"); -} - -int IsPreprocEnabled(uint32_t preproc_id) -{ - PreprocEvalFuncNode *node; - SnortConfig *sc = snort_conf_for_parsing; - tSfPolicyId policy_id = getParserPolicy(); - SnortPolicy *p; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config for parsing is NULL.\n", - __FILE__, __LINE__); - } - - p = sc->targeted_policies[policy_id]; - if (p == NULL) - return 0; - - for (node = p->preproc_eval_funcs; node != NULL; node = node->next) - { - if (node->preproc_id == preproc_id) - return 1; - } - - return 0; -} - -PreprocEvalFuncNode * AddFuncToPreprocList(PreprocEvalFunc func, uint16_t priority, - uint32_t preproc_id, uint32_t proto_mask) -{ - PreprocEvalFuncNode *node; - SnortConfig *sc = snort_conf_for_parsing; - tSfPolicyId policy_id = getParserPolicy(); - SnortPolicy *p; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config for parsing is NULL.\n", - __FILE__, __LINE__); - } - - p = sc->targeted_policies[policy_id]; - if (p == NULL) - return NULL; - - DEBUG_WRAP(DebugMessage(DEBUG_CONFIGRULES, - "Adding preprocessor function ID %d/bit %d/pri %d to list\n", - preproc_id, p->num_preprocs, priority);); - - node = (PreprocEvalFuncNode *)SnortAlloc(sizeof(PreprocEvalFuncNode)); - - if (p->preproc_eval_funcs == NULL) - { - p->preproc_eval_funcs = node; - } - else - { - PreprocEvalFuncNode *tmp = p->preproc_eval_funcs; - PreprocEvalFuncNode *last = NULL; - - do - { - if (tmp->preproc_id == preproc_id) - { - free(node); - FatalError("Preprocessor already registered with ID %d\n", - preproc_id); - } - - /* Insert higher priority preprocessors first. Lower priority - * number means higher priority */ - if (priority < tmp->priority) - break; - - last = tmp; - tmp = tmp->next; - - } while (tmp != NULL); - - /* Priority higher than first item in list */ - if (last == NULL) - { - node->next = tmp; - p->preproc_eval_funcs = node; - } - else - { - node->next = tmp; - last->next = node; - } - } - - node->func = func; - node->priority = priority; - node->preproc_id = preproc_id; - node->preproc_bit = (1 << preproc_id); - node->proto_mask = proto_mask; - - p->num_preprocs++; - p->preproc_proto_mask |= proto_mask; - p->preproc_bit_mask |= node->preproc_bit; - - return node; -} - -void AddFuncToPreprocPostConfigList(PreprocPostConfigFunc func, void *data) -{ - PreprocPostConfigFuncNode *node; - SnortConfig *sc = snort_conf_for_parsing; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config for parsing is NULL.\n", - __FILE__, __LINE__); - } - - node = (PreprocPostConfigFuncNode *)SnortAlloc(sizeof(PreprocPostConfigFuncNode)); - - if (sc->preproc_post_config_funcs == NULL) - { - sc->preproc_post_config_funcs = node; - } - else - { - PreprocPostConfigFuncNode *tmp = sc->preproc_post_config_funcs; - - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = node; - } - - node->data = data; - node->func = func; -} - -void PostConfigPreprocessors(SnortConfig *sc) -{ - PreprocPostConfigFuncNode *list; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config is NULL.\n", - __FILE__, __LINE__); - } - - snort_conf_for_parsing = sc; - - list = sc->preproc_post_config_funcs; - - for (; list != NULL; list = list->next) - { - if (list->func != NULL) - list->func(list->data); - } - - snort_conf_for_parsing = NULL; -} - -#ifdef SNORT_RELOAD -void SwapPreprocConfigurations(void) -{ - PreprocConfigFuncNode *node = preproc_config_funcs; - - for (; node != NULL; node = node->next) - { - if (node->reload_swap_func != NULL) - node->swap_free_data = node->reload_swap_func(); - } -} - -void FreeSwappedPreprocConfigurations(void) -{ - PreprocConfigFuncNode *node = preproc_config_funcs; - - for (; node != NULL; node = node->next) - { - if ((node->reload_swap_free_func != NULL) && - (node->swap_free_data != NULL)) - { - node->reload_swap_free_func(node->swap_free_data); - node->swap_free_data = NULL; - } - } -} - -void AddFuncToPreprocReloadVerifyList(PreprocReloadVerifyFunc func) -{ - PreprocReloadVerifyFuncNode *node; - SnortConfig *sc = snort_conf_for_parsing; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config for parsing is NULL.\n", - __FILE__, __LINE__); - } - - node = (PreprocReloadVerifyFuncNode *)SnortAlloc(sizeof(PreprocReloadVerifyFuncNode)); - - if (sc->preproc_reload_verify_funcs == NULL) - { - sc->preproc_reload_verify_funcs = node; - } - else - { - PreprocReloadVerifyFuncNode *tmp = sc->preproc_reload_verify_funcs; - - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = node; - } - - node->func = func; -} - -void FreePreprocReloadVerifyFuncList(PreprocReloadVerifyFuncNode *head) -{ - while (head != NULL) - { - PreprocReloadVerifyFuncNode *tmp = head; - - head = head->next; - free(tmp); - } -} -#endif - -void AddFuncToConfigCheckList(PreprocCheckConfigFunc func) -{ - PreprocCheckConfigFuncNode *node; - SnortConfig *sc = snort_conf_for_parsing; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config for parsing is NULL.\n", - __FILE__, __LINE__); - } - - node = (PreprocCheckConfigFuncNode *)SnortAlloc(sizeof(PreprocCheckConfigFuncNode)); - - if (sc->preproc_config_check_funcs == NULL) - { - sc->preproc_config_check_funcs = node; - } - else - { - PreprocCheckConfigFuncNode *tmp = sc->preproc_config_check_funcs; - - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = node; - } - - node->func = func; -} - -/* functions to aid in cleaning up after plugins */ -void AddFuncToPreprocRestartList(PreprocSignalFunc func, void *arg, - uint16_t priority, uint32_t preproc_id) -{ - AddFuncToPreprocSignalList(func, arg, &preproc_restart_funcs, priority, preproc_id); -} - -void AddFuncToPreprocCleanExitList(PreprocSignalFunc func, void *arg, - uint16_t priority, uint32_t preproc_id) -{ - AddFuncToPreprocSignalList(func, arg, &preproc_clean_exit_funcs, priority, preproc_id); -} - -void AddFuncToPreprocShutdownList(PreprocSignalFunc func, void *arg, - uint16_t priority, uint32_t preproc_id) -{ - AddFuncToPreprocSignalList(func, arg, &preproc_shutdown_funcs, priority, preproc_id); -} - -void AddFuncToPreprocResetList(PreprocSignalFunc func, void *arg, - uint16_t priority, uint32_t preproc_id) -{ - AddFuncToPreprocSignalList(func, arg, &preproc_reset_funcs, priority, preproc_id); -} - -void AddFuncToPreprocResetStatsList(PreprocSignalFunc func, void *arg, - uint16_t priority, uint32_t preproc_id) -{ - AddFuncToPreprocSignalList(func, arg, &preproc_reset_stats_funcs, priority, preproc_id); -} - -static void AddFuncToPreprocSignalList(PreprocSignalFunc func, void *arg, - PreprocSignalFuncNode **list, - uint16_t priority, uint32_t preproc_id) -{ - PreprocSignalFuncNode *node; - - if (list == NULL) - return; - - node = (PreprocSignalFuncNode *)SnortAlloc(sizeof(PreprocSignalFuncNode)); - - if (*list == NULL) - { - *list = node; - } - else - { - PreprocSignalFuncNode *tmp = *list; - PreprocSignalFuncNode *last = NULL; - - do - { - /* Insert higher priority stuff first. Lower priority - * number means higher priority */ - if (priority < tmp->priority) - break; - - last = tmp; - tmp = tmp->next; - - } while (tmp != NULL); - - /* Priority higher than first item in list */ - if (last == NULL) - { - node->next = tmp; - *list = node; - } - else - { - node->next = tmp; - last->next = node; - } - } - - node->func = func; - node->arg = arg; - node->preproc_id = preproc_id; - node->priority = priority; -} - -void AddFuncToPreprocReassemblyPktList(PreprocReassemblyPktFunc func, uint32_t preproc_id) -{ - PreprocReassemblyPktFuncNode *node; - SnortConfig *sc = snort_conf_for_parsing; - tSfPolicyId policy_id = getParserPolicy(); - SnortPolicy *p; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config for parsing is NULL.\n", - __FILE__, __LINE__); - } - - p = sc->targeted_policies[policy_id]; - if (p == NULL) - return; - - node = (PreprocReassemblyPktFuncNode *)SnortAlloc(sizeof(PreprocReassemblyPktFuncNode)); - - if (p->preproc_reassembly_pkt_funcs == NULL) - { - p->preproc_reassembly_pkt_funcs = node; - } - else - { - PreprocReassemblyPktFuncNode *tmp = p->preproc_reassembly_pkt_funcs; - - /* just insert at front of list */ - p->preproc_reassembly_pkt_funcs = node; - node->next = tmp; - } - - node->func = func; - node->preproc_id = preproc_id; -} - -void FreePreprocConfigFuncs(void) -{ - PreprocConfigFuncNode *head = preproc_config_funcs; - PreprocConfigFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - if (head->keyword != NULL) - free(head->keyword); - free(head); - head = tmp; - } -} - -void FreePreprocCheckConfigFuncs(PreprocCheckConfigFuncNode *head) -{ - PreprocCheckConfigFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - free(head); - head = tmp; - } -} - -void FreePreprocPostConfigFuncs(PreprocPostConfigFuncNode *head) -{ - PreprocPostConfigFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - free(head); - head = tmp; - } -} - -void FreePreprocStatsFuncs(PreprocStatsFuncNode *head) -{ - PreprocStatsFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - if (head->keyword != NULL) - free(head->keyword); - free(head); - head = tmp; - } -} - -void FreePreprocEvalFuncs(PreprocEvalFuncNode *head) -{ - PreprocEvalFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - //if (head->context) - // free(head->context); - free(head); - head = tmp; - } -} - -void FreePreprocReassemblyPktFuncs(PreprocReassemblyPktFuncNode *head) -{ - PreprocReassemblyPktFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - free(head); - head = tmp; - } -} - -void FreePreprocSigFuncs(PreprocSignalFuncNode *head) -{ - PreprocSignalFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - /* don't free sig->arg, that's free'd by the CleanExit/Restart func */ - free(head); - head = tmp; - } -} - -void CheckPreprocessorsConfig(SnortConfig *sc) -{ - PreprocCheckConfigFuncNode *idx; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config is NULL.\n", - __FILE__, __LINE__); - } - - snort_conf_for_parsing = sc; - - idx = sc->preproc_config_check_funcs; - - LogMessage("Verifying Preprocessor Configurations!\n"); - - while(idx != NULL) - { - idx->func(); - idx = idx->next; - } - - snort_conf_for_parsing = NULL; -} - -#ifdef SNORT_RELOAD -int VerifyReloadedPreprocessors(SnortConfig *sc) -{ - PreprocReloadVerifyFuncNode *node; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config is NULL.\n", - __FILE__, __LINE__); - } - - snort_conf_for_parsing = sc; - - node = sc->preproc_reload_verify_funcs; - while (node != NULL) - { - if (node->func != NULL) - { - if (node->func() == -1) - return -1; - } - - node = node->next; - } - - snort_conf_for_parsing = NULL; - - return 0; -} -#endif - - -/***************************** Output Plugin API *****************************/ -extern OutputConfigFuncNode *output_config_funcs; - -static void AppendOutputFuncList(OutputFunc, void *, OutputFuncNode **); - -void RegisterOutputPlugins(void) -{ - LogMessage("Initializing Output Plugins!\n"); - - AlertSyslogSetup(); - LogTcpdumpSetup(); - DatabaseSetup(); - AlertFastSetup(); - AlertFullSetup(); - AlertPfSetup(); -#ifndef WIN32 - /* Win32 doesn't support AF_UNIX sockets */ - AlertUnixSockSetup(); -#endif /* !WIN32 */ - AlertCSVSetup(); - LogNullSetup(); - UnifiedSetup(); - Unified2Setup(); - LogAsciiSetup(); - -#ifdef ARUBA - AlertArubaActionSetup(); -#endif - -#ifdef LINUX - /* This uses linux only capabilities */ - AlertSFSocket_Setup(); -#endif - -#ifdef HAVE_LIBPRELUDE - AlertPreludeSetup(); -#endif - - AlertTestSetup(); -} - -/**************************************************************************** - * - * Function: RegisterOutputPlugin(char *, void (*func)(Packet *, u_char *)) - * - * Purpose: Associates an output statement with its function. - * - * Arguments: keyword => The output keyword to associate with the - * output processor - * type => alert or log types - * *func => function pointer to the handler - * - * Returns: void function - * - ***************************************************************************/ -void RegisterOutputPlugin(char *keyword, int type_flags, OutputConfigFunc func) -{ - OutputConfigFuncNode *node = (OutputConfigFuncNode *)SnortAlloc(sizeof(OutputConfigFuncNode)); - - DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"Registering keyword:output => %s:%p\n", - keyword, func);); - - if (output_config_funcs == NULL) - { - output_config_funcs = node; - } - else - { - OutputConfigFuncNode *tmp = output_config_funcs; - OutputConfigFuncNode *last; - - do - { - if (strcasecmp(tmp->keyword, keyword) == 0) - { - free(node); - FatalError("Duplicate output keyword: %s\n", keyword); - } - - last = tmp; - tmp = tmp->next; - - } while (tmp != NULL); - - last->next = node; - } - - node->keyword = SnortStrdup(keyword); - node->func = func; - node->output_type_flags = type_flags; -} - -OutputConfigFunc GetOutputConfigFunc(char *keyword) -{ - OutputConfigFuncNode *head = output_config_funcs; - - if (keyword == NULL) - return NULL; - - while (head != NULL) - { - if (strcasecmp(head->keyword, keyword) == 0) - return head->func; - - head = head->next; - } - - return NULL; -} - -int GetOutputTypeFlags(char *keyword) -{ - OutputConfigFuncNode *head = output_config_funcs; - - if (keyword == NULL) - return 0; - - while (head != NULL) - { - if (strcasecmp(head->keyword, keyword) == 0) - return head->output_type_flags; - - head = head->next; - } - - return 0; -} - -void FreeOutputConfigFuncs(void) -{ - OutputConfigFuncNode *head = output_config_funcs; - OutputConfigFuncNode *tmp; - - while (head != NULL) - { - tmp = head->next; - if (head->keyword != NULL) - free(head->keyword); - free(head); - head = tmp; - } -} - -void FreeOutputList(OutputFuncNode *list) -{ - while (list != NULL) - { - OutputFuncNode *tmp = list; - - list = list->next; - free(tmp); - } -} - -/**************************************************************************** - * - * Function: DumpOutputPlugins() - * - * Purpose: Prints the keyword->preprocess list - * - * Arguments: None. - * - * Returns: void function - * - ***************************************************************************/ -void DumpOutputPlugins(void) -{ - OutputConfigFuncNode *idx = output_config_funcs; - - LogMessage("-------------------------------------------------\n"); - LogMessage(" Keyword | Output @ \n"); - LogMessage("-------------------------------------------------\n"); - while(idx != NULL) - { - LogMessage("%-13s: %p\n", idx->keyword, idx->func); - idx = idx->next; - } - LogMessage("-------------------------------------------------\n\n"); -} - -void AddFuncToOutputList(OutputFunc func, OutputType type, void *arg) -{ - switch (type) - { - case OUTPUT_TYPE__ALERT: - if (head_tmp != NULL) - AppendOutputFuncList(func, arg, &head_tmp->AlertList); - else - AppendOutputFuncList(func, arg, &AlertList); - - break; - - case OUTPUT_TYPE__LOG: - if (head_tmp != NULL) - AppendOutputFuncList(func, arg, &head_tmp->LogList); - else - AppendOutputFuncList(func, arg, &LogList); - - break; - - default: - /* just to be error-prone */ - FatalError("Unknown output type: %i. Possible bug, please " - "report.\n", type); - } -} - -void AppendOutputFuncList(OutputFunc func, void *arg, OutputFuncNode **list) -{ - OutputFuncNode *node; - - if (list == NULL) - return; - - node = (OutputFuncNode *)SnortAlloc(sizeof(OutputFuncNode)); - - if (*list == NULL) - { - *list = node; - } - else - { - OutputFuncNode *tmp = *list; - - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = node; - } - - node->func = func; - node->arg = arg; -} - - -/************************** Miscellaneous Functions **************************/ - -/* functions to aid in cleaning up after plugins - * Used for both rule options and output. Preprocessors have their own */ -void AddFuncToRestartList(PluginSignalFunc func, void *arg) -{ - AddFuncToSignalList(func, arg, &plugin_restart_funcs); -} - -void AddFuncToCleanExitList(PluginSignalFunc func, void *arg) -{ - AddFuncToSignalList(func, arg, &plugin_clean_exit_funcs); -} - -void AddFuncToShutdownList(PluginSignalFunc func, void *arg) -{ - AddFuncToSignalList(func, arg, &plugin_shutdown_funcs); -} - -void AddFuncToPostConfigList(PluginSignalFunc func, void *arg) -{ - SnortConfig *sc = snort_conf_for_parsing; - - if (sc == NULL) - { - FatalError("%s(%d) Snort config for parsing is NULL.\n", - __FILE__, __LINE__); - } - - AddFuncToSignalList(func, arg, &sc->plugin_post_config_funcs); -} - -void AddFuncToSignalList(PluginSignalFunc func, void *arg, PluginSignalFuncNode **list) -{ - PluginSignalFuncNode *node; - - if (list == NULL) - return; - - node = (PluginSignalFuncNode *)SnortAlloc(sizeof(PluginSignalFuncNode)); - - if (*list == NULL) - { - *list = node; - } - else - { - PluginSignalFuncNode *tmp = *list; - - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = node; - } - - node->func = func; - node->arg = arg; -} - -void AddFuncToRuleOptParseCleanupList(RuleOptParseCleanupFunc func) -{ - RuleOptParseCleanupNode *node = - (RuleOptParseCleanupNode *)SnortAlloc(sizeof(RuleOptParseCleanupNode)); - - if (rule_opt_parse_cleanup_list == NULL) - { - rule_opt_parse_cleanup_list = node; - } - else - { - RuleOptParseCleanupNode *tmp = rule_opt_parse_cleanup_list; - - while (tmp->next != NULL) - tmp = tmp->next; - - tmp->next = node; - } - - node->func = func; -} - -void RuleOptParseCleanup(void) -{ - RuleOptParseCleanupNode *list = rule_opt_parse_cleanup_list; - - for (; list != NULL; list = list->next) - { - if (list->func != NULL) - list->func(); - } -} - -void FreeRuleOptParseCleanupList(RuleOptParseCleanupNode *head) -{ - while (head != NULL) - { - RuleOptParseCleanupNode *tmp = head; - - head = head->next; - free(tmp); - } -} - - diff --git a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/util.c b/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/util.c deleted file mode 100644 index b2d3b38b..00000000 --- a/config/snort-dev/snortsam-package-code/patches/spoink_patch/2.8.6/util.c +++ /dev/null @@ -1,3233 +0,0 @@ -/* $Id$ */ -/* -** Copyright (C) 2002-2010 Sourcefire, Inc. -** Copyright (C) 2002 Martin Roesch -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License Version 2 as -** published by the Free Software Foundation. You may not use, modify or -** distribute this program under any other version of the GNU General -** Public License. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#ifndef WIN32 -#include -#include -#include -#include -#include -#include -#endif /* !WIN32 */ - -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#include -#include -#endif /* !WIN32 */ - -#include - -#ifdef HAVE_STRINGS_H -#include -#endif - -#ifdef ZLIB -#include -#endif - -#include "snort.h" -#include "mstring.h" -#include "debug.h" -#include "util.h" -#include "parser.h" -#include "inline.h" -#include "build.h" -#include "plugbase.h" -#include "sf_types.h" -#include "sflsq.h" -#include "ipv6_port.h" - -#include "pcre.h" - -#include "mpse.h" - -#include "ppm.h" - -#ifdef TARGET_BASED -#include "sftarget_reader.h" -#endif - -#ifdef WIN32 -#include "win32/WIN32-Code/name.h" -#endif - -#include "stream5_common.h" - -#ifdef PATH_MAX -#define PATH_MAX_UTIL PATH_MAX -#else -#define PATH_MAX_UTIL 1024 -#endif /* PATH_MAX */ - -extern Stream5Stats s5stats; -extern int datalink; -extern pcap_t *pcap_handle; -extern PreprocStatsFuncNode *preproc_stats_funcs; - -static PcapPktStats pkt_stats; - -/* - * you may need to adjust this on the systems which don't have standard - * paths defined - */ -#ifndef _PATH_VARRUN -static char _PATH_VARRUN[STD_BUF]; -#endif - - -#ifdef NAME_MAX -#define NAME_MAX_UTIL NAME_MAX -#else -#define NAME_MAX_UTIL 256 -#endif /* NAME_MAX */ - -#define FILE_MAX_UTIL (PATH_MAX_UTIL + NAME_MAX_UTIL) - -/**************************************************************************** - * - * Function: CalcPct(uint64_t, uint64_t) - * - * Purpose: Calculate the percentage of a value compared to a total - * - * Arguments: cnt => the numerator in the equation - * total => the denominator in the calculation - * - * Returns: pct -> the percentage of cnt to value - * - ****************************************************************************/ -double CalcPct(uint64_t cnt, uint64_t total) -{ - double pct = 0.0; - - if (total == 0.0) - { - pct = (double)cnt; - } - else - { - pct = (double)cnt / (double)total; - } - - pct *= 100.0; - - return pct; -} - - -/**************************************************************************** - * - * Function: DisplayBanner() - * - * Purpose: Show valuable proggie info - * - * Arguments: None. - * - * Returns: 0 all the time - * - ****************************************************************************/ -int DisplayBanner(void) -{ - const char * info; - const char * pcre_ver; -#ifdef ZLIB - const char * zlib_ver; -#endif - - info = getenv("HOSTTYPE"); - if( !info ) - { - info=""; - } - - pcre_ver = pcre_version(); -#ifdef ZLIB - zlib_ver = zlib_version; -#endif - - LogMessage("\n"); - LogMessage(" ,,_ -*> Snort! <*-\n"); - LogMessage(" o\" )~ Version %s%s%s (Build %s) %s %s\n", - VERSION, -#ifdef SUP_IP6 - " IPv6", -#else - "", -#endif -#ifdef GRE - " GRE", -#else - "", -#endif - BUILD, -#ifdef GIDS - "inline", -#else - "", -#endif - info); - LogMessage(" '''' By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team\n"); - LogMessage(" Copyright (C) 1998-2010 Sourcefire, Inc., et al.\n"); - LogMessage(" Using PCRE version: %s\n", pcre_ver); -#ifdef ZLIB - LogMessage(" Using ZLIB version: %s\n", zlib_ver); -#endif - LogMessage("\n"); - LogMessage(" ___ Built Date for Snort on Pfsense 2.0 is May 25 2010.\n"); - LogMessage(" ___/ f \\ Orion IPS Output Code Copyright (C) 2009-2010 Robert Zelaya.\n"); - LogMessage("/ p \\___/Sense\n"); - LogMessage("\\___/ \\\n"); - LogMessage(" \\___/ Using Snort.org dynamic plugins and Orion IPS source.\n"); - LogMessage("\n"); - - return 0; -} - - - -/**************************************************************************** - * - * Function: ts_print(register const struct, char *) - * - * Purpose: Generate a time stamp and stuff it in a buffer. This one has - * millisecond precision. Oh yeah, I ripped this code off from - * TCPdump, props to those guys. - * - * Arguments: timeval => clock struct coming out of libpcap - * timebuf => buffer to stuff timestamp into - * - * Returns: void function - * - ****************************************************************************/ -void ts_print(register const struct timeval *tvp, char *timebuf) -{ - register int s; - int localzone; - time_t Time; - struct timeval tv; - struct timezone tz; - struct tm *lt; /* place to stick the adjusted clock data */ - - /* if null was passed, we use current time */ - if(!tvp) - { - /* manual page (for linux) says tz is never used, so.. */ - bzero((char *) &tz, sizeof(tz)); - gettimeofday(&tv, &tz); - tvp = &tv; - } - - localzone = snort_conf->thiszone; - - /* - ** If we're doing UTC, then make sure that the timezone is correct. - */ - if (ScOutputUseUtc()) - localzone = 0; - - s = (tvp->tv_sec + localzone) % 86400; - Time = (tvp->tv_sec + localzone) - s; - - lt = gmtime(&Time); - - if (ScOutputIncludeYear()) - { - (void) SnortSnprintf(timebuf, TIMEBUF_SIZE, - "%02d/%02d/%02d-%02d:%02d:%02d.%06u ", - lt->tm_mon + 1, lt->tm_mday, lt->tm_year - 100, - s / 3600, (s % 3600) / 60, s % 60, - (u_int) tvp->tv_usec); - } - else - { - (void) SnortSnprintf(timebuf, TIMEBUF_SIZE, - "%02d/%02d-%02d:%02d:%02d.%06u ", lt->tm_mon + 1, - lt->tm_mday, s / 3600, (s % 3600) / 60, s % 60, - (u_int) tvp->tv_usec); - } -} - - - -/**************************************************************************** - * - * Function: gmt2local(time_t) - * - * Purpose: Figures out how to adjust the current clock reading based on the - * timezone you're in. Ripped off from TCPdump. - * - * Arguments: time_t => offset from GMT - * - * Returns: offset seconds from GMT - * - ****************************************************************************/ -int gmt2local(time_t t) -{ - register int dt, dir; - register struct tm *gmt, *loc; - struct tm sgmt; - - if(t == 0) - t = time(NULL); - - gmt = &sgmt; - *gmt = *gmtime(&t); - loc = localtime(&t); - - dt = (loc->tm_hour - gmt->tm_hour) * 60 * 60 + - (loc->tm_min - gmt->tm_min) * 60; - - dir = loc->tm_year - gmt->tm_year; - - if(dir == 0) - dir = loc->tm_yday - gmt->tm_yday; - - dt += dir * 24 * 60 * 60; - - return(dt); -} - - - - -/**************************************************************************** - * - * Function: copy_argv(u_char **) - * - * Purpose: Copies a 2D array (like argv) into a flat string. Stolen from - * TCPDump. - * - * Arguments: argv => 2D array to flatten - * - * Returns: Pointer to the flat string - * - ****************************************************************************/ -char *copy_argv(char **argv) -{ - char **p; - u_int len = 0; - char *buf; - char *src, *dst; - //void ftlerr(char *,...); - - p = argv; - if(*p == 0) - return 0; - - while(*p) - len += strlen(*p++) + 1; - - buf = (char *) calloc(1,len); - - if(buf == NULL) - { - FatalError("calloc() failed: %s\n", strerror(errno)); - } - p = argv; - dst = buf; - - while((src = *p++) != NULL) - { - while((*dst++ = *src++) != '\0'); - dst[-1] = ' '; - } - - dst[-1] = '\0'; - - /* Check for an empty string */ - dst = buf; - while (isspace((int)*dst)) - dst++; - - if (strlen(dst) == 0) - { - free(buf); - buf = NULL; - } - - return buf; -} - - -/**************************************************************************** - * - * Function: strip(char *) - * - * Purpose: Strips a data buffer of CR/LF/TABs. Replaces CR/LF's with - * NULL and TABs with spaces. - * - * Arguments: data => ptr to the data buf to be stripped - * - * Returns: void - * - * 3/7/07 - changed to return void - use strlen to get size of string - * - * Note that this function will turn all '\n' and '\r' into null chars - * so, e.g. 'Hello\nWorld\n' => 'Hello\x00World\x00' - * note that the string is now just 'Hello' and the length is shortened - * by more than just an ending '\n' or '\r' - ****************************************************************************/ -void strip(char *data) -{ - int size; - char *end; - char *idx; - - idx = data; - end = data + strlen(data); - size = end - idx; - - while(idx != end) - { - if((*idx == '\n') || - (*idx == '\r')) - { - *idx = 0; - size--; - } - if(*idx == '\t') - { - *idx = ' '; - } - idx++; - } -} - -/* - * Function: ErrorMessage(const char *, ...) - * - * Purpose: Print a message to stderr. - * - * Arguments: format => the formatted error string to print out - * ... => format commands/fillers - * - * Returns: void function - */ -void ErrorMessage(const char *format,...) -{ - char buf[STD_BUF+1]; - va_list ap; - - if (snort_conf == NULL) - return; - - va_start(ap, format); - - if (ScDaemonMode() || ScLogSyslog()) - { - vsnprintf(buf, STD_BUF, format, ap); - buf[STD_BUF] = '\0'; - syslog(LOG_CONS | LOG_DAEMON | LOG_ERR, "%s", buf); - } - else - { - vfprintf(stderr, format, ap); - } - va_end(ap); -} - -/* - * Function: LogMessage(const char *, ...) - * - * Purpose: Print a message to stderr or with logfacility. - * - * Arguments: format => the formatted error string to print out - * ... => format commands/fillers - * - * Returns: void function - */ -void LogMessage(const char *format,...) -{ - char buf[STD_BUF+1]; - va_list ap; - - if (snort_conf == NULL) - return; - - if (ScLogQuiet() && !ScDaemonMode() && !ScLogSyslog()) - return; - - va_start(ap, format); - - if (ScDaemonMode() || ScLogSyslog()) - { - vsnprintf(buf, STD_BUF, format, ap); - buf[STD_BUF] = '\0'; - syslog(LOG_DAEMON | LOG_NOTICE, "%s", buf); - } - else - { - vfprintf(stderr, format, ap); - } - - va_end(ap); -} - -/* - * Function: CreateApplicationEventLogEntry(const char *) - * - * Purpose: Add an entry to the Win32 "Application" EventLog - * - * Arguments: szMessage => the formatted error string to print out - * - * Returns: void function - */ -#if defined(WIN32) && defined(ENABLE_WIN32_SERVICE) -void CreateApplicationEventLogEntry(const char *msg) -{ - HANDLE hEventLog; - char* pEventSourceName = "SnortService"; - - /* prepare to write to Application log on local host - * with Event Source of SnortService - */ - AddEventSource(pEventSourceName); - hEventLog = RegisterEventSource(NULL, pEventSourceName); - if (hEventLog == NULL) - { - /* Could not register the event source. */ - return; - } - - if (!ReportEvent(hEventLog, /* event log handle */ - EVENTLOG_ERROR_TYPE, /* event type */ - 0, /* category zero */ - EVMSG_SIMPLE, /* event identifier */ - NULL, /* no user security identifier */ - 1, /* one substitution string */ - 0, /* no data */ - &msg, /* pointer to array of strings */ - NULL)) /* pointer to data */ - { - /* Could not report the event. */ - } - - DeregisterEventSource(hEventLog); -} -#endif /* WIN32 && ENABLE_WIN32_SERVICE */ - - -/* - * Function: FatalError(const char *, ...) - * - * Purpose: When a fatal error occurs, this function prints the error message - * and cleanly shuts down the program - * - * Arguments: format => the formatted error string to print out - * ... => format commands/fillers - * - * Returns: void function - */ -NORETURN void FatalError(const char *format,...) -{ - char buf[STD_BUF+1]; - va_list ap; - - va_start(ap, format); - vsnprintf(buf, STD_BUF, format, ap); - va_end(ap); - - buf[STD_BUF] = '\0'; - - if ((snort_conf != NULL) && (ScDaemonMode() || ScLogSyslog())) - { - syslog(LOG_CONS | LOG_DAEMON | LOG_ERR, "FATAL ERROR: %s", buf); - } - else - { - fprintf(stderr, "ERROR: %s", buf); - fprintf(stderr,"Fatal Error, Quitting..\n"); -#if defined(WIN32) && defined(ENABLE_WIN32_SERVICE) - CreateApplicationEventLogEntry(buf); -#endif - } - - exit(1); -} - - -/**************************************************************************** - * - * Function: CreatePidFile(char *) - * - * Purpose: Creates a PID file - * - * Arguments: Interface opened. - * - * Returns: void function - * - ****************************************************************************/ -static FILE *pid_lockfile = NULL; -static FILE *pid_file = NULL; -void CreatePidFile(char *intf) -{ - struct stat pt; - int pid = (int) getpid(); -#ifdef WIN32 - char dir[STD_BUF + 1]; -#endif - - if (!ScReadMode()) - { - LogMessage("Checking PID path...\n"); - - if (strlen(snort_conf->pid_path) != 0) - { - if((stat(snort_conf->pid_path, &pt) == -1) || - !S_ISDIR(pt.st_mode) || access(snort_conf->pid_path, W_OK) == -1) - { -#ifndef WIN32 - /* Save this just in case it's reset with LogMessage call */ - int err = errno; - - LogMessage("WARNING: %s is invalid, trying " - "/var/run...\n", snort_conf->pid_path); - if (err) - { - LogMessage("Previous Error, errno=%d, (%s)\n", - err, strerror(err) == NULL ? "Unknown error" : strerror(err)); - } -#endif - memset(snort_conf->pid_path, 0, sizeof(snort_conf->pid_path)); - } - else - { - LogMessage("PID path stat checked out ok, " - "PID path set to %s\n", snort_conf->pid_path); - } - } - - if (strlen(snort_conf->pid_path) == 0) - { -#ifndef _PATH_VARRUN -# ifndef WIN32 - SnortStrncpy(_PATH_VARRUN, "/var/run/", sizeof(_PATH_VARRUN)); -# else - if (GetCurrentDirectory(sizeof(dir) - 1, dir)) - SnortStrncpy(_PATH_VARRUN, dir, sizeof(_PATH_VARRUN)); -# endif /* WIN32 */ -#else - LogMessage("PATH_VARRUN is set to %s on this operating " - "system\n", _PATH_VARRUN); -#endif /* _PATH_VARRUN */ - - stat(_PATH_VARRUN, &pt); - - if(!S_ISDIR(pt.st_mode) || access(_PATH_VARRUN, W_OK) == -1) - { - LogMessage("WARNING: _PATH_VARRUN is invalid, trying " - "/var/log...\n"); - SnortStrncpy(snort_conf->pid_path, "/var/log/", sizeof(snort_conf->pid_path)); - stat(snort_conf->pid_path, &pt); - - if(!S_ISDIR(pt.st_mode) || access(snort_conf->pid_path, W_OK) == -1) - { - LogMessage("WARNING: %s is invalid, logging Snort " - "PID path to log directory (%s)\n", snort_conf->pid_path, - snort_conf->log_dir); - CheckLogDir(); - SnortSnprintf(snort_conf->pid_path, sizeof(snort_conf->pid_path), - "%s/", snort_conf->log_dir); - } - } - else - { - LogMessage("PID path stat checked out ok, " - "PID path set to %s\n", _PATH_VARRUN); - SnortStrncpy(snort_conf->pid_path, _PATH_VARRUN, sizeof(snort_conf->pid_path)); - } - } - } - - if(intf == NULL || strlen(snort_conf->pid_path) == 0) - { - /* snort_conf->pid_path should have some value by now - * so let us just be sane. */ - FatalError("CreatePidFile() failed to lookup interface or pid_path is unknown!\n"); - } - - SnortSnprintf(snort_conf->pid_filename, sizeof(snort_conf->pid_filename), - "%s/snort_%s%s.pid", snort_conf->pid_path, intf, snort_conf->pidfile_suffix); - -#ifndef WIN32 - if (!ScNoLockPidFile()) - { - char pid_lockfilename[STD_BUF+1]; - int lock_fd; - - /* First, lock the PID file */ - SnortSnprintf(pid_lockfilename, STD_BUF, "%s.lck", snort_conf->pid_filename); - pid_lockfile = fopen(pid_lockfilename, "w"); - - if (pid_lockfile) - { - struct flock lock; - lock_fd = fileno(pid_lockfile); - - lock.l_type = F_WRLCK; - lock.l_whence = SEEK_SET; - lock.l_start = 0; - lock.l_len = 0; - - if (fcntl(lock_fd, F_SETLK, &lock) == -1) - { - ClosePidFile(); - FatalError("Failed to Lock PID File \"%s\" for PID \"%d\"\n", snort_conf->pid_filename, pid); - } - } - } -#endif - - /* Okay, were able to lock PID file, now open and write PID */ - pid_file = fopen(snort_conf->pid_filename, "w"); - if(pid_file) - { - LogMessage("Writing PID \"%d\" to file \"%s\"\n", pid, snort_conf->pid_filename); - fprintf(pid_file, "%d\n", pid); - fflush(pid_file); - } - else - { - ErrorMessage("Failed to create pid file %s", snort_conf->pid_filename); - snort_conf->pid_filename[0] = 0; - } -} - -/**************************************************************************** - * - * Function: ClosePidFile(char *) - * - * Purpose: Releases lock on a PID file - * - * Arguments: None - * - * Returns: void function - * - ****************************************************************************/ -void ClosePidFile(void) -{ - if (pid_file) - { - fclose(pid_file); - pid_file = NULL; - } - if (pid_lockfile) - { - fclose(pid_lockfile); - pid_lockfile = NULL; - } -} - -/**************************************************************************** - * - * Function: SetUidGid() - * - * Purpose: Sets safe UserID and GroupID if needed - * - * Arguments: none - * - * Returns: void function - * - ****************************************************************************/ -void SetUidGid(int user_id, int group_id) -{ -#ifndef WIN32 - - if ((group_id != -1) && (getgid() != (gid_t)group_id)) - { - if (!InlineModeSetPrivsAllowed()) - { - ErrorMessage("Cannot set uid and gid when running Snort in " - "inline mode.\n"); - return; - } - - if (setgid(group_id) < 0) - FatalError("Cannot set gid: %d\n", group_id); - - DEBUG_WRAP(DebugMessage(DEBUG_INIT, "Set gid to %d\n", group_id);); - } - - if ((user_id != -1) && (getuid() != (uid_t)user_id)) - { - struct passwd *pw = getpwuid(user_id); - - if (!InlineModeSetPrivsAllowed()) - { - ErrorMessage("Cannot set uid and gid when running Snort in " - "inline mode.\n"); - return; - } - - if (pw != NULL) - { - /* getpwuid and initgroups may use the same static buffers */ - char *username = SnortStrdup(pw->pw_name); - - if ((getuid() == 0) && (initgroups(username, group_id) < 0)) - { - free(username); - FatalError("Can not initgroups(%s,%d)", - username, group_id); - } - - free(username); - } - - /** just to be on a safe side... **/ - endgrent(); - endpwent(); - - if (setuid(user_id) < 0) - FatalError("Can not set uid: %d\n", user_id); - - DEBUG_WRAP(DebugMessage(DEBUG_INIT, "Set uid to %d\n", user_id);); - } -#endif /* WIN32 */ -} - -#ifdef TIMESTATS - -static IntervalStats istats = {0}; -time_t start_time; - -void InitTimeStats(void) -{ - start_time = time(NULL); -} - -void ResetTimeStats(void) -{ - memset(&istats, 0, sizeof(istats)); -} - -/* This function prints out stats based on a configurable time - * interval. It is an indication on how well snort is */ -/* processing packets, including types, drops, etc */ -void DropStatsPerTimeInterval(void) -{ - double per_sec, per_minute, per_hour; - uint64_t recv, drop; - uint64_t total = 0; - uint32_t timestats_interval = ScTimestatsInterval(); - -#ifdef PCAP_CLOSE - if (UpdatePcapPktStats(0) != -1) -#else - if (UpdatePcapPktStats() != -1) -#endif - { - recv = GetPcapPktStatsRecv(); - drop = GetPcapPktStatsDrop(); - - istats.recv = recv - istats.recv_total; - istats.recv_total = recv; - - istats.drop = drop - istats.drop_total; - istats.drop_total = drop; - - /* calculate received packets by type */ - istats.tcp = pc.tcp - istats.tcp_total; - istats.tcp_total = pc.tcp; - - istats.udp = pc.udp - istats.udp_total; - istats.udp_total = pc.udp; - - istats.icmp = pc.icmp - istats.icmp_total; - istats.icmp_total = pc.icmp; - - istats.arp = pc.arp - istats.arp_total; - istats.arp_total = pc.arp; - -#ifdef GRE - istats.ip4ip4 = pc.ip4ip4 - istats.ip4ip4_total; - istats.ip4ip4_total = pc.ip4ip4; - - istats.ip4ip6 = pc.ip4ip6 - istats.ip4ip6_total; - istats.ip4ip6_total = pc.ip4ip6; - - istats.ip6ip4 = pc.ip6ip4 - istats.ip6ip4_total; - istats.ip6ip4_total = pc.ip6ip4; - - istats.ip6ip6 = pc.ip6ip6 - istats.ip6ip6_total; - istats.ip6ip6_total = pc.ip6ip6; - - istats.gre = pc.gre - istats.gre_total; - istats.gre_total = pc.gre; - - istats.gre_ip = pc.gre_ip - istats.gre_ip_total; - istats.gre_ip_total = pc.gre_ip; - - istats.gre_eth = pc.gre_eth - istats.gre_eth_total; - istats.gre_eth_total = pc.gre_eth; - - istats.gre_arp = pc.gre_arp - istats.gre_arp_total; - istats.gre_arp_total = pc.gre_arp; - - istats.gre_ipv6 = pc.gre_ipv6 - istats.gre_ipv6_total; - istats.gre_ipv6_total = pc.gre_ipv6; - - istats.gre_ipx = pc.gre_ipx - istats.gre_ipx_total; - istats.gre_ipx_total = pc.gre_ipx; - - istats.gre_loopback = pc.gre_loopback - istats.gre_loopback_total; - istats.gre_loopback_total = pc.gre_loopback; - - istats.gre_vlan = pc.gre_vlan - istats.gre_vlan_total; - istats.gre_vlan_total = pc.gre_vlan; - - istats.gre_ppp = pc.gre_ppp - istats.gre_ppp_total; - istats.gre_ppp_total = pc.gre_ppp; -#endif - -#ifdef DLT_IEEE802_11 /* if we are tracking wireless, add this to output */ - istats.wifi_mgmt = pc.wifi_mgmt - istats.wifi_mgmt_total; - istats.wifi_mgmt_total = pc.wifi_mgmt; - - istats.wifi_control = pc.wifi_control - istats.wifi_control_total; - istats.wifi_control_total = pc.wifi_control; - - istats.wifi_data = pc.wifi_data - istats.wifi_data_total; - istats.wifi_data_total = pc.wifi_data; -#endif - - istats.ipx = pc.ipx - istats.ipx_total; - istats.ipx_total = pc.ipx; - - istats.eapol = pc.eapol - istats.eapol_total; - istats.eapol_total = pc.eapol; - - istats.ipv6 = pc.ipv6 - istats.ipv6_total; - istats.ipv6_total = pc.ipv6; - - istats.ethloopback = pc.ethloopback - istats.ethloopback_total; - istats.ethloopback_total = pc.ethloopback; - - istats.other = pc.other - istats.other_total; - istats.other_total = pc.other; - - istats.discards = pc.discards - istats.discards_total; - istats.discards_total = pc.discards; - - if (pc.frags > 0) /* do we have any fragmented packets being seen? */ - { - istats.frags = pc.frags - istats.frags_total; - istats.frags_total = pc.frags; - - istats.frag_trackers = pc.frag_trackers - istats.frag_trackers_total; - istats.frag_trackers_total = pc.frag_trackers; - - istats.frag_rebuilt = pc.rebuilt_frags - istats.frag_rebuilt_total; - istats.frag_rebuilt_total = pc.rebuilt_frags; - - istats.frag_element = pc.rebuild_element - istats.frag_element_total; - istats.frag_element_total = pc.rebuild_element; - - istats.frag_incomp = pc.frag_incomp - istats.frag_incomp_total; - istats.frag_incomp_total = pc.frag_incomp; - - istats.frag_timeout = pc.frag_timeout - istats.frag_timeout_total; - istats.frag_timeout_total = pc.frag_timeout; - - istats.frag_mem_faults = pc.frag_mem_faults - istats.frag_mem_faults_total; - istats.frag_mem_faults_total = pc.frag_mem_faults; - } - - if (pc.tcp_stream_pkts > 0) /* do we have TCP stream re-assembly going on? */ - { - istats.tcp_str_packets = pc.tcp_stream_pkts - istats.tcp_str_packets_total; - istats.tcp_str_packets_total = pc.tcp_stream_pkts; - - istats.tcp_str_trackers = pc.tcp_streams - istats.tcp_str_trackers_total; - istats.tcp_str_trackers_total = pc.tcp_streams; - - istats.tcp_str_flushes = pc.rebuilt_tcp - istats.tcp_str_flushes_total; - istats.tcp_str_flushes_total = pc.rebuilt_tcp; - - istats.tcp_str_segs_used = pc.rebuilt_segs - istats.tcp_str_segs_used_total; - istats.tcp_str_segs_used_total = pc.rebuilt_segs; - - istats.tcp_str_segs_queued = pc.queued_segs - istats.tcp_str_segs_queued_total; - istats.tcp_str_segs_queued_total = pc.queued_segs; - - istats.tcp_str_mem_faults = pc.str_mem_faults - istats.tcp_str_mem_faults_total; - istats.tcp_str_mem_faults_total = pc.str_mem_faults; - } - - istats.processed = pc.total_processed - istats.processed_total; - istats.processed_total = pc.total_processed; - total = istats.processed; - - /* prepare packet type per time interval routine */ - LogMessage("================================================" - "===============================\n"); - - LogMessage("\n"); - LogMessage("Statistics Report (last %d seconds)\n", timestats_interval); - LogMessage("\n"); - - per_sec = (double)istats.recv / (double)timestats_interval; - - LogMessage("Packet Wire Totals:\n"); - LogMessage("Packets received: " FMTu64("13") "\n", istats.recv); - - if (timestats_interval >= SECONDS_PER_HOUR) - { - per_hour = (double)(istats.recv * SECONDS_PER_HOUR) / (double)timestats_interval; - LogMessage(" per hour: %13.2f\n", per_hour); - } - if (timestats_interval >= SECONDS_PER_MIN) - { - per_minute = (double)(istats.recv * SECONDS_PER_MIN) / (double)timestats_interval; - LogMessage(" per minute: %13.2f\n", per_minute); - } - LogMessage(" per second: %13.2f\n", per_sec); - LogMessage(" Packets dropped: " FMTu64("13") "\n", istats.drop); - LogMessage("\n"); - LogMessage("Packet Breakdown by Protocol (includes rebuilt packets):\n"); - - LogMessage(" TCP: " FMTu64("10") " (%.3f%%)\n", - istats.tcp, CalcPct(istats.tcp, total)); - LogMessage(" UDP: " FMTu64("10") " (%.3f%%)\n", - istats.udp, CalcPct(istats.udp, total)); - LogMessage(" ICMP: " FMTu64("10") " (%.3f%%)\n", - istats.icmp, CalcPct(istats.icmp, total)); - LogMessage(" ARP: " FMTu64("10") " (%.3f%%)\n", - istats.arp, CalcPct(istats.arp, total)); -#ifndef NO_NON_ETHER_DECODER - LogMessage(" EAPOL: " FMTu64("10") " (%.3f%%)\n", - istats.eapol, CalcPct(istats.eapol, total)); -#endif - LogMessage(" IPv6: " FMTu64("10") " (%.3f%%)\n", - istats.ipv6, CalcPct(istats.ipv6, total)); - LogMessage(" ETHLOOP: " FMTu64("10") " (%.3f%%)\n", - istats.ethloopback, CalcPct(istats.ethloopback, total)); - LogMessage(" IPX: " FMTu64("10") " (%.3f%%)\n", - istats.ipx, CalcPct(istats.ipx, total)); - -#ifdef GRE - LogMessage(" IP4/IP4: " FMTu64("-10") " (%.3f%%)\n", - istats.ip4ip4, CalcPct(istats.ip4ip4, total)); - LogMessage(" IP4/IP6: " FMTu64("-10") " (%.3f%%)\n", - istats.ip4ip6, CalcPct(istats.ip4ip6, total)); - LogMessage(" IP6/IP4: " FMTu64("-10") " (%.3f%%)\n", - istats.ip6ip4, CalcPct(istats.ip6ip4, total)); - LogMessage(" IP6/IP6: " FMTu64("-10") " (%.3f%%)\n", - istats.ip6ip6, CalcPct(istats.ip6ip6, total)); - LogMessage(" GRE: " FMTu64("10") " (%.3f%%)\n", - istats.gre, CalcPct(istats.gre, total)); - LogMessage(" GRE ETH: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_eth, CalcPct(istats.gre_eth, total)); - LogMessage("GRE VLAN: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_vlan, CalcPct(istats.gre_vlan, total)); - LogMessage(" GRE IP: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_ip, CalcPct(istats.gre_ip, total)); - LogMessage("GRE IPv6: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_ipv6, CalcPct(istats.gre_ipv6, total)); - LogMessage("GRE PPTP: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_ppp, CalcPct(istats.gre_ppp, total)); - LogMessage(" GRE ARP: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_arp, CalcPct(istats.gre_arp, total)); - LogMessage(" GRE IPX: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_ipx, CalcPct(istats.gre_ipx, total)); - LogMessage("GRE LOOP: " FMTu64("-10") " (%.3f%%)\n", - istats.gre_loopback, CalcPct(istats.gre_loopback, total)); -#endif - - LogMessage(" FRAG: " FMTu64("10") " (%.3f%%)\n", - istats.frags, CalcPct(istats.frags, total)); - LogMessage(" OTHER: " FMTu64("10") " (%.3f%%)\n", - istats.other, CalcPct(istats.other, total)); - LogMessage(" DISCARD: " FMTu64("10") " (%.3f%%)\n", - istats.discards, CalcPct(istats.discards, total)); - LogMessage(" Total: " FMTu64("10") "\n", total); - - LogMessage("\n"); - - - /* handle case where wireless is enabled... */ - -#ifndef NO_NON_ETHER_DECODER -#ifdef DLT_IEEE802_11 - if (datalink == DLT_IEEE802_11) - { - LogMessage("\n"); - LogMessage("Wireless Stats:\n\n"); - LogMessage("Management Packets: " FMTu64("10") " (%.3f%%)\n", - istats.wifi_mgmt, CalcPct(istats.wifi_mgmt, total)); - LogMessage(" Control Packets: " FMTu64("10") " (%.3f%%)\n", - istats.wifi_control, CalcPct(istats.wifi_control, total)); - LogMessage(" Data Packets: " FMTu64("10") " (%.3f%%)\n", - istats.wifi_data, CalcPct(istats.wifi_data, total)); - LogMessage("\n"); - } - -#endif /* if wireless is enabled... */ -#endif // NO_NON_ETHER_DECODER - - /* handle case where we have snort seeing fragmented packets */ - - if (pc.frags > 0) /* begin if (pc.frags > 0) */ - { - LogMessage("\n"); - LogMessage("Fragmentation Stats:\n\n"); - LogMessage("Fragmented IP Packets: " FMTu64("10") "\n", istats.frags); - LogMessage(" Fragment Trackers: " FMTu64("10") "\n", istats.frag_trackers); - LogMessage(" Rebuilt IP Packets: " FMTu64("10") "\n", istats.frag_rebuilt); - LogMessage(" Frag Elements Used: " FMTu64("10") "\n", istats.frag_element); - LogMessage("Discarded(incomplete): " FMTu64("10") "\n", istats.frag_incomp); - LogMessage(" Discarded(timeout): " FMTu64("10") "\n", istats.frag_timeout); - LogMessage(" Frag2 memory faults: " FMTu64("10") "\n", istats.frag_mem_faults); - LogMessage("\n"); - } /* end if (pc.frags > 0) */ - - /* handle TCP stream re-assy stuff here */ - - if (pc.tcp_stream_pkts > 0) - { - LogMessage("\n"); - LogMessage("TCP Stream Reassembly Stats:\n\n"); - LogMessage(" TCP Packets Used: " FMTu64("10") "\n", istats.tcp_str_packets); - LogMessage(" Stream Trackers: " FMTu64("10") "\n", istats.tcp_str_trackers); - LogMessage(" Stream Flushes: " FMTu64("10") "\n", istats.tcp_str_flushes); - LogMessage(" Stream Segments Used: " FMTu64("10") "\n", istats.tcp_str_segs_used); - LogMessage("Stream Segments Queued: " FMTu64("10") "\n", istats.tcp_str_segs_queued); - LogMessage(" Stream4 Memory Faults: " FMTu64("10") "\n", istats.tcp_str_mem_faults); - LogMessage("\n"); - } - - //mpse_print_qinfo(); - - } /* end if pcap_stats(ps, &ps) */ - - alarm(timestats_interval); /* reset the alarm to go off again */ -} - -/* print out stats on how long snort ran */ -void TimeStats(void) -{ - -/* - * variable definitions for improved statistics handling - * - * end_time = time which snort finished running (unix epoch) - * total_secs = total amount of time snort ran - * int_total_secs = used to eliminate casts from this function (temp. var) - * days = number of days snort ran - * hrs = number of hrs snort ran - * mins = number of minutes snort ran - * secs = number of seconds snort ran - * - * ival = temp. variable for integer/modulus math - * ppd = packets per day processed - * pph = packets per hour processed - * ppm = packets per minute processed - * pps = packets per second processed - * - * hflag = used to flag when hrs = zero, but days > 0 - * mflag = used to flag when min = zero, but hrs > 0 - * - */ - - time_t end_time, total_secs; - uint32_t days = 0, hrs = 0, mins = 0, secs = 0, tmp = 0; - uint64_t pps = 0, ppm = 0, pph = 0, ppd = 0; - uint32_t int_total_secs = 0; - char hflag = 0, mflag = 0; - - - end_time = time(NULL); /* grab epoch for end time value (in seconds) */ - total_secs = end_time - start_time; /* total_secs is how many seconds snort ran for */ - - tmp = (uint32_t)total_secs; - int_total_secs = tmp; /* used for cast elimination */ - - days = tmp / SECONDS_PER_DAY; /* 86400 is number of seconds in a day */ - tmp = tmp % SECONDS_PER_DAY; /* grab remainder to process hours */ - hrs = tmp / SECONDS_PER_HOUR; /* 3600 is number of seconds in a(n) hour */ - tmp = tmp % SECONDS_PER_HOUR; /* grab remainder to process minutes */ - mins = tmp / SECONDS_PER_MIN; /* 60 is number of seconds in a minute */ - secs = tmp % SECONDS_PER_MIN; /* grab remainder to process seconds */ - - if (total_secs) - pps = (pc.total_from_pcap / int_total_secs); - else - pps = pc.total_from_pcap; /* guard against division by zero */ - - /* Use ErrorMessage because this is logged whether - * or not logging quietly */ - ErrorMessage("Snort ran for %u Days %u Hours %u Minutes %u Seconds\n", - days, hrs, mins, secs); - - if (days > 0) - { - ppd = (pc.total_from_pcap / (int_total_secs / SECONDS_PER_DAY)); - ErrorMessage("Snort Analyzed " STDu64 " Packets Per Day\n", ppd); - hflag = 1; - } - - if (hrs > 0 || hflag == 1) - { - pph = (pc.total_from_pcap / (int_total_secs / SECONDS_PER_HOUR)); - ErrorMessage("Snort Analyzed " STDu64 " Packets Per Hour\n", pph); - mflag = 1; - } - - if (mins > 0 || mflag == 1) - { - ppm = (pc.total_from_pcap / (int_total_secs / SECONDS_PER_MIN)); - ErrorMessage("Snort Analyzed " STDu64 " Packets Per Minute\n", ppm); - } - - ErrorMessage("Snort Analyzed " STDu64 " Packets Per Second\n", pps); - ErrorMessage("\n"); -} -#endif /* TIMESTATS */ - - -#ifdef PCAP_CLOSE -int UpdatePcapPktStats(int cacheReturn) -#else -int UpdatePcapPktStats(void) -#endif -{ - struct pcap_stat ps; - uint32_t recv, drop; - static char not_initialized = 1; - -#ifdef PCAP_CLOSE - static int priorReturn = 0; - static int returnWasCached = 0; - - if ( !cacheReturn && returnWasCached ) - { - returnWasCached = 0; - return priorReturn; - } - priorReturn = -1; - returnWasCached = cacheReturn; -#endif - - if (not_initialized) - { - memset(&pkt_stats, 0, sizeof(PcapPktStats)); - not_initialized = 0; - } - - if ((pcap_handle == NULL) || ScReadMode()) - return -1; - - if (pcap_stats(pcap_handle, &ps) == -1) - { - pcap_perror(pcap_handle, "pcap_stats"); - return -1; - } - - recv = (uint32_t)ps.ps_recv; - drop = (uint32_t)ps.ps_drop; - -#ifdef LINUX_LIBPCAP_DOUBLES_STATS - recv /= 2; - drop /= 2; -#endif - -#ifdef LIBPCAP_ACCUMULATES - /* pcap recv wrapped */ - if (recv < pkt_stats.wrap_recv) - pkt_stats.recv += (uint64_t)UINT32_MAX; - - /* pcap drop wrapped */ - if (drop < pkt_stats.wrap_drop) - pkt_stats.drop += (uint64_t)UINT32_MAX; - - pkt_stats.wrap_recv = recv; - pkt_stats.wrap_drop = drop; -#else - pkt_stats.recv += (uint64_t)recv; - pkt_stats.drop += (uint64_t)drop; -#endif /* LIBPCAP_ACCUMULATES */ - -#ifdef PCAP_CLOSE - priorReturn = 0; -#endif - return 0; -} - -uint64_t GetPcapPktStatsRecv(void) -{ - return pkt_stats.recv + (uint64_t)pkt_stats.wrap_recv; -} - -uint64_t GetPcapPktStatsDrop(void) -{ - return pkt_stats.drop + (uint64_t)pkt_stats.wrap_drop; -} - - -#ifdef PCAP_CLOSE -/* exiting should be 0 for if not exiting, 1 if restarting, and 2 if exiting */ -#else -/* exiting should be 0 for if not exiting and 1 if exiting */ -#endif -void DropStats(int exiting) -{ - PreprocStatsFuncNode *idx; - uint64_t total = 0; - uint64_t pkts_recv; - uint64_t pkts_drop; - - total = pc.total_processed; - -#ifdef PPM_MGR - PPM_PRINT_SUMMARY(&snort_conf->ppm_cfg); -#endif - - LogMessage("================================================" - "===============================\n"); - -#ifdef TIMESTATS - TimeStats(); /* how long did snort run? */ -#endif - - if (ScReadMode() -#ifdef GIDS - || ScAdapterInlineMode() -#endif - ) - { - LogMessage("Snort processed " STDu64 " packets.\n", total); - } - else - { -#ifdef PCAP_CLOSE - if (exiting < 2 && (pcap_handle == NULL)) -#else - if (pcap_handle == NULL) -#endif - { - LogMessage("Snort received 0 packets\n"); - } - else - { -#ifdef PCAP_CLOSE - if (UpdatePcapPktStats(0) != -1) -#else - if (UpdatePcapPktStats() != -1) -#endif - { - pkts_recv = GetPcapPktStatsRecv(); - pkts_drop = GetPcapPktStatsDrop(); - - LogMessage("Packet Wire Totals:\n"); - LogMessage(" Received: " FMTu64("12") "\n", pkts_recv); - LogMessage(" Analyzed: " FMTu64("12") " (%.3f%%)\n", pc.total_from_pcap, - CalcPct(pc.total_from_pcap, pkts_recv)); - LogMessage(" Dropped: " FMTu64("12") " (%.3f%%)\n", pkts_drop, - CalcPct(pkts_drop, pkts_recv)); - LogMessage("Outstanding: " FMTu64("12") " (%.3f%%)\n", - pkts_recv - pkts_drop - pc.total_from_pcap, - CalcPct((pkts_recv - pkts_drop - pc.total_from_pcap), pkts_recv)); - } - else - { - LogMessage("Unable to calculate percentages for stats\n"); - LogMessage("Total number of packets Analyzed: " FMTu64("12") "\n", pc.total_from_pcap); - } - } - } - - LogMessage("================================================" - "===============================\n"); - - LogMessage("Breakdown by protocol (includes rebuilt packets):\n"); - - LogMessage(" ETH: " FMTu64("-10") " (%.3f%%)\n", - pc.eth, CalcPct(pc.eth, total)); - LogMessage(" ETHdisc: " FMTu64("-10") " (%.3f%%)\n", - pc.ethdisc, CalcPct(pc.ethdisc, total)); -#ifdef GIDS -#ifndef IPFW - LogMessage(" IPTables: " FMTu64("-10") " (%.3f%%)\n", - pc.iptables, CalcPct(pc.iptables, total)); -#else - LogMessage(" IPFW: " FMTu64("-10") " (%.3f%%)\n", - pc.ipfw, CalcPct(pc.ipfw, total)); -#endif /* IPFW */ -#endif /* GIDS */ - LogMessage(" VLAN: " FMTu64("-10") " (%.3f%%)\n", - pc.vlan, CalcPct(pc.vlan, total)); - - if (pc.nested_vlan != 0) - LogMessage("Nested VLAN: " FMTu64("-10") " (%.3f%%)\n", - pc.nested_vlan, CalcPct(pc.nested_vlan, total)); - - LogMessage(" IPV6: " FMTu64("-10") " (%.3f%%)\n", - pc.ipv6, CalcPct(pc.ipv6, total)); - LogMessage(" IP6 EXT: " FMTu64("-10") " (%.3f%%)\n", - pc.ip6ext, CalcPct(pc.ip6ext, total)); - LogMessage(" IP6opts: " FMTu64("-10") " (%.3f%%)\n", - pc.ipv6opts, CalcPct(pc.ipv6opts, total)); - LogMessage(" IP6disc: " FMTu64("-10") " (%.3f%%)\n", - pc.ipv6disc, CalcPct(pc.ipv6disc, total)); - - LogMessage(" IP4: " FMTu64("-10") " (%.3f%%)\n", - pc.ip, CalcPct(pc.ip, total)); - LogMessage(" IP4disc: " FMTu64("-10") " (%.3f%%)\n", - pc.ipdisc, CalcPct(pc.ipdisc, total)); - - LogMessage(" TCP 6: " FMTu64("-10") " (%.3f%%)\n", - pc.tcp6, CalcPct(pc.tcp6, total)); - LogMessage(" UDP 6: " FMTu64("-10") " (%.3f%%)\n", - pc.udp6, CalcPct(pc.udp6, total)); - LogMessage(" ICMP6: " FMTu64("-10") " (%.3f%%)\n", - pc.icmp6, CalcPct(pc.icmp6, total)); - LogMessage(" ICMP-IP: " FMTu64("-10") " (%.3f%%)\n", - pc.embdip, CalcPct(pc.embdip, total)); - - LogMessage(" TCP: " FMTu64("-10") " (%.3f%%)\n", - pc.tcp, CalcPct(pc.tcp, total)); - LogMessage(" UDP: " FMTu64("-10") " (%.3f%%)\n", - pc.udp, CalcPct(pc.udp, total)); - LogMessage(" ICMP: " FMTu64("-10") " (%.3f%%)\n", - pc.icmp, CalcPct(pc.icmp, total)); - - LogMessage(" TCPdisc: " FMTu64("-10") " (%.3f%%)\n", - pc.tdisc, CalcPct(pc.tdisc, total)); - LogMessage(" UDPdisc: " FMTu64("-10") " (%.3f%%)\n", - pc.udisc, CalcPct(pc.udisc, total)); - LogMessage(" ICMPdis: " FMTu64("-10") " (%.3f%%)\n", - pc.icmpdisc, CalcPct(pc.icmpdisc, total)); - - LogMessage(" FRAG: " FMTu64("-10") " (%.3f%%)\n", - pc.frags, CalcPct(pc.frags, total)); - LogMessage(" FRAG 6: " FMTu64("-10") " (%.3f%%)\n", - pc.frag6, CalcPct(pc.frag6, total)); - - LogMessage(" ARP: " FMTu64("-10") " (%.3f%%)\n", - pc.arp, CalcPct(pc.arp, total)); -#ifndef NO_NON_ETHER_DECODER - LogMessage(" EAPOL: " FMTu64("-10") " (%.3f%%)\n", - pc.eapol, CalcPct(pc.eapol, total)); -#endif - LogMessage(" ETHLOOP: " FMTu64("-10") " (%.3f%%)\n", - pc.ethloopback, CalcPct(pc.ethloopback, total)); - LogMessage(" IPX: " FMTu64("-10") " (%.3f%%)\n", - pc.ipx, CalcPct(pc.ipx, total)); -#ifdef GRE - LogMessage("IPv4/IPv4: " FMTu64("-10") " (%.3f%%)\n", - pc.ip4ip4, CalcPct(pc.ip4ip4, total)); - LogMessage("IPv4/IPv6: " FMTu64("-10") " (%.3f%%)\n", - pc.ip4ip6, CalcPct(pc.ip4ip6, total)); - LogMessage("IPv6/IPv4: " FMTu64("-10") " (%.3f%%)\n", - pc.ip6ip4, CalcPct(pc.ip6ip4, total)); - LogMessage("IPv6/IPv6: " FMTu64("-10") " (%.3f%%)\n", - pc.ip6ip6, CalcPct(pc.ip6ip6, total)); - LogMessage(" GRE: " FMTu64("-10") " (%.3f%%)\n", - pc.gre, CalcPct(pc.gre, total)); - LogMessage(" GRE ETH: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_eth, CalcPct(pc.gre_eth, total)); - LogMessage(" GRE VLAN: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_vlan, CalcPct(pc.gre_vlan, total)); - LogMessage(" GRE IPv4: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_ip, CalcPct(pc.gre_ip, total)); - LogMessage(" GRE IPv6: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_ipv6, CalcPct(pc.gre_ipv6, total)); - LogMessage("GRE IP6 E: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_ipv6ext, CalcPct(pc.gre_ipv6ext, total)); - LogMessage(" GRE PPTP: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_ppp, CalcPct(pc.gre_ppp, total)); - LogMessage(" GRE ARP: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_arp, CalcPct(pc.gre_arp, total)); - LogMessage(" GRE IPX: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_ipx, CalcPct(pc.gre_ipx, total)); - LogMessage(" GRE LOOP: " FMTu64("-10") " (%.3f%%)\n", - pc.gre_loopback, CalcPct(pc.gre_loopback, total)); -#endif /* GRE */ -#ifdef MPLS - LogMessage(" MPLS: " FMTu64("-10") " (%.3f%%)\n", - pc.mpls, CalcPct(pc.mpls, total)); -#endif - LogMessage(" OTHER: " FMTu64("-10") " (%.3f%%)\n", - pc.other, CalcPct(pc.other, total)); - LogMessage(" DISCARD: " FMTu64("-10") " (%.3f%%)\n", - pc.discards, CalcPct(pc.discards, total)); - LogMessage("InvChkSum: " FMTu64("-10") " (%.3f%%)\n", - pc.invalid_checksums, CalcPct(pc.invalid_checksums, total)); - - LogMessage(" S5 G 1: " FMTu64("-10") " (%.3f%%)\n", - pc.s5tcp1, CalcPct(pc.s5tcp1, total)); - LogMessage(" S5 G 2: " FMTu64("-10") " (%.3f%%)\n", - pc.s5tcp2, CalcPct(pc.s5tcp2, total)); - - LogMessage(" Total: " FMTu64("-10") "\n", total); - - LogMessage("================================================" - "===============================\n"); - - LogMessage("Action Stats:\n"); - LogMessage("ALERTS: " STDu64 "\n", pc.alert_pkts); - LogMessage("LOGGED: " STDu64 "\n", pc.log_pkts); - LogMessage("PASSED: " STDu64 "\n", pc.pass_pkts); - -#ifdef TARGET_BASED - if (ScIdsMode() && IsAdaptiveConfigured(getDefaultPolicy(), 0)) - { - LogMessage("================================================" - "===============================\n"); - LogMessage("Attribute Table Stats:\n"); - LogMessage(" Number Entries: %u\n", SFAT_NumberOfHosts()); - LogMessage(" Table Reloaded: " STDu64 "\n", pc.attribute_table_reloads); - } -#endif /* TARGET_BASED */ - - //mpse_print_qinfo(); - -#ifndef NO_NON_ETHER_DECODER -#ifdef DLT_IEEE802_11 - if(datalink == DLT_IEEE802_11) - { - LogMessage("================================================" - "===============================\n"); - LogMessage("Wireless Stats:\n"); - LogMessage("Breakdown by type:\n"); - LogMessage(" Management Packets: " FMTu64("-10") " (%.3f%%)\n", - pc.wifi_mgmt, CalcPct(pc.wifi_mgmt, total)); - LogMessage(" Control Packets: " FMTu64("-10") " (%.3f%%)\n", - pc.wifi_control, CalcPct(pc.wifi_control, total)); - LogMessage(" Data Packets: " FMTu64("-10") " (%.3f%%)\n", - pc.wifi_data, CalcPct(pc.wifi_data, total)); - } -#endif /* DLT_IEEE802_11 */ -#endif // NO_NON_ETHER_DECODER - - for (idx = preproc_stats_funcs; idx != NULL; idx = idx->next) - { - LogMessage("==============================================" - "=================================\n"); - -#ifdef PCAP_CLOSE - idx->func(exiting ? 1 : 0); -#else - idx->func(exiting); -#endif - } - - LogMessage("==============================================" - "=================================\n"); - - return; -} - -/**************************************************************************** - * - * Function: CleanupProtoNames() - * - * Purpose: Frees the protocol names - * - * Arguments: None. - * - * Returns: void function - * - ****************************************************************************/ -void CleanupProtoNames(void) -{ - int i; - - for(i = 0; i < 256; i++) - { - if( protocol_names[i] != NULL ) - { - free( protocol_names[i] ); - protocol_names[i] = NULL; - } - } -} - -/**************************************************************************** - * - * Function: read_infile(char *) - * - * Purpose: Reads the BPF filters in from a file. Ripped from tcpdump. - * - * Arguments: fname => the name of the file containing the BPF filters - * - * Returns: the processed BPF string - * - ****************************************************************************/ -char *read_infile(char *fname) -{ - register int fd, cc; - register char *cp, *cmt; - struct stat buf; - - fd = open(fname, O_RDONLY); - - if(fd < 0) - FatalError("can't open %s: %s\n", fname, pcap_strerror(errno)); - - if(fstat(fd, &buf) < 0) - FatalError("can't stat %s: %s\n", fname, pcap_strerror(errno)); - - cp = (char *)SnortAlloc(((u_int)buf.st_size + 1) * sizeof(char)); - - cc = read(fd, cp, (int) buf.st_size); - - if(cc < 0) - FatalError("read %s: %s\n", fname, pcap_strerror(errno)); - - if(cc != buf.st_size) - FatalError("short read %s (%d != %d)\n", fname, cc, (int) buf.st_size); - - cp[(int) buf.st_size] = '\0'; - - close(fd); - - /* Treat everything upto the end of the line as a space - * so that we can put comments in our BPF filters - */ - - while((cmt = strchr(cp, '#')) != NULL) - { - while (*cmt != '\r' && *cmt != '\n' && *cmt != '\0') - { - *cmt++ = ' '; - } - } - - /** LogMessage("BPF filter file: %s\n", fname); **/ - - return(cp); -} - - - /**************************************************************************** - * - * Function: CheckLogDir() - * - * Purpose: CyberPsychotic sez: basically we only check if logdir exist and - * writable, since it might screw the whole thing in the middle. Any - * other checks could be performed here as well. - * - * Arguments: None. - * - * Returns: void function - * - ****************************************************************************/ -void CheckLogDir(void) -{ - struct stat st; - - if (snort_conf->log_dir == NULL) - return; - - if (stat(snort_conf->log_dir, &st) == -1) - FatalError("Stat check on log dir failed: %s.\n", strerror(errno)); - - if (!S_ISDIR(st.st_mode) || (access(snort_conf->log_dir, W_OK) == -1)) - { - FatalError("Can not get write access to logging directory \"%s\". " - "(directory doesn't exist or permissions are set incorrectly " - "or it is not a directory at all)\n", - snort_conf->log_dir); - } -} - -/* Signal handler for child process signaling the parent - * that is is ready */ -static int parent_wait = 1; -static void SigChildReadyHandler(int signal) -{ -#ifdef DEBUG - LogMessage("Received Signal from Child\n"); -#endif - parent_wait = 0; -} - -/**************************************************************************** - * - * Function: GoDaemon() - * - * Purpose: Puts the program into daemon mode, nice and quiet like.... - * - * Arguments: None. - * - * Returns: void function - * - ****************************************************************************/ -void GoDaemon(void) -{ -#ifndef WIN32 - int exit_val = 0; - pid_t fs; - - LogMessage("Initializing daemon mode\n"); - - if (ScDaemonRestart()) - return; - - /* Don't daemonize if we've already daemonized and - * received a SIGHUP. */ - if(getppid() != 1) - { - /* Register signal handler that parent can trap signal */ - signal(SIGNAL_SNORT_CHILD_READY, SigChildReadyHandler); - if (errno != 0) errno=0; - - /* now fork the child */ - fs = fork(); - - if(fs > 0) - { - /* Parent */ - - /* Don't exit quite yet. Wait for the child - * to signal that is there and created the PID - * file. - */ - while (parent_wait) - { - /* Continue waiting until receiving signal from child */ - int status; - if (waitpid(fs, &status, WNOHANG) == fs) - { - /* If the child is gone, parent should go away, too */ - if (WIFEXITED(status)) - { - LogMessage("Child exited unexpectedly\n"); - exit_val = -1; - break; - } - - if (WIFSIGNALED(status)) - { - LogMessage("Child terminated unexpectedly\n"); - exit_val = -2; - break; - } - } -#ifdef DEBUG - LogMessage("Parent waiting for child...\n"); -#endif - - sleep(1); - } - - LogMessage("Daemon parent exiting\n"); - - exit(exit_val); /* parent */ - } - - if(fs < 0) - { - /* Daemonizing failed... */ - perror("fork"); - exit(1); - } - - /* Child */ - setsid(); - } - - close(0); - close(1); - close(2); - -#ifdef DEBUG - /* redirect stdin/stdout/stderr to a file */ - open("/tmp/snort.debug", O_CREAT | O_RDWR); /* stdin, fd 0 */ - - /* Change ownership to that which we will drop privileges to */ - if ((snort_conf->user_id != -1) || (snort_conf->group_id != -1)) - { - uid_t user_id = getuid(); - gid_t group_id = getgid(); - - if (snort_conf->user_id != -1) - user_id = snort_conf->user_id; - if (snort_conf->group_id != -1) - group_id = snort_conf->group_id; - - chown("/tmp/snort.debug", user_id, group_id); - } -#else - /* redirect stdin/stdout/stderr to /dev/null */ - (void)open("/dev/null", O_RDWR); /* stdin, fd 0 */ -#endif - - dup(0); /* stdout, fd 0 => fd 1 */ - dup(0); /* stderr, fd 0 => fd 2 */ - - SignalWaitingParent(); - -#endif /* ! WIN32 */ -} - -/* Signal the parent that child is ready */ -void SignalWaitingParent(void) -{ -#ifndef WIN32 - pid_t parentpid = getppid(); -#ifdef DEBUG - LogMessage("Signaling parent %d from child %d\n", parentpid, getpid()); -#endif - - if (kill(parentpid, SIGNAL_SNORT_CHILD_READY)) - { - LogMessage("Daemon initialized, failed to signal parent pid: %d, failure: %d, %s\n", parentpid, errno, strerror(errno)); - } - else - { - LogMessage("Daemon initialized, signaled parent pid: %d\n", parentpid); - } -#endif -} - -/* This function has been moved into mstring.c, since that -* is where the allocation actually occurs. It has been -* renamed to mSplitFree(). -* -void FreeToks(char **toks, int num_toks) -{ - if (toks) - { - if (num_toks > 0) - { - do - { - num_toks--; - free(toks[num_toks]); - } while(num_toks); - } - free(toks); - } -} -*/ - - -/* Self preserving memory allocator */ -void *SPAlloc(unsigned long size, struct _SPMemControl *spmc) -{ - void *tmp; - - spmc->mem_usage += size; - - if(spmc->mem_usage > spmc->memcap) - { - spmc->sp_func(spmc); - } - - tmp = (void *) calloc(size, sizeof(char)); - - if(tmp == NULL) - { - FatalError("Unable to allocate memory! (%lu requested, %lu in use)\n", - size, spmc->mem_usage); - } - - return tmp; -} - -/* Guaranteed to be '\0' terminated even if truncation occurs. - * - * returns SNORT_SNPRINTF_SUCCESS if successful - * returns SNORT_SNPRINTF_TRUNCATION on truncation - * returns SNORT_SNPRINTF_ERROR on error - */ -int SnortSnprintf(char *buf, size_t buf_size, const char *format, ...) -{ - va_list ap; - int ret; - - if (buf == NULL || buf_size <= 0 || format == NULL) - return SNORT_SNPRINTF_ERROR; - - /* zero first byte in case an error occurs with - * vsnprintf, so buffer is null terminated with - * zero length */ - buf[0] = '\0'; - buf[buf_size - 1] = '\0'; - - va_start(ap, format); - - ret = vsnprintf(buf, buf_size, format, ap); - - va_end(ap); - - if (ret < 0) - return SNORT_SNPRINTF_ERROR; - - if (buf[buf_size - 1] != '\0' || (size_t)ret >= buf_size) - { - /* result was truncated */ - buf[buf_size - 1] = '\0'; - return SNORT_SNPRINTF_TRUNCATION; - } - - return SNORT_SNPRINTF_SUCCESS; -} - -/* Appends to a given string - * Guaranteed to be '\0' terminated even if truncation occurs. - * - * returns SNORT_SNPRINTF_SUCCESS if successful - * returns SNORT_SNPRINTF_TRUNCATION on truncation - * returns SNORT_SNPRINTF_ERROR on error - */ -int SnortSnprintfAppend(char *buf, size_t buf_size, const char *format, ...) -{ - int str_len; - int ret; - va_list ap; - - if (buf == NULL || buf_size <= 0 || format == NULL) - return SNORT_SNPRINTF_ERROR; - - str_len = SnortStrnlen(buf, buf_size); - - /* since we've already checked buf and buf_size an error - * indicates no null termination, so just start at - * beginning of buffer */ - if (str_len == SNORT_STRNLEN_ERROR) - { - buf[0] = '\0'; - str_len = 0; - } - - buf[buf_size - 1] = '\0'; - - va_start(ap, format); - - ret = vsnprintf(buf + str_len, buf_size - (size_t)str_len, format, ap); - - va_end(ap); - - if (ret < 0) - return SNORT_SNPRINTF_ERROR; - - if (buf[buf_size - 1] != '\0' || (size_t)ret >= buf_size) - { - /* truncation occured */ - buf[buf_size - 1] = '\0'; - return SNORT_SNPRINTF_TRUNCATION; - } - - return SNORT_SNPRINTF_SUCCESS; -} - -/* Guaranteed to be '\0' terminated even if truncation occurs. - * - * Arguments: dst - the string to contain the copy - * src - the string to copy from - * dst_size - the size of the destination buffer - * including the null byte. - * - * returns SNORT_STRNCPY_SUCCESS if successful - * returns SNORT_STRNCPY_TRUNCATION on truncation - * returns SNORT_STRNCPY_ERROR on error - * - * Note: Do not set dst[0] = '\0' on error since it's possible that - * dst and src are the same pointer - it will at least be null - * terminated in any case - */ -int SnortStrncpy(char *dst, const char *src, size_t dst_size) -{ - char *ret = NULL; - - if (dst == NULL || src == NULL || dst_size <= 0) - return SNORT_STRNCPY_ERROR; - - dst[dst_size - 1] = '\0'; - - ret = strncpy(dst, src, dst_size); - - /* Not sure if this ever happens but might as - * well be on the safe side */ - if (ret == NULL) - return SNORT_STRNCPY_ERROR; - - if (dst[dst_size - 1] != '\0') - { - /* result was truncated */ - dst[dst_size - 1] = '\0'; - return SNORT_STRNCPY_TRUNCATION; - } - - return SNORT_STRNCPY_SUCCESS; -} - -char *SnortStrndup(const char *src, size_t dst_size) -{ - char *ret = SnortAlloc(dst_size + 1); - int ret_val; - - ret_val = SnortStrncpy(ret, src, dst_size + 1); - - if(ret_val == SNORT_STRNCPY_ERROR) - { - free(ret); - return NULL; - } - - return ret; -} - -/* Determines whether a buffer is '\0' terminated and returns the - * string length if so - * - * returns the string length if '\0' terminated - * returns SNORT_STRNLEN_ERROR if not '\0' terminated - */ -int SnortStrnlen(const char *buf, int buf_size) -{ - int i = 0; - - if (buf == NULL || buf_size <= 0) - return SNORT_STRNLEN_ERROR; - - for (i = 0; i < buf_size; i++) - { - if (buf[i] == '\0') - break; - } - - if (i == buf_size) - return SNORT_STRNLEN_ERROR; - - return i; -} - -char * SnortStrdup(const char *str) -{ - char *copy = NULL; - - if (!str) - { - FatalError("Unable to duplicate string: NULL!\n"); - } - - copy = strdup(str); - - if (copy == NULL) - { - FatalError("Unable to duplicate string: %s!\n", str); - } - - return copy; -} - -/* - * Find first occurrence of char of accept in s, limited by slen. - * A 'safe' version of strpbrk that won't read past end of buffer s - * in cases that s is not NULL terminated. - * - * This code assumes 'accept' is a static string. - */ -const char *SnortStrnPbrk(const char *s, int slen, const char *accept) -{ - char ch; - const char *s_end; - if (!s || !*s || !accept || slen == 0) - return NULL; - - s_end = s + slen; - while (s < s_end) - { - ch = *s; - if (strchr(accept, ch)) - return s; - s++; - } - return NULL; -} - -/* - * Find first occurrence of searchstr in s, limited by slen. - * A 'safe' version of strstr that won't read past end of buffer s - * in cases that s is not NULL terminated. - */ -const char *SnortStrnStr(const char *s, int slen, const char *searchstr) -{ - char ch, nc; - int len; - if (!s || !*s || !searchstr || slen == 0) - return NULL; - - if ((ch = *searchstr++) != 0) - { - len = strlen(searchstr); - do - { - do - { - if ((nc = *s++) == 0) - { - return NULL; - } - slen--; - if (slen == 0) - return NULL; - } while (nc != ch); - if (slen - len < 0) - return NULL; - } while (memcmp(s, searchstr, len) != 0); - s--; - slen++; - } - return s; -} - -/* - * Find first occurrence of substring in s, ignore case. -*/ -const char *SnortStrcasestr(const char *s, const char *substr) -{ - char ch, nc; - int len; - - if (!s || !*s || !substr) - return NULL; - - if ((ch = *substr++) != 0) - { - ch = tolower((char)ch); - len = strlen(substr); - do - { - do - { - if ((nc = *s++) == 0) - { - return NULL; - } - } while ((char)tolower((uint8_t)nc) != ch); - } while (strncasecmp(s, substr, len) != 0); - s--; - } - return s; -} - -void *SnortAlloc(unsigned long size) -{ - void *tmp; - - tmp = (void *) calloc(size, sizeof(char)); - - if(tmp == NULL) - { - FatalError("Unable to allocate memory! (%lu requested)\n", size); - } - - return tmp; -} - -void * SnortAlloc2(size_t size, const char *format, ...) -{ - void *tmp; - - tmp = (void *)calloc(size, sizeof(char)); - - if(tmp == NULL) - { - va_list ap; - char buf[STD_BUF]; - - buf[STD_BUF - 1] = '\0'; - - va_start(ap, format); - - vsnprintf(buf, STD_BUF - 1, format, ap); - - va_end(ap); - - FatalError("%s", buf); - } - - return tmp; -} - -/** - * Chroot and adjust the snort_conf->log_dir reference - * - * @param directory directory to chroot to - * @param logstore ptr to snort_conf->log_dir which must be dynamically allocated - */ -void SetChroot(char *directory, char **logstore) -{ -#ifdef WIN32 - FatalError("SetChroot() should not be called under Win32!\n"); -#else - char *absdir; - size_t abslen; - char *logdir; - - if(!directory || !logstore) - { - FatalError("Null parameter passed\n"); - } - - logdir = *logstore; - - if(logdir == NULL || *logdir == '\0') - { - FatalError("Null log directory\n"); - } - - DEBUG_WRAP(DebugMessage(DEBUG_INIT,"SetChroot: %s\n", - CurrentWorkingDir());); - - logdir = GetAbsolutePath(logdir); - - DEBUG_WRAP(DebugMessage(DEBUG_INIT, "SetChroot: %s\n", - CurrentWorkingDir())); - - logdir = SnortStrdup(logdir); - - /* We're going to reset logstore, so free it now */ - free(*logstore); - *logstore = NULL; - - /* change to the directory */ - if(chdir(directory) != 0) - { - FatalError("SetChroot: Can not chdir to \"%s\": %s\n", directory, - strerror(errno)); - } - - /* always returns an absolute pathname */ - absdir = CurrentWorkingDir(); - - if(absdir == NULL) - { - FatalError("NULL Chroot found\n"); - } - - abslen = strlen(absdir); - - DEBUG_WRAP(DebugMessage(DEBUG_INIT, "ABS: %s %d\n", absdir, abslen);); - - /* make the chroot call */ - if(chroot(absdir) < 0) - { - FatalError("Can not chroot to \"%s\": absolute: %s: %s\n", - directory, absdir, strerror(errno)); - } - - DEBUG_WRAP(DebugMessage(DEBUG_INIT,"chroot success (%s ->", absdir);); - DEBUG_WRAP(DebugMessage(DEBUG_INIT,"%s)\n ", CurrentWorkingDir());); - - /* change to "/" in the new directory */ - if(chdir("/") < 0) - { - FatalError("Can not chdir to \"/\" after chroot: %s\n", - strerror(errno)); - } - - DEBUG_WRAP(DebugMessage(DEBUG_INIT,"chdir success (%s)\n", - CurrentWorkingDir());); - - - if(strncmp(absdir, logdir, strlen(absdir))) - { - FatalError("Absdir is not a subset of the logdir"); - } - - if(abslen >= strlen(logdir)) - { - *logstore = SnortStrdup("/"); - } - else - { - *logstore = SnortStrdup(logdir + abslen); - } - - DEBUG_WRAP(DebugMessage(DEBUG_INIT,"new logdir from %s to %s\n", - logdir, *logstore)); - - LogMessage("Chroot directory = %s\n", directory); - -#if 0 - /* XXX XXX */ - /* install the I can't do this signal handler */ - signal(SIGHUP, SigCantHupHandler); -#endif -#endif /* !WIN32 */ -} - - -/** - * Return a ptr to the absolute pathname of snort. This memory must - * be copied to another region if you wish to save it for later use. - */ -char *CurrentWorkingDir(void) -{ - static char buf[PATH_MAX_UTIL + 1]; - - if(getcwd((char *) buf, PATH_MAX_UTIL) == NULL) - { - return NULL; - } - - buf[PATH_MAX_UTIL] = '\0'; - - return (char *) buf; -} - -/** - * Given a directory name, return a ptr to a static - */ -char *GetAbsolutePath(char *dir) -{ - char *savedir, *dirp; - static char buf[PATH_MAX_UTIL + 1]; - - if(dir == NULL) - { - return NULL; - } - - savedir = strdup(CurrentWorkingDir()); - - if(savedir == NULL) - { - return NULL; - } - - if(chdir(dir) < 0) - { - LogMessage("Can't change to directory: %s\n", dir); - free(savedir); - return NULL; - } - - dirp = CurrentWorkingDir(); - - if(dirp == NULL) - { - LogMessage("Unable to access current directory\n"); - free(savedir); - return NULL; - } - else - { - strncpy(buf, dirp, PATH_MAX_UTIL); - buf[PATH_MAX_UTIL] = '\0'; - } - - if(chdir(savedir) < 0) - { - LogMessage("Can't change back to directory: %s\n", dir); - free(savedir); - return NULL; - } - - free(savedir); - return (char *) buf; -} - - -#ifndef WIN32 -/* very slow sort - do not use at runtime! */ -SF_LIST * SortDirectory(const char *path) -{ - SF_LIST *dir_entries; - DIR *dir; - struct dirent *direntry; - int ret = 0; - - if (path == NULL) - return NULL; - - dir_entries = sflist_new(); - if (dir_entries == NULL) - { - ErrorMessage("Could not allocate new list for directory entries\n"); - return NULL; - } - - dir = opendir(path); - if (dir == NULL) - { - ErrorMessage("Error opening directory: %s: %s\n", - path, strerror(errno)); - sflist_free_all(dir_entries, free); - return NULL; - } - - /* Reset errno since we'll be checking it unconditionally */ - errno = 0; - - while ((direntry = readdir(dir)) != NULL) - { - char *node_entry_name, *dir_entry_name; - SF_LNODE *node; - - dir_entry_name = SnortStrdup(direntry->d_name); - - for (node = sflist_first_node(dir_entries); - node != NULL; - node = sflist_next_node(dir_entries)) - { - node_entry_name = (char *)node->ndata; - if (strcmp(dir_entry_name, node_entry_name) < 0) - break; - } - - if (node == NULL) - ret = sflist_add_tail(dir_entries, (NODE_DATA)dir_entry_name); - else - ret = sflist_add_before(dir_entries, node, (NODE_DATA)dir_entry_name); - - if (ret == -1) - { - ErrorMessage("Error adding directory entry to list\n"); - sflist_free_all(dir_entries, free); - closedir(dir); - return NULL; - } - } - - if (errno != 0) - { - ErrorMessage("Error reading directory: %s: %s\n", - path, strerror(errno)); - errno = 0; - sflist_free_all(dir_entries, free); - closedir(dir); - return NULL; - } - - closedir(dir); - - return dir_entries; -} - -int GetFilesUnderDir(const char *path, SF_QUEUE *dir_queue, const char *filter) -{ - SF_LIST *dir_entries; - char *direntry; - int ret = 0; - int num_files = 0; - - if ((path == NULL) || (dir_queue == NULL)) - return -1; - - dir_entries = SortDirectory(path); - if (dir_entries == NULL) - { - ErrorMessage("Error sorting entries in directory: %s\n", path); - return -1; - } - - for (direntry = (char *)sflist_first(dir_entries); - direntry != NULL; - direntry = (char *)sflist_next(dir_entries)) - { - char path_buf[PATH_MAX]; - struct stat file_stat; - - /* Don't look at dot files */ - if (strncmp(".", direntry, 1) == 0) - continue; - - ret = SnortSnprintf(path_buf, PATH_MAX, "%s%s%s", - path, path[strlen(path) - 1] == '/' ? "" : "/", direntry); - if (ret == SNORT_SNPRINTF_TRUNCATION) - { - ErrorMessage("Error copying file to buffer: Path too long\n"); - sflist_free_all(dir_entries, free); - return -1; - } - else if (ret != SNORT_SNPRINTF_SUCCESS) - { - ErrorMessage("Error copying file to buffer\n"); - sflist_free_all(dir_entries, free); - return -1; - } - - ret = stat(path_buf, &file_stat); - if (ret == -1) - { - ErrorMessage("Could not stat file: %s: %s\n", - path_buf, strerror(errno)); - sflist_free_all(dir_entries, free); - return -1; - } - - if (file_stat.st_mode & S_IFDIR) - { - ret = GetFilesUnderDir(path_buf, dir_queue, filter); - if (ret == -1) - { - sflist_free_all(dir_entries, free); - return -1; - } - - num_files += ret; - } - else if (file_stat.st_mode & S_IFREG) - { - if ((filter == NULL) || (fnmatch(filter, direntry, 0) == 0)) - { - char *file = SnortStrdup(path_buf); - - ret = sfqueue_add(dir_queue, (NODE_DATA)file); - if (ret == -1) - { - ErrorMessage("Could not append item to list: %s\n", file); - free(file); - sflist_free_all(dir_entries, free); - return -1; - } - - num_files++; - } - } - } - - sflist_free_all(dir_entries, free); - - return num_files; -} -#endif - -/**************************************************************************** - * - * Function: GetUniqueName(char * iface) - * - * Purpose: To return a string that has a high probability of being unique - * for a given sensor. - * - * Arguments: char * iface - The network interface you are sniffing - * - * Returns: A char * -- its a static char * so you should not free it - * - ***************************************************************************/ -char *GetUniqueName(char * iface) -{ - char * rptr; - static char uniq_name[256]; - - if (iface == NULL) LogMessage("Interface is NULL. Name may not be unique for the host\n"); -#ifndef WIN32 - rptr = GetIP(iface); - if(rptr == NULL || !strcmp(rptr, "unknown")) -#endif - { - SnortSnprintf(uniq_name, 255, "%s:%s\n",GetHostname(),iface); - rptr = uniq_name; - } - if (ScLogVerbose()) LogMessage("Node unique name is: %s\n", rptr); - return rptr; -} - -/**************************************************************************** - * - * Function: GetIP(char * iface) - * - * Purpose: To return a string representing the IP address for an interface - * - * Arguments: char * iface - The network interface you want to find an IP - * address for. - * - * Returns: A char * -- make sure you call free on this when you are done - * with it. - * - ***************************************************************************/ -char *GetIP(char * iface) -{ - struct ifreq ifr; - struct sockaddr_in *addr; - int s; -#ifdef SUP_IP6 - sfip_t ret; -#endif - - if(iface) - { - /* Set up a dummy socket just so we can use ioctl to find the - ip address of the interface */ - s = socket(PF_INET, SOCK_DGRAM, 0); - if(s == -1) - { - FatalError("Problem establishing socket to find IP address for interface: %s\n", iface); - } - - SnortStrncpy(ifr.ifr_name, iface, strlen(iface) + 1); - -#ifndef WIN32 - if(ioctl(s, SIOCGIFADDR, &ifr) < 0) return NULL; - else -#endif - { - addr = (struct sockaddr_in *) &ifr.ifr_broadaddr; - } - close(s); - -#ifdef SUP_IP6 -// XXX-IPv6 uses ioctl to populate a sockaddr_in structure ... but what if the interface only has an IPv6 address? - sfip_set_raw(&ret, addr, AF_INET); - return SnortStrdup(sfip_ntoa(&ret)); -#else - return SnortStrdup(inet_ntoa(addr->sin_addr)); -#endif - } - else - { - return "unknown"; - } -} - -/**************************************************************************** - * - * Function: GetHostname() - * - * Purpose: To return a string representing the hostname - * - * Arguments: None - * - * Returns: A static char * representing the hostname. - * - ***************************************************************************/ -char *GetHostname(void) -{ -#ifdef WIN32 - DWORD bufflen = 256; - static char buff[256]; - GetComputerName(buff, &bufflen); - return buff; -#else - char * error = "unknown"; - if(getenv("HOSTNAME")) return getenv("HOSTNAME"); - else if(getenv("HOST")) return getenv("HOST"); - else return error; -#endif -} - -/**************************************************************************** - * - * Function: GetTimestamp(register const struct timeval *tvp, int tz) - * - * Purpose: Get an ISO-8601 formatted timestamp for tvp within the tz - * timezone. - * - * Arguments: tvp is a timeval pointer. tz is a timezone. - * - * Returns: char * -- You must free this char * when you are done with it. - * - ***************************************************************************/ -char *GetTimestamp(register const struct timeval *tvp, int tz) -{ - struct tm *lt; /* localtime */ - char * buf; - int msec; - - buf = (char *)SnortAlloc(SMALLBUFFER * sizeof(char)); - - msec = tvp->tv_usec / 1000; - - if (ScOutputUseUtc()) - { - lt = gmtime((time_t *)&tvp->tv_sec); - SnortSnprintf(buf, SMALLBUFFER, "%04i-%02i-%02i %02i:%02i:%02i.%03i", - 1900 + lt->tm_year, lt->tm_mon + 1, lt->tm_mday, - lt->tm_hour, lt->tm_min, lt->tm_sec, msec); - } - else - { - lt = localtime((time_t *)&tvp->tv_sec); - SnortSnprintf(buf, SMALLBUFFER, - "%04i-%02i-%02i %02i:%02i:%02i.%03i+%03i", - 1900 + lt->tm_year, lt->tm_mon + 1, lt->tm_mday, - lt->tm_hour, lt->tm_min, lt->tm_sec, msec, tz); - } - - return buf; -} - -/**************************************************************************** - * - * Function: GetLocalTimezone() - * - * Purpose: Find the offset from GMT for current host - * - * Arguments: none - * - * Returns: int representing the offset from GMT - * - ***************************************************************************/ -int GetLocalTimezone(void) -{ - time_t ut; - struct tm * ltm; - long seconds_away_from_utc; - - time(&ut); - ltm = localtime(&ut); - -#if defined(WIN32) || defined(SOLARIS) || defined(AIX) || defined(HPUX) - /* localtime() sets the global timezone variable, - which is defined in */ - seconds_away_from_utc = timezone; -#else - seconds_away_from_utc = ltm->tm_gmtoff; -#endif - - return seconds_away_from_utc/3600; -} - -/**************************************************************************** - * - * Function: GetCurrentTimestamp() - * - * Purpose: Generate an ISO-8601 formatted timestamp for the current time. - * - * Arguments: none - * - * Returns: char * -- You must free this char * when you are done with it. - * - ***************************************************************************/ -char *GetCurrentTimestamp(void) -{ - struct tm *lt; - struct timezone tz; - struct timeval tv; - struct timeval *tvp; - char * buf; - int tzone; - int msec; - - buf = (char *)SnortAlloc(SMALLBUFFER * sizeof(char)); - - bzero((char *)&tz,sizeof(tz)); - gettimeofday(&tv,&tz); - tvp = &tv; - - msec = tvp->tv_usec/1000; - - if (ScOutputUseUtc()) - { - lt = gmtime((time_t *)&tvp->tv_sec); - SnortSnprintf(buf, SMALLBUFFER, "%04i-%02i-%02i %02i:%02i:%02i.%03i", - 1900 + lt->tm_year, lt->tm_mon + 1, lt->tm_mday, - lt->tm_hour, lt->tm_min, lt->tm_sec, msec); - } - else - { - lt = localtime((time_t *)&tvp->tv_sec); - - tzone = GetLocalTimezone(); - - SnortSnprintf(buf, SMALLBUFFER, - "%04i-%02i-%02i %02i:%02i:%02i.%03i+%03i", - 1900 + lt->tm_year, lt->tm_mon + 1, lt->tm_mday, - lt->tm_hour, lt->tm_min, lt->tm_sec, msec, tzone); - } - - return buf; -} - -/**************************************************************************** - * Function: base64(char * xdata, int length) - * - * Purpose: Insert data into the database - * - * Arguments: xdata => pointer to data to base64 encode - * length => how much data to encode - * - * Make sure you allocate memory for the output before you pass - * the output pointer into this function. You should allocate - * (1.5 * length) bytes to be safe. - * - * Returns: data base64 encoded as a char * - * - ***************************************************************************/ -char * base64(const u_char * xdata, int length) -{ - int count, cols, bits, c, char_count; - unsigned char alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /* 64 bytes */ - char * payloadptr; - char * output; - char_count = 0; - bits = 0; - cols = 0; - - output = (char *)SnortAlloc( ((unsigned int) (length * 1.5 + 4)) * sizeof(char) ); - - payloadptr = output; - - for(count = 0; count < length; count++) - { - c = xdata[count]; - - if(c > 255) - { - ErrorMessage("plugbase.c->base64(): encountered char > 255 (decimal %d)\n If you see this error message a char is more than one byte on your machine\n This means your base64 results can not be trusted", c); - } - - bits += c; - char_count++; - - if(char_count == 3) - { - *output = alpha[bits >> 18]; output++; - *output = alpha[(bits >> 12) & 0x3f]; output++; - *output = alpha[(bits >> 6) & 0x3f]; output++; - *output = alpha[bits & 0x3f]; output++; - cols += 4; - if(cols == 72) - { - *output = '\n'; output++; - cols = 0; - } - bits = 0; - char_count = 0; - } - else - { - bits <<= 8; - } - } - - if(char_count != 0) - { - bits <<= 16 - (8 * char_count); - *output = alpha[bits >> 18]; output++; - *output = alpha[(bits >> 12) & 0x3f]; output++; - if(char_count == 1) - { - *output = '='; output++; - *output = '='; output++; - } - else - { - *output = alpha[(bits >> 6) & 0x3f]; - output++; *output = '='; - output++; - } - } - *output = '\0'; - return payloadptr; -} - -/**************************************************************************** - * - * Function: ascii(u_char *xdata, int length) - * - * Purpose: This function takes takes a buffer "xdata" and its length then - * returns a string of only the printable ASCII characters. - * - * Arguments: xdata is the buffer, length is the length of the buffer in - * bytes - * - * Returns: char * -- You must free this char * when you are done with it. - * - ***************************************************************************/ -char *ascii(const u_char *xdata, int length) -{ - char *d_ptr, *ret_val; - int i,count = 0; - int size; - - if(xdata == NULL) - { - return NULL; - } - - for(i=0;i') /* > */ - count += 4; - } - - size = length + count + 1; - ret_val = (char *) calloc(1,size); - - if(ret_val == NULL) - { - LogMessage("plugbase.c: ascii(): Out of memory, can't log anything!\n"); - return NULL; - } - - d_ptr = ret_val; - - for(i=0;i 0x1F) && (xdata[i] < 0x7F)) - { - if(xdata[i] == '<') - { - SnortStrncpy(d_ptr, "<", size - (d_ptr - ret_val)); - d_ptr+=4; - } - else if(xdata[i] == '&') - { - SnortStrncpy(d_ptr, "&", size - (d_ptr - ret_val)); - d_ptr += 5; - } - else if(xdata[i] == '>') - { - SnortStrncpy(d_ptr, ">", size - (d_ptr - ret_val)); - d_ptr += 4; - } - else - { - *d_ptr++ = xdata[i]; - } - } - else - { - *d_ptr++ = '.'; - } - } - - *d_ptr++ = '\0'; - - return ret_val; -} - -/**************************************************************************** - * - * Function: hex(u_char *xdata, int length) - * - * Purpose: This function takes takes a buffer "xdata" and its length then - * returns a string of hex with no spaces - * - * Arguments: xdata is the buffer, length is the length of the buffer in - * bytes - * - * Returns: char * -- You must free this char * when you are done with it. - * - ***************************************************************************/ -char *hex(const u_char *xdata, int length) -{ - int x; - char *rval = NULL; - char *buf = NULL; - - if (xdata == NULL) - return NULL; - - buf = (char *)calloc((length * 2) + 1, sizeof(char)); - - if (buf != NULL) - { - rval = buf; - - for (x = 0; x < length; x++) - { - SnortSnprintf(buf, 3, "%02X", xdata[x]); - buf += 2; - } - - rval[length * 2] = '\0'; - } - - return rval; -} - - - -char *fasthex(const u_char *xdata, int length) -{ - char conv[] = "0123456789ABCDEF"; - char *retbuf = NULL; - const u_char *index; - const u_char *end; - char *ridx; - - index = xdata; - end = xdata + length; - retbuf = (char *)SnortAlloc(((length * 2) + 1) * sizeof(char)); - ridx = retbuf; - - while(index < end) - { - *ridx++ = conv[((*index & 0xFF)>>4)]; - *ridx++ = conv[((*index & 0xFF)&0x0F)]; - index++; - } - - return retbuf; -} - -/* - * Fatal Integer Parser - * Ascii to Integer conversion with fatal error support - */ -long int xatol(const char *s , const char *etext) -{ - long int val; - char *endptr; - char *default_error = "xatol() error\n"; - - if (etext == NULL) - etext = default_error; - - if (s == NULL) - FatalError("%s: String is NULL\n", etext); - - while (isspace((int)*s)) - s++; - - if (strlen(s) == 0) - FatalError("%s: String is empty\n", etext); - - - /* - * strtoul - errors on win32 : ERANGE (VS 6.0) - * errors on linux : ERANGE, EINVAL - * (for EINVAL, unsupported base which won't happen here) - */ - val = SnortStrtol(s, &endptr, 0); - - if ((errno == ERANGE) || (*endptr != '\0')) - FatalError("%s: Invalid integer input: %s\n", etext, s); - - return val; -} - -/* - * Fatal Integer Parser - * Ascii to Integer conversion with fatal error support - */ -unsigned long int xatou(const char *s , const char *etext) -{ - unsigned long int val; - char *endptr; - char *default_error = "xatou() error\n"; - - if (etext == NULL) - etext = default_error; - - if (s == NULL) - FatalError("%s: String is NULL\n", etext); - - while (isspace((int)*s)) - s++; - - if (strlen(s) == 0) - FatalError("%s: String is empty\n", etext); - - if (*s == '-') - { - FatalError("%s: Invalid unsigned integer - negative sign found, " - "input: %s\n", etext, s); - } - - - /* - * strtoul - errors on win32 : ERANGE (VS 6.0) - * errors on linux : ERANGE, EINVAL - */ - val = SnortStrtoul(s, &endptr, 0); - - if ((errno == ERANGE) || (*endptr != '\0')) - FatalError("%s: Invalid integer input: %s\n", etext, s); - - return val; -} - -unsigned long int xatoup(const char *s , const char *etext) -{ - unsigned long int val = xatou(s, etext); - if ( !val ) - FatalError("%s: must be > 0\n", etext); - return val; -} - -#ifndef SUP_IP6 -char * ObfuscateIpToText(const struct in_addr ip_addr) -#else -char * ObfuscateIpToText(sfip_t *ip) -#endif -{ - static char ip_buf1[INET6_ADDRSTRLEN]; - static char ip_buf2[INET6_ADDRSTRLEN]; - static int buf_num = 0; - int buf_size = INET6_ADDRSTRLEN; - char *ip_buf; -#ifndef SUP_IP6 - uint32_t ip = ip_addr.s_addr; -#endif - - if (buf_num) - ip_buf = ip_buf2; - else - ip_buf = ip_buf1; - - buf_num ^= 1; - ip_buf[0] = 0; - -#ifndef SUP_IP6 - if (ip == 0) - return ip_buf; - - if (snort_conf->obfuscation_net == 0) - { - /* Fully obfuscate - just use 'x' */ - SnortSnprintf(ip_buf, buf_size, "xxx.xxx.xxx.xxx"); - } - else - { - if (snort_conf->homenet != 0) - { - if ((ip & snort_conf->netmask) == snort_conf->homenet) - ip = snort_conf->obfuscation_net | (ip & snort_conf->obfuscation_mask); - } - else - { - ip = snort_conf->obfuscation_net | (ip & snort_conf->obfuscation_mask); - } - - SnortSnprintf(ip_buf, buf_size, "%s", inet_ntoa(*((struct in_addr *)&ip))); - } - -#else - if (ip == NULL) - return ip_buf; - - if (!IS_SET(snort_conf->obfuscation_net)) - { - if (IS_IP6(ip)) - SnortSnprintf(ip_buf, buf_size, "x:x:x:x::x:x:x:x"); - else - SnortSnprintf(ip_buf, buf_size, "xxx.xxx.xxx.xxx"); - } - else - { - sfip_t tmp; - char *tmp_buf; - - IP_COPY_VALUE(tmp, ip); - - if (IS_SET(snort_conf->homenet)) - { - if (sfip_contains(&snort_conf->homenet, &tmp) == SFIP_CONTAINS) - sfip_obfuscate(&snort_conf->obfuscation_net, &tmp); - } - else - { - sfip_obfuscate(&snort_conf->obfuscation_net, &tmp); - } - - tmp_buf = sfip_to_str(&tmp); - SnortSnprintf(ip_buf, buf_size, "%s", tmp_buf); - } -#endif - - return ip_buf; -} - -void PrintPacketData(const uint8_t *data, const uint32_t len) -{ - uint32_t i, j; - uint32_t total_len = 0; - uint8_t hex_buf[16]; - uint8_t char_buf[16]; - char *length_chars = " 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n" - "------------------------------------------------------\n"; - - LogMessage("%s", length_chars); - - for (i = 0; i <= len; i++) - { - if ((i%16 == 0) && (i != 0)) - { - LogMessage("%04x ", total_len); - total_len += 16; - - for (j = 0; j < 16; j++) - { - LogMessage("%02x ", hex_buf[j]); - if (j == 7) - LogMessage(" "); - } - - LogMessage(" "); - - for (j = 0; j < 16; j++) - { - LogMessage("%c", char_buf[j]); - if (j == 7) - LogMessage(" "); - } - - LogMessage("\n"); - } - - if (i == len) - break; - - hex_buf[i%16] = data[i]; - - if (isprint((int)data[i])) - char_buf[i%16] = data[i]; - else - char_buf[i%16] = '.'; - } - - if ((i-total_len) > 0) - { - LogMessage("%04x ", total_len); - - for (j = 0; j < i-total_len; j++) - { - LogMessage("%02x ", hex_buf[j]); - if (j == 7) - LogMessage(" "); - } - - if (j < 8) - LogMessage(" "); - LogMessage("%*s", (16-j)*3, ""); - LogMessage(" "); - - for (j = 0; j < i-total_len; j++) - { - LogMessage("%c", char_buf[j]); - if (j == 7) - LogMessage(" "); - } - } - - LogMessage("\n"); -} - diff --git a/config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.c b/config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.c deleted file mode 100644 index 121920fc..00000000 --- a/config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.c +++ /dev/null @@ -1,462 +0,0 @@ -/* -* -* Copyright (c) 2006 Antonio Benojar -* Copyright (c) 2005 Antonio Benojar -* -* Copyright (c) 2003, 2004 Armin Wolfermann: -* -* s2c_pf_block and s2c_pf_unblock functions are based -* in Armin's Wolfermann pftabled-1.03 functions. -* -* 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 BY THE AUTHOR `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. -*/ - - -/* - TODO - - - num. max ips. - - ipwhitelisting structure - - best ip regex expr -*/ - - -#ifndef LIST_END -#define LIST_END(head) NULL -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "event.h" -#include "decode.h" -#include "plugbase.h" -#include "spo_plugbase.h" -#include "debug.h" -#include "parser.h" -#include "util.h" -#include "log.h" -#include "mstring.h" - -#include "snort.h" - -#include "spo_pf.h" - -#ifdef HAVE_STRINGS_H -#include -#endif - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define PFDEVICE "/dev/pf" - -typedef struct _SpoAlertPfData { - FILE *wlfile; - char *pftable; - int fd; - struct wlist_head head; -} SpoAlertPfData; - -void AlertPfInit(u_char *); -SpoAlertPfData *ParseAlertPfArgs(char *); -void AlertPf(Packet *, char *, void *, Event *); -void AlertPfCleanExit(int, void *); -void AlertPfRestart(int, void *); - -int s2c_pf_init(void); -int s2c_pf_block(int, char *, char *, int); -int s2c_pf_intbl(int, char *, int); - -int s2c_parse_line(char *, FILE*); -int s2c_parse_load_wl(FILE*, struct wlist_head*, int); -int s2c_parse_search_wl(char *, struct wlist_head); -int s2c_parse_free_wl(struct wlist_head*); -int s2c_parse_ip(char *, char *, int); - - -void AlertPfSetup(void) -{ - RegisterOutputPlugin("alert_pf", OUTPUT_TYPE_FLAG__ALERT, AlertPfInit); - - DEBUG_WRAP(DebugMessage(DEBUG_INIT,"Output plugin: AlertPf is setup...\n");); -} - -void AlertPfInit(u_char *args) -{ - SpoAlertPfData *data; - DEBUG_WRAP(DebugMessage(DEBUG_INIT, "Output: AlertPf Initialized\n");); - - data = ParseAlertPfArgs(args); - - DEBUG_WRAP(DebugMessage(DEBUG_INIT,"Linking AlertPf functions to call lists...\n");); - - AddFuncToOutputList(AlertPf, OUTPUT_TYPE_FLAG__ALERT, data); - AddFuncToCleanExitList(AlertPfCleanExit, data); - AddFuncToRestartList(AlertPfRestart, data); -} - - -void AlertPf(Packet *p, char *msg, void *arg, Event *event) -{ - SpoAlertPfData *data = (SpoAlertPfData *)arg; - char *ip; - int ret; - - DEBUG_WRAP(DebugMessage(DEBUG_LOG, "spoink block'n!!\n");); - - ip = inet_ntoa(p->iph->ip_src); - - if (ip == NULL) - FatalError("AlertPf() => inet_ntoa() = NULL\n", strerror(errno)); - - ret = s2c_parse_search_wl(ip, data->head); - - if (ret == 0) - s2c_pf_block(data->fd, data->pftable, inet_ntoa(p->iph->ip_src), 0); - - return; -} - -SpoAlertPfData *ParseAlertPfArgs(char *args) -{ - char **toks; - int num_toks; - SpoAlertPfData *data; - - int res = 0; - - data = (SpoAlertPfData *)SnortAlloc(sizeof(SpoAlertPfData)); - - if(args == NULL) - FatalError("Unable to load pf args\n", strerror(errno)); - - data->fd = s2c_pf_init(); - - if (data->fd == -1) - FatalError("s2c_pf_init() => no pf device\n"); - - DEBUG_WRAP(DebugMessage(DEBUG_LOG,"ParseAlertPfArgs: %s\n", args);); - - toks = mSplit(args, ",", 2, &num_toks, 0); - - if(num_toks <= 1) - FatalError("snort.conf => You must supply TWO arguments for the pf plugin...\n", strerror(errno)); - - if(strstr(toks[0], "..") != NULL) - FatalError("snort.conf => File definition contains \"..\". Do not do that!\n"); - - data->wlfile = fopen(toks[0], "r"); - - if (data->wlfile == NULL) - FatalError("snort.conf => Unable to open whitelist file\n", strerror(errno)); - - if (toks[1] == NULL) - FatalError("snort.conf => No pf table defined\n", strerror(errno)); - else - data->pftable = toks[1]; - - if (s2c_pf_intbl(data->fd, data->pftable, 0) == 0) - FatalError("pf.conf => Table %s don't exists in packet filter\n", data->pftable, strerror(errno)); - - res = s2c_parse_load_wl(data->wlfile, &data->head, 0); - if (res == -1) - FatalError("snort.conf => Unable to load whitelist\n", strerror(errno)); - - return data; -} - -void AlertPfCleanExit(int signal, void *arg) -{ - SpoAlertPfData *data = (SpoAlertPfData *)arg; - DEBUG_WRAP(DebugMessage(DEBUG_LOG,"AlertPfCleanExit\n");); - - s2c_parse_free_wl(&data->head); - fclose(data->wlfile); - close(data->fd); - - free(data); -} - -void AlertPfRestart(int signal, void *arg) -{ - SpoAlertPfData *data = (SpoAlertPfData *)arg; - DEBUG_WRAP(DebugMessage(DEBUG_LOG,"AlertPfRestart\n");); - - s2c_parse_free_wl(&data->head); - fclose(data->wlfile); - close(data->fd); - - free(data); -} - - -int s2c_pf_init(void) -{ - return(open(PFDEVICE, O_RDWR)); -} - -int s2c_pf_block(int dev, char *tablename, char *ip, int debug) -{ - - struct pfioc_table io; - struct pfr_table table; - struct pfr_addr addr; - struct in_addr *net_addr=NULL; - - memset(&io, 0x00, sizeof(struct pfioc_table)); - memset(&table, 0x00, sizeof(struct pfr_table)); - memset(&addr, 0x00, sizeof(struct pfr_addr)); - - strlcpy(table.pfrt_name, tablename, PF_TABLE_NAME_SIZE); - net_addr=(struct in_addr*)malloc(sizeof(struct in_addr)); - - if (net_addr == NULL ) - FatalError("s2c_pf_block() => malloc()\n", strerror(errno)); - - inet_aton(ip, (struct in_addr *)&net_addr); - memcpy(&addr.pfra_ip4addr.s_addr, &net_addr, sizeof(struct in_addr)); - - addr.pfra_af = AF_INET; - addr.pfra_net = 32; - - io.pfrio_table = table; - io.pfrio_buffer = &addr; - io.pfrio_esize = sizeof(struct pfr_addr); - io.pfrio_size = 1; - - if (ioctl(dev, DIOCRADDADDRS, &io)) - FatalError("s2c_pf_block() => ioctl() DIOCRADDADDRS\n", strerror(errno)); - - return(0); -} - -int s2c_pf_intbl(int dev, char * tablename, int debug) -{ - int i; - struct pfioc_table io; - struct pfr_table *table_aux = NULL; - - memset(&io, 0x00, sizeof(struct pfioc_table)); - - io.pfrio_buffer = table_aux; - io.pfrio_esize = sizeof(struct pfr_table); - io.pfrio_size = 0; - - if(ioctl(dev, DIOCRGETTABLES, &io)) - FatalError("s2c_pf_intbl() => ioctl() DIOCRGETTABLES\n", strerror(errno)); - - table_aux = (struct pfr_table*)malloc(sizeof(struct pfr_table)*io.pfrio_size); - - if (table_aux == NULL) - FatalError("s2c_pf_intbl() => malloc()\n", strerror(errno)); - - io.pfrio_buffer = table_aux; - io.pfrio_esize = sizeof(struct pfr_table); - - if(ioctl(dev, DIOCRGETTABLES, &io)) - FatalError("s2c_pf_intbl() => ioctl() DIOCRGETTABLES\n", strerror(errno)); - - for(i=0; i< io.pfrio_size; i++) { - if (!strcmp(table_aux[i].pfrt_name, tablename)) - return 1; - } - - return 0; - -} - - -int s2c_parse_line(char buf[WLMAX] , FILE* wfile) -{ - static char next_ch = ' '; - int i = 0; - - if (feof(wfile)) { - return (0); - } - do { - next_ch = fgetc(wfile); - if (i < WLMAX) - buf[i++] = next_ch; - } while (!feof(wfile) && !isspace(next_ch)); - if (i >= WLMAX) { - return (-1); - } - - buf[i] = '\0'; - return (1); -} - - -int s2c_parse_load_wl(FILE *wfile, struct wlist_head *head, int debug) -{ - - char cad[WLMAX]; - char ret[WLMAX]; - struct ipwlist *ipw2, *ipw1 = NULL; - struct flock lock; - - if (wfile == NULL) - FatalError("s2c_parse_load_wl() => Unable to open whitelist file\n", strerror(errno)); - - memset(&lock, 0x00, sizeof(struct flock)); - lock.l_type = F_RDLCK; - fcntl(fileno(wfile), F_SETLKW, &lock); - - LIST_INIT(head); - - if (s2c_parse_line(cad, wfile) == 1) { - if (s2c_parse_ip(cad, ret, debug) == 1) { - ipw1 = (struct ipwlist*)malloc(sizeof(struct ipwlist)); - if (ipw1 == NULL) - FatalError("s2c_parse_load_wl() => malloc()\n", strerror(errno)); - inet_aton(ret, &ipw1->waddr); - LIST_INSERT_HEAD(head, ipw1, elem); - - } else { - FatalError("s2c_parse_load_wl() => Invalid data in whitelist file\n", strerror(errno)); - } - } - - while(s2c_parse_line(cad, wfile) == 1) { - if (s2c_parse_ip(cad, ret, debug) == 1) { - ipw2 = (struct ipwlist*)malloc(sizeof(struct ipwlist)); - if (ipw2 == NULL) - FatalError("s2c_parse_load_wl() => malloc()\n", strerror(errno)); - inet_aton(ret, &ipw2->waddr); - LIST_INSERT_AFTER(ipw1, ipw2, elem); - ipw1 = ipw2; - } else { - break; - } - - } - - lock.l_type = F_UNLCK; - fcntl(fileno(wfile), F_SETLKW, &lock); - - return (0); -} - -/* XXX: optimize */ - -int -s2c_parse_search_wl(char *ip, struct wlist_head wl) -{ - struct ipwlist *aux2; - char *ip_aux, ip1[IPMAX], ip2[IPMAX]; - int ret; - - strlcpy(ip1, ip, sizeof(ip1)); - - for(aux2=wl.lh_first; aux2 !=NULL; aux2=aux2->elem.le_next) { - ip_aux = inet_ntoa(aux2->waddr); - strlcpy(ip2, ip_aux, sizeof(ip2)); - ret = strcmp(ip1, ip2); - - if (ret == 0) - return 1; - } - return (0); -} - - -int s2c_parse_free_wl(struct wlist_head *wl) -{ - struct ipwlist *aux, *aux2; - for(aux = LIST_FIRST(wl); aux != LIST_END(wl); aux = aux2) { - aux2 = LIST_NEXT(aux, elem); - LIST_REMOVE(aux, elem); - free(aux); - } - if (LIST_EMPTY(wl)) { - return (1); - } else { - FatalError("s2c_parse_free_wl() => Unable to free whitelist\n", strerror(errno)); - return (0); - } -} - -/* XXX: too much complex ? */ - -int s2c_parse_ip(char *cad, char ret[WLMAX], int debug) -{ - int len; - unsigned int enc=1; - regex_t *expr; - regmatch_t *resultado; - expr = (regex_t*)malloc(sizeof(regex_t)); - - bzero(ret, WLMAX); - - if (expr == NULL) - FatalError("s2c_parse_ip() => malloc()\n", strerror(errno)); - - resultado = (regmatch_t*)malloc(sizeof(regmatch_t)); - - if (resultado == NULL) - FatalError("s2c_parse_ip() => malloc()\n", strerror(errno)); - - if (regcomp(expr, REG_ADDR, REG_EXTENDED) !=0) - FatalError("s2c_parse_ip() => regcomp()\n", strerror(errno)); - - if (regexec(expr, cad, 1, resultado, 0) !=0) - enc=0; - - if (enc !=0) { - len = resultado->rm_eo - resultado->rm_so; - memcpy(ret, cad + resultado->rm_so, len); - ret[len]='\0'; - } - - free(resultado); - regfree(expr); - - if(enc) - return (1); - else { - errno = EINVAL; - return (0); - } -} diff --git a/config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.h b/config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.h deleted file mode 100644 index af07dacd..00000000 --- a/config/snort-dev/snortsam-package-code/patches/spoink_patch/spo_pf.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -* -* Copyright (c) 2006 Antonio Benojar -* Copyright (c) 2005 Antonio Benojar -* -* 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 BY THE AUTHOR `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. -*/ - -#ifndef __SPO_PF_H__ -#define __SPO_PF_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define WLMAX 1024 -#define IPMAX 20 -#define REG_ADDR "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}" - - -struct ipwlist { - struct in_addr waddr; - LIST_ENTRY(ipwlist) elem; -}; - -LIST_HEAD(wlist_head, ipwlist); - -void AlertPfSetup(void); - -#endif - - diff --git a/config/snort-dev/snortsam-package-code/snort.xml b/config/snort-dev/snortsam-package-code/snort.xml deleted file mode 100644 index 207fae8b..00000000 --- a/config/snort-dev/snortsam-package-code/snort.xml +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - . - All rights reserved. - */ -/* ========================================================================== */ -/* - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - */ -/* ========================================================================== */ - ]]> - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - Orion - 2.9.1 - Services:2.9.1 pkg v. 2.0 - /usr/local/pkg/snort/snort_install.inc - - Orion - Setup snort specific settings -
    Services
    - /snort/snort_interfaces.php -
    - - snort - snort.sh - snort - Snort is the most widely deployed IDS/IPS technology worldwide. - - - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort.xml - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snortDB - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snortDBrules - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snortDBtemp - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_build.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_download_rules.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_gui.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_head.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_headbase.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_install.inc - - - /usr/local/pkg/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_new.inc - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_alerts.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_barnyard.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_blocked.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_define_servers.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_download_updates.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_help_info.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_edit.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_global.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_rules.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_rules_edit.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_suppress.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_suppress_edit.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_whitelist.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_interfaces_whitelist_edit.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_json_get.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_json_post.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_preprocessors.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_rules.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_rulesets.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_rules_ips.php - - - /usr/local/www/snort/ - 077 - http://www.pfsense.com/packages/config/snort-dev/snort_rulesets_ips.php - - - /usr/local/bin/ - 077 - http://www.pfsense.com/packages/config/snort/bin/oinkmaster_contrib/create-sidmap.pl - - - /usr/local/bin/ - 077 - http://www.pfsense.com/packages/config/snort/bin/oinkmaster_contrib/make_snortsam_map.pl - - - /usr/local/bin/ - 077 - http://www.pfsense.com/packages/config/snort/bin/oinkmaster_contrib/oinkmaster.pl - - - /usr/local/bin/ - 077 - http://www.pfsense.com/packages/config/snort/bin/oinkmaster_contrib/snort_rename.pl - - - - - - - sync_snort_package(); - - - snort_postinstall(); - - - snort_deinstall(); - -
    diff --git a/config/snort-dev/snortsam-package-code/snortDB b/config/snort-dev/snortsam-package-code/snortDB deleted file mode 100644 index c685a368..00000000 Binary files a/config/snort-dev/snortsam-package-code/snortDB and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/snortDBrules b/config/snort-dev/snortsam-package-code/snortDBrules deleted file mode 100644 index 829a589b..00000000 Binary files a/config/snort-dev/snortsam-package-code/snortDBrules and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/snortDBtemp b/config/snort-dev/snortsam-package-code/snortDBtemp deleted file mode 100644 index 56ab2842..00000000 Binary files a/config/snort-dev/snortsam-package-code/snortDBtemp and /dev/null differ diff --git a/config/snort-dev/snortsam-package-code/snort_alerts.php b/config/snort-dev/snortsam-package-code/snort_alerts.php deleted file mode 100644 index 3cb79c5c..00000000 --- a/config/snort-dev/snortsam-package-code/snort_alerts.php +++ /dev/null @@ -1,189 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -$generalSettings = snortSql_fetchAllSettings('snortDB', 'SnortSettings', 'id', '1'); - -$alertnumber = $generalSettings['alertnumber']; - -$arefresh_on = ($generalSettings['arefresh'] == 'on' ? 'checked' : ''); - - $pgtitle = "Services: Snort: Alerts"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - -
    - - - -
    - - -
    - - - - - - - -
    Last 255 Alert EntriesLatest Alert Entries Are Listed First
    - - - - - - - - - - - -
    Save or Remove Logs -
    - - - Save All Log Files. -
    -
    -
    - - - Warning: all logs will be deleted. -
    -
    Auto Refresh and Log View -
    - - - > - Auto Refresh - Default ON. -
    - - Limit entries to view. Default 250. - - - - - - - -
    - - - -
    -
    - - - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_barnyard.php b/config/snort-dev/snortsam-package-code/snort_barnyard.php deleted file mode 100644 index 1cd2113b..00000000 --- a/config/snort-dev/snortsam-package-code/snort_barnyard.php +++ /dev/null @@ -1,289 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -$uuid = $_GET['uuid']; -if (isset($_POST['uuid'])) -$uuid = $_POST['uuid']; - -if ($uuid == '') { - echo 'error: no uuid'; - exit(0); -} - - -$a_list = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - - if (!is_array($a_list)) - { - $a_list = array(); - } - - - - $pgtitle = "Snort: Interface: Barnyard2 Edit"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - -
    - - - -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    General Barnyard2 Settings
    Enable - > - Enable Barnyard2 on this Interface
    - This will enable barnyard2 for this interface. You will also have to set the database credentials.
    -
    Interface - -
    - Choose which interface this rule applies to.
    - Hint: in most cases, you'll want to use WAN here.
    -
    Mysql Settings
    Log to a Mysql Database - -
    - Example: output database: alert, mysql, dbname=snort user=snort host=localhost password=xyz
    - Example: output database: log, mysql, dbname=snort user=snort host=localhost password=xyz
    -
    Advanced Settings
    Advanced configuration pass through - -
    - Arguments here will be automatically inserted into the running barnyard2 configuration. -
      - - -
      - Note: - Please save your settings befor you click start. -
    -
    -
    -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_blocked.php b/config/snort-dev/snortsam-package-code/snort_blocked.php deleted file mode 100644 index fdc12480..00000000 --- a/config/snort-dev/snortsam-package-code/snort_blocked.php +++ /dev/null @@ -1,193 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - - -$generalSettings = snortSql_fetchAllSettings('snortDB', 'SnortSettings', 'id', '1'); - -$blertnumber = $generalSettings['blertnumber']; - -$brefresh_on = ($generalSettings['brefresh'] == 'on' ? 'checked' : ''); - - $pgtitle = "Services: Snort Blocked Hosts"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - -
    - - - -
    - - -
    - - - - - - - -
    Last 500 Blocked.This page lists hosts that have been blocked by Snort.  Hosts are removed every hour.
    - - - - - - - - - - - - - -
    Save or Remove Hosts -
    - - - Save All Blocked Hosts -
    -
    -
    - - - Warning: all hosts will be removed. -
    -
    Auto Refresh and Log View -
    - - - Auto Refresh - > - Default ON. -
    - - Limit entries to view. Default 500. - - - - - - - -
    - - -
    -
    - - - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_build.inc b/config/snort-dev/snortsam-package-code/snort_build.inc deleted file mode 100644 index 2c18d3d3..00000000 --- a/config/snort-dev/snortsam-package-code/snort_build.inc +++ /dev/null @@ -1,1288 +0,0 @@ - \ - cmd_validity STRU < char FRP > \ - cmd_validity ALLO < int [ char R int ] > \ - cmd_validity TYPE < { char AE [ char NTC ] | char I | char L [ number ] } > \ - cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string > \ - cmd_validity PORT < host_port > - -preprocessor ftp_telnet_protocol: ftp client default \ - max_resp_len 256 \ - bounce yes \ - telnet_cmds yes - -EOD; - - $def_ftp_preprocessor_info_chk = $ifaceSettingsArray['ftp_preprocessor']; - if ($def_ftp_preprocessor_info_chk === 'on') { - $def_ftp_preprocessor_type = $snort_ftp_preprocessor; - }else{ - $def_ftp_preprocessor_type = ""; - } - - /* def smtp_preprocessor */ - $snort_smtp_preprocessor = << diff --git a/config/snort-dev/snortsam-package-code/snort_define_servers.php b/config/snort-dev/snortsam-package-code/snort_define_servers.php deleted file mode 100644 index 05e7709e..00000000 --- a/config/snort-dev/snortsam-package-code/snort_define_servers.php +++ /dev/null @@ -1,450 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -$uuid = $_GET['uuid']; -if (isset($_POST['uuid'])) -$uuid = $_POST['uuid']; - -if ($uuid == '') { - echo 'error: no uuid'; - exit(0); -} - - -$a_list = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - - - $pgtitle = "Snort: Interface Define Servers:"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - -
    - - - -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - Note:
    - Please save your settings before you click start.
    - Please make sure there are no spaces in your definitions. -
    Define Servers
    Define DNS_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define DNS_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 53. -
    Define SMTP_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define SMTP_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 25. -
    Define Mail_Ports - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 25,143,465,691. -
    Define HTTP_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define WWW_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define HTTP_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 80. -
    Define SQL_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define ORACLE_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 1521. -
    Define MSSQL_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 1433. -
    Define TELNET_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define TELNET_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 23. -
    Define SNMP_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define SNMP_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 161.
    Define FTP_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define FTP_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 21. -
    Define SSH_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define SSH_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is Pfsense SSH port. -
    Define POP_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define POP2_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 109. -
    Define POP3_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 110. -
    Define IMAP_SERVERS - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define IMAP_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 143. -
    Define SIP_PROXY_IP - -
    - Example: "192.168.1.3/24,192.168.1.4/24". Leave blank to scan all networks. -
    Define SIP_PROXY_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 5060:5090,16384:32768. -
    Define AUTH_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 113. -
    Define FINGER_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 79. -
    Define IRC_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 6665,6666,6667,6668,6669,7000. -
    Define NNTP_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 119. -
    Define RLOGIN_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 513. -
    Define RSH_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 514. -
    Define SSL_PORTS - -
    - Example: Specific ports "25,443" or All ports betwen "5060:5090 . Default is 25,443,465,636,993,995. -
      - - -
      - Note: -
    - Please save your settings before you click start.
    -
    -
    -
    -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_download_rules.inc b/config/snort-dev/snortsam-package-code/snort_download_rules.inc deleted file mode 100644 index 8953a65c..00000000 --- a/config/snort-dev/snortsam-package-code/snort_download_rules.inc +++ /dev/null @@ -1,1036 +0,0 @@ - 0; - "); - - }else{ - - $result = sqlite_query($db, - "SELECT * FROM {$table} where {$type} = '{$id_uuid}'; - "); - } - - if ($type == 'rdbuuid' || $type == 'All') { - $chktable = sqlite_fetch_all($result, SQLITE_ASSOC); - }else{ - $chktable = sqlite_fetch_array($result, SQLITE_ASSOC); - } - - sqlite_close($db); - - return $chktable; - - -} // end func - -function snortSql_updateRuleSetList($type, $value, $file_size, $downloaded, $filename) -{ - - $dbname = 'snortDBtemp'; - $table = 'SnortDownloads'; - $addDate = date(U); - - // do let user pick the DB path - $db = sqlite_open("/var/snort/{$dbname}"); - - if ($type === 'percent2'){ - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$table} SET date = '{$addDate}', percent = '{$value}', filesize = '{$file_size}', downloaded = '{$downloaded}' where filename = '{$filename}'; - "); - } - - - if ($type === 'percent'){ - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$table} SET date = '{$addDate}', percent = '{$value}' where filename = '{$filename}'; - "); - } - - if ($type === 'msg1'){ - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE SnortDownloadsMsg SET date = '{$addDate}', msg = '{$value}' where id = '1'; - "); - } - - if ($type === 'msg2'){ - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE SnortDownloadsMsg SET date = '{$addDate}', msg = '{$value}' where id = '2'; - "); - } - - /* - * INPORTANT: - * Register worker to prevent loops and ghost process - * Needs to be watched, - */ - - if ($type === 'working'){ - - $getmypid = getmypid(); - $getmyfilename = $_SERVER['SCRIPT_NAME']; - - $resultChk = sqlite_query($db, - "SELECT * FROM RegisterWorker WHERE uuid = 'jdjEf!773&h3bhFd6A'; - "); - - $resultChkFinal = sqlite_fetch_all($resultChk, SQLITE_ASSOC); - - if (!empty($resultChkFinal)) { - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE RegisterWorker SET date = '{$addDate}', processid = '{$getmypid}', filename = '{$getmyfilename}', working = '{$value}' where uuid = 'jdjEf!773&h3bhFd6A'; - "); - }else{ - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "INSERT INTO RegisterWorker (date, processid, filename, working, uuid) VALUES ('{$addDate}', '{$getmypid}', '{$getmyfilename}', '{$value}', 'jdjEf!773&h3bhFd6A'); - "); - } - } - - - if ($type === 'snortWait'){ - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$table} SET waittime = '{$addDate}' where filename = '{$filename}'; - "); - } - - if (sqlite_changes($db) < 1){ - sqlite_close($db); - return 'Error in query'; - } - - sqlite_close($db); - - -} - -// reapply rule settings -function reapplyRuleSettings_run($sidRule_array) -{ - - $sid_array = snortSql_fetchAllSettings2('snortDBrules', 'SnortruleSigs', 'rdbuuid', $sidRule_array); - - if (!empty($sid_array)) { - foreach ($sid_array as $sid) - { - if (!empty($sid['enable']) && !empty($sid['signatureid']) && !empty($sid['rdbuuid']) && !empty($sid['signaturefilename'])) { - if ($sid['enable'] === 'on') { - exec('/usr/bin/sed -i \'\' \'s/^# \(.*sid:' . "{$sid['signatureid']}" . ';.*\)/\1/\' /usr/local/etc/snort/snortDBrules/DB/' . "{$sid['rdbuuid']}" . '/rules/' . "{$sid['signaturefilename']}"); - } - - if ($sid['enable'] === 'off') { - exec('/usr/bin/sed -i \'\' \'s/^\(alert.*sid:' . "{$sid['signatureid']}" . ';.*\)/# \1/\' /usr/local/etc/snort/snortDBrules/DB/' . "{$sid['rdbuuid']}" . '/rules/' . "{$sid['signaturefilename']}"); - } - } - } - } - - // NOTES: DO NOT REMOVE BELOW COMMENTS - // returns file pathe of the sid - // $testing = exec("grep -ri 'sid: \?1225; ' /usr/local/etc/snort/snortDBrules/DB/RAjFYOrC04D6/rules | tail -n1 | awk -F: '{print $1}'"); - // see if sid is enabled - // $testing2 = exec("sed -n '/^alert.*sid:1225;.*/p' /usr/local/etc/snort/snortDBrules/DB/RAjFYOrC04D6/rules/snort_x11.rules"); - // enable a sid - // sed -i '' "s/^# \(.*sid:1225;.*\)/\1/" /usr/local/etc/snort/snortDBrules/DB/RAjFYOrC04D6/rules/snort_x11.rules - // disable a sid - // sed -i '' "s/^\(alert.*sid:1225;.*\)/# \1/" /usr/local/etc/snort/snortDBrules/DB/RAjFYOrC04D6/rules/snort_x11.rules - // grep "^alert.*sid:.*;" rules/emerging-worm.rules | grep -oh "\w*sid:[0-9][^*;]\w*" | awk -F: '{print $2}' - // sed -n '/^320 || .*/{p;q;}' rules/ ../etc/sid-msg.map | awk -F '|' '{print $3}' | sed -e 's/^[ \t]*//' - - -} - -function snortCmpareMD5($type, $path1, $path2, $filename_md5) -{ - update_output_window2('ms2', 'Checking ' . $filename_md5 . ' MD5...'); - - if (file_exists("{$path1}/{$filename_md5}")){ - - if ($type == 'string'){ - $md5_check_new = @file_get_contents("{$path1}/{$filename_md5}"); - $md5_check_old = @file_get_contents("{$path2}/{$filename_md5}"); - if ($md5_check_new !== $md5_check_old){ - update_output_window2('ms2', "$filename_md5 MD5s do not match..."); - return false; - } - } - - if ($type == 'md5'){ - //md5 snortrules-snapshot-2905.tar.gz | awk '{print $4}' - $md5_check_new2 = exec("/sbin/md5 {$path1}/{$filename_md5} | /usr/bin/awk '{print $4}'"); - $md5_check_old2 = exec("/sbin/md5 {$path2}/{$filename_md5} | /usr/bin/awk '{print $4}'"); - if ($md5_check_new != $md5_check_old){ - update_output_window2('ms2', "$filename_md5 MD5s do not match..."); - return false; - } - } - - if ($type == 'md5FileChk') { - //md5 snortrules-snapshot-2905.tar.gz | awk '{print $4}' - $md5_check_new = trim(exec("/sbin/md5 {$path1}/{$filename_md5} | /usr/bin/awk '{print $4}'")); - - $md5_check_old = exec("/bin/cat {$path1}/{$filename_md5}.md5"); - - $md5_check_old2 = trim(preg_replace('/"/', '', $md5_check_old)); - - if ($md5_check_new != $md5_check_old2){ - update_output_window2('ms2', "$filename_md5 MD5s do not match..."); - return false; - } - } - - - - } - - update_output_window2('ms2', "$filename_md5 MD5 File Check Passed..."); - return true; -} - - -/* - * update_output_window: update bottom textarea dynamically. - */ -function update_output_window2($type, $text) -{ - if ($type === 'ms1') { - $msg = 1; - } - - if ($type === 'ms2') { - $msg = 2; - } - - if ($GLOBALS['tmp']['snort']['downloadupdate']['console'] != 'on'){ - echo - ' - - '; - ob_flush(); - apc_clear_cache(); - - }else{ - echo "\n" . $type . ': ' . $text; - } - -} - -// returns array that matches pattern, option to replace objects in matches -function snortScanDirFilter2($arrayList, $pattmatch, $pattreplace, $pattreplacewith) -{ - foreach ( $arrayList as $val ) - { - if (preg_match($pattmatch, $val, $matches)) { - if ($pattreplace != '') { - $matches2 = preg_replace($pattreplace, $pattreplacewith, $matches[0]); - $filterDirList[] = $matches2; - }else{ - $filterDirList[] = $matches[0]; - } - } - } - return $filterDirList; -} - -// set page vars -$generalSettings = snortSql_fetchAllSettings2('snortDB', 'SnortSettings', 'id', '1'); - -// Setup file names and dir -$tmpfname = '/usr/local/etc/snort/snort_download'; -$snortdir = '/usr/local/etc/snort'; -$snortdir_rules = '/usr/local/etc/snort/snortDBrules/snort_rules'; -$emergingdir_rules = '/usr/local/etc/snort/snortDBrules/emerging_rules'; -$pfsensedir_rules = '/usr/local/etc/snort/snortDBrules/pfsense_rules'; -$customdir_rules = '/usr/local/etc/snort/snortDBrules/custom_rules'; -$snort_filename_md5 = 'snortrules-snapshot-2905.tar.gz.md5'; -$snort_filename = 'snortrules-snapshot-2905.tar.gz'; -$emergingthreats_filename_md5 = 'emerging.rules.tar.gz.md5'; -$emergingthreats_filename = 'emerging.rules.tar.gz'; -$pfsense_rules_filename_md5 = 'pfsense_rules.tar.gz.md5'; -$pfsense_rules_filename = 'pfsense_rules.tar.gz'; - -// START of MAIN function -function sendUpdateSnortLogDownload($console) -{ - - if ($console === 'console'){ - $GLOBALS['tmp']['snort']['downloadupdate']['console'] = 'on'; - } - - if ($console !== 'console') { - - echo - ' - - '; - - } - - - //bring in the global vars - global $generalSettings, $tmpfname, $snortdir, $snortdir_rules, $emergingdir_rules, $pfsensedir_rules, $customdir_rules, $snort_filename_md5, $snort_filename, $emergingthreats_filename_md5, $emergingthreats_filename, $pfsense_rules_filename_md5, $pfsense_rules_filename; - - /* Make shure snortdir exits */ - if (!file_exists("{$snortdir}")) { - exec("/bin/mkdir -p {$snortdir}"); - } - if (!file_exists("{$tmpfname}")) { - exec("/bin/mkdir -p {$tmpfname}"); - } - if (!file_exists("{$snortdir_rules}")) { - exec("/bin/mkdir -p {$snortdir_rules}"); - } - if (!file_exists("{$emergingdir_rules}")) { - exec("/bin/mkdir -p {$emergingdir_rules}"); - } - if (!file_exists("{$pfsensedir_rules}")) { - exec("/bin/mkdir -p {$pfsensedir_rules}"); - } - if (!file_exists("{$customdir_rules}")) { - exec("/bin/mkdir -p {$customdir_rules}"); - } - if (!file_exists("{$snortdir}/signatures")) { - exec("/bin/mkdir -p {$snortdir}/signatures"); - } - if (!file_exists('/usr/local/lib/snort/dynamicrules/')) { - exec('/bin/mkdir -p /usr/local/lib/snort/dynamicrules/'); - } - - - /* Set user agent to Mozilla */ - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - ini_set("memory_limit","150M"); - - - // Get file that does not use redirects, mostly for none snort.org downloads - function snort_file_get_contents($tmpfname, $snort_filename, $snort_UrlGet) - { - if (!file_exists("{$tmpfname}/{$snort_filename}") || filesize("{$tmpfname}/{$snort_filename}") <= 0){ - update_output_window2('ms2', 'Downloading ' . $snort_filename. ' MD5...'); - ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - $file = file_get_contents("$snort_UrlGet/{$snort_filename}"); // use a @ infront of file_get_contents when in production - $f = fopen("{$tmpfname}/{$snort_filename}", 'w'); - fwrite($f, $file); - fclose($f); - update_output_window2('ms2', 'Finnished Downloading ' . $snort_filename. ' MD5...'); - } - } - - function read_header2($ch, $string) { - global $file_size, $fout; - $length = strlen($string); - $regs = ""; - ereg("(Content-Length:) (.*)", $string, $regs); - if($regs[2] <> "") { - $file_size = intval($regs[2]); - } - ob_flush(); - return $length; - } - - function read_body2($ch, $string) { - global $fout, $file_size, $downloaded, $sendto, $static_status, $static_output, $lastseen; - global $pkg_interface; - $length = strlen($string); - $downloaded += intval($length); - if($file_size > 0) { - $downloadProgress = round(100 * (1 - $downloaded / $file_size), 0); - $downloadProgress = 100 - $downloadProgress; - } else - $downloadProgress = 0; - if($lastseen <> $downloadProgress and $downloadProgress < 101) { - if($sendto == "status") { - if($pkg_interface == "console") { - if(substr($downloadProgress,2,1) == "0" || count($downloadProgress) < 2) { - $tostatus = $static_status . $downloadProgress . "%"; - update_status($tostatus); - } - } else { - $tostatus = $static_status . $downloadProgress . "%"; - update_status($tostatus); - } - } else { - if($pkg_interface == "console") { - if(substr($downloadProgress,2,1) == "0" || count($downloadProgress) < 2) { - $tooutput = $static_output . $downloadProgress . "%"; - update_output_window($tooutput); - } - } else { - $tooutput = $static_output . $downloadProgress . "%"; - update_output_window($tooutput); - } - } - update_progress_bar($downloadProgress); - $lastseen = $downloadProgress; - } - if($fout) - fwrite($fout, $string); - ob_flush(); - return $length; - } - - /* - * update_progress_bar($percent): updates the javascript driven progress bar. - */ - function update_progress_bar2($percent, $file_size, $downloaded) - { - if ($GLOBALS['tmp']['snort']['downloadupdate']['console'] != 'on') { - if (!empty($percent)) { - echo - ' - - '; - } - - }else{ - echo "\n" . 'percent: ' . $percent . ' filesize: ' . $file_size . ' downloaded: ' . $downloaded; - } - } - - - function read_body_firmware($ch, $string) - { - global $fout, $file_size, $downloaded, $counter; - $length = strlen($string); - $downloaded += intval($length); - $downloadProgress = round(100 * (1 - $downloaded / $file_size), 0); - $downloadProgress = 100 - $downloadProgress; - $counter++; - if($counter > 150) { - update_progress_bar2($downloadProgress, $file_size, $downloaded); - flush(); - $counter = 0; - } - fwrite($fout, $string); - return $length; - } - - function download_file_with_progress_bar2($url_file, $destination, $workingfile, $readbody = 'read_body2') - { - global $ch, $fout, $file_size, $downloaded; - $file_size = 1; - $downloaded = 1; - $destination_file = $destination . '/' . $workingfile; - - /* open destination file */ - $fout = fopen($destination_file, "wb"); - - /* - * Originally by Author: Keyvan Minoukadeh - * Modified by Scott Ullrich to return Content-Length size - */ - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url_file); - curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header2'); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_WRITEFUNCTION, $readbody); - curl_setopt($ch, CURLOPT_NOPROGRESS, '1'); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, '5'); - curl_setopt($ch, CURLOPT_TIMEOUT, 0); - - curl_exec($ch); - $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); - if($fout) - fclose($fout); - curl_close($ch); - return ($http_code == 200) ? true : $http_code; - } - -// ----------------------------------------------------- Begin Code -------------------------------------------- - - - // rm all tmp filea - @exec("/bin/rm -r $tmpfname/*"); - - // Set all downloads to be false, download by default - - $snort_md5_check_ok = false; - $emerg_md5_check_ok = false; - $pfsense_md5_check_ok = false; - - // define checks - $oinkid = $generalSettings['oinkmastercode']; - - $emergingthreatscode = $generalSettings['emergingthreatscode']; - - // dsable downloads if there settings are off - if ($generalSettings['snortdownload'] === 'off') { - $snort_md5_check_ok = true; - } - - if ($generalSettings['emergingthreatsdownload'] == 'off') { - $emerg_md5_check_ok = true; - } - - if ($oinkid == '' && $generalSettings['snortdownload'] === 'on') { - update_output_window2('ms1', 'Snort Error!'); - update_output_window2('ms2', 'You must obtain an oinkid from snort.org and set its value in the Snort settings tab.'); - exec("/usr/bin/logger -p daemon.info -i -t SnortStartup 'You must obtain an oinkid from snort.org and set its value in the Snort settings tab.'"); - return false; - } - - if ($emergingthreatscode === '' && $generalSettings['snortdownload'] === 'pro') { - update_output_window2('ms1', 'Snort Error!'); - update_output_window2('ms2', 'You must obtain an emergingthreat pro id from emergingthreatspro.com and set its value in the Snort settings tab.'); - exec("/usr/bin/logger -p daemon.info -i -t SnortStartup 'You must obtain an emergingthreat pro id from emergingthreatspro.com and set its value in the Snort settings tab.'"); - return false; - } - - if ($generalSettings['snortdownload'] === 'off' && $generalSettings['emergingthreatsdownload'] === 'off') { // note: basic and pro - update_output_window2('ms1', 'Snort Error!'); - update_output_window2('ms2', 'SnortStartup: No rules have been selected to download.'); - exec("/usr/bin/logger -p daemon.info -i -t SnortStartup 'No rules have been selected to download.'"); - return false; - } - - /* - * Check MD5s and MARK - * - */ - - update_output_window2('ms1', 'Starting MD5 checks...'); - - // check is we need to wait - update_output_window2('ms2', 'Checking Wait Status for Snort.org...'); - $getSnort_filename_Waittime_chk = snortSql_fetchAllSettings2('snortDBtemp', 'SnortDownloads', 'filename', $snort_filename); - - if (date(U) > $getSnort_filename_Waittime_chk['waittime'] + 900) { - update_output_window2('ms2', 'Snort.org Wait Time Status: OK...'); - }else{ - update_output_window2('ms2', 'Snort.org Wait Time Status: Wait 15 min Please...'); - $snort_md5_check_ok = true; - $snort_wait = true; - } - - // check is we need to wait - update_output_window2('ms2', 'Checking Wait Status for Emergingthreats.net...'); - $getEmergingthreats_filename_Waittime_chk = snortSql_fetchAllSettings2('snortDBtemp', 'SnortDownloads', 'filename', $emergingthreats_filename); - - if (date(U) > $getEmergingthreats_filename_Waittime_chk['waittime'] + 900) { - update_output_window2('ms2', 'Emergingthreats.net Wait Time Status: OK...'); - }else{ - update_output_window2('ms2', 'Emergingthreats.net Wait Time Status: Wait 15 min Please...'); - $emerg_md5_check_ok = true; - $emerg_wait = true; - } - - // if all rules need wait stop - if ($snort_wait === true && $emerg_wait === true) { - return false; - } - - // download snort.org md5 and compare - if ($snort_md5_check_ok === false) { - - snort_file_get_contents($tmpfname, $snort_filename_md5, 'http://www.snort.org/pub-bin/oinkmaster.cgi/' . $oinkid); - snortSql_updateRuleSetList('percent', '100', '', '', $snort_filename_md5); // finsh percent - - // if snort.org md5 do not match - if(snortCmpareMD5('string', $tmpfname, $snortdir_rules, $snort_filename_md5)) { - $snort_md5_check_ok = true; - } - - } - - // download emergingthreats.net md5 and compare - if ($emerg_md5_check_ok === false) { - - snort_file_get_contents($tmpfname, $emergingthreats_filename_md5, 'http://rules.emergingthreats.net/open/snort-2.9.0'); - snortSql_updateRuleSetList('percent', '100', '', '', $emergingthreats_filename_md5); // finsh percent - - // if emergingthreats.net md5 do not match - if(snortCmpareMD5('string', $tmpfname, $emergingdir_rules, $emergingthreats_filename_md5)) { - $emerg_md5_check_ok = true; - } - - } - - // download pfsense.org md5 and compare - snort_file_get_contents($tmpfname, $pfsense_rules_filename_md5, 'http://www.pfsense.com/packages/config/snort/pfsense_rules'); - snortSql_updateRuleSetList('percent', '100', '', '', $pfsense_rules_filename_md5); // finsh percent - - // if pfsense.org md5 do not match - if(snortCmpareMD5('string', $tmpfname, $pfsensedir_rules, $pfsense_rules_filename_md5)) { - $pfsense_md5_check_ok = true; - } - - /* - * If all rule type is not check clean up. - */ - - /* Make Clean Snort Directory emergingthreats not checked */ - if ($snort_md5_check_ok === false && $emergingthreatsdownload === 'off') { - update_output_window2('ms1', 'Cleaning the emergingthreats Directory...'); - exec("/bin/rm {$snortdir}/emerging_rules/*.rules"); - exec("/bin/rm {$snortdir}/version.txt"); - update_output_window2('ms2', 'Done cleaning emrg direcory.'); - } - - /* Make Clean Snort Directory snort.org not checked */ - if ($emerg_md5_check_ok === false && $snortdownload !== 'on') { - update_output_window2('ms1', 'Cleaning the snort Directory...'); - exec("/bin/rm {$snortdir}/snort_rules/*.rules"); - exec("/bin/rm {$snortdir}/snortrules-snapshot-2905.tar.gz.md5"); - update_output_window2('ms2', 'Done cleaning snort direcory.'); - } - - - /* Check if were up to date exits */ - if ($snort_md5_check_ok === true && $emerg_md5_check_ok === true && $pfsense_md5_check_ok === true) { - update_output_window2('ms1', 'Your rules are up to date...'); - return false; - } - - - /* You are Not Up to date, always stop snort when updating rules for low end machines */; - update_output_window2('ms1', 'You are NOT up to date...'); - update_output_window2('ms2', 'Stopping Snort and Barnyard2 service...'); - $chk_if_snort_up = exec('pgrep -x snort'); - $chk_if_barnyad_up = exec('pgrep -x barnyad2'); - if ($chk_if_snort_up != '') { - exec('/usr/bin/touch /tmp/snort_download_halt.pid'); // IMPORTANT: incase of script crash or error, Mabe use DB - exec('/usr/bin/killall snort'); - if ($chk_if_barnyad_up != ''){ - exec('/usr/bin/killall barnyad2'); - } - sleep(2); - } - - - /* download snortrules file */ - if ($snort_md5_check_ok === false) { - - $GLOBALS['tmp']['snort']['downloadupdate']['workingfile'] = $snort_filename; - update_output_window2('ms1', 'Snort.org: Starting Download...'); - update_output_window2('ms2', 'May take a while...'); - download_file_with_progress_bar2("http://www.snort.org/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename}", $tmpfname, $snort_filename, "read_body_firmware"); - //download_file_with_progress_bar2("http://theseusnetworking.com/pub-bin/oinkmaster.cgi/{$oinkid}/{$snort_filename}", $tmpfname, $snort_filename, "read_body_firmware"); - update_progress_bar2(100, '', ''); // finsh percent - snortSql_updateRuleSetList('percent', '100', '', '', $snort_filename); // finsh percent, add date time finnished - update_output_window2('ms2', 'Snort.org: Finished Download...'); - - // if md5 does not match then the file is bad or snort.org says wait 15 min - update_output_window2('ms1', 'Snort.org MD5 File Check ...'); - if (!snortCmpareMD5('md5FileChk', $tmpfname, '', $snort_filename)) { - - $snort_filename_wait_ck = exec("/usr/bin/egrep '\bYou must wait 15\b' {$tmpfname}/{$snort_filename}"); - if ($snort_filename_wait_ck != '') { - update_output_window2('ms2', 'Snort.org: You must wait 15 min...'); - } - - // disable snort.org download - $snort_md5_check_ok = true; - $snort_filename_corrupted = true; - - } - } - - /* download emergingthreats file */ - if ($emerg_md5_check_ok === false) { - - $GLOBALS['tmp']['snort']['downloadupdate']['workingfile'] = $emergingthreats_filename; - update_output_window2('ms1', 'Emergingthreats.net: Starting Download...'); - update_output_window2('ms2', 'May take a while...'); - download_file_with_progress_bar2("http://rules.emergingthreats.net/open/snort-2.9.0/{$emergingthreats_filename}", $tmpfname, $emergingthreats_filename, "read_body_firmware"); - update_progress_bar2(100, '', ''); // finsh percent - snortSql_updateRuleSetList('percent', '100', '', '', $emergingthreats_filename); // finsh percent - update_output_window2('ms2', 'Emergingthreats.net: Finished Download...'); - - // if md5 does not match then the file is bad or snort.org says wait 15 min - update_output_window2('ms1', 'Emergingthreats MD5 File Check ...'); - if (!snortCmpareMD5('md5FileChk', $tmpfname, '', $emergingthreats_filename)) { - - // disable snort.org download - $emerg_md5_check_ok = true; - $emerg_filename_corrupted = true; - - } - } - - /* download pfsense rule file */ - if ($pfsense_md5_check_ok === false) { - - $GLOBALS['tmp']['snort']['downloadupdate']['workingfile'] = $pfsense_rules_filename; - update_output_window2('ms1', 'pfSense.org: Starting Download...'); - update_output_window2('ms2', 'May take a while...'); - download_file_with_progress_bar2("http://www.pfsense.com/packages/config/snort/pfsense_rules/{$pfsense_rules_filename}", $tmpfname, $pfsense_rules_filename, "read_body_firmware"); - update_progress_bar2(100, '', ''); // finsh percent - snortSql_updateRuleSetList('percent', '100', '', '', $pfsense_rules_filename); // finsh percent - update_output_window2('ms2', 'pfSense.org: Finished Download...'); - - // if md5 does not match then the file is bad or snort.org says wait 15 min - update_output_window2('ms1', 'pfSense.org MD5 File Check ...'); - if (!snortCmpareMD5('md5FileChk', $tmpfname, '', $pfsense_rules_filename)) { - - // disable snort.org download - $pfsense_md5_check_ok = true; - - } - } - - // if both files are corrupted stop - if ($snort_filename_corrupted === true && $emerg_filename_corrupted === true) { - update_output_window2('ms1', 'Snort.org and Emergingthreats.net files are corrupted.'); - update_output_window2('ms2', 'Stoping Script...'); - return false; - } - - /* - * START: Untar Files - */ - - // Untar snort rules file individually to help people with low system specs - if ($snort_md5_check_ok === false && file_exists("{$tmpfname}/{$snort_filename}")) { - - update_output_window2('ms1', 'Extracting Snort.org rules...'); - update_output_window2('ms2', 'May take a while...'); - - function build_SnortRuleDir() - { - global $tmpfname, $snortdir, $snortdir_rules, $snort_filename; - - // find out if were in 1.2.3-RELEASE - $pfsense_ver_chk = exec('/bin/cat /etc/version'); - if ($pfsense_ver_chk === '1.2.3-RELEASE') { - $pfsense_stable = 'yes'; - }else{ - $pfsense_stable = 'no'; - } - - // get the system arch - $snort_arch_ck = exec('/usr/bin/uname -m'); - if ($snort_arch_ck === 'i386') { - $snort_arch = 'i386'; - }else{ - $snort_arch = 'x86-64'; // amd64 - } - - if ($pfsense_stable === 'yes') { - $freebsd_version_so = 'FreeBSD-7-3'; - }else{ - $freebsd_version_so = 'FreeBSD-8-1'; - } - - // extract snort.org rules and add prefix to all snort.org files - @exec("/bin/rm -r {$snortdir_rules}/rules"); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir_rules} rules/"); - - $snort_dirList = scandir("{$snortdir_rules}/rules"); // Waning: only in php 5 - $snortrules_filterList = snortscandirfilter2($snort_dirList, '/.*\.rules/', '/\.rules/', ''); - - if (!empty($snortrules_filterList)) { - foreach ($snortrules_filterList as $snort_rule_move) - { - exec("/bin/mv -f {$snortdir_rules}/rules/{$snort_rule_move}.rules {$snortdir_rules}/rules/snort_{$snort_rule_move}.rules"); - } - } - - // extract so rules - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir_rules} so_rules/precompiled/$freebsd_version_so/$snort_arch/2.9.0.5/"); - exec("/bin/mv -f {$snortdir_rules}/so_rules/precompiled/$freebsd_version_so/$snort_arch/2.9.0.5/* /usr/local/lib/snort/dynamicrules/"); - - // list so_rules and exclude dir - exec("/usr/bin/tar --exclude='precompiled' --exclude='src' -tf {$tmpfname}/{$snort_filename} so_rules", $so_rules_list); - - $so_rulesPattr = array('/\//', '/\.rules/'); - $so_rulesPattw = array('', ''); - - // build list of so rules - $so_rules_filterList = snortscandirfilter2($so_rules_list, '/\/.*\.rules/', $so_rulesPattr, $so_rulesPattw); - - if (!empty($so_rules_filterList)) { - // cp rule to so tmp dir - foreach ($so_rules_filterList as $so_rule) - { - - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir_rules} so_rules/{$so_rule}.rules"); - - } - // mv and rename so rules - foreach ($so_rules_filterList as $so_rule_move) - { - exec("/bin/mv -f {$snortdir_rules}/so_rules/{$so_rule_move}.rules {$snortdir_rules}/rules/snort_{$so_rule_move}.so.rules"); - } - } - - exec("/bin/rm -r {$snortdir_rules}/so_rules"); - - // extract base etc files - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} etc/"); - - } - build_SnortRuleDir(); - // cp md5 to main snort dir - exec("/bin/cp {$tmpfname}/{$snort_filename_md5} {$snortdir_rules}/{$snort_filename_md5}"); - update_output_window2('ms2', 'Done extracting Snort.org Rules.'); - } - - /* Untar emergingthreats rules to tmp */ - if ($emerg_md5_check_ok === false && file_exists("{$tmpfname}/{$emergingthreats_filename}")) { - if (file_exists("{$tmpfname}/{$emergingthreats_filename}")) { - update_output_window2('ms1', 'Extracting Emergingthreats Rules...'); - update_output_window2('ms2', 'May take a while...'); - @exec("/bin/rm -r {$emergingdir_rules}/rules"); - exec("/usr/bin/tar xzf {$tmpfname}/{$emergingthreats_filename} -C {$emergingdir_rules} rules/"); - exec("/bin/cp {$tmpfname}/{$emergingthreats_filename_md5} {$emergingdir_rules}/{$emergingthreats_filename_md5}"); - update_output_window2('ms2', 'Done extracting Emergingthreats.net Rules.'); - } - } - - /* Untar Pfsense rules to tmp */ - if ($pfsense_md5_check_ok === false && file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { - if (file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { - update_output_window2('ms1', 'Extracting Pfsense rules...'); - update_output_window2('ms1', 'May take a while...'); - @exec("/bin/rm -r {$pfsensedir_rules}/rules"); - exec("/usr/bin/tar xzf {$tmpfname}/{$pfsense_rules_filename} -C {$pfsensedir_rules} rules/"); - exec("/bin/cp {$tmpfname}/{$pfsense_rules_filename_md5} {$pfsensedir_rules}/{$pfsense_rules_filename_md5}"); - update_output_window2('ms2', 'Done extracting pfSense.org Rules.'); - - } - } - - /* double make shure cleanup emerg rules that dont belong */ - if (file_exists("/usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so")) { - exec("/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so"); - exec("/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example\*"); - } - - // make sure default rules are in the right format - update_output_window2('ms1', 'Reformatting Rules To One Standard...'); - update_output_window2('ms2', 'Please Wait...'); - exec("/usr/bin/sed -i '' 's/^[ \t]*//' {$snortdir_rules}/rules/*.rules"); // remove white spaces from begining of line - exec("/usr/bin/sed -i '' 's/^#alert*/\# alert/' {$snortdir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^##alert*/\# alert/' {$snortdir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^## alert*/\# alert/' {$snortdir_rules}/rules/*.rules"); - - exec("/usr/bin/sed -i '' 's/^[ \t]*//' {$emergingdir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^#alert*/\# alert/' {$emergingdir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^##alert*/\# alert/' {$emergingdir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^## alert*/\# alert/' {$emergingdir_rules}/rules/*.rules"); - - exec("/usr/bin/sed -i '' 's/^[ \t]*//' {$pfsensedir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^#alert*/\# alert/' {$pfsensedir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^##alert*/\# alert/' {$pfsensedir_rules}/rules/*.rules"); - exec("/usr/bin/sed -i '' 's/^## alert*/\# alert/' {$pfsensedir_rules}/rules/*.rules"); - update_output_window2('ms2', 'Done...'); - - /* create a msg-map for snort */ - update_output_window2('ms1', 'Updating Alert Sid Messages...'); - update_output_window2('ms2', 'Please Wait...'); - exec("/usr/local/bin/perl /usr/local/bin/create-sidmap.pl {$snortdir_rules}/rules > /usr/local/etc/snort/etc/sid-msg.map"); - exec("/usr/local/bin/perl /usr/local/bin/create-sidmap.pl {$emergingdir_rules}/rules >> /usr/local/etc/snort/etc/sid-msg.map"); - exec("/usr/local/bin/perl /usr/local/bin/create-sidmap.pl {$pfsensedir_rules}/rules >> /usr/local/etc/snort/etc/sid-msg.map"); - update_output_window2('ms2', 'Done...'); - - // create default dir - if (!file_exists('/usr/local/etc/snort/snortDBrules/DB/default/rules')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snortDBrules/DB/default/rules'); - } - - // cp new rules to default dir - exec('/bin/rm /usr/local/etc/snort/snortDBrules/DB/default/rules/*.rules'); - exec("/bin/cp {$snortdir_rules}/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/default/rules"); - exec("/bin/cp {$emergingdir_rules}/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/default/rules"); - exec("/bin/cp {$pfsensedir_rules}/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/default/rules"); - - - // reapplay rules from DB cp base rules to dirs - $sidOnOff_array = snortSql_fetchAllSettings2('snortDBrules', 'Snortrules', 'All', ''); - - if (!empty($sidOnOff_array)) { - update_output_window2('ms1', 'Reapplying User Settings...'); - update_output_window2('ms2', 'Please Wait...'); - foreach ($sidOnOff_array as $preSid_Array) - { - if (!file_exists("/usr/local/etc/snort/snortDBrules/DB/{$preSid_Array['uuid']}/rules")) { - exec("/bin/mkdir -p /usr/local/etc/snort/snortDBrules/DB/{$preSid_Array['uuid']}/rules"); - } - - exec("/bin/rm /usr/local/etc/snort/snortDBrules/DB/{$preSid_Array['uuid']}/rules/*.rules"); - exec("/bin/cp {$snortdir_rules}/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$preSid_Array['uuid']}/rules"); - exec("/bin/cp {$emergingdir_rules}/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$preSid_Array['uuid']}/rules"); - exec("/bin/cp {$pfsensedir_rules}/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$preSid_Array['uuid']}/rules"); - reapplyRuleSettings_run($preSid_Array['uuid']); - update_output_window2('ms2', 'Done...'); - } - } - - // cp snort conf's to Ifaces - $ifaceConfMaps_array = snortSql_fetchAllSettings2('snortDB', 'SnortIfaces', 'All', ''); - - if (!empty($ifaceConfMaps_array)) { - update_output_window2('ms1', 'Reapplying User Settings...'); - update_output_window2('ms2', 'Please Wait...'); - foreach ($ifaceConfMaps_array as $preIfaceConfMaps_array) - { - // create iface dir if missing - if (!file_exists("/usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}")) { - exec("/bin/mkdir -p /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}"); - } - - // create rules dir soft link if setting is default - if ($preIfaceConfMaps_array['ruledbname'] === 'default' || $preIfaceConfMaps_array['ruledbname'] === '') { - if (!file_exists("/usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}/rules") && file_exists('/usr/local/etc/snort/snortDBrules/DB/default/rules')) { - exec("/bin/ln -s /usr/local/etc/snort/snortDBrules/DB/default/rules /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}/rules"); - } - } - - // create rules dir soft link if setting is not default - if ($preIfaceConfMaps_array['ruledbname'] !== 'default' || $preIfaceConfMaps_array['ruledbname'] != '') { - if (!file_exists("/usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}/rules") && file_exists("/usr/local/etc/snort/snortDBrules/DB/{$preIfaceConfMaps_array['ruledbname']}/rules")) { - exec("/bin/ln -s /usr/local/etc/snort/snortDBrules/DB/{$preIfaceConfMaps_array['ruledbname']}/rules /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}/rules"); - } - } - - exec("/bin/cp {$snortdir}/etc/*.config /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}"); - exec("/bin/cp {$snortdir}/etc/*.conf /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}"); - exec("/bin/cp {$snortdir}/etc/*.map /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}"); - exec("/bin/cp {$snortdir}/etc/generators /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}"); - exec("/bin/cp {$snortdir}/etc/sid /usr/local/etc/snort/sn_{$preIfaceConfMaps_array['uuid']}"); - - reapplyRuleSettings_run($preSid_Array['uuid']); - update_output_window2('ms2', 'Done...'); - } - } - - - // remove old $tmpfname files */ - update_output_window2('ms1', 'Removing old files...'); - update_output_window2('ms2', 'Working...'); - if (file_exists('/usr/local/etc/snort/tmp')) { - exec("/bin/rm -r /usr/local/etc/snort/tmp/snort_rules_up"); - exec("/bin/rm -r /usr/local/etc/snort/tmp/rules_bk"); - apc_clear_cache(); - } - update_output_window2('ms2', 'Done...'); - - // php code to flush out cache some people are reportting missing files this might help - apc_clear_cache(); - exec("/bin/sync ;/bin/sync ;/bin/sync ;/bin/sync ;/bin/sync ;/bin/sync ;/bin/sync ;/bin/sync"); - - // make all dirs snorts - exec("/usr/sbin/chown -R snort:snort /var/log/snort"); - exec("/usr/sbin/chown -R snort:snort /usr/local/etc/snort"); - exec("/usr/sbin/chown -R snort:snort /usr/local/lib/snort"); - exec("/bin/chmod -R 755 /var/log/snort"); - exec("/bin/chmod -R 755 /usr/local/etc/snort"); - exec("/bin/chmod -R 755 /usr/local/lib/snort"); - - - update_output_window2('ms1', 'Finnished Updateing...'); - update_output_window2('ms2', 'Finnished Updateing...'); - - - // if snort is running hard restart, if snort is not running do nothing - - // TODO: Restart Ifaces - -// ----------------------------------------------------- End Code -------------------------------------------- - -} // -------------------- END Main function ------------ - -//$argv[1] = 'console'; - - //$getWorkerStat = snortSql_fetchAllSettings2('snortDBtemp', 'RegisterWorker', 'uuid', 'jdjEf!773&h3bhFd6A'); - - //if ($getWorkerStat['working'] !== 'on') { - //snortSql_updateRuleSetList2('working', 'on', '', '', ''); // Register Worker on - //sendUpdateSnortLogDownload($argv[1]); // start main function - //snortSql_updateRuleSetList2('working', 'off', '', '', ''); // Register Worker off - //} - - - - - -?> \ No newline at end of file diff --git a/config/snort-dev/snortsam-package-code/snort_download_updates.php b/config/snort-dev/snortsam-package-code/snort_download_updates.php deleted file mode 100644 index 445671bd..00000000 --- a/config/snort-dev/snortsam-package-code/snort_download_updates.php +++ /dev/null @@ -1,365 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - - */ - -// disable csrf for downloads, progressbar did not work because of this -$nocsrf = true; - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); -require_once("/usr/local/pkg/snort/snort_download_rules.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars -if (isset($_GET['updatenow'])) { - $updatenow = $_GET['updatenow']; -} - -header("Cache-Control: no-cache, must-revalidate"); -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); - -// get dates of md5s - -$tmpSettingsSnort = 'N/A'; -$tmpSettingsSnortChk = snortSql_fetchAllSettings2('snortDBtemp', 'SnortDownloads', 'filename', 'snortrules-snapshot-2905.tar.gz'); -if (!empty($tmpSettingsSnortChk)) { - $tmpSettingsSnort = date('l jS \of F Y h:i:s A', $tmpSettingsSnortChk[date]); -} - -$tmpSettingsEmerging = 'N/A'; -$tmpSettingsEmergingChk = snortSql_fetchAllSettings2('snortDBtemp', 'SnortDownloads', 'filename', 'emerging.rules.tar.gz'); -if (!empty($tmpSettingsEmergingChk)) { - $tmpSettingsEmerging = date('l jS \of F Y h:i:s A', $tmpSettingsEmergingChk[date]); -} - -$tmpSettingsPfsense = 'N/A'; -$tmpSettingsPfsenseChk = snortSql_fetchAllSettings2('snortDBtemp', 'SnortDownloads', 'filename', 'pfsense_rules.tar.gz'); -if (!empty($tmpSettingsPfsenseChk)) { - $tmpSettingsPfsense = date('l jS \of F Y h:i:s A', $tmpSettingsPfsenseChk[date]); -} - -// get rule on stats -$generalSettings = snortSql_fetchAllSettings2('snortDB', 'SnortSettings', 'id', '1'); - -$snortMd5CurrentChk = @file_get_contents('/usr/local/etc/snort/snortDBrules/snort_rules/snortrules-snapshot-2905.tar.gz.md5'); - -$snortDownlodChkMark = ''; -if ($generalSettings[snortdownload] === 'on') { - $snortDownlodChkMark = 'checked="checked"'; -} - -$snortMd5Current = 'N/A'; -if (!empty($snortMd5CurrentChk)) { - preg_match('/^\".*\"/', $snortMd5CurrentChk, $snortMd5Current); - if (!empty($snortMd5Current[0])) { - $snortMd5Current = preg_replace('/\"/', '', $snortMd5Current[0]); - } -} - -$emergingMd5CurrentChk = @file_get_contents('/usr/local/etc/snort/snortDBrules/emerging_rules/emerging.rules.tar.gz.md5'); - -$emerginDownlodChkMark = ''; -if ($generalSettings[emergingthreatsdownload] !== 'off') { - $emerginDownlodChkMark = 'checked="checked"'; -} - -$emergingMd5Current = 'N/A'; -if (!empty($emergingMd5CurrentChk)) { - $emergingMd5Current = $emergingMd5CurrentChk; -} - -$pfsenseMd5CurrentChk = @file_get_contents('/usr/local/etc/snort/snortDBrules/pfsense_rules/pfsense_rules.tar.gz.md5'); - -$pfsenseMd5Current = 'N/A'; -if (!empty($pfsenseMd5CurrentChk)) { - preg_match('/^\".*\"/', $pfsenseMd5CurrentChk, $pfsenseMd5Current); - if (!empty($pfsenseMd5Current[0])) { - $pfsenseMd5Current = preg_replace('/\"/', '', $pfsenseMd5Current[0]); - } -} - - $pgtitle = 'Services: Snort: Updates'; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - -
    - -
    -
    -
    - -
    -
    -

    -

    -
    - - -
    -
    -

    -

    -
    - -
    - - - - -
    -
    - - - - - - - - - - - -
    - - - -
    - -
    - -
    - -
    -
    - - - - - - - - - -
    - Rule databases that are ready to be updated. - -
    -
    - - - - - - -
    SIGNATURE RULESET DATABASES:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    OnSignature DB NameMD5 VersionLast Rule DB Date 
    - type="checkbox" disabled="disabled" > -SNORT.ORG - -
    - type="checkbox" disabled="disabled" > -EMERGINGTHREATS.NET - -
    - -PFSENSE.ORG - -
    -
    - - - - -
    - -
    -
    - - - - -
    -
    -
    - - - -
    - -
    -
    - - - - - -
    - - - Note: -   Snort.org and Emergingthreats.net will go down from time to time. Please be patient. -
    -
    -
    - - - - - - jQuery(\'.snortModalTopClose\').append(\'\'); - - '; -} - -?> - - - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_gui.inc b/config/snort-dev/snortsam-package-code/snort_gui.inc deleted file mode 100644 index d0a778ae..00000000 --- a/config/snort-dev/snortsam-package-code/snort_gui.inc +++ /dev/null @@ -1,83 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -//include_once("/usr/local/pkg/snort/snort.inc"); - -function print_info_box_np2($msg) { - global $config, $g; - - echo "\n"; - echo " \n"; - echo " \n"; - echo "
    \n"; - echo "
    \n"; - echo " \n"; - echo " "; - if(stristr($msg, "apply") == true) { - echo " "; - } - echo "
    \n"; - echo "    \n"; - echo " {$msg}\n"; - echo " "; - echo " \n"; - echo "
    \n"; - echo "
    \n"; - echo "
    \n"; - echo "\n"; - echo "\n
    \n"; - - -} - -if ($config['version'] >= 6) { - $helplink = '
  • Help'; -}else{ - $helplink = '
  • Help
  • '; -} - -?> diff --git a/config/snort-dev/snortsam-package-code/snort_head.inc b/config/snort-dev/snortsam-package-code/snort_head.inc deleted file mode 100644 index 2d5aadaa..00000000 --- a/config/snort-dev/snortsam-package-code/snort_head.inc +++ /dev/null @@ -1,148 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -/* - pfSense_MODULE: header -*/ - -/* - * if user has selected a custom template, use it. - * otherwise default to pfsense tempalte - */ -if (($g["disablethemeselection"] === true) && !empty($g["default_theme"]) && (is_dir($g["www_path"].'/themes/'.$g["default_theme"]))) - $g['theme'] = $g["default_theme"]; -elseif($config['theme'] <> "" && (is_dir($g["www_path"].'/themes/'.$config['theme']))) - $g['theme'] = $config['theme']; -else - $g['theme'] = "pfsense"; - -/* - * If this device is an apple ipod/iphone - * switch the theme to one that works with it. - */ -$lowres_ua = array("iPhone","iPod", "iPad", "Android"); -foreach($lowres_ua as $useragent) - if(strstr($_SERVER['HTTP_USER_AGENT'], $useragent)) - $g['theme'] = empty($g['theme_lowres']) ? "pfsense" : $g['theme_lowres']; - -$pagetitle = gentitle( $pgtitle ); - -?> - - - - <?php echo($config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pagetitle); ?> - - - - - "; ?> - - - - - - - - - \n"; ?> - - - echo "\n"; - include('/usr/local/pkg/snort/snort_headbase.inc'); - echo "\n"; - // -?> - -\n"; - echo "\t\n"; - } - echo "\t\n"; - echo "\t\n"; - echo "\t\n"; - echo "\t\n"; - if(file_exists("{$g['www_path']}/javascript/global.js")) - echo "\t\n"; - /* - * Find all javascript files that need to be included - * for this page ... from the arrays ... :) - * Coded by: Erik Kristensen - */ - - $dir = trim(basename($_SERVER["SCRIPT_FILENAME"], '.php')); - $path = "{$g['www_path']}/javascript/" . $dir . "/"; - if (is_dir($path)) { - if ($dh = opendir($path)) { - while (($file = readdir($dh)) !== false) { - if (is_dir($file)) - continue; - echo "\t\n"; - } - closedir($dh); - } - } - - -if (!isset($closehead)) - echo ""; - -/* If this page is being remotely managed then do not allow the loading of the contents. */ -if($config['remote_managed_pages']['item']) { - foreach($config['remote_managed_pages']['item'] as $rmp) { - if($rmp == $_SERVER['SCRIPT_NAME']) { - include("fbegin.inc"); - print_info_box_np("This page is currently being managed by a remote machine."); - include("fend.inc"); - exit; - } - } -} - -?> diff --git a/config/snort-dev/snortsam-package-code/snort_headbase.inc b/config/snort-dev/snortsam-package-code/snort_headbase.inc deleted file mode 100644 index 33bbd0ee..00000000 --- a/config/snort-dev/snortsam-package-code/snort_headbase.inc +++ /dev/null @@ -1,73 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ -?> - - - - - - - - - - - - - - - /* makes boxes round */ - /* load at bottom */ - NiftyCheck(); - Rounded("div#mainarea2","bl br tr","#FFF","#dddddd","smooth"); - Rounded("div#mainarea3","bl br tr","#FFF","#dddddd","smooth"); - Rounded("td#tdbggrey","bl br tr","#FFF","#dddddd","smooth"); - Rounded("td#tdbggrey2","bl br tr","#FFF","#dddddd","smooth"); - Rounded("div#mainarea4","all","#FFF","#dddddd","smooth"); - Rounded("div#mainarea6","all","#FFF","#dddddd","smooth"); - Rounded("div#mainarea5","all","#eeeeee","#dddddd","smooth"); - -'; -?> \ No newline at end of file diff --git a/config/snort-dev/snortsam-package-code/snort_help_info.php b/config/snort-dev/snortsam-package-code/snort_help_info.php deleted file mode 100644 index 616133ae..00000000 --- a/config/snort-dev/snortsam-package-code/snort_help_info.php +++ /dev/null @@ -1,353 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - - $pgtitle = 'Snort: Help and Info'; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - - - - - - -
    - -
    -
    - - - - - - - - -
    - - - -
    - - - - -
    - - - -
    - -
    -
    -

    Snort Package

    - -

    - Snort Package is a GUI based front-end for Sourcefire's Snort ® IDS/IPS software. The Snort Package goal is to be - the best open-source GUI to manage multiple snort sensors and multiple rule snapshots. The project other goal is to be a highly competitive GUI for - network monitoring for both private and enterprise use. Lastly, this project software development should bring programmers and users together to create - software. -

    -

    - - What is Snort ? Used by fortune 500 companies and goverments Snort is the most widely deployed IDS/IPS technology worldwide. It features rules based logging and - can perform content searching/matching in addition to being used to detect a variety of other attacks and probes, such as buffer overflows, stealth port - scans, CGI attacks, SMB probes, and much more. -

    -

    - Requirements :
    - Minimum requirement 256 mb ram, 500 MHz CPU.
    - Recommended 500 mb ram, 1 Ghz CPU.
    - The more rules you run the more memory you need.
    - - The more interfaces you select the more memory you need.

    - Development is done on a Alix 2D3 system (500 MHz AMD Geode LX800 CPU 256MB DDR DRAM). -

    - -
    - -
    -

    Snort Package

    - -

    Change Log

    - -

    Changes to this package can be viewed by following pfSense packages repository

    - -
    - -
    -

    Snort Package

    - -

    Getting Help

    - -

    -Obtaining Support
    - -We provide several means of obtaining support for pfSense. -

    - -

    -Free Options
    -Our free options include our forum, mailing list , and IRC channel. Before using any of these resources, please review the Project Rules below. -

    - -

    -Commercial Support
    - -Commercial support is available from the company founded by the founders of the pfSense project, BSD Perimeter. Phone and email support is available for support subscribers only. -

    - -

    -Project Rules
    -To keep things orderly, and be fair to everyone, we must enforce these rules. -

    - -

    -Please do not post support questions to the blog comments. The comments are for discussion of the post, and letting people ask questions there would make a mess of the purpose of those comments. Any support questions will not be moderator approved. -

    - -

    -Please do not cross post questions between the forum and mailing list, unless your inquiry has gone unanswered for at least 24 hours. Do not bump your mailing list or forum posts for at least 24 hours. If you have not received a reply after more than 24 hours, you are welcome to bump your thread. -

    - -

    -Please do not email individuals, the coreteam address, or private message people on the forum to ask questions. We provide a wide variety of means for obtaining help in a public forum, where it helps others who have the same questions in the future. We don't have enough time to answer all the questions our users post in the public forums, much less via email and private messages. Since we cannot possibly reply to everyone's email and private messages, to be fair we will not reply to anyone. Individual attention via phone and email support is available for commercial support customers. -

    -
    - -
    -

    Snort Package

    - - -

    Heros

    - -

    Pfsense Snort Package users who have cared enough to donate to this project. I can't thank you enough for all your help. With-out your support I would have stoped long time ago.

    - -

    If your not on this list PM me and I will add you. If you would like to be removed pm me and I will remove you.

    - -

    Names

    - -

    sandro tavella

    -

    João Kemp Filho

    - -

    Julio Fumoso

    -

    Rolland Hart

    -

    DiMarco Technology Solutions Inc.

    -

    Brett Burley

    -

    Tomasz Iskra

    -

    Bruno Buchschacher

    - -

    Marco Pannetto

    -

    Christopher Weakland

    -

    Antonio Riveros

    -

    DigitalJer

    -

    Serialdie

    -

    Dlawley

    - -

    Onhel

    -

    Jerrygoldsmith

    - - -
    -
    -
    - - -
    -
    -
    - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_install.inc b/config/snort-dev/snortsam-package-code/snort_install.inc deleted file mode 100644 index b227b347..00000000 --- a/config/snort-dev/snortsam-package-code/snort_install.inc +++ /dev/null @@ -1,429 +0,0 @@ - advanced features */ - //$bpfbufsize = $config['installedpackages']['snortglobal']['bpfbufsize']; - //$bpfmaxbufsize = $config['installedpackages']['snortglobal']['bpfmaxbufsize']; - //$bpfmaxinsns = $config['installedpackages']['snortglobal']['bpfmaxinsns']; - - // create a few directories and ensure the sample files are in place - if(!file_exists('/usr/local/etc/snort')) { - exec('/bin/mkdir -p /usr/local/etc/snort'); - } - - if(!file_exists('/usr/local/etc/snort/whitelist')) { - exec('/bin/mkdir -p /usr/local/etc/snort/whitelist/'); - } - - if(!file_exists('/var/log/snort/run')) { - exec('/bin/mkdir -p /var/log/snort/run'); - } - - if(!file_exists('/var/log/snort/barnyard2')) { - exec('/bin/mkdir -p /var/log/snort/barnyard2/'); - } - - if(!file_exists('/usr/local/lib/snort/dynamicrules/')) { - exec('/bin/mkdir -p /usr/local/lib/snort/dynamicrules/'); - } - - // for snort2c, remove when snortsam is working - if(!file_exists('/var/db/whitelist')) { - touch('/var/db/whitelist'); - } - - if (!file_exists('/usr/local/etc/snort/etc')) { - exec('/bin/mkdir -p /usr/local/etc/snort/etc'); - } - - if (!file_exists('/usr/local/etc/snort/signatures')) { - exec('/bin/mkdir -p /usr/local/etc/snort/signatures'); - } - - if (!file_exists('/usr/local/etc/snort/snort_download')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snort_download'); - } - - if (!file_exists('/usr/local/etc/snort/snortDBrules/DB')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snortDBrules/DB'); - } - - if (!file_exists('/usr/local/etc/snort/snortDBrules/custom_rules/rules')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snortDBrules/custom_rules/rules'); - } - - if (!file_exists('/usr/local/etc/snort/snortDBrules/emerging_rules/rules')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snortDBrules/emerging_rules/rules'); - } - - if (!file_exists('/usr/local/etc/snort/snortDBrules/pfsense_rules/rules')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snortDBrules/pfsense_rules/rules'); - } - - if (!file_exists('/usr/local/etc/snort/snortDBrules/snort_rules/rules')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snortDBrules/snort_rules/rules'); - } - - if (!file_exists('/usr/local/etc/snort/snortDBrules/DB/default/rules')) { - exec('/bin/mkdir -p /usr/local/etc/snort/snortDBrules/DB/default/rules'); - exec('/usr/bin/touch /usr/local/etc/snort/snortDBrules/DB/default/rules/local.rules'); - } - - // create and cp to tmp db dir - if (!file_exists('/var/snort/')) { - exec('/bin/mkdir -p /var/snort/'); - } - - if (file_exists('/usr/local/pkg/snort/snortDBtemp')) { - exec('/bin/cp /usr/local/pkg/snort/snortDBtemp /var/snort/snortDBtemp'); - } - - // cleanup default files - if(file_exists('/usr/local/etc/snort/snort.conf-sample')) { - exec('/bin/rm /usr/local/etc/snort/classification.config-sample'); - exec('/bin/mv /usr/local/etc/snort/classification.config /usr/local/etc/snort/etc/classification.config'); - exec('/bin/rm /usr/local/etc/snort/gen-msg.map-sample'); - exec('/bin/mv /usr/local/etc/snort/gen-msg.map /usr/local/etc/snort/etc/gen-msg.map'); - exec('/bin/rm /usr/local/etc/snort/reference.config-sample'); - exec('/bin/mv /usr/local/etc/snort/reference.config /usr/local/etc/snort/etc/reference.config'); - exec('/bin/rm /usr/local/etc/snort/sid-msg.map-sample'); - exec('/bin/mv /usr/local/etc/snort/sid-msg.map /usr/local/etc/snort/etc/sid-msg.map'); - exec('/bin/rm /usr/local/etc/snort/snort.conf-sample'); - exec('/bin/mv /usr/local/etc/snort/snort.conf /usr/local/etc/snort/etc/snort.conf'); - exec('/bin/rm /usr/local/etc/snort/threshold.conf-sample'); - exec('/bin/mv /usr/local/etc/snort/threshold.conf /usr/local/etc/snort/etc/threshold.conf'); - exec('/bin/rm /usr/local/etc/snort/unicode.map-sample'); - exec('/bin/mv /usr/local/etc/snort/unicode.map /usr/local/etc/snort/etc/unicode.map'); - exec('/bin/rm /usr/local/etc/snort/generators-sample'); - exec('/bin/mv /usr/local/etc/snort/generators /usr/local/etc/snort/etc/generators'); - exec('/bin/rm /usr/local/etc/snort/sid'); - exec('/bin/rm /usr/local/etc/rc.d/snort'); - exec('/bin/rm /usr/local/etc/rc.d/bardyard2'); - } - - // remove example files - if(file_exists('/usr/local/lib/snort/dynamicrules/lib_sfdynamic_example_rule.so.0')) { - exec('/bin/rm /usr/local/lib/snort/dynamicrules/lib_sfdynamic_example*'); - } - - if(file_exists('/usr/local/lib/snort/dynamicpreprocessor/lib_sfdynamic_preprocessor_example.so')) { - exec('/bin/rm /usr/local/lib/snort/dynamicpreprocessor/lib_sfdynamic_preprocessor_example*'); - } - - - // add snort user and group note: 920 keep the numbers < 2000, above this is reserved in pfSense 2.0 - exec('/usr/sbin/pw groupadd snort -g 920'); - exec('/usr/sbin/pw useradd snort -u 920 -c "Snort User" -d /nonexistent -g snort -s /sbin/nologin'); - - // if users have old log files delete them */ - if(!file_exists('/var/log/snort/alert')) { - touch('/var/log/snort/alert'); - }else{ - exec('/bin/rm -rf /var/log/snort/*'); - touch('/var/log/snort/alert'); - } - - // rm barnyard2 important */ - if(!file_exists('/usr/local/bin/barnyard2')) { - exec('/bin/rm /usr/local/bin/barnyard2'); - } - - /* important */ - exec('/usr/sbin/chown -R snort:snort /var/log/snort'); - exec('/usr/sbin/chown -R snort:snort /usr/local/etc/snort'); - exec('/usr/sbin/chown -R snort:snort /usr/local/lib/snort'); - exec('/usr/sbin/chown -R snort:snort /var/snort'); - exec('/usr/sbin/chown snort:snort /tmp/snort*'); - exec('/usr/sbin/chown snort:snort /var/db/whitelist'); - exec('/bin/chmod 660 /var/log/snort/alert'); - exec('/bin/chmod 660 /var/db/whitelist'); - exec('/bin/chmod -R 660 /usr/local/etc/snort/*'); - exec('/bin/chmod -R 660 /tmp/snort*'); - exec('/bin/chmod -R 660 /var/run/snort*'); - exec('/bin/chmod -R 660 /var/snort/run/*'); - exec('/bin/chmod 770 /usr/local/lib/snort'); - exec('/bin/chmod 770 /usr/local/etc/snort'); - exec('/bin/chmod 770 /usr/local/etc/whitelist'); - exec('/bin/chmod 770 /var/log/snort'); - exec('/bin/chmod 770 /var/log/snort/run'); - exec('/bin/chmod 770 /var/log/snort/barnyard2'); - - /* move files around, make it look clean */ - exec('/bin/mkdir -p /usr/local/www/snort/css'); - exec('/bin/mkdir -p /usr/local/www/snort/images'); - exec('/bin/mkdir -p /usr/local/www/snort/javascript'); - - chdir ("/usr/local/www/snort/css/"); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/css/style_snort2.css'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/css/new_tab_menu.css'); - chdir ("/usr/local/www/snort/images/"); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/alert.jpg'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/arrow_down.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/awesome-overlay-sprite.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/controls.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/down.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/down2.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/footer.jpg'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/footer2.jpg'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon-table-sort-asc.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon-table-sort-desc.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon-table-sort.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/icon_excli.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/loading.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/logo.jpg'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/logo22.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/page_white_text.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/transparent.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/transparentbg.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/up.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/up2.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/close_9x9.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/new_tab_menu.png'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/progress_bar2.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/progressbar.gif'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/images/top_modal_bar_lil.jpg'); - chdir ("/usr/local/www/snort/javascript/"); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/javascript/jquery-1.6.2.min.js'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/javascript/jquery.form.js'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/javascript/snort_globalsend.js'); - exec('/usr/bin/fetch http://www.pfsense.com/packages/config/snort-dev/javascript/jquery.progressbar.min.js'); - - /* back to default */ - chdir ('/root/'); - - // make sure snort-old is deinstalled - // remove when snort-old is removed - unset($config['installedpackages']['snort']); - unset($config['installedpackages']['snortdefservers']); - unset($config['installedpackages']['snortwhitelist']); - unset($config['installedpackages']['snortthreshold']); - unset($config['installedpackages']['snortadvanced']); - write_config(); - conf_mount_rw(); - - // remake saved settings - // TODO: make sre this works in final release - /* - if($config['installedpackages']['snortglobal']['forcekeepsettings'] == 'on') { - update_status(gettext("Saved settings detected...")); - update_output_window(gettext("Please wait... rebuilding files...")); - sync_snort_package_empty(); - update_output_window(gettext("Finnished Rebuilding files...")); - } - */ - - conf_mount_ro(); - -} // END of Post Install - -function snort_deinstall() -{ - - global $config, $g; - conf_mount_rw(); - - // remove custom sysctl // - remove_text_from_file("/etc/sysctl.conf", "sysctl net.bpf.bufsize=20480"); - - // decrease bpf buffers back to 4096, from 20480 - exec('/sbin/sysctl net.bpf.bufsize=4096'); - - exec('/usr/usr/bin/killall snort'); - sleep(2); - exec('/usr/usr/bin/killall -9 snort'); - sleep(2); - exec('/usr/usr/bin/killall barnyard2'); - sleep(2); - exec('/usr/usr/bin/killall -9 barnyard2'); - sleep(2); - - exec('/usr/sbin/pw userdel snort'); - exec('/usr/sbin/pw groupdel snort'); - exec('rm -rf /usr/local/etc/snort*'); - exec('rm -rf /usr/local/pkg/snort*'); - exec('rm -rf /usr/local/pkg/pf/snort*'); - - exec("cd /var/db/pkg && pkg_delete `ls | grep snort`"); - exec("cd /var/db/pkg && pkg_delete `ls | grep perl-threaded`"); - exec("cd /var/db/pkg && pkg_delete `ls | grep mysql-client-5.1.50_1`"); - exec('rm -r /usr/local/bin/barnyard2'); - - // TODO: figure out how to detect pfsense packages that use the same freebsd pkckages and not deinstall - //exec("cd /var/db/pkg && pkg_delete `ls | grep perl`"); - //exec("cd /var/db/pkg && pkg_delete `ls | grep barnyard2`"); - //exec("cd /var/db/pkg && pkg_delete `ls | grep pcre`"); // Never remove pcre or pfsense will break - - // Remove snort cron entries Ugly code needs smoothness - // TODO: redo code because its a mess - function snort_rm_blocked_deinstall_cron($should_install) - { - global $config, $g; - conf_mount_rw(); - - $is_installed = false; - - if(!$config['cron']['item']) - return; - - $x=0; - foreach($config['cron']['item'] as $item) - { - if (strstr($item['command'], "snort2c")) - { - $is_installed = true; - break; - } - - $x++; - - } - if($is_installed == true) - { - if($x > 0) - { - unset($config['cron']['item'][$x]); - write_config(); - conf_mount_rw(); - } - - configure_cron(); - - } - conf_mount_ro(); - - } - - function snort_rules_up_deinstall_cron($should_install) - { - global $config, $g; - conf_mount_rw(); - - $is_installed = false; - - if(!$config['cron']['item']) - return; - - $x=0; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], "snort_check_for_rule_updates.php")) { - $is_installed = true; - break; - } - $x++; - } - if($is_installed == true) { - if($x > 0) { - unset($config['cron']['item'][$x]); - write_config(); - conf_mount_rw(); - } - configure_cron(); - } - } - - snort_rm_blocked_deinstall_cron(""); - snort_rules_up_deinstall_cron(""); - - - /* Unset snort registers in conf.xml IMPORTANT snort will not start with out this */ - /* Keep this as a last step */ - if($config['installedpackages']['snortglobal']['forcekeepsettings'] != 'on') { - unset($config['installedpackages']['snortglobal']); - } - write_config(); - conf_mount_rw(); - - exec('rm -rf /usr/local/www/snort'); - exec('rm -rf /usr/local/lib/snort/'); - exec('rm -rf /var/log/snort/'); - exec('rm -rf /usr/local/pkg/snort'); - exec('rm -rf /var/snort'); - - conf_mount_ro(); - -} - -// make sure this func on writes to files and does not start snort */ -function sync_snort_package() -{ - global $config, $g; - conf_mount_rw(); - - - - conf_mount_ro(); -} - -?> diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces.php b/config/snort-dev/snortsam-package-code/snort_interfaces.php deleted file mode 100644 index beb50f83..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces.php +++ /dev/null @@ -1,415 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -$new_ruleUUID = genAlphaNumMixFast(7, 8); - -$a_interfaces = snortSql_fetchAllInterfaceRules('SnortIfaces', 'snortDB'); - - - $pgtitle = "Services: Snort 2.9.0.5 pkg v. 2.0"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - -
    - - - - - - - - -
    - - - -
    -
    - - - - - - - -
    SnortSam Status
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
     SnortSamRolePortPassLogDescription  
    - - DISABLEDMASTER3526ENABLEDDISABLEDMster IPs  - -
    - -
    - - - - - - -
    Interface Status - - - -
    -
    - - - "; - echo ' - - - '; - echo " - - "; - echo ' - -
    {$list['interface']} Interface Status   ({$list['uuid']})
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
     SnortIfPerformanceBlockLogDescription  
    - '; - echo " - - - {$ifaceStat}{$list['interface']}{$list['performance']}{$blockStat}{$logStat}{$list['descr']} - - "; - echo ' -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
     Barnyard2IfSensorTypeLogDescription  
    - '; - echo " - - {$barnyard2Stat}{$list['interface']}{$list['uuid']}_{$list['interface']}unified2{$barnyard2Stat}Mster IPs  - - "; - echo ' -
    -
    -
    '; - } // end of foreach main - ?> - - - - - - -
    -
    -
    - - - -
    - -
    -
    - - - - - - - -
       
    - Note:
    - This is the Snort Menu where you can see an over view of all your interface settings. - Please edit the Global Settings tab before adding an interface. -
    -
    - Warning: -
    - New settings will not take effect until interface restart. -
    -
    - - - - - - - - - - - - - - - -
    - Click on the - - icon to add a interface. - - Click on the - - icon to start snort or barnyard2. -
    - Click on the - icon to edit a - interface and settings. - - Click on the - - icon to stop snort or barnyard2. -
    - Click on the - - icon to delete a interface and settings. -
       
    -
    -
    -
    - - - - - -
    - -
    -
    - - - - - - - - - - -
       
    -
    - - - - -
    - SNORT registered ® by Sourcefire, Inc, Barnyard2 registered ® by securixlive.com, Orion registered ® by Robert Zelaya, - Emergingthreats registered ® by emergingthreats.net, Mysql registered ® by Mysql.com -
    -
    -
       
    -
    -
    - - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_edit.php b/config/snort-dev/snortsam-package-code/snort_interfaces_edit.php deleted file mode 100644 index ade5ade8..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_edit.php +++ /dev/null @@ -1,536 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - - */ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -$uuid = $_GET['uuid']; -if (isset($_POST['uuid'])) -$uuid = $_POST['uuid']; - -if ($uuid == '') { - echo 'error: no uuid'; - exit(0); -} - - - -$a_list = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - -$a_rules = snortSql_fetchAllSettings('snortDBrules', 'Snortrules', 'All', ''); - -if (!is_array($a_list)) { - $a_list = array(); -} - -$a_whitelist = snortSql_fetchAllWhitelistTypes('SnortWhitelist', 'SnortWhitelistips'); - -if (!is_array($a_whitelist)) { - $a_whitelist = array(); -} - -$a_suppresslist = snortSql_fetchAllWhitelistTypes('SnortSuppress', ''); - -if (!is_array($a_suppresslist)) { - $a_suppresslist = array(); -} - - - $pgtitle = "Services: Snort: Interface Edit:"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - -
    - -
    - - -
    - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    General Settings
    Interface -   - "> -   Enable or Disable -
    Interface - -
    - Choose which interface this rule applies to.
    - Hint: in most cases, you'll want to use WAN here.
    -
    Description - -
    - You may enter a description here for your reference (not parsed). -
    Memory Performance - -
    - Lowmem and ac-bnfa are recommended for low end systems, Ac: high memory, best performance, ac-std: moderate - memory,high performance, acs: small memory, moderateperformance, ac-banded: small memory,moderate performance, ac-sparsebands: small memory, high performance. -
    -
    Choose the rule DB snort should use.
    Rule DB - -
    - Choose the rule database to use.  Note: Cahnges to this database are global. -
    - WARNING: Never change this when snort is running.
    -
    Choose the networks snort should inspect and whitelist.
    Home net - -
    - Choose the home net you will like this rule to use.  Note: Default homenet adds only local networks. -
    - Hint: Most users add a list offriendly ips that the firewall cant see.
    -
    External net - -
    - Choose the external net you will like this rule to use. Note: Default external net, networks that are not home net. -
    - Hint: Most users should leave this setting at default.
    -
    Block offenders - > -
    - Checking this option will automatically block hosts that generate a Snort alerts with SnortSam. -
    Suppression and filtering - -
    - Choose the suppression or filtering file you will like this rule to use.  - Note: Default option disables suppression and filtering. -
    Choose the types of logs snort should create.
    Type of Unified Logging - -
    - Snort will log Alerts to a file in the UNIFIED format. Full is a requirement for the snort wigdet. -
    Send alerts to mainSystem logs - > -
    - Snort will send Alerts to the Pfsense system logs. -
    Log to a Tcpdump file - > -
    - Snort will log packets to a tcpdump-formatted file. The file then can be analyzed by an application such as Wireshark which understands pcap file formats. - WARNING: File may become large. -
    Log Alerts to a snort unified2 file - > -
    - Snort will log Alerts to a file in the UNIFIED2 format. This is a requirement for barnyard2. -
    Arguments here will be automatically inserted into the snort configuration.
    Advanced configuration pass through - -
    - - - -
      - Note: - Please save your settings before you click start. -
    - - - -
    -
    - - - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_global.php b/config/snort-dev/snortsam-package-code/snort_interfaces_global.php deleted file mode 100644 index fd9d27d4..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_global.php +++ /dev/null @@ -1,367 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -$generalSettings = snortSql_fetchAllSettings('snortDB', 'SnortSettings', 'id', '1'); - -$snortdownload_off = ($generalSettings['snortdownload'] == 'off' ? 'checked' : ''); -$snortdownload_on = ($generalSettings['snortdownload'] == 'on' ? 'checked' : ''); -$oinkmastercode = $generalSettings['oinkmastercode']; - -$emergingthreatsdownload_off = ($generalSettings['emergingthreatsdownload'] == 'off' ? 'checked' : ''); -$emergingthreatsdownload_basic = ($generalSettings['emergingthreatsdownload'] == 'basic' ? 'checked' : ''); -$emergingthreatsdownload_pro = ($generalSettings['emergingthreatsdownload'] == 'pro' ? 'checked' : ''); -$emergingthreatscode = $generalSettings['emergingthreatscode']; - -$updaterules = $generalSettings['updaterules']; - -$rm_blocked = $generalSettings['rm_blocked']; - -$snortloglimit_off = ($generalSettings['snortloglimit'] == 'off' ? 'checked' : ''); -$snortloglimit_on = ($generalSettings['snortloglimit'] == 'on' ? 'checked' : ''); - -$snortloglimitsize = $generalSettings['snortloglimitsize']; - -$snortalertlogtype = $generalSettings['snortalertlogtype']; - -$forcekeepsettings_on = ($generalSettings['forcekeepsettings'] == 'on' ? 'checked' : ''); - -$snortlogCurrentDSKsize = round(exec('df -k /var | grep -v "Filesystem" | awk \'{print $4}\'') / 1024); - - - $pgtitle = "Services: Snort: Global Settings"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - - -
    - - - -
    - -
    -
    - - - - - - - - -
    - - - -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Please Choose The Type Of Rules You Wish To Download
    Install Snort.org rules - - - - - - - -
    - > - Do NOT Install -
    - > - Install Basic Rules or Premium rules
    -
    - - - - -
    - - Sign Up for a Basic Rule Account -

    - - Sign Up for Sourcefire VRT Certified Premium Rules. This Is Highly Recommended - -
    - - - - - - - -
    Oinkmaster code
    Code -
    - Obtain a snort.org Oinkmaster code and paste here. -
    -
    Install Emergingthreats rules - - - - - - - - - - -
    - > - Do NOT Install -
    - > - Install Basic Rules: No need to register
    -
    - > - Install Pro rules: You need to register
    -
    - - - - -
    - - Sign Up for Emerging Threats Pro Certified Premium Rules. This Is Highly Recommended - -
    - - - - - - - -
    Pro rules code
    Code -
    - Obtain a emergingthreatspro.com Pro rules code and paste here. -
    -
    Update rules automatically -
    - - Please select the update times for rules.
    Hint: in most cases, every 12 hours is a good choice. -
    -
    General Settings
    Log Directory SizeLimit
    -




    - Note:
    Available space is MB
    -
    - - - - - - - - - - -
    - > - Enable directory size limit (Default) -
    - > - Disable directory size limit

    - Warning: Pfsense Nanobsd should use no more than 10MB of space. -
     
    - - - - -
    Size in MB - - Default is 20% of available space. -
    -
    Remove blocked hosts every -
    - Please select the amount of time you would likehosts to be blocked for.
    Hint: in most cases, 1 hour is a good choice.
    -
    Alerts file descriptiontype -
    - Please choose the type of Alert logging you will like see in your alert file.
    Hint: Best pratice is to chose full logging.
      - WARNING: On change, alert file will be cleared. -
    Keep snort settings after deinstall - > - Settings will not be removed during deinstall. -
    Save Settings - - -
    - - -  WARNING:
    This will reset all global and interface settings.
    -
    - Note:
    - Changing any settings on this page will affect all interfaces. Please, double check if your oink code is correct and the type of snort.org account you hold. -
    -
    -
    -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_rules.php b/config/snort-dev/snortsam-package-code/snort_interfaces_rules.php deleted file mode 100644 index 12f9cec0..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_rules.php +++ /dev/null @@ -1,289 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -$a_rules = array(); -$a_rules = snortSql_fetchAllSettings('snortDBrules', 'Snortrules', 'All', ''); - - if (!is_array($a_rules)) { - $a_rules = array(); - } - - if ($a_rules == 'Error') { - echo 'Error'; - exit(0); - } - - // list rules in db that are on in a array - $listOnRules = array(); - $listOnRules = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'All', ''); - - $listUsedRules = array(); - foreach ($listOnRules as $listOnRule) - { - - $listUsedRules[] = $listOnRule['ruledbname']; - - } - unset($listOnRules); - - $pgtitle = "Services: Snort: Rules"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - -
    - - - -
    - - -
    - - - -
    - - - - -
    File NameDescription
    - - - - - -
    - - - - - - - - - - - - '; - }else{ - $deleteObject = ''; - } - - if (in_array($list['uuid'], $listUsedRules)) { - $resetObject = ''; - }else{ - $resetObject = ''; - } - - ?> - - - - - - - - - - -
    Default - Default rule database  - - - '; - }else{ - $resetObjectDf = ''; - } - - ?> - - - - - - -
    - - - - - -
    -
    -   - - - - - - - -
    - - - - - -
    -
    - - - - - - - -
     
    - -
    - - -
    - - - - - - - - - -
    -
    - - -
    - - Note: -

    - Here you can create rule databases that can be used on multiple interfaces.

    - - Please note that you must restart a running rule so that changes can take effect.

    - - You may only delete rule databases that are not asigned to an interface.
    -

    -
    -
    - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_rules_edit.php b/config/snort-dev/snortsam-package-code/snort_interfaces_rules_edit.php deleted file mode 100644 index be6467bc..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_rules_edit.php +++ /dev/null @@ -1,282 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -if (isset($_GET['rdbuuid'])) { - $rdbuuid = $_GET['rdbuuid']; -}else{ - $ruledbname_pre1 = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - $rdbuuid = $ruledbname_pre1['ruledbname']; -} - -if ($rdbuuid !== 'default') { - - $a_list = snortSql_fetchAllSettings('snortDBrules', 'Snortrules', 'uuid', $rdbuuid); - - // $a_list returns empty use defaults - if ($a_list == '') { - - $a_list = array( - 'id' => '', - 'date' => date(U), - 'uuid' => $rdbuuid, - 'ruledbname' => '', - 'description' => '' - - ); - - } - -} - -if ($rdbuuid === 'default') { - - // $a_list returns empty use defaults - if ($a_list == '') { - - $a_list = array( - 'id' => '1', - 'date' => date(U), - 'uuid' => $rdbuuid, - 'ruledbname' => 'default', - 'description' => 'Default database' - - ); - - } - -} - -if ( !empty($a_list['id']) ) { - $disabled = 'disabled="disabled"'; -}else{ - $disabled = ''; -} - -if ( $rdbuuid === 'default' ) { - $disabled_ckbox = 'disabled="disabled"'; -}else{ - $disabled_ckbox = ''; -} - - - $pgtitle = 'Services: Snort: Rules: Edit: ' . $rdbuuid; - include('/usr/local/pkg/snort/snort_head.inc'); - -?> - - - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - - - - - -
    - -
    - -
    - - - - - - - - '; - } - ?> - - - - -
    - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
    Add the name and description of the rule DB
    Name - />
    - The list name may only consist of the characters a-z, A-Z and 0-9. Note: No Spaces. -
    Description - />
    - You may enter a description here for your reference (not parsed). -
    - Examples: -
    - NOTE: Rule DB will not be active until snort sensor restart.
    -
    -
    -
    - - - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_suppress.php b/config/snort-dev/snortsam-package-code/snort_interfaces_suppress.php deleted file mode 100644 index 977dcf2d..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_suppress.php +++ /dev/null @@ -1,211 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - - -$a_suppress = snortSql_fetchAllWhitelistTypes('SnortSuppress', ''); - - if (!is_array($a_suppress)) - { - $a_suppress = array(); - } - - - if ($a_suppress == 'Error') - { - echo 'Error'; - exit(0); - } - - $pgtitle = "Services: Snort: Suppression"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - - -
    - - - -
    - - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    File NameDescription
    -   - - - - - - -
    - - - - -
    -
    - - - - - -
     
    -
    -
    -
    - - - - - -
    -
    - - -
    - - Note: -

    - Here you can create event filtering and suppression for your snort package rules.
    - Please note that you must restart a running rule so that changes can take effect.
    -

    -
    -
    - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_suppress_edit.php b/config/snort-dev/snortsam-package-code/snort_interfaces_suppress_edit.php deleted file mode 100644 index e9f23254..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_suppress_edit.php +++ /dev/null @@ -1,231 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -$uuid = $_GET['uuid']; -if (isset($_POST['uuid'])) -$uuid = $_POST['uuid']; - -if ($uuid == '') { - echo 'error: no uuid'; - exit(0); -} - -$a_list = snortSql_fetchAllSettings('snortDB', 'SnortSuppress', 'uuid', $uuid); - - -// $a_list returns empty use defaults -if ($a_list == '') -{ - - $a_list = array( - 'id' => '', - 'date' => date(U), - 'uuid' => $uuid, - 'filename' => '', - 'description' => '', - 'suppresspassthru' => '' - - ); - -} - - - - - $pgtitle = 'Services: Snort: Suppression: Edit'; - include('/usr/local/pkg/snort/snort_head.inc'); - -?> - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - -
    - - - - - - - - -
    - - - -
    - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
    Add the name anddescription of the file.
    Name -
    - The list name may only consist of the characters a-z, A-Z and 0-9. Note: No Spaces. -
    Description -
    - You may enter a description here for your reference (not parsed). -
    - Examples: -
    - Example 1; suppress gen_id 1, sig_id 1852, track by_src, ip 10.1.1.54
    - Example 2; event_filter gen_id 1, sig_id 1851, type limit,track by_src, count 1, seconds 60
    - Example 3; rate_filter gen_id 135, sig_id 1, track by_src, count 100, seconds 1, new_action log, timeout 10 -
    - - - - - - - -
    - Apply suppression or filters to rules. Valid keywords are 'suppress', 'event_filter' and 'rate_filter'. -
    - -
    -
    - - -
    -
    - - - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_whitelist.php b/config/snort-dev/snortsam-package-code/snort_interfaces_whitelist.php deleted file mode 100644 index 3167b65f..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_whitelist.php +++ /dev/null @@ -1,241 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - - -$a_whitelist = snortSql_fetchAllWhitelistTypes('SnortWhitelist', 'SnortWhitelistips'); - - if (!is_array($a_whitelist)) - { - $a_whitelist = array(); - } - - if ($a_whitelist == 'Error') - { - echo 'Error'; - exit(0); - } - - $pgtitle = "Services: Snort: Whitelist"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - - -
    - - - -
    - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    File NameValuesDescription
    - 0 && $a != $countList) - { - echo ',' . ' '; - }else{ - echo ' '; - } - - } // end foreach - - if ($a > 3) - { - echo '...'; - } - ?> - -   - - - - - - -
    - - - - -
    -
    - - - - - -
     
    -
    -
    -
    - - - - - -
    -
    - - -
    - - Note: -

    - Here you can create whitelist files for your snort package rules.
    - Please add all the ips or networks you want to protect against snort block decisions.
    - Remember that the default whitelist only includes local networks.
    - Be careful, it is very easy to get locked out of you system. -

    -
    -
    - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_interfaces_whitelist_edit.php b/config/snort-dev/snortsam-package-code/snort_interfaces_whitelist_edit.php deleted file mode 100644 index dbdbb649..00000000 --- a/config/snort-dev/snortsam-package-code/snort_interfaces_whitelist_edit.php +++ /dev/null @@ -1,341 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once('guiconfig.inc'); -require_once('/usr/local/pkg/snort/snort_new.inc'); -require_once('/usr/local/pkg/snort/snort_gui.inc'); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -//$GLOBALS['csrf']['rewrite-js'] = false; - -$uuid = $_GET['uuid']; -if (isset($_POST['uuid'])) -$uuid = $_POST['uuid']; - -if ($uuid == '') { - echo 'error: no uuid'; - exit(0); -} - -$a_list = snortSql_fetchAllSettings('snortDB', 'SnortWhitelist', 'uuid', $uuid); - -// $a_list returns empty use defaults -if ($a_list == '') -{ - - $a_list = array( - 'id' => '', - 'date' => date(U), - 'uuid' => $uuid, - 'filename' => '', - 'snortlisttype' => 'whitelist', - 'description' => '', - 'wanips' => 'on', - 'wangateips' => 'on', - 'wandnsips' => 'on', - 'vips' => 'on', - 'vpnips' => 'on' - ); - -} - -$listFilename = $a_list['filename']; - -$a_list['list'] = snortSql_fetchAllSettingsList('SnortWhitelistips', $listFilename); - -$wanips_chk = $a_list['wanips']; -$wanips_on = ($wanips_chk == 'on' ? 'checked' : ''); - -$wangateips_chk = $a_list['wangateips']; -$wangateips_on = ($wangateips_chk == 'on' ? 'checked' : ''); - -$wandnsips_chk = $a_list['wandnsips']; -$wandnsips_on = ($wandnsips_chk == 'on' ? 'checked' : ''); - -$vips_chk = $a_list['vips']; -$vips_on = ($vips_chk == 'on' ? 'checked' : ''); - -$vpnips_chk = $a_list['vpnips']; -$vpnips_on = ($vpnips_chk == 'on' ? 'checked' : ''); - - - - $pgtitle = "Services: Snort: Whitelist Edit"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - -
    - - - - - - - - -
    - - - -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Add the name and description of the file.
    Name -
    - The list name may only consist of the characters a-z, A-Z and 0-9. Note: No Spaces. -
    Description -
    - You may enter a description here for your reference (not parsed). -
    List Type -
    - WHITELIST:   This list specifies addresses that Snort Package should not block.

    - NETLIST:   This list is for defining addresses as $HOME_NET or $EXTERNAL_NET in the snort.conf file. -
    - -    Choose the type of list you will like see in your Interface Edit Tab. -
    Add auto generated ips.
    WAN IPs - /> - Add WAN IPs to the list. -
    Wan Gateways - /> - Add WAN Gateways to the list. -
    Wan DNS servers - /> - Add WAN DNS servers to the list. -
    Virtual IP Addresses - /> - Add Virtual IP Addresses to the list. -
    VPNs - /> - Add VPN Addresses to the list. -
    Add your own custom ips.
    -
    IP or CIDR items
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - For WHITELIST's enter ONLY IPs not CIDRs. Example: 192.168.4.1

    - For NETLIST's you may enter IPs and CIDRs. Example: 192.168.4.1 or 192.168.4.0/24 -
    -
    -
    IP or CIDR
    -
    -
    Add a Description or leave blank and a date will be added.
    -
    - - - - - -
    - - - -
    -
      - - -
    -
    -
    -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_json_get.php b/config/snort-dev/snortsam-package-code/snort_json_get.php deleted file mode 100644 index 92058a75..00000000 --- a/config/snort-dev/snortsam-package-code/snort_json_get.php +++ /dev/null @@ -1,137 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// get json blocls sids -if ($_GET['snortsamjson'] == 1) { - - exec('cat /usr/local/etc/snort/sn_6TPXv7a/rules/dbBlockSplit/splitSidblock_' . $_GET['fileid'] . '.block', $output); - echo $output[0]; - -} - - -// upload created log tar to user -if ($_GET['snortGetUpdate'] == 1) { - - $tmpfname = "/usr/local/etc/snort/snort_download"; - $snort_filename = "snortrules-snapshot-2905.tar.gz"; - - - $snortSessionPath = $_SESSION['tmp']['snort']['snort_download_updates']; - - if (!file_exists("{$tmpfname}/{$snort_filename}")) { - - if ($snortSessionPath['download']['working'] != '1') { - unset($_SESSION['tmp']); - $snortSessionPath['download']['working'] = '1'; - sendUpdateSnortLogDownload(); - } - - } - - $time = time(); - while((time() - $time) < 30) - { - - // query memcache, database, etc. for new data - $data = $datasource->getLatest(); - - // if we have new data return it - if(!empty($data)) { - echo json_encode($data); - ob_flush(); - flush(); - break; - } - - usleep(25000); - } - -} // end main if - - - -// upload created log tar to user -if ($_GET['snortlogdownload'] == 1) { - - sendFileSnortLogDownload(); - -} - - -// send Json sid string -if ($_GET['snortGetSidString'] == 1) { - - // unset - unset($_GET['snortGetSidString']); - - // get the SID string from file - sendSidStringRuleEditGUI(); - -} - - - - - - - - - - - - - - - -?> \ No newline at end of file diff --git a/config/snort-dev/snortsam-package-code/snort_json_post.php b/config/snort-dev/snortsam-package-code/snort_json_post.php deleted file mode 100644 index 418a90be..00000000 --- a/config/snort-dev/snortsam-package-code/snort_json_post.php +++ /dev/null @@ -1,568 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_build.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// unset crsf checks -if(isset($_POST['__csrf_magic'])) { - unset($_POST['__csrf_magic']); -} - - -function snortJsonReturnCode($returnStatus) -{ - if ($returnStatus == true) { - echo '{"snortgeneralsettings":"success","snortMiscTabCall":"true"}'; - return true; - }else{ - echo '{"snortgeneralsettings":"fail"}'; - return false; - } -} - -// row from db by uuid -if ($_POST['snortSidRuleEdit'] == 1) { - - function snortSidRuleEditFunc() - { - - unset($_POST['snortSidRuleEdit']); - snortSidStringRuleEditGUI(); - - } snortSidRuleEditFunc(); - -} - - -// row from db by uuid -if ($_POST['snortSaveRuleSets'] == 1) { - - if ($_POST['ifaceTab'] == 'snort_rules') { - function snortSaveRuleSetsRulesFunc() - { - // unset POSTs that are markers not in db - unset($_POST['snortSaveRuleSets']); - unset($_POST['ifaceTab']); - - snortJsonReturnCode(snortSql_updateRuleSigList()); - - } snortSaveRuleSetsRulesFunc(); - } - - if ($_POST['ifaceTab'] === 'snort_rules_ips') { - function snortSamRulesSaveFunc() - { - snortJsonReturnCode(snortSql_updateRulesSigsIps()); - buildSnortSamSidBlockMap($_POST['rdbuuid']); // - - } snortSamRulesSaveFunc(); - } - - - if ($_POST['ifaceTab'] == 'snort_rulesets' || $_POST['ifaceTab'] == 'snort_rulesets_ips') { - - function snortSaveRuleSetsRulesetsFunc() - { - // unset POSTs that are markers not in db - unset($_POST['snortSaveRuleSets']); - unset($_POST['ifaceTab']); - - // save to database - snortJsonReturnCode(snortSql_updateRuleSetList()); - - if (!empty($_POST['rdbuuid'])) { - buildSnortSamSidBlockMap($_POST['rdbuuid']); // - } - - // only build if uuid is valid - if (!empty($_POST['uuid'])) { - build_snort_settings($_POST['uuid']); - } - - } snortSaveRuleSetsRulesetsFunc(); - } - - -} // END of rulesSets - -// row from db by uuid -if ( $_POST['RMlistDelRow'] == 1 || $_POST['RSTlistRow'] == 1 ) { - - - function RMlistDelRowFunc() - { - - $rm_row_list = snortSql_fetchAllSettings($_POST['RMlistDB'], $_POST['RMlistTable'], 'uuid', $_POST['RMlistUuid']); - - // list rules in the default dir - if ($_POST['RMlistTable'] == 'SnortIfaces') { - - $snortRuleDir = '/usr/local/etc/snort/sn_' . $_POST['RMlistUuid']; - - exec('/bin/rm -r ' . $snortRuleDir); - } - - // rm ruledb and files - if ($_POST['RMlistTable'] == 'Snortrules') { - - // remove db tables vals - snortSql_updatelistDelete($_POST['RMlistDB'], 'SnortruleSets', 'rdbuuid', $_POST['RMlistUuid']); - snortSql_updatelistDelete($_POST['RMlistDB'], 'SnortruleSigs', 'rdbuuid', $_POST['RMlistUuid']); - snortSql_updatelistDelete($_POST['RMlistDB'], 'SnortruleSigsIps', 'rdbuuid', $_POST['RMlistUuid']); - snortSql_updatelistDelete($_POST['RMlistDB'], 'SnortruleSetsIps', 'rdbuuid', $_POST['RMlistUuid']); - snortSql_updatelistDelete($_POST['RMlistDB'], 'SnortruleGenIps', 'rdbuuid', $_POST['RMlistUuid']); - - // remove dir - $snortRuleDir = "/usr/local/etc/snort/snortDBrules/DB/{$_POST['RMlistUuid']}"; - exec('/bin/rm -r ' . $snortRuleDir); - } - - if ($_POST['RMlistTable'] == 'SnortWhitelist') { - snortSql_updatelistDelete($_POST['RMlistDB'], 'SnortWhitelistips', 'filename', $rm_row_list['filename']); - } - - snortJsonReturnCode(snortSql_updatelistDelete($_POST['RMlistDB'], $_POST['RMlistTable'], 'uuid', $_POST['RMlistUuid'])); - - } if ( $_POST['RMlistDelRow'] == 1 ) { RMlistDelRowFunc(); } - - function RSTlistDelRowFunc() - { - - // rm ruledb and files - if ($_POST['RSTlistTable'] == 'Snortrules') { - - // remove dir - $snortRuleDir = "/usr/local/etc/snort/snortDBrules/DB/{$_POST['RSTlistUuid']}"; - exec('/bin/rm -r ' . $snortRuleDir . '/rules/*.rules'); - - // remove db tables vals - snortSql_updatelistDelete($_POST['RSTlistDB'], 'SnortruleSets', 'rdbuuid', $_POST['RSTlistUuid']); - snortSql_updatelistDelete($_POST['RSTlistDB'], 'SnortruleSigs', 'rdbuuid', $_POST['RSTlistUuid']); - snortSql_updatelistDelete($_POST['RSTlistDB'], 'SnortruleSigsIps', 'rdbuuid', $_POST['RSTlistUuid']); - snortSql_updatelistDelete($_POST['RSTlistDB'], 'SnortruleSetsIps', 'rdbuuid', $_POST['RSTlistUuid']); - snortSql_updatelistDelete($_POST['RSTlistDB'], 'SnortruleGenIps', 'rdbuuid', $_POST['RSTlistUuid']); - - // NOTE: code only works on php5 - $listSnortRulesDir = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/snort_rules/rules', '\.rules'); - $listEmergingRulesDir = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/emerging_rules/rules', '\.rules'); - $listPfsenseRulesDir = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/pfsense_rules/rules', '\.rules'); - - if (!empty($listSnortRulesDir)) { - exec("/bin/cp -R /usr/local/etc/snort/snortDBrules/snort_rules/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$_POST['RSTlistUuid']}/rules"); - } - if (!empty($listEmergingRulesDir)) { - exec("/bin/cp -R /usr/local/etc/snort/snortDBrules/emerging_rules/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$_POST['RSTlistUuid']}/rules"); - } - if (!empty($listPfsenseRulesDir)) { - exec("/bin/cp -R /usr/local/etc/snort/snortDBrules/pfsense_rules/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$_POST['RSTlistUuid']}/rules"); - } - - - } - - } if ( $_POST['RSTlistRow'] == 1 ) { RSTlistDelRowFunc(); } - - -} - - -// general settings save -if ($_POST['snortSaveSettings'] == 1) { - - function snortSaveSettingsFunc() - { - - // Save ruleDB settings - if ($_POST['dbTable'] == 'Snortrules') { - - function saveSnortrules() - { - - unset($_POST['snortSaveSettings']); - unset($_POST['ifaceTab']); - - if (!is_dir("/usr/local/etc/snort/snortDBrules/DB/{$_POST['uuid']}/rules")) { - - // creat iface dir and ifcae rules dir - exec("/bin/mkdir -p /usr/local/etc/snort/snortDBrules/DB/{$_POST['uuid']}/rules"); - - // create at least one file - if (!file_exists("/usr/local/etc/snort/snortDBrules/DB/{$_POST['uuid']}/rules/local.rules")) { - exec("/usr/bin/touch /usr/local/etc/snort/snortDBrules/DB/{$_POST['uuid']}/rules/local.rules"); - } - - // NOTE: code only works on php5 - $listSnortRulesDir = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/snort_rules/rules', '\.rules'); - $listEmergingRulesDir = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/emerging_rules/rules', '\.rules'); - $listPfsenseRulesDir = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/pfsense_rules/rules', '\.rules'); - - if (!empty($listSnortRulesDir)) { - exec("/bin/cp -R /usr/local/etc/snort/snortDBrules/snort_rules/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$_POST['uuid']}/rules"); - } - if (!empty($listEmergingRulesDir)) { - exec("/bin/cp -R /usr/local/etc/snort/snortDBrules/emerging_rules/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$_POST['uuid']}/rules"); - } - if (!empty($listPfsenseRulesDir)) { - exec("/bin/cp -R /usr/local/etc/snort/snortDBrules/pfsense_rules/rules/*.rules /usr/local/etc/snort/snortDBrules/DB/{$_POST['uuid']}/rules"); - } - - - } //end of mkdir - - } saveSnortrules(); - - snortJsonReturnCode(snortSql_updateSettings('uuid', $_POST['uuid'])); - - } // END if Snortrules - - // Save general settings - if ($_POST['dbTable'] == 'SnortSettings') { - - function saveSnortSettings() - { - - if ($_POST['ifaceTab'] == 'snort_interfaces_global') { - // checkboxes when set to off never get included in POST thus this code - $_POST['forcekeepsettings'] = ($_POST['forcekeepsettings'] == '' ? off : $_POST['forcekeepsettings']); - } - - if ($_POST['ifaceTab'] == 'snort_alerts') { - - if (!isset($_POST['arefresh'])) - $_POST['arefresh'] = ($_POST['arefresh'] == '' ? off : $_POST['arefresh']); - - } - - if ($_POST['ifaceTab'] == 'snort_blocked') { - - if (!isset($_POST['brefresh'])) - $_POST['brefresh'] = ($_POST['brefresh'] == '' ? off : $_POST['brefresh']); - - } - - // unset POSTs that are markers not in db - unset($_POST['snortSaveSettings']); - unset($_POST['ifaceTab']); - - } saveSnortSettings(); - - snortJsonReturnCode(snortSql_updateSettings('id', '1')); - - } // END IF SnortSettings - - // Save rule settings on the interface edit tab - if ($_POST['dbTable'] == 'SnortIfaces') { - - function saveSnortIfaces() - { - - // snort interface edit - if ($_POST['ifaceTab'] == 'snort_interfaces_edit') { - - function SnortIfaces_Snort_Interfaces_edit() - { - if (!isset($_POST['enable'])) - $_POST['enable'] = ($_POST['enable'] == '' ? off : $_POST['enable']); - - if (!isset($_POST['blockoffenders7'])) - $_POST['blockoffenders7'] = ($_POST['blockoffenders7'] == '' ? off : $_POST['blockoffenders7']); - - if (!isset($_POST['alertsystemlog'])) - $_POST['alertsystemlog'] = ($_POST['alertsystemlog'] == '' ? off : $_POST['alertsystemlog']); - - if (!isset($_POST['tcpdumplog'])) - $_POST['tcpdumplog'] = ($_POST['tcpdumplog'] == '' ? off : $_POST['tcpdumplog']); - - if (!isset($_POST['snortunifiedlog'])) - $_POST['snortunifiedlog'] = ($_POST['snortunifiedlog'] == '' ? off : $_POST['snortunifiedlog']); - - // convert textbox to base64 - $_POST['configpassthru'] = base64_encode($_POST['configpassthru']); - - /* - * make dir for the new iface, if iface exists or rule dir has changed redo soft link - * may need to move this as a func to new_snort.inc - */ - $newSnortDir = 'sn_' . $_POST['uuid']; - $pathToSnortDir = '/usr/local/etc/snort'; - - // creat iface dir and ifcae rules dir - if (!is_dir("{$pathToSnortDir}/{$newSnortDir}")) { - createNewIfaceDir($pathToSnortDir, $newSnortDir); - } //end of mkdir - - snortRulesCreateSoftlink(); - - } SnortIfaces_Snort_Interfaces_edit(); - - } // end of snort_interfaces_edit - - // snort preprocessor edit - if ($_POST['ifaceTab'] == 'snort_preprocessors') { - - function SnortIfaces_Snort_PreprocessorsFunc() - { - if (!isset($_POST['dce_rpc_2'])) { - $_POST['dce_rpc_2'] = ($_POST['dce_rpc_2'] == '' ? off : $_POST['dce_rpc_2']); - } - - if (!isset($_POST['dns_preprocessor'])) { - $_POST['dns_preprocessor'] = ($_POST['dns_preprocessor'] == '' ? off : $_POST['dns_preprocessor']); - } - - if (!isset($_POST['ftp_preprocessor'])) { - $_POST['ftp_preprocessor'] = ($_POST['ftp_preprocessor'] == '' ? off : $_POST['ftp_preprocessor']); - } - - if (!isset($_POST['http_inspect'])) { - $_POST['http_inspect'] = ($_POST['http_inspect'] == '' ? off : $_POST['http_inspect']); - } - - if (!isset($_POST['other_preprocs'])) { - $_POST['other_preprocs'] = ($_POST['other_preprocs'] == '' ? off : $_POST['other_preprocs']); - } - - if (!isset($_POST['perform_stat'])) { - $_POST['perform_stat'] = ($_POST['perform_stat'] == '' ? off : $_POST['perform_stat']); - } - - if (!isset($_POST['sf_portscan'])) { - $_POST['sf_portscan'] = ($_POST['sf_portscan'] == '' ? off : $_POST['sf_portscan']); - } - - if (!isset($_POST['smtp_preprocessor'])) { - $_POST['smtp_preprocessor'] = ($_POST['smtp_preprocessor'] == '' ? off : $_POST['smtp_preprocessor']); - } - - } SnortIfaces_Snort_PreprocessorsFunc(); - - } - - // snort barnyard edit - if ($_POST['ifaceTab'] == 'snort_barnyard') { - function SnortIfaces_Snort_Barnyard() - { - // make shure iface is lower case - $_POST['interface'] = strtolower($_POST['interface']); - - if (!isset($_POST['barnyard_enable'])) { - $_POST['barnyard_enable'] = ($_POST['barnyard_enable'] == '' ? off : $_POST['barnyard_enable']); - } - } SnortIfaces_Snort_Barnyard(); - } - - - // unset POSTs that are markers not in db - unset($_POST['snortSaveSettings']); - unset($_POST['ifaceTab']); - - snortJsonReturnCode(snortSql_updateSettings('uuid', $_POST['uuid'])); - build_snort_settings($_POST['uuid']); - - } saveSnortIfaces(); - - } // END IF SnortIfaces - - } snortSaveSettingsFunc(); - - -} // STOP General Settings Save - -// Suppress settings save -if ($_POST['snortSaveSuppresslist'] == 1) { - - function snortSaveSuppresslistFunc() - { - - // post for supress_edit - if ($_POST['ifaceTab'] == 'snort_interfaces_suppress_edit') { - - // make sure filename is valid - if (!is_validFileName($_POST['filename'])) { - echo 'Error: FileName'; - return false; - } - - // unset POSTs that are markers not in db - unset($_POST['snortSaveSuppresslist']); - unset($_POST['ifaceTab']); - - // convert textbox to base64 - $_POST['suppresspassthru'] = base64_encode($_POST['suppresspassthru']); - - // Write to database - snortJsonReturnCode(snortSql_updateSettings('uuid', $_POST['uuid'])); - - } - - } - snortSaveSuppresslistFunc(); - -} - -// Whitelist settings save -if ($_POST['snortSaveWhitelist'] == 1) { - - function snortSaveWhitelistFunc() - { - - if ($_POST['ifaceTab'] == 'snort_interfaces_whitelist_edit') { - - if (!is_validFileName($_POST['filename'])) { - echo 'Error: FileName'; - return false; - } - - $_POST['wanips'] = ($_POST['wanips'] == '' ? off : $_POST['wanips']); - $_POST['wangateips'] = ($_POST['wangateips'] == '' ? off : $_POST['wangateips']); - $_POST['wandnsips'] = ($_POST['wandnsips'] == '' ? off : $_POST['wandnsips']); - $_POST['vips'] = ($_POST['vips'] == '' ? off : $_POST['vips']); - $_POST['vpnips'] = ($_POST['vpnips'] == '' ? off : $_POST['vpnips']); - - } - - // unset POSTs that are markers not in db - unset($_POST['snortSaveWhitelist']); - unset($_POST['ifaceTab']); - - // Split the POST for 2 arraus - $whitelistIPs = $_POST['list']; - unset($_POST['list']); - - - if (snortSql_updateSettings('uuid', $_POST['uuid']) && snortSql_updateWhitelistIps($whitelistIPs)) { - snortJsonReturnCode(true); - }else{ - snortJsonReturnCode(false); - } - - } - snortSaveWhitelistFunc(); - -} - -// download code for alerts page -if ($_POST['snortlogsdownload'] == 1) { - - function snortlogsdownloadFunc() - { - conf_mount_rw(); - snort_downloadAllLogs(); - conf_mount_ro(); - } - snortlogsdownloadFunc(); - -} - -// download code for alerts page -if ($_POST['snortblockedlogsdownload'] == 1) { - - function snortblockedlogsdownloadFunc() - { - conf_mount_rw(); - snort_downloadBlockedIPs(); - conf_mount_ro(); - } - snortblockedlogsdownloadFunc(); - -} - - -// code neeed to be worked on when finnished rules code -if ($_POST['snortlogsdelete'] == 1) { - - function snortlogsdeleteFunc() - { - conf_mount_rw(); - snortDeleteLogs(); - conf_mount_ro(); - } - snortlogsdeleteFunc(); -} - -// flushes snort2c table -if ($_POST['snortflushpftable'] == 1) { - - function snortflushpftableFunc() - { - conf_mount_rw(); - snortRemoveBlockedIPs(); - conf_mount_ro(); - } - snortflushpftableFunc(); -} - -// reset db reset_snortgeneralsettings -if ($_POST['reset_snortgeneralsettings'] == 1) { - - function reset_snortgeneralsettingsFunc() - { - conf_mount_rw(); - reset_snortgeneralsettings(); - conf_mount_ro(); - } - reset_snortgeneralsettingsFunc(); - -} - - -?> - - - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_new.inc b/config/snort-dev/snortsam-package-code/snort_new.inc deleted file mode 100644 index b9fc2322..00000000 --- a/config/snort-dev/snortsam-package-code/snort_new.inc +++ /dev/null @@ -1,1368 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -// unset crsf checks -if(isset($_POST['__csrf_magic'])) { - unset($_POST['__csrf_magic']); -} - -//require_once("pfsense-utils.inc"); -require_once("config.inc"); -require_once("functions.inc"); - -// create and cp to tmp db dir -if (!file_exists('/var/snort/')) { - exec('/bin/mkdir -p /var/snort/'); -} - -if (file_exists('/usr/local/pkg/snort/snortDBtemp')) { - exec('/bin/cp /usr/local/pkg/snort/snortDBtemp /var/snort/snortDBtemp'); -} - -// used in snort_rules_ips.php and create sid block map -function snortSearchArray($array, $key, $value) -{ - $results = array(); - - if (is_array($array)) - { - foreach ($array as $subarray) - { - if ($subarray[$key] == $value) { - $results = $subarray; - } - - } - - } - - return $results; -} - -// used in snort_rules_ips.php and create sid block map -function getCurrentIpsRuleArray($output) -{ - - foreach (array_unique($output) as $line) - { - $newOutput = explode(' # ', $line); - $newLine[] = $newOutput; - } - - return $newLine; -} - -/* -* make dir for the new iface, if iface exists or rule dir has changed redo soft link -*/ -function snortRulesCreateSoftlink() -{ - $newSnortDir = 'sn_' . $_POST['uuid']; - $pathToSnortDir = '/usr/local/etc/snort'; - - // change the rule path - if (is_dir("{$pathToSnortDir}/{$newSnortDir}")) { - - $snortCurrentRuleDbName = snortSql_fetchAllSettings('snortDB', 'snortIfaces', 'uuid', $_POST['uuid']); - - if ($_POST['ruledbname'] !== $snortCurrentRuleDbName['ruledbname'] || !file_exists("{$pathToSnortDir}/{$newSnortDir}/rules")) { - - // NOTE: use full paths or link rm will not work, Freebsd love - exec("/bin/rm {$pathToSnortDir}/{$newSnortDir}/rules"); - exec("/bin/ln -s /usr/local/etc/snort/snortDBrules/DB/{$_POST['ruledbname']}/rules {$pathToSnortDir}/{$newSnortDir}/rules"); - - } - - } -} - - -// Wites selected sig to file -function snortSidStringRuleEditGUI() -{ - - $workingFile = '/usr/local/etc/snort/sn_' . $_POST['snortSidRuleIface'] . '/rules/' . $_POST['snortSidRuleFile']; - - $splitcontents = split_rule_file($workingFile); - - if (!empty($splitcontents)) { - $sidLinePosPre = exec('/usr/bin/sed -n /sid:' . $_POST['snortSidNum'] . '\;/= ' . $workingFile); - $sidLinePos = $sidLinePosPre - 1; - - $splitcontents[$sidLinePos] = $_POST['sidstring']; - - - write_rule_file($splitcontents, $workingFile); - - return true; - } - - return false; - -} - -function sendSidStringRuleEditGUI() -{ - - $sidCall = exec('sed -n "/alert.*sid:' . $_GET['sid'] . ';.*/p" /usr/local/etc/snort/sn_' . $_GET['snortIface'] . '/rules/' . $_GET['snortRuleFile']); - $sidCallJsonFilter = escapeJsonString($sidCall); - - echo '{"sidstring":' . '"' . $sidCallJsonFilter . '","sid":' . '"' . $_GET['sid'] . '"}'; - return true; -} - -// create new Ifac dirs and soft links -function createNewIfaceDir($pathToSnortDir, $newSnortDir) { - - exec("/bin/mkdir -p {$pathToSnortDir}/{$newSnortDir}"); - - // create rules dir soft link if setting is default - if ($_POST['ruledbname'] === 'default' || empty($_POST['ruledbname'])) { - if (!file_exists("{$pathToSnortDir}/sn_{$_POST['uuid']}/rules") && file_exists('/usr/local/etc/snort/snortDBrules/DB/default/rules')) { - exec("/bin/ln -s {$pathToSnortDir}/snortDBrules/DB/default/rules {$pathToSnortDir}/sn_{$_POST['uuid']}/rules"); - } - } - - // create rules dir soft link if setting is not default - if ($_POST['ruledbname'] !== 'default' || $_POST['ruledbname'] != '') { - if (!file_exists("{$pathToSnortDir}/sn_{$_POST['uuid']}/rules") && file_exists("{$pathToSnortDir}/snortDBrules/DB/{$_POST['ruledbname']}/rules")) { - exec("/bin/ln -s {$pathToSnortDir}/snortDBrules/DB/{$_POST['ruledbname']}/rules {$pathToSnortDir}/sn_{$_POST['uuid']}/rules"); - } - } - - // cp new rules - exec("/bin/cp {$pathToSnortDir}/etc/*.config {$pathToSnortDir}/sn_{$_POST['uuid']}"); - exec("/bin/cp {$pathToSnortDir}/etc/*.conf {$pathToSnortDir}/sn_{$_POST['uuid']}"); - exec("/bin/cp {$pathToSnortDir}/etc/*.map {$pathToSnortDir}/sn_{$_POST['uuid']}"); - exec("/bin/cp {$pathToSnortDir}/etc/generators {$pathToSnortDir}/sn_{$_POST['uuid']}"); - exec("/bin/cp {$pathToSnortDir}/etc/sid {$pathToSnortDir}/sn_{$_POST['uuid']}"); -} // end of func - -function escapeJsonString($escapeString) -{ - // NOTE: foward slash has added spaces on each side ie and chrome were giving issues with - $search = array('\\', '\n', '\r', '\u', '\t', '\f', '\b', '/', '"'); - $replace = array('\\\\', '\\n', '\\r', '\\u', '\\t', '\\f', '\\b', ' \/ ', '\"'); - $encoded_string = str_replace($search, $replace, $escapeString); - - return $encoded_string; - -} - -// limit the length of the given string to $MAX_LENGTH char -function trimLength($s) { - - - $MAX_LENGTH = 13; - $str_to_count = $s; - if (strlen($str_to_count) <= $MAX_LENGTH) { - return $s; - } - - $s2 = substr($str_to_count, 0, $MAX_LENGTH - 3); - $s2 .= "..."; - return $s2; -} - - -// builds base array with sid etc.... -function newFilterRuleSig($baseruleArray) -{ - - function get_middle($source, $beginning, $ending, $init_pos) - { - $beginning_pos = strpos($source, $beginning, $init_pos); - $middle_pos = $beginning_pos + strlen($beginning); - $ending_pos = strpos($source, $ending, $beginning_pos); - $middle = substr($source, $middle_pos, $ending_pos - $middle_pos); - return $middle; - } - - - $i = 0; - $newSigArray[] = array(); - foreach ( $baseruleArray as $value ) - { - if (preg_match('/^# alert/', $value) || preg_match('/^alert/', $value)) { - - // add sid - $newSigArray[$i]['sid'] = get_middle($value, 'sid:', ';', 0); - - // remove whitespaces - $rmWhitespaces = preg_replace('/\s\s+/', ' ', $value); - // remove whitespace betwin # aerrt - $rmAlertWhitespace = preg_replace('/^# alert/', '#alert', $rmWhitespaces); - $splitcontents = explode(' ', $rmAlertWhitespace); - - // enable or disable - if ($splitcontents[0] === '#alert') { - $newSigArray[$i]['enable'] = 'off'; - }else{ - $newSigArray[$i]['enable'] = 'on'; - } - - // proto - $newSigArray[$i]['proto'] = $splitcontents[1]; - - // source - $newSigArray[$i]['src'] = trimLength($splitcontents[2]); - - // source port - $newSigArray[$i]['srcport'] = trimLength($splitcontents[3]); - - // Destination - $newSigArray[$i]['dst'] = trimLength($splitcontents[5]); - - // Destination port - $newSigArray[$i]['dstport'] = trimLength($splitcontents[6]); - - // sig message - $newSigArray[$i]['msg'] = get_middle($value, 'msg:"', '";', 0); - - } - - $i++; - - } - - return $newSigArray; -} - - -function split_rule_file($workingFile) -{ - $filehandle = fopen($workingFile, "r"); - $contents = fread($filehandle, filesize($workingFile)); - - fclose ($filehandle); - - $delimiter = "\n"; - - $splitcontents = explode($delimiter, $contents); - - return $splitcontents; -} - - -// write rule file to disk -function write_rule_file($content_changed, $received_file) -{ - - //read snort file with writing enabled - $filehandle = fopen($received_file, "w"); - - //delimiter for each new rule is a new line - $delimiter = "\n"; - - //implode the array back into a string for writing purposes - $fullfile = implode($delimiter, $content_changed); - - //write data to file - fwrite($filehandle, $fullfile); - - //close file handle - fclose($filehandle); - -} - - -// Save ruleSets settings -function snortSql_updateRuleSigList() -{ - - // selected snort rule file - $workingFile = "/usr/local/etc/snort/snortDBrules/DB/{$_SESSION['snort']['tmp']['snort_rules']['rdbuuid']}/rules/{$_SESSION['snort']['tmp']['snort_rules']['rulefile']}"; - - $splitcontents = split_rule_file($workingFile); - - // open rule file and change enable/disable sids - function read_rule_file($splitcontents, $enableSigsArray, $disableSigsArray) - { - - foreach ($splitcontents as $sigLine) - { - $replaceChars = array('/sid:/', '/;/'); - preg_match('/sid:[0-9]*;/', $sigLine, $matches); - $sidLine = preg_replace($replaceChars, '', $matches[0]); - - - if (empty($sidLine)) { - $tempstring[] = $sigLine; - }else{ - - if (in_array($sidLine, $enableSigsArray)) { - $tempstring[] = str_replace("# alert", "alert", $sigLine); - } - - if (in_array($sidLine, $disableSigsArray)) { - $tempstring[] = str_replace("alert", "# alert", $sigLine); - } - - if (!in_array($sidLine, $enableSigsArray) && !in_array($sidLine, $disableSigsArray)) { - $tempstring[] = $sigLine; - } - } - } - - return $tempstring; - } - - // build user selected enbled and disabled arrays - $enableSigsArray = array(); - $disableSigsArray = array(); - - if (!isset($_POST['filenamcheckbox2'])) { - $_POST['filenamcheckbox2'] = array(); - } - - $newFilterRuleSigArray = newFilterRuleSig($splitcontents); - - foreach ($newFilterRuleSigArray as $sigArray) - { - // enable sig - if(in_array($sigArray['sid'], $_POST['filenamcheckbox2']) && $sigArray['enable'] == 'off') { - $enableSigsArray[] = $sigArray['sid']; - } - - // disable sig - if(!in_array($sigArray['sid'], $_POST['filenamcheckbox2']) && $sigArray['enable'] == 'on') { - $disableSigsArray[] = $sigArray['sid']; - } - } - - // read rule file change disable/enable then write to file if arrays are not empty - if (!empty($enableSigsArray) || !empty($disableSigsArray)) { - write_rule_file(read_rule_file($splitcontents, $enableSigsArray, $disableSigsArray), $workingFile); - } - - // Insert into the DB for oinkmaster - - function sql_EnableDisabeSid($SigArray, $OnOff) - { - - $dbname = $_SESSION['snort']['tmp']['snort_rules']['dbName']; - $table = $_SESSION['snort']['tmp']['snort_rules']['dbTable']; - $rdbuuid = $_SESSION['snort']['tmp']['snort_rules']['rdbuuid']; - $rulefile = $_SESSION['snort']['tmp']['snort_rules']['rulefile']; - $addDate = date(U); - - // dont let user pick the DB path - $db = sqlite_open("/usr/local/pkg/snort/{$dbname}"); - - foreach ($SigArray as $mDEanbled) - { - - $resultid = sqlite_query($db, - "SELECT id FROM {$table} WHERE signatureid = '{$mDEanbled}' AND signaturefilename = '{$rulefile}'; - "); - - $chktable = sqlite_fetch_all($resultid, SQLITE_ASSOC); - - if (empty($chktable)) { - - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "INSERT INTO {$table} (date, rdbuuid, signatureid, signaturefilename, enable) VALUES ('{$addDate}', '{$rdbuuid}', '{$mDEanbled}', '{$rulefile}', '{$OnOff}'); - "); - - }else{ - if ($chktable[0]['enable'] != $OnOff) { - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$table} SET date = {$addDate}, enable = '{$OnOff}' WHERE signatureid = '{$mDEanbled}' AND signaturefilename = '{$rulefile}'; - "); - } - - - } - - - } - - sqlite_close($db); - - } // snd of function - - sql_EnableDisabeSid($enableSigsArray, 'on'); - sql_EnableDisabeSid($disableSigsArray, 'off'); - - - return true; - - -} // END Save ruleSets settings - - -// Save rulessigs settings for snort_rules_ips -function snortSql_updateRulesSigsIps() -{ - - // dont let user pick the DB path - $db = sqlite_open("/usr/local/pkg/snort/{$_POST['dbName']}"); - - function insertUpdateDB($db) - { - - // get default settings - $listGenRules = array(); - $listGenRules = snortSql_fetchAllSettings('snortDBrules', 'SnortruleGenIps', 'rdbuuid', $_POST['rdbuuid']); - - // if $listGenRules empty list defaults - if (empty($listGenRules)) { - $listGenRules[0] = array( - 'id' => 1, - 'rdbuuid' => $_POST['rdbuuid'], - 'enable' => 'on', - 'who' => 'src', - 'timeamount' => 15, - 'timetype' => 'minutes' - ); - } - - $addDate = date(U); - - // checkbox off catch - $listGenRulesEnable = $listGenRules[0]['enable']; - if ( empty($listGenRules[0]['enable']) || $listGenRules[0]['enable'] === 'off' ) { - - $listGenRulesEnable = 'off'; - } - - // TODO: inprove this foreach so we only interact with db once - foreach ($_POST['snortsam']['db'] as $singleSig) - { - - $resultid = sqlite_query($db, - "SELECT id FROM {$_POST['dbTable']} WHERE siguuid = '{$singleSig['siguuid']}' and rdbuuid = '{$_POST['rdbuuid']}'; - "); - - $chktable = sqlite_fetch_all($resultid, SQLITE_ASSOC); - - // checkbox off catch - $singleSigEnable = $singleSig['enable']; - if ( empty($singleSig['enable']) ) { - - $singleSigEnable = 'off'; - } - - // only do this if something change from defauts settings, note: timeamount Not equal - $somthingChanged = FALSE; - if ( $singleSigEnable !== $listGenRulesEnable || $singleSig['who'] !== $listGenRules[0]['who'] || $singleSig['timeamount'] != $listGenRules[0]['timeamount'] || $singleSig['timetype'] !== $listGenRules[0]['timetype'] ) { - $somthingChanged = TRUE; - } - - if ( empty($chktable) && $somthingChanged ) { - - $rulesetUuid = genAlphaNumMixFast(11, 14); - - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "INSERT INTO {$_POST['dbTable']} (date, uuid, rdbuuid, enable, siguuid, sigfilename, who, timeamount, timetype) VALUES ('{$addDate}', '{$rulesetUuid}', '{$_POST['rdbuuid']}', '{$singleSigEnable}', '{$singleSig['siguuid']}', '{$singleSig['sigfilename']}', '{$singleSig['who']}', '{$singleSig['timeamount']}', '{$singleSig['timetype']}'); - "); - - } - - if ( !empty($chktable) && $somthingChanged ) { - - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$_POST['dbTable']} SET date ='{$addDate}', enable = '{$singleSigEnable}', who = '{$singleSig['who']}', timeamount = '{$singleSig['timeamount']}', timetype = '{$singleSig['timetype']}' WHERE rdbuuid = '{$_POST['rdbuuid']}' and sigfilename = '{$singleSig['sigfilename']}'; - "); - - } - - } // END foreach - - } insertUpdateDB($db); - - function cleanupDB($db) - { - // clean database of old names and turn rulesets off - $listDir = snortScanDirFilter("/usr/local/etc/snort/snortDBrules/DB/{$_POST['rdbuuid']}/rules/", '\.rules'); - - $resultAllRulesetname = sqlite_query($db, - "SELECT sigfilename FROM {$_POST['dbTable']} WHERE rdbuuid = '{$_POST['rdbuuid']}'; - "); - - $chktable2 = sqlite_fetch_all($resultAllRulesetname, SQLITE_ASSOC); - - if (!empty($chktable2)) { - foreach ($chktable2 as $value) - { - - if(!in_array($value['sigfilename'], $listDir)) { - $deleteMissingRuleset = sqlite_query($db, // @ supress warnings use only in production - "DELETE FROM {$_POST['dbTable']} WHERE sigfilename = '{$value['sigfilename']}' and rdbuuid = '{$_POST['rdbuuid']}'; - "); - } - - } - } - } cleanupDB($db); - - sqlite_close($db); - return true; - -} - - - -// Save ruleSets settings -function snortSql_updateRuleSetList() -{ - - function createUpdateRulesetTable() - { - - $addDate = date(U); - - // dont let user pick the DB path - $db = sqlite_open("/usr/local/pkg/snort/{$_POST['dbName']}"); - - if (empty($_POST['filenamcheckbox'])) { - $ruleSetfilenames = array(); - } - - // foreach selected rulesets do this - if (!empty($_POST['filenamcheckbox'])) { - foreach ($_POST['filenamcheckbox'] as $ruleSetfilename) - { - - $resultid = sqlite_query($db, - "SELECT id, enable FROM {$_POST['dbTable']} WHERE rulesetname = '{$ruleSetfilename}' and rdbuuid = '{$_POST['rdbuuid']}'; - "); - - $chktable = sqlite_fetch_all($resultid, SQLITE_ASSOC); - - if (empty($chktable)) { - - $rulesetUuid = genAlphaNumMixFast(11, 14); - - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "INSERT INTO {$_POST['dbTable']} (date, uuid, rdbuuid, rulesetname, enable) VALUES ('{$addDate}', '{$rulesetUuid}', '{$_POST['rdbuuid']}', '{$ruleSetfilename}', 'on'); - "); - - }else{ - if ($chktable[0]['enable'] == 'off') { - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$_POST['dbTable']} SET enable = 'on' WHERE id = '{$chktable[0]['id']}'; - "); - } - } - } - } // end foreach if - - - // clean database of old names and turn rulesets off - $listDir = snortScanDirFilter("/usr/local/etc/snort/snortDBrules/DB/{$_POST['rdbuuid']}/rules/", '\.rules'); - - $resultAllRulesetname = sqlite_query($db, - "SELECT rulesetname FROM {$_POST['dbTable']} WHERE rdbuuid = '{$_POST['rdbuuid']}'; - "); - - $chktable2 = sqlite_fetch_all($resultAllRulesetname, SQLITE_ASSOC); - - - if (!empty($chktable2)) { - foreach ($chktable2 as $value) - { - - if(!in_array($value['rulesetname'], $listDir)) { - $deleteMissingRuleset = sqlite_query($db, // @ supress warnings use only in production - "DELETE FROM {$_POST['dbTable']} WHERE rulesetname = '{$value['rulesetname']}' and rdbuuid = '{$_POST['rdbuuid']}'; - "); - } - - if(!in_array($value['rulesetname'], $_POST['filenamcheckbox'])) { - $ruleSetisOff = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$_POST['dbTable']} SET enable = 'off' WHERE rulesetname = '{$value['rulesetname']}' and rdbuuid = '{$_POST['rdbuuid']}'; - "); - } - } - } - sqlite_close($db); - } // END createUpdateRulesetTable func - createUpdateRulesetTable(); - - // save gen setting only if on ips tab - if ($_POST['dbTable'] === 'SnortruleSetsIps') { - - function createUpdateRulesetGenTable() - { - $table = 'SnortruleGenIps'; - $rulesetUuid = genAlphaNumMixFast(11, 14); - $addDate = date(U); - - // if enable is empty then set to off - if (empty($_POST['snortsam']['db']['gensettings']['enable'])) { - - $_POST['snortsam']['db']['gensettings']['enable'] = 'off'; - } - - // dont let user pick the DB path - $db = sqlite_open("/usr/local/pkg/snort/{$_POST['dbName']}"); - - $resultid = sqlite_query($db, - "SELECT id FROM {$table} WHERE rdbuuid = '{$_POST['rdbuuid']}'; - "); - - $chktable = sqlite_fetch_all($resultid, SQLITE_ASSOC); - - if (!empty($chktable)) { - - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "UPDATE {$table} SET enable = '{$_POST['snortsam']['db']['gensettings']['enable']}', who = '{$_POST['snortsam']['db']['gensettings']['who']}', timeamount = '{$_POST['snortsam']['db']['gensettings']['timeamount']}', timetype = '{$_POST['snortsam']['db']['gensettings']['timetype']}' WHERE rdbuuid = '{$_POST['rdbuuid']}'; - "); - - }else{ - - $query_ck = sqlite_query($db, // @ supress warnings usonly in production - "INSERT INTO {$table} (date, uuid, rdbuuid, enable, who, timeamount, timetype) VALUES ('{$addDate}', '{$rulesetUuid}', '{$_POST['rdbuuid']}', '{$_POST['snortsam']['db']['gensettings']['enable']}', '{$_POST['snortsam']['db']['gensettings']['who']}', '{$_POST['snortsam']['db']['gensettings']['timeamount']}', '{$_POST['snortsam']['db']['gensettings']['timetype']}'); - "); - } - - sqlite_close($db); - } // END createUpdateRulesetGenTable - createUpdateRulesetGenTable(); - - } - return true; - -} // END Save ruleSets settings - - -function snortSql_fetchAllInterfaceRules($table, $dbname) -{ - // do let user pick the DB path - $db = sqlite_open("/usr/local/pkg/snort/{$dbname}"); - - $result = sqlite_query($db, - "SELECT * FROM {$table} WHERE id > 0; - "); - - $chktable = sqlite_fetch_all($result, SQLITE_ASSOC); - - sqlite_close($db); - - return $chktable; - -} - - -// fetch db Settings NONE Json -function snortSql_fetchAllSettings($dbname, $table, $type, $id_uuid) -{ - - if (empty($dbname) || empty($table) || empty($type)) { - return false; - } - - $db = sqlite_open("/usr/local/pkg/snort/$dbname"); - - if ($type == 'All') { - - $result = sqlite_query($db, - "SELECT * FROM {$table} WHERE id > 0; - "); - - }else{ - - $result = sqlite_query($db, - "SELECT * FROM {$table} where {$type} = '{$id_uuid}'; - "); - - } - - if ($type == 'id' || $type == 'uuid') { - $chktable = sqlite_fetch_array($result, SQLITE_ASSOC); - } - - if ($type == 'All' || $type == 'ifaceuuid' || $type == 'ruledbname' || $type == 'rdbuuid' || $type == 'filename') { - $chktable = sqlite_fetch_all($result, SQLITE_ASSOC); - } - - sqlite_close($db); - - return $chktable; - - -} // end func - -// fetch db list settings NONE Json -function snortSql_fetchAllSettingsList($table, $listFilename) -{ - - $db = sqlite_open('/usr/local/pkg/snort/snortDB'); - - $result = sqlite_query($db, - "SELECT * FROM {$table} WHERE filename = \"{$listFilename}\"; - "); - - $chktable = sqlite_fetch_all($result, SQLITE_ASSOC); - - sqlite_close($db); - - return $chktable; - -} - -// Update settings to database -function snortSql_updateSettings($type, $id_uuid) -{ - $dbname = $_POST['dbName']; - $settings = $_POST; - - // update date on every save - $_POST['date'] = date(U); - - $db = "/usr/local/pkg/snort/$dbname"; - $mydb = sqlite_open("$db"); - $table = $settings['dbTable']; - - // unset POSTs that are markers not in db - unset($settings['dbName']); - unset($settings['dbTable']); - - // START add new row if not set - if ($type == 'uuid') { - - $query_ck = sqlite_query($mydb, // @ supress warnings usonly in production - "SELECT * FROM {$table} WHERE uuid = '{$id_uuid}'; - "); - - $query_ckFinal = sqlite_fetch_all($query_ck, SQLITE_ASSOC); - - if (empty($query_ckFinal)) { - - $query_ck = sqlite_query($mydb, // @ supress warnings usonly in production - "INSERT INTO {$table} (date, uuid) VALUES ('{$settings['date']}', '{$settings['uuid']}'); - "); - - if (sqlite_changes($mydb) < 1) { - sqlite_close($mydb); - return 'Error in query'; - } - - } - - } - - // START add values to row - $kv = array(); - foreach ($settings as $key => $value) - { - $kv[] = $key; - $val[] = $value; - } - - $countKv = count($kv); - - $i = -1; - while ($i < $countKv) - { - - $i++; - - if (!empty($kv[$i])) - { - - if ($type == 'id') - { - $query = sqlite_query($mydb, // @ supress warnings usonly in production - "UPDATE {$table} SET {$kv[$i]} = '{$val[$i]}' WHERE id = '{$id_uuid}'; - "); - } - - if ($type == 'uuid') - { - $query = sqlite_query($mydb, // @ supress warnings usonly in production - "UPDATE {$table} SET {$kv[$i]} = '{$val[$i]}' WHERE uuid = '{$id_uuid}'; - "); - } - - if (sqlite_changes($mydb) < 1) - { - sqlite_close($mydb); - return 'Error in query'; - } - - } - } // end while - - sqlite_close($mydb); - return true; - -} - - -// fetch for snort_interfaces_whitelist.php NONE Json -// use sqlite_fetch_array for single and sqlite_fetch_all for lists -function snortSql_fetchAllWhitelistTypes($table, $table2) -{ - - if (empty($table)) { - return false; - } - - $db = sqlite_open('/usr/local/pkg/snort/snortDB'); - - - $result = sqlite_query($db, - "SELECT * FROM {$table} where id > 0; - "); - - $chktable = sqlite_fetch_all($result, SQLITE_ASSOC); - - if (empty($chktable)) { - return false; - } - - if ($table2 != '') - { - foreach ($chktable as $value) - { - - $filename2 = $value['filename']; - - $result2 = sqlite_query($db, - "SELECT ip FROM {$table2} WHERE filename = \"{$filename2}\" LIMIT 4; - "); - - $chktable2 = sqlite_fetch_all($result2, SQLITE_ASSOC); - - $final2 = array('id' => $value['id']); - $final2['date'] = $value['date']; - $final2['uuid'] = $value['uuid']; - $final2['filename'] = $value['filename']; - $final2['description'] = $value['description']; - $final2['snortlisttype'] = $value['snortlisttype']; - - - $final2['list'] = $chktable2; - - $final[] = $final2; - - } // end foreach - }else{ - $final = $chktable; - } - sqlite_close($db); - - return $final; - - -} // end func - - -// Save Whitelistips Settings -function snortSql_updateWhitelistIps($newPostListips) -{ - - if(empty($newPostListips)) - { - return true; - } - - $table = $_POST['dbTable']; - $filename = $_POST['filename']; - - $db = '/usr/local/pkg/snort/snortDB'; - $mydb = sqlite_open("$db"); - $tableips = $table . 'ips'; - $date = date(U); - - // remove list array that has nul ip - foreach ($newPostListips as $ipsListEmpty) - { - if (!empty($ipsListEmpty['ip'])) - { - $genList[] = $ipsListEmpty; - } - } - unset($newPostListips); - - // remove everything if nothing is in the post - if (empty($genList)) - { - - $query = sqlite_query($mydb, // @ supress warnings use only in production - "DELETE FROM {$tableips} WHERE filename = '{$filename}'; - "); - - sqlite_close($mydb); - return true; - - } - - // START Remove entries from DB - $resultUuid = sqlite_query($mydb, - "SELECT uuid FROM {$tableips} WHERE filename = '{$filename}'; - "); - - $resultUuidFinal = sqlite_fetch_all($resultUuid, SQLITE_ASSOC); - - if (!empty($genList) && !empty($resultUuidFinal)) - { - - foreach ($resultUuidFinal as $list3) - { - $uuidListDB[] = $list3['uuid']; - } - - foreach ($genList as $list2) - { - $uuidListPOST[] = $list2['uuid']; - } - - // create diff array - $uuidDiff = array_diff($uuidListDB, $uuidListPOST); - - // delet diff list objs - if ($uuidDiff != '') - { - foreach ($uuidDiff as $list4) - { - - // remove everything - $query = sqlite_query($mydb, // @ supress warnings use only in production - "DELETE FROM {$tableips} WHERE uuid = '{$list4}'; - "); - - } // end foreach - } - } - - // START add entries/updates to DB - foreach ($genList as $list) - { - - if ($list['uuid'] == 'EmptyUUID') - { - - $uuid = genAlphaNumMixFast(28, 28); - $list['uuid'] = $uuid; - - $query = sqlite_query($mydb, // @ supress warnings use only in production - "INSERT INTO {$tableips} (date, uuid, filename) VALUES ('{$date}', '{$uuid}', '{$filename}'); - "); - - if (sqlite_changes($mydb) < 1) - { - sqlite_close($mydb); - return 'Error in query'; - } - - foreach ($list as $key => $value) - { - - if ($key != '') - { - - $query = sqlite_query($mydb, // @ supress warnings usonly in production - "UPDATE {$tableips} SET {$key} ='{$value}' WHERE uuid = '{$uuid}'; - "); - - if (sqlite_changes($mydb) < 1) - { - sqlite_close($mydb); - return 'Error in query'; - } - - } - - } // end foreach - - }else{ - - $uuid = $list['uuid']; - - foreach ($list as $key => $value) - { - - $query = sqlite_query($mydb, // @ supress warnings usonly in production - "UPDATE {$tableips} SET {$key} ='{$value}', date = '{$date}' WHERE uuid = '{$uuid}'; - "); - - if (sqlite_changes($mydb) < 1) - { - sqlite_close($mydb); - return 'Error in query'; - } - - } // end foreach - - } // end main if - - } // end Main foreach - - sqlite_close($mydb); - return true; - -} // end of func - -// RMlist Delete -function snortSql_updatelistDelete($databse, $table, $type, $uuid_filename) -{ - - $db = "/usr/local/pkg/snort/{$databse}"; - - $mydb = sqlite_open("$db"); - - if (!empty($type)) { - - $query = sqlite_query($mydb, // @ supress warnings usonly in production - "DELETE FROM {$table} WHERE {$type} = '{$uuid_filename}'; - "); - - if (sqlite_changes($mydb) < 1) { - sqlite_close($mydb); - return 'Error in query'; - } - - } - - sqlite_close($mydb); - return true; - -} // END main func - -// create dropdown list -function snortDropDownList($list, $setting) { - foreach ($list as $iday => $iday2) { - - echo "\n" . "' . "\r"; - - } -} - -// downlod all snort logs -function snort_downloadAllLogs() { - - $save_date = exec('/bin/date "+%Y-%m-%d-%H-%M-%S"'); - $file_name = "snort_logs_{$save_date}.tar.gz"; - - exec('/bin/rm /tmp/snort_logs_*.gz'); // remove old file - exec('/bin/rm /tmp/snort_blocked_*.gz'); // remove old file - exec('/bin/rm /tmp/snort_block.pf'); // remove old file - exec('/bin/rm -r /tmp/snort_blocked'); // remove old file - exec("/usr/bin/tar cfz /tmp/snort_logs_{$save_date}.tar.gz /var/log/snort"); - - if (file_exists("/tmp/snort_logs_{$save_date}.tar.gz")) { - echo " - { - \"snortdownload\": \"success\", - \"downloadfilename\": \"{$save_date}\" - } - "; - return true; - }else{ - return false; - } -} - -// send log files to browser GET function -function sendFileSnortLogDownload() { - //ob_start(); //importanr or other post will fail - $file_name_date = $_GET['snortlogfilename']; - - $file_name1 = "/tmp/snort_logs_{$file_name_date}.tar.gz"; - $file_name2 = "/tmp/snort_blocked_{$file_name_date}.tar.gz"; - - if (file_exists($file_name1)) { - $file_name = "snort_logs_{$file_name_date}.tar.gz"; - } - - if (file_exists($file_name2)) { - $file_name = "snort_blocked_{$file_name_date}.tar.gz"; - } - - if (empty($file_name)) { - echo 'Error no saved file.'; - return false; - } - - if(file_exists("/tmp/{$file_name}")) - { - $file = "/tmp/{$file_name}"; - header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n"); - header("Pragma: private"); // needed for IE - header("Cache-Control: private, must-revalidate"); // needed for IE - header('Content-type: application/force-download'); - header('Content-Transfer-Encoding: Binary'); - header("Content-length: ".filesize($file)); - header("Content-disposition: attachment; filename = {$file_name}"); - readfile("$file"); - exec("/bin/rm /tmp/{$file_name}"); - //od_end_clean(); //importanr or other post will fail - }else{ - echo 'Error no saved file.'; - return false; - } -} - -// Warning code not finnish untill rule code is DONE ! -// Delete Snort logs -function snortDeleteLogs() { - if(file_exists('/var/log/snort/alert')) - { - exec('/bin/echo "" > /var/log/snort/alert'); - //post_delete_logs(); - exec('/usr/sbin/chown snort:snort /var/log/snort/*'); - exec('/bin/chmod 660 /var/log/snort/*'); - sleep(2); - exec('/usr/bin/killall -HUP snort'); - } - - echo ' - { - "snortdelete": "success" - } - '; - return true; - -} - -// Warning code not finnish untill rule code is DONE ! -// code neeed to be worked on when finnished rules code -function post_delete_logs() -{ - global $config, $g; - - - $snort_log_dir = '/var/log/snort'; - - /* do not start config build if rules is empty */ - if (!empty($config['installedpackages']['snortglobal']['rule'])) - { - - - $rule_array = $config['installedpackages']['snortglobal']['rule']; - $id = -1; - foreach ($rule_array as $value) - { - - if (empty($id)) { - $id = 0; - } - - $id += 1; - - $result_lan = $config['installedpackages']['snortglobal']['rule'][$id]['interface']; - $snort_uuid = $config['installedpackages']['snortglobal']['rule'][$id]['uuid']; - - if ($snort_uuid != '') - { - if ($config['installedpackages']['snortglobal']['rule'][$id]['snortunifiedlog'] == 'on') - { - $snort_log_file_u2 = "{$snort_uuid}.u2."; - $snort_list_u2 = snort_file_list($snort_log_dir, $snort_log_file_u2); - if (is_array($snort_list_u2)) { - usort($snort_list_u2, "snort_file_sort"); - $snort_u2_rm_list = snort_build_order($snort_list_u2); - snort_remove_files($snort_u2_rm_list, $snort_u2_rm_list[0]); - } - }else{ - exec("/bin/rm $snort_log_dir/snort_{$snort_uuid}.u2*"); - } - - if ($config['installedpackages']['snortglobal']['rule'][$id]['tcpdumplog'] == 'on') - { - $snort_log_file_tcpd = "{$snort_uuid}.tcpdump."; - $snort_list_tcpd = snort_file_list($snort_log_dir, $snort_log_file_tcpd); - if (is_array($snort_list_tcpd)) { - usort($snort_list_tcpd, "snort_file_sort"); - $snort_tcpd_rm_list = snort_build_order($snort_list_tcpd); - snort_remove_files($snort_tcpd_rm_list, $snort_tcpd_rm_list[0]); - } - }else{ - exec("/bin/rm $snort_log_dir/snort_{$snort_uuid}.tcpdump*"); - } - - /* create barnyard2 configuration file */ - //if ($config['installedpackages']['snortglobal']['rule'][$id]['barnyard_enable'] == 'on') - //create_barnyard2_conf($id, $if_real, $snort_uuid); - - if ($config['installedpackages']['snortglobal']['rule'][$id]['perform_stat'] == on) - { - exec("/bin/echo '' > /var/log/snort/snort_{$snort_uuid}.stats"); - } - } - } - } -} - -// END General Functions - -// downlod all blocked ips to log -function snort_downloadBlockedIPs() { - - exec('/bin/rm /tmp/snort_logs_*.gz'); // remove old file - exec('/bin/rm /tmp/snort_blocked_*.gz'); // remove old file - exec('/bin/rm /tmp/snort_block.pf'); // remove old file - exec('/bin/rm -r /tmp/snort_blocked'); // remove old file - $save_date = exec('/bin/date "+%Y-%m-%d-%H-%M-%S"'); - $file_name = "snort_blocked_{$save_date}.tar.gz"; - exec('/bin/mkdir /tmp/snort_blocked'); - exec('/sbin/pfctl -t snort2c -T show > /tmp/snort_block.pf'); - - $blocked_ips_array_save = str_replace(' ', '', array_filter(explode("\n", file_get_contents('/tmp/snort_block.pf')))); - - if ($blocked_ips_array_save[0] != '') - { - /* build the list */ - $counter = 0; - foreach($blocked_ips_array_save as $fileline3) - { - $counter++; - exec("/bin/echo $fileline3 >> /tmp/snort_blocked/snort_block.pf"); - } - } - - exec("/usr/bin/tar cfz /tmp/snort_blocked_{$save_date}.tar.gz /tmp/snort_blocked"); - - if (file_exists("/tmp/snort_blocked_{$save_date}.tar.gz")) { - echo " - { - \"snortdownload\": \"success\", - \"downloadfilename\": \"{$save_date}\" - } - "; - return true; - }else{ - return false; - } - -} - -// flush all ips from snort2c table -function snortRemoveBlockedIPs() { - - exec("/sbin/pfctl -t snort2c -T flush"); - - echo ' - { - "snortdelete": "success" - } - '; - return true; - -} - -/* returns true if $name is a valid name for a whitelist file name or ip */ -function is_validFileName($name) { - - if (empty($name)) { - return false; - } - - if (!is_string($name)) { - return false; - } - - if (preg_match("/\s+/", $name)) { - return false; - } - - if (!preg_match("/[^a-zA-Z0-9\-_]/", $name)) { - return true; - } - - return false; -} - -/* gen Alpha Num Mix for uuids or anything random, NEVER USE rand() */ -/* mt_rand/mt_srand is insecure way to gen random nums and strings, when posible use /dev/random or /dev/urandom */ -function genAlphaNumMixFast($min = 14, $max = 28) -{ - - // gen random lenth - mt_srand(crc32(microtime())); - $num = mt_rand($min, $max); - // reseed - mt_srand(); - - // Gen random string - $num = $num > 36 ? 30 : $num; - - $pool = array_merge(range('A', 'Z'), range(0, 9), range('a', 'z')); - - $rand_keys = array_rand($pool, $num); - - $randAlpaNum = ''; - - if (is_array($rand_keys)) { - foreach ($rand_keys as $key) - { - $randAlpaNum .= $pool[$key]; - } - }else{ - $randAlpaNum .= $pool[$rand_keys]; - } - - return str_shuffle($randAlpaNum); - -} - -// scan a dir, build array with filetr -function snortScanDirFilter($path, $filtername) -{ - // list rules in the default dir - $listDir = array(); - $listDir = scandir("{$path}"); - - if (empty($filtername)) { - - return $listDir; - - }else{ - - $pattern = "/{$filtername}/"; - foreach ( $listDir as $val ) - { - if (preg_match($pattern, $val)) { - $filterDirList[] = $val; - } - } - unset($listDir); - } - return $filterDirList; -} - -?> - diff --git a/config/snort-dev/snortsam-package-code/snort_preprocessors.php b/config/snort-dev/snortsam-package-code/snort_preprocessors.php deleted file mode 100644 index d99f7f75..00000000 --- a/config/snort-dev/snortsam-package-code/snort_preprocessors.php +++ /dev/null @@ -1,337 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -$uuid = $_GET['uuid']; -if (isset($_POST['uuid'])) -$uuid = $_POST['uuid']; - -if ($uuid == '') { - echo 'error: no uuid'; - exit(0); -} - - -$a_list = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - - $pgtitle = "Snort: Interface Preprocessors and Flow"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    - - - -
    - -
    -
    - - - - - - - - -
    - - - -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - Note: -
    - Rules may be dependent on preprocessors!
    - Defaults will be used when there is no user input.

    -
    Performance Statistics
    Enable - > - Performance Statistics for this interface. -
    HTTP Inspect Settings
    Enable - > - Use HTTP Inspect to Normalize/Decode and detect HTTP traffic and protocol anomalies. -
    HTTP server flow depth - - - - -
    - - -1 to 1460 (-1 disables HTTP inspect, 0 enables all HTTP inspect) -
    - Amount of HTTP server response payload to inspect. Snort's performance may increase by adjusting this value. -
    - Setting this value too low may cause false negatives. Values above 0 are specified in bytes. Default value is 0
    -
    -
    Stream5 Settings
    Max Queued Bytes - - - - -
    - - Minimum is 1024, Maximum is 1073741824 ( default value is 1048576, 0means Maximum ) -
    - The number of bytes to be queued for reassembly for TCP sessions in memory. Default value is 1048576 -
    -
    Max Queued Segs - - - - -
    - - Minimum is 2, Maximum is 1073741824 ( default value is 2621, 0 means Maximum ) -
    - The number of segments to be queued for reassembly for TCP sessions in memory. Default value is 2621 -
    -
    General Preprocessor Settings
    - Enable
    - RPC Decode and Back Orifice detector -
    - > -
    - Normalize/Decode RPC traffic and detects Back Orifice traffic on the network. -
    - Enable -
    - FTP and Telnet Normalizer -
    - > -
    - Normalize/Decode FTP and Telnet traffic and protocol anomalies. -
    - Enable -
    - SMTP Normalizer -
    - > -
    - Normalize/Decode SMTP protocol for enforcement and buffer overflows. -
    - Enable -
    - Portscan Detection -
    - > -
    - Detects various types of portscans and portsweeps. -
    - Enable -
    - DCE/RPC2 Detection -
    - > -
    - The DCE/RPC preprocessor detects and decodes SMB and DCE/RPC traffic. -
    - Enable -
    - DNS Detection -
    - > -
    - The DNS preprocessor decodes DNS Response traffic and detects some vulnerabilities. -
    Define SSL_IGNORE - -
    - Encrypted traffic should be ignored by Snort for both performance reasons and to reduce false positives. -
    - Default: "443 465 563 636 989 990 992 993 994 995". Please use spaces and not commas.
    -
      - - -
      - Note: Please save your settings before you click Start. -
    -
    -
    -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_rules.php b/config/snort-dev/snortsam-package-code/snort_rules.php deleted file mode 100644 index fd102538..00000000 --- a/config/snort-dev/snortsam-package-code/snort_rules.php +++ /dev/null @@ -1,600 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -if (isset($_GET['uuid']) && isset($_GET['rdbuuid'])) { - echo 'Error: more than one uuid'; - exit(0); -} - -if (isset($_GET['uuid'])) { - $uuid = $_GET['uuid']; -} - -if (isset($_GET['rdbuuid'])) { - $rdbuuid = $_GET['rdbuuid']; -}else{ - $ruledbname_pre1 = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - $rdbuuid = $ruledbname_pre1['ruledbname']; -} - -// unset Session tmp on page load -unset($_SESSION['snort']['tmp']); - -// list rules in the default dir -$a_list = snortSql_fetchAllSettings('snortDBrules', 'Snortrules', 'uuid', $rdbuuid); - -$snortRuleDir = '/usr/local/etc/snort/snortDBrules/DB/' . $rdbuuid; - - // list rules in the default dir - $filterDirList = array(); - $filterDirList = snortScanDirFilter($snortRuleDir . '/rules', '\.rules'); - - // START read rule file - if ($_GET['openruleset']) { - $rulefile = $_GET['openruleset']; - }else{ - $rulefile = $filterDirList[0]; - } - - // path of rule file - $workingFile = $snortRuleDir . '/rules/' . $rulefile; - -function load_rule_file($incoming_file, $splitcontents) -{ - $pattern = '/(^alert |^# alert )/'; - foreach ( $splitcontents as $val ) - { - // remove whitespaces - $rmWhitespaces = preg_replace('/\s\s+/', ' ', $val); - - // filter none alerts - if (preg_match($pattern, $rmWhitespaces)) - { - $splitcontents2[] = $val; - } - - } - unset($splitcontents); - - return $splitcontents2; - -} - - // Load the rule file - // split the contents of the string file into an array using the delimiter - // used by rule gui edit and table build code - if (filesize($workingFile) > 0) { - $splitcontents = split_rule_file($workingFile); - - $splitcontents2 = load_rule_file($workingFile, $splitcontents); - - $countSig = count($splitcontents2); - - if ($countSig > 0) { - $newFilterRuleSigArray = newFilterRuleSig($splitcontents2); - } - } - - /* - * SET GLOBAL ARRAY $_SESSION['snort'] - * Use SESSION instead POST for security because were writing to files. - */ - - $_SESSION['snort']['tmp']['snort_rules']['dbName'] = 'snortDBrules'; - $_SESSION['snort']['tmp']['snort_rules']['dbTable'] = 'SnortruleSigs'; - $_SESSION['snort']['tmp']['snort_rules']['rdbuuid'] = $rdbuuid; - $_SESSION['snort']['tmp']['snort_rules']['rulefile'] = $rulefile; - - -// find ./ -name test.txt | xargs grep "^disablesid 127 " - - $pgtitle = "Snort: Category: rule: $rulefile"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - -
    - -
    -
    - - - - - - - - - - - - - - -
    - - -
    - -
    - -
    - - - - -
    - - -
    -
    -
    - - -
    - - - -
    -
    - - - - - - '; - }else{ - echo ' - - - - - - - '; - } - ?> - - - -
    - -
    - -
    - -
    -
    - - - - - - - - - -
    - Category: - - There are rules in this category. - - - - -
    -
    - - - - - - -
    - - -
    - -
    - - - - -
    - - - - - - - -
    Snort Signatures:
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OnSidProtoSrcPortDstPortMessage 
    -
    - - - - -
    - - -
    -
    -
    - - - - -
    -
    - -
    - - - -
    - -
    -
    - - - - - - - -
       
    - Note:
    - This is the Snort Rule Signature Viewer. - Please make sure not to add a whitespace before alert or #alert. -
    -
    - Warning: -
    - New settings will not take effect until interface restart. -

    -
    -
    -
    - - - - - - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_rules_ips.php b/config/snort-dev/snortsam-package-code/snort_rules_ips.php deleted file mode 100644 index d026b566..00000000 --- a/config/snort-dev/snortsam-package-code/snort_rules_ips.php +++ /dev/null @@ -1,471 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -// set page vars - -if (isset($_GET['uuid']) && isset($_GET['rdbuuid'])) { - echo 'Error: more than one uuid'; - exit(0); -} - -// set page vars -if (isset($_GET['uuid'])) { - $uuid = $_GET['uuid']; -} - -if (isset($_GET['rdbuuid'])) { - $rdbuuid = $_GET['rdbuuid']; -}else{ - $ruledbname_pre1 = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - $rdbuuid = $ruledbname_pre1['ruledbname']; -} - -if (empty($rdbuuid)) { - echo 'ERROR: Missing RDBUUID'; - exit; -} - -if (isset($_GET['rulefilename'])) { - $rulefilename = $_GET['rulefilename']; -}else{ - echo 'ERROR: Missing rulefilename'; - exit; -} - - - - -// get default settings -$listGenRules = array(); -$listGenRules = snortSql_fetchAllSettings('snortDBrules', 'SnortruleGenIps', 'rdbuuid', $rdbuuid); - -// get sigs in db -$listSigRules = array(); -$listSigRules = snortSql_fetchAllSettings('snortDBrules', 'SnortruleSigsIps', 'rdbuuid', $rdbuuid); - -// if $listGenRules empty list defaults -if (empty($listGenRules)) { - $listGenRules[0] = array( - 'id' => 1, - 'rdbuuid' => $_POST['rdbuuid'], - 'enable' => 'on', - 'who' => 'src', - 'timeamount' => 15, - 'timetype' => 'minutes' - ); -} - - $pgtitle = "Services: Snort: Ruleset Ips:"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - -
    -


    Please Wait...

    -
    - - - -
    - - - -
    - -
    -
    - - - - - - '; - }else{ - echo ' - - - - - - - '; - } - ?> - - - -
    - -
    - -
    - -
    - - -
    - - - -
    - - - - -
    - - - -
    - -
    -
    - - - - - - - - - - - - -
    Rule File Ips Settings
    - - - - - - - - - - - -
       On   Sid   Source   Amount   DurationMessage
    -
    - - - - -
    - - -
    -
    - - - - -
    -
    - - - -
    - - - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_rulesets.php b/config/snort-dev/snortsam-package-code/snort_rulesets.php deleted file mode 100644 index a2e4f7f3..00000000 --- a/config/snort-dev/snortsam-package-code/snort_rulesets.php +++ /dev/null @@ -1,347 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -if (isset($_GET['uuid']) && isset($_GET['rdbuuid'])) { - echo 'Error: more than one uuid'; - exit(0); -} - -// set page vars -if (isset($_GET['uuid'])) { - $uuid = $_GET['uuid']; -} - -if (isset($_GET['rdbuuid'])) { - $rdbuuid = $_GET['rdbuuid']; -}else{ - $ruledbname_pre1 = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - $rdbuuid = $ruledbname_pre1['ruledbname']; -} - -//$a_list = snortSql_fetchAllSettings('snortDBrules', 'SnortIfaces', 'uuid', $uuid); - - // list rules in the default dir - $filterDirList = array(); - $filterDirList = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/DB/' . $rdbuuid . '/rules', '\.rules'); - - // list rules in db that are on in a array - $listOnRules = array(); - $listOnRules = snortSql_fetchAllSettings('snortDBrules', 'SnortRuleSets', 'rdbuuid', $rdbuuid); - - if (!empty($listOnRules)) { - foreach ( $listOnRules as $val2 ) - { - if ($val2['enable'] == 'on') { - $rulesetOn[] = $val2['rulesetname']; - } - } - unset($listOnRules); - } - - $pgtitle = "Snort: Interface Rule Categories"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    -
    transgif
    - - - - - - '; - }else{ - echo ' - - - - - - - '; - } - ?> - -
    - -
    - -
    - -
    - - - - - - - - - -
    - - - - - -
    - - - - -
    - - - -
    - -
    -
    - - - - - - - - - - - - - -
    EnabledRuleset: Rules that end with "so.rules" are shared object rules.
    - - - - - -
    - - - - -
    Check the rulesets that you would like Snort to load at startup.
    -
    - - -
    - Note: - Please save your settings before you click start. -
    - - - - -
    - - - - - - -
    - - - - - - - - diff --git a/config/snort-dev/snortsam-package-code/snort_rulesets_ips.php b/config/snort-dev/snortsam-package-code/snort_rulesets_ips.php deleted file mode 100644 index abac2b6b..00000000 --- a/config/snort-dev/snortsam-package-code/snort_rulesets_ips.php +++ /dev/null @@ -1,411 +0,0 @@ -. - All rights reserved. - - Pfsense Old snort GUI - Copyright (C) 2006 Scott Ullrich. - - Pfsense snort GUI - Copyright (C) 2008-2012 Robert Zelaya. - - 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. Neither the name of the pfSense nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - - 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. - -*/ - -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/snort/snort_new.inc"); -require_once("/usr/local/pkg/snort/snort_gui.inc"); - -//Set no caching -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -if (isset($_GET['uuid']) && isset($_GET['rdbuuid'])) { - echo 'Error: more than one uuid'; - exit(0); -} - -// set page vars -if (isset($_GET['uuid'])) { - $uuid = $_GET['uuid']; -} - -if (isset($_GET['rdbuuid'])) { - $rdbuuid = $_GET['rdbuuid']; -}else{ - $ruledbname_pre1 = snortSql_fetchAllSettings('snortDB', 'SnortIfaces', 'uuid', $uuid); - $rdbuuid = $ruledbname_pre1['ruledbname']; -} - -//$a_list = snortSql_fetchAllSettings('snortDBrules', 'SnortIfaces', 'uuid', $uuid); - - // list rules in the default dir - $filterDirList = array(); - $filterDirList = snortScanDirFilter('/usr/local/etc/snort/snortDBrules/DB/' . $rdbuuid . '/rules', '\.rules'); - - // list rules in db that are on in a array - $listOnRules = array(); - $listOnRules = snortSql_fetchAllSettings('snortDBrules', 'SnortRuleSetsIps', 'rdbuuid', $rdbuuid); - - // list rules in db that are on in a array - $listGenRules = array(); - $listGenRules = snortSql_fetchAllSettings('snortDBrules', 'SnortruleGenIps', 'rdbuuid', $rdbuuid); - - if (!empty($listOnRules)) { - foreach ( $listOnRules as $val2 ) - { - if ($val2['enable'] == 'on') { - $rulesetOn[] = $val2['rulesetname']; - } - } - unset($listOnRules); - } - - $pgtitle = "Services: Snort: Ruleset Ips"; - include("/usr/local/pkg/snort/snort_head.inc"); - -?> - - - - - - - - - -
    -
    -
    - -
    -
    -



    Please Wait...

    -
    -
    -

    -
    -
    -
    - - - -
    -
    transgif
    - - - - - - '; - }else{ - echo ' - - - - - - - '; - } - ?> - -
    - -
    - -
    - -
    - - - - - - - - - -
    - - - -
    - - - - -
    - - - -
    - -
    -
    - - - - - - - - - - - -
    General Settings
    - - - - - -
    - - - - - - - - - - - - - - - - - -
       On   Source   Amount   Duration
    Default settings for all block rules - - type="checkbox"> - - - - - - - -
    -
    - - - - - - - - -
    EnabledSelect The Rulesets To Eable IPS On
    - - - - - -
    - - - - -
    Check the rulesets that you would like Snort to load at startup.
    -
    - - -
    - Note: - Please save your settings before you click start. -
    - - - - -
    - - - - - - -
    - - - - - - - - -- cgit v1.2.3 From c01ac3965a3adbcb4dbb7859ec0d49aacb4db76d Mon Sep 17 00:00:00 2001 From: Ermal Date: Tue, 18 Feb 2014 20:39:05 +0000 Subject: Remove lying around package --- .../patch_rc_filter_dirty.inc | 18 ------ .../patch_rc_filter_dirty.patch | 10 ---- .../patch_rc_filter_dirty.xml | 65 ---------------------- 3 files changed, 93 deletions(-) delete mode 100644 config/patch_rc_filter_dirty/patch_rc_filter_dirty.inc delete mode 100644 config/patch_rc_filter_dirty/patch_rc_filter_dirty.patch delete mode 100644 config/patch_rc_filter_dirty/patch_rc_filter_dirty.xml diff --git a/config/patch_rc_filter_dirty/patch_rc_filter_dirty.inc b/config/patch_rc_filter_dirty/patch_rc_filter_dirty.inc deleted file mode 100644 index 85b5edf6..00000000 --- a/config/patch_rc_filter_dirty/patch_rc_filter_dirty.inc +++ /dev/null @@ -1,18 +0,0 @@ - \ No newline at end of file diff --git a/config/patch_rc_filter_dirty/patch_rc_filter_dirty.patch b/config/patch_rc_filter_dirty/patch_rc_filter_dirty.patch deleted file mode 100644 index c0848a8c..00000000 --- a/config/patch_rc_filter_dirty/patch_rc_filter_dirty.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- /etc/rc.orig 2010-06-24 18:38:58.000000000 +0000 -+++ /etc/rc 2010-06-24 18:39:06.000000000 +0000 -@@ -319,7 +319,6 @@ - - # Remove stale files that have already been processed by bootup - # scripts --rm -f /tmp/filter_dirty - rm -f /tmp/rc.linkup - nohup /usr/bin/nice -n20 /usr/local/sbin/check_reload_status & - diff --git a/config/patch_rc_filter_dirty/patch_rc_filter_dirty.xml b/config/patch_rc_filter_dirty/patch_rc_filter_dirty.xml deleted file mode 100644 index 63f8f7d6..00000000 --- a/config/patch_rc_filter_dirty/patch_rc_filter_dirty.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - . - 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. - */ -/* ========================================================================== */ - ]]> - - Patch to stop /etc/rc from removing /tmp/filter_dirty on boot. Fixes boot issues with some packages on certain platforms. - pfSense 1.2.3 - None - Patch rc to leave filter_dirty - 0.2 - Patch rc to leave filter_dirty - /usr/local/pkg/patch_rc_filter_dirty.inc - - /usr/local/pkg/ - 077 - http://www.pfsense.com/packages/config/patch_rc_filter_dirty/patch_rc_filter_dirty.inc - - - /usr/local/pkg/ - 077 - http://www.pfsense.com/packages/config/patch_rc_filter_dirty/patch_rc_filter_dirty.patch - - - patch_rc_filter_dirty_install(); - - -- cgit v1.2.3 From 74f02a79cc94a22ad12d212c70d0970cf61e50f9 Mon Sep 17 00:00:00 2001 From: Ermal Date: Tue, 18 Feb 2014 21:02:25 +0000 Subject: Remove this package from the repo to not confuse new comers --- config/authng/bin/patch | Bin 41056 -> 0 bytes config/authng/diff/authng-fbegin.inc.diff | 15 - config/authng/diff/authng-globals.inc.diff | 16 - config/authng/diff/authng-guiconfig.inc.diff | 27 - config/authng/diff/authng-pfSenseHead.diff | 2128 -------------------- config/authng/doc/images/pfSense-AuthMethods.png | Bin 11639 -> 0 bytes config/authng/doc/images/pfSense-Backends.png | Bin 12499 -> 0 bytes config/authng/doc/images/pfSense-Peers.png | Bin 12813 -> 0 bytes config/authng/pkg/authng.inc | 323 --- config/authng/pkg/authng.xml | 194 -- config/authng/pkg/authng_authgui.inc | 287 --- config/authng/pkg/authng_authmethods.inc | 222 -- config/authng/pkg/authng_backends.inc | 234 --- config/authng/pkg/authng_classdefs.inc | 479 ----- config/authng/pkg/authng_peers.inc | 501 ----- config/authng/pkg/authng_usermanager.inc | 247 --- config/authng/www/js/headjs.inc | 157 -- config/authng/www/php/head.inc | 669 ------ config/authng/www/php/system_groupmanager.php | 797 -------- config/authng/www/php/system_usermanager.php | 84 - config/authng/www/php/system_usermanager_admin.inc | 92 - .../www/php/system_usermanager_admin_index.inc | 108 - .../www/php/system_usermanager_admin_newedit.inc | 167 -- config/authng/www/php/system_usermanager_edit.php | 294 --- .../authng/www/php/system_usermanager_settings.php | 110 - config/authng/www/php/system_usermanager_user.inc | 66 - config/authng/www/wizards/authng_wizard.xml | 496 ----- 27 files changed, 7713 deletions(-) delete mode 100644 config/authng/bin/patch delete mode 100644 config/authng/diff/authng-fbegin.inc.diff delete mode 100644 config/authng/diff/authng-globals.inc.diff delete mode 100644 config/authng/diff/authng-guiconfig.inc.diff delete mode 100644 config/authng/diff/authng-pfSenseHead.diff delete mode 100644 config/authng/doc/images/pfSense-AuthMethods.png delete mode 100644 config/authng/doc/images/pfSense-Backends.png delete mode 100644 config/authng/doc/images/pfSense-Peers.png delete mode 100644 config/authng/pkg/authng.inc delete mode 100644 config/authng/pkg/authng.xml delete mode 100644 config/authng/pkg/authng_authgui.inc delete mode 100644 config/authng/pkg/authng_authmethods.inc delete mode 100644 config/authng/pkg/authng_backends.inc delete mode 100644 config/authng/pkg/authng_classdefs.inc delete mode 100644 config/authng/pkg/authng_peers.inc delete mode 100644 config/authng/pkg/authng_usermanager.inc delete mode 100644 config/authng/www/js/headjs.inc delete mode 100644 config/authng/www/php/head.inc delete mode 100644 config/authng/www/php/system_groupmanager.php delete mode 100644 config/authng/www/php/system_usermanager.php delete mode 100644 config/authng/www/php/system_usermanager_admin.inc delete mode 100644 config/authng/www/php/system_usermanager_admin_index.inc delete mode 100644 config/authng/www/php/system_usermanager_admin_newedit.inc delete mode 100644 config/authng/www/php/system_usermanager_edit.php delete mode 100755 config/authng/www/php/system_usermanager_settings.php delete mode 100644 config/authng/www/php/system_usermanager_user.inc delete mode 100644 config/authng/www/wizards/authng_wizard.xml diff --git a/config/authng/bin/patch b/config/authng/bin/patch deleted file mode 100644 index f807fa85..00000000 Binary files a/config/authng/bin/patch and /dev/null differ diff --git a/config/authng/diff/authng-fbegin.inc.diff b/config/authng/diff/authng-fbegin.inc.diff deleted file mode 100644 index 8a38c1b4..00000000 --- a/config/authng/diff/authng-fbegin.inc.diff +++ /dev/null @@ -1,15 +0,0 @@ -Index: usr/local/www/fbegin.inc -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/fbegin.inc,v -retrieving revision 1.104.2.37.2.7 -diff -u -r1.104.2.37.2.7 fbegin.inc ---- usr/local/www/fbegin.inc 31 May 2007 03:21:59 -0000 1.104.2.37.2.7 -+++ usr/local/www/fbegin.inc 8 Sep 2007 21:16:29 -0000 -@@ -127,6 +127,7 @@ - -
  • Setup wizard
  • -
  • Static routes
  • -+ - - -
  • diff --git a/config/authng/diff/authng-globals.inc.diff b/config/authng/diff/authng-globals.inc.diff deleted file mode 100644 index 6dea7e6f..00000000 --- a/config/authng/diff/authng-globals.inc.diff +++ /dev/null @@ -1,16 +0,0 @@ -Index: globals.inc -=================================================================== -RCS file: /cvsroot/pfSense/etc/inc/globals.inc,v -retrieving revision 1.40.2.16 -diff -u -r1.40.2.16 globals.inc ---- globals.inc 27 Feb 2007 20:45:31 -0000 1.40.2.16 -+++ globals.inc 9 Sep 2007 20:54:52 -0000 -@@ -47,6 +47,8 @@ - "cf_conf_path" => "/cf/conf", - "www_path" => "/usr/local/www", - "xml_rootobj" => "pfsense", -+ "admin_group" => "admins", -+ "product_name" => "pfSense", - "pppoe_interface" => "ng0", - "n_pptp_units" => 16, /* this value can be overriden in pptp->n_pptp_units */ - "pptp_subnet" => 28, /* this value can be overriden in pptp->pptp_subnet */ diff --git a/config/authng/diff/authng-guiconfig.inc.diff b/config/authng/diff/authng-guiconfig.inc.diff deleted file mode 100644 index e65ae8b8..00000000 --- a/config/authng/diff/authng-guiconfig.inc.diff +++ /dev/null @@ -1,27 +0,0 @@ -Index: guiconfig.inc -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/guiconfig.inc,v -retrieving revision 1.90.2.31.2.3 -diff -u -r1.90.2.31.2.3 guiconfig.inc ---- guiconfig.inc 10 May 2007 20:49:41 -0000 1.90.2.31.2.3 -+++ guiconfig.inc 9 Sep 2007 19:43:31 -0000 -@@ -41,7 +41,7 @@ - - /* Include authentication routines */ - /* THIS MUST BE ABOVE ALL OTHER CODE */ --require_once("auth.inc"); -+require_once("authng_authgui.inc"); - - /* parse the configuration and include all configuration functions */ - require_once("config.inc"); -@@ -574,10 +574,6 @@ - - usort($config['shaper']['rule'], "rqpcmp"); - } --function gentitle($pgname) { -- global $config; -- return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pgname; --} - - /* update the changedesc and changecount(er) variables */ - function update_changedesc($update) { diff --git a/config/authng/diff/authng-pfSenseHead.diff b/config/authng/diff/authng-pfSenseHead.diff deleted file mode 100644 index 2a531271..00000000 --- a/config/authng/diff/authng-pfSenseHead.diff +++ /dev/null @@ -1,2128 +0,0 @@ -Index: usr/local/www/carp_status.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/carp_status.php,v -retrieving revision 1.27.2.3 -diff -u -r1.27.2.3 carp_status.php ---- usr/local/www/carp_status.php 3 Apr 2006 21:05:11 -0000 1.27.2.3 -+++ usr/local/www/carp_status.php 8 Sep 2007 18:31:52 -0000 -@@ -56,6 +56,7 @@ - - $pgtitle = "CARP: Status"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_arp.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_arp.php,v -retrieving revision 1.3.2.4 -diff -u -r1.3.2.4 diag_arp.php ---- usr/local/www/diag_arp.php 19 Mar 2006 22:23:31 -0000 1.3.2.4 -+++ usr/local/www/diag_arp.php 8 Sep 2007 18:32:10 -0000 -@@ -31,6 +31,7 @@ - require("guiconfig.inc"); - $pgtitle = "Diagnostics: ARP Table"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - ?> - - -Index: usr/local/www/diag_backup.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_backup.php,v -retrieving revision 1.70.2.18.2.2 -diff -u -r1.70.2.18.2.2 diag_backup.php ---- usr/local/www/diag_backup.php 3 May 2007 22:16:01 -0000 1.70.2.18.2.2 -+++ usr/local/www/diag_backup.php 8 Sep 2007 18:32:26 -0000 -@@ -225,6 +225,7 @@ - - $pgtitle = "Diagnostics: Backup/restore"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_confbak.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_confbak.php,v -retrieving revision 1.20.2.2 -diff -u -r1.20.2.2 diag_confbak.php ---- usr/local/www/diag_confbak.php 2 Jan 2006 23:46:23 -0000 1.20.2.2 -+++ usr/local/www/diag_confbak.php 8 Sep 2007 18:32:54 -0000 -@@ -50,6 +50,7 @@ - - $pgtitle = "Diagnostics: Configuration History"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_defaults.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_defaults.php,v -retrieving revision 1.6.4.3 -diff -u -r1.6.4.3 diag_defaults.php ---- usr/local/www/diag_defaults.php 28 Apr 2006 02:27:19 -0000 1.6.4.3 -+++ usr/local/www/diag_defaults.php 8 Sep 2007 18:32:58 -0000 -@@ -46,6 +46,7 @@ - - $pgtitle = "Diagnostics: Factory defaults"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_dhcp_leases.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_dhcp_leases.php,v -retrieving revision 1.11.2.17 -diff -u -r1.11.2.17 diag_dhcp_leases.php ---- usr/local/www/diag_dhcp_leases.php 2 Mar 2007 15:31:08 -0000 1.11.2.17 -+++ usr/local/www/diag_dhcp_leases.php 8 Sep 2007 18:33:04 -0000 -@@ -35,6 +35,7 @@ - - $pgtitle = "Diagnostics: DHCP leases"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_dump_states.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_dump_states.php,v -retrieving revision 1.10.2.14.2.1 -diff -u -r1.10.2.14.2.1 diag_dump_states.php ---- usr/local/www/diag_dump_states.php 11 May 2007 17:21:06 -0000 1.10.2.14.2.1 -+++ usr/local/www/diag_dump_states.php 8 Sep 2007 18:33:11 -0000 -@@ -30,6 +30,7 @@ - - $pgtitle = "Diagnostics: Show States"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - /* handle AJAX operations */ - if($_GET['action']) { -Index: usr/local/www/diag_ipsec_sad.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_ipsec_sad.php,v -retrieving revision 1.12.2.3 -diff -u -r1.12.2.3 diag_ipsec_sad.php ---- usr/local/www/diag_ipsec_sad.php 3 Apr 2006 21:05:11 -0000 1.12.2.3 -+++ usr/local/www/diag_ipsec_sad.php 8 Sep 2007 18:33:18 -0000 -@@ -35,6 +35,7 @@ - - $pgtitle = "Diagnostics: IPSec: SA"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_ipsec_spd.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_ipsec_spd.php,v -retrieving revision 1.12.2.2 -diff -u -r1.12.2.2 diag_ipsec_spd.php ---- usr/local/www/diag_ipsec_spd.php 2 Jan 2006 23:46:23 -0000 1.12.2.2 -+++ usr/local/www/diag_ipsec_spd.php 8 Sep 2007 18:33:22 -0000 -@@ -35,6 +35,7 @@ - - $pgtitle = "Diagnostics: IPSec: SPD"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs.php,v -retrieving revision 1.32.2.11 -diff -u -r1.32.2.11 diag_logs.php ---- usr/local/www/diag_logs.php 9 Oct 2006 00:19:17 -0000 1.32.2.11 -+++ usr/local/www/diag_logs.php 8 Sep 2007 18:33:30 -0000 -@@ -56,6 +56,7 @@ - - $pgtitle = "Diagnostics: System logs: System"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_auth.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_auth.php,v -retrieving revision 1.19.2.4 -diff -u -r1.19.2.4 diag_logs_auth.php ---- usr/local/www/diag_logs_auth.php 5 Oct 2006 21:51:02 -0000 1.19.2.4 -+++ usr/local/www/diag_logs_auth.php 8 Sep 2007 18:33:38 -0000 -@@ -43,6 +43,7 @@ - - $pgtitle = "Diagnostics: System logs: Portal Auth"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_dhcp.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_dhcp.php,v -retrieving revision 1.19.2.4 -diff -u -r1.19.2.4 diag_logs_dhcp.php ---- usr/local/www/diag_logs_dhcp.php 5 Oct 2006 21:51:02 -0000 1.19.2.4 -+++ usr/local/www/diag_logs_dhcp.php 8 Sep 2007 18:33:43 -0000 -@@ -45,6 +45,7 @@ - - $pgtitle = "Diagnostics: System logs: DHCP"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_filter.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_filter.php,v -retrieving revision 1.46.2.33.2.1 -diff -u -r1.46.2.33.2.1 diag_logs_filter.php ---- usr/local/www/diag_logs_filter.php 5 Jul 2007 22:31:03 -0000 1.46.2.33.2.1 -+++ usr/local/www/diag_logs_filter.php 8 Sep 2007 18:33:53 -0000 -@@ -173,6 +173,7 @@ - - $pgtitle = "Diagnostics: System logs: Firewall"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_filter_dynamic.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/diag_logs_filter_dynamic.php,v -retrieving revision 1.13.2.16.2.2 -diff -u -r1.13.2.16.2.2 diag_logs_filter_dynamic.php ---- usr/local/www/diag_logs_filter_dynamic.php 4 Jul 2007 20:14:26 -0000 1.13.2.16.2.2 -+++ usr/local/www/diag_logs_filter_dynamic.php 8 Sep 2007 18:34:01 -0000 -@@ -157,6 +157,7 @@ - - $pgtitle = "Diagnostics: System logs: Firewall"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_ipsec.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_ipsec.php,v -retrieving revision 1.30.2.5 -diff -u -r1.30.2.5 diag_logs_ipsec.php ---- usr/local/www/diag_logs_ipsec.php 5 Oct 2006 21:51:02 -0000 1.30.2.5 -+++ usr/local/www/diag_logs_ipsec.php 8 Sep 2007 18:35:14 -0000 -@@ -47,6 +47,7 @@ - - $pgtitle = "Diagnostics: System logs: IPSEC VPN"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_ntpd.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_ntpd.php,v -retrieving revision 1.1.2.4 -diff -u -r1.1.2.4 diag_logs_ntpd.php ---- usr/local/www/diag_logs_ntpd.php 22 Oct 2006 05:30:56 -0000 1.1.2.4 -+++ usr/local/www/diag_logs_ntpd.php 8 Sep 2007 18:35:19 -0000 -@@ -45,6 +45,7 @@ - - $pgtitle = "Diagnostics: System logs: OpenNTPD"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_openvpn.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_openvpn.php,v -retrieving revision 1.2.2.8 -diff -u -r1.2.2.8 diag_logs_openvpn.php ---- usr/local/www/diag_logs_openvpn.php 5 Oct 2006 21:51:02 -0000 1.2.2.8 -+++ usr/local/www/diag_logs_openvpn.php 8 Sep 2007 18:35:24 -0000 -@@ -48,6 +48,7 @@ - } - - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_settings.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_settings.php,v -retrieving revision 1.18.2.8 -diff -u -r1.18.2.8 diag_logs_settings.php ---- usr/local/www/diag_logs_settings.php 5 Oct 2006 21:51:02 -0000 1.18.2.8 -+++ usr/local/www/diag_logs_settings.php 8 Sep 2007 18:35:31 -0000 -@@ -94,6 +94,7 @@ - - $pgtitle = "Diagnostics: System logs: Settings"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_slbd.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_slbd.php,v -retrieving revision 1.3.2.5 -diff -u -r1.3.2.5 diag_logs_slbd.php ---- usr/local/www/diag_logs_slbd.php 5 Oct 2006 21:51:02 -0000 1.3.2.5 -+++ usr/local/www/diag_logs_slbd.php 8 Sep 2007 18:35:36 -0000 -@@ -46,6 +46,7 @@ - - $pgtitle = "Diagnostics: System logs: Load Balancer"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_logs_vpn.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_logs_vpn.php,v -retrieving revision 1.26.2.8 -diff -u -r1.26.2.8 diag_logs_vpn.php ---- usr/local/www/diag_logs_vpn.php 22 Oct 2006 05:30:56 -0000 1.26.2.8 -+++ usr/local/www/diag_logs_vpn.php 8 Sep 2007 18:35:43 -0000 -@@ -70,6 +70,7 @@ - } - - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_packet_capture.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_packet_capture.php,v -retrieving revision 1.2.2.4.2.5 -diff -u -r1.2.2.4.2.5 diag_packet_capture.php ---- usr/local/www/diag_packet_capture.php 1 Jul 2007 05:09:05 -0000 1.2.2.4.2.5 -+++ usr/local/www/diag_packet_capture.php 8 Sep 2007 18:35:53 -0000 -@@ -106,7 +106,9 @@ - - } - $pgtitle = "Diagnostics: Packet Capture"; --include("head.inc"); ?> -+include("head.inc"); -+echo $pfSenseHead->getHTML(); -+?> - - - -Index: usr/local/www/diag_ping.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/diag_ping.php,v -retrieving revision 1.8.2.6 -diff -u -r1.8.2.6 diag_ping.php ---- usr/local/www/diag_ping.php 25 Apr 2006 22:06:42 -0000 1.8.2.6 -+++ usr/local/www/diag_ping.php 8 Sep 2007 18:36:01 -0000 -@@ -86,7 +86,9 @@ - } - - $pgtitle = "Diagnostics: Ping"; --include("head.inc"); ?> -+include("head.inc"); -+echo $pfSenseHead->getHTML(); -+?> - - -

    -Index: usr/local/www/diag_pkglogs.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_pkglogs.php,v -retrieving revision 1.20.4.1 -diff -u -r1.20.4.1 diag_pkglogs.php ---- usr/local/www/diag_pkglogs.php 2 Jan 2006 23:46:23 -0000 1.20.4.1 -+++ usr/local/www/diag_pkglogs.php 8 Sep 2007 18:36:08 -0000 -@@ -68,6 +68,7 @@ - - $pgtitle = "Diagnostics: Package logs"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_resetstate.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_resetstate.php,v -retrieving revision 1.6.4.2 -diff -u -r1.6.4.2 diag_resetstate.php ---- usr/local/www/diag_resetstate.php 2 Jan 2006 23:46:23 -0000 1.6.4.2 -+++ usr/local/www/diag_resetstate.php 8 Sep 2007 18:36:12 -0000 -@@ -45,6 +45,7 @@ - - $pgtitle = "Diagnostics: Reset state"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_routes.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/diag_routes.php,v -retrieving revision 1.2.2.4 -diff -u -r1.2.2.4 diag_routes.php ---- usr/local/www/diag_routes.php 11 Mar 2006 08:25:22 -0000 1.2.2.4 -+++ usr/local/www/diag_routes.php 8 Sep 2007 18:36:16 -0000 -@@ -34,6 +34,7 @@ - $pgtitle = 'Diagnostics: Routing tables'; - - include('head.inc'); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/diag_traceroute.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/diag_traceroute.php,v -retrieving revision 1.4.2.7 -diff -u -r1.4.2.7 diag_traceroute.php ---- usr/local/www/diag_traceroute.php 25 Apr 2006 22:06:42 -0000 1.4.2.7 -+++ usr/local/www/diag_traceroute.php 8 Sep 2007 18:36:24 -0000 -@@ -32,6 +32,7 @@ - require("guiconfig.inc"); - $pgtitle = "Diagnostics: Traceroute"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - ?> - - -Index: usr/local/www/edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/edit.php,v -retrieving revision 1.35.2.5 -diff -u -r1.35.2.5 edit.php ---- usr/local/www/edit.php 26 Sep 2006 22:49:53 -0000 1.35.2.5 -+++ usr/local/www/edit.php 8 Sep 2007 19:09:08 -0000 -@@ -133,6 +133,7 @@ - $pgtitle = "Diagnostics: Edit File"; - - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/exec.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/exec.php,v -retrieving revision 1.10.4.9 -diff -u -r1.10.4.9 exec.php ---- usr/local/www/exec.php 20 Mar 2007 18:38:33 -0000 1.10.4.9 -+++ usr/local/www/exec.php 8 Sep 2007 19:09:08 -0000 -@@ -52,6 +52,7 @@ - - $pgtitle = "Diagnostics: Execute command"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - ?> - - "; - echo ""; -Index: usr/local/www/firewall_rules_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/firewall_rules_edit.php,v -retrieving revision 1.86.2.34.2.3 -diff -u -r1.86.2.34.2.3 firewall_rules_edit.php ---- usr/local/www/firewall_rules_edit.php 1 Jun 2007 17:12:12 -0000 1.86.2.34.2.3 -+++ usr/local/www/firewall_rules_edit.php 8 Sep 2007 18:45:23 -0000 -@@ -349,10 +349,9 @@ - - $page_filename = "firewall_rules_edit.php"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> -- -- - - - -Index: usr/local/www/firewall_schedule.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/firewall_schedule.php,v -retrieving revision 1.1.2.7.2.2 -diff -u -r1.1.2.7.2.2 firewall_schedule.php ---- usr/local/www/firewall_schedule.php 9 May 2007 02:09:06 -0000 1.1.2.7.2.2 -+++ usr/local/www/firewall_schedule.php 8 Sep 2007 18:45:43 -0000 -@@ -75,6 +75,7 @@ - } - - include("head.inc"); -+echo $pfSenseHead->getHTML(); - ?> - - -Index: usr/local/www/firewall_schedule_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/firewall_schedule_edit.php,v -retrieving revision 1.1.2.15.2.2 -diff -u -r1.1.2.15.2.2 firewall_schedule_edit.php ---- usr/local/www/firewall_schedule_edit.php 7 May 2007 11:46:55 -0000 1.1.2.15.2.2 -+++ usr/local/www/firewall_schedule_edit.php 8 Sep 2007 18:46:49 -0000 -@@ -725,6 +725,9 @@ - - - EOD; -+ -+$pfSenseHead->addScript($jscriptstr); -+echo $pfSenseHead->getHTML(); - ?> - - "> -Index: usr/local/www/firewall_shaper.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/firewall_shaper.php,v -retrieving revision 1.41.2.10 -diff -u -r1.41.2.10 firewall_shaper.php ---- usr/local/www/firewall_shaper.php 25 Mar 2006 00:14:06 -0000 1.41.2.10 -+++ usr/local/www/firewall_shaper.php 8 Sep 2007 18:47:46 -0000 -@@ -189,6 +189,7 @@ - - $pgtitle = "Firewall: Shaper: Rules"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/firewall_shaper_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/firewall_shaper_edit.php,v -retrieving revision 1.28.2.6 -diff -u -r1.28.2.6 firewall_shaper_edit.php ---- usr/local/www/firewall_shaper_edit.php 24 Apr 2006 18:41:52 -0000 1.28.2.6 -+++ usr/local/www/firewall_shaper_edit.php 8 Sep 2007 18:48:15 -0000 -@@ -291,6 +291,8 @@ - $pgtitle = "Firewall: Shaper: Rules: Edit"; - $closehead = false; - include("head.inc"); -+$pfSenseHead->setCloseHead(); -+echo $pfSenseHead->getHTML(); - ?> - - - -+ - - -

    -Index: usr/local/www/status_services.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/status_services.php,v -retrieving revision 1.40.2.19.2.4 -diff -u -r1.40.2.19.2.4 status_services.php ---- usr/local/www/status_services.php 2 Jun 2007 20:47:41 -0000 1.40.2.19.2.4 -+++ usr/local/www/status_services.php 8 Sep 2007 19:03:38 -0000 -@@ -142,6 +142,7 @@ - - $pgtitle = "Status: Services"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/status_slbd_pool.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/status_slbd_pool.php,v -retrieving revision 1.3.2.4.2.1 -diff -u -r1.3.2.4.2.1 status_slbd_pool.php ---- usr/local/www/status_slbd_pool.php 28 Apr 2007 16:46:56 -0000 1.3.2.4.2.1 -+++ usr/local/www/status_slbd_pool.php 8 Sep 2007 19:03:44 -0000 -@@ -47,6 +47,7 @@ - - $pgtitle = "Status: Load Balancer: Pool"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/status_slbd_vs.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/status_slbd_vs.php,v -retrieving revision 1.2.2.2 -diff -u -r1.2.2.2 status_slbd_vs.php ---- usr/local/www/status_slbd_vs.php 8 May 2007 16:29:17 -0000 1.2.2.2 -+++ usr/local/www/status_slbd_vs.php 8 Sep 2007 19:03:50 -0000 -@@ -51,6 +51,7 @@ - - $pgtitle = "Status: Load Balancer: Virtual Server"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/status_upnp.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/status_upnp.php,v -retrieving revision 1.1.2.3.2.1 -diff -u -r1.1.2.3.2.1 status_upnp.php ---- usr/local/www/status_upnp.php 23 May 2007 20:26:19 -0000 1.1.2.3.2.1 -+++ usr/local/www/status_upnp.php 8 Sep 2007 19:04:09 -0000 -@@ -49,7 +49,7 @@ - /* put your custom HTML head content here */ - /* using some of the $pfSenseHead function calls */ - //$pfSenseHead->addMeta(""); --//echo $pfSenseHead->getHTML(); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/status_wireless.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/status_wireless.php,v -retrieving revision 1.9.2.9 -diff -u -r1.9.2.9 status_wireless.php ---- usr/local/www/status_wireless.php 5 May 2006 21:31:47 -0000 1.9.2.9 -+++ usr/local/www/status_wireless.php 8 Sep 2007 19:04:16 -0000 -@@ -36,6 +36,7 @@ - - $pgtitle = "Diagnostics: Wireless Status"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - $if = $_POST['if']; - if($_GET['if'] <> "") -Index: usr/local/www/system.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system.php,v -retrieving revision 1.41.2.7.2.1 -diff -u -r1.41.2.7.2.1 system.php ---- usr/local/www/system.php 6 Jul 2007 18:30:31 -0000 1.41.2.7.2.1 -+++ usr/local/www/system.php 8 Sep 2007 19:04:21 -0000 -@@ -190,6 +190,7 @@ - - $pgtitle = "System: General Setup"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/system_advanced.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_advanced.php,v -retrieving revision 1.114.2.46.2.4 -diff -u -r1.114.2.46.2.4 system_advanced.php ---- usr/local/www/system_advanced.php 21 Jul 2007 21:22:18 -0000 1.114.2.46.2.4 -+++ usr/local/www/system_advanced.php 8 Sep 2007 19:04:26 -0000 -@@ -266,6 +266,7 @@ - - $pgtitle = "System: Advanced functions"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/system_advanced_create_certs.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_advanced_create_certs.php,v -retrieving revision 1.14.4.4 -diff -u -r1.14.4.4 system_advanced_create_certs.php ---- usr/local/www/system_advanced_create_certs.php 19 Jan 2006 05:58:23 -0000 1.14.4.4 -+++ usr/local/www/system_advanced_create_certs.php 8 Sep 2007 19:04:32 -0000 -@@ -140,6 +140,7 @@ - - $pgtitle = "System: Advanced functions: Create Certificates"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/system_firmware.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_firmware.php,v -retrieving revision 1.73.2.12 -diff -u -r1.73.2.12 system_firmware.php ---- usr/local/www/system_firmware.php 14 Mar 2007 19:22:10 -0000 1.73.2.12 -+++ usr/local/www/system_firmware.php 8 Sep 2007 19:04:47 -0000 -@@ -37,6 +37,7 @@ - if(file_exists($d_firmwarelock_path)) { - $pgtitle = "System: Firmware: Manual Update"; - include("head.inc"); -+ echo $pfSenseHead->getHTML(); - echo "\n"; - include("fbegin.inc"); - echo "

    \n"; -@@ -124,6 +125,7 @@ - - $pgtitle = "System: Firmware: Manual Update"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/system_firmware_auto.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_firmware_auto.php,v -retrieving revision 1.52.4.2 -diff -u -r1.52.4.2 system_firmware_auto.php ---- usr/local/www/system_firmware_auto.php 15 Apr 2006 16:50:47 -0000 1.52.4.2 -+++ usr/local/www/system_firmware_auto.php 8 Sep 2007 19:05:05 -0000 -@@ -41,6 +41,7 @@ - - $pgtitle = "System: Firmware: Auto Update"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/system_firmware_check.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_firmware_check.php,v -retrieving revision 1.38.4.3 -diff -u -r1.38.4.3 system_firmware_check.php ---- usr/local/www/system_firmware_check.php 15 Apr 2006 16:50:47 -0000 1.38.4.3 -+++ usr/local/www/system_firmware_check.php 8 Sep 2007 19:05:21 -0000 -@@ -39,6 +39,7 @@ - $versions = check_firmware_version(); - $pgtitle = "System: Firmware: Auto Update"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/system_firmware_settings.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_firmware_settings.php,v -retrieving revision 1.15.2.4 -diff -u -r1.15.2.4 system_firmware_settings.php ---- usr/local/www/system_firmware_settings.php 15 Apr 2006 16:50:47 -0000 1.15.2.4 -+++ usr/local/www/system_firmware_settings.php 8 Sep 2007 19:06:04 -0000 -@@ -57,6 +57,8 @@ - - $pgtitle = "System: Firmware: Settings"; - include("head.inc"); -+$pfSenseHead->setCloseHead(false); -+echo $pfSenseHead->getHTML(); - - ?> - -@@ -88,7 +90,7 @@ - - // --> - -- -+ - - -

    -Index: usr/local/www/system_routes.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_routes.php,v -retrieving revision 1.16.2.4.2.2 -diff -u -r1.16.2.4.2.2 system_routes.php ---- usr/local/www/system_routes.php 10 May 2007 16:06:32 -0000 1.16.2.4.2.2 -+++ usr/local/www/system_routes.php 8 Sep 2007 19:06:11 -0000 -@@ -89,6 +89,7 @@ - - $pgtitle = "System: Static Routes"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/system_routes_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/system_routes_edit.php,v -retrieving revision 1.9.4.4.2.1 -diff -u -r1.9.4.4.2.1 system_routes_edit.php ---- usr/local/www/system_routes_edit.php 10 May 2007 16:06:32 -0000 1.9.4.4.2.1 -+++ usr/local/www/system_routes_edit.php 8 Sep 2007 19:06:16 -0000 -@@ -112,6 +112,7 @@ - - $pgtitle = "System: Static Routes: Edit route"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec.php,v -retrieving revision 1.28.2.10.2.5 -diff -u -r1.28.2.10.2.5 vpn_ipsec.php ---- usr/local/www/vpn_ipsec.php 5 Jun 2007 00:23:07 -0000 1.28.2.10.2.5 -+++ usr/local/www/vpn_ipsec.php 8 Sep 2007 19:06:38 -0000 -@@ -84,6 +84,7 @@ - - $pgtitle = "VPN: IPsec"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec_ca.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec_ca.php,v -retrieving revision 1.12.4.2 -diff -u -r1.12.4.2 vpn_ipsec_ca.php ---- usr/local/www/vpn_ipsec_ca.php 18 Mar 2007 03:37:06 -0000 1.12.4.2 -+++ usr/local/www/vpn_ipsec_ca.php 8 Sep 2007 19:06:42 -0000 -@@ -48,6 +48,7 @@ - - $pgtitle = "VPN: IPsec: Certificate Authority"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec_ca_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec_ca_edit.php,v -retrieving revision 1.12.4.2 -diff -u -r1.12.4.2 vpn_ipsec_ca_edit.php ---- usr/local/www/vpn_ipsec_ca_edit.php 2 Jan 2006 23:46:25 -0000 1.12.4.2 -+++ usr/local/www/vpn_ipsec_ca_edit.php 8 Sep 2007 19:06:47 -0000 -@@ -94,6 +94,7 @@ - - $pgtitle = "VPN: IPsec: Certificate Authority: Edit"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec_ca_edit_create_cert.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec_ca_edit_create_cert.php,v -retrieving revision 1.13.4.1 -diff -u -r1.13.4.1 vpn_ipsec_ca_edit_create_cert.php ---- usr/local/www/vpn_ipsec_ca_edit_create_cert.php 2 Jan 2006 23:46:25 -0000 1.13.4.1 -+++ usr/local/www/vpn_ipsec_ca_edit_create_cert.php 8 Sep 2007 19:06:53 -0000 -@@ -143,6 +143,7 @@ - - $pgtitle = "VPN: IPSec: Certificate Authority: Create Certificate"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec_edit.php,v -retrieving revision 1.29.2.13.2.1 -diff -u -r1.29.2.13.2.1 vpn_ipsec_edit.php ---- usr/local/www/vpn_ipsec_edit.php 8 May 2007 22:06:49 -0000 1.29.2.13.2.1 -+++ usr/local/www/vpn_ipsec_edit.php 8 Sep 2007 19:06:58 -0000 -@@ -263,6 +263,7 @@ - - $pgtitle = "VPN: IPsec: Edit tunnel"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec_keys.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec_keys.php,v -retrieving revision 1.15.4.2.2.1 -diff -u -r1.15.4.2.2.1 vpn_ipsec_keys.php ---- usr/local/www/vpn_ipsec_keys.php 8 May 2007 22:06:49 -0000 1.15.4.2.2.1 -+++ usr/local/www/vpn_ipsec_keys.php 8 Sep 2007 19:07:03 -0000 -@@ -48,6 +48,7 @@ - - $pgtitle = "VPN: IPsec: Keys"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec_keys_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec_keys_edit.php,v -retrieving revision 1.11.4.2 -diff -u -r1.11.4.2 vpn_ipsec_keys_edit.php ---- usr/local/www/vpn_ipsec_keys_edit.php 2 Jan 2006 23:46:25 -0000 1.11.4.2 -+++ usr/local/www/vpn_ipsec_keys_edit.php 8 Sep 2007 19:07:07 -0000 -@@ -92,6 +92,7 @@ - - $pgtitle = "VPN: IPsec: Edit pre-shared key"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_ipsec_mobile.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_ipsec_mobile.php,v -retrieving revision 1.12.4.2 -diff -u -r1.12.4.2 vpn_ipsec_mobile.php ---- usr/local/www/vpn_ipsec_mobile.php 18 Mar 2007 03:37:06 -0000 1.12.4.2 -+++ usr/local/www/vpn_ipsec_mobile.php 8 Sep 2007 19:07:11 -0000 -@@ -162,6 +162,7 @@ - - $pgtitle = "VPN: IPsec: Mobile"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn.php,v -retrieving revision 1.13.2.2 -diff -u -r1.13.2.2 vpn_openvpn.php ---- usr/local/www/vpn_openvpn.php 30 Jan 2006 02:25:12 -0000 1.13.2.2 -+++ usr/local/www/vpn_openvpn.php 8 Sep 2007 19:07:16 -0000 -@@ -144,6 +144,7 @@ - - $pgtitle = "VPN: OpenVPN"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_ccd.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_ccd.php,v -retrieving revision 1.1.2.2 -diff -u -r1.1.2.2 vpn_openvpn_ccd.php ---- usr/local/www/vpn_openvpn_ccd.php 30 Jan 2006 02:25:12 -0000 1.1.2.2 -+++ usr/local/www/vpn_openvpn_ccd.php 8 Sep 2007 19:07:20 -0000 -@@ -95,6 +95,7 @@ - - $pgtitle = "VPN: OpenVPN"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_ccd_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_ccd_edit.php,v -retrieving revision 1.1.2.2 -diff -u -r1.1.2.2 vpn_openvpn_ccd_edit.php ---- usr/local/www/vpn_openvpn_ccd_edit.php 30 Jan 2006 02:25:12 -0000 1.1.2.2 -+++ usr/local/www/vpn_openvpn_ccd_edit.php 8 Sep 2007 19:07:26 -0000 -@@ -209,6 +209,7 @@ - - $pgtitle = "VPN: OpenVPN: Edit client-specific configuration"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_cli.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_cli.php,v -retrieving revision 1.16.2.3 -diff -u -r1.16.2.3 vpn_openvpn_cli.php ---- usr/local/www/vpn_openvpn_cli.php 30 Jan 2006 02:25:12 -0000 1.16.2.3 -+++ usr/local/www/vpn_openvpn_cli.php 8 Sep 2007 19:07:31 -0000 -@@ -83,6 +83,7 @@ - - $pgtitle = "VPN: OpenVPN"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_cli_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_cli_edit.php,v -retrieving revision 1.15.2.3 -diff -u -r1.15.2.3 vpn_openvpn_cli_edit.php ---- usr/local/www/vpn_openvpn_cli_edit.php 30 Jan 2006 02:25:12 -0000 1.15.2.3 -+++ usr/local/www/vpn_openvpn_cli_edit.php 8 Sep 2007 19:07:36 -0000 -@@ -285,6 +285,7 @@ - - $pgtitle = "VPN: OpenVPN: Edit client"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_create_certs.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_openvpn_create_certs.php,v -retrieving revision 1.14.4.2 -diff -u -r1.14.4.2 vpn_openvpn_create_certs.php ---- usr/local/www/vpn_openvpn_create_certs.php 7 Apr 2006 21:36:51 -0000 1.14.4.2 -+++ usr/local/www/vpn_openvpn_create_certs.php 8 Sep 2007 19:07:57 -0000 -@@ -151,6 +151,8 @@ - - $pgtitle = "VPN: OpenVPN: Create Certs"; - include("head.inc"); -+$pfSenseHead->setCloseHead(false); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_crl.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_crl.php,v -retrieving revision 1.1.2.2 -diff -u -r1.1.2.2 vpn_openvpn_crl.php ---- usr/local/www/vpn_openvpn_crl.php 30 Jan 2006 02:25:12 -0000 1.1.2.2 -+++ usr/local/www/vpn_openvpn_crl.php 8 Sep 2007 19:08:02 -0000 -@@ -76,6 +76,7 @@ - - $pgtitle = "VPN: OpenVPN"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_crl_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_crl_edit.php,v -retrieving revision 1.1.2.2 -diff -u -r1.1.2.2 vpn_openvpn_crl_edit.php ---- usr/local/www/vpn_openvpn_crl_edit.php 30 Jan 2006 02:25:12 -0000 1.1.2.2 -+++ usr/local/www/vpn_openvpn_crl_edit.php 8 Sep 2007 19:08:07 -0000 -@@ -152,6 +152,7 @@ - - $pgtitle = "VPN: OpenVPN: Edit CRL"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_srv.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_srv.php,v -retrieving revision 1.1.2.3 -diff -u -r1.1.2.3 vpn_openvpn_srv.php ---- usr/local/www/vpn_openvpn_srv.php 30 Jan 2006 02:25:12 -0000 1.1.2.3 -+++ usr/local/www/vpn_openvpn_srv.php 8 Sep 2007 19:08:11 -0000 -@@ -84,6 +84,7 @@ - - $pgtitle = "VPN: OpenVPN"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_openvpn_srv_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/Attic/vpn_openvpn_srv_edit.php,v -retrieving revision 1.1.2.3 -diff -u -r1.1.2.3 vpn_openvpn_srv_edit.php ---- usr/local/www/vpn_openvpn_srv_edit.php 30 Jan 2006 02:25:12 -0000 1.1.2.3 -+++ usr/local/www/vpn_openvpn_srv_edit.php 8 Sep 2007 19:08:16 -0000 -@@ -513,6 +513,7 @@ - - $pgtitle = "VPN: OpenVPN: Edit server"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_pppoe.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_pppoe.php,v -retrieving revision 1.14.2.8.2.1 -diff -u -r1.14.2.8.2.1 vpn_pppoe.php ---- usr/local/www/vpn_pppoe.php 27 Apr 2007 20:19:26 -0000 1.14.2.8.2.1 -+++ usr/local/www/vpn_pppoe.php 8 Sep 2007 19:08:22 -0000 -@@ -139,6 +139,7 @@ - - $pgtitle = "VPN: PPPoE"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_pppoe_users.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_pppoe_users.php,v -retrieving revision 1.5.2.4.2.1 -diff -u -r1.5.2.4.2.1 vpn_pppoe_users.php ---- usr/local/www/vpn_pppoe_users.php 8 May 2007 22:06:49 -0000 1.5.2.4.2.1 -+++ usr/local/www/vpn_pppoe_users.php 8 Sep 2007 19:08:26 -0000 -@@ -67,6 +67,7 @@ - - $pgtitle = "VPN: PPPoE: Users"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_pppoe_users_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_pppoe_users_edit.php,v -retrieving revision 1.3.2.3 -diff -u -r1.3.2.3 vpn_pppoe_users_edit.php ---- usr/local/www/vpn_pppoe_users_edit.php 11 Mar 2006 20:35:47 -0000 1.3.2.3 -+++ usr/local/www/vpn_pppoe_users_edit.php 8 Sep 2007 19:08:32 -0000 -@@ -113,6 +113,7 @@ - - $pgtitle = "VPN: PPPoE: User: Edit"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_pptp.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_pptp.php,v -retrieving revision 1.21.2.5 -diff -u -r1.21.2.5 vpn_pptp.php ---- usr/local/www/vpn_pptp.php 5 May 2006 02:15:20 -0000 1.21.2.5 -+++ usr/local/www/vpn_pptp.php 8 Sep 2007 19:08:36 -0000 -@@ -148,6 +148,7 @@ - - $pgtitle = "VPN PPTP"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_pptp_users.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_pptp_users.php,v -retrieving revision 1.16.2.3.2.1 -diff -u -r1.16.2.3.2.1 vpn_pptp_users.php ---- usr/local/www/vpn_pptp_users.php 8 May 2007 22:06:49 -0000 1.16.2.3.2.1 -+++ usr/local/www/vpn_pptp_users.php 8 Sep 2007 19:08:42 -0000 -@@ -65,6 +65,7 @@ - - $pgtitle = "VPN: PPTP: Users"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/vpn_pptp_users_edit.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/vpn_pptp_users_edit.php,v -retrieving revision 1.12.4.3 -diff -u -r1.12.4.3 vpn_pptp_users_edit.php ---- usr/local/www/vpn_pptp_users_edit.php 19 Jan 2007 16:39:07 -0000 1.12.4.3 -+++ usr/local/www/vpn_pptp_users_edit.php 8 Sep 2007 19:08:47 -0000 -@@ -110,6 +110,7 @@ - - $pgtitle = "VPN: PPTP: User: Edit"; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - -Index: usr/local/www/wizard.php -=================================================================== -RCS file: /cvsroot/pfSense/usr/local/www/wizard.php,v -retrieving revision 1.46.2.15 -diff -u -r1.46.2.15 wizard.php ---- usr/local/www/wizard.php 6 Feb 2007 19:33:01 -0000 1.46.2.15 -+++ usr/local/www/wizard.php 8 Sep 2007 19:08:58 -0000 -@@ -148,6 +148,7 @@ - - $pgtitle = $title; - include("head.inc"); -+echo $pfSenseHead->getHTML(); - - ?> - diff --git a/config/authng/doc/images/pfSense-AuthMethods.png b/config/authng/doc/images/pfSense-AuthMethods.png deleted file mode 100644 index afd62083..00000000 Binary files a/config/authng/doc/images/pfSense-AuthMethods.png and /dev/null differ diff --git a/config/authng/doc/images/pfSense-Backends.png b/config/authng/doc/images/pfSense-Backends.png deleted file mode 100644 index 9086f5d4..00000000 Binary files a/config/authng/doc/images/pfSense-Backends.png and /dev/null differ diff --git a/config/authng/doc/images/pfSense-Peers.png b/config/authng/doc/images/pfSense-Peers.png deleted file mode 100644 index b1ca8ea7..00000000 Binary files a/config/authng/doc/images/pfSense-Peers.png and /dev/null differ diff --git a/config/authng/pkg/authng.inc b/config/authng/pkg/authng.inc deleted file mode 100644 index 06774acd..00000000 --- a/config/authng/pkg/authng.inc +++ /dev/null @@ -1,323 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -/* PHP classes like factories users, and groups */ -require_once("authng_classdefs.inc"); -/* PHP classes representing specific auth methods */ -require_once("authng_authmethods.inc"); -/* PHP classes representing specific backends */ -require_once("authng_backends.inc"); -/* PHP peer classes that are providing a persistence layer */ -require_once("authng_peers.inc"); - -// TODO: Define user- and groupindex array - -// get principal store type from config.xml -// TODO: needs to be defined in config.xml -//$principalStore = $config['system']['webgui']['principal_store']; -$principalStore = "xml"; -// get PeerFactory instance -$peerFactory =& PeerFactory::getInstance(); -// get the actual UserPeer that holds the user index -$userPeer =& $peerFactory->getUserPeerByPrincipalStore($principalStore); -// get the actual GroupPeer that holds the user index -$groupPeer =& $peerFactory->getGroupPeerByPrincipalStore($principalStore); -// get AuthMethodFactory instance -$authMethodFactory =& AuthMethodFactory::getInstance(); -// get BackendFactory instance -$backendFactory =& BackendFactory::getInstance(); -// get the actual auth method -$authMethod =& $authMethodFactory->getAuthMethodByName($config['system']['webgui']['auth_method']); -// get the actual backend -$backend =& $backendFactory->getBackendByName($config['system']['webgui']['backing_method']); - -function getUsermanagerPagetitle() { - global $userPeer; - - $result = ""; - - if ($userPeer->isSystemAdmin($HTTP_SERVER_VARS['AUTH_USER'])) { - // Page title for admins - $result = array(gettext("System"), gettext("User manager")); - } else { - // Page title for non-admins - $result = array(gettext("System"), gettext("User password")); - } - - return $result; -} - -function processUserManagerPostVars() { - global $input_errors, $savemsg, $config; - - if (isset($_POST['save'])) { - unset($input_errors); - - /* input validation */ - $reqdfields = explode(" ", "passwordfld1"); - $reqdfieldsn = explode(",", "Password"); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if ($_POST['passwordfld1'] != $_POST['passwordfld2']) - $input_errors[] = "The passwords do not match."; - - if (!$input_errors) { - // all values are okay --> saving changes - $config['system']['user'][$userindex[$HTTP_SERVER_VARS['AUTH_USER']]]['password'] = crypt(trim($_POST['passwordfld1'])); - - write_config(); - - sync_webgui_passwords(); - - $retval = system_password_configure(); - $savemsg = get_std_save_message($retval); - $savemsg = "Password successfully changed
    "; - } - } -} - -function processUserManagerAdminPostVars() { - global $config; - - $id = $_GET['id']; - if (isset($_POST['id'])) - $id = $_POST['id']; - - if (!is_array($config['system']['user'])) { - $config['system']['user'] = array(); - } - - admin_users_sort(); - $a_user = &$config['system']['user']; - $t_privs = $a_user[$id]['priv']; - - if ($_GET['act'] == "del" && $_GET['what'] == "user") { - if ($a_user[$_GET['id']]) { - $userdeleted = $a_user[$_GET['id']]['name']; - unset($a_user[$_GET['id']]); - write_config(); - $retval = system_password_configure(); - $savemsg = get_std_save_message($retval); - $savemsg = gettext("User") . " " . $userdeleted . " " . gettext("successfully deleted") . "
    "; - } - } else if ($_GET['act'] == "del" && $_GET['what'] == "priv") { - if ($t_privs[$_GET['privid']]) { - $privdeleted = $t_privs[$_GET['privid']]['id']; - unset($t_privs[$_GET['privid']]); - write_config(); - $_GET['act'] = "edit"; - $retval = 0; - $savemsg = get_std_save_message($retval); - $savemsg = gettext("Privilege") . " " . $privdeleted . " " . gettext("of user") . " " . $a_user[$_GET['id']]['name'] . " " . gettext("successfully deleted") . "
    "; - } - } - - if ($_POST) { - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - if (isset($id) && ($a_user[$id])) { - $reqdfields = explode(" ", "usernamefld"); - $reqdfieldsn = explode(",", "Username"); - } else { - $reqdfields = explode(" ", "usernamefld passwordfld1"); - $reqdfieldsn = explode(",", "Username,Password"); - } - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if (hasShellAccess($_POST['usernamefld'])) { - if (preg_match("/[^a-zA-Z0-9\.\-_]/", $_POST['usernamefld'])) - $input_errors[] = gettext("The username contains invalid characters."); - } else { - if (preg_match("/[^a-zA-Z0-9\@\.\-_]/", $_POST['usernamefld'])) - $input_errors[] = gettext("The username contains invalid characters."); - } - - if (($_POST['passwordfld1']) && ($_POST['passwordfld1'] != $_POST['passwordfld2'])) - $input_errors[] = gettext("The passwords do not match."); - - if (!$input_errors && !(isset($id) && $a_user[$id])) { - /* make sure there are no dupes */ - foreach ($a_user as $userent) { - if ($userent['name'] == $_POST['usernamefld']) { - $input_errors[] = gettext("Another entry with the same username already exists."); - break; - } - } - } - - if ($pconfig['utype'] <> "system" && !isset($groupindex[$_POST['groupname']])) { - $input_errors[] = gettext("group does not exist, please define the group before assigning users."); - } - - if (isset($config['system']['ssh']['sshdkeyonly']) && - empty($_POST['authorizedkeys'])) { - $input_errors[] = gettext("You must provide an authorized key otherwise you won't be able to login into this system."); - } - - /* if this is an AJAX caller then handle via JSON */ - if (isAjax() && is_array($input_errors)) { - input_errors2Ajax($input_errors); - exit; - } - - if (!$input_errors) { - if (isset($id) && $a_user[$id]) - $userent = $a_user[$id]; - - /* the user did change his username */ - if ($_POST['usernamefld'] <> $_POST['oldusername']) { - $_SERVER['REMOTE_USER'] = $_POST['usernamefld']; - } - - $userent['name'] = $_POST['usernamefld']; - $userent['fullname'] = $_POST['fullname']; - if ($pconfig['utype'] <> "system") { - $userent['groupname'] = $_POST['groupname']; - } - isset($_POST['utype']) ? $userent['scope'] = $_POST['utype'] : $userent['scope'] = "system"; - - if ($_POST['passwordfld1']) - $userent['password'] = crypt($_POST['passwordfld1']); - - if(isset($config['system']['ssh']['sshdkeyonly'])) { - $userent['authorizedkeys'] = base64_encode($_POST['authorizedkeys']); - } - - if (isset($id) && $a_user[$id]) - $a_user[$id] = $userent; - else - $a_user[] = $userent; - - write_config(); - $retval = system_password_configure(); - sync_webgui_passwords(); - - pfSenseHeader("system_usermanager.php"); - } - } -} - -/** - * getWindowJSScriptRefs() - * - * @return - */ -function getWindowJSScriptRefs(){ - $result = array('', - '', - ''); - - return $result; -} - -function gotNoUsers() { - global $config; - return empty($config['installedpackages']['authng']['config']); -} - -/** - * openNoUserDefsDialog() - * - * @param mixed $effectClass - * @return - */ -function openNoUserDefsDialog($effectClass) { - if (gotNoUsers()) { - $alertMessage = gettext("No users or groups found. You will be forwarded to the AuthNG wizard to be able to define users and groups."); - $dialogScript = " - - "; - - return $dialogScript; - } -} - -/** - * getWindowJSStyleRefs() - * - * @return - */ -function getWindowJSStyleRefs(){ - $result = array('', - '', - ''); - - return $result; -} - -/** - * installPackageAuthNG() - * - * @return - */ -function installPackageAuthNG() { - mwexec("cd / && /usr/bin/patch < /usr/local/pkg/authng-pfSenseHead.diff"); - mwexec("cd / && /usr/bin/patch < /usr/local/pkg/authng-fbegin.inc.diff"); - mwexec("cd / && /usr/bin/patch < /usr/local/pkg/authng-guiconfig.inc.diff"); - mwexec("cd / && /usr/bin/patch < /usr/local/pkg/authng-globals.inc.diff"); -} - -/** - * deinstallPackageAuthNG() - * - * @return - */ -function deinstallPackageAuthNG() { - mwexec("cd / && /usr/bin/patch -R < /usr/local/pkg/authng-pfSenseHead.diff"); - mwexec("cd / && /usr/bin/patch -R < /usr/local/pkg/authng-fbegin.inc.diff"); - mwexec("cd / && /usr/bin/patch -R < /usr/local/pkg/authng-guiconfig.inc.diff"); - mwexec("cd / && /usr/bin/patch -R < /usr/local/pkg/authng-globals.inc.diff"); -} -?> \ No newline at end of file diff --git a/config/authng/pkg/authng.xml b/config/authng/pkg/authng.xml deleted file mode 100644 index cebcea93..00000000 --- a/config/authng/pkg/authng.xml +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - ]]> - - - This package provides a user- and groupmanager which - allows to add arbitrary groups to the system and assign - them to a particular group. - - Permission control is provided on a per group basis. - - - This package is supposed to be run on RELENG based pfSense systems. - - Currently there are no FAQ items provided. - authng - 1.0 - System: User Manager - /usr/local/pkg/authng.inc - - - Auth Manager -
    System
    - /system_usermanager.php -
    - - - - ['installedpackages']['authng']['config'] - - - /usr/local/www/ - 0755 - http://www.pfsense.com/packages/config/authng/www/php/system_usermanager.php - - - /usr/local/www/ - 0755 - http://www.pfsense.com/packages/config/authng/www/php/system_usermanager_edit.php - - - /usr/local/www/ - 0755 - http://www.pfsense.com/packages/config/authng/www/php/system_usermanager_settings.php - - - /usr/local/www/ - 0755 - http://www.pfsense.com/packages/config/authng/www/php/system_groupmanager.php - - - /usr/local/www/ - 0755 - http://www.pfsense.com/packages/config/authng/www/php/head.inc - - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/pkg/authng_classdefs.inc - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/pkg/authng_peers.inc - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/pkg/authng.inc - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/pkg/authng_backends.inc - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/pkg/authng_authmethods.inc - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/pkg/authng_authgui.inc - - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/diff/authng-pfSenseHead.diff - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/diff/authng-fbegin.inc.diff - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/diff/authng-globals.inc.diff - - - /usr/local/pkg/ - 0755 - http://www.pfsense.com/packages/config/authng/diff/authng-guiconfig.inc.diff - - - - /usr/bin/ - 0755 - http://www.pfsense.com/packages/config/authng/bin/patch - - - - - syncPackageAuthNG(); - - - installPackageAuthNG(); - - - deinstallPackageAuthNG(); - -
    diff --git a/config/authng/pkg/authng_authgui.inc b/config/authng/pkg/authng_authgui.inc deleted file mode 100644 index 944c9b89..00000000 --- a/config/authng/pkg/authng_authgui.inc +++ /dev/null @@ -1,287 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -require_once("authng.inc"); - -/* Authenticate user - exit if failed (we should have a callback for this maybe) */ -if (empty($authMethod)) { print "auth_method missing!\n"; } -if (empty($backend)) { print "backing_method missing!\n"; } -if (!$authMethod->authenticate($backend)) { exit; } - -/* scriptname is set in headjs.php if the user did try to access a page other - * than index.php without beeing logged in. - */ -if (isset($_POST['scriptname']) && $userPeer->isSystemAdmin($HTTP_SERVER_VARS['AUTH_USER'])) { - pfSenseHeader("{$_POST['scriptname']}"); - exit; -} - -$allowed = array(); - -// Once here, the user has authenticated with the web server. -// Now, we give them access only to the appropriate pages for their group. -if (!($userPeer->isSystemAdmin($HTTP_SERVER_VARS['AUTH_USER']))) { - $allowed[] = ''; - if (isset($config['system']['group'][$groupindex[$config['system']['user'][$userindex[$HTTP_SERVER_VARS['AUTH_USER']]]['groupname']]]['pages'][0]['page'])) { - $useridx = $userindex[$HTTP_SERVER_VARS['AUTH_USER']]; - $grouidx = $groupindex[$config['system']['user'][$useridx]]; - $allowed = &$config['system']['group'][$groupidx]['pages'][0]['page']; - } - - $group = $config['system']['user'][$userindex[$HTTP_SERVER_VARS['AUTH_USER']]]['groupname']; - /* get the group homepage, to be able to forward - * the user to this particular PHP page. - */ - $groupPeer->getGroupHomePage($group) == "" ? $home = "/index.php" : $home = "/" . $groupPeer->getGroupHomePage($group); - - /* okay but if the user realy tries to explicitely access a particular - * page, set $home to that page instead. - */ - if (isset($_POST['scriptname']) && $_POST['scriptname'] <> "/" && $_POST['scriptname'] <> "/index.php") - $home = basename($_POST['scriptname']); - - // If the user is attempting to hit the default page, set it to specifically look for /index.php. - // Without this, any user would have access to the index page. - //if ($_SERVER['SCRIPT_NAME'] == '/') - // $_SERVER['SCRIPT_NAME'] = $home; - - // Strip the leading / from the currently requested PHP page - if (!in_array(basename($_SERVER['SCRIPT_NAME']),$allowed)) { - // The currently logged in user is not allowed to access the page - // they are attempting to go to. Redirect them to an allowed page. - - if(stristr($_SERVER['SCRIPT_NAME'],"sajax")) { - echo "||Access to AJAX has been disallowed for this user."; - exit; - } - - if ($home <> "" && in_array($home, $allowed)) { - pfSenseHeader("{$home}"); - exit; - } else { - header("HTTP/1.0 401 Unauthorized"); - header("Status: 401 Unauthorized"); - - echo display_error_form("401", "401 Unauthorized. Authorization required."); - exit; - } - } - - if (isset($_SESSION['Logged_In'])) { - /* - * only forward if the user has just logged in - * TODO: session auth based - may be an issue. - */ - if ($_SERVER['SCRIPT_NAME'] <> $home && empty($_SESSION['First_Visit'])) { - $_SESSION['First_Visit'] = "False"; - pfSenseHeader("{$home}"); - exit; - } - } -} - -function display_error_form($http_code, $desc) { - global $g; - - $htmlstr = << - - - - An error occurred: {$http_code} - - - - - - - - - -
    -

     

    -

    {$desc}

    -
    - - - -EOD; - - return $htmlstr; -} - -function display_login_form() { - require_once("globals.inc"); - global $g; - - if(isAjax()) { - if (isset($_POST['login'])) { - if($_SESSION['Logged_In'] <> "True") { - isset($_SESSION['Login_Error']) ? $login_error = $_SESSION['Login_Error'] : $login_error = "unknown reason"; - echo "showajaxmessage('Invalid login ({$login_error}).');"; - } - if (file_exists("{$g['tmp_path']}/webconfigurator.lock")) { - $whom = file_get_contents("{$g['tmp_path']}/webconfigurator.lock"); - echo "showajaxmessage('This device is currently beeing maintained by: {$whom}.');"; - } - } - exit; - } - -?> - - - - - - <?=gettext("Login"); ?> - - - - - - - - - - - -
    -

     

    -
    -
    -

    - - :   - - -

    -

    - - :   - - -

    - - - - - -

    " tabindex="3" />
    -
    -
    - - - \ No newline at end of file diff --git a/config/authng/pkg/authng_authmethods.inc b/config/authng/pkg/authng_authmethods.inc deleted file mode 100644 index 15e15566..00000000 --- a/config/authng/pkg/authng_authmethods.inc +++ /dev/null @@ -1,222 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -class AbstractAuthMethod { - function authenticate($backend) { - trigger_error('AbstractAuthMethod::authenticate() needs to be overridden in a subclass.', E_USER_ERROR); - } -} - -class BasicAuthMethod extends AbstractAuthMethod { - function authenticate($backend) { - global $HTTP_SERVER_VARS; - - /* Check for AUTH_USER */ - if ($HTTP_SERVER_VARS['PHP_AUTH_USER'] <> "") { - $HTTP_SERVER_VARS['AUTH_USER'] = $HTTP_SERVER_VARS['PHP_AUTH_USER']; - $HTTP_SERVER_VARS['AUTH_PW'] = $HTTP_SERVER_VARS['PHP_AUTH_PW']; - } - if (!isset($HTTP_SERVER_VARS['AUTH_USER'])) { - require_once("authng_authgui.inc"); - header("WWW-Authenticate: Basic realm=\".\""); - header("HTTP/1.0 401 Unauthorized"); - display_error_form("401", gettext("You must enter valid credentials to access this resource.")); - exit; - } else { - return $backend($HTTP_SERVER_VARS['AUTH_USER'],$HTTP_SERVER_VARS['AUTH_PW']); - } - } -} - -class SessionAuthMethod extends AbstractAuthMethod { - function authenticate($backend) { - global $g, $HTTP_SERVER_VARS, $userindex, $config; - - session_start(); - - /* Validate incoming login request */ - if (isset($_POST['login'])) { - if ($backend($_POST['usernamefld'], $_POST['passwordfld'])) { - $_SESSION['Logged_In'] = "True"; - $_SESSION['Username'] = $_POST['usernamefld']; - $_SESSION['last_access'] = time(); - } else { - $_SESSION['Login_Error'] = "Username or password incorrect."; - } - } - - /* Show login page if they aren't logged in */ - if (empty($_SESSION['Logged_In'])) { - - /* Don't display login forms to AJAX */ - if (isAjax()) - return false; - - require_once("authng_authgui.inc"); - display_login_form(); - return false; - } else { - /* If session timeout isn't set, we don't mark sessions stale */ - if (!isset($config['system']['webgui']['session_timeout']) or - $config['system']['webgui']['session_timeout'] == 0 or - $config['system']['webgui']['session_timeout'] == "") - $_SESSION['last_access'] = time(); - else - /* Check for stale session */ - if ($_SESSION['last_access'] < (time() - ($config['system']['webgui']['session_timeout'] * 60))) - $_GET['logout'] = true; - else - /* only update if it wasn't ajax */ - if (!isAjax()) - $_SESSION['last_access'] = time(); - - /* user hit the logout button */ - if (isset($_GET['logout'])) { - if (hasLockAbility($_SESSION['Username'])) { - unlink_if_exists("{$g['tmp_path']}/webconfigurator.lock"); - } - - /* wipe out $_SESSION */ - $_SESSION = array(); - - if (isset($_COOKIE[session_name()])) { - setcookie(session_name(), '', time()-42000, '/'); - } - - /* and destroy it */ - session_destroy(); - - $scriptName = split("/", $_SERVER["SCRIPT_FILENAME"]); - $scriptElms = count($scriptName); - $scriptName = $scriptName[$scriptElms-1]; - - if (isAjax()) - return false; - - /* redirect to page the user is on, it'll prompt them to login again */ - pfSenseHeader($scriptName); - - return false; - - /* user wants to explicitely delete the log file. - * Requires a particular privilege. - */ - } else if ($_GET['deletelock'] && hasLockAbility($_SESSION['Username'])) { - unlink_if_exists("{$g['tmp_path']}/webconfigurator.lock"); - $HTTP_SERVER_VARS['AUTH_USER'] = $_SESSION['Username']; - return true; - - /* this is for debugging purpose if you do not want to use Ajax - * to submit a HTML form. It basically disables the observation - * of the submit event and hence does not trigger Ajax. - */ - } else if ($_GET['disable_ajax']) { - $_SESSION['NO_AJAX'] = "True"; - $HTTP_SERVER_VARS['AUTH_USER'] = $_SESSION['Username']; - return true; - - /* Same to re-enable Ajax. - */ - } else if ($_GET['enable_ajax']) { - unset($_SESSION['NO_AJAX']); - $HTTP_SERVER_VARS['AUTH_USER'] = $_SESSION['Username']; - return true; - - /* user wants to explicitely create a lock. - * Requires a particular privilege. - */ - } else if ($_GET['createlock'] && hasLockAbility($_SESSION['Username'])) { - $fd = fopen("{$g['tmp_path']}/webconfigurator.lock", "w"); - fputs($fd, "{$_SERVER['REMOTE_ADDR']} (" . - getRealName($_SESSION['Username']) . ")"); - fclose($fd); - /* if the user did delete the lock manually, do not - * re-create it while the session is valide. - */ - $_SESSION['Lock_Created'] = "True"; - $HTTP_SERVER_VARS['AUTH_USER'] = $_SESSION['Username']; - return true; - - /* proceed with the login process */ - } else { - /* if the user is allowed to create a lock, - * create it once per session. - */ - if (hasLockAbility($_SESSION['Username']) && - ! isset($_SESSION['Lock_Created'])) { - - $fd = fopen("{$g['tmp_path']}/webconfigurator.lock", "w"); - fputs($fd, "{$_SERVER['REMOTE_ADDR']} (" . - getRealName($_SESSION['Username']) . ")"); - fclose($fd); - /* if the user did delete the lock manually, do not - * re-create it while the session is valide. - */ - $_SESSION['Lock_Created'] = "True"; - - /* give regular users a chance to automatically invalidate - * a lock if its older than a particular time. - */ - } else if (! hasLockAbility($_SESSION['Username']) && - file_exists("{$g['tmp_path']}/webconfigurator.lock")) { - - $offset = 12; //hours - $mtime = filemtime("{$g['tmp_path']}/webconfigurator.lock"); - $now_minus_offset = mktime(date("H") - $offset, 0, 0, date("m"), date("d"), date("Y")); - - if (($mtime - $now_minus_offset) < $mtime) { - require_once("auth/authgui.inc"); - display_login_form(); - return false; - } else { - /* file is older than mtime + offset which may - * indicate a stale lockfile, hence we are going - * to remove it. - */ - unlink_if_exists("{$g['tmp_path']}/webconfigurator.lock"); - } - } - - $HTTP_SERVER_VARS['AUTH_USER'] = $_SESSION['Username']; - return true; - } // end if - } // end if - } // end function -} - -?> \ No newline at end of file diff --git a/config/authng/pkg/authng_backends.inc b/config/authng/pkg/authng_backends.inc deleted file mode 100644 index 1b58e6c1..00000000 --- a/config/authng/pkg/authng_backends.inc +++ /dev/null @@ -1,234 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -class AbstractBackend { - function authenticate($username, $passwd) { - trigger_error('AbstractBackend::authenticate() needs to be overridden in a subclass.', E_USER_ERROR); - } -} - -class HtpasswdBackend extends AbstractBackend { - function HtpasswdBackend() { - } - - function authenticate($username, $passd) { - $authfile = file("/var/run/htpasswd"); - - /* sanity check to ensure that /usr/local/www/.htpasswd doesn't exist */ - unlink_if_exists("/usr/local/www/.htpasswd"); - - $matches=""; - if(!($line = array_shift(preg_grep("/^$username:.*$/", $authfile)))) - return false; - - /* Get crypted password */ - preg_match("/^$username:((\\$1\\$[.\d\w_\/]{8}\\$)[.\d\w_\/]{22})$/", $line, $matches); - $pass = $matches[1]; - $salt = $matches[2]; - - /* Encrypt entered password with salt - * And finally validate password - */ - if ($pass == crypt($passwd, $salt)) - return true; - else - return false; - } -} - -class PasswdBackend extends AbstractBackend { - function PasswdBackend() { - } - - function authenticate($username, $passd) { - $authfile = file("/etc/master.passwd"); - - $matches=""; - - /* Check to see if user even exists */ - if(!($line = array_shift(preg_grep("/^$username:.*$/", $authfile)))) - return false; - - /* Get crypted password */ - preg_match("/^$username:((\\$1\\$[.\d\w_\/]{8}\\$)[.\d\w_\/]{22})$/", $line, $matches); - $pass = $matches[1]; - $salt = $matches[2]; - - /* Encrypt entered password with salt - * And finally validate password - */ - if ($pass == crypt($passwd, $salt)) - return true; - else - return false; - } -} - -class PamBackend extends AbstractBackend { - function PamBackend() { - } - - function authenticate($username, $passd) { - /* we do not support blank pwds, don't we? */ - if ($username == "" || passwd == "") { return false; } - - if(! extension_loaded( 'pam_auth' )) { - if(! @dl( 'pam_auth.so' )) { - return false; - } else { - /* no php file no auth, sorry */ - if (! file_exists("/etc/pam.d/php")) { - if (! file_exists("/etc/pam.d")) { mkdir("/etc/pam.d"); } - - $pam_php = <<addServer($radsrv['ipaddr'], $radsrv['port'], $radsrv['sharedsecret']); - } - - if (!$rauth->start()) { - $retvalue['auth_val'] = 1; - $retvalue['error'] = $rauth->getError(); - if ($debug) - printf("Radius start: %s", $retvalue['error']); - } - - // XXX - billm - somewhere in here we need to handle securid challenge/response - - // Send request - $result = $rauth->send(); - - if (PEAR::isError($result)) { - $retvalue['auth_val'] = 1; - $retvalue['error'] = $result->getMessage(); - if ($debug) - printf("Radius send failed: %s", $retvalue['error']); - } else if ($result === true) { - $retvalue['auth_val'] = 2; - if ($debug) - printf (gettext("Radius Auth succeeded")); - $ret = true; - } else { - $retvalue['auth_val'] = 3; - if ($debug) - printf (gettext("Radius Auth rejected")); - } - // close OO RADIUS_AUTHENTICATION - $rauth->close(); - - return $ret; - } // end function -} - -class LdapBackend extends AbstractBackend { - function LdapBackend() { - } - - function authenticate($username, $passwd) { - $ldapserver = $config['system']['ldap']['server']; - $ldapport = isset($config['system']['ldap']['port']) ? $config['system']['ldap']['server'] : 389; - $retval = false; - - $connection = ldap_connect($ldapserver, $ldapport) - or die("Could not connect to $ldaphost"); - - if ($connection) { - $bind = ldap_bind($connection); - - if ($bind) { - $basedn = $config['system']['ldap']['basedn']; - $result = ldap_search($connection, $basedn, "uid={$username}"); - $info = ldap_get_entries($connection, $result); - $userPassword = $info[0]['userPassword']; - - if ($userPassword == $passwd) { - $retval = true; - } else { - $retval = false; - } - } // end if - } // end if - - return $retval; - } -} -?> \ No newline at end of file diff --git a/config/authng/pkg/authng_classdefs.inc b/config/authng/pkg/authng_classdefs.inc deleted file mode 100644 index 64f0ff14..00000000 --- a/config/authng/pkg/authng_classdefs.inc +++ /dev/null @@ -1,479 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -class Object { - function Object() { - $args = func_get_args(); - if (method_exists($this, '__destruct')) { - register_shutdown_function(array(&$this, '__destruct')); - } - call_user_func_array(array(&$this, '__construct'), $args); - } - - function __construct() { - } -} - -class SingletonInterface extends Object { - function __construct() { - // Perform object initialization here. - } - - function &__getInstanceImp($name) { - static $instances = array(); - if (!isset($instances[$name])) { - $instances[$name] = new $name(); // No changes necessary here. - } - return $instances[$name]; - } - - function &getInstance() { - trigger_error('SingletonInterface::getInstance() needs to be overridden in a subclass.', E_USER_ERROR); - } -} - -class BackendFactory extends SingletonInterface { - function __construct() { - // Perform object initialization here. - parent::__construct(); - } - - function &getInstance() { - return parent::__getInstanceImp('BackendFactory'); - } - - function &getBackendByName($name) { - $result = null; - - /* Each name links to an entry in config.xml - * Example: session - */ - switch ($name) { - case "htpasswd": - $result = new HtpasswdBackend(); - break; - case "pam": - $result = new PamBackend(); - break; - case "radius": - $result = new RadiusBackend(); - break; - case "passwd": - $result = new PasswdBackend(); - break; - case "ldap": - $result = new LdapBackend(); - break; - default: - } - - return $result; - } -} - -class AuthMethodFactory extends SingletonInterface { - function __construct() { - // Perform object initialization here. - parent::__construct(); - } - - function &getInstance() { - return parent::__getInstanceImp('AuthMethodFactory'); - } - - function &getAuthMethodByName($name) { - $result = null; - - /* Each name links to an entry in config.xml - * Example: htpasswd - */ - switch ($name) { - case "session": - $result = new SessionAuthMethod(); - break; - case "basic": - $result = new BasicAuthMethod(); - break; - default: - } - - return $result; - } -} - -class AuthngAuxiliary { - /* ========================================================================== */ - /* == Auxiliary Functions == */ - /* ========================================================================== */ - function &getSystemAdminNames() { - global $config, $g, $userindex; - $adminUsers = array(); - - if (is_array($config['system']['user'])) { - foreach($config['system']['user'] as $user){ - if (isSystemAdmin($user['name'])) { - $adminUsers[] = $user['name']; - } - } // end foreach - } // end if - - return $adminUsers; - } // end function - - function assignUID($username = "") { - global $userindex, $config, $g; - - if ($username == "") { return; } - - $nextuid = $config['system']['nextuid']; - $user =& $config['system']['user'][$userindex[$username]]; - - if (empty($user['uid'])) { - $user['uid'] = $nextuid; - $nextuid++; - $config['system']['nextuid'] = $nextuid; - - write_config(); - - return $user; - } // end if - } // end function -} - -class AuthngPrivilege { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - var $id; - var $name; - var $description; - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function AuthngPrivilege() { - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - function getId() { - return $this->id; - } - - function setId($id) { - $this->id = $id; - } - - function getName() { - return $this->name; - } - - function setName($name) { - $this->name = $name; - } - - function getDescription() { - return $this->description; - } - - function setDescription($desc) { - $this->description = $desc; - } -} - -class SystemPrivileges { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - var $privileges = array(); - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function SystemPrivileges() { - $newPriv = new Privilege(); - $newPriv->setId("lockwc"); - $newPriv->setName("Lock webConfigurator"); - $newPriv->setDescription("Indicates whether this user will lock access to the webConfigurator for other users."); - - $this->privileges[$newPriv->getId()] = $newPriv; - - $newPriv = new Privilege(); - $newPriv->setId("lock-ipages"); - $newPriv->setName("Lock individual pages"); - $newPriv->setDescription("Indicates whether this user will lock individual " . - "HTML pages after having accessed a particular page" . - "(the lock will be freed if the user leaves or " . - "saves the page form)."); - - $this->privileges[$newPriv->getId()] = $newPriv; - - $newPriv = new Privilege(); - $newPriv->setId("hasshell"); - $newPriv->setName("Has shell access"); - $newPriv->setDescription("Indicates whether this user is able to login for " . - "example via SSH."); - - $this->privileges[$newPriv->getId()] = $newPriv; - - $newPriv = new Privilege(); - $newPriv->setId("copyfiles"); - $newPriv->setName("Is allowed to copy files"); - $newPriv->setDescription("Indicates whether this user is allowed to copy files " . - "onto the {$g['product_name']} appliance via SCP/SFTP. " . - "If you are going to use this privilege, you must install " . - "scponly on the appliance (Hint: pkg_add -r scponly)."); - - $this->privileges[$newPriv->getId()] = $newPriv; - - $newPriv = new Privilege(); - $newPriv->setId("isroot"); - $newPriv->setName("Is root user"); - $newPriv->setDescription("This user is associated with the UNIX root user " . - "(you should associate this privilege only with one " . - "single user)."); - - $this->privileges[$newPriv->getId()] = $newPriv; - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - function getPrivileges() { - return $this->privileges; - } - - function setPrivileges($privs) { - $this->privileges = $privs; - } - - function getPrivilegeById($id) { - return $this->privileges[$id]; - } - - function setPrivilegeById($privilege, $id) { - return $this->privileges[$id] = $privilege; - } -} - -class AuthngUser { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - var $name; - var $fullname; - var $scope; - var $groupname; - var $password; - var $uid; - var $systemAdmin = false; - var $unixRoot = false; - var $privileges = array(); - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function AuthngUser() { - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - function isSystemAdmin() { - return $this->systemAdmin; - } - - function setIsSystemAdmin($flag = false) { - $this->systemAdmin = $flag; - } - - function isUNIXRoot() { - return $this->unixRoot; - } - - function setIsUNIXRoot($flag = false) { - $this->unixRoot = $flag; - } - - function getName() { - return $this->name; - } - - function setName($name) { - $this->name = $name; - } - - function getFullname() { - return $this->fullname; - } - - function setFullname($name) { - $this->fullname = $name; - } - - function getScope() { - return $this->scope; - } - - function setScope($scope) { - $this->scope = $scope; - } - - function getGroupname() { - return $this->groupname; - } - - function setGroupname($name) { - $this->groupname = $name; - } - - function getPassword() { - return $this->password; - } - - function setPassword($pwd) { - $this->password = $pwd; - } - - function getUid() { - return $this->uid; - } - - function setUid($uid) { - $this->uid = $uid; - } - - function getPrivileges() { - return $this->privileges; - } - - function setPrivileges($privs) { - $this->privileges = $privs; - } - - function addPrivilege($priv) { - $this->privileges[] = $priv; - } -} - -class AuthngGroup { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - var $name; - var $description; - var $scope; - var $pages = array(); - var $home; - var $gid; - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function AuthngGroup() { - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - function getName() { - return $this->name; - } - - function setName($name) { - $this->name = $name; - } - - function getDescription() { - return $this->description; - } - - function setDescription($desc) { - $this->description = $desc; - } - - function getScope() { - return $this->scope; - } - - function setScope($scope) { - $this->scope = $scope; - } - - function getPages() { - return $this->pages; - } - - function setPages($pages) { - $this->pages = $pages; - } - function getHome() { - return $this->home; - } - - function setHome($home) { - $this->home = $home; - } - - function getGid() { - return $this->gid; - } - - function setGid($gid) { - $this->gid = $gid; - } - - function addPage($page) { - $this->pages[] = $page; - } -} - -?> \ No newline at end of file diff --git a/config/authng/pkg/authng_peers.inc b/config/authng/pkg/authng_peers.inc deleted file mode 100644 index bce3c494..00000000 --- a/config/authng/pkg/authng_peers.inc +++ /dev/null @@ -1,501 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -class PeerFactory extends SingletonInterface { - function __construct() { - // Perform object initialization here. - parent::__construct(); - } - - function &getInstance() { - return parent::__getInstanceImp('PeerFactory'); - } - - function &getGroupPeerByPrincipalStore($store) { - $result = null; - - /* Each name links to an entry in config.xml - * Example: xml - */ - switch ($store) { - case "xml": - $result = new XMLGroupPeer(); - break; - case "ldap": - trigger_error('PeerFactory::getGroupPeerByPrincipal() LDAP peer type is not supported.', E_USER_ERROR); - break; - case "db": - trigger_error('PeerFactory::getGroupPeerByPrincipal() DB peer type is not supported.', E_USER_ERROR); - break; - default: - } - - return $result; - } - - function &getUserPeerByPrincipalStore($store) { - $result = null; - - /* Each name links to an entry in config.xml - * Example: xml - */ - switch ($store) { - case "xml": - $result = new XMLUserPeer(); - break; - case "ldap": - trigger_error('PeerFactory::getGroupPeerByPrincipal() LDAP peer type is not supported.', E_USER_ERROR); - break; - case "db": - trigger_error('PeerFactory::getGroupPeerByPrincipal() DB peer type is not supported.', E_USER_ERROR); - break; - default: - } - - return $result; - } -} - -/** - * @author Daniel S. Haischt - * @abstract - */ -class AbstractPrivilegePeer { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - var $privilege_index; - var $privileges; - var $userPeer; - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function AbstractPrivilegePeer() { - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - function setUserPeer($peer) { - $this->userPeer = $peer; - } - - function getUserPeer() { - return $this->userPeer; - } - - /** - * @return mixed int array of priv indexes - */ - function getPrivilegeIndex() { - return $this->privilege_index; - } - - /** - * @param string a priv name - * @return int the index that corresponds to a username - */ - function getPrivilegeIndexByID($id) { - return $this->privilege_index[$id]; - } - - /** - * @param int an index - * @return mixed an instance of AuthngPrivilege - */ - function getPrivilegeByIndex($index) { - return $this->privileges[$index]; - } -} - -/** - * @author Daniel S. Haischt - * @abstract - */ -class AbstractUserPeer { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - var $user_index; - var $users; - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function AbstractUserPeer() { - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - /** - * @return mixed int array of user indexes - */ - function getUserIndex() { - return $this->user_index; - } - - /** - * @param string a username - * @return int the index that corresponds to a username - */ - function getUserIndexByName($username) { - return $this->user_index[$username]; - } - - /** - * @param int an index - * @return mixed an instance of AuthngUser - */ - function getUserByIndex($index) { - return $this->users[$index]; - } - - function getUserByName($username) { - return $this->users[$username]; - } - - function isSystemAdmin($username) { - $result = false; - $user = $this->getUserByName($username); - - if ($user) { - $result = $user->isSystemAdmin(); - } - - return $result; - } -} - -/** - * @author Daniel S. Haischt - * @abstract - */ -class AbstractGroupPeer { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - var $group_index; - var $groups; - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function AbstractGroupPeer() { - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - function getGroupIndex() { - return $this->group_index; - } - - function getGroupIndexByName($groupname) { - return $this->group_index[$groupname]; - } - - function getGroupByIndex($index) { - return $this->groups[$index]; - } - - function getGroupByName($groupname) { - return $this->groups[$groupname]; - } - - function getGroupHomePage($groupname) { - $result = false; - $group = $this->getGroupByName($groupname); - - if ($group) { - $result = $group->getHome(); - } - - return $result; - } -} - -/** - * @author Daniel S. Haischt - */ -class XMLPrivilegePeer extends AbstractPrivilegePeer { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function XMLPrivilegePeer($userPeer) { - global $g, $config; - - parent::AbstractPrivilegePeer(); - - $this->setUserPeer($peer); - - foreach ($peer->users as $userent) { - foreach ($userent->getPrivileges() as $privent) { - $this->privileges[$userent->getName()] = $privent; - } - } - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - /* ========================================================================== */ - /* == Helper Methods == */ - /* ========================================================================== */ - - function addPrivilegeFromEnt(&$ent) { - $newPrivilege = new AuthngUser(); - $newPrivilege->setId($ent['id']); - $newPrivilege->setName($ent['name']); - $newPrivilege->setDescription($ent['description']); - $newPrivilege->setPassword($ent['password']); - $newPrivilege->setUid($ent['uid']); - - $this->privileges[] = $newPrivilege; - } - - function setPrivilegeID($id, $name, $username) { - $userid = getPrivilegeIndexByName($username); - $user = $config['system']['user'][$userid]; - } - - function setFullName($id, $name) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['fullname'] = $name; - } - - function setGroupName($id, $name) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['groupname'] = $name; - } - - function setPassword($id, $pwd) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['password'] = $pwd; - } - - function setUid($id, $uid) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['uid'] = $uid; - } -} - -/** - * @author Daniel S. Haischt - */ -class XMLUserPeer extends AbstractUserPeer { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function XMLUserPeer() { - global $g, $config; - - parent::AbstractUserPeer(); - - if (isset($config['system']['user'])) { - $i = 0; - - foreach($config['system']['user'] as $userent) { - $this->user_index[$userent['name']] = $i; - $this->addUserFromEnt($userent); - $i++; - } - } - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - /* ========================================================================== */ - /* == Helper Methods == */ - /* ========================================================================== */ - - function addUserFromEnt(&$ent) { - print "HURTZ"; - $newUser = new AuthngUser(); - $newUser->setName($ent['name']); - $newUser->setFullname($ent['fullname']); - $newUser->setGroupname($ent['groupname']); - $newUser->setPassword($ent['password']); - $newUser->setUid($ent['uid']); - - if ($ent['priv'] && is_array($ent['priv'])) { - foreach ($ent['priv'] as $privent) { - $newPrivilege = new Privilege(); - $newPrivilege->setId($privent['id']); - $newPrivilege->setName($privent['name']); - $newPrivilege->setDescription($privent['description']); - - $newUser->addPrivilege($newPrivilege); - } - } - - $this->users["${ent['name']}"] = $newUser; - } - - function setUserName($id, $name) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['name'] = $name; - } - - function setFullName($id, $name) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['fullname'] = $name; - } - - function setGroupName($id, $name) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['groupname'] = $name; - } - - function setPassword($id, $pwd) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['password'] = $pwd; - } - - function setUid($id, $uid) { - $userid = getUserIndexByName($id); - $config['system']['user'][$userid]['uid'] = $uid; - } -} - -/** - * @author Daniel S. Haischt - */ -class XMLGroupPeer extends AbstractGroupPeer { - /* ========================================================================== */ - /* == Class Members == */ - /* ========================================================================== */ - - /* ========================================================================== */ - /* == Constructor == */ - /* ========================================================================== */ - - function XMLGroupPeer() { - global $g, $config; - - parent::AbstractGroupPeer(); - - if (isset($config['system']['group'])) { - $i = 0; - - foreach($config['system']['group'] as $groupent) { - $this->group_index[$groupent['name']] = $i; - $i++; - } - } - } - - /* ========================================================================== */ - /* == Accessors == */ - /* ========================================================================== */ - - /* ========================================================================== */ - /* == Helper Methods == */ - /* ========================================================================== */ - - function addGroupFromEnt(&$ent) { - $newGoup = new AuthngGroup(); - $newGoup->setName($ent['name']); - $newGoup->setDescription($ent['description']); - $newGoup->setScope($ent['scope']); - $newGoup->setHome($ent['home']); - $newGoup->setGid($ent['gid']); - - if ($ent['pages'] && is_array($ent['gid'])) { - foreach ($ent['pages'] as $pageent) { - $newGoup->addPage($pageent); - } - } - - $this->groups["${ent['name']}"] = $newGoup; - } - - function setGroupName($id, $name) { - $groupid = getGroupIndexByName($id); - $config['system']['group'][$groupid]['name'] = $name; - } - - function setGroupDescription($id, $desc) { - $groupid = getGroupIndexByName($id); - $config['system']['group'][$groupid]['description'] = $desc; - } - - function setGroupScope($id, $scope) { - $groupid = getGroupIndexByName($id); - $config['system']['group'][$groupid]['scope'] = $scope; - } - - function setGroupHome($id, $home) { - $groupid = getGroupIndexByName($id); - $config['system']['group'][$groupid]['home'] = $home; - } - - function setGroupGid($id, $gid) { - $groupid = getGroupIndexByName($id); - $config['system']['group'][$groupid]['gid'] = $gid; - } - - function addPageToGroup($id, $page) { - $groupid = getGroupIndexByName($id); - $config['system']['group'][$groupid]['pages'][] = $page; - } -} -?> diff --git a/config/authng/pkg/authng_usermanager.inc b/config/authng/pkg/authng_usermanager.inc deleted file mode 100644 index f96759fb..00000000 --- a/config/authng/pkg/authng_usermanager.inc +++ /dev/null @@ -1,247 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -function initUserFromGetVars() { - if ($_GET['act'] == "edit") { - if (isset($id) && $a_user[$id]) { - $pconfig['usernamefld'] = $a_user[$id]['name']; - $pconfig['fullname'] = $a_user[$id]['fullname']; - $pconfig['groupname'] = $a_user[$id]['groupname']; - $pconfig['utype'] = $a_user[$id]['scope']; - $pconfig['authorizedkeys'] = base64_decode($a_user[$id]['authorizedkeys']); - } - } else if ($_GET['act'] == "new") { - /* set this value cause the text field is read only - * and the user should not be able to mess with this - * setting. - */ - $pconfig['utype'] = "user"; - } -} -function processUserManagerPostVarsUser() { - if (isset($_POST['save'])) { - unset($input_errors); - - /* input validation */ - $reqdfields = explode(" ", "passwordfld1"); - $reqdfieldsn = explode(",", "Password"); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if ($_POST['passwordfld1'] != $_POST['passwordfld2']) - $input_errors[] = "The passwords do not match."; - - if (!$input_errors) { - // all values are okay --> saving changes - $config['system']['user'][$userindex[$HTTP_SERVER_VARS['AUTH_USER']]]['password'] = crypt(trim($_POST['passwordfld1'])); - - write_config(); - - sync_webgui_passwords(); - - $retval = system_password_configure(); - $savemsg = get_std_save_message($retval); - $savemsg = "Password successfully changed
    "; - } - } -} - -function processUserManagerPostVarsAdmin() { - $id = $_GET['id']; - if (isset($_POST['id'])) - $id = $_POST['id']; - - if (!is_array($config['system']['user'])) { - $config['system']['user'] = array(); - } - - admin_users_sort(); - $a_user = &$config['system']['user']; - $t_privs = $a_user[$id]['priv']; - - if ($_GET['act'] == "del" && $_GET['what'] == "user") { - if ($a_user[$_GET['id']]) { - $userdeleted = $a_user[$_GET['id']]['name']; - unset($a_user[$_GET['id']]); - write_config(); - $retval = system_password_configure(); - $savemsg = get_std_save_message($retval); - $savemsg = gettext("User") . " " . $userdeleted . " " . gettext("successfully deleted") . "
    "; - } - } else if ($_GET['act'] == "del" && $_GET['what'] == "priv") { - if ($t_privs[$_GET['privid']]) { - $privdeleted = $t_privs[$_GET['privid']]['id']; - unset($t_privs[$_GET['privid']]); - write_config(); - $_GET['act'] = "edit"; - $retval = 0; - $savemsg = get_std_save_message($retval); - $savemsg = gettext("Privilege") . " " . $privdeleted . " " . gettext("of user") . " " . $a_user[$_GET['id']]['name'] . " " . gettext("successfully deleted") . "
    "; - } - } - - if ($_POST) { - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - if (isset($id) && ($a_user[$id])) { - $reqdfields = explode(" ", "usernamefld"); - $reqdfieldsn = explode(",", "Username"); - } else { - $reqdfields = explode(" ", "usernamefld passwordfld1"); - $reqdfieldsn = explode(",", "Username,Password"); - } - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if (hasShellAccess($_POST['usernamefld'])) { - if (preg_match("/[^a-zA-Z0-9\.\-_]/", $_POST['usernamefld'])) - $input_errors[] = gettext("The username contains invalid characters."); - } else { - if (preg_match("/[^a-zA-Z0-9\@\.\-_]/", $_POST['usernamefld'])) - $input_errors[] = gettext("The username contains invalid characters."); - } - - if (($_POST['passwordfld1']) && ($_POST['passwordfld1'] != $_POST['passwordfld2'])) - $input_errors[] = gettext("The passwords do not match."); - - if (!$input_errors && !(isset($id) && $a_user[$id])) { - /* make sure there are no dupes */ - foreach ($a_user as $userent) { - if ($userent['name'] == $_POST['usernamefld']) { - $input_errors[] = gettext("Another entry with the same username already exists."); - break; - } - } - } - - if ($pconfig['utype'] <> "system" && !isset($groupindex[$_POST['groupname']])) { - $input_errors[] = gettext("group does not exist, please define the group before assigning users."); - } - - if (isset($config['system']['ssh']['sshdkeyonly']) && - empty($_POST['authorizedkeys'])) { - $input_errors[] = gettext("You must provide an authorized key otherwise you won't be able to login into this system."); - } - - /* if this is an AJAX caller then handle via JSON */ - if (isAjax() && is_array($input_errors)) { - input_errors2Ajax($input_errors); - exit; - } - - if (!$input_errors) { - if (isset($id) && $a_user[$id]) - $userent = $a_user[$id]; - - /* the user did change his username */ - if ($_POST['usernamefld'] <> $_POST['oldusername']) { - $_SERVER['REMOTE_USER'] = $_POST['usernamefld']; - } - - $userent['name'] = $_POST['usernamefld']; - $userent['fullname'] = $_POST['fullname']; - if ($pconfig['utype'] <> "system") { - $userent['groupname'] = $_POST['groupname']; - } - isset($_POST['utype']) ? $userent['scope'] = $_POST['utype'] : $userent['scope'] = "system"; - - if ($_POST['passwordfld1']) - $userent['password'] = crypt($_POST['passwordfld1']); - - if(isset($config['system']['ssh']['sshdkeyonly'])) { - $userent['authorizedkeys'] = base64_encode($_POST['authorizedkeys']); - } - - if (isset($id) && $a_user[$id]) - $a_user[$id] = $userent; - else - $a_user[] = $userent; - - write_config(); - $retval = system_password_configure(); - sync_webgui_passwords(); - - pfSenseHeader("system_usermanager.php"); - } - } -} - -/** - * getWindowJSScriptRefs() - * - * @return - */ -function getWindowJSScriptRefs(){ - $result = array('', - '', - '', - '', - ''); - - return $result; -} - -/** - * openNoUserDefsDialog() - * - * @param mixed $effectClass - * @return - */ -function openNoUserDefsDialog($effectClass) { - if (empty($config['installedpackages']['authng']['config'])) { - $alertMessage = gettext("No users or group found. You will be forwarded to the AuthNG wizard to be able to define users and groups."); - $dialogScript = " - - "; - - return $dialogScript; - } -} - -?> \ No newline at end of file diff --git a/config/authng/www/js/headjs.inc b/config/authng/www/js/headjs.inc deleted file mode 100644 index 73c0a4db..00000000 --- a/config/authng/www/js/headjs.inc +++ /dev/null @@ -1,157 +0,0 @@ -<\/div>\"; - new Insertion.Before('submit', to_insert); - } - } - - function submit_form(e){ - // debugging helper - //alert(Form.serialize($('iform'))); - - if($('inputerrors')) - $('inputerrors').innerHTML = ''; - - /* dsh: Introduced because pkg_edit tries to set some hidden fields - * if executing submit's onclick event. Tho click gets deleted - * by Ajax. Hence using onkeydown instead. - */ - if($('submit') && $('submit').onkeydown) - $('submit').onkeydown(); - if($('submit')) - $('submit').style.visibility = 'hidden'; - if($('cancelbutton')) - $('cancelbutton').style.visibility = 'hidden'; - $('loading').style.visibility = 'visible'; - // submit the form using Ajax - "; - - - isset($HTTP_SERVER_VARS['AUTH_USER']) ? $scriptName = split("/", $_SERVER["SCRIPT_FILENAME"]) : $scriptName = split("/", "/index.php"); - isset($HTTP_SERVER_VARS['AUTH_USER']) ? $loggedin = "var isLoggedIn = true;" : $loggedin = "var isLoggedIn = false;"; - $scriptElms = count($scriptName); - $scriptName = $scriptName[$scriptElms-1]; - $realScriptName = $_SERVER["SCRIPT_NAME"]; - - $headjs .= " - {$loggedin} - - if (! isLoggedIn) { - var newInput = document.createElement('input'); - newInput.setAttribute('id', 'scriptname'); - newInput.setAttribute('name', 'scriptname'); - newInput.setAttribute('value', '$realScriptName'); - newInput.setAttribute('type', 'hidden'); - - $('iform').appendChild(newInput); - } - - new Ajax.Request('{$scriptName}', { - method : 'post', - parameters : Form.serialize($('iform')), - onSuccess : formSubmitted, - onFailure : formFailure - }); - } - - function formSubmitted(resp) { - var responseText = resp.responseText; - - // debugging helper - //alert(responseText); - - if(responseText.indexOf('html') > 0) { - /* somehow we have been fed an html page! */ - //alert('Somehow we have been fed an html page! Forwarding to /.'); - document.location.href = '/'; - } - - eval(responseText); - } - - /* this function will be called if an HTTP error will be triggered */ - function formFailure(resp) { - alert('An error occured while saving the data ' + resp.responseText); - } - - function showajaxmessage(message) { - var message_html; - - if (message == '') { - NiftyCheck(); - Rounded(\"div#redbox\",\"all\",\"#FFF\",\"#990000\",\"smooth\"); - Rounded(\"td#blackbox\",\"all\",\"#FFF\",\"#000000\",\"smooth\"); - - if($('submit')) - $('submit').style.visibility = 'visible'; - if($('cancelbutton')) - $('cancelbutton').style.visibility = 'visible'; - if($('loading')) - $('loading').style.visibility = 'hidden'; - - return; - } - - message_html = '
    '; - message_html += '
    '; - message_html += ' -
    '; - message_html += '   '; - message_html += ''; - message_html += '<\/td>'; - message_html += '' + message + '<\/b><\/font><\/td>'; - - if(message.indexOf('apply') > 0) { - message_html += ''; - message_html += ''; - message_html += '<\/td>'; - } - - message_html += '<\/tr><\/table><\/div><\/td><\/table>
    '; - $('inputerrors').innerHTML = message_html; - - NiftyCheck(); - Rounded(\"div#redbox\",\"all\",\"#FFF\",\"#990000\",\"smooth\"); - Rounded(\"td#blackbox\",\"all\",\"#FFF\",\"#000000\",\"smooth\"); - - if($('submit')) - $('submit').style.visibility = 'visible'; - if($('cancelbutton')) - $('cancelbutton').style.visibility = 'visible'; - if($('loading')) - $('loading').style.visibility = 'hidden'; - if($('inputerrors')) - window.scrollTo(0, 0); - if($('inputerrors')) - new Effect.Shake($('inputerrors')); - } - "; - - return $headjs; -} - -?> diff --git a/config/authng/www/php/head.inc b/config/authng/www/php/head.inc deleted file mode 100644 index 5365c715..00000000 --- a/config/authng/www/php/head.inc +++ /dev/null @@ -1,669 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ -require("headjs.inc"); - -/* if user has selected a custom template, use it. - * otherwise default to pfsense tempalte - */ -if($config['theme'] <> "") { - $g['theme'] = $config['theme']; -} else { - $g['theme'] = "pfsense"; -} - -// navigation level separator string -$navlevelsep = ": "; - -function gentitle($title) { - global $navlevelsep; - - if(!is_array($title)) { - return $title; - } - - return join($navlevelsep, $title); -} - -function genhtmltitle($title) { - global $config; - //return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . gentitle($title); - return gentitle($title); -} - -$scriptName = split("/", $_SERVER["SCRIPT_FILENAME"]); -$scriptElms = count($scriptName); -$scriptName = $scriptName[$scriptElms-1]; - -$pfSenseHead = new pfSenseHTMLHead(); -$pfSenseHead->setCloseHead(true); -$pfSenseHead->setTitle(genhtmltitle($pgtitle)); - -/* all.css has to be treated a bit different, compared to generic stylesheets */ -$allID = $pfSenseHead->addLink("\n"); -$pfSenseHead->setAllCssID($allID); - -$pfSenseHead->addLink("\n"); -$pfSenseHead->addScript("\n", 1); -$pfSenseHead->addScript("\n", 2); -//TODO: if ((($_POST || $_GET || isAjax()) && -if ((($_POST || $_GET) && - is_array($error_bucket)) || - strpos($_SERVER['SCRIPT_NAME'], "wizard.php") !== false) { - $pfSenseHead->addScript("", 500); - $pfSenseHead->addScript("", 510); - $pfSenseHead->addScript("", 520); - $pfSenseHead->addScript("", 530); -} - -/* - * Find all javascript files that need to be included - * for this page ... from the arrays ... :) - * Coded by: Erik Kristensen - */ -$scriptWeight = 100; - -$dir = trim(basename($_SERVER["SCRIPT_FILENAME"]), '.php'); -$path = "/usr/local/www/javascript/" . $dir . "/"; -if (is_dir($path)) { - if ($dh = opendir($path)) { - while (($file = readdir($dh)) !== false) { - if (is_dir($file)) { continue; } - if (strpos($file, ".js") === false) { continue; } - - $pfSenseHead->addScript("\n", $scriptWeight); - $scriptWeight++; - } - closedir($dh); - } -} - -/* - * Find all JavaScript files that may be provided by the current theme - * TODO: Commented because this pulls in PHP5 specific stuff from the theme. - * - */ -//$path = "/usr/local/www/themes/{$g['theme']}/javascript/"; - -//if (is_dir($path)) { -// if ($dh = opendir($path)) { -// while (($file = readdir($dh)) !== false) { -// if (is_dir($file)) { continue; } -// if (strpos($file, ".js") !== false) { -// $pfSenseHead->addScript("\n", $scriptWeight); -// } else if (strpos($file, ".php") !== false && -// strpos($file, "-head") !== false && -// strpos($file, ".disabled") === false) { -// $filename = ucfirst(trim(trim($file, '.php'), '-head')); -// require_once("themes/{$g['theme']}/javascript/{$file}"); - -// if (function_exists("{$g['theme']}{$filename}GetHeadJS")) { -// $jsfunction = "{$g['theme']}{$filename}GetHeadJS"; -// $jscript = $jsfunction(); -// $pfSenseHead->addScript("\n", $scriptWeight); -// } -// } else { -// continue; -// } - -// $scriptWeight++; -// } -// closedir($dh); -// } -//} - -/* - * Find all JavaScript events that may be provided by the current theme - * - */ -$path = "/usr/local/www/themes/{$g['theme']}/jsevents/"; -if (is_dir($path)) { - if ($dh = opendir($path)) { - while (($file = readdir($dh)) !== false) { - if (is_dir($file)) { continue; } - if (strpos($file, ".def") !== false) { - if (empty($jsevents)) { $jsevents = array(); } - - switch ($file) { - case "body.def": - $contents = file_get_contents("/usr/local/www/themes/{$g['theme']}/jsevents/{$file}"); - $contents_a = split("\n", $contents); - foreach ($contents_a as $line) { - if (strpos($line, "#") === 0) { continue; } - if (strpos($line, "!") !== false) { - $events_forbidden_pages = split("!", $line); - $keyval = split("=", $events_forbidden_pages[0]); - - if (strpos($events_forbidden_pages[1], basename($_SERVER['SCRIPT_NAME'])) !== false) { continue; } - } else { - $keyval = split("=", $line); - } - $jsevents["body"][$keyval[0]] = $keyval[1]; - } - break; - } - } else { - continue; - } - } - closedir($dh); - } -} - -/* - * Find all CSS files that may be provided by the current theme - * TODO: Not needed right now. - */ -//$path = "/usr/local/www/themes/{$g['theme']}/styles/"; -//if (is_dir($path)) { -// if ($dh = opendir($path)) { -// while (($file = readdir($dh)) !== false) { -// if (is_dir($file)) { continue; } -// if (strpos($file, ".css") === false) { continue; } - -// $pfSenseHead->addLink("\n"); -// } -// closedir($dh); -// } -//} - -if ($oSajax) { -$pfSenseHead->addScript("\n", ++$scriptWeight); -} - -// TODO: This line needs to be commented if any PHP calls -// $pfSenseHead->getHTML(); on its own. -//echo $pfSenseHead->getHTML(); - -/** - * pfSenseHTMLHead - * - * @package www - * @author Daniel S. Haischt - * @copyright Copyright (c) 2006 - * @version $Id$ - * @access public - **/ -class pfSenseHTMLHead -{ - var $xmlHead = "\n"; - var $docType = "\n"; - var $title = "UNSET"; - var $meta = array(); - var $link = array(); - var $script = array(); - var $style = array(); - var $html = "\n\n%TITLE%\n%META%\n%STYLE%\n%LINK%\n%SCRIPT%"; - var $closehead = true; - var $returnedHTML = false; - var $allCSSID = "NOT-SET"; - - /** - * pfSenseHTMLHead::pfSenseHTMLHead() - * - * Class Konstructor - **/ - function pfSenseHTMLHead() { - $this->meta[] = array("meta" => " ", - "ID" => "meta-" . strval(microtime())); - $this->link[] = array("link" => " ", - "ID" => "link-" . strval(microtime())); - $this->script[] = array("script" => " ", - "weight" => 3, - "ID" => "script-" . strval(microtime())); - $this->script[] = array("script" => " ", - "weight" => 4, - "ID" => "script-" . strval(microtime())); -// $this->script[] = array("script" => " ", -// "weight" => 5, -// "ID" => "script-" . strval(microtime())); - } - - /** - * pfSenseHTMLHead::getAllCssID() - * - * Allows to store the ID associated with the all CSS file. - * @return an ID - **/ - function getAllCssID() { - return $this->allCSSID; - } - - /** - * pfSenseHTMLHead::setAllCssID() - * - * Allows to set the ID associated with the all CSS file. - * @param mixed $myID a string representing an ID that was already generated. - **/ - function setAllCssID($myID = "") { - if ($myID == "") { return; } - - $this->allCSSID = $myID; - } - - /** - * pfSenseHTMLHead::setCloseHead() - * - * Should the HTML <head /> element be closed by the class or - * do you want to close it manually? - * @param mixed $myCloseHead Boolean value which indicates whether <head /> should be closed by the class - * @return - **/ - function setCloseHead($myCloseHead = true) { - $this->closehead = $myCloseHead; - } - - /** - * pfSenseHTMLHead::setTitle() - * - * Set the HTML <title /> element. - * @param string $myTitle The title (without any markup) - * @return NULL - **/ - function setTitle($myTitle = "") { - $this->title = $myTitle; - } - - /** - * pfSenseHTMLHead::addStyle() - * - * Allows to add a complete HTML <style /> element to the current - * meta element array. You can provide an ID if you want to access your - * particular element at a later time, for example to delete it from the - * array etc.. If you don't provide an ID, a random ID will be generated - * and returned. - * @param string $myStyleElement an HTML string that represents a <style /> tag. - * @param string $myID an ID that identifies this element. - * @return the ID that identifies the particular element that you've just added. - **/ - function addStyle($myStyleElement = "", $myID = "") { - if ($myID == "") { $myID = "style-" . strval(microtime()); } - - $this->style[] = array("style" => $myStyleElement, - "ID" => $myID); - - return $myID; - } - - /** - * pfSenseHTMLHead::getStyleArray() - * - * @return a reference to the meta element array. - **/ - function &getStyleArray() { - return $this->style; - } - - /** - * pfSenseHTMLHead::getStyleByID() - * - * Returns a reference to an array element that is identified by an ID. - * Can be used for example to manipulate an array element after it was - * already stored in the array. - * @param string $myID an ID that identifies the element that should be retrieved. - * @return a reference to an array element or NULL if the element does not exist. - **/ - function &getStyleByID($myID = "") { - foreach($this->style as $styleel){ - if ($styleel["ID"] == $myID) { - return $styleel; - } - } - return NULL; - } - - /** - * pfSenseHTMLHead::removeStyleByID() - * - * Provides a way to delete an element from an HTML element array. - * You must provide an ID which identifies the element to be deleted. - * @param string $myID an ID the identifies the element. - * @return 1 if the element was found or 0 if it does not exist. - **/ - function removeStyleByID($myID = "") { - foreach($this->style as $styleel){ - if ($styleel["ID"] == $myID) { - unset($styleel); - return 1; - } - } - return 0; - } - - /** - * pfSenseHTMLHead::addMeta() - * - * Allows to add a complete HTML <meta /> element to the current - * meta element array. You can provide an ID if you want to access your - * particular element at a later time, for example to delete it from the - * array etc.. If you don't provide an ID, a random ID will be generated - * and returned. - * @param string $myMetaElement an HTML string that represents a <meta /> tag. - * @param string $myID an ID that identifies this element. - * @return the ID that identifies the particular element that you've just added. - **/ - function addMeta($myMetaElement = "", $myID = "") { - if ($myID == "") { $myID = "meta-" . strval(microtime()); } - - $this->meta[] = array("meta" => $myMetaElement, - "ID" => $myID); - - return $myID; - } - - /** - * pfSenseHTMLHead::getMetaArray() - * - * @return a reference to the meta element array. - **/ - function &getMetaArray() { - return $this->meta; - } - - /** - * pfSenseHTMLHead::getMetaByID() - * - * Returns a reference to an array element that is identified by an ID. - * Can be used for example to manipulate an array element after it was - * already stored in the array. - * @param string $myID an ID that identifies the element that should be retrieved. - * @return a reference to an array element or NULL if the element does not exist. - **/ - function &getMetaByID($myID = "") { - foreach($this->meta as $metael){ - if ($metael["ID"] == $myID) { - return $metael; - } - } - return NULL; - } - - /** - * pfSenseHTMLHead::removeMetaByID() - * - * Provides a way to delete an element from an HTML element array. - * You must provide an ID which identifies the element to be deleted. - * @param string $myID an ID the identifies the element. - * @return 1 if the element was found or 0 if it does not exist. - **/ - function removeMetaByID($myID = "") { - foreach($this->meta as $metael){ - if ($metael["ID"] == $myID) { - unset($metael); - return 1; - } - } - return 0; - } - - /** - * pfSenseHTMLHead::addLink() - * - * Allows to add a complete HTML <link /> element to the current - * link element array. You can provide an ID if you want to access your - * particular element at a later time, for example to delete it from the - * array etc.. If you don't provide an ID, a random ID will be generated - * and returned. - * @param string $myLinkElement an HTML string that represents a <link /> tag. - * @param string $myID an ID that identifies this element. - * @return the ID that identifies the particular element that you've just added. - **/ - function addLink ($myLinkElement = "", $myID = "") { - if ($myID == "") { $myID = "link-" . strval(microtime()); } - - $this->link[] = array("link" => $myLinkElement, - "ID" => $myID); - - return $myID; - } - - /** - * pfSenseHTMLHead::getLinkArray() - * - * @return a reference to the link element array. - **/ - function &getLinkArray() { - return $this->link; - } - - /** - * pfSenseHTMLHead::getLinkByID() - * - * Returns a reference to an array element that is identified by an ID. - * Can be used for example to manipulate an array element after it was - * already stored in the array. - * @param string $myID an ID that identifies the element that should be retrieved. - * @return a reference to an array element or NULL if the element does not exist. - **/ - function &getLinkByID($myID = "") { - foreach($this->link as $linkel){ - if ($linkel["ID"] == $myID) { - return $linkel; - } - } - return NULL; - } - - /** - * pfSenseHTMLHead::removeLinkByID() - * - * Provides a way to delete an element from an HTML element array. - * You must provide an ID which identifies the element to be deleted. - * @param string $myID an ID the identifies the element. - * @return 1 if the element was found or 0 if it does not exist. - **/ - function removeLinkByID($myID = "") { - foreach($this->link as $linkel){ - if ($linkel["ID"] == $myID) { - unset($linkel); - return 1; - } - } - return 0; - } - - /** - * pfSenseHTMLHead::replaceLinkByID() - * - * Provides a way to replace an element from an HTML element array. - * You must provide an ID which identifies the element to be replace. - * @param string $myID an ID the identifies the element. - * @return 1 if the element was found or 0 if it does not exist. - **/ - function replaceLinkByID($myID = "", $byWhat = "") { - for ($i = 0; $i < count($this->link); $i++) { - $linkel =& $this->link[$i]; - if ($linkel["ID"] == $myID) { - $linkel["link"] = $byWhat; - return 1; - } - } - - return 0; - } - - /** - * pfSenseHTMLHead::addScript() - * - * Allows to add a complete HTML <link /> element to the current - * link element array. You can provide an ID if you want to access your - * particular element at a later time, for example to delete it from the - * array etc.. If you don't provide an ID, a random ID will be generated - * and returned. - * - * The weight parameter can be used to force the <script /> - * element to appear at the beginning of the HTML <head /> element or at - * its end. The greater the value for weight, the later the <script /> - * element will appear within the HTML <head /> element. - * @param string $myScriptElement an HTML string that represents a <script /> tag. - * @param integer $weight allows to position this element within the HTML <head /> - * @param string $myID an ID that identifies this element. - * @return the ID that identifies the particular element that you've just added. - **/ - function addScript($myScriptElement = "", $weight = 1000000, $myID = "") { - if ($myID == "") { $myID = "script-" . strval(microtime()); } - - $this->script[] = array("script" => $myScriptElement, - "weight" => $weight, - "ID" => $myID); - } - - /** - * pfSenseHTMLHead::getScriptArray() - * - * @return a reference to the script element array. - **/ - function &getScriptArray() { - return $this->script; - } - - /** - * pfSenseHTMLHead::getScriptByID() - * - * Returns a reference to an array element that is identified by an ID. - * Can be used for example to manipulate an array element after it was - * already stored in the array. - * @param string $myID an ID that identifies the element that should be retrieved. - * @return a reference to an array element or NULL if the element does not exist. - **/ - function &getScriptByID($myID = "") { - foreach($this->script as $scriptel){ - if ($scriptel["ID"] == $myID) { - return $scriptel; - } - } - return NULL; - } - - /** - * pfSenseHTMLHead::removeScriptByID() - * - * Provides a way to delete an element from an HTML element array. - * You must provide an ID which identifies the element to be deleted. - * @param string $myID an ID the identifies the element. - * @return 1 if the element was found or 0 if it does not exist. - **/ - function removeScriptByID($myID = "") { - foreach($this->script as $scriptel){ - if ($scriptel["ID"] == $myID) { - unset($scriptel); - return 1; - } - } - return 0; - } - - /** - * pfSenseHTMLHead::getHTML() - * - * This function finally renders the HTML string representation of the - * HTML document header that is represented by this class. If you did - * specify to not close the HTML <head /> element via closehead - * you need to close it manually. - * - * @return a string that contains a HTML <head /> element. - **/ - function getHTML () { - $language = $GLOBALS['config']['system']['language']; - - if ($this->returnedHTML) { - return; - } else { - $metastr = ""; - if (is_array($this->meta) && count($this->meta) > 0) - foreach($this->meta as $metael) { - $metastr .= $metael["meta"] . "\n"; - } - - $linkstr = ""; - if (is_array($this->link) && count($this->link) > 0) - foreach($this->link as $linkel) { - $linkstr .= $linkel["link"] . "\n"; - } - - $stylestr = ""; - if (is_array($this->style) && count($this->style) > 0) - foreach($this->style as $styleel) { - $stylestr .= $styleel["style"] . "\n"; - } - - $scriptstr = ""; - usort($this->script, "sortScriptArray"); - if (is_array($this->script) && count($this->script) > 0) - foreach($this->script as $scriptel) { - - $scriptstr .= $scriptel["script"] . "\n"; - } - - $this->html = str_replace("%TITLE%", $this->title, $this->html); - $this->html = str_replace("%META%", $metastr, $this->html); - $this->html = str_replace("%STYLE%", $stylestr, $this->html); - $this->html = str_replace("%LINK%", $linkstr, $this->html); - $this->html = str_replace("%SCRIPT%", $scriptstr, $this->html); - //$this->html = str_replace("%LANG%", $language, $this->html); - $this->html = $this->xmlHead . $this->docType . $this->html; - - $this->returnedHTML = true; - - return $this->closehead ? ($this->html . "") : ($this->html); - } - } -} - -/** - * sortScriptArray() - * - * Sorts the script array according of the weight of a particular - * script element. - * @param mixed $a - * @param mixed $b - * @return - **/ -function sortScriptArray($a, $b) { - if ($a["weigth"] == $b["weight"]) { - return 0; - } - - return (intval($a["weight"]) > intval($b["weight"])) ? 1 : -1; -} - -?> diff --git a/config/authng/www/php/system_groupmanager.php b/config/authng/www/php/system_groupmanager.php deleted file mode 100644 index 13259e63..00000000 --- a/config/authng/www/php/system_groupmanager.php +++ /dev/null @@ -1,797 +0,0 @@ -. - All rights reserved. - - Copyright (C) 2005 Paul Taylor . - All rights reserved. - - Copyright (C) 2003-2005 Manuel Kasper . - 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. -*/ - -require("guiconfig.inc"); - -$_SESSION['NO_AJAX'] = true; - -$pgtitle = array(gettext("System"), gettext("Group manager")); -$treeItemID = 0; - -function walkArea($title, - $t, - $area, - $id, - &$counter, - &$script_tag, - $tmpfname, - &$group) { - global $treeItemID; - - foreach($area as $a => $aa) { - if (is_array($aa) && count($aa) > 0) { - $title .= "_{$a}"; - echo "
  • $a
      "; - $treeItemID++; - walkArea($title, - $a, - $aa, - $id, - $counter, - $script_tag, - $tmpfname, - $group); - echo "
    \n"; - } else { - $tmp_string = "{$t}"; - $tmp_string .= ": "; - $tmp_string .= $a; - $trimmed_title = trim($title); - $trimmed_a = trim($a); - $this_id = "{$trimmed_title}_{$trimmed_a}_{$counter}"; - $this_id = str_replace(" ", "", $this_id); - $this_id = str_replace("/", "", $this_id); - $stripped_session = str_replace("/tmp/", "", $tmpfname); - $allowed = false; - if (is_array($group['pages'][0]['page'])) { - foreach($group['pages'][0]['page'] as $page) { - if (stristr($aa, $page)) - $allowed = true; - // echo "$page || $aa"; - } - } - $allowed ? $checked = " checked=\"checked\"" : $checked = ""; - echo "
  •  "; - $idForOnClick = $treeItemID; - $treeItemID++; - echo " "; - $treeItemID++; - echo "{$a}
  • \n"; - $idForScript = $treeItemID; - $treeItemID++; - -//echo "$script_tag
    "; - $script_tag .= "var item = document.getElementById('treeitem_{$idForScript}');\n"; - if ($allowed) { - $script_tag .= "item.style.backgroundImage = \"url('/tree/page-file_play.gif')\";\n"; - } else { - $script_tag .= "item.style.backgroundImage = \"url('/tree/page-file_x.gif')\";\n"; - } - $counter++; - } // end if - } // end foreach -} - -function init_ajax_helper_file($tmpfname) -{ - global $config, $id, $global; - $a_group = &$config['system']['group']; - $id = $_GET['id']; - if (isset($id) && $a_group[$id]) - $group = $a_group[$id]; - else - $group = array(); - $fd = fopen("/tmp/{$tmpfname}", "w"); - if ($group['pages'][0]['page']) - foreach($group['pages'][0]['page'] as $page) { - fwrite($fd, $page . "\n"); - } - fclose($fd); - return; -} - -if ($_GET['toggle'] <> "") { - /* AJAX is calling, lets take care of it */ - if (!file_exists("/tmp/" . $_GET['session'])) { - init_ajax_helper_file($_GET['session']); - } - $fc = file_get_contents("/tmp/" . $_GET['session']); - $file_split = split("\n", $fc); - $found = -1; - for($x = 0; $x < count($file_split); $x++) { - if ($file_split[$x] == $_GET['toggle']) { - $found = $x; - } - } - if ($found == -1) { - $file_split[] = $_GET['toggle']; - $image = "/tree/page-file_play.gif"; - } else { - unset($file_split[$found]); - $image = "/tree/page-file_x.gif"; - } - $fd = fopen("/tmp/{$_GET['session']}", "w"); - if ($file_split) - foreach($file_split as $fs) { - if ($fs) - fwrite($fd, $fs . "\n"); - } - fclose($fd); - echo $_GET['item'] . "_a||" . "{$image}"; - exit; -} - -function convert_array_to_pgtitle($orig) -{ - $newstring = ""; - foreach($orig as $o) { - if ($newstring <> "") - $newstring .= ": "; - $newstring .= $o; - } - return $newstring; -} -// Returns an array of pages with their descriptions -function getAdminPageList() -{ - global $g; - - $tmp = Array(); - - if ($dir = opendir($g['www_path'])) { - while ($file = readdir($dir)) { - // Make sure the file exists and is not a directory - if ($file == "." or $file == ".." or $file[0] == '.') - continue; - // Is this a .inc.php file? pfSense! - if (fnmatch('guiconfig.inc', $file)) - continue; - if (fnmatch('*.inc', $file)) - continue; - if (fnmatch('*.inc.php', $file)) - continue; - if (fnmatch('*.php', $file)) { - // Read the description out of the file - $contents = file_get_contents($file); - $contents_split = split("\n", $contents); - $mlinestr = ""; - foreach($contents_split as $contents) { - $pgtitle = ""; - // Looking for a line like: - // $pgtitle = array(gettext("System"), gettext("Group manager")); // - DO NOT REMOVE. - if ($mlinestr == "" && stristr($contents, "\$pgtitle") == false) - continue; - if ($mlinestr == "" && stristr($contents, "=") == false) - continue; - if (stristr($contents, "<")) - continue; - if (stristr($contents, ">")) - continue; - /* at this point its evalable */ - $contents = trim ($contents); - $lastchar = substr($contents, strlen($contents) - 1, strlen($contents)); - $firstchar = substr($contents, 0, 1); - - /* check whether pgtitle is on one or multible lines */ - if ($firstchar <> "/" && $firstchar <> "#" && $lastchar <> ";") { - /* remember the partitial pgtitle string for the next loop iteration */ - $mlinestr .= $contents; - continue; - } else if ($mlinestr <> "" && $lastchar == ";") { - /* this is the final pgtitle part including the semicolon */ - $mlinestr .= $contents; - } else if ($mlinestr == "" && $lastchar == ";") { - /* this is a single line pgtitle, hence just - * copy its contents into mlinestr - */ - $mlinestr = $contents; - } else if ($firstchar == "/" || $firstchar == "#") { - /* same applies for comment lines */ - $mlinestr = $contents; - } - - eval($mlinestr); - - /* after eval, if not an array, continue */ - if (!is_array($pgtitle)) { - /* reset mlinestr for the next loop iteration */ - $mlinestr = ""; - continue; - } - - $tmp[$file] = convert_array_to_pgtitle($pgtitle); - - /* break out of the for loop, on to next file */ - break; - } - } - } - - /* loop through and read in wizard information */ - if ($dir = opendir("{$g['www_path']}/wizards")) { - while ($file = readdir($dir)) { - // Make sure the file exists and is not directory - if ($file == "." or $file == ".." or $file[0] == '.') - continue; - // Is this a .xml file? pfSense! - if (fnmatch('*.xml', $file)) { - /* parse package and retrieve the package title */ - $pkg = parse_xml_config_pkg("{$g['www_path']}/wizards/{$file}", "pfsensewizard"); - $title = $pkg['title']; - if ($title) - $tmp[$file] = trim($title); - } - } - } - - /* loop through and read in package information */ - if ($dir = opendir("{$g['pkg_path']}")) { - while ($file = readdir($dir)) { - // Make sure the file exists and is not directory - if ($file == "." or $file == ".." or $file[0] == '.') - continue; - // Is this a .xml file? pfSense! - if (fnmatch('*.xml', $file)) { - /* parse package and retrieve the package title */ - $pkg = parse_xml_config_pkg("{$g['pkg_path']}/{$file}", "packagegui"); - $title = $pkg['title']; - if ($title) - $tmp[$file] = trim($title); - } - } - } - - closedir($dir); - // Sets Interfaces:Optional page that didn't read in properly with the above method, - // and pages that don't have descriptions. - $tmp['interfaces_opt.php'] = ("Interfaces: Optional"); - $tmp['graph.php'] = ("Status: Traffic Graph"); - $tmp['graph_cpu.php'] = ("Diagnostics: CPU Utilization"); - $tmp['exec_raw.php'] = ("Hidden: Exec Raw"); - $tmp['uploadconfig.php'] = ("Hidden: Upload Configuration"); - $tmp['index.php'] = ("Status: System"); - $tmp['system_usermanager.php'] = ("System: User Password"); - $tmp['diag_logs_settings.php'] = ("Diagnostics: Logs: Settings"); - $tmp['diag_logs_vpn.php'] = ("Diagnostics: Logs: PPTP VPN"); - $tmp['diag_logs_filter.php'] = ("Diagnostics: Logs: Firewall"); - $tmp['diag_logs_portal.php'] = ("Diagnostics: Logs: Captive Portal"); - $tmp['diag_logs_dhcp.php'] = ("Diagnostics: Logs: DHCP"); - $tmp['diag_logs.php'] = ("Diagnostics: Logs: System"); - - $tmp['ifstats.php'] = ("Hidden: *XMLRPC Interface Stats"); - $tmp['license.php'] = ("System: License"); - $tmp['progress.php'] = ("Hidden: *No longer included"); - $tmp['diag_logs_filter_dynamic.php'] = ("Hidden: *No longer included"); - $tmp['preload.php'] = ("Hidden: *XMLRPC Preloader"); - $tmp['xmlrpc.php'] = ("Hidden: *XMLRPC Library"); - $tmp['pkg.php'] = ("System: *Renderer for XML based package GUIs (Part I)"); - $tmp['pkg_edit.php'] = ("System: *Renderer for XML based package GUIs (Part II)"); - - $tmp['functions.inc.php'] = ("Hidden: Ajax Helper 1"); - $tmp['javascript.inc.php'] = ("Hidden: Ajax Helper 2 "); - $tmp['sajax.class.php'] = ("Hidden: Ajax Helper 3"); - - asort($tmp); - - return $tmp; - } -} -// Get a list of all admin pages & Descriptions -$pages = getAdminPageList(); - -if (!is_array($config['system']['group'])) { - $config['system']['group'] = array(); -} -admin_groups_sort(); -$a_group = &$config['system']['group']; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; - -if ($_GET['act'] == "del") { - if ($a_group[$_GET['id']]) { - $ok_to_delete = true; - if (isset($config['system']['user'])) { - foreach ($config['system']['user'] as $userent) { - if ($userent['groupname'] == $a_group[$_GET['id']]['name']) { - $ok_to_delete = false; - $input_errors[] = gettext("users still exist who are members of this group!"); - break; - } - } - } - if ($ok_to_delete) { - unset($a_group[$_GET['id']]); - write_config(); - pfSenseHeader("system_groupmanager.php"); - exit; - } - } -} - -if ($_POST) { - unset($input_errors); - $pconfig = $_POST; - /* input validation */ - $reqdfields = explode(" ", "groupname"); - $reqdfieldsn = explode(",", "Group Name"); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if (preg_match("/[^a-zA-Z0-9\.\-_ ]/", $_POST['groupname'])) - $input_errors[] = gettext("The group name contains invalid characters."); - - if (!$input_errors && !(isset($id) && $a_group[$id])) { - /* make sure there are no dupes */ - foreach ($a_group as $group) { - if ($group['name'] == $_POST['groupname']) { - $input_errors[] = gettext("Another entry with the same group name already exists."); - break; - } - } - } - - if (!$input_errors) { - if (isset($id) && $a_group[$id]) - $group = $a_group[$id]; - - $group['name'] = $_POST['groupname']; - isset($_POST['homepage']) ? $group['home'] = $_POST['homepage'] : $group['home'] = "index.php"; - isset($_POST['gtype']) ? $group['scope'] = $_POST['gtype'] : $group['scope'] = "system"; - $group['description'] = $_POST['description']; - unset($group['pages'][0]['page']); - - $file_split = split("\n", file_get_contents("/tmp/" . $_POST['session'])); - for($x = 0; $x < count($file_split); $x++) { - if ($file_split[$x]) - $group['pages'][0]['page'][] = $file_split[$x]; - } - - if (isset($id) && $a_group[$id]) - $a_group[$id] = $group; - else - $a_group[] = $group; - - write_config(); - - unlink_if_exists("/tmp/" . $_GET['session']); - - pfSenseHeader("system_groupmanager.php"); - exit; - } -} - -include("head.inc"); - -$checkallstr = <<= 0) { - document.iform.elements[i].checked = true; - document.iform.elements[i].click(); - } - } - } - -EOD; - -$pfSenseHead->addScript("\n"); -$pfSenseHead->addLink(""); -echo $pfSenseHead->getHTML(); - -?> -"> - - - - - - - - - - -
    - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - -
    - - - -
    - -
    - -
    - -
    - - $title) { - $identifier = str_replace('.php', '', $fname); - $identifier = $fname; - $title_split = split(": ", $title); - $tmp = "\$menu_array"; - foreach($title_split as $ts) - $tmp .= "['{$ts}']"; - $tmp .= " = \"{$identifier}\";"; - echo "\n"; - eval($tmp); - } - - echo "" . gettext("webConfigurator") . "
      \n"; - $counter = 0; - /* XXX: we may wanna pull from or add to each row a +e item (+edit) */ - $script_tag = ""; - - if (is_array($menu_array) && count($menu_array) > 0) { - foreach($menu_array as $title => $m) { - echo "
    • $title
        "; - $treeItemID++; - if (is_array($m) && count($m) > 0) { - foreach($m as $t => $area) { - if (is_array($area) && count($area) > 0) { - echo "
      • $t
          "; - $treeItemID++; - walkArea("{$title}_{$t}", - $t, - $area, - $id, - $counter, - $script_tag, - $tmpfname, - $group); - echo "
        \n"; - } else { - $trimmed_title = trim($title); - $trimmed_t = trim($t); - $this_id = "{$trimmed_title}_{$trimmed_t}_{$counter}"; - $this_id = str_replace(" ", "", $this_id); - $this_id = str_replace("/", "", $this_id); - $allowed = false; - if (is_array($group['pages'][0]['page'])) { - foreach($group['pages'][0]['page'] as $page) { - if (stristr($area, $page)) - $allowed = true; - // echo "$page || $area || $t"; - } - } - $allowed ? $checked = " checked=\"checked\"" : $checked = ""; - $stripped_session = str_replace("/tmp/", "", $tmpfname); - echo"
      •  "; - $idForOnClick = $treeItemID; - $treeItemID++; - echo "  "; - echo " {$t}
      • \n"; - $treeItemID++; - $script_tag .= "var item = document.getElementById('treeitem_{$idForScript}');\n"; - if ($allowed) { - $script_tag .= "item.style.backgroundImage = \"url('/tree/page-file_play.gif')\";\n"; - } else { - $script_tag .= "item.style.backgroundImage = \"url('/tree/page-file_x.gif')\";\n"; - } - $counter++; - } - } - } - echo "
      \n"; - } - } - echo "
    \n"; - -?> -
    - - - - - - - - - - - - - -
    -
    - -
    - " /> - - - -

    - - - : - - - -

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    - - Group - - Group - -   - - -
    -
    - - - - - - - - - - - - " width="17" height="17" border="0" alt="" /> - - ')"> - " width="17" height="17" border="0" alt="" /> - -
    - - " width="17" height="17" border="0" alt="" /> - -
    -

    - -

    -

    - -

    -
    -
    - - - - - - diff --git a/config/authng/www/php/system_usermanager.php b/config/authng/www/php/system_usermanager.php deleted file mode 100644 index 0a13be95..00000000 --- a/config/authng/www/php/system_usermanager.php +++ /dev/null @@ -1,84 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -require("guiconfig.inc"); -// The page title for non-admins -$pgtitle = getUsermanagerPagetitle(); - -include("head.inc"); - -$effectStyle = ' - -'; -foreach(getWindowJSScriptRefs() as $jscript){ - $pfSenseHead->addScript($jscript); -} -foreach(getWindowJSStyleRefs() as $style){ - $pfSenseHead->addStyle($style); -} -$pfSenseHead->addStyle($effectStyle); -echo $pfSenseHead->getHTML(); -?> - - -

    -
    - - -isSystemAdmin($HTTP_SERVER_VARS['AUTH_USER'])) { - processUserManagerAdminPostVars(); - require_once("system_usermanager_admin.inc"); - } else { - processUserManagerPostVars(); - require_once("system_usermanager_user.inc"); - } - } -?> -
    -
     
    - - - - diff --git a/config/authng/www/php/system_usermanager_admin.inc b/config/authng/www/php/system_usermanager_admin.inc deleted file mode 100644 index 73cda74f..00000000 --- a/config/authng/www/php/system_usermanager_admin.inc +++ /dev/null @@ -1,92 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ -/* ======================= P A G E F R A G M E N T ======================== */ -/* ========================================================================== */ -?> - - - - - - - -
    - -
    -
    - - - - -
    - - - -
    -
    -
    diff --git a/config/authng/www/php/system_usermanager_admin_index.inc b/config/authng/www/php/system_usermanager_admin_index.inc deleted file mode 100644 index 807c7e53..00000000 --- a/config/authng/www/php/system_usermanager_admin_index.inc +++ /dev/null @@ -1,108 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ -/* ======================= P A G E F R A G M E N T ======================== */ -/* ========================================================================== */ -?> - - - - - - - - - - - - - - - - - - - - - - -
    UsernameFull nameGroup
    - - - - - -
    - - User - - User - -   - - -
    -
      -   - - - edit user - - -   - ')"> - delete user - - -
    - - add user - -
    -

    - -

    -

    - -

    -
    \ No newline at end of file diff --git a/config/authng/www/php/system_usermanager_admin_newedit.inc b/config/authng/www/php/system_usermanager_admin_newedit.inc deleted file mode 100644 index d5b7126d..00000000 --- a/config/authng/www/php/system_usermanager_admin_newedit.inc +++ /dev/null @@ -1,167 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ -/* ======================= P A G E F R A G M E N T ======================== */ -/* ========================================================================== */ -?> - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - /> - -
    - -
    -   -
    - /> -
    - -
    - -
    - -
    - - - - - - - - - - - ""): ?> - - - - - - - - - - - - - - - - -
    > - - > - - > -   - - - - - - - -
    ')">
    - -
    - - - - -
    -
    -
    - -
    - -
    - -
    - -
      - - - - -
    diff --git a/config/authng/www/php/system_usermanager_edit.php b/config/authng/www/php/system_usermanager_edit.php deleted file mode 100644 index 25dc2ac3..00000000 --- a/config/authng/www/php/system_usermanager_edit.php +++ /dev/null @@ -1,294 +0,0 @@ - - fooid - foo - foo desc - - - barid - bar - bar desc - -*/ - -$useract = $_GET['useract']; -if (isset($_POST['useract'])) - $useract = $_POST['useract']; - -/* USERID must be set no matter whether this is a new entry or an existing entry */ -$userid = $_GET['userid']; -if (isset($_POST['userid'])) - $userid = $_POST['userid']; - -/* ID is only set if the user wants to edit an existing entry */ -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; - -if (empty($config['system']['user'][$userid])) { - pfSenseHeader("system_usermanager.php?id={$userid}&act={$_GET['useract']}"); - exit; -} - -if (!is_array($config['system']['user'][$userid]['priv'])) { - $config['system']['user'][$userid]['priv'] = array(); -} - -$t_privs = &$config['system']['user'][$userid]['priv']; - -if (isset($id) && $t_privs[$id]) { - $pconfig['pid'] = $t_privs[$id]['id']; - $pconfig['pname'] = $t_privs[$id]['name']; - $pconfig['descr'] = $t_privs[$id]['descr']; -} else { - $pconfig['pid'] = $_GET['pid']; - $pconfig['pname'] = $_GET['pname']; - $pconfig['descr'] = $_GET['descr']; -} - -if ($_POST) { - - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - $reqdfields = explode(" ", "pid pname"); - $reqdfieldsn = explode(",", "ID, Privilege Name"); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - /* check for overlaps */ - foreach ($t_privs as $priv) { - if (isset($id) && ($t_privs[$id]) && ($t_privs[$id] === $priv)) { - continue; - } - if ($priv['id'] == $pconfig['pid']) { - $input_errors[] = gettext("This privilege ID already exists."); - break; - } - } - - if (hasShellAccess($userindex[$userid]['name']) || - isAllowedToCopyFiles($userindex[$userid]['name'])) { - if (preg_match("/[^a-zA-Z0-9\.\-_]/", $userindex[$userid]['name'])) - $input_errors[] = gettext("The username contains invalid characters " . - "((this means this user can't be used to create" . - " a shell account)."); - } - - /* if this is an AJAX caller then handle via JSON */ - if(isAjax() && is_array($input_errors)) { - input_errors2Ajax($input_errors); - exit; - } - - if (!$input_errors) { - $priv = array(); - $priv['id'] = $pconfig['pid']; - $priv['name'] = $pconfig['pname']; - $priv['descr'] = $pconfig['descr']; - - if (isset($id) && $t_privs[$id]) - $t_privs[$id] = $priv; - else - $t_privs[] = $priv; - - if ($priv['id'] == "hasshell") { - assignUID($user['name']); - assignGID($user['groupname']); - } - - write_config(); - - $retval = 0; - config_lock(); - config_unlock(); - - $savemsg = get_std_save_message($retval); - - pfSenseHeader("system_usermanager.php?id={$userid}&act={$useract}"); - exit; - } -} - -/* if ajax is calling, give them an update message */ -if(isAjax()) - print_info_box_np($savemsg); - -include("head.inc"); -/* put your custom HTML head content here */ -/* using some of the $pfSenseHead function calls */ - -$jscriptstr = << - - - -EOD; - -$pfSenseHead->addScript($jscriptstr); -echo $pfSenseHead->getHTML(); - -?> - -"> - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    -
    - (If you do not want to define your own privilege, you may - select one from this list) -
    - -
    - -
    - -
      - " /> - " onclick="history.back()" /> - - - - - - - - - -
    -
    - - - diff --git a/config/authng/www/php/system_usermanager_settings.php b/config/authng/www/php/system_usermanager_settings.php deleted file mode 100755 index 5853fab4..00000000 --- a/config/authng/www/php/system_usermanager_settings.php +++ /dev/null @@ -1,110 +0,0 @@ - - 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. -*/ -require("guiconfig.inc"); - -$pconfig['session_timeout'] = &$config['system']['webgui']['session_timeout']; - -// Page title for main admin -$pgtitle = array(gettext("System"), gettext("User manager settings")); - -if ($_POST) { - unset($input_errors); - - /* input validation */ - $reqdfields = explode(" ", "session_timeout"); - $reqdfieldsn = explode(",", "Session Timeout"); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if ($_POST['session_timeout'] != "" && !is_numeric($_POST['session_timeout'])) - $input_errors[] = gettext("Session timeout must be an integer with value 0 or greater."); - - /* if this is an AJAX caller then handle via JSON */ - if (isAjax() && is_array($input_errors)) { - input_errors2Ajax($input_errors); - exit; - } - - - if (!$input_errors) { - $pconfig['session_timeout'] = $_POST['session_timeout']; - - write_config(); - pfSenseHeader("system_usermanager_settings.php"); - } -} - -include("head.inc"); -echo $pfSenseHead->getHTML(); -?> - -"> - - - - - - - - - -
    - -
    -
    -
    - - - - - - - - - - -
    Session Timeout -
    -
    -
      " /> -
    -
    -
    -
    - - - - diff --git a/config/authng/www/php/system_usermanager_user.inc b/config/authng/www/php/system_usermanager_user.inc deleted file mode 100644 index 25d2e210..00000000 --- a/config/authng/www/php/system_usermanager_user.inc +++ /dev/null @@ -1,66 +0,0 @@ - - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ -/* ======================= P A G E F R A G M E N T ======================== */ -/* ========================================================================== */ -?> -
    - - - - - - - - - - - - - - - -
    's Password
    Password - -
    - -   -
    - -
      - " /> -
    diff --git a/config/authng/www/wizards/authng_wizard.xml b/config/authng/www/wizards/authng_wizard.xml deleted file mode 100644 index 94796e2f..00000000 --- a/config/authng/www/wizards/authng_wizard.xml +++ /dev/null @@ -1,496 +0,0 @@ - - - -/* $Id$ */ -/* ========================================================================== */ -/* - authng_wizard.xml - part of pfSense (http://www.pfSense.com) - Copyright (C) 2007 Daniel S. Haischt - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - 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. - */ -/* ========================================================================== */ - -8 - - 1 - pfSense AuthNG Wizard - true - - This wizard will guide you through the initial configuration of - the pfSense authentication system. - - - - Next - submit - - - - - 2 - pfSense Backend settings - - On this screen you will define where to define pfSense users and groups - - - - PrincipalStore - select - true - installedpackages->authng->config->principal_store - - - - - - - - Backend - select - true - installedpackages->authng->config->backend - - - - - - - - - - AuthenticationMethod - select - true - installedpackages->authng->config->auth_method - - - - - - - - 3 - Time Server Information - Please enter the time, date and time zone. - - - Time server dns name - Enter the name of the time server. - input - system->timeservers - - - Timezone - timezone_select - system->timezone - - - Next - submit - - - - - 4 - true - Configure WAN Interface - On this screen we will configure the Wide Area Network information. - - var selectedItem = 0; - if(document.forms[0].ipaddress.value == 'dhcp') { - selectedItem = 1; - document.forms[0].ipaddress.value = ''; - } else if(document.forms[0].ipaddress.value == 'PPPoE') { - selectedItem = 2; - document.forms[0].ipaddress.value = ''; - } else if(document.forms[0].ipaddress.value == 'PPTP') { - selectedItem = 3; - document.forms[0].ipaddress.value = ''; - } else if(document.forms[0].ipaddress.value == 'BigPond') { - selectedItem = 4; - document.forms[0].ipaddress.value = ''; - } else { - selectedItem = 0; - } - document.forms[0].selectedtype.selectedIndex = selectedItem; - enableitems(selectedItem); - - - - SelectedType - select - true - - - - - - - - - - General configuration - listtopic - - - true - MAC Address - interfaces->wan->spoofmac - input - This field can be used to modify ("spoof") the MAC address of the WAN interface (may be required with some cable connections) Enter a MAC address in the following format: xx:xx:xx:xx:xx:xx or leave blank - - - true - MTU - input - interfaces->wan->mtu - If you enter a value in this field, then MSS clamping for TCP connections to the value entered above minus 40 (TCP/IP header size) will be in effect. If you leave this field blank, an MTU of 1492 bytes for PPPoE and 1500 bytes for all other connection types will be assumed. - - - Static IP Configuration - listtopic - - - IP Address - interfaces->wan->ipaddr - input - / - true - - - true - true - true - Subnet Mask - interfaces->wan->subnet - subnet_select - - - Gateway - interfaces->wan->gateway - input - - - DHCP client configuration - listtopic - - - DHCP Hostname - input - interfaces->wan->dhcphostname - The value in this field is sent as the DHCP client identifier and hostname when requesting a DHCP lease. Some ISPs may require this (for client identification). - - - PPPoE configuration - listtopic - - - PPPoE Username - input - pppoe->username - - - PPPoE Password - input - pppoe->password - - - PPPoE Service name - input - Hint: this field can usually be left empty - - - PPPoE Dial on demand - Enable Dial-On-Demand mode - checkbox - This option causes the interface to operate in dial-on-demand mode, allowing you to have a virtual full time connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected. - - - PPPoE Idle timeout - input - If no qualifying outgoing packets are transmitted for the specified number of seconds, the connection is brought down. An idle timeout of zero disables this feature. - - - PPTP configuration - listtopic - - - PPTP Username - input - pptp->username - - - PPTP Password - input - pptp->password - - - true - PPTP Local IP Address - input - / - pptp->local - - - true - true - true - pptplocalsubnet - pptp->subnet - subnet_select - - - PPTP Remote IP Address - pptp->remote - input - - - PPTP Dial on demand - Enable Dial-On-Demand mode - checkbox - This option causes the interface to operate in dial-on-demand mode, allowing you to have a virtual full time connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected. - - - PPTP Idle timeout - input - If no qualifying outgoing packets are transmitted for the specified number of seconds, the connection is brought down. An idle timeout of zero disables this feature. - - - BigPond configuration - listtopic - - - BigPond Username - input - bigpond->username - - - BigPond Password - input - bigpond->password - - - BigPond Authentication server - input - bigpond->authserver - If this field is left empty, the default ("dce-server") is used. - - - BigPond Authentication domain - input - bigpond->authdomain - If this field is left empty, the domain name assigned via DHCP will be used. Note: the BigPond client implicitly sets the "Allow DNS server list to be overridden by DHCP/PPP on WAN" on the System: General setup page. - - - BigPond min heartbeat interval - input - seconds - bigpond->minheartbeatinterval - Setting this to a sensible value (e.g. 60 seconds) can protect against DoS attacks. - - - RFC1918 Networks - listtopic - - - true - Block RFC1918 Private Networks - When set, this option blocks traffic from IP addresses that are reserved for private networks as per RFC 1918 (10/8, 172.16/12, 192.168/16) as well as loopback addresses (127/8). You should generally leave this option turned on, unless your WAN network lies in such a private address space, too. - checkbox - interfaces->wan->blockpriv - Block private networks from entering via WAN - - - Block bogon networks - listtopic - - - true - Block bogon networks - Block bogon networks when set, this option blocks traffic from IP addresses that are reserved (but not RFC 1918) or not yet assigned by IANA. Bogons are prefixes that should never appear in the Internet routing table, and obviously should not appear as the source address in any packets you receive. - checkbox - interfaces->wan->blockbogons - Block non-Internet routed networks from entering via WAN - - - Next - submit - - - - if($_POST['selectedtype'] == "Static") { } else { - $_POST['ipaddress'] = $_POST['selectedtype']; - $config['interfaces']['wan']['ipaddr'] = $_POST['selectedtype']; - write_config(); - } - - - - 5 - Configure LAN Interface - On this screen we will configure the Local Area Network information. - - - LAN IP Address - input - interfaces->lan->ipaddr - Type dhcp if this interface uses dhcp to obtain its ip address. - - - Subnet Mask - subnet_select - interfaces->lan->subnet - - - Next - submit - - - - $ft = split("\.", $_POST['lanipaddress']); - $ft_ip = $ft[0] . "." . $ft[1] . "." . $ft[2] . "."; - $config['dhcpd']['lan']['range']['from'] = $ft_ip . "10"; - $highestip = gen_subnet_max($_POST['lanipaddress'], $config['interfaces']['lan']['subnet']); - $hi = split("\.", $highestip); - $highestip = $hi[3]-10; - $config['dhcpd']['lan']['range']['to'] = $ft_ip . $highestip; - - - - 6 - Set Admin WebGUI Password - On this screen we will set the Admin password which is used to access the WebGUI and also SSH services if you wish to enable. - - - Admin Password - password - - - Admin Password AGAIN - password - - - Next - submit - - - - if($_POST['adminpassword'] != "") { - if($_POST['adminpassword'] == $_POST['adminpasswordagain']) { - $fd = popen("/usr/sbin/pw usermod -n root -H 0", "w"); - $salt = md5(time()); - $crypted_pw = crypt($_POST['adminpassword'],$salt); - fwrite($fd, $crypted_pw); - pclose($fd); - $config['system']['password'] = crypt($_POST['adminpassword']); - write_config(); - system_password_configure(); - } else { - print_info_box_np("Passwords do not match! Please press back in your browser window and correct."); - die; - } - } - - - - 7 - Reload configuration - true - Click 'Reload' to reload pfSense with new changes. If you changed the password, pfSense will ask you to log in again. - - - Reload - submit - - - - - 8 - Reload in progress - A reload is now in progress. Please wait. <p> The system will automatically try to access $myurl in 120 seconds. <p> You can click on the icon above to access the site more quickly. - <meta http-equiv="refresh" content="60; url=$myurl" > - - reload_all(); - - - -- cgit v1.2.3 From 48a6f785e551967611ca49f40c05d1a567dd628e Mon Sep 17 00:00:00 2001 From: jim-p Date: Tue, 18 Feb 2014 16:09:29 -0500 Subject: Use escapeshellarg for tinc here. --- config/tinc/tinc.inc | 2 +- config/tinc/tinc.xml | 2 +- pkg_config.10.xml | 2 +- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/tinc/tinc.inc b/config/tinc/tinc.inc index 3280c414..bf4101d7 100644 --- a/config/tinc/tinc.inc +++ b/config/tinc/tinc.inc @@ -170,7 +170,7 @@ function tinc_deinstall() { { $realif = get_real_interface($ifs); if ($realif) - mwexec("/sbin/ifconfig {$realif} -group " . $a_ifgroups[$_GET['id']]['ifname']); + mwexec("/sbin/ifconfig {$realif} -group " . escapeshellarg($a_ifgroups[$_GET['id']]['ifname'])); } unset($a_ifgroups[$myid]); mwexec("/bin/rm -f /tmp/config.cache"); diff --git a/config/tinc/tinc.xml b/config/tinc/tinc.xml index 90581513..7c067361 100644 --- a/config/tinc/tinc.xml +++ b/config/tinc/tinc.xml @@ -42,7 +42,7 @@ Describe your package requirements here Currently there are no FAQ items provided. tinc - 1.0.19 + 1.0.21 v1.1 VPN: tinc diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 0dfa04c7..ac2ea8cd 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -1443,7 +1443,7 @@ security/tinc - 1.0.21 + 1.0.22 v1.1 ALPHA http://doc.pfsense.org/index.php/tinc_package 2.2 diff --git a/pkg_config.8.xml b/pkg_config.8.xml index ec847a46..32e6370a 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -1870,7 +1870,7 @@ security/tinc - 1.0.21 + 1.0.21 v1.1 ALPHA http://doc.pfsense.org/index.php/tinc_package 2.1 diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 4b987054..52873dd1 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -1857,7 +1857,7 @@ security/tinc - 1.0.21 + 1.0.21 v1.1 ALPHA http://doc.pfsense.org/index.php/tinc_package 2.1 -- cgit v1.2.3 From a973e73b6fe151a342d5c998ed02c3fce482d006 Mon Sep 17 00:00:00 2001 From: jim-p Date: Tue, 18 Feb 2014 16:15:54 -0500 Subject: Use escapeshellarg for spamd; remove unused echo. --- config/spamd/spamd.xml | 2 +- config/spamd/spamd_db.php | 2 +- config/spamd/spamd_db_ext.php | 2 -- pkg_config.10.xml | 2 +- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 6 files changed, 5 insertions(+), 7 deletions(-) diff --git a/config/spamd/spamd.xml b/config/spamd/spamd.xml index 76d39af9..1a7b4272 100644 --- a/config/spamd/spamd.xml +++ b/config/spamd/spamd.xml @@ -42,7 +42,7 @@ Describe your package requirements here Currently there are no FAQ items provided. spamdsources - 4.2 + 4.9.1 v1.1 SpamD: External Sources /usr/local/pkg/spamd.inc /var/db/spamd diff --git a/config/spamd/spamd_db.php b/config/spamd/spamd_db.php index 112fdd71..c4c8ffe2 100644 --- a/config/spamd/spamd_db.php +++ b/config/spamd/spamd_db.php @@ -103,7 +103,7 @@ if($_POST['spamtrapemail'] <> "") { } if($_GET['getstatus'] <> "") { - $status = exec("/usr/local/sbin/spamdb | grep \"{$_GET['getstatus']}\""); + $status = exec("/usr/local/sbin/spamdb | grep " . escapeshellarg($_GET['getstatus'])); if(stristr($status, "WHITE") == true) { echo "WHITE"; } else if(stristr($status, "TRAPPED") == true) { diff --git a/config/spamd/spamd_db_ext.php b/config/spamd/spamd_db_ext.php index e029f676..61a90141 100644 --- a/config/spamd/spamd_db_ext.php +++ b/config/spamd/spamd_db_ext.php @@ -54,8 +54,6 @@ foreach($config['installedpackages']['spamdoutlook']['config'] as $outlook) { } } -exec("echo {$_GET['action']} > /tmp/tmp"); - /* handle AJAX operations */ if($_GET['action'] or $_POST['action']) { if($_GET['action']) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index ac2ea8cd..3b33da5c 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -411,7 +411,7 @@ Services http://www.pfsense.com/packages/config/spamd/spamd.xml spamd-4.9.1_1-##ARCH##.pbi - 4.9.1 + 4.9.1_1 v1.1 Beta 2.2 spamd.xml diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 32e6370a..b8d88a3f 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -567,7 +567,7 @@ http://files.pfsense.org/packages/8/All/ spamd-4.9.1.tbz spamd-4.9.1-i386.pbi - 4.9.1 + 4.9.1 v1.1 Beta 1.2.1 spamd.xml diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 52873dd1..df29e677 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -554,7 +554,7 @@ http://files.pfsense.org/packages/amd64/8/All/ spamd-4.9.1.tbz spamd-4.9.1-amd64.pbi - 4.8.0 + 4.9.1 v1.1 Beta 1.2.1 spamd.xml -- cgit v1.2.3 From 0e76f85bf6184d6d18830dba474fcd15fc075a03 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 18 Feb 2014 19:15:45 -0500 Subject: Improve the Snort rules download update process. --- config/snort/snort_check_for_rule_updates.php | 355 ++++++++++++-------------- 1 file changed, 170 insertions(+), 185 deletions(-) diff --git a/config/snort/snort_check_for_rule_updates.php b/config/snort/snort_check_for_rule_updates.php index 9a69db1c..0aa397e4 100755 --- a/config/snort/snort_check_for_rule_updates.php +++ b/config/snort/snort_check_for_rule_updates.php @@ -78,15 +78,14 @@ else /* define checks */ $oinkid = $config['installedpackages']['snortglobal']['oinkmastercode']; $etproid = $config['installedpackages']['snortglobal']['etpro_code']; -$snortdownload = $config['installedpackages']['snortglobal']['snortdownload']; -$emergingthreats = $config['installedpackages']['snortglobal']['emergingthreats']; -$etpro = $config['installedpackages']['snortglobal']['emergingthreats_pro']; -$snortcommunityrules = $config['installedpackages']['snortglobal']['snortcommunityrules']; -$vrt_enabled = $config['installedpackages']['snortglobal']['snortdownload']; -$et_enabled = $config['installedpackages']['snortglobal']['emergingthreats']; +$snortdownload = $config['installedpackages']['snortglobal']['snortdownload'] == 'on' ? 'on' : 'off'; +$emergingthreats = $config['installedpackages']['snortglobal']['emergingthreats'] == 'on' ? 'on' : 'off'; +$etpro = $config['installedpackages']['snortglobal']['emergingthreats_pro'] == 'on' ? 'on' : 'off'; +$snortcommunityrules = $config['installedpackages']['snortglobal']['snortcommunityrules'] == 'on' ? 'on' : 'off'; +$vrt_enabled = $config['installedpackages']['snortglobal']['snortdownload'] == 'on' ? 'on' : 'off'; -/* Working directory for downloaded rules tarballs */ -$tmpfname = "{$snortdir}/tmp/snort_rules_up"; +/* Working directory for downloaded rules tarballs and extraction */ +$tmpfname = "/tmp/snort_rules_up"; /* Grab the Snort binary version programmatically and use it to construct */ /* the proper Snort VRT rules tarball and md5 filenames. Fallback to a */ @@ -114,7 +113,6 @@ if ($etpro == "on") { $emergingthreats_url = ETPRO_BASE_DNLD_URL; $emergingthreats_url .= "{$etproid}/snort-" . ET_VERSION . "/"; $emergingthreats = "on"; - $et_enabled= "on"; $et_name = "Emerging Threats Pro"; $et_md5_remove = ET_DNLD_FILENAME . ".md5"; @unlink("{$snortdir}/{$et_md5_remove}"); @@ -371,7 +369,7 @@ function snort_fetch_new_rules($file_url, $file_dst, $file_md5, $desc = "") { /* Start of main code */ /**********************/ -/* remove old $tmpfname files */ +/* remove any old $tmpfname files */ if (is_dir("{$tmpfname}")) exec("/bin/rm -r {$tmpfname}"); @@ -429,26 +427,123 @@ if ($emergingthreats == 'on') { $emergingthreats = 'off'; } -/* Untar Snort GPLv2 Community rules file to tmp */ +/* Untar Snort rules file to tmp and install the rules */ +if ($snortdownload == 'on') { + if (file_exists("{$tmpfname}/{$snort_filename}")) { + /* Currently, only FreeBSD-8-1 and FreeBSD-9-0 precompiled SO rules exist from Snort.org */ + /* Default to FreeBSD 8.1, and then test for FreeBSD 9.x */ + $freebsd_version_so = 'FreeBSD-8-1'; + if (substr(php_uname("r"), 0, 1) == '9') + $freebsd_version_so = 'FreeBSD-9-0'; + + /* Remove the old Snort rules files */ + $vrt_prefix = VRT_FILE_PREFIX; + array_map('unlink', glob("{$snortdir}/rules/{$vrt_prefix}*.rules")); + + if ($pkg_interface <> "console") { + update_status(gettext("Extracting Snort VRT rules...")); + update_output_window(gettext("Installing Sourcefire VRT rules...")); + } + error_log(gettext("\tExtracting and installing Snort VRT rules...\n"), 3, $snort_rules_upd_log); + /* extract snort.org rules and add VRT_FILE_PREFIX prefix to all snort.org files */ + safe_mkdir("{$tmpfname}/snortrules"); + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname}/snortrules rules/"); + $files = glob("{$tmpfname}/snortrules/rules/*.rules"); + foreach ($files as $file) { + $newfile = basename($file); + @copy($file, "{$snortdir}/rules/" . VRT_FILE_PREFIX . "{$newfile}"); + } + /* Extract any IP lists */ + $files = glob("{$tmpfname}/snortrules/rules/*.txt"); + foreach ($files as $file) { + $newfile = basename($file); + @copy($file, "{$snortdir}/rules/{$newfile}"); + } + exec("rm -r {$tmpfname}/snortrules"); + /* Extract the Snort preprocessor rules */ + if ($pkg_interface <> "console") + update_output_window(gettext("Extracting preprocessor rules files...")); + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname} preproc_rules/"); + $files = glob("{$tmpfname}/preproc_rules/*.rules"); + foreach ($files as $file) { + $newfile = basename($file); + @copy($file, "{$snortdir}/preproc_rules/{$newfile}"); + } + exec("rm -r {$tmpfname}/preproc_rules"); + /* extract so rules */ + if ($pkg_interface <> "console") { + update_status(gettext("Extracting Snort VRT Shared Objects rules...")); + update_output_window(gettext("Installing precompiled Shared Objects rules for {$freebsd_version_so}...")); + } + exec("/bin/mkdir -p {$snortlibdir}/dynamicrules/"); + error_log(gettext("\tUsing Snort VRT precompiled SO rules for {$freebsd_version_so} ...\n"), 3, $snort_rules_upd_log); + $snort_arch = php_uname("m"); + $nosorules = false; + if ($snort_arch == 'i386'){ + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname} so_rules/precompiled/{$freebsd_version_so}/i386/{$snort_version}/"); + exec("/bin/cp {$tmpfname}/so_rules/precompiled/{$freebsd_version_so}/i386/{$snort_version}/*.so {$snortlibdir}/dynamicrules/"); + } elseif ($snort_arch == 'amd64') { + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname} so_rules/precompiled/{$freebsd_version_so}/x86-64/{$snort_version}/"); + exec("/bin/cp {$tmpfname}/so_rules/precompiled/{$freebsd_version_so}/x86-64/{$snort_version}/*.so {$snortlibdir}/dynamicrules/"); + } else + $nosorules = true; + exec("rm -r {$tmpfname}/so_rules"); + if ($nosorules == false) { + /* extract Shared Object stub rules, rename and copy to the rules folder. */ + if ($pkg_interface <> "console") + update_status(gettext("Copying Snort VRT Shared Objects rules...")); + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname} --exclude precompiled/ --exclude src/ so_rules/"); + $files = glob("{$tmpfname}/so_rules/*.rules"); + foreach ($files as $file) { + $newfile = basename($file, ".rules"); + @copy($file, "{$snortdir}/rules/" . VRT_FILE_PREFIX . "{$newfile}.so.rules"); + } + exec("rm -r {$tmpfname}/so_rules"); + } + /* extract base etc files */ + if ($pkg_interface <> "console") { + update_status(gettext("Extracting Snort VRT config and map files...")); + update_output_window(gettext("Copying config and map files...")); + } + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname} etc/"); + foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { + if (file_exists("{$tmpfname}/etc/{$file}")) + @copy("{$tmpfname}/etc/{$file}", "{$tmpfname}/VRT_{$file}"); + } + exec("rm -r {$tmpfname}/etc"); + if (file_exists("{$tmpfname}/{$snort_filename_md5}")) { + if ($pkg_interface <> "console") + update_status(gettext("Copying md5 signature to snort directory...")); + @copy("{$tmpfname}/{$snort_filename_md5}", "{$snortdir}/{$snort_filename_md5}"); + } + if ($pkg_interface <> "console") { + update_status(gettext("Extraction of Snort VRT rules completed...")); + update_output_window(gettext("Installation of Sourcefire VRT rules completed...")); + } + error_log(gettext("\tInstallation of Snort VRT rules completed.\n"), 3, $snort_rules_upd_log); + } +} + +/* Untar Snort GPLv2 Community rules file to tmp and install the rules */ if ($snortcommunityrules == 'on') { - safe_mkdir("{$snortdir}/tmp/community"); + safe_mkdir("{$tmpfname}/community"); if (file_exists("{$tmpfname}/{$snort_community_rules_filename}")) { if ($pkg_interface <> "console") { update_status(gettext("Extracting Snort GPLv2 Community Rules...")); update_output_window(gettext("Installing Snort GPLv2 Community Rules...")); } error_log(gettext("\tExtracting and installing Snort GPLv2 Community Rules...\n"), 3, $snort_rules_upd_log); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_community_rules_filename} -C {$snortdir}/tmp/community/"); + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_community_rules_filename} -C {$tmpfname}/community/"); - $files = glob("{$snortdir}/tmp/community/community-rules/*.rules"); + $files = glob("{$tmpfname}/community/community-rules/*.rules"); foreach ($files as $file) { $newfile = basename($file); @copy($file, "{$snortdir}/rules/" . GPL_FILE_PREFIX . "{$newfile}"); } /* base etc files for Snort GPLv2 Community rules */ foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { - if (file_exists("{$snortdir}/tmp/community/community-rules/{$file}")) - @copy("{$snortdir}/tmp/community/community-rules/{$file}", "{$snortdir}/tmp/" . GPL_FILE_PREFIX . "{$file}"); + if (file_exists("{$tmpfname}/community/community-rules/{$file}")) + @copy("{$tmpfname}/community/community-rules/{$file}", "{$tmpfname}/" . GPL_FILE_PREFIX . "{$file}"); } /* Copy snort community md5 sig to snort dir */ if (file_exists("{$tmpfname}/{$snort_community_rules_filename_md5}")) { @@ -461,20 +556,20 @@ if ($snortcommunityrules == 'on') { update_output_window(gettext("Installation of Snort GPLv2 Community Rules file completed...")); } error_log(gettext("\tInstallation of Snort GPLv2 Community Rules completed.\n"), 3, $snort_rules_upd_log); - exec("rm -r {$snortdir}/tmp/community"); + exec("rm -r {$tmpfname}/community"); } } -/* Untar Emerging Threats rules file to tmp */ +/* Untar Emerging Threats rules file to tmp and install the rules */ if ($emergingthreats == 'on') { - safe_mkdir("{$snortdir}/tmp/emerging"); + safe_mkdir("{$tmpfname}/emerging"); if (file_exists("{$tmpfname}/{$emergingthreats_filename}")) { if ($pkg_interface <> "console") { update_status(gettext("Extracting {$et_name} rules...")); update_output_window(gettext("Installing {$et_name} rules...")); } error_log(gettext("\tExtracting and installing {$et_name} rules...\n"), 3, $snort_rules_upd_log); - exec("/usr/bin/tar xzf {$tmpfname}/{$emergingthreats_filename} -C {$snortdir}/tmp/emerging rules/"); + exec("/usr/bin/tar xzf {$tmpfname}/{$emergingthreats_filename} -C {$tmpfname}/emerging rules/"); /* Remove the old Emerging Threats rules files */ $eto_prefix = ET_OPEN_FILE_PREFIX; @@ -484,7 +579,7 @@ if ($emergingthreats == 'on') { array_map('unlink', glob("{$snortdir}/rules/{$eto_prefix}*ips.txt")); array_map('unlink', glob("{$snortdir}/rules/{$etpro_prefix}*ips.txt")); - $files = glob("{$snortdir}/tmp/emerging/rules/*.rules"); + $files = glob("{$tmpfname}/emerging/rules/*.rules"); foreach ($files as $file) { $newfile = basename($file); if ($etpro == "on") @@ -493,7 +588,7 @@ if ($emergingthreats == 'on') { @copy($file, "{$snortdir}/rules/{$newfile}"); } /* IP lists for Emerging Threats rules */ - $files = glob("{$snortdir}/tmp/emerging/rules/*ips.txt"); + $files = glob("{$tmpfname}/emerging/rules/*ips.txt"); foreach ($files as $file) { $newfile = basename($file); if ($etpro == "on") @@ -503,8 +598,8 @@ if ($emergingthreats == 'on') { } /* base etc files for Emerging Threats rules */ foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { - if (file_exists("{$snortdir}/tmp/emerging/rules/{$file}")) - @copy("{$snortdir}/tmp/emerging/rules/{$file}", "{$snortdir}/tmp/ET_{$file}"); + if (file_exists("{$tmpfname}/emerging/rules/{$file}")) + @copy("{$tmpfname}/emerging/rules/{$file}", "{$tmpfname}/ET_{$file}"); } /* Copy emergingthreats md5 sig to snort dir */ @@ -518,116 +613,7 @@ if ($emergingthreats == 'on') { update_output_window(gettext("Installation of {$et_name} rules completed...")); } error_log(gettext("\tInstallation of {$et_name} rules completed.\n"), 3, $snort_rules_upd_log); - exec("rm -r {$snortdir}/tmp/emerging"); - } -} - -/* Untar Snort rules file to tmp */ -if ($snortdownload == 'on') { - if (file_exists("{$tmpfname}/{$snort_filename}")) { - /* Currently, only FreeBSD-8-1 and FreeBSD-9-0 precompiled SO rules exist from Snort.org */ - /* Default to FreeBSD 8.1, and then test for FreeBSD 9.x */ - $freebsd_version_so = 'FreeBSD-8-1'; - if (substr(php_uname("r"), 0, 1) == '9') - $freebsd_version_so = 'FreeBSD-9-0'; - - /* Remove the old Snort rules files */ - $vrt_prefix = VRT_FILE_PREFIX; - array_map('unlink', glob("{$snortdir}/rules/{$vrt_prefix}*.rules")); - - if ($pkg_interface <> "console") { - update_status(gettext("Extracting Snort VRT rules...")); - update_output_window(gettext("Installing Sourcefire VRT rules...")); - } - error_log(gettext("\tExtracting and installing Snort VRT rules...\n"), 3, $snort_rules_upd_log); - /* extract snort.org rules and add prefix to all snort.org files */ - safe_mkdir("{$snortdir}/tmp/snortrules"); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir}/tmp/snortrules rules/"); - $files = glob("{$snortdir}/tmp/snortrules/rules/*.rules"); - foreach ($files as $file) { - $newfile = basename($file); - @copy($file, "{$snortdir}/rules/" . VRT_FILE_PREFIX . "{$newfile}"); - } - /* IP lists */ - $files = glob("{$snortdir}/tmp/snortrules/rules/*.txt"); - foreach ($files as $file) { - $newfile = basename($file); - @copy($file, "{$snortdir}/rules/{$newfile}"); - } - exec("rm -r {$snortdir}/tmp/snortrules"); - /* extract so rules */ - if ($pkg_interface <> "console") { - update_status(gettext("Extracting Snort VRT Shared Objects rules...")); - update_output_window(gettext("Installing precompiled Shared Objects rules for {$freebsd_version_so}...")); - } - exec("/bin/mkdir -p {$snortlibdir}/dynamicrules/"); - error_log(gettext("\tUsing Snort VRT precompiled SO rules for {$freebsd_version_so} ...\n"), 3, $snort_rules_upd_log); - $snort_arch = php_uname("m"); - $nosorules = false; - if ($snort_arch == 'i386'){ - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir}/tmp so_rules/precompiled/{$freebsd_version_so}/i386/{$snort_version}/"); - exec("/bin/cp {$snortdir}/tmp/so_rules/precompiled/{$freebsd_version_so}/i386/{$snort_version}/*.so {$snortlibdir}/dynamicrules/"); - } elseif ($snort_arch == 'amd64') { - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir}/tmp so_rules/precompiled/{$freebsd_version_so}/x86-64/{$snort_version}/"); - exec("/bin/cp {$snortdir}/tmp/so_rules/precompiled/{$freebsd_version_so}/x86-64/{$snort_version}/*.so {$snortlibdir}/dynamicrules/"); - } else - $nosorules = true; - exec("rm -r {$snortdir}/tmp/so_rules"); - if ($nosorules == false) { - /* extract so stub rules, rename and copy to the rules folder. */ - if ($pkg_interface <> "console") - update_status(gettext("Copying Snort VRT Shared Objects rules...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir}/tmp --exclude precompiled/ --exclude src/ so_rules/"); - $files = glob("{$snortdir}/tmp/so_rules/*.rules"); - foreach ($files as $file) { - $newfile = basename($file, ".rules"); - @copy($file, "{$snortdir}/rules/" . VRT_FILE_PREFIX . "{$newfile}.so.rules"); - } - exec("rm -r {$snortdir}/tmp/so_rules"); - } - /* extract base etc files */ - if ($pkg_interface <> "console") { - update_status(gettext("Extracting Snort VRT config and map files...")); - update_output_window(gettext("Copying config and map files...")); - } - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir}/tmp etc/"); - foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { - if (file_exists("{$snortdir}/tmp/etc/{$file}")) - @copy("{$snortdir}/tmp/etc/{$file}", "{$snortdir}/tmp/VRT_{$file}"); - } - exec("rm -r {$snortdir}/tmp/etc"); - /* Untar snort signatures */ - $signature_info_chk = $config['installedpackages']['snortglobal']['signatureinfo']; - if ($premium_url_chk == 'on') { - if ($pkg_interface <> "console") - update_status(gettext("Extracting Snort VRT Signatures...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir} doc/signatures/"); - if ($pkg_interface <> "console") - update_status(gettext("Done extracting Signatures.")); - - if (is_dir("{$snortdir}/doc/signatures")) { - if ($pkg_interface <> "console") - update_status(gettext("Copying Snort VRT signatures...")); - exec("/bin/cp -r {$snortdir}/doc/signatures {$snortdir}/signatures"); - if ($pkg_interface <> "console") - update_status(gettext("Done copying signatures.")); - } - } - /* Extract the Snort preprocessor rules */ - if ($pkg_interface <> "console") - update_output_window(gettext("Extracting preprocessor rules files...")); - exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$snortdir}/tmp preproc_rules/"); - - if (file_exists("{$tmpfname}/{$snort_filename_md5}")) { - if ($pkg_interface <> "console") - update_status(gettext("Copying md5 signature to snort directory...")); - @copy("{$tmpfname}/{$snort_filename_md5}", "{$snortdir}/{$snort_filename_md5}"); - } - if ($pkg_interface <> "console") { - update_status(gettext("Extraction of Snort VRT rules completed...")); - update_output_window(gettext("Installation of Sourcefire VRT rules completed...")); - } - error_log(gettext("\tInstallation of Snort VRT rules completed.\n"), 3, $snort_rules_upd_log); + exec("rm -r {$tmpfname}/emerging"); } } @@ -636,28 +622,22 @@ function snort_apply_customizations($snortcfg, $if_real) { global $vrt_enabled; $snortdir = SNORTDIR; - /* Update the Preprocessor rules for the master configuration and for the interface if Snort VRT rules are in use. */ - if ($vrt_enabled == 'on') { - exec("/bin/mkdir -p {$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/preproc_rules"); - $preproc_files = glob("{$snortdir}/tmp/preproc_rules/*.rules"); + /* Update the Preprocessor rules from the master configuration for the interface if Snort */ + /* VRT rules are in use and the interface's preprocessor rules are not protected. */ + if ($vrt_enabled == 'on' && $snortcfg['protect_preproc_rules'] != 'on') { + $preproc_files = glob("{$snortdir}/preproc_rules/*.rules"); foreach ($preproc_files as $file) { $newfile = basename($file); - @copy($file, "{$snortdir}/preproc_rules/{$newfile}"); - /* Check if customized preprocessor rule protection is enabled for interface before overwriting them. */ - if ($snortcfg['protect_preproc_rules'] <> 'on') - @copy($file, "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/preproc_rules/{$newfile}"); + @copy($file, "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/preproc_rules/{$newfile}"); } } - else { - exec("/bin/mkdir -p {$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/preproc_rules"); - } snort_prepare_rule_files($snortcfg, "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}"); /* Copy the master config and map files to the interface directory */ @copy("{$snortdir}/classification.config", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/classification.config"); - @copy("{$snortdir}/gen-msg.map", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/gen-msg.map"); @copy("{$snortdir}/reference.config", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/reference.config"); + @copy("{$snortdir}/gen-msg.map", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/gen-msg.map"); @copy("{$snortdir}/unicode.map", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/unicode.map"); } @@ -667,45 +647,37 @@ if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules = update_status(gettext('Copying new config and map files...')); error_log(gettext("\tCopying new config and map files...\n"), 3, $snort_rules_upd_log); - /* Determine which config and map file set to use for the master copy. */ - /* If the Snort VRT rules are not enabled, then use Emerging Threats. */ - if (($vrt_enabled == 'off') && ($et_enabled == 'on')) { - $cfgs = glob("{$snortdir}/tmp/*reference.config"); - $cfgs[] = "{$snortdir}/reference.config"; - snort_merge_reference_configs($cfgs, "{$snortdir}/reference.config"); - $cfgs = glob("{$snortdir}/tmp/*classification.config"); - $cfgs[] = "{$snortdir}/classification.config"; - snort_merge_classification_configs($cfgs, "{$snortdir}/classification.config"); - /* Use the unicode.map and gen-msg.map files from ET rules. */ - if (file_exists("{$snortdir}/tmp/ET_unicode.map")) - @copy("{$snortdir}/tmp/ET_unicode.map", "{$snortdir}/unicode.map"); - if (file_exists("{$snortdir}/tmp/ET_gen-msg.map")) - @copy("{$snortdir}/tmp/ET_gen-msg.map", "{$snortdir}/gen-msg.map"); - } - elseif (($vrt_enabled == 'on') && ($et_enabled == 'off')) { - foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { - if (file_exists("{$snortdir}/tmp/VRT_{$file}")) - @copy("{$snortdir}/tmp/VRT_{$file}", "{$snortdir}/{$file}"); - } - } - elseif (($vrt_enabled == 'on') && ($et_enabled == 'on')) { - /* Both VRT and ET rules are enabled, so build combined */ - /* reference.config and classification.config files. */ - $cfgs = glob("{$snortdir}/tmp/*reference.config"); - $cfgs[] = "{$snortdir}/reference.config"; - snort_merge_reference_configs($cfgs, "{$snortdir}/reference.config"); - $cfgs = glob("{$snortdir}/tmp/*classification.config"); - $cfgs[] = "{$snortdir}/classification.config"; - snort_merge_classification_configs($cfgs, "{$snortdir}/classification.config"); - /* Use the unicode.map and gen-msg.map files from VRT rules. */ - if (file_exists("{$snortdir}/tmp/VRT_unicode.map")) - @copy("{$snortdir}/tmp/VRT_unicode.map", "{$snortdir}/unicode.map"); - if (file_exists("{$snortdir}/tmp/VRT_gen-msg.map")) - @copy("{$snortdir}/tmp/VRT_gen-msg.map", "{$snortdir}/gen-msg.map"); - } + /******************************************************************/ + /* Build the classification.config and reference.config files */ + /* using the ones from all the downloaded rules plus the default */ + /* files installed with Snort. */ + /******************************************************************/ + $cfgs = glob("{$tmpfname}/*reference.config"); + $cfgs[] = "{$snortdir}/reference.config"; + snort_merge_reference_configs($cfgs, "{$snortdir}/reference.config"); + $cfgs = glob("{$tmpfname}/*classification.config"); + $cfgs[] = "{$snortdir}/classification.config"; + snort_merge_classification_configs($cfgs, "{$snortdir}/classification.config"); + + /*******************************************************************/ + /* Determine which map files set to use for the master copy. If */ + /* the Snort VRT rules are not enabled, then use Emerging Threats */ + /* or Snort Community Rules, in that order, if either is enabled. */ + /*******************************************************************/ + if ($snortdownload == 'on') + $prefix = "VRT_"; + elseif ($emergingthreats == 'on') + $prefix = "ET_"; + elseif ($snortcommunityrules == 'on') + $prefix = GPL_FILE_PREFIX; + if (file_exists("{$tmpfname}/{$prefix}unicode.map")) + @copy("{$tmpfname}/{$prefix}unicode.map", "{$snortdir}/unicode.map"); + if (file_exists("{$tmpfname}/{$prefix}gen-msg.map")) + @copy("{$tmpfname}/{$prefix}gen-msg.map", "{$snortdir}/gen-msg.map"); /* Start the rules rebuild proccess for each configured interface */ - if (is_array($config['installedpackages']['snortglobal']['rule'])) { + if (is_array($config['installedpackages']['snortglobal']['rule']) && + !empty($config['installedpackages']['snortglobal']['rule'])) { /* Set the flag to force rule rebuilds since we downloaded new rules, */ /* except when in post-install mode. Post-install does its own rebuild. */ @@ -722,6 +694,19 @@ if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules = update_status(gettext($tmp)); update_output_window(gettext("Please wait while Snort interface files are being updated...")); } + + // Make sure the interface subdirectory and required sub-directories exists. + // We need to re-create them during a pkg reinstall for the intial rules set + // download and configuration done as part of restoring saved settings. + if (!is_dir("{$snortdir}/snort_{$value['uuid']}_{$if_real}")) + safe_mkdir("{$snortdir}/snort_{$value['uuid']}_{$if_real}"); + if (!is_dir("{$snortdir}/snort_{$value['uuid']}_{$if_real}/rules")) + safe_mkdir("{$snortdir}/snort_{$value['uuid']}_{$if_real}/rules"); + if (!is_dir("{$snortdir}/snort_{$value['uuid']}_{$if_real}/preproc_rules")) + safe_mkdir("{$snortdir}/snort_{$value['uuid']}_{$if_real}/preproc_rules"); + if (!is_dir("{$snortdir}/snort_{$value['uuid']}_{$if_real}/dynamicpreprocessor")) + safe_mkdir("{$snortdir}/snort_{$value['uuid']}_{$if_real}/dynamicpreprocessor"); + snort_apply_customizations($value, $if_real); /* Log a message in Update Log if protecting customized preprocessor rules. */ @@ -745,10 +730,10 @@ if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules = $rebuild_rules = false; /* remove old $tmpfname files */ - if (is_dir("{$snortdir}/tmp")) { + if (is_dir("{$tmpfname}")) { if ($pkg_interface <> "console") update_status(gettext("Cleaning up after rules extraction...")); - exec("/bin/rm -r {$snortdir}/tmp"); + exec("/bin/rm -r {$tmpfname}"); } /* Restart snort if already running and we are not rebooting to pick up the new rules. */ -- cgit v1.2.3 From 78106a49b36edd8ca27a1e475b276b5762afdcc9 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 18 Feb 2014 19:28:18 -0500 Subject: Make sure we always prefer VRT gen-msg-map if VRT rules enabled. --- config/snort/snort_check_for_rule_updates.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/snort/snort_check_for_rule_updates.php b/config/snort/snort_check_for_rule_updates.php index 0aa397e4..e13c3bef 100755 --- a/config/snort/snort_check_for_rule_updates.php +++ b/config/snort/snort_check_for_rule_updates.php @@ -664,7 +664,7 @@ if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules = /* the Snort VRT rules are not enabled, then use Emerging Threats */ /* or Snort Community Rules, in that order, if either is enabled. */ /*******************************************************************/ - if ($snortdownload == 'on') + if ($snortdownload == 'on' || $vrt_enabled == 'on') $prefix = "VRT_"; elseif ($emergingthreats == 'on') $prefix = "ET_"; -- cgit v1.2.3 From d74291b451ac5e98ddc5477f81e87561acc8275b Mon Sep 17 00:00:00 2001 From: jim-p Date: Wed, 19 Feb 2014 09:09:58 -0500 Subject: Make sure snort 2.0.x pkg is using the correct binaries. --- pkg_config.8.xml | 6 +++--- pkg_config.8.xml.amd64 | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 6bf66488..aca8a85a 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -504,11 +504,11 @@ Snort is an open source network intrusion prevention and detection system (IDS/IPS). Combining the benefits of signature, protocol, and anomaly-based inspection. Security http://files.pfsense.org/packages/8/All/ - mysql-client-5.5.34.tbz + mysql55-client-5.5.35.tbz barnyard2-1.13.tbz - libnet11-1.1.6,1.tbz + libnet-1.1.6_1,1.tbz libdnet-1.11_3.tbz - libpcap-1.4.0.tbz + libpcap-1.5.2.tbz daq-2.0.1.tbz snort-2.9.5.6.tbz snort-2.9.5.6-i386.pbi diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index b0569024..64c92fae 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -491,11 +491,11 @@ Snort is an open source network intrusion prevention and detection system (IDS/IPS). Combining the benefits of signature, protocol, and anomaly-based inspection. Security http://files.pfsense.org/packages/amd64/8/All/ - mysql-client-5.5.34.tbz + mysql55-client-5.5.35.tbz barnyard2-1.13.tbz - libnet11-1.1.6,1.tbz + libnet-1.1.6_1,1.tbz libdnet-1.11_3.tbz - libpcap-1.4.0.tbz + libpcap-1.5.2.tbz daq-2.0.1.tbz snort-2.9.5.6.tbz snort-2.9.5.6-amd64.pbi -- cgit v1.2.3 From 20dc03cc48d0c199eca03fb26ecd9d6d09f7fa74 Mon Sep 17 00:00:00 2001 From: jim-p Date: Wed, 19 Feb 2014 09:20:50 -0500 Subject: Version bump for snort to match binaries --- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg_config.8.xml b/pkg_config.8.xml index aca8a85a..8f61ecc3 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -526,7 +526,7 @@ barnyard2_UNSET_FORCE=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml - 2.9.5.5 pkg v3.0.4 + 2.9.5.6 pkg v3.0.4 2.0 Stable /snort.xml diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 64c92fae..87c41ecc 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -513,7 +513,7 @@ barnyard2_UNSET_FORCE=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml - 2.9.5.5 pkg v3.0.4 + 2.9.5.6 pkg v3.0.4 2.0 Stable /snort.xml -- cgit v1.2.3 From 871cdf7b8021bfd09c7f6365c06f9b531b5fb92a Mon Sep 17 00:00:00 2001 From: jim-p Date: Wed, 19 Feb 2014 09:22:17 -0500 Subject: Fix version for snort here too --- pkg_config.10.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 3b33da5c..1e574b9f 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -372,7 +372,7 @@ barnyard2_UNSET_FORCE=ODBC PGSQL PRELUDE;barnyard2_SET_FORCE=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET_FORCE=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET_FORCE=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true http://www.pfsense.com/packages/config/snort/snort.xml - 2.9.5.5 pkg v3.0.4 + 2.9.5.6 pkg v3.0.4 2.2 Stable /snort.xml -- cgit v1.2.3 From 80f804d0d7b4053b0366470d5ad1bc34e89b03b1 Mon Sep 17 00:00:00 2001 From: Ermal Date: Wed, 19 Feb 2014 14:51:36 +0000 Subject: Activate LADVD package Fixes #3456 --- pkg_config.10.xml | 16 ++++++++++++++++ pkg_config.8.xml | 15 +++++++++++++++ pkg_config.8.xml.amd64 | 15 +++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 1e574b9f..4c09cc63 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -1585,5 +1585,21 @@ apcupsd_SET_FORCE=APCSMART_DRV APCDUMB_DRV PCNET_DRV USB TCP_WRAPPERS SNMP_DRV;apcupsd_UNSET_FORCE=CLIENT_ONLY CGI SNMP_DRV_OLD TEST_DRV GAPCMON DOCS apcupsd-3.14.10_1-##ARCH##.pbi + + LADVD + Send and decode link layer advertisements + https://code.google.com/p/ladvd/ + Network Management + 1.0.4 + BETA + ladvd-1.0.4-##ARCH##.pbi + http://www.pfsense.org/packages/config/ladvd/ladvd.xml + + net/ladvd + + + 2.1 + ladvd.xml + diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 8f61ecc3..91e41ab8 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -2027,5 +2027,20 @@ apcupsd-3.14.10_1.tbz apcupsd-3.14.10_1-i386.pbi + + LADVD + Send and decode link layer advertisements + https://code.google.com/p/ladvd/ + Network Management + 1.0.4 + BETA + http://files.pfsense.org/packages/8/All/ + ladvd-1.0.4-i386.pbi + http://www.pfsense.org/packages/config/ladvd/ladvd.xml + /usr/ports/net/ladvd + + 2.1 + ladvd.xml + diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 87c41ecc..bbff54dd 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -2014,5 +2014,20 @@ apcupsd-3.14.10_1.tbz apcupsd-3.14.10_1-amd64.pbi + + LADVD + Send and decode link layer advertisements + https://code.google.com/p/ladvd/ + Network Management + 1.0.4 + BETA + http://files.pfsense.org/packages/8/All/ + ladvd-1.0.4-amd64.pbi + http://www.pfsense.org/packages/config/ladvd/ladvd.xml + /usr/ports/net/ladvd + + 2.1 + ladvd.xml + -- cgit v1.2.3 From d3239371f4c196f33acaf32821a91dd5e6fc6888 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Wed, 19 Feb 2014 11:58:43 -0300 Subject: Bump required_version to 2.2 on pkg_config.10.xml --- pkg_config.10.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 4c09cc63..c7a8c887 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -1598,7 +1598,7 @@ net/ladvd - 2.1 + 2.2 ladvd.xml -- cgit v1.2.3 From 9923c54c602c3c0f67d0baa1bb93adfad74ad7ef Mon Sep 17 00:00:00 2001 From: Ermal Date: Wed, 19 Feb 2014 18:34:19 +0000 Subject: Fix typo. Pointy-hat: myself --- config/dansguardian/dansguardian.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/dansguardian/dansguardian.inc b/config/dansguardian/dansguardian.inc index 53262ab0..cd453322 100755 --- a/config/dansguardian/dansguardian.inc +++ b/config/dansguardian/dansguardian.inc @@ -1198,7 +1198,7 @@ EOF; log_error('Dansguardian is disabled, stopping process...'); mwexec("$script stop"); } - @unlink($script)) + @unlink($script); } if (!file_exists(DANSGUARDIAN_DIR . '/etc/dansguardian/lists/phraselists/pornography/weighted_russian_utf8')) -- cgit v1.2.3 From 10cab278e653f00bd8ec0ee0e82d30e5c7798042 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Wed, 19 Feb 2014 14:08:14 -0500 Subject: BETA version of Suricata 1.4.6 IDS package v0.1 for pfSense. --- config/suricata/README.md | 6 + config/suricata/suricata.inc | 2110 ++++++++++++++++++++ config/suricata/suricata.priv.inc | 46 + config/suricata/suricata.xml | 241 +++ config/suricata/suricata_alerts.php | 578 ++++++ config/suricata/suricata_app_parsers.php | 340 ++++ config/suricata/suricata_barnyard.php | 503 +++++ config/suricata/suricata_check_cron_misc.inc | 109 + .../suricata/suricata_check_for_rule_updates.php | 683 +++++++ config/suricata/suricata_define_vars.php | 290 +++ config/suricata/suricata_download_rules.php | 97 + config/suricata/suricata_download_updates.php | 241 +++ config/suricata/suricata_flow_stream.php | 680 +++++++ config/suricata/suricata_generate_yaml.php | 515 +++++ config/suricata/suricata_global.php | 456 +++++ config/suricata/suricata_import_aliases.php | 272 +++ config/suricata/suricata_interfaces.php | 474 +++++ config/suricata/suricata_interfaces_edit.php | 911 +++++++++ config/suricata/suricata_libhtp_policy_engine.php | 329 +++ config/suricata/suricata_list_view.php | 100 + config/suricata/suricata_log_view.php | 86 + config/suricata/suricata_logs_browser.php | 217 ++ config/suricata/suricata_os_policy_engine.php | 275 +++ config/suricata/suricata_post_install.php | 139 ++ config/suricata/suricata_rules.php | 790 ++++++++ config/suricata/suricata_rules_edit.php | 154 ++ config/suricata/suricata_rules_flowbits.php | 306 +++ config/suricata/suricata_rulesets.php | 596 ++++++ config/suricata/suricata_select_alias.php | 226 +++ config/suricata/suricata_suppress.php | 172 ++ config/suricata/suricata_suppress_edit.php | 213 ++ config/suricata/suricata_uninstall.php | 133 ++ config/suricata/suricata_yaml_template.inc | 302 +++ 33 files changed, 12590 insertions(+) create mode 100644 config/suricata/README.md create mode 100644 config/suricata/suricata.inc create mode 100644 config/suricata/suricata.priv.inc create mode 100644 config/suricata/suricata.xml create mode 100644 config/suricata/suricata_alerts.php create mode 100644 config/suricata/suricata_app_parsers.php create mode 100644 config/suricata/suricata_barnyard.php create mode 100644 config/suricata/suricata_check_cron_misc.inc create mode 100644 config/suricata/suricata_check_for_rule_updates.php create mode 100644 config/suricata/suricata_define_vars.php create mode 100644 config/suricata/suricata_download_rules.php create mode 100644 config/suricata/suricata_download_updates.php create mode 100644 config/suricata/suricata_flow_stream.php create mode 100644 config/suricata/suricata_generate_yaml.php create mode 100644 config/suricata/suricata_global.php create mode 100644 config/suricata/suricata_import_aliases.php create mode 100644 config/suricata/suricata_interfaces.php create mode 100644 config/suricata/suricata_interfaces_edit.php create mode 100644 config/suricata/suricata_libhtp_policy_engine.php create mode 100644 config/suricata/suricata_list_view.php create mode 100644 config/suricata/suricata_log_view.php create mode 100644 config/suricata/suricata_logs_browser.php create mode 100644 config/suricata/suricata_os_policy_engine.php create mode 100644 config/suricata/suricata_post_install.php create mode 100644 config/suricata/suricata_rules.php create mode 100644 config/suricata/suricata_rules_edit.php create mode 100644 config/suricata/suricata_rules_flowbits.php create mode 100644 config/suricata/suricata_rulesets.php create mode 100644 config/suricata/suricata_select_alias.php create mode 100644 config/suricata/suricata_suppress.php create mode 100644 config/suricata/suricata_suppress_edit.php create mode 100644 config/suricata/suricata_uninstall.php create mode 100644 config/suricata/suricata_yaml_template.inc diff --git a/config/suricata/README.md b/config/suricata/README.md new file mode 100644 index 00000000..2ec1d9a3 --- /dev/null +++ b/config/suricata/README.md @@ -0,0 +1,6 @@ +pfsense-suricata +================ + +Suricata package port for pfSense + +This is a port of the Suricata package for pfSense 2.1 and higher. It is currently under development and is still considered BETA software. Use on production systems is not recommended. diff --git a/config/suricata/suricata.inc b/config/suricata/suricata.inc new file mode 100644 index 00000000..95b95711 --- /dev/null +++ b/config/suricata/suricata.inc @@ -0,0 +1,2110 @@ +&1 &"); + } +} + +function suricata_barnyard_reload_config($suricatacfg, $signal="HUP") { + + /**************************************************************/ + /* This function sends the passed SIGNAL to the Barnyard2 */ + /* instance on the passed interface to cause Barnyard to */ + /* reload and parse the running configuration without */ + /* impacting packet processing. It also executes the reload */ + /* as a background process and returns control immediately */ + /* to the caller. */ + /* */ + /* $signal = HUP (default) parses and reloads config. */ + /**************************************************************/ + global $config, $g; + + $suricatadir = SURICATADIR; + $suricata_uuid = $suricatacfg['uuid']; + $if_real = suricata_get_real_interface($suricatacfg['interface']); + + /******************************************************/ + /* Only send the SIGHUP if Barnyard2 is running and */ + /* we can find a valid PID for the process. */ + /******************************************************/ + if (file_exists("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid") && isvalidpid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid")) { + log_error("[Suricata] Barnyard2 CONFIG RELOAD initiated for {$suricatacfg['descr']} ({$if_real})..."); + exec("/bin/pkill -{$signal} -F {$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid 2>&1 &"); + } +} + +function suricata_get_friendly_interface($interface) { + + if (function_exists('convert_friendly_interface_to_friendly_descr')) + $iface = convert_friendly_interface_to_friendly_descr($interface); + else { + if (!$interface || ($interface == "wan")) + $iface = "WAN"; + else if(strtolower($interface) == "lan") + $iface = "LAN"; + else if(strtolower($interface) == "pppoe") + $iface = "PPPoE"; + else if(strtolower($interface) == "pptp") + $iface = "PPTP"; + else + $iface = strtoupper($interface); + } + + return $iface; +} + +function suricata_get_real_interface($interface) { + global $config; + + $lc_interface = strtolower($interface); + if (function_exists('get_real_interface')) + return get_real_interface($lc_interface); + else { + if ($lc_interface == "lan") { + if ($config['inerfaces']['lan']) + return $config['interfaces']['lan']['if']; + return $interface; + } + if ($lc_interface == "wan") + return $config['interfaces']['wan']['if']; + $ifdescrs = array(); + for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) { + $ifname = "opt{$j}"; + if(strtolower($ifname) == $lc_interface) + return $config['interfaces'][$ifname]['if']; + if(isset($config['interfaces'][$ifname]['descr']) && (strtolower($config['interfaces'][$ifname]['descr']) == $lc_interface)) + return $config['interfaces'][$ifname]['if']; + } + } + + return $interface; +} + +function suricata_get_blocked_ips() { + + return array(); + +} + +/* func builds custom white lists */ +function suricata_find_list($find_name, $type = 'whitelist') { + global $config; + + $suricataglob = $config['installedpackages']['suricata']; + if (!is_array($suricataglob[$type])) + return ""; + if (!is_array($suricataglob[$type]['item'])) + return ""; + + foreach ($suricataglob[$type]['item'] as $value) { + if ($value['name'] == $find_name) + return $value; + } + + return array(); +} + +function suricata_build_list($suricatacfg, $listname = "", $whitelist = false) { + + /***********************************************************/ + /* The default is to build a HOME_NET variable unless */ + /* '$whitelist' is set to 'true' when calling. */ + /***********************************************************/ + + global $config, $g, $aliastable, $filterdns; + $home_net = array(); + + if ($listname == 'default' || empty($listname)) { + $localnet = 'yes'; $wanip = 'yes'; $wangw = 'yes'; $wandns = 'yes'; $vips = 'yes'; $vpns = 'yes'; + } else { + $list = suricata_find_list($listname); + if (empty($list)) + return $list; + $localnet = $list['localnets']; + $wanip = $list['wanips']; + $wangw = $list['wangateips']; + $wandns = $list['wandnsips']; + $vips = $list['vips']; + $vpns = $list['vpnips']; + if (!empty($list['address']) && is_alias($list['address'])) + $home_net = explode(" ", trim(filter_expand_alias($list['address']))); + } + + // Always add loopback to HOME_NET and whitelist (ftphelper) + if (!in_array("127.0.0.1", $home_net)) + $home_net[] = "127.0.0.1"; + + /********************************************************************/ + /* Always put the interface running Suricata in HOME_NET and */ + /* whitelist unless it's the WAN. WAN options are handled further */ + /* down. If the user specifically chose not to include LOCAL_NETS */ + /* in the WHITELIST, then do not include the Suricata interface */ + /* subnet in the WHITELIST. We do include the actual LAN interface */ + /* IP for Suricata, though, to prevent locking out the firewall. */ + /********************************************************************/ + $suricataip = get_interface_ip($suricatacfg['interface']); + if (!$whitelist || $localnet == 'yes' || empty($localnet)) { + if (is_ipaddr($suricataip)) { + if ($suricatacfg['interface'] <> "wan") { + $sn = get_interface_subnet($suricatacfg['interface']); + $ip = gen_subnet($suricataip, $sn) . "/{$sn}"; + if (!in_array($ip, $home_net)) + $home_net[] = $ip; + } + } + } + else { + if (is_ipaddr($suricataip)) { + if (!in_array($suricataip, $home_net)) + $home_net[] = $suricataip; + } + } + + $suricataip = get_interface_ipv6($suricatacfg['interface']); + if (!$whitelist || $localnet == 'yes' || empty($localnet)) { + if (is_ipaddrv6($suricataip)) { + if ($suricatacfg['interface'] <> "wan") { + $sn = get_interface_subnetv6($suricatacfg['interface']); + $ip = gen_subnetv6($suricataip, $sn). "/{$sn}"; + if (!in_array($ip, $home_net)) + $home_net[] = $ip; + } + } + } + else { + if (is_ipaddrv6($suricataip)) { + if (!in_array($suricataip, $home_net)) + $home_net[] = $suricataip; + } + } + + if (!$whitelist || $localnet == 'yes' || empty($localnet)) { + /*************************************************************************/ + /* Iterate through the interface list and write out whitelist items and */ + /* also compile a HOME_NET list of all the local interfaces for suricata. */ + /* Skip the WAN interface as we do not typically want that whole subnet */ + /* whitelisted (just the i/f IP itself which was handled earlier). */ + /*************************************************************************/ + $int_array = get_configured_interface_list(); + foreach ($int_array as $int) { + if ($int == "wan") + continue; + $subnet = get_interface_ip($int); + if (is_ipaddr($subnet)) { + $sn = get_interface_subnet($int); + $ip = gen_subnet($subnet, $sn) . "/{$sn}"; + if (!in_array($ip, $home_net)) + $home_net[] = $ip; + } + if ($int == "wan") + continue; + $subnet = get_interface_ipv6($int); + if (is_ipaddrv6($subnet)) { + $sn = get_interface_subnetv6($int); + $ip = gen_subnetv6($subnet, $sn). "/{$sn}"; + if (!in_array($ip, $home_net)) + $home_net[] = $ip; + } + } + } + + if ($wanip == 'yes') { + $ip = get_interface_ip("wan"); + if (is_ipaddr($ip)) { + if (!in_array($ip, $home_net)) + $home_net[] = $ip; + } + $ip = get_interface_ipv6("wan"); + if (is_ipaddrv6($ip)) { + if (!in_array($ip, $home_net)) + $home_net[] = $ip; + } + } + + if ($wangw == 'yes') { + // Grab the default gateway if set + $default_gw = exec("/sbin/route -n get default |grep 'gateway:' | /usr/bin/awk '{ print $2 }'"); + if (is_ipaddr($default_gw) && !in_array($default_gw, $home_net)) + $home_net[] = $default_gw; + if (is_ipaddrv6($default_gw) && !in_array($default_gw, $home_net)) + $home_net[] = $default_gw; + + // Get any other interface gateway and put in $HOME_NET if not there already + $gw = get_interface_gateway($suricatacfg['interface']); + if (is_ipaddr($gw) && !in_array($gw, $home_net)) + $home_net[] = $gw; + $gw = get_interface_gateway_v6($suricatacfg['interface']); + if (is_ipaddrv6($gw) && !in_array($gw, $home_net)) + $home_net[] = $gw; + } + + if ($wandns == 'yes') { + // Add DNS server for WAN interface to whitelist + $dns_servers = get_dns_servers(); + foreach ($dns_servers as $dns) { + if ($dns && !in_array($dns, $home_net)) + $home_net[] = $dns; + } + } + + if($vips == 'yes') { + // iterate all vips and add to whitelist + if (is_array($config['virtualip']) && is_array($config['virtualip']['vip'])) { + foreach($config['virtualip']['vip'] as $vip) { + if ($vip['subnet'] && $vip['mode'] != 'proxyarp') { + if (!in_array("{$vip['subnet']}/{$vip['subnet_bits']}", $home_net)) + $home_net[] = "{$vip['subnet']}/{$vip['subnet_bits']}"; + } + } + } + } + + // grab a list of vpns and whitelist if user desires + if ($vpns == 'yes') { + $vpns_list = filter_get_vpns_list(); + if (!empty($vpns_list)) { + // Convert the returned space-delimited string to an array + // and then add each VPN address to our HOME_NET array. + $vpns = explode(" ", $vpns_list); + foreach ($vpns as $vpn) + $home_net[] = trim($vpn); + unset($vpns, $vpns_list); + } + } + + $valresult = array(); + foreach ($home_net as $vald) { + if (empty($vald)) + continue; + $vald = trim($vald); + if (empty($valresult[$vald])) + $valresult[$vald] = $vald; + } + + // Release memory no longer required + unset($home_net); + + // Sort the list and return it + natsort($valresult); + return $valresult; +} + +function suricata_rules_up_install_cron($should_install) { + global $config, $g; + + if(!$config['cron']['item']) + $config['cron']['item'] = array(); + + $x=0; + $is_installed = false; + foreach($config['cron']['item'] as $item) { + if (strstr($item['command'], "suricata_check_for_rule_updates.php")) { + $is_installed = true; + break; + } + $x++; + } + $suricata_rules_up_info_ck = $config['installedpackages']['suricata']['config'][0]['autoruleupdate']; + + // See if a customized start time has been set for rule file updates + if (!empty($config['installedpackages']['suricata']['config'][0]['autoruleupdatetime'])) + $suricata_rules_upd_time = $config['installedpackages']['suricata']['config'][0]['autoruleupdatetime']; + else + $suricata_rules_upd_time = "00:03"; + + if ($suricata_rules_up_info_ck == "6h_up") { + $suricata_rules_up_min = intval(substr($suricata_rules_upd_time, -2)); + $hour = intval(substr($suricata_rules_upd_time, 0, 2)); + $suricata_rules_up_hr = strval($hour); + for ($i=0; $i<3; $i++) { + $hour += 6; + if ($hour > 24) + $hour -= 24; + $suricata_rules_up_hr .= "," . strval($hour); + } + $suricata_rules_up_mday = "*"; + $suricata_rules_up_month = "*"; + $suricata_rules_up_wday = "*"; + } + if ($suricata_rules_up_info_ck == "12h_up") { + $suricata_rules_up_min = intval(substr($suricata_rules_upd_time, -2)); + $hour = intval(substr($suricata_rules_upd_time, 0, 2)); + $suricata_rules_up_hr = strval($hour) . ","; + $hour += 12; + if ($hour > 24) + $hour -= 24; + $suricata_rules_up_hr .= strval($hour); + $suricata_rules_up_mday = "*"; + $suricata_rules_up_month = "*"; + $suricata_rules_up_wday = "*"; + } + if ($suricata_rules_up_info_ck == "1d_up") { + $suricata_rules_up_min = intval(substr($suricata_rules_upd_time, -2)); + $suricata_rules_up_hr = intval(substr($suricata_rules_upd_time, 0, 2)); + $suricata_rules_up_mday = "*/1"; + $suricata_rules_up_month = "*"; + $suricata_rules_up_wday = "*"; + } + if ($suricata_rules_up_info_ck == "4d_up") { + $suricata_rules_up_min = intval(substr($suricata_rules_upd_time, -2)); + $suricata_rules_up_hr = intval(substr($suricata_rules_upd_time, 0, 2)); + $suricata_rules_up_mday = "*/4"; + $suricata_rules_up_month = "*"; + $suricata_rules_up_wday = "*"; + } + if ($suricata_rules_up_info_ck == "7d_up") { + $suricata_rules_up_min = intval(substr($suricata_rules_upd_time, -2)); + $suricata_rules_up_hr = intval(substr($suricata_rules_upd_time, 0, 2)); + $suricata_rules_up_mday = "*/7"; + $suricata_rules_up_month = "*"; + $suricata_rules_up_wday = "*"; + } + if ($suricata_rules_up_info_ck == "28d_up") { + $suricata_rules_up_min = intval(substr($suricata_rules_upd_time, -2)); + $suricata_rules_up_hr = intval(substr($suricata_rules_upd_time, 0, 2)); + $suricata_rules_up_mday = "*/28"; + $suricata_rules_up_month = "*"; + $suricata_rules_up_wday = "*"; + } + switch($should_install) { + case true: + $cron_item = array(); + $cron_item['minute'] = $suricata_rules_up_min; + $cron_item['hour'] = $suricata_rules_up_hr; + $cron_item['mday'] = $suricata_rules_up_mday; + $cron_item['month'] = $suricata_rules_up_month; + $cron_item['wday'] = $suricata_rules_up_wday; + $cron_item['who'] = "root"; + $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/www/suricata/suricata_check_for_rule_updates.php"; + + // Add cron job if not already installed, else just update the existing one + if (!$is_installed) + $config['cron']['item'][] = $cron_item; + elseif ($is_installed) + $config['cron']['item'][$x] = $cron_item; + break; + case false: + if($is_installed == true) + unset($config['cron']['item'][$x]); + break; + } +} + +function suricata_loglimit_install_cron($should_install) { + global $config, $g; + + if (!is_array($config['cron']['item'])) + $config['cron']['item'] = array(); + + $x=0; + $is_installed = false; + foreach($config['cron']['item'] as $item) { + if (strstr($item['command'], 'suricata_check_cron_misc.inc')) { + $is_installed = true; + break; + } + $x++; + } + + switch($should_install) { + case true: + if(!$is_installed) { + $cron_item = array(); + $cron_item['minute'] = "*/5"; + $cron_item['hour'] = "*"; + $cron_item['mday'] = "*"; + $cron_item['month'] = "*"; + $cron_item['wday'] = "*"; + $cron_item['who'] = "root"; + $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/suricata/suricata_check_cron_misc.inc"; + $config['cron']['item'][] = $cron_item; + } + break; + case false: + if($is_installed == true) + unset($config['cron']['item'][$x]); + break; + } +} + +function sync_suricata_package_config() { + global $config, $g; + + $suricatadir = SURICATADIR; + $rcdir = RCFILEPREFIX; + + conf_mount_rw(); + + // Do not start config build if there are no Suricata-configured interfaces + if (!is_array($config['installedpackages']['suricata']) || !is_array($config['installedpackages']['suricata']['rule'])) { + @unlink("{$rcdir}/suricata.sh"); + conf_mount_ro(); + return; + } + + $suricataconf = $config['installedpackages']['suricata']['rule']; + foreach ($suricataconf as $value) { + $if_real = suricata_get_real_interface($value['interface']); + + // create a suricata.yaml file for interface + suricata_generate_yaml($value); + + // create barnyard2.conf file for interface + if ($value['barnyard_enable'] == 'on') + suricata_generate_barnyard2_conf($value, $if_real); + } + + // create suricata bootup file suricata.sh + suricata_create_rc(); + + $suricataglob = $config['installedpackages']['suricata']['config'][0]; + + suricata_loglimit_install_cron($suricataglob['suricataloglimit'] == 'on' ? true : false); + + // set the suricata block hosts time IMPORTANT +// suricata_rm_blocked_install_cron($suricataglob['rm_blocked'] != "never_b" ? true : false); + + // set the suricata rules update time + suricata_rules_up_install_cron($suricataglob['autoruleupdate'] != "never_up" ? true : false); + + write_config(); + configure_cron(); + + // Do not attempt package sync if reinstalling package or booting +// if (!$g['suricata_postinstall'] && !$g['booting']) +// suricata_sync_on_changes(); + + conf_mount_ro(); +} + +function suricata_load_suppress_sigs($suricatacfg, $track_by=false) { + + global $config; + + /**********************************************************/ + /* This function loads the GEN_ID and SIG_ID for all the */ + /* suppressed alert entries from the Suppression List of */ + /* the passed Suricata interface. The results are */ + /* returned in an array with GEN_ID and SIG_ID as the */ + /* primary keys. Any "track by_src" or "track by_dst" */ + /* entries in the Suppression List are tacked on as */ + /* additional keys in the array along with the IP address */ + /* in either IPv4 or IPv6 format when $track_by is passed */ + /* as true. */ + /* */ + /* Sample returned array: */ + /* $suppress[1][2069] = "suppress" */ + /* $suppress[1][2070]['by_src']['10.1.1.5'] = "suppress" */ + /* $suppress[1][2070]['by_dst']['10.1.1.6'] = "suppress" */ + /* */ + /**********************************************************/ + + $suppress = array(); + + if (!is_array($config['installedpackages']['suricata'])) + return; + if (!is_array($config['installedpackages']['suricata']['suppress'])) + return; + if (!is_array($config['installedpackages']['suricata']['suppress']['item'])) + return; + $a_suppress = $config['installedpackages']['suricata']['suppress']['item']; + + foreach ($a_suppress as $a_id => $alist) { + if ($alist['name'] == $suricatacfg['suppresslistname']) { + if (!empty($alist['suppresspassthru'])) { + $tmplist = str_replace("\r", "", base64_decode($alist['suppresspassthru'])); + $tmp = explode("\n", $tmplist); + foreach ($tmp as $line) { + // Skip any blank lines + if (trim($line, " \n") == "") + continue; + // Skip any comment lines + if (preg_match('/^\s*#/', $line)) + continue; + /* See if entry suppresses GID:SID for all hosts */ + if (preg_match('/\s*suppress\s*gen_id\b\s*(\d+),\s*sig_id\b\s*(\d+)\s*$/i', $line, $matches)) { + $genid = $matches[1]; + $sigid = $matches[2]; + if (!empty($genid) && !empty($sigid)) { + if (!is_array($suppress[$genid])) + $suppress[$genid] = array(); + if (!is_array($suppress[$genid][$sigid])) + $suppress[$genid][$sigid] = array(); + $suppress[$genid][$sigid] = "suppress"; + } + } + + /* Get "track by IP" entries if requested */ + if ($track_by) { + /* See if entry suppresses only by SRC or DST IPv4 address */ + if (preg_match('/\s*suppress\s*gen_id\b\s*(\d+),\s*sig_id\b\s*(\d+),\s*track\s*(by_src|by_dst),\s*ip\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*$/i', $line, $matches)) { + $genid = $matches[1]; + $sigid = $matches[2]; + $whichip = trim($matches[3]); + $ip = $matches[4]; + if (!empty($genid) && !empty($sigid) && !empty($whichip) && !empty($ip)) { + if (!is_array($suppress[$genid])) + $suppress[$genid] = array(); + if (!is_array($suppress[$genid][$sigid])) + $suppress[$genid][$sigid] = array(); + if (!is_array($suppress[$genid][$sigid][$whichip])) + $suppress[$genid][$sigid][$whichip] = array(); + if (!is_array($suppress[$genid][$sigid][$whichip][$ip])) + $suppress[$genid][$sigid][$whichip][$ip] = array(); + $suppress[$genid][$sigid][$whichip][$ip] = "suppress"; + } + } + /* See if entry suppresses only by SRC or DST IPv6 address */ + if (preg_match('/\s*suppress\s*gen_id\b\s*(\d+),\s*sig_id\b\s*(\d+),\s*track\s*(by_src|by_dst),\s*ip\s*([0-9a-f\.:]+)\s*$/i', $line, $matches)) { + $genid = $matches[1]; + $sigid = $matches[2]; + $whichip = trim($matches[3]); + $ip = trim($matches[4]); + if (!empty($genid) && !empty($sigid) && !empty($whichip) && !empty($ip)) { + if (!is_array($suppress[$genid])) + $suppress[$genid] = array(); + if (!is_array($suppress[$genid][$sigid])) + $suppress[$genid][$sigid] = array(); + if (!is_array($suppress[$genid][$sigid][$whichip])) + $suppress[$genid][$sigid][$whichip] = array(); + if (!is_array($suppress[$genid][$sigid][$whichip][$ip])) + $suppress[$genid][$sigid][$whichip][$ip] = array(); + $suppress[$genid][$sigid][$whichip][$ip] = "suppress"; + } + } + } + } + unset($tmp); + } + break; + } + } + unset($alist); + return $suppress; +} + +function suricata_post_delete_logs($suricata_uuid = 0) { + + /***********************************************/ + /* This function cleans up related log files */ + /* for the passed instance. These include */ + /* Barnyard2 unified2 logs and pcap logs. */ + /***********************************************/ + + global $config, $g; + + // do nothing if no Suricata interfaces active + if (!is_array($config['installedpackages']['suricata']['rule'])) + return; + + foreach ($config['installedpackages']['suricata']['rule'] as $value) { + if ($value['uuid'] != $suricata_uuid) + continue; + $if_real = suricata_get_real_interface($value['interface']); + $suricata_log_dir = SURICATALOGDIR . "suricata_{$if_real}{$suricata_uuid}"; + + if ($if_real != '') { + /* Clean-up Barnyard2 files if any exist */ + $filelist = glob("{$suricata_log_dir}/unified2.alert.*"); + // Keep most recent file + unset($filelist[count($filelist) - 1]); + foreach ($filelist as $file) + @unlink($file); + + /* Clean-up Barnyard2 archived files if any exist */ + $filelist = glob("{$suricata_log_dir}/barnyard2/archive/unified2.alert.*"); + foreach ($filelist as $file) + @unlink($file); + + /* Clean-up packet capture files if any exist */ + $filelist = glob("{$suricata_log_dir}/log.pcap.*"); + // Keep most recent file + unset($filelist[count($filelist) - 1]); + foreach ($filelist as $file) + @unlink($file); + } + } +} + +/* This returns size of passed directory or file in 1024-byte blocks */ +function suricata_Getdirsize($node) { + if(!is_readable($node)) + return false; + + $blah = exec( "/usr/bin/du -kdc $node" ); + return substr( $blah, 0, strpos($blah, 9) ); +} + +function suricata_build_sid_msg_map($rules_path, $sid_file) { + + /*************************************************************/ + /* This function reads all the rules file in the passed */ + /* $rules_path variable and produces a properly formatted */ + /* sid-msg.map file for use by Suricata and/or barnyard2. */ + /*************************************************************/ + + $sidMap = array(); + $rule_files = array(); + + // First check if we were passed a directory, a single file + // or an array of filenames to read. Set our $rule_files + // variable accordingly. If we can't figure it out, return + // and don't write a sid_msg_map file. + if (is_string($rules_path)) { + if (is_dir($rules_path)) + $rule_files = glob($rules_path . "*.rules"); + elseif (is_file($rules_path)) + $rule_files = (array)$rules_path; + } + elseif (is_array($rules_path)) + $rule_files = $rules_path; + else + return; + + // Read the rule files into an array, then iterate the list + foreach ($rule_files as $file) { + + // Don't process files with "deleted" in the filename + if (stristr($file, "deleted")) + continue; + + // Read the file into an array, skipping missing files. + if (!file_exists($file)) + continue; + + $rules_array = file($file, FILE_SKIP_EMPTY_LINES); + $record = ""; + $b_Multiline = false; + + // Read and process each line from the rules in the current file + foreach ($rules_array as $rule) { + + // Skip any non-rule lines unless we're in multiline mode. + if (!preg_match('/^\s*#*\s*(alert|drop|pass)/i', $rule) && !$b_Multiline) + continue; + + // Test for a multi-line rule, and reassemble the + // pieces back into a single line. + if (preg_match('/\\\\s*[\n]$/m', $rule)) { + $rule = substr($rule, 0, strrpos($rule, '\\')); + $record .= $rule; + $b_Multiline = true; + continue; + } + // If the last segment of a multiline rule, then + // append it onto the previous parts to form a + // single-line rule for further processing below. + elseif (!preg_match('/\\\\s*[\n]$/m', $rule) && $b_Multiline) { + $record .= $rule; + $rule = $record; + } + $b_Multiline = false; + $record = ""; + + // Parse the rule to find sid and any references. + $sid = ''; + $msg = ''; + $matches = ''; + $sidEntry = ''; + if (preg_match('/\bmsg\s*:\s*"(.+?)"\s*;/i', $rule, $matches)) + $msg = trim($matches[1]); + if (preg_match('/\bsid\s*:\s*(\d+)\s*;/i', $rule, $matches)) + $sid = trim($matches[1]); + if (!empty($sid) && !empty($msg)) { + $sidEntry = $sid . ' || ' . $msg; + preg_match_all('/\breference\s*:\s*([^\;]+)/i', $rule, $matches); + foreach ($matches[1] as $ref) + $sidEntry .= " || " . trim($ref); + $sidEntry .= "\n"; + if (!is_array($sidMap[$sid])) + $sidMap[$sid] = array(); + $sidMap[$sid] = $sidEntry; + } + } + } + // Sort the generated sid-msg map by sid + ksort($sidMap); + + // Now print the result to the supplied file + @file_put_contents($sid_file, array_values($sidMap)); +} + +function suricata_merge_reference_configs($cfg_in, $cfg_out) { + + /***********************************************************/ + /* This function takes a list of "reference.config" files */ + /* in the $cfg_in array and merges them into a single */ + /* file specified by $cfg_out. The merging is done so */ + /* no duplication of lines occurs in the output file. */ + /***********************************************************/ + + $outMap = array(); + foreach ($cfg_in as $file) { + if (!file_exists($file)) + continue; + $in = file($file, FILE_SKIP_EMPTY_LINES); + foreach ($in as $line) { + /* Skip comment lines */ + if (preg_match('/^\s*#/', $line)) + continue; + if (preg_match('/(\:)\s*(\w+)\s*(.*)/', $line, $matches)) { + if (!empty($matches[2]) && !empty($matches[3])) { + $matches[2] = trim($matches[2]); + if (!array_key_exists($matches[2], $outMap)) { + if (!is_array($outMap[$matches[2]])) + $outMap[$matches[2]] = array(); + $outMap[$matches[2]] = trim($matches[3]); + } + } + } + } + } + // Sort the new reference map. + uksort($outMap,'strnatcasecmp'); + + // Do NOT write an empty references.config file, just + // exit instead. + if (empty($outMap)) + return false; + + // Format and write it to the supplied output file. + $format = "config reference: %-12s %s\n"; + foreach ($outMap as $key=>$value) + $outMap[$key] = sprintf($format, $key, $value); + @file_put_contents($cfg_out, array_values($outMap)); + return true; +} + +function suricata_merge_classification_configs($cfg_in, $cfg_out) { + + /************************************************************/ + /* This function takes a list of "classification.config" */ + /* files in the $cfg_in array and merges them into a */ + /* single file specified by $cfg_out. The merging is done */ + /* so no duplication of lines occurs in the output file. */ + /************************************************************/ + + $outMap = array(); + foreach ($cfg_in as $file) { + if (!file_exists($file)) + continue; + $in = file($file, FILE_SKIP_EMPTY_LINES); + foreach ($in as $line) { + if (preg_match('/(.*:)(\s*.*),(.*),(.*)/', $line, $matches)) { + /* Skip comment lines */ + if (preg_match('/^\s*#/', $line)) + continue; + if (!empty($matches[2]) && !empty($matches[3]) && !empty($matches[4])) { + $matches[2] = trim($matches[2]); + if (!array_key_exists($matches[2], $outMap)) { + if (!is_array($outMap[$matches[2]])) + $outMap[$matches[2]] = array(); + $outMap[$matches[2]] = trim($matches[3]) . "," . trim($matches[4]); + } + } + } + } + } + // Sort the new classification map. + uksort($outMap,'strnatcasecmp'); + + // Do NOT write an empty classification.config file, just + // exit instead. + if (empty($outMap)) + return false; + + // Format and write it to the supplied output file. + $format = "config classification: %s,%s\n"; + foreach ($outMap as $key=>$value) + $outMap[$key] = sprintf($format, $key, $value); + @file_put_contents($cfg_out, array_values($outMap)); + return true; +} + +function suricata_load_rules_map($rules_path) { + + /***************************************************************/ + /* This function loads and returns an array with all the rules */ + /* found in the *.rules files in the passed rules path. */ + /* */ + /* $rules_path can be: */ + /* a directory (assumed to contain *.rules files) */ + /* a filename (identifying a specific *.rules file) */ + /* an array of filenames (identifying *.rules files) */ + /***************************************************************/ + + $map_ref = array(); + $rule_files = array(); + + if (empty($rules_path)) + return $map_ref; + + /*************************************************************** + * Read all the rules into the map array. + * The structure of the map array is: + * + * map[gid][sid]['rule']['category']['disabled']['flowbits'] + * + * where: + * gid = Generator ID from rule, or 1 if general text + * rule + * sid = Signature ID from rule + * rule = Complete rule text + * category = File name of file containing the rule + * action = alert, drop, reject or pass + * disabled = 1 if rule is disabled (commented out), 0 if + * rule is enabled + * flowbits = Array of applicable flowbits if rule contains + * flowbits options + ***************************************************************/ + + // First check if we were passed a directory, a single file + // or an array of filenames to read. Set our $rule_files + // variable accordingly. If we can't figure it out, return + // an empty rules map array. + if (is_string($rules_path)) { + if (is_dir($rules_path)) + $rule_files = glob($rules_path . "*.rules"); + elseif (is_file($rules_path)) + $rule_files = (array)$rules_path; + } + elseif (is_array($rules_path)) + $rule_files = $rules_path; + else + return $map_ref; + + // Read the rule files into an array, then iterate the list + // to process the rules from the files one-by-one. + foreach ($rule_files as $file) { + + // Don't process files with "deleted" in the filename. + if (stristr($file, "deleted")) + continue; + + // Read the file contents into an array, skipping + // missing files. + if (!file_exists($file)) + continue; + + $rules_array = file($file, FILE_SKIP_EMPTY_LINES); + $record = ""; + $b_Multiline = false; + + // Read and process each line from the rules in the + // current file into an array. + foreach ($rules_array as $rule) { + + // Skip any lines that may be just spaces. + if (trim($rule, " \n") == "") + continue; + + // Skip any non-rule lines unless we're in + // multiline mode. + if (!preg_match('/^\s*#*\s*(alert|drop|pass|reject)/i', $rule) && !$b_Multiline) + continue; + + // Test for a multi-line rule; loop and reassemble + // the pieces back into a single line. + if (preg_match('/\\\\s*[\n]$/m', $rule)) { + $rule = substr($rule, 0, strrpos($rule, '\\')); + $record .= $rule; + $b_Multiline = true; + continue; + } + // If the last segment of a multiline rule, then + // append it onto the previous parts to form a + // single-line rule for further processing below. + elseif (!preg_match('/\\\\s*[\n]$/m', $rule) && $b_Multiline) { + $record .= $rule; + $rule = $record; + } + + // We have an actual single-line rule, or else a + // re-assembled multiline rule that is now a + // single-line rule, so store it in our rules map. + + // Get and test the SID. If we don't find one, + // ignore and skip this rule as it is invalid. + $sid = suricata_get_sid($rule); + if (empty($sid)) { + $b_Multiline = false; + $record = ""; + continue; + } + + $gid = suricata_get_gid($rule); + if (!is_array($map_ref[$gid])) + $map_ref[$gid] = array(); + if (!is_array($map_ref[$gid][$sid])) + $map_ref[$gid][$sid] = array(); + $map_ref[$gid][$sid]['rule'] = $rule; + $map_ref[$gid][$sid]['category'] = basename($file, ".rules"); + + // Grab the rule action + $matches = array(); + if (preg_match('/^\s*#*\s*(alert|drop|pass|reject)/i', $rule, $matches)) + $map_ref[$gid][$sid]['action'] = $matches[1]; + else + $map_ref[$gid][$sid]['action'] = ""; + + // Determine if default state is "disabled" + if (preg_match('/^\s*\#+/', $rule)) + $map_ref[$gid][$sid]['disabled'] = 1; + else + $map_ref[$gid][$sid]['disabled'] = 0; + + // Grab any associated flowbits from the rule. + $map_ref[$gid][$sid]['flowbits'] = suricata_get_flowbits($rule); + + // Reset our local flag and record variables + // for the next rule in the set. + $b_Multiline = false; + $record = ""; + } + + // Zero out our processing array and get the next file. + unset($rules_array); + } + return $map_ref; +} + +function suricata_get_gid($rule) { + + /****************************************************************/ + /* If a gid is defined, then return it, else default to "1" for */ + /* general text rules match. */ + /****************************************************************/ + + if (preg_match('/\bgid\s*:\s*(\d+)\s*;/i', $rule, $matches)) + return trim($matches[1]); + else + return "1"; +} + +function suricata_get_sid($rule) { + + /***************************************************************/ + /* If a sid is defined, then return it, else default to an */ + /* empty value. */ + /***************************************************************/ + + if (preg_match('/\bsid\s*:\s*(\d+)\s*;/i', $rule, $matches)) + return trim($matches[1]); + else + return ""; +} + +function suricata_get_msg($rule) { + + /**************************************************************/ + /* Return the MSG section of the passed rule as a string. */ + /**************************************************************/ + + $msg = ""; + if (preg_match('/\bmsg\s*:\s*"(.+?)"\s*;/i', $rule, $matches)) + $msg = trim($matches[1]); + return $msg; +} + +function suricata_get_flowbits($rule) { + + /*************************************************************/ + /* This will pull out "flowbits:" options from the rule text */ + /* and return them in an array (minus the "flowbits:" part). */ + /*************************************************************/ + + $flowbits = array(); + + // Grab any "flowbits:set, setx, unset, isset or toggle" options first. + // Examine flowbits targets for logical operators to capture all targets. + if (preg_match_all('/flowbits\b\s*:\s*(set|setx|unset|toggle|isset|isnotset)\s*,([^;]+)/i', $rule, $matches)) { + $i = -1; + while (++$i < count($matches[1])) { + $action = trim($matches[1][$i]); + $target = preg_split('/[&|]/', $matches[2][$i]); + foreach ($target as $t) + $flowbits[] = "{$action}," . trim($t); + } + } + + // Include the "flowbits:noalert or reset" options, if present. + if (preg_match_all('/flowbits\b\s*:\s*(noalert|reset)\b/i', $rule, $matches)) { + $i = -1; + while (++$i < count($matches[1])) { + $flowbits[] = trim($matches[1][$i]); + } + } + + return $flowbits; +} + +function suricata_get_checked_flowbits($rules_map) { + + /*************************************************************/ + /* This function checks all the currently enabled rules to */ + /* find any checked flowbits, and returns the checked */ + /* flowbit names in an array. */ + /*************************************************************/ + + $checked_flowbits = array(); + foreach ($rules_map as $rulem) { + if (!is_array($rulem)) + continue; + foreach ($rulem as $rulem2) { + if (!is_array($rulem2)) + continue; + if ($rulem2['disabled'] == 1) + continue; + if (empty($rulem2['flowbits'])) + continue; + if (!is_array($rulem2['flowbits'])) + continue; + foreach ($rulem2['flowbits'] as $flowbit) { + if (empty($flowbit)) + continue; + // If no comma in flowbits option, then skip it. + $pos = strpos($flowbit, ","); + if ($pos === false) + continue; + $action = substr(strtolower($flowbit), 0, $pos); + if ($action == "isset" || $action == "isnotset") { + $target = preg_split('/[&|]/', substr($flowbit, $pos + 1)); + foreach ($target as $t) + if (!empty($t) && !isset($checked_flowbits[$t])) { + if (!is_array($checked_flowbits[$t])) + $checked_flowbits[$t] = array(); + $checked_flowbits[$t] = $action; + } + } + } + } + } + unset($rulem, $rulem2); + return $checked_flowbits; +} + +function suricata_get_set_flowbits($rules_map) { + + /*********************************************************/ + /* This function checks all the currently enabled rules */ + /* to find any set flowbits, and returns the flowbit */ + /* names in an array. */ + /*********************************************************/ + + $set_flowbits = array(); + foreach ($rules_map as $rulem) { + if (!is_array($rulem)) + continue; + foreach ($rulem as $rulem2) { + if ($rulem2['disabled'] == 1) + continue; + if (empty($rulem2['flowbits'])) + continue; + if (!is_array($rulem2['flowbits'])) + continue; + foreach ($rulem2['flowbits'] as $flowbit) { + if (empty($flowbit)) + continue; + /* If no comma in flowbits option, then skip it. */ + $pos = strpos($flowbit, ","); + if ($pos === false) + continue; + $action = substr(strtolower($flowbit), 0, $pos); + if ($action == "set" || $action == "toggle" || $action == "setx") { + $target = preg_split('/[&|]/', substr($flowbit, $pos + 1)); + foreach ($target as $t) + if (!empty($t) && !isset($set_flowbits[$t])) { + if (!is_array($set_flowbits[$t])) + $set_flowbits[$t] = array(); + $set_flowbits[$t] = $action; + } + } + } + } + } + unset($rulem, $rulem2); + return $set_flowbits; +} + +function suricata_find_flowbit_required_rules($rules, $unchecked_flowbits) { + + /********************************************************/ + /* This function finds all rules that must be enabled */ + /* in order to satisfy the "checked flowbits" used by */ + /* the currently enabled rules. It returns the list */ + /* of required rules in an array. */ + /********************************************************/ + + $required_flowbits_rules = array(); + foreach ($rules as $k1 => $rule) { + if (!is_array($rule)) + continue; + foreach ($rule as $k2 => $rule2) { + if (empty($rule2['flowbits'])) + continue; + if (!is_array($rule2['flowbits'])) + continue; + foreach ($rule2['flowbits'] as $flowbit) { + if (empty($flowbit)) + continue; + $action = substr($flowbit, 0, strpos($flowbit, ",")); + if (!strcasecmp(substr($action, 0, 3), "set")) { + $tmp = substr($flowbit, strpos($flowbit, ",") +1 ); + if (!empty($tmp) && isset($unchecked_flowbits[$tmp])) { + if (!is_array($required_flowbits_rules[$k1])) + $required_flowbits_rules[$k1] = array(); + if (!is_array($required_flowbits_rules[$k1][$k2])) + $required_flowbits_rules[$k1][$k2] = array(); + $required_flowbits_rules[$k1][$k2]['category'] = $rule2['category']; + if ($rule2['disabled'] == 0) + // If not disabled, just return the rule text "as is" + $required_flowbits_rules[$k1][$k2]['rule'] = ltrim($rule2['rule']); + else { + // If rule is disabled, remove leading '#' to enable it + $required_flowbits_rules[$k1][$k2]['rule'] = ltrim(substr($rule2['rule'], strpos($rule2['rule'], "#") + 1)); + $required_flowbits_rules[$k1][$k2]['disabled'] = 0; + } + } + } + } + } + } + unset($rule, $rule2); + + return $required_flowbits_rules; +} + +function suricata_resolve_flowbits($rules, $active_rules) { + + /******************************************************/ + /* This function auto-resolves flowbit requirements */ + /* by finding all checked flowbits in the currently */ + /* enabled rules, and then making sure all the "set" */ + /* flowbit rules for those "checked" flowbits are */ + /* enabled. For any that are not enabled, they are */ + /* copied to an array, enabled, and returned. */ + /* */ + /* $active_rules --> Rules Map array containing */ + /* the current rules for the */ + /* interface to resolve flowbit */ + /* dependencies for. */ + /* */ + /* $rules --> Rules Map array containing */ + /* all the available rules. */ + /******************************************************/ + + $suricatadir = SURICATADIR; + + // Check $rules array to be sure it is filled. + if (empty($rules)) { + log_error(gettext("[Suricata] WARNING: Flowbit resolution not done - no rules in {$suricatadir}rules/ ...")); + return array(); + } + + // First, find all the "checked" and "set" flowbits. + $checked_flowbits = suricata_get_checked_flowbits($active_rules); + $set_flowbits = suricata_get_set_flowbits($active_rules); + + // Next find any "checked" flowbits without matching + // "set" flowbit rules in the enabled rule set. + $delta_flowbits = array_diff_key($checked_flowbits, $set_flowbits); + + // Cleanup and release the memory we no longer need. + unset($checked_flowbits); + unset($set_flowbits); + + // Now find all the needed "set flowbit" rules from + // the master list of all rules. + $required_rules = suricata_find_flowbit_required_rules($rules, $delta_flowbits); + + // Cleanup and release memory we no longer need. + unset($delta_flowbits); + + return $required_rules; +} + +function suricata_write_flowbit_rules_file($flowbit_rules, $rule_file) { + + /************************************************/ + /* This function takes an array of rules in the */ + /* rules_map format and writes them to the file */ + /* given. */ + /* */ + /* $flowbit_rules --> array of flowbit-required */ + /* rules. */ + /* */ + /* $rule_file --> filename to write the */ + /* flowbit-required rules */ + /* to. */ + /************************************************/ + + $flowbit_rules_file = FLOWBITS_FILENAME; + + // See if we were passed a directory or full + // filename to write the rules to, and adjust + // the destination argument accordingly. + if (is_dir($rule_file)) + $rule_file = rtrim($rule_file, '/')."/{$flowbit_rules_file}"; + + if (empty($flowbit_rules)) { + @file_put_contents($rule_file, ""); + return; + } + + $fp = fopen($rule_file, "w"); + if ($fp) { + @fwrite($fp, "# These rules set flowbits checked by your other enabled rules. If the\n"); + @fwrite($fp, "# dependent flowbits are not set, then some of your chosen rules may\n"); + @fwrite($fp, "# not fire. Enabling all rules that set these dependent flowbits ensures\n"); + @fwrite($fp, "# your chosen rules fire as intended.\n#\n"); + @fwrite($fp, "# If you wish to prevent alerts from any of these rules, add the GID:SID\n"); + @fwrite($fp, "# of the rule to the Suppression List for the interface.\n"); + foreach ($flowbit_rules as $k1 => $rule) { + foreach ($rule as $k2 => $rule2) { + @fwrite($fp, "\n# Category: {$rule2['category']}"); + @fwrite($fp, " GID:{$k1} SID:{$k2}\n"); + @fwrite($fp, $rule2['rule']); + } + } + fclose($fp); + } +} + +function suricata_load_vrt_policy($policy, $all_rules=null) { + + /************************************************/ + /* This function returns an array of all rules */ + /* marked with the passed in $policy metadata. */ + /* */ + /* $policy --> desired VRT security policy */ + /* 1. connectivity */ + /* 2. balanced */ + /* 3. security */ + /* */ + /* $all_rules --> optional Rules Map array of */ + /* rules to scan for policy. */ + /* If not provided, then an */ + /* array will be created. */ + /************************************************/ + + $suricatadir = SURICATADIR; + $vrt_policy_rules = array(); + + // Load a map of all the VRT rules if we were + // not passed a pre-loaded one to use. + if (is_null($all_rules)) { + /* Since only Snort VRT rules have IPS Policy metadata, */ + /* limit our search to just those files. */ + $suricata_file_pattern = VRT_FILE_PREFIX . "*.rules"; + $suricata_vrt_files = glob("{$suricatadir}rules/{$suricata_file_pattern}"); + $all_rules = suricata_load_rules_map($suricata_vrt_files); + } + + // Now walk the rules list and find all those that are + // defined as active for the chosen security policy. + foreach ($all_rules as $k1 => $arulem) { + foreach ($arulem as $k2 => $arulem2) { + if (strripos($arulem2['rule'], "policy {$policy}-ips") !== false) { + if (!preg_match('/flowbits\s*:\s*noalert/i', $arulem2['rule'])) { + if (!is_array($vrt_policy_rules[$k1])) + $vrt_policy_rules[$k1] = array(); + if (!is_array($vrt_policy_rules[$k1][$k2])) + $vrt_policy_rules[$k1][$k2] = array(); + $vrt_policy_rules[$k1][$k2] = $arulem2; + + // Enable the policy rule if disabled + if ($arulem2['disabled'] == 1) { + $vrt_policy_rules[$k1][$k2]['rule'] = ltrim(substr($arulem2['rule'], strpos($arulem2['rule'], "#") + 1)); + $vrt_policy_rules[$k1][$k2]['disabled'] = 0; + } + } + } + } + } + + // Release memory we no longer need. + unset($arulem, $arulem2); + + // Return all the rules that match the policy. + return $vrt_policy_rules; +} + +function suricata_load_sid_mods($sids) { + + /*****************************************/ + /* This function parses the string of */ + /* SID values in $sids and returns an */ + /* array with the SID as the key and */ + /* value. The SID values in $sids are */ + /* assumed to be delimited by "||". */ + /* */ + /* $sids ==> string of SID values from */ + /* saved config file. */ + /* */ + /* Returns ==> a multidimensional array */ + /* with GID and SID as the */ + /* keys ($result[GID][SID]) */ + /*****************************************/ + + $result = array(); + if (empty($sids)) + return $result; + $tmp = explode("||", $sids); + foreach ($tmp as $v) { + if (preg_match('/(\d+)\s*:\s*(\d+)/', $v, $match)) { + if (!is_array($result[$match[1]])) + $result[$match[1]] = array(); + $result[$match[1]][$match[2]] = "{$match[1]}:{$match[2]}"; + } + } + unset($tmp); + + return $result; +} + +function suricata_modify_sids(&$rule_map, $suricatacfg) { + + /*****************************************/ + /* This function modifies the rules in */ + /* the passed rules_map array based on */ + /* values in the enablesid/disablesid */ + /* configuration parameters. */ + /* */ + /* $rule_map = array of current rules */ + /* $suricatacfg = config settings */ + /*****************************************/ + + if (!isset($suricatacfg['rule_sid_on']) && + !isset($suricatacfg['rule_sid_off'])) + return; + + // Load up our enablesid and disablesid + // arrays with lists of modified SIDs. + $enablesid = suricata_load_sid_mods($suricatacfg['rule_sid_on'], "enablesid"); + $disablesid = suricata_load_sid_mods($suricatacfg['rule_sid_off'], "disablesid"); + + /* Turn on any rules that need to be */ + /* forced "on" with enablesid mods. */ + if (!empty($enablesid)) { + foreach ($rule_map as $k1 => $rulem) { + foreach ($rulem as $k2 => $v) { + if (isset($enablesid[$k1][$k2]) && $v['disabled'] == 1) { + $rule_map[$k1][$k2]['rule'] = ltrim($v['rule'], " \t#"); + $rule_map[$k1][$k2]['disabled'] = 0; + } + } + } + } + + /* Turn off any rules that need to be */ + /* forced "off" with disablesid mods. */ + if (!empty($disablesid)) { + foreach ($rule_map as $k1 => $rulem) { + foreach ($rulem as $k2 => $v) { + if (isset($disablesid[$k1][$k2]) && $v['disabled'] == 0) { + $rule_map[$k1][$k2]['rule'] = "# " . $v['rule']; + $rule_map[$k1][$k2]['disabled'] = 1; + } + } + } + } + unset($enablesid, $disablesid); +} + +function suricata_prepare_rule_files($suricatacfg, $suricatacfgdir) { + + /***********************************************************/ + /* This function builds a new set of enforcing rules for */ + /* Suricata and writes them to disk. */ + /* */ + /* $suricatacfg --> pointer to applicable section of */ + /* config.xml containing settings for */ + /* the interface. */ + /* */ + /* $suricatacfgdir --> pointer to physical directory on */ + /* disk where Suricata configuration is */ + /* to be written. */ + /***********************************************************/ + + global $rebuild_rules; + + $suricatadir = SURICATADIR; + $flowbit_rules_file = FLOWBITS_FILENAME; + $suricata_enforcing_rules_file = ENFORCING_RULES_FILENAME; + $no_rules_defined = true; + + // If there is no reason to rebuild the rules, exit to save time. + if (!$rebuild_rules) + return; + + // Log a message for rules rebuild in progress + log_error(gettext("[Suricata] Updating rules configuration for: " . suricata_get_friendly_interface($suricatacfg['interface']) . " ...")); + + // Only rebuild rules if some are selected or an IPS Policy is enabled + if (!empty($suricatacfg['rulesets']) || $suricatacfg['ips_policy_enable'] == 'on') { + $enabled_rules = array(); + $enabled_files = array(); + $all_rules = array(); + $no_rules_defined = false; + + // Load up all the rules into a Rules Map array. + $all_rules = suricata_load_rules_map("{$suricatadir}rules/"); + + // Create an array with the filenames of the enabled + // rule category files if we have any. + if (!empty($suricatacfg['rulesets'])) { + foreach (explode("||", $suricatacfg['rulesets']) as $file){ + $category = basename($file, ".rules"); + if (!is_array($enabled_files[$category])) + $enabled_files[$category] = array(); + $enabled_files[$category] = $file; + } + + /****************************************************/ + /* Walk the ALL_RULES map array and copy the rules */ + /* matching our selected file categories to the */ + /* ENABLED_RULES map array. */ + /****************************************************/ + foreach ($all_rules as $k1 => $rulem) { + foreach ($rulem as $k2 => $v) { + if (isset($enabled_files[$v['category']])) { + if (!is_array($enabled_rules[$k1])) + $enabled_rules[$k1] = array(); + if (!is_array($enabled_rules[$k1][$k2])) + $enabled_rules[$k1][$k2] = array(); + $enabled_rules[$k1][$k2]['rule'] = $v['rule']; + $enabled_rules[$k1][$k2]['category'] = $v['category']; + $enabled_rules[$k1][$k2]['disabled'] = $v['disabled']; + $enabled_rules[$k1][$k2]['flowbits'] = $v['flowbits']; + } + } + } + + // Release memory we no longer need. + unset($enabled_files, $rulem, $v); + } + + // Check if a pre-defined Snort VRT policy is selected. If so, + // add all the VRT policy rules to our enforcing rule set. + if (!empty($suricatacfg['ips_policy'])) { + $policy_rules = suricata_load_vrt_policy($suricatacfg['ips_policy'], $all_rules); + foreach ($policy_rules as $k1 => $policy) { + foreach ($policy as $k2 => $p) { + if (!is_array($enabled_rules[$k1])) + $enabled_rules[$k1] = array(); + if (!is_array($enabled_rules[$k1][$k2])) + $enabled_rules[$k1][$k2] = array(); + $enabled_rules[$k1][$k2]['rule'] = $p['rule']; + $enabled_rules[$k1][$k2]['category'] = $p['category']; + $enabled_rules[$k1][$k2]['disabled'] = $p['disabled']; + $enabled_rules[$k1][$k2]['flowbits'] = $p['flowbits']; + } + } + unset($policy_rules, $policy, $p); + } + + // Process any enablesid or disablesid modifications for the selected rules. + suricata_modify_sids($enabled_rules, $suricatacfg); + + // Write the enforcing rules file to the Suricata interface's "rules" directory. + suricata_write_enforcing_rules_file($enabled_rules, "{$suricatacfgdir}/rules/{$suricata_enforcing_rules_file}"); + + // If auto-flowbit resolution is enabled, generate the dependent flowbits rules file. + if ($suricatacfg['autoflowbitrules'] == 'on') { + log_error('[Suricata] Enabling any flowbit-required rules for: ' . suricata_get_friendly_interface($suricatacfg['interface']) . '...'); + $fbits = suricata_resolve_flowbits($all_rules, $enabled_rules); + + // Check for and disable any flowbit-required rules the user has + // manually forced to a disabled state. + suricata_modify_sids($fbits, $suricatacfg); + suricata_write_flowbit_rules_file($fbits, "{$suricatacfgdir}/rules/{$flowbit_rules_file}"); + unset($fbits); + } else + // Just put an empty file to always have the file present + suricata_write_flowbit_rules_file(array(), "{$suricatacfgdir}/rules/{$flowbit_rules_file}"); + } else { + suricata_write_enforcing_rules_file(array(), "{$suricatacfgdir}/rules/{$suricata_enforcing_rules_file}"); + suricata_write_flowbit_rules_file(array(), "{$suricatacfgdir}/rules/{$flowbit_rules_file}"); + } + + if (!empty($suricatacfg['customrules'])) { + @file_put_contents("{$suricatacfgdir}/rules/custom.rules", base64_decode($suricatacfg['customrules'])); + $no_rules_defined = false; + } + else + @file_put_contents("{$suricatacfgdir}/rules/custom.rules", ""); + + // Log a warning if the interface has no rules defined or enabled + if ($no_rules_defined) + log_error(gettext("[Suricata] Warning - no text rules selected for: " . suricata_get_friendly_interface($suricatacfg['interface']) . " ...")); + + // Build a new sid-msg.map file from the enabled + // rules and copy it to the interface directory. + log_error(gettext("[Suricata] Building new sig-msg.map file for " . suricata_get_friendly_interface($suricatacfg['interface']) . "...")); + suricata_build_sid_msg_map("{$suricatacfgdir}/rules/", "{$suricatacfgdir}/sid-msg.map"); +} + + +function suricata_write_enforcing_rules_file($rule_map, $rule_path) { + + /************************************************/ + /* This function takes a rules map array of */ + /* the rules chosen for the active rule set */ + /* and writes them out to the passed path. */ + /* */ + /* $rule_map --> Rules Map array of rules to */ + /* write to disk. */ + /* */ + /* $rule_path --> filename or directory where */ + /* rules file will be written. */ + /************************************************/ + + $rule_file = "/" . ENFORCING_RULES_FILENAME; + + // See if we were passed a directory or full + // filename to write the rules to, and adjust + // the destination argument accordingly. + if (is_dir($rule_path)) + $rule_file = rtrim($rule_path, '/').$rule_file; + else + $rule_file = $rule_path; + + // If the $rule_map array is empty, then exit. + if (empty($rule_map)) { + file_put_contents($rule_file, ""); + return; + } + + $fp = fopen($rule_file, "w"); + if ($fp) { + @fwrite($fp, "# These rules are your current set of enforced rules for the protected\n"); + @fwrite($fp, "# interface. This list was compiled from the categories selected on the\n"); + @fwrite($fp, "# CATEGORIES tab of the Suricata configuration for the interface and/or any\n"); + @fwrite($fp, "# chosen Snort VRT pre-defined IPS Policy.\n#\n"); + @fwrite($fp, "# Any enablesid or disablesid customizations you made have been applied\n"); + @fwrite($fp, "# to the rules in this file.\n\n"); + foreach ($rule_map as $rulem) { + foreach ($rulem as $rulem2) { + /* No reason to write disabled rules to enforcing file, so skip them. */ + if ($rulem2['disabled'] == 1) + continue; + @fwrite($fp, $rulem2['rule']); + } + } + fclose($fp); + } +} + +function suricata_create_rc() { + + /************************************************************/ + /* This function builds the /usr/local/etc/rc.d/suricata.sh */ + /* shell script for starting and stopping Suricata. The */ + /* script is rebuilt on each package sync operation and */ + /* after any changes to suricata.conf saved in the GUI. */ + /************************************************************/ + + global $config, $g; + + $suricatadir = SURICATADIR; + $suricatalogdir = SURICATALOGDIR; + $rcdir = RCFILEPREFIX; + + // If no interfaces are configured for Suricata, exit + if (!is_array($config['installedpackages']['suricata']['rule'])) + return; + $suricataconf = $config['installedpackages']['suricata']['rule']; + if (empty($suricataconf)) + return; + + // At least one interface is configured, so OK + $start_suricata_iface_start = array(); + $start_suricata_iface_stop = array(); + + // Loop thru each configured interface and build + // the shell script. + foreach ($suricataconf as $value) { + $suricata_uuid = $value['uuid']; + $if_real = suricata_get_real_interface($value['interface']); + + $start_barnyard = <</dev/null; do + sleep 1 + time=\$((time+1)) + if [ \$time -gt \$timeout ]; then + break + fi + done + if [ -f /var/run/barnyard2_{$if_real}{$suricata_uuid}.pid ]; then + /bin/rm /var/run/barnyard2_{$if_real}{$suricata_uuid}.pid + fi + fi + /usr/bin/logger -p daemon.info -i -t SuricataStartup "Barnyard2 START for {$value['descr']}({$suricata_uuid}_{$if_real})..." + /usr/local/bin/barnyard2 -r {$suricata_uuid} -f unified2.alert --pid-path {$g['varrun_path']} --nolock-pidfile -c {$suricatadir}suricata_{$suricata_uuid}_{$if_real}/barnyard2.conf -d {$suricatalogdir}suricata_{$if_real}{$suricata_uuid} -D -q + +EOE; + $stop_barnyard2 = <</dev/null; do + sleep 1 + time=\$((time+1)) + if [ \$time -gt \$timeout ]; then + break + fi + done + if [ -f /var/run/barnyard2_{$if_real}{$suricata_uuid}.pid ]; then + /bin/rm /var/run/barnyard2_{$if_real}{$suricata_uuid}.pid + fi + else + pid=`/bin/pgrep -f "barnyard2 -r {$suricata_uuid} "` + if [ ! -z \$pid ]; then + /bin/pkill -TERM -f "barnyard2 -r {$suricata_uuid} " + time=0 timeout=30 + while /bin/kill -TERM \$pid 2>/dev/null; do + sleep 1 + time=\$((time+1)) + if [ \$time -gt \$timeout ]; then + break + fi + done + fi + fi + +EOE; + if ($value['barnyard_enable'] == 'on') + $start_barnyard2 = $start_barnyard; + else + $start_barnyard2 = $stop_barnyard2; + + $start_suricata_iface_start[] = <</dev/null; do + sleep 1 + time=\$((time+1)) + if [ \$time -gt \$timeout ]; then + break + fi + done + if [ -f /var/run/suricata_{$if_real}{$suricata_uuid}.pid ]; then + /bin/rm /var/run/suricata_{$if_real}{$suricata_uuid}.pid + fi + else + pid=`/bin/pgrep -f "suricata -i {$if_real} "` + if [ ! -z \$pid ]; then + /usr/bin/logger -p daemon.info -i -t SuricataStartup "Suricata STOP for {$value['descr']}({$suricata_uuid}_{$if_real})..." + /bin/pkill -TERM -f "suricata -i {$if_real} " + time=0 timeout=30 + while /bin/kill -TERM \$pid 2>/dev/null; do + sleep 1 + time=\$((time+1)) + if [ \$time -gt \$timeout ]; then + break + fi + done + fi + fi + + sleep 2 + {$stop_barnyard2} + +EOE; + } + + $rc_start = implode("\n", $start_suricata_iface_start); + $rc_stop = implode("\n", $start_suricata_iface_stop); + + $suricata_sh_text = << Suricata instance info in */ + /* the config.xml master config */ + /* file. */ + /************************************************************/ + + global $config, $g; + + $suricatadir = SURICATADIR; + $suricatalogdir = SURICATALOGDIR; + $flowbit_rules_file = FLOWBITS_FILENAME; + $suricata_enforcing_rules_file = ENFORCING_RULES_FILENAME; + $if_real = suricata_get_real_interface($suricatacfg['interface']); + $suricata_uuid = $suricatacfg['uuid']; + $suricatacfgdir = "{$suricatadir}suricata_{$suricata_uuid}_{$if_real}"; + + conf_mount_rw(); + + if (!is_array($config['installedpackages']['suricata']['rule'])) + return; + + // Pull in the PHP code that generates the suricata.yaml file + // variables that will be substitued further down below. + include("/usr/local/www/suricata/suricata_generate_yaml.php"); + + // Pull in the boilerplate template for the suricata.yaml + // configuration file. The contents of the template along + // with substituted variables is stored in $suricata_conf_text + // (which is defined in the included file). + include("/usr/local/pkg/suricata/suricata_yaml_template.inc"); + + // Now write out the conf file using $suricata_conf_text contents + $conf = fopen("{$suricatacfgdir}/suricata.yaml", "w"); + if(!$conf) { + log_error("Could not open {$suricatacfgdir}/suricata.yaml for writing."); + return -1; + } + fwrite($conf, $suricata_conf_text); + fclose($conf); + + conf_mount_ro(); +} + +?> diff --git a/config/suricata/suricata.priv.inc b/config/suricata/suricata.priv.inc new file mode 100644 index 00000000..a8f9807a --- /dev/null +++ b/config/suricata/suricata.priv.inc @@ -0,0 +1,46 @@ + \ No newline at end of file diff --git a/config/suricata/suricata.xml b/config/suricata/suricata.xml new file mode 100644 index 00000000..4c3e3e67 --- /dev/null +++ b/config/suricata/suricata.xml @@ -0,0 +1,241 @@ + + + + + + + + Suricata IDS/IPS Package + None + suricata + 1.4.6 pkg v0.1-BETA + Services: Suricata IDS + /usr/local/pkg/suricata/suricata.inc + + Suricata + Configure Suricata settings +
    Services
    + /suricata/suricata_interfaces.php +
    + + suricata + suricata.sh + suricata + Suricata IDS/IPS Daemon + + + /etc/inc/priv/ + 077 + http://www.pfsense.com/packages/config/suricata/suricata.priv.inc + + + http://www.pfsense.com/packages/config/suricata/suricata.inc + /usr/local/pkg/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_check_cron_misc.inc + /usr/local/pkg/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_yaml_template.inc + /usr/local/pkg/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_generate_yaml.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_download_updates.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_global.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_alerts.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_interfaces.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_interfaces_edit.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_download_rules.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_check_for_rule_updates.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_log_view.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_rules.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_rulesets.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_rules_flowbits.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_rules_edit.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_flow_stream.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_os_policy_engine.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_import_aliases.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_select_alias.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_suppress.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_suppress_edit.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_logs_browser.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_list_view.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_app_parsers.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_libhtp_policy_engine.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_uninstall.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_define_vars.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_barnyard.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_post_install.php + /usr/local/www/suricata/ + 0755 + + + http://www.pfsense.com/packages/config/suricata/suricata_uninstall.php + /usr/local/www/suricata/ + 0755 + + + ['installedpackages']['suricata'] + + + + + + + + + + + + sync_suricata_package_config(); + + + +
    diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php new file mode 100644 index 00000000..d21f7388 --- /dev/null +++ b/config/suricata/suricata_alerts.php @@ -0,0 +1,578 @@ + suppression entry text */ + /* */ + /* Returns: */ + /* TRUE if successful or FALSE on failure */ + /************************************************/ + + global $config, $a_instance, $instanceid; + + if (!is_array($config['installedpackages']['suricata']['suppress'])) + $config['installedpackages']['suricata']['suppress'] = array(); + if (!is_array($config['installedpackages']['suricata']['suppress']['item'])) + $config['installedpackages']['suricata']['suppress']['item'] = array(); + $a_suppress = &$config['installedpackages']['suricata']['suppress']['item']; + + $found_list = false; + + /* If no Suppress List is set for the interface, then create one with the interface name */ + if (empty($a_instance[$instanceid]['suppresslistname']) || $a_instance[$instanceid]['suppresslistname'] == 'default') { + $s_list = array(); + $s_list['uuid'] = uniqid(); + $s_list['name'] = $a_instance[$instanceid]['interface'] . "suppress" . "_" . $s_list['uuid']; + $s_list['descr'] = "Auto-generated list for Alert suppression"; + $s_list['suppresspassthru'] = base64_encode($suppress); + $a_suppress[] = $s_list; + $a_instance[$instanceid]['suppresslistname'] = $s_list['name']; + $found_list = true; + } else { + /* If we get here, a Suppress List is defined for the interface so see if we can find it */ + foreach ($a_suppress as $a_id => $alist) { + if ($alist['name'] == $a_instance[$instanceid]['suppresslistname']) { + $found_list = true; + if (!empty($alist['suppresspassthru'])) { + $tmplist = base64_decode($alist['suppresspassthru']); + $tmplist .= "\n{$suppress}"; + $alist['suppresspassthru'] = base64_encode($tmplist); + $a_suppress[$a_id] = $alist; + } + else { + $alist['suppresspassthru'] = base64_encode($suppress); + $a_suppress[$a_id] = $alist; + } + } + } + } + + /* If we created a new list or updated an existing one, save the change, */ + /* tell Snort to load it, and return true; otherwise return false. */ + if ($found_list) { + write_config(); + sync_suricata_package_config(); + suricata_reload_config($a_instance[$instanceid]); + return true; + } + else + return false; +} + +if ($_GET['instance']) + $instanceid = $_GET['instance']; +if ($_POST['instance']) + $instanceid = $_POST['instance']; +if (empty($instanceid)) + $instanceid = 0; + +if (!is_array($config['installedpackages']['suricata']['rule'])) + $config['installedpackages']['suricata']['rule'] = array(); +$a_instance = &$config['installedpackages']['suricata']['rule']; +$suricata_uuid = $a_instance[$instanceid]['uuid']; +$if_real = suricata_get_real_interface($a_instance[$instanceid]['interface']); +$suricatalogdir = SURICATALOGDIR; + +// Load up the arrays of force-enabled and force-disabled SIDs +$enablesid = suricata_load_sid_mods($a_instance[$instanceid]['rule_sid_on']); +$disablesid = suricata_load_sid_mods($a_instance[$instanceid]['rule_sid_off']); + +$pconfig = array(); +if (is_array($config['installedpackages']['suricata']['alertsblocks'])) { + $pconfig['arefresh'] = $config['installedpackages']['suricata']['alertsblocks']['arefresh']; + $pconfig['alertnumber'] = $config['installedpackages']['suricata']['alertsblocks']['alertnumber']; +} + +if (empty($pconfig['alertnumber'])) + $pconfig['alertnumber'] = '250'; +if (empty($pconfig['arefresh'])) + $pconfig['arefresh'] = 'off'; +$anentries = $pconfig['alertnumber']; + +if ($_POST['save']) { + if (!is_array($config['installedpackages']['suricata']['alertsblocks'])) + $config['installedpackages']['suricata']['alertsblocks'] = array(); + $config['installedpackages']['suricata']['alertsblocks']['arefresh'] = $_POST['arefresh'] ? 'on' : 'off'; + $config['installedpackages']['suricata']['alertsblocks']['alertnumber'] = $_POST['alertnumber']; + + write_config(); + + header("Location: /suricata/suricata_alerts.php?instance={$instanceid}"); + exit; +} + +//if ($_POST['todelete'] || $_GET['todelete']) { +// $ip = ""; +// if($_POST['todelete']) +// $ip = $_POST['todelete']; +// else if($_GET['todelete']) +// $ip = $_GET['todelete']; +// if (is_ipaddr($ip)) { +// exec("/sbin/pfctl -t snort2c -T delete {$ip}"); +// $savemsg = gettext("Host IP address {$ip} has been removed from the Blocked Table."); +// } +//} + +if ($_GET['act'] == "addsuppress" && is_numeric($_GET['sidid']) && is_numeric($_GET['gen_id'])) { + if (empty($_GET['descr'])) + $suppress = "suppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}\n"; + else + $suppress = "#{$_GET['descr']}\nsuppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}\n"; + + /* Add the new entry to the Suppress List */ + if (suricata_add_supplist_entry($suppress)) + $savemsg = gettext("An entry for 'suppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}' has been added to the Suppress List."); + else + $input_errors[] = gettext("Suppress List '{$a_instance[$instanceid]['suppresslistname']}' is defined for this interface, but it could not be found!"); +} + +if (($_GET['act'] == "addsuppress_srcip" || $_GET['act'] == "addsuppress_dstip") && is_numeric($_GET['sidid']) && is_numeric($_GET['gen_id'])) { + if ($_GET['act'] == "addsuppress_srcip") + $method = "by_src"; + else + $method = "by_dst"; + + /* Check for valid IP addresses, exit if not valid */ + if (is_ipaddr($_GET['ip']) || is_ipaddrv6($_GET['ip'])) { + if (empty($_GET['descr'])) + $suppress = "suppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}, track {$method}, ip {$_GET['ip']}\n"; + else + $suppress = "#{$_GET['descr']}\nsuppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}, track {$method}, ip {$_GET['ip']}\n"; + } + else { + header("Location: /suricata/suricata_alerts.php?instance={$instanceid}"); + exit; + } + + /* Add the new entry to the Suppress List */ + if (suricata_add_supplist_entry($suppress)) + $savemsg = gettext("An entry for 'suppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}, track {$method}, ip {$_GET['ip']}' has been added to the Suppress List."); + else + /* We did not find the defined list, so notify the user with an error */ + $input_errors[] = gettext("Suppress List '{$a_instance[$instanceid]['suppresslistname']}' is defined for this interface, but it could not be found!"); +} + +if ($_GET['act'] == "togglesid" && is_numeric($_GET['sidid']) && is_numeric($_GET['gen_id'])) { + // Get the GID tag embedded in the clicked rule icon. + $gid = $_GET['gen_id']; + + // Get the SID tag embedded in the clicked rule icon. + $sid= $_GET['sidid']; + + // See if the target SID is in our list of modified SIDs, + // and toggle it if present. + if (isset($enablesid[$gid][$sid])) + unset($enablesid[$gid][$sid]); + if (isset($disablesid[$gid][$sid])) + unset($disablesid[$gid][$sid]); + elseif (!isset($disablesid[$gid][$sid])) + $disablesid[$gid][$sid] = "disablesid"; + + // Write the updated enablesid and disablesid values to the config file. + $tmp = ""; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_instance[$instanceid]['rule_sid_on'] = $tmp; + else + unset($a_instance[$instanceid]['rule_sid_on']); + + $tmp = ""; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_instance[$instanceid]['rule_sid_off'] = $tmp; + else + unset($a_instance[$instanceid]['rule_sid_off']); + + /* Update the config.xml file. */ + write_config(); + + /*************************************************/ + /* Update the suricata.yaml file and rebuild the */ + /* rules for this interface. */ + /*************************************************/ + $rebuild_rules = true; + suricata_generate_yaml($a_instance[$instanceid]); + $rebuild_rules = false; + + /* Signal Suricata to live-load the new rules */ + suricata_reload_config($a_instance[$instanceid]); + + $savemsg = gettext("The state for rule {$gid}:{$sid} has been modified. Suricata is 'live-reloading' the new rules list. Please wait at least 30 secs for the process to complete before toggling additional rules."); +} + +if ($_GET['action'] == "clear" || $_POST['delete']) { + conf_mount_rw(); + suricata_post_delete_logs($suricata_uuid); + $fd = @fopen("{$suricatalogdir}suricata_{$if_real}{$suricata_uuid}/alerts.log", "w+"); + if ($fd) + fclose($fd); + conf_mount_ro(); + /* XXX: This is needed if suricata is run as suricata user */ + mwexec('/bin/chmod 660 {$suricatalogdir}*', true); + if (file_exists("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) + mwexec("/bin/pkill -HUP -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid -a"); + header("Location: /suricata/suricata_alerts.php?instance={$instanceid}"); + exit; +} + +if ($_POST['download']) { + $save_date = exec('/bin/date "+%Y-%m-%d-%H-%M-%S"'); + $file_name = "suricata_logs_{$save_date}_{$if_real}.tar.gz"; + exec("cd {$suricatalogdir}suricata_{$if_real}{$suricata_uuid} && /usr/bin/tar -czf /tmp/{$file_name} *"); + + if (file_exists("/tmp/{$file_name}")) { + ob_start(); //important or other posts will fail + if (isset($_SERVER['HTTPS'])) { + header('Pragma: '); + header('Cache-Control: '); + } else { + header("Pragma: private"); + header("Cache-Control: private, must-revalidate"); + } + header("Content-Type: application/octet-stream"); + header("Content-length: " . filesize("/tmp/{$file_name}")); + header("Content-disposition: attachment; filename = {$file_name}"); + ob_end_clean(); //important or other post will fail + readfile("/tmp/{$file_name}"); + + // Clean up the temp file + @unlink("/tmp/{$file_name}"); + } + else + $savemsg = gettext("An error occurred while creating archive"); +} + +/* Load up an array with the current Suppression List GID,SID values */ +$supplist = suricata_load_suppress_sigs($a_instance[$instanceid], true); + +$pgtitle = gettext("Suricata: Alerts"); +include_once("head.inc"); + +?> + + + +\n"; +?> + +' . $pgtitle . '

    ';} + /* Display Alert message */ + if ($input_errors) { + print_input_errors($input_errors); // TODO: add checks + } + if ($savemsg) { + print_info_box($savemsg); + } +?> +
    + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    +    +
    +    + + +
    + + > + ', '', '', ''); ?>   + + ', '', '', ''); ?> +
       +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /tmp/alerts_{$suricata_uuid}"); + if (file_exists("/tmp/alerts_{$suricata_uuid}")) { + $tmpblocked = array_flip(suricata_get_blocked_ips()); + $counter = 0; + /* 0 1 2 3 4 5 6 7 8 9 10 11 12 */ + /* File format timestamp,action,sig_generator,sig_id,sig_rev,msg,classification,priority,proto,src,srcport,dst,dstport */ + $fd = fopen("/tmp/alerts_{$suricata_uuid}", "r"); + while (($fields = fgetcsv($fd, 1000, ',', '"')) !== FALSE) { + if(count($fields) < 12) + continue; + + /* Time */ + $alert_time = substr($fields[0], strpos($fields[0], '-')+1, -7); + /* Date */ + $alert_date = trim(substr($fields[0], 0, strpos($fields[0], '-'))); + /* Description */ + $alert_descr = $fields[5]; + $alert_descr_url = urlencode($fields[5]); + /* Priority */ + $alert_priority = $fields[7]; + /* Protocol */ + $alert_proto = $fields[8]; + /* IP SRC */ + $alert_ip_src = $fields[9]; + /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ + $alert_ip_src = str_replace(":", ":​", $alert_ip_src); + /* Add Reverse DNS lookup icons */ + $alert_ip_src .= "
    "; + $alert_ip_src .= " "; + $alert_ip_src .= ""; + $alert_ip_src .= ""; + /* Add icons for auto-adding to Suppress List if appropriate */ + if (!suricata_is_alert_globally_suppressed($supplist, $fields[2], $fields[3]) && + !isset($supplist[$fields[2]][$fields[3]]['by_src'][$fields[9]])) { + $alert_ip_src .= "  "; + $alert_ip_src .= ""; + } + elseif (isset($supplist[$fields[2]][$fields[3]]['by_src'][$fields[9]])) { + $alert_ip_src .= "  "; + } + /* Add icon for auto-removing from Blocked Table if required */ + if (isset($tmpblocked[$fields[9]])) { + $alert_ip_src .= " "; + $alert_ip_src .= " + \"Remove"; + } + /* IP SRC Port */ + $alert_src_p = $fields[10]; + /* IP Destination */ + $alert_ip_dst = $fields[11]; + /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ + $alert_ip_dst = str_replace(":", ":​", $alert_ip_dst); + /* Add Reverse DNS lookup icons */ + $alert_ip_dst .= "
    "; + $alert_ip_dst .= " "; + $alert_ip_dst .= ""; + $alert_ip_dst .= ""; + /* Add icons for auto-adding to Suppress List if appropriate */ + if (!suricata_is_alert_globally_suppressed($supplist, $fields[2], $fields[3]) && + !isset($supplist[$fields[2]][$fields[3]]['by_dst'][$fields[1]])) { + $alert_ip_dst .= "  "; + $alert_ip_dst .= ""; + } + elseif (isset($supplist[$fields[2]][$fields[3]]['by_dst'][$fields[11]])) { + $alert_ip_dst .= "  "; + } + /* Add icon for auto-removing from Blocked Table if required */ + if (isset($tmpblocked[$fields[11]])) { + $alert_ip_dst .= " "; + $alert_ip_dst .= " + \"Remove"; + } + /* IP DST Port */ + $alert_dst_p = $fields[12]; + /* SID */ + $alert_sid_str = "{$fields[2]}:{$fields[3]}"; + if (!suricata_is_alert_globally_suppressed($supplist, $fields[2], $fields[3])) { + $sidsupplink = ""; + $sidsupplink .= ""; + } + else { + $sidsupplink = ""; + } + /* Add icon for toggling rule state */ + if (isset($disablesid[$fields[2]][$fields[3]])) { + $sid_dsbl_link = ""; + $sid_dsbl_link .= ""; + } + else { + $sid_dsbl_link = ""; + $sid_dsbl_link .= ""; + } + /* DESCRIPTION */ + $alert_class = $fields[6]; + + echo " + + + + + + + + + + + \n"; + + $counter++; + } + fclose($fd); + @unlink("/tmp/alerts_{$suricata_uuid}"); + } +} +?> + +
    {$alert_date}
    {$alert_time}
    {$alert_priority}{$alert_proto}{$alert_class}{$alert_ip_src}{$alert_src_p}{$alert_ip_dst}{$alert_dst_p}{$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link}
    {$alert_descr}
    +
    +
    +
    +
    + + + + diff --git a/config/suricata/suricata_app_parsers.php b/config/suricata/suricata_app_parsers.php new file mode 100644 index 00000000..def78f94 --- /dev/null +++ b/config/suricata/suricata_app_parsers.php @@ -0,0 +1,340 @@ + "default", "bind_to" => "all", "personality" => "IDS", + "request-body-limit" => 4096, "response-body-limit" => 4096, + "double-decode-path" => "no", "double-decode-query" => "no" ); + $pconfig['libhtp_policy']['item'] = array(); + $pconfig['libhtp_policy']['item'][] = $default; + if (!is_array($a_nat[$id]['libhtp_policy']['item'])) + $a_nat[$id]['libhtp_policy']['item'] = array(); + $a_nat[$id]['libhtp_policy']['item'][] = $default; + write_config(); + $libhtp_engine_next_id++; + } + else + $pconfig['libhtp_policy'] = $a_nat[$id]['libhtp_policy']; +} + +// Check for returned "selected alias" if action is import +if ($_GET['act'] == "import" && isset($_GET['varname']) && !empty($_GET['varvalue'])) { + $pconfig[$_GET['varname']] = $_GET['varvalue']; +} + +if ($_GET['act'] && isset($_GET['eng_id'])) { + + $natent = array(); + $natent = $pconfig; + + if ($_GET['act'] == "del_libhtp_policy") + unset($natent['libhtp_policy']['item'][$_GET['eng_id']]); + + if (isset($id) && $a_nat[$id]) { + $a_nat[$id] = $natent; + write_config(); + } + + header("Location: /suricata/suricata_app_parsers.php?id=$id"); + exit; +} + +if ($_POST['ResetAll']) { + + /* Reset all the settings to defaults */ + $pconfig['asn1_max_frames'] = "256"; + + /* Log a message at the top of the page to inform the user */ + $savemsg = gettext("All flow and stream settings have been reset to their defaults."); +} +elseif ($_POST['Submit']) { + $natent = array(); + $natent = $pconfig; + + // TODO: validate input values + if (!is_numeric($_POST['asn1_max_frames'] ) || $_POST['asn1_max_frames'] < 1) + $input_errors[] = gettext("The value for 'ASN1 Max Frames' must be all numbers and greater than 0."); + + /* if no errors write to conf */ + if (!$input_errors) { + if ($_POST['asn1_max_frames'] != "") { $natent['asn1_max_frames'] = $_POST['asn1_max_frames']; }else{ $natent['asn1_max_frames'] = "256"; } + + /**************************************************/ + /* If we have a valid rule ID, save configuration */ + /* then update the suricata.conf file and rebuild */ + /* the rules for this interface. */ + /**************************************************/ + if (isset($id) && $a_nat[$id]) { + $a_nat[$id] = $natent; + write_config(); + $rebuild_rules = true; + suricata_generate_yaml($natent); + $rebuild_rules = false; + } + + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: suricata_app_parsers.php?id=$id"); + exit; + } +} + +$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} - Layer 7 Application Parsers"); +include_once("head.inc"); +?> + + + +' . $pgtitle . '

    ';} + + + /* Display Alert message */ + + if ($input_errors) { + print_input_errors($input_errors); // TODO: add checks + } + + if ($savemsg) { + print_info_box($savemsg); + } + +?> + + + + +
    + +'; + echo ' +
    +
    '; + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface "); + $tab_array = array(); + $tab_array[] = array($menu_iface . gettext("Settings"), false, "/suricata/suricata_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), false, "/suricata/suricata_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), false, "/suricata/suricata_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Flow/Stream"), false, "/suricata/suricata_flow_stream.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("App Parsers"), true, "/suricata/suricata_app_parsers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), false, "/suricata/suricata_define_vars.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/suricata/suricata_barnyard.php?id={$id}"); + display_top_tabs($tab_array); +?> +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +   + " . gettext("256") . "" . gettext(" frames."); ?>

    + +
    + + + + + + + + + + + + + + $v): ?> + + + + + + +
    + "> + + ">
    + "> + "all") : ?> + + "> + + "> + +
    +
      + "> +      + >
      + +
    +
    +
    +
    + + + + diff --git a/config/suricata/suricata_barnyard.php b/config/suricata/suricata_barnyard.php new file mode 100644 index 00000000..a65c5402 --- /dev/null +++ b/config/suricata/suricata_barnyard.php @@ -0,0 +1,503 @@ + 'on') { + if (empty($_POST['barnyard_syslog_dport']) || !is_numeric($_POST['barnyard_syslog_dport'])) + $input_errors[] = gettext("Please provide a valid number between 1 and 65535 for the Syslog Remote Port."); + if (empty($_POST['barnyard_syslog_rhost'])) + $input_errors[] = gettext("Please provide a valid hostname or IP address for the Syslog Remote Host."); + } + + // if no errors write to conf + if (!$input_errors) { + $natent = array(); + /* repost the options already in conf */ + $natent = $pconfig; + + $natent['barnyard_enable'] = $_POST['barnyard_enable'] ? 'on' : 'off'; + $natent['barnyard_show_year'] = $_POST['barnyard_show_year'] ? 'on' : 'off'; + $natent['barnyard_archive_enable'] = $_POST['barnyard_archive_enable'] ? 'on' : 'off'; + $natent['barnyard_dump_payload'] = $_POST['barnyard_dump_payload'] ? 'on' : 'off'; + $natent['barnyard_obfuscate_ip'] = $_POST['barnyard_obfuscate_ip'] ? 'on' : 'off'; + $natent['barnyard_mysql_enable'] = $_POST['barnyard_mysql_enable'] ? 'on' : 'off'; + $natent['barnyard_syslog_enable'] = $_POST['barnyard_syslog_enable'] ? 'on' : 'off'; + $natent['barnyard_syslog_local'] = $_POST['barnyard_syslog_local'] ? 'on' : 'off'; + $natent['barnyard_syslog_opmode'] = $_POST['barnyard_syslog_opmode']; + $natent['barnyard_syslog_proto'] = $_POST['barnyard_syslog_proto']; + + if ($_POST['barnyard_sensor_name']) $natent['barnyard_sensor_name'] = $_POST['barnyard_sensor_name']; else unset($natent['barnyard_sensor_name']); + if ($_POST['barnyard_dbhost']) $natent['barnyard_dbhost'] = $_POST['barnyard_dbhost']; else unset($natent['barnyard_dbhost']); + if ($_POST['barnyard_dbname']) $natent['barnyard_dbname'] = $_POST['barnyard_dbname']; else unset($natent['barnyard_dbname']); + if ($_POST['barnyard_dbuser']) $natent['barnyard_dbuser'] = $_POST['barnyard_dbuser']; else unset($natent['barnyard_dbuser']); + if ($_POST['barnyard_dbpwd']) $natent['barnyard_dbpwd'] = base64_encode($_POST['barnyard_dbpwd']); else unset($natent['barnyard_dbpwd']); + if ($_POST['barnyard_syslog_rhost']) $natent['barnyard_syslog_rhost'] = $_POST['barnyard_syslog_rhost']; else unset($natent['barnyard_syslog_rhost']); + if ($_POST['barnyard_syslog_dport']) $natent['barnyard_syslog_dport'] = $_POST['barnyard_syslog_dport']; else $natent['barnyard_syslog_dport'] = '514'; + if ($_POST['barnyard_syslog_facility']) $natent['barnyard_syslog_facility'] = $_POST['barnyard_syslog_facility']; else $natent['barnyard_syslog_facility'] = 'LOG_USER'; + if ($_POST['barnyard_syslog_priority']) $natent['barnyard_syslog_priority'] = $_POST['barnyard_syslog_priority']; else $natent['barnyard_syslog_priority'] = 'LOG_INFO'; + if ($_POST['barnconfigpassthru']) $natent['barnconfigpassthru'] = base64_encode($_POST['barnconfigpassthru']); else unset($natent['barnconfigpassthru']); + + if (isset($id) && $a_nat[$id]) + $a_nat[$id] = $natent; + else { + $a_nat[] = $natent; + } + + write_config(); + + // No need to rebuild rules if just toggling Barnyard2 on or off + $rebuild_rules = false; + sync_suricata_package_config(); + + // Signal any running barnyard2 instance on this interface to + // reload its configuration to pick up any changes made. + suricata_barnyard_reload_config($a_nat[$id], "HUP"); + + // after click go to this page + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: suricata_barnyard.php?id=$id"); + exit; + } +} + +$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} - Barnyard2 Settings"); +include_once("head.inc"); + +?> + + + +' . $pgtitle . '

    ';}?> + + + +
    + +'; + echo ' + + + +
    +
    '; + $tab_array = array(); + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface "); + $tab_array[] = array($menu_iface . gettext("Settings"), false, "/suricata/suricata_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), false, "/suricata/suricata_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), false, "/suricata/suricata_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Flow/Stream"), false, "/suricata/suricata_flow_stream.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("App Parsers"), false, "/suricata/suricata_app_parsers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), false, "/suricata/suricata_define_vars.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), true, "/suricata/suricata_barnyard.php?id={$id}"); + display_top_tabs($tab_array); +?> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + onClick="enable_change(false)"/> +
    +
    + /> + " . gettext("Checked") . ""; ?> +
    + /> + " . gettext("Checked") . ""; ?>
    + +
    + /> + " . gettext("Not Checked") . ""; ?>
    +
    + /> + " . gettext("Not Checked") . ""; ?> +
    + +   +
    + + onClick="toggle_mySQL()"/>
    +
    + +   +
    + +   +
    + +   +
    + +   +
    + + onClick="toggle_syslog()"/> +
    +
    + /> +  /> +    +

    + +
    + + onClick="toggle_local_syslog()"/> +
    +
    + +   +
    + +  " . gettext("514") . "."; ?> +
    + /> +  /> +    + " . gettext("UDP") . "."; ?> +
    +    + " . gettext("LOG_USER") . "."; ?> +
    +    + " . gettext("LOG_INFO") . "."; ?> +
    +
    +
      + +
      +
    +
    +
    +
    +
    + + + + + + diff --git a/config/suricata/suricata_check_cron_misc.inc b/config/suricata/suricata_check_cron_misc.inc new file mode 100644 index 00000000..88dfd5ff --- /dev/null +++ b/config/suricata/suricata_check_cron_misc.inc @@ -0,0 +1,109 @@ + 1, +// 'KB' => 1024, +// 'MB' => 1024 * 1024, +// 'GB' => 1024 * 1024 * 1024, +// 'TB' => 1024 * 1024 * 1024 * 1024, +// 'PB' => 1024 * 1024 * 1024 * 1024 * 1024, + + +/* chk if snort log dir is full if so clear it */ +$suricataloglimit = $config['installedpackages']['suricata']['config'][0]['suricataloglimit']; +$suricataloglimitsize = $config['installedpackages']['suricata']['config'][0]['suricataloglimitsize']; + +if ($g['booting']==true) + return; + +if ($suricataloglimit == 'off') + return; + +if (!is_array($config['installedpackages']['suricata']['rule'])) + return; + +/* Convert Log Limit Size setting from MB to KB */ +$suricataloglimitsizeKB = round($suricataloglimitsize * 1024); +$suricatalogdirsizeKB = suricata_Getdirsize(SURICATALOGDIR); +if ($suricatalogdirsizeKB > 0 && $suricatalogdirsizeKB > $suricataloglimitsizeKB) { + log_error(gettext("[Suricata] Log directory size exceeds configured limit of " . number_format($suricataloglimitsize) . " MB set on Global Settings tab. All Suricata log files will be truncated.")); + conf_mount_rw(); + + /* Truncate the Rules Update Log file if it exists */ + if (file_exists(RULES_UPD_LOGFILE)) { + log_error(gettext("[Suricata] Truncating the Rules Update Log file...")); + $fd = @fopen(RULES_UPD_LOGFILE, "w+"); + if ($fd) + fclose($fd); + } + + /* Clean-up the logs for each configured Suricata instance */ + foreach ($config['installedpackages']['suricata']['rule'] as $value) { + $if_real = suricata_get_real_interface($value['interface']); + $suricata_uuid = $value['uuid']; + $suricata_log_dir = SURICATALOGDIR . "suricata_{$if_real}{$suricata_uuid}"; + log_error(gettext("[Suricata] Truncating logs for {$value['descr']} ({$if_real})...")); + suricata_post_delete_logs($suricata_uuid); + + // Initialize an array of the log files we want to prune + $logs = array ( "alerts.log", "http.log", "files-json.log", "tls.log", "stats.log" ); + + foreach ($logs as $file) { + // Truncate the log file if it exists + if (file_exists("{$suricata_log_dir}/$file")) { + $fd = @fopen("{$suricata_log_dir}/$file", "w+"); + if ($fd) + fclose($fd); + } + } + + // Check for any captured stored files and clean them up + $filelist = glob("{$suricata_log_dir}/files/*"); + if (!empty($filelist)) { + foreach ($filelist as $file) + @unlink($file); + } + + // This is needed if suricata is run as suricata user + mwexec('/bin/chmod 660 /var/log/suricata/*', true); + + // Soft-restart Suricata process to resync logging + if (file_exists("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { + log_error(gettext("[Suricata] Restarting logging on {$value['descr']} ({$if_real})...")); + mwexec("/bin/pkill -HUP -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid -a"); + } + } + conf_mount_ro(); + log_error(gettext("[Suricata] Automatic clean-up of Suricata logs completed.")); +} + +?> diff --git a/config/suricata/suricata_check_for_rule_updates.php b/config/suricata/suricata_check_for_rule_updates.php new file mode 100644 index 00000000..ec39c203 --- /dev/null +++ b/config/suricata/suricata_check_for_rule_updates.php @@ -0,0 +1,683 @@ + "OK", 202 => "Accepted", 204 => "No Content", 205 => "Reset Content", + 206 => "Partial Content", 301 => "Moved Permanently", 302 => "Found", + 305 => "Use Proxy", 307 => "Temporary Redirect", 400 => "Bad Request", + 401 => "Unauthorized", 402 => "Payment Required", 403 => "Forbidden", + 404 => "Not Found", 405 => "Method Not Allowed", 407 => "Proxy Authentication Required", + 408 => "Request Timeout", 410 => "Gone", 500 => "Internal Server Error", + 501 => "Not Implemented", 502 => "Bad Gateway", 503 => "Service Unavailable", + 504 => "Gateway Timeout", 505 => "HTTP Version Not Supported" ); + + $last_curl_error = ""; + + $fout = fopen($file_out, "wb"); + if ($fout) { + $ch = curl_init($url); + if (!$ch) + return false; + curl_setopt($ch, CURLOPT_FILE, $fout); + + // NOTE: required to suppress errors from XMLRPC due to progress bar output + if ($g['suricata_sync_in_progress']) + curl_setopt($ch, CURLOPT_HEADER, false); + else { + curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header'); + curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'read_body'); + } + + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Win64; x64; Trident/6.0)"); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); + curl_setopt($ch, CURLOPT_TIMEOUT, 0); + + // Use the system proxy server setttings if configured + if (!empty($config['system']['proxyurl'])) { + curl_setopt($ch, CURLOPT_PROXY, $config['system']['proxyurl']); + if (!empty($config['system']['proxyport'])) + curl_setopt($ch, CURLOPT_PROXYPORT, $config['system']['proxyport']); + if (!empty($config['system']['proxyuser']) && !empty($config['system']['proxypass'])) { + @curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_ANY | CURLAUTH_ANYSAFE); + curl_setopt($ch, CURLOPT_PROXYUSERPWD, "{$config['system']['proxyuser']}:{$config['system']['proxypass']}"); + } + } + + $counter = 0; + $rc = true; + // Try up to 4 times to download the file before giving up + while ($counter < 4) { + $counter++; + $rc = curl_exec($ch); + if ($rc === true) + break; + log_error(gettext("[Suricata] Rules download error: " . curl_error($ch))); + log_error(gettext("[Suricata] Will retry in 15 seconds...")); + sleep(15); + } + if ($rc === false) + $last_curl_error = curl_error($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if (isset($http_resp_msg[$http_code])) + $last_curl_error = $http_resp_msg[$http_code]; + curl_close($ch); + fclose($fout); + + // If we had to try more than once, log it + if ($counter > 1) + log_error(gettext("File '" . basename($file_out) . "' download attempts: {$counter} ...")); + return ($http_code == 200) ? true : $http_code; + } + else { + $last_curl_error = gettext("Failed to create file " . $file_out); + log_error(gettext("[Suricata] Failed to create file {$file_out} ...")); + return false; + } +} + +function suricata_check_rule_md5($file_url, $file_dst, $desc = "") { + + /**********************************************************/ + /* This function attempts to download the passed MD5 hash */ + /* file and compare its contents to the currently stored */ + /* hash file to see if a new rules file has been posted. */ + /* */ + /* On Entry: $file_url = URL for md5 hash file */ + /* $file_dst = Temp destination to store the */ + /* downloaded hash file */ + /* $desc = Short text string used to label */ + /* log messages with rules type */ + /* */ + /* Returns: TRUE if new rule file download required. */ + /* FALSE if rule download not required or an */ + /* error occurred. */ + /**********************************************************/ + + global $pkg_interface, $suricata_rules_upd_log, $last_curl_error; + + $suricatadir = SURICATADIR; + $filename_md5 = basename($file_dst); + + if ($pkg_interface <> "console") + update_status(gettext("Downloading {$desc} md5 file...")); + error_log(gettext("\tDownloading {$desc} md5 file {$filename_md5}...\n"), 3, $suricata_rules_upd_log); + $rc = suricata_download_file_url($file_url, $file_dst); + + // See if download from URL was successful + if ($rc === true) { + if ($pkg_interface <> "console") + update_status(gettext("Done downloading {$filename_md5}.")); + error_log("\tChecking {$desc} md5 file...\n", 3, $suricata_rules_upd_log); + + // check md5 hash in new file against current file to see if new download is posted + if (file_exists("{$suricatadir}{$filename_md5}")) { + $md5_check_new = file_get_contents($file_dst); + $md5_check_old = file_get_contents("{$suricatadir}{$filename_md5}"); + if ($md5_check_new == $md5_check_old) { + if ($pkg_interface <> "console") + update_status(gettext("{$desc} are up to date...")); + log_error(gettext("[Suricata] {$desc} are up to date...")); + error_log(gettext("\t{$desc} are up to date.\n"), 3, $suricata_rules_upd_log); + return false; + } + else + return true; + } + return true; + } + else { + error_log(gettext("\t{$desc} md5 download failed.\n"), 3, $suricata_rules_upd_log); + $suricata_err_msg = gettext("Server returned error code {$rc}."); + if ($pkg_interface <> "console") { + update_status(gettext("{$desc} md5 error ... Server returned error code {$rc} ...")); + update_output_window(gettext("{$desc} will not be updated.\n\t{$suricata_err_msg}")); + } + log_error(gettext("[Suricata] {$desc} md5 download failed...")); + log_error(gettext("[Suricata] Server returned error code {$rc}...")); + error_log(gettext("\t{$suricata_err_msg}\n"), 3, $suricata_rules_upd_log); + if ($pkg_interface == "console") + error_log(gettext("\tServer error message was: {$last_curl_error}\n"), 3, $suricata_rules_upd_log); + error_log(gettext("\t{$desc} will not be updated.\n"), 3, $suricata_rules_upd_log); + return false; + } +} + +function suricata_fetch_new_rules($file_url, $file_dst, $file_md5, $desc = "") { + + /**********************************************************/ + /* This function downloads the passed rules file and */ + /* compares its computed md5 hash to the passed md5 hash */ + /* to verify the file's integrity. */ + /* */ + /* On Entry: $file_url = URL of rules file */ + /* $file_dst = Temp destination to store the */ + /* downloaded rules file */ + /* $file_md5 = Expected md5 hash for the new */ + /* downloaded rules file */ + /* $desc = Short text string for use in */ + /* log messages */ + /* */ + /* Returns: TRUE if download was successful. */ + /* FALSE if download was not successful. */ + /**********************************************************/ + + global $pkg_interface, $suricata_rules_upd_log, $last_curl_error; + + $suricatadir = SURICATADIR; + $filename = basename($file_dst); + + if ($pkg_interface <> "console") + update_status(gettext("There is a new set of {$desc} posted. Downloading...")); + log_error(gettext("[Suricata] There is a new set of {$desc} posted. Downloading {$filename}...")); + error_log(gettext("\tThere is a new set of {$desc} posted.\n"), 3, $suricata_rules_upd_log); + error_log(gettext("\tDownloading file '{$filename}'...\n"), 3, $suricata_rules_upd_log); + $rc = suricata_download_file_url($file_url, $file_dst); + + // See if the download from the URL was successful + if ($rc === true) { + if ($pkg_interface <> "console") + update_status(gettext("Done downloading {$desc} file.")); + log_error("[Suricata] {$desc} file update downloaded successfully"); + error_log(gettext("\tDone downloading rules file.\n"),3, $suricata_rules_upd_log); + + // Test integrity of the rules file. Turn off update if file has wrong md5 hash + if ($file_md5 != trim(md5_file($file_dst))){ + if ($pkg_interface <> "console") + update_output_window(gettext("{$desc} file MD5 checksum failed...")); + log_error(gettext("[Suricata] {$desc} file download failed. Bad MD5 checksum...")); + log_error(gettext("[Suricata] Downloaded File MD5: " . md5_file($file_dst))); + log_error(gettext("[Suricata] Expected File MD5: {$file_md5}")); + error_log(gettext("\t{$desc} file download failed. Bad MD5 checksum.\n"), 3, $suricata_rules_upd_log); + error_log(gettext("\tDownloaded {$desc} file MD5: " . md5_file($file_dst) . "\n"), 3, $suricata_rules_upd_log); + error_log(gettext("\tExpected {$desc} file MD5: {$file_md5}\n"), 3, $suricata_rules_upd_log); + error_log(gettext("\t{$desc} file download failed. {$desc} will not be updated.\n"), 3, $suricata_rules_upd_log); + return false; + } + return true; + } + else { + if ($pkg_interface <> "console") + update_output_window(gettext("{$desc} file download failed...")); + log_error(gettext("[Suricata] {$desc} file download failed... server returned error '{$rc}'...")); + error_log(gettext("\t{$desc} file download failed. Server returned error {$rc}.\n"), 3, $suricata_rules_upd_log); + if ($pkg_interface == "console") + error_log(gettext("\tThe error text was: {$last_curl_error}\n"), 3, $suricata_rules_upd_log); + error_log(gettext("\t{$desc} will not be updated.\n"), 3, $suricata_rules_upd_log); + return false; + } + +} + +/* Start of main code */ +conf_mount_rw(); + +/* remove old $tmpfname files if present */ +if (is_dir("{$tmpfname}")) + exec("/bin/rm -r {$tmpfname}"); + +/* Make sure required suricatadirs exsist */ +exec("/bin/mkdir -p {$suricatadir}rules"); +exec("/bin/mkdir -p {$tmpfname}"); +exec("/bin/mkdir -p {$suricatalogdir}"); + +/* See if we need to automatically clear the Update Log based on 1024K size limit */ +if (file_exists($suricata_rules_upd_log)) { + if (1048576 < filesize($suricata_rules_upd_log)) + exec("/bin/rm -r {$suricata_rules_upd_log}"); +} + +/* Log start time for this rules update */ +error_log(gettext("Starting rules update... Time: " . date("Y-m-d H:i:s") . "\n"), 3, $suricata_rules_upd_log); +$last_curl_error = ""; + +/* Check for and download any new Emerging Threats Rules sigs */ +if ($emergingthreats == 'on') { + if (suricata_check_rule_md5("{$emergingthreats_url}{$emergingthreats_filename_md5}", "{$tmpfname}/{$emergingthreats_filename_md5}", "{$et_name} rules")) { + /* download Emerging Threats rules file */ + $file_md5 = trim(file_get_contents("{$tmpfname}/{$emergingthreats_filename_md5}")); + if (!suricata_fetch_new_rules("{$emergingthreats_url}{$emergingthreats_filename}", "{$tmpfname}/{$emergingthreats_filename}", $file_md5, "{$et_name} rules")) + $emergingthreats = 'off'; + } + else + $emergingthreats = 'off'; +} + +/* Check for and download any new Snort VRT sigs */ +if ($snortdownload == 'on') { + if (suricata_check_rule_md5("{$snort_rule_url}{$snort_filename_md5}/{$oinkid}/", "{$tmpfname}/{$snort_filename_md5}", "Snort VRT rules")) { + /* download snortrules file */ + $file_md5 = trim(file_get_contents("{$tmpfname}/{$snort_filename_md5}")); + if (!suricata_fetch_new_rules("{$snort_rule_url}{$snort_filename}/{$oinkid}/", "{$tmpfname}/{$snort_filename}", $file_md5, "Snort VRT rules")) + $snortdownload = 'off'; + } + else + $snortdownload = 'off'; +} + +/* Check for and download any new Snort GPLv2 Community Rules sigs */ +if ($snortcommunityrules == 'on') { + if (suricata_check_rule_md5("{$snort_community_rules_url}{$snort_community_rules_filename_md5}", "{$tmpfname}/{$snort_community_rules_filename_md5}", "Snort GPLv2 Community Rules")) { + /* download Snort GPLv2 Community Rules file */ + $file_md5 = trim(file_get_contents("{$tmpfname}/{$snort_community_rules_filename_md5}")); + if (!suricata_fetch_new_rules("{$snort_community_rules_url}{$snort_community_rules_filename}", "{$tmpfname}/{$snort_community_rules_filename}", $file_md5, "Snort GPLv2 Community Rules")) + $snortcommunityrules = 'off'; + } + else + $snortcommunityrules = 'off'; +} + +/* Untar Emerging Threats rules file to tmp if downloaded */ +if ($emergingthreats == 'on') { + safe_mkdir("{$tmpfname}/emerging"); + if (file_exists("{$tmpfname}/{$emergingthreats_filename}")) { + if ($pkg_interface <> "console") { + update_status(gettext("Extracting {$et_name} rules...")); + update_output_window(gettext("Installing {$et_name} rules...")); + } + error_log(gettext("\tExtracting and installing {$et_name} rules...\n"), 3, $suricata_rules_upd_log); + exec("/usr/bin/tar xzf {$tmpfname}/{$emergingthreats_filename} -C {$tmpfname}/emerging rules/"); + + /* Remove the old Emerging Threats rules files */ + $eto_prefix = ET_OPEN_FILE_PREFIX; + $etpro_prefix = ET_PRO_FILE_PREFIX; + array_map('unlink', glob("{$suricatadir}rules/{$eto_prefix}*.rules")); + array_map('unlink', glob("{$suricatadir}rules/{$etpro_prefix}*.rules")); + array_map('unlink', glob("{$suricatadir}rules/{$eto_prefix}*ips.txt")); + array_map('unlink', glob("{$suricatadir}rules/{$etpro_prefix}*ips.txt")); + + // The code below renames ET-Pro files with a prefix, so we + // skip renaming the Suricata default events rule files + // that are also bundled in the ET-Pro rules. + $default_rules = array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules" ); + $files = glob("{$tmpfname}/emerging/rules/*.rules"); + foreach ($files as $file) { + $newfile = basename($file); + if ($etpro == "on" && !in_array($newfile, $default_rules)) + @copy($file, "{$suricatadir}rules/" . ET_PRO_FILE_PREFIX . "{$newfile}"); + else + @copy($file, "{$suricatadir}rules/{$newfile}"); + } + /* IP lists for Emerging Threats rules */ + $files = glob("{$tmpfname}/emerging/rules/*ips.txt"); + foreach ($files as $file) { + $newfile = basename($file); + if ($etpro == "on") + @copy($file, "{$suricatadir}rules/" . ET_PRO_FILE_PREFIX . "{$newfile}"); + else + @copy($file, "{$suricatadir}rules/" . ET_OPEN_FILE_PREFIX . "{$newfile}"); + } + /* base etc files for Emerging Threats rules */ + foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { + if (file_exists("{$tmpfname}/emerging/rules/{$file}")) + @copy("{$tmpfname}/emerging/rules/{$file}", "{$tmpfname}/ET_{$file}"); + } + + /* Copy emergingthreats md5 sig to Suricata dir */ + if (file_exists("{$tmpfname}/{$emergingthreats_filename_md5}")) { + if ($pkg_interface <> "console") + update_status(gettext("Copying md5 signature to Suricata directory...")); + @copy("{$tmpfname}/{$emergingthreats_filename_md5}", "{$suricatadir}{$emergingthreats_filename_md5}"); + } + if ($pkg_interface <> "console") { + update_status(gettext("Extraction of {$et_name} rules completed...")); + update_output_window(gettext("Installation of {$et_name} rules completed...")); + } + error_log(gettext("\tInstallation of {$et_name} rules completed.\n"), 3, $suricata_rules_upd_log); + exec("rm -r {$tmpfname}/emerging"); + } +} + +/* Untar Snort rules file to tmp */ +if ($snortdownload == 'on') { + if (file_exists("{$tmpfname}/{$snort_filename}")) { + /* Remove the old Snort rules files */ + $vrt_prefix = VRT_FILE_PREFIX; + array_map('unlink', glob("{$suricatadir}rules/{$vrt_prefix}*.rules")); + + if ($pkg_interface <> "console") { + update_status(gettext("Extracting Snort VRT rules...")); + update_output_window(gettext("Installing Sourcefire VRT rules...")); + } + error_log(gettext("\tExtracting and installing Snort VRT rules...\n"), 3, $suricata_rules_upd_log); + + /* extract snort.org rules and add prefix to all snort.org files */ + safe_mkdir("{$tmpfname}/snortrules"); + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname}/snortrules rules/"); + $files = glob("{$tmpfname}/snortrules/rules/*.rules"); + foreach ($files as $file) { + $newfile = basename($file); + @copy($file, "{$suricatadir}rules/" . VRT_FILE_PREFIX . "{$newfile}"); + } + + /* IP lists */ + $files = glob("{$tmpfname}/snortrules/rules/*.txt"); + foreach ($files as $file) { + $newfile = basename($file); + @copy($file, "{$suricatadir}rules/{$newfile}"); + } + exec("rm -r {$tmpfname}/snortrules"); + + /* extract base etc files */ + if ($pkg_interface <> "console") { + update_status(gettext("Extracting Snort VRT config and map files...")); + update_output_window(gettext("Copying config and map files...")); + } + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_filename} -C {$tmpfname} etc/"); + foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { + if (file_exists("{$tmpfname}/etc/{$file}")) + @copy("{$tmpfname}/etc/{$file}", "{$tmpfname}/VRT_{$file}"); + } + exec("rm -r {$tmpfname}/etc"); + if (file_exists("{$tmpfname}/{$snort_filename_md5}")) { + if ($pkg_interface <> "console") + update_status(gettext("Copying md5 signature to Suricata directory...")); + @copy("{$tmpfname}/{$snort_filename_md5}", "{$suricatadir}{$snort_filename_md5}"); + } + if ($pkg_interface <> "console") { + update_status(gettext("Extraction of Snort VRT rules completed...")); + update_output_window(gettext("Installation of Sourcefire VRT rules completed...")); + } + error_log(gettext("\tInstallation of Snort VRT rules completed.\n"), 3, $suricata_rules_upd_log); + } +} + +/* Untar Snort GPLv2 Community rules file to tmp */ +if ($snortcommunityrules == 'on') { + safe_mkdir("{$tmpfname}/community"); + if (file_exists("{$tmpfname}/{$snort_community_rules_filename}")) { + if ($pkg_interface <> "console") { + update_status(gettext("Extracting Snort GPLv2 Community Rules...")); + update_output_window(gettext("Installing Snort GPLv2 Community Rules...")); + } + error_log(gettext("\tExtracting and installing Snort GPLv2 Community Rules...\n"), 3, $suricata_rules_upd_log); + exec("/usr/bin/tar xzf {$tmpfname}/{$snort_community_rules_filename} -C {$tmpfname}/community/"); + + $files = glob("{$tmpfname}/community/community-rules/*.rules"); + foreach ($files as $file) { + $newfile = basename($file); + @copy($file, "{$suricatadir}rules/" . GPL_FILE_PREFIX . "{$newfile}"); + } + /* base etc files for Snort GPLv2 Community rules */ + foreach (array("classification.config", "reference.config", "gen-msg.map", "unicode.map") as $file) { + if (file_exists("{$tmpfname}/community/community-rules/{$file}")) + @copy("{$tmpfname}/community/community-rules/{$file}", "{$tmpfname}/" . GPL_FILE_PREFIX . "{$file}"); + } + /* Copy snort community md5 sig to suricata dir */ + if (file_exists("{$tmpfname}/{$snort_community_rules_filename_md5}")) { + if ($pkg_interface <> "console") + update_status(gettext("Copying md5 signature to suricata directory...")); + @copy("{$tmpfname}/{$snort_community_rules_filename_md5}", "{$suricatadir}{$snort_community_rules_filename_md5}"); + } + if ($pkg_interface <> "console") { + update_status(gettext("Extraction of Snort GPLv2 Community Rules completed...")); + update_output_window(gettext("Installation of Snort GPLv2 Community Rules file completed...")); + } + error_log(gettext("\tInstallation of Snort GPLv2 Community Rules completed.\n"), 3, $suricata_rules_upd_log); + exec("rm -r {$tmpfname}/community"); + } +} + +function suricata_apply_customizations($suricatacfg, $if_real) { + + global $vrt_enabled, $rebuild_rules; + $suricatadir = SURICATADIR; + + suricata_prepare_rule_files($suricatacfg, "{$suricatadir}suricata_{$suricatacfg['uuid']}_{$if_real}"); + + /* Copy the master config and map files to the interface directory */ + @copy("{$suricatadir}classification.config", "{$suricatadir}suricata_{$suricatacfg['uuid']}_{$if_real}/classification.config"); + @copy("{$suricatadir}reference.config", "{$suricatadir}suricata_{$suricatacfg['uuid']}_{$if_real}/reference.config"); + @copy("{$suricatadir}gen-msg.map", "{$suricatadir}suricata_{$suricatacfg['uuid']}_{$if_real}/gen-msg.map"); + @copy("{$suricatadir}unicode.map", "{$suricatadir}suricata_{$suricatacfg['uuid']}_{$if_real}/unicode.map"); +} + +if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules == 'on') { + + if ($pkg_interface <> "console") + update_status(gettext('Copying new config and map files...')); + error_log(gettext("\tCopying new config and map files...\n"), 3, $suricata_rules_upd_log); + + /******************************************************************/ + /* Build the classification.config and reference.config files */ + /* using the ones from all the downloaded rules plus the default */ + /* files installed with Suricata. */ + /******************************************************************/ + $cfgs = glob("{$tmpfname}/*reference.config"); + $cfgs[] = "{$suricatadir}reference.config"; + suricata_merge_reference_configs($cfgs, "{$suricatadir}reference.config"); + $cfgs = glob("{$tmpfname}/*classification.config"); + $cfgs[] = "{$suricatadir}classification.config"; + suricata_merge_classification_configs($cfgs, "{$suricatadir}classification.config"); + + /* Determine which map files to use for the master copy. */ + /* The Snort VRT ones are preferred, if available. */ + if ($snortdownload == 'on') + $prefix = "VRT_"; + elseif ($emergingthreats == 'on') + $prefix = "ET_"; + elseif ($snortcommunityrules == 'on') + $prefix = GPL_FILE_PREFIX; + if (file_exists("{$tmpfname}/{$prefix}unicode.map")) + @copy("{$tmpfname}/{$prefix}unicode.map", "{$suricatadir}unicode.map"); + if (file_exists("{$tmpfname}/{$prefix}gen-msg.map")) + @copy("{$tmpfname}/{$prefix}gen-msg.map", "{$suricatadir}gen-msg.map"); + + /* Start the rules rebuild proccess for each configured interface */ + if (is_array($config['installedpackages']['suricata']['rule']) && + !empty($config['installedpackages']['suricata']['rule'])) { + + /* Set the flag to force rule rebuilds since we downloaded new rules */ + $rebuild_rules = true; + + /* Create configuration for each active Suricata interface */ + foreach ($config['installedpackages']['suricata']['rule'] as $value) { + $if_real = suricata_get_real_interface($value['interface']); + // Make sure the interface subdirectory exists. We need to re-create + // it during a pkg reinstall on the intial rules set download. + if (!is_dir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}")) + safe_mkdir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}"); + if (!is_dir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}/rules")) + safe_mkdir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}/rules"); + $tmp = "Updating rules configuration for: " . suricata_get_friendly_interface($value['interface']) . " ..."; + if ($pkg_interface <> "console"){ + update_status(gettext($tmp)); + update_output_window(gettext("Please wait while Suricata interface files are being updated...")); + } + suricata_apply_customizations($value, $if_real); + $tmp = "\t" . $tmp . "\n"; + error_log($tmp, 3, $suricata_rules_upd_log); + } + } + else { + if ($pkg_interface <> "console") { + update_output_window(gettext("Warning: No interfaces configured for Suricata were found...")); + update_output_window(gettext("No interfaces currently have Suricata configured and enabled on them...")); + } + error_log(gettext("\tWarning: No interfaces configured for Suricata were found...\n"), 3, $suricata_rules_upd_log); + } + + /* Clear the rebuild rules flag. */ + $rebuild_rules = false; + + /* Restart Suricata if already running and we are not rebooting to pick up the new rules. */ + if (is_process_running("suricata") && !$g['booting']) { + if ($pkg_interface <> "console") { + update_status(gettext('Restarting Suricata to activate the new set of rules...')); + update_output_window(gettext("Please wait ... restarting Suricata will take some time...")); + } + error_log(gettext("\tRestarting Suricata to activate the new set of rules...\n"), 3, $suricata_rules_upd_log); + restart_service("suricata"); + if ($pkg_interface <> "console") + update_output_window(gettext("Suricata has restarted with your new set of rules...")); + log_error(gettext("[Suricata] Suricata has restarted with your new set of rules...")); + error_log(gettext("\tSuricata has restarted with your new set of rules.\n"), 3, $suricata_rules_upd_log); + } + else { + if ($pkg_interface <> "console") + update_output_window(gettext("The rules update task is complete...")); + } +} + +// Remove old $tmpfname files +if (is_dir("{$tmpfname}")) { + if ($pkg_interface <> "console") + update_status(gettext("Cleaning up after rules extraction...")); + exec("/bin/rm -r {$tmpfname}"); +} + +if ($pkg_interface <> "console") + update_status(gettext("The Rules update has finished...")); +log_error(gettext("[Suricata] The Rules update has finished.")); +error_log(gettext("The Rules update has finished. Time: " . date("Y-m-d H:i:s"). "\n\n"), 3, $suricata_rules_upd_log); +conf_mount_ro(); + +// Restore the state of $pkg_interface +$pkg_interface = $pkg_interface_orig; + +?> diff --git a/config/suricata/suricata_define_vars.php b/config/suricata/suricata_define_vars.php new file mode 100644 index 00000000..05378477 --- /dev/null +++ b/config/suricata/suricata_define_vars.php @@ -0,0 +1,290 @@ + "\$HOME_NET", "smtp_servers" => "\$HOME_NET", "http_servers" => "\$HOME_NET", + "sql_servers" => "\$HOME_NET", "telnet_servers" => "\$HOME_NET", "dnp3_server" => "\$HOME_NET", + "dnp3_client" => "\$HOME_NET", "modbus_server" => "\$HOME_NET", "modbus_client" => "\$HOME_NET", + "enip_server" => "\$HOME_NET", "enip_client" => "\$HOME_NET", + "aim_servers" => "64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24" +); + +/* if user has defined a custom ssh port, use it */ +if(is_array($config['system']['ssh']) && isset($config['system']['ssh']['port'])) + $ssh_port = $config['system']['ssh']['port']; +else + $ssh_port = "22"; +$suricata_ports = array( + "http_ports" => "80", + "oracle_ports" => "1521", + "ssh_ports" => $ssh_port, + "shellcode_ports" => "!80", + "DNP3_PORTS" => "20000", "file_data_ports" => "\$HTTP_PORTS,110,143" +); + +// Sort our SERVERS and PORTS arrays to make values +// easier to locate by the the user. +ksort($suricata_servers); +ksort($suricata_ports); + +$pconfig = $a_nat[$id]; + +/* convert fake interfaces to real */ +$if_real = suricata_get_real_interface($pconfig['interface']); +$suricata_uuid = $config['installedpackages']['suricata']['rule'][$id]['uuid']; + +if ($_POST) { + + $natent = array(); + $natent = $pconfig; + + foreach ($suricata_servers as $key => $server) { + if ($_POST["def_{$key}"] && !is_alias($_POST["def_{$key}"])) + $input_errors[] = "Only aliases are allowed"; + } + foreach ($suricata_ports as $key => $server) { + if ($_POST["def_{$key}"] && !is_alias($_POST["def_{$key}"])) + $input_errors[] = "Only aliases are allowed"; + } + /* if no errors write to suricata.yaml */ + if (!$input_errors) { + /* post new options */ + foreach ($suricata_servers as $key => $server) { + if ($_POST["def_{$key}"]) + $natent["def_{$key}"] = $_POST["def_{$key}"]; + else + unset($natent["def_{$key}"]); + } + foreach ($suricata_ports as $key => $server) { + if ($_POST["def_{$key}"]) + $natent["def_{$key}"] = $_POST["def_{$key}"]; + else + unset($natent["def_{$key}"]); + } + + $a_nat[$id] = $natent; + + write_config(); + + /* Update the suricata.yaml file for this interface. */ + $rebuild_rules = false; + suricata_generate_yaml($a_nat[$id]); + + /* Soft-restart Suricaa to live-load new variables. */ + suricata_reload_config($a_nat[$id]); + + /* after click go to this page */ + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: suricata_define_vars.php?id=$id"); + exit; + } +} + +$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} Variables - Servers and Ports"); +include_once("head.inc"); + +?> + + +' . $pgtitle . '

    ';} +/* Display Alert message */ +if ($input_errors) + print_input_errors($input_errors); // TODO: add checks +if ($savemsg) + print_info_box($savemsg); +?> + + + +
    + +'; + echo ' + + +
    +
    '; + $tab_array = array(); + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface "); + $tab_array[] = array($menu_iface . gettext("Settings"), false, "/suricata/suricata_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), false, "/suricata/suricata_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), false, "/suricata/suricata_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Flow/Stream"), false, "/suricata/suricata_flow_stream.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("App Parsers"), false, "/suricata/suricata_app_parsers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), true, "/suricata/suricata_define_vars.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/suricata/suricata_barnyard.php?id={$id}"); + display_top_tabs($tab_array); +?> +
    + + + + + $server): + if (strlen($server) > 40) + $server = substr($server, 0, 40) . "..."; + $label = strtoupper($key); + $value = ""; + $title = ""; + if (!empty($pconfig["def_{$key}"])) { + $value = htmlspecialchars($pconfig["def_{$key}"]); + $title = trim(filter_expand_alias($pconfig["def_{$key}"])); + } +?> + + + + + + + + + $server): + if (strlen($server) > 40) + $server = substr($server, 0, 40) . "..."; + $label = strtoupper($key); + $value = ""; + $title = ""; + if (!empty($pconfig["def_{$key}"])) { + $value = htmlspecialchars($pconfig["def_{$key}"]); + $title = trim(filter_expand_alias($pconfig["def_{$key}"])); + } +?> + + + + + + + + + +
    +
    + ""
    +
    +
    + ""
    +
      + + +
    +
    +
    +
    + + + + + diff --git a/config/suricata/suricata_download_rules.php b/config/suricata/suricata_download_rules.php new file mode 100644 index 00000000..26737dcf --- /dev/null +++ b/config/suricata/suricata_download_rules.php @@ -0,0 +1,97 @@ + + + + + +' . $pgtitle . '

    ';}?> + +
    + + + + + +
    + + + + + + + + + + +
    + + + + + + +
    + + + +
    /images/misc/bar_blue.gif' + width='0' height='15' name='progressbar' id='progressbar' alt='' />
    +
    + + + + +
    +
    +
    +
    + + + +document.progressbar.style.visibility='hidden';\n"; + +?> diff --git a/config/suricata/suricata_download_updates.php b/config/suricata/suricata_download_updates.php new file mode 100644 index 00000000..8ff30e9b --- /dev/null +++ b/config/suricata/suricata_download_updates.php @@ -0,0 +1,241 @@ + + + + + +' . $pgtitle . '

    ';}?> + + + +
    + + + + + + +
    + +
    +
    + + + + +
    +
    + + + + +
    +
    +

    + +

    +   --> +   
    + SNORT VRT RULES  --> +   
    + SNORT GPLv2 COMMUNITY RULES  --> +   
    +

    +
    +
    +
    + + + + +
    +
    +

    +
    +
    + + ' . gettext("Update Rules") . '
    +

    + ' . gettext("WARNING:") . '  ' . gettext('No rule types have been selected for download. ') . + gettext('Visit the ') . 'Global Settings Tab' . gettext(' to select rule types.') . '
    '; + + echo '

    ' . "\n"; + } else { + + echo ' +
    ' . "\n"; + + } + + ?>
    +

    +
    +
    +
    + + + + +
    +
    +

    +
    +
    + " . gettext("View Log") . ""; + echo "          \n"; + }else{ + echo " +    " . gettext("Log is empty.") . "\n"; + } + echo '

    ' . gettext("The log file is limited to 1024K in size and automatically clears when the limit is exceeded."); + ?> +
    +

    +
    +
    + +
    + + + + + +
    +
    + +   " . + gettext(" and ") . "" . gettext("EmergingThreats.net") . "" . + gettext(" will go down from time to time. Please be patient."); ?> +
    +
    + +
    +
    +
    +
    + +
    + + + diff --git a/config/suricata/suricata_flow_stream.php b/config/suricata/suricata_flow_stream.php new file mode 100644 index 00000000..8db40a47 --- /dev/null +++ b/config/suricata/suricata_flow_stream.php @@ -0,0 +1,680 @@ + "default", "bind_to" => "all", "policy" => "bsd" ); + $pconfig['host_os_policy']['item'] = array(); + $pconfig['host_os_policy']['item'][] = $default; + if (!is_array($a_nat[$id]['host_os_policy']['item'])) + $a_nat[$id]['host_os_policy']['item'] = array(); + $a_nat[$id]['host_os_policy']['item'][] = $default; + write_config(); + $host_os_policy_engine_next_id++; + } + else + $pconfig['host_os_policy'] = $a_nat[$id]['host_os_policy']; +} + +// Check for returned "selected alias" if action is import +if ($_GET['act'] == "import" && isset($_GET['varname']) && !empty($_GET['varvalue'])) { + $pconfig[$_GET['varname']] = $_GET['varvalue']; +} + +if ($_GET['act'] && isset($_GET['eng_id'])) { + + $natent = array(); + $natent = $pconfig; + + if ($_GET['act'] == "del_host_os_policy") + unset($natent['host_os_policy']['item'][$_GET['eng_id']]); + + if (isset($id) && $a_nat[$id]) { + $a_nat[$id] = $natent; + write_config(); + } + + header("Location: /suricata/suricata_flow_stream.php?id=$id"); + exit; +} + +if ($_POST['ResetAll']) { + + /* Reset all the settings to defaults */ + $pconfig['ip_max_frags'] = "65535"; + $pconfig['ip_frag_timeout'] = "60"; + $pconfig['frag_memcap'] = '33554432'; + $pconfig['ip_max_trackers'] = '65535'; + $pconfig['frag_hash_size'] = '65536'; + + $pconfig['flow_memcap'] = '33554432'; + $pconfig['flow_prealloc'] = '10000'; + $pconfig['flow_hash_size'] = '65536'; + $pconfig['flow_emerg_recovery'] = '30'; + $pconfig['flow_prune'] = '5'; + + $pconfig['flow_tcp_new_timeout'] = '60'; + $pconfig['flow_tcp_established_timeout'] = '3600'; + $pconfig['flow_tcp_closed_timeout'] = '120'; + $pconfig['flow_tcp_emerg_new_timeout'] = '10'; + $pconfig['flow_tcp_emerg_established_timeout'] = '300'; + $pconfig['flow_tcp_emerg_closed_timeout'] = '20'; + + $pconfig['flow_udp_new_timeout'] = '30'; + $pconfig['flow_udp_established_timeout'] = '300'; + $pconfig['flow_udp_emerg_new_timeout'] = '10'; + $pconfig['flow_udp_emerg_established_timeout'] = '100'; + + $pconfig['flow_icmp_new_timeout'] = '30'; + $pconfig['flow_icmp_established_timeout'] = '300'; + $pconfig['flow_icmp_emerg_new_timeout'] = '10'; + $pconfig['flow_icmp_emerg_established_timeout'] = '100'; + + $pconfig['stream_memcap'] = '33554432'; + $pconfig['stream_max_sessions'] = '262144'; + $pconfig['stream_prealloc_sessions'] = '32768'; + $pconfig['reassembly_memcap'] = '67108864'; + $pconfig['reassembly_depth'] = '1048576'; + $pconfig['reassembly_to_server_chunk'] = '2560'; + $pconfig['reassembly_to_client_chunk'] = '2560'; + $pconfig['enable_midstream_sessions'] = 'off'; + $pconfig['enable_async_sessions'] = 'off'; + + /* Log a message at the top of the page to inform the user */ + $savemsg = gettext("All flow and stream settings have been reset to their defaults."); +} +elseif ($_POST['Submit']) { + $natent = array(); + $natent = $pconfig; + + // TODO: validate input values + + /* if no errors write to conf */ + if (!$input_errors) { + if ($_POST['ip_max_frags'] != "") { $natent['ip_max_frags'] = $_POST['ip_max_frags']; }else{ $natent['ip_max_frags'] = "65535"; } + if ($_POST['ip_frag_timeout'] != "") { $natent['ip_frag_timeout'] = $_POST['ip_frag_timeout']; }else{ $natent['ip_frag_timeout'] = "60"; } + if ($_POST['frag_memcap'] != "") { $natent['frag_memcap'] = $_POST['frag_memcap']; }else{ $natent['frag_memcap'] = "33554432"; } + if ($_POST['ip_max_trackers'] != "") { $natent['ip_max_trackers'] = $_POST['ip_max_trackers']; }else{ $natent['ip_max_trackers'] = "65535"; } + if ($_POST['frag_hash_size'] != "") { $natent['frag_hash_size'] = $_POST['frag_hash_size']; }else{ $natent['frag_hash_size'] = "65536"; } + if ($_POST['flow_memcap'] != "") { $natent['flow_memcap'] = $_POST['flow_memcap']; }else{ $natent['flow_memcap'] = "33554432"; } + if ($_POST['flow_prealloc'] != "") { $natent['flow_prealloc'] = $_POST['flow_prealloc']; }else{ $natent['flow_prealloc'] = "10000"; } + if ($_POST['flow_hash_size'] != "") { $natent['flow_hash_size'] = $_POST['flow_hash_size']; }else{ $natent['flow_hash_size'] = "65536"; } + if ($_POST['flow_emerg_recovery'] != "") { $natent['flow_emerg_recovery'] = $_POST['flow_emerg_recovery']; }else{ $natent['flow_emerg_recovery'] = "30"; } + if ($_POST['flow_prune'] != "") { $natent['flow_prune'] = $_POST['flow_prune']; }else{ $natent['flow_prune'] = "5"; } + + if ($_POST['flow_tcp_new_timeout'] != "") { $natent['flow_tcp_new_timeout'] = $_POST['flow_tcp_new_timeout']; }else{ $natent['flow_tcp_new_timeout'] = "60"; } + if ($_POST['flow_tcp_established_timeout'] != "") { $natent['flow_tcp_established_timeout'] = $_POST['flow_tcp_established_timeout']; }else{ $natent['flow_tcp_established_timeout'] = "3600"; } + if ($_POST['flow_tcp_closed_timeout'] != "") { $natent['flow_tcp_closed_timeout'] = $_POST['flow_tcp_closed_timeout']; }else{ $natent['flow_tcp_closed_timeout'] = "120"; } + if ($_POST['flow_tcp_emerg_new_timeout'] != "") { $natent['flow_tcp_emerg_new_timeout'] = $_POST['flow_tcp_emerg_new_timeout']; }else{ $natent['flow_tcp_emerg_new_timeout'] = "10"; } + if ($_POST['flow_tcp_emerg_established_timeout'] != "") { $natent['flow_tcp_emerg_established_timeout'] = $_POST['flow_tcp_emerg_established_timeout']; }else{ $natent['flow_tcp_emerg_established_timeout'] = "300"; } + if ($_POST['flow_tcp_emerg_closed_timeout'] != "") { $natent['flow_tcp_emerg_closed_timeout'] = $_POST['flow_tcp_emerg_closed_timeout']; }else{ $natent['flow_tcp_emerg_closed_timeout'] = "20"; } + + if ($_POST['flow_udp_new_timeout'] != "") { $natent['flow_udp_new_timeout'] = $_POST['flow_udp_new_timeout']; }else{ $natent['flow_udp_new_timeout'] = "30"; } + if ($_POST['flow_udp_established_timeout'] != "") { $natent['flow_udp_established_timeout'] = $_POST['flow_udp_established_timeout']; }else{ $natent['flow_udp_established_timeout'] = "300"; } + if ($_POST['flow_udp_emerg_new_timeout'] != "") { $natent['flow_udp_emerg_new_timeout'] = $_POST['flow_udp_emerg_new_timeout']; }else{ $natent['flow_udp_emerg_new_timeout'] = "10"; } + if ($_POST['flow_udp_emerg_established_timeout'] != "") { $natent['flow_udp_emerg_established_timeout'] = $_POST['flow_udp_emerg_established_timeout']; }else{ $natent['flow_udp_emerg_established_timeout'] = "100"; } + + if ($_POST['flow_icmp_new_timeout'] != "") { $natent['flow_icmp_new_timeout'] = $_POST['flow_icmp_new_timeout']; }else{ $natent['flow_icmp_new_timeout'] = "30"; } + if ($_POST['flow_icmp_established_timeout'] != "") { $natent['flow_icmp_established_timeout'] = $_POST['flow_icmp_established_timeout']; }else{ $natent['flow_icmp_established_timeout'] = "300"; } + if ($_POST['flow_icmp_emerg_new_timeout'] != "") { $natent['flow_icmp_emerg_new_timeout'] = $_POST['flow_icmp_emerg_new_timeout']; }else{ $natent['flow_icmp_emerg_new_timeout'] = "10"; } + if ($_POST['flow_icmp_emerg_established_timeout'] != "") { $natent['flow_icmp_emerg_established_timeout'] = $_POST['flow_icmp_emerg_established_timeout']; }else{ $natent['flow_icmp_emerg_established_timeout'] = "100"; } + + if ($_POST['stream_memcap'] != "") { $natent['stream_memcap'] = $_POST['stream_memcap']; }else{ $natent['stream_memcap'] = "33554432"; } + if ($_POST['stream_max_sessions'] != "") { $natent['stream_max_sessions'] = $_POST['stream_max_sessions']; }else{ $natent['stream_max_sessions'] = "262144"; } + if ($_POST['stream_prealloc_sessions'] != "") { $natent['stream_prealloc_sessions'] = $_POST['stream_prealloc_sessions']; }else{ $natent['stream_prealloc_sessions'] = "32768"; } + if ($_POST['enable_midstream_sessions'] == "on") { $natent['enable_midstream_sessions'] = 'on'; }else{ $natent['enable_midstream_sessions'] = 'off'; } + if ($_POST['enable_async_sessions'] == "on") { $natent['enable_async_sessions'] = 'on'; }else{ $natent['enable_async_sessions'] = 'off'; } + if ($_POST['reassembly_memcap'] != "") { $natent['reassembly_memcap'] = $_POST['reassembly_memcap']; }else{ $natent['reassembly_memcap'] = "67108864"; } + if ($_POST['reassembly_depth'] != "") { $natent['reassembly_depth'] = $_POST['reassembly_depth']; }else{ $natent['reassembly_depth'] = "1048576"; } + if ($_POST['reassembly_to_server_chunk'] != "") { $natent['reassembly_to_server_chunk'] = $_POST['reassembly_to_server_chunk']; }else{ $natent['reassembly_to_server_chunk'] = "2560"; } + if ($_POST['reassembly_to_client_chunk'] != "") { $natent['reassembly_to_client_chunk'] = $_POST['reassembly_to_client_chunk']; }else{ $natent['reassembly_to_client_chunk'] = "2560"; } + + /**************************************************/ + /* If we have a valid rule ID, save configuration */ + /* then update the suricata.conf file and rebuild */ + /* the rules for this interface. */ + /**************************************************/ + if (isset($id) && $a_nat[$id]) { + $a_nat[$id] = $natent; + write_config(); + $rebuild_rules = true; + suricata_generate_yaml($natent); + $rebuild_rules = false; + } + + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: suricata_flow_stream.php?id=$id"); + exit; + } +} + +$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} - Flow and Stream"); +include_once("head.inc"); +?> + + + +' . $pgtitle . '

    ';} + + + /* Display Alert message */ + + if ($input_errors) { + print_input_errors($input_errors); // TODO: add checks + } + + if ($savemsg) { + print_info_box($savemsg); + } + +?> + + + + +
    + +'; + echo ' +
    +
    '; + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface "); + $tab_array = array(); + $tab_array[] = array($menu_iface . gettext("Settings"), false, "/suricata/suricata_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), false, "/suricata/suricata_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), false, "/suricata/suricata_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Flow/Stream"), true, "/suricata/suricata_flow_stream.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("App Parsers"), false, "/suricata/suricata_app_parsers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), false, "/suricata/suricata_define_vars.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/suricata/suricata_barnyard.php?id={$id}"); + display_top_tabs($tab_array); +?> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + $v): ?> + + + + + + +
    + "> + + ">
    + "> + "all") : ?> + + "> + + "> + +
    +
    +   + " . gettext("33,554,432") . "" . gettext(" bytes (32 MB)."); ?>

    + +
      + " . gettext("65,535") . "" . gettext(" fragments.");?>

    + +
      + " . gettext("65,535") . "" . gettext(" fragments.");?>

    +

    + " . gettext("This must be equal to or greater than the Max Trackers value specified above."); ?> +
    +   + " . gettext("65,536") . "" . gettext(" entries."); ?>

    + +
      + " . gettext("60") . "" . gettext(" seconds.");?>

    + +
    +   + " . gettext("33,554,432") . "" . gettext(" bytes (32 MB)"); ?> +
    +   + " . gettext("65,536") . "" . gettext(" entries."); ?> +
    +   + " . gettext("10,000") . "" . gettext(" flows."); ?> +
    +   + " . gettext("30%") . "."; ?> +
    +   + " . gettext("5") . "" . gettext(" flows."); ?> +
    + + + + + + + + + + + + + + + + + + + +
      + " . gettext("60") . "."; ?> +
      + " . gettext("3600") . "."; ?> +
      + " . gettext("120") . "."; ?> +
      + " . gettext("10") . "."; ?> +
      + " . gettext("300") . "."; ?> +
      + " . gettext("20") . "."; ?> +
    +
    + + + + + + + + + + + + + +
      + " . gettext("30") . "."; ?> +
      + " . gettext("300") . "."; ?> +
      + " . gettext("10") . "."; ?> +
      + " . gettext("100") . "."; ?> +
    +
    + + + + + + + + + + + + + +
      + " . gettext("30") . "."; ?> +
      + " . gettext("300") . "."; ?> +
      + " . gettext("10") . "."; ?> +
      + " . gettext("100") . "."; ?> +
    +
    +   + " . gettext("33,554,432") . "" . gettext(" bytes (32MB)"); ?>

    + +
    +   + " . gettext("262,144") . "" . gettext(" sessions."); ?>

    + +
    +   + " . gettext("32,768") . "" . gettext(" sessions."); ?>

    + +
    > + " . gettext("Not Checked") . "."; ?>
    > + " . gettext("Not Checked") . "."; ?>
    +   + " . gettext("67,108,864") . "" . gettext(" bytes (64MB)."); ?>

    + +
    +   + " . gettext("1,048,576") . "" . gettext(" bytes (1MB)."); ?>

    + " . + "" . gettext("Note: ") . "" . gettext("Set to 0 (unlimited) to reassemble entire stream. This is required for file extraction."); ?> +
    +   + " . gettext("2,560") . "" . gettext(" bytes."); ?>

    + +
    +   + " . gettext("2,560") . "" . gettext(" bytes."); ?>

    + +
      + "> +      + >
      + +
    +
    +
    +
    + + + + diff --git a/config/suricata/suricata_generate_yaml.php b/config/suricata/suricata_generate_yaml.php new file mode 100644 index 00000000..0614adf8 --- /dev/null +++ b/config/suricata/suricata_generate_yaml.php @@ -0,0 +1,515 @@ + "\$HOME_NET", "smtp_servers" => "\$HOME_NET", "http_servers" => "\$HOME_NET", + "sql_servers" => "\$HOME_NET", "telnet_servers" => "\$HOME_NET", "dnp3_server" => "\$HOME_NET", + "dnp3_client" => "\$HOME_NET", "modbus_server" => "\$HOME_NET", "modbus_client" => "\$HOME_NET", + "enip_server" => "\$HOME_NET", "enip_client" => "\$HOME_NET", + "aim_servers" => "64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24" +); +$addr_vars = ""; + foreach ($suricata_servers as $alias => $avalue) { + if (!empty($suricatacfg["def_{$alias}"]) && is_alias($suricatacfg["def_{$alias}"])) { + $avalue = trim(filter_expand_alias($suricatacfg["def_{$alias}"])); + $avalue = preg_replace('/\s+/', ',', trim($avalue)); + } + $addr_vars .= " " . strtoupper($alias) . ": \"{$avalue}\"\n"; + } +$addr_vars = trim($addr_vars); +if(is_array($config['system']['ssh']) && isset($config['system']['ssh']['port'])) + $ssh_port = $config['system']['ssh']['port']; +else + $ssh_port = "22"; +$suricata_ports = array( + "http_ports" => "80", + "oracle_ports" => "1521", + "ssh_ports" => $ssh_port, + "shellcode_ports" => "!80", + "DNP3_PORTS" => "20000", "file_data_ports" => "\$HTTP_PORTS,110,143" +); +$port_vars = ""; + foreach ($suricata_ports as $alias => $avalue) { + if (!empty($suricatacfg["def_{$alias}"]) && is_alias($suricatacfg["def_{$alias}"])) { + $avalue = trim(filter_expand_alias($suricatacfg["def_{$alias}"])); + $avalue = preg_replace('/\s+/', ',', trim($avalue)); + } + $port_vars .= " " . strtoupper($alias) . ": \"{$avalue}\"\n"; + } +$port_vars = trim($port_vars); + +// Define a Suppress List (Threshold) if one is configured +$suppress = suricata_find_list($suricatacfg['suppresslistname'], 'suppress'); +if (!empty($suppress)) { + $suppress_data = str_replace("\r", "", base64_decode($suppress['suppresspassthru'])); + @file_put_contents("{$suricatacfgdir}/threshold.config", $suppress_data); +} +else + @file_put_contents("{$suricatacfgdir}/threshold.config", ""); + +// Add interface-specific detection engine settings +if (!empty($suricatacfg['max_pending_packets'])) + $max_pend_pkts = $suricatacfg['max_pending_packets']; +else + $max_pend_pkts = 1024; + +if (!empty($suricatacfg['detect_eng_profile'])) + $detect_eng_profile = $suricatacfg['detect_eng_profile']; +else + $detect_eng_profile = "medium"; + +if (!empty($suricatacfg['sgh_mpm_context'])) + $sgh_mpm_ctx = $suricatacfg['sgh_mpm_context']; +else + $sgh_mpm_ctx = "auto"; + +if (!empty($suricatacfg['mpm_algo'])) + $mpm_algo = $suricatacfg['mpm_algo']; +else + $mpm_algo = "ac"; + +if (!empty($suricatacfg['inspect_recursion_limit']) || $suricatacfg['inspect_recursion_limit'] == '0') + $inspection_recursion_limit = $suricatacfg['inspect_recursion_limit']; +else + $inspection_recursion_limit = ""; + +// Add interface-specific logging settings +if ($suricatacfg['alertsystemlog'] == 'on') + $alert_syslog = "yes"; +else + $alert_syslog = "no"; + +if ($suricatacfg['enable_stats_log'] == 'on') + $stats_log_enabled = "yes"; +else + $stats_log_enabled = "no"; + +if (!empty($suricatacfg['stats_upd_interval'])) + $stats_upd_interval = $suricatacfg['stats_upd_interval']; +else + $stats_upd_interval = "10"; + +if ($suricatacfg['append_stats_log'] == 'on') + $stats_log_append = "yes"; +else + $stats_log_append = "no"; + +if ($suricatacfg['enable_http_log'] == 'on') + $http_log_enabled = "yes"; +else + $http_log_enabled = "no"; + +if ($suricatacfg['append_http_log'] == 'on') + $http_log_append = "yes"; +else + $http_log_append = "no"; + +if ($suricatacfg['enable_tls_log'] == 'on') + $tls_log_enabled = "yes"; +else + $tls_log_enabled = "no"; + +if ($suricatacfg['tls_log_extended'] == 'on') + $tls_log_extended = "yes"; +else + $tls_log_extended = "no"; + +if ($suricatacfg['enable_json_file_log'] == 'on') + $json_log_enabled = "yes"; +else + $json_log_enabled = "no"; + +if ($suricatacfg['append_json_file_log'] == 'on') + $json_log_append = "yes"; +else + $json_log_append = "no"; + +if ($suricatacfg['enable_tracked_files_magic'] == 'on') + $json_log_magic = "yes"; +else + $json_log_magic = "no"; + +if ($suricatacfg['enable_tracked_files_md5'] == 'on') + $json_log_md5 = "yes"; +else + $json_log_md5 = "no"; + +if ($suricatacfg['enable_file_store'] == 'on') { + $file_store_enabled = "yes"; + if (!file_exists("{$suricatalogdir}suricata_{$if_real}{$suricata_uuid}/file.waldo")) + @file_put_contents("{$suricatalogdir}suricata_{$if_real}{$suricata_uuid}/file.waldo", ""); +} +else + $file_store_enabled = "no"; + +if ($suricatacfg['enable_pcap_log'] == 'on') + $pcap_log_enabled = "yes"; +else + $pcap_log_enabled = "no"; + +if (!empty($suricatacfg['max_pcap_log_size'])) + $pcap_log_limit_size = $suricatacfg['max_pcap_log_size']; +else + $pcap_log_limit_size = "32"; + +if (!empty($suricatacfg['max_pcap_log_files'])) + $pcap_log_max_files = $suricatacfg['max_pcap_log_files']; +else + $pcap_log_max_files = "1000"; + +if ($suricatacfg['barnyard_enable'] == 'on') + $barnyard2_enabled = "yes"; +else + $barnyard2_enabled = "no"; + +// Add interface-specific IP defrag settings +if (!empty($suricatacfg['frag_memcap'])) + $frag_memcap = $suricatacfg['frag_memcap']; +else + $frag_memcap = "33554432"; + +if (!empty($suricatacfg['ip_max_trackers'])) + $ip_max_trackers = $suricatacfg['ip_max_trackers']; +else + $ip_max_trackers = "65535"; + +if (!empty($suricatacfg['ip_max_frags'])) + $ip_max_frags = $suricatacfg['ip_max_frags']; +else + $ip_max_frags = "65535"; + +if (!empty($suricatacfg['frag_hash_size'])) + $frag_hash_size = $suricatacfg['frag_hash_size']; +else + $frag_hash_size = "65536"; + +if (!empty($suricatacfg['ip_frag_timeout'])) + $ip_frag_timeout = $suricatacfg['ip_frag_timeout']; +else + $ip_frag_timeout = "60"; + +// Add interface-specific flow manager setttings +if (!empty($suricatacfg['flow_memcap'])) + $flow_memcap = $suricatacfg['flow_memcap']; +else + $flow_memcap = "33554432"; + +if (!empty($suricatacfg['flow_hash_size'])) + $flow_hash_size = $suricatacfg['flow_hash_size']; +else + $flow_hash_size = "65536"; + +if (!empty($suricatacfg['flow_prealloc'])) + $flow_prealloc = $suricatacfg['flow_prealloc']; +else + $flow_prealloc = "10000"; + +if (!empty($suricatacfg['flow_emerg_recovery'])) + $flow_emerg_recovery = $suricatacfg['flow_emerg_recovery']; +else + $flow_emerg_recovery = "30"; + +if (!empty($suricatacfg['flow_prune'])) + $flow_prune = $suricatacfg['flow_prune']; +else + $flow_prune = "5"; + +// Add interface-specific flow timeout setttings +if (!empty($suricatacfg['flow_tcp_new_timeout'])) + $flow_tcp_new_timeout = $suricatacfg['flow_tcp_new_timeout']; +else + $flow_tcp_new_timeout = "60"; + +if (!empty($suricatacfg['flow_tcp_established_timeout'])) + $flow_tcp_established_timeout = $suricatacfg['flow_tcp_established_timeout']; +else + $flow_tcp_established_timeout = "3600"; + +if (!empty($suricatacfg['flow_tcp_closed_timeout'])) + $flow_tcp_closed_timeout = $suricatacfg['flow_tcp_closed_timeout']; +else + $flow_tcp_closed_timeout = "120"; + +if (!empty($suricatacfg['flow_tcp_emerg_new_timeout'])) + $flow_tcp_emerg_new_timeout = $suricatacfg['flow_tcp_emerg_new_timeout']; +else + $flow_tcp_emerg_new_timeout = "10"; + +if (!empty($suricatacfg['flow_tcp_emerg_established_timeout'])) + $flow_tcp_emerg_established_timeout = $suricatacfg['flow_tcp_emerg_established_timeout']; +else + $flow_tcp_emerg_established_timeout = "300"; + +if (!empty($suricatacfg['flow_tcp_emerg_closed_timeout'])) + $flow_tcp_emerg_closed_timeout = $suricatacfg['flow_tcp_emerg_closed_timeout']; +else + $flow_tcp_emerg_closed_timeout = "20"; + +if (!empty($suricatacfg['flow_udp_new_timeout'])) + $flow_udp_new_timeout = $suricatacfg['flow_udp_new_timeout']; +else + $flow_udp_new_timeout = "30"; + +if (!empty($suricatacfg['flow_udp_established_timeout'])) + $flow_udp_established_timeout = $suricatacfg['flow_udp_established_timeout']; +else + $flow_udp_established_timeout = "300"; + +if (!empty($suricatacfg['flow_udp_emerg_new_timeout'])) + $flow_udp_emerg_new_timeout = $suricatacfg['flow_udp_emerg_new_timeout']; +else + $flow_udp_emerg_new_timeout = "10"; + +if (!empty($suricatacfg['flow_udp_emerg_established_timeout'])) + $flow_udp_emerg_established_timeout = $suricatacfg['flow_udp_emerg_established_timeout']; +else + $flow_udp_emerg_established_timeout = "100"; + +if (!empty($suricatacfg['flow_icmp_new_timeout'])) + $flow_icmp_new_timeout = $suricatacfg['flow_icmp_new_timeout']; +else + $flow_icmp_new_timeout = "30"; + +if (!empty($suricatacfg['flow_icmp_established_timeout'])) + $flow_icmp_established_timeout = $suricatacfg['flow_icmp_established_timeout']; +else + $flow_icmp_established_timeout = "300"; + +if (!empty($suricatacfg['flow_icmp_emerg_new_timeout'])) + $flow_icmp_emerg_new_timeout = $suricatacfg['flow_icmp_emerg_new_timeout']; +else + $flow_icmp_emerg_new_timeout = "10"; + +if (!empty($suricatacfg['flow_icmp_emerg_established_timeout'])) + $flow_icmp_emerg_established_timeout = $suricatacfg['flow_icmp_emerg_established_timeout']; +else + $flow_icmp_emerg_established_timeout = "100"; + +// Add interface-specific stream settings +if (!empty($suricatacfg['stream_memcap'])) + $stream_memcap = $suricatacfg['stream_memcap']; +else + $stream_memcap = "33554432"; + +if (!empty($suricatacfg['stream_max_sessions'])) + $stream_max_sessions = $suricatacfg['stream_max_sessions']; +else + $stream_max_sessions = "262144"; + +if (!empty($suricatacfg['stream_prealloc_sessions'])) + $stream_prealloc_sessions = $suricatacfg['stream_prealloc_sessions']; +else + $stream_prealloc_sessions = "32768"; + +if (!empty($suricatacfg['reassembly_memcap'])) + $reassembly_memcap = $suricatacfg['reassembly_memcap']; +else + $reassembly_memcap = "67108864"; + +if (!empty($suricatacfg['reassembly_depth']) || $suricatacfg['reassembly_depth'] == '0') + $reassembly_depth = $suricatacfg['reassembly_depth']; +else + $reassembly_depth = "1048576"; + +if (!empty($suricatacfg['reassembly_to_server_chunk'])) + $reassembly_to_server_chunk = $suricatacfg['reassembly_to_server_chunk']; +else + $reassembly_to_server_chunk = "2560"; + +if (!empty($suricatacfg['reassembly_to_client_chunk'])) + $reassembly_to_client_chunk = $suricatacfg['reassembly_to_client_chunk']; +else + $reassembly_to_client_chunk = "2560"; + +if ($suricatacfg['enable_midstream_sessions'] == 'on') + $stream_enable_midstream = "true"; +else + $stream_enable_midstream = "false"; + +if ($suricatacfg['enable_async_sessions'] == 'on') + $stream_enable_async = "true"; +else + $stream_enable_async = "false"; + +// Add the OS-specific host policies if configured, otherwise +// just set default to BSD for all networks. +if (!is_array($suricatacfg['host_os_policy']['item'])) + $suricatacfg['host_os_policy']['item'] = array(); +if (empty($suricatacfg['host_os_policy']['item'])) + $host_os_policy = "bsd: [0.0.0.0/0]"; +else { + foreach ($suricatacfg['host_os_policy']['item'] as $k => $v) { + $engine = "{$v['policy']}: "; + if ($v['bind_to'] <> "all") { + $tmp = trim(filter_expand_alias($v['bind_to'])); + if (!empty($tmp)) { + $engine .= "["; + $tmp = preg_replace('/\s+/', ',', $tmp); + $list = explode(',', $tmp); + foreach ($list as $addr) { + if (is_ipaddrv6($addr) || is_subnetv6($addr)) + $engine .= "\"{$addr}\", "; + elseif (is_ipaddrv4($addr) || is_subnetv4($addr)) + $engine .= "{$addr}, "; + else + log_error("[suricata] WARNING: invalid IP address value '{$addr}' in Alias {$v['bind_to']} will be ignored."); + } + $engine = trim($engine, ' ,'); + $engine .= "]"; + } + else { + log_error("[suricata] WARNING: unable to resolve IP List Alias '{$v['bind_to']}' for Host OS Policy '{$v['name']}' ... ignoring this entry."); + continue; + } + } + else + $engine .= "[0.0.0.0/0]"; + + $host_os_policy .= " {$engine}\n"; + } + // Remove trailing newline + $host_os_policy = trim($host_os_policy); +} + +// Add the HTTP Server-specific policies if configured, otherwise +// just set default to IDS for all networks. +if (!is_array($suricatacfg['libhtp_policy']['item'])) + $suricatacfg['libhtp_policy']['item'] = array(); +if (empty($suricatacfg['libhtp_policy']['item'])) { + $http_hosts_default_policy = "default-config:\n personality: IDS\n request-body-limit: 4096\n response-body-limit: 4096\n"; + $http_hosts_default_policy .= " double-decode-path: no\n double-decode-query: no\n"; +} +else { + foreach ($suricatacfg['libhtp_policy']['item'] as $k => $v) { + if ($v['bind_to'] <> "all") { + $engine = "server-config:\n - {$v['name']}:\n"; + $tmp = trim(filter_expand_alias($v['bind_to'])); + if (!empty($tmp)) { + $engine .= " address: ["; + $tmp = preg_replace('/\s+/', ',', $tmp); + $list = explode(',', $tmp); + foreach ($list as $addr) { + if (is_ipaddrv6($addr) || is_subnetv6($addr)) + $engine .= "\"{$addr}\", "; + elseif (is_ipaddrv4($addr) || is_subnetv4($addr)) + $engine .= "{$addr}, "; + else { + log_error("[suricata] WARNING: invalid IP address value '{$addr}' in Alias {$v['bind_to']} will be ignored."); + continue; + } + } + $engine = trim($engine, ' ,'); + $engine .= "]\n"; + $engine .= " personality: {$v['personality']}\n request-body-limit: {$v['request-body-limit']}\n"; + $engine .= " response-body-limit: {$v['response-body-limit']}\n"; + $engine .= " double-decode-path: {$v['double-decode-path']}\n"; + $engine .= " double-decode-query: {$v['double-decode-query']}\n"; + $http_hosts_policy .= " {$engine}\n"; + } + else { + log_error("[suricata] WARNING: unable to resolve IP List Alias '{$v['bind_to']}' for Host OS Policy '{$v['name']}' ... ignoring this entry."); + continue; + } + } + else { + $http_hosts_default_policy = " personality: {$v['personality']}\n request-body-limit: {$v['request-body-limit']}\n"; + $http_hosts_default_policy .= " response-body-limit: {$v['response-body-limit']}\n"; + $http_hosts_default_policy .= " double-decode-path: {$v['double-decode-path']}\n"; + $http_hosts_default_policy .= " double-decode-query: {$v['double-decode-query']}\n"; + } + } + // Remove trailing newline + $http_hosts_default_policy = trim($http_hosts_default_policy); + $http_hosts_policy = trim($http_hosts_policy); +} + +// Configure ASN1 max frames value +if (!empty($suricatacfg['asn1_max_frames'])) + $asn1_max_frames = $suricatacfg['asn1_max_frames']; +else + $asn1_max_frames = "256"; + +// Create the rules files and save in the interface directory +suricata_prepare_rule_files($suricatacfg, $suricatacfgdir); + +// Check and configure only non-empty rules files for the interface +$rules_files = ""; +if (filesize("{$suricatacfgdir}/rules/".ENFORCING_RULES_FILENAME) > 0) + $rules_files .= ENFORCING_RULES_FILENAME; +if (filesize("{$suricatacfgdir}/rules/".FLOWBITS_FILENAME) > 0) + $rules_files .= "\n - " . FLOWBITS_FILENAME; +if (filesize("{$suricatacfgdir}/rules/custom.rules") > 0) + $rules_files .= "\n - custom.rules"; +$rules_files = ltrim($rules_files, '\n -'); + +// Add the general logging settings to the configuration (non-interface specific) +if ($config['installedpackages']['suricata']['config'][0]['log_to_systemlog'] == 'on') + $suricata_use_syslog = "yes"; +else + $suricata_use_syslog = "no"; + +?> diff --git a/config/suricata/suricata_global.php b/config/suricata/suricata_global.php new file mode 100644 index 00000000..f6b5d83d --- /dev/null +++ b/config/suricata/suricata_global.php @@ -0,0 +1,456 @@ + $v) { + foreach ($disabled_rules as $d) + if (strpos(trim($v), $d) !== false) + unset($enabled_rules[$k]); + } + $iface['rulesets'] = implode("||", $enabled_rules); + } + } + + $config['installedpackages']['suricata']['config'][0]['oinkcode'] = $_POST['oinkcode']; + $config['installedpackages']['suricata']['config'][0]['etprocode'] = $_POST['etprocode']; + + $config['installedpackages']['suricata']['config'][0]['rm_blocked'] = $_POST['rm_blocked']; + if ($_POST['suricataloglimitsize']) { + $config['installedpackages']['suricata']['config'][0]['suricataloglimit'] = $_POST['suricataloglimit']; + $config['installedpackages']['suricata']['config'][0]['suricataloglimitsize'] = $_POST['suricataloglimitsize']; + } else { + $config['installedpackages']['suricata']['config'][0]['suricataloglimit'] = 'on'; + + /* code will set limit to 21% of slice that is unused */ + $suricataloglimitDSKsize = round(exec('df -k /var | grep -v "Filesystem" | awk \'{print $4}\'') * .22 / 1024); + $config['installedpackages']['suricata']['config'][0]['suricataloglimitsize'] = $suricataloglimitDSKsize; + } + $config['installedpackages']['suricata']['config'][0]['autoruleupdate'] = $_POST['autoruleupdate']; + + /* Check and adjust format of Rule Update Starttime string to add colon and leading zero if necessary */ + $pos = strpos($_POST['autoruleupdatetime'], ":"); + if ($pos === false) { + $tmp = str_pad($_POST['autoruleupdatetime'], 4, "0", STR_PAD_LEFT); + $_POST['autoruleupdatetime'] = substr($tmp, 0, 2) . ":" . substr($tmp, -2); + } + $config['installedpackages']['suricata']['config'][0]['autoruleupdatetime'] = str_pad($_POST['autoruleupdatetime'], 4, "0", STR_PAD_LEFT); + $config['installedpackages']['suricata']['config'][0]['log_to_systemlog'] = $_POST['log_to_systemlog'] ? 'on' : 'off'; + $config['installedpackages']['suricata']['config'][0]['clearlogs'] = $_POST['clearlogs'] ? 'on' : 'off'; + $config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] = $_POST['forcekeepsettings'] ? 'on' : 'off'; + + $retval = 0; + + /* create whitelist and homenet file, then sync files */ + sync_suricata_package_config(); + + write_config(); + + /* forces page to reload new settings */ + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: /suricata/suricata_global.php"); + exit; + } +} + +$pgtitle = gettext("Suricata: Global Settings"); +include_once("head.inc"); + +?> + + + +' . $pgtitle . '

    '; + +/* Display Alert message, under form tag or no refresh */ +if ($input_errors) + print_input_errors($input_errors); + +?> + +
    + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    " . gettext("Emerging Threats") . "" . gettext(" rules");?> + + + + + + + + + + + + + + + + + +
    >
    >
     
     " . gettext("Note:") . "" . " " . + gettext("The ETPro rules contain all of the ETOpen rules, so the ETOpen rules are not required and are disabled when the ETPro rules are selected."); ?>
    + + + + + + + + + + + +
     

    +
    +
    " . gettext("Snort VRT") . "" . gettext(" rules");?> + + + + + + + + +
    >
     
    + +
    + + + + + + + + + + + +
     

    +
    +
    " . gettext("Snort Community") . "" . gettext(" rules");?> + + + + + +
    > +

    " . gettext("Note: ") . "" . + gettext("If you are a Snort VRT Paid Subscriber, the community ruleset is already built into your download of the ") . + gettext("Snort VRT rules, and there is no benefit in adding this rule set.");?>
    +   " . gettext("NEVER") . "" . gettext(" disables auto-updates."); ?>

    + " . gettext("Hint: ") . "
    " . gettext("in most cases, every 12 hours is a good choice."); ?>
    >   + " . + gettext("Default") . " " . gettext("is ") . "" . gettext("00:03") . ""; ?>.

    +

    +
    +
    +
    +  MB
    + + + + + + + +
    > + ()
    > +
    +
    +
    + + + + +
    " . gettext("MB:") . "";?>  + +  " . gettext("20%") . "" . gettext(" of available space.");?>
    +
    +   +

    + " . gettext("Hint:") . "" . gettext(" in most cases, 1 hour is a good choice.");?>
    + > 
    + > 
    + > 
    + + +
       +
    +

    +
    +
    + + + + + + diff --git a/config/suricata/suricata_import_aliases.php b/config/suricata/suricata_import_aliases.php new file mode 100644 index 00000000..c16ac65d --- /dev/null +++ b/config/suricata/suricata_import_aliases.php @@ -0,0 +1,272 @@ + "", "bind_to" => "", "policy" => "bsd" ); + + $def_libhtp_policy = array( "name" => "default", "bind_to" => "all", "personality" => "IDS", + "request-body-limit" => 4096, "response-body-limit" => 4096, + "double-decode-path" => "no", "double-decode-query" => "no" ); + + // Figure out which engine type we are importing and set up default engine array + $engine = array(); + switch ($eng) { + case "host_os_policy": + $engine = $def_os_policy; + break; + case "libhtp_policy": + $engine = $def_libhtp_policy; + break; + default: + $engine = ""; + $input_errors[] = gettext("Invalid ENGINE TYPE passed in query string. Aborting operation."); + } + + // See if anything was checked to import + if (is_array($_POST['toimport']) && count($_POST['toimport']) > 0) { + foreach ($_POST['toimport'] as $item) { + $engine['name'] = strtolower($item); + $engine['bind_to'] = $item; + $a_nat[] = $engine; + } + } + else + $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); + + // if no errors, write new entry to conf + if (!$input_errors) { + // Reorder the engine array to ensure the + // 'bind_to=all' entry is at the bottom if + // the array contains more than one entry. + if (count($a_nat) > 1) { + $i = -1; + foreach ($a_nat as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } + } + // Only relocate the entry if we + // found it, and it's not already + // at the end. + if ($i > -1 && ($i < (count($a_nat) - 1))) { + $tmp = $a_nat[$i]; + unset($a_nat[$i]); + $a_nat[] = $tmp; + } + } + + // Now write the new engine array to conf and return + write_config(); + + header("Location: {$returl}?id={$id}"); + exit; + } +} + +$pgtitle = gettext("Suricata: Import Host/Network Alias for {$title}"); +include("head.inc"); + +?> + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + +

    +
    + + + + + + + + + + + + + + + + + + "host" && $alias['type'] <> "network") + continue; + if (isset($used[$alias['name']])) + continue; + elseif (trim(filter_expand_alias($alias['name'])) == "") { + $textss = ""; + $textse = ""; + $disable = true; + $tooltip = gettext("Aliases representing a FQDN host cannot be used in Suricata Host OS Policy configurations."); + } + else { + $textss = ""; + $textse = ""; + $disable = ""; + $selectablealias = true; + $tooltip = gettext("Selected entries will be imported. Click to toggle selection of this entry."); + } + ?> + + + + + + + + + + +
    + +
    + 10) { + echo "..."; + } + ?> + +   +
    +
    + "/> +
    + "/>    + "/> +
    +
    +
    +
    +
    + + + diff --git a/config/suricata/suricata_interfaces.php b/config/suricata/suricata_interfaces.php new file mode 100644 index 00000000..47a3ba11 --- /dev/null +++ b/config/suricata/suricata_interfaces.php @@ -0,0 +1,474 @@ + $i) { + if ($i['name'] == $autolist) { + unset($config['installedpackages']['suricata']['suppress']['item'][$k]); + break; + } + } + } + + // Finally delete the interface's config entry entirely + unset($a_nat[$rulei]); + } + conf_mount_ro(); + + /* If all the Suricata interfaces are removed, then unset the config array. */ + if (empty($a_nat)) + unset($a_nat); + + write_config(); + sleep(2); + + /* if there are no ifaces remaining do not create suricata.sh */ + if (!empty($config['installedpackages']['suricata']['rule'])) + suricata_create_rc(); + else { + conf_mount_rw(); + @unlink("{$rcdir}/suricata.sh"); + conf_mount_ro(); + } + + sync_suricata_package_config(); + + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: /suricata/suricata_interfaces.php"); + exit; + } + +} + +/* start/stop Barnyard2 */ +if ($_GET['act'] == 'bartoggle' && is_numeric($id)) { + $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; + $if_real = suricata_get_real_interface($suricatacfg['interface']); + $if_friendly = suricata_get_friendly_interface($suricatacfg['interface']); + + if (suricata_is_running($suricatacfg['uuid'], $if_real, 'barnyard2') == 'no') { + log_error("Toggle (barnyard starting) for {$if_friendly}({$suricatacfg['descr']})..."); + sync_suricata_package_config(); + suricata_barnyard_start($suricatacfg, $if_real); + } else { + log_error("Toggle (barnyard stopping) for {$if_friendly}({$suricatacfg['descr']})..."); + suricata_barnyard_stop($suricatacfg, $if_real); + } + + sleep(3); // So the GUI reports correctly + header("Location: /suricata/suricata_interfaces.php"); + exit; +} + +/* start/stop Suricata */ +if ($_GET['act'] == 'toggle' && is_numeric($id)) { + $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; + $if_real = suricata_get_real_interface($suricatacfg['interface']); + $if_friendly = suricata_get_friendly_interface($suricatacfg['interface']); + + if (suricata_is_running($suricatacfg['uuid'], $if_real) == 'yes') { + log_error("Toggle (suricata stopping) for {$if_friendly}({$suricatacfg['descr']})..."); + suricata_stop($suricatacfg, $if_real); + } else { + log_error("Toggle (suricata starting) for {$if_friendly}({$suricatacfg['descr']})..."); + // set flag to rebuild interface rules before starting Snort + $rebuild_rules = true; + sync_suricata_package_config(); + $rebuild_rules = false; + suricata_start($suricatacfg, $if_real); + } + sleep(3); // So the GUI reports correctly + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: /suricata/suricata_interfaces.php"); + exit; +} + +$pgtitle = "Services: Suricata Intrusion Detection System"; +include_once("head.inc"); + +?> + + +' . $pgtitle . '

    '; +?> + +
    + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
    +
    + + + + + + "; + echo ($no_rules) ? " " : ""; + } else + echo gettext("DISABLED"); + ?> + + + + + + + "; + } else + echo gettext("DISABLED"); + ?> + +   + + + + + +
    +
    +
    +
    +    +   + +
    + + + + +
    + + " + onclick="return intf_del()"> +
    +
     
      + + + + + + + + + + + + + + + + + + + + + + + + + +

    + " . gettext("Suricata Menu ") . + "" . gettext("where you can see an overview of all your interface settings. "); + if (empty($a_nat)) { + echo gettext("Please configure the parameters on the ") . "" . gettext("Global Settings") . + "" . gettext(" tab before adding an interface."); + }?> +

    +

    + +

    +
    Click on the "> icon to add + an interface. +   + "> + "> icons will show current + suricata and barnyard2 status. +
    Click on the "> icon to edit + an interface and settings. +   + Click on the status icons to toggle suricata and barnyard2 status. +
    Click on the "> icon to + delete an interface and settings. +
    +
     
    +
    +
    +
    + + + + + + diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php new file mode 100644 index 00000000..4a805ea2 --- /dev/null +++ b/config/suricata/suricata_interfaces_edit.php @@ -0,0 +1,911 @@ + 'WAN', 'lan' => 'LAN'); + for ($i = 1; isset($config['interfaces']['opt' . $i]); $i++) + $interfaces['opt' . $i] = $config['interfaces']['opt' . $i]['descr']; +} + +// See if interface is already configured, and use its values +if (isset($id) && $a_rule[$id]) { + $pconfig = $a_rule[$id]; + if (!empty($pconfig['configpassthru'])) + $pconfig['configpassthru'] = base64_decode($pconfig['configpassthru']); + if (empty($pconfig['uuid'])) + $pconfig['uuid'] = $suricata_uuid; +} +// Must be a new interface, so try to pick next available physical interface to use +elseif (isset($id) && !isset($a_rule[$id])) { + $ifaces = get_configured_interface_list(); + $ifrules = array(); + foreach($a_rule as $r) + $ifrules[] = $r['interface']; + foreach ($ifaces as $i) { + if (!in_array($i, $ifrules)) { + $pconfig['interface'] = $i; + break; + } + } + if (count($ifrules) == count($ifaces)) { + $input_errors[] = gettext("No more available interfaces to configure for Suricata!"); + $interfaces = array(); + $pconfig = array(); + } +} + +if (isset($_GET['dup'])) + unset($id); + +// Set defaults for any empty key parameters +if (empty($pconfig['blockoffendersip'])) + $pconfig['blockoffendersip'] = "both"; +if (empty($pconfig['max_pending_packets'])) + $pconfig['max_pending_packets'] = "1024"; +if (empty($pconfig['inspect_recursion_limit'])) + $pconfig['inspect_recursion_limit'] = "3000"; +if (empty($pconfig['detect_eng_profile'])) + $pconfig['detect_eng_profile'] = "medium"; +if (empty($pconfig['mpm_algo'])) + $pconfig['mpm_algo'] = "ac"; +if (empty($pconfig['sgh_mpm_context'])) + $pconfig['sgh_mpm_context'] = "auto"; +if (empty($pconfig['enable_http_log'])) + $pconfig['enable_http_log'] = "on"; +if (empty($pconfig['append_http_log'])) + $pconfig['append_http_log'] = "on"; +if (empty($pconfig['enable_tls_log'])) + $pconfig['enable_tls_log'] = "off"; +if (empty($pconfig['tls_log_extended'])) + $pconfig['tls_log_extended'] = "on"; +if (empty($pconfig['enable_stats_log'])) + $pconfig['enable_stats_log'] = "off"; +if (empty($pconfig['stats_upd_interval'])) + $pconfig['stats_upd_interval'] = "10"; +if (empty($pconfig['append_stats_log'])) + $pconfig['append_stats_log'] = "off"; +if (empty($pconfig['append_json_file_log'])) + $pconfig['append_json_file_log'] = "on"; +if (empty($pconfig['enable_pcap_log'])) + $pconfig['enable_pcap_log'] = "off"; +if (empty($pconfig['max_pcap_log_size'])) + $pconfig['max_pcap_log_size'] = "32"; +if (empty($pconfig['max_pcap_log_files'])) + $pconfig['max_pcap_log_files'] = "1000"; + +if ($_POST["Submit"]) { + if (!$_POST['interface']) + $input_errors[] = gettext("Choosing an Interface is mandatory!"); + + if ($_POST['max_pending_packets'] < 1 || $_POST['max_pending_packets'] > 65535) + $input_errors[] = gettext("The value for Maximum-Pending-Packets must be between 1 and 65,535!"); + + if (!empty($_POST['max_pcap_log_size']) && !is_numeric($_POST['max_pcap_log_size'])) + $input_errors[] = gettext("The value for 'Max Packet Log Size' must be numbers only. Do not include any alphabetic characters."); + + if (!empty($_POST['max_pcap_log_files']) && !is_numeric($_POST['max_pcap_log_files'])) + $input_errors[] = gettext("The value for 'Max Packet Log Files' must be numbers only."); + + // if no errors write to suricata.yaml + if (!$input_errors) { + $natent = $a_rule[$id]; + $natent['interface'] = $_POST['interface']; + $natent['enable'] = $_POST['enable'] ? 'on' : 'off'; + $natent['uuid'] = $pconfig['uuid']; + + // See if the HOME_NET, EXTERNAL_NET, or SUPPRESS LIST values were changed + $suricata_reload = false; + if ($_POST['homelistname'] && ($_POST['homelistname'] <> $natent['homelistname'])) + $suricata_reload = true; + if ($_POST['externallistname'] && ($_POST['externallistname'] <> $natent['externallistname'])) + $suricata_reload = true; + if ($_POST['suppresslistname'] && ($_POST['suppresslistname'] <> $natent['suppresslistname'])) + $suricata_reload = true; + + if ($_POST['descr']) $natent['descr'] = $_POST['descr']; else $natent['descr'] = strtoupper($natent['interface']); + if ($_POST['max_pcap_log_size']) $natent['max_pcap_log_size'] = $_POST['max_pcap_log_size']; else unset($natent['max_pcap_log_size']); + if ($_POST['max_pcap_log_files']) $natent['max_pcap_log_files'] = $_POST['max_pcap_log_files']; else unset($natent['max_pcap_log_files']); + if ($_POST['enable_stats_log'] == "on") { $natent['enable_stats_log'] = 'on'; }else{ $natent['enable_stats_log'] = 'off'; } + if ($_POST['append_stats_log'] == "on") { $natent['append_stats_log'] = 'on'; }else{ $natent['append_stats_log'] = 'off'; } + if ($_POST['stats_upd_interval']) $natent['stats_upd_interval'] = $_POST['stats_upd_interval']; else $natent['stats_upd_interval'] = "10"; + if ($_POST['enable_http_log'] == "on") { $natent['enable_http_log'] = 'on'; }else{ $natent['enable_http_log'] = 'off'; } + if ($_POST['append_http_log'] == "on") { $natent['append_http_log'] = 'on'; }else{ $natent['append_http_log'] = 'off'; } + if ($_POST['enable_tls_log'] == "on") { $natent['enable_tls_log'] = 'on'; }else{ $natent['enable_tls_log'] = 'off'; } + if ($_POST['tls_log_extended'] == "on") { $natent['tls_log_extended'] = 'on'; }else{ $natent['tls_log_extended'] = 'off'; } + if ($_POST['enable_pcap_log'] == "on") { $natent['enable_pcap_log'] = 'on'; }else{ $natent['enable_pcap_log'] = 'off'; } + if ($_POST['enable_json_file_log'] == "on") { $natent['enable_json_file_log'] = 'on'; }else{ $natent['enable_json_file_log'] = 'off'; } + if ($_POST['append_json_file_log'] == "on") { $natent['append_json_file_log'] = 'on'; }else{ $natent['append_json_file_log'] = 'off'; } + if ($_POST['enable_tracked_files_magic'] == "on") { $natent['enable_tracked_files_magic'] = 'on'; }else{ $natent['enable_tracked_files_magic'] = 'off'; } + if ($_POST['enable_tracked_files_md5'] == "on") { $natent['enable_tracked_files_md5'] = 'on'; }else{ $natent['enable_tracked_files_md5'] = 'off'; } + if ($_POST['enable_file_store'] == "on") { $natent['enable_file_store'] = 'on'; }else{ $natent['enable_file_store'] = 'off'; } + if ($_POST['max_pending_packets']) $natent['max_pending_packets'] = $_POST['max_pending_packets']; else unset($natent['max_pending_packets']); + if ($_POST['inspect_recursion_limit']) $natent['inspect_recursion_limit'] = $_POST['inspect_recursion_limit']; else unset($natent['inspect_recursion_limit']); + if ($_POST['detect_eng_profile']) $natent['detect_eng_profile'] = $_POST['detect_eng_profile']; else unset($natent['detect_eng_profile']); + if ($_POST['mpm_algo']) $natent['mpm_algo'] = $_POST['mpm_algo']; else unset($natent['mpm_algo']); + if ($_POST['sgh_mpm_context']) $natent['sgh_mpm_context'] = $_POST['sgh_mpm_context']; else unset($natent['sgh_mpm_context']); + if ($_POST['blockoffenders'] == "on") $natent['blockoffenders'] = 'on'; else $natent['blockoffenders'] = 'off'; + if ($_POST['blockoffenderskill'] == "on") $natent['blockoffenderskill'] = 'on'; else unset($natent['blockoffenderskill']); + if ($_POST['blockoffendersip']) $natent['blockoffendersip'] = $_POST['blockoffendersip']; else unset($natent['blockoffendersip']); + if ($_POST['whitelistname']) $natent['whitelistname'] = $_POST['whitelistname']; else unset($natent['whitelistname']); + if ($_POST['homelistname']) $natent['homelistname'] = $_POST['homelistname']; else unset($natent['homelistname']); + if ($_POST['externallistname']) $natent['externallistname'] = $_POST['externallistname']; else unset($natent['externallistname']); + if ($_POST['suppresslistname']) $natent['suppresslistname'] = $_POST['suppresslistname']; else unset($natent['suppresslistname']); + if ($_POST['alertsystemlog'] == "on") { $natent['alertsystemlog'] = 'on'; }else{ $natent['alertsystemlog'] = 'off'; } + if ($_POST['configpassthru']) $natent['configpassthru'] = base64_encode($_POST['configpassthru']); else unset($natent['configpassthru']); + + $if_real = suricata_get_real_interface($natent['interface']); + if (isset($id) && $a_rule[$id]) { + if ($natent['interface'] != $a_rule[$id]['interface']) { + $oif_real = suricata_get_real_interface($a_rule[$id]['interface']); + suricata_stop($a_rule[$id], $oif_real); + exec("rm -r /var/log/suricata_{$oif_real}" . $a_rule[$id]['uuid']); + exec("mv -f {$suricatadir}/suricata_" . $a_rule[$id]['uuid'] . "_{$oif_real} {$suricatadir}/suricata_" . $a_rule[$id]['uuid'] . "_{$if_real}"); + } + // Edits don't require a rules rebuild, so turn it "off" + $rebuild_rules = false; + $a_rule[$id] = $natent; + } else { + // Adding new interface, so set interface configuration parameter defaults + $natent['ip_max_frags'] = "65535"; + $natent['ip_frag_timeout'] = "60"; + $natent['frag_memcap'] = '33554432'; + $natent['ip_max_trackers'] = '65535'; + $natent['frag_hash_size'] = '65536'; + + $natent['flow_memcap'] = '33554432'; + $natent['flow_prealloc'] = '10000'; + $natent['flow_hash_size'] = '65536'; + $natent['flow_emerg_recovery'] = '30'; + $natent['flow_prune'] = '5'; + + $natent['flow_tcp_new_timeout'] = '60'; + $natent['flow_tcp_established_timeout'] = '3600'; + $natent['flow_tcp_closed_timeout'] = '120'; + $natent['flow_tcp_emerg_new_timeout'] = '10'; + $natent['flow_tcp_emerg_established_timeout'] = '300'; + $natent['flow_tcp_emerg_closed_timeout'] = '20'; + + $natent['flow_udp_new_timeout'] = '30'; + $natent['flow_udp_established_timeout'] = '300'; + $natent['flow_udp_emerg_new_timeout'] = '10'; + $natent['flow_udp_emerg_established_timeout'] = '100'; + + $natent['flow_icmp_new_timeout'] = '30'; + $natent['flow_icmp_established_timeout'] = '300'; + $natent['flow_icmp_emerg_new_timeout'] = '10'; + $natent['flow_icmp_emerg_established_timeout'] = '100'; + + $natent['stream_memcap'] = '33554432'; + $natent['stream_max_sessions'] = '262144'; + $natent['stream_prealloc_sessions'] = '32768'; + $natent['reassembly_memcap'] = '67108864'; + $natent['reassembly_depth'] = '1048576'; + $natent['reassembly_to_server_chunk'] = '2560'; + $natent['reassembly_to_client_chunk'] = '2560'; + $natent['enable_midstream_sessions'] = 'off'; + $natent['enable_async_sessions'] = 'off'; + + $natent['asn1_max_frames'] = '256'; + + $default = array( "name" => "default", "bind_to" => "all", "policy" => "bsd" ); + if (!is_array($natent['host_os_policy']['item'])) + $natent['host_os_policy']['item'] = array(); + $natent['host_os_policy']['item'][] = $default; + + $default = array( "name" => "default", "bind_to" => "all", "personality" => "IDS", + "request-body-limit" => 4096, "response-body-limit" => 4096, + "double-decode-path" => "no", "double-decode-query" => "no" ); + if (!is_array($natent['libhtp_policy']['item'])) + $natent['libhtp_policy']['item'] = array(); + $natent['libhtp_policy']['item'][] = $default; + + // Enable the basic default rules for the interface + $natent['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events"; + + // Adding a new interface, so set flag to build new rules + $rebuild_rules = true; + + // Add the new interface configuration to the [rule] array in config + $a_rule[] = $natent; + } + + // If Suricata is disabled on this interface, stop any running instance + if ($natent['enable'] != 'on') + suricata_stop($natent, $if_real); + + // Save configuration changes + write_config(); + + // Update suricata.conf and suricata.sh files for this interface + sync_suricata_package_config(); + + /*******************************************************/ + /* Signal Suricata to reload configuration if we changed */ + /* HOME_NET, EXTERNAL_NET or Suppress list values. */ + /* The function only signals a running Suricata instance */ + /* to safely reload these parameters. */ + /*******************************************************/ + if ($suricata_reload == true) + suricata_reload_config($natent, "USR2"); + + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: /suricata/suricata_interfaces.php"); + exit; + } else + $pconfig = $_POST; +} + +$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} - Edit Settings"); +include_once("head.inc"); +?> + + + + + +' . $pgtitle . '

    ';}?> + + + +
    " method="post" name="iform" id="iform"> + +'; + echo ' + +
    +
    '; + $tab_array = array(); + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface "); + $tab_array[] = array($menu_iface . gettext("Settings"), true, "/suricata/suricata_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), false, "/suricata/suricata_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), false, "/suricata/suricata_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Flow/Stream"), false, "/suricata/suricata_flow_stream.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("App Parsers"), false, "/suricata/suricata_app_parsers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), false, "/suricata/suricata_define_vars.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/suricata/suricata_barnyard.php?id={$id}"); + display_top_tabs($tab_array); +?> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + onClick="enable_change(false)"/> + +
    +    +
    +  


    +
    /> +
    + onClick="toggle_stats_log();" id="enable_stats_log"/> + " . gettext("Not Checked") . "."; ?> +
      + " . gettext("seconds") . "" . gettext(" for stats updating. Default is ") . "" . + gettext("10") . "."; ?>
    /> + " . gettext("Not Checked") . "."; ?>
    + onClick="toggle_http_log()" id="enable_http_log"/> + " . gettext("Checked") . "."; ?>
    /> + " . gettext("Checked") . "."; ?>
    + onClick="toggle_tls_log()" id="enable_tls_log"/> + " . gettext("Not Checked") . "."; ?>
    /> + " . gettext("Checked") . "."; ?>
    + onClick="toggle_json_file_log()" id="enable_json_file_log"/> + " . gettext("Not Checked") . "."; ?>
    + id="append_json_file_log"/> + " . gettext("Checked") . "."; ?>
    + id="enable_tracked_files_magic"/> + " . gettext("Not Checked") . "."; ?>
    + id="enable_tracked_files_md5"/> + " . gettext("Not Checked") . "."; ?>
    + onClick="toggle_file_store()" id="enable_file_store"/> + " . gettext("Not Checked") . "."; ?> + +
    + onClick="toggle_pcap_log()"/> + " . gettext("Not Checked") . "."; ?> + +
      + " . gettext("MB") . "" . gettext(" for a packet log file. Default is ") . "" . + gettext("32") . "."; ?>

      + " . + gettext("1000") . "."; ?>

      + " . + gettext("1024") . "."; ?>

    +    + " . gettext("Default") . + "" . gettext(" is ") . "" . gettext("Medium") . ""; ?>.

    + +
    +    + " . gettext("Default") . + "" . gettext(" is ") . "" . gettext("AC") . ""; ?>.

    + +
    +    + " . gettext("Default") . + "" . gettext(" is ") . "" . gettext("Auto") . ""; ?>.

    + +
      + " . + gettext("3000") . "."; ?>

    + +      "/> +
    + +

    +  
    +  
    +
    +    +  

    +  
    +  
    +
    + +      "/> +
    +

    +  
    +   +
    + +      "/> +
    +
     
    " . + gettext("Default option disables suppression and filtering."); ?> +
    + +
    "/> + +
     " . + gettext("Please save your settings before you attempt to start Suricata."); ?> +
    +
    +
    +
    + + + + + diff --git a/config/suricata/suricata_libhtp_policy_engine.php b/config/suricata/suricata_libhtp_policy_engine.php new file mode 100644 index 00000000..a1f6a77c --- /dev/null +++ b/config/suricata/suricata_libhtp_policy_engine.php @@ -0,0 +1,329 @@ + "engine_{$eng_id}", "bind_to" => "", "personality" => "IDS", + "request-body-limit" => "4096", "response-body-limit" => "4096", + "double-decode-path" => "no", "double-decode-query" => "no" ); + + // See if this is initial entry and set to "default" if true + if ($eng_id < 1) { + $def['name'] = "default"; + $def['bind_to'] = "all"; + } + $pconfig = $def; +} +else { + $pconfig = $a_nat[$eng_id]; + + // Check for any empty values and set sensible defaults + if (empty($pconfig['personality'])) + $pconfig['personality'] = "IDS"; +} + +if ($_POST['Cancel']) { + header("Location: /suricata/suricata_app_parsers.php?id={$id}"); + exit; +} + +// Check for returned "selected alias" if action is import +if ($_GET['act'] == "import") { + if ($_GET['varname'] == "bind_to" && !empty($_GET['varvalue'])) + $pconfig[$_GET['varname']] = $_GET['varvalue']; +} + +if ($_POST['Submit']) { + + /* Grab all the POST values and save in new temp array */ + $engine = array(); + if ($_POST['policy_name']) { $engine['name'] = trim($_POST['policy_name']); } else { $engine['name'] = "default"; } + if ($_POST['policy_bind_to']) { + if (is_alias($_POST['policy_bind_to'])) + $engine['bind_to'] = $_POST['policy_bind_to']; + elseif (strtolower(trim($_POST['policy_bind_to'])) == "all") + $engine['bind_to'] = "all"; + else + $input_errors[] = gettext("You must provide a valid Alias or the reserved keyword 'all' for the 'Bind-To IP Address' value."); + } + else { + $input_errors[] = gettext("The 'Bind-To IP Address' value cannot be blank. Provide a valid Alias or the reserved keyword 'all'."); + } + + if ($_POST['personality']) { $engine['personality'] = $_POST['personality']; } else { $engine['personality'] = "IDS"; } + if (is_numeric($_POST['req_body_limit']) && $_POST['req_body_limit'] >= 0) + $engine['request-body-limit'] = $_POST['req_body_limit']; + else + $input_errors[] = gettext("The value for 'Request Body Limit' must be all numbers and greater than or equal to zero."); + + if (is_numeric($_POST['resp_body_limit']) && $_POST['resp_body_limit'] >= 0) + $engine['response-body-limit'] = $_POST['resp_body_limit']; + else + $input_errors[] = gettext("The value for 'Response Body Limit' must be all numbers and greater than or equal to zero."); + + if ($_POST['enable_double_decode_path']) { $engine['double-decode-path'] = 'yes'; }else{ $engine['double-decode-path'] = 'no'; } + if ($_POST['enable_double_decode_query']) { $engine['double-decode-query'] = 'yes'; }else{ $engine['double-decode-query'] = 'no'; } + + /* Can only have one "all" Bind_To address */ + if ($engine['bind_to'] == "all" && $engine['name'] <> "default") { + $input_errors[] = gettext("Only one default HTTP Server Policy Engine can be bound to all addresses."); + $pconfig = $engine; + } + + /* if no errors, write new entry to conf */ + if (!$input_errors) { + if (isset($eng_id) && $a_nat[$eng_id]) { + $a_nat[$eng_id] = $engine; + } + else + $a_nat[] = $engine; + + /* Reorder the engine array to ensure the */ + /* 'bind_to=all' entry is at the bottom */ + /* if it contains more than one entry. */ + if (count($a_nat) > 1) { + $i = -1; + foreach ($a_nat as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } + } + /* Only relocate the entry if we */ + /* found it, and it's not already */ + /* at the end. */ + if ($i > -1 && ($i < (count($a_nat) - 1))) { + $tmp = $a_nat[$i]; + unset($a_nat[$i]); + $a_nat[] = $tmp; + } + } + + /* Now write the new engine array to conf */ + write_config(); + + header("Location: /suricata/suricata_app_parsers.php?id={$id}"); + exit; + } +} + +$if_friendly = suricata_get_friendly_interface($config['installedpackages']['suricata']['rule'][$id]['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} HTTP Server Policy Engine"); +include_once("head.inc"); + +?> + + + + + +
    + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + >  + "default") + echo gettext("Name or description for this engine. (Max 25 characters)"); + else + echo "" . gettext("The name for the 'default' engine is read-only.") . "";?>
    + " . gettext("default") . ""; ?>.
    +
    + "default") : ?> + + + + + + + + +
      + "/>
    +
    " . gettext("Supplied value must be a pre-configured Alias or the keyword 'all'.");?> + +   + " . gettext("IP List for the default engine is read-only and must be 'all'.") . "";?>
    +
    + +
    +   " . gettext("IDS") . ""; ?>.

    +
    +
    +   + " . gettext("4,096") . "" . gettext(" bytes."); ?>

    +
    " . + gettext("Note: ") . "" . gettext("Setting this parameter to 0 will inspect all of the client-body."); ?> +
    +   + " . gettext("4,096") . "" . gettext(" bytes."); ?>

    +
    " . + gettext("Note: ") . "" . gettext("Setting this parameter to 0 will inspect all of the server-body."); ?> +
    > + " . gettext("Not Checked") . "."; ?>
    > + " . gettext("Not Checked") . "."; ?>
      + "> +      + ">
    +
    +
    +
    + + + + + + diff --git a/config/suricata/suricata_list_view.php b/config/suricata/suricata_list_view.php new file mode 100644 index 00000000..2ff121f2 --- /dev/null +++ b/config/suricata/suricata_list_view.php @@ -0,0 +1,100 @@ + + + + + + + + +
    + + + + +
    + + + + + + + + + + + +
    Suricata:
    + + +  ' . $_GET['wlist']; ?>     +
    +
    + +
    +
    +
    +
    + + + diff --git a/config/suricata/suricata_log_view.php b/config/suricata/suricata_log_view.php new file mode 100644 index 00000000..41a7225e --- /dev/null +++ b/config/suricata/suricata_log_view.php @@ -0,0 +1,86 @@ + + + + + + + + +
    + + + + +
    + + + + + + + + + + + +
    Suricata: Log File Viewer
    + + +  ' . $_GET['logfile']; ?>     +
    +
    + +
    +
    +
    +
    + + + diff --git a/config/suricata/suricata_logs_browser.php b/config/suricata/suricata_logs_browser.php new file mode 100644 index 00000000..dfa56146 --- /dev/null +++ b/config/suricata/suricata_logs_browser.php @@ -0,0 +1,217 @@ + + + + +' . $pgtitle . '

    ';} +if ($input_errors) { + print_input_errors($input_errors); +} + +?> + + + +
    + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    +    +
    +    +
    + + +
    + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + diff --git a/config/suricata/suricata_os_policy_engine.php b/config/suricata/suricata_os_policy_engine.php new file mode 100644 index 00000000..5c0ebbc1 --- /dev/null +++ b/config/suricata/suricata_os_policy_engine.php @@ -0,0 +1,275 @@ + "engine_{$eng_id}", "bind_to" => "", "policy" => "bsd" ); + // See if this is initial entry and set to "default" if true + if ($eng_id < 1) { + $def['name'] = "default"; + $def['bind_to'] = "all"; + } + $pconfig = $def; +} +else { + $pconfig = $a_nat[$eng_id]; + + // Check for any empty values and set sensible defaults + if (empty($pconfig['policy'])) + $pconfig['policy'] = "bsd"; +} + +if ($_POST['Cancel']) { + header("Location: /suricata/suricata_flow_stream.php?id={$id}"); + exit; +} + +// Check for returned "selected alias" if action is import +if ($_GET['act'] == "import") { + if ($_GET['varname'] == "bind_to" && !empty($_GET['varvalue'])) + $pconfig[$_GET['varname']] = $_GET['varvalue']; +} + +if ($_POST['Submit']) { + + /* Grab all the POST values and save in new temp array */ + $engine = array(); + if ($_POST['policy_name']) { $engine['name'] = trim($_POST['policy_name']); } else { $engine['name'] = "default"; } + if ($_POST['policy_bind_to']) { + if (is_alias($_POST['policy_bind_to'])) + $engine['bind_to'] = $_POST['policy_bind_to']; + elseif (strtolower(trim($_POST['policy_bind_to'])) == "all") + $engine['bind_to'] = "all"; + else + $input_errors[] = gettext("You must provide a valid Alias or the reserved keyword 'all' for the 'Bind-To IP Address' value."); + } + else { + $input_errors[] = gettext("The 'Bind-To IP Address' value cannot be blank. Provide a valid Alias or the reserved keyword 'all'."); + } + + if ($_POST['policy']) { $engine['policy'] = $_POST['policy']; } else { $engine['policy'] = "bsd"; } + + /* Can only have one "all" Bind_To address */ + if ($engine['bind_to'] == "all" && $engine['name'] <> "default") { + $input_errors[] = gettext("Only one default OS-Policy Engine can be bound to all addresses."); + $pconfig = $engine; + } + + /* if no errors, write new entry to conf */ + if (!$input_errors) { + if (isset($eng_id) && $a_nat[$eng_id]) { + $a_nat[$eng_id] = $engine; + } + else + $a_nat[] = $engine; + + /* Reorder the engine array to ensure the */ + /* 'bind_to=all' entry is at the bottom */ + /* if it contains more than one entry. */ + if (count($a_nat) > 1) { + $i = -1; + foreach ($a_nat as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } + } + /* Only relocate the entry if we */ + /* found it, and it's not already */ + /* at the end. */ + if ($i > -1 && ($i < (count($a_nat) - 1))) { + $tmp = $a_nat[$i]; + unset($a_nat[$i]); + $a_nat[] = $tmp; + } + } + + /* Now write the new engine array to conf */ + write_config(); + + header("Location: /suricata/suricata_flow_stream.php?id={$id}"); + exit; + } +} + +$if_friendly = suricata_get_friendly_interface($config['installedpackages']['suricata']['rule'][$id]['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} Operating System Policy Engine"); +include_once("head.inc"); + +?> + + + + + +
    + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    + >  + "default") + echo gettext("Name or description for this engine. (Max 25 characters)"); + else + echo "" . gettext("The name for the 'default' engine is read-only.") . "";?>
    + " . gettext("default") . ""; ?>.
    +
    + "default") : ?> + + + + + + + + +
      + "/>
    + " . gettext("Supplied value must be a pre-configured Alias or the keyword 'all'.");?> +      + +   + " . gettext("IP List for the default engine is read-only and must be 'all'.") . "";?>
    +
    + +
    +   " . gettext("BSD") . ""; ?>.

    +
    +
      + "> +      + ">
    +
    +
    +
    + + + + + + diff --git a/config/suricata/suricata_post_install.php b/config/suricata/suricata_post_install.php new file mode 100644 index 00000000..0d6f553e --- /dev/null +++ b/config/suricata/suricata_post_install.php @@ -0,0 +1,139 @@ + "console") + $suricata_gui_include = true; + include('/usr/local/www/suricata/suricata_check_for_rule_updates.php'); + update_status(gettext("Generating suricata.yaml configuration file from saved settings...")); + $rebuild_rules = true; + + // Create the suricata.yaml files for each enabled interface + $suriconf = $config['installedpackages']['suricata']['rule']; + foreach ($suriconf as $value) { + $if_real = suricata_get_real_interface($value['interface']); + + // create a suricata.yaml file for interface + suricata_generate_yaml($value); + + // create barnyard2.conf file for interface + if ($value['barnyard_enable'] == 'on') + suricata_generate_barnyard2_conf($value, $if_real); + } + + // create Suricata bootup file suricata.sh + suricata_create_rc(); + + // Set Log Limit, Block Hosts Time and Rules Update Time + suricata_loglimit_install_cron($config['installedpackages']['suricata']['config'][0]['suricataloglimit'] == 'on' ? true : false); +// suricata_rm_blocked_install_cron($config['installedpackages']['suricata']['config'][0]['rm_blocked'] != "never_b" ? true : false); + suricata_rules_up_install_cron($config['installedpackages']['suricata']['config'][0]['autoruleupdate'] != "never_up" ? true : false); + + // Add the recurring jobs created above to crontab + configure_cron(); + + $rebuild_rules = false; + update_output_window(gettext("Finished rebuilding Suricata configuration files...")); + log_error(gettext("[Suricata] Finished rebuilding installation from saved settings...")); + + // Only try to start Suricata if not in reboot + if (!$g['booting']) { + update_status(gettext("Starting Suricata using rebuilt configuration...")); + update_output_window(gettext("Please wait... while Suricata is started...")); + log_error(gettext("[Suricata] Starting Suricata using rebuilt configuration...")); + start_service("suricata"); + update_output_window(gettext("Suricata has been started using the rebuilt configuration...")); + } +} + +// Update Suricata package version in configuration +$config['installedpackages']['suricata']['config'][0]['suricata_config_ver'] = "0.1-BETA"; +write_config(); + +// Done with post-install, so clear flag +unset($g['suricata_postinstall']); +log_error(gettext("[Suricata] Package post-installation tasks completed...")); +return true; + +?> diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php new file mode 100644 index 00000000..f979d8b2 --- /dev/null +++ b/config/suricata/suricata_rules.php @@ -0,0 +1,790 @@ + $length) + $string = substr($string, 0, ($length - 2)) . "..."; + return $string; +} + +function add_title_attribute($tag, $title) { + + /******************************** + * This function adds a "title" * + * attribute to the passed tag * + * and sets the value to the * + * value specified by "$title". * + ********************************/ + $result = ""; + if (empty($tag)) { + // If passed an empty element tag, then + // just create a tag with title + $result = ""; + } + else { + // Find the ending ">" for the element tag + $pos = strpos($tag, ">"); + if ($pos !== false) { + // We found the ">" delimter, so add "title" + // attribute and close the element tag + $result = substr($tag, 0, $pos) . " title=\"" . $title . "\">"; + } + else { + // We did not find the ">" delimiter, so + // something is wrong, just return the + // tag "as-is" + $result = $tag; + } + } + return $result; +} + +/* convert fake interfaces to real */ +$if_real = suricata_get_real_interface($pconfig['interface']); +$suricata_uuid = $a_rule[$id]['uuid']; +$suricatacfgdir = "{$suricatadir}suricata_{$suricata_uuid}_{$if_real}"; +$snortdownload = $config['installedpackages']['suricata']['config'][0]['enable_vrt_rules']; +$emergingdownload = $config['installedpackages']['suricata']['config'][0]['enable_etopen_rules']; +$etpro = $config['installedpackages']['suricata']['config'][0]['enable_etpro_rules']; +$categories = explode("||", $pconfig['rulesets']); + +if ($_GET['openruleset']) + $currentruleset = $_GET['openruleset']; +else if ($_POST['openruleset']) + $currentruleset = $_POST['openruleset']; +else + $currentruleset = $categories[0]; + +if (empty($categories[0]) && ($currentruleset != "custom.rules") && ($currentruleset != "Auto-Flowbit Rules")) { + if (!empty($a_rule[$id]['ips_policy'])) + $currentruleset = "IPS Policy - " . ucfirst($a_rule[$id]['ips_policy']); + else + $currentruleset = "custom.rules"; +} + +/* One last sanity check -- if the rules directory is empty, default to loading custom rules */ +$tmp = glob("{$suricatadir}rules/*.rules"); +if (empty($tmp)) + $currentruleset = "custom.rules"; + +$ruledir = "{$suricatadir}rules"; +$rulefile = "{$ruledir}/{$currentruleset}"; +if ($currentruleset != 'custom.rules') { + // Read the current rules file into our rules map array. + // If it is the auto-flowbits file, set the full path. + if ($currentruleset == "Auto-Flowbit Rules") + $rulefile = "{$suricatacfgdir}/rules/" . FLOWBITS_FILENAME; + // Test for the special case of an IPS Policy file. + if (substr($currentruleset, 0, 10) == "IPS Policy") + $rules_map = suricata_load_vrt_policy($a_rule[$id]['ips_policy']); + elseif (!file_exists($rulefile)) + $input_errors[] = gettext("{$currentruleset} seems to be missing!!! Please verify rules files have been downloaded, then go to the Categories tab and save the rule set again."); + else + $rules_map = suricata_load_rules_map($rulefile); +} + +/* Load up our enablesid and disablesid arrays with enabled or disabled SIDs */ +$enablesid = suricata_load_sid_mods($a_rule[$id]['rule_sid_on']); +$disablesid = suricata_load_sid_mods($a_rule[$id]['rule_sid_off']); + +if ($_GET['act'] == "toggle" && $_GET['ids'] && !empty($rules_map)) { + + // Get the GID tag embedded in the clicked rule icon. + $gid = $_GET['gid']; + + // Get the SID tag embedded in the clicked rule icon. + $sid= $_GET['ids']; + + // See if the target SID is in our list of modified SIDs, + // and toggle it back to default if present; otherwise, + // add it to the appropriate modified SID list. + if (isset($enablesid[$gid][$sid])) + unset($enablesid[$gid][$sid]); + elseif (isset($disablesid[$gid][$sid])) + unset($disablesid[$gid][$sid]); + else { + if ($rules_map[$gid][$sid]['disabled'] == 1) + $enablesid[$gid][$sid] = "enablesid"; + else + $disablesid[$gid][$sid] = "disablesid"; + } + + // Write the updated enablesid and disablesid values to the config file. + $tmp = ""; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_on'] = $tmp; + else + unset($a_rule[$id]['rule_sid_on']); + + $tmp = ""; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_off'] = $tmp; + else + unset($a_rule[$id]['rule_sid_off']); + + /* Update the config.xml file. */ + write_config(); + + $_GET['openruleset'] = $currentruleset; + $anchor = "rule_{$gid}_{$sid}"; +} + +if ($_GET['act'] == "disable_all" && !empty($rules_map)) { + + // Mark all rules in the currently selected category "disabled". + foreach (array_keys($rules_map) as $k1) { + foreach (array_keys($rules_map[$k1]) as $k2) { + if (isset($enablesid[$k1][$k2])) + unset($enablesid[$k1][$k2]); + $disablesid[$k1][$k2] = "disablesid"; + } + } + + // Write the updated enablesid and disablesid values to the config file. + $tmp = ""; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_on'] = $tmp; + else + unset($a_rule[$id]['rule_sid_on']); + + $tmp = ""; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_off'] = $tmp; + else + unset($a_rule[$id]['rule_sid_off']); + + write_config(); + + $_GET['openruleset'] = $currentruleset; + header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); + exit; +} + +if ($_GET['act'] == "enable_all" && !empty($rules_map)) { + + // Mark all rules in the currently selected category "enabled". + foreach (array_keys($rules_map) as $k1) { + foreach (array_keys($rules_map[$k1]) as $k2) { + if (isset($disablesid[$k1][$k2])) + unset($disablesid[$k1][$k2]); + $enablesid[$k1][$k2] = "enablesid"; + } + } + // Write the updated enablesid and disablesid values to the config file. + $tmp = ""; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_on'] = $tmp; + else + unset($a_rule[$id]['rule_sid_on']); + + $tmp = ""; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_off'] = $tmp; + else + unset($a_rule[$id]['rule_sid_off']); + + write_config(); + + $_GET['openruleset'] = $currentruleset; + header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); + exit; +} + +if ($_GET['act'] == "resetcategory" && !empty($rules_map)) { + + // Reset any modified SIDs in the current rule category to their defaults. + foreach (array_keys($rules_map) as $k1) { + foreach (array_keys($rules_map[$k1]) as $k2) { + if (isset($enablesid[$k1][$k2])) + unset($enablesid[$k1][$k2]); + if (isset($disablesid[$k1][$k2])) + unset($disablesid[$k1][$k2]); + } + } + + // Write the updated enablesid and disablesid values to the config file. + $tmp = ""; + foreach (array_keys($enablesid) as $k1) { + foreach (array_keys($enablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_on'] = $tmp; + else + unset($a_rule[$id]['rule_sid_on']); + + $tmp = ""; + foreach (array_keys($disablesid) as $k1) { + foreach (array_keys($disablesid[$k1]) as $k2) + $tmp .= "{$k1}:{$k2}||"; + } + $tmp = rtrim($tmp, "||"); + + if (!empty($tmp)) + $a_rule[$id]['rule_sid_off'] = $tmp; + else + unset($a_rule[$id]['rule_sid_off']); + + write_config(); + + $_GET['openruleset'] = $currentruleset; + header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); + exit; +} + +if ($_GET['act'] == "resetall" && !empty($rules_map)) { + + // Remove all modified SIDs from config.xml and save the changes. + unset($a_rule[$id]['rule_sid_on']); + unset($a_rule[$id]['rule_sid_off']); + + /* Update the config.xml file. */ + write_config(); + + $_GET['openruleset'] = $currentruleset; + header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); + exit; +} + +if ($_POST['clear']) { + unset($a_rule[$id]['customrules']); + write_config(); + $rebuild_rules = true; + suricata_generate_yaml($a_rule[$id]); + $rebuild_rules = false; + header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); + exit; +} + +if ($_POST['customrules']) { + $a_rule[$id]['customrules'] = base64_encode($_POST['customrules']); + write_config(); + $rebuild_rules = true; + suricata_generate_yaml($a_rule[$id]); + $rebuild_rules = false; + $output = ""; + $retcode = ""; +// exec("/usr/local/bin/snort -T -c {$snortdir}/snort_{$snort_uuid}_{$if_real}/snort.conf 2>&1", $output, $retcode); +// if (intval($retcode) != 0) { +// $error = ""; +// $start = count($output); +// $end = $start - 4; +// for($i = $start; $i > $end; $i--) +// $error .= $output[$i]; +// $input_errors[] = "Custom rules have errors:\n {$error}"; +// } +// else { +// header("Location: /snort/snort_rules.php?id={$id}&openruleset={$currentruleset}"); +// exit; +// } +} + +else if ($_POST['apply']) { + + /* Save new configuration */ + write_config(); + + /*************************************************/ + /* Update the suricata.yaml file and rebuild the */ + /* rules for this interface. */ + /*************************************************/ + $rebuild_rules = true; + suricata_generate_yaml($a_rule[$id]); + $rebuild_rules = false; + + /* Signal Suricata to "live reload" the rules */ + suricata_reload_config($a_rule[$id]); + + /* Return to this same page */ + header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); + exit; +} +else if ($_POST['cancel']) { + + /* Return to this same page */ + header("Location: /suricata/suricata_rules.php?id={$id}"); + exit; +} + +require_once("guiconfig.inc"); +include_once("head.inc"); + +$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} - Rules: {$currentruleset}"); +?> + + +' . $pgtitle . '

    ';} + +/* Display message */ +if ($input_errors) { + print_input_errors($input_errors); // TODO: add checks +} + +if ($savemsg) { + print_info_box($savemsg); +} + +?> + +
    + + '; + echo ' + + +
    +
    '; + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface ");; + $tab_array = array(); + $tab_array[] = array($menu_iface . gettext("Settings"), false, "/suricata/suricata_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), false, "/suricata/suricata_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), true, "/suricata/suricata_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Flow/Stream"), false, "/suricata/suricata_flow_stream.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("App Parsers"), false, "/suricata/suricata_app_parsers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), false, "/suricata/suricata_define_vars.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/suricata/suricata_barnyard.php?id={$id}"); + display_top_tabs($tab_array); + ?> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
    + + + +
    + " title=" "/>   + " title=""/>   + " onclick="return confirm('')" title=""/> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    " class="formbtn" + title=""/> + +

    + " . + gettext("Suricata must be restarted to activate any SID enable/disable changes made on this tab."); ?>
    + "?> +   
    + "?> +   
    + "?> +   
    + "?> +   
    + + title="" width="17" height="17" border="0"> +   
     
    " . gettext("WARNING: ") . "" . + gettext("You should not disable flowbit rules! Add Suppress List entries for them instead by ") . + "" . + gettext("clicking here") . ".";?>
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $rulem) { + foreach ($rulem as $k2 => $v) { + $sid = suricata_get_sid($v['rule']); + $gid = suricata_get_gid($v['rule']); + + if (isset($disablesid[$gid][$sid])) { + $textss = ""; + $textse = ""; + $iconb = "icon_reject_d.gif"; + $disable_cnt++; + $title = gettext("Disabled by user. Click to toggle to default state"); + } + elseif (($v['disabled'] == 1) && (!isset($enablesid[$gid][$sid]))) { + $textss = ""; + $textse = ""; + $iconb = "icon_block_d.gif"; + $disable_cnt++; + $title = gettext("Disabled by default. Click to toggle to enabled state"); + } + elseif (isset($enablesid[$gid][$sid])) { + $textss = $textse = ""; + $iconb = "icon_reject.gif"; + $enable_cnt++; + $title = gettext("Enabled by user. Click to toggle to default state"); + } + else { + $textss = $textse = ""; + $iconb = "icon_block.gif"; + $enable_cnt++; + $title = gettext("Enabled by default. Click to toggle to disabled state"); + } + + // Pick off the first section of the rule (prior to the start of the MSG field), + // and then use a REGX split to isolate the remaining fields into an array. + $tmp = substr($v['rule'], 0, strpos($v['rule'], "(")); + $tmp = trim(preg_replace('/^\s*#+\s*/', '', $tmp)); + $rule_content = preg_split('/[\s]+/', $tmp); + + // Create custom tags for the fields we truncate so we can + // have a "title" attribute for tooltips to show the full string. + $srcspan = add_title_attribute($textss, $rule_content[2]); + $srcprtspan = add_title_attribute($textss, $rule_content[3]); + $dstspan = add_title_attribute($textss, $rule_content[5]); + $dstprtspan = add_title_attribute($textss, $rule_content[6]); + $protocol = $rule_content[1]; //protocol field + $source = truncate($rule_content[2], 14); //source field + $source_port = truncate($rule_content[3], 10); //source port field + $destination = truncate($rule_content[5], 14); //destination field + $destination_port = truncate($rule_content[6], 10); //destination port field + $message = suricata_get_msg($v['rule']); + $sid_tooltip = gettext("View the raw text for this rule"); + + echo " + + + + + + + + + + "; + $counter++; + } + } + unset($rulem, $v); ?> + +
     
    {$textss} + + {$textse} + + {$textss}{$gid}{$textse} + + {$textss}{$sid}{$textse} + + {$textss}{$v['action']}{$textse} + + {$textss}{$protocol}{$textse} + + {$srcspan}{$source} + + {$srcprtspan}{$source_port} + + {$dstspan}{$destination} + + {$dstprtspan}{$destination_port} + + {$textss}{$message}{$textse} +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    +
    " . + gettext("Total Rules: {$counter}") . "    " . + gettext("Enabled: {$enable_cnt}") . "    " . + gettext("Disabled: {$disable_cnt}"); ?>
    +
    +
    +
    +
    + + + + + diff --git a/config/suricata/suricata_rules_edit.php b/config/suricata/suricata_rules_edit.php new file mode 100644 index 00000000..0dc4c57b --- /dev/null +++ b/config/suricata/suricata_rules_edit.php @@ -0,0 +1,154 @@ + + + + + + + + +
    + + + + +
    + + + + + + + + + + + +
    Suricata: Rules Viewer
    + + +  ' . $displayfile; ?>     +
    +
    + +
    +
    +
    +
    + + + diff --git a/config/suricata/suricata_rules_flowbits.php b/config/suricata/suricata_rules_flowbits.php new file mode 100644 index 00000000..ca424344 --- /dev/null +++ b/config/suricata/suricata_rules_flowbits.php @@ -0,0 +1,306 @@ + 0) { + $rules_map = suricata_load_rules_map("{$suricatadir}suricata_{$suricata_uuid}_{$if_real}/rules/{$flowbit_rules_file}"); + } + else + $savemsg = gettext("There are no flowbit-required rules necessary for the current enforcing rule set."); +} +else + $input_errors[] = gettext("Auto-Flowbit rule generation is disabled for this interface!"); + +if ($_GET['act'] == "addsuppress" && is_numeric($_GET['sidid']) && is_numeric($_GET['gen_id'])) { + $descr = suricata_get_msg($rules_map[$_GET['gen_id']][$_GET['sidid']]['rule']); + if (empty($descr)) + $suppress = "suppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}\n"; + else + $suppress = "# {$descr}\nsuppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}\n"; + if (!is_array($config['installedpackages']['suricata']['suppress'])) + $config['installedpackages']['suricata']['suppress'] = array(); + if (!is_array($config['installedpackages']['suricata']['suppress']['item'])) + $config['installedpackages']['suricata']['suppress']['item'] = array(); + $a_suppress = &$config['installedpackages']['suricata']['suppress']['item']; + $found_list = false; + + if (empty($a_nat[$id]['suppresslistname']) || $a_nat[$id]['suppresslistname'] == 'default') { + $s_list = array(); + $s_list['uuid'] = uniqid(); + $s_list['name'] = $a_nat[$id]['interface'] . "suppress" . "_" . $s_list['uuid']; + $s_list['descr'] = "Auto-generated list for Alert suppression"; + $s_list['suppresspassthru'] = base64_encode($suppress); + $a_suppress[] = $s_list; + $a_nat[$id]['suppresslistname'] = $s_list['name']; + $found_list = true; + } else { + /* If we get here, a Suppress List is defined for the interface so see if we can find it */ + foreach ($a_suppress as $a_id => $alist) { + if ($alist['name'] == $a_nat[$id]['suppresslistname']) { + $found_list = true; + if (!empty($alist['suppresspassthru'])) { + $tmplist = base64_decode($alist['suppresspassthru']); + $tmplist .= "\n{$suppress}"; + $alist['suppresspassthru'] = base64_encode($tmplist); + $a_suppress[$a_id] = $alist; + } + else { + $alist['suppresspassthru'] = base64_encode($suppress); + $a_suppress[$a_id] = $alist; + } + } + } + } + if ($found_list) { + write_config(); + $rebuild_rules = false; + sync_suricata_package_config(); + suricata_reload_config($a_nat[$id]); + $savemsg = gettext("An entry to suppress the Alert for 'gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}' has been added to Suppress List '{$a_nat[$id]['suppresslistname']}'."); + } + else { + /* We did not find the defined list, so notify the user with an error */ + $input_errors[] = gettext("Suppress List '{$a_nat[$id]['suppresslistname']}' is defined for this interface, but it could not be found!"); + } +} + +function truncate($string, $length) { + + /******************************** + * This function truncates the * + * passed string to the length * + * specified adding ellipsis if * + * truncation was necessary. * + ********************************/ + if (strlen($string) > $length) + $string = substr($string, 0, ($length - 3)) . "..."; + return $string; +} + +/* Load up an array with the current Suppression List GID,SID values */ +$supplist = suricata_load_suppress_sigs($a_nat[$id]); + +$if_friendly = suricata_get_friendly_interface($a_nat[$id]['interface']); +$pgtitle = gettext("Suricata: Interface {$if_friendly} - Flowbit Rules"); +include_once("head.inc"); + +?> + + + +' . $pgtitle . '

    ';} +if ($input_errors) print_input_errors($input_errors); +if ($savemsg) + print_info_box($savemsg); +?> +
    +
    + + + + +
    + + + + + + + + + + + + + + + + + 20): ?> + + + + +
    +
    + + + + + + + + + + + + + + +
    /> +
    " . + gettext("Note: ") . "". gettext("the icon is only ") . + gettext("displayed for flowbit rules without the \"noalert\" option."); ?>
    +
    + + + + + + + + + + + + + + + + + + + + + $rulem) { + foreach ($rulem as $k2 => $v) { + $sid = suricata_get_sid($v['rule']); + $gid = suricata_get_gid($v['rule']); + + // Pick off the first section of the rule (prior to the start of the MSG field), + // and then use a REGX split to isolate the remaining fields into an array. + $tmp = substr($v['rule'], 0, strpos($v['rule'], "(")); + $tmp = trim(preg_replace('/^\s*#+\s*/', '', $tmp)); + $rule_content = preg_split('/[\s]+/', $tmp); + + $protocol = $rule_content[1]; //protocol + $source = truncate($rule_content[2], 14); //source + $destination = truncate($rule_content[5], 14); //destination + $message = suricata_get_msg($v['rule']); + $flowbits = implode("; ", suricata_get_flowbits($v['rule'])); + if (strstr($flowbits, "noalert")) + $supplink = ""; + else { + if (!isset($supplist[$gid][$sid])) { + $supplink = ""; + $supplink .= ""; + } + else { + $supplink = ""; + } + } + + // Use "echo" to write the table HTML row-by-row. + echo "" . + "" . + "" . + "" . + "" . + "" . + "" . + ""; + $count++; + } + } + unset($rulem, $v); + ?> + +
    {$sid} {$supplink}{$protocol}{$source}{$destination}{$flowbits}{$message}
    +
    + /> + +
    +
    +
    +
    + + + diff --git a/config/suricata/suricata_rulesets.php b/config/suricata/suricata_rulesets.php new file mode 100644 index 00000000..7ea34786 --- /dev/null +++ b/config/suricata/suricata_rulesets.php @@ -0,0 +1,596 @@ + 0) { + $btn_view_flowb_rules = " title=\"" . gettext("View flowbit-required rules") . "\""; + } + else + $btn_view_flowb_rules = " disabled"; +} +else + $btn_view_flowb_rules = " disabled"; + +// If a Snort VRT policy is enabled and selected, remove all Snort VRT +// rules from the configured rule sets to allow automatic selection. +if ($a_nat[$id]['ips_policy_enable'] == 'on') { + if (isset($a_nat[$id]['ips_policy'])) { + $disable_vrt_rules = "disabled"; + $enabled_sets = explode("||", $a_nat[$id]['rulesets']); + + foreach ($enabled_sets as $k => $v) { + if (substr($v, 0, 6) == "suricata_") + unset($enabled_sets[$k]); + } + $a_nat[$id]['rulesets'] = implode("||", $enabled_sets); + } +} +else + $disable_vrt_rules = ""; + +/* alert file */ +if ($_POST["Submit"]) { + + if ($_POST['ips_policy_enable'] == "on") { + $a_nat[$id]['ips_policy_enable'] = 'on'; + $a_nat[$id]['ips_policy'] = $_POST['ips_policy']; + } + else { + $a_nat[$id]['ips_policy_enable'] = 'off'; + unset($a_nat[$id]['ips_policy']); + } + + $enabled_items = ""; + if (is_array($_POST['toenable'])) + $enabled_items = implode("||", $_POST['toenable']); + else + $enabled_items = $_POST['toenable']; + + $a_nat[$id]['rulesets'] = $enabled_items; + + if ($_POST['autoflowbits'] == "on") + $a_nat[$id]['autoflowbitrules'] = 'on'; + else { + $a_nat[$id]['autoflowbitrules'] = 'off'; + if (file_exists("{$suricatadir}suricata_{$suricata_uuid}_{$if_real}/rules/{$flowbit_rules_file}")) + @unlink("{$suricatadir}suricata_{$suricata_uuid}_{$if_real}/rules/{$flowbit_rules_file}"); + } + + write_config(); + + /*************************************************/ + /* Update the suricata.yaml file and rebuild the */ + /* rules for this interface. */ + /*************************************************/ + $rebuild_rules = true; + suricata_generate_yaml($a_nat[$id]); + $rebuild_rules = false; + + header("Location: /suricata/suricata_rulesets.php?id=$id"); + exit; +} + +if ($_POST['unselectall']) { + $a_nat[$id]['rulesets'] = ""; + + if ($_POST['ips_policy_enable'] == "on") { + $a_nat[$id]['ips_policy_enable'] = 'on'; + $a_nat[$id]['ips_policy'] = $_POST['ips_policy']; + } + else { + $a_nat[$id]['ips_policy_enable'] = 'off'; + unset($a_nat[$id]['ips_policy']); + } + + write_config(); + sync_suricata_package_config(); + + header("Location: /suricata/suricata_rulesets.php?id=$id"); + exit; +} + +if ($_POST['selectall']) { + $rulesets = array(); + + if ($_POST['ips_policy_enable'] == "on") { + $a_nat[$id]['ips_policy_enable'] = 'on'; + $a_nat[$id]['ips_policy'] = $_POST['ips_policy']; + } + else { + $a_nat[$id]['ips_policy_enable'] = 'off'; + unset($a_nat[$id]['ips_policy']); + } + + if ($emergingdownload == 'on') { + $files = glob("{$suricatadir}rules/" . ET_OPEN_FILE_PREFIX . "*.rules"); + foreach ($files as $file) + $rulesets[] = basename($file); + } + elseif ($etpro == 'on') { + $files = glob("{$suricatadir}rules/" . ET_PRO_FILE_PREFIX . "*.rules"); + foreach ($files as $file) + $rulesets[] = basename($file); + } + + if ($snortcommunitydownload == 'on') { + $files = glob("{$suricatadir}rules/" . GPL_FILE_PREFIX . "community.rules"); + foreach ($files as $file) + $rulesets[] = basename($file); + } + + /* Include the Snort VRT rules only if enabled and no IPS policy is set */ + if ($snortdownload == 'on' && $a_nat[$id]['ips_policy_enable'] == 'off') { + $files = glob("{$suricatadir}rules/" . VRT_FILE_PREFIX . "*.rules"); + foreach ($files as $file) + $rulesets[] = basename($file); + } + + $a_nat[$id]['rulesets'] = implode("||", $rulesets); + + write_config(); + sync_suricata_package_config(); + + header("Location: /suricata/suricata_rulesets.php?id=$id"); + exit; +} + +$enabled_rulesets_array = explode("||", $a_nat[$id]['rulesets']); + +$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$pgtitle = gettext("Suricata IDS: Interface {$if_friendly} - Categories"); +include_once("head.inc"); +?> + + + +' . $pgtitle . '

    ';} + +/* Display message */ +if ($input_errors) { + print_input_errors($input_errors); // TODO: add checks +} + +if ($savemsg) { + print_info_box($savemsg); +} + +?> + +
    + + +'; + echo ' + + + +
    +
    '; + $menu_iface=($if_friendly?substr($if_friendly,0,5)." ":"Iface "); + $tab_array = array(); + $tab_array[] = array($menu_iface . gettext("Settings"), false, "/suricata/suricata_interfaces_edit.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Categories"), true, "/suricata/suricata_rulesets.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Rules"), false, "/suricata/suricata_rules.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Flow/Stream"), false, "/suricata/suricata_flow_stream.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("App Parsers"), false, "/suricata/suricata_app_parsers.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Variables"), false, "/suricata/suricata_define_vars.php?id={$id}"); + $tab_array[] = array($menu_iface . gettext("Barnyard2"), false, "/suricata/suricata_barnyard.php?id={$id}"); + display_top_tabs($tab_array); +?> +
    +
    + + + + + + + + + + + + + + + + +

    + ',$suricatadir,''); ?>

    + ' . gettext("Updates") . + '' . gettext(" tab to download the rules configured on the ") . + '' . gettext("Global") . + '' . gettext(" tab."); ?> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \n"; + if (!empty($emergingrules[$j])) { + $file = $emergingrules[$j]; + echo "\n"; + echo "\n"; + } else + echo "\n"; + + if (!empty($snortrules[$j])) { + $file = $snortrules[$j]; + echo "\n"; + echo "\n"; + } else + echo "\n"; + echo "\n"; + } + ?> +

    + + + + + + + + + + + + + + + + + +
    /> +   
      +
    /> +   
      + " . gettext("Note: ") . "" . gettext("Auto-enabled rules generating unwanted alerts should have their GID:SID added to the Suppression List for the interface."); ?> +
    +

    + + + + + + + + + + + + + + + + + +
    + onClick="enable_change()"/>   +
      + " . gettext("Note: ") . "" . gettext("You must be using the Snort VRT rules to use this option."); ?> +
    +   
      +
    +

    + + + + + + + +
    "/>"/>"/>
    +
    +
    + />
    "; + if(is_array($enabled_rulesets_array)) { + if(in_array($file, $enabled_rulesets_array)) + $CHECKED = " checked=\"checked\""; + else + $CHECKED = ""; + } else + $CHECKED = ""; + echo " \n\n"; + echo "\n"; + if (empty($CHECKED)) + echo $file; + else + echo "{$file}\n"; + echo "
    "; + if(is_array($enabled_rulesets_array)) { + if (!empty($disable_vrt_rules)) + $CHECKED = $disable_vrt_rules; + elseif(in_array($file, $enabled_rulesets_array)) + $CHECKED = " checked=\"checked\""; + else + $CHECKED = ""; + } else + $CHECKED = ""; + echo " \n\n"; + echo "\n"; + if (empty($CHECKED) || $CHECKED == "disabled") + echo $file; + else + echo "{$file}\n"; + echo "
    +
     
    + "/>
    +
    +
    +
    + + + + + + diff --git a/config/suricata/suricata_select_alias.php b/config/suricata/suricata_select_alias.php new file mode 100644 index 00000000..f1fd4b93 --- /dev/null +++ b/config/suricata/suricata_select_alias.php @@ -0,0 +1,226 @@ + + + + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + +

    +
    + + + + + + + + + + + + + + + + + + "; + $textse = ""; + $disable = true; + $tooltip = gettext("Aliases representing a FQDN host cannot be used in Suricata configurations."); + } + else { + $textss = ""; + $textse = ""; + $disable = ""; + $selectablealias = true; + $tooltip = gettext("Selected entry will be imported. Click to toggle selection."); + } + ?> + + + + + + + + + + +
    + +
    + 10) { + echo "..."; + } + ?> + +   +
    +
    + "/> +
    + "/>    + "/> +
    +
    +
    +
    +
    + + + diff --git a/config/suricata/suricata_suppress.php b/config/suricata/suricata_suppress.php new file mode 100644 index 00000000..58839dce --- /dev/null +++ b/config/suricata/suricata_suppress.php @@ -0,0 +1,172 @@ + + + + +' . $pgtitle . '

    ';} +if ($input_errors) { + print_input_errors($input_errors); +} + +?> + +
    + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + +
    + +   + + + + + + +
    ">')">">
    +
    + + + + + +
     ">
    +
    +
    +

    +



    +

    +
    + + + diff --git a/config/suricata/suricata_suppress_edit.php b/config/suricata/suricata_suppress_edit.php new file mode 100644 index 00000000..c2c23f10 --- /dev/null +++ b/config/suricata/suricata_suppress_edit.php @@ -0,0 +1,213 @@ + + + + +' . $pgtitle . '

    ';} + +if ($input_errors) print_input_errors($input_errors); +if ($savemsg) + print_info_box($savemsg); + +?> +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Add the name and description of the file.

    +    +

    +
    + +   +
    + suppress gen_id 1, sig_id 1852, track by_src, ip 10.1.1.54
    + event_filter gen_id 1, sig_id 1851, type limit, + track by_src, count 1, seconds 60
    + rate_filter gen_id 135, sig_id 1, track by_src, + count 100, seconds 1, new_action log, timeout 10
    +
       + +
    +
    +
    +
    + + + + diff --git a/config/suricata/suricata_uninstall.php b/config/suricata/suricata_uninstall.php new file mode 100644 index 00000000..808aefec --- /dev/null +++ b/config/suricata/suricata_uninstall.php @@ -0,0 +1,133 @@ + diff --git a/config/suricata/suricata_yaml_template.inc b/config/suricata/suricata_yaml_template.inc new file mode 100644 index 00000000..e62c48eb --- /dev/null +++ b/config/suricata/suricata_yaml_template.inc @@ -0,0 +1,302 @@ + %A:%P" + filetype: regular + + - pcap-log: + enabled: {$pcap_log_enabled} + filename: log.pcap + limit: {$pcap_log_limit_size}mb + max-files: {$pcap_log_max_files} + mode: normal + + - tls-log: + enabled: {$tls_log_enabled} + filename: tls.log + extended: {$tls_log_extended} + certs-log-dir: certs + + - stats: + enabled: {$stats_log_enabled} + filename: stats.log + interval: {$stats_upd_interval} + append: {$stats_log_append} + + - syslog: + enabled: {$alert_syslog} + identity: suricata + facility: auth + level: Info + + - drop: + enabled: no + filename: drop.log + append: yes + filetype: regular + + - file-store: + enabled: {$file_store_enabled} + log-dir: files + force-magic: no + force-md5: no + waldo: file.waldo + + - file-log: + enabled: {$json_log_enabled} + filename: files-json.log + append: {$json_log_append} + filetype: regular + force-magic: {$json_log_magic} + force-md5: {$json_log_md5} + +# Magic file. The extension .mgc is added to the value here. +magic-file: {$suricatacfgdir}/magic + +# Specify a threshold config file +threshold-file: {$suricatacfgdir}/threshold.config + +detect-engine: + - profile: {$detect_eng_profile} + - sgh-mpm-context: {$sgh_mpm_ctx} + - inspection-recursion-limit: {$inspection_recursion_limit} + - rule-reload: true + - delayed-detect: yes + +# Suricata is multi-threaded. Here the threading can be influenced. +threading: + set-cpu-affinity: no + detect-thread-ratio: 1.5 + +mpm-algo: ac + +pattern-matcher: + - b2gc: + search-algo: B2gSearchBNDMq + hash-size: low + bf-size: medium + - b2gm: + search-algo: B2gSearchBNDMq + hash-size: low + bf-size: medium + - b2g: + search-algo: B2gSearchBNDMq + hash-size: low + bf-size: medium + - b3g: + search-algo: B3gSearchBNDMq + hash-size: low + bf-size: medium + - wumanber: + hash-size: low + bf-size: medium + +# Defrag settings: +defrag: + memcap: {$frag_memcap} + hash-size: {$frag_hash_size} + trackers: {$ip_max_trackers} + max-frags: {$ip_max_frags} + prealloc: yes + timeout: {$ip_frag_timeout} + +# Flow settings: +flow: + memcap: {$flow_memcap} + hash-size: {$flow_hash_size} + prealloc: {$flow_prealloc} + emergency-recovery: {$flow_emerg_recovery} + prune-flows: {$flow_prune} + +# Specific timeouts for flows. +flow-timeouts: + default: + new: 30 + established: 300 + closed: 0 + emergency-new: 10 + emergency-established: 100 + emergency-closed: 0 + tcp: + new: {$flow_tcp_new_timeout} + established: {$flow_tcp_established_timeout} + closed: {$flow_tcp_closed_timeout} + emergency-new: {$flow_tcp_emerg_new_timeout} + emergency-established: {$flow_tcp_emerg_established_timeout} + emergency-closed: {$flow_tcp_emerg_closed_timeout} + udp: + new: {$flow_udp_new_timeout} + established: {$flow_udp_established_timeout} + emergency-new: {$flow_udp_emerg_new_timeout} + emergency-established: {$flow_udp_emerg_established_timeout} + icmp: + new: {$flow_icmp_new_timeout} + established: {$flow_icmp_established_timeout} + emergency-new: {$flow_icmp_emerg_new_timeout} + emergency-established: {$flow_icmp_emerg_established_timeout} + +stream: + memcap: {$stream_memcap} + checksum-validation: no + inline: auto + max-sessions: {$stream_max_sessions} + prealloc-sessions: {$stream_prealloc_sessions} + midstream: {$stream_enable_midstream} + async-oneside: {$stream_enable_async} + +reassembly: + memcap: {$reassembly_memcap} + depth: {$reassembly_depth} + toserver-chunk-size: {$reassembly_to_server_chunk} + toclient-chunk-size: {$reassembly_to_client_chunk} + +# Host table is used by tagging and per host thresholding subsystems. +host: + hash-size: 4096 + prealloc: 1000 + memcap: 16777216 + +# Host specific policies for defragmentation and TCP stream reassembly. +host-os-policy: + {$host_os_policy} + +# Logging configuration. This is not about logging IDS alerts, but +# IDS output about what its doing, errors, etc. +logging: + + # This value is overriden by the SC_LOG_LEVEL env var. + default-log-level: info + default-log-format: "%t - <%d> -- " + + # Define your logging outputs. + outputs: + - console: + enabled: yes + - file: + enabled: yes + filename: {$suricatalogdir}suricata_{$if_real}{$suricata_uuid}/suricata.log + - syslog: + enabled: {$suricata_use_syslog} + facility: auth + format: "[%i] <%d> -- " + +pcap: + - interface: {$if_real} + checksum-checks: auto + +# For FreeBSD ipfw(8) divert(4) support. +# ipfw add 100 divert 8000 ip from any to any +# +# The 8000 above should be the same number you passed on the command +# line, i.e. -d 8000 +# +#ipfw: + +default-rule-path: {$suricatacfgdir}/rules +rule-files: + - {$rules_files} + +classification-file: {$suricatacfgdir}/classification.config +reference-config-file: {$suricatacfgdir}/reference.config + +# Holds variables that would be used by the engine. +vars: + + # Holds the address group vars that would be passed in a Signature. + address-groups: + HOME_NET: "[{$home_net}]" + EXTERNAL_NET: "{$external_net}" + {$addr_vars} + + # Holds the port group vars that would be passed in a Signature. + port-groups: + {$port_vars} + +# Set the order of alerts bassed on actions +action-order: + - pass + - drop + - reject + - alert + +# IP Reputation +#reputation-categories-file: {$suricatacfgdir}/iprep/categories.txt +#default-reputation-path: {$suricatacfgdir}/iprep +#reputation-files: +# - reputation.list + +# Limit for the maximum number of asn1 frames to decode (default 256) +asn1-max-frames: {$asn1_max_frames} + +engine-analysis: + rules-fast-pattern: yes + rules: yes + +#recursion and match limits for PCRE where supported +pcre: + match-limit: 3500 + match-limit-recursion: 1500 + +########################################################################### +# Configure libhtp. +libhtp: + default-config: + {$http_hosts_default_policy} + + {$http_hosts_policy} + +coredump: + max-dump: unlimited + +EOD; + +?> -- cgit v1.2.3 From 249b9a9fd402cd6ee2ce4ab3151db4fb26b07a59 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Wed, 19 Feb 2014 14:09:16 -0500 Subject: Suricata 1.4.6 BETA -- locked to trigger PBI build only. --- pkg_config.10.xml | 17 +++++++++++++++++ pkg_config.8.xml | 19 +++++++++++++++++++ pkg_config.8.xml.amd64 | 19 +++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 1e574b9f..868af841 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -1585,5 +1585,22 @@ apcupsd_SET_FORCE=APCSMART_DRV APCDUMB_DRV PCNET_DRV USB TCP_WRAPPERS SNMP_DRV;apcupsd_UNSET_FORCE=CLIENT_ONLY CGI SNMP_DRV_OLD TEST_DRV GAPCMON DOCS apcupsd-3.14.10_1-##ARCH##.pbi + + suricata + http://suricata-ids.org/ + + Security + 1.4.6 pkg v0.1 + BETA + 3.0 + http://www.pfsense.org/packages/config/suricata/suricata.xml + suricata.xml + + security/suricata + security/barnyard2 + + barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;suricata_SET=IPFW PORTS_PCAP TESTS;suricata_UNSET=PRELUDE + suricata-1.4.6-##ARCH##.pbi + diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 8f61ecc3..cc598ca2 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -2027,5 +2027,24 @@ apcupsd-3.14.10_1.tbz apcupsd-3.14.10_1-i386.pbi + + suricata + http://suricata-ids.org/ + + Security + 1.4.6 pkg v0.1 + BETA + 3.0 + http://www.pfsense.org/packages/config/suricata/suricata.xml + suricata.xml + + security/suricata + security/barnyard2 + + barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;suricata_SET=IPFW PORTS_PCAP TESTS;suricata_UNSET=PRELUDE + /usr/ports/security/suricata + http://files.pfsense.org/packages/8/All/ + suricata-1.4.6-i386.pbi + diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 87c41ecc..870f8587 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -2014,5 +2014,24 @@ apcupsd-3.14.10_1.tbz apcupsd-3.14.10_1-amd64.pbi + + suricata + http://suricata-ids.org/ + + Security + 1.4.6 pkg v0.1 + BETA + 3.0 + http://www.pfsense.org/packages/config/suricata/suricata.xml + suricata.xml + + security/suricata + security/barnyard2 + + barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;suricata_SET=IPFW PORTS_PCAP TESTS;suricata_UNSET=PRELUDE + /usr/ports/security/suricata + http://files.pfsense.org/packages/amd64/8/All/ + suricata-1.4.6-amd64.pbi + -- cgit v1.2.3 From 4b6a70ab6d1a3b50e29e4de5383bf69f867807b1 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Wed, 19 Feb 2014 22:11:06 -0500 Subject: Removed need for suricata_log_view.php file, so deleting it. --- config/suricata/suricata.priv.inc | 1 - config/suricata/suricata.xml | 5 ----- 2 files changed, 6 deletions(-) diff --git a/config/suricata/suricata.priv.inc b/config/suricata/suricata.priv.inc index a8f9807a..7f5f1825 100644 --- a/config/suricata/suricata.priv.inc +++ b/config/suricata/suricata.priv.inc @@ -25,7 +25,6 @@ $priv_list['page-services-suricata']['match'][] = "suricata/suricata_interfaces_ $priv_list['page-services-suricata']['match'][] = "suricata/suricata_interfaces_whitelist_edit.php*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_list_view.php*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_logs_browser.php*"; -$priv_list['page-services-suricata']['match'][] = "suricata/suricata_log_view.php*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_post_install.php*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_flow_stream.php*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_rules.php*"; diff --git a/config/suricata/suricata.xml b/config/suricata/suricata.xml index 4c3e3e67..4760149d 100644 --- a/config/suricata/suricata.xml +++ b/config/suricata/suricata.xml @@ -117,11 +117,6 @@ /usr/local/www/suricata/ 0755 - - http://www.pfsense.com/packages/config/suricata/suricata_log_view.php - /usr/local/www/suricata/ - 0755 - http://www.pfsense.com/packages/config/suricata/suricata_rules.php /usr/local/www/suricata/ -- cgit v1.2.3 From b33b9a9d050bd5bc8247fc4c95ff7bde39d612f2 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Wed, 19 Feb 2014 22:34:27 -0500 Subject: Incorporate Ermal's comments into Suricata BETA pkg code. --- config/suricata/README.md | 6 - config/suricata/suricata.inc | 178 +++++------------- config/suricata/suricata_app_parsers.php | 59 ++---- config/suricata/suricata_define_vars.php | 46 ++--- config/suricata/suricata_download_updates.php | 215 ++++++++++------------ config/suricata/suricata_flow_stream.php | 58 ++---- config/suricata/suricata_libhtp_policy_engine.php | 25 +-- config/suricata/suricata_log_view.php | 86 --------- config/suricata/suricata_os_policy_engine.php | 30 +-- config/suricata/suricata_post_install.php | 13 +- config/suricata/suricata_uninstall.php | 67 ++----- 11 files changed, 200 insertions(+), 583 deletions(-) delete mode 100644 config/suricata/README.md delete mode 100644 config/suricata/suricata_log_view.php diff --git a/config/suricata/README.md b/config/suricata/README.md deleted file mode 100644 index 2ec1d9a3..00000000 --- a/config/suricata/README.md +++ /dev/null @@ -1,6 +0,0 @@ -pfsense-suricata -================ - -Suricata package port for pfSense - -This is a port of the Suricata package for pfSense 2.1 and higher. It is currently under development and is still considered BETA software. Use on production systems is not recommended. diff --git a/config/suricata/suricata.inc b/config/suricata/suricata.inc index 95b95711..b87e2f6a 100644 --- a/config/suricata/suricata.inc +++ b/config/suricata/suricata.inc @@ -29,6 +29,7 @@ require_once("pfsense-utils.inc"); require_once("config.inc"); require_once("functions.inc"); +require_once("services.inc"); require_once("service-utils.inc"); require_once("pkg-utils.inc"); require_once("filter.inc"); @@ -74,7 +75,7 @@ function suricata_generate_id() { function suricata_is_running($suricata_uuid, $if_real, $type = 'suricata') { global $config, $g; - if (file_exists("{$g['varrun_path']}/{$type}_{$if_real}{$suricata_uuid}.pid") && isvalidpid("{$g['varrun_path']}/{$type}_{$if_real}{$suricata_uuid}.pid")) + if (isvalidpid("{$g['varrun_path']}/{$type}_{$if_real}{$suricata_uuid}.pid")) return 'yes'; else return 'no'; @@ -84,9 +85,9 @@ function suricata_barnyard_stop($suricatacfg, $if_real) { global $config, $g; $suricata_uuid = $suricatacfg['uuid']; - if (file_exists("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid") && isvalidpid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid")) { + if (isvalidpid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid")) { log_error("[Suricata] Barnyard2 STOP for {$suricatacfg['descr']}({$if_real})..."); - exec("/bin/pkill -TERM -F {$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid"); + killbypid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid"); } } @@ -94,14 +95,15 @@ function suricata_stop($suricatacfg, $if_real) { global $config, $g; $suricata_uuid = $suricatacfg['uuid']; - if (file_exists("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid") && isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { + if (isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { log_error("[Suricata] Suricata STOP for {$suricatacfg['descr']}({$if_real})..."); - exec("/bin/pkill -TERM -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); - sleep(1); - } - if (file_exists("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid") && isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) - exec("/bin/pkill -TERM -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); + killbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); + sleep(2); + // For some reason Suricata seems to need a double TERM signal to actually shutdown + if (isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) + killbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); + } // Stop Barnyard2 on the interface if running suricata_barnyard_stop($suricatacfg, $if_real); } @@ -158,9 +160,10 @@ function suricata_reload_config($suricatacfg, $signal="USR2") { /* Only send the SIGUSR2 if Suricata is running and */ /* we can find a valid PID for the process. */ /******************************************************/ - if (file_exists("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid") && isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { + if (isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { log_error("[Suricata] Suricata LIVE RULE RELOAD initiated for {$suricatacfg['descr']} ({$if_real})..."); - exec("/bin/pkill -{$signal} -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid 2>&1 &"); + sigkillbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid", $signal); +// exec("/bin/pkill -{$signal} -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid 2>&1 &"); } } @@ -186,63 +189,34 @@ function suricata_barnyard_reload_config($suricatacfg, $signal="HUP") { /* Only send the SIGHUP if Barnyard2 is running and */ /* we can find a valid PID for the process. */ /******************************************************/ - if (file_exists("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid") && isvalidpid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid")) { + if (isvalidpid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid")) { log_error("[Suricata] Barnyard2 CONFIG RELOAD initiated for {$suricatacfg['descr']} ({$if_real})..."); - exec("/bin/pkill -{$signal} -F {$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid 2>&1 &"); + sigkillbypid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid", $signal); +// exec("/bin/pkill -{$signal} -F {$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid 2>&1 &"); } } function suricata_get_friendly_interface($interface) { - if (function_exists('convert_friendly_interface_to_friendly_descr')) - $iface = convert_friendly_interface_to_friendly_descr($interface); - else { - if (!$interface || ($interface == "wan")) - $iface = "WAN"; - else if(strtolower($interface) == "lan") - $iface = "LAN"; - else if(strtolower($interface) == "pppoe") - $iface = "PPPoE"; - else if(strtolower($interface) == "pptp") - $iface = "PPTP"; - else - $iface = strtoupper($interface); - } - - return $iface; + // Pass this directly to the system for now. + // Later, this wrapper will be removed and all + // the Suricata code changed to use the system call. + return convert_friendly_interface_to_friendly_descr($interface); } function suricata_get_real_interface($interface) { - global $config; - - $lc_interface = strtolower($interface); - if (function_exists('get_real_interface')) - return get_real_interface($lc_interface); - else { - if ($lc_interface == "lan") { - if ($config['inerfaces']['lan']) - return $config['interfaces']['lan']['if']; - return $interface; - } - if ($lc_interface == "wan") - return $config['interfaces']['wan']['if']; - $ifdescrs = array(); - for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) { - $ifname = "opt{$j}"; - if(strtolower($ifname) == $lc_interface) - return $config['interfaces'][$ifname]['if']; - if(isset($config['interfaces'][$ifname]['descr']) && (strtolower($config['interfaces'][$ifname]['descr']) == $lc_interface)) - return $config['interfaces'][$ifname]['if']; - } - } - return $interface; + // Pass this directly to the system for now. + // Later, this wrapper will be removed and all + // the Suricata code changed to use the system call. + return get_real_interface($interface); } function suricata_get_blocked_ips() { + // This is a placeholder function for later use. + // Blocking is not currently enabled in Suricata. return array(); - } /* func builds custom white lists */ @@ -451,18 +425,9 @@ function suricata_build_list($suricatacfg, $listname = "", $whitelist = false) { function suricata_rules_up_install_cron($should_install) { global $config, $g; - if(!$config['cron']['item']) - $config['cron']['item'] = array(); + $command = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/www/suricata/suricata_check_for_rule_updates.php"; - $x=0; - $is_installed = false; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], "suricata_check_for_rule_updates.php")) { - $is_installed = true; - break; - } - $x++; - } + // Get auto-rule update parameter from configuration $suricata_rules_up_info_ck = $config['installedpackages']['suricata']['config'][0]['autoruleupdate']; // See if a customized start time has been set for rule file updates @@ -525,65 +490,14 @@ function suricata_rules_up_install_cron($should_install) { $suricata_rules_up_month = "*"; $suricata_rules_up_wday = "*"; } - switch($should_install) { - case true: - $cron_item = array(); - $cron_item['minute'] = $suricata_rules_up_min; - $cron_item['hour'] = $suricata_rules_up_hr; - $cron_item['mday'] = $suricata_rules_up_mday; - $cron_item['month'] = $suricata_rules_up_month; - $cron_item['wday'] = $suricata_rules_up_wday; - $cron_item['who'] = "root"; - $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/www/suricata/suricata_check_for_rule_updates.php"; - - // Add cron job if not already installed, else just update the existing one - if (!$is_installed) - $config['cron']['item'][] = $cron_item; - elseif ($is_installed) - $config['cron']['item'][$x] = $cron_item; - break; - case false: - if($is_installed == true) - unset($config['cron']['item'][$x]); - break; - } + + // System call to manage the cron job. + install_cron_job($command, $should_install, $suricata_rules_up_min, $suricata_rules_up_hr, $suricata_rules_up_mday, $suricata_rules_up_month, $suricata_rules_up_wday, "root"); } function suricata_loglimit_install_cron($should_install) { - global $config, $g; - - if (!is_array($config['cron']['item'])) - $config['cron']['item'] = array(); - $x=0; - $is_installed = false; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], 'suricata_check_cron_misc.inc')) { - $is_installed = true; - break; - } - $x++; - } - - switch($should_install) { - case true: - if(!$is_installed) { - $cron_item = array(); - $cron_item['minute'] = "*/5"; - $cron_item['hour'] = "*"; - $cron_item['mday'] = "*"; - $cron_item['month'] = "*"; - $cron_item['wday'] = "*"; - $cron_item['who'] = "root"; - $cron_item['command'] = "/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/suricata/suricata_check_cron_misc.inc"; - $config['cron']['item'][] = $cron_item; - } - break; - case false: - if($is_installed == true) - unset($config['cron']['item'][$x]); - break; - } + install_cron_job("/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/suricata/suricata_check_cron_misc.inc", $should_install, "*/5"); } function sync_suricata_package_config() { @@ -617,13 +531,9 @@ function sync_suricata_package_config() { suricata_create_rc(); $suricataglob = $config['installedpackages']['suricata']['config'][0]; - + // setup the log directory size check job if enabled suricata_loglimit_install_cron($suricataglob['suricataloglimit'] == 'on' ? true : false); - - // set the suricata block hosts time IMPORTANT -// suricata_rm_blocked_install_cron($suricataglob['rm_blocked'] != "never_b" ? true : false); - - // set the suricata rules update time + // setup the suricata rules update job if enabled suricata_rules_up_install_cron($suricataglob['autoruleupdate'] != "never_up" ? true : false); write_config(); @@ -781,6 +691,7 @@ function suricata_post_delete_logs($suricata_uuid = 0) { unset($filelist[count($filelist) - 1]); foreach ($filelist as $file) @unlink($file); + unset($filelist); } } } @@ -1946,11 +1857,9 @@ esac EOD; // Write out the suricata.sh script file - if (!@file_put_contents("{$rcdir}/suricata.sh", $suricata_sh_text)) { - log_error("Could not open {$rcdir}/suricata.sh for writing."); - return; - } + @file_put_contents("{$rcdir}/suricata.sh", $suricata_sh_text); @chmod("{$rcdir}/suricata.sh", 0755); + unset($suricata_sh_text); } function suricata_generate_barnyard2_conf($suricatacfg, $if_real) { @@ -2051,6 +1960,7 @@ EOD; /* Write out barnyard2_conf text string to disk */ @file_put_contents("{$suricatadir}/barnyard2.conf", $barnyard2_conf_text); + unset($barnyard2_conf_text); } function suricata_generate_yaml($suricatacfg) { @@ -2096,14 +2006,8 @@ function suricata_generate_yaml($suricatacfg) { include("/usr/local/pkg/suricata/suricata_yaml_template.inc"); // Now write out the conf file using $suricata_conf_text contents - $conf = fopen("{$suricatacfgdir}/suricata.yaml", "w"); - if(!$conf) { - log_error("Could not open {$suricatacfgdir}/suricata.yaml for writing."); - return -1; - } - fwrite($conf, $suricata_conf_text); - fclose($conf); - + @file_put_contents("{$suricatacfgdir}/suricata.yaml", $suricata_conf_text); + unset($suricata_conf_text); conf_mount_ro(); } diff --git a/config/suricata/suricata_app_parsers.php b/config/suricata/suricata_app_parsers.php index def78f94..bf6650cd 100644 --- a/config/suricata/suricata_app_parsers.php +++ b/config/suricata/suricata_app_parsers.php @@ -282,56 +282,19 @@ include_once("head.inc");
    diff --git a/config/suricata/suricata_define_vars.php b/config/suricata/suricata_define_vars.php index 05378477..c9ec2bcd 100644 --- a/config/suricata/suricata_define_vars.php +++ b/config/suricata/suricata_define_vars.php @@ -245,44 +245,22 @@ if ($savemsg) diff --git a/config/suricata/suricata_download_updates.php b/config/suricata/suricata_download_updates.php index 8ff30e9b..ecfd5f8b 100644 --- a/config/suricata/suricata_download_updates.php +++ b/config/suricata/suricata_download_updates.php @@ -34,7 +34,6 @@ require_once("/usr/local/pkg/suricata/suricata.inc"); /* Define some locally required variables from Suricata constants */ $suricatadir = SURICATADIR; $suricata_rules_upd_log = RULES_UPD_LOGFILE; -$log = $suricata_rules_upd_log; /* load only javascript that is needed */ $suricata_load_jquery = 'yes'; @@ -56,7 +55,7 @@ else { $et_name = "EMERGING THREATS RULES"; } -/* quick md5s chk */ +/* quick md5 chk of downloaded rules */ $snort_org_sig_chk_local = 'N/A'; if (file_exists("{$suricatadir}{$snort_rules_file}.md5")) $snort_org_sig_chk_local = file_get_contents("{$suricatadir}{$snort_rules_file}.md5"); @@ -70,48 +69,45 @@ if (file_exists("{$suricatadir}{$snort_community_rules_filename}.md5")) $snort_community_sig_chk_local = file_get_contents("{$suricatadir}{$snort_community_rules_filename}.md5"); /* Check for postback to see if we should clear the update log file. */ -if (isset($_POST['clear'])) { +if ($_POST['clear']) { if (file_exists("{$suricata_rules_upd_log}")) mwexec("/bin/rm -f {$suricata_rules_upd_log}"); } -if (isset($_POST['update'])) { +if ($_POST['update']) { header("Location: /suricata/suricata_download_rules.php"); exit; } /* check for logfile */ -$suricata_rules_upd_log_chk = 'no'; if (file_exists("{$suricata_rules_upd_log}")) $suricata_rules_upd_log_chk = 'yes'; +else + $suricata_rules_upd_log_chk = 'no'; -$pgtitle = gettext("Suricata: Rule Updates"); +if ($_POST['view']&& $suricata_rules_upd_log_chk == 'yes') { + $contents = @file_get_contents($suricata_rules_upd_log); + if (empty($contents)) + $input_errors[] = gettext("Unable to read log file: {$suricata_rules_upd_log}"); +} + +$pgtitle = gettext("Suricata: Update Rules Set Files"); include_once("head.inc"); ?> -' . $pgtitle . '

    ';}?> - - - +
    @@ -128,111 +124,94 @@ h += 96; ?> - + + + +
    +
    - - + + + + + + + -
    -
    - + + + + +

    + - + + -
    -
    -

    - -

    -   --> -   
    - SNORT VRT RULES  --> -   
    - SNORT GPLv2 COMMUNITY RULES  --> -   
    -

    -
    -
      --->
    -
    - - + + -
    -
    -

    -
    -
    - - ' . gettext("Update Rules") . '
    -

    - ' . gettext("WARNING:") . '  ' . gettext('No rule types have been selected for download. ') . - gettext('Visit the ') . 'Global Settings Tab' . gettext(' to select rule types.') . '
    '; - - echo '

    ' . "\n"; - } else { - - echo ' -
    ' . "\n"; - - } - - ?>
    -

    -
    -
    SNORT VRT RULES  --->
    -
    - - - + + -
    -
    -

    -
    -
    - " . gettext("View Log") . ""; - echo "          \n"; - }else{ - echo " -    " . gettext("Log is empty.") . "\n"; - } - echo '

    ' . gettext("The log file is limited to 1024K in size and automatically clears when the limit is exceeded."); - ?> -
    -

    -
    -
    SNORT GPLv2 COMMUNITY RULES  --->
    - -
    +

    +
    + +

    +

    +    + Global Settings Tab' . gettext(' to select rule types.'); ?> +

    + +
    + " name="update" id="submit" class="formbtn" + title=""/>

    + +
    - - + + + + + + + + + + + - -
    -
    - -   " . - gettext(" and ") . "" . gettext("EmergingThreats.net") . "" . - gettext(" will go down from time to time. Please be patient."); ?> +
    + +
    + " name="view" id="view" class="formbtn" + title=""/> +            + " name="clear" id="clear" class="formbtn" + title="" onClick="return confirm('Are you sure?\nOK to confirm, or CANCEL to quit');"/> +
    + +
    +    
    + +


    +
    +
    +
    -
    - +
    +

    + +   " . + gettext(" and ") . "" . gettext("EmergingThreats.net") . "" . + gettext(" will go down from time to time. Please be patient."); ?>

    -
    - - + +
    diff --git a/config/suricata/suricata_flow_stream.php b/config/suricata/suricata_flow_stream.php index 8db40a47..a994593c 100644 --- a/config/suricata/suricata_flow_stream.php +++ b/config/suricata/suricata_flow_stream.php @@ -622,56 +622,20 @@ include_once("head.inc"); diff --git a/config/suricata/suricata_libhtp_policy_engine.php b/config/suricata/suricata_libhtp_policy_engine.php index a1f6a77c..6b710e85 100644 --- a/config/suricata/suricata_libhtp_policy_engine.php +++ b/config/suricata/suricata_libhtp_policy_engine.php @@ -296,29 +296,14 @@ if ($savemsg) + + diff --git a/config/suricata/suricata_post_install.php b/config/suricata/suricata_post_install.php index 0d6f553e..653f47fd 100644 --- a/config/suricata/suricata_post_install.php +++ b/config/suricata/suricata_post_install.php @@ -47,14 +47,14 @@ $rcdir = RCFILEPREFIX; // Hard kill any running Suricata process that may have been started by any // of the pfSense scripts such as check_reload_status() or rc.start_packages if(is_process_running("suricata")) { - exec("/usr/bin/killall -z suricata"); + killbyname("suricata"); sleep(2); // Delete any leftover suricata PID files in /var/run array_map('@unlink', glob("/var/run/suricata_*.pid")); } // Hard kill any running Barnyard2 processes if(is_process_running("barnyard")) { - exec("/usr/bin/killall -z barnyard2"); + killbyname("barnyard2"); sleep(2); // Delete any leftover barnyard2 PID files in /var/run array_map('@unlink', glob("/var/run/barnyard2_*.pid")); @@ -63,13 +63,6 @@ if(is_process_running("barnyard")) { // Set flag for post-install in progress $g['suricata_postinstall'] = true; -// Fix up the sample filenames from a PBI package install -//$sample_files = array("classification.config", "reference.config", "suricata.yaml"); -//foreach ($sample_files as $file) { -// if (file_exists("{$suricatadir}{$file}-sample")) -// @rename("{$suricatadir}{$file}-sample", "{$suricatadir}{$file}"); -//} - // Remove any previously installed script since we rebuild it @unlink("{$rcdir}/suricata.sh"); @@ -92,7 +85,7 @@ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] = // Create the suricata.yaml files for each enabled interface $suriconf = $config['installedpackages']['suricata']['rule']; foreach ($suriconf as $value) { - $if_real = suricata_get_real_interface($value['interface']); + $if_real = get_real_interface($value['interface']); // create a suricata.yaml file for interface suricata_generate_yaml($value); diff --git a/config/suricata/suricata_uninstall.php b/config/suricata/suricata_uninstall.php index 808aefec..071a89a4 100644 --- a/config/suricata/suricata_uninstall.php +++ b/config/suricata/suricata_uninstall.php @@ -42,11 +42,8 @@ log_error(gettext("[Suricata] Suricata package uninstall in progress...")); /* Log a message only if a running process is detected */ if (is_service_running("suricata")) log_error(gettext("[Suricata] Suricata STOP for all interfaces...")); - -mwexec('/usr/bin/killall -z suricata', true); -sleep(2); -mwexec('/usr/bin/killall -9 suricata', true); -sleep(2); +killbyname("suricata"); +sleep(1); // Delete any leftover suricata PID files in /var/run array_map('@unlink', glob("/var/run/suricata_*.pid")); @@ -55,11 +52,8 @@ array_map('@unlink', glob("/var/run/suricata_*.pid")); /* Log a message only if a running process is detected */ if (is_service_running("barnyard2")) log_error(gettext("[Suricata] Barnyard2 STOP for all interfaces...")); - -mwexec('/usr/bin/killall -z barnyard2', true); -sleep(2); -mwexec('/usr/bin/killall -9 barnyard2', true); -sleep(2); +killbyname("barnyard2"); +sleep(1); // Delete any leftover barnyard2 PID files in /var/run array_map('@unlink', glob("/var/run/barnyard2_*.pid")); @@ -67,58 +61,21 @@ array_map('@unlink', glob("/var/run/barnyard2_*.pid")); /* Remove the suricata user and group */ mwexec('/usr/sbin/pw userdel suricata; /usr/sbin/pw groupdel suricata', true); -/* Remove suricata cron entries Ugly code needs smoothness */ -if (!function_exists('suricata_deinstall_cron')) { - function suricata_deinstall_cron($crontask) { - global $config, $g; - - if(!is_array($config['cron']['item'])) - return; - - $x=0; - $is_installed = false; - foreach($config['cron']['item'] as $item) { - if (strstr($item['command'], $crontask)) { - $is_installed = true; - break; - } - $x++; - } - if ($is_installed == true) - unset($config['cron']['item'][$x]); - } -} - -/* Remove all the Suricata cron jobs. */ -suricata_deinstall_cron("suricata_check_for_rule_updates.php"); -suricata_deinstall_cron("suricata_check_cron_misc.inc"); -configure_cron(); - -/**********************************************************/ -/* Test for existence of library backup tarballs in /tmp. */ -/* If these are present, then a package "delete" */ -/* operation is in progress and we need to wipe out the */ -/* configuration files. Otherwise we leave the binary- */ -/* side configuration intact since only a GUI files */ -/* deinstall and reinstall operation is in progress. */ -/* */ -/* XXX: hopefully a better method presents itself in */ -/* future versions of pfSense. */ -/**********************************************************/ -if (file_exists("/tmp/pkg_libs.tgz") || file_exists("/tmp/pkg_bins.tgz")) { - log_error(gettext("[Suricata] Package deletion requested... removing all package files...")); - mwexec("/bin/rm -f {$rcdir}/suricata.sh"); - mwexec("/bin/rm -rf /usr/local/etc/suricata"); - mwexec("/bin/rm -rf /usr/local/pkg/suricata"); - mwexec("/bin/rm -rf /usr/local/www/suricata"); -} +/* Remove the Suricata cron jobs. */ +install_cron_job("/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/www/suricata/suricata_check_for_rule_updates.php", false); +install_cron_job("/usr/bin/nice -n20 /usr/local/bin/php -f /usr/local/pkg/suricata/suricata_check_cron_misc.inc", false); +/* See if we are to keep Suricata log files on uninstall */ if ($config['installedpackages']['suricata']['config'][0]['clearlogs'] == 'on') { log_error(gettext("[Suricata] Clearing all Suricata-related log files...")); @unlink("{$suricata_rules_upd_log}"); mwexec("/bin/rm -rf {$suricatalogdir}"); } +/* Remove the Suricata GUI app directories */ +@unlink("/usr/local/pkg/suricata"); +@unlink("/usr/local/www/suricata"); + /* Keep this as a last step */ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] != 'on') { log_error(gettext("Not saving settings... all Suricata configuration info and logs deleted...")); -- cgit v1.2.3 From a5c40093adcb507d8d5991568a36702fcc649cdb Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Wed, 19 Feb 2014 23:10:40 -0500 Subject: Use system calls instead of wrappers for getting interface names. --- config/suricata/suricata_alerts.php | 2 +- config/suricata/suricata_app_parsers.php | 2 +- config/suricata/suricata_barnyard.php | 2 +- config/suricata/suricata_check_for_rule_updates.php | 4 ++-- config/suricata/suricata_define_vars.php | 4 ++-- config/suricata/suricata_flow_stream.php | 2 +- config/suricata/suricata_interfaces.php | 14 +++++++------- config/suricata/suricata_interfaces_edit.php | 6 +++--- config/suricata/suricata_libhtp_policy_engine.php | 2 +- config/suricata/suricata_logs_browser.php | 4 ++-- config/suricata/suricata_os_policy_engine.php | 2 +- config/suricata/suricata_rules.php | 4 ++-- config/suricata/suricata_rulesets.php | 4 ++-- 13 files changed, 26 insertions(+), 26 deletions(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index d21f7388..c36c0dd7 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -132,7 +132,7 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_instance = &$config['installedpackages']['suricata']['rule']; $suricata_uuid = $a_instance[$instanceid]['uuid']; -$if_real = suricata_get_real_interface($a_instance[$instanceid]['interface']); +$if_real = get_real_interface($a_instance[$instanceid]['interface']); $suricatalogdir = SURICATALOGDIR; // Load up the arrays of force-enabled and force-disabled SIDs diff --git a/config/suricata/suricata_app_parsers.php b/config/suricata/suricata_app_parsers.php index bf6650cd..0be45c32 100644 --- a/config/suricata/suricata_app_parsers.php +++ b/config/suricata/suricata_app_parsers.php @@ -143,7 +143,7 @@ elseif ($_POST['Submit']) { } } -$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} - Layer 7 Application Parsers"); include_once("head.inc"); ?> diff --git a/config/suricata/suricata_barnyard.php b/config/suricata/suricata_barnyard.php index a65c5402..f0bdbd17 100644 --- a/config/suricata/suricata_barnyard.php +++ b/config/suricata/suricata_barnyard.php @@ -162,7 +162,7 @@ if ($_POST) { } } -$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} - Barnyard2 Settings"); include_once("head.inc"); diff --git a/config/suricata/suricata_check_for_rule_updates.php b/config/suricata/suricata_check_for_rule_updates.php index ec39c203..9aa14f6e 100644 --- a/config/suricata/suricata_check_for_rule_updates.php +++ b/config/suricata/suricata_check_for_rule_updates.php @@ -617,14 +617,14 @@ if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules = /* Create configuration for each active Suricata interface */ foreach ($config['installedpackages']['suricata']['rule'] as $value) { - $if_real = suricata_get_real_interface($value['interface']); + $if_real = get_real_interface($value['interface']); // Make sure the interface subdirectory exists. We need to re-create // it during a pkg reinstall on the intial rules set download. if (!is_dir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}")) safe_mkdir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}"); if (!is_dir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}/rules")) safe_mkdir("{$suricatadir}suricata_{$value['uuid']}_{$if_real}/rules"); - $tmp = "Updating rules configuration for: " . suricata_get_friendly_interface($value['interface']) . " ..."; + $tmp = "Updating rules configuration for: " . convert_friendly_interface_to_friendly_descr($value['interface']) . " ..."; if ($pkg_interface <> "console"){ update_status(gettext($tmp)); update_output_window(gettext("Please wait while Suricata interface files are being updated...")); diff --git a/config/suricata/suricata_define_vars.php b/config/suricata/suricata_define_vars.php index c9ec2bcd..b1cbfee9 100644 --- a/config/suricata/suricata_define_vars.php +++ b/config/suricata/suricata_define_vars.php @@ -77,7 +77,7 @@ ksort($suricata_ports); $pconfig = $a_nat[$id]; /* convert fake interfaces to real */ -$if_real = suricata_get_real_interface($pconfig['interface']); +$if_real = get_real_interface($pconfig['interface']); $suricata_uuid = $config['installedpackages']['suricata']['rule'][$id]['uuid']; if ($_POST) { @@ -131,7 +131,7 @@ if ($_POST) { } } -$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} Variables - Servers and Ports"); include_once("head.inc"); diff --git a/config/suricata/suricata_flow_stream.php b/config/suricata/suricata_flow_stream.php index a994593c..3a677d3a 100644 --- a/config/suricata/suricata_flow_stream.php +++ b/config/suricata/suricata_flow_stream.php @@ -212,7 +212,7 @@ elseif ($_POST['Submit']) { } } -$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} - Flow and Stream"); include_once("head.inc"); ?> diff --git a/config/suricata/suricata_interfaces.php b/config/suricata/suricata_interfaces.php index 47a3ba11..26ccada3 100644 --- a/config/suricata/suricata_interfaces.php +++ b/config/suricata/suricata_interfaces.php @@ -52,7 +52,7 @@ if (isset($_POST['del_x'])) { conf_mount_rw(); foreach ($_POST['rule'] as $rulei) { /* convert fake interfaces to real */ - $if_real = suricata_get_real_interface($a_nat[$rulei]['interface']); + $if_real = get_real_interface($a_nat[$rulei]['interface']); $suricata_uuid = $a_nat[$rulei]['uuid']; suricata_stop($a_nat[$rulei], $if_real); exec("/bin/rm -r {$suricatalogdir}suricata_{$if_real}{$suricata_uuid}"); @@ -109,8 +109,8 @@ if (isset($_POST['del_x'])) { /* start/stop Barnyard2 */ if ($_GET['act'] == 'bartoggle' && is_numeric($id)) { $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; - $if_real = suricata_get_real_interface($suricatacfg['interface']); - $if_friendly = suricata_get_friendly_interface($suricatacfg['interface']); + $if_real = get_real_interface($suricatacfg['interface']); + $if_friendly = convert_friendly_interface_to_friendly_descr($suricatacfg['interface']); if (suricata_is_running($suricatacfg['uuid'], $if_real, 'barnyard2') == 'no') { log_error("Toggle (barnyard starting) for {$if_friendly}({$suricatacfg['descr']})..."); @@ -129,8 +129,8 @@ if ($_GET['act'] == 'bartoggle' && is_numeric($id)) { /* start/stop Suricata */ if ($_GET['act'] == 'toggle' && is_numeric($id)) { $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; - $if_real = suricata_get_real_interface($suricatacfg['interface']); - $if_friendly = suricata_get_friendly_interface($suricatacfg['interface']); + $if_real = get_real_interface($suricatacfg['interface']); + $if_friendly = convert_friendly_interface_to_friendly_descr($suricatacfg['interface']); if (suricata_is_running($suricatacfg['uuid'], $if_real) == 'yes') { log_error("Toggle (suricata stopping) for {$if_friendly}({$suricatacfg['descr']})..."); @@ -234,8 +234,8 @@ if ($pfsense_stable == 'yes') /* convert fake interfaces to real and check if iface is up */ /* There has to be a smarter way to do this */ - $if_real = suricata_get_real_interface($natent['interface']); - $natend_friendly= suricata_get_friendly_interface($natent['interface']); + $if_real = get_real_interface($natent['interface']); + $natend_friendly= convert_friendly_interface_to_friendly_descr($natent['interface']); $suricata_uuid = $natent['uuid']; if (suricata_is_running($suricata_uuid, $if_real) == 'no'){ $iconfn = 'block'; diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php index 4a805ea2..74344072 100644 --- a/config/suricata/suricata_interfaces_edit.php +++ b/config/suricata/suricata_interfaces_edit.php @@ -196,10 +196,10 @@ if ($_POST["Submit"]) { if ($_POST['alertsystemlog'] == "on") { $natent['alertsystemlog'] = 'on'; }else{ $natent['alertsystemlog'] = 'off'; } if ($_POST['configpassthru']) $natent['configpassthru'] = base64_encode($_POST['configpassthru']); else unset($natent['configpassthru']); - $if_real = suricata_get_real_interface($natent['interface']); + $if_real = get_real_interface($natent['interface']); if (isset($id) && $a_rule[$id]) { if ($natent['interface'] != $a_rule[$id]['interface']) { - $oif_real = suricata_get_real_interface($a_rule[$id]['interface']); + $oif_real = get_real_interface($a_rule[$id]['interface']); suricata_stop($a_rule[$id], $oif_real); exec("rm -r /var/log/suricata_{$oif_real}" . $a_rule[$id]['uuid']); exec("mv -f {$suricatadir}/suricata_" . $a_rule[$id]['uuid'] . "_{$oif_real} {$suricatadir}/suricata_" . $a_rule[$id]['uuid'] . "_{$if_real}"); @@ -302,7 +302,7 @@ if ($_POST["Submit"]) { $pconfig = $_POST; } -$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} - Edit Settings"); include_once("head.inc"); ?> diff --git a/config/suricata/suricata_libhtp_policy_engine.php b/config/suricata/suricata_libhtp_policy_engine.php index 6b710e85..e7cf4135 100644 --- a/config/suricata/suricata_libhtp_policy_engine.php +++ b/config/suricata/suricata_libhtp_policy_engine.php @@ -156,7 +156,7 @@ if ($_POST['Submit']) { } } -$if_friendly = suricata_get_friendly_interface($config['installedpackages']['suricata']['rule'][$id]['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($config['installedpackages']['suricata']['rule'][$id]['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} HTTP Server Policy Engine"); include_once("head.inc"); diff --git a/config/suricata/suricata_logs_browser.php b/config/suricata/suricata_logs_browser.php index dfa56146..ab16a350 100644 --- a/config/suricata/suricata_logs_browser.php +++ b/config/suricata/suricata_logs_browser.php @@ -39,7 +39,7 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_instance = $config['installedpackages']['suricata']['rule']; $suricata_uuid = $a_instance[$instanceid]['uuid']; -$if_real = suricata_get_real_interface($a_instance[$instanceid]['interface']); +$if_real = get_real_interface($a_instance[$instanceid]['interface']); // Construct a pointer to the instance's logging subdirectory $suricatalogdir = SURICATALOGDIR . "suricata_{$if_real}{$suricata_uuid}"; @@ -148,7 +148,7 @@ if ($input_errors) { $selected = ""; if ($id == $instanceid) $selected = "selected"; - echo "\n"; + echo "\n"; } ?>    diff --git a/config/suricata/suricata_os_policy_engine.php b/config/suricata/suricata_os_policy_engine.php index ed673006..61918e65 100644 --- a/config/suricata/suricata_os_policy_engine.php +++ b/config/suricata/suricata_os_policy_engine.php @@ -141,7 +141,7 @@ if ($_POST['Submit']) { } } -$if_friendly = suricata_get_friendly_interface($config['installedpackages']['suricata']['rule'][$id]['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($config['installedpackages']['suricata']['rule'][$id]['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} Operating System Policy Engine"); include_once("head.inc"); diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php index f979d8b2..b848b4e8 100644 --- a/config/suricata/suricata_rules.php +++ b/config/suricata/suricata_rules.php @@ -102,7 +102,7 @@ function add_title_attribute($tag, $title) { } /* convert fake interfaces to real */ -$if_real = suricata_get_real_interface($pconfig['interface']); +$if_real = get_real_interface($pconfig['interface']); $suricata_uuid = $a_rule[$id]['uuid']; $suricatacfgdir = "{$suricatadir}suricata_{$suricata_uuid}_{$if_real}"; $snortdownload = $config['installedpackages']['suricata']['config'][0]['enable_vrt_rules']; @@ -409,7 +409,7 @@ else if ($_POST['cancel']) { require_once("guiconfig.inc"); include_once("head.inc"); -$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} - Rules: {$currentruleset}"); ?> diff --git a/config/suricata/suricata_rulesets.php b/config/suricata/suricata_rulesets.php index 7ea34786..a1609d6c 100644 --- a/config/suricata/suricata_rulesets.php +++ b/config/suricata/suricata_rulesets.php @@ -57,7 +57,7 @@ if (isset($id) && $a_nat[$id]) { $pconfig['ips_policy'] = $a_nat[$id]['ips_policy']; } -$if_real = suricata_get_real_interface($pconfig['interface']); +$if_real = get_real_interface($pconfig['interface']); $suricata_uuid = $a_nat[$id]['uuid']; $snortdownload = $config['installedpackages']['suricata']['config'][0]['enable_vrt_rules'] == 'on' ? 'on' : 'off'; $emergingdownload = $config['installedpackages']['suricata']['config'][0]['enable_etopen_rules'] == 'on' ? 'on' : 'off'; @@ -225,7 +225,7 @@ if ($_POST['selectall']) { $enabled_rulesets_array = explode("||", $a_nat[$id]['rulesets']); -$if_friendly = suricata_get_friendly_interface($pconfig['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata IDS: Interface {$if_friendly} - Categories"); include_once("head.inc"); ?> -- cgit v1.2.3 From e1776b88ed746f666a7384db414e119f11f1b069 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Thu, 20 Feb 2014 14:30:50 -0300 Subject: openbgpd - fix blank listenip option --- config/openbgpd/openbgpd.inc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/config/openbgpd/openbgpd.inc b/config/openbgpd/openbgpd.inc index 9af83758..76aeb54f 100644 --- a/config/openbgpd/openbgpd.inc +++ b/config/openbgpd/openbgpd.inc @@ -90,9 +90,11 @@ function openbgpd_install_conf() { $conffile .= "holdtime {$openbgpd_conf['holdtime']}\n"; // Specify listen ip - if($openbgpd_conf['listenip']) + if(!empty($openbgpd_conf['listenip'])) $conffile .= "listen on {$openbgpd_conf['listenip']}\n"; - + else + $conffile .= "listen on 0.0.0.0\n"; + // Specify router id if($openbgpd_conf['routerid']) $conffile .= "router-id {$openbgpd_conf['routerid']}\n"; @@ -127,8 +129,11 @@ function openbgpd_install_conf() { $conffile .= "\t\t{$row['parameters']} {$row['parmvalue']} \n"; } } - if ($setlocaladdr == true) + if ($setlocaladdr == true && !empty($openbgpd_conf['listenip'])) $conffile .= "\t\tlocal-address {$openbgpd_conf['listenip']}\n"; + else + $conffile .= "\t\tlocal-address 0.0.0.0\n"; + $conffile .= "}\n"; } } @@ -157,8 +162,11 @@ function openbgpd_install_conf() { $conffile .= "\t{$row['parameters']} {$row['parmvalue']} \n"; } } - if ($setlocaladdr == true) + if ($setlocaladdr == true && !empty($openbgpd_conf['listenip'])) $conffile .= "\tlocal-address {$openbgpd_conf['listenip']}\n"; + else + $conffile .= "\tlocal-address 0.0.0.0\n"; + $conffile .= "}\n"; } } -- cgit v1.2.3 From f5db56193887749bc9998218f0aa3b91723f249d Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Thu, 20 Feb 2014 12:54:50 -0500 Subject: Fix custom rules clear bug and enable custom rule testing. --- config/suricata/suricata_rules.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php index b848b4e8..94e43fc7 100644 --- a/config/suricata/suricata_rules.php +++ b/config/suricata/suricata_rules.php @@ -49,11 +49,8 @@ if (is_null($id)) { } if (isset($id) && $a_rule[$id]) { - $pconfig['enable'] = $a_rule[$id]['enable']; $pconfig['interface'] = $a_rule[$id]['interface']; $pconfig['rulesets'] = $a_rule[$id]['rulesets']; - if (!empty($a_rule[$id]['customrules'])) - $pconfig['customrules'] = base64_decode($a_rule[$id]['customrules']); } function truncate($string, $length) { @@ -357,26 +354,29 @@ if ($_POST['clear']) { } if ($_POST['customrules']) { - $a_rule[$id]['customrules'] = base64_encode($_POST['customrules']); + if ($_POST['customrules']) + $a_rule[$id]['customrules'] = base64_encode($_POST['customrules']); + else + unset($a_rule[$id]['customrules']); write_config(); $rebuild_rules = true; suricata_generate_yaml($a_rule[$id]); $rebuild_rules = false; $output = ""; $retcode = ""; -// exec("/usr/local/bin/snort -T -c {$snortdir}/snort_{$snort_uuid}_{$if_real}/snort.conf 2>&1", $output, $retcode); -// if (intval($retcode) != 0) { -// $error = ""; -// $start = count($output); -// $end = $start - 4; -// for($i = $start; $i > $end; $i--) -// $error .= $output[$i]; -// $input_errors[] = "Custom rules have errors:\n {$error}"; -// } -// else { -// header("Location: /snort/snort_rules.php?id={$id}&openruleset={$currentruleset}"); -// exit; -// } + exec("/usr/local/bin/suricata -T --init-errors-fatal -c {$suricatacfgdir}/suricata.yaml 2>&1", $output, $retcode); + if (intval($retcode) != 0) { + $error = ""; + $start = count($output); + $end = $start - 4; + for($i = $start; $i > $end; $i--) + $error .= $output[$i]; + $input_errors[] = "Custom rules have errors:\n {$error}"; + } + else { + header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); + exit; + } } else if ($_POST['apply']) { -- cgit v1.2.3 From f8f2d8493be025464627ba990133a542bd071700 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Thu, 20 Feb 2014 15:32:18 -0500 Subject: unlink() can't delete directory, use "/bin/rm -rf" instead. --- config/suricata/suricata_uninstall.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/config/suricata/suricata_uninstall.php b/config/suricata/suricata_uninstall.php index 071a89a4..0a7f8d5a 100644 --- a/config/suricata/suricata_uninstall.php +++ b/config/suricata/suricata_uninstall.php @@ -73,8 +73,8 @@ if ($config['installedpackages']['suricata']['config'][0]['clearlogs'] == 'on') } /* Remove the Suricata GUI app directories */ -@unlink("/usr/local/pkg/suricata"); -@unlink("/usr/local/www/suricata"); +mwexec("/bin/rm -rf /usr/local/pkg/suricata"); +mwexec("/bin/rm -rf /usr/local/www/suricata"); /* Keep this as a last step */ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] != 'on') { @@ -83,7 +83,6 @@ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] ! unset($config['installedpackages']['suricatasync']); @unlink("{$suricata_rules_upd_log}"); mwexec("/bin/rm -rf {$suricatalogdir}"); - @unlink(SURICATALOGDIR); log_error(gettext("[Suricata] The package has been removed from this system...")); } -- cgit v1.2.3 From 1b59944043bd0798d9d1802d5ac5d2fa0576aa25 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Thu, 20 Feb 2014 19:15:44 -0300 Subject: Move imspector-dev -> imspector --- config/imspector-dev/imspector.inc | 546 ---------------------- config/imspector-dev/imspector.xml | 251 ---------- config/imspector-dev/imspector_acls.xml | 173 ------- config/imspector-dev/imspector_logs.php | 311 ------------ config/imspector-dev/imspector_replacements.xml | 188 -------- config/imspector-dev/imspector_sync.xml | 109 ----- config/imspector-dev/services_imspector_logs.php | 311 ------------ config/imspector-dev/services_imspector_logs2.php | 318 ------------- config/imspector/imspector.inc | 370 +++++++++++---- config/imspector/imspector.xml | 276 +++++------ config/imspector/imspector_acls.xml | 173 +++++++ config/imspector/imspector_logs.php | 311 ++++++++++++ config/imspector/imspector_replacements.xml | 188 ++++++++ config/imspector/imspector_sync.xml | 109 +++++ config/imspector/services_imspector_logs.php | 38 +- config/imspector/services_imspector_logs2.php | 318 +++++++++++++ pkg_config.10.xml | 8 +- pkg_config.8.xml | 21 +- pkg_config.8.xml.amd64 | 21 +- 19 files changed, 1510 insertions(+), 2530 deletions(-) delete mode 100644 config/imspector-dev/imspector.inc delete mode 100644 config/imspector-dev/imspector.xml delete mode 100644 config/imspector-dev/imspector_acls.xml delete mode 100644 config/imspector-dev/imspector_logs.php delete mode 100644 config/imspector-dev/imspector_replacements.xml delete mode 100644 config/imspector-dev/imspector_sync.xml delete mode 100644 config/imspector-dev/services_imspector_logs.php delete mode 100644 config/imspector-dev/services_imspector_logs2.php create mode 100644 config/imspector/imspector_acls.xml create mode 100644 config/imspector/imspector_logs.php create mode 100644 config/imspector/imspector_replacements.xml create mode 100644 config/imspector/imspector_sync.xml create mode 100644 config/imspector/services_imspector_logs2.php diff --git a/config/imspector-dev/imspector.inc b/config/imspector-dev/imspector.inc deleted file mode 100644 index 52c7ae1b..00000000 --- a/config/imspector-dev/imspector.inc +++ /dev/null @@ -1,546 +0,0 @@ -. - Copyright (C) 2011 Bill Marquette . - Copyright (C) 2007 Ryan Wagoner . - 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. - */ - - require_once("config.inc"); - require_once("functions.inc"); - require_once("service-utils.inc"); - - /* IMSpector */ - - define('IMSPECTOR_RCFILE', '/usr/local/etc/rc.d/imspector.sh'); - define('IMSPECTOR_ETC', '/usr/local/etc/imspector'); - define('IMSPECTOR_CONFIG', IMSPECTOR_ETC . '/imspector.conf'); - - function imspector_warn ($msg) { syslog(LOG_WARNING, "imspector: {$msg}"); } - - function ims_text_area_decode($text){ - return preg_replace('/\r\n/', "\n",base64_decode($text)); - } - - function imspector_action ($action) { - if (file_exists(IMSPECTOR_RCFILE)) - mwexec(IMSPECTOR_RCFILE.' '.$action); - } - - function write_imspector_config($file, $text) { - $conf = fopen($file, 'w'); - if(!$conf) { - imspector_warn("Could not open {$file} for writing."); - exit; - } - fwrite($conf, $text); - fclose($conf); - } - - function imspector_pf_rdr($iface, $port) { - return "rdr pass on {$iface} inet proto tcp from any to any port = {$port} -> 127.0.0.1 port 16667\n"; - } - - function imspector_pf_rule($iface, $port) { - return "pass in quick on {$iface} inet proto tcp from any to any port {$port} keep state\n"; - } - - function imspector_proto_to_port ($proto) - { - switch ($proto) { - case 'gadu-gadu': - return 8074; - case 'jabber': - return 5222; - case 'jabber-ssl': - return 5223; - case 'msn': - return 1863; - case 'icq': - return 5190; - case 'yahoo': - return 5050; - case 'irc': - return 6667; - default: - return null; - } - } - - function validate_form_imspector($post, $input_errors) { - if($post['iface_array']) - foreach($post['iface_array'] as $iface) - if($iface == 'wanx') - $input_errors[] = 'It is a security risk to specify WAN in the \'Interface\' field'; - } - - function deinstall_package_imspector() { - imspector_action('stop'); - - unlink_if_exists(IMSPECTOR_RCFILE); - unlink_if_exists(IMSPECTOR_CONFIG); - unlink_if_exists(IMSPECTOR_ETC . '/badwords_custom.txt'); - unlink_if_exists(IMSPECTOR_ETC . '/acl_blacklist.txt'); - unlink_if_exists(IMSPECTOR_ETC . '/acl_whitelist.txt'); - unlink_if_exists('/usr/local/www/imspector_logs.php'); - - //exec('pkg_delete imspector-0.4'); - } - - function imspector_generate_rules($type) { - - $rules = ""; - switch ($type) { - case 'rdr': - case 'nat': - $rules = "# IMSpector rdr anchor\n"; - $rules .= "rdr-anchor \"imspector\"\n"; - break; - case 'rule': - $rules = "# IMSpector \n"; - $rules .= "anchor \"imspector\"\n"; - break; - } - - return $rules; - } - - function sync_package_imspector() { - global $config; - global $input_errors; - - /*detect boot process*/ - if (is_array($_POST)){ - if (preg_match("/\w+/",$_POST['__csrf_magic'])) - unset($boot_process); - else - $boot_process="on"; - } - - if (is_process_running('imspector') && isset($boot_process)) - return; - - /* check default options and sample files*/ - $load_samples=0; - - #bannedphraselist - if (!is_array($config['installedpackages']['imspectoracls'])){ - $config['installedpackages']['imspectoracls']['config'][]=array('enable'=> 'on', - 'description' => 'allow access to all ids', - 'action' => 'allow', - 'localid' => 'all', - 'remoteid' => base64_encode('all')); - $load_samples++; - } - $ims_acls = $config['installedpackages']['imspectoracls']['config']; - - if (is_array($config['installedpackages']['imspectorreplacements'])){ - if ($config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] == "" && file_exists(IMSPECTOR_ETC . '/badwords.txt')){ - $config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] = base64_encode(file_get_contents(IMSPECTOR_ETC . '/badwords.txt')); - $load_samples++; - } - $ims_replacements = $config['installedpackages']['imspectorreplacements']['config'][0]; - } - - if (is_array($config['installedpackages']['imspector'])) - $ims_config = $config['installedpackages']['imspector']['config'][0]; - - if($load_samples > 0) - write_config(); - - /*continue sync process*/ - log_error("Imspector: Saving changes."); - config_lock(); - - /* remove existing rules */ - exec('/sbin/pfctl -a imspector -Fr > /dev/null'); - exec('/sbin/pfctl -a imspector -Fn > /dev/null'); - - $ifaces_active = ''; - - if($ims_config['enable'] && $ims_config['proto_array']) - $proto_array = explode(',', $ims_config['proto_array']); - - if($ims_config['enable'] && $ims_config['iface_array']) - $iface_array = explode(',', $ims_config['iface_array']); - - if($iface_array && $proto_array) { - foreach($iface_array as $iface) { - $if = convert_friendly_interface_to_real_interface_name($iface); - /* above function returns iface if fail */ - if($if!=$iface) { - $addr = find_interface_ip($if); - /* non enabled interfaces are displayed in list on imspector settings page */ - /* check that the interface has an ip address before adding parameters */ - if($addr) { - foreach($proto_array as $proto) { - if(imspector_proto_to_port($proto)) { - /* we can use rdr pass to auto create the filter rule */ - $pf_rules .= imspector_pf_rdr($if,imspector_proto_to_port($proto)); - } - } - if(!$ifaces_active) - $ifaces_active = "{$iface}"; - else - $ifaces_active .= ", {$iface}"; - } else { - imspector_warn("Interface {$iface} has no ip address, ignoring"); - } - } else { - imspector_warn("Could not resolve real interface for {$iface}"); - } - } - - - /*reload rules*/ - if($pf_rules) { - log_error("Imspector: Reloading rules."); - exec("echo \"{$pf_rules}\" | /sbin/pfctl -a imspector -f -"); - - conf_mount_rw(); - - /* generate configuration files */ - - $conf['plugin_dir'] = '/usr/local/lib/imspector'; - - foreach($proto_array as $proto) - $conf[$proto . '_protocol'] = 'on'; - - if($ims_config['log_file']) { - @mkdir('/var/imspector'); - $conf['file_logging_dir'] = '/var/imspector'; - } - - if($ims_config['log_mysql']) { - $conf['mysql_server'] = $ims_config['mysql_server']; - $conf['mysql_database'] = $ims_config['mysql_database']; - $conf['mysql_username'] = $ims_config['mysql_username']; - $conf['mysql_password'] = $ims_config['mysql_password']; - } - - if($ims_replacements['filter_badwords']) { - write_imspector_config(IMSPECTOR_ETC . '/badwords_custom.txt', ims_text_area_decode($ims_replacements["badwords_list"])); - $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords_custom.txt'; - } - - if($ims_replacements['block_files']) - $conf['block_files'] = 'on'; - - if($ims_replacements['block_webcams']) - $conf['block_webcams'] = 'on'; - - $acls=""; - $conf['acl_filename'] = IMSPECTOR_ETC . '/acls.txt'; - foreach ($ims_acls as $rule){ - if ($rule['enable']){ - $acls.= "{$rule['action']} {$rule['localid']} ".preg_replace("/\s+/"," ",base64_decode($rule['remoteid']))."\n"; - } - } - write_imspector_config(IMSPECTOR_ETC . '/acls.txt', $acls); - - // Handle Jabber SSL options - if(isset($ims_config["ssl_ca_cert"]) && $ims_config["ssl_ca_cert"] != "none" && - isset($ims_config["ssl_server_cert"]) && $ims_config["ssl_server_cert"] != "none") { - $conf['ssl'] = "on"; - if(!is_dir(IMSPECTOR_ETC . "/ssl")) - mkdir(IMSPECTOR_ETC . "/ssl"); - - $ca_cert = lookup_ca($ims_config["ssl_ca_cert"]); - if ($ca_cert != false) { - if(base64_decode($ca_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_key.pem", base64_decode($ca_cert['prv'])); - $conf['ssl_ca_key'] = IMSPECTOR_ETC . '/ssl/ssl_ca_key.pem'; - } - if(base64_decode($ca_cert['crt'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem", base64_decode($ca_cert['crt'])); - $conf['ssl_ca_cert'] = IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem"; - } - $svr_cert = lookup_cert($ims_config["ssl_server_cert"]); - if ($svr_cert != false) { - if(base64_decode($svr_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_server_key.pem", base64_decode($svr_cert['prv'])); - $conf['ssl_key'] = IMSPECTOR_ETC . '/ssl/ssl_server_key.pem'; - } - - } - $conf['ssl_cert_dir'] = IMSPECTOR_ETC . '/ssl'; - } - } else { - // SSL Not enabled. Make sure Jabber-SSL is not processed. - unset($conf['jabber-ssl']); - unset($conf['ssl']); - } - - if (isset($ims_replacements['responder']) && $ims_replacements['responder'] == 'on') { - $conf['responder_filename'] = IMSPECTOR_ETC . "/responder.db"; - if (isset($ims_replacements['prefix_message']) && $ims_replacements['prefix_message'] != '' ) { - $conf['response_prefix'] = " .={$ims_replacements['prefix_message']}=."; - } - else{ - $conf['response_prefix'] = " .=Your activities are being logged=."; - } - if (isset($ims_replacements['notice_days']) && is_numeric($ims_replacements['notice_days'])) { - if ($ims_replacements['notice_days'] != 0) { - $conf['notice_days'] = $ims_replacements['notice_days']; - } - } else { - $conf['notice_days'] = 1; - } - - /*Custom recorded message response*/ - if(isset($ims_replacements['recorded_message']) && $ims_replacements['recorded_message'] != '' ){ - $conf['notice_response'] = ims_text_area_decode($ims_replacements['recorded_message']); - } - else{ - $conf['notice_response'] = "Your activities are being logged"; - } - - /*Filtered Frequency*/ - if (isset($ims_replacements['filtered_minutes']) && is_numeric($ims_replacements['filtered_minutes'])) { - if ($ims_replacements['filtered_minutes'] != 0) { - $conf['filtered_mins'] = $ims_replacements['filtered_minutes']; - } - } else { - $conf['filtered_mins'] = 15; - } - - /*Custom filtered message response*/ - if(isset($ims_replacements['filtered_message']) && $ims_replacements['filtered_message'] != '' ){ - $conf['filtered_response'] = ims_text_area_decode($ims_replacements['filtered_message']); - } - else{ - $conf['filtered_response'] = "Your message has been filtered"; - } - } - - $conftext = ''; - foreach($conf as $var => $key) - $conftext .= "{$var}={$key}\n"; - write_imspector_config(IMSPECTOR_CONFIG, $conftext); - - /*Check template settings*/ - if ($ims_config['template'] == "") - $template="services_imspector_logs.php"; - else - $template=$ims_config['template']; - - /*link template file*/ - $link="/usr/local/www/imspector_logs.php"; - unlink_if_exists($link); - symlink("/usr/local/www/{$template}", $link); - - /* generate rc file start and stop */ - $stop = << 'imspector.sh', - 'start' => $start, - 'stop' => $stop - ) - ); - - conf_mount_ro(); - } - } - - if(!$iface_array || !$proto_array || !$pf_rules) { - /* no parameters user does not want imspector running */ - /* lets stop the service and remove the rc file */ - - if(file_exists(IMSPECTOR_RCFILE)) { - if(!$ims_config['enable']) - log_error('Impsector: Stopping service: imspector disabled'); - else - log_error('Impsector: Stopping service: no interfaces and/or protocols selected'); - - imspector_action('stop'); - - conf_mount_rw(); - unlink(IMSPECTOR_RCFILE); - unlink(IMSPECTOR_CONFIG); - @unlink(IMSPECTOR_ETC . '/badwords_custom.txt'); - @unlink(IMSPECTOR_ETC . '/acl_blacklist.txt'); - @unlink(IMSPECTOR_ETC . '/acl_whitelist.txt'); - conf_mount_ro(); - } - } - else{ - /* if imspector not running start it */ - if(!is_process_running('imspector')) { - log_error("Impsector: Starting service on interface: {$ifaces_active}"); - imspector_action('start'); - } - /* or restart imspector if settings were changed */ - else{ - log_error("Impsector: Restarting service on interface: {$ifaces_active}"); - imspector_action('restart'); - } - } - config_unlock(); - - /*check xmlrpc sync*/ - imspector_sync_on_changes(); - } - - function imspector_get_ca_certs() { - global $config; - - $ca_arr = array(); - $ca_arr[] = array('refid' => 'none', 'descr' => 'none'); - foreach ($config['ca'] as $ca) { - $ca_arr[] = array('refid' => $ca['refid'], 'descr' => $ca['descr']); - } - return $ca_arr; - } - - function imspector_get_server_certs() { - global $config; - $cert_arr = array(); - $cert_arr[] = array('refid' => 'none', 'descr' => 'none'); - - foreach ($config['cert'] as $cert) { - $cert_arr[] = array('refid' => $cert['refid'], 'descr' => $cert['descr']); - } - return $cert_arr; - } - -/* Uses XMLRPC to synchronize the changes to a remote node */ -function imspector_sync_on_changes() { - global $config, $g; - - $synconchanges = $config['installedpackages']['imspectorsync']['config'][0]['synconchanges']; - if(!$synconchanges) - return; - log_error("Imspector: xmlrpc sync is starting."); - foreach ($config['installedpackages']['imspectorsync']['config'] as $rs ){ - foreach($rs['row'] as $sh){ - $sync_to_ip = $sh['ipaddress']; - $password = $sh['password']; - if($password && $sync_to_ip) - imspector_do_xmlrpc_sync($sync_to_ip, $password); - } - } - log_error("Imspector: xmlrpc sync is ending."); -} -/* Do the actual XMLRPC sync */ -function imspector_do_xmlrpc_sync($sync_to_ip, $password) { - global $config, $g; - - if(!$password) - return; - - if(!$sync_to_ip) - return; - $username="admin"; - - $xmlrpc_sync_neighbor = $sync_to_ip; - if($config['system']['webgui']['protocol'] != "") { - $synchronizetoip = $config['system']['webgui']['protocol']; - $synchronizetoip .= "://"; - } - $port = $config['system']['webgui']['port']; - /* if port is empty lets rely on the protocol selection */ - if($port == "") { - if($config['system']['webgui']['protocol'] == "http") - $port = "80"; - else - $port = "443"; - } - $synchronizetoip .= $sync_to_ip; - - /* xml will hold the sections to sync */ - $xml = array(); - $xml['imspector'] = $config['installedpackages']['imspector']; - $xml['imspectorreplacements'] = $config['installedpackages']['imspectorreplacements']; - $xml['imspectoracls'] = $config['installedpackages']['imspectoracls']; - /* assemble xmlrpc payload */ - $params = array( - XML_RPC_encode($password), - XML_RPC_encode($xml) - ); - - /* set a few variables needed for sync code borrowed from filter.inc */ - $url = $synchronizetoip; - log_error("Imspector: Beginning XMLRPC sync to {$url}:{$port}."); - $method = 'pfsense.merge_installedpackages_section_xmlrpc'; - $msg = new XML_RPC_Message($method, $params); - $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); - $cli->setCredentials($username, $password); - if($g['debug']) - $cli->setDebug(1); - /* send our XMLRPC message and timeout after 250 seconds */ - $resp = $cli->send($msg, "250"); - if(!$resp) { - $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port}."; - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } elseif($resp->faultCode()) { - $cli->setDebug(1); - $resp = $cli->send($msg, "250"); - $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } else { - log_error("imspector XMLRPC sync successfully completed with {$url}:{$port}."); - } - - /* tell imspector to reload our settings on the destionation sync host. */ - $method = 'pfsense.exec_php'; - $execcmd = "require_once('/usr/local/pkg/imspector.inc');\n"; - $execcmd .= "sync_package_imspector();"; - /* assemble xmlrpc payload */ - $params = array( - XML_RPC_encode($password), - XML_RPC_encode($execcmd) - ); - - log_error("imspector XMLRPC reload data {$url}:{$port}."); - $msg = new XML_RPC_Message($method, $params); - $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); - $cli->setCredentials($username, $password); - $resp = $cli->send($msg, "250"); - if(!$resp) { - $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port} (pfsense.exec_php)."; - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } elseif($resp->faultCode()) { - $cli->setDebug(1); - $resp = $cli->send($msg, "250"); - $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } else { - log_error("imspector XMLRPC reload data success with {$url}:{$port} (pfsense.exec_php)."); - } - -} -?> diff --git a/config/imspector-dev/imspector.xml b/config/imspector-dev/imspector.xml deleted file mode 100644 index c68fc70e..00000000 --- a/config/imspector-dev/imspector.xml +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - Copyright (C) 2011 Bill Marquette - Copyright (C) 2007 Ryan Wagoner - 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. - */ -/* ========================================================================== */ - ]]> - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - imspector - 20111108 - Services: IMSpector - Save - /usr/local/pkg/imspector.inc - - IMSpector - Set IMSpector settings such as protocols to listen on. -
    Services
    - /services_imspector_logs.php -
    - - imspector - imspector.sh - imspector - - - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml - - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_sync.xml - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_replacements.xml - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_acls.xml - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector.inc - - - /usr/local/www/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_logs.php - - - /usr/local/www/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/services_imspector_logs.php - - - /usr/local/www/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/services_imspector_logs2.php - - - - General Settings - listtopic - - - Enable IMSpector - enable - checkbox - - - Interfaces - iface_array - Generally select internal interface(s) like LAN

    - You can use the CTRL or COMMAND key to select multiple interfaces.]]> - interfaces_selection - 3 - - lan - true - - - Listen on protocols - proto_array - NOTE: Gtalk/Jabber-SSL requires SSL certificates.

    - You can use the CTRL or COMMAND key to select multiple protocols.]]> - select - 7 - - true - - - - - - - - - - - - SSL CA Certificate - ssl_ca_cert - - Choose the SSL CA Certficate here. - - select_source - - descr - refid - - - SSL Certificate - ssl_server_cert - - Choose the SSL Server Certificate here. - - select_source - - descr - refid - - - Logging - listtopic - - - Enable file logging - log_file - Log files stored in /var/imspector. - checkbox - - - Report limit - reportlimit - Max entries to fetch from log dir(s). Default is 50 - input - 10 - - - Report template - template - Template to use on reports - select - - - - - - - - Enable mySQL logging - log_mysql - Make sure to specify your MySQL credentials below. - checkbox - - - mySQL server - mysql_server - input - 35 - - - mySQL database - mysql_database - input - 35 - - - mySQL username - mysql_username - input - 35 - - - mySQL password - mysql_password - password - 35 - - - - validate_form_imspector($_POST, &$input_errors); - - - sync_package_imspector(); - - - deinstall_package_imspector(); - - imspector_generate_rules - \ No newline at end of file diff --git a/config/imspector-dev/imspector_acls.xml b/config/imspector-dev/imspector_acls.xml deleted file mode 100644 index 3176c75f..00000000 --- a/config/imspector-dev/imspector_acls.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - . - 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. - */ -/* ========================================================================== */ - ]]> - - - imspectoracls - 20111108 - Imspector acls - Imspectors Access Lists - Save - /usr/local/pkg/imspector.inc - - - SSH Conditions - Configure SSH conditional exceptions -
    Services
    - /pkg.php?xml=sshdcond.xml -
    - installedpackages->package->sshdcond - - - /usr/local/pkg/ - 755 - http://www.pfsense.com/packages/config/sshdcond/sshdcond.inc - - - /usr/local/pkg/ - 755 - http://www.pfsense.com/packages/config/sshdcond/sshdcond_sync.xml - - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml&id=0 - - - - - Status - enable - - - action - action - - - local ID - localid - - - Description - description - - - - - listtopic - Imspector Access Lists - temp - - - Enable - enable - checkbox - - Rules are processed in order, from top to bottom.]]> - - - Action - action - Select action to take on this rule - select - - - - - - - - Description - description - - input - 50 - - - - Local ID - localid - - Local IDs can either be complete, such as user@company.com, partial like company.com or all to match any id.]]> - input - 50 - - - - Remote ID - remoteid - - Remote IDs can be complete ids like user@company.com, partial company.com, all to match any id or groupchat.]]> - textarea - 10 - 60 - base64 - - - - - validate_form_imspector($_POST, &$input_errors); - - - sync_package_imspector(); - - - deinstall_package_imspector(); - - imspector_generate_rules -
    \ No newline at end of file diff --git a/config/imspector-dev/imspector_logs.php b/config/imspector-dev/imspector_logs.php deleted file mode 100644 index e44ef35f..00000000 --- a/config/imspector-dev/imspector_logs.php +++ /dev/null @@ -1,311 +0,0 @@ -. - Copyright (C) 2012 Marcello Coutinho - 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. -*/ - -require("guiconfig.inc"); - -/* variables */ -$log_dir = '/var/imspector'; -$imspector_config = $config['installedpackages']['imspector']['config'][0]; - -$border_color = '#c0c0c0'; -$default_bgcolor = '#eeeeee'; - -$list_protocol_color = '#000000'; -$list_local_color = '#000000'; -$list_remote_color = '#000000'; -$list_convo_color = '#000000'; - -$list_protocol_bgcolor = '#cccccc'; -$list_local_bgcolor = '#dddddd'; -$list_remote_bgcolor = '#eeeeee'; -$list_end_bgcolor = '#bbbbbb'; - -$convo_title_color = 'black'; -$convo_local_color = 'blue'; -$convo_remote_color = 'red'; - -$convo_title_bgcolor = '#cccccc'; -$convo_local_bgcolor = '#dddddd'; -$convo_remote_bgcolor = '#eeeeee'; - -/* functions */ - -function convert_dir_list ($topdir) { - global $config; - if (!is_dir($topdir)) - return; - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); - file_put_contents("/tmp/teste.txt",$limit." teste",LOCK_EX); - $count=0; - if ($dh = opendir($topdir)) { - while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) - continue; - if (is_dir("$topdir/$file")) - $list .= convert_dir_list("$topdir/$file"); - else - $list .= "$topdir/$file\n"; - $count ++; - if($count >= $limit){ - closedir($dh); - return $list; - } - } - closedir($dh); - } - return $list; - } - -/* ajax response */ -if ($_POST['mode'] == "render") { - - /* user list */ - print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); - print("--END--\n"); - - /* log files */ - if ($_POST['section'] != "none") { - $section = explode('|',$_POST['section']); - $protocol = $section[0]; - $localuser = $section[1]; - $remoteuser = $section[2]; - $conversation = $section[3]; - - /* conversation title */ - print(implode(', ', $section)."\n"); - print("--END--\n"); - - /* conversation content */ - $filename = $log_dir.'/'.implode('/', $section); - if($fd = fopen($filename, 'r')) { - print("\n"); - while (!feof($fd)) { - $line = fgets($fd); - if(feof($fd)) continue; - $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - preg_match("/${new_format}|${old_format}/", $line, $matches); - $address = $matches[1]; - $timestamp = $matches[2]; - $direction = $matches[3]; - $type = $matches[4]; - $filtered = $matches[5]; - if(count($matches) == 8) { - $category = $matches[6]; - $data = $matches[7]; - } else { - $category = ""; - $data = $matches[6]; - } - - if($direction == '0') { - $bgcolor = $convo_remote_bgcolor; - $user = "<$remoteuser>"; - } - if($direction == '1') { - $bgcolor = $convo_local_bgcolor; - $user = "<$localuser>"; - } - - $time = strftime("%H:%M:%S", $timestamp); - - print("\n - \n - \n - \n"); - } - print("
    [$time]$user$category$data
    \n"); - fclose($fd); - } - } - exit; -} -/* defaults to this page but if no settings are present, redirect to setup page */ -if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) - Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); - -$pgtitle = "Services: IMSpector Log Viewer"; -include("head.inc"); -/* put your custom HTML head content here */ -/* using some of the $pfSenseHead function calls */ -//$pfSenseHead->addMeta(""); -//echo $pfSenseHead->getHTML(); -?> - - - -
    - - -
    - - -var section = 'none'; -var moveit = 1; -var the_timeout; - -function xmlhttpPost() -{ - var xmlHttpReq = false; - var self = this; - - if (window.XMLHttpRequest) - self.xmlHttpReq = new XMLHttpRequest(); - else if (window.ActiveXObject) - self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - - self.xmlHttpReq.open('POST', 'imspector_logs.php', true); - self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - - self.xmlHttpReq.onreadystatechange = function() { - if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) - updatepage(self.xmlHttpReq.responseText); - } - - document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section); -} - -function updatepage(str) -{ - /* update the list of conversations ( if we need to ) */ - var parts = str.split("--END--\\n"); - var lines = parts[0].split("\\n"); - - for (var line = 0 ; line < lines.length ; line ++) { - var a = lines[line].split("|"); - - if (!a[1] || !a[2] || !a[3]) continue; - - /* create titling information if needed */ - if (!document.getElementById(a[1])) { - document.getElementById('im_convos').innerHTML += - "
    " + a[1] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2])) { - var imageref = ""; - if (a[0]) imageref = "" + a[1] + ""; - document.getElementById(a[1]).innerHTML += - "
    " + imageref + a[2] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { - document.getElementById(a[1] + "_" + a[2]).innerHTML += - "
    " + a[3] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { - document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += - "
    »" + a[4] + "
    "; - } - } - - /* determine the title of this conversation */ - var details = parts[1].split(","); - var title = details[0] + " conversation between " + details[ 1 ] + - " and " + details[2] + ""; - if (!details[1]) title = " "; - if (!parts[2]) parts[2] = " "; - - document.getElementById('im_status').style.display = "none"; - var bottom = parseInt(document.getElementById('im_content').scrollTop); - var bottom2 = parseInt(document.getElementById('im_content').style.height); - var absheight = parseInt( bottom + bottom2 ); - if (absheight == document.getElementById('im_content').scrollHeight) { - moveit = 1; - } else { - moveit = 0; - } - document.getElementById('im_content').innerHTML = parts[2]; - if (moveit == 1) { - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; - } - document.getElementById('im_content_title').innerHTML = title; - the_timeout = setTimeout( "xmlhttpPost();", 5000 ); -} - -function setsection(value) -{ - section = value; - clearTimeout(the_timeout); - xmlhttpPost(); - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; -} - -EOD; -print($zz); -?> - - - - - -
    -
     
    - - - - - -
    -
    -
    -
    -
    -
    -
    - - - -
    - - - diff --git a/config/imspector-dev/imspector_replacements.xml b/config/imspector-dev/imspector_replacements.xml deleted file mode 100644 index 7f53bbd4..00000000 --- a/config/imspector-dev/imspector_replacements.xml +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - Copyright (C) 2011 Bill Marquette - Copyright (C) 2007 Ryan Wagoner - 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. - */ -/* ========================================================================== */ - ]]> - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - imspectorreplacements - 20111108 - Services: IMSpector - Save - /usr/local/pkg/imspector.inc - - IMSpector - Set IMSpector settings such as protocols to listen on. -
    Services
    - /services_imspector_logs.php -
    - - imspector - imspector.sh - imspector - - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml&id=0 - - - - - Response messages - listtopic - - - Enable response messages - responder - - Inform the users (both local and remote) that the conversation they are having is being recorded. This might be needed for legal reasons. - Inform the sender that a file (or message) was blocked. This is useful because the sender will know a block occured, instead of the transfer simply failing. - checkbox - - - Notification frequency - notice_days - input - 10 - Frequency in number of days for notifying users they are being logged. Default 1 day if responses are enabled, set to 0 to disable - - - Filtered frequency - filtered_minutes - input - 10 - The time between sending "filtered" in minutes. Default 15 minutes if responses are enabled, set to 0 to disable - - - Custom message prefix - prefix_message - - Message to prepend to all IMSpector generated messages. The default is "Message from IMSpector" - - input - 60 - - - Custom recorded message response - recorded_message - - Message to send to users to let them know they are being recorded. The default is "Your activities are being logged" - - textarea - base64 - 5 - 60 - - - Custom filtered message response - filtered_message - - Message to send to users to let them know about filtered messages. - - textarea - base64 - 5 - 60 - - - Restrictions - listtopic - - - Block file transfers - block_files - Block file transfers on supported protocols. - checkbox - - - Block web cameras - block_webcams - This option will block all webcam sessions. Currently IMSpector can only spot webcam sessions on Yahoo. - checkbox - - - Enable bad word filtering - filter_badwords - Replace characters of matched bad word with *. - checkbox - - - Bad words list - badwords_list - - Place one word or phrase to match per line.<br /> - Leave blank to load default list. - - textarea - base64 - 10 - 60 - - - - validate_form_imspector($_POST, &$input_errors); - - - sync_package_imspector(); - - - deinstall_package_imspector(); - - imspector_generate_rules - -
    \ No newline at end of file diff --git a/config/imspector-dev/imspector_sync.xml b/config/imspector-dev/imspector_sync.xml deleted file mode 100644 index 3ff88d41..00000000 --- a/config/imspector-dev/imspector_sync.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - imspectorsync - 1.0 - Services: IMSpector - /usr/local/pkg/imspector.inc - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml&id=0 - - - - - - XMLRPC Sync - listtopic - - - Automatically sync imspector configuration changes - synconchanges - Automatically sync imspector(normal and reverse) changes to the hosts defined below. - checkbox - - - Remote Server - none - rowhelper - - - IP Address - ipaddress - IP Address of remote server - input - 20 - - - Password - password - Password for remote server. - password - 20 - - - - - - - - sync_package_imspector(); - - diff --git a/config/imspector-dev/services_imspector_logs.php b/config/imspector-dev/services_imspector_logs.php deleted file mode 100644 index adb3fa66..00000000 --- a/config/imspector-dev/services_imspector_logs.php +++ /dev/null @@ -1,311 +0,0 @@ -. - Copyright (C) 2012 Marcello Coutinho - 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. -*/ - -require("guiconfig.inc"); - -/* variables */ -$log_dir = '/var/imspector'; -$imspector_config = $config['installedpackages']['imspector']['config'][0]; - -$border_color = '#c0c0c0'; -$default_bgcolor = '#eeeeee'; - -$list_protocol_color = '#000000'; -$list_local_color = '#000000'; -$list_remote_color = '#000000'; -$list_convo_color = '#000000'; - -$list_protocol_bgcolor = '#cccccc'; -$list_local_bgcolor = '#dddddd'; -$list_remote_bgcolor = '#eeeeee'; -$list_end_bgcolor = '#bbbbbb'; - -$convo_title_color = 'black'; -$convo_local_color = 'blue'; -$convo_remote_color = 'red'; - -$convo_title_bgcolor = '#cccccc'; -$convo_local_bgcolor = '#dddddd'; -$convo_remote_bgcolor = '#eeeeee'; - -/* functions */ - -function convert_dir_list ($topdir) { - global $config; - if (!is_dir($topdir)) - return; - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); - $count=0; - if ($dh = opendir($topdir)) { - while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) - continue; - if (is_dir("$topdir/$file")) - $list .= convert_dir_list("$topdir/$file"); - else - $list .= "$topdir/$file\n"; - $count ++; - if($count >= $limit){ - closedir($dh); - return $list; - } - } - closedir($dh); - } - return $list; - } - -/* ajax response */ -if ($_POST['mode'] == "render") { - - /* user list */ - print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); - print("--END--\n"); - - /* log files */ - if ($_POST['section'] != "none") { - $section = explode('|',$_POST['section']); - $protocol = $section[0]; - $localuser = $section[1]; - $remoteuser = $section[2]; - $conversation = $section[3]; - - /* conversation title */ - print(implode(', ', $section)."\n"); - print("--END--\n"); - - /* conversation content */ - $filename = $log_dir.'/'.implode('/', $section); - if($fd = fopen($filename, 'r')) { - print("\n"); - while (!feof($fd)) { - $line = fgets($fd); - if(feof($fd)) continue; - $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - preg_match("/${new_format}|${old_format}/", $line, $matches); - $address = $matches[1]; - $timestamp = $matches[2]; - $direction = $matches[3]; - $type = $matches[4]; - $filtered = $matches[5]; - if(count($matches) == 8) { - $category = $matches[6]; - $data = $matches[7]; - } else { - $category = ""; - $data = $matches[6]; - } - - if($direction == '0') { - $bgcolor = $convo_remote_bgcolor; - $user = "<$remoteuser>"; - } - if($direction == '1') { - $bgcolor = $convo_local_bgcolor; - $user = "<$localuser>"; - } - - $time = strftime("%H:%M:%S", $timestamp); - - print("\n - \n - \n - \n"); - } - print("
    [$time]$user$category$data
    \n"); - fclose($fd); - } - } - exit; -} -/* defaults to this page but if no settings are present, redirect to setup page */ -if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) - Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); - -$pgtitle = "Services: IMSpector Log Viewer"; -include("head.inc"); -/* put your custom HTML head content here */ -/* using some of the $pfSenseHead function calls */ -//$pfSenseHead->addMeta(""); -//echo $pfSenseHead->getHTML(); -?> - - - -
    - - -
    - - -var section = 'none'; -var moveit = 1; -var the_timeout; - -function xmlhttpPost() -{ - var xmlHttpReq = false; - var self = this; - - if (window.XMLHttpRequest) - self.xmlHttpReq = new XMLHttpRequest(); - else if (window.ActiveXObject) - self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - - self.xmlHttpReq.open('POST', 'imspector_logs.php', true); - self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - - self.xmlHttpReq.onreadystatechange = function() { - if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) - updatepage(self.xmlHttpReq.responseText); - } - - document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); -} - -function updatepage(str) -{ - /* update the list of conversations ( if we need to ) */ - var parts = str.split("--END--\\n"); - var lines = parts[0].split("\\n"); - - for (var line = 0 ; line < lines.length ; line ++) { - var a = lines[line].split("|"); - - if (!a[1] || !a[2] || !a[3]) continue; - - /* create titling information if needed */ - if (!document.getElementById(a[1])) { - document.getElementById('im_convos').innerHTML += - "
    " + a[1] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2])) { - var imageref = ""; - if (a[0]) imageref = "" + a[1] + ""; - document.getElementById(a[1]).innerHTML += - "
    " + imageref + a[2] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { - document.getElementById(a[1] + "_" + a[2]).innerHTML += - "
    " + a[3] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { - document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += - "
    »" + a[4] + "
    "; - } - } - - /* determine the title of this conversation */ - var details = parts[1].split(","); - var title = details[0] + " conversation between " + details[ 1 ] + - " and " + details[2] + ""; - if (!details[1]) title = " "; - if (!parts[2]) parts[2] = " "; - - document.getElementById('im_status').style.display = "none"; - var bottom = parseInt(document.getElementById('im_content').scrollTop); - var bottom2 = parseInt(document.getElementById('im_content').style.height); - var absheight = parseInt( bottom + bottom2 ); - if (absheight == document.getElementById('im_content').scrollHeight) { - moveit = 1; - } else { - moveit = 0; - } - document.getElementById('im_content').innerHTML = parts[2]; - if (moveit == 1) { - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; - } - document.getElementById('im_content_title').innerHTML = title; - the_timeout = setTimeout( "xmlhttpPost();", 5000 ); -} - -function setsection(value) -{ - section = value; - clearTimeout(the_timeout); - xmlhttpPost(); - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; -} - -EOD; -print($zz); -?> - - - - - -
    -
     
    - - - - - -
    -
    -
    -
    -
    -
    -
    - - - -
    - - - diff --git a/config/imspector-dev/services_imspector_logs2.php b/config/imspector-dev/services_imspector_logs2.php deleted file mode 100644 index 30f63058..00000000 --- a/config/imspector-dev/services_imspector_logs2.php +++ /dev/null @@ -1,318 +0,0 @@ -. - Copyright (C) 2012 0guzcan at pfsense forum. - Copyright (C) 2012 Marcello Coutinho - 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. -*/ -require("guiconfig.inc"); - -/* variables */ -$log_dir = '/var/imspector'; -$imspector_config = $config['installedpackages']['imspector']['config'][0]; - -$border_color = '#c0c0c0'; -$default_bgcolor = '#eeeeee'; - -$list_protocol_color = '#000000'; -$list_local_color = '#ffffff'; -$list_remote_color = '#666666'; -$list_convo_color = '#888888'; - -$list_protocol_bgcolor = '#cccccc'; -$list_local_bgcolor = '#850000'; -$list_remote_bgcolor = '#eeeeee'; -$list_end_bgcolor = '#bbbbbb'; - -$convo_title_color = 'black'; -$convo_local_color = 'blue'; -$convo_remote_color = 'red'; - -$convo_title_bgcolor = '#cccccc'; -$convo_local_bgcolor = '#dddddd'; -$convo_remote_bgcolor = '#eeeeee'; - - -/* functions */ - -function convert_dir_list ($topdir) { - global $config; - if (!is_dir($topdir)) - return; - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); - $count=0; - if ($dh = opendir($topdir)) { - while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) - continue; - if (is_dir("$topdir/$file")) - $list .= convert_dir_list("$topdir/$file"); - else - $list .= "$topdir/$file\n"; - $count ++; - if($count >= $limit){ - closedir($dh); - return $list; - } - } - closedir($dh); - } - return $list; - } - -/* ajax response */ -if ($_POST['mode'] == "render") { - - /* user list */ - print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); - print("--END--\n"); - - /* log files */ - if ($_POST['section'] != "none") { - $section = explode('|',$_POST['section']); - $protocol = $section[0]; - $localuser = $section[1]; - $remoteuser = $section[2]; - $conversation = $section[3]; - - /* conversation title */ - print(implode(', ', $section)."\n"); - print("--END--\n"); - - /* conversation content */ - $filename = $log_dir.'/'.implode('/', $section); - if($fd = fopen($filename, 'r')) { - $satir_oku = fgets($fd); - $ipsinibulduk = explode(':',$satir_oku); - - print("\n"); - while (!feof($fd)) { - $line = fgets($fd); - if(feof($fd)) continue; - $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - preg_match("/${new_format}|${old_format}/", $line, $matches); - $address = $matches[1]; - $addresbul = explode(':',$address); - $addressnew =$addresbul[0] ; - $timestamp = $matches[2]; - $direction = $matches[3]; - $type = $matches[4]; - $filtered = $matches[5]; - if(count($matches) == 8) { - $category = $matches[6]; - $data = $matches[7]; - } else { - $category = ""; - $data = $matches[6]; - } - - if($direction == '0') { - $bgcolor = $convo_remote_bgcolor; - $user = "$remoteuser"; - } - if($direction == '1') { - $bgcolor = $convo_local_bgcolor; - $user = "$localuser"; - } - - $time = strftime("%H:%M", $timestamp); - - - print(" - \n - \n - \n - \n"); - } - print("
    user [$localuser] at local ip: [$ipsinibulduk[0]]
    [$time]$user$category$data
    \n"); - fclose($fd); - } - } - exit; -} -/* defaults to this page but if no settings are present, redirect to setup page */ -if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) - Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); - -$pgtitle = "Services: IMSpector Log Viewer"; -include("head.inc"); -/* put your custom HTML head content here */ -/* using some of the $pfSenseHead function calls */ -//$pfSenseHead->addMeta(""); -//echo $pfSenseHead->getHTML(); -?> - - - - -
    - - -
    - - -var section = 'none'; -var moveit = 1; -var the_timeout; - -function xmlhttpPost() -{ - var xmlHttpReq = false; - var self = this; - - if (window.XMLHttpRequest) - self.xmlHttpReq = new XMLHttpRequest(); - else if (window.ActiveXObject) - self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - - self.xmlHttpReq.open('POST', 'imspector_logs.php', true); - self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - - self.xmlHttpReq.onreadystatechange = function() { - if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) - updatepage(self.xmlHttpReq.responseText); - } - - document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); -} - -function updatepage(str) -{ - /* update the list of conversations ( if we need to ) */ - var parts = str.split("--END--\\n"); - var lines = parts[0].split("\\n"); - - for (var line = 0 ; line < lines.length ; line ++) { - var a = lines[line].split("|"); - - if (!a[1] || !a[2] || !a[3]) continue; - - /* create titling information if needed */ - if (!document.getElementById(a[1])) { - document.getElementById('im_convos').innerHTML += - "
    " + a[1] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2])) { - var imageref = ""; - if (a[0]) imageref = "" + a[1] + ""; - document.getElementById(a[1]).innerHTML += - "
    " + imageref + a[2] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { - document.getElementById(a[1] + "_" + a[2]).innerHTML += - "
    " + a[3] + "
    " + - "
    "; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { - document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += - "
    »" + a[4] + "
    "; - } - } - - /* determine the title of this conversation */ - var details = parts[1].split(","); - var title = "
    "+ details[3]+ " dated " + "[" + details[1]+ " ]"+ " with " + "[ " + details[2] + " ] " + details[0] + " records
    "; - if (!details[1]) title = " "; - if (!parts[2]) parts[2] = " "; - - document.getElementById('im_status').style.display = "none"; - var bottom = parseInt(document.getElementById('im_content').scrollTop); - var bottom2 = parseInt(document.getElementById('im_content').style.height); - var absheight = parseInt( bottom + bottom2 ); - if (absheight == document.getElementById('im_content').scrollHeight) { - moveit = 1; - } else { - moveit = 0; - } - document.getElementById('im_content').innerHTML = parts[2]; - if (moveit == 1) { - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; - } - document.getElementById('im_content_title').innerHTML = title; - the_timeout = setTimeout( "xmlhttpPost();", 5000 ); -} - -function setsection(value) -{ - section = value; - clearTimeout(the_timeout); - xmlhttpPost(); - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; -} - -EOD; -print($zz); -?> - - - - - -
    -
     
    - - - - - -
    -
    -
    -
    -
    -
    -
    - - - -
    - - - \ No newline at end of file diff --git a/config/imspector/imspector.inc b/config/imspector/imspector.inc index d2757be8..52c7ae1b 100644 --- a/config/imspector/imspector.inc +++ b/config/imspector/imspector.inc @@ -2,6 +2,7 @@ /* imspector.inc part of pfSense (http://www.pfsense.com/) + Copyright (C) 2012 Marcello Coutinho. Copyright (C) 2011 Scott Ullrich . Copyright (C) 2011 Bill Marquette . Copyright (C) 2007 Ryan Wagoner . @@ -31,6 +32,7 @@ require_once("config.inc"); require_once("functions.inc"); + require_once("service-utils.inc"); /* IMSpector */ @@ -38,20 +40,17 @@ define('IMSPECTOR_ETC', '/usr/local/etc/imspector'); define('IMSPECTOR_CONFIG', IMSPECTOR_ETC . '/imspector.conf'); - function imspector_notice ($msg) { syslog(LOG_NOTICE, "imspector: {$msg}"); } function imspector_warn ($msg) { syslog(LOG_WARNING, "imspector: {$msg}"); } + function ims_text_area_decode($text){ + return preg_replace('/\r\n/', "\n",base64_decode($text)); + } + function imspector_action ($action) { if (file_exists(IMSPECTOR_RCFILE)) mwexec(IMSPECTOR_RCFILE.' '.$action); } - function imspector_running () { - if((int)exec('pgrep imspector | wc -l') > 0) - return true; - return false; - } - function write_imspector_config($file, $text) { $conf = fopen($file, 'w'); if(!$conf) { @@ -95,18 +94,19 @@ function validate_form_imspector($post, $input_errors) { if($post['iface_array']) foreach($post['iface_array'] as $iface) - if($iface == 'wan') + if($iface == 'wanx') $input_errors[] = 'It is a security risk to specify WAN in the \'Interface\' field'; } function deinstall_package_imspector() { imspector_action('stop'); - @unlink(IMSPECTOR_RCFILE); - @unlink(IMSPECTOR_CONFIG); - @unlink(IMSPECTOR_ETC . '/badwords_custom.txt'); - @unlink(IMSPECTOR_ETC . '/acl_blacklist.txt'); - @unlink(IMSPECTOR_ETC . '/acl_whitelist.txt'); + unlink_if_exists(IMSPECTOR_RCFILE); + unlink_if_exists(IMSPECTOR_CONFIG); + unlink_if_exists(IMSPECTOR_ETC . '/badwords_custom.txt'); + unlink_if_exists(IMSPECTOR_ETC . '/acl_blacklist.txt'); + unlink_if_exists(IMSPECTOR_ETC . '/acl_whitelist.txt'); + unlink_if_exists('/usr/local/www/imspector_logs.php'); //exec('pkg_delete imspector-0.4'); } @@ -122,7 +122,7 @@ break; case 'rule': $rules = "# IMSpector \n"; - $rules .= "anchor \"miniupnpd\"\n"; + $rules .= "anchor \"imspector\"\n"; break; } @@ -133,21 +133,60 @@ global $config; global $input_errors; + /*detect boot process*/ + if (is_array($_POST)){ + if (preg_match("/\w+/",$_POST['__csrf_magic'])) + unset($boot_process); + else + $boot_process="on"; + } + + if (is_process_running('imspector') && isset($boot_process)) + return; + + /* check default options and sample files*/ + $load_samples=0; + + #bannedphraselist + if (!is_array($config['installedpackages']['imspectoracls'])){ + $config['installedpackages']['imspectoracls']['config'][]=array('enable'=> 'on', + 'description' => 'allow access to all ids', + 'action' => 'allow', + 'localid' => 'all', + 'remoteid' => base64_encode('all')); + $load_samples++; + } + $ims_acls = $config['installedpackages']['imspectoracls']['config']; + + if (is_array($config['installedpackages']['imspectorreplacements'])){ + if ($config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] == "" && file_exists(IMSPECTOR_ETC . '/badwords.txt')){ + $config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] = base64_encode(file_get_contents(IMSPECTOR_ETC . '/badwords.txt')); + $load_samples++; + } + $ims_replacements = $config['installedpackages']['imspectorreplacements']['config'][0]; + } + + if (is_array($config['installedpackages']['imspector'])) + $ims_config = $config['installedpackages']['imspector']['config'][0]; + + if($load_samples > 0) + write_config(); + + /*continue sync process*/ + log_error("Imspector: Saving changes."); config_lock(); - - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - + /* remove existing rules */ - exec('/sbin/pfctl -a imspector -Fr'); - exec('/sbin/pfctl -a imspector -Fn'); + exec('/sbin/pfctl -a imspector -Fr > /dev/null'); + exec('/sbin/pfctl -a imspector -Fn > /dev/null'); $ifaces_active = ''; - if($imspector_config['enable'] && $imspector_config['proto_array']) - $proto_array = explode(',', $imspector_config['proto_array']); + if($ims_config['enable'] && $ims_config['proto_array']) + $proto_array = explode(',', $ims_config['proto_array']); - if($imspector_config['enable'] && $imspector_config['iface_array']) - $iface_array = explode(',', $imspector_config['iface_array']); + if($ims_config['enable'] && $ims_config['iface_array']) + $iface_array = explode(',', $ims_config['iface_array']); if($iface_array && $proto_array) { foreach($iface_array as $iface) { @@ -175,8 +214,11 @@ imspector_warn("Could not resolve real interface for {$iface}"); } } - + + + /*reload rules*/ if($pf_rules) { + log_error("Imspector: Reloading rules."); exec("echo \"{$pf_rules}\" | /sbin/pfctl -a imspector -f -"); conf_mount_rw(); @@ -188,69 +230,59 @@ foreach($proto_array as $proto) $conf[$proto . '_protocol'] = 'on'; - if($imspector_config['log_file']) { + if($ims_config['log_file']) { @mkdir('/var/imspector'); $conf['file_logging_dir'] = '/var/imspector'; } - if($imspector_config['log_mysql']) { - $conf['mysql_server'] = $imspector_config['mysql_server']; - $conf['mysql_database'] = $imspector_config['mysql_database']; - $conf['mysql_username'] = $imspector_config['mysql_username']; - $conf['mysql_password'] = $imspector_config['mysql_password']; + if($ims_config['log_mysql']) { + $conf['mysql_server'] = $ims_config['mysql_server']; + $conf['mysql_database'] = $ims_config['mysql_database']; + $conf['mysql_username'] = $ims_config['mysql_username']; + $conf['mysql_password'] = $ims_config['mysql_password']; } - if($imspector_config['filter_badwords']) { - if(!empty($imspector_config["badwords_list"])) { - $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords_custom.txt'; - write_imspector_config(IMSPECTOR_ETC . '/badwords_custom.txt', - str_replace("\r", '', base64_decode($imspector_config["badwords_list"]))); - } else - $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords.txt'; - } + if($ims_replacements['filter_badwords']) { + write_imspector_config(IMSPECTOR_ETC . '/badwords_custom.txt', ims_text_area_decode($ims_replacements["badwords_list"])); + $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords_custom.txt'; + } - if($imspector_config['block_files']) + if($ims_replacements['block_files']) $conf['block_files'] = 'on'; - - if($imspector_config['block_unlisted']) - $conf['block_unlisted'] = 'on'; - - if(!empty($imspector_config['acl_whitelist'])) { - $conf['whitelist_filename'] = IMSPECTOR_ETC . '/acl_whitelist.txt'; - write_imspector_config(IMSPECTOR_ETC . '/acl_whitelist.txt', - str_replace("\r", '', base64_decode($imspector_config["acl_whitelist"]))); - } - - if(!empty($imspector_config['acl_blacklist'])) { - $conf['blacklist_filename'] = IMSPECTOR_ETC . '/acl_blacklist.txt'; - write_imspector_config(IMSPECTOR_ETC . '/acl_blacklist.txt', - str_replace("\r", '', base64_decode($imspector_config["acl_blacklist"]))); - } + + if($ims_replacements['block_webcams']) + $conf['block_webcams'] = 'on'; + + $acls=""; + $conf['acl_filename'] = IMSPECTOR_ETC . '/acls.txt'; + foreach ($ims_acls as $rule){ + if ($rule['enable']){ + $acls.= "{$rule['action']} {$rule['localid']} ".preg_replace("/\s+/"," ",base64_decode($rule['remoteid']))."\n"; + } + } + write_imspector_config(IMSPECTOR_ETC . '/acls.txt', $acls); // Handle Jabber SSL options - if(isset($imspector_config["ssl_ca_cert"]) && $imspector_config["ssl_ca_cert"] != "none" && - isset($imspector_config["ssl_server_cert"]) && $imspector_config["ssl_server_cert"] != "none") { + if(isset($ims_config["ssl_ca_cert"]) && $ims_config["ssl_ca_cert"] != "none" && + isset($ims_config["ssl_server_cert"]) && $ims_config["ssl_server_cert"] != "none") { $conf['ssl'] = "on"; if(!is_dir(IMSPECTOR_ETC . "/ssl")) mkdir(IMSPECTOR_ETC . "/ssl"); - $ca_cert = lookup_ca($imspector_config["ssl_ca_cert"]); + $ca_cert = lookup_ca($ims_config["ssl_ca_cert"]); if ($ca_cert != false) { if(base64_decode($ca_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_key.pem", - base64_decode($ca_cert['prv'])); + file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_key.pem", base64_decode($ca_cert['prv'])); $conf['ssl_ca_key'] = IMSPECTOR_ETC . '/ssl/ssl_ca_key.pem'; } if(base64_decode($ca_cert['crt'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem", - base64_decode($ca_cert['crt'])); + file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem", base64_decode($ca_cert['crt'])); $conf['ssl_ca_cert'] = IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem"; } - $svr_cert = lookup_cert($imspector_config["ssl_server_cert"]); + $svr_cert = lookup_cert($ims_config["ssl_server_cert"]); if ($svr_cert != false) { if(base64_decode($svr_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_server_key.pem", - base64_decode($svr_cert['prv'])); + file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_server_key.pem", base64_decode($svr_cert['prv'])); $conf['ssl_key'] = IMSPECTOR_ETC . '/ssl/ssl_server_key.pem'; } @@ -263,42 +295,68 @@ unset($conf['ssl']); } - if (isset($imspector_config['resonder']) && $imspector_config['resonder'] == 'on') { + if (isset($ims_replacements['responder']) && $ims_replacements['responder'] == 'on') { $conf['responder_filename'] = IMSPECTOR_ETC . "/responder.db"; - if (isset($imspector_config['prefix_message']) && $imspector_config['prefix_message'] != '' ) { - $conf['response_prefix'] = base64_decode($imspector_config['prefix_message']) . " -="; + if (isset($ims_replacements['prefix_message']) && $ims_replacements['prefix_message'] != '' ) { + $conf['response_prefix'] = " .={$ims_replacements['prefix_message']}=."; } - if (isset($imspector_config['notice_days']) && is_numeric($imspector_config['notice_days'])) { - if ($imspector_config['notice_days'] != 0) { - $conf['notice_days'] = $imspector_config['notice_days']; + else{ + $conf['response_prefix'] = " .=Your activities are being logged=."; + } + if (isset($ims_replacements['notice_days']) && is_numeric($ims_replacements['notice_days'])) { + if ($ims_replacements['notice_days'] != 0) { + $conf['notice_days'] = $ims_replacements['notice_days']; } } else { $conf['notice_days'] = 1; } - $conf['notice_response'] = "Your activities are being logged"; - if (isset($imspector_config['filtered_minutes']) && is_numeric($imspector_config['filtered_minutes'])) { - if ($imspector_config['filtered_minutes'] != 0) { - $conf['filtered_mins'] = $imspector_config['filtered_minutes']; + + /*Custom recorded message response*/ + if(isset($ims_replacements['recorded_message']) && $ims_replacements['recorded_message'] != '' ){ + $conf['notice_response'] = ims_text_area_decode($ims_replacements['recorded_message']); + } + else{ + $conf['notice_response'] = "Your activities are being logged"; + } + + /*Filtered Frequency*/ + if (isset($ims_replacements['filtered_minutes']) && is_numeric($ims_replacements['filtered_minutes'])) { + if ($ims_replacements['filtered_minutes'] != 0) { + $conf['filtered_mins'] = $ims_replacements['filtered_minutes']; } } else { $conf['filtered_mins'] = 15; } - $conf['filtered_response'] = "Your message has been filtered"; + + /*Custom filtered message response*/ + if(isset($ims_replacements['filtered_message']) && $ims_replacements['filtered_message'] != '' ){ + $conf['filtered_response'] = ims_text_area_decode($ims_replacements['filtered_message']); + } + else{ + $conf['filtered_response'] = "Your message has been filtered"; + } } $conftext = ''; foreach($conf as $var => $key) $conftext .= "{$var}={$key}\n"; write_imspector_config(IMSPECTOR_CONFIG, $conftext); + + /*Check template settings*/ + if ($ims_config['template'] == "") + $template="services_imspector_logs.php"; + else + $template=$ims_config['template']; + /*link template file*/ + $link="/usr/local/www/imspector_logs.php"; + unlink_if_exists($link); + symlink("/usr/local/www/{$template}", $link); + /* generate rc file start and stop */ $stop = << \ No newline at end of file + +/* Uses XMLRPC to synchronize the changes to a remote node */ +function imspector_sync_on_changes() { + global $config, $g; + + $synconchanges = $config['installedpackages']['imspectorsync']['config'][0]['synconchanges']; + if(!$synconchanges) + return; + log_error("Imspector: xmlrpc sync is starting."); + foreach ($config['installedpackages']['imspectorsync']['config'] as $rs ){ + foreach($rs['row'] as $sh){ + $sync_to_ip = $sh['ipaddress']; + $password = $sh['password']; + if($password && $sync_to_ip) + imspector_do_xmlrpc_sync($sync_to_ip, $password); + } + } + log_error("Imspector: xmlrpc sync is ending."); +} +/* Do the actual XMLRPC sync */ +function imspector_do_xmlrpc_sync($sync_to_ip, $password) { + global $config, $g; + + if(!$password) + return; + + if(!$sync_to_ip) + return; + $username="admin"; + + $xmlrpc_sync_neighbor = $sync_to_ip; + if($config['system']['webgui']['protocol'] != "") { + $synchronizetoip = $config['system']['webgui']['protocol']; + $synchronizetoip .= "://"; + } + $port = $config['system']['webgui']['port']; + /* if port is empty lets rely on the protocol selection */ + if($port == "") { + if($config['system']['webgui']['protocol'] == "http") + $port = "80"; + else + $port = "443"; + } + $synchronizetoip .= $sync_to_ip; + + /* xml will hold the sections to sync */ + $xml = array(); + $xml['imspector'] = $config['installedpackages']['imspector']; + $xml['imspectorreplacements'] = $config['installedpackages']['imspectorreplacements']; + $xml['imspectoracls'] = $config['installedpackages']['imspectoracls']; + /* assemble xmlrpc payload */ + $params = array( + XML_RPC_encode($password), + XML_RPC_encode($xml) + ); + + /* set a few variables needed for sync code borrowed from filter.inc */ + $url = $synchronizetoip; + log_error("Imspector: Beginning XMLRPC sync to {$url}:{$port}."); + $method = 'pfsense.merge_installedpackages_section_xmlrpc'; + $msg = new XML_RPC_Message($method, $params); + $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); + $cli->setCredentials($username, $password); + if($g['debug']) + $cli->setDebug(1); + /* send our XMLRPC message and timeout after 250 seconds */ + $resp = $cli->send($msg, "250"); + if(!$resp) { + $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port}."; + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } elseif($resp->faultCode()) { + $cli->setDebug(1); + $resp = $cli->send($msg, "250"); + $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } else { + log_error("imspector XMLRPC sync successfully completed with {$url}:{$port}."); + } + + /* tell imspector to reload our settings on the destionation sync host. */ + $method = 'pfsense.exec_php'; + $execcmd = "require_once('/usr/local/pkg/imspector.inc');\n"; + $execcmd .= "sync_package_imspector();"; + /* assemble xmlrpc payload */ + $params = array( + XML_RPC_encode($password), + XML_RPC_encode($execcmd) + ); + + log_error("imspector XMLRPC reload data {$url}:{$port}."); + $msg = new XML_RPC_Message($method, $params); + $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); + $cli->setCredentials($username, $password); + $resp = $cli->send($msg, "250"); + if(!$resp) { + $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port} (pfsense.exec_php)."; + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } elseif($resp->faultCode()) { + $cli->setDebug(1); + $resp = $cli->send($msg, "250"); + $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } else { + log_error("imspector XMLRPC reload data success with {$url}:{$port} (pfsense.exec_php)."); + } + +} +?> diff --git a/config/imspector/imspector.xml b/config/imspector/imspector.xml index d42e7a18..72969778 100644 --- a/config/imspector/imspector.xml +++ b/config/imspector/imspector.xml @@ -43,10 +43,9 @@ Describe your package requirements here Currently there are no FAQ items provided. imspector - 0.9 + 20111108 Services: IMSpector - Change - /services_imspector_logs.php + Save /usr/local/pkg/imspector.inc IMSpector @@ -58,38 +57,81 @@ imspector imspector.sh imspector + - IMSpector Log Viewer - /services_imspector_logs.php - - - IMSpector Settings + Settings /pkg_edit.php?xml=imspector.xml&id=0 + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_sync.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_replacements.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_acls.xml + /usr/local/pkg/ 0755 http://www.pfsense.org/packages/config/imspector/imspector.inc + + /usr/local/www/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_logs.php + /usr/local/www/ 0755 http://www.pfsense.org/packages/config/imspector/services_imspector_logs.php + + /usr/local/www/ + 0755 + http://www.pfsense.org/packages/config/imspector/services_imspector_logs2.php + + + General Settings + listtopic + Enable IMSpector enable checkbox - Interfaces (generally LAN) + Interfaces iface_array - You can use the CTRL or COMMAND key to select multiple interfaces. + Generally select internal interface(s) like LAN
    + You can use the CTRL or COMMAND key to select multiple interfaces.]]>
    interfaces_selection 3 @@ -99,203 +141,101 @@ Listen on protocols proto_array - You can use the CTRL or COMMAND key to select multiple protocols. NOTE: Gtalk/Jabber-SSL requires SSL certificates. + NOTE: Gtalk/Jabber-SSL requires SSL certificates.
    + You can use the CTRL or COMMAND key to select multiple protocols.]]>
    select 7 true - - - - - - - + + + + + + +
    - Enable file logging - log_file - Log files stored in /var/imspector. - checkbox - - - Enable mySQL logging - log_mysql - Make sure to specify your MySQL credentials below. - checkbox - - - mySQL server - mysql_server - input - - - mySQL database - mysql_database - input - - - mySQL username - mysql_username - input - - - mySQL password - mysql_password - password - - - SSL Certificate - ssl_server_cert + SSL CA Certificate + ssl_ca_cert - Choose the SSL Server Certificate here. + Choose the SSL CA Certficate here. select_source - + descr refid - SSL CA Certificate - ssl_ca_cert + SSL Certificate + ssl_server_cert - Choose the SSL CA Certficate here. + Choose the SSL Server Certificate here. select_source - + descr refid - Enable bad word filtering - filter_badwords - Replace characters of matched bad word with *. - checkbox + Logging + listtopic - Enable response messages - resonder - - Inform the users (both local and remote) that the conversation they are having is being recorded. This might be needed for legal reasons. - Inform the sender that a file (or message) was blocked. This is useful because the sender will know a block occured, instead of the transfer simply failing. + Enable file logging + log_file + Log files stored in /var/imspector. checkbox - Notification frequency - notice_days - input - Frequency in number of days for notifying users they are being logged. Default 1 day if responses are enabled, set to 0 to disable - - - Filtered frequency - filtered_minutes + Report limit + reportlimit + Max entries to fetch from log dir(s). Default is 50 input - The time between sending "filtered" in minutes. Default 15 minutes if responses are enabled, set to 0 to disable - - - Custom message prefix - prefix_message - - Message to prepend to all IMSpector generated messages. The default is "Message from IMSpector" - - textarea - base64 - 5 - 40 - - - Custom recorded message response - recorded_message - - Message to send to users to let them know they are being recorded. The default is "Your activities are being logged" - - textarea - base64 - 5 - 40 + 10 - Custom filtered message response - filtered_message - - Message to send to users to let them know about filtered messages. - - textarea - base64 - 5 - 40 + Report template + template + Template to use on reports + select + + + + + - - Bad words list - badwords_list - - Place one word or phrase to match per line.<br /> - If left blank the default list in /usr/local/etc/imspector/badwords.txt will be used. - - textarea - base64 - 5 - 40 + Enable mySQL logging + log_mysql + Make sure to specify your MySQL credentials below. + checkbox - Block file transfers - block_files - Block file transfers on supported protocols. - checkbox + mySQL server + mysql_server + input + 35 - Block non ACL defined - block_unlisted - Overide the default of allowing user's not defined the whitelist or blacklist ACLs. - checkbox + mySQL database + mysql_database + input + 35 - ACL whitelist - acl_whitelist - - Example (allow specific access): localuser: remoteuser1 remoteuser2<br /> - Example (allow full access): localuser: - - textarea - base64 - 5 - 40 + mySQL username + mysql_username + input + 35 - ACL blacklist - acl_blacklist - - Example (block specifc access): localuser: remoteuser1 remoteuser2<br /> - Example (block all access): localuser: - - textarea - base64 - 5 - 40 + mySQL password + mysql_password + password + 35
    @@ -308,4 +248,4 @@ deinstall_package_imspector(); imspector_generate_rules - \ No newline at end of file + diff --git a/config/imspector/imspector_acls.xml b/config/imspector/imspector_acls.xml new file mode 100644 index 00000000..3176c75f --- /dev/null +++ b/config/imspector/imspector_acls.xml @@ -0,0 +1,173 @@ + + + + . + 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. + */ +/* ========================================================================== */ + ]]> + + + imspectoracls + 20111108 + Imspector acls + Imspectors Access Lists + Save + /usr/local/pkg/imspector.inc + + + SSH Conditions + Configure SSH conditional exceptions +
    Services
    + /pkg.php?xml=sshdcond.xml +
    + installedpackages->package->sshdcond + + + /usr/local/pkg/ + 755 + http://www.pfsense.com/packages/config/sshdcond/sshdcond.inc + + + /usr/local/pkg/ + 755 + http://www.pfsense.com/packages/config/sshdcond/sshdcond_sync.xml + + + + Settings + /pkg_edit.php?xml=imspector.xml&id=0 + + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml&id=0 + + + + + Status + enable + + + action + action + + + local ID + localid + + + Description + description + + + + + listtopic + Imspector Access Lists + temp + + + Enable + enable + checkbox + + Rules are processed in order, from top to bottom.]]> + + + Action + action + Select action to take on this rule + select + + + + + + + + Description + description + + input + 50 + + + + Local ID + localid + + Local IDs can either be complete, such as user@company.com, partial like company.com or all to match any id.]]> + input + 50 + + + + Remote ID + remoteid + + Remote IDs can be complete ids like user@company.com, partial company.com, all to match any id or groupchat.]]> + textarea + 10 + 60 + base64 + + + + + validate_form_imspector($_POST, &$input_errors); + + + sync_package_imspector(); + + + deinstall_package_imspector(); + + imspector_generate_rules +
    \ No newline at end of file diff --git a/config/imspector/imspector_logs.php b/config/imspector/imspector_logs.php new file mode 100644 index 00000000..e44ef35f --- /dev/null +++ b/config/imspector/imspector_logs.php @@ -0,0 +1,311 @@ +. + Copyright (C) 2012 Marcello Coutinho + 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. +*/ + +require("guiconfig.inc"); + +/* variables */ +$log_dir = '/var/imspector'; +$imspector_config = $config['installedpackages']['imspector']['config'][0]; + +$border_color = '#c0c0c0'; +$default_bgcolor = '#eeeeee'; + +$list_protocol_color = '#000000'; +$list_local_color = '#000000'; +$list_remote_color = '#000000'; +$list_convo_color = '#000000'; + +$list_protocol_bgcolor = '#cccccc'; +$list_local_bgcolor = '#dddddd'; +$list_remote_bgcolor = '#eeeeee'; +$list_end_bgcolor = '#bbbbbb'; + +$convo_title_color = 'black'; +$convo_local_color = 'blue'; +$convo_remote_color = 'red'; + +$convo_title_bgcolor = '#cccccc'; +$convo_local_bgcolor = '#dddddd'; +$convo_remote_bgcolor = '#eeeeee'; + +/* functions */ + +function convert_dir_list ($topdir) { + global $config; + if (!is_dir($topdir)) + return; + $imspector_config = $config['installedpackages']['imspector']['config'][0]; + $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); + file_put_contents("/tmp/teste.txt",$limit." teste",LOCK_EX); + $count=0; + if ($dh = opendir($topdir)) { + while (($file = readdir($dh)) !== false) { + if(!preg_match('/^\./', $file) == 0) + continue; + if (is_dir("$topdir/$file")) + $list .= convert_dir_list("$topdir/$file"); + else + $list .= "$topdir/$file\n"; + $count ++; + if($count >= $limit){ + closedir($dh); + return $list; + } + } + closedir($dh); + } + return $list; + } + +/* ajax response */ +if ($_POST['mode'] == "render") { + + /* user list */ + print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); + print("--END--\n"); + + /* log files */ + if ($_POST['section'] != "none") { + $section = explode('|',$_POST['section']); + $protocol = $section[0]; + $localuser = $section[1]; + $remoteuser = $section[2]; + $conversation = $section[3]; + + /* conversation title */ + print(implode(', ', $section)."\n"); + print("--END--\n"); + + /* conversation content */ + $filename = $log_dir.'/'.implode('/', $section); + if($fd = fopen($filename, 'r')) { + print("\n"); + while (!feof($fd)) { + $line = fgets($fd); + if(feof($fd)) continue; + $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + preg_match("/${new_format}|${old_format}/", $line, $matches); + $address = $matches[1]; + $timestamp = $matches[2]; + $direction = $matches[3]; + $type = $matches[4]; + $filtered = $matches[5]; + if(count($matches) == 8) { + $category = $matches[6]; + $data = $matches[7]; + } else { + $category = ""; + $data = $matches[6]; + } + + if($direction == '0') { + $bgcolor = $convo_remote_bgcolor; + $user = "<$remoteuser>"; + } + if($direction == '1') { + $bgcolor = $convo_local_bgcolor; + $user = "<$localuser>"; + } + + $time = strftime("%H:%M:%S", $timestamp); + + print("\n + \n + \n + \n"); + } + print("
    [$time]$user$category$data
    \n"); + fclose($fd); + } + } + exit; +} +/* defaults to this page but if no settings are present, redirect to setup page */ +if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) + Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); + +$pgtitle = "Services: IMSpector Log Viewer"; +include("head.inc"); +/* put your custom HTML head content here */ +/* using some of the $pfSenseHead function calls */ +//$pfSenseHead->addMeta(""); +//echo $pfSenseHead->getHTML(); +?> + + + +
    + + +
    + + +var section = 'none'; +var moveit = 1; +var the_timeout; + +function xmlhttpPost() +{ + var xmlHttpReq = false; + var self = this; + + if (window.XMLHttpRequest) + self.xmlHttpReq = new XMLHttpRequest(); + else if (window.ActiveXObject) + self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); + + self.xmlHttpReq.open('POST', 'imspector_logs.php', true); + self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + + self.xmlHttpReq.onreadystatechange = function() { + if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) + updatepage(self.xmlHttpReq.responseText); + } + + document.getElementById('im_status').style.display = "inline"; + self.xmlHttpReq.send("mode=render§ion=" + section); +} + +function updatepage(str) +{ + /* update the list of conversations ( if we need to ) */ + var parts = str.split("--END--\\n"); + var lines = parts[0].split("\\n"); + + for (var line = 0 ; line < lines.length ; line ++) { + var a = lines[line].split("|"); + + if (!a[1] || !a[2] || !a[3]) continue; + + /* create titling information if needed */ + if (!document.getElementById(a[1])) { + document.getElementById('im_convos').innerHTML += + "
    " + a[1] + "
    " + + "
    "; + } + if (!document.getElementById(a[1] + "_" + a[2])) { + var imageref = ""; + if (a[0]) imageref = "" + a[1] + ""; + document.getElementById(a[1]).innerHTML += + "
    " + imageref + a[2] + "
    " + + "
    "; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { + document.getElementById(a[1] + "_" + a[2]).innerHTML += + "
    " + a[3] + "
    " + + "
    "; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { + document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += + "
    »" + a[4] + "
    "; + } + } + + /* determine the title of this conversation */ + var details = parts[1].split(","); + var title = details[0] + " conversation between " + details[ 1 ] + + " and " + details[2] + ""; + if (!details[1]) title = " "; + if (!parts[2]) parts[2] = " "; + + document.getElementById('im_status').style.display = "none"; + var bottom = parseInt(document.getElementById('im_content').scrollTop); + var bottom2 = parseInt(document.getElementById('im_content').style.height); + var absheight = parseInt( bottom + bottom2 ); + if (absheight == document.getElementById('im_content').scrollHeight) { + moveit = 1; + } else { + moveit = 0; + } + document.getElementById('im_content').innerHTML = parts[2]; + if (moveit == 1) { + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; + } + document.getElementById('im_content_title').innerHTML = title; + the_timeout = setTimeout( "xmlhttpPost();", 5000 ); +} + +function setsection(value) +{ + section = value; + clearTimeout(the_timeout); + xmlhttpPost(); + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; +} + +EOD; +print($zz); +?> + + + + + +
    +
     
    + + + + + +
    +
    +
    +
    +
    +
    +
    + + + +
    + + + diff --git a/config/imspector/imspector_replacements.xml b/config/imspector/imspector_replacements.xml new file mode 100644 index 00000000..7f53bbd4 --- /dev/null +++ b/config/imspector/imspector_replacements.xml @@ -0,0 +1,188 @@ + + + + + + + Copyright (C) 2011 Bill Marquette + Copyright (C) 2007 Ryan Wagoner + 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. + */ +/* ========================================================================== */ + ]]> + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + imspectorreplacements + 20111108 + Services: IMSpector + Save + /usr/local/pkg/imspector.inc + + IMSpector + Set IMSpector settings such as protocols to listen on. +
    Services
    + /services_imspector_logs.php +
    + + imspector + imspector.sh + imspector + + + + Settings + /pkg_edit.php?xml=imspector.xml&id=0 + + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml&id=0 + + + + + Response messages + listtopic + + + Enable response messages + responder + + Inform the users (both local and remote) that the conversation they are having is being recorded. This might be needed for legal reasons. + Inform the sender that a file (or message) was blocked. This is useful because the sender will know a block occured, instead of the transfer simply failing. + checkbox + + + Notification frequency + notice_days + input + 10 + Frequency in number of days for notifying users they are being logged. Default 1 day if responses are enabled, set to 0 to disable + + + Filtered frequency + filtered_minutes + input + 10 + The time between sending "filtered" in minutes. Default 15 minutes if responses are enabled, set to 0 to disable + + + Custom message prefix + prefix_message + + Message to prepend to all IMSpector generated messages. The default is "Message from IMSpector" + + input + 60 + + + Custom recorded message response + recorded_message + + Message to send to users to let them know they are being recorded. The default is "Your activities are being logged" + + textarea + base64 + 5 + 60 + + + Custom filtered message response + filtered_message + + Message to send to users to let them know about filtered messages. + + textarea + base64 + 5 + 60 + + + Restrictions + listtopic + + + Block file transfers + block_files + Block file transfers on supported protocols. + checkbox + + + Block web cameras + block_webcams + This option will block all webcam sessions. Currently IMSpector can only spot webcam sessions on Yahoo. + checkbox + + + Enable bad word filtering + filter_badwords + Replace characters of matched bad word with *. + checkbox + + + Bad words list + badwords_list + + Place one word or phrase to match per line.<br /> + Leave blank to load default list. + + textarea + base64 + 10 + 60 + + + + validate_form_imspector($_POST, &$input_errors); + + + sync_package_imspector(); + + + deinstall_package_imspector(); + + imspector_generate_rules + +
    \ No newline at end of file diff --git a/config/imspector/imspector_sync.xml b/config/imspector/imspector_sync.xml new file mode 100644 index 00000000..3ff88d41 --- /dev/null +++ b/config/imspector/imspector_sync.xml @@ -0,0 +1,109 @@ + + + + + + + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + imspectorsync + 1.0 + Services: IMSpector + /usr/local/pkg/imspector.inc + + + Settings + /pkg_edit.php?xml=imspector.xml&id=0 + + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml&id=0 + + + + + + XMLRPC Sync + listtopic + + + Automatically sync imspector configuration changes + synconchanges + Automatically sync imspector(normal and reverse) changes to the hosts defined below. + checkbox + + + Remote Server + none + rowhelper + + + IP Address + ipaddress + IP Address of remote server + input + 20 + + + Password + password + Password for remote server. + password + 20 + + + + + + + + sync_package_imspector(); + + diff --git a/config/imspector/services_imspector_logs.php b/config/imspector/services_imspector_logs.php index fce9b892..adb3fa66 100644 --- a/config/imspector/services_imspector_logs.php +++ b/config/imspector/services_imspector_logs.php @@ -6,6 +6,7 @@ JavaScript Code is GPL Licensed from SmoothWall Express. Copyright (C) 2007 Ryan Wagoner . + Copyright (C) 2012 Marcello Coutinho All rights reserved. Redistribution and use in source and binary forms, with or without @@ -60,20 +61,30 @@ $convo_remote_bgcolor = '#eeeeee'; /* functions */ function convert_dir_list ($topdir) { - if (!is_dir($topdir)) return; + global $config; + if (!is_dir($topdir)) + return; + $imspector_config = $config['installedpackages']['imspector']['config'][0]; + $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); + $count=0; if ($dh = opendir($topdir)) { while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) continue; - if (is_dir("$topdir/$file")) { + if(!preg_match('/^\./', $file) == 0) + continue; + if (is_dir("$topdir/$file")) $list .= convert_dir_list("$topdir/$file"); - } else { + else $list .= "$topdir/$file\n"; + $count ++; + if($count >= $limit){ + closedir($dh); + return $list; + } } - } closedir($dh); - } + } return $list; -} + } /* ajax response */ if ($_POST['mode'] == "render") { @@ -157,13 +168,18 @@ include("head.inc");
    var section = 'none'; @@ -180,7 +196,7 @@ function xmlhttpPost() else if (window.ActiveXObject) self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - self.xmlHttpReq.open('POST', 'services_imspector_logs.php', true); + self.xmlHttpReq.open('POST', 'imspector_logs.php', true); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); self.xmlHttpReq.onreadystatechange = function() { @@ -189,7 +205,7 @@ function xmlhttpPost() } document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section); + self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); } function updatepage(str) diff --git a/config/imspector/services_imspector_logs2.php b/config/imspector/services_imspector_logs2.php new file mode 100644 index 00000000..30f63058 --- /dev/null +++ b/config/imspector/services_imspector_logs2.php @@ -0,0 +1,318 @@ +. + Copyright (C) 2012 0guzcan at pfsense forum. + Copyright (C) 2012 Marcello Coutinho + 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. +*/ +require("guiconfig.inc"); + +/* variables */ +$log_dir = '/var/imspector'; +$imspector_config = $config['installedpackages']['imspector']['config'][0]; + +$border_color = '#c0c0c0'; +$default_bgcolor = '#eeeeee'; + +$list_protocol_color = '#000000'; +$list_local_color = '#ffffff'; +$list_remote_color = '#666666'; +$list_convo_color = '#888888'; + +$list_protocol_bgcolor = '#cccccc'; +$list_local_bgcolor = '#850000'; +$list_remote_bgcolor = '#eeeeee'; +$list_end_bgcolor = '#bbbbbb'; + +$convo_title_color = 'black'; +$convo_local_color = 'blue'; +$convo_remote_color = 'red'; + +$convo_title_bgcolor = '#cccccc'; +$convo_local_bgcolor = '#dddddd'; +$convo_remote_bgcolor = '#eeeeee'; + + +/* functions */ + +function convert_dir_list ($topdir) { + global $config; + if (!is_dir($topdir)) + return; + $imspector_config = $config['installedpackages']['imspector']['config'][0]; + $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); + $count=0; + if ($dh = opendir($topdir)) { + while (($file = readdir($dh)) !== false) { + if(!preg_match('/^\./', $file) == 0) + continue; + if (is_dir("$topdir/$file")) + $list .= convert_dir_list("$topdir/$file"); + else + $list .= "$topdir/$file\n"; + $count ++; + if($count >= $limit){ + closedir($dh); + return $list; + } + } + closedir($dh); + } + return $list; + } + +/* ajax response */ +if ($_POST['mode'] == "render") { + + /* user list */ + print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); + print("--END--\n"); + + /* log files */ + if ($_POST['section'] != "none") { + $section = explode('|',$_POST['section']); + $protocol = $section[0]; + $localuser = $section[1]; + $remoteuser = $section[2]; + $conversation = $section[3]; + + /* conversation title */ + print(implode(', ', $section)."\n"); + print("--END--\n"); + + /* conversation content */ + $filename = $log_dir.'/'.implode('/', $section); + if($fd = fopen($filename, 'r')) { + $satir_oku = fgets($fd); + $ipsinibulduk = explode(':',$satir_oku); + + print("\n"); + while (!feof($fd)) { + $line = fgets($fd); + if(feof($fd)) continue; + $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + preg_match("/${new_format}|${old_format}/", $line, $matches); + $address = $matches[1]; + $addresbul = explode(':',$address); + $addressnew =$addresbul[0] ; + $timestamp = $matches[2]; + $direction = $matches[3]; + $type = $matches[4]; + $filtered = $matches[5]; + if(count($matches) == 8) { + $category = $matches[6]; + $data = $matches[7]; + } else { + $category = ""; + $data = $matches[6]; + } + + if($direction == '0') { + $bgcolor = $convo_remote_bgcolor; + $user = "$remoteuser"; + } + if($direction == '1') { + $bgcolor = $convo_local_bgcolor; + $user = "$localuser"; + } + + $time = strftime("%H:%M", $timestamp); + + + print(" + \n + \n + \n + \n"); + } + print("
    user [$localuser] at local ip: [$ipsinibulduk[0]]
    [$time]$user$category$data
    \n"); + fclose($fd); + } + } + exit; +} +/* defaults to this page but if no settings are present, redirect to setup page */ +if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) + Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); + +$pgtitle = "Services: IMSpector Log Viewer"; +include("head.inc"); +/* put your custom HTML head content here */ +/* using some of the $pfSenseHead function calls */ +//$pfSenseHead->addMeta(""); +//echo $pfSenseHead->getHTML(); +?> + + + + +
    + + +
    + + +var section = 'none'; +var moveit = 1; +var the_timeout; + +function xmlhttpPost() +{ + var xmlHttpReq = false; + var self = this; + + if (window.XMLHttpRequest) + self.xmlHttpReq = new XMLHttpRequest(); + else if (window.ActiveXObject) + self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); + + self.xmlHttpReq.open('POST', 'imspector_logs.php', true); + self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + + self.xmlHttpReq.onreadystatechange = function() { + if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) + updatepage(self.xmlHttpReq.responseText); + } + + document.getElementById('im_status').style.display = "inline"; + self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); +} + +function updatepage(str) +{ + /* update the list of conversations ( if we need to ) */ + var parts = str.split("--END--\\n"); + var lines = parts[0].split("\\n"); + + for (var line = 0 ; line < lines.length ; line ++) { + var a = lines[line].split("|"); + + if (!a[1] || !a[2] || !a[3]) continue; + + /* create titling information if needed */ + if (!document.getElementById(a[1])) { + document.getElementById('im_convos').innerHTML += + "
    " + a[1] + "
    " + + "
    "; + } + if (!document.getElementById(a[1] + "_" + a[2])) { + var imageref = ""; + if (a[0]) imageref = "" + a[1] + ""; + document.getElementById(a[1]).innerHTML += + "
    " + imageref + a[2] + "
    " + + "
    "; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { + document.getElementById(a[1] + "_" + a[2]).innerHTML += + "
    " + a[3] + "
    " + + "
    "; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { + document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += + "
    »" + a[4] + "
    "; + } + } + + /* determine the title of this conversation */ + var details = parts[1].split(","); + var title = "
    "+ details[3]+ " dated " + "[" + details[1]+ " ]"+ " with " + "[ " + details[2] + " ] " + details[0] + " records
    "; + if (!details[1]) title = " "; + if (!parts[2]) parts[2] = " "; + + document.getElementById('im_status').style.display = "none"; + var bottom = parseInt(document.getElementById('im_content').scrollTop); + var bottom2 = parseInt(document.getElementById('im_content').style.height); + var absheight = parseInt( bottom + bottom2 ); + if (absheight == document.getElementById('im_content').scrollHeight) { + moveit = 1; + } else { + moveit = 0; + } + document.getElementById('im_content').innerHTML = parts[2]; + if (moveit == 1) { + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; + } + document.getElementById('im_content_title').innerHTML = title; + the_timeout = setTimeout( "xmlhttpPost();", 5000 ); +} + +function setsection(value) +{ + section = value; + clearTimeout(the_timeout); + xmlhttpPost(); + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; +} + +EOD; +print($zz); +?> + + + + + +
    +
     
    + + + + + +
    +
    +
    +
    +
    +
    +
    + + + +
    + + + \ No newline at end of file diff --git a/pkg_config.10.xml b/pkg_config.10.xml index aa48e65e..285dd420 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -712,8 +712,7 @@ - imspector-dev - imspector + imspector IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. http://www.imspector.org/ Network Management @@ -722,13 +721,12 @@ 2.2 BETA http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector-dev/imspector.xml + http://www.pfsense.com/packages/config/imspector/imspector.xml imspector.xml imspector-20111108_1-##ARCH##.pbi imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW - imspector - net-im/imspector-devel + net-im/imspector diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 880449e4..e0c8b8ef 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -969,31 +969,12 @@ IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. http://www.imspector.org/ Network Management - billm@pfsense.org - 0.9-4 - 2.0 - BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml - imspector.xml - http://files.pfsense.org/packages/8/All/ - sqlite3-3.7.12.1.tbz - imspector-0.9.tbz - imspector-0.9-i386.pbi - /usr/ports/net-im/imspector - - - imspector-dev - imspector - IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. - http://www.imspector.org/ - Network Management marcellocoutinho@gmail.com 20111108 pkg v 0.3.1 2.0 BETA http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector-dev/imspector.xml + http://www.pfsense.com/packages/config/imspector/imspector.xml imspector.xml imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW http://e-sac.siteseguro.ws/packages/8/All/ diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 2c0469ab..7b2af2a9 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -956,31 +956,12 @@ IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. http://www.imspector.org/ Network Management - billm@pfsense.org - 0.9-4 - 2.0 - BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml - imspector.xml - http://files.pfsense.org/packages/amd64/8/All/ - sqlite3-3.7.12.1.tbz - imspector-0.9.tbz - imspector-0.9-amd64.pbi - /usr/ports/net-im/imspector - - - imspector-dev - imspector - IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. - http://www.imspector.org/ - Network Management marcellocoutinho@gmail.com 20111108 pkg v 0.3.1 2.0 BETA http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector-dev/imspector.xml + http://www.pfsense.com/packages/config/imspector/imspector.xml imspector.xml imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW http://e-sac.siteseguro.ws/packages/amd64/8/All/ -- cgit v1.2.3 From bbac1a3d26ad2aefc0ebdbc737577f30a4ca9d9e Mon Sep 17 00:00:00 2001 From: Phil Davis Date: Thu, 20 Feb 2014 18:44:10 -0800 Subject: APC status text typos --- config/apcupsd/apcupsd_mail.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/config/apcupsd/apcupsd_mail.php b/config/apcupsd/apcupsd_mail.php index 3b1e40be..c9462aac 100755 --- a/config/apcupsd/apcupsd_mail.php +++ b/config/apcupsd/apcupsd_mail.php @@ -35,10 +35,10 @@ global $config, $g; $apcstatus[killpower] = "UPS now committed to shut down"; $apcstatus[commfailure] = "Communications with UPS lost"; -$apcstatus[commok] = "Communciations with UPS restored"; +$apcstatus[commok] = "Communications with UPS restored"; $apcstatus[onbattery] = "Power failure. Running on UPS batteries"; $apcstatus[offbattery] = "Power has returned..."; -$apcstatus[failing] = "UPS battery power exhaused. Doing shutdown"; +$apcstatus[failing] = "UPS battery power exhausted. Doing shutdown"; $apcstatus[timeout] = "UPS battery runtime limit exceeded. Doing shutdown"; $apcstatus[loadlimit] = "UPS battery discharge limit reached. Doing shutdown"; $apcstatus[runlimit] = "UPS battery runtime percent reached. Doing shutdown"; @@ -93,4 +93,3 @@ if(!$mail->Send()) { } ?> - -- cgit v1.2.3 From cbae21bf5ec6d91f206c0a4977dca43257d43dcb Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Fri, 21 Feb 2014 10:09:57 -0500 Subject: Remove line as request by ermal "ermal added a note 27 minutes ago repo collab Please remove this line." exec("cd /var/db/pkg/ && pkg_delete `ls | grep vnstat`"); --- config/vnstat2/vnstat2.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/config/vnstat2/vnstat2.inc b/config/vnstat2/vnstat2.inc index 78259ea3..c37314c3 100644 --- a/config/vnstat2/vnstat2.inc +++ b/config/vnstat2/vnstat2.inc @@ -3,7 +3,6 @@ function vnstat_install_deinstall() { conf_mount_rw(); global $config; // Remove Vnstat package and files - exec("cd /var/db/pkg/ && pkg_delete `ls | grep vnstat`"); exec("rm -d -R /usr/local/www/vnstat2"); exec("rm -d -R /usr/local/www/vnstati"); exec("rm /usr/local/www/diag_vnstat.php"); -- cgit v1.2.3 From 2dc81505264000fcb7728225220c991f5162239b Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Fri, 21 Feb 2014 10:37:07 -0500 Subject: Move www files into additional files rename bin to www move files to additional files and remove from installation script. --- config/vnstat2/vnstat2.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config/vnstat2/vnstat2.xml b/config/vnstat2/vnstat2.xml index 18d3f911..9bca9726 100644 --- a/config/vnstat2/vnstat2.xml +++ b/config/vnstat2/vnstat2.xml @@ -61,24 +61,24 @@ http://www.pfsense.com/packages/config/vnstat2/vnstat2.sh - /usr/local/pkg/vnstat2/ + /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/bin/diag_vnstat.abc + http://www.pfsense.com/packages/config/vnstat2/www/diag_vnstat.php - /usr/local/pkg/vnstat2/ + /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/bin/diag_vnstat2.abc + http://www.pfsense.com/packages/config/vnstat2/www/diag_vnstat2.php - /usr/local/pkg/vnstat2/ + /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/bin/vnstat2_img.abc + http://www.pfsense.com/packages/config/vnstat2/www/vnstat2_img.php - /usr/local/pkg/vnstat2/ + /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/bin/vnstati.abc + http://www.pfsense.com/packages/config/vnstat2/www/vnstati.php /usr/local/pkg/vnstat2/vnstat_php_frontend/lang/ -- cgit v1.2.3 From 324c82e37900b3681c6bcff4df91bfc22e8dc493 Mon Sep 17 00:00:00 2001 From: Bryan Paradis Date: Fri, 21 Feb 2014 10:45:02 -0500 Subject: Moved php files into additional files bin folder renamed to www abc files renamed to php removed delete lines in vnstat2.inc for php files removed install lines in vnstat2.inc for php files --- config/vnstat2/bin/diag_vnstat.abc | 115 ------------------------------ config/vnstat2/bin/diag_vnstat2.abc | 137 ------------------------------------ config/vnstat2/bin/vnstat2_img.abc | 6 -- config/vnstat2/bin/vnstati.abc | 17 ----- config/vnstat2/vnstat2.inc | 9 --- config/vnstat2/www/diag_vnstat.php | 115 ++++++++++++++++++++++++++++++ config/vnstat2/www/diag_vnstat2.php | 137 ++++++++++++++++++++++++++++++++++++ config/vnstat2/www/vnstat2_img.php | 6 ++ config/vnstat2/www/vnstati.php | 17 +++++ 9 files changed, 275 insertions(+), 284 deletions(-) delete mode 100644 config/vnstat2/bin/diag_vnstat.abc delete mode 100644 config/vnstat2/bin/diag_vnstat2.abc delete mode 100644 config/vnstat2/bin/vnstat2_img.abc delete mode 100644 config/vnstat2/bin/vnstati.abc create mode 100644 config/vnstat2/www/diag_vnstat.php create mode 100644 config/vnstat2/www/diag_vnstat2.php create mode 100644 config/vnstat2/www/vnstat2_img.php create mode 100644 config/vnstat2/www/vnstati.php diff --git a/config/vnstat2/bin/diag_vnstat.abc b/config/vnstat2/bin/diag_vnstat.abc deleted file mode 100644 index afef3849..00000000 --- a/config/vnstat2/bin/diag_vnstat.abc +++ /dev/null @@ -1,115 +0,0 @@ -"; - echo $text; - exit; -} - -include("head.inc"); - -?> - - - -
    -{$pgtitle}

    "; - echo "Go Back
    "; - if($savemsg) { - echo "
    "; - print_info_box($savemsg); - echo "
    "; - } - if ($input_errors) - print_input_errors($input_errors); -?> - - - - -
    - - - - -
    -
    - - -
    -
    - -
    -
    -
    - -
    - - - - diff --git a/config/vnstat2/bin/diag_vnstat2.abc b/config/vnstat2/bin/diag_vnstat2.abc deleted file mode 100644 index ec19a0b2..00000000 --- a/config/vnstat2/bin/diag_vnstat2.abc +++ /dev/null @@ -1,137 +0,0 @@ - - -
    - -
    -{$pgtitle}

    "; - echo "Go Back
    "; - if($savemsg) { - echo "
    "; - print_info_box($savemsg); - echo "
    "; - } - if ($input_errors) - print_input_errors($input_errors); -?> - - - -

    - - - - -
    - - - - -
    -
    - - -
    -
    - -
    -
    -
    - -
    -

    - - - diff --git a/config/vnstat2/bin/vnstat2_img.abc b/config/vnstat2/bin/vnstat2_img.abc deleted file mode 100644 index 85644309..00000000 --- a/config/vnstat2/bin/vnstat2_img.abc +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/config/vnstat2/bin/vnstati.abc b/config/vnstat2/bin/vnstati.abc deleted file mode 100644 index e5ddcd21..00000000 --- a/config/vnstat2/bin/vnstati.abc +++ /dev/null @@ -1,17 +0,0 @@ -Go Back
    "; -echo "

    {$pgtitle}

    "; -?> -

    -

    -

    -

    - - diff --git a/config/vnstat2/vnstat2.inc b/config/vnstat2/vnstat2.inc index c37314c3..9a684aa1 100644 --- a/config/vnstat2/vnstat2.inc +++ b/config/vnstat2/vnstat2.inc @@ -5,10 +5,6 @@ function vnstat_install_deinstall() { // Remove Vnstat package and files exec("rm -d -R /usr/local/www/vnstat2"); exec("rm -d -R /usr/local/www/vnstati"); - exec("rm /usr/local/www/diag_vnstat.php"); - exec("rm /usr/local/www/diag_vnstat2.php"); - exec("rm /usr/local/www/vnstati.php"); - exec("rm /usr/local/www/vnstat2_img.php"); exec("rm -d -R /usr/local/pkg/vnstat2"); exec("rm /usr/local/etc/vnstat.conf"); @@ -153,11 +149,6 @@ function vnstat_install_config() { // Check for pbi install and arch type then create symlinks if (file_exists('/usr/pbi/vnstat-i386')) { exec("ln -s /usr/local/etc/vnstat.conf /usr/pbi/vnstat-i386/etc/vnstat.conf"); } if (file_exists('/usr/pbi/vnstat-amd64')) { exec("ln -s /usr/local/etc/vnstat.conf /usr/pbi/vnstat-amd64/etc/vnstat.conf"); } -// Copy files to web dir - exec("[ ! -f /usr/local/www/diag_vnstat2.php ] && cp /usr/local/pkg/vnstat2/diag_vnstat2.abc /usr/local/www/diag_vnstat2.php"); - exec("[ ! -f /usr/local/www/diag_vnstat.php ] && cp /usr/local/pkg/vnstat2/diag_vnstat.abc /usr/local/www/diag_vnstat.php"); - exec("[ ! -f /usr/local/www/vnstati.php ] && cp /usr/local/pkg/vnstat2/vnstati.abc /usr/local/www/vnstati.php"); - exec("[ ! -f /usr/local/www/vnstat2_img.php ] && cp /usr/local/pkg/vnstat2/vnstat2_img.abc /usr/local/www/vnstat2_img.php"); // Add MonthRotate value to config.xml and write /usr/local/etc/vnstat.conf $no_monthrotate = $config['installedpackages']['vnstat2']['config'][0]['monthrotate']; if ($no_monthrotate == ""){ diff --git a/config/vnstat2/www/diag_vnstat.php b/config/vnstat2/www/diag_vnstat.php new file mode 100644 index 00000000..afef3849 --- /dev/null +++ b/config/vnstat2/www/diag_vnstat.php @@ -0,0 +1,115 @@ +"; + echo $text; + exit; +} + +include("head.inc"); + +?> + + + +
    +{$pgtitle}

    "; + echo "Go Back
    "; + if($savemsg) { + echo "
    "; + print_info_box($savemsg); + echo "
    "; + } + if ($input_errors) + print_input_errors($input_errors); +?> + + + + +
    + + + + +
    +
    + + +
    +
    + +
    +
    +
    + +
    + + + + diff --git a/config/vnstat2/www/diag_vnstat2.php b/config/vnstat2/www/diag_vnstat2.php new file mode 100644 index 00000000..ec19a0b2 --- /dev/null +++ b/config/vnstat2/www/diag_vnstat2.php @@ -0,0 +1,137 @@ + + +
    + +
    +{$pgtitle}

    "; + echo "Go Back
    "; + if($savemsg) { + echo "
    "; + print_info_box($savemsg); + echo "
    "; + } + if ($input_errors) + print_input_errors($input_errors); +?> + + + +

    + + + + +
    + + + + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +

    + + + diff --git a/config/vnstat2/www/vnstat2_img.php b/config/vnstat2/www/vnstat2_img.php new file mode 100644 index 00000000..85644309 --- /dev/null +++ b/config/vnstat2/www/vnstat2_img.php @@ -0,0 +1,6 @@ + diff --git a/config/vnstat2/www/vnstati.php b/config/vnstat2/www/vnstati.php new file mode 100644 index 00000000..e5ddcd21 --- /dev/null +++ b/config/vnstat2/www/vnstati.php @@ -0,0 +1,17 @@ +Go Back
    "; +echo "

    {$pgtitle}

    "; +?> +

    +

    +

    +

    + + -- cgit v1.2.3 From 4d68da5d12cc272337f38d338913f66a8c703898 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 21 Feb 2014 14:44:36 -0500 Subject: Remove use of $_GET wherever possible for security. --- config/suricata/suricata_interfaces.php | 6 ++++++ config/suricata/suricata_interfaces_edit.php | 27 ++++++++------------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/config/suricata/suricata_interfaces.php b/config/suricata/suricata_interfaces.php index 26ccada3..364abe62 100644 --- a/config/suricata/suricata_interfaces.php +++ b/config/suricata/suricata_interfaces.php @@ -449,6 +449,12 @@ if ($pfsense_stable == 'yes') diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php index b1e05f99..20deb885 100644 --- a/config/suricata/suricata_interfaces_edit.php +++ b/config/suricata/suricata_interfaces_edit.php @@ -40,7 +40,7 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_rule = &$config['installedpackages']['suricata']['rule']; -if ($_GET['id'] && is_numeric($_POST['id'])); +if ($_GET['id'] && is_numeric($_GET['id'])); $id = htmlspecialchars($_GET['id'], ENT_QUOTES | ENT_HTML401); if ($_POST['id'] && is_numeric($_POST['id'])) $id = $_POST['id']; diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php index 94e43fc7..428bc9be 100644 --- a/config/suricata/suricata_rules.php +++ b/config/suricata/suricata_rules.php @@ -40,7 +40,8 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_rule = &$config['installedpackages']['suricata']['rule']; -$id = $_GET['id']; +if (is_numeric($_GET['id'])) + $id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; if (is_null($id)) { @@ -108,7 +109,7 @@ $etpro = $config['installedpackages']['suricata']['config'][0]['enable_etpro_rul $categories = explode("||", $pconfig['rulesets']); if ($_GET['openruleset']) - $currentruleset = $_GET['openruleset']; + $currentruleset = htmlspecialchars($_GET['openruleset'], ENT_QUOTES | ENT_HTML401); else if ($_POST['openruleset']) $currentruleset = $_POST['openruleset']; else -- cgit v1.2.3 From 0abcaed0af51b255a10f29a4583c76f3a598e24f Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sat, 22 Feb 2014 00:35:40 -0500 Subject: Fix typo in base rules filename. --- config/suricata/suricata_interfaces_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php index 74344072..5f644a55 100644 --- a/config/suricata/suricata_interfaces_edit.php +++ b/config/suricata/suricata_interfaces_edit.php @@ -263,7 +263,7 @@ if ($_POST["Submit"]) { $natent['libhtp_policy']['item'][] = $default; // Enable the basic default rules for the interface - $natent['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events"; + $natent['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events.rules"; // Adding a new interface, so set flag to build new rules $rebuild_rules = true; -- cgit v1.2.3 From dba0780dfe6de88f84f7c78a64a8f3eb60fecee3 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sat, 22 Feb 2014 11:16:57 -0500 Subject: Fix it so all ET-Open rules files get correct prefix. --- config/suricata/suricata_check_for_rule_updates.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/config/suricata/suricata_check_for_rule_updates.php b/config/suricata/suricata_check_for_rule_updates.php index 9aa14f6e..280add7a 100644 --- a/config/suricata/suricata_check_for_rule_updates.php +++ b/config/suricata/suricata_check_for_rule_updates.php @@ -431,17 +431,27 @@ if ($emergingthreats == 'on') { array_map('unlink', glob("{$suricatadir}rules/{$eto_prefix}*ips.txt")); array_map('unlink', glob("{$suricatadir}rules/{$etpro_prefix}*ips.txt")); - // The code below renames ET-Pro files with a prefix, so we + // The code below renames ET files with a prefix, so we // skip renaming the Suricata default events rule files - // that are also bundled in the ET-Pro rules. + // that are also bundled in the ET rules. $default_rules = array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules" ); $files = glob("{$tmpfname}/emerging/rules/*.rules"); + // Determine the correct prefix to use based on which + // Emerging Threats rules package is enabled. + if ($etpro == "on") + $prefix = ET_PRO_FILE_PREFIX; + else + $prefix = ET_OPEN_FILE_PREFIX; foreach ($files as $file) { $newfile = basename($file); - if ($etpro == "on" && !in_array($newfile, $default_rules)) - @copy($file, "{$suricatadir}rules/" . ET_PRO_FILE_PREFIX . "{$newfile}"); - else + if (in_array($newfile, $default_rules)) @copy($file, "{$suricatadir}rules/{$newfile}"); + else { + if (strpos($newfile, $prefix) === FALSE) + @copy($file, "{$suricatadir}rules/{$prefix}{$newfile}"); + else + @copy($file, "{$suricatadir}rules/{$newfile}"); + } } /* IP lists for Emerging Threats rules */ $files = glob("{$tmpfname}/emerging/rules/*ips.txt"); -- cgit v1.2.3 From f6a71d1bd31e4f3ce7cbdba72abba745271834a6 Mon Sep 17 00:00:00 2001 From: Warren Baker Date: Sun, 23 Feb 2014 19:37:29 +0200 Subject: Remove deprecated option --- config/unbound/unbound_advanced.xml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/config/unbound/unbound_advanced.xml b/config/unbound/unbound_advanced.xml index 2da5b505..f9914a22 100644 --- a/config/unbound/unbound_advanced.xml +++ b/config/unbound/unbound_advanced.xml @@ -262,16 +262,7 @@ TTL for Host cache entries infra_host_ttl - Time to live for entries in the host cache. The host cache contains roundtrip timing and EDNS support information. The default is 900 seconds. - input - 5 - 900 - - - - TTL for lame delegation - infra_lame_ttl - Time to live for when a delegation is considered to be lame. The default is 900 seconds. + Time to live for entries in the host cache. The host cache contains roundtrip timing, lameness and EDNS support information. The default is 900 seconds. input 5 900 -- cgit v1.2.3 From 3c4423a142e8a46f0eda20e9ff1675db818f7090 Mon Sep 17 00:00:00 2001 From: Warren Baker Date: Sun, 23 Feb 2014 19:37:53 +0200 Subject: Add forwards as a configuration option instead of executing it on the command line --- config/unbound/unbound.inc | 148 ++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 90 deletions(-) diff --git a/config/unbound/unbound.inc b/config/unbound/unbound.inc index 6e55d577..e82c6d64 100644 --- a/config/unbound/unbound.inc +++ b/config/unbound/unbound.inc @@ -124,10 +124,8 @@ function unbound_rc_setup() { @@ -164,37 +162,6 @@ function unbound_control($action) { $cache_dumpfile = "/var/tmp/unbound_cache"; switch ($action) { - case "forward": - /* Dont utilize forward cmd if Unbound is doing DNS queries directly - * XXX: We could make this an option to then make pfSense use Unbound - * as the recursive nameserver instead of upstream ones(?) - */ - if ($unbound_config['forwarding_mode'] == "on") { - // Get configured DNS servers and add them as forwarders - if (!isset($config['system']['dnsallowoverride'])) { - $ns = array_unique(get_nameservers()); - foreach($ns as $nameserver) { - if($nameserver) - $dns_servers .= " $nameserver"; - } - } else { - $ns = array_unique(get_dns_servers()); - foreach($ns as $nameserver) { - if($nameserver) - $dns_servers .= " $nameserver"; - } - } - - if(is_service_running("unbound")) { - unbound_ctl_exec("forward $dns_servers"); - } else { - unbound_control("start"); - sleep(1); - unbound_control("forward"); - } - } - break; - case "start": //Start unbound if($unbound_config['enable'] == "on") { @@ -206,7 +173,6 @@ function unbound_control($action) { mwexec("/bin/ln -s /var/run/unbound.pid /var/run/dnsmasq.pid"); } mwexec_bg("/usr/local/bin/unbound_monitor.sh"); - fetch_root_hints(); } break; @@ -456,7 +422,7 @@ function unbound_resync_config() { } // Private-address support for DNS Rebinding - if($unbound_config['private_address'] == "on") { + if ($unbound_config['private_address'] == "on") { $pvt_addr = << 1) { + if ($numprocs > 1) { $optimization['number_threads'] = "num-threads: {$numprocs}"; $optimize_num = pow(2,floor(log($numprocs,2))); } else { @@ -669,32 +665,6 @@ function unbound_optimization() { return $optimization; } -function fetch_root_hints() { - - $destination_file = UNBOUND_BASE . "/etc/unbound/root.hints"; - if (filesize($destination_file) == 0 ) { - conf_mount_rw(); - $fout = fopen($destination_file, "w"); - $url = "ftp://ftp.internic.net/domain/named.cache"; - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, '25'); - $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); - $data = curl_exec($ch); - curl_close($ch); - - fwrite($fout, $data); - fclose($fout); - conf_mount_ro(); - - return ($http_code == 200) ? true : $http_code; - } else { - return false; - } -} - function unbound_validate($post, $type=null) { global $config, $input_errors; @@ -746,19 +716,17 @@ function unbound_reconfigure() { $unbound_config = $config['installedpackages']['unbound']['config'][0]; if ($unbound_config['enable'] != "on") { - if(is_service_running("unbound")) + if (is_service_running("unbound")) unbound_control("termstop"); } else { - if(is_service_running("unbound")) { + if (is_service_running("unbound")) { unbound_control("dump_cache"); unbound_control("termstop"); } unbound_resync_config(); unbound_control("start"); - if(is_service_running("unbound")) { - unbound_control("forward"); + if (is_service_running("unbound")) unbound_control("restore_cache"); - } } } -- cgit v1.2.3 From e1df5bd9a2bcdffb85f74a4f80355b2e88027889 Mon Sep 17 00:00:00 2001 From: Warren Baker Date: Sun, 23 Feb 2014 19:40:45 +0200 Subject: Unbound version bump to make use of forward-zone instead --- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg_config.8.xml b/pkg_config.8.xml index f6f8f8af..4fbbbe78 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -1583,7 +1583,7 @@ Unbound is a validating, recursive, and caching DNS resolver. This package is a drop in replacement for Services: DNS Forwarder and also supports DNSSEC extensions. Once installed please configure the Unbound service by visiting Services: Unbound DNS. http://www.unbound.net/ Services - 1.4.21_1 + 1.4.21_2 Alpha warren@decoy.co.za 2.0 diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 8b1e3d02..eb07225c 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -1570,7 +1570,7 @@ Unbound is a validating, recursive, and caching DNS resolver. This package is a drop in replacement for Services: DNS Forwarder and also supports DNSSEC extensions. Once installed please configure the Unbound service by visiting Services: Unbound DNS. http://www.unbound.net/ Services - 1.4.21_1 + 1.4.21_2 Alpha warren@decoy.co.za 2.0 -- cgit v1.2.3 From 09b882f22f8456f50242febe3f16f2fa9bd7d591 Mon Sep 17 00:00:00 2001 From: Warren Baker Date: Sun, 23 Feb 2014 20:10:45 +0200 Subject: Add a safety belt in case we get no values returned --- config/unbound/unbound.inc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/config/unbound/unbound.inc b/config/unbound/unbound.inc index e82c6d64..fb077194 100644 --- a/config/unbound/unbound.inc +++ b/config/unbound/unbound.inc @@ -543,11 +543,6 @@ EOD; // Set up forward-zones if configured if ($unbound_config['forwarding_mode'] == "on") { - $unbound_conf .=<< Date: Sun, 23 Feb 2014 20:31:39 +0200 Subject: If this is enabled then get_nameservers() should be used --- config/unbound/unbound.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/unbound/unbound.inc b/config/unbound/unbound.inc index fb077194..9216b94e 100644 --- a/config/unbound/unbound.inc +++ b/config/unbound/unbound.inc @@ -544,7 +544,7 @@ EOD; // Set up forward-zones if configured if ($unbound_config['forwarding_mode'] == "on") { $dnsservers = array(); - if (!isset($config['system']['dnsallowoverride'])) { + if (isset($config['system']['dnsallowoverride'])) { $ns = array_unique(get_nameservers()); foreach($ns as $nameserver) { if ($nameserver) -- cgit v1.2.3 From 5224a6c3f83f0d980f106a589830ffcfab30821d Mon Sep 17 00:00:00 2001 From: crocomo Date: Sun, 23 Feb 2014 20:21:53 +0100 Subject: Typo s/reveser/reverse --- config/bind/bind_zones.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/bind/bind_zones.xml b/config/bind/bind_zones.xml index be4da9cf..3506df63 100644 --- a/config/bind/bind_zones.xml +++ b/config/bind/bind_zones.xml @@ -126,7 +126,7 @@ name For reverse zones, include zone ip in reverse order or following your provider instructions.(Ex: 1.168.192)
    - IN-ADDR.ARPA will be automaticaly included on conf files when reveser zone option is checked.]]>
    + IN-ADDR.ARPA will be automaticaly included on conf files when reverse zone option is checked.]]> input
    -- cgit v1.2.3 From 9b93a51db647450f975dfb60ebab1e7e4d5a6951 Mon Sep 17 00:00:00 2001 From: crocomo Date: Sun, 23 Feb 2014 20:23:27 +0100 Subject: Typo s/bloc/block --- config/bind/bind_acls.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/bind/bind_acls.xml b/config/bind/bind_acls.xml index b8d10158..dbd9e29d 100644 --- a/config/bind/bind_acls.xml +++ b/config/bind/bind_acls.xml @@ -108,7 +108,7 @@ input - Enter IP or range bloc network. + Enter IP or range block network. Leave blank to allow All none rowhelper -- cgit v1.2.3 From 2f3f6ecaa9ef5cae9160d1071a80f4f26938d9ed Mon Sep 17 00:00:00 2001 From: crocomo Date: Sun, 23 Feb 2014 20:40:03 +0100 Subject: Fix logging facilities Include 'named' in the list of $separatelogfacilities in system.inc so that messages ONLY show up in resolver.log (and not system.log as well). --- config/bind/bind.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/bind/bind.inc b/config/bind/bind.inc index 40d626db..1818b225 100644 --- a/config/bind/bind.inc +++ b/config/bind/bind.inc @@ -209,8 +209,9 @@ EOD; $restart_syslog=0; foreach ($syslog_files as $syslog_file){ $syslog_file_data=file_get_contents($syslog_file); - if (!preg_match("/dnsmasq,named,filterdns/",$syslog_file_data)){ + if ( !preg_match("/dnsmasq,named,filterdns/",$syslog_file_data) || !preg_match("/'dnsmasq','named','filterdns'/",$syslog_file_data) ) { $syslog_file_data=preg_replace("/dnsmasq,filterdns/","dnsmasq,named,filterdns",$syslog_file_data); + $syslog_file_data=preg_replace("/'dnsmasq','filterdns'/","'dnsmasq','named','filterdns'",$syslog_file_data); file_put_contents($syslog_file,$syslog_file_data); $restart_syslog++; } -- cgit v1.2.3 From ec8c498ed040d1f02617be21c452921622ab5675 Mon Sep 17 00:00:00 2001 From: Warren Baker Date: Sun, 23 Feb 2014 21:44:55 +0200 Subject: no longer needed --- config/unbound/unbound.inc | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/unbound/unbound.inc b/config/unbound/unbound.inc index 9216b94e..d8520390 100644 --- a/config/unbound/unbound.inc +++ b/config/unbound/unbound.inc @@ -701,8 +701,6 @@ function unbound_validate($post, $type=null) { $input_errors[] = "You must enter a valid number in 'Minimum TTL for RRsets and messages'."; if(!is_numeric($post['infra_host_ttl'])) $input_errors[] = "You must enter a valid number in 'TTL for Host cache entries'."; - if(!is_numeric($post['infra_lame_ttl'])) - $input_errors[] = "You must enter a valid number in 'TTL for lame delegation'."; if(!is_numeric($post['infra_cache_numhosts'])) $input_errors[] = "You must enter a valid number in 'Number of Hosts to cache'."; -- cgit v1.2.3 From 1798583d0e757c5485841ab8e374dd3ce5656de2 Mon Sep 17 00:00:00 2001 From: crocomo Date: Sun, 23 Feb 2014 23:12:13 +0100 Subject: Fix indentation of custom option --- config/bind/bind.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/bind/bind.inc b/config/bind/bind.inc index 1818b225..3aec31ab 100644 --- a/config/bind/bind.inc +++ b/config/bind/bind.inc @@ -200,8 +200,8 @@ EOD; if ($hide_version == on) $bind_conf .="\t\tversion \"N/A\";\n"; - $bind_conf .="\t\t$custom_options\n"; - $bind_conf .= "\t};\n\n"; + $bind_conf .= preg_replace("/^/m","\t\t",$custom_options); + $bind_conf .= "\n\t};\n\n"; if ($bind_logging == on){ //check if bind is included on syslog -- cgit v1.2.3 From c1717f2d9752d19c54e86e1bcb6cb81f5b253710 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 24 Feb 2014 00:45:10 -0500 Subject: Bug fixes and replace $_GET with $_POST where possible. --- config/suricata/suricata_alerts.php | 12 +- config/suricata/suricata_app_parsers.php | 145 +++++++++----- config/suricata/suricata_download_updates.php | 18 +- config/suricata/suricata_flow_stream.php | 144 +++++++++----- config/suricata/suricata_global.php | 12 +- config/suricata/suricata_import_aliases.php | 191 ++++-------------- config/suricata/suricata_interfaces_edit.php | 43 ++-- config/suricata/suricata_libhtp_policy_engine.php | 12 +- config/suricata/suricata_os_policy_engine.php | 12 +- config/suricata/suricata_rules.php | 228 +++++++++------------- config/suricata/suricata_rulesets.php | 60 ++---- 11 files changed, 408 insertions(+), 469 deletions(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index 2f23260b..3fc39f36 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -208,9 +208,11 @@ if (($_POST['addsuppress_srcip'] || $_POST['addsuppress_dstip'] || $_POST['addsu exit; } - /* Add the new entry to the Suppress List */ - if (suricata_add_supplist_entry($suppress)) + /* Add the new entry to the Suppress List and signal Suricata to reload config */ + if (suricata_add_supplist_entry($suppress)) { + suricata_reload_config($a_instance[$instanceid]); $savemsg = $success; + } else $input_errors[] = gettext("Suppress List '{$a_instance[$instanceid]['suppresslistname']}' is defined for this interface, but it could not be found!"); } @@ -547,11 +549,11 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo {$alert_priority} {$alert_proto} {$alert_class} - {$alert_ip_src} + {$alert_ip_src} {$alert_src_p} - {$alert_ip_dst} + {$alert_ip_dst} {$alert_dst_p} - {$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link} + {$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link} {$alert_descr} \n"; diff --git a/config/suricata/suricata_app_parsers.php b/config/suricata/suricata_app_parsers.php index 0be45c32..1706f04a 100644 --- a/config/suricata/suricata_app_parsers.php +++ b/config/suricata/suricata_app_parsers.php @@ -28,7 +28,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ - require_once("guiconfig.inc"); require_once("/usr/local/pkg/suricata/suricata.inc"); @@ -37,10 +36,8 @@ global $g, $rebuild_rules; $id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; -if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); - exit; -} +if (is_null($id)) + $id = 0; if (!is_array($config['installedpackages']['suricata'])) $config['installedpackages']['suricata'] = array(); @@ -51,10 +48,21 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) if (!is_array($config['installedpackages']['suricata']['rule'][$id]['libhtp_policy']['item'])) $config['installedpackages']['suricata']['rule'][$id]['libhtp_policy']['item'] = array(); +// Initialize required array variables as necessary +if (!is_array($config['aliases']['alias'])) + $config['aliases']['alias'] = array(); +$a_aliases = $config['aliases']['alias']; + $a_nat = &$config['installedpackages']['suricata']['rule']; $libhtp_engine_next_id = count($a_nat[$id]['libhtp_policy']['item']); +// Build a lookup array of currently used engine 'bind_to' Aliases +// so we can screen matching Alias names from the list. +$used = array(); +foreach ($a_nat[$id]['host_os_policy']['item'] as $v) + $used[$v['bind_to']] = true; + $pconfig = array(); if (isset($id) && $a_nat[$id]) { /* Get current values from config for page form fields */ @@ -78,29 +86,32 @@ if (isset($id) && $a_nat[$id]) { $pconfig['libhtp_policy'] = $a_nat[$id]['libhtp_policy']; } -// Check for returned "selected alias" if action is import -if ($_GET['act'] == "import" && isset($_GET['varname']) && !empty($_GET['varvalue'])) { - $pconfig[$_GET['varname']] = $_GET['varvalue']; +// Check for "import alias mode" and set flag if TRUE +if ($_POST['import_alias']) { + $importalias = true; + $title = "HTTP Server Policy"; } +else + $importalias = false; -if ($_GET['act'] && isset($_GET['eng_id'])) { - +if ($_POST['add_libhtp_policy']) { + header("Location: suricata_libhtp_policy_engine.php?id={$id}&eng_id={$libhtp_engine_next_id}"); + exit; +} +elseif ($_POST['del_libhtp_policy']) { $natent = array(); $natent = $pconfig; - if ($_GET['act'] == "del_libhtp_policy") - unset($natent['libhtp_policy']['item'][$_GET['eng_id']]); - + if ($_POST['eng_id'] != "") { + unset($natent['libhtp_policy']['item'][$_POST['eng_id']]); + $pconfig = $natent; + } if (isset($id) && $a_nat[$id]) { $a_nat[$id] = $natent; write_config(); } - - header("Location: /suricata/suricata_app_parsers.php?id=$id"); - exit; } - -if ($_POST['ResetAll']) { +elseif ($_POST['ResetAll']) { /* Reset all the settings to defaults */ $pconfig['asn1_max_frames'] = "256"; @@ -108,7 +119,57 @@ if ($_POST['ResetAll']) { /* Log a message at the top of the page to inform the user */ $savemsg = gettext("All flow and stream settings have been reset to their defaults."); } -elseif ($_POST['Submit']) { +elseif ($_POST['save_import_alias']) { + $engine = array( "name" => "", "bind_to" => "", "personality" => "IDS", + "request-body-limit" => "4096", "response-body-limit" => "4096", + "double-decode-path" => "no", "double-decode-query" => "no" ); + + // See if anything was checked to import + if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) > 0) { + foreach ($_POST['aliastoimport'] as $item) { + $engine['name'] = strtolower($item); + $engine['bind_to'] = $item; + $a_nat[$id]['libhtp_policy']['item'][] = $engine; + } + } + else { + $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); + $importalias = true; + } + + // if no errors, write new entry to conf + if (!$input_errors) { + // Reorder the engine array to ensure the + // 'bind_to=all' entry is at the bottom if + // the array contains more than one entry. + if (count($a_nat[$id]['libhtp_policy']['item']) > 1) { + $i = -1; + foreach ($a_nat[$id]['libhtp_policy']['item'] as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } + } + // Only relocate the entry if we + // found it, and it's not already + // at the end. + if ($i > -1 && ($i < (count($a_nat[$id]['libhtp_policy']['item']) - 1))) { + $tmp = $a_nat[$id]['libhtp_policy']['item'][$i]; + unset($a_nat[$id]['libhtp_policy']['item'][$i]); + $a_nat[$id]['libhtp_policy']['item'][] = $tmp; + } + $pconfig['libhtp_policy']['item'] = $a_nat[$id]['libhtp_policy']['item']; + } + + // Write the new engine array to config file + write_config(); + $importalias = false; + } +} +elseif ($_POST['cancel_import_alias']) { + $importalias = false; +} +elseif ($_POST['save']) { $natent = array(); $natent = $pconfig; @@ -149,29 +210,19 @@ include_once("head.inc"); ?> - -' . $pgtitle . '

    ';} - - - /* Display Alert message */ - + - - - -
    + + +
    + + + + + @@ -231,11 +287,9 @@ include_once("head.inc"); - @@ -247,8 +301,8 @@ include_once("head.inc"); "> "all") : ?> - - ">
    - "> - - "/> + ">
      - "> -      +     
    + + +
    diff --git a/config/suricata/suricata_download_updates.php b/config/suricata/suricata_download_updates.php index ecfd5f8b..200bc834 100644 --- a/config/suricata/suricata_download_updates.php +++ b/config/suricata/suricata_download_updates.php @@ -91,6 +91,9 @@ if ($_POST['view']&& $suricata_rules_upd_log_chk == 'yes') { $input_errors[] = gettext("Unable to read log file: {$suricata_rules_upd_log}"); } +if ($_POST['hide']) + $contents = ""; + $pgtitle = gettext("Suricata: Update Rules Set Files"); include_once("head.inc"); ?> @@ -174,15 +177,20 @@ include_once("head.inc");
    + + " name="hide" id="hide" class="formbtn" + title=""/> + " name="view" id="view" class="formbtn" - title=""/> -            + title=""/> + +          " name="clear" id="clear" class="formbtn" - title="" onClick="return confirm('Are you sure?\nOK to confirm, or CANCEL to quit');"/> + title="" onClick="return confirm('Are you sure?\nOK to confirm, or CANCEL to quit');"/>

    -    
    +




    @@ -201,7 +209,7 @@ include_once("head.inc"); -

    +
      " . gettext(" and ") . "" . gettext("EmergingThreats.net") . "" . diff --git a/config/suricata/suricata_flow_stream.php b/config/suricata/suricata_flow_stream.php index 3a677d3a..6d5134c3 100644 --- a/config/suricata/suricata_flow_stream.php +++ b/config/suricata/suricata_flow_stream.php @@ -28,7 +28,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ - require_once("guiconfig.inc"); require_once("/usr/local/pkg/suricata/suricata.inc"); @@ -37,16 +36,19 @@ global $g, $rebuild_rules; $id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; -if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); - exit; -} +if (is_null($id)) + $id=0; if (!is_array($config['installedpackages']['suricata'])) $config['installedpackages']['suricata'] = array(); if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); +// Initialize required array variables as necessary +if (!is_array($config['aliases']['alias'])) + $config['aliases']['alias'] = array(); +$a_aliases = $config['aliases']['alias']; + // Initialize Host-OS Policy engine arrays if necessary if (!is_array($config['installedpackages']['suricata']['rule'][$id]['host_os_policy']['item'])) $config['installedpackages']['suricata']['rule'][$id]['host_os_policy']['item'] = array(); @@ -55,6 +57,12 @@ $a_nat = &$config['installedpackages']['suricata']['rule']; $host_os_policy_engine_next_id = count($a_nat[$id]['host_os_policy']['item']); +// Build a lookup array of currently used engine 'bind_to' Aliases +// so we can screen matching Alias names from the list. +$used = array(); +foreach ($a_nat[$id]['host_os_policy']['item'] as $v) + $used[$v['bind_to']] = true; + $pconfig = array(); if (isset($id) && $a_nat[$id]) { /* Get current values from config for page form fields */ @@ -76,29 +84,32 @@ if (isset($id) && $a_nat[$id]) { $pconfig['host_os_policy'] = $a_nat[$id]['host_os_policy']; } -// Check for returned "selected alias" if action is import -if ($_GET['act'] == "import" && isset($_GET['varname']) && !empty($_GET['varvalue'])) { - $pconfig[$_GET['varname']] = $_GET['varvalue']; +// Check for "import alias mode" and set flag if TRUE +if ($_POST['import_alias']) { + $importalias = true; + $title = "Host Operating System Policy"; } +else + $importalias = false; -if ($_GET['act'] && isset($_GET['eng_id'])) { - +if ($_POST['add_os_policy']) { + header("Location: suricata_os_policy_engine.php?id={$id}&eng_id={$host_os_policy_engine_next_id}"); + exit; +} +elseif ($_POST['del_os_policy']) { $natent = array(); $natent = $pconfig; - if ($_GET['act'] == "del_host_os_policy") - unset($natent['host_os_policy']['item'][$_GET['eng_id']]); - + if ($_POST['eng_id'] != "") { + unset($natent['host_os_policy']['item'][$_POST['eng_id']]); + $pconfig = $natent; + } if (isset($id) && $a_nat[$id]) { $a_nat[$id] = $natent; write_config(); } - - header("Location: /suricata/suricata_flow_stream.php?id=$id"); - exit; } - -if ($_POST['ResetAll']) { +elseif ($_POST['ResetAll']) { /* Reset all the settings to defaults */ $pconfig['ip_max_frags'] = "65535"; @@ -143,7 +154,7 @@ if ($_POST['ResetAll']) { /* Log a message at the top of the page to inform the user */ $savemsg = gettext("All flow and stream settings have been reset to their defaults."); } -elseif ($_POST['Submit']) { +elseif ($_POST['save']) { $natent = array(); $natent = $pconfig; @@ -211,6 +222,54 @@ elseif ($_POST['Submit']) { exit; } } +elseif ($_POST['save_import_alias']) { + $engine = array( "name" => "", "bind_to" => "", "policy" => "bsd" ); + + // See if anything was checked to import + if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) > 0) { + foreach ($_POST['aliastoimport'] as $item) { + $engine['name'] = strtolower($item); + $engine['bind_to'] = $item; + $a_nat[$id]['host_os_policy']['item'][] = $engine; + } + } + else { + $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); + $importalias = true; + } + + // if no errors, write new entry to conf + if (!$input_errors) { + // Reorder the engine array to ensure the + // 'bind_to=all' entry is at the bottom if + // the array contains more than one entry. + if (count($a_nat[$id]['host_os_policy']['item']) > 1) { + $i = -1; + foreach ($a_nat[$id]['host_os_policy']['item'] as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } + } + // Only relocate the entry if we + // found it, and it's not already + // at the end. + if ($i > -1 && ($i < (count($a_nat[$id]['host_os_policy']['item']) - 1))) { + $tmp = $a_nat[$id]['host_os_policy']['item'][$i]; + unset($a_nat[$id]['host_os_policy']['item'][$i]); + $a_nat[$id]['host_os_policy']['item'][] = $tmp; + } + $pconfig['host_os_policy']['item'] = $a_nat[$id]['host_os_policy']['item']; + } + + // Write the new engine array to config file + write_config(); + $importalias = false; + } +} +elseif ($_POST['cancel_import_alias']) { + $importalias = false; +} $if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} - Flow and Stream"); @@ -218,29 +277,21 @@ include_once("head.inc"); ?> - -' . $pgtitle . '

    ';} - - - /* Display Alert message */ + - - +
    + + -
    + + + + + @@ -284,12 +340,10 @@ include_once("head.inc"); - + $v): ?> @@ -300,9 +354,9 @@ include_once("head.inc"); "> "all") : ?> - - "> + "/> "> @@ -314,7 +368,6 @@ include_once("head.inc"); - @@ -603,7 +656,7 @@ include_once("head.inc");
    - "> - - ">"/> + "/>
      - ">     
    + + +
    diff --git a/config/suricata/suricata_global.php b/config/suricata/suricata_global.php index f6b5d83d..3ba84736 100644 --- a/config/suricata/suricata_global.php +++ b/config/suricata/suricata_global.php @@ -28,7 +28,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ - require_once("guiconfig.inc"); require_once("/usr/local/pkg/suricata/suricata.inc"); @@ -59,7 +58,6 @@ if (empty($pconfig['suricataloglimitsize'])) // Set limit to 20% of slice that is unused */ $pconfig['suricataloglimitsize'] = round(exec('df -k /var | grep -v "Filesystem" | awk \'{print $4}\'') * .20 / 1024); - if ($_POST['autoruleupdatetime']) { if (!preg_match('/^([01]?[0-9]|2[0-3]):?([0-5][0-9])$/', $_POST['autoruleupdatetime'])) $input_errors[] = "Invalid Rule Update Start Time! Please supply a value in 24-hour format as 'HH:MM'."; @@ -73,7 +71,7 @@ if ($_POST['enable_etpro_rules'] == "on" && empty($_POST['etprocode'])) /* if no errors move foward with save */ if (!$input_errors) { - if ($_POST["Submit"]) { + if ($_POST["save"]) { $config['installedpackages']['suricata']['config'][0]['enable_vrt_rules'] = $_POST['enable_vrt_rules'] ? 'on' : 'off'; $config['installedpackages']['suricata']['config'][0]['snortcommunityrules'] = $_POST['snortcommunityrules'] ? 'on' : 'off'; @@ -388,14 +386,10 @@ if ($input_errors) >  - - - - + -   -   +   diff --git a/config/suricata/suricata_import_aliases.php b/config/suricata/suricata_import_aliases.php index c16ac65d..a93d2d64 100644 --- a/config/suricata/suricata_import_aliases.php +++ b/config/suricata/suricata_import_aliases.php @@ -1,5 +1,4 @@ system global variables array + $config --> global variable pointing to configuration information + $a_aliases --> $config['aliases']['alias'] array + $title --> title string for import alias engine type + $used --> array of currently used engine 'bind_to' Alias names -// Used to track if any selectable Aliases are found -$selectablealias = false; - -// Initialize required array variables as necessary -if (!is_array($config['aliases']['alias'])) - $config['aliases']['alias'] = array(); -$a_aliases = $config['aliases']['alias']; -if (!is_array($config['installedpackages']['suricata']['rule'])) - $config['installedpackages']['suricata']['rule'] = array(); - -// The $eng variable points to the specific Suricata config section -// engine we are importing values into. Initialize the config.xml -// array if necessary. -if (!is_array($config['installedpackages']['suricata']['rule'][$id][$eng]['item'])) - $config['installedpackages']['suricata']['rule'][$id][$eng]['item'] = array(); - -// Initialize a pointer to the Suricata config section engine we are -// importing values into. -$a_nat = &$config['installedpackages']['suricata']['rule'][$id][$eng]['item']; - -// Build a lookup array of currently used engine 'bind_to' Aliases -// so we can screen matching Alias names from the list. -$used = array(); -foreach ($a_nat as $v) - $used[$v['bind_to']] = true; - -// Construct the correct return URL based on the Suricata config section -// engine we were called with. This lets us return to the page we were -// called from. -switch ($eng) { - case "host_os_policy": - $returl = "/suricata/suricata_flow_stream.php"; - $multi_ip = true; - $title = "Host Operating System Policy"; - break; - case "libhtp_policy": - $returl = "/suricata/suricata_app_parsers.php"; - $multi_ip = true; - $title = "HTTP Server Policy"; - break; - default: - $returl = "/suricata/suricata_interface_edit"; - $multi_ip = true; - $title = ""; -} - -if ($_POST['cancel']) { - header("Location: {$returl}?id={$id}"); - exit; -} - -if ($_POST['save']) { - - // Define default engine configurations for each of the supported engines. - $def_os_policy = array( "name" => "", "bind_to" => "", "policy" => "bsd" ); - - $def_libhtp_policy = array( "name" => "default", "bind_to" => "all", "personality" => "IDS", - "request-body-limit" => 4096, "response-body-limit" => 4096, - "double-decode-path" => "no", "double-decode-query" => "no" ); - - // Figure out which engine type we are importing and set up default engine array - $engine = array(); - switch ($eng) { - case "host_os_policy": - $engine = $def_os_policy; - break; - case "libhtp_policy": - $engine = $def_libhtp_policy; - break; - default: - $engine = ""; - $input_errors[] = gettext("Invalid ENGINE TYPE passed in query string. Aborting operation."); - } - - // See if anything was checked to import - if (is_array($_POST['toimport']) && count($_POST['toimport']) > 0) { - foreach ($_POST['toimport'] as $item) { - $engine['name'] = strtolower($item); - $engine['bind_to'] = $item; - $a_nat[] = $engine; - } - } - else - $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); - - // if no errors, write new entry to conf - if (!$input_errors) { - // Reorder the engine array to ensure the - // 'bind_to=all' entry is at the bottom if - // the array contains more than one entry. - if (count($a_nat) > 1) { - $i = -1; - foreach ($a_nat as $f => $v) { - if ($v['bind_to'] == "all") { - $i = $f; - break; - } - } - // Only relocate the entry if we - // found it, and it's not already - // at the end. - if ($i > -1 && ($i < (count($a_nat) - 1))) { - $tmp = $a_nat[$i]; - unset($a_nat[$i]); - $a_nat[] = $tmp; - } - } - - // Now write the new engine array to conf and return - write_config(); - - header("Location: {$returl}?id={$id}"); - exit; - } -} - -$pgtitle = gettext("Suricata: Import Host/Network Alias for {$title}"); -include("head.inc"); + Information is returned from this page via the following form fields: + aliastoimport[] --> checkbox array containing selected alias names + save_import_alias --> Submit button for save operation and exit + cancel_import_alias --> Submit button to cancel operation and exit + ************************************************************************************/ ?> - - -
    - - - -
    - + +
    - - + @@ -723,15 +718,13 @@ include_once("head.inc"); - - - - @@ -849,11 +842,11 @@ function enable_change(enable_change) { document.iform.alertsystemlog.disabled = endis; document.iform.externallistname.disabled = endis; document.iform.homelistname.disabled = endis; - document.iform.whitelistname.disabled=endis; +// document.iform.whitelistname.disabled=endis; document.iform.suppresslistname.disabled = endis; document.iform.configpassthru.disabled = endis; document.iform.btnHomeNet.disabled=endis; - document.iform.btnWhitelist.disabled=endis; +// document.iform.btnWhitelist.disabled=endis; document.iform.btnSuppressList.disabled=endis; } diff --git a/config/suricata/suricata_libhtp_policy_engine.php b/config/suricata/suricata_libhtp_policy_engine.php index e7cf4135..ec00bbb2 100644 --- a/config/suricata/suricata_libhtp_policy_engine.php +++ b/config/suricata/suricata_libhtp_policy_engine.php @@ -43,6 +43,10 @@ if (is_null($id)) { header("Location: /suricata/suricata_interfaces.php"); exit; } +if (is_null($eng_id)) { + header("Location: /suricata/suricata_app_parsers.php?id={$id}"); + exit; +} if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); @@ -71,7 +75,7 @@ else { $pconfig['personality'] = "IDS"; } -if ($_POST['Cancel']) { +if ($_POST['cancel']) { header("Location: /suricata/suricata_app_parsers.php?id={$id}"); exit; } @@ -82,7 +86,7 @@ if ($_GET['act'] == "import") { $pconfig[$_GET['varname']] = $_GET['varvalue']; } -if ($_POST['Submit']) { +if ($_POST['save']) { /* Grab all the POST values and save in new temp array */ $engine = array(); @@ -279,10 +283,10 @@ if ($savemsg)

    +
    + @@ -221,7 +99,7 @@ include("head.inc"); - + - + - - -
    @@ -244,29 +122,26 @@ include("head.inc");
    - "/> + + "/>
    - "/>    - "/> + + "/>   + "/>
    +
    - - - - - + + diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php index 20deb885..6dbf9412 100644 --- a/config/suricata/suricata_interfaces_edit.php +++ b/config/suricata/suricata_interfaces_edit.php @@ -44,10 +44,8 @@ if ($_GET['id'] && is_numeric($_GET['id'])); $id = htmlspecialchars($_GET['id'], ENT_QUOTES | ENT_HTML401); if ($_POST['id'] && is_numeric($_POST['id'])) $id = $_POST['id']; -if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); - exit; -} +if (is_null($id)) + $id = 0; $pconfig = array(); if (empty($suricataglob['rule'][$id]['uuid'])) { @@ -128,7 +126,7 @@ if (empty($pconfig['max_pcap_log_size'])) if (empty($pconfig['max_pcap_log_files'])) $pconfig['max_pcap_log_files'] = "1000"; -if ($_POST["Submit"]) { +if ($_POST["save"]) { if (!$_POST['interface']) $input_errors[] = gettext("Choosing an Interface is mandatory!"); @@ -255,7 +253,7 @@ if ($_POST["Submit"]) { $natent['libhtp_policy']['item'][] = $default; // Enable the basic default rules for the interface - $natent['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events"; + $natent['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events.rules"; // Adding a new interface, so set flag to build new rules $rebuild_rules = true; @@ -301,19 +299,14 @@ include_once("head.inc"); - - -' . $pgtitle . '

    ';}?> - -
    " method="post" name="iform" id="iform"> @@ -654,6 +647,7 @@ include_once("head.inc"); "setting at default. Create an Alias for custom External Net settings."); ?>
    "/>
     " . + " . gettext("Please save your settings before you attempt to start Suricata."); ?>
      - ">      - ">
    diff --git a/config/suricata/suricata_os_policy_engine.php b/config/suricata/suricata_os_policy_engine.php index 61918e65..ae5a9348 100644 --- a/config/suricata/suricata_os_policy_engine.php +++ b/config/suricata/suricata_os_policy_engine.php @@ -43,6 +43,10 @@ if (is_null($id)) { header("Location: /suricata/suricata_interfaces.php"); exit; } +if (is_null($eng_id)) { + header("Location: /suricata/suricata_flow_stream.php?id={$id}"); + exit; +} if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); @@ -68,7 +72,7 @@ else { $pconfig['policy'] = "bsd"; } -if ($_POST['Cancel']) { +if ($_POST['cancel']) { header("Location: /suricata/suricata_flow_stream.php?id={$id}"); exit; } @@ -79,7 +83,7 @@ if ($_GET['act'] == "import") { $pconfig[$_GET['varname']] = $_GET['varvalue']; } -if ($_POST['Submit']) { +if ($_POST['save']) { /* Grab all the POST values and save in new temp array */ $engine = array(); @@ -225,10 +229,10 @@ if ($savemsg)   - ">      - "> diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php index 428bc9be..f6457f19 100644 --- a/config/suricata/suricata_rules.php +++ b/config/suricata/suricata_rules.php @@ -27,7 +27,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ - require_once("guiconfig.inc"); require_once("/usr/local/pkg/suricata/suricata.inc"); @@ -35,23 +34,26 @@ global $g, $rebuild_rules; $suricatadir = SURICATADIR; $rules_map = array(); +$pconfig = array(); if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_rule = &$config['installedpackages']['suricata']['rule']; -if (is_numeric($_GET['id'])) +log_error(print_r($_POST, true)); + +if ($_GET['id']) $id = $_GET['id']; -if (isset($_POST['id'])) +if ($_POST['id']) $id = $_POST['id']; if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); - exit; + $id = 0; } if (isset($id) && $a_rule[$id]) { $pconfig['interface'] = $a_rule[$id]['interface']; $pconfig['rulesets'] = $a_rule[$id]['rulesets']; + $pconfig['customrules'] = base64_decode($a_rule[$id]['customrules']); } function truncate($string, $length) { @@ -110,7 +112,9 @@ $categories = explode("||", $pconfig['rulesets']); if ($_GET['openruleset']) $currentruleset = htmlspecialchars($_GET['openruleset'], ENT_QUOTES | ENT_HTML401); -else if ($_POST['openruleset']) +elseif ($_POST['selectbox']) + $currentruleset = $_POST['selectbox']; +elseif ($_POST['openruleset']) $currentruleset = $_POST['openruleset']; else $currentruleset = $categories[0]; @@ -147,13 +151,11 @@ if ($currentruleset != 'custom.rules') { $enablesid = suricata_load_sid_mods($a_rule[$id]['rule_sid_on']); $disablesid = suricata_load_sid_mods($a_rule[$id]['rule_sid_off']); -if ($_GET['act'] == "toggle" && $_GET['ids'] && !empty($rules_map)) { - - // Get the GID tag embedded in the clicked rule icon. - $gid = $_GET['gid']; +if ($_POST['toggle'] && is_numeric($_POST['sid']) && is_numeric($_POST['gid']) && !empty($rules_map)) { - // Get the SID tag embedded in the clicked rule icon. - $sid= $_GET['ids']; + // Get the GID:SID tags embedded in the clicked rule icon. + $gid = $_POST['gid']; + $sid = $_POST['sid']; // See if the target SID is in our list of modified SIDs, // and toggle it back to default if present; otherwise, @@ -197,11 +199,9 @@ if ($_GET['act'] == "toggle" && $_GET['ids'] && !empty($rules_map)) { /* Update the config.xml file. */ write_config(); - $_GET['openruleset'] = $currentruleset; $anchor = "rule_{$gid}_{$sid}"; } - -if ($_GET['act'] == "disable_all" && !empty($rules_map)) { +elseif ($_POST['disable_all'] && !empty($rules_map)) { // Mark all rules in the currently selected category "disabled". foreach (array_keys($rules_map) as $k1) { @@ -238,13 +238,8 @@ if ($_GET['act'] == "disable_all" && !empty($rules_map)) { unset($a_rule[$id]['rule_sid_off']); write_config(); - - $_GET['openruleset'] = $currentruleset; - header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); - exit; } - -if ($_GET['act'] == "enable_all" && !empty($rules_map)) { +elseif ($_POST['enable_all'] && !empty($rules_map)) { // Mark all rules in the currently selected category "enabled". foreach (array_keys($rules_map) as $k1) { @@ -280,13 +275,8 @@ if ($_GET['act'] == "enable_all" && !empty($rules_map)) { unset($a_rule[$id]['rule_sid_off']); write_config(); - - $_GET['openruleset'] = $currentruleset; - header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); - exit; } - -if ($_GET['act'] == "resetcategory" && !empty($rules_map)) { +elseif ($_POST['resetcategory'] && !empty($rules_map)) { // Reset any modified SIDs in the current rule category to their defaults. foreach (array_keys($rules_map) as $k1) { @@ -324,13 +314,8 @@ if ($_GET['act'] == "resetcategory" && !empty($rules_map)) { unset($a_rule[$id]['rule_sid_off']); write_config(); - - $_GET['openruleset'] = $currentruleset; - header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); - exit; } - -if ($_GET['act'] == "resetall" && !empty($rules_map)) { +elseif ($_POST['resetall'] && !empty($rules_map)) { // Remove all modified SIDs from config.xml and save the changes. unset($a_rule[$id]['rule_sid_on']); @@ -338,23 +323,20 @@ if ($_GET['act'] == "resetall" && !empty($rules_map)) { /* Update the config.xml file. */ write_config(); - - $_GET['openruleset'] = $currentruleset; - header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); - exit; } - -if ($_POST['clear']) { +elseif ($_POST['clear']) { unset($a_rule[$id]['customrules']); write_config(); $rebuild_rules = true; suricata_generate_yaml($a_rule[$id]); $rebuild_rules = false; - header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); - exit; + $pconfig['customrules'] = ''; } - -if ($_POST['customrules']) { +elseif ($_POST['cancel']) { + $pconfig['customrules'] = base64_decode($a_rule[$id]['customrules']); +} +elseif ($_POST['save']) { + $pconfig['customrules'] = $_POST['customrules']; if ($_POST['customrules']) $a_rule[$id]['customrules'] = base64_encode($_POST['customrules']); else @@ -363,24 +345,21 @@ if ($_POST['customrules']) { $rebuild_rules = true; suricata_generate_yaml($a_rule[$id]); $rebuild_rules = false; - $output = ""; - $retcode = ""; - exec("/usr/local/bin/suricata -T --init-errors-fatal -c {$suricatacfgdir}/suricata.yaml 2>&1", $output, $retcode); - if (intval($retcode) != 0) { - $error = ""; - $start = count($output); - $end = $start - 4; - for($i = $start; $i > $end; $i--) - $error .= $output[$i]; - $input_errors[] = "Custom rules have errors:\n {$error}"; - } - else { - header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); - exit; - } + /* Signal Suricata to "live reload" the rules */ + suricata_reload_config($a_rule[$id]); +// $output = ""; +// $retcode = ""; +// exec("/usr/local/bin/suricata -T --init-errors-fatal -c {$suricatacfgdir}/suricata.yaml 2>&1", $output, $retcode); +// if (intval($retcode) != 0) { +// $error = ""; +// $start = count($output); +// $end = $start - 4; +// for($i = $start; $i > $end; $i--) +// $error .= $output[$i]; +// $input_errors[] = "Custom rules have errors:\n {$error}"; +// } } - -else if ($_POST['apply']) { +elseif ($_POST['apply']) { /* Save new configuration */ write_config(); @@ -395,16 +374,6 @@ else if ($_POST['apply']) { /* Signal Suricata to "live reload" the rules */ suricata_reload_config($a_rule[$id]); - - /* Return to this same page */ - header("Location: /suricata/suricata_rules.php?id={$id}&openruleset={$currentruleset}"); - exit; -} -else if ($_POST['cancel']) { - - /* Return to this same page */ - header("Location: /suricata/suricata_rules.php?id={$id}"); - exit; } require_once("guiconfig.inc"); @@ -417,9 +386,7 @@ $pgtitle = gettext("Suricata: Interface {$if_friendly} - Rules: {$currentruleset ' . $pgtitle . '

    ';} - -/* Display message */ +/* Display error or save messages if present */ if ($input_errors) { print_input_errors($input_errors); // TODO: add checks } @@ -430,7 +397,11 @@ if ($savemsg) { ?> - + + + + + - - @@ -497,15 +468,13 @@ if ($savemsg) { @@ -518,43 +487,40 @@ if ($savemsg) {
         +    
    - -
    - " title=" "/>   - " title=""/>   + " title=" "/>   + " title=""/>   " onclick="return confirm('')" title=""/>
    - - - - - - @@ -579,7 +544,6 @@ if ($savemsg) {
    " class="formbtn" - title=""/> - -

    + title=""/>

    " . gettext("Suricata must be restarted to activate any SID enable/disable changes made on this tab."); ?>
    - "?> + title='" . gettext("Click to remove enable/disable changes for rules in the selected category only") . "'/>"?>   
    - "?> + title='" . gettext("Click to remove all enable/disable changes for rules in all categories") . "'/>"?>   
    - "?> + title='" . gettext("Click to disable all rules in the selected category") . "'/>"?>   
    - "?> + title='" . gettext("Click to enable all rules in the selected category") . "'/>"?>   
    @@ -564,7 +530,6 @@ if ($savemsg) { title="" width="17" height="17" border="0">   
     
    - @@ -587,7 +551,7 @@ if ($savemsg) { - + @@ -668,11 +632,11 @@ if ($savemsg) { $message = suricata_get_msg($v['rule']); $sid_tooltip = gettext("View the raw text for this rule"); - echo "
    {$textss} - - {$textse} + echo "
    {$textss} + {$textse} {$textss}{$gid}{$textse} @@ -753,15 +717,14 @@ if ($savemsg) {
    - - + + diff --git a/config/suricata/suricata_rulesets.php b/config/suricata/suricata_rulesets.php index a1609d6c..e15818d5 100644 --- a/config/suricata/suricata_rulesets.php +++ b/config/suricata/suricata_rulesets.php @@ -43,10 +43,8 @@ $a_nat = &$config['installedpackages']['suricata']['rule']; $id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; -if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); - exit; -} +if (is_null($id)) + $id = 0; if (isset($id) && $a_nat[$id]) { $pconfig['enable'] = $a_nat[$id]['enable']; @@ -117,9 +115,7 @@ if ($a_nat[$id]['ips_policy_enable'] == 'on') { else $disable_vrt_rules = ""; -/* alert file */ -if ($_POST["Submit"]) { - +if ($_POST["save"]) { if ($_POST['ips_policy_enable'] == "on") { $a_nat[$id]['ips_policy_enable'] = 'on'; $a_nat[$id]['ips_policy'] = $_POST['ips_policy']; @@ -129,11 +125,12 @@ if ($_POST["Submit"]) { unset($a_nat[$id]['ips_policy']); } - $enabled_items = ""; + // Always start with the default events and files rules + $enabled_items = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events.rules"; if (is_array($_POST['toenable'])) - $enabled_items = implode("||", $_POST['toenable']); + $enabled_items .= "||" . implode("||", $_POST['toenable']); else - $enabled_items = $_POST['toenable']; + $enabled_items .= "||{$_POST['toenable']}"; $a_nat[$id]['rulesets'] = $enabled_items; @@ -155,12 +152,12 @@ if ($_POST["Submit"]) { suricata_generate_yaml($a_nat[$id]); $rebuild_rules = false; - header("Location: /suricata/suricata_rulesets.php?id=$id"); - exit; + /* Signal Suricata to "live reload" the rules */ + suricata_reload_config($a_nat[$id]); } - -if ($_POST['unselectall']) { - $a_nat[$id]['rulesets'] = ""; +elseif ($_POST['unselectall']) { + // Remove all but the default events and files rules + $a_nat[$id]['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events.rules"; if ($_POST['ips_policy_enable'] == "on") { $a_nat[$id]['ips_policy_enable'] = 'on'; @@ -173,13 +170,10 @@ if ($_POST['unselectall']) { write_config(); sync_suricata_package_config(); - - header("Location: /suricata/suricata_rulesets.php?id=$id"); - exit; } - -if ($_POST['selectall']) { - $rulesets = array(); +elseif ($_POST['selectall']) { + // Start with the required default events and files rules + $rulesets = array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules" ); if ($_POST['ips_policy_enable'] == "on") { $a_nat[$id]['ips_policy_enable'] = 'on'; @@ -218,9 +212,6 @@ if ($_POST['selectall']) { write_config(); sync_suricata_package_config(); - - header("Location: /suricata/suricata_rulesets.php?id=$id"); - exit; } $enabled_rulesets_array = explode("||", $a_nat[$id]['rulesets']); @@ -234,7 +225,6 @@ include_once("head.inc"); ' . $pgtitle . '

    ';} /* Display message */ if ($input_errors) { @@ -282,9 +272,8 @@ if ($savemsg) { $isrulesfolderempty = glob("{$suricatadir}rules/*.rules"); $iscfgdirempty = array(); if (file_exists("{$suricatadir}suricata_{$suricata_uuid}_{$if_real}/rules/custom.rules")) - $iscfgdirempty = (array)("{$suricatadir}suricata_{$suricata_uuid}_{$if_real}/rules/custom.rules"); - if (empty($isrulesfolderempty)): -?> + $iscfgdirempty = (array)("{$suricatadir}suricata_{$suricata_uuid}_{$if_real}/rules/custom.rules"); ?> +
    ',$suricatadir,''); ?>

    @@ -294,14 +283,7 @@ if ($savemsg) { '' . gettext(" tab."); ?> - + - +
    "/> "/>"/>"/>
    @@ -531,7 +513,7 @@ if ($savemsg) { - "/> + "/> @@ -581,7 +563,7 @@ function enable_change() for (var i = 0; i < document.iform.elements.length; i++) { if (document.iform.elements[i].type == 'checkbox') { var str = document.iform.elements[i].value; - if (str.substr(0,6) == "suricata_") + if (str.substr(0,6) == "snort_") document.iform.elements[i].disabled = !(endis); } } -- cgit v1.2.3 From fc67246b7f782047c946016d2db91b90c158d038 Mon Sep 17 00:00:00 2001 From: Marcello Coutinho Date: Mon, 24 Feb 2014 16:58:44 -0300 Subject: varnish3 - fix xmlrpc sync option --- config/varnish3/varnish.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/varnish3/varnish.inc b/config/varnish3/varnish.inc index 1895d214..2a986710 100644 --- a/config/varnish3/varnish.inc +++ b/config/varnish3/varnish.inc @@ -688,7 +688,7 @@ function varnish_sync_on_changes() { break; case "auto": if (is_array($config['hasync'])){ - $hasync=$config['hasync'][0]; + $hasync=$config['hasync']; $rs[0]['ipaddress']=$hasync['synchronizetoip']; $rs[0]['username']=$hasync['username']; $rs[0]['password']=$hasync['password']; -- cgit v1.2.3 From 1bdd51eeb54147d989ebf288f6c2a1df3e49db6c Mon Sep 17 00:00:00 2001 From: PiBa-NL Date: Mon, 24 Feb 2014 23:40:52 +0100 Subject: haproxy-devel, don't keep reference to original variable using & --- config/haproxy-devel/haproxy.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/haproxy-devel/haproxy.inc b/config/haproxy-devel/haproxy.inc index 24be5363..e7d8f420 100644 --- a/config/haproxy-devel/haproxy.inc +++ b/config/haproxy-devel/haproxy.inc @@ -898,7 +898,7 @@ function haproxy_writeconf($configpath) { $default_backend = ""; $i = 0; foreach ($bind['config'] as $frontend) { - $a_acl = &get_frontend_acls($frontend); + $a_acl = get_frontend_acls($frontend); $poolname = $frontend['backend_serverpool'] . "_" . strtolower($frontend['type']); -- cgit v1.2.3 From a11fef384a509ded8762b4fe0530d4f0a1621815 Mon Sep 17 00:00:00 2001 From: crocomo Date: Tue, 25 Feb 2014 00:41:48 +0100 Subject: Fix spelling, email header and table header * Spelling now sticks with [1] (email, Email at the beginning of a sentence) * Email header now "Email Report" instead of "Graph Report" * Table header now "Commands" instead of "Cmds" (plus fix for width) * Version increased to 2.0.10 [1] https://www.rfc-editor.org/rfc-style-guide/terms-online.txt --- config/mailreport/mail_reports.inc | 6 +++--- config/mailreport/mailreport.xml | 10 +++++----- config/mailreport/status_mail_report.php | 22 +++++++++++----------- config/mailreport/status_mail_report_add_cmd.php | 6 +++--- config/mailreport/status_mail_report_add_graph.php | 6 +++--- config/mailreport/status_mail_report_add_log.php | 6 +++--- config/mailreport/status_mail_report_edit.php | 8 ++++---- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/config/mailreport/mail_reports.inc b/config/mailreport/mail_reports.inc index 94c7500c..746b4759 100644 --- a/config/mailreport/mail_reports.inc +++ b/config/mailreport/mail_reports.inc @@ -209,11 +209,11 @@ function mail_report_send($headertext, $cmdtext, $logtext, $attachments) { $mail->ContentType = 'text/html'; $mail->IsHTML(true); - $mail->AddReplyTo($config['notifications']['smtp']['fromaddress'], "Firewall Graph Report"); - $mail->SetFrom($config['notifications']['smtp']['fromaddress'], "Firewall Graph Report"); + $mail->AddReplyTo($config['notifications']['smtp']['fromaddress'], "Firewall Email Report"); + $mail->SetFrom($config['notifications']['smtp']['fromaddress'], "Firewall Email Report"); $address = $config['notifications']['smtp']['notifyemailaddress']; $mail->AddAddress($address, "Report Recipient"); - $mail->Subject = "{$config['system']['hostname']}.{$config['system']['domain']} Graph Report: {$headertext}"; + $mail->Subject = "{$config['system']['hostname']}.{$config['system']['domain']} Email Report: {$headertext}"; $mail->Body .= "This is a periodic report from your firewall, {$config['system']['hostname']}.{$config['system']['domain']}.

    Current report: {$headertext}
    \n
    \n"; if (!empty($cmdtext)) $mail->Body .= $cmdtext; diff --git a/config/mailreport/mailreport.xml b/config/mailreport/mailreport.xml index d9c5dfff..72fe6c87 100644 --- a/config/mailreport/mailreport.xml +++ b/config/mailreport/mailreport.xml @@ -37,8 +37,8 @@ ]]> mailreport - 2.0.9 - Status: Mail Reports + 2.0.10 + Status: Email Reports /usr/local/bin/ 0755 @@ -81,8 +81,8 @@ http://www.pfsense.com/packages/config/mailreport/status_mail_report_add_graph.php - E-Mail Reports - Setup periodic e-mail reports. + Email Reports + Setup periodic email reports.
    Status
    /status_mail_report.php
    @@ -101,4 +101,4 @@ exec("rm /usr/local/www/status_mail_report_add_graph.php"); ]]> - \ No newline at end of file + diff --git a/config/mailreport/status_mail_report.php b/config/mailreport/status_mail_report.php index e08a7272..b530587f 100644 --- a/config/mailreport/status_mail_report.php +++ b/config/mailreport/status_mail_report.php @@ -33,8 +33,8 @@ ##|+PRIV ##|*IDENT=page-status-mailreports -##|*NAME=Status: E-Mail Reports page -##|*DESCR=Allow access to the 'Status: E-Mail Reports' page. +##|*NAME=Status: Email Reports page +##|*DESCR=Allow access to the 'Status: Email Reports' page. ##|*MATCH=status_mail_report.php* ##|-PRIV @@ -54,14 +54,14 @@ if ($_GET['act'] == "del") { // Fix up cron job(s) set_mail_report_cron_jobs($a_mailreports); - write_config("Removed Mail Report '{$name}'"); + write_config("Removed Email Report '{$name}'"); configure_cron(); header("Location: status_mail_report.php"); exit; } } -$pgtitle = array(gettext("Status"),gettext("Mail Reports")); +$pgtitle = array(gettext("Status"),gettext("Email Reports")); include("head.inc"); ?> @@ -69,15 +69,15 @@ include("head.inc");
    - + - - - - - - + + + + + + diff --git a/config/mailreport/status_mail_report_add_cmd.php b/config/mailreport/status_mail_report_add_cmd.php index b4527584..6a924142 100644 --- a/config/mailreport/status_mail_report_add_cmd.php +++ b/config/mailreport/status_mail_report_add_cmd.php @@ -34,8 +34,8 @@ ##|+PRIV ##|*IDENT=page-status-mailreportsaddcmd -##|*NAME=Status: E-Mail Reports: Add Command page -##|*DESCR=Allow access to the 'Status: E-Mail Reports: Add Command' page. +##|*NAME=Status: Email Reports: Add Command page +##|*DESCR=Allow access to the 'Status: Email Reports: Add Command' page. ##|*MATCH=status_mail_report_add_cmd.php* ##|-PRIV @@ -89,7 +89,7 @@ if ($_POST) { } -$pgtitle = array(gettext("Status"),gettext("Add Mail Report Command")); +$pgtitle = array(gettext("Status"),gettext("Add Email Report Command")); include("head.inc"); ?> diff --git a/config/mailreport/status_mail_report_add_graph.php b/config/mailreport/status_mail_report_add_graph.php index 663d8f9b..3f629d56 100644 --- a/config/mailreport/status_mail_report_add_graph.php +++ b/config/mailreport/status_mail_report_add_graph.php @@ -34,8 +34,8 @@ ##|+PRIV ##|*IDENT=page-status-mailreportsaddgraph -##|*NAME=Status: E-Mail Reports: Add Graph page -##|*DESCR=Allow access to the 'Status: E-Mail Reports: Add Graph' page. +##|*NAME=Status: Email Reports: Add Graph page +##|*DESCR=Allow access to the 'Status: Email Reports: Add Graph' page. ##|*MATCH=status_mail_report_add_graph.php* ##|-PRIV @@ -158,7 +158,7 @@ if ($_POST) { } -$pgtitle = array(gettext("Status"),gettext("Add Mail Report Graph")); +$pgtitle = array(gettext("Status"),gettext("Add Email Report Graph")); include("head.inc"); ?> diff --git a/config/mailreport/status_mail_report_add_log.php b/config/mailreport/status_mail_report_add_log.php index 0b140723..83786994 100644 --- a/config/mailreport/status_mail_report_add_log.php +++ b/config/mailreport/status_mail_report_add_log.php @@ -34,8 +34,8 @@ ##|+PRIV ##|*IDENT=page-status-mailreportsaddlog -##|*NAME=Status: E-Mail Reports: Add Log page -##|*DESCR=Allow access to the 'Status: E-Mail Reports: Add Log' page. +##|*NAME=Status: Email Reports: Add Log page +##|*DESCR=Allow access to the 'Status: Email Reports: Add Log' page. ##|*MATCH=status_mail_report_add_log.php* ##|-PRIV @@ -95,7 +95,7 @@ if ($_POST) { } -$pgtitle = array(gettext("Status"),gettext("Add Mail Report Log")); +$pgtitle = array(gettext("Status"),gettext("Add Email Report Log")); include("head.inc"); ?> diff --git a/config/mailreport/status_mail_report_edit.php b/config/mailreport/status_mail_report_edit.php index 6cbb8a67..e51a4fc6 100644 --- a/config/mailreport/status_mail_report_edit.php +++ b/config/mailreport/status_mail_report_edit.php @@ -33,8 +33,8 @@ ##|+PRIV ##|*IDENT=page-status-mailreportsedit -##|*NAME=Status: E-Mail Reports: Edit Report page -##|*DESCR=Allow access to the 'Status: E-Mail Reports: Edit Report' page. +##|*NAME=Status: Email Reports: Edit Report page +##|*DESCR=Allow access to the 'Status: Email Reports: Edit Report' page. ##|*MATCH=status_mail_report_edit.php* ##|-PRIV @@ -203,7 +203,7 @@ if ($_POST) { return; } -$pgtitle = array(gettext("Status"),gettext("Edit Mail Reports")); +$pgtitle = array(gettext("Status"),gettext("Edit Email Reports")); include("head.inc"); ?> @@ -235,7 +235,7 @@ include("head.inc"); -
    Select the frequency for the report to be sent via e-mail. +
    Select the frequency for the report to be sent via email.
    -- cgit v1.2.3 From 348de1c7372ec0b1d7a21955939373df5eb675ba Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 24 Feb 2014 20:32:57 -0500 Subject: Add temp fix in post-install to add default rules back to enabled rules. --- config/suricata/suricata_post_install.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/config/suricata/suricata_post_install.php b/config/suricata/suricata_post_install.php index 653f47fd..6603d5ab 100644 --- a/config/suricata/suricata_post_install.php +++ b/config/suricata/suricata_post_install.php @@ -87,6 +87,17 @@ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] = foreach ($suriconf as $value) { $if_real = get_real_interface($value['interface']); + // ## BETA pkg bug fix-up -- be sure default rules enabled ## + $rules = explode("||", $value['rulesets']); + foreach (array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules" ) as $r){ + if (!in_array($r, $rules)) + $rules[] = $r; + } + natcasesort($rules); + $value['rulesets'] = implode("||", $rules); + write_config(); + // ## end of BETA pkg bug fix-up ## + // create a suricata.yaml file for interface suricata_generate_yaml($value); -- cgit v1.2.3 From 729d5f667c2d658586b634c074eca1400e34e0be Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 24 Feb 2014 20:38:03 -0500 Subject: Some bug fixes and replace $_GET with $_POST in parameter passing. --- config/suricata/suricata_app_parsers.php | 294 +++++++++++++++++----- config/suricata/suricata_flow_stream.php | 262 ++++++++++++++----- config/suricata/suricata_import_aliases.php | 18 +- config/suricata/suricata_libhtp_policy_engine.php | 210 +++------------- config/suricata/suricata_os_policy_engine.php | 186 +++----------- 5 files changed, 512 insertions(+), 458 deletions(-) diff --git a/config/suricata/suricata_app_parsers.php b/config/suricata/suricata_app_parsers.php index 1706f04a..eddf273d 100644 --- a/config/suricata/suricata_app_parsers.php +++ b/config/suricata/suricata_app_parsers.php @@ -60,7 +60,7 @@ $libhtp_engine_next_id = count($a_nat[$id]['libhtp_policy']['item']); // Build a lookup array of currently used engine 'bind_to' Aliases // so we can screen matching Alias names from the list. $used = array(); -foreach ($a_nat[$id]['host_os_policy']['item'] as $v) +foreach ($a_nat[$id]['libhtp_policy']['item'] as $v) $used[$v['bind_to']] = true; $pconfig = array(); @@ -86,17 +86,125 @@ if (isset($id) && $a_nat[$id]) { $pconfig['libhtp_policy'] = $a_nat[$id]['libhtp_policy']; } -// Check for "import alias mode" and set flag if TRUE +// Check for "import or select alias mode" and set flags if TRUE. +// "selectalias", when true, displays radio buttons to limit +// multiple selections. if ($_POST['import_alias']) { $importalias = true; + $selectalias = false; $title = "HTTP Server Policy"; } -else - $importalias = false; +elseif ($_POST['select_alias']) { + $importalias = true; + $selectalias = true; + $title = "HTTP Server Policy"; + + // Preserve current Libhtp Policy Engine settings + $eng_id = $_POST['eng_id']; + $eng_name = $_POST['policy_name']; + $eng_bind = $_POST['policy_bind_to']; + $eng_personality = $_POST['personality']; + $eng_req_body_limit = $_POST['req_body_limit']; + $eng_resp_body_limit = $_POST['resp_body_limit']; + $eng_enable_double_decode_path = $_POST['enable_double_decode_path']; + $eng_enable_double_decode_query = $_POST['enable_double_decode_query']; + $mode = "add_edit_libhtp_policy"; +} +if ($_POST['save_libhtp_policy']) { + if ($_POST['eng_id'] != "") { + $eng_id = $_POST['eng_id']; + + // Grab all the POST values and save in new temp array + $engine = array(); + $policy_name = trim($_POST['policy_name']); + if ($policy_name) { + $engine['name'] = $policy_name; + } + else + $input_errors[] = gettext("The 'Policy Name' value cannot be blank."); + + if ($_POST['policy_bind_to']) { + if (is_alias($_POST['policy_bind_to'])) + $engine['bind_to'] = $_POST['policy_bind_to']; + elseif (strtolower(trim($_POST['policy_bind_to'])) == "all") + $engine['bind_to'] = "all"; + else + $input_errors[] = gettext("You must provide a valid Alias or the reserved keyword 'all' for the 'Bind-To IP Address' value."); + } + else + $input_errors[] = gettext("The 'Bind-To IP Address' value cannot be blank. Provide a valid Alias or the reserved keyword 'all'."); + + if ($_POST['personality']) { $engine['personality'] = $_POST['personality']; } else { $engine['personality'] = "bsd"; } + + if (is_numeric($_POST['req_body_limit']) && $_POST['req_body_limit'] >= 0) + $engine['request-body-limit'] = $_POST['req_body_limit']; + else + $input_errors[] = gettext("The value for 'Request Body Limit' must be all numbers and greater than or equal to zero."); + + if (is_numeric($_POST['resp_body_limit']) && $_POST['resp_body_limit'] >= 0) + $engine['response-body-limit'] = $_POST['resp_body_limit']; + else + $input_errors[] = gettext("The value for 'Response Body Limit' must be all numbers and greater than or equal to zero."); -if ($_POST['add_libhtp_policy']) { - header("Location: suricata_libhtp_policy_engine.php?id={$id}&eng_id={$libhtp_engine_next_id}"); - exit; + if ($_POST['enable_double_decode_path']) { $engine['double-decode-path'] = 'yes'; }else{ $engine['double-decode-path'] = 'no'; } + if ($_POST['enable_double_decode_query']) { $engine['double-decode-query'] = 'yes'; }else{ $engine['double-decode-query'] = 'no'; } + + // Can only have one "all" Bind_To address + if ($engine['bind_to'] == "all" && $engine['name'] <> "default") + $input_errors[] = gettext("Only one default OS-Policy Engine can be bound to all addresses."); + + // if no errors, write new entry to conf + if (!$input_errors) { + if (isset($eng_id) && $a_nat[$id]['libhtp_policy']['item'][$eng_id]) { + $a_nat[$id]['libhtp_policy']['item'][$eng_id] = $engine; + } + else + $a_nat[$id]['libhtp_policy']['item'][] = $engine; + + /* Reorder the engine array to ensure the */ + /* 'bind_to=all' entry is at the bottom */ + /* if it contains more than one entry. */ + if (count($a_nat[$id]['libhtp_policy']['item']) > 1) { + $i = -1; + foreach ($a_nat[$id]['libhtp_policy']['item'] as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } + } + /* Only relocate the entry if we */ + /* found it, and it's not already */ + /* at the end. */ + if ($i > -1 && ($i < (count($a_nat[$id]['libhtp_policy']['item']) - 1))) { + $tmp = $a_nat[$id]['libhtp_policy']['item'][$i]; + unset($a_nat[$id]['libhtp_policy']['item'][$i]); + $a_nat[$id]['libhtp_policy']['item'][] = $tmp; + } + } + + // Now write the new engine array to conf + write_config(); + $pconfig['libhtp_policy']['item'] = $a_nat[$id]['libhtp_policy']['item']; + } + else { + $add_edit_libhtp_policy = true; + $pengcfg = $engine; + } + } +} +elseif ($_POST['add_libhtp_policy']) { + $add_edit_libhtp_policy = true; + $pengcfg = array( "name" => "engine_{$libhtp_engine_next_id}", "bind_to" => "", "personality" => "IDS", + "request-body-limit" => "4096", "response-body-limit" => "4096", + "double-decode-path" => "no", "double-decode-query" => "no" ); + $eng_id = $libhtp_engine_next_id; +} +elseif ($_POST['edit_libhtp_policy']) { + if ($_POST['eng_id'] != "") { + $add_edit_libhtp_policy = true; + $eng_id = $_POST['eng_id']; + $pengcfg = $a_nat[$id]['libhtp_policy']['item'][$eng_id]; + } } elseif ($_POST['del_libhtp_policy']) { $natent = array(); @@ -111,6 +219,9 @@ elseif ($_POST['del_libhtp_policy']) { write_config(); } } +elseif ($_POST['cancel_libhtp_policy']) { + $add_edit_libhtp_policy = false; +} elseif ($_POST['ResetAll']) { /* Reset all the settings to defaults */ @@ -120,54 +231,108 @@ elseif ($_POST['ResetAll']) { $savemsg = gettext("All flow and stream settings have been reset to their defaults."); } elseif ($_POST['save_import_alias']) { - $engine = array( "name" => "", "bind_to" => "", "personality" => "IDS", - "request-body-limit" => "4096", "response-body-limit" => "4096", - "double-decode-path" => "no", "double-decode-query" => "no" ); - - // See if anything was checked to import - if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) > 0) { - foreach ($_POST['aliastoimport'] as $item) { - $engine['name'] = strtolower($item); - $engine['bind_to'] = $item; - $a_nat[$id]['libhtp_policy']['item'][] = $engine; + // If saving out of "select alias" mode, + // then return to Libhtp Policy Engine edit + // page. + if ($_POST['mode'] == 'add_edit_libhtp_policy') { + $pengcfg = array(); + $eng_id = $_POST['eng_id']; + $pengcfg['name'] = $_POST['eng_name']; + $pengcfg['bind_to'] = $_POST['eng_bind']; + $pengcfg['personality'] = $_POST['eng_personality']; + $pengcfg['request-body-limit'] = $_POST['eng_req_body_limit']; + $pengcfg['response-body-limit'] = $_POST['eng_resp_body_limit']; + $pengcfg['double-decode-path'] = $_POST['eng_enable_double_decode_path']; + $pengcfg['double-decode-query'] = $_POST['eng_enable_double_decode_query']; + $add_edit_libhtp_policy = true; + $mode = "add_edit_libhtp_policy"; + + if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) == 1) { + $pengcfg['bind_to'] = $_POST['aliastoimport'][0]; + $importalias = false; + $selectalias = false; + } + else { + $input_errors[] = gettext("No Alias is selected for import. Nothing to SAVE."); + $importalias = true; + $selectalias = true; + $eng_id = $_POST['eng_id']; + $eng_name = $_POST['eng_name']; + $eng_bind = $_POST['eng_bind']; + $eng_personality = $_POST['eng_personality']; + $eng_req_body_limit = $_POST['eng_req_body_limit']; + $eng_resp_body_limit = $_POST['eng_resp_body_limit']; + $eng_enable_double_decode_path = $_POST['eng_enable_double_decode_path']; + $eng_enable_double_decode_query = $_POST['eng_enable_double_decode_query']; } } else { - $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); - $importalias = true; - } + $engine = array( "name" => "", "bind_to" => "", "personality" => "IDS", + "request-body-limit" => "4096", "response-body-limit" => "4096", + "double-decode-path" => "no", "double-decode-query" => "no" ); + + // See if anything was checked to import + if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) > 0) { + foreach ($_POST['aliastoimport'] as $item) { + $engine['name'] = strtolower($item); + $engine['bind_to'] = $item; + $a_nat[$id]['libhtp_policy']['item'][] = $engine; + } + } + else { + $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); + $importalias = true; + } - // if no errors, write new entry to conf - if (!$input_errors) { - // Reorder the engine array to ensure the - // 'bind_to=all' entry is at the bottom if - // the array contains more than one entry. - if (count($a_nat[$id]['libhtp_policy']['item']) > 1) { - $i = -1; - foreach ($a_nat[$id]['libhtp_policy']['item'] as $f => $v) { - if ($v['bind_to'] == "all") { - $i = $f; - break; + // if no errors, write new entry to conf + if (!$input_errors) { + // Reorder the engine array to ensure the + // 'bind_to=all' entry is at the bottom if + // the array contains more than one entry. + if (count($a_nat[$id]['libhtp_policy']['item']) > 1) { + $i = -1; + foreach ($a_nat[$id]['libhtp_policy']['item'] as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } } + // Only relocate the entry if we + // found it, and it's not already + // at the end. + if ($i > -1 && ($i < (count($a_nat[$id]['libhtp_policy']['item']) - 1))) { + $tmp = $a_nat[$id]['libhtp_policy']['item'][$i]; + unset($a_nat[$id]['libhtp_policy']['item'][$i]); + $a_nat[$id]['libhtp_policy']['item'][] = $tmp; + } + $pconfig['libhtp_policy']['item'] = $a_nat[$id]['libhtp_policy']['item']; } - // Only relocate the entry if we - // found it, and it's not already - // at the end. - if ($i > -1 && ($i < (count($a_nat[$id]['libhtp_policy']['item']) - 1))) { - $tmp = $a_nat[$id]['libhtp_policy']['item'][$i]; - unset($a_nat[$id]['libhtp_policy']['item'][$i]); - $a_nat[$id]['libhtp_policy']['item'][] = $tmp; - } - $pconfig['libhtp_policy']['item'] = $a_nat[$id]['libhtp_policy']['item']; - } - // Write the new engine array to config file - write_config(); - $importalias = false; + // Write the new engine array to config file + write_config(); + $importalias = false; + } } } elseif ($_POST['cancel_import_alias']) { $importalias = false; + $selectalias = false; + $eng_id = $_POST['eng_id']; + + // If cancelling out of "select alias" mode, + // then return to Libhtp Policy Engine edit + // page. + if ($_POST['mode'] == 'add_edit_libhtp_policy') { + $pengcfg = array(); + $pengcfg['name'] = $_POST['eng_name']; + $pengcfg['bind_to'] = $_POST['eng_bind']; + $pengcfg['personality'] = $_POST['eng_personality']; + $pengcfg['request-body-limit'] = $_POST['eng_req_body_limit']; + $pengcfg['response-body-limit'] = $_POST['eng_resp_body_limit']; + $pengcfg['double-decode-path'] = $_POST['eng_enable_double_decode_path']; + $pengcfg['double-decode-query'] = $_POST['eng_enable_double_decode_query']; + $add_edit_libhtp_policy = true; + } } elseif ($_POST['save']) { $natent = array(); @@ -222,7 +387,7 @@ include_once("head.inc");
    - +
    Here you can define a list of reports to be sent by e-mail.
    Here you can define a list of reports to be sent by email.
     
    - + '; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + ?> + + + + @@ -297,9 +476,9 @@ include_once("head.inc"); -
    - "> + "/> "all") : ?>
    - diff --git a/config/suricata/suricata_flow_stream.php b/config/suricata/suricata_flow_stream.php index 6d5134c3..6c081fa8 100644 --- a/config/suricata/suricata_flow_stream.php +++ b/config/suricata/suricata_flow_stream.php @@ -84,17 +84,111 @@ if (isset($id) && $a_nat[$id]) { $pconfig['host_os_policy'] = $a_nat[$id]['host_os_policy']; } -// Check for "import alias mode" and set flag if TRUE +// Check for "import or select alias mode" and set flags if TRUE. +// "selectalias", when true, displays radio buttons to limit +// multiple selections. if ($_POST['import_alias']) { $importalias = true; + $selectalias = false; $title = "Host Operating System Policy"; } -else - $importalias = false; +elseif ($_POST['select_alias']) { + $importalias = true; + $selectalias = true; + $title = "Host Operating System Policy"; + + // Preserve current OS Policy Engine settings + $eng_id = $_POST['eng_id']; + $eng_name = $_POST['policy_name']; + $eng_bind = $_POST['policy_bind_to']; + $eng_policy = $_POST['policy']; + $mode = "add_edit_os_policy"; +} + +if ($_POST['save_os_policy']) { + if ($_POST['eng_id'] != "") { + $eng_id = $_POST['eng_id']; + + // Grab all the POST values and save in new temp array + $engine = array(); + $policy_name = trim($_POST['policy_name']); + if ($policy_name) { + $engine['name'] = $policy_name; + } + else { + $input_errors[] = gettext("The 'Policy Name' value cannot be blank."); + $add_edit_os_policy = true; + } + if ($_POST['policy_bind_to']) { + if (is_alias($_POST['policy_bind_to'])) + $engine['bind_to'] = $_POST['policy_bind_to']; + elseif (strtolower(trim($_POST['policy_bind_to'])) == "all") + $engine['bind_to'] = "all"; + else { + $input_errors[] = gettext("You must provide a valid Alias or the reserved keyword 'all' for the 'Bind-To IP Address' value."); + $add_edit_os_policy = true; + } + } + else { + $input_errors[] = gettext("The 'Bind-To IP Address' value cannot be blank. Provide a valid Alias or the reserved keyword 'all'."); + $add_edit_os_policy = true; + } + + if ($_POST['policy']) { $engine['policy'] = $_POST['policy']; } else { $engine['policy'] = "bsd"; } + + // Can only have one "all" Bind_To address + if ($engine['bind_to'] == "all" && $engine['name'] <> "default") { + $input_errors[] = gettext("Only one default OS-Policy Engine can be bound to all addresses."); + $add_edit_os_policy = true; + $pengcfg = $engine; + } + + // if no errors, write new entry to conf + if (!$input_errors) { + if (isset($eng_id) && $a_nat[$id]['host_os_policy']['item'][$eng_id]) { + $a_nat[$id]['host_os_policy']['item'][$eng_id] = $engine; + } + else + $a_nat[$id]['host_os_policy']['item'][] = $engine; + + /* Reorder the engine array to ensure the */ + /* 'bind_to=all' entry is at the bottom */ + /* if it contains more than one entry. */ + if (count($a_nat[$id]['host_os_policy']['item']) > 1) { + $i = -1; + foreach ($a_nat[$id]['host_os_policy']['item'] as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } + } + /* Only relocate the entry if we */ + /* found it, and it's not already */ + /* at the end. */ + if ($i > -1 && ($i < (count($a_nat[$id]['host_os_policy']['item']) - 1))) { + $tmp = $a_nat[$id]['host_os_policy']['item'][$i]; + unset($a_nat[$id]['host_os_policy']['item'][$i]); + $a_nat[$id]['host_os_policy']['item'][] = $tmp; + } + } -if ($_POST['add_os_policy']) { - header("Location: suricata_os_policy_engine.php?id={$id}&eng_id={$host_os_policy_engine_next_id}"); - exit; + // Now write the new engine array to conf + write_config(); + $pconfig['host_os_policy']['item'] = $a_nat[$id]['host_os_policy']['item']; + } + } +} +elseif ($_POST['add_os_policy']) { + $add_edit_os_policy = true; + $pengcfg = array( "name" => "engine_{$host_os_policy_engine_next_id}", "bind_to" => "", "policy" => "bsd" ); + $eng_id = $host_os_policy_engine_next_id; +} +elseif ($_POST['edit_os_policy']) { + if ($_POST['eng_id'] != "") { + $add_edit_os_policy = true; + $eng_id = $_POST['eng_id']; + $pengcfg = $a_nat[$id]['host_os_policy']['item'][$eng_id]; + } } elseif ($_POST['del_os_policy']) { $natent = array(); @@ -109,6 +203,9 @@ elseif ($_POST['del_os_policy']) { write_config(); } } +elseif ($_POST['cancel_os_policy']) { + $add_edit_os_policy = false; +} elseif ($_POST['ResetAll']) { /* Reset all the settings to defaults */ @@ -223,52 +320,97 @@ elseif ($_POST['save']) { } } elseif ($_POST['save_import_alias']) { - $engine = array( "name" => "", "bind_to" => "", "policy" => "bsd" ); - - // See if anything was checked to import - if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) > 0) { - foreach ($_POST['aliastoimport'] as $item) { - $engine['name'] = strtolower($item); - $engine['bind_to'] = $item; - $a_nat[$id]['host_os_policy']['item'][] = $engine; + // If saving out of "select alias" mode, + // then return to Host OS Policy Engine edit + // page. + if ($_POST['mode'] =='add_edit_os_policy') { + $pengcfg = array(); + $eng_id = $_POST['eng_id']; + $pengcfg['name'] = $_POST['eng_name']; + $pengcfg['bind_to'] = $_POST['eng_bind']; + $pengcfg['policy'] = $_POST['eng_policy']; + $add_edit_os_policy = true; + $mode = "add_edit_os_policy"; + + if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) == 1) { + $pengcfg['bind_to'] = $_POST['aliastoimport'][0]; + $importalias = false; + $selectalias = false; + } + else { + $input_errors[] = gettext("No Alias is selected for import. Nothing to SAVE."); + $importalias = true; + $selectalias = true; + $eng_id = $_POST['eng_id']; + $eng_name = $_POST['eng_name']; + $eng_bind = $_POST['eng_bind']; + $eng_policy = $_POST['eng_policy']; } } else { - $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); - $importalias = true; - } + // Assume we are importing one or more aliases + // for use in new Host OS Policy engines. + $engine = array( "name" => "", "bind_to" => "", "policy" => "bsd" ); + + // See if anything was checked to import + if (is_array($_POST['aliastoimport']) && count($_POST['aliastoimport']) > 0) { + foreach ($_POST['aliastoimport'] as $item) { + $engine['name'] = strtolower($item); + $engine['bind_to'] = $item; + $a_nat[$id]['host_os_policy']['item'][] = $engine; + } + } + else { + $input_errors[] = gettext("No entries were selected for import. Please select one or more Aliases for import and click SAVE."); + $importalias = true; + } - // if no errors, write new entry to conf - if (!$input_errors) { - // Reorder the engine array to ensure the - // 'bind_to=all' entry is at the bottom if - // the array contains more than one entry. - if (count($a_nat[$id]['host_os_policy']['item']) > 1) { - $i = -1; - foreach ($a_nat[$id]['host_os_policy']['item'] as $f => $v) { - if ($v['bind_to'] == "all") { - $i = $f; - break; + // if no errors, write new entry to conf + if (!$input_errors) { + // Reorder the engine array to ensure the + // 'bind_to=all' entry is at the bottom if + // the array contains more than one entry. + if (count($a_nat[$id]['host_os_policy']['item']) > 1) { + $i = -1; + foreach ($a_nat[$id]['host_os_policy']['item'] as $f => $v) { + if ($v['bind_to'] == "all") { + $i = $f; + break; + } } + // Only relocate the entry if we + // found it, and it's not already + // at the end. + if ($i > -1 && ($i < (count($a_nat[$id]['host_os_policy']['item']) - 1))) { + $tmp = $a_nat[$id]['host_os_policy']['item'][$i]; + unset($a_nat[$id]['host_os_policy']['item'][$i]); + $a_nat[$id]['host_os_policy']['item'][] = $tmp; + } + $pconfig['host_os_policy']['item'] = $a_nat[$id]['host_os_policy']['item']; } - // Only relocate the entry if we - // found it, and it's not already - // at the end. - if ($i > -1 && ($i < (count($a_nat[$id]['host_os_policy']['item']) - 1))) { - $tmp = $a_nat[$id]['host_os_policy']['item'][$i]; - unset($a_nat[$id]['host_os_policy']['item'][$i]); - $a_nat[$id]['host_os_policy']['item'][] = $tmp; - } - $pconfig['host_os_policy']['item'] = $a_nat[$id]['host_os_policy']['item']; - } - // Write the new engine array to config file - write_config(); - $importalias = false; + // Write the new engine array to config file + write_config(); + $importalias = false; + $selectalias = false; + } } } elseif ($_POST['cancel_import_alias']) { $importalias = false; + $selectalias = false; + $eng_id = $_POST['eng_id']; + + // If cancelling out of "select alias" mode, + // then return to Host OS Policy Engine edit + // page. + if ($_POST['mode'] == 'add_edit_os_policy') { + $pengcfg = array(); + $pengcfg['name'] = $_POST['eng_name']; + $pengcfg['bind_to'] = $_POST['eng_bind']; + $pengcfg['policy'] = $_POST['eng_policy']; + $add_edit_os_policy = true; + } } $if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); @@ -289,7 +431,7 @@ include_once("head.inc"); ?>
    - + @@ -320,7 +462,17 @@ include_once("head.inc");
    - + '; + echo ''; + echo ''; + } + ?> + + + + @@ -350,9 +502,9 @@ include_once("head.inc"); -
    - "> + "/> "all") : ?>
    - diff --git a/config/suricata/suricata_import_aliases.php b/config/suricata/suricata_import_aliases.php index a93d2d64..ccaaf29d 100644 --- a/config/suricata/suricata_import_aliases.php +++ b/config/suricata/suricata_import_aliases.php @@ -39,6 +39,8 @@ $a_aliases --> $config['aliases']['alias'] array $title --> title string for import alias engine type $used --> array of currently used engine 'bind_to' Alias names + $selectalias --> boolean to display radio buttons instead of checkboxes + $mode --> string value to indicate current operation mode Information is returned from this page via the following form fields: @@ -51,11 +53,21 @@ "") + echo ''; + if ($selectalias == true) { + $fieldtype = "radio"; + $header = gettext("Select an Alias to use as {$title} target from the list below."); + } + else { + $fieldtype = "checkbox"; + $header = gettext("Select one or more Aliases to use as {$title} targets from the list below."); + } ?> + - + - +
    -
    @@ -99,7 +111,7 @@
    diff --git a/config/suricata/suricata_libhtp_policy_engine.php b/config/suricata/suricata_libhtp_policy_engine.php index ec00bbb2..01f6b9e8 100644 --- a/config/suricata/suricata_libhtp_policy_engine.php +++ b/config/suricata/suricata_libhtp_policy_engine.php @@ -26,160 +26,33 @@ * POSSIBILITY OF SUCH DAMAGE. */ -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/suricata/suricata.inc"); - -global $g; - -// Grab the incoming QUERY STRING or POST variables -$id = $_GET['id']; -$eng_id = $_GET['eng_id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (isset($_POST['eng_id'])) - $eng_id = $_POST['eng_id']; - -if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); - exit; -} -if (is_null($eng_id)) { - header("Location: /suricata/suricata_app_parsers.php?id={$id}"); - exit; -} - -if (!is_array($config['installedpackages']['suricata']['rule'])) - $config['installedpackages']['suricata']['rule'] = array(); -if (!is_array($config['installedpackages']['suricata']['rule'][$id]['libhtp_policy']['item'])) - $config['installedpackages']['suricata']['rule'][$id]['libhtp_policy']['item'] = array(); -$a_nat = &$config['installedpackages']['suricata']['rule'][$id]['libhtp_policy']['item']; - -$pconfig = array(); -if (empty($a_nat[$eng_id])) { - $def = array( "name" => "engine_{$eng_id}", "bind_to" => "", "personality" => "IDS", - "request-body-limit" => "4096", "response-body-limit" => "4096", - "double-decode-path" => "no", "double-decode-query" => "no" ); - - // See if this is initial entry and set to "default" if true - if ($eng_id < 1) { - $def['name'] = "default"; - $def['bind_to'] = "all"; - } - $pconfig = $def; -} -else { - $pconfig = $a_nat[$eng_id]; - - // Check for any empty values and set sensible defaults - if (empty($pconfig['personality'])) - $pconfig['personality'] = "IDS"; -} - -if ($_POST['cancel']) { - header("Location: /suricata/suricata_app_parsers.php?id={$id}"); - exit; -} - -// Check for returned "selected alias" if action is import -if ($_GET['act'] == "import") { - if ($_GET['varname'] == "bind_to" && !empty($_GET['varvalue'])) - $pconfig[$_GET['varname']] = $_GET['varvalue']; -} - -if ($_POST['save']) { - - /* Grab all the POST values and save in new temp array */ - $engine = array(); - if ($_POST['policy_name']) { $engine['name'] = trim($_POST['policy_name']); } else { $engine['name'] = "default"; } - if ($_POST['policy_bind_to']) { - if (is_alias($_POST['policy_bind_to'])) - $engine['bind_to'] = $_POST['policy_bind_to']; - elseif (strtolower(trim($_POST['policy_bind_to'])) == "all") - $engine['bind_to'] = "all"; - else - $input_errors[] = gettext("You must provide a valid Alias or the reserved keyword 'all' for the 'Bind-To IP Address' value."); - } - else { - $input_errors[] = gettext("The 'Bind-To IP Address' value cannot be blank. Provide a valid Alias or the reserved keyword 'all'."); - } - - if ($_POST['personality']) { $engine['personality'] = $_POST['personality']; } else { $engine['personality'] = "IDS"; } - if (is_numeric($_POST['req_body_limit']) && $_POST['req_body_limit'] >= 0) - $engine['request-body-limit'] = $_POST['req_body_limit']; - else - $input_errors[] = gettext("The value for 'Request Body Limit' must be all numbers and greater than or equal to zero."); - - if (is_numeric($_POST['resp_body_limit']) && $_POST['resp_body_limit'] >= 0) - $engine['response-body-limit'] = $_POST['resp_body_limit']; - else - $input_errors[] = gettext("The value for 'Response Body Limit' must be all numbers and greater than or equal to zero."); - - if ($_POST['enable_double_decode_path']) { $engine['double-decode-path'] = 'yes'; }else{ $engine['double-decode-path'] = 'no'; } - if ($_POST['enable_double_decode_query']) { $engine['double-decode-query'] = 'yes'; }else{ $engine['double-decode-query'] = 'no'; } - - /* Can only have one "all" Bind_To address */ - if ($engine['bind_to'] == "all" && $engine['name'] <> "default") { - $input_errors[] = gettext("Only one default HTTP Server Policy Engine can be bound to all addresses."); - $pconfig = $engine; - } - - /* if no errors, write new entry to conf */ - if (!$input_errors) { - if (isset($eng_id) && $a_nat[$eng_id]) { - $a_nat[$eng_id] = $engine; - } - else - $a_nat[] = $engine; - - /* Reorder the engine array to ensure the */ - /* 'bind_to=all' entry is at the bottom */ - /* if it contains more than one entry. */ - if (count($a_nat) > 1) { - $i = -1; - foreach ($a_nat as $f => $v) { - if ($v['bind_to'] == "all") { - $i = $f; - break; - } - } - /* Only relocate the entry if we */ - /* found it, and it's not already */ - /* at the end. */ - if ($i > -1 && ($i < (count($a_nat) - 1))) { - $tmp = $a_nat[$i]; - unset($a_nat[$i]); - $a_nat[] = $tmp; - } - } - - /* Now write the new engine array to conf */ - write_config(); - - header("Location: /suricata/suricata_app_parsers.php?id={$id}"); - exit; - } -} - -$if_friendly = convert_friendly_interface_to_friendly_descr($config['installedpackages']['suricata']['rule'][$id]['interface']); -$pgtitle = gettext("Suricata: Interface {$if_friendly} HTTP Server Policy Engine"); -include_once("head.inc"); - -?> - - - - system global variables array + $config --> global variable pointing to configuration information + $pengcfg --> array containing current Libhtp Policy engine configuration + + Information is returned from this page via the following form fields: + + policy_name --> Unique Name for the Libhtp Policy Engine + policy_bind_to --> Alias name representing "bind_to" IP address for engine + personality --> Operating system chosen for engine policy + select_alias --> Submit button for select alias operation + req_body_limit --> Request Body Limit size + resp_body_limit --> Response Body Limit size + enable_double_decode_path --> double-decode path part of URI + enable_double_decode_query --> double-decode query string part of URI + save_libhtp_policy --> Submit button for save operation and exit + cancel_libhtp_policy --> Submit button to cancel operation and exit + **************************************************************************************/ ?> -
    - - -
    -
    @@ -190,8 +63,8 @@ if ($savemsg) -
    >  - "default") + value="">  + "default") echo gettext("Name or description for this engine. (Max 25 characters)"); else echo "" . gettext("The name for the 'default' engine is read-only.") . "";?>
    @@ -202,13 +75,13 @@ if ($savemsg)
    - "default") : ?> + "default") : ?> - @@ -218,7 +91,7 @@ if ($savemsg)
    " . gettext("Supplied value must be a pre-configured Alias or the keyword 'all'.");?>   + value="" autocomplete="off" readonly>  " . gettext("IP List for the default engine is read-only and must be 'all'.") . "";?>

    @@ -232,7 +105,7 @@ if ($savemsg) $profile = array( 'Apache', 'Apache_2_2', 'Generic', 'IDS', 'IIS_4_0', 'IIS_5_0', 'IIS_5_1', 'IIS_6_0', 'IIS_7_0', 'IIS_7_5', 'Minimal' ); foreach ($profile as $val): ?>   
    - -
      + value="" title="" autocomplete="off">  "/>
      + value="">  " . gettext("4,096") . "" . gettext(" bytes."); ?>

      + value="">  " . gettext("4,096") . "" . gettext(" bytes."); ?>

    > + > " . gettext("Not Checked") . "."; ?>
    > + > " . gettext("Not Checked") . "."; ?>
      - ">      - ">
    - - - - + - diff --git a/config/suricata/suricata_os_policy_engine.php b/config/suricata/suricata_os_policy_engine.php index ae5a9348..ea539e92 100644 --- a/config/suricata/suricata_os_policy_engine.php +++ b/config/suricata/suricata_os_policy_engine.php @@ -26,157 +26,41 @@ * POSSIBILITY OF SUCH DAMAGE. */ -require_once("guiconfig.inc"); -require_once("/usr/local/pkg/suricata/suricata.inc"); - -global $g; - -// Grab the incoming QUERY STRING or POST variables -$id = $_GET['id']; -$eng_id = $_GET['eng_id']; -if (isset($_POST['id'])) - $id = $_POST['id']; -if (isset($_POST['eng_id'])) - $eng_id = $_POST['eng_id']; - -if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); - exit; -} -if (is_null($eng_id)) { - header("Location: /suricata/suricata_flow_stream.php?id={$id}"); - exit; -} - -if (!is_array($config['installedpackages']['suricata']['rule'])) - $config['installedpackages']['suricata']['rule'] = array(); -if (!is_array($config['installedpackages']['suricata']['rule'][$id]['host_os_policy']['item'])) - $config['installedpackages']['suricata']['rule'][$id]['host_os_policy']['item'] = array(); -$a_nat = &$config['installedpackages']['suricata']['rule'][$id]['host_os_policy']['item']; - -$pconfig = array(); -if (empty($a_nat[$eng_id])) { - $def = array( "name" => "engine_{$eng_id}", "bind_to" => "", "policy" => "bsd" ); - // See if this is initial entry and set to "default" if true - if ($eng_id < 1) { - $def['name'] = "default"; - $def['bind_to'] = "all"; - } - $pconfig = $def; -} -else { - $pconfig = $a_nat[$eng_id]; - - // Check for any empty values and set sensible defaults - if (empty($pconfig['policy'])) - $pconfig['policy'] = "bsd"; -} - -if ($_POST['cancel']) { - header("Location: /suricata/suricata_flow_stream.php?id={$id}"); - exit; -} - -// Check for returned "selected alias" if action is import -if ($_GET['act'] == "import") { - if ($_GET['varname'] == "bind_to" && !empty($_GET['varvalue'])) - $pconfig[$_GET['varname']] = $_GET['varvalue']; -} - -if ($_POST['save']) { - - /* Grab all the POST values and save in new temp array */ - $engine = array(); - if ($_POST['policy_name']) { $engine['name'] = trim($_POST['policy_name']); } else { $engine['name'] = "default"; } - if ($_POST['policy_bind_to']) { - if (is_alias($_POST['policy_bind_to'])) - $engine['bind_to'] = $_POST['policy_bind_to']; - elseif (strtolower(trim($_POST['policy_bind_to'])) == "all") - $engine['bind_to'] = "all"; - else - $input_errors[] = gettext("You must provide a valid Alias or the reserved keyword 'all' for the 'Bind-To IP Address' value."); - } - else { - $input_errors[] = gettext("The 'Bind-To IP Address' value cannot be blank. Provide a valid Alias or the reserved keyword 'all'."); - } - - if ($_POST['policy']) { $engine['policy'] = $_POST['policy']; } else { $engine['policy'] = "bsd"; } - - /* Can only have one "all" Bind_To address */ - if ($engine['bind_to'] == "all" && $engine['name'] <> "default") { - $input_errors[] = gettext("Only one default OS-Policy Engine can be bound to all addresses."); - $pconfig = $engine; - } - - /* if no errors, write new entry to conf */ - if (!$input_errors) { - if (isset($eng_id) && $a_nat[$eng_id]) { - $a_nat[$eng_id] = $engine; - } - else - $a_nat[] = $engine; - - /* Reorder the engine array to ensure the */ - /* 'bind_to=all' entry is at the bottom */ - /* if it contains more than one entry. */ - if (count($a_nat) > 1) { - $i = -1; - foreach ($a_nat as $f => $v) { - if ($v['bind_to'] == "all") { - $i = $f; - break; - } - } - /* Only relocate the entry if we */ - /* found it, and it's not already */ - /* at the end. */ - if ($i > -1 && ($i < (count($a_nat) - 1))) { - $tmp = $a_nat[$i]; - unset($a_nat[$i]); - $a_nat[] = $tmp; - } - } - - /* Now write the new engine array to conf */ - write_config(); - - header("Location: /suricata/suricata_flow_stream.php?id={$id}"); - exit; - } -} - -$if_friendly = convert_friendly_interface_to_friendly_descr($config['installedpackages']['suricata']['rule'][$id]['interface']); -$pgtitle = gettext("Suricata: Interface {$if_friendly} Operating System Policy Engine"); -include_once("head.inc"); - +/************************************************************************************** + This file contains code for adding/editing an existing Host OS Policy Engine. + It is included and injected inline as needed into the suricata_stream_flow.php + page to provide the edit functionality for Host OS Policy Engines. + + The following variables are assumed to exist and must be initialized + as necessary in order to utilize this page. + + $g --> system global variables array + $config --> global variable pointing to configuration information + $pengcfg --> array containing current Host OS Policy engine configuration + + Information is returned from this page via the following form fields: + + policy_name --> Unique Name for the Host OS Policy Engine + policy_bind_to --> Alias name representing "bind_to" IP address for engine + policy --> Operating system chosen for engine policy + select_alias --> Submit button for select alias operation + save_os_policy --> Submit button for save operation and exit + cancel_os_policy --> Submit button to cancel operation and exit + **************************************************************************************/ ?> - - - - -
    - - -
    - -- cgit v1.2.3 From 15cdf2213efa54130a0962d5a22d30df7cc0cefe Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 4 Mar 2014 12:58:22 -0500 Subject: Revert back to Ajax.url() call in widget because getURL() not in 2.1 -- oops! --- config/suricata/suricata_alerts.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/config/suricata/suricata_alerts.js b/config/suricata/suricata_alerts.js index db95bd0c..9e5b0b29 100644 --- a/config/suricata/suricata_alerts.js +++ b/config/suricata/suricata_alerts.js @@ -6,7 +6,7 @@ var suricataisPaused = false; function suricata_alerts_fetch_new_rules_callback(callback_data) { var data_split; var new_data_to_add = Array(); - var data = callback_data.content; + var data = callback_data; data_split = data.split("\n"); @@ -61,7 +61,14 @@ function fetch_new_surialerts() { return; suricataisBusy = true; - getURL('/widgets/widgets/suricata_alerts.widget.php?getNewAlerts=' + new Date().getTime(), suricata_alerts_fetch_new_rules_callback); + + jQuery.ajax('/widgets/widgets/suricata_alerts.widget.php?getNewAlerts=' + new Date().getTime(), { + type: 'GET', + dataType: 'text', + success: function(data) { + suricata_alerts_fetch_new_rules_callback(data); + } + }); } function suricata_alerts_toggle_pause() { -- cgit v1.2.3 From a0b0e148eaf46486906888b497640300f5c34875 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 4 Mar 2014 20:14:08 -0500 Subject: Change missed $_GET to $_POST in save message. --- config/suricata/suricata_alerts.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index 3b135f32..29002251 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -186,7 +186,7 @@ if (($_POST['addsuppress_srcip'] || $_POST['addsuppress_dstip'] || $_POST['addsu $suppress = "suppress gen_id {$_POST['gen_id']}, sig_id {$_POST['sidid']}\n"; else $suppress = "#{$_POST['descr']}\nsuppress gen_id {$_POST['gen_id']}, sig_id {$_POST['sidid']}\n"; - $success = gettext("An entry for 'suppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}' has been added to the Suppress List."); + $success = gettext("An entry for 'suppress gen_id {$_POST['gen_id']}, sig_id {$_POST['sidid']}' has been added to the Suppress List."); break; case "by_src": case "by_dst": -- cgit v1.2.3 From 3d0aee80237aad31d19202f517fe8f4595aca538 Mon Sep 17 00:00:00 2001 From: Warren Baker Date: Wed, 5 Mar 2014 08:48:14 +0200 Subject: Aii...these shouldnt have been bumped. /me leans over and grabs the point hat --- pkg_config.8.xml | 4 ++-- pkg_config.8.xml.amd64 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg_config.8.xml b/pkg_config.8.xml index c995b905..c7444674 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -1591,7 +1591,7 @@ http://www.pfsense.com/packages/config/unbound/unbound.xml unbound.xml http://files.pfsense.org/packages/8/All/ - unbound-1.4.21_3.tbz + unbound-1.4.21_1.tbz ldns-1.6.16.tbz expat-2.0.1_2.tbz libevent-1.4.14b_2.tbz @@ -1603,7 +1603,7 @@ dns/ldns textproc/expat2 devel/libevent2 dns/unbound - unbound-1.4.21_3-i386.pbi + unbound-1.4.21_1-i386.pbi unbound_UNSET_FORCE=GOST ECDSA;unbound_SET=LIBEVENT20 THREADS unbound diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index ce4dea9c..6ec9dca0 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -1578,7 +1578,7 @@ http://www.pfsense.com/packages/config/unbound/unbound.xml unbound.xml http://files.pfsense.org/packages/amd64/8/All/ - unbound-1.4.21_3.tbz + unbound-1.4.21_1.tbz ldns-1.6.16.tbz expat-2.0.1_2.tbz libevent-1.4.14b_2.tbz @@ -1590,7 +1590,7 @@ dns/ldns textproc/expat2 devel/libevent2 dns/unbound - unbound-1.4.21_3-amd64.pbi + unbound-1.4.21_1-amd64.pbi unbound_UNSET_FORCE=GOST ECDSA;unbound_SET=LIBEVENT20 THREADS unbound -- cgit v1.2.3 From 51b49f5f1a214a565194ea2db3bb0231689309c7 Mon Sep 17 00:00:00 2001 From: Marcello Coutinho Date: Wed, 5 Mar 2014 19:37:28 -0300 Subject: squid3-dev - improve clamav checks and fix startup erros --- config/squid3/33/squid.inc | 65 +++++++++++++++++++++++++++++++++++----------- pkg_config.10.xml | 2 +- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 4 files changed, 53 insertions(+), 18 deletions(-) diff --git a/config/squid3/33/squid.inc b/config/squid3/33/squid.inc index c55160bc..e13e51d1 100755 --- a/config/squid3/33/squid.inc +++ b/config/squid3/33/squid.inc @@ -5,7 +5,7 @@ Copyright (C) 2006-2009 Scott Ullrich Copyright (C) 2006 Fernando Lemos Copyright (C) 2012 Martin Fuchs - Copyright (C) 2012-2013 Marcello Coutinho + Copyright (C) 2012-2014 Marcello Coutinho Copyright (C) 2013 Gekkenhuis All rights reserved. @@ -95,6 +95,15 @@ function squid_chown_recursive($dir, $user, $group) { } } +function squid_check_clamav_user($user) + { + exec("/usr/sbin/pw usershow {$user}",$sq_ex_output,$sq_ex_return); + $user_arg=($sq_ex_return == 0?"mod":"add"); + exec("/usr/sbin/pw user{$user_arg} {$user} -G wheel -u 9595 -s /sbin/nologin",$sq_ex_output,$sq_ex_return); + if ($sq_ex_return != 0) + log_error("Squid - Could not change clamav user settings. ".serialize($sq_ex_output)); + } + /* setup cache */ function squid_dash_z() { global $config; @@ -1310,8 +1319,27 @@ function squid_resync_antivirus(){ if (preg_match("/fr/i",$squid_config['error_language'])) $clwarn="clwarn.cgi.fr_FR"; if (preg_match("/pt_br/i",$squid_config['error_language'])) - $clwarn="clwarn.cgi.pt_BR"; - copy(SQUID_LOCALBASE."/libexec/squidclamav/{$clwarn}","/usr/local/www/clwarn.cgi"); + $clwarn="clwarn.cgi.pt_BR"; + $clwarn_file="/usr/local/www/clwarn.cgi"; + copy(SQUID_LOCALBASE."/libexec/squidclamav/{$clwarn}",$clwarn_file); + + #fix perl path on clwarn.cgi + $clwarn_file_new=file_get_contents($clwarn_file); + $c_pattern[]="@/usr/\S+/perl@"; + $c_replacement[]=SQUID_LOCALBASE."/bin/perl"; + /*$c_pattern[]="@redirect \S+/clwarn.cgi@"; + $gui_proto=$config['system']['webgui']['protocol']; + $gui_port=$config['system']['webgui']['port']; + if($gui_port == "") { + $gui_port($gui_proto == "http"?"80":"443"); + } + $c_replacement[]=SQUID_LOCALBASE."redirect {$gui_proto}://127.0.0.1:{$gui_port}/clwarn.cgi"; + */ + $clwarn_file_new=preg_replace($c_pattern, $c_replacement,$clwarn_file_new); + file_put_contents($clwarn_file, $clwarn_file_new,LOCK_EX); + + #fix clwarn.cgi file permission + chmod($clwarn_file,0755); $conf = <<< EOF icap_enable on @@ -1346,7 +1374,7 @@ EOF; if (!isset($clamav_clamd_enable)) $rc_file.='clamav_clamd_enable="YES"'."\n"; file_put_contents("/etc/rc.conf.local",$rc_file,LOCK_EX); - + squid_check_clamav_user('clamav'); #patch sample files to pfsense dirs #squidclamav.conf if (!file_exists(SQUID_LOCALBASE."/etc/c-icap/squidclamav.conf.sample")) @@ -1391,9 +1419,13 @@ EOF; foreach ($dirs as $dir_path => $dir_user){ if (!is_dir($dir_path)) make_dirs($dir_path); - squid_chown_recursive($dir_path, $dir_user, $dir_user); + squid_chown_recursive($dir_path, $dir_user, "wheel"); + } + #Check clamav database + if (count(glob("/var/db/clamav/*d"))==0){ + log_error("Squid - Missing /var/db/clamav/*.cvd or *.cld files. Running freshclam on background."); + mwexec_bg(SQUID_LOCALBASE."/bin/freshclam"); } - #check startup scripts on pfsense > 2.1 if (preg_match("/usr.pbi/",SQUID_LOCALBASE)){ $rcd_files = scandir(SQUID_LOCALBASE."/etc/rc.d"); @@ -1410,7 +1442,7 @@ EOF; #check antivirus daemons #check icap if (is_process_running("c-icap")){ - mwexec('/bin/echo -n "reconfigure" > /var/run/c-icap/c-icap.ctl'); + mwexec_bg('/bin/echo -n "reconfigure" > /var/run/c-icap/c-icap.ctl'); } else{ #check c-icap user on startup file @@ -1421,13 +1453,13 @@ EOF; $cicapr[0]='c_icap_user="clamav"}'; file_put_contents($c_icap_rcfile,preg_replace($cicapm,$cicapr,$sample_file),LOCK_EX); } - mwexec("/usr/local/etc/rc.d/c-icap start"); + mwexec_bg("/usr/local/etc/rc.d/c-icap start"); } #check clamav if (is_process_running("clamd")) mwexec_bg("/usr/local/etc/rc.d/clamav-clamd reload"); else - mwexec("/usr/local/etc/rc.d/clamav-clamd start"); + mwexec_bg("/usr/local/etc/rc.d/clamav-clamd start"); } return $conf; } @@ -1533,12 +1565,12 @@ include('/usr/local/pkg/squid_reverse.inc'); function squid_resync_auth() { global $config, $valid_acls; - - if (is_array($config['installedpackages']['squidauth']['config'])) - $settings = $config['installedpackages']['squidauth']['config'][0]; - else - $settings = array(); - + $write_config=0; + if (!is_array($config['installedpackages']['squidauth']['config'])){ + $config['installedpackages']['squidauth']['config'][]=array('auth_method'=> "none"); + $write_config++; + } + $settings = $config['installedpackages']['squidauth']['config'][0]; if (is_array($config['installedpackages']['squidnac']['config'])) $settingsnac = $config['installedpackages']['squidnac']['config'][0]; else @@ -1549,6 +1581,9 @@ function squid_resync_auth() { else $settingsconfig = array(); + if ($write_config > 0) + write_config(); + $conf = ''; // SSL interception acl options part 1 diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 908ebf47..483e802a 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -965,7 +965,7 @@ http://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network - 3.3.10 pkg 2.2 + 3.3.10 pkg 2.2.1 beta 2.2 marcellocoutinho@gmail.com fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org diff --git a/pkg_config.8.xml b/pkg_config.8.xml index c7444674..f050f718 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -1262,7 +1262,7 @@ http://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network - 3.3.10 pkg 2.2 + 3.3.10 pkg 2.2.1 beta 2.0 marcellocoutinho@gmail.com fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 6ec9dca0..7ce216b9 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -1249,7 +1249,7 @@ http://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network - 3.3.10 pkg 2.2 + 3.3.10 pkg 2.2.1 beta 2.0 marcellocoutinho@gmail.com fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org -- cgit v1.2.3 From 04205b537352d88afd2f2dd0be9ab1944e97160d Mon Sep 17 00:00:00 2001 From: PiBa-NL Date: Thu, 6 Mar 2014 00:28:56 +0100 Subject: haproxy-devel, make stats-tab refresh timers configurable. --- config/haproxy-devel/haproxy.inc | 3 ++- config/haproxy-devel/haproxy_global.php | 26 +++++++++++++++++++++++++- config/haproxy-devel/haproxy_stats.php | 5 +++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/config/haproxy-devel/haproxy.inc b/config/haproxy-devel/haproxy.inc index 9bc0dd80..a34b20d8 100644 --- a/config/haproxy-devel/haproxy.inc +++ b/config/haproxy-devel/haproxy.inc @@ -733,7 +733,8 @@ function haproxy_writeconf($configpath) { fwrite ($fd, "\tbind 127.0.0.1:$localstatsport\n"); fwrite ($fd, "\tmode http\n"); fwrite ($fd, "\tstats enable\n"); - fwrite ($fd, "\tstats refresh 10\n"); + if (is_numeric($a_global['localstats_refreshtime'])) + fwrite ($fd, "\tstats refresh {$a_global['localstats_refreshtime']}\n"); fwrite ($fd, "\tstats admin if TRUE\n"); fwrite ($fd, "\tstats uri /haproxy_stats.php?haproxystats=1\n"); fwrite ($fd, "\ttimeout client 5000\n"); diff --git a/config/haproxy-devel/haproxy_global.php b/config/haproxy-devel/haproxy_global.php index 8264558f..1419e756 100755 --- a/config/haproxy-devel/haproxy_global.php +++ b/config/haproxy-devel/haproxy_global.php @@ -36,6 +36,8 @@ require_once("haproxy_utils.inc"); require_once("globals.inc"); require_once("pkg_haproxy_tabs.inc"); +$simplefields = array('localstats_refreshtime','localstats_sticktable_refreshtime'); + if (!is_array($config['installedpackages']['haproxy'])) $config['installedpackages']['haproxy'] = array(); @@ -68,7 +70,13 @@ if ($_POST) { $input_errors[] = "The maximum number of connections should be numeric."; if ($_POST['localstatsport'] && (!is_numeric($_POST['localstatsport']))) - $input_errors[] = "The local stats port should be numeric."; + $input_errors[] = "The local stats port should be numeric or empty."; + + if ($_POST['localstats_refreshtime'] && (!is_numeric($_POST['localstats_refreshtime']))) + $input_errors[] = "The local stats refresh time should be numeric or empty."; + + if ($_POST['localstats_sticktable_refreshtime'] && (!is_numeric($_POST['localstats_sticktable_refreshtime']))) + $input_errors[] = "The local stats sticktable refresh time should be numeric or empty."; /*if($_POST['synchost1'] && !is_ipaddr($_POST['synchost1'])) $input_errors[] = "Synchost1 needs to be an IPAddress."; @@ -93,6 +101,8 @@ if ($_POST) { $config['installedpackages']['haproxy']['localstatsport'] = $_POST['localstatsport'] ? $_POST['localstatsport'] : false; $config['installedpackages']['haproxy']['advanced'] = $_POST['advanced'] ? base64_encode($_POST['advanced']) : false; $config['installedpackages']['haproxy']['nbproc'] = $_POST['nbproc'] ? $_POST['nbproc'] : false; + foreach($simplefields as $stat) + $config['installedpackages']['haproxy'][$stat] = $_POST[$stat]; touch($d_haproxyconfdirty_path); write_config(); } @@ -114,6 +124,8 @@ $pconfig['carpdev'] = $config['installedpackages']['haproxy']['carpdev']; $pconfig['localstatsport'] = $config['installedpackages']['haproxy']['localstatsport']; $pconfig['advanced'] = base64_decode($config['installedpackages']['haproxy']['advanced']); $pconfig['nbproc'] = $config['installedpackages']['haproxy']['nbproc']; +foreach($simplefields as $stat) + $pconfig[$stat] = $config['installedpackages']['haproxy'][$stat]; // defaults if (!$pconfig['logfacility']) @@ -351,6 +363,18 @@ function enable_change(enable_change) { Leave this setting empty to remove the "HAProxyLocalStats" item from the stats page and save a little on recources. + + + + + + + + diff --git a/config/haproxy-devel/haproxy_stats.php b/config/haproxy-devel/haproxy_stats.php index 8ad04c92..752bd8d7 100644 --- a/config/haproxy-devel/haproxy_stats.php +++ b/config/haproxy-devel/haproxy_stats.php @@ -65,7 +65,8 @@ if (isset($_GET['haproxystats']) || isset($_GET['scope']) || (isset($_POST) && i } require_once("guiconfig.inc"); if (isset($_GET['showsticktablecontent'])){ - header("Refresh: 2"); + if (is_numeric($pconfig['localstats_sticktable_refreshtime'])) + header("Refresh: {$pconfig['localstats_sticktable_refreshtime']}"); } $shortcut_section = "haproxy"; require_once("haproxy.inc"); @@ -163,7 +164,7 @@ include("head.inc"); if (isset($_GET['showsticktablecontent'])){ $sticktablename = $_GET['showsticktablecontent']; echo " + + + -- cgit v1.2.3 From 3400ffcd318018dd32f96de6927bd445c35ca872 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 15:46:19 -0500 Subject: Fix logic error preventing disabling of Suricata interfaces. --- config/suricata/suricata_interfaces_edit.php | 57 +++++++++++++++++++++------- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php index d7b5a8cb..46d2aa1d 100644 --- a/config/suricata/suricata_interfaces_edit.php +++ b/config/suricata/suricata_interfaces_edit.php @@ -40,10 +40,11 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_rule = &$config['installedpackages']['suricata']['rule']; -if ($_GET['id']); - $id = htmlspecialchars($_GET['id'], ENT_QUOTES | ENT_HTML401); if ($_POST['id']) $id = $_POST['id']; +elseif ($_GET['id']); + $id = htmlspecialchars($_GET['id'], ENT_QUOTES | ENT_HTML401); + if (is_null($id)) $id = 0; @@ -71,8 +72,8 @@ if (isset($id) && $a_rule[$id]) { if (empty($pconfig['uuid'])) $pconfig['uuid'] = $suricata_uuid; } -// Must be a new interface, so try to pick next available physical interface to use elseif (isset($id) && !isset($a_rule[$id])) { + // Must be a new interface, so try to pick next available physical interface to use $ifaces = get_configured_interface_list(); $ifrules = array(); foreach($a_rule as $r) @@ -95,8 +96,6 @@ if (empty($pconfig['blockoffendersip'])) $pconfig['blockoffendersip'] = "both"; if (empty($pconfig['max_pending_packets'])) $pconfig['max_pending_packets'] = "1024"; -if (empty($pconfig['inspect_recursion_limit'])) - $pconfig['inspect_recursion_limit'] = "3000"; if (empty($pconfig['detect_eng_profile'])) $pconfig['detect_eng_profile'] = "medium"; if (empty($pconfig['mpm_algo'])) @@ -127,17 +126,49 @@ if (empty($pconfig['max_pcap_log_files'])) $pconfig['max_pcap_log_files'] = "1000"; if ($_POST["save"]) { - if (!$_POST['interface']) + // If the interface is not enabled, stop any running Suricata + // instance on it, save the new state and exit. + if (!isset($_POST['enable'])) { + if (isset($id) && $a_rule[$id]) { + $a_rule[$id]['enable'] = 'off'; + $a_rule[$id]['interface'] = htmlspecialchars($_POST['interface']); + $a_rule[$id]['descr'] = htmlspecialchars($_POST['descr']); + suricata_stop($a_rule[$id], get_real_interface($a_rule[$id]['interface'])); + + // Save configuration changes + write_config(); + + // Update suricata.conf and suricata.sh files for this interface + sync_suricata_package_config(); + + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + header("Location: /suricata/suricata_interfaces.php"); + exit; + } + } + + // Validate inputs + if (!isset($_POST['interface'])) $input_errors[] = gettext("Choosing an Interface is mandatory!"); + if (isset($_POST['stats_upd_interval']) && !is_numericint($_POST['stats_upd_interval'])) + $input_errors[] = gettext("The value for Stats Update Interval must contain only digits and evaluate to an integer."); + if ($_POST['max_pending_packets'] < 1 || $_POST['max_pending_packets'] > 65000) $input_errors[] = gettext("The value for Maximum-Pending-Packets must be between 1 and 65,000!"); - if (!empty($_POST['max_pcap_log_size']) && !is_numeric($_POST['max_pcap_log_size'])) + if (isset($_POST['max_pcap_log_size']) && !is_numeric($_POST['max_pcap_log_size'])) $input_errors[] = gettext("The value for 'Max Packet Log Size' must be numbers only. Do not include any alphabetic characters."); - if (!empty($_POST['max_pcap_log_files']) && !is_numeric($_POST['max_pcap_log_files'])) - $input_errors[] = gettext("The value for 'Max Packet Log Files' must be numbers only."); + if (isset($_POST['max_pcap_log_files']) && !is_numeric($_POST['max_pcap_log_files'])) + $input_errors[] = gettext("The value for 'Max Packet Log Files' must be numbers only."); + + if (!empty($_POST['inspect_recursion_limit']) && !is_numeric($_POST['inspect_recursion_limit'])) + $input_errors[] = gettext("The value for Inspect Recursion Limit can either be blank or contain only digits evaluating to an integer greater than or equal to 0."); // if no errors write to suricata.yaml if (!$input_errors) { @@ -146,12 +177,12 @@ if ($_POST["save"]) { $natent['enable'] = $_POST['enable'] ? 'on' : 'off'; $natent['uuid'] = $pconfig['uuid']; - if ($_POST['descr']) $natent['descr'] = $_POST['descr']; else $natent['descr'] = strtoupper($natent['interface']); + if ($_POST['descr']) $natent['descr'] = htmlspecialchars($_POST['descr']); else $natent['descr'] = strtoupper($natent['interface']); if ($_POST['max_pcap_log_size']) $natent['max_pcap_log_size'] = $_POST['max_pcap_log_size']; else unset($natent['max_pcap_log_size']); if ($_POST['max_pcap_log_files']) $natent['max_pcap_log_files'] = $_POST['max_pcap_log_files']; else unset($natent['max_pcap_log_files']); if ($_POST['enable_stats_log'] == "on") { $natent['enable_stats_log'] = 'on'; }else{ $natent['enable_stats_log'] = 'off'; } if ($_POST['append_stats_log'] == "on") { $natent['append_stats_log'] = 'on'; }else{ $natent['append_stats_log'] = 'off'; } - if ($_POST['stats_upd_interval']) $natent['stats_upd_interval'] = $_POST['stats_upd_interval']; else $natent['stats_upd_interval'] = "10"; + if ($_POST['stats_upd_interval'] >= 1) $natent['stats_upd_interval'] = $_POST['stats_upd_interval']; else $natent['stats_upd_interval'] = "10"; if ($_POST['enable_http_log'] == "on") { $natent['enable_http_log'] = 'on'; }else{ $natent['enable_http_log'] = 'off'; } if ($_POST['append_http_log'] == "on") { $natent['append_http_log'] = 'on'; }else{ $natent['append_http_log'] = 'off'; } if ($_POST['enable_tls_log'] == "on") { $natent['enable_tls_log'] = 'on'; }else{ $natent['enable_tls_log'] = 'off'; } @@ -163,7 +194,7 @@ if ($_POST["save"]) { if ($_POST['enable_tracked_files_md5'] == "on") { $natent['enable_tracked_files_md5'] = 'on'; }else{ $natent['enable_tracked_files_md5'] = 'off'; } if ($_POST['enable_file_store'] == "on") { $natent['enable_file_store'] = 'on'; }else{ $natent['enable_file_store'] = 'off'; } if ($_POST['max_pending_packets']) $natent['max_pending_packets'] = $_POST['max_pending_packets']; else unset($natent['max_pending_packets']); - if ($_POST['inspect_recursion_limit']) $natent['inspect_recursion_limit'] = $_POST['inspect_recursion_limit']; else unset($natent['inspect_recursion_limit']); + if ($_POST['inspect_recursion_limit'] >= '0') $natent['inspect_recursion_limit'] = $_POST['inspect_recursion_limit']; else unset($natent['inspect_recursion_limit']); if ($_POST['detect_eng_profile']) $natent['detect_eng_profile'] = $_POST['detect_eng_profile']; else unset($natent['detect_eng_profile']); if ($_POST['mpm_algo']) $natent['mpm_algo'] = $_POST['mpm_algo']; else unset($natent['mpm_algo']); if ($_POST['sgh_mpm_context']) $natent['sgh_mpm_context'] = $_POST['sgh_mpm_context']; else unset($natent['sgh_mpm_context']); @@ -347,7 +378,7 @@ if ($savemsg) { +
    -- cgit v1.2.3 From 7a22fff9519edd7375a935e80f2b2df69e7834e2 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 15:49:27 -0500 Subject: Remove inet_ntop and inet_pton calls plus tidy up some HTML. --- config/suricata/suricata_alerts.php | 47 ++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index 29002251..46a68b56 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -121,12 +121,12 @@ function suricata_add_supplist_entry($suppress) { return false; } -if ($_POST['instance']) +if (is_numericint($_POST['instance'])) $instanceid = $_POST['instance']; -// This is for the auto-refresh so wecan stay on the same interface -if (is_numeric($_GET['instance'])) +// This is for the auto-refresh so we can stay on the same interface +if (is_numericint($_GET['instance'])) $instanceid = $_GET['instance']; -if (empty($instanceid)) +if (is_null($instanceid)) $instanceid = 0; if (!is_array($config['installedpackages']['suricata']['rule'])) @@ -191,7 +191,7 @@ if (($_POST['addsuppress_srcip'] || $_POST['addsuppress_dstip'] || $_POST['addsu case "by_src": case "by_dst": // Check for valid IP addresses, exit if not valid - if (is_ipaddr($_POST['ip']) || is_ipaddrv6($_POST['ip'])) { + if (is_ipaddr($_POST['ip'])) { if (empty($_POST['descr'])) $suppress = "suppress gen_id {$_POST['gen_id']}, sig_id {$_POST['sidid']}, track {$method}, ip {$_POST['ip']}\n"; else @@ -212,6 +212,7 @@ if (($_POST['addsuppress_srcip'] || $_POST['addsuppress_dstip'] || $_POST['addsu if (suricata_add_supplist_entry($suppress)) { suricata_reload_config($a_instance[$instanceid]); $savemsg = $success; + sleep(2); } else $input_errors[] = gettext("Suppress List '{$a_instance[$instanceid]['suppresslistname']}' is defined for this interface, but it could not be found!"); @@ -269,8 +270,9 @@ if ($_POST['togglesid'] && is_numeric($_POST['sidid']) && is_numeric($_POST['gen /* Signal Suricata to live-load the new rules */ suricata_reload_config($a_instance[$instanceid]); + sleep(2); - $savemsg = gettext("The state for rule {$gid}:{$sid} has been modified. Suricata is 'live-reloading' the new rules list. Please wait at least 30 secs for the process to complete before toggling additional rules."); + $savemsg = gettext("The state for rule {$gid}:{$sid} has been modified. Suricata is 'live-reloading' the new rules list. Please wait at least 15 secs for the process to complete before toggling additional rules."); } if ($_POST['delete']) { @@ -380,22 +382,23 @@ if ($savemsg) { @@ -444,7 +447,7 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo /* File format timestamp,action,sig_generator,sig_id,sig_rev,msg,classification,priority,proto,src,srcport,dst,dstport */ $fd = fopen("/tmp/alerts_suricata{$suricata_uuid}", "r"); while (($fields = fgetcsv($fd, 1000, ',', '"')) !== FALSE) { - if(count($fields) < 12) + if(count($fields) < 13) continue; // Create a DateTime object from the event timestamp that @@ -468,7 +471,7 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo /* Protocol */ $alert_proto = $fields[8]; /* IP SRC */ - $alert_ip_src = inet_ntop(inet_pton($fields[9])); + $alert_ip_src = $fields[9]; /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_src = str_replace(":", ":​", $alert_ip_src); /* Add Reverse DNS lookup icons */ @@ -497,7 +500,7 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo /* IP SRC Port */ $alert_src_p = $fields[10]; /* IP Destination */ - $alert_ip_dst = inet_ntop(inet_pton($fields[11])); + $alert_ip_dst = $fields[11]; /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_dst = str_replace(":", ":​", $alert_ip_dst); /* Add Reverse DNS lookup icons */ @@ -520,8 +523,8 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo } /* Add icon for auto-removing from Blocked Table if required */ // if (isset($tmpblocked[$fields[11]])) { -// $alert_ip_src .= " "; +// $alert_ip_dst .= " "; // } /* IP DST Port */ $alert_dst_p = $fields[12]; -- cgit v1.2.3 From 08c5a4d7d40b0ce059daa832a231a95f46946c14 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 15:50:45 -0500 Subject: Add sid-msg.map v2 format capability and tidy up some funtions. --- config/suricata/suricata.inc | 142 +++++++++++++++++++++++-------------------- 1 file changed, 77 insertions(+), 65 deletions(-) diff --git a/config/suricata/suricata.inc b/config/suricata/suricata.inc index 1b6f5eb3..5c052cd2 100644 --- a/config/suricata/suricata.inc +++ b/config/suricata/suricata.inc @@ -77,16 +77,12 @@ function suricata_generate_id() { } function suricata_is_running($suricata_uuid, $if_real, $type = 'suricata') { - global $config, $g; - - if (isvalidpid("{$g['varrun_path']}/{$type}_{$if_real}{$suricata_uuid}.pid")) - return true; - else - return false; + global $g; + return isvalidpid("{$g['varrun_path']}/{$type}_{$if_real}{$suricata_uuid}.pid"); } function suricata_barnyard_stop($suricatacfg, $if_real) { - global $config, $g; + global $g; $suricata_uuid = $suricatacfg['uuid']; if (isvalidpid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid")) { @@ -96,13 +92,13 @@ function suricata_barnyard_stop($suricatacfg, $if_real) { } function suricata_stop($suricatacfg, $if_real) { - global $config, $g; + global $g; $suricata_uuid = $suricatacfg['uuid']; if (isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { log_error("[Suricata] Suricata STOP for {$suricatacfg['descr']}({$if_real})..."); killbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); - sleep(2); + sleep(1); // For some reason Suricata seems to need a double TERM signal to actually shutdown if (isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) @@ -113,7 +109,7 @@ function suricata_stop($suricatacfg, $if_real) { } function suricata_barnyard_start($suricatacfg, $if_real) { - global $config, $g; + global $g; $suricata_uuid = $suricatacfg['uuid']; $suricatadir = SURICATADIR . "suricata_{$suricata_uuid}_{$if_real}"; @@ -121,19 +117,19 @@ function suricata_barnyard_start($suricatacfg, $if_real) { if ($suricatacfg['barnyard_enable'] == 'on') { log_error("[Suricata] Barnyard2 START for {$suricatacfg['descr']}({$if_real})..."); - exec("/usr/local/bin/barnyard2 -r {$suricata_uuid} -f unified2.alert --pid-path {$g['varrun_path']} --nolock-pidfile -c {$suricatadir}/barnyard2.conf -d {$suricatalogdir} -D -q"); + mwexec_bg("/usr/local/bin/barnyard2 -r {$suricata_uuid} -f unified2.alert --pid-path {$g['varrun_path']} --nolock-pidfile -c {$suricatadir}/barnyard2.conf -d {$suricatalogdir} -D -q"); } } function suricata_start($suricatacfg, $if_real) { - global $config, $g; + global $g; $suricatadir = SURICATADIR; $suricata_uuid = $suricatacfg['uuid']; if ($suricatacfg['enable'] == 'on') { log_error("[Suricata] Suricata START for {$suricatacfg['descr']}({$if_real})..."); - exec("/usr/local/bin/suricata -i {$if_real} -D -c {$suricatadir}suricata_{$suricata_uuid}_{$if_real}/suricata.yaml --pidfile {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); + mwexec_bg("/usr/local/bin/suricata -i {$if_real} -D -c {$suricatadir}suricata_{$suricata_uuid}_{$if_real}/suricata.yaml --pidfile {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); } else return; @@ -154,7 +150,7 @@ function suricata_reload_config($suricatacfg, $signal="USR2") { /* */ /* $signal = USR2 (default) parses and reloads config. */ /**************************************************************/ - global $config, $g; + global $g; $suricatadir = SURICATADIR; $suricata_uuid = $suricatacfg['uuid']; @@ -166,8 +162,8 @@ function suricata_reload_config($suricatacfg, $signal="USR2") { /******************************************************/ if (isvalidpid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { log_error("[Suricata] Suricata LIVE RULE RELOAD initiated for {$suricatacfg['descr']} ({$if_real})..."); - sigkillbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid", $signal); -// exec("/bin/pkill -{$signal} -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid 2>&1 &"); +// sigkillbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid", $signal); + mwexec_bg("/bin/pkill -{$signal} -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid"); } } @@ -183,7 +179,7 @@ function suricata_barnyard_reload_config($suricatacfg, $signal="HUP") { /* */ /* $signal = HUP (default) parses and reloads config. */ /**************************************************************/ - global $config, $g; + global $g; $suricatadir = SURICATADIR; $suricata_uuid = $suricatacfg['uuid']; @@ -195,8 +191,8 @@ function suricata_barnyard_reload_config($suricatacfg, $signal="HUP") { /******************************************************/ if (isvalidpid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid")) { log_error("[Suricata] Barnyard2 CONFIG RELOAD initiated for {$suricatacfg['descr']} ({$if_real})..."); - sigkillbypid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid", $signal); -// exec("/bin/pkill -{$signal} -F {$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid 2>&1 &"); +// sigkillbypid("{$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid", $signal); + mwexec_bg("/bin/pkill -{$signal} -F {$g['varrun_path']}/barnyard2_{$if_real}{$suricata_uuid}.pid"); } } @@ -698,16 +694,28 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { /*************************************************************/ /* This function reads all the rules file in the passed */ /* $rules_path variable and produces a properly formatted */ - /* sid-msg.map file for use by Suricata and/or barnyard2. */ + /* sid-msg.map v2 file for use by Suricata and barnyard2. */ + /* */ + /* This function produces the new v2 format sid-msg.map */ + /* with the field layout as follows: */ + /* */ + /* GID || SID || REV || CLASSTYPE || PRI || MSG || REF ... */ + /* */ + /* On Entry: $rules_path --> array or directory of files */ + /* or a single file containing */ + /* the rules to read. */ + /* $sid_file --> the complete destination path */ + /* and filename for the output */ + /* sid-msg.map file. */ /*************************************************************/ $sidMap = array(); $rule_files = array(); - // First check if we were passed a directory, a single file - // or an array of filenames to read. Set our $rule_files - // variable accordingly. If we can't figure it out, return - // and don't write a sid_msg_map file. + /* First check if we were passed a directory, a single file */ + /* or an array of filenames to read. Set our $rule_files */ + /* variable accordingly. If we can't figure it out, return */ + /* and don't write a sid-msg.map file. */ if (is_string($rules_path)) { if (is_dir($rules_path)) $rule_files = glob($rules_path . "*.rules"); @@ -719,14 +727,14 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { else return; - // Read the rule files into an array, then iterate the list + /* Read the rule files into an array, then iterate the list */ foreach ($rule_files as $file) { - // Don't process files with "deleted" in the filename + /* Don't process files with "deleted" in the filename */ if (stristr($file, "deleted")) continue; - // Read the file into an array, skipping missing files. + /* Read the file into an array, skipping missing files. */ if (!file_exists($file)) continue; @@ -734,24 +742,24 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { $record = ""; $b_Multiline = false; - // Read and process each line from the rules in the current file + /* Read and process each line from the rules in the current file */ foreach ($rules_array as $rule) { - // Skip any non-rule lines unless we're in multiline mode. + /* Skip any non-rule lines unless we're in multiline mode. */ if (!preg_match('/^\s*#*\s*(alert|drop|pass)/i', $rule) && !$b_Multiline) continue; - // Test for a multi-line rule, and reassemble the - // pieces back into a single line. + /* Test for a multi-line rule, and reassemble the */ + /* pieces back into a single line. */ if (preg_match('/\\\\s*[\n]$/m', $rule)) { $rule = substr($rule, 0, strrpos($rule, '\\')); $record .= $rule; $b_Multiline = true; continue; } - // If the last segment of a multiline rule, then - // append it onto the previous parts to form a - // single-line rule for further processing below. + /* If the last segment of a multiline rule, then */ + /* append it onto the previous parts to form a */ + /* single-line rule for further processing below. */ elseif (!preg_match('/\\\\s*[\n]$/m', $rule) && $b_Multiline) { $record .= $rule; $rule = $record; @@ -759,8 +767,12 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { $b_Multiline = false; $record = ""; - // Parse the rule to find sid and any references. + /* Parse the rule to find sid and any references. */ + $gid = '1'; // default to 1 for regular rules $sid = ''; + $rev = ''; + $classtype = 'NOCLASS'; // required default for v2 format + $priority = '0'; // required default for v2 format $msg = ''; $matches = ''; $sidEntry = ''; @@ -768,23 +780,32 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { $msg = trim($matches[1]); if (preg_match('/\bsid\s*:\s*(\d+)\s*;/i', $rule, $matches)) $sid = trim($matches[1]); - if (!empty($sid) && !empty($msg)) { - $sidEntry = $sid . ' || ' . $msg; + if (preg_match('/\bgid\s*:\s*(\d+)\s*;/i', $rule, $matches)) + $gid = trim($matches[1]); + if (preg_match('/\brev\s*:\s*([^\;]+)/i', $rule, $matches)) + $rev = trim($matches[1]); + if (preg_match('/\bclasstype\s*:\s*([^\;]+)/i', $rule, $matches)) + $classtype = trim($matches[1]); + if (preg_match('/\bpriority\s*:\s*([^\;]+)/i', $rule, $matches)) + $priority = trim($matches[1]); + + if (!empty($gid) && !empty($sid) && !empty($msg)) { + $sidEntry = $gid . ' || ' . $sid . ' || ' . $rev . ' || ' . $classtype . ' || '; + $sidEntry .= $priority . ' || ' . $msg; preg_match_all('/\breference\s*:\s*([^\;]+)/i', $rule, $matches); foreach ($matches[1] as $ref) $sidEntry .= " || " . trim($ref); $sidEntry .= "\n"; - if (!is_array($sidMap[$sid])) - $sidMap[$sid] = array(); - $sidMap[$sid] = $sidEntry; + $sidMap[] = $sidEntry; } } } - // Sort the generated sid-msg map by sid - ksort($sidMap); + /* Sort the generated sid-msg map */ + natcasesort($sidMap); - // Now print the result to the supplied file - @file_put_contents($sid_file, array_values($sidMap)); + /* Now print the result to the supplied file */ + @file_put_contents($sid_file, "#v2\n# sid-msg.map file auto-generated by Snort.\n\n"); + @file_put_contents($sid_file, array_values($sidMap), FILE_APPEND); } function suricata_merge_reference_configs($cfg_in, $cfg_out) { @@ -1688,27 +1709,18 @@ function suricata_create_rc() { $start_barnyard = <</dev/null; do - sleep 1 - time=\$((time+1)) - if [ \$time -gt \$timeout ]; then - break - fi - done - if [ -f /var/run/barnyard2_{$if_real}{$suricata_uuid}.pid ]; then - /bin/rm /var/run/barnyard2_{$if_real}{$suricata_uuid}.pid - fi + /usr/bin/logger -p daemon.info -i -t SuricataStartup "Barnyard2 SOFT RESTART for {$value['descr']}({$suricata_uuid}_{$if_real})..." + /bin/pkill -HUP \$pid + else + /usr/bin/logger -p daemon.info -i -t SuricataStartup "Barnyard2 START for {$value['descr']}({$suricata_uuid}_{$if_real})..." + /usr/local/bin/barnyard2 -r {$suricata_uuid} -f unified2.alert --pid-path {$g['varrun_path']} --nolock-pidfile -c {$suricatadir}suricata_{$suricata_uuid}_{$if_real}/barnyard2.conf -d {$suricatalogdir}suricata_{$if_real}{$suricata_uuid} -D -q fi - /usr/bin/logger -p daemon.info -i -t SuricataStartup "Barnyard2 START for {$value['descr']}({$suricata_uuid}_{$if_real})..." - /usr/local/bin/barnyard2 -r {$suricata_uuid} -f unified2.alert --pid-path {$g['varrun_path']} --nolock-pidfile -c {$suricatadir}suricata_{$suricata_uuid}_{$if_real}/barnyard2.conf -d {$suricatalogdir}suricata_{$if_real}{$suricata_uuid} -D -q EOE; $stop_barnyard2 = <</dev/null; do sleep 1 @@ -1754,7 +1766,7 @@ EOE; ###### For Each Iface # Start suricata and barnyard2 if [ ! -f {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid ]; then - pid=`/bin/pgrep -f "suricata -i {$if_real} "` + pid=`/bin/pgrep -fn "suricata -i {$if_real} "` else pid=`/bin/pgrep -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid` fi @@ -1790,10 +1802,10 @@ EOE; /bin/rm /var/run/suricata_{$if_real}{$suricata_uuid}.pid fi else - pid=`/bin/pgrep -f "suricata -i {$if_real} "` + pid=`/bin/pgrep -fn "suricata -i {$if_real} "` if [ ! -z \$pid ]; then /usr/bin/logger -p daemon.info -i -t SuricataStartup "Suricata STOP for {$value['descr']}({$suricata_uuid}_{$if_real})..." - /bin/pkill -TERM -f "suricata -i {$if_real} " + /bin/pkill -TERM -fn "suricata -i {$if_real} " time=0 timeout=30 while /bin/kill -TERM \$pid 2>/dev/null; do sleep 1 -- cgit v1.2.3 From 62a833a2b268b4374bdba95b13c117470d380786 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 15:53:08 -0500 Subject: Increase rigor of $_POST and $_GET parameter value validation. --- config/suricata/suricata_rules.php | 19 ++++++++------ config/suricata/suricata_rules_edit.php | 39 +++++++++++------------------ config/suricata/suricata_rules_flowbits.php | 5 ++-- 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php index 1a0c54b5..85427e6f 100644 --- a/config/suricata/suricata_rules.php +++ b/config/suricata/suricata_rules.php @@ -40,10 +40,11 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_rule = &$config['installedpackages']['suricata']['rule']; -if ($_GET['id']) - $id = $_GET['id']; -if ($_POST['id']) +if (isset($_POST['id'])) $id = $_POST['id']; +elseif (isset($_GET['id']) && is_numericint($_GET['id'])) + $id = htmlspecialchars($_GET['id']); + if (is_null($id)) { $id = 0; } @@ -95,6 +96,10 @@ $emergingdownload = $config['installedpackages']['suricata']['config'][0]['enabl $etpro = $config['installedpackages']['suricata']['config'][0]['enable_etpro_rules']; $categories = explode("||", $pconfig['rulesets']); +// Add any previously saved rules files to the categories array +if (!empty($pconfig['rulesets'])) + $categories = explode("||", $pconfig['rulesets']); + if ($_GET['openruleset']) $currentruleset = htmlspecialchars($_GET['openruleset'], ENT_QUOTES | ENT_HTML401); elseif ($_POST['selectbox']) @@ -463,7 +468,7 @@ if ($savemsg) { + gettext("When finished, click APPLY to send any SID enable/disable changes made on this tab to the running Suricata process."); ?> -- cgit v1.2.3 From 6d7dad52b45aae7faab7dd1863b0ef85d365d18e Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 16:01:41 -0500 Subject: Remove bogus query string from ALERTS hyperlink tab. --- config/suricata/suricata_suppress.php | 2 +- config/suricata/suricata_suppress_edit.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/suricata/suricata_suppress.php b/config/suricata/suricata_suppress.php index e97006dc..12227f3d 100644 --- a/config/suricata/suricata_suppress.php +++ b/config/suricata/suricata_suppress.php @@ -122,7 +122,7 @@ if ($input_errors) { $tab_array[] = array(gettext("Suricata Interfaces"), false, "/suricata/suricata_interfaces.php"); $tab_array[] = array(gettext("Global Settings"), false, "/suricata/suricata_global.php"); $tab_array[] = array(gettext("Update Rules"), false, "/suricata/suricata_download_updates.php"); - $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php?instance={$instanceid}"); + $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php"); $tab_array[] = array(gettext("Suppress"), true, "/suricata/suricata_suppress.php"); $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php"); display_top_tabs($tab_array); diff --git a/config/suricata/suricata_suppress_edit.php b/config/suricata/suricata_suppress_edit.php index c2c23f10..3d5bad27 100644 --- a/config/suricata/suricata_suppress_edit.php +++ b/config/suricata/suricata_suppress_edit.php @@ -142,7 +142,7 @@ if ($savemsg) $tab_array[] = array(gettext("Interfaces"), false, "/suricata/suricata_interfaces.php"); $tab_array[] = array(gettext("Global Settings"), false, "/suricata/suricata_global.php"); $tab_array[] = array(gettext("Update Rules"), false, "/suricata/suricata_download_updates.php"); - $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php?instance={$instanceid}"); + $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php"); $tab_array[] = array(gettext("Suppress"), true, "/suricata/suricata_suppress.php"); display_top_tabs($tab_array); ?> -- cgit v1.2.3 From c7526cc17efff74791562bfe0f01dfa21ebfed8d Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 16:25:47 -0500 Subject: Change "Snort" back to "Suricata" from copy-paste mistake. --- config/suricata/suricata.inc | 34 ++++++++++++++++----------------- config/suricata/suricata_rules_edit.php | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/config/suricata/suricata.inc b/config/suricata/suricata.inc index 5c052cd2..2660fae6 100644 --- a/config/suricata/suricata.inc +++ b/config/suricata/suricata.inc @@ -712,10 +712,10 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { $sidMap = array(); $rule_files = array(); - /* First check if we were passed a directory, a single file */ - /* or an array of filenames to read. Set our $rule_files */ - /* variable accordingly. If we can't figure it out, return */ - /* and don't write a sid-msg.map file. */ + // First check if we were passed a directory, a single file + // or an array of filenames to read. Set our $rule_files + // variable accordingly. If we can't figure it out, return + // and don't write a sid-msg.map file. if (is_string($rules_path)) { if (is_dir($rules_path)) $rule_files = glob($rules_path . "*.rules"); @@ -727,14 +727,14 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { else return; - /* Read the rule files into an array, then iterate the list */ + // Read the rule files into an array, then iterate the list foreach ($rule_files as $file) { - /* Don't process files with "deleted" in the filename */ + // Don't process files with "deleted" in the filename if (stristr($file, "deleted")) continue; - /* Read the file into an array, skipping missing files. */ + // Read the file into an array, skipping missing files. if (!file_exists($file)) continue; @@ -742,24 +742,24 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { $record = ""; $b_Multiline = false; - /* Read and process each line from the rules in the current file */ + // Read and process each line from the rules in the current file foreach ($rules_array as $rule) { - /* Skip any non-rule lines unless we're in multiline mode. */ + // Skip any non-rule lines unless we're in multiline mode. if (!preg_match('/^\s*#*\s*(alert|drop|pass)/i', $rule) && !$b_Multiline) continue; - /* Test for a multi-line rule, and reassemble the */ - /* pieces back into a single line. */ + // Test for a multi-line rule, and reassemble the + // pieces back into a single line. if (preg_match('/\\\\s*[\n]$/m', $rule)) { $rule = substr($rule, 0, strrpos($rule, '\\')); $record .= $rule; $b_Multiline = true; continue; } - /* If the last segment of a multiline rule, then */ - /* append it onto the previous parts to form a */ - /* single-line rule for further processing below. */ + // If the last segment of a multiline rule, then + // append it onto the previous parts to form a + // single-line rule for further processing below. elseif (!preg_match('/\\\\s*[\n]$/m', $rule) && $b_Multiline) { $record .= $rule; $rule = $record; @@ -767,7 +767,7 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { $b_Multiline = false; $record = ""; - /* Parse the rule to find sid and any references. */ + // Parse the rule to find sid and any references. $gid = '1'; // default to 1 for regular rules $sid = ''; $rev = ''; @@ -800,10 +800,10 @@ function suricata_build_sid_msg_map($rules_path, $sid_file) { } } } - /* Sort the generated sid-msg map */ + // Sort the generated sid-msg map natcasesort($sidMap); - /* Now print the result to the supplied file */ + // Now print the result to the supplied file @file_put_contents($sid_file, "#v2\n# sid-msg.map file auto-generated by Snort.\n\n"); @file_put_contents($sid_file, array_values($sidMap), FILE_APPEND); } diff --git a/config/suricata/suricata_rules_edit.php b/config/suricata/suricata_rules_edit.php index c02d3eba..491bda61 100644 --- a/config/suricata/suricata_rules_edit.php +++ b/config/suricata/suricata_rules_edit.php @@ -70,7 +70,7 @@ if (substr($file, 0, 10) == "IPS Policy") { $wrap_flag = "soft"; } else { - $contents = "# Snort IPS Policy - " . ucfirst(trim(substr($file, strpos($file, "-")+1))) . "\n\n"; + $contents = "# Suricata IPS Policy - " . ucfirst(trim(substr($file, strpos($file, "-")+1))) . "\n\n"; foreach (array_keys($rules_map) as $k1) { foreach (array_keys($rules_map[$k1]) as $k2) { $contents .= "# Category: " . $rules_map[$k1][$k2]['category'] . " SID: {$k2}\n"; -- cgit v1.2.3 From bca1905789f4fdf938f81a7cfe5dd98751726aa7 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 21:35:27 -0500 Subject: Put [] around IPv6 addr and tidy up Suri Dashboard Widget. --- config/suricata/suricata_alerts.js | 6 +++--- config/suricata/suricata_alerts.widget.php | 29 ++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/config/suricata/suricata_alerts.js b/config/suricata/suricata_alerts.js index 9e5b0b29..16e0c73c 100644 --- a/config/suricata/suricata_alerts.js +++ b/config/suricata/suricata_alerts.js @@ -14,9 +14,9 @@ function suricata_alerts_fetch_new_rules_callback(callback_data) { for(var x=0; x' + row_split[1] + ''; - line += ''; - line += ''; + line = ''; + line += ''; + line += ''; new_data_to_add[new_data_to_add.length] = line; } suricata_alerts_update_div_rows(new_data_to_add); diff --git a/config/suricata/suricata_alerts.widget.php b/config/suricata/suricata_alerts.widget.php index c9cfc98e..ce01c0a4 100644 --- a/config/suricata/suricata_alerts.widget.php +++ b/config/suricata/suricata_alerts.widget.php @@ -135,10 +135,16 @@ function suricata_widget_get_alerts() { $suricata_alerts[$counter]['timeonly'] = date_format($event_tm, "H:i:s"); $suricata_alerts[$counter]['dateonly'] = date_format($event_tm, "M d"); // Add zero-width space as soft-break opportunity after each colon in any IPv6 address - $suricata_alerts[$counter]['src'] = str_replace(":", ":​", $fields[9]); + if (is_ipaddrv6($fields[9]) && !empty($fields[10])) + $suricata_alerts[$counter]['src'] = "[" . str_replace(":", ":​", $fields[9]) . "]"; + else + $suricata_alerts[$counter]['src'] = $fields[9]; $suricata_alerts[$counter]['srcport'] = $fields[10]; // Add zero-width space as soft-break opportunity after each colon in any IPv6 address - $suricata_alerts[$counter]['dst'] = str_replace(":", ":​", $fields[11]); + if (is_ipaddrv6($fields[11]) && !empty($fields[12])) + $suricata_alerts[$counter]['dst'] = "[" . str_replace(":", ":​", $fields[11]) . "]"; + else + $suricata_alerts[$counter]['dst'] = $fields[11]; $suricata_alerts[$counter]['dstport'] = $fields[12]; $suricata_alerts[$counter]['priority'] = $fields[7]; $suricata_alerts[$counter]['category'] = $fields[6]; @@ -179,12 +185,17 @@ var suri_nentries = ; -
    - + - + -
    >  - "default") + value=""/>  + "default") echo gettext("Name or description for this engine. (Max 25 characters)"); else echo "" . gettext("The name for the 'default' engine is read-only.") . "";?>
    @@ -187,13 +71,13 @@ if ($savemsg)
    - "default") : ?> + "default") : ?> - @@ -204,7 +88,7 @@ if ($savemsg)        + value="" autocomplete="off" readonly>  " . gettext("IP List for the default engine is read-only and must be 'all'.") . "";?>

    @@ -218,7 +102,7 @@ if ($savemsg) $profile = array( 'BSD', 'BSD-Right', 'HPUX10', 'HPUX11', 'Irix', 'Linux', 'Mac-OS', 'Old-Linux', 'Old-Solaris', 'Solaris', 'Vista', 'Windows', 'Windows2k3' ); foreach ($profile as $val): ?>   
      + value="" title="" autocomplete="off"/>  "/>
      - ">      - ">
    - - - - - -- cgit v1.2.3 From 5287063d4ad240bb76ebafe716c762b005bdac6a Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Mon, 24 Feb 2014 20:40:46 -0500 Subject: Some bug fixes and replace $_GET with $_POST where possible. --- config/suricata/suricata_interfaces.php | 127 +++++++++++++----------------- config/suricata/suricata_logs_browser.php | 2 +- 2 files changed, 56 insertions(+), 73 deletions(-) diff --git a/config/suricata/suricata_interfaces.php b/config/suricata/suricata_interfaces.php index 364abe62..88b426ba 100644 --- a/config/suricata/suricata_interfaces.php +++ b/config/suricata/suricata_interfaces.php @@ -27,7 +27,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ -$nocsrf = true; require_once("guiconfig.inc"); require_once("/usr/local/pkg/suricata/suricata.inc"); @@ -37,16 +36,17 @@ $suricatadir = SURICATADIR; $suricatalogdir = SURICATALOGDIR; $rcdir = RCFILEPREFIX; -$id = $_GET['id']; -if (isset($_POST['id'])) +if ($_POST['id'] && is_numeric($_POST['id'])) $id = $_POST['id']; +else + $id = ""; if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_nat = &$config['installedpackages']['suricata']['rule']; $id_gen = count($config['installedpackages']['suricata']['rule']); -if (isset($_POST['del_x'])) { +if ($_POST['del_x']) { /* delete selected rules */ if (is_array($_POST['rule'])) { conf_mount_rw(); @@ -103,11 +103,10 @@ if (isset($_POST['del_x'])) { header("Location: /suricata/suricata_interfaces.php"); exit; } - } /* start/stop Barnyard2 */ -if ($_GET['act'] == 'bartoggle' && is_numeric($id)) { +if ($_POST['bartoggle'] && is_numeric($id)) { $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; $if_real = get_real_interface($suricatacfg['interface']); $if_friendly = convert_friendly_interface_to_friendly_descr($suricatacfg['interface']); @@ -127,7 +126,7 @@ if ($_GET['act'] == 'bartoggle' && is_numeric($id)) { } /* start/stop Suricata */ -if ($_GET['act'] == 'toggle' && is_numeric($id)) { +if ($_POST['toggle'] && is_numeric($id)) { $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; $if_real = get_real_interface($suricatacfg['interface']); $if_friendly = convert_friendly_interface_to_friendly_descr($suricatacfg['interface']); @@ -159,17 +158,14 @@ include_once("head.inc"); ?> -' . $pgtitle . '

    '; -?> +
    +
    + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - @@ -363,19 +358,13 @@ if ($pfsense_stable == 'yes') @@ -449,12 +438,6 @@ if ($pfsense_stable == 'yes') + + + + +
      - - - - - -
    -
      + + +
    - "; + echo gettext("ENABLED") . " "; + echo ""; echo ($no_rules) ? " " : ""; } else echo gettext("DISABLED"); ?> - "; + echo gettext("ENABLED") . " "; + echo ""; } else echo gettext("DISABLED"); ?> @@ -343,14 +343,9 @@ if ($pfsense_stable == 'yes')   - - - - -
    -
    + +
    - - - - -
    - - " - onclick="return intf_del()"> -
    + + + + " + onclick="return intf_del()"> +
    + + + + + + + + + + + + "); + $counter++; + if($counter >= $nentries) + break; + } + } + ?> + +
    IF/DateSrc/DstDetails
    " . $alert['instanceid'] . " " . $alert['dateonly'] . "
    " . $alert['timeonly'] . "
    " . $alert['src'] . ":" . $alert['srcport'] . "
    " . $alert['dst'] . ":" . $alert['dstport'] . "
    Priority: " . $alert['priority'] . "
    " . $alert['category'] . "
    + + + + diff --git a/config/suricata/suricata_post_install.php b/config/suricata/suricata_post_install.php index 6603d5ab..72257325 100644 --- a/config/suricata/suricata_post_install.php +++ b/config/suricata/suricata_post_install.php @@ -89,7 +89,7 @@ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] = // ## BETA pkg bug fix-up -- be sure default rules enabled ## $rules = explode("||", $value['rulesets']); - foreach (array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules" ) as $r){ + foreach (array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules", "tls-events.rules" ) as $r){ if (!in_array($r, $rules)) $rules[] = $r; } @@ -117,6 +117,12 @@ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] = // Add the recurring jobs created above to crontab configure_cron(); + // Restore the Dashboard Widget if it was previously enabled and saved + if (!empty($config['installedpackages']['suricata']['config'][0]['dashboard_widget']) && !empty($config['widgets']['sequence'])) + $config['widgets']['sequence'] .= "," . $config['installedpackages']['suricata']['config'][0]['dashboard_widget']; + if (!empty($config['installedpackages']['suricata']['config'][0]['dashboard_widget_rows']) && !empty($config['widgets'])) + $config['widgets']['widget_suricata_display_lines'] = $config['installedpackages']['suricata']['config'][0]['dashboard_widget_rows']; + $rebuild_rules = false; update_output_window(gettext("Finished rebuilding Suricata configuration files...")); log_error(gettext("[Suricata] Finished rebuilding installation from saved settings...")); @@ -132,7 +138,7 @@ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] = } // Update Suricata package version in configuration -$config['installedpackages']['suricata']['config'][0]['suricata_config_ver'] = "0.1-BETA"; +$config['installedpackages']['suricata']['config'][0]['suricata_config_ver'] = "v0.2-BETA"; write_config(); // Done with post-install, so clear flag diff --git a/config/suricata/suricata_uninstall.php b/config/suricata/suricata_uninstall.php index 0a7f8d5a..b8ea6097 100644 --- a/config/suricata/suricata_uninstall.php +++ b/config/suricata/suricata_uninstall.php @@ -76,6 +76,31 @@ if ($config['installedpackages']['suricata']['config'][0]['clearlogs'] == 'on') mwexec("/bin/rm -rf /usr/local/pkg/suricata"); mwexec("/bin/rm -rf /usr/local/www/suricata"); +/* Remove our associated Dashboard widget config and files. */ +/* If "save settings" is enabled, then save old widget */ +/* container settings so we can restore them later. */ +$widgets = $config['widgets']['sequence']; +if (!empty($widgets)) { + $widgetlist = explode(",", $widgets); + foreach ($widgetlist as $key => $widget) { + if (strstr($widget, "suricata_alerts-container")) { + if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] == 'on') { + $config['installedpackages']['suricata']['config'][0]['dashboard_widget'] = $widget; + if ($config['widgets']['widget_suricata_display_lines']) { + $config['installedpackages']['suricata']['config'][0]['dashboard_widget_rows'] = $config['widgets']['widget_suricata_display_lines']; + unset($config['widgets']['widget_suricata_display_lines']); + } + } + unset($widgetlist[$key]); + } + } + $config['widgets']['sequence'] = implode(",", $widgetlist); + write_config(); +} +@unlink("/usr/local/www/widgets/include/widget-suricata.inc"); +@unlink("/usr/local/www/widgets/widgets/suricata_alerts.widget.php"); +@unlink("/usr/local/www/widgets/javascript/suricata_alerts.js"); + /* Keep this as a last step */ if ($config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] != 'on') { log_error(gettext("Not saving settings... all Suricata configuration info and logs deleted...")); diff --git a/config/suricata/widget-suricata.inc b/config/suricata/widget-suricata.inc new file mode 100644 index 00000000..48424588 --- /dev/null +++ b/config/suricata/widget-suricata.inc @@ -0,0 +1,8 @@ + -- cgit v1.2.3 From 6fba00332aec40c41d99141adcaabb080d0d0c88 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:22:53 -0500 Subject: Add new Dashboard Widget files now included in package. --- config/suricata/suricata.priv.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/suricata/suricata.priv.inc b/config/suricata/suricata.priv.inc index 7f5f1825..a17a307b 100644 --- a/config/suricata/suricata.priv.inc +++ b/config/suricata/suricata.priv.inc @@ -41,5 +41,7 @@ $priv_list['page-services-suricata']['match'][] = "suricata/suricata.inc*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_post_install.php*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_uninstall.php*"; $priv_list['page-services-suricata']['match'][] = "suricata/suricata_generate_yaml.php*"; - +$priv_list['page-services-suricata']['match'][] = "widgets/javascript/suricata_alerts.js*"; +$priv_list['page-services-suricata']['match'][] = "widgets/widgets/suricata_alerts.widget.php*"; +$priv_list['page-services-suricata']['match'][] = "widgets/include/widget-suricata.inc*"; ?> \ No newline at end of file -- cgit v1.2.3 From 8d584b1d31a75662ec83a9668822157ee8b95294 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:25:08 -0500 Subject: Add installation paths for Dashboard Widget files. --- config/suricata/suricata.xml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/config/suricata/suricata.xml b/config/suricata/suricata.xml index f2b94d3b..46baa50c 100644 --- a/config/suricata/suricata.xml +++ b/config/suricata/suricata.xml @@ -42,7 +42,7 @@ Suricata IDS/IPS Package None suricata - 1.4.6 pkg v0.1-BETA + 1.4.6 pkg v0.2-BETA Services: Suricata IDS /usr/local/pkg/suricata/suricata.inc @@ -207,6 +207,21 @@ /usr/local/www/suricata/ 0755 + + /usr/local/www/widgets/javascript/ + 0644 + http://www.pfsense.com/packages/config/suricata/suricata_alerts.js + + + /usr/local/www/widgets/widgets/ + 0644 + http://www.pfsense.com/packages/config/suricata/suricata_alerts.widget.php + + + /usr/local/www/widgets/include/ + 0644 + http://www.pfsense.com/packages/config/suricata/widget-suricata.inc + ['installedpackages']['suricata'] -- cgit v1.2.3 From 9a7842704430cf8d2af118df85efa156d85f950f Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:26:59 -0500 Subject: Match standard GUI style and add a 'force update' feature. --- config/suricata/suricata_download_updates.php | 118 ++++++++++++++++++++------ 1 file changed, 90 insertions(+), 28 deletions(-) diff --git a/config/suricata/suricata_download_updates.php b/config/suricata/suricata_download_updates.php index 200bc834..6cc585c6 100644 --- a/config/suricata/suricata_download_updates.php +++ b/config/suricata/suricata_download_updates.php @@ -35,9 +35,6 @@ require_once("/usr/local/pkg/suricata/suricata.inc"); $suricatadir = SURICATADIR; $suricata_rules_upd_log = RULES_UPD_LOGFILE; -/* load only javascript that is needed */ -$suricata_load_jquery = 'yes'; -$suricata_load_jquery_colorbox = 'yes'; $snortdownload = $config['installedpackages']['suricata']['config'][0]['enable_vrt_rules']; $emergingthreats = $config['installedpackages']['suricata']['config'][0]['enable_etopen_rules']; $etpro = $config['installedpackages']['suricata']['config'][0]['enable_etpro_rules']; @@ -52,21 +49,48 @@ if ($etpro == "on") { } else { $emergingthreats_filename = ET_DNLD_FILENAME; - $et_name = "EMERGING THREATS RULES"; + $et_name = "EMERGING THREATS OPEN RULES"; } /* quick md5 chk of downloaded rules */ -$snort_org_sig_chk_local = 'N/A'; -if (file_exists("{$suricatadir}{$snort_rules_file}.md5")) +if ($snortdownload == 'on') { + $snort_org_sig_chk_local = 'Not Downloaded'; + $snort_org_sig_date = 'Not Downloaded'; +} +else { + $snort_org_sig_chk_local = 'Not Enabled'; + $snort_org_sig_date = 'Not Enabled'; +} +if (file_exists("{$suricatadir}{$snort_rules_file}.md5")){ $snort_org_sig_chk_local = file_get_contents("{$suricatadir}{$snort_rules_file}.md5"); + $snort_org_sig_date = date(DATE_RFC850, filemtime("{$suricatadir}{$snort_rules_file}.md5")); +} -$emergingt_net_sig_chk_local = 'N/A'; -if (file_exists("{$suricatadir}{$emergingthreats_filename}.md5")) +if ($etpro == "on" || $emergingthreats == "on") { + $emergingt_net_sig_chk_local = 'Not Downloaded'; + $emergingt_net_sig_date = 'Not Downloaded'; +} +else { + $emergingt_net_sig_chk_local = 'Not Enabled'; + $emergingt_net_sig_date = 'Not Enabled'; +} +if (file_exists("{$suricatadir}{$emergingthreats_filename}.md5")) { $emergingt_net_sig_chk_local = file_get_contents("{$suricatadir}{$emergingthreats_filename}.md5"); + $emergingt_net_sig_date = date(DATE_RFC850, filemtime("{$suricatadir}{$emergingthreats_filename}.md5")); +} -$snort_community_sig_chk_local = 'N/A'; -if (file_exists("{$suricatadir}{$snort_community_rules_filename}.md5")) +if ($snortcommunityrules == 'on') { + $snort_community_sig_chk_local = 'Not Downloaded'; + $snort_community_sig_sig_date = 'Not Downloaded'; +} +else { + $snort_community_sig_chk_local = 'Not Enabled'; + $snort_community_sig_sig_date = 'Not Enabled'; +} +if (file_exists("{$suricatadir}{$snort_community_rules_filename}.md5")) { $snort_community_sig_chk_local = file_get_contents("{$suricatadir}{$snort_community_rules_filename}.md5"); + $snort_community_sig_sig_date = date(DATE_RFC850, filemtime("{$suricatadir}{$snort_community_rules_filename}.md5")); +} /* Check for postback to see if we should clear the update log file. */ if ($_POST['clear']) { @@ -74,7 +98,28 @@ if ($_POST['clear']) { mwexec("/bin/rm -f {$suricata_rules_upd_log}"); } -if ($_POST['update']) { +if ($_POST['check']) { + // Go see if new updates for rule sets are available + header("Location: /suricata/suricata_download_rules.php"); + exit; +} + +if ($_POST['force']) { + // Mount file system R/W since we need to remove files + conf_mount_rw(); + + // Remove the existing MD5 signature files to force a download + if (file_exists("{$suricatadir}{$emergingthreats_filename}.md5")) + @unlink("{$suricatadir}{$emergingthreats_filename}.md5"); + if (file_exists("{$suricatadir}{$snort_community_rules_filename}.md5")) + @unlink("{$suricatadir}{$snort_community_rules_filename}.md5"); + if (file_exists("{$suricatadir}{$snort_rules_file}.md5")) + @unlink("{$suricatadir}{$snort_rules_file}.md5"); + + // Revert file system to R/O. + conf_mount_ro(); + + // Go download the updates header("Location: /suricata/suricata_download_rules.php"); exit; } @@ -131,21 +176,32 @@ include_once("head.inc");
    - + @@ -156,16 +212,22 @@ include_once("head.inc"); @@ -178,15 +240,15 @@ include_once("head.inc");
    - " name="hide" id="hide" class="formbtn" + " name="hide" id="hide" class="formbtn" title=""/> - " name="view" id="view" class="formbtn" + " name="view" id="view" class="formbtn" title=""/> -          - " name="clear" id="clear" class="formbtn" - title="" onClick="return confirm('Are you sure?\nOK to confirm, or CANCEL to quit');"/> +      + " name="clear" id="clear" class="formbtn" + title="" onClick="return confirm('Are you sure you want to delete the log contents?\nOK to confirm, or CANCEL to quit');"/>

    @@ -211,7 +273,7 @@ include_once("head.inc"); -- cgit v1.2.3 From 16117ee018a4c59bd82766ad91cff013b022dbd5 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:29:41 -0500 Subject: Prevent deleting of Suppress Lists in active use. --- config/suricata/suricata_suppress.php | 141 ++++++++++++++++++++++------------ 1 file changed, 93 insertions(+), 48 deletions(-) diff --git a/config/suricata/suricata_suppress.php b/config/suricata/suricata_suppress.php index 58839dce..e97006dc 100644 --- a/config/suricata/suricata_suppress.php +++ b/config/suricata/suricata_suppress.php @@ -61,6 +61,28 @@ function suricata_suppresslist_used($supplist) { return false; } +function suricata_find_suppresslist_interface($supplist) { + + /****************************************************************/ + /* This function finds the first (if more than one) interface */ + /* configured to use the passed Suppress List and returns the */ + /* index of the interface in the ['rule'] config array. */ + /* */ + /* Returns: index of interface in ['rule'] config array or */ + /* FALSE if no interface found. */ + /****************************************************************/ + + global $config; + $suricataconf = $config['installedpackages']['suricata']['rule']; + if (empty($suricataconf)) + return false; + foreach ($suricataconf as $rule => $value) { + if ($value['suppresslistname'] == $supplist) + return $rule; + } + return false; +} + if ($_GET['act'] == "del") { if ($a_suppress[$_GET['id']]) { // make sure list is not being referenced by any Suricata-configured interface @@ -108,54 +130,74 @@ if ($input_errors) { @@ -163,7 +205,10 @@ if ($input_errors) {



    + "take effect."); ?>

    + " . + gettext("You must first unassign the Suppress List on the Interface Edit tab."); ?> +


    - +
    + + + + + + + - + + - + + + - + +
      --->
    SNORT VRT RULES  --->
    SNORT GPLv2 COMMUNITY RULES  --->

    -

    -

    -    +
         + +
    +

    +   Global Settings Tab' . gettext(' to select rule types.'); ?> -

    +


    - " name="update" id="submit" class="formbtn" - title=""/>

    + " name="check" id="check" class="formbtn" + title=""/>     + " name="force" id="force" class="formbtn" + title="" + onclick="return confirm('');"/> +


    -   " . +  " . gettext(" and ") . "" . gettext("EmergingThreats.net") . "" . gettext(" will go down from time to time. Please be patient."); ?>

    - - - - - - - - - - - - - - - - - - -
    - -   - - - - - - +
    ">')">">
    + + + + + + + + + + "; + } + else + $icon = ""; + ?> + + + + + + + + + + +
    +   +   + + + + + + + + + + + + +
    ">"/> + "/> + ')">"> 
    +
    + + + + + +
     ">
    +
    -
    - - - - - -
     ">
    -
    -- cgit v1.2.3 From 9e7d630ecf8377ec58606895c077918e4cf37ff8 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:31:38 -0500 Subject: Add new output option for Bro-IDS destination for Barnyard2. --- config/suricata/suricata_barnyard.php | 161 ++++++++++++++++++++++++++-------- 1 file changed, 126 insertions(+), 35 deletions(-) diff --git a/config/suricata/suricata_barnyard.php b/config/suricata/suricata_barnyard.php index f0bdbd17..e1ae892e 100644 --- a/config/suricata/suricata_barnyard.php +++ b/config/suricata/suricata_barnyard.php @@ -46,8 +46,8 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $a_nat = &$config['installedpackages']['suricata']['rule']; $pconfig = array(); + if (isset($id) && $a_nat[$id]) { - /* old options */ $pconfig = $a_nat[$id]; if (!empty($a_nat[$id]['barnconfigpassthru'])) $pconfig['barnconfigpassthru'] = base64_decode($a_nat[$id]['barnconfigpassthru']); @@ -69,28 +69,20 @@ if (isset($id) && $a_nat[$id]) { $pconfig['barnyard_syslog_facility'] = "LOG_USER"; if (empty($a_nat[$id]['barnyard_syslog_priority'])) $pconfig['barnyard_syslog_priority'] = "LOG_INFO"; + if (empty($a_nat[$id]['barnyard_bro_ids_dport'])) + $pconfig['barnyard_bro_ids_dport'] = "47760"; if (empty($a_nat[$id]['barnyard_sensor_name'])) $pconfig['barnyard_sensor_name'] = php_uname("n"); } -if (isset($_GET['dup'])) - unset($id); - -if ($_POST) { - - foreach ($a_nat as $natent) { - if (isset($id) && ($a_nat[$id]) && ($a_nat[$id] === $natent)) - continue; - if ($natent['interface'] != $_POST['interface']) - $input_error[] = "This interface has already an instance defined"; - } - +if ($_POST['save']) { // Check that at least one output plugin is enabled - if ($_POST['barnyard_mysql_enable'] != 'on' && $_POST['barnyard_syslog_enable'] != 'on') + if ($_POST['barnyard_mysql_enable'] != 'on' && $_POST['barnyard_syslog_enable'] != 'on' && + $_POST['barnyard_bro_ids_enable'] != 'on' && $_POST['barnyard_enable'] == "on") $input_errors[] = gettext("You must enable at least one output option when using Barnyard2."); // Validate inputs if MySQL database loggging enabled - if ($_POST['barnyard_mysql_enable'] == 'on') { + if ($_POST['barnyard_mysql_enable'] == 'on' && $_POST['barnyard_enable'] == "on") { if (empty($_POST['barnyard_dbhost'])) $input_errors[] = gettext("Please provide a valid hostname or IP address for the MySQL database host."); if (empty($_POST['barnyard_dbname'])) @@ -100,13 +92,22 @@ if ($_POST) { } // Validate inputs if syslog output enabled - if ($_POST['barnyard_syslog_enable'] == 'on' && $_POST['barnyard_syslog_local'] <> 'on') { + if ($_POST['barnyard_syslog_enable'] == 'on' && $_POST['barnyard_syslog_local'] <> 'on' && + $_POST['barnyard_enable'] == "on") { if (empty($_POST['barnyard_syslog_dport']) || !is_numeric($_POST['barnyard_syslog_dport'])) $input_errors[] = gettext("Please provide a valid number between 1 and 65535 for the Syslog Remote Port."); if (empty($_POST['barnyard_syslog_rhost'])) $input_errors[] = gettext("Please provide a valid hostname or IP address for the Syslog Remote Host."); } + // Validate inputs if Bro-IDS output enabled + if ($_POST['barnyard_bro_ids_enable'] == 'on' && $_POST['barnyard_enable'] == "on") { + if (empty($_POST['barnyard_bro_ids_dport']) || !is_numeric($_POST['barnyard_bro_ids_dport'])) + $input_errors[] = gettext("Please provide a valid number between 1 and 65535 for the Bro-IDS Remote Port."); + if (empty($_POST['barnyard_bro_ids_rhost'])) + $input_errors[] = gettext("Please provide a valid hostname or IP address for the Bro-IDS Remote Host."); + } + // if no errors write to conf if (!$input_errors) { $natent = array(); @@ -121,6 +122,7 @@ if ($_POST) { $natent['barnyard_mysql_enable'] = $_POST['barnyard_mysql_enable'] ? 'on' : 'off'; $natent['barnyard_syslog_enable'] = $_POST['barnyard_syslog_enable'] ? 'on' : 'off'; $natent['barnyard_syslog_local'] = $_POST['barnyard_syslog_local'] ? 'on' : 'off'; + $natent['barnyard_bro_ids_enable'] = $_POST['barnyard_bro_ids_enable'] ? 'on' : 'off'; $natent['barnyard_syslog_opmode'] = $_POST['barnyard_syslog_opmode']; $natent['barnyard_syslog_proto'] = $_POST['barnyard_syslog_proto']; @@ -133,23 +135,30 @@ if ($_POST) { if ($_POST['barnyard_syslog_dport']) $natent['barnyard_syslog_dport'] = $_POST['barnyard_syslog_dport']; else $natent['barnyard_syslog_dport'] = '514'; if ($_POST['barnyard_syslog_facility']) $natent['barnyard_syslog_facility'] = $_POST['barnyard_syslog_facility']; else $natent['barnyard_syslog_facility'] = 'LOG_USER'; if ($_POST['barnyard_syslog_priority']) $natent['barnyard_syslog_priority'] = $_POST['barnyard_syslog_priority']; else $natent['barnyard_syslog_priority'] = 'LOG_INFO'; + if ($_POST['barnyard_bro_ids_rhost']) $natent['barnyard_bro_ids_rhost'] = $_POST['barnyard_bro_ids_rhost']; else unset($natent['barnyard_bro_ids_rhost']); + if ($_POST['barnyard_bro_ids_dport']) $natent['barnyard_bro_ids_dport'] = $_POST['barnyard_bro_ids_dport']; else $natent['barnyard_bro_ids_dport'] = '47760'; if ($_POST['barnconfigpassthru']) $natent['barnconfigpassthru'] = base64_encode($_POST['barnconfigpassthru']); else unset($natent['barnconfigpassthru']); - if (isset($id) && $a_nat[$id]) - $a_nat[$id] = $natent; - else { - $a_nat[] = $natent; - } - + $a_nat[$id] = $natent; write_config(); - // No need to rebuild rules if just toggling Barnyard2 on or off + // No need to rebuild rules for Barnyard2 changes $rebuild_rules = false; sync_suricata_package_config(); - // Signal any running barnyard2 instance on this interface to - // reload its configuration to pick up any changes made. - suricata_barnyard_reload_config($a_nat[$id], "HUP"); + // If disabling Barnyard2 on the interface, stop any + // currently running instance. If an instance is + // running, signal it to reload the configuration. + // If Barnyard2 is enabled but not running, start it. + if ($a_nat[$id]['barnyard_enable'] == "off") { + suricata_barnyard_stop($a_nat[$id], get_real_interface($a_nat[$id]['interface'])); + } + elseif ($a_nat[$id]['barnyard_enable'] == "on") { + if (suricata_is_running($a_nat[$id]['uuid'], get_real_interface($a_nat[$id]['interface']), "barnyard2")) + suricata_barnyard_reload_config($a_nat[$id], "HUP"); + else + suricata_barnyard_start($a_nat[$id], get_real_interface($a_nat[$id]['interface'])); + } // after click go to this page header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); @@ -160,6 +169,33 @@ if ($_POST) { header("Location: suricata_barnyard.php?id=$id"); exit; } + else { + // We had errors, so save incoming field data to prevent retyping + $pconfig['barnyard_enable'] = $_POST['barnyard_enable']; + $pconfig['barnyard_show_year'] = $_POST['barnyard_show_year']; + $pconfig['barnyard_archive_enable'] = $_POST['barnyard_archive_enable']; + $pconfig['barnyard_dump_payload'] = $_POST['barnyard_dump_payload']; + $pconfig['barnyard_obfuscate_ip'] = $_POST['barnyard_obfuscate_ip']; + $pconfig['barnyard_mysql_enable'] = $_POST['barnyard_mysql_enable']; + $pconfig['barnyard_syslog_enable'] = $_POST['barnyard_syslog_enable']; + $pconfig['barnyard_syslog_local'] = $_POST['barnyard_syslog_local']; + $pconfig['barnyard_syslog_opmode'] = $_POST['barnyard_syslog_opmode']; + $pconfig['barnyard_syslog_proto'] = $_POST['barnyard_syslog_proto']; + $pconfig['barnyard_bro_ids_enable'] = $_POST['barnyard_bro_ids_enable']; + + $pconfig['barnyard_sensor_name'] = $_POST['barnyard_sensor_name']; + $pconfig['barnyard_dbhost'] = $_POST['barnyard_dbhost']; + $pconfig['barnyard_dbname'] = $_POST['barnyard_dbname']; + $pconfig['barnyard_dbuser'] = $_POST['barnyard_dbuser']; + $pconfig['barnyard_dbpwd'] = $_POST['barnyard_dbpwd']; + $pconfig['barnyard_syslog_rhost'] = $_POST['barnyard_syslog_rhost']; + $pconfig['barnyard_syslog_dport'] = $_POST['barnyard_syslog_dport']; + $pconfig['barnyard_syslog_facility'] = $_POST['barnyard_syslog_facility']; + $pconfig['barnyard_syslog_priority'] = $_POST['barnyard_syslog_priority']; + $pconfig['barnyard_bro_ids_rhost'] = $_POST['barnyard_bro_ids_rhost']; + $pconfig['barnyard_bro_ids_dport'] = $_POST['barnyard_bro_ids_dport']; + $pconfig['barnconfigpassthru'] = $_POST['barnconfigpassthru']; + } } $if_friendly = convert_friendly_interface_to_friendly_descr($pconfig['interface']); @@ -169,10 +205,8 @@ include_once("head.inc"); ?> - -' . $pgtitle . '

    ';}?> + +?> -
    + '; echo ' - @@ -272,6 +304,7 @@ include_once("head.inc"); onClick="toggle_mySQL()"/>
    + + @@ -315,6 +349,7 @@ include_once("head.inc");
    + + + + + + + + + + + + + + + + + + + @@ -410,7 +475,7 @@ include_once("head.inc"); @@ -435,6 +500,11 @@ function toggle_mySQL() { document.iform.barnyard_dbname.disabled = endis; document.iform.barnyard_dbuser.disabled = endis; document.iform.barnyard_dbpwd.disabled = endis; + + if (endis) + document.getElementById("mysql_config_rows").style.display = "none"; + else + document.getElementById("mysql_config_rows").style.display = ""; } function toggle_syslog() { @@ -449,6 +519,11 @@ function toggle_syslog() { document.iform.barnyard_syslog_proto_tcp.disabled = endis; document.iform.barnyard_syslog_facility.disabled = endis; document.iform.barnyard_syslog_priority.disabled = endis; + + if (endis) + document.getElementById("syslog_config_rows").style.display = "none"; + else + document.getElementById("syslog_config_rows").style.display = ""; } function toggle_local_syslog() { @@ -464,6 +539,18 @@ function toggle_local_syslog() { } } +function toggle_bro_ids() { + var endis = !document.iform.barnyard_bro_ids_enable.checked; + + document.iform.barnyard_bro_ids_rhost.disabled = endis; + document.iform.barnyard_bro_ids_dport.disabled = endis; + + if (endis) + document.getElementById("bro_ids_config_rows").style.display = "none"; + else + document.getElementById("bro_ids_config_rows").style.display = ""; +} + function enable_change(enable_change) { endis = !(document.iform.barnyard_enable.checked || enable_change); // make sure a default answer is called if this is invoked. @@ -488,6 +575,9 @@ function enable_change(enable_change) { document.iform.barnyard_syslog_proto_tcp.disabled = endis; document.iform.barnyard_syslog_facility.disabled = endis; document.iform.barnyard_syslog_priority.disabled = endis; + document.iform.barnyard_bro_ids_enable.disabled = endis; + document.iform.barnyard_bro_ids_rhost.disabled = endis; + document.iform.barnyard_bro_ids_dport.disabled = endis; document.iform.barnconfigpassthru.disabled = endis; } @@ -495,6 +585,7 @@ enable_change(false); toggle_mySQL(); toggle_syslog(); toggle_local_syslog(); +toggle_bro_ids(); -- cgit v1.2.3 From 5f19d9dbc9d3ecc8ae541d80a4309baa95afcc1b Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:33:56 -0500 Subject: Remove last of custom wrapper funcs and incorporate Bro-IDS for Barnyard2. --- config/suricata/suricata.inc | 52 +++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/config/suricata/suricata.inc b/config/suricata/suricata.inc index b87e2f6a..1b6f5eb3 100644 --- a/config/suricata/suricata.inc +++ b/config/suricata/suricata.inc @@ -39,6 +39,10 @@ global $g, $config; if (!is_array($config['installedpackages']['suricata'])) $config['installedpackages']['suricata'] = array(); +// Define the binary and package build versions +define('SURICATA_VER', '1.4.6'); +define('SURICATA_PKG_VER', 'v0.2-BETA'); + // Create some other useful defines define('SURICATADIR', '/usr/pbi/suricata-' . php_uname("m") . '/etc/suricata/'); define('SURICATALOGDIR', '/var/log/suricata/'); @@ -76,9 +80,9 @@ function suricata_is_running($suricata_uuid, $if_real, $type = 'suricata') { global $config, $g; if (isvalidpid("{$g['varrun_path']}/{$type}_{$if_real}{$suricata_uuid}.pid")) - return 'yes'; + return true; else - return 'no'; + return false; } function suricata_barnyard_stop($suricatacfg, $if_real) { @@ -154,7 +158,7 @@ function suricata_reload_config($suricatacfg, $signal="USR2") { $suricatadir = SURICATADIR; $suricata_uuid = $suricatacfg['uuid']; - $if_real = suricata_get_real_interface($suricatacfg['interface']); + $if_real = get_real_interface($suricatacfg['interface']); /******************************************************/ /* Only send the SIGUSR2 if Suricata is running and */ @@ -183,7 +187,7 @@ function suricata_barnyard_reload_config($suricatacfg, $signal="HUP") { $suricatadir = SURICATADIR; $suricata_uuid = $suricatacfg['uuid']; - $if_real = suricata_get_real_interface($suricatacfg['interface']); + $if_real = get_real_interface($suricatacfg['interface']); /******************************************************/ /* Only send the SIGHUP if Barnyard2 is running and */ @@ -196,22 +200,6 @@ function suricata_barnyard_reload_config($suricatacfg, $signal="HUP") { } } -function suricata_get_friendly_interface($interface) { - - // Pass this directly to the system for now. - // Later, this wrapper will be removed and all - // the Suricata code changed to use the system call. - return convert_friendly_interface_to_friendly_descr($interface); -} - -function suricata_get_real_interface($interface) { - - // Pass this directly to the system for now. - // Later, this wrapper will be removed and all - // the Suricata code changed to use the system call. - return get_real_interface($interface); -} - function suricata_get_blocked_ips() { // This is a placeholder function for later use. @@ -517,7 +505,7 @@ function sync_suricata_package_config() { $suricataconf = $config['installedpackages']['suricata']['rule']; foreach ($suricataconf as $value) { - $if_real = suricata_get_real_interface($value['interface']); + $if_real = get_real_interface($value['interface']); // create a suricata.yaml file for interface suricata_generate_yaml($value); @@ -669,7 +657,7 @@ function suricata_post_delete_logs($suricata_uuid = 0) { foreach ($config['installedpackages']['suricata']['rule'] as $value) { if ($value['uuid'] != $suricata_uuid) continue; - $if_real = suricata_get_real_interface($value['interface']); + $if_real = get_real_interface($value['interface']); $suricata_log_dir = SURICATALOGDIR . "suricata_{$if_real}{$suricata_uuid}"; if ($if_real != '') { @@ -1508,7 +1496,7 @@ function suricata_prepare_rule_files($suricatacfg, $suricatacfgdir) { return; // Log a message for rules rebuild in progress - log_error(gettext("[Suricata] Updating rules configuration for: " . suricata_get_friendly_interface($suricatacfg['interface']) . " ...")); + log_error(gettext("[Suricata] Updating rules configuration for: " . convert_friendly_interface_to_friendly_descr($suricatacfg['interface']) . " ...")); // Only rebuild rules if some are selected or an IPS Policy is enabled if (!empty($suricatacfg['rulesets']) || $suricatacfg['ips_policy_enable'] == 'on') { @@ -1581,7 +1569,7 @@ function suricata_prepare_rule_files($suricatacfg, $suricatacfgdir) { // If auto-flowbit resolution is enabled, generate the dependent flowbits rules file. if ($suricatacfg['autoflowbitrules'] == 'on') { - log_error('[Suricata] Enabling any flowbit-required rules for: ' . suricata_get_friendly_interface($suricatacfg['interface']) . '...'); + log_error('[Suricata] Enabling any flowbit-required rules for: ' . convert_friendly_interface_to_friendly_descr($suricatacfg['interface']) . '...'); $fbits = suricata_resolve_flowbits($all_rules, $enabled_rules); // Check for and disable any flowbit-required rules the user has @@ -1606,11 +1594,11 @@ function suricata_prepare_rule_files($suricatacfg, $suricatacfgdir) { // Log a warning if the interface has no rules defined or enabled if ($no_rules_defined) - log_error(gettext("[Suricata] Warning - no text rules selected for: " . suricata_get_friendly_interface($suricatacfg['interface']) . " ...")); + log_error(gettext("[Suricata] Warning - no text rules selected for: " . convert_friendly_interface_to_friendly_descr($suricatacfg['interface']) . " ...")); // Build a new sid-msg.map file from the enabled // rules and copy it to the interface directory. - log_error(gettext("[Suricata] Building new sig-msg.map file for " . suricata_get_friendly_interface($suricatacfg['interface']) . "...")); + log_error(gettext("[Suricata] Building new sig-msg.map file for " . convert_friendly_interface_to_friendly_descr($suricatacfg['interface']) . "...")); suricata_build_sid_msg_map("{$suricatacfgdir}/rules/", "{$suricatacfgdir}/sid-msg.map"); } @@ -1695,7 +1683,7 @@ function suricata_create_rc() { // the shell script. foreach ($suricataconf as $value) { $suricata_uuid = $value['uuid']; - $if_real = suricata_get_real_interface($value['interface']); + $if_real = get_real_interface($value['interface']); $start_barnyard = << Date: Fri, 28 Feb 2014 20:37:09 -0500 Subject: Remove use of SESSION vars and convert to $_POST to save return page. --- config/suricata/suricata_rules_flowbits.php | 90 +++++++++++++---------------- 1 file changed, 41 insertions(+), 49 deletions(-) diff --git a/config/suricata/suricata_rules_flowbits.php b/config/suricata/suricata_rules_flowbits.php index ca424344..53019894 100644 --- a/config/suricata/suricata_rules_flowbits.php +++ b/config/suricata/suricata_rules_flowbits.php @@ -41,34 +41,34 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) { } $a_nat = &$config['installedpackages']['suricata']['rule']; -// Set who called us so we can return to the correct page with -// the RETURN button. We will just trust this User-Agent supplied -// string for now. -session_start(); -if(!isset($_SESSION['org_referer'])) - $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER']; -$referrer = $_SESSION['org_referer']; - -if ($_POST['cancel']) { - session_start(); - unset($_SESSION['org_referer']); - session_write_close(); - header("Location: {$referrer}"); - exit; -} - -$id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; +elseif (isset($_GET['id'])) + $id = $_GET['id']; + if (is_null($id)) { - session_start(); - unset($_SESSION['org_referer']); - session_write_close(); header("Location: /suricata/suricata_interfaces.php"); exit; } -$if_real = suricata_get_real_interface($a_nat[$id]['interface']); +// Set who called us so we can return to the correct page with +// the RETURN ('cancel') button. +if ($_POST['referrer']) + $referrer = $_POST['referrer']; +else + $referrer = $_SERVER['HTTP_REFERER']; + +// Make sure a rule index ID is appended to the return URL +if (strpos($referrer, "?id={$id}") === FALSE) + $referrer .= "?id={$id}"; + +// If RETURN button clicked, exit to original calling page +if ($_POST['cancel']) { + header("Location: {$referrer}"); + exit; +} + +$if_real = get_real_interface($a_nat[$id]['interface']); $suricata_uuid = $a_nat[$id]['uuid']; /* We should normally never get to this page if Auto-Flowbits are disabled, but just in case... */ @@ -83,12 +83,13 @@ if ($a_nat[$id]['autoflowbitrules'] == 'on') { else $input_errors[] = gettext("Auto-Flowbit rule generation is disabled for this interface!"); -if ($_GET['act'] == "addsuppress" && is_numeric($_GET['sidid']) && is_numeric($_GET['gen_id'])) { - $descr = suricata_get_msg($rules_map[$_GET['gen_id']][$_GET['sidid']]['rule']); +if ($_POST['addsuppress'] && is_numeric($_POST['sid']) && is_numeric($_POST['gid'])) { + $descr = suricata_get_msg($rules_map[$_POST['gid']][$_POST['sid']]['rule']); + $suppress = gettext("## -- This rule manually suppressed from the Auto-Flowbits list. -- ##\n"); if (empty($descr)) - $suppress = "suppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}\n"; + $suppress .= "suppress gen_id {$_POST['gid']}, sig_id {$_POST['sid']}\n"; else - $suppress = "# {$descr}\nsuppress gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}\n"; + $suppress .= "# {$descr}\nsuppress gen_id {$_POST['gid']}, sig_id {$_POST['sid']}\n"; if (!is_array($config['installedpackages']['suricata']['suppress'])) $config['installedpackages']['suricata']['suppress'] = array(); if (!is_array($config['installedpackages']['suricata']['suppress']['item'])) @@ -128,7 +129,7 @@ if ($_GET['act'] == "addsuppress" && is_numeric($_GET['sidid']) && is_numeric($_ $rebuild_rules = false; sync_suricata_package_config(); suricata_reload_config($a_nat[$id]); - $savemsg = gettext("An entry to suppress the Alert for 'gen_id {$_GET['gen_id']}, sig_id {$_GET['sidid']}' has been added to Suppress List '{$a_nat[$id]['suppresslistname']}'."); + $savemsg = gettext("An entry to suppress the Alert for 'gen_id {$_POST['gid']}, sig_id {$_POST['sid']}' has been added to Suppress List '{$a_nat[$id]['suppresslistname']}'."); } else { /* We did not find the defined list, so notify the user with an error */ @@ -136,23 +137,10 @@ if ($_GET['act'] == "addsuppress" && is_numeric($_GET['sidid']) && is_numeric($_ } } -function truncate($string, $length) { - - /******************************** - * This function truncates the * - * passed string to the length * - * specified adding ellipsis if * - * truncation was necessary. * - ********************************/ - if (strlen($string) > $length) - $string = substr($string, 0, ($length - 3)) . "..."; - return $string; -} - /* Load up an array with the current Suppression List GID,SID values */ $supplist = suricata_load_suppress_sigs($a_nat[$id]); -$if_friendly = suricata_get_friendly_interface($a_nat[$id]['interface']); +$if_friendly = convert_friendly_interface_to_friendly_descr($a_nat[$id]['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} - Flowbit Rules"); include_once("head.inc"); @@ -162,12 +150,15 @@ include_once("head.inc"); ' . $pgtitle . '

    ';} if ($input_errors) print_input_errors($input_errors); if ($savemsg) print_info_box($savemsg); ?> + + + +
    '; @@ -261,7 +294,6 @@ include_once("head.inc");  
    @@ -304,6 +337,7 @@ include_once("head.inc");  
    @@ -395,6 +430,36 @@ include_once("head.inc"); " . gettext("LOG_INFO") . "."; ?>
    + + onClick="toggle_bro_ids()"/> +
    +
    + +   +
    + +  " . gettext("47760") . "."; ?> +
      - +
    @@ -248,18 +239,19 @@ if ($savemsg) $rule_content = preg_split('/[\s]+/', $tmp); $protocol = $rule_content[1]; //protocol - $source = truncate($rule_content[2], 14); //source - $destination = truncate($rule_content[5], 14); //destination + $source = $rule_content[2]; //source + $destination = $rule_content[5]; //destination $message = suricata_get_msg($v['rule']); $flowbits = implode("; ", suricata_get_flowbits($v['rule'])); if (strstr($flowbits, "noalert")) $supplink = ""; else { if (!isset($supplist[$gid][$sid])) { - $supplink = ""; - $supplink .= ""; + $supplink .= gettext("Click to add to Suppress List") . "'/>"; } else { $supplink = "" . - "" . + "" . "" . - "" . - "" . + "" . + "" . "" . "" . ""; -- cgit v1.2.3 From 3d4247441ec7b090ee4340c3e78e42a9b31632fd Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:39:15 -0500 Subject: Allow passing of interface index for opening associated logs. --- config/suricata/suricata_logs_browser.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/suricata/suricata_logs_browser.php b/config/suricata/suricata_logs_browser.php index 38310b9f..9fc24927 100644 --- a/config/suricata/suricata_logs_browser.php +++ b/config/suricata/suricata_logs_browser.php @@ -32,6 +32,8 @@ require_once("/usr/local/pkg/suricata/suricata.inc"); if ($_POST['instance']) $instanceid = $_POST['instance']; +if ($_GET['instance']) + $instanceid = $_GET['instance']; if (empty($instanceid)) $instanceid = 0; -- cgit v1.2.3 From af5566164c9b0b412962c26b831e78c499f53281 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 28 Feb 2014 20:41:37 -0500 Subject: Bug fixes and enhancements for v0.2-BETA in Suricata pkg. --- config/suricata/suricata_alerts.php | 33 ++++++----- config/suricata/suricata_app_parsers.php | 15 +++-- config/suricata/suricata_check_cron_misc.inc | 2 +- .../suricata/suricata_check_for_rule_updates.php | 51 ++++++++++++----- config/suricata/suricata_define_vars.php | 2 +- config/suricata/suricata_flow_stream.php | 9 ++- config/suricata/suricata_global.php | 66 ++++++++++++---------- config/suricata/suricata_interfaces.php | 42 +++++--------- config/suricata/suricata_interfaces_edit.php | 38 ++++--------- config/suricata/suricata_libhtp_policy_engine.php | 6 +- config/suricata/suricata_os_policy_engine.php | 6 +- config/suricata/suricata_rules.php | 61 +++++--------------- config/suricata/suricata_rules_edit.php | 23 ++++---- config/suricata/suricata_rulesets.php | 36 +++++++----- 14 files changed, 178 insertions(+), 212 deletions(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index 3fc39f36..75f21333 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -274,12 +274,10 @@ if ($_POST['togglesid'] && is_numeric($_POST['sidid']) && is_numeric($_POST['gen } if ($_POST['delete']) { - conf_mount_rw(); suricata_post_delete_logs($suricata_uuid); $fd = @fopen("{$suricatalogdir}suricata_{$if_real}{$suricata_uuid}/alerts.log", "w+"); if ($fd) fclose($fd); - conf_mount_ro(); /* XXX: This is needed if suricata is run as suricata user */ mwexec('/bin/chmod 660 {$suricatalogdir}*', true); sigkillbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid", "HUP"); @@ -375,7 +373,7 @@ if ($savemsg) { $selected = ""; if ($id == $instanceid) $selected = "selected"; - echo "\n"; + echo "\n"; } ?>    @@ -386,7 +384,7 @@ if ($savemsg) {    + onclick="return confirm('Do you really want to remove all instance logs?');"> @@ -439,21 +437,30 @@ if ($savemsg) { /* make sure alert file exists */ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.log")) { - exec("tail -{$anentries} -r /var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.log > /tmp/alerts_{$suricata_uuid}"); - if (file_exists("/tmp/alerts_{$suricata_uuid}")) { + exec("tail -{$anentries} -r /var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.log > /tmp/alerts_suricata{$suricata_uuid}"); + if (file_exists("/tmp/alerts_suricata{$suricata_uuid}")) { $tmpblocked = array_flip(suricata_get_blocked_ips()); $counter = 0; /* 0 1 2 3 4 5 6 7 8 9 10 11 12 */ /* File format timestamp,action,sig_generator,sig_id,sig_rev,msg,classification,priority,proto,src,srcport,dst,dstport */ - $fd = fopen("/tmp/alerts_{$suricata_uuid}", "r"); + $fd = fopen("/tmp/alerts_suricata{$suricata_uuid}", "r"); while (($fields = fgetcsv($fd, 1000, ',', '"')) !== FALSE) { if(count($fields) < 12) continue; + // Create a DateTime object from the event timestamp that + // we can use to easily manipulate output formats. + $event_tm = date_create_from_format("m/d/Y-H:i:s.u", $fields[0]); + + // Check the 'CATEGORY' field for the text "(null)" and + // substitute "Not Assigned". + if ($fields[6] == "(null)") + $fields[6] = "Not Assigned"; + /* Time */ - $alert_time = substr($fields[0], strpos($fields[0], '-')+1, -7); + $alert_time = date_format($event_tm, "H:i:s"); /* Date */ - $alert_date = trim(substr($fields[0], 0, strpos($fields[0], '-'))); + $alert_date = date_format($event_tm, "m/d/Y"); /* Description */ $alert_descr = $fields[5]; $alert_descr_url = urlencode($fields[5]); @@ -462,7 +469,7 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo /* Protocol */ $alert_proto = $fields[8]; /* IP SRC */ - $alert_ip_src = $fields[9]; + $alert_ip_src = inet_ntop(inet_pton($fields[9])); /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_src = str_replace(":", ":​", $alert_ip_src); /* Add Reverse DNS lookup icons */ @@ -491,7 +498,7 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo /* IP SRC Port */ $alert_src_p = $fields[10]; /* IP Destination */ - $alert_ip_dst = $fields[11]; + $alert_ip_dst = inet_ntop(inet_pton($fields[11])); /* Add zero-width space as soft-break opportunity after each colon if we have an IPv6 address */ $alert_ip_dst = str_replace(":", ":​", $alert_ip_dst); /* Add Reverse DNS lookup icons */ @@ -538,7 +545,7 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo } else { $sid_dsbl_link = ""; } /* DESCRIPTION */ @@ -560,7 +567,7 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo $counter++; } fclose($fd); - @unlink("/tmp/alerts_{$suricata_uuid}"); + @unlink("/tmp/alerts_suricata{$suricata_uuid}"); } } ?> diff --git a/config/suricata/suricata_app_parsers.php b/config/suricata/suricata_app_parsers.php index eddf273d..e8f20226 100644 --- a/config/suricata/suricata_app_parsers.php +++ b/config/suricata/suricata_app_parsers.php @@ -348,15 +348,14 @@ elseif ($_POST['save']) { /**************************************************/ /* If we have a valid rule ID, save configuration */ - /* then update the suricata.conf file and rebuild */ - /* the rules for this interface. */ + /* then update the suricata.conf file for this */ + /* interface. */ /**************************************************/ if (isset($id) && $a_nat[$id]) { $a_nat[$id] = $natent; write_config(); - $rebuild_rules = true; - suricata_generate_yaml($natent); $rebuild_rules = false; + suricata_generate_yaml($natent); } header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); @@ -385,7 +384,7 @@ include_once("head.inc"); } ?> - +
    {$sid} {$supplink}{$sid} {$supplink}{$protocol}{$source}{$destination}{$source}{$destination}{$flowbits}{$message}
    @@ -397,7 +396,7 @@ include_once("head.inc"); $tab_array[] = array(gettext("Update Rules"), false, "/suricata/suricata_download_updates.php"); $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php?instance={$id}"); $tab_array[] = array(gettext("Suppress"), false, "/suricata/suricata_suppress.php"); - $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php"); + $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php?instance={$id}"); display_top_tabs($tab_array); echo ''; echo ' + height="17" border="0" title=""> $v): ?> @@ -482,7 +481,7 @@ include_once("head.inc"); "all") : ?> "> + title=""> "> diff --git a/config/suricata/suricata_check_cron_misc.inc b/config/suricata/suricata_check_cron_misc.inc index 88dfd5ff..2fdc7832 100644 --- a/config/suricata/suricata_check_cron_misc.inc +++ b/config/suricata/suricata_check_cron_misc.inc @@ -68,7 +68,7 @@ if ($suricatalogdirsizeKB > 0 && $suricatalogdirsizeKB > $suricataloglimitsizeKB /* Clean-up the logs for each configured Suricata instance */ foreach ($config['installedpackages']['suricata']['rule'] as $value) { - $if_real = suricata_get_real_interface($value['interface']); + $if_real = get_real_interface($value['interface']); $suricata_uuid = $value['uuid']; $suricata_log_dir = SURICATALOGDIR . "suricata_{$if_real}{$suricata_uuid}"; log_error(gettext("[Suricata] Truncating logs for {$value['descr']} ({$if_real})...")); diff --git a/config/suricata/suricata_check_for_rule_updates.php b/config/suricata/suricata_check_for_rule_updates.php index 280add7a..3cf6b84b 100644 --- a/config/suricata/suricata_check_for_rule_updates.php +++ b/config/suricata/suricata_check_for_rule_updates.php @@ -434,7 +434,7 @@ if ($emergingthreats == 'on') { // The code below renames ET files with a prefix, so we // skip renaming the Suricata default events rule files // that are also bundled in the ET rules. - $default_rules = array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules" ); + $default_rules = array( "decoder-events.rules", "files.rules", "http-events.rules", "smtp-events.rules", "stream-events.rules", "tls-events.rules" ); $files = glob("{$tmpfname}/emerging/rules/*.rules"); // Determine the correct prefix to use based on which // Emerging Threats rules package is enabled. @@ -656,17 +656,38 @@ if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules = $rebuild_rules = false; /* Restart Suricata if already running and we are not rebooting to pick up the new rules. */ - if (is_process_running("suricata") && !$g['booting']) { - if ($pkg_interface <> "console") { - update_status(gettext('Restarting Suricata to activate the new set of rules...')); - update_output_window(gettext("Please wait ... restarting Suricata will take some time...")); + if (is_process_running("suricata") && !$g['booting'] && + !empty($config['installedpackages']['suricata']['rule'])) { + + // See if "Live Reload" is configured and signal each Suricata instance + // if enabled, else just do a hard restart of all the instances. + if ($config['installedpackages']['suricata']['config'][0]['live_swap_updates'] == 'on') { + if ($pkg_interface <> "console") { + update_status(gettext('Signalling Suricata to live-load the new set of rules...')); + update_output_window(gettext("Please wait ... the process should complete in a few seconds...")); + } + log_error(gettext("[Suricata] Live-Reload of rules from auto-update is enabled...")); + error_log(gettext("\tLive-Reload of updated rules is enabled...\n"), 3, $suricata_rules_upd_log); + foreach ($config['installedpackages']['suricata']['rule'] as $value) { + $if_real = get_real_interface($value['interface']); + suricata_reload_config($value); + error_log(gettext("\tLive swap of updated rules requested for " . convert_friendly_interface_to_friendly_descr($value['interface']) . ".\n"), 3, $suricata_rules_upd_log); + } + log_error(gettext("[Suricata] Live-Reload of updated rules completed...")); + error_log(gettext("\tLive-Reload of the updated rules is complete.\n"), 3, $suricata_rules_upd_log); + } + else { + if ($pkg_interface <> "console") { + update_status(gettext('Restarting Suricata to activate the new set of rules...')); + update_output_window(gettext("Please wait ... restarting Suricata will take some time...")); + } + error_log(gettext("\tRestarting Suricata to activate the new set of rules...\n"), 3, $suricata_rules_upd_log); + restart_service("suricata"); + if ($pkg_interface <> "console") + update_output_window(gettext("Suricata has restarted with your new set of rules...")); + log_error(gettext("[Suricata] Suricata has restarted with your new set of rules...")); + error_log(gettext("\tSuricata has restarted with your new set of rules.\n"), 3, $suricata_rules_upd_log); } - error_log(gettext("\tRestarting Suricata to activate the new set of rules...\n"), 3, $suricata_rules_upd_log); - restart_service("suricata"); - if ($pkg_interface <> "console") - update_output_window(gettext("Suricata has restarted with your new set of rules...")); - log_error(gettext("[Suricata] Suricata has restarted with your new set of rules...")); - error_log(gettext("\tSuricata has restarted with your new set of rules.\n"), 3, $suricata_rules_upd_log); } else { if ($pkg_interface <> "console") @@ -676,13 +697,17 @@ if ($snortdownload == 'on' || $emergingthreats == 'on' || $snortcommunityrules = // Remove old $tmpfname files if (is_dir("{$tmpfname}")) { - if ($pkg_interface <> "console") + if ($pkg_interface <> "console") { update_status(gettext("Cleaning up after rules extraction...")); + update_output_window(gettext("Removing {$tmpfname} directory...")); + } exec("/bin/rm -r {$tmpfname}"); } -if ($pkg_interface <> "console") +if ($pkg_interface <> "console") { update_status(gettext("The Rules update has finished...")); + update_output_window(""); +} log_error(gettext("[Suricata] The Rules update has finished.")); error_log(gettext("The Rules update has finished. Time: " . date("Y-m-d H:i:s"). "\n\n"), 3, $suricata_rules_upd_log); conf_mount_ro(); diff --git a/config/suricata/suricata_define_vars.php b/config/suricata/suricata_define_vars.php index b1cbfee9..e130e555 100644 --- a/config/suricata/suricata_define_vars.php +++ b/config/suricata/suricata_define_vars.php @@ -162,7 +162,7 @@ if ($savemsg) $tab_array[] = array(gettext("Update Rules"), false, "/suricata/suricata_download_updates.php"); $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php?instance={$id}"); $tab_array[] = array(gettext("Suppress"), false, "/suricata/suricata_suppress.php"); - $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php"); + $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php?instance={$id}"); display_top_tabs($tab_array); echo ''; echo ''; echo ' - + - + - + diff --git a/config/suricata/suricata_interfaces.php b/config/suricata/suricata_interfaces.php index 88b426ba..50ca99c1 100644 --- a/config/suricata/suricata_interfaces.php +++ b/config/suricata/suricata_interfaces.php @@ -36,10 +36,10 @@ $suricatadir = SURICATADIR; $suricatalogdir = SURICATALOGDIR; $rcdir = RCFILEPREFIX; -if ($_POST['id'] && is_numeric($_POST['id'])) +if ($_POST['id']) $id = $_POST['id']; else - $id = ""; + $id = 0; if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); @@ -47,32 +47,15 @@ $a_nat = &$config['installedpackages']['suricata']['rule']; $id_gen = count($config['installedpackages']['suricata']['rule']); if ($_POST['del_x']) { - /* delete selected rules */ + /* delete selected interfaces */ if (is_array($_POST['rule'])) { conf_mount_rw(); foreach ($_POST['rule'] as $rulei) { - /* convert fake interfaces to real */ $if_real = get_real_interface($a_nat[$rulei]['interface']); $suricata_uuid = $a_nat[$rulei]['uuid']; suricata_stop($a_nat[$rulei], $if_real); exec("/bin/rm -r {$suricatalogdir}suricata_{$if_real}{$suricata_uuid}"); exec("/bin/rm -r {$suricatadir}suricata_{$suricata_uuid}_{$if_real}"); - - // If interface had auto-generated Suppress List, then - // delete that along with the interface - $autolist = "{$a_nat[$rulei]['interface']}" . "suppress"; - if (is_array($config['installedpackages']['suricata']['suppress']) && - is_array($config['installedpackages']['suricata']['suppress']['item'])) { - $a_suppress = &$config['installedpackages']['suricata']['suppress']['item']; - foreach ($a_suppress as $k => $i) { - if ($i['name'] == $autolist) { - unset($config['installedpackages']['suricata']['suppress']['item'][$k]); - break; - } - } - } - - // Finally delete the interface's config entry entirely unset($a_nat[$rulei]); } conf_mount_ro(); @@ -106,12 +89,12 @@ if ($_POST['del_x']) { } /* start/stop Barnyard2 */ -if ($_POST['bartoggle'] && is_numeric($id)) { +if ($_POST['bartoggle']) { $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; $if_real = get_real_interface($suricatacfg['interface']); $if_friendly = convert_friendly_interface_to_friendly_descr($suricatacfg['interface']); - if (suricata_is_running($suricatacfg['uuid'], $if_real, 'barnyard2') == 'no') { + if (!suricata_is_running($suricatacfg['uuid'], $if_real, 'barnyard2')) { log_error("Toggle (barnyard starting) for {$if_friendly}({$suricatacfg['descr']})..."); sync_suricata_package_config(); suricata_barnyard_start($suricatacfg, $if_real); @@ -126,12 +109,12 @@ if ($_POST['bartoggle'] && is_numeric($id)) { } /* start/stop Suricata */ -if ($_POST['toggle'] && is_numeric($id)) { +if ($_POST['toggle']) { $suricatacfg = $config['installedpackages']['suricata']['rule'][$id]; $if_real = get_real_interface($suricatacfg['interface']); $if_friendly = convert_friendly_interface_to_friendly_descr($suricatacfg['interface']); - if (suricata_is_running($suricatacfg['uuid'], $if_real) == 'yes') { + if (suricata_is_running($suricatacfg['uuid'], $if_real)) { log_error("Toggle (suricata stopping) for {$if_friendly}({$suricatacfg['descr']})..."); suricata_stop($suricatacfg, $if_real); } else { @@ -151,8 +134,9 @@ if ($_POST['toggle'] && is_numeric($id)) { header("Location: /suricata/suricata_interfaces.php"); exit; } - -$pgtitle = "Services: Suricata Intrusion Detection System"; +$suri_bin_ver = SURICATA_VER; +$suri_pkg_ver = SURICATA_PKG_VER; +$pgtitle = "Services: Suricata {$suri_bin_ver} pkg {$suri_pkg_ver} - Intrusion Detection System"; include_once("head.inc"); ?> @@ -203,7 +187,7 @@ include_once("head.inc"); - @@ -240,7 +224,7 @@ include_once("head.inc"); $if_real = get_real_interface($natent['interface']); $natend_friendly= convert_friendly_interface_to_friendly_descr($natent['interface']); $suricata_uuid = $natent['uuid']; - if (suricata_is_running($suricata_uuid, $if_real) == 'no'){ + if (!suricata_is_running($suricata_uuid, $if_real)){ $iconfn = 'block'; $iconfn_msg1 = 'Suricata is not running on '; $iconfn_msg2 = '. Click to start.'; @@ -250,7 +234,7 @@ include_once("head.inc"); $iconfn_msg1 = 'Suricata is running on '; $iconfn_msg2 = '. Click to stop.'; } - if (suricata_is_running($suricata_uuid, $if_real, 'barnyard2') == 'no'){ + if (!suricata_is_running($suricata_uuid, $if_real, 'barnyard2')){ $biconfn = 'block'; $biconfn_msg1 = 'Barnyard2 is not running on '; $biconfn_msg2 = '. Click to start.'; diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php index 6dbf9412..d7b5a8cb 100644 --- a/config/suricata/suricata_interfaces_edit.php +++ b/config/suricata/suricata_interfaces_edit.php @@ -40,9 +40,9 @@ if (!is_array($config['installedpackages']['suricata']['rule'])) $config['installedpackages']['suricata']['rule'] = array(); $a_rule = &$config['installedpackages']['suricata']['rule']; -if ($_GET['id'] && is_numeric($_GET['id'])); +if ($_GET['id']); $id = htmlspecialchars($_GET['id'], ENT_QUOTES | ENT_HTML401); -if ($_POST['id'] && is_numeric($_POST['id'])) +if ($_POST['id']) $id = $_POST['id']; if (is_null($id)) $id = 0; @@ -130,8 +130,8 @@ if ($_POST["save"]) { if (!$_POST['interface']) $input_errors[] = gettext("Choosing an Interface is mandatory!"); - if ($_POST['max_pending_packets'] < 1 || $_POST['max_pending_packets'] > 65535) - $input_errors[] = gettext("The value for Maximum-Pending-Packets must be between 1 and 65,535!"); + if ($_POST['max_pending_packets'] < 1 || $_POST['max_pending_packets'] > 65000) + $input_errors[] = gettext("The value for Maximum-Pending-Packets must be between 1 and 65,000!"); if (!empty($_POST['max_pcap_log_size']) && !is_numeric($_POST['max_pcap_log_size'])) $input_errors[] = gettext("The value for 'Max Packet Log Size' must be numbers only. Do not include any alphabetic characters."); @@ -146,15 +146,6 @@ if ($_POST["save"]) { $natent['enable'] = $_POST['enable'] ? 'on' : 'off'; $natent['uuid'] = $pconfig['uuid']; - // See if the HOME_NET, EXTERNAL_NET, or SUPPRESS LIST values were changed - $suricata_reload = false; - if ($_POST['homelistname'] && ($_POST['homelistname'] <> $natent['homelistname'])) - $suricata_reload = true; - if ($_POST['externallistname'] && ($_POST['externallistname'] <> $natent['externallistname'])) - $suricata_reload = true; - if ($_POST['suppresslistname'] && ($_POST['suppresslistname'] <> $natent['suppresslistname'])) - $suricata_reload = true; - if ($_POST['descr']) $natent['descr'] = $_POST['descr']; else $natent['descr'] = strtoupper($natent['interface']); if ($_POST['max_pcap_log_size']) $natent['max_pcap_log_size'] = $_POST['max_pcap_log_size']; else unset($natent['max_pcap_log_size']); if ($_POST['max_pcap_log_files']) $natent['max_pcap_log_files'] = $_POST['max_pcap_log_files']; else unset($natent['max_pcap_log_files']); @@ -253,7 +244,7 @@ if ($_POST["save"]) { $natent['libhtp_policy']['item'][] = $default; // Enable the basic default rules for the interface - $natent['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events.rules"; + $natent['rulesets'] = "decoder-events.rules||files.rules||http-events.rules||smtp-events.rules||stream-events.rules||tls-events.rules"; // Adding a new interface, so set flag to build new rules $rebuild_rules = true; @@ -272,15 +263,6 @@ if ($_POST["save"]) { // Update suricata.conf and suricata.sh files for this interface sync_suricata_package_config(); - /*******************************************************/ - /* Signal Suricata to reload configuration if we changed */ - /* HOME_NET, EXTERNAL_NET or Suppress list values. */ - /* The function only signals a running Suricata instance */ - /* to safely reload these parameters. */ - /*******************************************************/ - if ($suricata_reload == true) - suricata_reload_config($natent, "USR2"); - header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); @@ -319,7 +301,7 @@ if ($savemsg) { $tab_array[] = array(gettext("Update Rules"), false, "/suricata/suricata_download_updates.php"); $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php?instance={$id}"); $tab_array[] = array(gettext("Suppress"), false, "/suricata/suricata_suppress.php"); - $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php"); + $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php?instance={$id}"); display_top_tabs($tab_array); echo ''; echo ' + gettext("1024") . "."; ?>

    " . + gettext("Warning: ") . "" . gettext("Setting this too high can lead to degradation and a possible system crash by exhausting available memory.") ?> @@ -557,7 +541,7 @@ if ($savemsg) {    " . gettext("Default") . "" . gettext(" is ") . "" . gettext("AC") . ""; ?>.

    - +
    @@ -587,7 +571,7 @@ if ($savemsg) { gettext("3000") . "."; ?>

    - + diff --git a/config/suricata/suricata_libhtp_policy_engine.php b/config/suricata/suricata_libhtp_policy_engine.php index 01f6b9e8..1a3c7455 100644 --- a/config/suricata/suricata_libhtp_policy_engine.php +++ b/config/suricata/suricata_libhtp_policy_engine.php @@ -53,9 +53,7 @@ **************************************************************************************/ ?> - - - diff --git a/config/suricata/suricata_os_policy_engine.php b/config/suricata/suricata_os_policy_engine.php index ea539e92..c9360901 100644 --- a/config/suricata/suricata_os_policy_engine.php +++ b/config/suricata/suricata_os_policy_engine.php @@ -49,9 +49,7 @@ **************************************************************************************/ ?> - - - @@ -183,17 +187,17 @@ var nentries = ; - "); + "); $counter++; - if($counter >= $nentries) + if($counter >= $suri_nentries) break; } } @@ -201,13 +205,16 @@ var nentries = ;
    '; @@ -469,7 +468,7 @@ include_once("head.inc"); "/> ">
    '; diff --git a/config/suricata/suricata_flow_stream.php b/config/suricata/suricata_flow_stream.php index 6c081fa8..1a65ddfd 100644 --- a/config/suricata/suricata_flow_stream.php +++ b/config/suricata/suricata_flow_stream.php @@ -299,15 +299,14 @@ elseif ($_POST['save']) { /**************************************************/ /* If we have a valid rule ID, save configuration */ - /* then update the suricata.conf file and rebuild */ - /* the rules for this interface. */ + /* then update the suricata.conf file for this */ + /* interface. */ /**************************************************/ if (isset($id) && $a_nat[$id]) { $a_nat[$id] = $natent; write_config(); - $rebuild_rules = true; - suricata_generate_yaml($natent); $rebuild_rules = false; + suricata_generate_yaml($natent); } header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); @@ -443,7 +442,7 @@ include_once("head.inc"); $tab_array[] = array(gettext("Update Rules"), false, "/suricata/suricata_download_updates.php"); $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php?instance={$id}"); $tab_array[] = array(gettext("Suppress"), false, "/suricata/suricata_suppress.php"); - $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php"); + $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php?instance={$id}"); display_top_tabs($tab_array); echo '
    '; diff --git a/config/suricata/suricata_global.php b/config/suricata/suricata_global.php index 3ba84736..99abc49b 100644 --- a/config/suricata/suricata_global.php +++ b/config/suricata/suricata_global.php @@ -45,6 +45,7 @@ $pconfig['suricataloglimit'] = $config['installedpackages']['suricata']['config' $pconfig['suricataloglimitsize'] = $config['installedpackages']['suricata']['config'][0]['suricataloglimitsize']; $pconfig['autoruleupdate'] = $config['installedpackages']['suricata']['config'][0]['autoruleupdate']; $pconfig['autoruleupdatetime'] = $config['installedpackages']['suricata']['config'][0]['autoruleupdatetime']; +$pconfig['live_swap_updates'] = $config['installedpackages']['suricata']['config'][0]['live_swap_updates']; $pconfig['log_to_systemlog'] = $config['installedpackages']['suricata']['config'][0]['log_to_systemlog']; $pconfig['clearlogs'] = $config['installedpackages']['suricata']['config'][0]['clearlogs']; $pconfig['forcekeepsettings'] = $config['installedpackages']['suricata']['config'][0]['forcekeepsettings']; @@ -137,6 +138,7 @@ if (!$input_errors) { } $config['installedpackages']['suricata']['config'][0]['autoruleupdatetime'] = str_pad($_POST['autoruleupdatetime'], 4, "0", STR_PAD_LEFT); $config['installedpackages']['suricata']['config'][0]['log_to_systemlog'] = $_POST['log_to_systemlog'] ? 'on' : 'off'; + $config['installedpackages']['suricata']['config'][0]['live_swap_updates'] = $_POST['live_swap_updates'] ? 'on' : 'off'; $config['installedpackages']['suricata']['config'][0]['clearlogs'] = $_POST['clearlogs'] ? 'on' : 'off'; $config['installedpackages']['suricata']['config'][0]['forcekeepsettings'] = $_POST['forcekeepsettings'] ? 'on' : 'off'; @@ -185,7 +187,7 @@ if ($input_errors) $tab_array[] = array(gettext("Suricata Interfaces"), false, "/suricata/suricata_interfaces.php"); $tab_array[] = array(gettext("Global Settings"), true, "/suricata/suricata_global.php"); $tab_array[] = array(gettext("Update Rules"), false, "/suricata/suricata_download_updates.php"); - $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php?instance={$instanceid}"); + $tab_array[] = array(gettext("Alerts"), false, "/suricata/suricata_alerts.php"); $tab_array[] = array(gettext("Suppress"), false, "/suricata/suricata_suppress.php"); $tab_array[] = array(gettext("Logs Browser"), false, "/suricata/suricata_logs_browser.php"); display_top_tabs($tab_array); @@ -204,13 +206,13 @@ if ($input_errors) + /> + /> @@ -232,9 +234,8 @@ if ($input_errors) -
    >
    >

    +

    @@ -246,7 +247,7 @@ if ($input_errors) + /> @@ -264,9 +265,8 @@ if ($input_errors) -
    >
     

    +

    @@ -277,7 +277,7 @@ if ($input_errors) + /> + " . gettext("Hint: ") . "" . gettext("in most cases, every 12 hours is a good choice."); ?> + + + + @@ -328,12 +335,12 @@ if ($input_errors)
    >

    " . gettext("Note: ") . "" . @@ -300,19 +300,26 @@ if ($input_errors) > -     " . gettext("NEVER") . "" . gettext(" disables auto-updates."); ?>

    - " . gettext("Hint: ") . "
    " . gettext("in most cases, every 12 hours is a good choice."); ?>
    >   - " . - gettext("Default") . " " . gettext("is ") . "" . gettext("00:03") . ""; ?>.

    + maxlength="5" value="" />   + " . gettext("00:03") . ""; ?>.

    /> +  " . gettext("Not Checked") . ""; ?>

    +
    > + /> ()
    > + />

    " . gettext("MB:") . "";?>  - +  " . gettext("20%") . "" . gettext(" of available space.");?>
    @@ -366,24 +373,21 @@ if ($input_errors)
    - > />  +
    - > />  +
    - > />  +
      +  
    '; @@ -521,7 +503,9 @@ if ($savemsg) {   " . - gettext("1024") . "."; ?>

    - +
    @@ -163,8 +161,6 @@ gettext("Cancel changes and return to App Parsers tab"); ?>">
    -
    - +
    @@ -120,8 +118,6 @@ gettext("Cancel changes and return to Flow/Stream tab"); ?>">
    -
    " . $alert['instanceid'] . " " . $alert['dateonly'] . "
    " . $alert['timeonly'] . "
    " . $alert['src'] . ":" . $alert['srcport'] . "
    " . $alert['dst'] . ":" . $alert['dstport'] . "
    Priority: " . $alert['priority'] . "
    " . $alert['category'] . "
    Pri: " . $alert['priority'] . " " . $alert['category'] . "
    - -- cgit v1.2.3 From 65a6c18d04094037d7efcd2c9fc6a26d5fe7e7f6 Mon Sep 17 00:00:00 2001 From: crocomo Date: Tue, 4 Mar 2014 07:28:58 +0100 Subject: Enable built-in ACLs; Fix version.bind; Fix typos * Enable use of the built-in ACLs as per [1]. Especially 'localhost' and 'localnets' come in handy on large firewall installations. * Fix version.bind so that the server does not process queries at all as per [1], which is more secure. * Typo with listenon: Any -> any (more or less an esthetic fix) * Two minor indentation errors [1] http://ftp.isc.org/isc/bind9/cur/9.9/doc/arm/Bv9ARM.ch06.html --- config/bind/bind.inc | 24 +++++++++++++++--------- config/bind/bind.xml | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/config/bind/bind.inc b/config/bind/bind.inc index 3aec31ab..156e9eb8 100644 --- a/config/bind/bind.inc +++ b/config/bind/bind.inc @@ -43,7 +43,7 @@ $pf_version=substr(trim(file_get_contents("/etc/version")),0,3); if ($pf_version > 2.0) define('BIND_LOCALBASE', '/usr/pbi/bind-' . php_uname("m")); else - define('BIND_LOCALBASE','/usr/local'); + define('BIND_LOCALBASE','/usr/local'); define('CHROOT_LOCALBASE','/cf/named'); @@ -95,8 +95,7 @@ function bind_zone_validate($post, $input_errors){ } } - function bind_sync(){ - +function bind_sync(){ global $config; conf_mount_rw(); //create rndc @@ -164,8 +163,8 @@ EOD; } //check ips to listen on if (preg_match("/All/",$bind['listenon'])){ - $bind_listenonv6="Any;"; - $bind_listenon="Any;"; + $bind_listenonv6="any;"; + $bind_listenon="any;"; } else{ $bind_listenonv6=""; @@ -198,7 +197,7 @@ EOD; if ($bind_notify == on) $bind_conf .="\t\tnotify yes;\n"; if ($hide_version == on) - $bind_conf .="\t\tversion \"N/A\";\n"; + $bind_conf .="\t\tversion none;\n"; $bind_conf .= preg_replace("/^/m","\t\t",$custom_options); $bind_conf .= "\n\t};\n\n"; @@ -245,15 +244,22 @@ EOD; #Config Zone domain if(!is_array($config["installedpackages"]["bindacls"]) || !is_array($config["installedpackages"]["bindacls"]["config"])){ - $config["installedpackages"]["bindacls"]["config"][] =array("name"=>"any","description"=>"Default Access list","row" => array("value"=> "","description"=>"")); - write_config("Create Default bind acl 'Any'"); + $config["installedpackages"]["bindacls"]["config"][] = + array("name"=>"none","description"=>"BIND Built-in ACL","row"=>array("value"=>"","description"=>"")); + $config["installedpackages"]["bindacls"]["config"][] = + array("name"=>"any","description"=>"BIND Built-in ACL","row"=>array("value"=>"","description"=>"")); + $config["installedpackages"]["bindacls"]["config"][] = + array("name"=>"localhost","description"=>"BIND Built-in ACL","row"=>array("value"=>"","description"=>"")); + $config["installedpackages"]["bindacls"]["config"][] = + array("name"=>"localnets","description"=>"BIND Built-in ACL","row"=>array("value"=>"","description"=>"")); + write_config("Create BIND Built-in ACLs"); } $bindacls = $config["installedpackages"]["bindacls"]["config"]; for ($i=0; $i Hide Version bind_hide_version - Hide the version of BIND, this prevents discover the version of our servers, use any exploit that exploits a vulnerability in Bind. + Hide the version of BIND (do not process queries to version.bind at all). This makes it more difficult to exploit the server. checkbox -- cgit v1.2.3 From ac8d8f95e0a3813904c8a160b1a2b460b4e1d434 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Tue, 4 Mar 2014 10:14:49 -0300 Subject: Fix spell --- config/zabbix2/zabbix2-proxy.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/zabbix2/zabbix2-proxy.xml b/config/zabbix2/zabbix2-proxy.xml index 8dc41e4e..982b321b 100644 --- a/config/zabbix2/zabbix2-proxy.xml +++ b/config/zabbix2/zabbix2-proxy.xml @@ -136,7 +136,7 @@ textarea 5 50 - Advanced paramete. There are some rearly used parameters that sometimes need defined. Value has form, example: StartDiscoverers=10 + Advanced parameters. There are some rarely used parameters that sometimes need to be defined. Value has form, example: StartDiscoverers=10 -- cgit v1.2.3 From f132caa07f3691132fbfb921840d1b9603a9f5b2 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 4 Mar 2014 12:54:32 -0500 Subject: No SIGHUP required to Suricata when clearing logs, so remove calls. --- config/suricata/suricata_alerts.php | 1 - config/suricata/suricata_check_cron_misc.inc | 6 ------ 2 files changed, 7 deletions(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index 75f21333..3b135f32 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -280,7 +280,6 @@ if ($_POST['delete']) { fclose($fd); /* XXX: This is needed if suricata is run as suricata user */ mwexec('/bin/chmod 660 {$suricatalogdir}*', true); - sigkillbypid("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid", "HUP"); header("Location: /suricata/suricata_alerts.php?instance={$instanceid}"); exit; } diff --git a/config/suricata/suricata_check_cron_misc.inc b/config/suricata/suricata_check_cron_misc.inc index 2fdc7832..b2678059 100644 --- a/config/suricata/suricata_check_cron_misc.inc +++ b/config/suricata/suricata_check_cron_misc.inc @@ -95,12 +95,6 @@ if ($suricatalogdirsizeKB > 0 && $suricatalogdirsizeKB > $suricataloglimitsizeKB // This is needed if suricata is run as suricata user mwexec('/bin/chmod 660 /var/log/suricata/*', true); - - // Soft-restart Suricata process to resync logging - if (file_exists("{$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid")) { - log_error(gettext("[Suricata] Restarting logging on {$value['descr']} ({$if_real})...")); - mwexec("/bin/pkill -HUP -F {$g['varrun_path']}/suricata_{$if_real}{$suricata_uuid}.pid -a"); - } } conf_mount_ro(); log_error(gettext("[Suricata] Automatic clean-up of Suricata logs completed.")); -- cgit v1.2.3 From 09ee53a7c9bbb16772b6db52da8b4f4f70338616 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 4 Mar 2014 12:57:08 -0500 Subject: Fix "even/odd" table row class assigns in widget -- they were backwards. --- config/suricata/suricata_alerts.widget.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/suricata/suricata_alerts.widget.php b/config/suricata/suricata_alerts.widget.php index 9ba502f7..370c6e96 100644 --- a/config/suricata/suricata_alerts.widget.php +++ b/config/suricata/suricata_alerts.widget.php @@ -191,7 +191,7 @@ var suri_nentries = ; $counter=0; if (is_array($suricata_alerts)) { foreach ($suricata_alerts as $alert) { - $evenRowClass = $counter % 2 ? " listMRodd" : " listMReven"; + $evenRowClass = $counter % 2 ? " listMReven" : " listMRodd"; echo("
    " . $alert['instanceid'] . " " . $alert['dateonly'] . "
    " . $alert['timeonly'] . "
    " . $alert['src'] . ":" . $alert['srcport'] . "
    " . $alert['dst'] . ":" . $alert['dstport'] . "
    Internal stats refresh rate + size="10" maxlength="5" /> Seconds, Leave this setting empty to not refresh the page automatically. EXAMPLE: 10 +
    Sticktable page refresh rate + size="10" maxlength="5" /> Seconds, Leave this setting empty to not refresh the page automatically. EXAMPLE: 10 +
    Global Advanced pass thru
    "; - echo "TESTJe
    "; + echo "Contents of the sticktable: $sticktablename
    "; $res = haproxy_socket_command("show table $sticktablename"); foreach($res as $line){ echo "
    ".print_r($line,true); -- cgit v1.2.3 From 9cabf2d6c98b88a7cc704a04c2eaf9992e903819 Mon Sep 17 00:00:00 2001 From: PiBa-NL Date: Thu, 6 Mar 2014 00:50:03 +0100 Subject: haproxy-devel, -fix sslcheckbox that was automatically turning on when editing -allow 2nd clones to be linked to the original primary frontend when making them shared --- config/haproxy-devel/haproxy_listeners_edit.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/config/haproxy-devel/haproxy_listeners_edit.php b/config/haproxy-devel/haproxy_listeners_edit.php index bd0f93d5..47fb3b03 100644 --- a/config/haproxy-devel/haproxy_listeners_edit.php +++ b/config/haproxy-devel/haproxy_listeners_edit.php @@ -80,6 +80,12 @@ if (isset($_GET['dup'])) $id = get_frontend_id($id); +if (!is_numeric($id)) +{ + //default value for new items. + $pconfig['ssloffloadacl'] = "yes"; +} + $servercerts = get_certificates_server(); $fields_sslCertificates=array(); @@ -227,17 +233,13 @@ $pfSversion = str_replace("\n", "", file_get_contents("/etc/version")); if(strstr($pfSversion, "1.2")) $one_two = true; -if (!$id) -{ - //default value for new items. - $pconfig['ssloffloadacl'] = "yes"; -} - $closehead = false; $pgtitle = "HAProxy: Frontend: Edit"; include("head.inc"); -$primaryfrontends = get_haproxy_frontends($pconfig['name']); +if (!isset($_GET['dup'])) + $excludefrontent = $pconfig['name']; +$primaryfrontends = get_haproxy_frontends($excludefrontent); $interfaces = haproxy_get_bindable_interfaces(); ?> -- cgit v1.2.3 From 1b54529ce154582ceadbea88d2a160d7b6e92149 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Thu, 6 Mar 2014 23:12:30 -0300 Subject: zabbix2 - fix typos --- config/zabbix2/zabbix2-proxy.xml | 3 +-- config/zabbix2/zabbix2.inc | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/config/zabbix2/zabbix2-proxy.xml b/config/zabbix2/zabbix2-proxy.xml index 982b321b..56094fb9 100644 --- a/config/zabbix2/zabbix2-proxy.xml +++ b/config/zabbix2/zabbix2-proxy.xml @@ -129,7 +129,7 @@ 10 true - + Advanced Parameters advancedparams base64 @@ -138,7 +138,6 @@ 50 Advanced parameters. There are some rarely used parameters that sometimes need to be defined. Value has form, example: StartDiscoverers=10 - sync_package_zabbix2(); diff --git a/config/zabbix2/zabbix2.inc b/config/zabbix2/zabbix2.inc index c08c5487..bf9c6606 100644 --- a/config/zabbix2/zabbix2.inc +++ b/config/zabbix2/zabbix2.inc @@ -193,7 +193,7 @@ function sync_package_zabbix2(){ $zbproxy_config = $config['installedpackages']['zabbixproxy']['config'][0]; if ($zbproxy_config['proxyenabled']=="on"){ $Mode=(is_numericint($zbproxy_config['proxymode'])?$zbproxy_config['proxymode'] : 0); - $AdvancedParams=base64_decode($zbagent_config['advancedparams']); + $AdvancedParams=base64_decode($zbproxy_config['advancedparams']); $zbproxy_conf_file = <<< EOF Server={$zbproxy_config['server']} -- cgit v1.2.3 From cdbc87a7bdf93eb41464b8b2326ea11fc1fb4cbe Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Fri, 7 Mar 2014 08:36:09 -0300 Subject: zabbix2 - update packages to 2.2.2 and bump version --- config/zabbix2/zabbix2-agent.xml | 2 +- config/zabbix2/zabbix2-proxy.xml | 2 +- pkg_config.10.xml | 8 ++++---- pkg_config.8.xml | 12 ++++++------ pkg_config.8.xml.amd64 | 12 ++++++------ 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/config/zabbix2/zabbix2-agent.xml b/config/zabbix2/zabbix2-agent.xml index 3f8e84db..9dc11bbd 100644 --- a/config/zabbix2/zabbix2-agent.xml +++ b/config/zabbix2/zabbix2-agent.xml @@ -41,7 +41,7 @@ zabbixagent Services: Zabbix-2 Agent Monitoring - 0.8_0 + 0.8_1 /usr/local/pkg/zabbix2.inc Zabbix Agent has been created/modified. Zabbix Agent has been deleted. diff --git a/config/zabbix2/zabbix2-proxy.xml b/config/zabbix2/zabbix2-proxy.xml index 56094fb9..369443ba 100644 --- a/config/zabbix2/zabbix2-proxy.xml +++ b/config/zabbix2/zabbix2-proxy.xml @@ -41,7 +41,7 @@ zabbixproxy Services: Zabbix-2 Proxy Monitoring - 0.8_0 + 0.8_1 /usr/local/pkg/zabbix2.inc Zabbix Proxy has been created/modified. Zabbix Proxy has been deleted. diff --git a/pkg_config.10.xml b/pkg_config.10.xml index 483e802a..e7d4b22b 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -1451,7 +1451,7 @@ Monitoring agent. Services http://www.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml - zabbix2-agent-2.2.1 pkg v0.8_0 + zabbix2-agent-2.2.2 pkg v0.8_1 BETA 2.2 zabbix2-agent.xml @@ -1460,14 +1460,14 @@ zabbix22-agent net-mgmt/zabbix22-agent - zabbix22-agent-2.2.1_2-##ARCH##.pbi + zabbix22-agent-2.2.2-##ARCH##.pbi Zabbix-2 Proxy Monitoring agent proxy. Services http://www.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml - zabbix2-proxy-2.2.1 pkg v0.8_0 + zabbix2-proxy-2.2.2 pkg v0.8_1 BETA 2.2 zabbix2-proxy.xml @@ -1477,7 +1477,7 @@ net-mgmt/zabbix22-proxy OPTIONS_SET+= SQLITE IPV6;OPTIONS_UNSET+= MYSQL JABBER GSSAPI - zabbix22-proxy-2.2.1_2-##ARCH##.pbi + zabbix22-proxy-2.2.2-##ARCH##.pbi diff --git a/pkg_config.8.xml b/pkg_config.8.xml index f050f718..efe5e33b 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -1887,7 +1887,7 @@ Monitoring agent. Services http://www.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml - zabbix2-agent-2.2.1 pkg v0.8_0 + zabbix2-agent-2.2.2 pkg v0.8_1 BETA 2.0 zabbix2-agent.xml @@ -1898,15 +1898,15 @@ net-mgmt/zabbix22-agent http://files.pfsense.org/packages/8/All/ - zabbix22-agent-2.2.1.tbz - zabbix22-agent-2.2.1-i386.pbi + zabbix22-agent-2.2.2.tbz + zabbix22-agent-2.2.2-i386.pbi Zabbix-2 Proxy Monitoring agent proxy. Services http://www.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml - zabbix2-proxy-2.2.1 pkg v0.8_0 + zabbix2-proxy-2.2.2 pkg v0.8_1 BETA 2.0 zabbix2-proxy.xml @@ -1918,8 +1918,8 @@ OPTIONS_SET+= SQLITE IPV6;OPTIONS_UNSET+= MYSQL JABBER GSSAPI http://files.pfsense.org/packages/8/All/ - zabbix22-proxy-2.2.1.tbz - zabbix22-proxy-2.2.1-i386.pbi + zabbix22-proxy-2.2.2.tbz + zabbix22-proxy-2.2.2-i386.pbi diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 7ce216b9..da2fdcb5 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -1874,7 +1874,7 @@ Monitoring agent. Services http://www.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml - zabbix2-agent-2.2.1 pkg v0.8_0 + zabbix2-agent-2.2.2 pkg v0.8_1 BETA 2.0 zabbix2-agent.xml @@ -1885,15 +1885,15 @@ net-mgmt/zabbix22-agent http://files.pfsense.org/packages/amd64/8/All/ - zabbix22-agent-2.2.1.tbz - zabbix22-agent-2.2.1-amd64.pbi + zabbix22-agent-2.2.2.tbz + zabbix22-agent-2.2.2-amd64.pbi Zabbix-2 Proxy Monitoring agent proxy. Services http://www.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml - zabbix2-proxy-2.2.1 pkg v0.8_0 + zabbix2-proxy-2.2.2 pkg v0.8_1 BETA 2.0 zabbix2-proxy.xml @@ -1905,8 +1905,8 @@ OPTIONS_SET+= SQLITE IPV6;OPTIONS_UNSET+= MYSQL JABBER GSSAPI http://files.pfsense.org/packages/amd64/8/All/ - zabbix22-proxy-2.2.1.tbz - zabbix22-proxy-2.2.1-amd64.pbi + zabbix22-proxy-2.2.2.tbz + zabbix22-proxy-2.2.2-amd64.pbi -- cgit v1.2.3 From 66c2763650a2543071042d6ca523e984dca146a1 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 15:44:10 -0500 Subject: Add fix for IPv6 address overflowing column layout. --- config/suricata/suricata_alerts.widget.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/config/suricata/suricata_alerts.widget.php b/config/suricata/suricata_alerts.widget.php index 370c6e96..c9cfc98e 100644 --- a/config/suricata/suricata_alerts.widget.php +++ b/config/suricata/suricata_alerts.widget.php @@ -134,9 +134,11 @@ function suricata_widget_get_alerts() { $suricata_alerts[$counter]['timestamp'] = strval(date_timestamp_get($event_tm)); $suricata_alerts[$counter]['timeonly'] = date_format($event_tm, "H:i:s"); $suricata_alerts[$counter]['dateonly'] = date_format($event_tm, "M d"); - $suricata_alerts[$counter]['src'] = $fields[9]; + // Add zero-width space as soft-break opportunity after each colon in any IPv6 address + $suricata_alerts[$counter]['src'] = str_replace(":", ":​", $fields[9]); $suricata_alerts[$counter]['srcport'] = $fields[10]; - $suricata_alerts[$counter]['dst'] = $fields[11]; + // Add zero-width space as soft-break opportunity after each colon in any IPv6 address + $suricata_alerts[$counter]['dst'] = str_replace(":", ":​", $fields[11]); $suricata_alerts[$counter]['dstport'] = $fields[12]; $suricata_alerts[$counter]['priority'] = $fields[7]; $suricata_alerts[$counter]['category'] = $fields[6]; -- cgit v1.2.3 From 3bb4d3df6243a654d9a323df8bc4c648da22c18f Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Fri, 7 Mar 2014 15:45:10 -0500 Subject: Add new 'Last Update' time and status message to window. --- .../suricata/suricata_check_for_rule_updates.php | 16 +++++++++++-- config/suricata/suricata_download_updates.php | 28 +++++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/config/suricata/suricata_check_for_rule_updates.php b/config/suricata/suricata_check_for_rule_updates.php index 3cf6b84b..4d159cdb 100644 --- a/config/suricata/suricata_check_for_rule_updates.php +++ b/config/suricata/suricata_check_for_rule_updates.php @@ -239,7 +239,7 @@ function suricata_check_rule_md5($file_url, $file_dst, $desc = "") { /* error occurred. */ /**********************************************************/ - global $pkg_interface, $suricata_rules_upd_log, $last_curl_error; + global $pkg_interface, $suricata_rules_upd_log, $last_curl_error, $update_errors; $suricatadir = SURICATADIR; $filename_md5 = basename($file_dst); @@ -284,6 +284,7 @@ function suricata_check_rule_md5($file_url, $file_dst, $desc = "") { if ($pkg_interface == "console") error_log(gettext("\tServer error message was: {$last_curl_error}\n"), 3, $suricata_rules_upd_log); error_log(gettext("\t{$desc} will not be updated.\n"), 3, $suricata_rules_upd_log); + $update_errors = true; return false; } } @@ -307,7 +308,7 @@ function suricata_fetch_new_rules($file_url, $file_dst, $file_md5, $desc = "") { /* FALSE if download was not successful. */ /**********************************************************/ - global $pkg_interface, $suricata_rules_upd_log, $last_curl_error; + global $pkg_interface, $suricata_rules_upd_log, $last_curl_error, $update_errors; $suricatadir = SURICATADIR; $filename = basename($file_dst); @@ -337,6 +338,7 @@ function suricata_fetch_new_rules($file_url, $file_dst, $file_md5, $desc = "") { error_log(gettext("\tDownloaded {$desc} file MD5: " . md5_file($file_dst) . "\n"), 3, $suricata_rules_upd_log); error_log(gettext("\tExpected {$desc} file MD5: {$file_md5}\n"), 3, $suricata_rules_upd_log); error_log(gettext("\t{$desc} file download failed. {$desc} will not be updated.\n"), 3, $suricata_rules_upd_log); + $update_errors = true; return false; } return true; @@ -349,6 +351,7 @@ function suricata_fetch_new_rules($file_url, $file_dst, $file_md5, $desc = "") { if ($pkg_interface == "console") error_log(gettext("\tThe error text was: {$last_curl_error}\n"), 3, $suricata_rules_upd_log); error_log(gettext("\t{$desc} will not be updated.\n"), 3, $suricata_rules_upd_log); + $update_errors = true; return false; } @@ -375,6 +378,7 @@ if (file_exists($suricata_rules_upd_log)) { /* Log start time for this rules update */ error_log(gettext("Starting rules update... Time: " . date("Y-m-d H:i:s") . "\n"), 3, $suricata_rules_upd_log); $last_curl_error = ""; +$update_errors = false; /* Check for and download any new Emerging Threats Rules sigs */ if ($emergingthreats == 'on') { @@ -715,4 +719,12 @@ conf_mount_ro(); // Restore the state of $pkg_interface $pkg_interface = $pkg_interface_orig; +/* Save this update status to the configuration file */ +if ($update_errors) + $config['installedpackages']['suricata']['config'][0]['last_rule_upd_status'] = gettext("failed"); +else + $config['installedpackages']['suricata']['config'][0]['last_rule_upd_status'] = gettext("success"); +$config['installedpackages']['suricata']['config'][0]['last_rule_upd_time'] = gettext(date("M-d Y H:i")); +write_config(); + ?> diff --git a/config/suricata/suricata_download_updates.php b/config/suricata/suricata_download_updates.php index 46030bd0..a353b054 100644 --- a/config/suricata/suricata_download_updates.php +++ b/config/suricata/suricata_download_updates.php @@ -40,6 +40,16 @@ $emergingthreats = $config['installedpackages']['suricata']['config'][0]['enable $etpro = $config['installedpackages']['suricata']['config'][0]['enable_etpro_rules']; $snortcommunityrules = $config['installedpackages']['suricata']['config'][0]['snortcommunityrules']; +/* Get last update information if available */ +if (!empty($config['installedpackages']['suricata']['config'][0]['last_rule_upd_time'])) + $last_rule_upd_time = htmlspecialchars($config['installedpackages']['suricata']['config'][0]['last_rule_upd_time']); +else + $last_rule_upd_time = gettext("Unknown"); +if (!empty($config['installedpackages']['suricata']['config'][0]['last_rule_upd_status'])) + $last_rule_upd_status = htmlspecialchars($config['installedpackages']['suricata']['config'][0]['last_rule_upd_status']); +else + $last_rule_upd_status = gettext("Unknown"); + $snort_rules_file = VRT_DNLD_FILENAME; $snort_community_rules_filename = GPLV2_DNLD_FILENAME; @@ -209,6 +219,22 @@ include_once("head.inc");
    + + + + + + + + + + + +
    +
    @@ -226,7 +252,7 @@ include_once("head.inc"); title=""/>     " name="force" id="force" class="formbtn" title="" - onclick="return confirm('');"/> + onclick="return confirm('');"/>


    -
    -    - - + "/> +     + "/> +   
    - - > - ', '', '', ''); ?>   - - ', '', '', ''); ?> + "/> +    /> + ', '', '', ''); ?>   + +  ', '', '', ''); ?>
    " class="formbtn" title=""/>

    " . - gettext("Suricata must be restarted to activate any SID enable/disable changes made on this tab."); ?>
    {$textss} - {$textss} + {$textse} + title='{$title}' name=\"toggle[]\"/>{$textse} {$textss}{$gid}{$textse} diff --git a/config/suricata/suricata_rules_edit.php b/config/suricata/suricata_rules_edit.php index ad6b2986..c02d3eba 100644 --- a/config/suricata/suricata_rules_edit.php +++ b/config/suricata/suricata_rules_edit.php @@ -33,31 +33,22 @@ require_once("/usr/local/pkg/suricata/suricata.inc"); $flowbit_rules_file = FLOWBITS_FILENAME; $suricatadir = SURICATADIR; -if (!is_array($config['installedpackages']['suricata']['rule'])) { - $config['installedpackages']['suricata']['rule'] = array(); -} -$a_rule = &$config['installedpackages']['suricata']['rule']; +if (isset($_GET['id']) && is_numericint($_GET['id'])) + $id = htmlspecialchars($_GET['id']); -$id = $_GET['id']; -if (is_null($id)) { - header("Location: /suricata/suricata_interfaces.php"); +if (is_null($id)) exit; -} -if (isset($id) && $a_rule[$id]) { - $pconfig['enable'] = $a_rule[$id]['enable']; - $pconfig['interface'] = $a_rule[$id]['interface']; - $pconfig['rulesets'] = $a_rule[$id]['rulesets']; -} -else { - header("Location: /suricata/suricata_interfaces.php"); - exit; +if (!is_array($config['installedpackages']['suricata']['rule'])) { + $config['installedpackages']['suricata']['rule'] = array(); } -/* convert fake interfaces to real */ -$if_real = get_real_interface($pconfig['interface']); +$a_rule = &$config['installedpackages']['suricata']['rule']; + +$if_real = get_real_interface($a_rule[$id]['interface']); $suricata_uuid = $a_rule[$id]['uuid']; -$suricatacfgdir = "{$suricatadir}suricata_{$suricata_uuid}_{$if_real}"; +$suricatacfgdir = "{$suricatadir}suricata_{$suricata_uuid}_{$if_real}/"; + $file = htmlspecialchars($_GET['openruleset'], ENT_QUOTES | ENT_HTML401); $contents = ''; $wrap_flag = "off"; @@ -73,13 +64,13 @@ else // a standard rules file, or a complete file name. // Test for the special case of an IPS Policy file. if (substr($file, 0, 10) == "IPS Policy") { - $rules_map = suricata_load_vrt_policy($a_rule[$id]['ips_policy']); - if (isset($_GET['ids'])) { - $contents = $rules_map[$_GET['gid']][trim($_GET['ids'])]['rule']; + $rules_map = suricata_load_vrt_policy(strtolower(trim(substr($file, strpos($file, "-")+1)))); + if (isset($_GET['sid']) && is_numericint($_GET['sid']) && isset($_GET['gid']) && is_numericint($_GET['gid'])) { + $contents = $rules_map[$_GET['gid']][trim($_GET['sid'])]['rule']; $wrap_flag = "soft"; } else { - $contents = "# Suricata IPS Policy - " . ucfirst($a_rule[$id]['ips_policy']) . "\n\n"; + $contents = "# Snort IPS Policy - " . ucfirst(trim(substr($file, strpos($file, "-")+1))) . "\n\n"; foreach (array_keys($rules_map) as $k1) { foreach (array_keys($rules_map[$k1]) as $k2) { $contents .= "# Category: " . $rules_map[$k1][$k2]['category'] . " SID: {$k2}\n"; @@ -90,7 +81,7 @@ if (substr($file, 0, 10) == "IPS Policy") { unset($rules_map); } // Is it a SID to load the rule text from? -elseif (isset($_GET['sid']) && is_numeric(trim($_GET['sid']))) { +elseif (isset($_GET['sid']) && is_numericint($_GET['sid']) && isset($_GET['gid']) && is_numericint($_GET['gid'])) { // If flowbit rule, point to interface-specific file if ($file == "Auto-Flowbit Rules") $rules_map = suricata_load_rules_map("{$suricatacfgdir}rules/" . FLOWBITS_FILENAME); diff --git a/config/suricata/suricata_rules_flowbits.php b/config/suricata/suricata_rules_flowbits.php index 53019894..d5629fae 100644 --- a/config/suricata/suricata_rules_flowbits.php +++ b/config/suricata/suricata_rules_flowbits.php @@ -43,8 +43,8 @@ $a_nat = &$config['installedpackages']['suricata']['rule']; if (isset($_POST['id'])) $id = $_POST['id']; -elseif (isset($_GET['id'])) - $id = $_GET['id']; +elseif (isset($_GET['id']) && is_numericint($_GET['id'])) + $id = htmlspecialchars($_GET['id']); if (is_null($id)) { header("Location: /suricata/suricata_interfaces.php"); @@ -283,7 +283,6 @@ if ($savemsg) /> -
    ' + row_split[2] + '
    ' + row_split[3] + '
    ' + 'Pri: ' + row_split[4] + ' ' + row_split[5] + '' + row_split[0] + '
    ' + row_split[1] + '
    ' + row_split[2] + '
    ' + row_split[3] + '
    ' + 'Pri: ' + row_split[4] + ' ' + row_split[5] + '
    +
    + + + + + - - - + + + @@ -195,9 +206,9 @@ var suri_nentries = ; foreach ($suricata_alerts as $alert) { $evenRowClass = $counter % 2 ? " listMReven" : " listMRodd"; echo(" - - - "); + + + "); $counter++; if($counter >= $suri_nentries) break; -- cgit v1.2.3 From 3bd710acc08252498e46e5c5d8608a3c6fbd122f Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sat, 8 Mar 2014 12:31:26 -0500 Subject: Add ellipsis class and tooltips to Dashboard Widget IP columns. --- config/suricata/suricata_alerts.js | 8 ++++-- config/suricata/suricata_alerts.widget.php | 44 ++++++++++++++++-------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/config/suricata/suricata_alerts.js b/config/suricata/suricata_alerts.js index 16e0c73c..b6a5d3c3 100644 --- a/config/suricata/suricata_alerts.js +++ b/config/suricata/suricata_alerts.js @@ -14,9 +14,11 @@ function suricata_alerts_fetch_new_rules_callback(callback_data) { for(var x=0; x' + row_split[1] + ''; - line += ''; - line += ''; + line = ''; + line += ''; + line += ''; new_data_to_add[new_data_to_add.length] = line; } suricata_alerts_update_div_rows(new_data_to_add); diff --git a/config/suricata/suricata_alerts.widget.php b/config/suricata/suricata_alerts.widget.php index ce01c0a4..6c30ecdc 100644 --- a/config/suricata/suricata_alerts.widget.php +++ b/config/suricata/suricata_alerts.widget.php @@ -80,8 +80,8 @@ if (isset($_GET['getNewAlerts'])) { $suri_alerts = suricata_widget_get_alerts(); $counter = 0; foreach ($suri_alerts as $a) { - $response .= $a['instanceid'] . " " . $a['dateonly'] . "||" . $a['timeonly'] . "||" . $a['src'] . ":" . $a['srcport'] . "||"; - $response .= $a['dst'] . ":" . $a['dstport'] . "||" . $a['priority'] . "||" . $a['category'] . "\n"; + $response .= $a['instanceid'] . " " . $a['dateonly'] . "||" . $a['timeonly'] . "||" . $a['src'] . "||"; + $response .= $a['dst'] . "||" . $a['priority'] . "||" . $a['category'] . "\n"; $counter++; if($counter >= $suri_nentries) break; @@ -134,18 +134,22 @@ function suricata_widget_get_alerts() { $suricata_alerts[$counter]['timestamp'] = strval(date_timestamp_get($event_tm)); $suricata_alerts[$counter]['timeonly'] = date_format($event_tm, "H:i:s"); $suricata_alerts[$counter]['dateonly'] = date_format($event_tm, "M d"); - // Add zero-width space as soft-break opportunity after each colon in any IPv6 address - if (is_ipaddrv6($fields[9]) && !empty($fields[10])) - $suricata_alerts[$counter]['src'] = "[" . str_replace(":", ":​", $fields[9]) . "]"; + // Add square brackets around any IPv6 address + if (is_ipaddrv6($fields[9])) + $suricata_alerts[$counter]['src'] = "[" . $fields[9] . "]"; else $suricata_alerts[$counter]['src'] = $fields[9]; - $suricata_alerts[$counter]['srcport'] = $fields[10]; - // Add zero-width space as soft-break opportunity after each colon in any IPv6 address - if (is_ipaddrv6($fields[11]) && !empty($fields[12])) - $suricata_alerts[$counter]['dst'] = "[" . str_replace(":", ":​", $fields[11]) . "]"; + // Add the SRC PORT if not null + if (!empty($fields[10])) + $suricata_alerts[$counter]['src'] .= ":" . $fields[10]; + // Add square brackets around any IPv6 address + if (is_ipaddrv6($fields[11])) + $suricata_alerts[$counter]['dst'] = "[" . $fields[11] . "]"; else $suricata_alerts[$counter]['dst'] = $fields[11]; - $suricata_alerts[$counter]['dstport'] = $fields[12]; + // Add the SRC PORT if not null + if (!empty($fields[12])) + $suricata_alerts[$counter]['dst'] .= ":" . $fields[12]; $suricata_alerts[$counter]['priority'] = $fields[7]; $suricata_alerts[$counter]['category'] = $fields[6]; $counter++; @@ -187,15 +191,15 @@ var suri_nentries = ;
    IF/DateSrc/DstDetailsIF/DateSrc/DstDetails
    " . $alert['instanceid'] . " " . $alert['dateonly'] . "
    " . $alert['timeonly'] . "
    " . $alert['src'] . ":" . $alert['srcport'] . "
    " . $alert['dst'] . ":" . $alert['dstport'] . "
    Pri: " . $alert['priority'] . " " . $alert['category'] . "
    " . $alert['instanceid'] . " " . $alert['dateonly'] . "
    " . $alert['timeonly'] . "
    " . $alert['src'] . ":" . $alert['srcport'] . "
    " . $alert['dst'] . ":" . $alert['dstport'] . "
    Pri: " . $alert['priority'] . " " . $alert['category'] . "
    ' + row_split[2] + '
    ' + row_split[3] + '
    ' + 'Pri: ' + row_split[4] + ' ' + row_split[5] + '' + row_split[0] + '
    ' + row_split[1] + '
    ' + row_split[2] + '

    ' + row_split[3] + '
    ' + 'Pri: ' + row_split[4] + ' ' + row_split[5] + '
    - - - + + + - - - - + + + + @@ -206,9 +210,9 @@ var suri_nentries = ; foreach ($suricata_alerts as $alert) { $evenRowClass = $counter % 2 ? " listMReven" : " listMRodd"; echo(" - - - "); + + + "); $counter++; if($counter >= $suri_nentries) break; -- cgit v1.2.3 From 09798494c3e32ef7c0958c681b2eccc846a3000c Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sat, 8 Mar 2014 13:53:25 -0500 Subject: Add code to close pop-up window if error is encountered. --- config/suricata/suricata_rules_edit.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/config/suricata/suricata_rules_edit.php b/config/suricata/suricata_rules_edit.php index 491bda61..b61c2f3a 100644 --- a/config/suricata/suricata_rules_edit.php +++ b/config/suricata/suricata_rules_edit.php @@ -36,8 +36,14 @@ $suricatadir = SURICATADIR; if (isset($_GET['id']) && is_numericint($_GET['id'])) $id = htmlspecialchars($_GET['id']); -if (is_null($id)) +// If we were not passed a valid index ID, close the pop-up and exit +if (is_null($id)) { + echo ''; + echo ''; + echo ''; exit; +} if (!is_array($config['installedpackages']['suricata']['rule'])) { $config['installedpackages']['suricata']['rule'] = array(); -- cgit v1.2.3 From 279bed909a58259a0f04c5de575955ce9e956ec0 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Sat, 8 Mar 2014 16:45:50 -0500 Subject: Cleanup HTML and formatting on a few panels. --- config/suricata/suricata_alerts.php | 52 ++++++++++++++--------------- config/suricata/suricata_logs_browser.php | 2 +- config/suricata/suricata_rules.php | 34 +++++++++---------- config/suricata/suricata_rules_flowbits.php | 14 ++++---- 4 files changed, 51 insertions(+), 51 deletions(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index 46a68b56..8e1effa7 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -374,7 +374,7 @@ if ($savemsg) { $selected = ""; if ($id == $instanceid) $selected = "selected"; - echo "\n"; + echo "\n"; } ?>    @@ -407,31 +407,31 @@ if ($savemsg) {
    IF/DateSrc/DstDetails
    " . $alert['instanceid'] . " " . $alert['dateonly'] . "
    " . $alert['timeonly'] . "
    " . $alert['src'] . ":" . $alert['srcport'] . "
    " . $alert['dst'] . ":" . $alert['dstport'] . "
    Pri: " . $alert['priority'] . " " . $alert['category'] . "
    " . $alert['instanceid'] . " " . $alert['dateonly'] . "
    " . $alert['timeonly'] . "
    " . $alert['src'] . "

    " . $alert['dst'] . "
    Pri: " . $alert['priority'] . " " . $alert['category'] . "
    - +
    - - + + - + - - + + - - - - - - - - + + + + + + + + - + @@ -554,16 +554,16 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo $alert_class = $fields[6]; echo " - - - - - - - - - - + + + + + + + + + + \n"; $counter++; diff --git a/config/suricata/suricata_logs_browser.php b/config/suricata/suricata_logs_browser.php index 9fc24927..f9c34ed0 100644 --- a/config/suricata/suricata_logs_browser.php +++ b/config/suricata/suricata_logs_browser.php @@ -150,7 +150,7 @@ if ($input_errors) { $selected = ""; if ($id == $instanceid) $selected = "selected"; - echo "\n"; + echo "\n"; } ?>    diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php index 85427e6f..d532c6b1 100644 --- a/config/suricata/suricata_rules.php +++ b/config/suricata/suricata_rules.php @@ -530,14 +530,14 @@ if ($savemsg) {
    {$alert_date}
    {$alert_time}
    {$alert_priority}{$alert_proto}{$alert_class}{$alert_ip_src}{$alert_src_p}{$alert_ip_dst}{$alert_dst_p}{$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link}
    {$alert_descr}{$alert_date}
    {$alert_time}
    {$alert_priority}{$alert_proto}{$alert_class}{$alert_ip_src}{$alert_src_p}{$alert_ip_dst}{$alert_dst_p}{$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link}
    {$alert_descr}
    - + - + - - - - + + + + @@ -547,9 +547,9 @@ if ($savemsg) { - + - + @@ -610,35 +610,35 @@ if ($savemsg) { $sid_tooltip = gettext("View the raw text for this rule"); echo " - - - - - - - - "; diff --git a/config/suricata/suricata_rules_flowbits.php b/config/suricata/suricata_rules_flowbits.php index d5629fae..6470ff4b 100644 --- a/config/suricata/suricata_rules_flowbits.php +++ b/config/suricata/suricata_rules_flowbits.php @@ -205,13 +205,13 @@ if ($savemsg) - + -
    {$textss} - {$textse} + {$textss}{$gid}{$textse} + {$textss}{$sid}{$textse} + {$textss}{$protocol}{$textse} + {$srcspan}{$source} + {$srcprtspan}{$source_port} + {$dstspan}{$destination} + {$dstprtspan}{$destination_port} + {$textss}{$message}{$textse}
    - +
    - + - + @@ -263,11 +263,11 @@ if ($savemsg) // Use "echo" to write the table HTML row-by-row. echo "" . "" . - "" . - "" . - "" . + "" . + "" . + "" . "" . - "" . + "" . ""; $count++; } -- cgit v1.2.3 From b9b0ec8f04d0093d8ba6bf2ae55f9867e876be50 Mon Sep 17 00:00:00 2001 From: Marcello Coutinho Date: Wed, 12 Mar 2014 18:38:51 -0300 Subject: squid3-dev - merge captive portal squid helper contribution by forum user dig1234 https://forum.pfsense.org/index.php?topic=72443.msg395218#msg395218 --- config/squid3/33/check_ip.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/config/squid3/33/check_ip.php b/config/squid3/33/check_ip.php index 6c65ff3f..e16cee0b 100644 --- a/config/squid3/33/check_ip.php +++ b/config/squid3/33/check_ip.php @@ -49,10 +49,11 @@ if ($pf_version > 2.0){ $dbhandle = sqlite_open("$dir/$file", 0666, $error); if ($dbhandle){ $query = "select * from captiveportal"; - $result = sqlite_query($dbhandle, $query); + $result = sqlite_array_query($dbhandle, $query, SQLITE_ASSOC); if ($result){ - $row = sqlite_fetch_array($result, SQLITE_ASSOC); - $cp_db[]=implode(",",$row); + foreach ($result as $rownum => $row){ + $cp_db[$rownum]=implode(",",$row); + } sqlite_close($dbhandle); } } -- cgit v1.2.3 From 81a9356da1857aba8e7e03d956bfc092f699972a Mon Sep 17 00:00:00 2001 From: Chris Buechler Date: Thu, 13 Mar 2014 02:55:30 -0500 Subject: point package files to https://packages.pfsense.org, file downloads to https://files.pfsense.org, links to www, forum, etc. s/http/https/ --- pkg_config.10.xml | 298 ++++++++++++++--------------- pkg_config.7.xml | 224 +++++++++++----------- pkg_config.8.xml | 496 ++++++++++++++++++++++++------------------------- pkg_config.8.xml.amd64 | 492 ++++++++++++++++++++++++------------------------ pkg_config.xsl | 2 +- 5 files changed, 756 insertions(+), 756 deletions(-) diff --git a/pkg_config.10.xml b/pkg_config.10.xml index e7d4b22b..ce360f2f 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -4,20 +4,20 @@ 222 packagecopy@files.pfsense.org /usr/local/www/files/packages/10/All/ -http://files.pfsense.org/packages/10/All/ +https://files.pfsense.org/packages/10/All/ Asterisk - http://forum.pfsense.org/index.php/topic,47210.0.html + https://forum.pfsense.org/index.php/topic,47210.0.html Asterisk turns an ordinary computer into a communications server.]]> http://www.asterisk.org/ Services 1.8 pkg v0.3.1 Beta 2.2 - http://www.pfsense.com/packages/config/asterisk/asterisk.xml + https://packages.pfsense.org/packages/config/asterisk/asterisk.xml asterisk-1.8.25.0-##ARCH##.pbi net/asterisk @@ -49,14 +49,14 @@ bind - + http://www.isc.org/downloads/BIND/ Services 9.9.5 pkg v 0.3.2 RC 2.2 - http://www.pfsense.com/packages/config/bind/bind.xml + https://packages.pfsense.org/packages/config/bind/bind.xml bind.xml bind-9.9.5-##ARCH##.pbi @@ -70,8 +70,8 @@ Allows you to create and overwrite files from the GUI. File Management - http://doc.pfsense.org/index.php/Filer_package - http://www.pfsense.com/packages/config/filer/filer.xml + https://doc.pfsense.org/index.php/Filer_package + https://packages.pfsense.org/packages/config/filer/filer.xml 0.60 Beta 2.2 @@ -83,8 +83,8 @@ Block countries - This has been replaced by pfblocker. <u>This is a legacy app</u> Firewall - http://forum.pfsense.org/index.php/topic,25732.0.html - http://www.pfsense.com/packages/config/countryblock/countryblock.xml + https://forum.pfsense.org/index.php/topic,25732.0.html + https://packages.pfsense.org/packages/config/countryblock/countryblock.xml 0.2.4 Beta 2.2 @@ -95,13 +95,13 @@ Strikeback Detect port scans with iplog and strikeback - http://forum.pfsense.org/index.php/topic,37225.0.html + https://forum.pfsense.org/index.php/topic,37225.0.html Services 0.1 BETA 2.2 tom@tomschaefer.org - http://www.pfsense.com/packages/config/strikeback/strikeback.xml + https://packages.pfsense.org/packages/config/strikeback/strikeback.xml strikeback.xml i386 @@ -110,8 +110,8 @@ PHP File Manager Diagnostics - http://forum.pfsense.org/index.php/topic,26974.0.html - http://pfsense.org/packages/config/filemgr/filemgr.xml + https://forum.pfsense.org/index.php/topic,26974.0.html + https://packages.pfsense.org/packages/config/filemgr/filemgr.xml 0.1.3 Beta 2.2 @@ -126,8 +126,8 @@ This package also Block countries and IP ranges.
    pfBlocker replaces Countryblock and IPblocklist.]]> Firewall - http://forum.pfsense.org/index.php/topic,42543.0.html - http://pfsense.org/packages/config/pf-blocker/pfblocker.xml + https://forum.pfsense.org/index.php/topic,42543.0.html + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker.xml 1.0.2 Release 2.2 @@ -138,17 +138,17 @@ anyterm Ajax Interactive Shell - Have you ever wanted SSH or telnet access to your system from an internet desert - from behind a strict firewall, from an internet cafe, or even from a mobile phone? Anyterm is a combination of a web page and a process that runs on your web server that provides this access. WARNING! We suggest using Stunnel in combination with this package! http://anyterm.org/ - http://doc.pfsense.org/index.php/AnyTerm_package + https://doc.pfsense.org/index.php/AnyTerm_package Diagnostics 0.5 BETA 2.2 - http://www.pfsense.com/packages/config/anyterm/anyterm.xml + https://packages.pfsense.org/packages/config/anyterm/anyterm.xml anyterm.xml haproxy - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements both TCP and HTTP balance features from Haproxy.
    Supports acl's for smart backend switching.]]>
    @@ -157,7 +157,7 @@ 1.4.24_1 pkg v 1.2.4 Release 2.2 - http://www.pfsense.com/packages/config/haproxy/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy/haproxy.xml haproxy.xml haproxy-1.4.24_1-##ARCH##.pbi @@ -166,7 +166,7 @@
    haproxy-full - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements both TCP and HTTP balance features from Haproxy.
    (Legacy version)]]>
    @@ -175,13 +175,13 @@ 1.4.24_1 pkg v 1.1 Release 2.2 - http://www.pfsense.com/packages/config/haproxy-legacy/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy-legacy/haproxy.xml haproxy.xml haproxy-1.4.24_1-##ARCH##.pbi
    haproxy-devel - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements TCP, HTTP and HTTPS balance features from Haproxy.
    Supports acl's for smart backend switching.]]>
    @@ -190,7 +190,7 @@ 1.5-dev22 pkg v 0.7 Release 2.2 - http://www.pfsense.com/packages/config/haproxy-devel/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy-devel/haproxy.xml haproxy.xml haproxy-devel-1.5-dev22-##ARCH##.pbi @@ -202,7 +202,7 @@
    Apache with mod_security-dev - http://doc.pfsense.org/index.php/ProxyServerModSecurity_package + https://doc.pfsense.org/index.php/ProxyServerModSecurity_package http://www.modsecurity.org/ It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring, logging and real-time analysis.
    @@ -212,7 +212,7 @@ 2.4.6 pkg v0.3 ALPHA 2.2 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_virtualhost.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_virtualhost.xml proxy_mod_security-2.4.6_1-##ARCH##.pbi git-1.8.5.2-##ARCH##.pbi apache_virtualhost.xml @@ -226,14 +226,14 @@
    Proxy Server with mod_security - http://doc.pfsense.org/index.php/ProxyServerModSecurity_package + https://doc.pfsense.org/index.php/ProxyServerModSecurity_package http://www.modsecurity.org/ ModSecurity is a web application firewall that can work either embedded or as a reverse proxy. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring, logging and real-time analysis. In addition this package allows URL forwarding which can be convenient for hosting multiple websites behind pfSense using 1 IP address. Network Management 0.1.3 ALPHA 2.2 - http://www.pfsense.com/packages/config/apache_mod_security/apache_mod_security.xml + https://packages.pfsense.org/packages/config/apache_mod_security/apache_mod_security.xml proxy_mod_security-2.2.26-##ARCH##.pbi apache_mod_security.xml @@ -247,7 +247,7 @@ Avahi - http://doc.pfsense.org/index.php/Avahi_package + https://doc.pfsense.org/index.php/Avahi_package http://www.avahi.org/ Avahi is a system which facilitates service discovery on a local network. This means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. This kind of technology is already found in Apple MacOS X (branded Rendezvous, Bonjour and sometimes Zeroconf) and is very convenient. Avahi is mainly based on Lennart Poettering's flexmdns mDNS implementation for Linux which has been discontinued in favour of Avahi. Network Management @@ -259,7 +259,7 @@ 0.6.29 pkg v1.02 ALPHA 2.2 - http://www.pfsense.com/packages/config/avahi/avahi.xml + https://packages.pfsense.org/packages/config/avahi/avahi.xml avahi.xml Please visit the Avahi settings tab and select which interfaces you do not wish Avahi to listen on and click save to start the service. @@ -277,7 +277,7 @@ 5.0.1 v2.3 BETA 2.2 - http://www.pfsense.com/packages/config/ntop2/ntop.xml + https://packages.pfsense.org/packages/config/ntop2/ntop.xml ntop.xml true @@ -287,7 +287,7 @@ Track things you want to note for this system. Status - http://www.pfsense.com/packages/config/notes/notes.xml + https://packages.pfsense.org/packages/config/notes/notes.xml 0.2.4 Alpha 2.2 @@ -300,7 +300,7 @@ Trivial File Transport Protocol is a very simple file transfer protocol. Often used with routers, voip phones and more. Services - http://www.pfsense.com/packages/config/tftp2/tftp.xml + https://packages.pfsense.org/packages/config/tftp2/tftp.xml 2.0 Stable 2.2 @@ -311,8 +311,8 @@ PHP run as a service it can do anything PHP can do including but not limited to monitoring files, CPU, RAM, and send alerts to the syslog. Services - http://doc.pfsense.org/index.php/PHPService - http://www.pfsense.com/packages/config/phpservice/phpservice.xml + https://doc.pfsense.org/index.php/PHPService + https://packages.pfsense.org/packages/config/phpservice/phpservice.xml 0.4.1 Beta 2.2 @@ -325,7 +325,7 @@ Tool to Backup and Restore files and directories. System - http://www.pfsense.com/packages/config/backup/backup.xml + https://packages.pfsense.org/packages/config/backup/backup.xml 0.1.5 Beta 2.2 @@ -338,7 +338,7 @@ The cron utility is used to manage commands on a schedule. Services - http://www.pfsense.com/packages/config/cron/cron.xml + https://packages.pfsense.org/packages/config/cron/cron.xml 0.1.8 Beta 2.2 @@ -350,8 +350,8 @@ It is a web server package that can host HTML, Javascript, CSS, and PHP. It uses the lighttpd web server that is already installed. It uses PHP5 in FastCGI mode and has access to PHP Data Ojbects and PDO SQLite. Services - http://doc.pfsense.org/index.php/vhosts - http://www.pfsense.com/packages/config/vhosts/vhosts.xml + https://doc.pfsense.org/index.php/vhosts + https://packages.pfsense.org/packages/config/vhosts/vhosts.xml 0.7.4 Stable 2.2 @@ -371,7 +371,7 @@ barnyard2_UNSET_FORCE=ODBC PGSQL PRELUDE;barnyard2_SET_FORCE=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET_FORCE=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET_FORCE=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true - http://www.pfsense.com/packages/config/snort/snort.xml + https://packages.pfsense.org/packages/config/snort/snort.xml 2.9.5.6 pkg v3.0.4 2.2 Stable @@ -383,7 +383,7 @@ http://www.olsr.org/ The olsr.org OLSR daemon is an implementation of the Optimized Link State Routing protocol. OLSR is a routing protocol for mobile ad-hoc networks. The protocol is pro-active, table driven and utilizes a technique called multipoint relaying for message flooding. Services - http://www.pfsense.com/packages/config/olsrd.xml + https://packages.pfsense.org/packages/config/olsrd.xml olsrd-0.6.5.2-##ARCH##.pbi net/olsrd @@ -395,10 +395,10 @@ routed - http://www.pfsense.com/ + https://packages.pfsense.org/ RIP v1 and v2 daemon. Network Management - http://www.pfsense.com/packages/config/routed/routed.xml + https://packages.pfsense.org/packages/config/routed/routed.xml 1.1 Stable 2.2 @@ -409,7 +409,7 @@ http://www.openbsd.org/spamd/ Tarpits like spamd are fake SMTP servers, which accept connections but don't deliver mail. Instead, they keep the connections open and reply very slowly. If the peer is patient enough to actually complete the SMTP dialogue (which will take ten minutes or more), the tarpit returns a 'temporary error' code (4xx), which indicates that the mail could not be delivered successfully and that the sender should keep the mail in their queue and retry again later. Services - http://www.pfsense.com/packages/config/spamd/spamd.xml + https://packages.pfsense.org/packages/config/spamd/spamd.xml spamd-4.9.1_1-##ARCH##.pbi 4.9.1_1 v1.1 Beta @@ -430,8 +430,8 @@ It can do first and second line antispam combat before sending incoming mail to local mail servers.
    Postfix can also detect zombies, check RBLS, SPF, seach ldap for valid recipients and use third part antispam engines like policyd and mailscanner for better antispam solution.]]> Services - http://forum.pfsense.org/index.php/topic,40622.0.html - http://www.pfsense.com/packages/config/postfix/postfix.xml + https://forum.pfsense.org/index.php/topic,40622.0.html + https://packages.pfsense.org/packages/config/postfix/postfix.xml postfix-2.11.0-##ARCH##.pbi 2.10.2 pkg v.2.3.7 Release @@ -451,8 +451,8 @@ For all non-commercial it's free, without cost.
    For all commercial use visit dansguardian website to get a licence.]]> Services - http://www.pfsense.com/packages/config/dansguardian/dansguardian.xml - http://forum.pfsense.org/index.php/topic,43786.0.html + https://packages.pfsense.org/packages/config/dansguardian/dansguardian.xml + https://forum.pfsense.org/index.php/topic,43786.0.html dansguardian-2.12.0.3_2-##ARCH##.pbi 2.12.0.3_2 pkg v.0.1.8 beta @@ -473,8 +473,8 @@ This is a level3 mail scanning tool with high CPU load.]]> Services - http://www.pfsense.com/packages/config/mailscanner/mailscanner.xml - http://forum.pfsense.org/index.php/topic,43687.0.html + https://packages.pfsense.org/packages/config/mailscanner/mailscanner.xml + https://forum.pfsense.org/index.php/topic,43687.0.html mailscanner-4.84.5_3-##ARCH##.pbi 4.84.5_3 pkg v.0.2.4 beta @@ -491,9 +491,9 @@ http://siproxd.sourceforge.net/ Proxy for handling NAT of multiple SIP devices to a single public IP. Services - http://www.pfsense.com/packages/config/siproxd.xml + https://packages.pfsense.org/packages/config/siproxd.xml siproxd-0.8.0-##ARCH##.pbi - http://doc.pfsense.org/index.php/Siproxd_package + https://doc.pfsense.org/index.php/Siproxd_package net/siproxd @@ -506,13 +506,13 @@ OpenBGPD OpenBGPD is a FREE implementation of the Border Gateway Protocol, Version 4. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol. -- WARNING! Installs files to the same place as Quagga OSPF. Installing both will result in a broken state, remove this package before installing Quagga OSPF. NET - http://www.pfsense.com/packages/config/openbgpd/openbgpd.xml + https://packages.pfsense.org/packages/config/openbgpd/openbgpd.xml net/openbgpd 0.9.1 STABLE - http://doc.pfsense.org/index.php/OpenBGPD_package + https://doc.pfsense.org/index.php/OpenBGPD_package 2.2 openbgpd.xml openbgpd-5.2.20121209-##ARCH##.pbi @@ -532,7 +532,7 @@ WITHOUT_DEBUGGING=true;WITHOUT_GDBM=true;WITHOUT_PERL_MALLOC=true;WITH_PERL_64BITINT=true;WITHOUT_THREADS=true;WITHOUT_MULTIPLICITY=true;WITHOUT_SUIDPERL=true;WITHOUT_SITECUSTOMIZE=true;WITH_USE_PERL=true;WITH_GDSUPPORT=true RC1 2.2 - http://www.pfsense.com/packages/config/lightsquid/lightsquid.xml + https://packages.pfsense.org/packages/config/lightsquid/lightsquid.xml lightsquid.xml true @@ -543,8 +543,8 @@ Sarg provides many informations about Proxy(squid,squidguard or dansguardian) users activities: times, bytes, sites, etc...]]> Network Report - http://www.pfsense.com/packages/config/sarg/sarg.xml - http://forum.pfsense.org/index.php/topic,47765.0.html + https://packages.pfsense.org/packages/config/sarg/sarg.xml + https://forum.pfsense.org/index.php/topic,47765.0.html sarg-2.3.6_2-##ARCH##.pbi 2.3.6_2 pkg v.0.6.3 Release @@ -564,8 +564,8 @@ If it receives one with MAC-IP pair, which is not listed in 'ethers' file, it will send ARP reply with configured fake address.
    This will prevent not permitted host to work properly in local ethernet segment.]]> Security - http://www.pfsense.com/packages/config/ipguard/ipguard.xml - http://forum.pfsense.org/index.php/topic,49917.msg263664.html#msg263664 + https://packages.pfsense.org/packages/config/ipguard/ipguard.xml + https://forum.pfsense.org/index.php/topic,49917.msg263664.html#msg263664 ipguard-1.04_1-##ARCH##.pbi 1.0.4 pkg v.0.1 beta @@ -583,12 +583,12 @@ It uses the advanced features in FreeBSD 6/7/8 to achieve its high performance.
    Version 3 includes streaming support]]> http://varnish-cache.org - http://doc.pfsense.org/index.php/Varnish_package + https://doc.pfsense.org/index.php/Varnish_package Services 3.0.4 pkg v.0.2.1 RC 2.2 - http://www.pfsense.com/packages/config/varnish3/varnish_backends.xml + https://packages.pfsense.org/packages/config/varnish3/varnish_backends.xml varnish_backends.xml varnish-3.0.5-##ARCH##.pbi @@ -601,7 +601,7 @@ vnstat2 http://humdi.net/vnstat/ Vnstat is a console-based network traffic monitor<br />The vnstat PHP frontend and vnstati adds a more user friendly way of displaying traffic usage. - http://forum.pfsense.org/index.php/topic,14179.0.html + https://forum.pfsense.org/index.php/topic,14179.0.html Network Management vnstat-1.11_5-##ARCH##.pbi @@ -611,7 +611,7 @@ Stable 2.2 crazypark2@yahoo.dk - http://www.pfsense.com/packages/config/vnstat2/vnstat2.xml + https://packages.pfsense.org/packages/config/vnstat2/vnstat2.xml vnstat2.xml
    @@ -627,7 +627,7 @@ sysutils/mbmon - http://www.pfsense.com/packages/config/phpsysinfo/phpsysinfo.xml + https://packages.pfsense.org/packages/config/phpsysinfo/phpsysinfo.xml phpsysinfo.xml true @@ -638,9 +638,9 @@ Services 1.0.6.18 Beta - http://doc.pfsense.org/index.php/Tinydns_package + https://doc.pfsense.org/index.php/Tinydns_package 2.2 - http://www.pfsense.com/packages/config/tinydns/tinydns.xml + https://packages.pfsense.org/packages/config/tinydns/tinydns.xml tinydns.xml djbdns-1.05_15-##ARCH##.pbi @@ -657,9 +657,9 @@ Services 8.7.0.3046 (build-425873) Stable - http://doc.pfsense.org/index.php/Open_VM_Tools_package + https://doc.pfsense.org/index.php/Open_VM_Tools_package 2.2 - http://www.pfsense.org/packages/config/open-vm-tools_2/open-vm-tools.xml + https://packages.pfsense.org/packages/config/open-vm-tools_2/open-vm-tools.xml open-vm-tools.xml emulators/open-vm-tools-nox11 @@ -675,8 +675,8 @@ 1.21 Stable 2.2 - http://doc.pfsense.org/index.php/AutoConfigBackup - http://www.pfsense.com/packages/config/autoconfigbackup/autoconfigbackup.xml + https://doc.pfsense.org/index.php/AutoConfigBackup + https://packages.pfsense.org/packages/config/autoconfigbackup/autoconfigbackup.xml autoconfigbackup.xml @@ -687,13 +687,13 @@ 2.13 v1.1 Stable 2.2 - http://www.pfsense.com/packages/config/arping/arping.xml + https://packages.pfsense.org/packages/config/arping/arping.xml arping.xml arping-2.13-##ARCH##.pbi net/arping - http://doc.pfsense.org/index.php/Arping + https://doc.pfsense.org/index.php/Arping nmap @@ -701,10 +701,10 @@ NMap is a utility for network exploration or security auditing. It supports ping scanning (determine which hosts are up), many port scanning techniques (determine what services the hosts are offering), version detection (determine what application/service is runing on a port), and TCP/IP fingerprinting (remote host OS or device identification). It also offers flexible target and port specification, decoy/stealth scanning, SunRPC scanning, and more. Most Unix and Windows platforms are supported in both GUI and command line modes. Several popular handheld devices are also supported, including the Sharp Zaurus and the iPAQ. Security nmap-6.40_2-##ARCH##.pbi - http://www.pfsense.com/packages/config/nmap/nmap.xml + https://packages.pfsense.org/packages/config/nmap/nmap.xml nmap-6.40_2 pkg v1.2 Stable - http://doc.pfsense.org/index.php/Nmap_package + https://doc.pfsense.org/index.php/Nmap_package 2.2 nmap.xml @@ -720,8 +720,8 @@ 20111108_1 pkg v 0.3.1 2.2 BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml + https://doc.pfsense.org/index.php/IMSpector_package + https://packages.pfsense.org/packages/config/imspector/imspector.xml imspector.xml imspector-20111108_1-##ARCH##.pbi imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW @@ -738,13 +738,13 @@ BETA 2.2 rswagoner@gmail.com - http://www.pfsense.com/packages/config/nut/nut.xml + https://packages.pfsense.org/packages/config/nut/nut.xml nut.xml nut-2.6.5_1-##ARCH##.pbi sysutils/nut - http://doc.pfsense.org/index.php/Nut_package + https://doc.pfsense.org/index.php/Nut_package diag_new_states @@ -755,8 +755,8 @@ ptaylor@addressplus.net 2.2 BETA - http://www.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml - http://www.pfsense.com/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml darkstat @@ -768,7 +768,7 @@ Stable 2.2 sullrich+pfsp@gmail.com - http://www.pfsense.com/packages/config/darkstat/darkstat.xml + https://packages.pfsense.org/packages/config/darkstat/darkstat.xml darkstat.xml net-mgmt/darkstat @@ -779,7 +779,7 @@ http://www.mindrot.org/pfflowd.html pfflowd converts OpenBSD PF status messages (sent via the pfsync interface) to Cisco NetFlow datagrams. These datagrams may be sent (via UDP) to a host of one's choice. Utilising the OpenBSD stateful packet filter infrastructure means that flow tracking is very fast and accurate. Network Management - http://www.pfsense.com/packages/config/pfflowd.xml + https://packages.pfsense.org/packages/config/pfflowd.xml pfflowd-0.8-##ARCH##.pbi 0.8.3 Stable @@ -799,9 +799,9 @@ widentd-1.03_2-##ARCH##.pbi 1.03_1 Stable - http://doc.pfsense.org/index.php/Widentd_package + https://doc.pfsense.org/index.php/Widentd_package 2.2 - http://www.pfsense.com/packages/config/widentd.xml + https://packages.pfsense.org/packages/config/widentd.xml widentd.xml net/widentd @@ -814,14 +814,14 @@ Support: MySQL, PostgreSQL, LDAP, Kerberos
    FreeRADIUS and FreeRADIUS2 settings are not compatible so don't use them together or try to update
    On pfSense docs there is a how-to which could help you on porting users.]]> - http://doc.pfsense.org/index.php/FreeRADIUS_2.x_package + https://doc.pfsense.org/index.php/FreeRADIUS_2.x_package System 2.1.12_1/2.2.0 pkg v1.6.7_2 RC1 2.2 nachtfalkeaw@web.de freeradius-2.2.3_1-##ARCH##.pbi - http://www.pfsense.org/packages/config/freeradius2/freeradius.xml + https://packages.pfsense.org/packages/config/freeradius2/freeradius.xml freeradius.xml Please visit Services: FreeRADIUS @@ -840,7 +840,7 @@ BETA 2.2 bandwidthd-2.0.1_6-##ARCH##.pbi - http://www.pfsense.org/packages/config/bandwidthd/bandwidthd.xml + https://packages.pfsense.org/packages/config/bandwidthd/bandwidthd.xml bandwidthd.xml net/libpcap databases/postgresql91-client graphics/gd @@ -856,9 +856,9 @@ stunnel-4.56-##ARCH##.pbi 4.43.0 Stable - http://doc.pfsense.org/index.php/Stunnel_package + https://doc.pfsense.org/index.php/Stunnel_package 2.2 - http://www.pfsense.com/packages/config/stunnel.xml + https://packages.pfsense.org/packages/config/stunnel.xml stunnel.xml security/stunnel @@ -870,11 +870,11 @@ http://dast.nlanr.net/Projects/Iperf/ Iperf is a tool for testing network throughput, loss, and jitter. Network Management - http://www.pfsense.com/packages/config/iperf.xml + https://packages.pfsense.org/packages/config/iperf.xml iperf-2.0.5-##ARCH##.pbi 2.0.5 Beta - http://doc.pfsense.org/index.php/Iperf_package + https://doc.pfsense.org/index.php/Iperf_package 2.2 iperf.xml @@ -886,7 +886,7 @@ http://freshmeat.net/projects/netio/ This is a network benchmark for DOS, OS/2 2.x, Windows NT/2000 and Unix. It measures the net throughput of a network via NetBIOS and/or TCP/IP protocols (Unix and DOS only support TCP/IP) using various different packet sizes. Network Management - http://www.pfsense.com/packages/config/netio.xml + https://packages.pfsense.org/packages/config/netio.xml netio-1.26-##ARCH##.pbi 1.26 2.2 @@ -906,7 +906,7 @@ 0.82 Stable 2.2 - http://www.pfsense.com/packages/config/mtr-nox11.xml + https://packages.pfsense.org/packages/config/mtr-nox11.xml mtr-nox11.xml net/mtr @@ -929,7 +929,7 @@ www/squid_radius_auth squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET_FORCE=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squid/squid.xml + https://packages.pfsense.org/packages/config/squid/squid.xml squid.xml
    @@ -938,7 +938,7 @@ It combines squid as a proxy server with it's capabilities of acting as a HTTP / HTTPS reverse proxy.
    It includes an Exchange-Web-Access (OWA) Assistant.]]>
    - http://forum.pfsense.org/index.php/topic,48347.0.html + https://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network 3.1.20 pkg 2.0.6 @@ -952,7 +952,7 @@
    c-icap_UNSET_FORCE=IPV6;squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES;squid_SET_FORCE=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS AUTH_SASL CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squid3/31/squid.xml + https://packages.pfsense.org/packages/config/squid3/31/squid.xml squid.xml squid-3.1.22_1-##ARCH##.pbi @@ -962,7 +962,7 @@ It combines squid as a proxy server with it's capabilities of acting as a HTTP / HTTPS reverse proxy.
    It includes an Exchange-Web-Access (OWA) Assistant, ssl filtering and antivirus integration via i-cap]]>
    - http://forum.pfsense.org/index.php/topic,48347.0.html + https://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network 3.3.10 pkg 2.2.1 @@ -975,7 +975,7 @@ www/squid_radius_auth security/clamav www/squidclamav security/ca_root_nss www/c-icap-modules
    c-icap_UNSET_FORCE=IPV6;squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES AUTH_SASL;squid_SET_FORCE=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squid3/33/squid.xml + https://packages.pfsense.org/packages/config/squid3/33/squid.xml squid.xml squid-3.3.11-##ARCH##.pbi @@ -989,7 +989,7 @@ 2.2 seth.mos@dds.nl lcdproc-0.5.6-##ARCH##.pbi - http://www.pfsense.org/packages/config/lcdproc/lcdproc.xml + https://packages.pfsense.org/packages/config/lcdproc/lcdproc.xml lcdproc.xml sysutils/lcdproc @@ -1006,9 +1006,9 @@ BETA 2.2 michele@nt2.it - http://forum.pfsense.org/index.php/topic,44034.0.html + https://forum.pfsense.org/index.php/topic,44034.0.html lcdproc-0.5.6-##ARCH##.pbi - http://www.pfsense.org/packages/config/lcdproc-dev/lcdproc.xml + https://packages.pfsense.org/packages/config/lcdproc-dev/lcdproc.xml lcdproc.xml sysutils/lcdproc @@ -1028,7 +1028,7 @@ 2.1.a15_7 pkg v1.1.1 ALPHA 2.2 - http://www.pfsense.com/packages/config/arpwatch.xml + https://packages.pfsense.org/packages/config/arpwatch.xml arpwatch.xml arpwatch @@ -1050,7 +1050,7 @@ www/squidguard squidGuard_UNSET_FORCE=SQUID32 SQUID33;squidGuard_SET_FORCE=SAMPLE_BL SASL LDAP SQUID27;squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET_FORCE=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squidGuard/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard.xml squidguard.xml @@ -1069,7 +1069,7 @@ squidguard-devel squidGuard-devel_UNSET_FORCE=SQUID32 SQUID33;squidGuard-devel_SET_FORCE=LDAP STRIPNT SQUID27;squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET_FORCE=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard.xml squidguard.xml @@ -1088,7 +1088,7 @@ squidguard-squid3
    OPTIONS_SET_FORCE=FETCH LDAP;squidGuard_UNSET_FORCE=SQUID27;squidGuard_SET_FORCE=SAMPLE_BL SASL SQUID33;c-icap_UNSET_FORCE=IPV6 squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES;squid_SET_FORCE=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS AUTH_SASL CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squidGuard/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard.xml squidguard.xml @@ -1101,7 +1101,7 @@ 1.2.4 RELEASE 2.2 - http://www.pfsense.com/packages/config/openvpn-client-export/openvpn-client-export.xml + https://packages.pfsense.org/packages/config/openvpn-client-export/openvpn-client-export.xml openvpn-client-export.xml @@ -1118,7 +1118,7 @@ 0.91_1 pkg v1.01 BETA 2.2 - http://www.pfsense.com/packages/config/havp/havp.xml + https://packages.pfsense.org/packages/config/havp/havp.xml havp.xml dv_serg@mail.ru Please check the HAVP settings. @@ -1131,8 +1131,8 @@ 0.51 2.2 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jailctl.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jailctl.xml jailctl.xml ltning-jailctl@anduin.net @@ -1144,8 +1144,8 @@ 0.2 2.2 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jail_template.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jail_template.xml jail_template.xml ltning-jailctl@anduin.net @@ -1157,10 +1157,10 @@ Beta jimp@pfsense.org 2.2 - http://www.pfsense.org/packages/config/blinkled8/blinkled.xml + https://packages.pfsense.org/packages/config/blinkled8/blinkled.xml blinkled.xml - http://doc.pfsense.org/index.php/BlinkLED_Package - http://doc.pfsense.org/index.php/BlinkLED_Package + https://doc.pfsense.org/index.php/BlinkLED_Package + https://doc.pfsense.org/index.php/BlinkLED_Package sysutils/blinkled @@ -1174,14 +1174,14 @@ Beta jimp@pfsense.org 2.2 - http://www.pfsense.org/packages/config/gwled/gwled.xml + https://packages.pfsense.org/packages/config/gwled/gwled.xml gwled.xml Dashboard Widget: Snort Dashboard widget for Snort. System - http://www.pfsense.com/packages/config/widget-snort/widget-snort.xml + https://packages.pfsense.org/packages/config/widget-snort/widget-snort.xml 0.3.7 BETA 2.2 @@ -1191,7 +1191,7 @@ Dashboard Widget: HAVP Dashboard widget for HAVP alerts. System - http://www.pfsense.com/packages/config/widget-havp/widget-havp.xml + https://packages.pfsense.org/packages/config/widget-havp/widget-havp.xml 0.1 BETA 2.2 @@ -1201,7 +1201,7 @@ Dashboard Widget: Antivirus Status Dashboard widget for HAVP status. System - http://www.pfsense.com/packages/config/widget-antivirus/widget-antivirus.xml + https://packages.pfsense.org/packages/config/widget-antivirus/widget-antivirus.xml 0.1 BETA 2.2 @@ -1215,7 +1215,7 @@ Beta jimp@pfsense.org 2.2 - http://www.pfsense.org/packages/config/rrd-summary/rrd-summary.xml + https://packages.pfsense.org/packages/config/rrd-summary/rrd-summary.xml rrd-summary.xml @@ -1224,7 +1224,7 @@ The shellcmd utility is used to manage commands on system startup. Services - http://www.pfsense.com/packages/config/shellcmd/shellcmd.xml + https://packages.pfsense.org/packages/config/shellcmd/shellcmd.xml 0.5 Beta 2.2 @@ -1242,7 +1242,7 @@ net-mgmt/nrpe nrpe_SET_FORCE=SSL;nrpe_UNSET_FORCE=ARGS - http://www.pfsense.com/packages/config/nrpe2/nrpe2.xml + https://packages.pfsense.org/packages/config/nrpe2/nrpe2.xml 2.15 v2.2 Beta 2.2 @@ -1260,7 +1260,7 @@ sysutils/muse - http://www.pfsense.com/packages/config/checkmk-agent/checkmk.xml + https://packages.pfsense.org/packages/config/checkmk-agent/checkmk.xml v0.1 RC1 2.2 @@ -1275,7 +1275,7 @@ 1.0 Beta 2.2 - http://www.pfsense.com/packages/config/sshdcond/sshdcond.xml + https://packages.pfsense.org/packages/config/sshdcond/sshdcond.xml namezero@afim.info sshdcond.xml @@ -1286,7 +1286,7 @@ 2.0.9 Stable 2.2 - http://www.pfsense.com/packages/config/mailreport/mailreport.xml + https://packages.pfsense.org/packages/config/mailreport/mailreport.xml mailreport.xml @@ -1301,7 +1301,7 @@ jorgelustosa@gmail.com marcellocoutinho@gmail.com 2.2 zebedee-2.5.3-##ARCH##.pbi - http://www.pfsense.com/packages/config/zebedee/zebedee.xml + https://packages.pfsense.org/packages/config/zebedee/zebedee.xml zebedee.xml security/zebedee @@ -1315,7 +1315,7 @@ Routing BETA quagga-0.99.22.3-##ARCH##.pbi - http://www.pfsense.com/packages/config/quagga_ospfd/quagga_ospfd.xml + https://packages.pfsense.org/packages/config/quagga_ospfd/quagga_ospfd.xml net/quagga @@ -1330,7 +1330,7 @@ 1.0 System RELEASE - http://www.pfsense.com/packages/config/systempatches/systempatches.xml + https://packages.pfsense.org/packages/config/systempatches/systempatches.xml 2.2 systempatches.xml @@ -1344,7 +1344,7 @@ 5.2.12_3 pkg v 1.0.1 Stable 2.2 - http://www.pfsense.com/packages/config/bacula-client/bacula-client.xml + https://packages.pfsense.org/packages/config/bacula-client/bacula-client.xml bacula-5.2.12_3-##ARCH##.pbi sysutils/bacula-client @@ -1356,13 +1356,13 @@ urlsnarf - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 2.3_4 Beta 2.2 - http://www.pfsense.com/packages/config/urlsnarf/urlsnarf.xml + https://packages.pfsense.org/packages/config/urlsnarf/urlsnarf.xml jimp@pfsense.org urlsnarf.xml @@ -1374,13 +1374,13 @@ iftop - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 0.17 Beta 2.2 - http://www.pfsense.com/packages/config/iftop/iftop.xml + https://packages.pfsense.org/packages/config/iftop/iftop.xml jimp@pfsense.org iftop.xml @@ -1391,13 +1391,13 @@ git - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 1.8.5.2 Beta 2.2 - http://www.pfsense.com/packages/config/git/git.xml + https://packages.pfsense.org/packages/config/git/git.xml jimp@pfsense.org git.xml git_UNSET_FORCE=GITWEB GUI HTMLDOCS CVS P4 SVN;git_SET_FORCE=CONTRIB CURL ETCSHELLS ICONV NLS PERL @@ -1418,9 +1418,9 @@ 1.0.22 v1.1 ALPHA - http://doc.pfsense.org/index.php/tinc_package + https://doc.pfsense.org/index.php/tinc_package 2.2 - http://www.pfsense.com/packages/config/tinc/tinc.xml + https://packages.pfsense.org/packages/config/tinc/tinc.xml tinc.xml tinc @@ -1443,14 +1443,14 @@ laleger@gmail.com - http://www.pfsense.com/packages/config/syslog-ng/syslog-ng.xml + https://packages.pfsense.org/packages/config/syslog-ng/syslog-ng.xml syslog-ng.xml Zabbix-2 Agent Monitoring agent. Services - http://www.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml + https://packages.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml zabbix2-agent-2.2.2 pkg v0.8_1 BETA 2.2 @@ -1466,7 +1466,7 @@ Zabbix-2 Proxy Monitoring agent proxy. Services - http://www.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml + https://packages.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml zabbix2-proxy-2.2.2 pkg v0.8_1 BETA 2.2 @@ -1482,13 +1482,13 @@ ipmitool - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 1.8.12_4 Beta 2.2 - http://www.pfsense.com/packages/config/ipmitool/ipmitool.xml + https://packages.pfsense.org/packages/config/ipmitool/ipmitool.xml jimp@pfsense.org ipmitool.xml @@ -1499,13 +1499,13 @@ sudo - http://doc.pfsense.org/index.php/Sudo_Package + https://doc.pfsense.org/index.php/Sudo_Package Security 0.2 Beta 2.2 - http://www.pfsense.com/packages/config/sudo/sudo.xml + https://packages.pfsense.org/packages/config/sudo/sudo.xml jimp@pfsense.org sudo.xml @@ -1520,7 +1520,7 @@ 1.5 Services BETA - http://www.pfsense.com/packages/config/servicewatchdog/servicewatchdog.xml + https://packages.pfsense.org/packages/config/servicewatchdog/servicewatchdog.xml 2.2 servicewatchdog.xml @@ -1530,7 +1530,7 @@ http://code.google.com/p/softflowd/ Softflowd is flow-based network traffic analyser capable of Cisco NetFlow data export. Softflowd semi-statefully tracks traffic flows recorded by listening on a network interface or by reading a packet capture file. These flows may be reported via NetFlow to a collecting host or summarised within softflowd itself. Softflowd supports Netflow versions 1, 5 and 9 and is fully IPv6-capable - it can track IPv6 flows and send export datagrams via IPv6. It also supports export to multicast groups, allowing for redundant flow collectors. Network Management - http://www.pfsense.com/packages/config/softflowd/softflowd.xml + https://packages.pfsense.org/packages/config/softflowd/softflowd.xml softflowd-0.9.8_2-##ARCH##.pbi 0.9.8 Beta @@ -1545,7 +1545,7 @@ Apcupsd Set of programs for controlling APC UPS. Services - http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml + https://packages.pfsense.org/packages/config/apcupsd/apcupsd.xml apcupsd-3.14.10_1 pkg v0.2 BETA 2.2 @@ -1566,7 +1566,7 @@ 1.0.4 BETA ladvd-1.0.4-##ARCH##.pbi - http://www.pfsense.org/packages/config/ladvd/ladvd.xml + https://packages.pfsense.org/packages/config/ladvd/ladvd.xml net/ladvd @@ -1582,7 +1582,7 @@ 1.4.6 pkg v0.2 BETA 2.2 - http://www.pfsense.org/packages/config/suricata/suricata.xml + https://packages.pfsense.org/packages/config/suricata/suricata.xml suricata.xml security/suricata diff --git a/pkg_config.7.xml b/pkg_config.7.xml index b8a5397b..296f7a47 100644 --- a/pkg_config.7.xml +++ b/pkg_config.7.xml @@ -7,8 +7,8 @@ Allows you to create and overwrite files from the GUI. File Management - http://doc.pfsense.org/index.php/Filer_package - http://www.pfsense.com/packages/config/filer/filer.xml + https://doc.pfsense.org/index.php/Filer_package + https://packages.pfsense.org/packages/config/filer/filer.xml 0.60 Beta 1.2.3 @@ -20,8 +20,8 @@ PHP File Manager Diagnostics - http://forum.pfsense.org/index.php/topic,26974.0.html - http://pfsense.org/packages/config/filemgr/filemgr.xml + https://forum.pfsense.org/index.php/topic,26974.0.html + https://packages.pfsense.org/packages/config/filemgr/filemgr.xml 0.1.3 Beta 1.2.2 @@ -33,8 +33,8 @@ Block countries Firewall - http://forum.pfsense.org/index.php/topic,25732.0.html - http://pfsense.org/packages/config/countryblock/countryblock.xml + https://forum.pfsense.org/index.php/topic,25732.0.html + https://packages.pfsense.org/packages/config/countryblock/countryblock.xml http://files.pfsense.org/packages/7/All/ 0.2.4 Beta @@ -47,8 +47,8 @@ IP-Blocklist is the new PeerBlock. IP lists are used to add deny/allow rules to the firewall for in & out traffic. Firewall - http://forum.pfsense.org/index.php/topic,24769.0.html - http://pfsense.org/packages/config/ipblocklist/7/ipblocklist.xml + https://forum.pfsense.org/index.php/topic,24769.0.html + https://packages.pfsense.org/packages/config/ipblocklist/7/ipblocklist.xml http://files.pfsense.org/packages/7/All/ 0.3.4 Beta @@ -60,16 +60,16 @@ anyterm Ajax Interactive Shell - Have you ever wanted SSH or telnet access to your system from an internet desert - from behind a strict firewall, from an internet cafe, or even from a mobile phone? Anyterm is a combination of a web page and a process that runs on your web server that provides this access. WARNING! We suggest using Stunnel in combination with this package! http://anyterm.org/ - http://doc.pfsense.org/index.php/AnyTerm_package + https://doc.pfsense.org/index.php/AnyTerm_package Diagnostics 0.5 BETA 1.2.3 - http://www.pfsense.com/packages/config/anyterm/anyterm.xml + https://packages.pfsense.org/packages/config/anyterm/anyterm.xml anyterm.xml - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package haproxy The Reliable, High Performance TCP/HTTP Load Balancer http://haproxy.1wt.eu/ @@ -77,11 +77,11 @@ 0.32 BETA 1.2.3 - http://www.pfsense.com/packages/config/haproxy/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy/haproxy.xml haproxy.xml - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package haproxy-stable The Reliable, High Performance TCP/HTTP Load Balancer http://haproxy.1wt.eu/ @@ -89,19 +89,19 @@ 0.30 BETA 1.2.3 - http://www.pfsense.com/packages/config/haproxy-stable/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy-stable/haproxy.xml haproxy.xml Proxy Server with mod_security - http://doc.pfsense.org/index.php/ProxyServerModSecurity_package + https://doc.pfsense.org/index.php/ProxyServerModSecurity_package http://www.modsecurity.org/ ModSecurity is a web application firewall that can work either embedded or as a reverse proxy. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring, logging and real-time analysis. In addition this package allows URL forwarding which can be convenient for hosting multiple websites behind pfSense using 1 IP address. Network Management 0.1.2 ALPHA 1.2.3 - http://www.pfsense.com/packages/config/apache_mod_security/apache_mod_security.xml + https://packages.pfsense.org/packages/config/apache_mod_security/apache_mod_security.xml http://files.pfsense.org/packages/7/All/ mod_security-2.5.9.tbz apache-2.2.11_7.tbz @@ -116,7 +116,7 @@ http://www.pureftpd.org/ *DO NOT RUN THIS ON A FIREWALL. USE A DEDICATED MACHINE!* Pure FTPd Server is a fast, production quality, standards-conformant FTP server based on Troll-FTPd. It has no known vulnerabilities, is trivial to set up, and is especially designed for modern kernels. Features include PAM support, IPv6, chroot()ed home directories, virtual domains, built-in 'ls', FXP protocol, anti-warez system, bandwidth throttling, restricted ports for passive downloads, an LDAP backend, XML output, and more. FTP - http://www.pfsense.com/packages/config/pure-ftpd.xml + https://packages.pfsense.org/packages/config/pure-ftpd.xml http://files.pfsense.org/packages/7/All/ pure-ftpd-1.0.20_3.tbz 1.0.21 @@ -130,7 +130,7 @@ Avahi - http://doc.pfsense.org/index.php/Avahi_package + https://doc.pfsense.org/index.php/Avahi_package http://www.avahi.org/ Avahi is a system which facilitates service discovery on a local network. This means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. This kind of technology is already found in Apple MacOS X (branded Rendezvous, Bonjour and sometimes Zeroconf) and is very convenient. Avahi is mainly based on Lennart Poettering's flexmdns mDNS implementation for Linux which has been discontinued in favour of Avahi. Network Management @@ -138,7 +138,7 @@ 0.6.25_2 ALPHA 1.2.3 - http://www.pfsense.com/packages/config/avahi/avahi.xml + https://packages.pfsense.org/packages/config/avahi/avahi.xml avahi.xml Please visit the Avahi settings tab and select which interfaces you do not wish Avahi to listen on and click save to start the service. @@ -154,7 +154,7 @@ 3.3.8 BETA 1.2.1 - http://www.pfsense.com/packages/config/ntop/ntop.xml + https://packages.pfsense.org/packages/config/ntop/ntop.xml ntop.xml true @@ -166,8 +166,8 @@ 1.0 1.0 RELEASE - http://doc.pfsense.org/index.php/Pubkey_package - http://www.pfsense.org/packages/config/pubkey.xml + https://doc.pfsense.org/index.php/Pubkey_package + https://packages.pfsense.org/packages/config/pubkey.xml pubkey.xml The pfSense release key has been updated. @@ -175,7 +175,7 @@ Dashboard Adds pfSense dashboard that will be included with 2.0. WARNING! Cannot be deinstalled. System - http://www.pfsense.com/packages/config/dashboard/dashboard.xml + https://packages.pfsense.org/packages/config/dashboard/dashboard.xml 0.8.8 BETA 1.2 @@ -186,7 +186,7 @@ Dashboard Widget: Snort Dashboard widget for Snort. System - http://www.pfsense.com/packages/config/widget-snort/widget-snort.xml + https://packages.pfsense.org/packages/config/widget-snort/widget-snort.xml 0.3 BETA 1.2 @@ -196,7 +196,7 @@ Dashboard Widget: HAVP Dashboard widget for HAVP alerts. System - http://www.pfsense.com/packages/config/widget-havp/widget-havp.xml + https://packages.pfsense.org/packages/config/widget-havp/widget-havp.xml 0.1 BETA 1.2 @@ -206,7 +206,7 @@ Dashboard Widget: Antivirus Status Dashboard widget for HAVP status. System - http://www.pfsense.com/packages/config/widget-antivirus/widget-antivirus.xml + https://packages.pfsense.org/packages/config/widget-antivirus/widget-antivirus.xml 0.1 BETA 1.2 @@ -217,8 +217,8 @@ http://www.freeswitch.org/ FreeSWITCH is an open source telephony platform designed to facilitate the creation of voice and chat driven products scaling from a soft-phone up to a soft-switch. It can be used as a simple switching engine, a PBX, a media gateway or a media server to host IVR applications using simple scripts or XML to control the callflow. pfSense 1.2.3 or higher is recommended. Services - http://doc.pfsense.org/index.php/FreeSWITCH - http://www.pfsense.com/packages/config/freeswitch/freeswitch.xml + https://doc.pfsense.org/index.php/FreeSWITCH + https://packages.pfsense.org/packages/config/freeswitch/freeswitch.xml http://files.pfsense.org/packages/7/All/ 0.9.6 Beta @@ -232,8 +232,8 @@ http://www.freeswitch.org/ FreeSWITCH package development version. Services - http://doc.pfsense.org/index.php/FreeSWITCH - http://www.pfsense.com/packages/config/freeswitch_dev/freeswitch.xml + https://doc.pfsense.org/index.php/FreeSWITCH + https://packages.pfsense.org/packages/config/freeswitch_dev/freeswitch.xml http://files.pfsense.org/packages/7/All/ 0.9.7.26 Beta @@ -248,7 +248,7 @@ Track things you want to note for this system. Status - http://www.pfsense.com/packages/config/notes/notes.xml + https://packages.pfsense.org/packages/config/notes/notes.xml http://files.pfsense.org/packages/7/All/ 0.2.4 Stable @@ -262,7 +262,7 @@ Trivial File Transport Protocol is a very simple file transfer protocol. Often used with routers, voip phones and more. Services - http://www.pfsense.com/packages/config/tftp/tftp.xml + https://packages.pfsense.org/packages/config/tftp/tftp.xml http://files.pfsense.org/packages/7/All/ 1.0.7 Stable @@ -275,8 +275,8 @@ PHP run as a service it can do anything PHP can do including but not limited to monitoring files, CPU, RAM, and send alerts to the syslog. Services - http://doc.pfsense.org/index.php/PHPService - http://www.pfsense.com/packages/config/phpservice/phpservice.xml + https://doc.pfsense.org/index.php/PHPService + https://packages.pfsense.org/packages/config/phpservice/phpservice.xml http://files.pfsense.org/packages/7/All/ 0.4.1 Beta @@ -290,7 +290,7 @@ Tool to Backup and Restore files and directories. System - http://www.pfsense.com/packages/config/backup/backup.xml + https://packages.pfsense.org/packages/config/backup/backup.xml http://files.pfsense.org/packages/7/All/ 0.1.7 Stable @@ -304,7 +304,7 @@ The cron utility is used to manage commands on a schedule. Services - http://www.pfsense.com/packages/config/cron/cron.xml + https://packages.pfsense.org/packages/config/cron/cron.xml http://files.pfsense.org/packages/7/All/ 0.2.2 Beta @@ -318,7 +318,7 @@ The shellcmd utility is used to manage commands on system startup. Services - http://www.pfsense.com/packages/config/shellcmd/shellcmd.xml + https://packages.pfsense.org/packages/config/shellcmd/shellcmd.xml http://files.pfsense.org/packages/7/All/ 0.5 Beta @@ -332,7 +332,7 @@ DenyHosts analyzes logs for SSH login attempts and blocks offending IP addresses. Services - http://www.pfsense.com/packages/config/denyhosts/denyhosts.xml + https://packages.pfsense.org/packages/config/denyhosts/denyhosts.xml http://files.pfsense.org/packages/7/All/ 0.5.1 Beta @@ -346,7 +346,7 @@ DNS Blacklist uses dnsmasq entries to block domain names by category. Services - http://www.pfsense.com/packages/config/dnsblacklist/dnsblacklist.xml + https://packages.pfsense.org/packages/config/dnsblacklist/dnsblacklist.xml http://files.pfsense.org/packages/7/All/ 0.2.4 Beta @@ -359,8 +359,8 @@ It is a web server package that can host HTML, Javascript, CSS, and PHP. It uses the lighttpd web server that is already installed. It uses PHP5 in FastCGI mode and has access to PHP Data Ojbects and PDO SQLite. Services - http://doc.pfsense.org/index.php/vhosts - http://www.pfsense.com/packages/config/vhosts/vhosts.xml + https://doc.pfsense.org/index.php/vhosts + https://packages.pfsense.org/packages/config/vhosts/vhosts.xml http://files.pfsense.org/packages/7/All/ 0.7.4 Stable @@ -370,7 +370,7 @@ snort-old - http://forum.pfsense.org/index.php/topic,16847.0.html + https://forum.pfsense.org/index.php/topic,16847.0.html http://www.snort.org WARNING: This is the old snort package. A few current snort.org rules are not supported in this package. This package will not be supported in Pfsense 2.0. Security @@ -380,7 +380,7 @@ perl-5.8.9_3.tbz mysql-client-5.1.34.tbz snort-2.8.4.1_1.tbz - http://www.pfsense.com/packages/config/snort-old/snort.xml + https://packages.pfsense.org/packages/config/snort-old/snort.xml 2.8.4.1_5 pkg v.1.8 1.2.3 legacy @@ -389,15 +389,15 @@ snort - http://forum.pfsense.org/index.php/topic,16847.0.html + https://forum.pfsense.org/index.php/topic,16847.0.html http://www.snort.org Used by fortune 500 companies and governments Snort is the most widely deployed IDS/IPS technology worldwide. It features rules based logging and can perform content searching/matching in addition to being used to detect a variety of other attacks and probes, such as buffer overflows, stealth port scans, CGI attacks, SMB probes, and much more. Security - http://www.pfsense.com/packages/config/snort/bin/7.3.x86/ + https://packages.pfsense.org/packages/config/snort/bin/7.3.x86/ pcre-8.10.tbz mysql-client-5.1.50_1.tbz snort-2.8.6.1.tbz - http://www.pfsense.com/packages/config/snort/snort.xml + https://packages.pfsense.org/packages/config/snort/snort.xml 2.8.6.1 pkg v. 1.35 1.2.3 Stable @@ -409,10 +409,10 @@ http://siproxd.sourceforge.net/ Proxy for handling NAT of multiple SIP devices to a single public IP. Services - http://www.pfsense.com/packages/config/siproxd.xml + https://packages.pfsense.org/packages/config/siproxd.xml http://files.pfsense.org/packages/7/All/ siproxd-0.8.0.tbz - http://doc.pfsense.org/index.php/Siproxd_package + https://doc.pfsense.org/index.php/Siproxd_package 0.8.0_2 Beta 1.2.1 @@ -422,7 +422,7 @@ OpenBGPD OpenBGPD is a FREE implementation of the Border Gateway Protocol, Version 4. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol. NET - http://www.pfsense.com/packages/config/openbgpd/openbgpd.xml + https://packages.pfsense.org/packages/config/openbgpd/openbgpd.xml 0.4.2 STABLE 1.3 @@ -442,7 +442,7 @@ perl-5.8.8_1.tbz Beta1 1.2.1 - http://www.pfsense.com/packages/config/lightsquid/lightsquid.xml + https://packages.pfsense.org/packages/config/lightsquid/lightsquid.xml lightsquid.xml true @@ -450,7 +450,7 @@ vnstat http://humdi.net/vnstat/ A console-based network traffic monitor + vnstat PHP frontend - http://forum.pfsense.org/index.php/topic,14179.0.html + https://forum.pfsense.org/index.php/topic,14179.0.html Network Management http://files.pfsense.org/packages/7/All/ vnstat-1.6_3.tbz @@ -458,7 +458,7 @@ Stable 1.2.3 crazypark2@yahoo.dk - http://www.pfsense.com/packages/config/vnstat/vnstat.xml + https://packages.pfsense.org/packages/config/vnstat/vnstat.xml vnstat.xml @@ -472,7 +472,7 @@ 1.0 http://files.pfsense.org/packages/7/All/ mbmon-205_4.tbz - http://www.pfsense.com/packages/config/phpsysinfo/phpsysinfo.xml + https://packages.pfsense.org/packages/config/phpsysinfo/phpsysinfo.xml phpsysinfo.xml true @@ -486,7 +486,7 @@ 1.2.3 1.2.3 crazypark2@yahoo.dk - http://www.pfsense.com/packages/config/Fit123/fit123.xml + https://packages.pfsense.org/packages/config/Fit123/fit123.xml fit123.xml @@ -496,9 +496,9 @@ Services 1.0.6.14 Beta - http://doc.pfsense.org/index.php/Tinydns_package + https://doc.pfsense.org/index.php/Tinydns_package 1.2 - http://www.pfsense.com/packages/config/tinydns/tinydns.xml + https://packages.pfsense.org/packages/config/tinydns/tinydns.xml tinydns.xml http://files.pfsense.org/packages/7/All/ ucspi-tcp-0.88_2.tbz @@ -512,9 +512,9 @@ Services 167859 Stable - http://doc.pfsense.org/index.php/Open_VM_Tools_package + https://doc.pfsense.org/index.php/Open_VM_Tools_package 1.2.1 - http://www.pfsense.org/packages/config/open-vm-tools/open-vm-tools.xml + https://packages.pfsense.org/packages/config/open-vm-tools/open-vm-tools.xml open-vm-tools.xml http://files.pfsense.org/packages/7/All/ open-vm-tools-nox11-253928.tbz @@ -535,8 +535,8 @@ 1.20 Stable 1.2 - http://doc.pfsense.org/index.php/AutoConfigBackup - http://www.pfsense.com/packages/config/autoconfigbackup/autoconfigbackup.xml + https://doc.pfsense.org/index.php/AutoConfigBackup + https://packages.pfsense.org/packages/config/autoconfigbackup/autoconfigbackup.xml autoconfigbackup.xml @@ -546,9 +546,9 @@ Services 2.06.1 Stable - http://doc.pfsense.org/index.php/Arping_package + https://doc.pfsense.org/index.php/Arping_package 1.0.1 - http://www.pfsense.com/packages/config/arping/arping.xml + https://packages.pfsense.org/packages/config/arping/arping.xml arping.xml http://files.pfsense.org/packages/7/All/ arping-2.06.tbz @@ -560,10 +560,10 @@ Security http://files.pfsense.org/packages/7/All/ nmap-4.76.tbz - http://www.pfsense.com/packages/config/nmap/nmap.xml + https://packages.pfsense.org/packages/config/nmap/nmap.xml 4.76 Stable - http://doc.pfsense.org/index.php/Nmap_package + https://doc.pfsense.org/index.php/Nmap_package 1.2.1 nmap.xml @@ -577,7 +577,7 @@ http://files.pfsense.org/packages/7/All/ openospfd-4.6.tbz libevent-1.4.14b_2.tbz - http://www.pfsense.com/packages/config/openospfd/openospfd.xml + https://packages.pfsense.org/packages/config/openospfd/openospfd.xml 1.2.1 openospfd.xml @@ -591,8 +591,8 @@ 0.8-9 1.2.1 BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml + https://doc.pfsense.org/index.php/IMSpector_package + https://packages.pfsense.org/packages/config/imspector/imspector.xml imspector.xml http://files.pfsense.org/packages/7/All/ imspector-0.8.tbz @@ -609,11 +609,11 @@ BETA 1.2.1 rswagoner@gmail.com - http://www.pfsense.com/packages/config/nut/nut.xml + https://packages.pfsense.org/packages/config/nut/nut.xml nut.xml http://files.pfsense.org/packages/7/All/ nut-2.2.2.tbz - http://doc.pfsense.org/index.php/Nut_package + https://doc.pfsense.org/index.php/Nut_package diag_new_states @@ -624,8 +624,8 @@ ptaylor@addressplus.net 1.2.1 BETA - http://www.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml - http://www.pfsense.com/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml darkstat @@ -639,7 +639,7 @@ Stable 1.2.1 sullrich+pfsp@gmail.com - http://www.pfsense.com/packages/config/darkstat/darkstat.xml + https://packages.pfsense.org/packages/config/darkstat/darkstat.xml darkstat.xml @@ -647,7 +647,7 @@ http://www.mindrot.org/pfflowd.html pfflowd converts OpenBSD PF status messages (sent via the pfsync interface) to Cisco NetFlow datagrams. These datagrams may be sent (via UDP) to a host of one's choice. Utilising the OpenBSD stateful packet filter infrastructure means that flow tracking is very fast and accurate. Network Management - http://www.pfsense.com/packages/config/pfflowd.xml + https://packages.pfsense.org/packages/config/pfflowd.xml http://files.pfsense.org/packages/7/All/ pfflowd-0.8.tbz 0.8.2 @@ -665,9 +665,9 @@ widentd-1.03_1.tbz 1.03_1 Stable - http://doc.pfsense.org/index.php/Widentd_package + https://doc.pfsense.org/index.php/Widentd_package 1.2.1 - http://www.pfsense.com/packages/config/widentd.xml + https://packages.pfsense.org/packages/config/widentd.xml widentd.xml @@ -682,7 +682,7 @@ http://files.pfsense.org/packages/7/All/ freeradius-1.1.7_3.tbz libltdl-1.5.26.tbz - http://www.pfsense.org/packages/config/freeradius.xml + https://packages.pfsense.org/packages/config/freeradius.xml freeradius.xml @@ -696,7 +696,7 @@ http://files.pfsense.org/packages/7/All/ bandwidthd-2.0.1_1.tbz libiconv-1.11_1.tbz - http://www.pfsense.org/packages/config/bandwidthd/bandwidthd.xml + https://packages.pfsense.org/packages/config/bandwidthd/bandwidthd.xml bandwidthd.xml true @@ -709,9 +709,9 @@ stunnel-4.25.tbz 4.30.2 Stable - http://doc.pfsense.org/index.php/Stunnel_package + https://doc.pfsense.org/index.php/Stunnel_package 1.2.1 - http://www.pfsense.com/packages/config/stunnel.xml + https://packages.pfsense.org/packages/config/stunnel.xml stunnel.xml @@ -719,12 +719,12 @@ http://dast.nlanr.net/Projects/Iperf/ Iperf is a tool for testing network throughput, loss, and jitter. Network Management - http://www.pfsense.com/packages/config/iperf.xml + https://packages.pfsense.org/packages/config/iperf.xml http://files.pfsense.org/packages/7/All/ iperf-2.0.4.tbz 2.0.2_1 Beta - http://doc.pfsense.org/index.php/Iperf_package + https://doc.pfsense.org/index.php/Iperf_package 1.2.1 iperf.xml @@ -733,7 +733,7 @@ http://freshmeat.net/projects/netio/ This is a network benchmark for DOS, OS/2 2.x, Windows NT/2000 and Unix. It measures the net throughput of a network via NetBIOS and/or TCP/IP protocols (Unix and DOS only support TCP/IP) using various different packet sizes. Network Management - http://www.pfsense.com/packages/config/netio.xml + https://packages.pfsense.org/packages/config/netio.xml http://files.pfsense.org/packages/7/All netio-1.26.tbz 1.26 @@ -752,7 +752,7 @@ 0.65_2 Stable 2.0 - http://www.pfsense.com/packages/config/mtr-nox11.xml + https://packages.pfsense.org/packages/config/mtr-nox11.xml mtr-nox11.xml @@ -768,7 +768,7 @@ squid-2.7.9.tbz squid_radius_auth-1.10.tbz openldap-sasl-client-2.4.25_1.tbz - http://www.pfsense.org/packages/config/squid/squid.xml + https://packages.pfsense.org/packages/config/squid/squid.xml squid.xml @@ -782,7 +782,7 @@ seth.mos@dds.nl http://files.pfsense.org/packages/7/All/ lcdproc-0.5.2_2.tbz - http://www.pfsense.org/packages/config/lcdproc/lcdproc.xml + https://packages.pfsense.org/packages/config/lcdproc/lcdproc.xml lcdproc.xml @@ -795,7 +795,7 @@ 2.1.a13 ALPHA 2.0 - http://www.pfsense.com/packages/config/arpwatch.xml + https://packages.pfsense.org/packages/config/arpwatch.xml arpwatch.xml arpwatch @@ -813,14 +813,14 @@ 1.1 http://files.pfsense.org/packages/7/All/ squidGuard-1.4_3.tbz - http://www.pfsense.org/packages/config/squidGuard/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard.xml squidguard.xml Zabbix Agent Monitoring agent. Services - http://www.pfsense.com/packages/config/zabbix-agent/zabbix-agent.xml + https://packages.pfsense.org/packages/config/zabbix-agent/zabbix-agent.xml 1.8.2_2 FINAL 1.2.3 @@ -833,7 +833,7 @@ Zabbix Proxy Monitoring agent proxy. Services - http://www.pfsense.com/packages/config/zabbix-proxy/zabbix-proxy.xml + https://packages.pfsense.org/packages/config/zabbix-proxy/zabbix-proxy.xml 1.8.3,2_1 FINAL 1.2.3 @@ -851,7 +851,7 @@ 0.1 BETA 2.0 - http://www.pfsense.com/packages/config/openvpn-client-export/openvpn-client-export.xml + https://packages.pfsense.org/packages/config/openvpn-client-export/openvpn-client-export.xml openvpn-client-export.xml @@ -865,7 +865,7 @@ 0.91 BETA 1.2.2 - http://www.pfsense.com/packages/config/havp/havp.xml + https://packages.pfsense.org/packages/config/havp/havp.xml havp.xml dv_serg@mail.ru Please check the HAVP settings. @@ -876,7 +876,7 @@ onatproto Patch to add Protocol options to Manual Outbound NAT. WARNING! Cannot be uninstalled. System - http://www.pfsense.com/packages/config/onatproto/onatproto.xml + https://packages.pfsense.org/packages/config/onatproto/onatproto.xml 0.1 BETA 1.2.1 @@ -890,8 +890,8 @@ 0.51 1.2.3 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jailctl.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jailctl.xml jailctl.xml ltning-jailctl@anduin.net true @@ -904,8 +904,8 @@ 0.2 1.2.3 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jail_template.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jail_template.xml jail_template.xml ltning-jailctl@anduin.net true @@ -917,8 +917,8 @@ 0.1 1.2.2 BETA - http://doc.pfsense.org/index.php/IGMPproxy - http://www.pfsense.com/packages/config/igmpproxy/igmpproxy.xml + https://doc.pfsense.org/index.php/IGMPproxy + https://packages.pfsense.org/packages/config/igmpproxy/igmpproxy.xml igmpproxy.xml eri@pfsense.org @@ -932,7 +932,7 @@ nagios-plugins-1.4.13,1.tbz libiconv-1.11_1.tbz gettext-0.17_1.tbz - http://www.pfsense.com/packages/config/nrpe2/nrpe2.xml + https://packages.pfsense.org/packages/config/nrpe2/nrpe2.xml 2.11 Beta 1.2 @@ -949,7 +949,7 @@ STABLE 1.2 1.2.9 - http://www.pfsense.com/packages/config/ovpnenhance/ovpnenhance.xml + https://packages.pfsense.org/packages/config/ovpnenhance/ovpnenhance.xml ovpnenhance.xml @@ -960,9 +960,9 @@ BETA jimp@pfsense.org 1.2.2 - http://files.pfsense.com/packages/7/All/ + http://files.pfsense.org/packages/7/All/ rate-0.9.tbz - http://www.pfsense.org/packages/config/rate/rate.xml + https://packages.pfsense.org/packages/config/rate/rate.xml rate.xml @@ -973,7 +973,7 @@ So Alpha it's Omega jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/blinkled/blinkled.xml + https://packages.pfsense.org/packages/config/blinkled/blinkled.xml blinkled.xml @@ -984,7 +984,7 @@ Beta jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/openvpn-status/openvpn-status.xml + https://packages.pfsense.org/packages/config/openvpn-status/openvpn-status.xml openvpn-status.xml @@ -995,14 +995,14 @@ Beta jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/states-summary/states-summary.xml + https://packages.pfsense.org/packages/config/states-summary/states-summary.xml states-summary.xml IP Range Aliases Patch to add IP Range support to Network Aliases. WARNING! Cannot be uninstalled. Probably does not play nice with URL Table patch. System - http://www.pfsense.com/packages/config/iprangealiases/iprangealiases.xml + https://packages.pfsense.org/packages/config/iprangealiases/iprangealiases.xml 0.2 BETA 1.2.3 @@ -1012,7 +1012,7 @@ URL Table Aliases Patch to add URL Table alias support to pull a list of CIDRs/IPs from a file by URL into a persist table. WARNING! Cannot be uninstalled. Probably does not play nice with IP Range Aliases patch. This is NOT a way to add an alias for host URLs. System - http://www.pfsense.com/packages/config/urltables/urltables.xml + https://packages.pfsense.org/packages/config/urltables/urltables.xml 0.1 BETA 1.2.3 @@ -1022,7 +1022,7 @@ dnsmasq EDNS size increase Patch to increase dnsmasq EDNS size to 4096 if needed. WARNING! Cannot be uninstalled. System - http://www.pfsense.com/packages/config/dnsmasq-edns/dnsmasq-edns.xml + https://packages.pfsense.org/packages/config/dnsmasq-edns/dnsmasq-edns.xml 0.1 BETA 1.2.3 @@ -1032,7 +1032,7 @@ Packet Capture Fix Patch to fix packet capture on 1.2.3 embedded (NanoBSD) System - http://www.pfsense.com/packages/config/packetcapturefix/packetcapturefix.xml + https://packages.pfsense.org/packages/config/packetcapturefix/packetcapturefix.xml 0.2 BETA 1.2.3 @@ -1046,14 +1046,14 @@ Beta jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/rrd-summary/rrd-summary.xml + https://packages.pfsense.org/packages/config/rrd-summary/rrd-summary.xml rrd-summary.xml Patch rc to leave filter_dirty Patch to stop /etc/rc from removing /tmp/filter_dirty on boot. Fixes boot issues with some packages on certain platforms. System - http://www.pfsense.com/packages/config/patch_rc_filter_dirty/patch_rc_filter_dirty.xml + https://packages.pfsense.org/packages/config/patch_rc_filter_dirty/patch_rc_filter_dirty.xml 0.1 BETA 1.2.3 @@ -1065,7 +1065,7 @@ Diagnostics http://ftp-archive.freebsd.org/mirror/FreeBSD-Archive/ports/i386/packages-7.2-release/All/ libxml2-2.7.3.tbz - http://www.pfsense.com/packages/config/pre2upgrade/pre2upgrade.xml + https://packages.pfsense.org/packages/config/pre2upgrade/pre2upgrade.xml 1.0 Stable 1.2 diff --git a/pkg_config.8.xml b/pkg_config.8.xml index efe5e33b..af75b362 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -9,14 +9,14 @@ someprogram someprogram - http://forum.pfsense.org/ + https://forum.pfsense.org/ http://www.example.org/someprogram Services 0.99 Beta 2.1 - http://www.pfsense.com/packages/config/someprogram/someprogram.xml + https://packages.pfsense.org/packages/config/someprogram/someprogram.xml me@example.com someprogram.xml @@ -24,21 +24,21 @@ net/someprogram www/somethingelsetoputinthepbi www/somethingelse - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ someprogram-0.99-i386.pbi --> Asterisk - http://forum.pfsense.org/index.php/topic,47210.0.html + https://forum.pfsense.org/index.php/topic,47210.0.html Asterisk turns an ordinary computer into a communications server.]]> http://www.asterisk.org/ Services 1.8 pkg v0.3.1 Beta 2.0 - http://www.pfsense.com/packages/config/asterisk/asterisk.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/asterisk/asterisk.xml + https://files.pfsense.org/packages/8/All/ asterisk18-1.8.25.0.tbz openldap-client-2.4.38.tbz asterisk-1.8.25.0-i386.pbi @@ -49,16 +49,16 @@ bind - + http://www.isc.org/downloads/BIND/ Services 9.9.4 pkg v 0.3.2 RC 2.1 - http://www.pfsense.com/packages/config/bind/bind.xml + https://packages.pfsense.org/packages/config/bind/bind.xml bind.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ bind-9.9.4-i386.pbi /usr/ports/dns/bind99 @@ -72,8 +72,8 @@ Allows you to create and overwrite files from the GUI. File Management - http://doc.pfsense.org/index.php/Filer_package - http://www.pfsense.com/packages/config/filer/filer.xml + https://doc.pfsense.org/index.php/Filer_package + https://packages.pfsense.org/packages/config/filer/filer.xml 0.60 Beta 2.0 @@ -85,9 +85,9 @@ Block countries - This has been replaced by pfblocker. <u>This is a legacy app</u> Firewall - http://forum.pfsense.org/index.php/topic,25732.0.html - http://www.pfsense.com/packages/config/countryblock/countryblock.xml - http://files.pfsense.org/packages/8/All/ + https://forum.pfsense.org/index.php/topic,25732.0.html + https://packages.pfsense.org/packages/config/countryblock/countryblock.xml + https://files.pfsense.org/packages/8/All/ 0.2.4 Beta 1.2.2 @@ -98,13 +98,13 @@ Strikeback Detect port scans with iplog and strikeback - http://forum.pfsense.org/index.php/topic,37225.0.html + https://forum.pfsense.org/index.php/topic,37225.0.html Services 0.1 BETA 2.0 tom@tomschaefer.org - http://www.pfsense.com/packages/config/strikeback/strikeback.xml + https://packages.pfsense.org/packages/config/strikeback/strikeback.xml strikeback.xml @@ -112,8 +112,8 @@ PHP File Manager Diagnostics - http://forum.pfsense.org/index.php/topic,26974.0.html - http://pfsense.org/packages/config/filemgr/filemgr.xml + https://forum.pfsense.org/index.php/topic,26974.0.html + https://packages.pfsense.org/packages/config/filemgr/filemgr.xml 0.1.3 Beta 2.0 @@ -128,9 +128,9 @@ This package also Block countries and IP ranges.
    pfBlocker replaces Countryblock and IPblocklist.]]> Firewall - http://forum.pfsense.org/index.php/topic,42543.0.html - http://pfsense.org/packages/config/pf-blocker/pfblocker.xml - http://files.pfsense.org/packages/8/All/ + https://forum.pfsense.org/index.php/topic,42543.0.html + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker.xml + https://files.pfsense.org/packages/8/All/ 1.0.2 Release 2.0 @@ -141,17 +141,17 @@ anyterm Ajax Interactive Shell - Have you ever wanted SSH or telnet access to your system from an internet desert - from behind a strict firewall, from an internet cafe, or even from a mobile phone? Anyterm is a combination of a web page and a process that runs on your web server that provides this access. WARNING! We suggest using Stunnel in combination with this package! http://anyterm.org/ - http://doc.pfsense.org/index.php/AnyTerm_package + https://doc.pfsense.org/index.php/AnyTerm_package Diagnostics 0.5 BETA 1.2.3 - http://www.pfsense.com/packages/config/anyterm/anyterm.xml + https://packages.pfsense.org/packages/config/anyterm/anyterm.xml anyterm.xml
    haproxy - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements both TCP and HTTP balance features from Haproxy.
    Supports acl's for smart backend switching.]]>
    @@ -160,16 +160,16 @@ 1.4.24 pkg v 1.2.4 Release 2.0 - http://www.pfsense.com/packages/config/haproxy/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy/haproxy.xml haproxy.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ haproxy-1.4.24.tbz haproxy-1.4.24-i386.pbi /usr/ports/net/haproxy
    haproxy-full - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements both TCP and HTTP balance features from Haproxy.
    (Legacy version)]]>
    @@ -178,15 +178,15 @@ 1.4.24 pkg v 1.1 Release 2.0 - http://www.pfsense.com/packages/config/haproxy-legacy/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy-legacy/haproxy.xml haproxy.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ haproxy-1.4.24.tbz haproxy-1.4.24-i386.pbi
    haproxy-devel - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements TCP, HTTP and HTTPS balance features from Haproxy.
    Supports acl's for smart backend switching.]]>
    @@ -195,9 +195,9 @@ 1.5-dev22 pkg v 0.7 Release 2.1 - http://www.pfsense.com/packages/config/haproxy-devel/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy-devel/haproxy.xml haproxy.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ haproxy-1.4.22.tbz haproxy-devel-1.5-dev22-i386.pbi /usr/ports/net/haproxy-devel @@ -210,7 +210,7 @@
    Apache with mod_security-dev - http://doc.pfsense.org/index.php/ProxyServerModSecurity_package + https://doc.pfsense.org/index.php/ProxyServerModSecurity_package http://www.modsecurity.org/ It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring, logging and real-time analysis.
    @@ -220,8 +220,8 @@ 2.4.6 pkg v0.3 ALPHA 2.0 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_virtualhost.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_virtualhost.xml + https://files.pfsense.org/packages/8/All/ db42-4.2.52_5.tbz gdbm-1.9.1.tbz apr-ipv6-devrandom-gdbm-db42-1.4.5.1.3.12_1.tbz @@ -259,15 +259,15 @@
    Proxy Server with mod_security - http://doc.pfsense.org/index.php/ProxyServerModSecurity_package + https://doc.pfsense.org/index.php/ProxyServerModSecurity_package http://www.modsecurity.org/ ModSecurity is a web application firewall that can work either embedded or as a reverse proxy. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring, logging and real-time analysis. In addition this package allows URL forwarding which can be convenient for hosting multiple websites behind pfSense using 1 IP address. Network Management 0.1.3 ALPHA 2.0 - http://www.pfsense.com/packages/config/apache_mod_security/apache_mod_security.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/apache_mod_security/apache_mod_security.xml + https://files.pfsense.org/packages/8/All/ db42-4.2.52_5.tbz gdbm-1.9.1.tbz apr-ipv6-devrandom-gdbm-db42-1.4.5.1.3.12_1.tbz @@ -308,8 +308,8 @@ http://www.pureftpd.org/ *DO NOT RUN THIS ON A FIREWALL. USE A DEDICATED MACHINE!* Pure FTPd Server is a fast, production quality, standards-conformant FTP server based on Troll-FTPd. It has no known vulnerabilities, is trivial to set up, and is especially designed for modern kernels. Features include PAM support, IPv6, chroot()ed home directories, virtual domains, built-in 'ls', FXP protocol, anti-warez system, bandwidth throttling, restricted ports for passive downloads, an LDAP backend, XML output, and more. FTP - http://www.pfsense.com/packages/config/pure-ftpd.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/pure-ftpd.xml + https://files.pfsense.org/packages/8/All/ pure-ftpd-1.0.35.tbz pure-ftpd-1.0.36-i386.pbi /usr/ports/ftp/pure-ftpd @@ -326,11 +326,11 @@ Avahi - http://doc.pfsense.org/index.php/Avahi_package + https://doc.pfsense.org/index.php/Avahi_package http://www.avahi.org/ Avahi is a system which facilitates service discovery on a local network. This means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. This kind of technology is already found in Apple MacOS X (branded Rendezvous, Bonjour and sometimes Zeroconf) and is very convenient. Avahi is mainly based on Lennart Poettering's flexmdns mDNS implementation for Linux which has been discontinued in favour of Avahi. Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ /usr/ports/net/avahi /usr/ports/net/avahi-app avahi_UNSET_FORCE=GTK @@ -342,7 +342,7 @@ 0.6.29 pkg v1.02 ALPHA 1.2.3 - http://www.pfsense.com/packages/config/avahi/avahi.xml + https://packages.pfsense.org/packages/config/avahi/avahi.xml avahi.xml Please visit the Avahi settings tab and select which interfaces you do not wish Avahi to listen on and click save to start the service. @@ -351,7 +351,7 @@ http://www.ntop.org/ ntop is a network probe that shows network usage in a way similar to what top does for processes. In interactive mode, it displays the network status on the user's terminal. In Web mode it acts as a Web server, creating an HTML dump of the network status. It sports a NetFlow/sFlow emitter/collector, an HTTP-based client interface for creating ntop-centric monitoring applications, and RRD for persistently storing traffic statistics. Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ ntop-5.0.1-i386.pbi rrdtool-1.2.30_2.tbz gdbm-1.9.1.tbz @@ -376,7 +376,7 @@ 5.0.1 v2.3 BETA 2.0 - http://www.pfsense.com/packages/config/ntop2/ntop.xml + https://packages.pfsense.org/packages/config/ntop2/ntop.xml ntop.xml true
    @@ -385,9 +385,9 @@ http://www.freeswitch.org/ FreeSWITCH is an open source telephony platform designed to facilitate the creation of voice and chat driven products scaling from a soft-phone up to a soft-switch. It can be used as a simple switching engine, a PBX, a media gateway or a media server to host IVR applications using simple scripts or XML to control the callflow. Services - http://doc.pfsense.org/index.php/FreeSWITCH - http://www.pfsense.com/packages/config/freeswitch/freeswitch.xml - http://files.pfsense.org/packages/8/All/ + https://doc.pfsense.org/index.php/FreeSWITCH + https://packages.pfsense.org/packages/config/freeswitch/freeswitch.xml + https://files.pfsense.org/packages/8/All/ freeswitch-1.0.6_1-i386.pbi /usr/ports/net/freeswitch 0.8.3.6 @@ -403,9 +403,9 @@ http://www.freeswitch.org/ FreeSWITCH package development version. Services - http://doc.pfsense.org/index.php/FreeSWITCH - http://www.pfsense.com/packages/config/freeswitch_dev/freeswitch.xml - http://files.pfsense.org/packages/8/All/ + https://doc.pfsense.org/index.php/FreeSWITCH + https://packages.pfsense.org/packages/config/freeswitch_dev/freeswitch.xml + https://files.pfsense.org/packages/8/All/ /usr/ports/net/freeswitch 0.9.7.26 Beta @@ -420,8 +420,8 @@ Track things you want to note for this system. Status - http://www.pfsense.com/packages/config/notes/notes.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/notes/notes.xml + https://files.pfsense.org/packages/8/All/ 0.2.4 Alpha 1.2.1 @@ -434,8 +434,8 @@ Trivial File Transport Protocol is a very simple file transfer protocol. Often used with routers, voip phones and more. Services - http://www.pfsense.com/packages/config/tftp2/tftp.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/tftp2/tftp.xml + https://files.pfsense.org/packages/8/All/ 2.0 Stable 2.0 @@ -446,9 +446,9 @@ PHP run as a service it can do anything PHP can do including but not limited to monitoring files, CPU, RAM, and send alerts to the syslog. Services - http://doc.pfsense.org/index.php/PHPService - http://www.pfsense.com/packages/config/phpservice/phpservice.xml - http://files.pfsense.org/packages/8/All/ + https://doc.pfsense.org/index.php/PHPService + https://packages.pfsense.org/packages/config/phpservice/phpservice.xml + https://files.pfsense.org/packages/8/All/ 0.4.1 Beta 1.2.1 @@ -461,8 +461,8 @@ Tool to Backup and Restore files and directories. System - http://www.pfsense.com/packages/config/backup/backup.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/backup/backup.xml + https://files.pfsense.org/packages/8/All/ 0.1.5 Beta 1.2 @@ -475,8 +475,8 @@ The cron utility is used to manage commands on a schedule. Services - http://www.pfsense.com/packages/config/cron/cron.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/cron/cron.xml + https://files.pfsense.org/packages/8/All/ 0.1.8 Beta 1.2 @@ -488,9 +488,9 @@ It is a web server package that can host HTML, Javascript, CSS, and PHP. It uses the lighttpd web server that is already installed. It uses PHP5 in FastCGI mode and has access to PHP Data Ojbects and PDO SQLite. Services - http://doc.pfsense.org/index.php/vhosts - http://www.pfsense.com/packages/config/vhosts/vhosts.xml - http://files.pfsense.org/packages/8/All/ + https://doc.pfsense.org/index.php/vhosts + https://packages.pfsense.org/packages/config/vhosts/vhosts.xml + https://files.pfsense.org/packages/8/All/ 0.7.4 Stable 1.2.3 @@ -503,7 +503,7 @@ http://www.snort.org Snort is an open source network intrusion prevention and detection system (IDS/IPS). Combining the benefits of signature, protocol, and anomaly-based inspection. Security - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ mysql55-client-5.5.35.tbz barnyard2-1.13.tbz libnet-1.1.6_1,1.tbz @@ -525,7 +525,7 @@ barnyard2_UNSET_FORCE=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true - http://www.pfsense.com/packages/config/snort/snort.xml + https://packages.pfsense.org/packages/config/snort/snort.xml 2.9.5.6 pkg v3.0.4 2.0 Stable @@ -537,8 +537,8 @@ http://www.olsr.org/ The olsr.org OLSR daemon is an implementation of the Optimized Link State Routing protocol. OLSR is a routing protocol for mobile ad-hoc networks. The protocol is pro-active, table driven and utilizes a technique called multipoint relaying for message flooding. Services - http://www.pfsense.com/packages/config/olsrd.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/olsrd.xml + https://files.pfsense.org/packages/8/All/ olsrd-0.6.2.tbz olsrd-0.6.3-i386.pbi /usr/ports/net/olsrd @@ -549,10 +549,10 @@ routed - http://www.pfsense.com/ + https://packages.pfsense.org/ RIP v1 and v2 daemon. Network Management - http://www.pfsense.com/packages/config/routed/routed.xml + https://packages.pfsense.org/packages/config/routed/routed.xml 1.1 Stable 2.1 @@ -563,8 +563,8 @@ http://www.openbsd.org/spamd/ Tarpits like spamd are fake SMTP servers, which accept connections but don't deliver mail. Instead, they keep the connections open and reply very slowly. If the peer is patient enough to actually complete the SMTP dialogue (which will take ten minutes or more), the tarpit returns a 'temporary error' code (4xx), which indicates that the mail could not be delivered successfully and that the sender should keep the mail in their queue and retry again later. Services - http://www.pfsense.com/packages/config/spamd/spamd.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/spamd/spamd.xml + https://files.pfsense.org/packages/8/All/ spamd-4.9.1.tbz spamd-4.9.1-i386.pbi 4.9.1 v1.1 @@ -584,9 +584,9 @@ It can do first and second line antispam combat before sending incoming mail to local mail servers.
    Postfix can also detect zombies, check RBLS, SPF, seach ldap for valid recipients and use third part antispam engines like policyd and mailscanner for better antispam solution.]]> Services - http://forum.pfsense.org/index.php/topic,40622.0.html - http://www.pfsense.com/packages/config/postfix/postfix.xml - http://files.pfsense.org/packages/8/All/ + https://forum.pfsense.org/index.php/topic,40622.0.html + https://packages.pfsense.org/packages/config/postfix/postfix.xml + https://files.pfsense.org/packages/8/All/ postfix-2.10.2,1.tbz perl5-5.16.3_4.tbz postfix-2.10.2-i386.pbi @@ -606,9 +606,9 @@ For all non-commercial it's free, without cost.
    For all commercial use visit dansguardian website to get a licence.]]> Services - http://www.pfsense.com/packages/config/dansguardian/dansguardian.xml - http://forum.pfsense.org/index.php/topic,43786.0.html - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/dansguardian/dansguardian.xml + https://forum.pfsense.org/index.php/topic,43786.0.html + https://files.pfsense.org/packages/8/All/ dansguardian-2.12.0.3.tbz ca_root_nss-3.14.1.tbz dansguardian-2.12.0.3-i386.pbi @@ -628,9 +628,9 @@ This is a level3 mail scanning tool with high CPU load.]]> Services - http://www.pfsense.com/packages/config/mailscanner/mailscanner.xml - http://forum.pfsense.org/index.php/topic,43687.0.html - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/mailscanner/mailscanner.xml + https://forum.pfsense.org/index.php/topic,43687.0.html + https://files.pfsense.org/packages/8/All/ dcc-dccd-1.3.141.tbz perl5-5.16.3_4.tbz pyzor-0.5.0_3.tbz @@ -658,11 +658,11 @@ http://siproxd.sourceforge.net/ Proxy for handling NAT of multiple SIP devices to a single public IP. Services - http://www.pfsense.com/packages/config/siproxd.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/siproxd.xml + https://files.pfsense.org/packages/8/All/ siproxd-0.8.0.tbz siproxd-0.8.0-i386.pbi - http://doc.pfsense.org/index.php/Siproxd_package + https://doc.pfsense.org/index.php/Siproxd_package /usr/ports/net/siproxd 0.8.0_2 Beta @@ -673,17 +673,17 @@ OpenBGPD OpenBGPD is a FREE implementation of the Border Gateway Protocol, Version 4. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol. -- WARNING! Installs files to the same place as Quagga OSPF. Installing both will result in a broken state, remove this package before installing Quagga OSPF. NET - http://www.pfsense.com/packages/config/openbgpd/openbgpd.xml + https://packages.pfsense.org/packages/config/openbgpd/openbgpd.xml /usr/ports/net/openbgpd net/openbgpd 0.9.1 STABLE - http://doc.pfsense.org/index.php/OpenBGPD_package + https://doc.pfsense.org/index.php/OpenBGPD_package 1.3 openbgpd.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ openbgpd-5.2.20121209.tbz openbgpd-5.2.20121209-i386.pbi
    @@ -694,10 +694,10 @@ 0.5.2 Routing DEPRECATED - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ openospfd-4.6.tbz openospfd-4.6-i386.pbi - http://www.pfsense.com/packages/config/openospfd/openospfd.xml + https://packages.pfsense.org/packages/config/openospfd/openospfd.xml /usr/ports/net/openospfd /usr/ports/devel/libevent @@ -716,7 +716,7 @@ Network Report 1.8.2 pkg v.2.33 dv_serg@mail.ru - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ lightsquid-1.8_2.tbz perl-5.14.2_2.tbz lightsquid-1.8_2-i386.pbi @@ -728,7 +728,7 @@ WITHOUT_DEBUGGING=true;WITHOUT_GDBM=true;WITHOUT_PERL_MALLOC=true;WITH_PERL_64BITINT=true;WITHOUT_THREADS=true;WITHOUT_MULTIPLICITY=true;WITHOUT_SUIDPERL=true;WITHOUT_SITECUSTOMIZE=true;WITH_USE_PERL=true;WITH_GDSUPPORT=true RC1 2.0 - http://www.pfsense.com/packages/config/lightsquid/lightsquid.xml + https://packages.pfsense.org/packages/config/lightsquid/lightsquid.xml lightsquid.xml true @@ -739,9 +739,9 @@ Sarg provides many informations about Proxy(squid,squidguard or dansguardian) users activities: times, bytes, sites, etc...]]> Network Report - http://www.pfsense.com/packages/config/sarg/sarg.xml - http://forum.pfsense.org/index.php/topic,47765.0.html - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/sarg/sarg.xml + https://forum.pfsense.org/index.php/topic,47765.0.html + https://files.pfsense.org/packages/8/All/ sarg-2.3.6_2.tbz gd-2.0.35_8,1.tbz sarg-2.3.6_2-i386.pbi @@ -761,9 +761,9 @@ If it receives one with MAC-IP pair, which is not listed in 'ethers' file, it will send ARP reply with configured fake address.
    This will prevent not permitted host to work properly in local ethernet segment.]]> Security - http://www.pfsense.com/packages/config/ipguard/ipguard.xml - http://forum.pfsense.org/index.php/topic,49917.msg263664.html#msg263664 - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/ipguard/ipguard.xml + https://forum.pfsense.org/index.php/topic,49917.msg263664.html#msg263664 + https://files.pfsense.org/packages/8/All/ ipguard-1.04.tbz ipguard-1.04-i386.pbi 1.0.4 pkg v.0.1 @@ -778,14 +778,14 @@ It uses the advanced features in FreeBSD 6/7/8 to achieve its high performance.]]> http://varnish-cache.org - http://doc.pfsense.org/index.php/Varnish_package + https://doc.pfsense.org/index.php/Varnish_package Services 2.1.5 pkg v.1.0 Release 2.0 - http://www.pfsense.com/packages/config/varnish64/varnish_backends.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_backends.xml varnish_backends.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ varnish-2.1.5_2-i386.pbi gcc-4.2.5.20090325_5-i386.pbi varnish-2.1.5.tbz gcc-4.2.5.20090325_5.tbz @@ -799,14 +799,14 @@ It uses the advanced features in FreeBSD 6/7/8 to achieve its high performance.
    Version 3 includes streaming support]]> http://varnish-cache.org - http://doc.pfsense.org/index.php/Varnish_package + https://doc.pfsense.org/index.php/Varnish_package Services 3.0.4 pkg v.0.2.1 RC 2.0 - http://www.pfsense.com/packages/config/varnish3/varnish_backends.xml + https://packages.pfsense.org/packages/config/varnish3/varnish_backends.xml varnish_backends.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ varnish-3.0.4-i386.pbi varnish-3.0.2.tbz pcre-8.21_1.tbz @@ -822,9 +822,9 @@ vnstat2 http://humdi.net/vnstat/ Vnstat is a console-based network traffic monitor<br />The vnstat PHP frontend and vnstati adds a more user friendly way of displaying traffic usage. - http://forum.pfsense.org/index.php/topic,14179.0.html + https://forum.pfsense.org/index.php/topic,14179.0.html Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ vnstat-1.11.tbz vnstat-1.11_1-i386.pbi /usr/ports/net/vnstat @@ -832,7 +832,7 @@ Stable 2.0 bryan.paradis@gmail.com - http://www.pfsense.com/packages/config/vnstat2/vnstat2.xml + https://packages.pfsense.org/packages/config/vnstat2/vnstat2.xml vnstat2.xml @@ -844,11 +844,11 @@ 2.5.4 Beta 1.0 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ mbmon-205_5.tbz mbmon-205_6-i386.pbi /usr/ports/sysutils/mbmon - http://www.pfsense.com/packages/config/phpsysinfo/phpsysinfo.xml + https://packages.pfsense.org/packages/config/phpsysinfo/phpsysinfo.xml phpsysinfo.xml true @@ -859,11 +859,11 @@ Services 1.0.6.18 Beta - http://doc.pfsense.org/index.php/Tinydns_package + https://doc.pfsense.org/index.php/Tinydns_package 2.0 - http://www.pfsense.com/packages/config/tinydns/tinydns.xml + https://packages.pfsense.org/packages/config/tinydns/tinydns.xml tinydns.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ ucspi-tcp-0.88_2.tbz daemontools-0.76_16.tbz djbdns-ipv6-1.05.b23_13.tbz @@ -885,11 +885,11 @@ Services 8.7.0.3046 (build-425873) Stable - http://doc.pfsense.org/index.php/Open_VM_Tools_package + https://doc.pfsense.org/index.php/Open_VM_Tools_package 2.0 - http://www.pfsense.org/packages/config/open-vm-tools_2/open-vm-tools.xml + https://packages.pfsense.org/packages/config/open-vm-tools_2/open-vm-tools.xml open-vm-tools.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ /usr/ports/emulators/open-vm-tools-nox11/ open-vm-tools-nox11-425873_3,1.tbz icu-50.1.2.tbz @@ -926,8 +926,8 @@ 1.21 Stable 1.2 - http://doc.pfsense.org/index.php/AutoConfigBackup - http://www.pfsense.com/packages/config/autoconfigbackup/autoconfigbackup.xml + https://doc.pfsense.org/index.php/AutoConfigBackup + https://packages.pfsense.org/packages/config/autoconfigbackup/autoconfigbackup.xml autoconfigbackup.xml @@ -938,27 +938,27 @@ 2.09.1 v1.1 Stable 1.0.1 - http://www.pfsense.com/packages/config/arping/arping.xml + https://packages.pfsense.org/packages/config/arping/arping.xml arping.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ arping-2.09_1.tbz arping-2.09_1-i386.pbi /usr/ports/net/arping - http://doc.pfsense.org/index.php/Arping + https://doc.pfsense.org/index.php/Arping nmap jimp@pfsense.org NMap is a utility for network exploration or security auditing. It supports ping scanning (determine which hosts are up), many port scanning techniques (determine what services the hosts are offering), version detection (determine what application/service is runing on a port), and TCP/IP fingerprinting (remote host OS or device identification). It also offers flexible target and port specification, decoy/stealth scanning, SunRPC scanning, and more. Most Unix and Windows platforms are supported in both GUI and command line modes. Several popular handheld devices are also supported, including the Sharp Zaurus and the iPAQ. Security - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ lua-5.1.5_4.tbz nmap-6.25_1.tbz nmap-6.25_1-i386.pbi - http://www.pfsense.com/packages/config/nmap/nmap.xml + https://packages.pfsense.org/packages/config/nmap/nmap.xml nmap-6.25_1 pkg v1.2 Stable - http://doc.pfsense.org/index.php/Nmap_package + https://doc.pfsense.org/index.php/Nmap_package 2.0 nmap.xml /usr/ports/security/nmap @@ -973,8 +973,8 @@ 20111108 pkg v 0.3.1 2.0 BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml + https://doc.pfsense.org/index.php/IMSpector_package + https://packages.pfsense.org/packages/config/imspector/imspector.xml imspector.xml imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW http://e-sac.siteseguro.ws/packages/8/All/ @@ -991,13 +991,13 @@ BETA 2.0 rswagoner@gmail.com - http://www.pfsense.com/packages/config/nut/nut.xml + https://packages.pfsense.org/packages/config/nut/nut.xml nut.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ nut-2.6.4.tbz nut-2.6.5_1-i386.pbi /usr/ports/sysutils/nut - http://doc.pfsense.org/index.php/Nut_package + https://doc.pfsense.org/index.php/Nut_package diag_new_states @@ -1008,22 +1008,22 @@ ptaylor@addressplus.net 1.2.1 BETA - http://www.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml - http://www.pfsense.com/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml darkstat http://dmr.ath.cx/net/darkstat/ darkstat is a network statistics gatherer. It's a packet sniffer that runs as a background process on a cable/DSL router, gathers all sorts of statistics about network usage, and serves them over HTTP. Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ darkstat-3.0.714.tbz darkstat-3.0.715-i386.pbi 3.0.714 Stable 1.2.1 sullrich+pfsp@gmail.com - http://www.pfsense.com/packages/config/darkstat/darkstat.xml + https://packages.pfsense.org/packages/config/darkstat/darkstat.xml darkstat.xml /usr/ports/net-mgmt/darkstat @@ -1032,8 +1032,8 @@ http://www.mindrot.org/pfflowd.html pfflowd converts OpenBSD PF status messages (sent via the pfsync interface) to Cisco NetFlow datagrams. These datagrams may be sent (via UDP) to a host of one's choice. Utilising the OpenBSD stateful packet filter infrastructure means that flow tracking is very fast and accurate. Network Management - http://www.pfsense.com/packages/config/pfflowd.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/pfflowd.xml + https://files.pfsense.org/packages/8/All/ pfflowd-0.8.tbz pfflowd-0.8-i386.pbi 0.8.3 @@ -1048,14 +1048,14 @@ RFC1413 auth/identd daemon with fixed fake reply http://www.webweaving.org/widentd Services - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ widentd-1.03_1.tbz widentd-1.03_1-i386.pbi 1.03_1 Stable - http://doc.pfsense.org/index.php/Widentd_package + https://doc.pfsense.org/index.php/Widentd_package 1.2.1 - http://www.pfsense.com/packages/config/widentd.xml + https://packages.pfsense.org/packages/config/widentd.xml widentd.xml /usr/ports/net/widentd @@ -1068,11 +1068,11 @@ Beta 2.0 none - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ freeradius-1.1.8_4.tbz libltdl-2.4_1.tbz freeradius-1.1.8_5-i386.pbi - http://www.pfsense.org/packages/config/freeradius.xml + https://packages.pfsense.org/packages/config/freeradius.xml freeradius.xml /usr/ports/net/freeradius /usr/ports/devel/libltdl @@ -1089,19 +1089,19 @@ Support: MySQL, PostgreSQL, LDAP, Kerberos
    FreeRADIUS and FreeRADIUS2 settings are not compatible so don't use them together or try to update
    On pfSense docs there is a how-to which could help you on porting users.]]> - http://doc.pfsense.org/index.php/FreeRADIUS_2.x_package + https://doc.pfsense.org/index.php/FreeRADIUS_2.x_package System 2.1.12_1/2.2.0 pkg v1.6.7_2 RC1 2.0 nachtfalkeaw@web.de - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ freeradius-2.1.12_1.tbz freeradius-2.2.0-i386.pbi mysql-client-5.1.63.tbz postgresql-client-8.4.12.tbz openldap-sasl-client-2.4.23.tbz - http://www.pfsense.org/packages/config/freeradius2/freeradius.xml + https://packages.pfsense.org/packages/config/freeradius2/freeradius.xml freeradius.xml Please visit Services: FreeRADIUS @@ -1119,12 +1119,12 @@ 2.0.1_5 pkg v.0.3 BETA 1.2.1 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ bandwidthd-2.0.1_5.tbz libpcap-1.1.1.tbz postgresql-client-8.4.12.tbz bandwidthd-2.0.1_5-i386.pbi - http://www.pfsense.org/packages/config/bandwidthd/bandwidthd.xml + https://packages.pfsense.org/packages/config/bandwidthd/bandwidthd.xml bandwidthd.xml /usr/ports/net/libpcap /usr/ports/databases/postgresql84-client @@ -1140,14 +1140,14 @@ http://www.stunnel.org/ An SSL encryption wrapper between remote client and local or remote servers. Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ stunnel-4.43.tbz stunnel-4.54-i386.pbi 4.43.0 Stable - http://doc.pfsense.org/index.php/Stunnel_package + https://doc.pfsense.org/index.php/Stunnel_package 1.2.1 - http://www.pfsense.com/packages/config/stunnel.xml + https://packages.pfsense.org/packages/config/stunnel.xml stunnel.xml /usr/ports/security/stunnel WITHOUT_FORK=true;WITH_PTHREAD=true;WITHOUT_UCONTEXT=true;WITHOUT_IPV6=true;WITH_LIBWRAP=true;WITHOUT_SSL_PORT=true @@ -1157,13 +1157,13 @@ http://dast.nlanr.net/Projects/Iperf/ Iperf is a tool for testing network throughput, loss, and jitter. Network Management - http://www.pfsense.com/packages/config/iperf.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/iperf.xml + https://files.pfsense.org/packages/8/All/ iperf-2.0.5.tbz iperf-2.0.5-i386.pbi 2.0.5 Beta - http://doc.pfsense.org/index.php/Iperf_package + https://doc.pfsense.org/index.php/Iperf_package 1.2.1 iperf.xml /usr/ports/benchmarks/iperf @@ -1173,8 +1173,8 @@ http://freshmeat.net/projects/netio/ This is a network benchmark for DOS, OS/2 2.x, Windows NT/2000 and Unix. It measures the net throughput of a network via NetBIOS and/or TCP/IP protocols (Unix and DOS only support TCP/IP) using various different packet sizes. Network Management - http://www.pfsense.com/packages/config/netio.xml - http://files.pfsense.org/packages/8/All + https://packages.pfsense.org/packages/config/netio.xml + https://files.pfsense.org/packages/8/All netio-1.26.tbz netio-1.26-i386.pbi 1.26 @@ -1189,13 +1189,13 @@ Enhanced traceroute replacement http://www.bitwizard.nl/mtr/ Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ mtr-nox11-0.82.tbz mtr-0.82_1-i386.pbi 0.82 Stable 2.0 - http://www.pfsense.com/packages/config/mtr-nox11.xml + https://packages.pfsense.org/packages/config/mtr-nox11.xml mtr-nox11.xml /usr/ports/net/mtr mtr_UNSET_FORCE=X11 @@ -1209,7 +1209,7 @@ Stable 2 fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ squid-2.7.9_3.tbz squid_radius_auth-1.10.tbz libwww-5.4.0_4.tbz @@ -1223,7 +1223,7 @@ www/squid_radius_auth
    squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squid/squid.xml + https://packages.pfsense.org/packages/config/squid/squid.xml squid.xml @@ -1232,14 +1232,14 @@ It combines squid as a proxy server with it's capabilities of acting as a HTTP / HTTPS reverse proxy.
    It includes an Exchange-Web-Access (OWA) Assistant.]]>
    - http://forum.pfsense.org/index.php/topic,48347.0.html + https://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network 3.1.20 pkg 2.0.6 beta 2.0 marcellocoutinho@gmail.com fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ squid-3.1.20.tbz libwww-5.4.0_4.tbz @@ -1249,7 +1249,7 @@ c-icap_UNSET_FORCE=IPV6;squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES;squid_SET=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS AUTH_SASL CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squid3/31/squid.xml + https://packages.pfsense.org/packages/config/squid3/31/squid.xml squid.xml squid-3.1.22_1-i386.pbi
    @@ -1259,14 +1259,14 @@ It combines squid as a proxy server with it's capabilities of acting as a HTTP / HTTPS reverse proxy.
    It includes an Exchange-Web-Access (OWA) Assistant, ssl filtering and antivirus integration via i-cap]]>
    - http://forum.pfsense.org/index.php/topic,48347.0.html + https://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network 3.3.10 pkg 2.2.1 beta 2.0 marcellocoutinho@gmail.com fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ squid-3.3.5.tbz libltdl-2.4.2.tbz libwww-5.4.0_4.tbz @@ -1280,7 +1280,7 @@ www/squid_radius_auth security/clamav www/squidclamav security/ca_root_nss www/c-icap-modules c-icap_UNSET_FORCE=IPV6;squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES AUTH_SASL;squid_SET=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squid3/33/squid.xml + https://packages.pfsense.org/packages/config/squid3/33/squid.xml squid.xml squid-3.3.10-i386.pbi @@ -1293,10 +1293,10 @@ BETA 1.2.1 seth.mos@dds.nl - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ lcdproc-0.5.5.tbz lcdproc-0.5.6-i386.pbi - http://www.pfsense.org/packages/config/lcdproc/lcdproc.xml + https://packages.pfsense.org/packages/config/lcdproc/lcdproc.xml lcdproc.xml /usr/ports/sysutils/lcdproc lcdproc_SET=USB @@ -1311,11 +1311,11 @@ BETA 2.0 michele@nt2.it - http://forum.pfsense.org/index.php/topic,44034.0.html - http://files.pfsense.org/packages/8/All/ + https://forum.pfsense.org/index.php/topic,44034.0.html + https://files.pfsense.org/packages/8/All/ lcdproc-0.5.6.tbz lcdproc-0.5.6-i386.pbi - http://www.pfsense.org/packages/config/lcdproc-dev/lcdproc.xml + https://packages.pfsense.org/packages/config/lcdproc-dev/lcdproc.xml lcdproc.xml /usr/ports/sysutils/lcdproc WITH_USB=true @@ -1326,14 +1326,14 @@ Arpwatch monitors ethernet/ip address pairings. It also logs certain changes to syslog. http://www-nrg.ee.lbl.gov/ Security - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ arpwatch-2.1.a15_6.tbz arpwatch-2.1.a15_6-i386.pbi /usr/ports/net-mgmt/arpwatch 2.1.a15_6 pkg v1.1.1 ALPHA 2.0 - http://www.pfsense.com/packages/config/arpwatch.xml + https://packages.pfsense.org/packages/config/arpwatch.xml arpwatch.xml arpwatch @@ -1349,7 +1349,7 @@ 1.4_4 pkg v.1.9.5 Beta 1.1 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ squidGuard-1.4_4.tbz db41-4.1.25_4.tbz cyrus-sasl-2.1.26_2.tbz @@ -1362,7 +1362,7 @@ www/squidguard squidGuard_UNSET_FORCE=SQUID32 SQUID33;squidGuard_SET=SAMPLE_BL SASL LDAP SQUID27;squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squidGuard/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard.xml squidguard.xml @@ -1374,7 +1374,7 @@ 1.5_1 beta Beta 2.1 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ squidguard-devel-1.5_1-i386.pbi databases/db46 @@ -1382,7 +1382,7 @@ squidguard-devel squidGuard-devel_UNSET_FORCE=SQUID32 SQUID33;squidGuard-devel_SET=LDAP STRIPNT SQUID27;squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard.xml squidguard.xml @@ -1394,7 +1394,7 @@ 1.4_4 pkg v.1.9.5 Experimental 2.1 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ squidguard-squid3-1.4_4-i386.pbi www/squid33 databases/db41 security/cyrus-sasl2 @@ -1402,14 +1402,14 @@ squidguard-squid3 OPTIONS_SET=FETCH LDAP;squidGuard_UNSET_FORCE=SQUID27;squidGuard_SET=SAMPLE_BL SASL SQUID33;c-icap_UNSET_FORCE=IPV6 squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES;squid_SET=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS AUTH_SASL CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squidGuard/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard.xml squidguard.xml Zabbix Agent Monitoring agent. Services - http://www.pfsense.com/packages/config/zabbix-agent/zabbix-agent.xml + https://packages.pfsense.org/packages/config/zabbix-agent/zabbix-agent.xml 1.8.10,2 pkg v1.1 FINAL 1.2.3 @@ -1421,7 +1421,7 @@ net-mgmt/zabbix-agent ca_root_nss_UNSET_FORCE=ETCSYMLINK;zabbix22_SET=LDAP SSH SQLITE;zabbix22_UNSET_FORCE=MYSQL - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ zabbix-agent-1.8.10,2.tbz zabbix-agent-1.8.13-i386.pbi @@ -1429,7 +1429,7 @@ Zabbix Proxy Monitoring agent proxy. Services - http://www.pfsense.com/packages/config/zabbix-proxy/zabbix-proxy.xml + https://packages.pfsense.org/packages/config/zabbix-proxy/zabbix-proxy.xml 1.8.8,2 pkg v1.1 FINAL 1.2.3 @@ -1441,7 +1441,7 @@ net-mgmt/zabbix-proxy ca_root_nss_UNSET_FORCE=ETCSYMLINK;zabbix22_SET=LDAP SSH SQLITE;zabbix22_UNSET_FORCE=MYSQL - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ zabbix-proxy-1.8.8,2.tbz zabbix-proxy-1.8.13-i386.pbi @@ -1449,7 +1449,7 @@ OpenVPN Client Export Utility Allows a pre-configured OpenVPN Windows Client or Mac OSX's Viscosity configuration bundle to be exported directly from pfSense. Security - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ p7zip-9.20.1.tbz zip-3.0.tbz zip-3.0-i386.pbi p7zip-9.20.1-i386.pbi @@ -1458,7 +1458,7 @@ 1.2.4 RELEASE 2.0 - http://www.pfsense.com/packages/config/openvpn-client-export/openvpn-client-export.xml + https://packages.pfsense.org/packages/config/openvpn-client-export/openvpn-client-export.xml openvpn-client-export.xml @@ -1467,7 +1467,7 @@ http://www.server-side.de/ Antivirus: HAVP (HTTP Antivirus Proxy) is a proxy with a ClamAV anti-virus scanner. The main aims are continuous, non-blocking downloads and smooth scanning of dynamic and password protected HTTP traffic. Havp antivirus proxy has a parent and transparent proxy mode. It can be used with squid or standalone. And File Scanner for local files. Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ havp-0.91_1.tbz havp-0.91_1-i386.pbi /usr/ports/www/havp @@ -1475,7 +1475,7 @@ 0.91_1 pkg v1.01 BETA 1.2.2 - http://www.pfsense.com/packages/config/havp/havp.xml + https://packages.pfsense.org/packages/config/havp/havp.xml havp.xml dv_serg@mail.ru Please check the HAVP settings. @@ -1488,8 +1488,8 @@ 0.51 1.2.3 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jailctl.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jailctl.xml jailctl.xml ltning-jailctl@anduin.net @@ -1501,8 +1501,8 @@ 0.2 1.2.3 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jail_template.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jail_template.xml jail_template.xml ltning-jailctl@anduin.net @@ -1514,15 +1514,15 @@ Beta jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/blinkled8/blinkled.xml + https://packages.pfsense.org/packages/config/blinkled8/blinkled.xml blinkled.xml - http://doc.pfsense.org/index.php/BlinkLED_Package - http://doc.pfsense.org/index.php/BlinkLED_Package + https://doc.pfsense.org/index.php/BlinkLED_Package + https://doc.pfsense.org/index.php/BlinkLED_Package /usr/ports/sysutils/blinkled sysutils/blinkled - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ blinkled-0.1.tbz blinkled-0.1-i386.pbi @@ -1534,14 +1534,14 @@ Beta jimp@pfsense.org 2.0 - http://www.pfsense.org/packages/config/gwled/gwled.xml + https://packages.pfsense.org/packages/config/gwled/gwled.xml gwled.xml Dashboard Widget: Snort Dashboard widget for Snort. System - http://www.pfsense.com/packages/config/widget-snort/widget-snort.xml + https://packages.pfsense.org/packages/config/widget-snort/widget-snort.xml 0.3.7 BETA 1.2 @@ -1551,7 +1551,7 @@ Dashboard Widget: HAVP Dashboard widget for HAVP alerts. System - http://www.pfsense.com/packages/config/widget-havp/widget-havp.xml + https://packages.pfsense.org/packages/config/widget-havp/widget-havp.xml 0.1 BETA 1.2 @@ -1561,7 +1561,7 @@ Dashboard Widget: Antivirus Status Dashboard widget for HAVP status. System - http://www.pfsense.com/packages/config/widget-antivirus/widget-antivirus.xml + https://packages.pfsense.org/packages/config/widget-antivirus/widget-antivirus.xml 0.1 BETA 1.2 @@ -1575,7 +1575,7 @@ Beta jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/rrd-summary/rrd-summary.xml + https://packages.pfsense.org/packages/config/rrd-summary/rrd-summary.xml rrd-summary.xml @@ -1587,10 +1587,10 @@ Alpha warren@decoy.co.za 2.0 - http://doc.pfsense.org/index.php/Unbound_package - http://www.pfsense.com/packages/config/unbound/unbound.xml + https://doc.pfsense.org/index.php/Unbound_package + https://packages.pfsense.org/packages/config/unbound/unbound.xml unbound.xml - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ unbound-1.4.21_1.tbz ldns-1.6.16.tbz expat-2.0.1_2.tbz @@ -1618,7 +1618,7 @@ The shellcmd utility is used to manage commands on system startup. Services - http://www.pfsense.com/packages/config/shellcmd/shellcmd.xml + https://packages.pfsense.org/packages/config/shellcmd/shellcmd.xml 0.5 Beta 1.2 @@ -1635,7 +1635,7 @@ BETA 2.0 ey@tm-k.com - http://www.pfsense.org/packages/config/widescreen/widescreen.xml + https://packages.pfsense.org/packages/config/widescreen/widescreen.xml widescreen.xml 2.0.1 @@ -1645,7 +1645,7 @@ http://wiki.nagios.org/index.php/Howtos:nrpe_nsca NRPE is an addon for Nagios that allows you to execute plugins on remote Linux/Unix hosts. This is useful if you need to monitor local resources/attributes like disk usage, CPU load, memory usage, etc. on a remote host. Services - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ nrpe-2.12_3.tbz nagios-plugins-1.4.15_1,1.tbz nrpe-2.13_2-i386.pbi @@ -1656,7 +1656,7 @@ net-mgmt/nrpe nrpe_SET=SSL;nrpe_UNSET_FORCE=ARGS - http://www.pfsense.com/packages/config/nrpe2/nrpe2.xml + https://packages.pfsense.org/packages/config/nrpe2/nrpe2.xml 2.12_3 v2.2 Beta 1.2 @@ -1668,7 +1668,7 @@ https://github.com/sileht/check_mk/blob/master/doc/README For each host to be monitored check_mk is called by Nagios only once per time period.]]> Services - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ /usr/ports/sysutils/muse /usr/ports/sysutils/ipmitool devel/libstatgrab @@ -1677,7 +1677,7 @@ sysutils/muse - http://www.pfsense.com/packages/config/checkmk-agent/checkmk.xml + https://packages.pfsense.org/packages/config/checkmk-agent/checkmk.xml v0.1 RC1 2.0 @@ -1692,7 +1692,7 @@ 1.0 Beta 2.0 - http://www.pfsense.com/packages/config/sshdcond/sshdcond.xml + https://packages.pfsense.org/packages/config/sshdcond/sshdcond.xml namezero@afim.info sshdcond.xml @@ -1703,7 +1703,7 @@ 2.0.9 Stable 2.0 - http://www.pfsense.com/packages/config/mailreport/mailreport.xml + https://packages.pfsense.org/packages/config/mailreport/mailreport.xml mailreport.xml @@ -1717,10 +1717,10 @@ www.winton.org.uk/zebedee/ jorgelustosa@gmail.com marcellocoutinho@gmail.com 2.0 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ zebedee-2.5.3.tbz zebedee-2.5.3-i386.pbi - http://www.pfsense.com/packages/config/zebedee/zebedee.xml + https://packages.pfsense.org/packages/config/zebedee/zebedee.xml zebedee.xml /usr/ports/security/zebedee @@ -1728,7 +1728,7 @@ OpenVPN tap Bridging Fix Patch to fix OpenVPN tap bridging on 2.0.x. WARNING! Cannot be uninstalled. System - http://www.pfsense.com/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.xml + https://packages.pfsense.org/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.xml 0.4 BETA 2.0 @@ -1741,10 +1741,10 @@ 0.99.22.3 v0.6.1 Routing BETA - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ quagga-0.99.22.3.tbz quagga-0.99.22.3-i386.pbi - http://www.pfsense.com/packages/config/quagga_ospfd/quagga_ospfd.xml + https://packages.pfsense.org/packages/config/quagga_ospfd/quagga_ospfd.xml /usr/ports/net/quagga 2.0 @@ -1757,7 +1757,7 @@ 1.0 System RELEASE - http://www.pfsense.com/packages/config/systempatches/systempatches.xml + https://packages.pfsense.org/packages/config/systempatches/systempatches.xml 2.0 systempatches.xml @@ -1771,8 +1771,8 @@ 5.2.12_3 pkg v 1.0.1 Stable 2.0 - http://www.pfsense.com/packages/config/bacula-client/bacula-client.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/bacula-client/bacula-client.xml + https://files.pfsense.org/packages/8/All/ bacula-client-5.2.12_3.tbz bacula-5.2.12_3-i386.pbi /usr/ports/sysutils/bacula-client @@ -1786,50 +1786,50 @@ urlsnarf - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 2.3_4 Beta 2.1 - http://www.pfsense.com/packages/config/urlsnarf/urlsnarf.xml + https://packages.pfsense.org/packages/config/urlsnarf/urlsnarf.xml jimp@pfsense.org urlsnarf.xml net/libnet10 security/dsniff - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ dsniff-2.3_4-i386.pbi iftop - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 0.17 Beta 2.1 - http://www.pfsense.com/packages/config/iftop/iftop.xml + https://packages.pfsense.org/packages/config/iftop/iftop.xml jimp@pfsense.org iftop.xml net-mgmt/iftop - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ iftop-0.17-i386.pbi git - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 1.8.5.2 Beta 2.1 - http://www.pfsense.com/packages/config/git/git.xml + https://packages.pfsense.org/packages/config/git/git.xml jimp@pfsense.org git.xml git_UNSET_FORCE=GITWEB GUI HTMLDOCS CVS P4 SVN;git_SET=CONTRIB CURL ETCSHELLS ICONV NLS PERL @@ -1837,7 +1837,7 @@ devel/git - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ git-1.8.5.2-i386.pbi @@ -1845,7 +1845,7 @@ http://www.tinc-vpn.org/ tinc is a Virtual Private Network (VPN) daemon that uses tunnelling and encryption to create a secure private mesh network between hosts on the Internet. Network Management - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ tinc-1.0.21-i386.pbi security/tinc @@ -1853,9 +1853,9 @@ 1.0.21 v1.1 ALPHA - http://doc.pfsense.org/index.php/tinc_package + https://doc.pfsense.org/index.php/tinc_package 2.1 - http://www.pfsense.com/packages/config/tinc/tinc.xml + https://packages.pfsense.org/packages/config/tinc/tinc.xml tinc.xml tinc @@ -1871,7 +1871,7 @@ 3.3.7_4 ALPHA 2.1 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ syslog-ng-3.3.7_4-i386.pbi sysutils/logrotate @@ -1879,14 +1879,14 @@ laleger@gmail.com - http://www.pfsense.com/packages/config/syslog-ng/syslog-ng.xml + https://packages.pfsense.org/packages/config/syslog-ng/syslog-ng.xml syslog-ng.xml Zabbix-2 Agent Monitoring agent. Services - http://www.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml + https://packages.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml zabbix2-agent-2.2.2 pkg v0.8_1 BETA 2.0 @@ -1897,7 +1897,7 @@ zabbix22-agent net-mgmt/zabbix22-agent - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ zabbix22-agent-2.2.2.tbz zabbix22-agent-2.2.2-i386.pbi @@ -1905,7 +1905,7 @@ Zabbix-2 Proxy Monitoring agent proxy. Services - http://www.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml + https://packages.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml zabbix2-proxy-2.2.2 pkg v0.8_1 BETA 2.0 @@ -1917,45 +1917,45 @@ net-mgmt/zabbix22-proxy OPTIONS_SET+= SQLITE IPV6;OPTIONS_UNSET+= MYSQL JABBER GSSAPI - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ zabbix22-proxy-2.2.2.tbz zabbix22-proxy-2.2.2-i386.pbi ipmitool - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 1.8.12 Beta 2.1 - http://www.pfsense.com/packages/config/ipmitool/ipmitool.xml + https://packages.pfsense.org/packages/config/ipmitool/ipmitool.xml jimp@pfsense.org ipmitool.xml sysutils/ipmitool ipmitool_SET=FREEIPMI;freeipmi_UNSET_FORCE=DOCS DEBUG IOPERM - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ ipmitool-1.8.12_3-i386.pbi sudo - http://doc.pfsense.org/index.php/Sudo_Package + https://doc.pfsense.org/index.php/Sudo_Package Security 0.2 Beta 2.0.2 - http://www.pfsense.com/packages/config/sudo/sudo.xml + https://packages.pfsense.org/packages/config/sudo/sudo.xml jimp@pfsense.org sudo.xml security/sudo /usr/ports/security/sudo - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ sudo-1.8.6.p8.tbz sudo-1.8.6p8-i386.pbi @@ -1966,7 +1966,7 @@ 1.5 Services BETA - http://www.pfsense.com/packages/config/servicewatchdog/servicewatchdog.xml + https://packages.pfsense.org/packages/config/servicewatchdog/servicewatchdog.xml 2.1 servicewatchdog.xml @@ -1976,8 +1976,8 @@ http://code.google.com/p/softflowd/ Softflowd is flow-based network traffic analyser capable of Cisco NetFlow data export. Softflowd semi-statefully tracks traffic flows recorded by listening on a network interface or by reading a packet capture file. These flows may be reported via NetFlow to a collecting host or summarised within softflowd itself. Softflowd supports Netflow versions 1, 5 and 9 and is fully IPv6-capable - it can track IPv6 flows and send export datagrams via IPv6. It also supports export to multicast groups, allowing for redundant flow collectors. Network Management - http://www.pfsense.com/packages/config/softflowd/softflowd.xml - http://files.pfsense.org/packages/8/All/ + https://packages.pfsense.org/packages/config/softflowd/softflowd.xml + https://files.pfsense.org/packages/8/All/ softflowd-0.9.8_2-i386.pbi 0.9.8 Beta @@ -1992,7 +1992,7 @@ Apcupsd Set of programs for controlling APC UPS. Services - http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml + https://packages.pfsense.org/packages/config/apcupsd/apcupsd.xml apcupsd-3.14.10_1 pkg v0.2 BETA 2.0 @@ -2004,7 +2004,7 @@ sysutils/apcupsd apcupsd_SET=APCSMART_DRV APCDUMB_DRV PCNET_DRV USB TCP_WRAPPERS SNMP_DRV;apcupsd_UNSET_FORCE=CLIENT_ONLY CGI SNMP_DRV_OLD TEST_DRV GAPCMON DOCS - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ apcupsd-3.14.10_1.tbz apcupsd-3.14.10_1-i386.pbi @@ -2015,9 +2015,9 @@ Network Management 1.0.4 BETA - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ ladvd-1.0.4-i386.pbi - http://www.pfsense.org/packages/config/ladvd/ladvd.xml + https://packages.pfsense.org/packages/config/ladvd/ladvd.xml /usr/ports/net/ladvd 2.1 @@ -2031,7 +2031,7 @@ 1.4.6 pkg v0.2 BETA 2.1 - http://www.pfsense.org/packages/config/suricata/suricata.xml + https://packages.pfsense.org/packages/config/suricata/suricata.xml suricata.xml security/suricata @@ -2039,7 +2039,7 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP BRO;suricata_SET=IPFW PORTS_PCAP TESTS;suricata_UNSET=PRELUDE /usr/ports/security/suricata - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ suricata-1.4.6-i386.pbi
    diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index da2fdcb5..a8289a3c 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -9,14 +9,14 @@ someprogram someprogram - http://forum.pfsense.org/ + https://forum.pfsense.org/ http://www.example.org/someprogram Services 0.99 Beta 2.1 - http://www.pfsense.com/packages/config/someprogram/someprogram.xml + https://packages.pfsense.org/packages/config/someprogram/someprogram.xml me@example.com someprogram.xml @@ -24,21 +24,21 @@ net/someprogram www/somethingelsetoputinthepbi www/somethingelse - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ someprogram-0.99-amd64.pbi --> Asterisk - http://forum.pfsense.org/index.php/topic,47210.0.html + https://forum.pfsense.org/index.php/topic,47210.0.html Asterisk turns an ordinary computer into a communications server.]]> http://www.asterisk.org/ Services 1.8 pkg v0.3.1 Beta 2.0 - http://www.pfsense.com/packages/config/asterisk/asterisk.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/asterisk/asterisk.xml + https://files.pfsense.org/packages/amd64/8/All/ asterisk18-1.8.25.0.tbz openldap-client-2.4.38.tbz asterisk-1.8.25.0-amd64.pbi @@ -49,16 +49,16 @@ bind - + http://www.isc.org/downloads/BIND/ Services 9.9.4 pkg v 0.3.2 RC 2.1 - http://www.pfsense.com/packages/config/bind/bind.xml + https://packages.pfsense.org/packages/config/bind/bind.xml bind.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ bind-9.9.4-amd64.pbi /usr/ports/dns/bind99 @@ -72,8 +72,8 @@ Allows you to create and overwrite files from the GUI. File Management - http://doc.pfsense.org/index.php/Filer_package - http://www.pfsense.com/packages/config/filer/filer.xml + https://doc.pfsense.org/index.php/Filer_package + https://packages.pfsense.org/packages/config/filer/filer.xml 0.60 Beta 2.0 @@ -85,9 +85,9 @@ Block countries - This has been replaced by pfblocker. <u>This is a legacy app</u> Firewall - http://forum.pfsense.org/index.php/topic,25732.0.html - http://www.pfsense.com/packages/config/countryblock/countryblock.xml - http://files.pfsense.org/packages/8/All/ + https://forum.pfsense.org/index.php/topic,25732.0.html + https://packages.pfsense.org/packages/config/countryblock/countryblock.xml + https://files.pfsense.org/packages/8/All/ 0.2.4 Beta 1.2.2 @@ -99,8 +99,8 @@ PHP File Manager Diagnostics - http://forum.pfsense.org/index.php/topic,26974.0.html - http://pfsense.org/packages/config/filemgr/filemgr.xml + https://forum.pfsense.org/index.php/topic,26974.0.html + https://packages.pfsense.org/packages/config/filemgr/filemgr.xml 0.1.3 Beta 2.0 @@ -115,9 +115,9 @@ This package also Block countries and IP ranges.
    pfBlocker replaces Countryblock and IPblocklist.]]> Firewall - http://forum.pfsense.org/index.php/topic,42543.0.html - http://pfsense.org/packages/config/pf-blocker/pfblocker.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://forum.pfsense.org/index.php/topic,42543.0.html + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker.xml + https://files.pfsense.org/packages/amd64/8/All/ 1.0.2 Release 2.0 @@ -128,17 +128,17 @@ anyterm Ajax Interactive Shell - Have you ever wanted SSH or telnet access to your system from an internet desert - from behind a strict firewall, from an internet cafe, or even from a mobile phone? Anyterm is a combination of a web page and a process that runs on your web server that provides this access. WARNING! We suggest using Stunnel in combination with this package! http://anyterm.org/ - http://doc.pfsense.org/index.php/AnyTerm_package + https://doc.pfsense.org/index.php/AnyTerm_package Diagnostics 0.5 BETA 1.2.3 - http://www.pfsense.com/packages/config/anyterm/anyterm.xml + https://packages.pfsense.org/packages/config/anyterm/anyterm.xml anyterm.xml
    haproxy - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements both TCP and HTTP balance features from Haproxy.
    Supports acl's for smart backend switching.]]>
    @@ -147,16 +147,16 @@ 1.4.24 pkg v 1.2.4 Release 2.0 - http://www.pfsense.com/packages/config/haproxy/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy/haproxy.xml haproxy.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ haproxy-1.4.24.tbz haproxy-1.4.24-amd64.pbi /usr/ports/net/haproxy
    haproxy-full - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements both TCP and HTTP balance features from Haproxy.
    (Legacy version)]]>
    @@ -165,15 +165,15 @@ 1.4.24 pkg v 1.1 Release 2.0 - http://www.pfsense.com/packages/config/haproxy-legacy/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy-legacy/haproxy.xml haproxy.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ haproxy-1.4.24.tbz haproxy-1.4.24-amd64.pbi
    haproxy-devel - http://doc.pfsense.org/index.php/haproxy_package + https://doc.pfsense.org/index.php/haproxy_package This package implements TCP, HTTP and HTTPS balance features from Haproxy.
    Supports acl's for smart backend switching.]]>
    @@ -182,9 +182,9 @@ 1.5-dev22 pkg v 0.7 Release 2.1 - http://www.pfsense.com/packages/config/haproxy-devel/haproxy.xml + https://packages.pfsense.org/packages/config/haproxy-devel/haproxy.xml haproxy.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ haproxy-1.4.22.tbz haproxy-devel-1.5-dev22-amd64.pbi /usr/ports/net/haproxy-devel @@ -197,7 +197,7 @@
    Apache with mod_security-dev - http://doc.pfsense.org/index.php/ProxyServerModSecurity_package + https://doc.pfsense.org/index.php/ProxyServerModSecurity_package http://www.modsecurity.org/ It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring, logging and real-time analysis.
    @@ -207,8 +207,8 @@ 2.4.6 pkg v0.3 ALPHA 2.0 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_virtualhost.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_virtualhost.xml + https://files.pfsense.org/packages/amd64/8/All/ db42-4.2.52_5.tbz gdbm-1.9.1.tbz apr-ipv6-devrandom-gdbm-db42-1.4.5.1.3.12_1.tbz @@ -246,15 +246,15 @@
    Proxy Server with mod_security - http://doc.pfsense.org/index.php/ProxyServerModSecurity_package + https://doc.pfsense.org/index.php/ProxyServerModSecurity_package http://www.modsecurity.org/ ModSecurity is a web application firewall that can work either embedded or as a reverse proxy. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring, logging and real-time analysis. In addition this package allows URL forwarding which can be convenient for hosting multiple websites behind pfSense using 1 IP address. Network Management 0.1.3 ALPHA 2.0 - http://www.pfsense.com/packages/config/apache_mod_security/apache_mod_security.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/apache_mod_security/apache_mod_security.xml + https://files.pfsense.org/packages/amd64/8/All/ db42-4.2.52_5.tbz gdbm-1.9.1.tbz apr-ipv6-devrandom-gdbm-db42-1.4.5.1.3.12_1.tbz @@ -295,8 +295,8 @@ http://www.pureftpd.org/ *DO NOT RUN THIS ON A FIREWALL. USE A DEDICATED MACHINE!* Pure FTPd Server is a fast, production quality, standards-conformant FTP server based on Troll-FTPd. It has no known vulnerabilities, is trivial to set up, and is especially designed for modern kernels. Features include PAM support, IPv6, chroot()ed home directories, virtual domains, built-in 'ls', FXP protocol, anti-warez system, bandwidth throttling, restricted ports for passive downloads, an LDAP backend, XML output, and more. FTP - http://www.pfsense.com/packages/config/pure-ftpd.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/pure-ftpd.xml + https://files.pfsense.org/packages/amd64/8/All/ pure-ftpd-1.0.35.tbz pure-ftpd-1.0.36-amd64.pbi /usr/ports/ftp/pure-ftpd @@ -313,11 +313,11 @@ Avahi - http://doc.pfsense.org/index.php/Avahi_package + https://doc.pfsense.org/index.php/Avahi_package http://www.avahi.org/ Avahi is a system which facilitates service discovery on a local network. This means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. This kind of technology is already found in Apple MacOS X (branded Rendezvous, Bonjour and sometimes Zeroconf) and is very convenient. Avahi is mainly based on Lennart Poettering's flexmdns mDNS implementation for Linux which has been discontinued in favour of Avahi. Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ /usr/ports/net/avahi /usr/ports/net/avahi-app avahi_UNSET_FORCE=GTK @@ -329,7 +329,7 @@ 0.6.29 pkg v1.02 ALPHA 1.2.3 - http://www.pfsense.com/packages/config/avahi/avahi.xml + https://packages.pfsense.org/packages/config/avahi/avahi.xml avahi.xml Please visit the Avahi settings tab and select which interfaces you do not wish Avahi to listen on and click save to start the service. @@ -338,7 +338,7 @@ http://www.ntop.org/ ntop is a network probe that shows network usage in a way similar to what top does for processes. In interactive mode, it displays the network status on the user's terminal. In Web mode it acts as a Web server, creating an HTML dump of the network status. It sports a NetFlow/sFlow emitter/collector, an HTTP-based client interface for creating ntop-centric monitoring applications, and RRD for persistently storing traffic statistics. Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ ntop-5.0.1-amd64.pbi rrdtool-1.2.30_2.tbz gdbm-1.9.1.tbz @@ -363,7 +363,7 @@ 5.0.1 v2.3 BETA 2.0 - http://www.pfsense.com/packages/config/ntop2/ntop.xml + https://packages.pfsense.org/packages/config/ntop2/ntop.xml ntop.xml true @@ -372,9 +372,9 @@ http://www.freeswitch.org/ FreeSWITCH is an open source telephony platform designed to facilitate the creation of voice and chat driven products scaling from a soft-phone up to a soft-switch. It can be used as a simple switching engine, a PBX, a media gateway or a media server to host IVR applications using simple scripts or XML to control the callflow. Services - http://doc.pfsense.org/index.php/FreeSWITCH - http://www.pfsense.com/packages/config/freeswitch/freeswitch.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://doc.pfsense.org/index.php/FreeSWITCH + https://packages.pfsense.org/packages/config/freeswitch/freeswitch.xml + https://files.pfsense.org/packages/amd64/8/All/ freeswitch-1.0.6_1-amd64.pbi /usr/ports/net/freeswitch 0.8.3.6 @@ -390,9 +390,9 @@ http://www.freeswitch.org/ FreeSWITCH package development version. Services - http://doc.pfsense.org/index.php/FreeSWITCH - http://www.pfsense.com/packages/config/freeswitch_dev/freeswitch.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://doc.pfsense.org/index.php/FreeSWITCH + https://packages.pfsense.org/packages/config/freeswitch_dev/freeswitch.xml + https://files.pfsense.org/packages/amd64/8/All/ /usr/ports/net/freeswitch 0.9.7.26 Beta @@ -407,8 +407,8 @@ Track things you want to note for this system. Status - http://www.pfsense.com/packages/config/notes/notes.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/notes/notes.xml + https://files.pfsense.org/packages/amd64/8/All/ 0.2.4 Alpha 1.2.1 @@ -421,8 +421,8 @@ Trivial File Transport Protocol is a very simple file transfer protocol. Often used with routers, voip phones and more. Services - http://www.pfsense.com/packages/config/tftp2/tftp.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/tftp2/tftp.xml + https://files.pfsense.org/packages/amd64/8/All/ 2.0 Stable 2.0 @@ -433,9 +433,9 @@ PHP run as a service it can do anything PHP can do including but not limited to monitoring files, CPU, RAM, and send alerts to the syslog. Services - http://doc.pfsense.org/index.php/PHPService - http://www.pfsense.com/packages/config/phpservice/phpservice.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://doc.pfsense.org/index.php/PHPService + https://packages.pfsense.org/packages/config/phpservice/phpservice.xml + https://files.pfsense.org/packages/amd64/8/All/ 0.4.1 Beta 1.2.1 @@ -448,8 +448,8 @@ Tool to Backup and Restore files and directories. System - http://www.pfsense.com/packages/config/backup/backup.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/backup/backup.xml + https://files.pfsense.org/packages/amd64/8/All/ 0.1.5 Beta 1.2 @@ -462,8 +462,8 @@ The cron utility is used to manage commands on a schedule. Services - http://www.pfsense.com/packages/config/cron/cron.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/cron/cron.xml + https://files.pfsense.org/packages/amd64/8/All/ 0.1.8 Beta 1.2 @@ -475,9 +475,9 @@ It is a web server package that can host HTML, Javascript, CSS, and PHP. It uses the lighttpd web server that is already installed. It uses PHP5 in FastCGI mode and has access to PHP Data Ojbects and PDO SQLite. Services - http://doc.pfsense.org/index.php/vhosts - http://www.pfsense.com/packages/config/vhosts/vhosts.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://doc.pfsense.org/index.php/vhosts + https://packages.pfsense.org/packages/config/vhosts/vhosts.xml + https://files.pfsense.org/packages/amd64/8/All/ 0.7.4 Stable 1.2.3 @@ -490,7 +490,7 @@ http://www.snort.org Snort is an open source network intrusion prevention and detection system (IDS/IPS). Combining the benefits of signature, protocol, and anomaly-based inspection. Security - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ mysql55-client-5.5.35.tbz barnyard2-1.13.tbz libnet-1.1.6_1,1.tbz @@ -512,7 +512,7 @@ barnyard2_UNSET_FORCE=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP;snort_SET=TARGETBASED PERFPROFILE DECODERPRE FLEXRESP3 GRE IPV6 MPLS NORMALIZER ZLIB;perl_SET=THREADS;WITH_THREADS=yes;WITH_IPV6=true;WITH_MPLS=true;WITH_GRE=true;WITH_TARGETBASED=true;WITH_PERFPROFILE=true;WITH_DECODERPRE=true;WITH_ZLIB=true;WITH_NORMALIZER=true;WITH_REACT=true;WITH_FLEXRESP3=true;WITHOUT_ODBC=true;WITHOUT_POSTGRESQL=true;WITHOUT_PRELUDE=true;NOPORTDOCS=true - http://www.pfsense.com/packages/config/snort/snort.xml + https://packages.pfsense.org/packages/config/snort/snort.xml 2.9.5.6 pkg v3.0.4 2.0 Stable @@ -524,8 +524,8 @@ http://www.olsr.org/ The olsr.org OLSR daemon is an implementation of the Optimized Link State Routing protocol. OLSR is a routing protocol for mobile ad-hoc networks. The protocol is pro-active, table driven and utilizes a technique called multipoint relaying for message flooding. Services - http://www.pfsense.com/packages/config/olsrd.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/olsrd.xml + https://files.pfsense.org/packages/amd64/8/All/ olsrd-0.6.2.tbz olsrd-0.6.3-amd64.pbi /usr/ports/net/olsrd @@ -536,10 +536,10 @@ routed - http://www.pfsense.com/ + https://packages.pfsense.org/ RIP v1 and v2 daemon. Network Management - http://www.pfsense.com/packages/config/routed/routed.xml + https://packages.pfsense.org/packages/config/routed/routed.xml 1.1 Stable 2.1 @@ -550,8 +550,8 @@ http://www.openbsd.org/spamd/ Tarpits like spamd are fake SMTP servers, which accept connections but don't deliver mail. Instead, they keep the connections open and reply very slowly. If the peer is patient enough to actually complete the SMTP dialogue (which will take ten minutes or more), the tarpit returns a 'temporary error' code (4xx), which indicates that the mail could not be delivered successfully and that the sender should keep the mail in their queue and retry again later. Services - http://www.pfsense.com/packages/config/spamd/spamd.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/spamd/spamd.xml + https://files.pfsense.org/packages/amd64/8/All/ spamd-4.9.1.tbz spamd-4.9.1-amd64.pbi 4.9.1 v1.1 @@ -571,9 +571,9 @@ It can do first and second line antispam combat before sending incoming mail to local mail servers.
    Postfix can also detect zombies, check RBLS, SPF, seach ldap for valid recipients and use third part antispam engines like policyd and mailscanner for better antispam solution.]]> Services - http://forum.pfsense.org/index.php/topic,40622.0.html - http://www.pfsense.com/packages/config/postfix/postfix.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://forum.pfsense.org/index.php/topic,40622.0.html + https://packages.pfsense.org/packages/config/postfix/postfix.xml + https://files.pfsense.org/packages/amd64/8/All/ postfix-2.10.2,1.tbz perl5-5.16.3_4.tbz postfix-2.10.2-amd64.pbi @@ -593,9 +593,9 @@ For all non-commercial it's free, without cost.
    For all commercial use visit dansguardian website to get a licence.]]> Services - http://www.pfsense.com/packages/config/dansguardian/dansguardian.xml - http://forum.pfsense.org/index.php/topic,43786.0.html - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/dansguardian/dansguardian.xml + https://forum.pfsense.org/index.php/topic,43786.0.html + https://files.pfsense.org/packages/amd64/8/All/ dansguardian-2.12.0.3.tbz ca_root_nss-3.14.1.tbz dansguardian-2.12.0.3-amd64.pbi @@ -615,9 +615,9 @@ This is a level3 mail scanning tool with high CPU load.]]> Services - http://www.pfsense.com/packages/config/mailscanner/mailscanner.xml - http://forum.pfsense.org/index.php/topic,43687.0.html - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/mailscanner/mailscanner.xml + https://forum.pfsense.org/index.php/topic,43687.0.html + https://files.pfsense.org/packages/amd64/8/All/ dcc-dccd-1.3.141.tbz perl5-5.16.3_4.tbz pyzor-0.5.0_3.tbz @@ -645,11 +645,11 @@ http://siproxd.sourceforge.net/ Proxy for handling NAT of multiple SIP devices to a single public IP. Services - http://www.pfsense.com/packages/config/siproxd.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/siproxd.xml + https://files.pfsense.org/packages/amd64/8/All/ siproxd-0.8.0.tbz siproxd-0.8.0-amd64.pbi - http://doc.pfsense.org/index.php/Siproxd_package + https://doc.pfsense.org/index.php/Siproxd_package /usr/ports/net/siproxd 0.8.0_2 Beta @@ -660,17 +660,17 @@ OpenBGPD OpenBGPD is a FREE implementation of the Border Gateway Protocol, Version 4. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol. -- WARNING! Installs files to the same place as Quagga OSPF. Installing both will result in a broken state, remove this package before installing Quagga OSPF. NET - http://www.pfsense.com/packages/config/openbgpd/openbgpd.xml + https://packages.pfsense.org/packages/config/openbgpd/openbgpd.xml /usr/ports/net/openbgpd net/openbgpd 0.9.1 STABLE - http://doc.pfsense.org/index.php/OpenBGPD_package + https://doc.pfsense.org/index.php/OpenBGPD_package 1.3 openbgpd.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ openbgpd-5.2.20121209.tbz openbgpd-5.2.20121209-amd64.pbi
    @@ -681,10 +681,10 @@ 0.5.2 Routing DEPRECATED - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ openospfd-4.6.tbz openospfd-4.6-amd64.pbi - http://www.pfsense.com/packages/config/openospfd/openospfd.xml + https://packages.pfsense.org/packages/config/openospfd/openospfd.xml /usr/ports/net/openospfd /usr/ports/devel/libevent @@ -703,7 +703,7 @@ Network Report 1.8.2 pkg v.2.33 dv_serg@mail.ru - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ lightsquid-1.8_2.tbz perl-5.14.2_2.tbz lightsquid-1.8_2-amd64.pbi @@ -715,7 +715,7 @@ WITHOUT_DEBUGGING=true;WITHOUT_GDBM=true;WITHOUT_PERL_MALLOC=true;WITH_PERL_64BITINT=true;WITHOUT_THREADS=true;WITHOUT_MULTIPLICITY=true;WITHOUT_SUIDPERL=true;WITHOUT_SITECUSTOMIZE=true;WITH_USE_PERL=true;WITH_GDSUPPORT=true RC1 2.0 - http://www.pfsense.com/packages/config/lightsquid/lightsquid.xml + https://packages.pfsense.org/packages/config/lightsquid/lightsquid.xml lightsquid.xml true @@ -726,9 +726,9 @@ Sarg provides many informations about Proxy(squid,squidguard or dansguardian) users activities: times, bytes, sites, etc...]]> Network Report - http://www.pfsense.com/packages/config/sarg/sarg.xml - http://forum.pfsense.org/index.php/topic,47765.0.html - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/sarg/sarg.xml + https://forum.pfsense.org/index.php/topic,47765.0.html + https://files.pfsense.org/packages/amd64/8/All/ sarg-2.3.6_2.tbz gd-2.0.35_8,1.tbz sarg-2.3.6_2-amd64.pbi @@ -748,9 +748,9 @@ If it receives one with MAC-IP pair, which is not listed in 'ethers' file, it will send ARP reply with configured fake address.
    This will prevent not permitted host to work properly in local ethernet segment.]]> Security - http://www.pfsense.com/packages/config/ipguard/ipguard.xml - http://forum.pfsense.org/index.php/topic,49917.msg263664.html#msg263664 - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/ipguard/ipguard.xml + https://forum.pfsense.org/index.php/topic,49917.msg263664.html#msg263664 + https://files.pfsense.org/packages/amd64/8/All/ ipguard-1.04.tbz ipguard-1.04-amd64.pbi 1.0.4 pkg v.0.1 @@ -765,14 +765,14 @@ It uses the advanced features in FreeBSD 6/7/8 to achieve its high performance.]]> http://varnish-cache.org - http://doc.pfsense.org/index.php/Varnish_package + https://doc.pfsense.org/index.php/Varnish_package Services 2.1.5 pkg v.1.0 Release 2.0 - http://www.pfsense.com/packages/config/varnish64/varnish_backends.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_backends.xml varnish_backends.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ varnish-2.1.5_2-amd64.pbi gcc-4.2.5.20090325_5-amd64.pbi varnish-2.1.5.tbz gcc-4.2.5.20090325_5.tbz @@ -786,14 +786,14 @@ It uses the advanced features in FreeBSD 6/7/8 to achieve its high performance.
    Version 3 includes streaming support]]> http://varnish-cache.org - http://doc.pfsense.org/index.php/Varnish_package + https://doc.pfsense.org/index.php/Varnish_package Services 3.0.4 pkg v.0.2.1 RC 2.0 - http://www.pfsense.com/packages/config/varnish3/varnish_backends.xml + https://packages.pfsense.org/packages/config/varnish3/varnish_backends.xml varnish_backends.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ varnish-3.0.4-amd64.pbi varnish-3.0.2.tbz pcre-8.21_1.tbz @@ -809,9 +809,9 @@ vnstat2 http://humdi.net/vnstat/ Vnstat is a console-based network traffic monitor<br />The vnstat PHP frontend and vnstati adds a more user friendly way of displaying traffic usage. - http://forum.pfsense.org/index.php/topic,14179.0.html + https://forum.pfsense.org/index.php/topic,14179.0.html Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ vnstat-1.11.tbz vnstat-1.11_1-amd64.pbi /usr/ports/net/vnstat @@ -819,7 +819,7 @@ Stable 2.0 bryan.paradis@gmail.com - http://www.pfsense.com/packages/config/vnstat2/vnstat2.xml + https://packages.pfsense.org/packages/config/vnstat2/vnstat2.xml vnstat2.xml @@ -831,11 +831,11 @@ 2.5.4 Beta 1.0 - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ mbmon-205_5.tbz mbmon-205_6-amd64.pbi /usr/ports/sysutils/mbmon - http://www.pfsense.com/packages/config/phpsysinfo/phpsysinfo.xml + https://packages.pfsense.org/packages/config/phpsysinfo/phpsysinfo.xml phpsysinfo.xml true @@ -846,11 +846,11 @@ Services 1.0.6.18 Beta - http://doc.pfsense.org/index.php/Tinydns_package + https://doc.pfsense.org/index.php/Tinydns_package 2.0 - http://www.pfsense.com/packages/config/tinydns/tinydns.xml + https://packages.pfsense.org/packages/config/tinydns/tinydns.xml tinydns.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ ucspi-tcp-0.88_2.tbz daemontools-0.76_16.tbz djbdns-ipv6-1.05.b23_13.tbz @@ -872,11 +872,11 @@ Services 8.7.0.3046 (build-425873) Stable - http://doc.pfsense.org/index.php/Open_VM_Tools_package + https://doc.pfsense.org/index.php/Open_VM_Tools_package 2.0 - http://www.pfsense.org/packages/config/open-vm-tools_2/open-vm-tools.xml + https://packages.pfsense.org/packages/config/open-vm-tools_2/open-vm-tools.xml open-vm-tools.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ /usr/ports/emulators/open-vm-tools-nox11/ open-vm-tools-nox11-425873_3,1.tbz icu-50.1.2.tbz @@ -913,8 +913,8 @@ 1.21 Stable 1.2 - http://doc.pfsense.org/index.php/AutoConfigBackup - http://www.pfsense.com/packages/config/autoconfigbackup/autoconfigbackup.xml + https://doc.pfsense.org/index.php/AutoConfigBackup + https://packages.pfsense.org/packages/config/autoconfigbackup/autoconfigbackup.xml autoconfigbackup.xml @@ -925,27 +925,27 @@ 2.09.1 v1.1 Stable 1.0.1 - http://www.pfsense.com/packages/config/arping/arping.xml + https://packages.pfsense.org/packages/config/arping/arping.xml arping.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ arping-2.09_1.tbz arping-2.09_1-amd64.pbi /usr/ports/net/arping - http://doc.pfsense.org/index.php/Arping + https://doc.pfsense.org/index.php/Arping nmap jimp@pfsense.org NMap is a utility for network exploration or security auditing. It supports ping scanning (determine which hosts are up), many port scanning techniques (determine what services the hosts are offering), version detection (determine what application/service is runing on a port), and TCP/IP fingerprinting (remote host OS or device identification). It also offers flexible target and port specification, decoy/stealth scanning, SunRPC scanning, and more. Most Unix and Windows platforms are supported in both GUI and command line modes. Several popular handheld devices are also supported, including the Sharp Zaurus and the iPAQ. Security - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ lua-5.1.5_4.tbz nmap-6.25_1.tbz nmap-6.25_1-amd64.pbi - http://www.pfsense.com/packages/config/nmap/nmap.xml + https://packages.pfsense.org/packages/config/nmap/nmap.xml nmap-6.25_1 pkg v1.2 Stable - http://doc.pfsense.org/index.php/Nmap_package + https://doc.pfsense.org/index.php/Nmap_package 2.0 nmap.xml /usr/ports/security/nmap @@ -960,8 +960,8 @@ 20111108 pkg v 0.3.1 2.0 BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml + https://doc.pfsense.org/index.php/IMSpector_package + https://packages.pfsense.org/packages/config/imspector/imspector.xml imspector.xml imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW http://e-sac.siteseguro.ws/packages/amd64/8/All/ @@ -978,13 +978,13 @@ BETA 2.0 rswagoner@gmail.com - http://www.pfsense.com/packages/config/nut/nut.xml + https://packages.pfsense.org/packages/config/nut/nut.xml nut.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ nut-2.6.4.tbz nut-2.6.5_1-amd64.pbi /usr/ports/sysutils/nut - http://doc.pfsense.org/index.php/Nut_package + https://doc.pfsense.org/index.php/Nut_package diag_new_states @@ -995,22 +995,22 @@ ptaylor@addressplus.net 1.2.1 BETA - http://www.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml - http://www.pfsense.com/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.xml darkstat http://dmr.ath.cx/net/darkstat/ darkstat is a network statistics gatherer. It's a packet sniffer that runs as a background process on a cable/DSL router, gathers all sorts of statistics about network usage, and serves them over HTTP. Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ darkstat-3.0.714.tbz darkstat-3.0.715-amd64.pbi 3.0.714 Stable 1.2.1 sullrich+pfsp@gmail.com - http://www.pfsense.com/packages/config/darkstat/darkstat.xml + https://packages.pfsense.org/packages/config/darkstat/darkstat.xml darkstat.xml /usr/ports/net-mgmt/darkstat @@ -1019,8 +1019,8 @@ http://www.mindrot.org/pfflowd.html pfflowd converts OpenBSD PF status messages (sent via the pfsync interface) to Cisco NetFlow datagrams. These datagrams may be sent (via UDP) to a host of one's choice. Utilising the OpenBSD stateful packet filter infrastructure means that flow tracking is very fast and accurate. Network Management - http://www.pfsense.com/packages/config/pfflowd.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/pfflowd.xml + https://files.pfsense.org/packages/amd64/8/All/ pfflowd-0.8.tbz pfflowd-0.8-amd64.pbi 0.8.3 @@ -1035,14 +1035,14 @@ RFC1413 auth/identd daemon with fixed fake reply http://www.webweaving.org/widentd Services - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ widentd-1.03_1.tbz widentd-1.03_1-amd64.pbi 1.03_1 Stable - http://doc.pfsense.org/index.php/Widentd_package + https://doc.pfsense.org/index.php/Widentd_package 1.2.1 - http://www.pfsense.com/packages/config/widentd.xml + https://packages.pfsense.org/packages/config/widentd.xml widentd.xml /usr/ports/net/widentd @@ -1055,11 +1055,11 @@ Beta 2.0 none - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ freeradius-1.1.8_4.tbz libltdl-2.4_1.tbz freeradius-1.1.8_5-amd64.pbi - http://www.pfsense.org/packages/config/freeradius.xml + https://packages.pfsense.org/packages/config/freeradius.xml freeradius.xml /usr/ports/net/freeradius /usr/ports/devel/libltdl @@ -1076,19 +1076,19 @@ Support: MySQL, PostgreSQL, LDAP, Kerberos
    FreeRADIUS and FreeRADIUS2 settings are not compatible so don't use them together or try to update
    On pfSense docs there is a how-to which could help you on porting users.]]> - http://doc.pfsense.org/index.php/FreeRADIUS_2.x_package + https://doc.pfsense.org/index.php/FreeRADIUS_2.x_package System 2.1.12_1/2.2.0 pkg v1.6.7_2 RC1 2.0 nachtfalkeaw@web.de - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ freeradius-2.1.12_1.tbz freeradius-2.2.0-amd64.pbi mysql-client-5.1.63.tbz postgresql-client-9.0.8.tbz openldap-sasl-client-2.4.31_1.tbz - http://www.pfsense.org/packages/config/freeradius2/freeradius.xml + https://packages.pfsense.org/packages/config/freeradius2/freeradius.xml freeradius.xml Please visit Services: FreeRADIUS @@ -1106,12 +1106,12 @@ 2.0.1_5 pkg v.0.3 BETA 1.2.1 - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ bandwidthd-2.0.1_5.tbz libpcap-1.1.1.tbz postgresql-client-8.4.12.tbz bandwidthd-2.0.1_5-amd64.pbi - http://www.pfsense.org/packages/config/bandwidthd/bandwidthd.xml + https://packages.pfsense.org/packages/config/bandwidthd/bandwidthd.xml bandwidthd.xml /usr/ports/net/libpcap /usr/ports/databases/postgresql84-client @@ -1127,14 +1127,14 @@ http://www.stunnel.org/ An SSL encryption wrapper between remote client and local or remote servers. Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ stunnel-4.43.tbz stunnel-4.54-amd64.pbi 4.43 Stable - http://doc.pfsense.org/index.php/Stunnel_package + https://doc.pfsense.org/index.php/Stunnel_package 1.2.1 - http://www.pfsense.com/packages/config/stunnel.xml + https://packages.pfsense.org/packages/config/stunnel.xml stunnel.xml /usr/ports/security/stunnel WITHOUT_FORK=true;WITH_PTHREAD=true;WITHOUT_UCONTEXT=true;WITHOUT_IPV6=true;WITH_LIBWRAP=true;WITHOUT_SSL_PORT=true @@ -1144,13 +1144,13 @@ http://dast.nlanr.net/Projects/Iperf/ Iperf is a tool for testing network throughput, loss, and jitter. Network Management - http://www.pfsense.com/packages/config/iperf.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/iperf.xml + https://files.pfsense.org/packages/amd64/8/All/ iperf-2.0.5.tbz iperf-2.0.5-amd64.pbi 2.0.5 Beta - http://doc.pfsense.org/index.php/Iperf_package + https://doc.pfsense.org/index.php/Iperf_package 1.2.1 iperf.xml /usr/ports/benchmarks/iperf @@ -1160,8 +1160,8 @@ http://freshmeat.net/projects/netio/ This is a network benchmark for DOS, OS/2 2.x, Windows NT/2000 and Unix. It measures the net throughput of a network via NetBIOS and/or TCP/IP protocols (Unix and DOS only support TCP/IP) using various different packet sizes. Network Management - http://www.pfsense.com/packages/config/netio.xml - http://files.pfsense.org/packages/amd64/8/All + https://packages.pfsense.org/packages/config/netio.xml + https://files.pfsense.org/packages/amd64/8/All netio-1.26.tbz netio-1.26-amd64.pbi 1.26 @@ -1176,13 +1176,13 @@ Enhanced traceroute replacement http://www.bitwizard.nl/mtr/ Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ mtr-nox11-0.82.tbz mtr-0.82_1-amd64.pbi 0.82 Stable 2.0 - http://www.pfsense.com/packages/config/mtr-nox11.xml + https://packages.pfsense.org/packages/config/mtr-nox11.xml mtr-nox11.xml /usr/ports/net/mtr mtr_UNSET_FORCE=X11 @@ -1196,7 +1196,7 @@ Stable 2 fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ squid-2.7.9_3.tbz squid_radius_auth-1.10.tbz libwww-5.4.0_4.tbz @@ -1210,7 +1210,7 @@ www/squid_radius_auth
    squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squid/squid.xml + https://packages.pfsense.org/packages/config/squid/squid.xml squid.xml @@ -1219,14 +1219,14 @@ It combines squid as a proxy server with it's capabilities of acting as a HTTP / HTTPS reverse proxy.
    It includes an Exchange-Web-Access (OWA) Assistant.]]>
    - http://forum.pfsense.org/index.php/topic,48347.0.html + https://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network 3.1.20 pkg 2.0.6 beta 2.0 marcellocoutinho@gmail.com fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ squid-3.1.20.tbz libwww-5.4.0_4.tbz @@ -1236,7 +1236,7 @@ c-icap_UNSET_FORCE=IPV6;squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES;squid_SET=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS AUTH_SASL CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squid3/31/squid.xml + https://packages.pfsense.org/packages/config/squid3/31/squid.xml squid.xml squid-3.1.22_1-amd64.pbi
    @@ -1246,14 +1246,14 @@ It combines squid as a proxy server with it's capabilities of acting as a HTTP / HTTPS reverse proxy.
    It includes an Exchange-Web-Access (OWA) Assistant, ssl filtering and antivirus integration via i-cap]]>
    - http://forum.pfsense.org/index.php/topic,48347.0.html + https://forum.pfsense.org/index.php/topic,48347.0.html http://www.squid-cache.org/ Network 3.3.10 pkg 2.2.1 beta 2.0 marcellocoutinho@gmail.com fernando@netfilter.com.br seth.mos@dds.nl mfuchs77@googlemail.com jimp@pfsense.org - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ squid-3.3.5.tbz libltdl-2.4.2.tbz libwww-5.4.0_4.tbz @@ -1267,7 +1267,7 @@ www/squid_radius_auth security/clamav www/squidclamav security/ca_root_nss www/c-icap-modules c-icap_UNSET_FORCE=IPV6;squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES AUTH_SASL;squid_SET=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squid3/33/squid.xml + https://packages.pfsense.org/packages/config/squid3/33/squid.xml squid.xml squid-3.3.10-amd64.pbi @@ -1280,10 +1280,10 @@ BETA 1.2.1 seth.mos@dds.nl - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ lcdproc-0.5.5.tbz lcdproc-0.5.6-amd64.pbi - http://www.pfsense.org/packages/config/lcdproc/lcdproc.xml + https://packages.pfsense.org/packages/config/lcdproc/lcdproc.xml lcdproc.xml /usr/ports/sysutils/lcdproc lcdproc_SET=USB @@ -1298,11 +1298,11 @@ BETA 2.0 michele@nt2.it - http://forum.pfsense.org/index.php/topic,44034.0.html - http://files.pfsense.org/packages/amd64/8/All/ + https://forum.pfsense.org/index.php/topic,44034.0.html + https://files.pfsense.org/packages/amd64/8/All/ lcdproc-0.5.6.tbz lcdproc-0.5.6-amd64.pbi - http://www.pfsense.org/packages/config/lcdproc-dev/lcdproc.xml + https://packages.pfsense.org/packages/config/lcdproc-dev/lcdproc.xml lcdproc.xml /usr/ports/sysutils/lcdproc WITH_USB=true @@ -1313,14 +1313,14 @@ Arpwatch monitors ethernet/ip address pairings. It also logs certain changes to syslog. http://www-nrg.ee.lbl.gov/ Security - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ arpwatch-2.1.a15_6.tbz arpwatch-2.1.a15_6-amd64.pbi /usr/ports/net-mgmt/arpwatch 2.1.a15_6 pkg v1.1.1 ALPHA 2.0 - http://www.pfsense.com/packages/config/arpwatch.xml + https://packages.pfsense.org/packages/config/arpwatch.xml arpwatch.xml arpwatch @@ -1336,7 +1336,7 @@ 1.4_4 pkg v.1.9.5 Beta 1.1 - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ squidGuard-1.4_4.tbz db41-4.1.25_4.tbz cyrus-sasl-2.1.26_2.tbz @@ -1349,7 +1349,7 @@ www/squidguard squidGuard_UNSET_FORCE=SQUID32 SQUID33;squidGuard_SET=SAMPLE_BL SASL LDAP SQUID27;squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squidGuard/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard.xml squidguard.xml @@ -1361,7 +1361,7 @@ 1.5_1 beta Beta 2.1 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ squidguard-devel-1.5_1-amd64.pbi databases/db46 @@ -1369,7 +1369,7 @@ squidguard-devel squidGuard-devel_UNSET_FORCE=SQUID32 SQUID33;squidGuard-devel_SET=LDAP STRIPNT SQUID27;squid_UNSET_FORCE=DNS_HELPER IPFILTER PINGER STACKTRACES STRICT_HTTP_DESC USERAGENT_LOG WCCPV2;squid_SET=PF LDAP_AUTH NIS_AUTH SASL_AUTH ARP_ACL AUFS CACHE_DIGESTS CARP COSS DELAY_POOLS FOLLOW_XFF HTCP IDENT KERB_AUTH KQUEUE LARGEFILE REFERER_LOG SNMP SSL VIA_DB WCCP;SQUID_UID=proxy;SQUID_GID=proxy - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard.xml squidguard.xml @@ -1381,7 +1381,7 @@ 1.4_4 pkg v.1.9.5 Experimental 2.1 - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ squidguard-squid3-1.4_4-amd64.pbi www/squid33 databases/db41 security/cyrus-sasl2 @@ -1389,14 +1389,14 @@ squidguard-squid3 OPTIONS_SET=FETCH LDAP;squidGuard_UNSET_FORCE=SQUID27;squidGuard_SET=SAMPLE_BL SASL SQUID33;c-icap_UNSET_FORCE=IPV6 squid_UNSET_FORCE=AUTH_SMB AUTH_SQL DNS_HELPER FS_COSS ESI SNMP ECAP STACKTRACES STRICT_HTTP TP_IPF TP_IPFW VIA_DB DEBUG DOCS EXAMPLES;squid_SET=ARP_ACL AUTH_KERB AUTH_LDAP AUTH_NIS AUTH_SASL CACHE_DIGESTS DELAY_POOLS FOLLOW_XFF TP_PF MSSL_CRTD WCCP WCCPV2 FS_AUFS HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE SSL SSL_CRTD - http://www.pfsense.org/packages/config/squidGuard/squidguard.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard.xml squidguard.xml Zabbix Agent Monitoring agent. Services - http://www.pfsense.com/packages/config/zabbix-agent/zabbix-agent.xml + https://packages.pfsense.org/packages/config/zabbix-agent/zabbix-agent.xml 1.8.10,2 pkg v1.1 FINAL 1.2.3 @@ -1408,7 +1408,7 @@ net-mgmt/zabbix-agent ca_root_nss_UNSET_FORCE=ETCSYMLINK;zabbix22_SET=LDAP SSH SQLITE;zabbix22_UNSET_FORCE=MYSQL - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ zabbix-agent-1.8.10,2.tbz zabbix-agent-1.8.13-amd64.pbi @@ -1416,7 +1416,7 @@ Zabbix Proxy Monitoring agent proxy. Services - http://www.pfsense.com/packages/config/zabbix-proxy/zabbix-proxy.xml + https://packages.pfsense.org/packages/config/zabbix-proxy/zabbix-proxy.xml 1.8.8,2 pkg v1.1 FINAL 1.2.3 @@ -1428,7 +1428,7 @@ net-mgmt/zabbix-proxy ca_root_nss_UNSET_FORCE=ETCSYMLINK;zabbix22_SET=LDAP SSH SQLITE;zabbix22_UNSET_FORCE=MYSQL - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ zabbix-proxy-1.8.8,2.tbz zabbix-proxy-1.8.13-amd64.pbi @@ -1436,7 +1436,7 @@ OpenVPN Client Export Utility Allows a pre-configured OpenVPN Windows Client or Mac OSX's Viscosity configuration bundle to be exported directly from pfSense. Security - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ p7zip-9.20.1.tbz zip-3.0.tbz zip-3.0-amd64.pbi p7zip-9.20.1-amd64.pbi @@ -1445,7 +1445,7 @@ 1.2.4 RELEASE 2.0 - http://www.pfsense.com/packages/config/openvpn-client-export/openvpn-client-export.xml + https://packages.pfsense.org/packages/config/openvpn-client-export/openvpn-client-export.xml openvpn-client-export.xml @@ -1454,7 +1454,7 @@ http://www.server-side.de/ Antivirus: HAVP (HTTP Antivirus Proxy) is a proxy with a ClamAV anti-virus scanner. The main aims are continuous, non-blocking downloads and smooth scanning of dynamic and password protected HTTP traffic. Havp antivirus proxy has a parent and transparent proxy mode. It can be used with squid or standalone. And File Scanner for local files. Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ havp-0.91_1.tbz havp-0.91_1-amd64.pbi /usr/ports/www/havp @@ -1462,7 +1462,7 @@ 0.91_1 pkg v1.01 BETA 1.2.2 - http://www.pfsense.com/packages/config/havp/havp.xml + https://packages.pfsense.org/packages/config/havp/havp.xml havp.xml dv_serg@mail.ru Please check the HAVP settings. @@ -1475,8 +1475,8 @@ 0.51 1.2.3 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jailctl.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jailctl.xml jailctl.xml ltning-jailctl@anduin.net @@ -1488,8 +1488,8 @@ 0.2 1.2.3 BETA - http://doc.pfsense.org/index.php/PfJailctl_package - http://www.pfsense.com/packages/config/jail_template.xml + https://doc.pfsense.org/index.php/PfJailctl_package + https://packages.pfsense.org/packages/config/jail_template.xml jail_template.xml ltning-jailctl@anduin.net @@ -1501,15 +1501,15 @@ Beta jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/blinkled8/blinkled.xml + https://packages.pfsense.org/packages/config/blinkled8/blinkled.xml blinkled.xml - http://doc.pfsense.org/index.php/BlinkLED_Package - http://doc.pfsense.org/index.php/BlinkLED_Package + https://doc.pfsense.org/index.php/BlinkLED_Package + https://doc.pfsense.org/index.php/BlinkLED_Package /usr/ports/sysutils/blinkled sysutils/blinkled - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ blinkled-0.1.tbz blinkled-0.1-amd64.pbi @@ -1521,14 +1521,14 @@ Beta jimp@pfsense.org 2.0 - http://www.pfsense.org/packages/config/gwled/gwled.xml + https://packages.pfsense.org/packages/config/gwled/gwled.xml gwled.xml Dashboard Widget: Snort Dashboard widget for Snort. System - http://www.pfsense.com/packages/config/widget-snort/widget-snort.xml + https://packages.pfsense.org/packages/config/widget-snort/widget-snort.xml 0.3.7 BETA 1.2 @@ -1538,7 +1538,7 @@ Dashboard Widget: HAVP Dashboard widget for HAVP alerts. System - http://www.pfsense.com/packages/config/widget-havp/widget-havp.xml + https://packages.pfsense.org/packages/config/widget-havp/widget-havp.xml 0.1 BETA 1.2 @@ -1548,7 +1548,7 @@ Dashboard Widget: Antivirus Status Dashboard widget for HAVP status. System - http://www.pfsense.com/packages/config/widget-antivirus/widget-antivirus.xml + https://packages.pfsense.org/packages/config/widget-antivirus/widget-antivirus.xml 0.1 BETA 1.2 @@ -1562,7 +1562,7 @@ Beta jimp@pfsense.org 1.2.3 - http://www.pfsense.org/packages/config/rrd-summary/rrd-summary.xml + https://packages.pfsense.org/packages/config/rrd-summary/rrd-summary.xml rrd-summary.xml @@ -1574,10 +1574,10 @@ Alpha warren@decoy.co.za 2.0 - http://doc.pfsense.org/index.php/Unbound_package - http://www.pfsense.com/packages/config/unbound/unbound.xml + https://doc.pfsense.org/index.php/Unbound_package + https://packages.pfsense.org/packages/config/unbound/unbound.xml unbound.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ unbound-1.4.21_1.tbz ldns-1.6.16.tbz expat-2.0.1_2.tbz @@ -1605,7 +1605,7 @@ The shellcmd utility is used to manage commands on system startup. Services - http://www.pfsense.com/packages/config/shellcmd/shellcmd.xml + https://packages.pfsense.org/packages/config/shellcmd/shellcmd.xml 0.5 Beta 1.2 @@ -1622,7 +1622,7 @@ BETA 2.0 ey@tm-k.com - http://www.pfsense.org/packages/config/widescreen/widescreen.xml + https://packages.pfsense.org/packages/config/widescreen/widescreen.xml widescreen.xml 2.0.1 @@ -1632,7 +1632,7 @@ http://wiki.nagios.org/index.php/Howtos:nrpe_nsca NRPE is an addon for Nagios that allows you to execute plugins on remote Linux/Unix hosts. This is useful if you need to monitor local resources/attributes like disk usage, CPU load, memory usage, etc. on a remote host. Services - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ nrpe-2.12_3.tbz nagios-plugins-1.4.15_1,1.tbz nrpe-2.13_2-amd64.pbi @@ -1643,7 +1643,7 @@ net-mgmt/nrpe nrpe_SET=SSL;nrpe_UNSET_FORCE=ARGS - http://www.pfsense.com/packages/config/nrpe2/nrpe2.xml + https://packages.pfsense.org/packages/config/nrpe2/nrpe2.xml 2.12_3 v2.2 Beta 1.2 @@ -1655,7 +1655,7 @@ https://github.com/sileht/check_mk/blob/master/doc/README For each host to be monitored check_mk is called by Nagios only once per time period.]]> Services - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ /usr/ports/sysutils/muse /usr/ports/sysutils/ipmitool devel/libstatgrab @@ -1664,7 +1664,7 @@ sysutils/muse - http://www.pfsense.com/packages/config/checkmk-agent/checkmk.xml + https://packages.pfsense.org/packages/config/checkmk-agent/checkmk.xml v0.1 RC1 2.0 @@ -1679,7 +1679,7 @@ 1.0 Beta 2.0 - http://www.pfsense.com/packages/config/sshdcond/sshdcond.xml + https://packages.pfsense.org/packages/config/sshdcond/sshdcond.xml namezero@afim.info sshdcond.xml @@ -1690,7 +1690,7 @@ 2.0.9 Stable 2.0 - http://www.pfsense.com/packages/config/mailreport/mailreport.xml + https://packages.pfsense.org/packages/config/mailreport/mailreport.xml mailreport.xml @@ -1704,10 +1704,10 @@ www.winton.org.uk/zebedee/ jorgelustosa@gmail.com marcellocoutinho@gmail.com 2.0 - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ zebedee-2.5.3.tbz zebedee-2.5.3-amd64.pbi - http://www.pfsense.com/packages/config/zebedee/zebedee.xml + https://packages.pfsense.org/packages/config/zebedee/zebedee.xml zebedee.xml /usr/ports/security/zebedee @@ -1715,7 +1715,7 @@ OpenVPN tap Bridging Fix Patch to fix OpenVPN tap bridging on 2.0.x. WARNING! Cannot be uninstalled. System - http://www.pfsense.com/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.xml + https://packages.pfsense.org/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.xml 0.4 BETA 2.0 @@ -1728,10 +1728,10 @@ 0.99.22.3 v0.6.1 Routing BETA - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ quagga-0.99.22.3.tbz quagga-0.99.22.3-amd64.pbi - http://www.pfsense.com/packages/config/quagga_ospfd/quagga_ospfd.xml + https://packages.pfsense.org/packages/config/quagga_ospfd/quagga_ospfd.xml /usr/ports/net/quagga 2.0 @@ -1744,7 +1744,7 @@ 1.0 System RELEASE - http://www.pfsense.com/packages/config/systempatches/systempatches.xml + https://packages.pfsense.org/packages/config/systempatches/systempatches.xml 2.0 systempatches.xml @@ -1758,8 +1758,8 @@ 5.2.12_3 pkg v 1.0.1 Stable 2.0 - http://www.pfsense.com/packages/config/bacula-client/bacula-client.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/bacula-client/bacula-client.xml + https://files.pfsense.org/packages/amd64/8/All/ bacula-client-5.2.12_3.tbz bacula-5.2.12_3-amd64.pbi /usr/ports/sysutils/bacula-client @@ -1773,50 +1773,50 @@ urlsnarf - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 2.3_4 Beta 2.1 - http://www.pfsense.com/packages/config/urlsnarf/urlsnarf.xml + https://packages.pfsense.org/packages/config/urlsnarf/urlsnarf.xml jimp@pfsense.org urlsnarf.xml net/libnet10 security/dsniff - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ dsniff-2.3_4-amd64.pbi iftop - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 0.17 Beta 2.1 - http://www.pfsense.com/packages/config/iftop/iftop.xml + https://packages.pfsense.org/packages/config/iftop/iftop.xml jimp@pfsense.org iftop.xml net-mgmt/iftop - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ iftop-0.17-amd64.pbi git - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 1.8.5.2 Beta 2.1 - http://www.pfsense.com/packages/config/git/git.xml + https://packages.pfsense.org/packages/config/git/git.xml jimp@pfsense.org git.xml git_UNSET_FORCE=GITWEB GUI HTMLDOCS CVS P4 SVN;git_SET=CONTRIB CURL ETCSHELLS ICONV NLS PERL @@ -1824,7 +1824,7 @@ devel/git - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ git-1.8.5.2-amd64.pbi @@ -1832,7 +1832,7 @@ http://www.tinc-vpn.org/ tinc is a Virtual Private Network (VPN) daemon that uses tunnelling and encryption to create a secure private mesh network between hosts on the Internet. Network Management - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ tinc-1.0.21-amd64.pbi security/tinc @@ -1840,9 +1840,9 @@ 1.0.21 v1.1 ALPHA - http://doc.pfsense.org/index.php/tinc_package + https://doc.pfsense.org/index.php/tinc_package 2.1 - http://www.pfsense.com/packages/config/tinc/tinc.xml + https://packages.pfsense.org/packages/config/tinc/tinc.xml tinc.xml tinc @@ -1858,7 +1858,7 @@ 3.3.7_4 ALPHA 2.1 - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ syslog-ng-3.3.7_4-amd64.pbi sysutils/logrotate @@ -1866,14 +1866,14 @@ laleger@gmail.com - http://www.pfsense.com/packages/config/syslog-ng/syslog-ng.xml + https://packages.pfsense.org/packages/config/syslog-ng/syslog-ng.xml syslog-ng.xml Zabbix-2 Agent Monitoring agent. Services - http://www.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml + https://packages.pfsense.org/packages/config/zabbix2/zabbix2-agent.xml zabbix2-agent-2.2.2 pkg v0.8_1 BETA 2.0 @@ -1884,7 +1884,7 @@ zabbix22-agent net-mgmt/zabbix22-agent - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ zabbix22-agent-2.2.2.tbz zabbix22-agent-2.2.2-amd64.pbi @@ -1892,7 +1892,7 @@ Zabbix-2 Proxy Monitoring agent proxy. Services - http://www.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml + https://packages.pfsense.org/packages/config/zabbix2/zabbix2-proxy.xml zabbix2-proxy-2.2.2 pkg v0.8_1 BETA 2.0 @@ -1904,45 +1904,45 @@ net-mgmt/zabbix22-proxy OPTIONS_SET+= SQLITE IPV6;OPTIONS_UNSET+= MYSQL JABBER GSSAPI - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ zabbix22-proxy-2.2.2.tbz zabbix22-proxy-2.2.2-amd64.pbi ipmitool - http://forum.pfsense.org/ + https://forum.pfsense.org/ Services 1.8.12 Beta 2.1 - http://www.pfsense.com/packages/config/ipmitool/ipmitool.xml + https://packages.pfsense.org/packages/config/ipmitool/ipmitool.xml jimp@pfsense.org ipmitool.xml sysutils/ipmitool ipmitool_SET=FREEIPMI;freeipmi_UNSET_FORCE=DOCS DEBUG IOPERM - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ ipmitool-1.8.12_3-amd64.pbi sudo - http://doc.pfsense.org/index.php/Sudo_Package + https://doc.pfsense.org/index.php/Sudo_Package Security 0.2 Beta 2.0.2 - http://www.pfsense.com/packages/config/sudo/sudo.xml + https://packages.pfsense.org/packages/config/sudo/sudo.xml jimp@pfsense.org sudo.xml security/sudo /usr/ports/security/sudo - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ sudo-1.8.6.p8.tbz sudo-1.8.6p8-amd64.pbi @@ -1953,7 +1953,7 @@ 1.5 Services BETA - http://www.pfsense.com/packages/config/servicewatchdog/servicewatchdog.xml + https://packages.pfsense.org/packages/config/servicewatchdog/servicewatchdog.xml 2.1 servicewatchdog.xml @@ -1963,8 +1963,8 @@ http://code.google.com/p/softflowd/ Softflowd is flow-based network traffic analyser capable of Cisco NetFlow data export. Softflowd semi-statefully tracks traffic flows recorded by listening on a network interface or by reading a packet capture file. These flows may be reported via NetFlow to a collecting host or summarised within softflowd itself. Softflowd supports Netflow versions 1, 5 and 9 and is fully IPv6-capable - it can track IPv6 flows and send export datagrams via IPv6. It also supports export to multicast groups, allowing for redundant flow collectors. Network Management - http://www.pfsense.com/packages/config/softflowd/softflowd.xml - http://files.pfsense.org/packages/amd64/8/All/ + https://packages.pfsense.org/packages/config/softflowd/softflowd.xml + https://files.pfsense.org/packages/amd64/8/All/ softflowd-0.9.8_2-amd64.pbi 0.9.8 Beta @@ -1979,7 +1979,7 @@ Apcupsd Set of programs for controlling APC UPS. Services - http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml + https://packages.pfsense.org/packages/config/apcupsd/apcupsd.xml apcupsd-3.14.10_1 pkg v0.2 BETA 2.0 @@ -1991,7 +1991,7 @@ sysutils/apcupsd apcupsd_SET=APCSMART_DRV APCDUMB_DRV PCNET_DRV USB TCP_WRAPPERS SNMP_DRV;apcupsd_UNSET_FORCE=CLIENT_ONLY CGI SNMP_DRV_OLD TEST_DRV GAPCMON DOCS - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ apcupsd-3.14.10_1.tbz apcupsd-3.14.10_1-amd64.pbi @@ -2002,9 +2002,9 @@ Network Management 1.0.4 BETA - http://files.pfsense.org/packages/8/All/ + https://files.pfsense.org/packages/8/All/ ladvd-1.0.4-amd64.pbi - http://www.pfsense.org/packages/config/ladvd/ladvd.xml + https://packages.pfsense.org/packages/config/ladvd/ladvd.xml /usr/ports/net/ladvd 2.1 @@ -2018,7 +2018,7 @@ 1.4.6 pkg v0.2 BETA 2.1 - http://www.pfsense.org/packages/config/suricata/suricata.xml + https://packages.pfsense.org/packages/config/suricata/suricata.xml suricata.xml security/suricata @@ -2026,7 +2026,7 @@ barnyard2_UNSET=ODBC PGSQL PRELUDE;barnyard2_SET=GRE IPV6 MPLS MYSQL PORT_PCAP BRO;suricata_SET=IPFW PORTS_PCAP TESTS;suricata_UNSET=PRELUDE /usr/ports/security/suricata - http://files.pfsense.org/packages/amd64/8/All/ + https://files.pfsense.org/packages/amd64/8/All/ suricata-1.4.6-amd64.pbi diff --git a/pkg_config.xsl b/pkg_config.xsl index d5df5626..bbe9864d 100644 --- a/pkg_config.xsl +++ b/pkg_config.xsl @@ -5,7 +5,7 @@ pfSense Open Source Firewall Distribution - Packages - + -- cgit v1.2.3 From 2f068dda397ce697ef870b0cc35b698cb13ca3e6 Mon Sep 17 00:00:00 2001 From: Chris Buechler Date: Thu, 13 Mar 2014 10:02:51 -0500 Subject: remove references to files that haven't been around in a number of years. --- config/xsl/package.xsl | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/config/xsl/package.xsl b/config/xsl/package.xsl index 933cc700..947a9324 100644 --- a/config/xsl/package.xsl +++ b/config/xsl/package.xsl @@ -4,7 +4,8 @@ /* ========================================================================== */ /* package.xsl - part of pfSense (http://www.pfSense.com) + part of pfSense (https://www.pfsense.org) + Copyright (C) 2004-2014 Electric Sheep Fencing, LLC Copyright (C) 2007 Daniel S. Haischt All rights reserved. @@ -68,7 +69,6 @@ + @@ -253,7 +255,6 @@ $interfaces = haproxy_get_bindable_interfaces(); -
    @@ -533,7 +529,7 @@ foreach($simplefields as $field){ -- cgit v1.2.3 From a6f4ab08784d3bcaef35b74f7e22358378acdc53 Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 18 Mar 2014 12:42:08 -0400 Subject: Add log_limit and sensor_id params to Barnyard2 configuration page. --- config/suricata/suricata_barnyard.php | 39 +++++++++++++++++++++++++++++- config/suricata/suricata_generate_yaml.php | 10 ++++++++ config/suricata/suricata_yaml_template.inc | 5 ++-- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/config/suricata/suricata_barnyard.php b/config/suricata/suricata_barnyard.php index e1ae892e..e71dc261 100644 --- a/config/suricata/suricata_barnyard.php +++ b/config/suricata/suricata_barnyard.php @@ -55,6 +55,8 @@ if (isset($id) && $a_nat[$id]) { $pconfig['barnyard_dbpwd'] = base64_decode($a_nat[$id]['barnyard_dbpwd']); if (empty($a_nat[$id]['barnyard_show_year'])) $pconfig['barnyard_show_year'] = "on"; + if (empty($a_nat[$id]['unified2_log_limit'])) + $pconfig['unified2_log_limit'] = "32"; if (empty($a_nat[$id]['barnyard_archive_enable'])) $pconfig['barnyard_archive_enable'] = "on"; if (empty($a_nat[$id]['barnyard_obfuscate_ip'])) @@ -71,6 +73,8 @@ if (isset($id) && $a_nat[$id]) { $pconfig['barnyard_syslog_priority'] = "LOG_INFO"; if (empty($a_nat[$id]['barnyard_bro_ids_dport'])) $pconfig['barnyard_bro_ids_dport'] = "47760"; + if (empty($a_nat[$id]['barnyard_sensor_id'])) + $pconfig['barnyard_sensor_id'] = "0"; if (empty($a_nat[$id]['barnyard_sensor_name'])) $pconfig['barnyard_sensor_name'] = php_uname("n"); } @@ -81,6 +85,18 @@ if ($_POST['save']) { $_POST['barnyard_bro_ids_enable'] != 'on' && $_POST['barnyard_enable'] == "on") $input_errors[] = gettext("You must enable at least one output option when using Barnyard2."); + // Validate unified2 log file limit + if ($_POST['barnyard_enable'] == 'on') { + if (!is_numericint($_POST['unified2_log_limit']) || $_POST['unified2_log_limit'] < 1) + $input_errors[] = gettext("The value for 'Unified2 Log Limit' must be a valid integer greater than zero."); + } + + // Validate Sensor ID is a valid integer + if ($_POST['barnyard_enable'] == 'on') { + if (!is_numericint($_POST['barnyard_sensor_id']) || $_POST['barnyard_sensor_id'] < 0) + $input_errors[] = gettext("The value for 'Sensor ID' must be a valid positive integer."); + } + // Validate inputs if MySQL database loggging enabled if ($_POST['barnyard_mysql_enable'] == 'on' && $_POST['barnyard_enable'] == "on") { if (empty($_POST['barnyard_dbhost'])) @@ -126,7 +142,9 @@ if ($_POST['save']) { $natent['barnyard_syslog_opmode'] = $_POST['barnyard_syslog_opmode']; $natent['barnyard_syslog_proto'] = $_POST['barnyard_syslog_proto']; + if ($_POST['barnyard_sensor_id']) $natent['barnyard_sensor_id'] = $_POST['barnyard_sensor_id']; else $natent['barnyard_sensor_id'] = '0'; if ($_POST['barnyard_sensor_name']) $natent['barnyard_sensor_name'] = $_POST['barnyard_sensor_name']; else unset($natent['barnyard_sensor_name']); + if ($_POST['unified2_log_limit']) $natent['unified2_log_limit'] = $_POST['unified2_log_limit']; else unset($natent['unified2_log_limit']); if ($_POST['barnyard_dbhost']) $natent['barnyard_dbhost'] = $_POST['barnyard_dbhost']; else unset($natent['barnyard_dbhost']); if ($_POST['barnyard_dbname']) $natent['barnyard_dbname'] = $_POST['barnyard_dbname']; else unset($natent['barnyard_dbname']); if ($_POST['barnyard_dbuser']) $natent['barnyard_dbuser'] = $_POST['barnyard_dbuser']; else unset($natent['barnyard_dbuser']); @@ -265,6 +283,15 @@ include_once("head.inc"); " . gettext("Checked") . ""; ?> + + + + + + + + @@ -555,10 +590,12 @@ function enable_change(enable_change) { endis = !(document.iform.barnyard_enable.checked || enable_change); // make sure a default answer is called if this is invoked. endis2 = (document.iform.barnyard_enable); + document.iform.unified2_log_limit.disabled = endis; document.iform.barnyard_archive_enable.disabled = endis; document.iform.barnyard_show_year.disabled = endis; document.iform.barnyard_dump_payload.disabled = endis; document.iform.barnyard_obfuscate_ip.disabled = endis; + document.iform.barnyard_sensor_id.disabled = endis; document.iform.barnyard_sensor_name.disabled = endis; document.iform.barnyard_mysql_enable.disabled = endis; document.iform.barnyard_dbhost.disabled = endis; diff --git a/config/suricata/suricata_generate_yaml.php b/config/suricata/suricata_generate_yaml.php index 0614adf8..115f0045 100644 --- a/config/suricata/suricata_generate_yaml.php +++ b/config/suricata/suricata_generate_yaml.php @@ -226,6 +226,16 @@ if ($suricatacfg['barnyard_enable'] == 'on') else $barnyard2_enabled = "no"; +if (isset($suricatacfg['unified2_log_limit'])) + $unified2_log_limit = "{$suricatacfg['unified2_log_limit']}mb"; +else + $unified2_log_limit = "32mb"; + +if (isset($suricatacfg['barnyard_sensor_id'])) + $unified2_sensor_id = $suricatacfg['barnyard_sensor_id']; +else + $unified2_sensor_id = "0"; + // Add interface-specific IP defrag settings if (!empty($suricatacfg['frag_memcap'])) $frag_memcap = $suricatacfg['frag_memcap']; diff --git a/config/suricata/suricata_yaml_template.inc b/config/suricata/suricata_yaml_template.inc index e62c48eb..07ada36e 100644 --- a/config/suricata/suricata_yaml_template.inc +++ b/config/suricata/suricata_yaml_template.inc @@ -40,9 +40,8 @@ outputs: - unified2-alert: enabled: {$barnyard2_enabled} filename: unified2.alert - limit: 32mb - # Sensor ID field of unified2 alerts. - sensor-id: 0 + limit: {$unified2_log_limit} + sensor-id: {$unified2_sensor_id} - http-log: enabled: {$http_log_enabled} -- cgit v1.2.3 From ca24f17206d370ac5b31ec5a5b535ad2599ecd1e Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 18 Mar 2014 12:44:38 -0400 Subject: Store last update time as timestamp instead of date string. --- .../suricata/suricata_check_for_rule_updates.php | 35 ++++++++-------------- config/suricata/suricata_download_updates.php | 2 +- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/config/suricata/suricata_check_for_rule_updates.php b/config/suricata/suricata_check_for_rule_updates.php index 4d159cdb..867a7efe 100644 --- a/config/suricata/suricata_check_for_rule_updates.php +++ b/config/suricata/suricata_check_for_rule_updates.php @@ -29,6 +29,7 @@ require_once("functions.inc"); require_once("service-utils.inc"); +require_once("guiconfig.inc"); require_once("/usr/local/pkg/suricata/suricata.inc"); global $g, $pkg_interface, $suricata_gui_include, $rebuild_rules; @@ -95,6 +96,9 @@ $snort_community_rules_filename = GPLV2_DNLD_FILENAME; $snort_community_rules_filename_md5 = GPLV2_DNLD_FILENAME . ".md5"; $snort_community_rules_url = GPLV2_DNLD_URL; +/* Mount the Suricata conf directories R/W so we can modify files there */ +conf_mount_rw(); + /* Set up Emerging Threats rules filenames and URL */ if ($etpro == "on") { $emergingthreats_filename = ETPRO_DNLD_FILENAME; @@ -137,24 +141,12 @@ function suricata_download_file_url($url, $file_out) { /* It provides logging of returned CURL errors. */ /************************************************/ - global $g, $config, $pkg_interface, $last_curl_error, $fout, $ch, $file_size, $downloaded, $first_progress_update; + global $g, $config, $pkg_interface, $last_curl_error, $fout, $ch, $file_size, $downloaded, $first_progress_update, $rfc2616; // Initialize required variables for the pfSense "read_body()" function $file_size = 1; $downloaded = 1; $first_progress_update = TRUE; - - - // Array of message strings for HTTP Response Codes - $http_resp_msg = array( 200 => "OK", 202 => "Accepted", 204 => "No Content", 205 => "Reset Content", - 206 => "Partial Content", 301 => "Moved Permanently", 302 => "Found", - 305 => "Use Proxy", 307 => "Temporary Redirect", 400 => "Bad Request", - 401 => "Unauthorized", 402 => "Payment Required", 403 => "Forbidden", - 404 => "Not Found", 405 => "Method Not Allowed", 407 => "Proxy Authentication Required", - 408 => "Request Timeout", 410 => "Gone", 500 => "Internal Server Error", - 501 => "Not Implemented", 502 => "Bad Gateway", 503 => "Service Unavailable", - 504 => "Gateway Timeout", 505 => "HTTP Version Not Supported" ); - $last_curl_error = ""; $fout = fopen($file_out, "wb"); @@ -204,8 +196,8 @@ function suricata_download_file_url($url, $file_out) { if ($rc === false) $last_curl_error = curl_error($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); - if (isset($http_resp_msg[$http_code])) - $last_curl_error = $http_resp_msg[$http_code]; + if (is_rfc2616_code($http_code)) + $last_curl_error = $rfc2616[$http_code]; curl_close($ch); fclose($fout); @@ -358,7 +350,6 @@ function suricata_fetch_new_rules($file_url, $file_dst, $file_md5, $desc = "") { } /* Start of main code */ -conf_mount_rw(); /* remove old $tmpfname files if present */ if (is_dir("{$tmpfname}")) @@ -430,10 +421,10 @@ if ($emergingthreats == 'on') { /* Remove the old Emerging Threats rules files */ $eto_prefix = ET_OPEN_FILE_PREFIX; $etpro_prefix = ET_PRO_FILE_PREFIX; - array_map('unlink', glob("{$suricatadir}rules/{$eto_prefix}*.rules")); - array_map('unlink', glob("{$suricatadir}rules/{$etpro_prefix}*.rules")); - array_map('unlink', glob("{$suricatadir}rules/{$eto_prefix}*ips.txt")); - array_map('unlink', glob("{$suricatadir}rules/{$etpro_prefix}*ips.txt")); + unlink_if_exists("{$suricatadir}rules/{$eto_prefix}*.rules"); + unlink_if_exists("{$suricatadir}rules/{$etpro_prefix}*.rules"); + unlink_if_exists("{$suricatadir}rules/{$eto_prefix}*ips.txt"); + unlink_if_exists("{$suricatadir}rules/{$etpro_prefix}*ips.txt"); // The code below renames ET files with a prefix, so we // skip renaming the Suricata default events rule files @@ -492,7 +483,7 @@ if ($snortdownload == 'on') { if (file_exists("{$tmpfname}/{$snort_filename}")) { /* Remove the old Snort rules files */ $vrt_prefix = VRT_FILE_PREFIX; - array_map('unlink', glob("{$suricatadir}rules/{$vrt_prefix}*.rules")); + unlink_if_exists("{$suricatadir}rules/{$vrt_prefix}*.rules"); if ($pkg_interface <> "console") { update_status(gettext("Extracting Snort VRT rules...")); @@ -724,7 +715,7 @@ if ($update_errors) $config['installedpackages']['suricata']['config'][0]['last_rule_upd_status'] = gettext("failed"); else $config['installedpackages']['suricata']['config'][0]['last_rule_upd_status'] = gettext("success"); -$config['installedpackages']['suricata']['config'][0]['last_rule_upd_time'] = gettext(date("M-d Y H:i")); +$config['installedpackages']['suricata']['config'][0]['last_rule_upd_time'] = time(); write_config(); ?> diff --git a/config/suricata/suricata_download_updates.php b/config/suricata/suricata_download_updates.php index a353b054..bae467e4 100644 --- a/config/suricata/suricata_download_updates.php +++ b/config/suricata/suricata_download_updates.php @@ -42,7 +42,7 @@ $snortcommunityrules = $config['installedpackages']['suricata']['config'][0]['sn /* Get last update information if available */ if (!empty($config['installedpackages']['suricata']['config'][0]['last_rule_upd_time'])) - $last_rule_upd_time = htmlspecialchars($config['installedpackages']['suricata']['config'][0]['last_rule_upd_time']); + $last_rule_upd_time = date('M-d Y H:i', $config['installedpackages']['suricata']['config'][0]['last_rule_upd_time']); else $last_rule_upd_time = gettext("Unknown"); if (!empty($config['installedpackages']['suricata']['config'][0]['last_rule_upd_status'])) -- cgit v1.2.3 From 28ff681374aa023f5f59fd044e8a094fcbea32ef Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 18 Mar 2014 12:47:58 -0400 Subject: Change CSS class from "listlr" to "listr" on table rows. --- config/suricata/suricata_alerts.php | 18 +++++++++--------- config/suricata/suricata_rules.php | 14 +++++++------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/config/suricata/suricata_alerts.php b/config/suricata/suricata_alerts.php index 8e1effa7..99241b7e 100644 --- a/config/suricata/suricata_alerts.php +++ b/config/suricata/suricata_alerts.php @@ -554,15 +554,15 @@ if (file_exists("/var/log/suricata/suricata_{$if_real}{$suricata_uuid}/alerts.lo $alert_class = $fields[6]; echo " - - - - - - - - - + + + + + + + + + \n"; diff --git a/config/suricata/suricata_rules.php b/config/suricata/suricata_rules.php index d532c6b1..567c29ea 100644 --- a/config/suricata/suricata_rules.php +++ b/config/suricata/suricata_rules.php @@ -615,27 +615,27 @@ if ($savemsg) { src=\"../themes/{$g['theme']}/images/icons/{$iconb}\" width=\"11\" height=\"11\" border=\"0\" title='{$title}' name=\"toggle[]\"/>{$textse} - - - - - - - - + -- cgit v1.2.3 From 172270f302e2cdb0e0b6f7581152bc32befa99bc Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 18 Mar 2014 12:51:13 -0400 Subject: Append time of day to GET request to work around browser caching. --- config/suricata/suricata_interfaces_edit.php | 1 + 1 file changed, 1 insertion(+) diff --git a/config/suricata/suricata_interfaces_edit.php b/config/suricata/suricata_interfaces_edit.php index 46d2aa1d..389566a2 100644 --- a/config/suricata/suricata_interfaces_edit.php +++ b/config/suricata/suricata_interfaces_edit.php @@ -890,6 +890,7 @@ function viewList(id, elemID, elemType) { } var url = "suricata_list_view.php?id=" + id + "&wlist="; url = url + getSelectedValue(elemID) + "&type=" + elemType; + url = url + "&time=" + new Date().getTime(); wopen(url, 'WhitelistViewer', 640, 480); } -- cgit v1.2.3 From a84a84bf31ed33c7e132b704186a56b77cc9148a Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Tue, 18 Mar 2014 14:18:37 -0300 Subject: Fixup URLs: - Replace http by https - *.pfsense.com -> *.pfsense.org - www.pfsense.org/packages/config -> packages.pfsense.org/packages/config --- config/Fit123/fit123.inc | 14 +- config/Fit123/fit123.xml | 6 +- config/anyterm/anyterm.inc | 2 +- config/anyterm/anyterm.xml | 4 +- .../apache_mod_security-dev/apache_virtualhost.xml | 30 ++-- config/apache_mod_security/apache_mod_security.inc | 14 +- config/apache_mod_security/apache_mod_security.xml | 6 +- .../apache_mod_security_view_logs.php | 2 +- config/apcupsd/apcupsd.xml | 8 +- config/apcupsd/apcupsd_mail.php | 2 +- config/apcupsd/apcupsd_status.php | 2 +- config/archive/assp.xml | 2 +- config/archive/clamsmtp.xml | 4 +- config/archive/doorman.xml | 2 +- config/archive/dspam/conf.default/config.xml | 8 +- config/archive/dspam/pkg/dspam-config.inc | 6 +- config/archive/dspam/pkg/dspam.xml | 60 ++++---- config/archive/dspam/pkg/p3scan-pf.xml | 12 +- config/archive/dspam/www/wizards/dspam_wizard.xml | 2 +- config/archive/freenas/pkg/freenas.xml | 166 ++++++++++----------- config/archive/frickin/frickin.xml | 4 +- config/archive/p3scan-pf/p3scan-pf.xml | 12 +- config/archive/p3scan.xml | 6 +- config/archive/portsentry/portsentry.xml | 2 +- config/archive/quagga/quagga.xml | 2 +- config/archive/sassassin.xml | 6 +- config/archive/viralator.xml | 4 +- config/arping/arping.xml | 2 +- config/arpwatch.xml | 4 +- config/asterisk/asterisk.xml | 12 +- config/autoconfigbackup/autoconfigbackup.xml | 14 +- config/avahi/avahi.xml | 10 +- config/backup/backup.xml | 8 +- config/bacula-client/bacula-client.xml | 6 +- config/bacula-client/bacula-client_view_config.php | 2 +- config/bandwidthd/bandwidthd.xml | 2 +- config/bind/bind.widget.php | 2 +- config/bind/bind.xml | 16 +- config/blinkled/blinkled.xml | 2 +- config/blinkled8/blinkled.xml | 4 +- config/bsdstats/bsdstats.xml | 2 +- config/checkmk-agent/checkmk.xml | 4 +- config/clamav.xml | 2 +- config/countryblock/countryblock.xml | 46 +++--- .../countryblock_IPBlocklist.widget.tmp | 2 +- config/countryblock/help.tmp | 2 +- config/cron/cron.xml | 10 +- config/dansguardian/dansguardian.xml | 54 +++---- config/dansguardian/dansguardian_about.php | 6 +- config/dashboard/dashboard.xml | 4 +- config/denyhosts/denyhosts.inc | 6 +- config/denyhosts/denyhosts.xml | 2 +- config/developers/developers.xml | 2 +- config/diag_states_pt/diag_new_states.xml | 2 +- config/dnsblacklist/dnsblacklist.xml | 8 +- config/dnsmasq-edns/dnsmasq-edns.xml | 4 +- config/dyntables/pkg/dyntables.xml | 10 +- config/filemgr/filemgr.xml | 66 ++++---- config/filer/filer.xml | 4 +- config/freeradius.xml | 6 +- config/freeradius2/freeradius.xml | 22 +-- config/freeradius2/freeradius_view_config.php | 2 +- config/freeradius2/freeradiusauthorizedmacs.xml | 22 +-- config/freeswitch/freeswitch.inc | 2 +- config/freeswitch/freeswitch.xml | 2 +- config/freeswitch_dev/freeswitch.xml | 2 +- config/freeswitch_dev/v_config.inc | 2 +- config/gwled/gwled.xml | 4 +- config/haproxy-devel/haproxy.inc | 2 +- config/haproxy-devel/haproxy.widget.php | 2 +- config/haproxy-devel/haproxy.xml | 28 ++-- config/haproxy-devel/haproxy_global.php | 2 +- config/haproxy-devel/haproxy_htmllist.inc | 2 +- config/haproxy-devel/haproxy_listeners.php | 2 +- config/haproxy-devel/haproxy_listeners_edit.php | 2 +- config/haproxy-devel/haproxy_pool_edit.php | 2 +- config/haproxy-devel/haproxy_pools.php | 2 +- config/haproxy-devel/haproxy_socketinfo.inc | 2 +- config/haproxy-devel/haproxy_stats.php | 2 +- config/haproxy-devel/haproxy_utils.inc | 2 +- config/haproxy-legacy/haproxy.inc | 2 +- config/haproxy-legacy/haproxy.xml | 18 +-- config/haproxy-legacy/haproxy_frontends.php | 2 +- config/haproxy-legacy/haproxy_frontends_edit.php | 2 +- config/haproxy-legacy/haproxy_global.php | 2 +- config/haproxy-legacy/haproxy_servers.php | 2 +- config/haproxy-legacy/haproxy_servers_edit.php | 2 +- config/haproxy-stable/haproxy.inc | 2 +- config/haproxy-stable/haproxy.xml | 14 +- config/haproxy-stable/haproxy_global.php | 2 +- config/haproxy-stable/haproxy_listeners.php | 2 +- config/haproxy-stable/haproxy_listeners_edit.php | 2 +- config/haproxy-stable/haproxy_pool_edit.php | 2 +- config/haproxy-stable/haproxy_pools.php | 2 +- config/haproxy/haproxy.inc | 2 +- config/haproxy/haproxy.xml | 14 +- config/haproxy/haproxy_global.php | 2 +- config/haproxy/haproxy_listeners.php | 2 +- config/haproxy/haproxy_listeners_edit.php | 2 +- config/haproxy/haproxy_pool_edit.php | 2 +- config/haproxy/haproxy_pools.php | 2 +- config/havp/havp.xml | 8 +- config/hula.xml | 2 +- config/igmpproxy/firewall_rules_edit.tmp | 2 +- config/igmpproxy/igmpproxy.xml | 10 +- config/imspector/imspector.inc | 2 +- config/imspector/imspector.xml | 14 +- config/imspector/imspector_acls.xml | 4 +- config/imspector/imspector_logs.php | 2 +- config/imspector/services_imspector_logs.php | 2 +- config/imspector/services_imspector_logs2.php | 2 +- config/ipblocklist/7/email.tmp | 2 +- config/ipblocklist/7/ipblocklist.tmp | 2 +- config/ipblocklist/7/ipblocklist.xml | 40 ++--- config/ipblocklist/7/ipblocklist_if.tmp | 2 +- config/ipblocklist/7/manual_add.tmp | 2 +- config/ipblocklist/7/settings.tmp | 2 +- config/ipblocklist/7/whitelist.tmp | 2 +- .../8/countryblock_IPBlocklist.widget.tmp | 2 +- config/ipblocklist/8/email.tmp | 2 +- config/ipblocklist/8/ipblocklist.tmp | 2 +- config/ipblocklist/8/ipblocklist.xml | 42 +++--- config/ipblocklist/8/ipblocklist_if.tmp | 2 +- config/ipblocklist/8/manual_add.tmp | 2 +- config/ipblocklist/8/settings.tmp | 2 +- config/ipblocklist/8/whitelist.tmp | 2 +- config/iperf.xml | 2 +- config/ipguard/ipguard.xml | 4 +- config/iprangealiases/iprangealiases.xml | 4 +- config/jail_template.xml | 4 +- config/jailctl.xml | 14 +- config/jailctl/jailctl.xml | 12 +- config/ladvd/ladvd.xml | 4 +- config/lcdproc-dev/lcdproc.xml | 8 +- config/lcdproc/lcdproc.xml | 14 +- config/lightsquid/lightsquid.xml | 12 +- config/mactovendor/bin/diag_arp.php_ | 2 +- config/mactovendor/mactovendor.xml | 12 +- config/mailreport/mailreport.xml | 20 +-- config/mailscanner/mailscanner.inc | 2 +- config/mailscanner/mailscanner.xml | 24 +-- config/mailscanner/mailscanner_about.php | 6 +- config/miniupnpd/miniupnpd.xml | 6 +- config/miniupnpd/sbin/miniupnpd | Bin 56202 -> 56203 bytes config/miniupnpd/status_upnp.php | 2 +- config/netio-newpkg.xml | 2 +- config/netio.xml | 2 +- config/nmap/nmap.inc | 2 +- config/nmap/nmap.xml | 2 +- config/notes/notes.xml | 2 +- config/nrpe2/nrpe2.xml | 2 +- config/ntop/ntop.xml | 2 +- config/nut/nut.inc | 2 +- config/nut/nut.xml | 4 +- config/nut/status_nut.php | 2 +- config/olsrd.xml | 2 +- config/onatproto/onatproto.xml | 4 +- config/open-vm-tools/open-vm-tools.xml | 2 +- config/open-vm-tools_2/open-vm-tools.xml | 2 +- config/openbgpd/openbgpd.xml | 10 +- config/openbgpd/openbgpd_raw.php | 2 +- config/openbgpd/openbgpd_status.php | 2 +- config/openospfd/openospfd.xml | 6 +- config/openospfd/openospfd_interfaces.xml | 2 +- .../openvpn-client-export.xml | 10 +- config/openvpn-status/openvpn-status.xml | 2 +- config/openvpn_tapfix_20x/openvpn_tapfix_20x.xml | 6 +- config/ovpnenhance/ovpnenhance.xml | 10 +- config/packetcapturefix/packetcapturefix.xml | 4 +- config/pf-blocker/pfBlocker.widget.php | 2 +- config/pf-blocker/pfblocker.xml | 28 ++-- config/pfstat.xml | 2 +- config/phpservice/phpservice.xml | 8 +- config/phpservice/phpservice_php.tmp | 2 +- config/phpsysinfo/phpsysinfo.xml | 4 +- config/postfix/postfix.php | 2 +- config/postfix/postfix.widget.php | 2 +- config/postfix/postfix.xml | 32 ++-- config/postfix/postfix_about.php | 6 +- config/postfix/postfix_queue.php | 2 +- config/postfix/postfix_search.php | 2 +- config/postfix/postfix_view_config.php | 2 +- config/pre2upgrade/pre2upgrade.php | 2 +- config/pre2upgrade/pre2upgrade.xml | 2 +- config/pure-ftpd.xml | 2 +- config/quagga_ospfd/quagga_ospfd.xml | 8 +- config/quagga_ospfd/quagga_ospfd_interfaces.xml | 2 +- config/rate/rate.xml | 6 +- config/routed/routed.xml | 4 +- config/rrd-summary/rrd-summary.xml | 2 +- config/sarg/sarg.xml | 24 +-- config/sarg/sarg_about.php | 6 +- config/sarg/sarg_frame.php | 2 +- config/sarg/sarg_realtime.php | 2 +- config/sarg/sarg_reports.php | 2 +- config/sarg/sarg_schedule.xml | 4 +- config/servicewatchdog/servicewatchdog.xml | 8 +- config/shellcmd/shellcmd.xml | 8 +- config/siproxd.xml | 6 +- config/snort-old/snort.xml | 36 ++--- config/snort-old/snort_check_for_rule_updates.php | 4 +- config/snort-old/snort_download_rules.php | 4 +- config/snort/snort.xml | 72 ++++----- config/spamd/spamd.xml | 16 +- config/squid-head/squid.xml | 16 +- config/squid/squid.xml | 22 +-- config/squid/squid_ng.inc | 2 +- config/squid/squid_ng.xml | 16 +- config/squid3/31/squid.xml | 44 +++--- config/squid3/31/squid_ng.inc | 2 +- config/squid3/31/squid_ng.xml | 16 +- config/squid3/33/squid.xml | 50 +++---- config/squid3/33/squid_ng.inc | 2 +- config/squid3/33/squid_ng.xml | 16 +- config/squid3/old/squid.xml | 20 +-- config/squid3/old/squid_ng.inc | 2 +- config/squid3/old/squid_ng.xml | 16 +- config/squidGuard-devel/squidguard.xml | 22 +-- config/squidGuard/squidguard.xml | 22 +-- config/sshdcond/sshdcond.xml | 4 +- config/sshterm/sshterm.xml | 4 +- config/states-summary/states-summary.xml | 2 +- config/strikeback/strikeback.xml | 22 +-- config/stunnel.xml | 4 +- config/sudo/sudo.xml | 2 +- config/suricata/suricata.xml | 66 ++++---- config/syslog-ng/syslog-ng.xml | 6 +- config/systempatches/systempatches.xml | 8 +- config/test_package/test_package.xml | 18 +-- config/tftp/tftp.xml | 4 +- config/tftp2/tftp.xml | 4 +- config/tinc/tinc.xml | 10 +- config/tinydns/tinydns.xml | 24 +-- config/tinydns/tinydns_status.php | 2 +- config/tinydns/tinydns_view_logs.php | 2 +- config/unbound/unbound.xml | 10 +- config/unbound/unbound_acls.php | 2 +- config/unbound/unbound_status.php | 2 +- config/urltables/urltables.xml | 4 +- config/varnish3/varnish.widget.php | 2 +- config/varnish3/varnish_backends.xml | 18 +-- config/varnish3/varnish_lb_directors.xml | 6 +- config/varnish3/varnish_view_config.php | 2 +- config/varnish3/varnishstat.php | 2 +- config/varnish64/varnish.widget.php | 2 +- config/varnish64/varnish_backends.xml | 16 +- config/varnish64/varnish_lb_directors.xml | 6 +- config/varnish64/varnish_view_config.php | 2 +- config/varnish64/varnishstat.php | 2 +- config/vhosts/vhosts.inc | 14 +- config/vhosts/vhosts.xml | 8 +- config/vhosts/vhosts_php.tmp | 2 +- config/vnstat/vnstat.xml | 4 +- config/vnstat2/vnstat2.xml | 62 ++++---- config/widescreen/bin/fbegin.inc_ | 14 +- config/widescreen/widescreen.xml | 22 +-- .../widget-antivirus/antivirus_status.widget.php | 2 +- config/widget-antivirus/widget-antivirus.xml | 6 +- config/widget-havp/widget-havp.xml | 12 +- config/widget-snort/widget-snort.xml | 6 +- config/zabbix2/zabbix2-agent.xml | 2 +- config/zabbix2/zabbix2-proxy.xml | 2 +- config/zebedee/zebedee.xml | 20 +-- config/zebedee/zebedee_del_key.php | 2 +- config/zebedee/zebedee_keys.php | 2 +- config/zebedee/zebedee_log.php | 2 +- config/zebedee/zebedee_view_config.php | 2 +- 267 files changed, 1162 insertions(+), 1162 deletions(-) diff --git a/config/Fit123/fit123.inc b/config/Fit123/fit123.inc index f8e5bab3..b1338df2 100644 --- a/config/Fit123/fit123.inc +++ b/config/Fit123/fit123.inc @@ -33,24 +33,24 @@ function Fit123_install_config() { //Greate directories and downloading files to them //Date exec("mkdir /usr/local/pkg/Fit123/date"); - exec("fetch -o /usr/local/pkg/Fit123/date/index.php http://www.pfsense.com/packages/config/Fit123/bin/date/index.abc"); + exec("fetch -o /usr/local/pkg/Fit123/date/index.php https://packages.pfsense.org/packages/config/Fit123/bin/date/index.abc"); //Captive Portal Add-On exec("mkdir /usr/local/pkg/Fit123/cpaddon"); - exec("fetch -o /usr/local/pkg/Fit123/cpaddon/filter.inc http://www.pfsense.com/packages/config/Fit123/bin/cpaddon/filter.inc"); - exec("fetch -o /usr/local/pkg/Fit123/cpaddon/services_captiveportal.php http://www.pfsense.com/packages/config/Fit123/bin/cpaddon/services_captiveportal.abc"); + exec("fetch -o /usr/local/pkg/Fit123/cpaddon/filter.inc https://packages.pfsense.org/packages/config/Fit123/bin/cpaddon/filter.inc"); + exec("fetch -o /usr/local/pkg/Fit123/cpaddon/services_captiveportal.php https://packages.pfsense.org/packages/config/Fit123/bin/cpaddon/services_captiveportal.abc"); //LTSP 3th network boot Option exec("mkdir /usr/local/pkg/Fit123/LTSP"); - exec("fetch -o /usr/local/pkg/Fit123/LTSP/ http://www.pfsense.com/packages/config/Fit123/bin/ltsp/services.inc"); - exec("fetch -o /usr/local/pkg/Fit123/LTSP/services_dhcp.php http://www.pfsense.com/packages/config/Fit123/bin/ltsp/services_dhcp.abc"); + exec("fetch -o /usr/local/pkg/Fit123/LTSP/ https://packages.pfsense.org/packages/config/Fit123/bin/ltsp/services.inc"); + exec("fetch -o /usr/local/pkg/Fit123/LTSP/services_dhcp.php https://packages.pfsense.org/packages/config/Fit123/bin/ltsp/services_dhcp.abc"); //AFC Reset's states after filter change exec("mkdir /usr/local/pkg/Fit123/afc"); - exec("fetch -o /usr/local/pkg/Fit123/afc/reset_states.sh http://www.pfsense.com/packages/config/Fit123/bin/afc/reset_states.sh"); + exec("fetch -o /usr/local/pkg/Fit123/afc/reset_states.sh https://packages.pfsense.org/packages/config/Fit123/bin/afc/reset_states.sh"); exec("chmod 744 /usr/local/pkg/Fit123/afc/reset_states.sh"); //DDNS exec("mkdir /usr/local/pkg/Fit123/ddns"); //DNS Server adds option for a 3th and 4th DNS Server exec("mkdir /usr/local/pkg/Fit123/dnssrv"); - exec("fetch -o /usr/local/pkg/Fit123/dnssrv/system.php http://www.pfsense.com/packages/config/Fit123/bin/dnssrv/system.abc"); + exec("fetch -o /usr/local/pkg/Fit123/dnssrv/system.php https://packages.pfsense.org/packages/config/Fit123/bin/dnssrv/system.abc"); conf_mount_ro(); config_unlock(); } diff --git a/config/Fit123/fit123.xml b/config/Fit123/fit123.xml index fc7f85c3..0ff202f9 100644 --- a/config/Fit123/fit123.xml +++ b/config/Fit123/fit123.xml @@ -34,17 +34,17 @@ /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/Fit123/fit123.inc + https://packages.pfsense.org/packages/config/Fit123/fit123.inc /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/Fit123/ddns.xml + https://packages.pfsense.org/packages/config/Fit123/ddns.xml /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/Fit123/cass.xml + https://packages.pfsense.org/packages/config/Fit123/cass.xml diff --git a/config/anyterm/anyterm.inc b/config/anyterm/anyterm.inc index 12cf7c2c..5ec4e5f1 100644 --- a/config/anyterm/anyterm.inc +++ b/config/anyterm/anyterm.inc @@ -42,7 +42,7 @@ function anyterm_install() { // Grab latest version of executablevi / $freebsdv=trim(`uname -r | cut -d'.' -f1`); - `fetch -q -o /usr/local/sbin/ http://www.pfsense.org/packages/config/anyterm/binaries{$freebsdv}/anytermd`; + `fetch -q -o /usr/local/sbin/ https://packages.pfsense.org/packages/config/anyterm/binaries{$freebsdv}/anytermd`; exec("chmod a+rx /usr/local/sbin/anytermd"); if($config['installedpackages']['anyterm']['config'][0]['username']) diff --git a/config/anyterm/anyterm.xml b/config/anyterm/anyterm.xml index e155696c..f3b78012 100644 --- a/config/anyterm/anyterm.xml +++ b/config/anyterm/anyterm.xml @@ -59,12 +59,12 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/anyterm/anyterm.inc + https://packages.pfsense.org/packages/config/anyterm/anyterm.inc /usr/local/www/ 077 - http://www.pfsense.com/packages/config/anyterm/access_anyterm.php + https://packages.pfsense.org/packages/config/anyterm/access_anyterm.php diff --git a/config/apache_mod_security-dev/apache_virtualhost.xml b/config/apache_mod_security-dev/apache_virtualhost.xml index 7851e683..488eb822 100644 --- a/config/apache_mod_security-dev/apache_virtualhost.xml +++ b/config/apache_mod_security-dev/apache_virtualhost.xml @@ -52,77 +52,77 @@ /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_mod_security.inc + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_mod_security.inc /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_mod_security.template + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_mod_security.template /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_mod_security_groups.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_mod_security_groups.xml /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_mod_security_settings.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_mod_security_settings.xml /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_mod_security_view_logs.php + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_mod_security_view_logs.php /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache.template + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache.template /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_balancer.template + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_balancer.template /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_balancer.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_balancer.xml /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_logs_data.php + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_logs_data.php /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_mod_security_manipulation.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_mod_security_manipulation.xml /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_mod_security_sync.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_mod_security_sync.xml /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_settings.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_settings.xml /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security-dev/apache_view_logs.php + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_view_logs.php /usr/local/www/shortcuts/ 0755 - http://www.pfsense.org/packages/config/apache_mod_security-dev/pkg_apache.inc + https://packages.pfsense.org/packages/config/apache_mod_security-dev/pkg_apache.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/apache_mod_security-dev/apache_location.xml + https://packages.pfsense.org/packages/config/apache_mod_security-dev/apache_location.xml diff --git a/config/apache_mod_security/apache_mod_security.inc b/config/apache_mod_security/apache_mod_security.inc index af8159bf..8475ca50 100644 --- a/config/apache_mod_security/apache_mod_security.inc +++ b/config/apache_mod_security/apache_mod_security.inc @@ -105,19 +105,19 @@ function apache_mod_security_resync() { global $config, $g; apache_mod_security_install(); if(!file_exists(rules_directory . "/10_asl_rules.conf")) - exec("/usr/bin/fetch -q -o " . rules_directory . "/10_asl_rules.conf http://www.pfsense.com/packages/config/apache_mod_security/rules/10_asl_rules.conf"); + exec("/usr/bin/fetch -q -o " . rules_directory . "/10_asl_rules.conf https://packages.pfsense.org/packages/config/apache_mod_security/rules/10_asl_rules.conf"); if(!file_exists(rules_directory . "/a_exclude.conf")) - exec("/usr/bin/fetch -q -o " . rules_directory . "/a_exclude.conf http://www.pfsense.com/packages/config/apache_mod_security/rules/a_exclude.conf"); + exec("/usr/bin/fetch -q -o " . rules_directory . "/a_exclude.conf https://packages.pfsense.org/packages/config/apache_mod_security/rules/a_exclude.conf"); if(!file_exists(rules_directory . "/blacklist.conf")) - exec("/usr/bin/fetch -q -o " . rules_directory . "/blacklist.conf http://www.pfsense.com/packages/config/apache_mod_security/rules/blacklist.conf"); + exec("/usr/bin/fetch -q -o " . rules_directory . "/blacklist.conf https://packages.pfsense.org/packages/config/apache_mod_security/rules/blacklist.conf"); if(!file_exists(rules_directory . "/default.conf")) - exec("/usr/bin/fetch -q -o " . rules_directory . "/rules/default.conf http://www.pfsense.com/packages/config/apache_mod_security/rules/default.conf"); + exec("/usr/bin/fetch -q -o " . rules_directory . "/rules/default.conf https://packages.pfsense.org/packages/config/apache_mod_security/rules/default.conf"); if(!file_exists(rules_directory . "/recons.conf")) - exec("/usr/bin/fetch -q -o " . rules_directory . "/recons.conf http://www.pfsense.com/packages/config/apache_mod_security/rules/recons.conf"); + exec("/usr/bin/fetch -q -o " . rules_directory . "/recons.conf https://packages.pfsense.org/packages/config/apache_mod_security/rules/recons.conf"); if(!file_exists(rules_directory . "/rootkits.conf")) - exec("/usr/bin/fetch -q -o " . rules_directory . "/rootkits.conf http://www.pfsense.com/packages/config/apache_mod_security/rules/rootkits.conf"); + exec("/usr/bin/fetch -q -o " . rules_directory . "/rootkits.conf https://packages.pfsense.org/packages/config/apache_mod_security/rules/rootkits.conf"); if(!file_exists(rules_directory . "/useragents.conf")) - exec("/usr/bin/fetch -q -o " . rules_directory . "/useragents.conf http://www.pfsense.com/packages/config/apache_mod_security/rules/useragents.conf"); + exec("/usr/bin/fetch -q -o " . rules_directory . "/useragents.conf https://packages.pfsense.org/packages/config/apache_mod_security/rules/useragents.conf"); apache_mod_security_checkconfig(); apache_mod_security_restart(); } diff --git a/config/apache_mod_security/apache_mod_security.xml b/config/apache_mod_security/apache_mod_security.xml index c42ebddf..0b973689 100644 --- a/config/apache_mod_security/apache_mod_security.xml +++ b/config/apache_mod_security/apache_mod_security.xml @@ -50,17 +50,17 @@ /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security/apache_mod_security.inc + https://packages.pfsense.org/packages/config/apache_mod_security/apache_mod_security.inc /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security/apache_mod_security_settings.xml + https://packages.pfsense.org/packages/config/apache_mod_security/apache_mod_security_settings.xml /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/apache_mod_security/apache_mod_security_view_logs.php + https://packages.pfsense.org/packages/config/apache_mod_security/apache_mod_security_view_logs.php diff --git a/config/apache_mod_security/apache_mod_security_view_logs.php b/config/apache_mod_security/apache_mod_security_view_logs.php index 921b44db..0218ac46 100644 --- a/config/apache_mod_security/apache_mod_security_view_logs.php +++ b/config/apache_mod_security/apache_mod_security_view_logs.php @@ -2,7 +2,7 @@ /* $Id$ */ /* apache_mod_security_view_logs.php - part of pfSense (http://www.pfsense.com/) + part of pfSense (https://www.pfsense.org/) Copyright (C) 2009, 2010 Scott Ullrich All rights reserved. diff --git a/config/apcupsd/apcupsd.xml b/config/apcupsd/apcupsd.xml index 85148b2b..e69344fc 100644 --- a/config/apcupsd/apcupsd.xml +++ b/config/apcupsd/apcupsd.xml @@ -46,22 +46,22 @@ Apcupsd has been deleted. /usr/local/etc/rc.d/apcupsd.sh restart - http://www.pfsense.org/packages/config/apcupsd/apcupsd.inc + https://packages.pfsense.org/packages/config/apcupsd/apcupsd.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/apcupsd/apcupsd_status.php + https://packages.pfsense.org/packages/config/apcupsd/apcupsd_status.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/apcupsd/apcupsd.conf.php + https://packages.pfsense.org/packages/config/apcupsd/apcupsd.conf.php /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/apcupsd/apcupsd_mail.php + https://packages.pfsense.org/packages/config/apcupsd/apcupsd_mail.php /usr/local/pkg/ 0755 diff --git a/config/apcupsd/apcupsd_mail.php b/config/apcupsd/apcupsd_mail.php index c9462aac..d5b97f92 100755 --- a/config/apcupsd/apcupsd_mail.php +++ b/config/apcupsd/apcupsd_mail.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/apcupsd/apcupsd_status.php b/config/apcupsd/apcupsd_status.php index e465f62c..8450bb6d 100755 --- a/config/apcupsd/apcupsd_status.php +++ b/config/apcupsd/apcupsd_status.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/archive/assp.xml b/config/archive/assp.xml index 94f35b2e..626b2438 100644 --- a/config/archive/assp.xml +++ b/config/archive/assp.xml @@ -61,7 +61,7 @@ perl - http://www.pfsense.com/packages/All/assp-1.0.tgz + https://www.pfsense.org/packages/All/assp-1.0.tgz $start = "/usr/bin/perl /usr/local/assp/assp.pl &\necho $! > /var/run/assp.pid"; diff --git a/config/archive/clamsmtp.xml b/config/archive/clamsmtp.xml index 16bb5d6d..4f2bf443 100644 --- a/config/archive/clamsmtp.xml +++ b/config/archive/clamsmtp.xml @@ -56,12 +56,12 @@ SMTP virus scanner. - http://www.pfsense.org/packages/config/clamsmtp.inc + https://packages.pfsense.org/packages/config/clamsmtp.inc /usr/local/bin/ 0755 - http://www.pfsense.org/packages/All/clamsmtpd + https://www.pfsense.org/packages/All/clamsmtpd clamsmtp_install_command(); diff --git a/config/archive/doorman.xml b/config/archive/doorman.xml index 64f35087..c2a5f18e 100644 --- a/config/archive/doorman.xml +++ b/config/archive/doorman.xml @@ -74,7 +74,7 @@ installedpackages->package->$packagename->configuration->settings - http://www.pfsense.com/packages/config/doormanusers.xml + https://packages.pfsense.org/packages/config/doormanusers.xml diff --git a/config/archive/dspam/conf.default/config.xml b/config/archive/dspam/conf.default/config.xml index 4b33662e..9aabd08e 100644 --- a/config/archive/dspam/conf.default/config.xml +++ b/config/archive/dspam/conf.default/config.xml @@ -849,9 +849,9 @@ 0.1 ALPHA fernando@netfilter.com.br - http://www.pfsense.com/packages/All/ + https://www.pfsense.org/packages/All/ p3scan-pf-2.3.2.tbz - http://www.pfsense.org/packages/config/p3scan-pf/p3scan-pf.xml + https://packages.pfsense.org/packages/config/p3scan-pf/p3scan-pf.xml p3scan-pf.xml @@ -898,9 +898,9 @@ 0.1 ALPHA me@daniel.stefan.haischt.name - http://www.pfsense.com/packages/All/ + https://www.pfsense.org/packages/All/ sshtools-0.2.2.tbz - http://www.pfsense.org/packages/config/sshterm/sshterm.xml + https://packages.pfsense.org/packages/config/sshterm/sshterm.xml sshterm.xml diff --git a/config/archive/dspam/pkg/dspam-config.inc b/config/archive/dspam/pkg/dspam-config.inc index 211bee51..bffae808 100644 --- a/config/archive/dspam/pkg/dspam-config.inc +++ b/config/archive/dspam/pkg/dspam-config.inc @@ -27,14 +27,14 @@ $CONFIG = array('DSPAM_HOME' => '/var/db/dspam', 'AUTODETECT' => 1, 'OPENSOURCE' => 0, /* Is there a website which provides dedicated infos? */ - 'PACKAGE_WEBSITE' => 'http://www.pfsense.com/', + 'PACKAGE_WEBSITE' => 'https://www.pfsense.org/', /* Is there a forum which provides dedicated infos? */ - 'PACKAGE_FORUM' => 'http://www.pfsense.com/', + 'PACKAGE_FORUM' => 'https://www.pfsense.org/', /* * Is there a issue tracker which allows to fill a * support request or a bug report? */ - 'PACKAGE_TRACKER' => 'http://www.pfsense.com/', + 'PACKAGE_TRACKER' => 'https://www.pfsense.org/', /* 'DATE_FORMAT' => '%d.%m.%Y %H:%M' */ 'DATE_FORMAT' => '%b %d %H:%M' ); diff --git a/config/archive/dspam/pkg/dspam.xml b/config/archive/dspam/pkg/dspam.xml index 59740ae1..54373ffa 100644 --- a/config/archive/dspam/pkg/dspam.xml +++ b/config/archive/dspam/pkg/dspam.xml @@ -104,32 +104,32 @@ /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam.php + https://packages.pfsense.org/packages/config/dspam/www/dspam.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-perf.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-perf.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-admin.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-admin.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-admin-graph.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-admin-graph.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-admin-prefs.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-admin-prefs.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-admin-stats.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-admin-stats.php /usr/local/pkg/ @@ -199,32 +199,32 @@ /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-prefs.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-prefs.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-quarantine.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-quarantine.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-analysis.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-analysis.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-analysis-graph.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-analysis-graph.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-hfragment.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-hfragment.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/www/dspam-history.php + https://packages.pfsense.org/packages/config/dspam/www/dspam-history.php @@ -235,93 +235,93 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/dspam.inc + https://packages.pfsense.org/packages/config/dspam/pkg/dspam.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/dspam-config.inc + https://packages.pfsense.org/packages/config/dspam/pkg/dspam-config.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/dspam-guifunc.inc + https://packages.pfsense.org/packages/config/dspam/pkg/dspam-guifunc.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/dspam-pkgfunc.inc + https://packages.pfsense.org/packages/config/dspam/pkg/dspam-pkgfunc.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/dspam-utilfunc.inc + https://packages.pfsense.org/packages/config/dspam/pkg/dspam-utilfunc.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/000.mysql.sh + https://packages.pfsense.org/packages/config/dspam/pkg/000.mysql.sh /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/010.clamav-clamd.sh + https://packages.pfsense.org/packages/config/dspam/pkg/010.clamav-clamd.sh /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/020.clamav-freshclam.sh + https://packages.pfsense.org/packages/config/dspam/pkg/020.clamav-freshclam.sh /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/030.p3scan.sh + https://packages.pfsense.org/packages/config/dspam/pkg/030.p3scan.sh /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/clamd.conf + https://packages.pfsense.org/packages/config/dspam/pkg/clamd.conf /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/default.prefs.sample + https://packages.pfsense.org/packages/config/dspam/pkg/default.prefs.sample /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/freshclam.conf + https://packages.pfsense.org/packages/config/dspam/pkg/freshclam.conf /usr/local/www/wizards/ 0755 - http://www.pfsense.com/packages/config/dspam/www/wizards/dspam_wizard.xml + https://packages.pfsense.org/packages/config/dspam/www/wizards/dspam_wizard.xml /usr/local/www/wizards/ 0755 - http://www.pfsense.com/packages/config/dspam/www/wizards/dspam-lda-proxy.png + https://packages.pfsense.org/packages/config/dspam/www/wizards/dspam-lda-proxy.png /usr/local/www/wizards/ 0755 - http://www.pfsense.com/packages/config/dspam/www/wizards/dspam-pop-proxy.png + https://packages.pfsense.org/packages/config/dspam/www/wizards/dspam-pop-proxy.png /usr/local/www/wizards/ 0755 - http://www.pfsense.com/packages/config/dspam/www/wizards/dspam-smtp-relay.png + https://packages.pfsense.org/packages/config/dspam/www/wizards/dspam-smtp-relay.png /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/dspam/pkg/verdana.ttf + https://packages.pfsense.org/packages/config/dspam/pkg/verdana.ttf /usr/local/www/themes/metallic/ 0755 - http://www.pfsense.com/packages/config/dspam/www/themes/metallic/dspam.css + https://packages.pfsense.org/packages/config/dspam/www/themes/metallic/dspam.css /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gmirror.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gmirror.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gmirror_edit.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gmirror_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gmirror_infos.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gmirror_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gmirror_tools.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gmirror_tools.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gvinum.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gvinum.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gvinum_edit.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gvinum_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gvinum_infos.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gvinum_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gvinum_tools.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gvinum_tools.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gconcat.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gconcat.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gconcat_edit.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gconcat_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gconcat_infos.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gconcat_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gconcat_tools.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gconcat_tools.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gstripe.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gstripe.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gstripe_edit.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gstripe_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gstripe_infos.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gstripe_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_gstripe_tools.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_gstripe_tools.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_graid5.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_graid5.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_graid5_edit.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_graid5_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_graid5_infos.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_graid5_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_raid_graid5_tools.php + https://packages.pfsense.org/packages/config/freenas/www/disks_raid_graid5_tools.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_mount.php + https://packages.pfsense.org/packages/config/freenas/www/disks_mount.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_mount_edit.php + https://packages.pfsense.org/packages/config/freenas/www/disks_mount_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/disks_mount_tools.php + https://packages.pfsense.org/packages/config/freenas/www/disks_mount_tools.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_ad_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_ad_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_ataidle_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_ataidle_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_disk_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_disk_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_iscsi_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_iscsi_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_mounts_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_mounts_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_part_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_part_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_raid_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_raid_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_smart_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_smart_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_space_infos.php + https://packages.pfsense.org/packages/config/freenas/www/diag_space_infos.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_fn_logs_daemon.php + https://packages.pfsense.org/packages/config/freenas/www/diag_fn_logs_daemon.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_fn_logs_ftp.php + https://packages.pfsense.org/packages/config/freenas/www/diag_fn_logs_ftp.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_fn_logs_rsyncd.php + https://packages.pfsense.org/packages/config/freenas/www/diag_fn_logs_rsyncd.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_fn_logs_samba.php + https://packages.pfsense.org/packages/config/freenas/www/diag_fn_logs_samba.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_fn_logs_settings.php + https://packages.pfsense.org/packages/config/freenas/www/diag_fn_logs_settings.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_fn_logs_smartd.php + https://packages.pfsense.org/packages/config/freenas/www/diag_fn_logs_smartd.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/diag_fn_logs_sshd.php + https://packages.pfsense.org/packages/config/freenas/www/diag_fn_logs_sshd.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_afp.php + https://packages.pfsense.org/packages/config/freenas/www/services_afp.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_ftp.php + https://packages.pfsense.org/packages/config/freenas/www/services_ftp.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_nfs.php + https://packages.pfsense.org/packages/config/freenas/www/services_nfs.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_nfs_export.php + https://packages.pfsense.org/packages/config/freenas/www/services_nfs_export.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_nfs_export_edit.php + https://packages.pfsense.org/packages/config/freenas/www/services_nfs_export_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_rsyncd.php + https://packages.pfsense.org/packages/config/freenas/www/services_rsyncd.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_rsyncd_client.php + https://packages.pfsense.org/packages/config/freenas/www/services_rsyncd_client.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_rsyncd_local.php + https://packages.pfsense.org/packages/config/freenas/www/services_rsyncd_local.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_samba.php + https://packages.pfsense.org/packages/config/freenas/www/services_samba.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_samba_share.php + https://packages.pfsense.org/packages/config/freenas/www/services_samba_share.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_samba_edit.php + https://packages.pfsense.org/packages/config/freenas/www/services_samba_edit.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/services_unison.php + https://packages.pfsense.org/packages/config/freenas/www/services_unison.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/freenas/www/status_disks.php + https://packages.pfsense.org/packages/config/freenas/www/status_disks.php /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas_disks.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas_disks.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas_config.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas_config.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas_functions.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas_functions.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas_guiconfig.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas_guiconfig.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas_services.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas_services.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas_utils.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas_utils.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/freenas_system.inc + https://packages.pfsense.org/packages/config/freenas/pkg/freenas_system.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/pkg/rc.freenas + https://packages.pfsense.org/packages/config/freenas/pkg/rc.freenas /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/iscsi_initiator.ko + https://packages.pfsense.org/packages/config/freenas/bin/iscsi_initiator.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/ext2fs.ko + https://packages.pfsense.org/packages/config/freenas/bin/ext2fs.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/geom_concat.ko + https://packages.pfsense.org/packages/config/freenas/bin/geom_concat.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/geom_gpt.ko + https://packages.pfsense.org/packages/config/freenas/bin/geom_gpt.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/geom_mirror.ko + https://packages.pfsense.org/packages/config/freenas/bin/geom_mirror.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/geom_stripe.ko + https://packages.pfsense.org/packages/config/freenas/bin/geom_stripe.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/geom_vinum.ko + https://packages.pfsense.org/packages/config/freenas/bin/geom_vinum.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/kernel.gz + https://packages.pfsense.org/packages/config/freenas/bin/kernel.gz /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/ntfs.ko + https://packages.pfsense.org/packages/config/freenas/bin/ntfs.ko /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/iscontrol + https://packages.pfsense.org/packages/config/freenas/bin/iscontrol /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/mountd + https://packages.pfsense.org/packages/config/freenas/bin/mountd /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/nfsd + https://packages.pfsense.org/packages/config/freenas/bin/nfsd /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/rpcbind + https://packages.pfsense.org/packages/config/freenas/bin/rpcbind /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/rpc.lockd + https://packages.pfsense.org/packages/config/freenas/bin/rpc.lockd /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/freenas/bin/rpc.statd + https://packages.pfsense.org/packages/config/freenas/bin/rpc.statd -Please see wiki for help or the Forum +Please see wiki for help or the Forum diff --git a/config/cron/cron.xml b/config/cron/cron.xml index 71e524b3..3376d9e0 100644 --- a/config/cron/cron.xml +++ b/config/cron/cron.xml @@ -68,27 +68,27 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/cron/cron.xml + https://packages.pfsense.org/packages/config/cron/cron.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/cron/cron.inc + https://packages.pfsense.org/packages/config/cron/cron.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/cron/cron.tmp + https://packages.pfsense.org/packages/config/cron/cron.tmp /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/cron/cron_edit.tmp + https://packages.pfsense.org/packages/config/cron/cron_edit.tmp /usr/local/www/packages/cron/ 0755 - http://www.pfsense.com/packages/config/cron/index.php + https://packages.pfsense.org/packages/config/cron/index.php diff --git a/config/dansguardian/dansguardian.xml b/config/dansguardian/dansguardian.xml index e0cb58fd..55860775 100644 --- a/config/dansguardian/dansguardian.xml +++ b/config/dansguardian/dansguardian.xml @@ -59,137 +59,137 @@ - http://www.pfsense.org/packages/config/dansguardian/dansguardian.inc + https://packages.pfsense.org/packages/config/dansguardian/dansguardian.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian.php + https://packages.pfsense.org/packages/config/dansguardian/dansguardian.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_ldap.php + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_ldap.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_ldap.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_ldap.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_limits.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_limits.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_ips_header.template + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_ips_header.template /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_users_header.template + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_users_header.template /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_users_footer.template + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_users_footer.template /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_about.php + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_about.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_config.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_config.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_sync.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardianfx.conf.template + https://packages.pfsense.org/packages/config/dansguardian/dansguardianfx.conf.template /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_url_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_url_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_site_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_site_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_search_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_search_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_pics_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_pics_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_phrase_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_phrase_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_log.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_log.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_header_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_header_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_groups.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_groups.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_file_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_file_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_content_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_content_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_blacklist.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_blacklist.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_antivirus_acl.xml + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_antivirus_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian.conf.template + https://packages.pfsense.org/packages/config/dansguardian/dansguardian.conf.template /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/icapscan.conf.template + https://packages.pfsense.org/packages/config/dansguardian/icapscan.conf.template /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/dansguardian/dansguardian_rc.template + https://packages.pfsense.org/packages/config/dansguardian/dansguardian_rc.template /usr/local/pkg/ 0755 diff --git a/config/dansguardian/dansguardian_about.php b/config/dansguardian/dansguardian_about.php index b7834281..95f1245b 100755 --- a/config/dansguardian/dansguardian_about.php +++ b/config/dansguardian/dansguardian_about.php @@ -1,7 +1,7 @@ All rights reserved. @@ -93,11 +93,11 @@ include("head.inc"); - + -
    {$sid} {$supplink}{$protocol}{$source}{$destination}{$protocol}{$source}{$destination}{$flowbits}{$message}{$message}
    Per server pass thru - ' size="64" /> + ' size="64" />
    NOTE: paste text into this box that you would like to pass thru. Applied to each 'server' line.
    Backend pass thru - +
    NOTE: paste text into this box that you would like to pass thru. Applied to the backend section.
    + +  
    + +
    @@ -286,12 +313,20 @@ include_once("head.inc"); /> " . gettext("Not Checked") . ""; ?>
    + +  " . gettext("0.") . ""; ?> +
    -   +  
    {$alert_date}
    {$alert_time}
    {$alert_priority}{$alert_proto}{$alert_class}{$alert_ip_src}{$alert_src_p}{$alert_ip_dst}{$alert_dst_p}{$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link}
    {$alert_date}
    {$alert_time}
    {$alert_priority}{$alert_proto}{$alert_class}{$alert_ip_src}{$alert_src_p}{$alert_ip_dst}{$alert_dst_p}{$alert_sid_str}
    {$sidsupplink}  {$sid_dsbl_link}
    {$alert_descr}
    + {$textss}{$gid}{$textse} + {$textss}{$sid}{$textse} + {$textss}{$protocol}{$textse} + {$srcspan}{$source} + {$srcprtspan}{$source_port} + {$dstspan}{$destination} + {$dstprtspan}{$destination_port} -- cgit v1.2.3 From 66712d6f4db59a164d74b35d5ae030d79bb86d7d Mon Sep 17 00:00:00 2001 From: bmeeks8 Date: Tue, 18 Mar 2014 12:48:55 -0400 Subject: Remove redundant JavaScript variable declarations. --- config/suricata/suricata_alerts.widget.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/config/suricata/suricata_alerts.widget.php b/config/suricata/suricata_alerts.widget.php index 6c30ecdc..21fad03d 100644 --- a/config/suricata/suricata_alerts.widget.php +++ b/config/suricata/suricata_alerts.widget.php @@ -173,13 +173,6 @@ function suricata_widget_get_alerts() { /* display the result */ ?> - -  
    Marcello Coutinho

    ");?>
    Marcello Coutinho

    ");?>
    donate to the pfSense project.

    +
    donate to the pfSense project.

    If you want your donation to go to this package developer, make a note on the donation forwarding it to me.

    ");?>
    diff --git a/config/dashboard/dashboard.xml b/config/dashboard/dashboard.xml index c09a2eda..5d8b59fc 100644 --- a/config/dashboard/dashboard.xml +++ b/config/dashboard/dashboard.xml @@ -52,12 +52,12 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/dashboard/dashboard.inc + https://packages.pfsense.org/packages/config/dashboard/dashboard.inc /usr/local/pkg/ 077 - http://files.pfsense.org/packages/widgets.tgz + https://files.pfsense.org/packages/widgets.tgz dashboard_install(); diff --git a/config/denyhosts/denyhosts.inc b/config/denyhosts/denyhosts.inc index 8a862e01..37209715 100644 --- a/config/denyhosts/denyhosts.inc +++ b/config/denyhosts/denyhosts.inc @@ -38,7 +38,7 @@ function denyhosts_sync_package() } -// bounty: http://forum.pfsense.org/index.php/topic,15791.0/topicseen.html +// bounty: https://forum.pfsense.org/index.php/topic,15791.0/topicseen.html // pkg_add -r denyhosts // python /usr/local/share/denyhosts/denyhosts.py –file=/var/log/auth.log // /var/run/denyhosts.pid @@ -60,7 +60,7 @@ function denyhosts_install_command() exec("mkdir /usr/local/www/packages/denyhosts/"); } - exec("pkg_add -r http://files.pfsense.com/packages/security/denyhosts-2.5.tbz"); + exec("pkg_add -r https://files.pfsense.org/packages/security/denyhosts-2.5.tbz"); //misc files if (!is_dir('/usr/local/www/edit_area/')) { @@ -94,7 +94,7 @@ function denyhosts_install_command() exec ('touch /var/log/denyhosts'); } - $download_path = 'http://www.pfsense.com/packages/config/denyhosts/'; + $download_path = 'https://packages.pfsense.org/packages/config/denyhosts/'; //rename PHP files from .tmp to .php chdir('/tmp/'); diff --git a/config/denyhosts/denyhosts.xml b/config/denyhosts/denyhosts.xml index 53658a7a..720f1b95 100644 --- a/config/denyhosts/denyhosts.xml +++ b/config/denyhosts/denyhosts.xml @@ -68,7 +68,7 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/denyhosts/denyhosts.inc + https://packages.pfsense.org/packages/config/denyhosts/denyhosts.inc diff --git a/config/developers/developers.xml b/config/developers/developers.xml index b6850d54..8b7ddb90 100644 --- a/config/developers/developers.xml +++ b/config/developers/developers.xml @@ -51,7 +51,7 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/~sullrich/extra/developer_pkg.tgz + https://www.pfsense.org/~sullrich/extra/developer_pkg.tgz update_status("Extracing Developers package contents... This will take a bit!"); diff --git a/config/diag_states_pt/diag_new_states.xml b/config/diag_states_pt/diag_new_states.xml index b8ea9dc3..0e4e6c7d 100644 --- a/config/diag_states_pt/diag_new_states.xml +++ b/config/diag_states_pt/diag_new_states.xml @@ -57,7 +57,7 @@ /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/diag_states_pt/diag_new_states.php + https://packages.pfsense.org/packages/config/diag_states_pt/diag_new_states.php mwexec("rm /usr/local/www/diag_new_states.php"); diff --git a/config/dnsblacklist/dnsblacklist.xml b/config/dnsblacklist/dnsblacklist.xml index 52c59b35..75314810 100644 --- a/config/dnsblacklist/dnsblacklist.xml +++ b/config/dnsblacklist/dnsblacklist.xml @@ -62,22 +62,22 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dnsblacklist/dnsblacklist.xml + https://packages.pfsense.org/packages/config/dnsblacklist/dnsblacklist.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dnsblacklist/dnsblacklist.inc + https://packages.pfsense.org/packages/config/dnsblacklist/dnsblacklist.inc /tmp/ 0755 - http://www.pfsense.com/packages/config/dnsblacklist/dnsblacklist.tmp + https://packages.pfsense.org/packages/config/dnsblacklist/dnsblacklist.tmp /tmp/ 0755 - http://files.pfsense.org/packages/blacklists.tar.gz + https://files.pfsense.org/packages/blacklists.tar.gz diff --git a/config/dnsmasq-edns/dnsmasq-edns.xml b/config/dnsmasq-edns/dnsmasq-edns.xml index 35bf2901..c63c828e 100644 --- a/config/dnsmasq-edns/dnsmasq-edns.xml +++ b/config/dnsmasq-edns/dnsmasq-edns.xml @@ -52,12 +52,12 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/dnsmasq-edns/dnsmasq-edns.inc + https://packages.pfsense.org/packages/config/dnsmasq-edns/dnsmasq-edns.inc /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/dnsmasq-edns/dnsmasq-edns.patch + https://packages.pfsense.org/packages/config/dnsmasq-edns/dnsmasq-edns.patch dnsmasq_edns_install(); diff --git a/config/dyntables/pkg/dyntables.xml b/config/dyntables/pkg/dyntables.xml index 8a249966..8047b80b 100644 --- a/config/dyntables/pkg/dyntables.xml +++ b/config/dyntables/pkg/dyntables.xml @@ -83,7 +83,7 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/dyntables/www/php/diag_dhcp_leases.php + https://packages.pfsense.org/packages/config/dyntables/www/php/diag_dhcp_leases.php - http://www.pfsense.com/packages/config/havp/havp_avset.xml + https://packages.pfsense.org/packages/config/havp/havp_avset.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/havp/antivirus.php + https://packages.pfsense.org/packages/config/havp/antivirus.php /usr/local/www/ 0755 diff --git a/config/hula.xml b/config/hula.xml index 0270e8c5..fa3d7273 100644 --- a/config/hula.xml +++ b/config/hula.xml @@ -72,7 +72,7 @@ - http://www.pfsense.com/packages/All/hula.tgz + https://www.pfsense.org/packages/All/hula.tgz diff --git a/config/onatproto/onatproto.xml b/config/onatproto/onatproto.xml index e4e4e8b9..46dd72c7 100644 --- a/config/onatproto/onatproto.xml +++ b/config/onatproto/onatproto.xml @@ -52,12 +52,12 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/onatproto/onatproto.inc + https://packages.pfsense.org/packages/config/onatproto/onatproto.inc /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/onatproto/onatproto.patch + https://packages.pfsense.org/packages/config/onatproto/onatproto.patch onatproto_install(); diff --git a/config/open-vm-tools/open-vm-tools.xml b/config/open-vm-tools/open-vm-tools.xml index 40a8fc51..c705f0e9 100644 --- a/config/open-vm-tools/open-vm-tools.xml +++ b/config/open-vm-tools/open-vm-tools.xml @@ -47,7 +47,7 @@ /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/open-vm-tools/open-vm-tools.inc + https://packages.pfsense.org/packages/config/open-vm-tools/open-vm-tools.inc diff --git a/config/open-vm-tools_2/open-vm-tools.xml b/config/open-vm-tools_2/open-vm-tools.xml index ad2b465b..02247242 100644 --- a/config/open-vm-tools_2/open-vm-tools.xml +++ b/config/open-vm-tools_2/open-vm-tools.xml @@ -47,7 +47,7 @@ /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/open-vm-tools_2/open-vm-tools.inc + https://packages.pfsense.org/packages/config/open-vm-tools_2/open-vm-tools.inc diff --git a/config/openbgpd/openbgpd.xml b/config/openbgpd/openbgpd.xml index 73bda244..ff40452a 100644 --- a/config/openbgpd/openbgpd.xml +++ b/config/openbgpd/openbgpd.xml @@ -54,27 +54,27 @@ /usr/local/www/ 077 - http://www.pfsense.com/packages/config/openbgpd/openbgpd_status.php + https://packages.pfsense.org/packages/config/openbgpd/openbgpd_status.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/openbgpd/openbgpd_raw.php + https://packages.pfsense.org/packages/config/openbgpd/openbgpd_raw.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openbgpd/openbgpd.inc + https://packages.pfsense.org/packages/config/openbgpd/openbgpd.inc /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openbgpd/openbgpd_groups.xml + https://packages.pfsense.org/packages/config/openbgpd/openbgpd_groups.xml /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openbgpd/openbgpd_neighbors.xml + https://packages.pfsense.org/packages/config/openbgpd/openbgpd_neighbors.xml OpenBGPD diff --git a/config/openbgpd/openbgpd_raw.php b/config/openbgpd/openbgpd_raw.php index 506a4475..ac6826b3 100644 --- a/config/openbgpd/openbgpd_raw.php +++ b/config/openbgpd/openbgpd_raw.php @@ -2,7 +2,7 @@ /* $Id$ */ /* openbgpd_raw.php - part of pfSense (http://www.pfsense.com/) + part of pfSense (https://www.pfsense.org/) Copyright (C) 2009 Aarno Aukia (aarnoaukia@gmail.com) All rights reserved. diff --git a/config/openbgpd/openbgpd_status.php b/config/openbgpd/openbgpd_status.php index 99076d12..58d63795 100644 --- a/config/openbgpd/openbgpd_status.php +++ b/config/openbgpd/openbgpd_status.php @@ -2,7 +2,7 @@ /* $Id$ */ /* openbgpd_status.php - part of pfSense (http://www.pfsense.com/) + part of pfSense (https://www.pfsense.org/) Copyright (C) 2007 Scott Ullrich (sullrich@gmail.com) All rights reserved. diff --git a/config/openospfd/openospfd.xml b/config/openospfd/openospfd.xml index ab948e7a..9498100f 100644 --- a/config/openospfd/openospfd.xml +++ b/config/openospfd/openospfd.xml @@ -7,17 +7,17 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openospfd/openospfd.inc + https://packages.pfsense.org/packages/config/openospfd/openospfd.inc /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openospfd/openospfd_interfaces.xml + https://packages.pfsense.org/packages/config/openospfd/openospfd_interfaces.xml /usr/local/www/ 077 - http://www.pfsense.com/packages/config/openospfd/status_ospfd.php + https://packages.pfsense.org/packages/config/openospfd/status_ospfd.php OpenOSPFd diff --git a/config/openospfd/openospfd_interfaces.xml b/config/openospfd/openospfd_interfaces.xml index 445eefea..61d36976 100644 --- a/config/openospfd/openospfd_interfaces.xml +++ b/config/openospfd/openospfd_interfaces.xml @@ -8,7 +8,7 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openospfd/openospfd.inc + https://packages.pfsense.org/packages/config/openospfd/openospfd.inc OSPF diff --git a/config/openvpn-client-export/openvpn-client-export.xml b/config/openvpn-client-export/openvpn-client-export.xml index 0af838e9..f8513387 100755 --- a/config/openvpn-client-export/openvpn-client-export.xml +++ b/config/openvpn-client-export/openvpn-client-export.xml @@ -22,27 +22,27 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openvpn-client-export/openvpn-client-export.inc + https://packages.pfsense.org/packages/config/openvpn-client-export/openvpn-client-export.inc /usr/local/pkg/ 077 - http://files.pfsense.com/packages/openvpn-client-export/openvpn-client-export.tgz + https://files.pfsense.org/packages/openvpn-client-export/openvpn-client-export.tgz /usr/local/www/ 077 - http://www.pfsense.com/packages/config/openvpn-client-export/vpn_openvpn_export.php + https://packages.pfsense.org/packages/config/openvpn-client-export/vpn_openvpn_export.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/openvpn-client-export/vpn_openvpn_export_shared.php + https://packages.pfsense.org/packages/config/openvpn-client-export/vpn_openvpn_export_shared.php /etc/inc/priv/ 077 - http://www.pfsense.com/packages/config/openvpn-client-export/openvpnexport.inc + https://packages.pfsense.org/packages/config/openvpn-client-export/openvpnexport.inc openvpn_client_export_install(); diff --git a/config/openvpn-status/openvpn-status.xml b/config/openvpn-status/openvpn-status.xml index 8ef27ded..cecd6952 100644 --- a/config/openvpn-status/openvpn-status.xml +++ b/config/openvpn-status/openvpn-status.xml @@ -57,7 +57,7 @@ /usr/local/www/ 077 - http://www.pfsense.com/packages/config/openvpn-status/status_openvpn.php + https://packages.pfsense.org/packages/config/openvpn-status/status_openvpn.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.inc + https://packages.pfsense.org/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.inc /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.patch + https://packages.pfsense.org/packages/config/openvpn_tapfix_20x/openvpn_tapfix_20x.patch /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/openvpn_tapfix_20x/openvpn_tapfix_203.patch + https://packages.pfsense.org/packages/config/openvpn_tapfix_20x/openvpn_tapfix_203.patch openvpn_tapfix_20x_install(); diff --git a/config/ovpnenhance/ovpnenhance.xml b/config/ovpnenhance/ovpnenhance.xml index 13f363d6..e6e5ad9d 100644 --- a/config/ovpnenhance/ovpnenhance.xml +++ b/config/ovpnenhance/ovpnenhance.xml @@ -12,27 +12,27 @@ /usr/local/pkg/ 644 - http://www.pfsense.com/packages/config/ovpnenhance/ovpnenhance.inc + https://packages.pfsense.org/packages/config/ovpnenhance/ovpnenhance.inc /usr/local/pkg/ 644 - http://www.pfsense.com/packages/config/ovpnenhance/openvpn.inc_tls + https://packages.pfsense.org/packages/config/ovpnenhance/openvpn.inc_tls /usr/local/pkg/ 644 - http://www.pfsense.com/packages/config/ovpnenhance/openvpn.xml_tls + https://packages.pfsense.org/packages/config/ovpnenhance/openvpn.xml_tls /usr/local/pkg/ 644 - http://www.pfsense.com/packages/config/ovpnenhance/openvpn_cli.xml_tls + https://packages.pfsense.org/packages/config/ovpnenhance/openvpn_cli.xml_tls /usr/local/pkg/ 644 - http://www.pfsense.com/packages/config/ovpnenhance/openvpn_csc.xml_tls + https://packages.pfsense.org/packages/config/ovpnenhance/openvpn_csc.xml_tls ovpnenhance_install(); diff --git a/config/packetcapturefix/packetcapturefix.xml b/config/packetcapturefix/packetcapturefix.xml index 96386cf9..cea6f4d1 100644 --- a/config/packetcapturefix/packetcapturefix.xml +++ b/config/packetcapturefix/packetcapturefix.xml @@ -52,12 +52,12 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/packetcapturefix/packetcapturefix.inc + https://packages.pfsense.org/packages/config/packetcapturefix/packetcapturefix.inc /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/packetcapturefix/packetcapturefix.patch + https://packages.pfsense.org/packages/config/packetcapturefix/packetcapturefix.patch packetcapturefix_install(); diff --git a/config/pf-blocker/pfBlocker.widget.php b/config/pf-blocker/pfBlocker.widget.php index 60b0c754..6550ff57 100644 --- a/config/pf-blocker/pfBlocker.widget.php +++ b/config/pf-blocker/pfBlocker.widget.php @@ -2,7 +2,7 @@ /* Copyright 2011 Thomas Schaefer - Tomschaefer.org Copyright 2011 Marcello Coutinho - Part of pfSense widgets (www.pfsense.com) + Part of pfSense widgets (www.pfsense.org) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/config/pf-blocker/pfblocker.xml b/config/pf-blocker/pfblocker.xml index b4da539c..44658bcb 100755 --- a/config/pf-blocker/pfblocker.xml +++ b/config/pf-blocker/pfblocker.xml @@ -53,62 +53,62 @@ /pkg_edit.php?xml=pfblocker.xml - http://www.pfsense.org/packages/config/pf-blocker/pfblocker.inc + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/pf-blocker/pfblocker.php + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/pf-blocker/pfBlocker.widget.php + https://packages.pfsense.org/packages/config/pf-blocker/pfBlocker.widget.php /usr/local/www/widgets/widgets/ 0755 - http://www.pfsense.org/packages/config/pf-blocker/pfblocker_topspammers.xml + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker_topspammers.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/pf-blocker/pfblocker_lists.xml + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker_lists.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/pf-blocker/pfblocker_sync.xml + https://packages.pfsense.org/packages/config/pf-blocker/pfblocker_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/pf-blocker/lists/Africa_cidr.txt + https://packages.pfsense.org/packages/config/pf-blocker/lists/Africa_cidr.txt /usr/local/pkg/ 0555 - http://www.pfsense.org/packages/config/pf-blocker/lists/Asia_cidr.txt + https://packages.pfsense.org/packages/config/pf-blocker/lists/Asia_cidr.txt /usr/local/pkg/ 0555 - http://www.pfsense.org/packages/config/pf-blocker/lists/Europe_cidr.txt + https://packages.pfsense.org/packages/config/pf-blocker/lists/Europe_cidr.txt /usr/local/pkg/ 0555 - http://www.pfsense.org/packages/config/pf-blocker/lists/North_America_cidr.txt + https://packages.pfsense.org/packages/config/pf-blocker/lists/North_America_cidr.txt /usr/local/pkg/ 0555 - http://www.pfsense.org/packages/config/pf-blocker/lists/Oceania_cidr.txt + https://packages.pfsense.org/packages/config/pf-blocker/lists/Oceania_cidr.txt /usr/local/pkg/ 0555 - http://www.pfsense.org/packages/config/pf-blocker/lists/South_America_cidr.txt + https://packages.pfsense.org/packages/config/pf-blocker/lists/South_America_cidr.txt /usr/local/pkg/ 0555 @@ -224,13 +224,13 @@ checkbox countryipblocks.net.
    Dynamic rules can be found in I-Blocklist.com.
    - Created by Marcello Coutinho and TomSchaefer.
    ]]>
    + Created by Marcello Coutinho and TomSchaefer.
    ]]> Donation donation checkbox - donate to the pfSense project.
    + donate to the pfSense project.
    If you want your donation to go to these package developers, make a note on the donation forwarding it to us.
    ]]>
    diff --git a/config/pfstat.xml b/config/pfstat.xml index 29d52bc2..eb07f732 100644 --- a/config/pfstat.xml +++ b/config/pfstat.xml @@ -98,7 +98,7 @@ /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/pfstat.php + https://packages.pfsense.org/packages/config/pfstat.php diff --git a/config/rrd-summary/rrd-summary.xml b/config/rrd-summary/rrd-summary.xml index a4a7c90f..4b62272d 100644 --- a/config/rrd-summary/rrd-summary.xml +++ b/config/rrd-summary/rrd-summary.xml @@ -57,7 +57,7 @@ /usr/local/www/ 077 - http://www.pfsense.com/packages/config/rrd-summary/status_rrd_summary.php + https://packages.pfsense.org/packages/config/rrd-summary/status_rrd_summary.php /pkg_edit.php?xml=sarg.xml
    - http://www.pfsense.org/packages/config/sarg/sarg.inc + https://packages.pfsense.org/packages/config/sarg/sarg.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_schedule.xml + https://packages.pfsense.org/packages/config/sarg/sarg_schedule.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_sync.xml + https://packages.pfsense.org/packages/config/sarg/sarg_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_users.xml + https://packages.pfsense.org/packages/config/sarg/sarg_users.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_realtime.php + https://packages.pfsense.org/packages/config/sarg/sarg_realtime.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_about.php + https://packages.pfsense.org/packages/config/sarg/sarg_about.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg.php + https://packages.pfsense.org/packages/config/sarg/sarg.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_reports.php + https://packages.pfsense.org/packages/config/sarg/sarg_reports.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_frame.php + https://packages.pfsense.org/packages/config/sarg/sarg_frame.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg_sorttable.js + https://packages.pfsense.org/packages/config/sarg/sarg_sorttable.js /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg.template + https://packages.pfsense.org/packages/config/sarg/sarg.template /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/sarg/sarg.priv.inc + https://packages.pfsense.org/packages/config/sarg/sarg.priv.inc /etc/inc/priv/ 0755 diff --git a/config/sarg/sarg_about.php b/config/sarg/sarg_about.php index 1321adf6..118bbb48 100755 --- a/config/sarg/sarg_about.php +++ b/config/sarg/sarg_about.php @@ -1,7 +1,7 @@ All rights reserved. @@ -80,11 +80,11 @@ include("head.inc");
    Marcello Coutinho

    ");?>
    Marcello Coutinho

    ");?>
    donate to pfSense project.

    +
    donate to pfSense project.

    If you want that your donation goes to this package developer, make a note on donation forwarding it to me.

    ");?>
    diff --git a/config/sarg/sarg_frame.php b/config/sarg/sarg_frame.php index 21638247..6f3c941e 100755 --- a/config/sarg/sarg_frame.php +++ b/config/sarg/sarg_frame.php @@ -1,7 +1,7 @@ based on varnish_view_config. All rights reserved. diff --git a/config/sarg/sarg_realtime.php b/config/sarg/sarg_realtime.php index 76e89769..f8bf0f3e 100755 --- a/config/sarg/sarg_realtime.php +++ b/config/sarg/sarg_realtime.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/sarg/sarg_reports.php b/config/sarg/sarg_reports.php index b156a4d7..07d8e898 100755 --- a/config/sarg/sarg_reports.php +++ b/config/sarg/sarg_reports.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/sarg/sarg_schedule.xml b/config/sarg/sarg_schedule.xml index 9e1ad709..07e24d5c 100644 --- a/config/sarg/sarg_schedule.xml +++ b/config/sarg/sarg_schedule.xml @@ -47,12 +47,12 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/sarg/sarg.inc + https://packages.pfsense.org/packages/config/sarg/sarg.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/sarg/sarg_sync.xml + https://packages.pfsense.org/packages/config/sarg/sarg_sync.xml sarg diff --git a/config/servicewatchdog/servicewatchdog.xml b/config/servicewatchdog/servicewatchdog.xml index 3df25c3c..e66f878d 100644 --- a/config/servicewatchdog/servicewatchdog.xml +++ b/config/servicewatchdog/servicewatchdog.xml @@ -52,22 +52,22 @@ /usr/local/www/ 644 - http://www.pfsense.com/packages/config/servicewatchdog/services_servicewatchdog.php + https://packages.pfsense.org/packages/config/servicewatchdog/services_servicewatchdog.php /usr/local/www/ 644 - http://www.pfsense.com/packages/config/servicewatchdog/services_servicewatchdog_add.php + https://packages.pfsense.org/packages/config/servicewatchdog/services_servicewatchdog_add.php /usr/local/pkg/ 755 - http://www.pfsense.com/packages/config/servicewatchdog/servicewatchdog_cron.php + https://packages.pfsense.org/packages/config/servicewatchdog/servicewatchdog_cron.php /usr/local/pkg/ 644 - http://www.pfsense.com/packages/config/servicewatchdog/servicewatchdog.inc + https://packages.pfsense.org/packages/config/servicewatchdog/servicewatchdog.inc servicewatchdog_cron_job(); diff --git a/config/shellcmd/shellcmd.xml b/config/shellcmd/shellcmd.xml index f478a6c2..ca472078 100644 --- a/config/shellcmd/shellcmd.xml +++ b/config/shellcmd/shellcmd.xml @@ -67,22 +67,22 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/shellcmd/shellcmd.xml + https://packages.pfsense.org/packages/config/shellcmd/shellcmd.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/shellcmd/shellcmd.inc + https://packages.pfsense.org/packages/config/shellcmd/shellcmd.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/shellcmd/shellcmd.tmp + https://packages.pfsense.org/packages/config/shellcmd/shellcmd.tmp /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/shellcmd/shellcmd_edit.tmp + https://packages.pfsense.org/packages/config/shellcmd/shellcmd_edit.tmp diff --git a/config/siproxd.xml b/config/siproxd.xml index 1e16a9ea..d989f964 100644 --- a/config/siproxd.xml +++ b/config/siproxd.xml @@ -70,17 +70,17 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/siproxdusers.xml + https://packages.pfsense.org/packages/config/siproxdusers.xml /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/siproxd.inc + https://packages.pfsense.org/packages/config/siproxd.inc /usr/local/www/ 077 - http://www.pfsense.com/packages/config/siproxd_registered_phones.php + https://packages.pfsense.org/packages/config/siproxd_registered_phones.php diff --git a/config/snort-old/snort.xml b/config/snort-old/snort.xml index 3bc40fce..06cd521e 100644 --- a/config/snort-old/snort.xml +++ b/config/snort-old/snort.xml @@ -8,7 +8,7 @@ /* ========================================================================== */ /* authng.xml - part of pfSense (http://www.pfsense.com) + part of pfSense (https://www.pfsense.org) Copyright (C) 2007 to whom it may belong All rights reserved. @@ -107,87 +107,87 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort-old/snort.inc + https://packages.pfsense.org/packages/config/snort-old/snort.inc /usr/local/bin/ 077 - http://www.pfsense.com/packages/config/snort-old/bin/barnyard2 + https://packages.pfsense.org/packages/config/snort-old/bin/barnyard2 /usr/local/bin/ 077 - http://www.pfsense.com/packages/config/snort-old/bin/oinkmaster_contrib/create-sidmap.pl + https://packages.pfsense.org/packages/config/snort-old/bin/oinkmaster_contrib/create-sidmap.pl /usr/local/bin/ 077 - http://www.pfsense.com/packages/config/snort-old/bin/oinkmaster_contrib/oinkmaster.pl + https://packages.pfsense.org/packages/config/snort-old/bin/oinkmaster_contrib/oinkmaster.pl /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_download_rules.php + https://packages.pfsense.org/packages/config/snort-old/snort_download_rules.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_rules.php + https://packages.pfsense.org/packages/config/snort-old/snort_rules.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_rules_edit.php + https://packages.pfsense.org/packages/config/snort-old/snort_rules_edit.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_rulesets.php + https://packages.pfsense.org/packages/config/snort-old/snort_rulesets.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_whitelist.xml + https://packages.pfsense.org/packages/config/snort-old/snort_whitelist.xml /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_blocked.php + https://packages.pfsense.org/packages/config/snort-old/snort_blocked.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_check_for_rule_updates.php + https://packages.pfsense.org/packages/config/snort-old/snort_check_for_rule_updates.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_alerts.php + https://packages.pfsense.org/packages/config/snort-old/snort_alerts.php /usr/local/pkg/pf/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_dynamic_ip_reload.php + https://packages.pfsense.org/packages/config/snort-old/snort_dynamic_ip_reload.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_advanced.xml + https://packages.pfsense.org/packages/config/snort-old/snort_advanced.xml /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_define_servers.xml + https://packages.pfsense.org/packages/config/snort-old/snort_define_servers.xml /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort-old/snort_threshold.xml + https://packages.pfsense.org/packages/config/snort-old/snort_threshold.xml /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort-old/pfsense_rules/local.rules + https://packages.pfsense.org/packages/config/snort-old/pfsense_rules/local.rules diff --git a/config/snort-old/snort_check_for_rule_updates.php b/config/snort-old/snort_check_for_rule_updates.php index 8d308245..f6ebfd3a 100644 --- a/config/snort-old/snort_check_for_rule_updates.php +++ b/config/snort-old/snort_check_for_rule_updates.php @@ -143,7 +143,7 @@ if (file_exists("{$tmpfname}/{$pfsense_rules_filename_md5}")) { } else { echo "Downloading pfsense md5 file...\n"; ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - $image = @file_get_contents("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz.md5"); + $image = @file_get_contents("https://packages.pfsense.org/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz.md5"); // $image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/pfsense_rules.tar.gz.md5"); $f = fopen("{$tmpfname}/pfsense_rules.tar.gz.md5", 'w'); fwrite($f, $image); @@ -302,7 +302,7 @@ if (file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { echo "There is a new set of Pfsense rules posted. Downloading...\n"; echo "May take 4 to 10 min...\n"; ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - $image = @file_get_contents("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz"); + $image = @file_get_contents("https://packages.pfsense.org/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz"); // $image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/pfsense_rules.tar.gz"); $f = fopen("{$tmpfname}/pfsense_rules.tar.gz", 'w'); fwrite($f, $image); diff --git a/config/snort-old/snort_download_rules.php b/config/snort-old/snort_download_rules.php index 9826ba2a..a559bad2 100644 --- a/config/snort-old/snort_download_rules.php +++ b/config/snort-old/snort_download_rules.php @@ -224,7 +224,7 @@ if (file_exists("{$tmpfname}/{$pfsense_rules_filename_md5}")) { } else { update_status(gettext("Downloading pfsense md5 file...")); ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); - $image = @file_get_contents("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz.md5"); + $image = @file_get_contents("https://packages.pfsense.org/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz.md5"); // $image = @file_get_contents("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/pfsense_rules.tar.gz.md5"); $f = fopen("{$tmpfname}/pfsense_rules.tar.gz.md5", 'w'); fwrite($f, $image); @@ -396,7 +396,7 @@ if (file_exists("{$tmpfname}/{$pfsense_rules_filename}")) { update_status(gettext("There is a new set of Pfsense rules posted. Downloading...")); update_output_window(gettext("May take 4 to 10 min...")); // download_file_with_progress_bar("http://www.mtest.local/pub-bin/oinkmaster.cgi/{$oinkid}/pfsense_rules.tar.gz", $tmpfname . "/{$pfsense_rules_filename}", "read_body_firmware"); - download_file_with_progress_bar("http://www.pfsense.com/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz", $tmpfname . "/{$pfsense_rules_filename}", "read_body_firmware"); + download_file_with_progress_bar("https://packages.pfsense.org/packages/config/snort/pfsense_rules/pfsense_rules.tar.gz", $tmpfname . "/{$pfsense_rules_filename}", "read_body_firmware"); update_all_status($static_output); update_status(gettext("Done downloading rules file.")); } diff --git a/config/snort/snort.xml b/config/snort/snort.xml index a2d14bf0..637773df 100755 --- a/config/snort/snort.xml +++ b/config/snort/snort.xml @@ -8,7 +8,7 @@ /* ========================================================================== */ /* authng.xml - part of pfSense (http://www.pfsense.com) + part of pfSense (https://www.pfsense.org) Copyright (C) 2007 to whom it may belong All rights reserved. @@ -66,177 +66,177 @@ /usr/local/pkg/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort.inc + https://packages.pfsense.org/packages/config/snort/snort.inc /usr/local/pkg/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_check_cron_misc.inc + https://packages.pfsense.org/packages/config/snort/snort_check_cron_misc.inc /usr/local/pkg/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_migrate_config.php + https://packages.pfsense.org/packages/config/snort/snort_migrate_config.php /usr/local/pkg/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_post_install.php + https://packages.pfsense.org/packages/config/snort/snort_post_install.php /usr/local/pkg/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_sync.xml + https://packages.pfsense.org/packages/config/snort/snort_sync.xml /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_alerts.php + https://packages.pfsense.org/packages/config/snort/snort_alerts.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_barnyard.php + https://packages.pfsense.org/packages/config/snort/snort_barnyard.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_blocked.php + https://packages.pfsense.org/packages/config/snort/snort_blocked.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_define_servers.php + https://packages.pfsense.org/packages/config/snort/snort_define_servers.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_download_rules.php + https://packages.pfsense.org/packages/config/snort/snort_download_rules.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_download_updates.php + https://packages.pfsense.org/packages/config/snort/snort_download_updates.php /usr/local/pkg/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_check_for_rule_updates.php + https://packages.pfsense.org/packages/config/snort/snort_check_for_rule_updates.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_interfaces.php + https://packages.pfsense.org/packages/config/snort/snort_interfaces.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_interfaces_edit.php + https://packages.pfsense.org/packages/config/snort/snort_interfaces_edit.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_interfaces_global.php + https://packages.pfsense.org/packages/config/snort/snort_interfaces_global.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_rules.php + https://packages.pfsense.org/packages/config/snort/snort_rules.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_rules_edit.php + https://packages.pfsense.org/packages/config/snort/snort_rules_edit.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_rulesets.php + https://packages.pfsense.org/packages/config/snort/snort_rulesets.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_preprocessors.php + https://packages.pfsense.org/packages/config/snort/snort_preprocessors.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_interfaces_whitelist.php + https://packages.pfsense.org/packages/config/snort/snort_interfaces_whitelist.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_interfaces_whitelist_edit.php + https://packages.pfsense.org/packages/config/snort/snort_interfaces_whitelist_edit.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_interfaces_suppress.php + https://packages.pfsense.org/packages/config/snort/snort_interfaces_suppress.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_interfaces_suppress_edit.php + https://packages.pfsense.org/packages/config/snort/snort_interfaces_suppress_edit.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_log_view.php + https://packages.pfsense.org/packages/config/snort/snort_log_view.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_list_view.php + https://packages.pfsense.org/packages/config/snort/snort_list_view.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_rules_flowbits.php + https://packages.pfsense.org/packages/config/snort/snort_rules_flowbits.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_edit_hat_data.php + https://packages.pfsense.org/packages/config/snort/snort_edit_hat_data.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_frag3_engine.php + https://packages.pfsense.org/packages/config/snort/snort_frag3_engine.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_stream5_engine.php + https://packages.pfsense.org/packages/config/snort/snort_stream5_engine.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_httpinspect_engine.php + https://packages.pfsense.org/packages/config/snort/snort_httpinspect_engine.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_ftp_client_engine.php + https://packages.pfsense.org/packages/config/snort/snort_ftp_client_engine.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_ftp_server_engine.php + https://packages.pfsense.org/packages/config/snort/snort_ftp_server_engine.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_import_aliases.php + https://packages.pfsense.org/packages/config/snort/snort_import_aliases.php /usr/local/www/snort/ 077 - http://www.pfsense.com/packages/config/snort/snort_select_alias.php + https://packages.pfsense.org/packages/config/snort/snort_select_alias.php /etc/inc/priv/ 077 - http://www.pfsense.com/packages/config/snort/snort.priv.inc + https://packages.pfsense.org/packages/config/snort/snort.priv.inc diff --git a/config/spamd/spamd.xml b/config/spamd/spamd.xml index 1a7b4272..45cc9168 100644 --- a/config/spamd/spamd.xml +++ b/config/spamd/spamd.xml @@ -97,42 +97,42 @@ /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd_rules.php + https://packages.pfsense.org/packages/config/spamd/spamd_rules.php /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd_whitelist.xml + https://packages.pfsense.org/packages/config/spamd/spamd_whitelist.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd_outlook.xml + https://packages.pfsense.org/packages/config/spamd/spamd_outlook.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd.inc + https://packages.pfsense.org/packages/config/spamd/spamd.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd_settings.xml + https://packages.pfsense.org/packages/config/spamd/spamd_settings.xml /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd_db.php + https://packages.pfsense.org/packages/config/spamd/spamd_db.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd_db_ext.php + https://packages.pfsense.org/packages/config/spamd/spamd_db_ext.php /usr/local/bin/ 0755 - http://www.pfsense.com/packages/config/spamd/spamd_gather_stats.php + https://packages.pfsense.org/packages/config/spamd/spamd_gather_stats.php - http://www.pfsense.org/packages/config/squid.inc + https://packages.pfsense.org/packages/config/squid.inc - http://www.pfsense.org/packages/config/squid_cache.xml + https://packages.pfsense.org/packages/config/squid_cache.xml - http://www.pfsense.org/packages/config/squid_nac.xml + https://packages.pfsense.org/packages/config/squid_nac.xml - http://www.pfsense.org/packages/config/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid_traffic.xml - http://www.pfsense.org/packages/config/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid_upstream.xml - http://www.pfsense.org/packages/config/squid_auth.xml + https://packages.pfsense.org/packages/config/squid_auth.xml - http://www.pfsense.org/packages/config/squid_users.xml + https://packages.pfsense.org/packages/config/squid_users.xml /usr/local/bin/ 0755 - http://www.pfsense.org/packages/All/squid_monitor.sh + https://www.pfsense.org/packages/All/squid_monitor.sh diff --git a/config/squid/squid.xml b/config/squid/squid.xml index 3df0482a..32a65589 100644 --- a/config/squid/squid.xml +++ b/config/squid/squid.xml @@ -96,57 +96,57 @@ /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid.inc + https://packages.pfsense.org/packages/config/squid/squid.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_cache.xml + https://packages.pfsense.org/packages/config/squid/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_nac.xml + https://packages.pfsense.org/packages/config/squid/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_ng.xml + https://packages.pfsense.org/packages/config/squid/squid_ng.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_auth.xml + https://packages.pfsense.org/packages/config/squid/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_users.xml + https://packages.pfsense.org/packages/config/squid/squid_users.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/sqpmon.sh + https://packages.pfsense.org/packages/config/squid/sqpmon.sh /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/squid_cache.xml + https://packages.pfsense.org/packages/config/squid/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid/swapstate_check.php + https://packages.pfsense.org/packages/config/squid/swapstate_check.php diff --git a/config/squid/squid_ng.inc b/config/squid/squid_ng.inc index cfd2fe66..f96c73e4 100644 --- a/config/squid/squid_ng.inc +++ b/config/squid/squid_ng.inc @@ -803,7 +803,7 @@ function custom_php_install_command() { touch("/tmp/custom_php_install_command"); /* make sure this all exists, see: - * http://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 + * https://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 */ update_output_window("Setting up Squid environment..."); mwexec("mkdir -p /var/squid"); diff --git a/config/squid/squid_ng.xml b/config/squid/squid_ng.xml index 5d956387..4ff3690c 100644 --- a/config/squid/squid_ng.xml +++ b/config/squid/squid_ng.xml @@ -102,42 +102,42 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_cache.xml + https://packages.pfsense.org/packages/config/squid/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_nac.xml + https://packages.pfsense.org/packages/config/squid/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_ng.inc + https://packages.pfsense.org/packages/config/squid/squid_ng.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_auth.xml + https://packages.pfsense.org/packages/config/squid/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_auth.inc + https://packages.pfsense.org/packages/config/squid/squid_auth.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_extauth.xml + https://packages.pfsense.org/packages/config/squid/squid_extauth.xml diff --git a/config/squid3/31/squid.xml b/config/squid3/31/squid.xml index aa76c0f1..53293acd 100644 --- a/config/squid3/31/squid.xml +++ b/config/squid3/31/squid.xml @@ -111,112 +111,112 @@ /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid.inc + https://packages.pfsense.org/packages/config/squid3/31/squid.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_reverse_general.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_reverse_general.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_reverse_peer.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_reverse_peer.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_reverse_uri.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_reverse_uri.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_reverse_sync.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_reverse_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_sync.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_cache.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_nac.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_ng.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_ng.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_ng.inc + https://packages.pfsense.org/packages/config/squid3/31/squid_ng.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_reverse.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_reverse.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_reverse.inc + https://packages.pfsense.org/packages/config/squid3/31/squid_reverse.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_auth.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_users.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_users.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/sqpmon.sh + https://packages.pfsense.org/packages/config/squid3/31/sqpmon.sh /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/swapstate_check.php + https://packages.pfsense.org/packages/config/squid3/31/swapstate_check.php /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_reverse_redir.xml + https://packages.pfsense.org/packages/config/squid3/31/squid_reverse_redir.xml /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_monitor.php + https://packages.pfsense.org/packages/config/squid3/31/squid_monitor.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_monitor_data.php + https://packages.pfsense.org/packages/config/squid3/31/squid_monitor_data.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squid3/31/squid_log_parser.php + https://packages.pfsense.org/packages/config/squid3/31/squid_log_parser.php diff --git a/config/squid3/31/squid_ng.inc b/config/squid3/31/squid_ng.inc index 0e1e0515..3b9ef405 100644 --- a/config/squid3/31/squid_ng.inc +++ b/config/squid3/31/squid_ng.inc @@ -803,7 +803,7 @@ function squid3_custom_php_install_command() { touch("/tmp/squid3_custom_php_install_command"); /* make sure this all exists, see: - * http://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 + * https://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 */ update_output_window("Setting up Squid environment..."); mwexec("mkdir -p /var/squid"); diff --git a/config/squid3/31/squid_ng.xml b/config/squid3/31/squid_ng.xml index 142536d6..b96b4eb2 100644 --- a/config/squid3/31/squid_ng.xml +++ b/config/squid3/31/squid_ng.xml @@ -102,42 +102,42 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_cache.xml + https://packages.pfsense.org/packages/config/squid/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_nac.xml + https://packages.pfsense.org/packages/config/squid/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_ng.inc + https://packages.pfsense.org/packages/config/squid/squid_ng.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_auth.xml + https://packages.pfsense.org/packages/config/squid/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_auth.inc + https://packages.pfsense.org/packages/config/squid/squid_auth.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_extauth.xml + https://packages.pfsense.org/packages/config/squid/squid_extauth.xml diff --git a/config/squid3/33/squid.xml b/config/squid3/33/squid.xml index a8bc0530..ef5a9c94 100644 --- a/config/squid3/33/squid.xml +++ b/config/squid3/33/squid.xml @@ -126,127 +126,127 @@ /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid.inc + https://packages.pfsense.org/packages/config/squid3/33/squid.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_reverse_general.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_reverse_general.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_reverse_peer.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_reverse_peer.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_reverse_uri.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_reverse_uri.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_reverse_sync.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_reverse_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_sync.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_cache.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_nac.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_ng.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_ng.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_ng.inc + https://packages.pfsense.org/packages/config/squid3/33/squid_ng.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_reverse.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_reverse.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_reverse.inc + https://packages.pfsense.org/packages/config/squid3/33/squid_reverse.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_auth.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_users.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_users.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_antivirus.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_antivirus.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/sqpmon.sh + https://packages.pfsense.org/packages/config/squid3/33/sqpmon.sh /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/swapstate_check.php + https://packages.pfsense.org/packages/config/squid3/33/swapstate_check.php /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_reverse_redir.xml + https://packages.pfsense.org/packages/config/squid3/33/squid_reverse_redir.xml /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_monitor.php + https://packages.pfsense.org/packages/config/squid3/33/squid_monitor.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_monitor_data.php + https://packages.pfsense.org/packages/config/squid3/33/squid_monitor_data.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squid3/33/squid_log_parser.php + https://packages.pfsense.org/packages/config/squid3/33/squid_log_parser.php /usr/local/www/shortcuts/ 0755 - http://www.pfsense.org/packages/config/squid3/33/pkg_squid.inc + https://packages.pfsense.org/packages/config/squid3/33/pkg_squid.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/33/check_ip.php + https://packages.pfsense.org/packages/config/squid3/33/check_ip.php diff --git a/config/squid3/33/squid_ng.inc b/config/squid3/33/squid_ng.inc index 0e1e0515..3b9ef405 100755 --- a/config/squid3/33/squid_ng.inc +++ b/config/squid3/33/squid_ng.inc @@ -803,7 +803,7 @@ function squid3_custom_php_install_command() { touch("/tmp/squid3_custom_php_install_command"); /* make sure this all exists, see: - * http://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 + * https://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 */ update_output_window("Setting up Squid environment..."); mwexec("mkdir -p /var/squid"); diff --git a/config/squid3/33/squid_ng.xml b/config/squid3/33/squid_ng.xml index 142536d6..b96b4eb2 100755 --- a/config/squid3/33/squid_ng.xml +++ b/config/squid3/33/squid_ng.xml @@ -102,42 +102,42 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_cache.xml + https://packages.pfsense.org/packages/config/squid/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_nac.xml + https://packages.pfsense.org/packages/config/squid/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_ng.inc + https://packages.pfsense.org/packages/config/squid/squid_ng.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_auth.xml + https://packages.pfsense.org/packages/config/squid/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_auth.inc + https://packages.pfsense.org/packages/config/squid/squid_auth.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid/squid_extauth.xml + https://packages.pfsense.org/packages/config/squid/squid_extauth.xml diff --git a/config/squid3/old/squid.xml b/config/squid3/old/squid.xml index ea13625e..5762efb1 100644 --- a/config/squid3/old/squid.xml +++ b/config/squid3/old/squid.xml @@ -96,52 +96,52 @@ /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid.inc + https://packages.pfsense.org/packages/config/squid3/squid.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_cache.xml + https://packages.pfsense.org/packages/config/squid3/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_nac.xml + https://packages.pfsense.org/packages/config/squid3/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_ng.xml + https://packages.pfsense.org/packages/config/squid3/squid_ng.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid3/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid3/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_auth.xml + https://packages.pfsense.org/packages/config/squid3/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_users.xml + https://packages.pfsense.org/packages/config/squid3/squid_users.xml /usr/local/etc/rc.d/ 0755 - http://www.pfsense.org/packages/config/squid3/proxy_monitor.sh + https://packages.pfsense.org/packages/config/squid3/proxy_monitor.sh /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squid3/squid_cache.xml + https://packages.pfsense.org/packages/config/squid3/squid_cache.xml diff --git a/config/squid3/old/squid_ng.inc b/config/squid3/old/squid_ng.inc index 03f6d48c..bfc99faf 100644 --- a/config/squid3/old/squid_ng.inc +++ b/config/squid3/old/squid_ng.inc @@ -803,7 +803,7 @@ function custom_php_install_command() { touch("/tmp/custom_php_install_command"); /* make sure this all exists, see: - * http://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 + * https://forum.pfsense.org/index.php?topic=23.msg2391#msg2391 */ update_output_window("Setting up Squid environment..."); mwexec("mkdir -p /var/squid"); diff --git a/config/squid3/old/squid_ng.xml b/config/squid3/old/squid_ng.xml index cb535cd3..3448657f 100644 --- a/config/squid3/old/squid_ng.xml +++ b/config/squid3/old/squid_ng.xml @@ -102,42 +102,42 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_cache.xml + https://packages.pfsense.org/packages/config/squid3/squid_cache.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_nac.xml + https://packages.pfsense.org/packages/config/squid3/squid_nac.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_ng.inc + https://packages.pfsense.org/packages/config/squid3/squid_ng.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_traffic.xml + https://packages.pfsense.org/packages/config/squid3/squid_traffic.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_upstream.xml + https://packages.pfsense.org/packages/config/squid3/squid_upstream.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_auth.xml + https://packages.pfsense.org/packages/config/squid3/squid_auth.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_auth.inc + https://packages.pfsense.org/packages/config/squid3/squid_auth.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/squid3/squid_extauth.xml + https://packages.pfsense.org/packages/config/squid3/squid_extauth.xml diff --git a/config/squidGuard-devel/squidguard.xml b/config/squidGuard-devel/squidguard.xml index e9ce78fd..d5f2b82d 100644 --- a/config/squidGuard-devel/squidguard.xml +++ b/config/squidGuard-devel/squidguard.xml @@ -63,57 +63,57 @@ /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard.inc + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_configurator.inc + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_configurator.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_acl.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_default.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_default.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_dest.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_dest.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_rewr.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_rewr.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_time.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_time.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_sync.xml + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_sync.xml /usr/local/www/squidGuard/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_log.php + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_log.php /usr/local/www/squidGuard/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/squidguard_blacklist.php + https://packages.pfsense.org/packages/config/squidGuard-devel/squidguard_blacklist.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squidGuard-devel/sgerror.php + https://packages.pfsense.org/packages/config/squidGuard-devel/sgerror.php diff --git a/config/squidGuard/squidguard.xml b/config/squidGuard/squidguard.xml index e1fb3d41..ee7302f4 100644 --- a/config/squidGuard/squidguard.xml +++ b/config/squidGuard/squidguard.xml @@ -63,57 +63,57 @@ /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard.inc + https://packages.pfsense.org/packages/config/squidGuard/squidguard.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_configurator.inc + https://packages.pfsense.org/packages/config/squidGuard/squidguard_configurator.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_acl.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard_acl.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_default.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard_default.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_dest.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard_dest.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_rewr.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard_rewr.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_time.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard_time.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_sync.xml + https://packages.pfsense.org/packages/config/squidGuard/squidguard_sync.xml /usr/local/www/squidGuard/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_log.php + https://packages.pfsense.org/packages/config/squidGuard/squidguard_log.php /usr/local/www/squidGuard/ 0755 - http://www.pfsense.org/packages/config/squidGuard/squidguard_blacklist.php + https://packages.pfsense.org/packages/config/squidGuard/squidguard_blacklist.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/squidGuard/sgerror.php + https://packages.pfsense.org/packages/config/squidGuard/sgerror.php diff --git a/config/sshdcond/sshdcond.xml b/config/sshdcond/sshdcond.xml index eeb35d75..17dda28d 100644 --- a/config/sshdcond/sshdcond.xml +++ b/config/sshdcond/sshdcond.xml @@ -60,12 +60,12 @@ /usr/local/pkg/ 755 - http://www.pfsense.com/packages/config/sshdcond/sshdcond.inc + https://packages.pfsense.org/packages/config/sshdcond/sshdcond.inc /usr/local/pkg/ 755 - http://www.pfsense.com/packages/config/sshdcond/sshdcond_sync.xml + https://packages.pfsense.org/packages/config/sshdcond/sshdcond_sync.xml diff --git a/config/sshterm/sshterm.xml b/config/sshterm/sshterm.xml index 80907d0a..69098f01 100644 --- a/config/sshterm/sshterm.xml +++ b/config/sshterm/sshterm.xml @@ -64,12 +64,12 @@ /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sshterm/diag_shell_head.php + https://packages.pfsense.org/packages/config/sshterm/diag_shell_head.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/sshterm/diag_shell_releng.php + https://packages.pfsense.org/packages/config/sshterm/diag_shell_releng.php diff --git a/config/sudo/sudo.xml b/config/sudo/sudo.xml index defca988..16fc272b 100644 --- a/config/sudo/sudo.xml +++ b/config/sudo/sudo.xml @@ -16,7 +16,7 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/sudo/sudo.inc + https://packages.pfsense.org/packages/config/sudo/sudo.inc diff --git a/config/suricata/suricata.xml b/config/suricata/suricata.xml index 46baa50c..197bdf28 100644 --- a/config/suricata/suricata.xml +++ b/config/suricata/suricata.xml @@ -60,167 +60,167 @@ /etc/inc/priv/ 077 - http://www.pfsense.com/packages/config/suricata/suricata.priv.inc + https://packages.pfsense.org/packages/config/suricata/suricata.priv.inc - http://www.pfsense.com/packages/config/suricata/suricata.inc + https://packages.pfsense.org/packages/config/suricata/suricata.inc /usr/local/pkg/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_check_cron_misc.inc + https://packages.pfsense.org/packages/config/suricata/suricata_check_cron_misc.inc /usr/local/pkg/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_yaml_template.inc + https://packages.pfsense.org/packages/config/suricata/suricata_yaml_template.inc /usr/local/pkg/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_generate_yaml.php + https://packages.pfsense.org/packages/config/suricata/suricata_generate_yaml.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_download_updates.php + https://packages.pfsense.org/packages/config/suricata/suricata_download_updates.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_global.php + https://packages.pfsense.org/packages/config/suricata/suricata_global.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_alerts.php + https://packages.pfsense.org/packages/config/suricata/suricata_alerts.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_interfaces.php + https://packages.pfsense.org/packages/config/suricata/suricata_interfaces.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_interfaces_edit.php + https://packages.pfsense.org/packages/config/suricata/suricata_interfaces_edit.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_download_rules.php + https://packages.pfsense.org/packages/config/suricata/suricata_download_rules.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_check_for_rule_updates.php + https://packages.pfsense.org/packages/config/suricata/suricata_check_for_rule_updates.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_rules.php + https://packages.pfsense.org/packages/config/suricata/suricata_rules.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_rulesets.php + https://packages.pfsense.org/packages/config/suricata/suricata_rulesets.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_rules_flowbits.php + https://packages.pfsense.org/packages/config/suricata/suricata_rules_flowbits.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_rules_edit.php + https://packages.pfsense.org/packages/config/suricata/suricata_rules_edit.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_flow_stream.php + https://packages.pfsense.org/packages/config/suricata/suricata_flow_stream.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_os_policy_engine.php + https://packages.pfsense.org/packages/config/suricata/suricata_os_policy_engine.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_import_aliases.php + https://packages.pfsense.org/packages/config/suricata/suricata_import_aliases.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_suppress.php + https://packages.pfsense.org/packages/config/suricata/suricata_suppress.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_suppress_edit.php + https://packages.pfsense.org/packages/config/suricata/suricata_suppress_edit.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_logs_browser.php + https://packages.pfsense.org/packages/config/suricata/suricata_logs_browser.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_list_view.php + https://packages.pfsense.org/packages/config/suricata/suricata_list_view.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_app_parsers.php + https://packages.pfsense.org/packages/config/suricata/suricata_app_parsers.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_libhtp_policy_engine.php + https://packages.pfsense.org/packages/config/suricata/suricata_libhtp_policy_engine.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_uninstall.php + https://packages.pfsense.org/packages/config/suricata/suricata_uninstall.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_define_vars.php + https://packages.pfsense.org/packages/config/suricata/suricata_define_vars.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_barnyard.php + https://packages.pfsense.org/packages/config/suricata/suricata_barnyard.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_post_install.php + https://packages.pfsense.org/packages/config/suricata/suricata_post_install.php /usr/local/www/suricata/ 0755 - http://www.pfsense.com/packages/config/suricata/suricata_uninstall.php + https://packages.pfsense.org/packages/config/suricata/suricata_uninstall.php /usr/local/www/suricata/ 0755 /usr/local/www/widgets/javascript/ 0644 - http://www.pfsense.com/packages/config/suricata/suricata_alerts.js + https://packages.pfsense.org/packages/config/suricata/suricata_alerts.js /usr/local/www/widgets/widgets/ 0644 - http://www.pfsense.com/packages/config/suricata/suricata_alerts.widget.php + https://packages.pfsense.org/packages/config/suricata/suricata_alerts.widget.php /usr/local/www/widgets/include/ 0644 - http://www.pfsense.com/packages/config/suricata/widget-suricata.inc + https://packages.pfsense.org/packages/config/suricata/widget-suricata.inc ['installedpackages']['suricata'] diff --git a/config/syslog-ng/syslog-ng.xml b/config/syslog-ng/syslog-ng.xml index dbdd4a8d..37df86ec 100644 --- a/config/syslog-ng/syslog-ng.xml +++ b/config/syslog-ng/syslog-ng.xml @@ -74,17 +74,17 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/syslog-ng/syslog-ng.inc + https://packages.pfsense.org/packages/config/syslog-ng/syslog-ng.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/syslog-ng/syslog-ng_advanced.xml + https://packages.pfsense.org/packages/config/syslog-ng/syslog-ng_advanced.xml /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/syslog-ng/syslog-ng_log_viewer.php + https://packages.pfsense.org/packages/config/syslog-ng/syslog-ng_log_viewer.php diff --git a/config/systempatches/systempatches.xml b/config/systempatches/systempatches.xml index 73974af0..23b0795b 100644 --- a/config/systempatches/systempatches.xml +++ b/config/systempatches/systempatches.xml @@ -52,22 +52,22 @@ /usr/local/www/ 644 - http://www.pfsense.com/packages/config/systempatches/system_patches.php + https://packages.pfsense.org/packages/config/systempatches/system_patches.php /usr/local/www/ 644 - http://www.pfsense.com/packages/config/systempatches/system_patches_edit.php + https://packages.pfsense.org/packages/config/systempatches/system_patches_edit.php /usr/local/bin/ 755 - http://www.pfsense.com/packages/config/systempatches/apply_patches.php + https://packages.pfsense.org/packages/config/systempatches/apply_patches.php /usr/local/pkg/ 644 - http://www.pfsense.com/packages/config/systempatches/patches.inc + https://packages.pfsense.org/packages/config/systempatches/patches.inc patch_package_install(); diff --git a/config/test_package/test_package.xml b/config/test_package/test_package.xml index 192a2d54..3e268fee 100644 --- a/config/test_package/test_package.xml +++ b/config/test_package/test_package.xml @@ -90,47 +90,47 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort/snort.inc + https://packages.pfsense.org/packages/config/snort/snort.inc /usr/local/bin/ 077 - http://www.pfsense.com/packages/config/snort/bin/snort2c + https://packages.pfsense.org/packages/config/snort/bin/snort2c /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort/snort_download_rules.php + https://packages.pfsense.org/packages/config/snort/snort_download_rules.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort/snort_rulesets.php + https://packages.pfsense.org/packages/config/snort/snort_rulesets.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort/snort_whitelist.xml + https://packages.pfsense.org/packages/config/snort/snort_whitelist.xml /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort/snort_blocked.php + https://packages.pfsense.org/packages/config/snort/snort_blocked.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/snort/snort_check_for_rule_updates.php + https://packages.pfsense.org/packages/config/snort/snort_check_for_rule_updates.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/snort/snort_alerts.php + https://packages.pfsense.org/packages/config/snort/snort_alerts.php /usr/local/pkg/pf/ 077 - http://www.pfsense.com/packages/config/snort/snort_dynamic_ip_reload.php + https://packages.pfsense.org/packages/config/snort/snort_dynamic_ip_reload.php diff --git a/config/tftp/tftp.xml b/config/tftp/tftp.xml index d6becc6d..18cf2e5a 100644 --- a/config/tftp/tftp.xml +++ b/config/tftp/tftp.xml @@ -67,12 +67,12 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/tftp/tftp.inc + https://packages.pfsense.org/packages/config/tftp/tftp.inc /tmp/ 0755 - http://www.pfsense.com/packages/config/tftp/tftp_files.tmp + https://packages.pfsense.org/packages/config/tftp/tftp_files.tmp diff --git a/config/tftp2/tftp.xml b/config/tftp2/tftp.xml index 64f81acf..0a13548c 100644 --- a/config/tftp2/tftp.xml +++ b/config/tftp2/tftp.xml @@ -66,12 +66,12 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/tftp2/tftp.inc + https://packages.pfsense.org/packages/config/tftp2/tftp.inc /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/tftp2/tftp_files.php + https://packages.pfsense.org/packages/config/tftp2/tftp_files.php tftp_install_command(); diff --git a/config/tinc/tinc.xml b/config/tinc/tinc.xml index 7c067361..f016dd41 100644 --- a/config/tinc/tinc.xml +++ b/config/tinc/tinc.xml @@ -62,27 +62,27 @@ /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/tinc/tinc.inc + https://packages.pfsense.org/packages/config/tinc/tinc.inc /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/tinc/tinc_config.xml + https://packages.pfsense.org/packages/config/tinc/tinc_config.xml /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/tinc/tinc_hosts.xml + https://packages.pfsense.org/packages/config/tinc/tinc_hosts.xml /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/tinc/status_tinc.php + https://packages.pfsense.org/packages/config/tinc/status_tinc.php /usr/local/www/shortcuts/ 0644 - http://www.pfsense.com/packages/config/tinc/pkg_tinc.inc + https://packages.pfsense.org/packages/config/tinc/pkg_tinc.inc diff --git a/config/tinydns/tinydns.xml b/config/tinydns/tinydns.xml index 546980f1..fa80953c 100644 --- a/config/tinydns/tinydns.xml +++ b/config/tinydns/tinydns.xml @@ -95,62 +95,62 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns.inc + https://packages.pfsense.org/packages/config/tinydns/tinydns.inc /usr/local/pkg/pf/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_xmlrpc_sync.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_xmlrpc_sync.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_domains.xml + https://packages.pfsense.org/packages/config/tinydns/tinydns_domains.xml /usr/local/www/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_status.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_status.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_dhcp_filter.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_dhcp_filter.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_filter.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_filter.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_down.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_down.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_up.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_up.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_parse_logs.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_parse_logs.php /usr/local/www/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_view_logs.php + https://packages.pfsense.org/packages/config/tinydns/tinydns_view_logs.php /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/tinydns/tinydns_sync.xml + https://packages.pfsense.org/packages/config/tinydns/tinydns_sync.xml /usr/local/www/wizards/ 077 - http://www.pfsense.com/packages/config/tinydns/new_zone_wizard.xml + https://packages.pfsense.org/packages/config/tinydns/new_zone_wizard.xml diff --git a/config/tinydns/tinydns_status.php b/config/tinydns/tinydns_status.php index 3a4b8545..b6061a60 100644 --- a/config/tinydns/tinydns_status.php +++ b/config/tinydns/tinydns_status.php @@ -2,7 +2,7 @@ /* $Id$ */ /* tinydns_status.php - part of pfSense (http://www.pfsense.com/) + part of pfSense (https://www.pfsense.org/) Copyright (C) 2006 Scott Ullrich All rights reserved. diff --git a/config/tinydns/tinydns_view_logs.php b/config/tinydns/tinydns_view_logs.php index 66fed993..dc359451 100644 --- a/config/tinydns/tinydns_view_logs.php +++ b/config/tinydns/tinydns_view_logs.php @@ -2,7 +2,7 @@ /* $Id$ */ /* tinydns_view_logs.php - part of pfSense (http://www.pfsense.com/) + part of pfSense (https://www.pfsense.org/) Copyright (C) 2006 Scott Ullrich All rights reserved. diff --git a/config/unbound/unbound.xml b/config/unbound/unbound.xml index 20f3d250..21f9455f 100644 --- a/config/unbound/unbound.xml +++ b/config/unbound/unbound.xml @@ -58,27 +58,27 @@ /usr/local/pkg/ 0644 - http://www.pfsense.org/packages/config/unbound/unbound.inc + https://packages.pfsense.org/packages/config/unbound/unbound.inc /usr/local/www/ 0644 - http://www.pfsense.org/packages/config/unbound/unbound_status.php + https://packages.pfsense.org/packages/config/unbound/unbound_status.php /usr/local/www/ 0644 - http://www.pfsense.org/packages/config/unbound/unbound_acls.php + https://packages.pfsense.org/packages/config/unbound/unbound_acls.php /usr/local/pkg/ 0644 - http://www.pfsense.org/packages/config/unbound/unbound_advanced.xml + https://packages.pfsense.org/packages/config/unbound/unbound_advanced.xml /usr/local/bin/ 0755 - http://www.pfsense.org/packages/config/unbound/unbound_monitor.sh + https://packages.pfsense.org/packages/config/unbound/unbound_monitor.sh diff --git a/config/unbound/unbound_acls.php b/config/unbound/unbound_acls.php index 59738aab..aef1f3d1 100644 --- a/config/unbound/unbound_acls.php +++ b/config/unbound/unbound_acls.php @@ -2,7 +2,7 @@ /* $Id$ */ /* unbound_acls.php - part of pfSense (http://www.pfsense.com/) + part of pfSense (https://www.pfsense.org/) Copyright (C) 2011 Warren Baker All rights reserved. diff --git a/config/unbound/unbound_status.php b/config/unbound/unbound_status.php index d7371f29..8a362c2b 100644 --- a/config/unbound/unbound_status.php +++ b/config/unbound/unbound_status.php @@ -2,7 +2,7 @@ /* $Id$ */ /* unbound_status.php - part of pfSense (http://www.pfsense.com/) + part of pfSense (https://www.pfsense.org/) Copyright (C) 2010 Scott Ullrich All rights reserved. diff --git a/config/urltables/urltables.xml b/config/urltables/urltables.xml index 16fe50c3..c9a9062b 100644 --- a/config/urltables/urltables.xml +++ b/config/urltables/urltables.xml @@ -52,12 +52,12 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/urltables/urltables.inc + https://packages.pfsense.org/packages/config/urltables/urltables.inc /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/urltables/urltables.patch + https://packages.pfsense.org/packages/config/urltables/urltables.patch urltables_install(); diff --git a/config/varnish3/varnish.widget.php b/config/varnish3/varnish.widget.php index 35980db5..35723e95 100755 --- a/config/varnish3/varnish.widget.php +++ b/config/varnish3/varnish.widget.php @@ -2,7 +2,7 @@ /* Copyright 2011 Thomas Schaefer - Tomschaefer.org Copyright 2011 Marcello Coutinho - Part of pfSense widgets (www.pfsense.com) + Part of pfSense widgets (www.pfsense.org) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/config/varnish3/varnish_backends.xml b/config/varnish3/varnish_backends.xml index 58216279..b2214772 100644 --- a/config/varnish3/varnish_backends.xml +++ b/config/varnish3/varnish_backends.xml @@ -48,47 +48,47 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnish_lb_directors.xml + https://packages.pfsense.org/packages/config/varnish3/varnish_lb_directors.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnish_settings.xml + https://packages.pfsense.org/packages/config/varnish3/varnish_settings.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnish_custom_vcl.xml + https://packages.pfsense.org/packages/config/varnish3/varnish_custom_vcl.xml /usr/local/www/widgets/widgets/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnish.widget.php + https://packages.pfsense.org/packages/config/varnish3/varnish.widget.php /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnish.inc + https://packages.pfsense.org/packages/config/varnish3/varnish.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnish_sync.xml + https://packages.pfsense.org/packages/config/varnish3/varnish_sync.xml /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnish_view_config.php + https://packages.pfsense.org/packages/config/varnish3/varnish_view_config.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/varnish3/varnishstat.php + https://packages.pfsense.org/packages/config/varnish3/varnishstat.php /usr/local/www/shortcuts/ 0755 - http://www.pfsense.org/packages/config/varnish3/pkg_varnish.inc + https://packages.pfsense.org/packages/config/varnish3/pkg_varnish.inc Varnish diff --git a/config/varnish3/varnish_lb_directors.xml b/config/varnish3/varnish_lb_directors.xml index 99a945d5..b2a19ac3 100644 --- a/config/varnish3/varnish_lb_directors.xml +++ b/config/varnish3/varnish_lb_directors.xml @@ -49,17 +49,17 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_settings.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_settings.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_custom_vcl.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_custom_vcl.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish.inc + https://packages.pfsense.org/packages/config/varnish64/varnish.inc Varnish diff --git a/config/varnish3/varnish_view_config.php b/config/varnish3/varnish_view_config.php index 2e449b51..15c68447 100644 --- a/config/varnish3/varnish_view_config.php +++ b/config/varnish3/varnish_view_config.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/varnish3/varnishstat.php b/config/varnish3/varnishstat.php index 6374525a..9fe3d77d 100644 --- a/config/varnish3/varnishstat.php +++ b/config/varnish3/varnishstat.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/varnish64/varnish.widget.php b/config/varnish64/varnish.widget.php index 35980db5..35723e95 100755 --- a/config/varnish64/varnish.widget.php +++ b/config/varnish64/varnish.widget.php @@ -2,7 +2,7 @@ /* Copyright 2011 Thomas Schaefer - Tomschaefer.org Copyright 2011 Marcello Coutinho - Part of pfSense widgets (www.pfsense.com) + Part of pfSense widgets (www.pfsense.org) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/config/varnish64/varnish_backends.xml b/config/varnish64/varnish_backends.xml index d6aaa261..fa549063 100644 --- a/config/varnish64/varnish_backends.xml +++ b/config/varnish64/varnish_backends.xml @@ -48,42 +48,42 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_lb_directors.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_lb_directors.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_settings.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_settings.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_custom_vcl.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_custom_vcl.xml /usr/local/www/widgets/widgets/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish.widget.php + https://packages.pfsense.org/packages/config/varnish64/varnish.widget.php /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish.inc + https://packages.pfsense.org/packages/config/varnish64/varnish.inc /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_sync.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_sync.xml /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_view_config.php + https://packages.pfsense.org/packages/config/varnish64/varnish_view_config.php /usr/local/www/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnishstat.php + https://packages.pfsense.org/packages/config/varnish64/varnishstat.php Varnish diff --git a/config/varnish64/varnish_lb_directors.xml b/config/varnish64/varnish_lb_directors.xml index 4c46414e..e7a442ab 100644 --- a/config/varnish64/varnish_lb_directors.xml +++ b/config/varnish64/varnish_lb_directors.xml @@ -49,17 +49,17 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_settings.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_settings.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish_custom_vcl.xml + https://packages.pfsense.org/packages/config/varnish64/varnish_custom_vcl.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/varnish64/varnish.inc + https://packages.pfsense.org/packages/config/varnish64/varnish.inc Varnish diff --git a/config/varnish64/varnish_view_config.php b/config/varnish64/varnish_view_config.php index 2e449b51..15c68447 100644 --- a/config/varnish64/varnish_view_config.php +++ b/config/varnish64/varnish_view_config.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/varnish64/varnishstat.php b/config/varnish64/varnishstat.php index 6374525a..9fe3d77d 100644 --- a/config/varnish64/varnishstat.php +++ b/config/varnish64/varnishstat.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/vhosts/vhosts.inc b/config/vhosts/vhosts.inc index 651b79b2..aa602fdd 100644 --- a/config/vhosts/vhosts.inc +++ b/config/vhosts/vhosts.inc @@ -736,31 +736,31 @@ function vhosts_install_command() { if(stristr(php_uname('r'), '7.2') == TRUE) { if (!file_exists('/usr/local/php5')) { chdir('/usr/local/'); - exec ("fetch http://files.pfsense.org/packages/7/vhosts/php5.tar.gz"); + exec ("fetch https://files.pfsense.org/packages/7/vhosts/php5.tar.gz"); exec("tar zxvf /usr/local/php5.tar.gz -C /usr/local/"); exec("rm /usr/local/php5.tar.gz"); } if (!file_exists('/usr/local/lib/libxml2.so.5')) { chdir('/usr/local/lib/'); - exec ("fetch http://files.pfsense.org/packages/7/vhosts/usr.local.lib/libxml2.so.5"); + exec ("fetch https://files.pfsense.org/packages/7/vhosts/usr.local.lib/libxml2.so.5"); } if (!file_exists('/usr/local/lib/libxml2.so')) { chdir('/usr/local/lib/'); - exec ("fetch http://files.pfsense.org/packages/7/vhosts/usr.local.lib/libxml2.so"); + exec ("fetch https://files.pfsense.org/packages/7/vhosts/usr.local.lib/libxml2.so"); } if (!file_exists('/usr/local/lib/libxml2.la')) { chdir('/usr/local/lib/'); - exec ("fetch http://files.pfsense.org/packages/7/vhosts/usr.local.lib/libxml2.la"); + exec ("fetch https://files.pfsense.org/packages/7/vhosts/usr.local.lib/libxml2.la"); } if (!file_exists('/usr/local/lib/libxml2.a')) { chdir('/usr/local/lib/'); - exec ("fetch http://files.pfsense.org/packages/7/vhosts/usr.local.lib/lib/libxml2.a"); + exec ("fetch https://files.pfsense.org/packages/7/vhosts/usr.local.lib/lib/libxml2.a"); } } if(stristr(php_uname('r'), '8.1') == TRUE) { if (!file_exists('/usr/local/php5')) { chdir('/usr/local/'); - exec ("fetch http://files.pfsense.org/packages/8/vhosts/php5.tar.gz"); + exec ("fetch https://files.pfsense.org/packages/8/vhosts/php5.tar.gz"); exec("tar zxvf /usr/local/php5.tar.gz -C /usr/local/"); exec("rm /usr/local/php5.tar.gz"); } @@ -774,7 +774,7 @@ function vhosts_install_command() { unlink_if_exists("/tmp/vhosts_php_edit.tmp"); chdir('/tmp/'); - exec ("fetch http://www.pfsense.com/packages/config/vhosts/system_advanced_create_certs.tmp"); + exec ("fetch https://packages.pfsense.org/packages/config/vhosts/system_advanced_create_certs.tmp"); exec("cp /tmp/system_advanced_create_certs.tmp /usr/local/www/packages/vhosts/system_advanced_create_certs.php"); unlink_if_exists("/tmp/system_advanced_create_certs.tmp"); diff --git a/config/vhosts/vhosts.xml b/config/vhosts/vhosts.xml index 9bfb73e0..91c50079 100644 --- a/config/vhosts/vhosts.xml +++ b/config/vhosts/vhosts.xml @@ -73,22 +73,22 @@ /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/vhosts/vhosts.xml + https://packages.pfsense.org/packages/config/vhosts/vhosts.xml /usr/local/pkg/ 0755 - http://www.pfsense.com/packages/config/vhosts/vhosts.inc + https://packages.pfsense.org/packages/config/vhosts/vhosts.inc /tmp/ 0755 - http://www.pfsense.com/packages/config/vhosts/vhosts_php.tmp + https://packages.pfsense.org/packages/config/vhosts/vhosts_php.tmp /tmp/ 0755 - http://www.pfsense.com/packages/config/vhosts/vhosts_php_edit.tmp + https://packages.pfsense.org/packages/config/vhosts/vhosts_php_edit.tmp diff --git a/config/vhosts/vhosts_php.tmp b/config/vhosts/vhosts_php.tmp index 09b20ef7..d2777dc9 100644 --- a/config/vhosts/vhosts_php.tmp +++ b/config/vhosts/vhosts_php.tmp @@ -82,7 +82,7 @@ include("head.inc"); System -> Advanced -> Enable Secure Shell. Then SFTP can be used to access the files at /usr/local/vhosts. After adding or updating an entry make sure to restart the service to apply the settings.

    - For more information see: http://doc.pfsense.org/index.php/vhosts + For more information see: https://doc.pfsense.org/index.php/vhosts

    diff --git a/config/vnstat/vnstat.xml b/config/vnstat/vnstat.xml index 63a121a0..6e3ae3ac 100644 --- a/config/vnstat/vnstat.xml +++ b/config/vnstat/vnstat.xml @@ -20,12 +20,12 @@ /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/vnstat/vnstat.inc + https://packages.pfsense.org/packages/config/vnstat/vnstat.inc /usr/local/pkg/ 0644 - http://files.pfsense.org/packages/7/vnstat/vnstat_php_frontend-1.4.1.tar.gz + https://files.pfsense.org/packages/7/vnstat/vnstat_php_frontend-1.4.1.tar.gz vnstat_install_config(); diff --git a/config/vnstat2/vnstat2.xml b/config/vnstat2/vnstat2.xml index 9bca9726..ab07f004 100644 --- a/config/vnstat2/vnstat2.xml +++ b/config/vnstat2/vnstat2.xml @@ -43,157 +43,157 @@ /usr/local/pkg/vnstat2/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat2.inc + https://packages.pfsense.org/packages/config/vnstat2/vnstat2.inc /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstati.xml + https://packages.pfsense.org/packages/config/vnstat2/vnstati.xml /usr/local/pkg/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstatoutput.xml + https://packages.pfsense.org/packages/config/vnstat2/vnstatoutput.xml /usr/local/pkg/vnstat2/ 0744 - http://www.pfsense.com/packages/config/vnstat2/vnstat2.sh + https://packages.pfsense.org/packages/config/vnstat2/vnstat2.sh /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/www/diag_vnstat.php + https://packages.pfsense.org/packages/config/vnstat2/www/diag_vnstat.php /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/www/diag_vnstat2.php + https://packages.pfsense.org/packages/config/vnstat2/www/diag_vnstat2.php /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/www/vnstat2_img.php + https://packages.pfsense.org/packages/config/vnstat2/www/vnstat2_img.php /usr/local/www/ 0644 - http://www.pfsense.com/packages/config/vnstat2/www/vnstati.php + https://packages.pfsense.org/packages/config/vnstat2/www/vnstati.php /usr/local/pkg/vnstat2/vnstat_php_frontend/lang/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/lang/cs.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/lang/cs.php /usr/local/pkg/vnstat2/vnstat_php_frontend/lang/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/lang/en.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/lang/en.php /usr/local/pkg/vnstat2/vnstat_php_frontend/lang/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/lang/nl.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/lang/nl.php /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/dark/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/dark/style.css + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/dark/style.css /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/dark/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/dark/theme.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/dark/theme.php /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/espresso/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/style.css + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/style.css /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/espresso/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/espresso/theme.php /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/light/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/light/style.css + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/light/style.css /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/light/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/light/theme.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/light/theme.php /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/pfSense/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/style.css /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/pfSense/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/pfSense/theme.php /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/red/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/red/style.css + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/red/style.css /usr/local/pkg/vnstat2/vnstat_php_frontend/themes/red/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/themes/red/theme.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/themes/red/theme.php /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/config.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/config.php /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/COPYING + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/COPYING /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/graph.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/graph.php /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/graph_svg.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/graph_svg.php /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/index.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/index.php /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/localize.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/localize.php /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/README + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/README /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/vera_copyright.txt + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/vera_copyright.txt /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/VeraBd.ttf + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/VeraBd.ttf /usr/local/pkg/vnstat2/vnstat_php_frontend/ 0644 - http://www.pfsense.com/packages/config/vnstat2/vnstat_php_frontend/vnstat.php + https://packages.pfsense.org/packages/config/vnstat2/vnstat_php_frontend/vnstat.php diff --git a/config/widescreen/bin/fbegin.inc_ b/config/widescreen/bin/fbegin.inc_ index a7a96e0f..73f26aaa 100644 --- a/config/widescreen/bin/fbegin.inc_ +++ b/config/widescreen/bin/fbegin.inc_ @@ -211,13 +211,13 @@ $diagnostics_menu = msort(array_merge($diagnostics_menu, return_ext_menu("Diagno if(! $g['disablehelpmenu']) { $help_menu = array(); $help_menu[] = array("About this Page", $helpurl); - $help_menu[] = array("User Forum", "http://www.pfsense.org/j.php?jumpto=forum"); - $help_menu[] = array("Documentation", "http://www.pfsense.org/j.php?jumpto=doc"); - $help_menu[] = array("Developers Wiki", "http://www.pfsense.org/j.php?jumpto=devwiki"); - $help_menu[] = array("Paid Support", "http://www.pfsense.org/j.php?jumpto=portal"); - $help_menu[] = array("pfSense Book", "http://www.pfsense.org/j.php?jumpto=book"); - $help_menu[] = array("Search portal", "http://www.pfsense.org/j.php?jumpto=searchportal"); - $help_menu[] = array("FreeBSD Handbook", "http://www.pfsense.org/j.php?jumpto=fbsdhandbook"); + $help_menu[] = array("User Forum", "https://www.pfsense.org/j.php?jumpto=forum"); + $help_menu[] = array("Documentation", "https://www.pfsense.org/j.php?jumpto=doc"); + $help_menu[] = array("Developers Wiki", "https://www.pfsense.org/j.php?jumpto=devwiki"); + $help_menu[] = array("Paid Support", "https://www.pfsense.org/j.php?jumpto=portal"); + $help_menu[] = array("pfSense Book", "https://www.pfsense.org/j.php?jumpto=book"); + $help_menu[] = array("Search portal", "https://www.pfsense.org/j.php?jumpto=searchportal"); + $help_menu[] = array("FreeBSD Handbook", "https://www.pfsense.org/j.php?jumpto=fbsdhandbook"); $help_menu = msort(array_merge($help_menu, return_ext_menu("Help")),0); } diff --git a/config/widescreen/widescreen.xml b/config/widescreen/widescreen.xml index 98dd9daa..0692b533 100644 --- a/config/widescreen/widescreen.xml +++ b/config/widescreen/widescreen.xml @@ -10,57 +10,57 @@ /usr/local/pkg/widescreen/ 077 - http://www.pfsense.org/packages/config/widescreen/widescreen.inc + https://packages.pfsense.org/packages/config/widescreen/widescreen.inc /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/all.css_ + https://packages.pfsense.org/packages/config/widescreen/bin/all.css_ /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/fbegin.inc_ + https://packages.pfsense.org/packages/config/widescreen/bin/fbegin.inc_ /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/fend.inc_ + https://packages.pfsense.org/packages/config/widescreen/bin/fend.inc_ /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/footer-left.png + https://packages.pfsense.org/packages/config/widescreen/bin/footer-left.png /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/footer-middle.png + https://packages.pfsense.org/packages/config/widescreen/bin/footer-middle.png /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/footer-right.png + https://packages.pfsense.org/packages/config/widescreen/bin/footer-right.png /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/header-mid.png + https://packages.pfsense.org/packages/config/widescreen/bin/header-mid.png /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/horiz-left.png + https://packages.pfsense.org/packages/config/widescreen/bin/horiz-left.png /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/horiz-right.png + https://packages.pfsense.org/packages/config/widescreen/bin/horiz-right.png /usr/local/pkg/widescreen/ 644 - http://www.pfsense.org/packages/config/widescreen/bin/index.php_ + https://packages.pfsense.org/packages/config/widescreen/bin/index.php_ widescreen_custom_php_install_command(); diff --git a/config/widget-antivirus/antivirus_status.widget.php b/config/widget-antivirus/antivirus_status.widget.php index c08ffeb8..6bca68a2 100644 --- a/config/widget-antivirus/antivirus_status.widget.php +++ b/config/widget-antivirus/antivirus_status.widget.php @@ -2,7 +2,7 @@ /* $Id: antivirus_statistics.widget.php Copyright (C) 2010 Serg Dvoriancev . - Part of pfSense widgets (www.pfsense.com) + Part of pfSense widgets (www.pfsense.org) originally based on m0n0wall (http://m0n0.ch/wall) Copyright (C) 2004-2005 T. Lechat , Manuel Kasper diff --git a/config/widget-antivirus/widget-antivirus.xml b/config/widget-antivirus/widget-antivirus.xml index 90580769..468baf13 100644 --- a/config/widget-antivirus/widget-antivirus.xml +++ b/config/widget-antivirus/widget-antivirus.xml @@ -52,17 +52,17 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/widget-antivirus/widget-antivirus.inc + https://packages.pfsense.org/packages/config/widget-antivirus/widget-antivirus.inc /usr/local/www/widgets/include/ 0644 - http://www.pfsense.com/packages/config/widget-antivirus/antivirus_status.inc + https://packages.pfsense.org/packages/config/widget-antivirus/antivirus_status.inc /usr/local/www/widgets/widgets/ 0644 - http://www.pfsense.com/packages/config/widget-antivirus/antivirus_status.widget.php + https://packages.pfsense.org/packages/config/widget-antivirus/antivirus_status.widget.php widget_antivirus_uninstall(); diff --git a/config/widget-havp/widget-havp.xml b/config/widget-havp/widget-havp.xml index cb127f36..f99d99de 100644 --- a/config/widget-havp/widget-havp.xml +++ b/config/widget-havp/widget-havp.xml @@ -52,32 +52,32 @@ /usr/local/pkg/ 077 - http://www.pfsense.com/packages/config/widget-havp/widget-havp.inc + https://packages.pfsense.org/packages/config/widget-havp/widget-havp.inc /usr/local/www/includes/ 0644 - http://www.pfsense.com/packages/config/widget-havp/havp_alerts.inc.php + https://packages.pfsense.org/packages/config/widget-havp/havp_alerts.inc.php /usr/local/www/widgets/helpers/ 0644 - http://www.pfsense.com/packages/config/widget-havp/havp_alerts_helper.php + https://packages.pfsense.org/packages/config/widget-havp/havp_alerts_helper.php /usr/local/www/widgets/include/ 0644 - http://www.pfsense.com/packages/config/widget-havp/havp_alerts.inc + https://packages.pfsense.org/packages/config/widget-havp/havp_alerts.inc /usr/local/www/widgets/javascript/ 0644 - http://www.pfsense.com/packages/config/widget-havp/havp_alerts.js + https://packages.pfsense.org/packages/config/widget-havp/havp_alerts.js /usr/local/www/widgets/widgets/ 0644 - http://www.pfsense.com/packages/config/widget-havp/havp_alerts.widget.php + https://packages.pfsense.org/packages/config/widget-havp/havp_alerts.widget.php widget_havp_uninstall(); diff --git a/config/widget-snort/widget-snort.xml b/config/widget-snort/widget-snort.xml index 1a371ca5..959f9529 100644 --- a/config/widget-snort/widget-snort.xml +++ b/config/widget-snort/widget-snort.xml @@ -52,17 +52,17 @@ /usr/local/www/widgets/javascript/ 0644 - http://www.pfsense.com/packages/config/widget-snort/snort_alerts.js + https://packages.pfsense.org/packages/config/widget-snort/snort_alerts.js /usr/local/www/widgets/widgets/ 0644 - http://www.pfsense.com/packages/config/widget-snort/snort_alerts.widget.php + https://packages.pfsense.org/packages/config/widget-snort/snort_alerts.widget.php /usr/local/www/widgets/include/ 0644 - http://www.pfsense.com/packages/config/widget-snort/widget-snort.inc + https://packages.pfsense.org/packages/config/widget-snort/widget-snort.inc widget_snort_uninstall(); diff --git a/config/zabbix2/zabbix2-agent.xml b/config/zabbix2/zabbix2-agent.xml index 9dc11bbd..24b7bd01 100644 --- a/config/zabbix2/zabbix2-agent.xml +++ b/config/zabbix2/zabbix2-agent.xml @@ -47,7 +47,7 @@ Zabbix Agent has been deleted. /usr/local/etc/rc.d/zabbix2_agentd.sh restart - http://www.pfsense.org/packages/config/zabbix2/zabbix2.inc + https://packages.pfsense.org/packages/config/zabbix2/zabbix2.inc /usr/local/pkg/ 0755 diff --git a/config/zabbix2/zabbix2-proxy.xml b/config/zabbix2/zabbix2-proxy.xml index 369443ba..ebcb5bb0 100644 --- a/config/zabbix2/zabbix2-proxy.xml +++ b/config/zabbix2/zabbix2-proxy.xml @@ -47,7 +47,7 @@ Zabbix Proxy has been deleted. /usr/local/etc/rc.d/zabbix2_proxy.sh restart - http://www.pfsense.org/packages/config/zabbix2/zabbix2.inc + https://packages.pfsense.org/packages/config/zabbix2/zabbix2.inc /usr/local/pkg/ 0755 diff --git a/config/zebedee/zebedee.xml b/config/zebedee/zebedee.xml index b56fa1a6..db7bfddf 100644 --- a/config/zebedee/zebedee.xml +++ b/config/zebedee/zebedee.xml @@ -62,52 +62,52 @@ Tunneling Service - http://www.pfsense.org/packages/config/zebedee/zebedee.inc + https://packages.pfsense.org/packages/config/zebedee/zebedee.inc /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_tunnels.xml + https://packages.pfsense.org/packages/config/zebedee/zebedee_tunnels.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_key_details.xml + https://packages.pfsense.org/packages/config/zebedee/zebedee_key_details.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_sync.xml + https://packages.pfsense.org/packages/config/zebedee/zebedee_sync.xml /usr/local/pkg/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_del_key.php + https://packages.pfsense.org/packages/config/zebedee/zebedee_del_key.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_get_key.php + https://packages.pfsense.org/packages/config/zebedee/zebedee_get_key.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_keys.php + https://packages.pfsense.org/packages/config/zebedee/zebedee_keys.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_log.php + https://packages.pfsense.org/packages/config/zebedee/zebedee_log.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee_view_config.php + https://packages.pfsense.org/packages/config/zebedee/zebedee_view_config.php /usr/local/www/ 0755 - http://www.pfsense.org/packages/config/zebedee/zebedee.sh + https://packages.pfsense.org/packages/config/zebedee/zebedee.sh /usr/local/etc/rc.d/ 0755 diff --git a/config/zebedee/zebedee_del_key.php b/config/zebedee/zebedee_del_key.php index e6cfa955..49688fd3 100644 --- a/config/zebedee/zebedee_del_key.php +++ b/config/zebedee/zebedee_del_key.php @@ -1,7 +1,7 @@ Copyright (C) 2010 Marcello Coutinho Copyright (C) 2010 Jorge Lustosa diff --git a/config/zebedee/zebedee_keys.php b/config/zebedee/zebedee_keys.php index 14b39078..1ff7d06e 100644 --- a/config/zebedee/zebedee_keys.php +++ b/config/zebedee/zebedee_keys.php @@ -1,7 +1,7 @@ Copyright (C) 2010 Marcello Coutinho Copyright (C) 2010 Jorge Lustosa diff --git a/config/zebedee/zebedee_log.php b/config/zebedee/zebedee_log.php index e397ca08..784ad93e 100644 --- a/config/zebedee/zebedee_log.php +++ b/config/zebedee/zebedee_log.php @@ -1,7 +1,7 @@ All rights reserved. diff --git a/config/zebedee/zebedee_view_config.php b/config/zebedee/zebedee_view_config.php index 78a0bca9..1d57d8eb 100644 --- a/config/zebedee/zebedee_view_config.php +++ b/config/zebedee/zebedee_view_config.php @@ -1,7 +1,7 @@ All rights reserved. -- cgit v1.2.3