diff options
author | Scott Ullrich <sullrich@pfsense.org> | 2007-01-28 21:15:08 +0000 |
---|---|---|
committer | Scott Ullrich <sullrich@pfsense.org> | 2007-01-28 21:15:08 +0000 |
commit | 0c0aba8c123dc151f84a403d22a8d0e7f2b00264 (patch) | |
tree | 9e3daefc443498525ee5c8bc5a45c2a4999df393 /packages/tinydns | |
parent | 0c184d3eb972ce257b9b8c8ac4783f4dd88282e6 (diff) | |
download | pfsense-packages-0c0aba8c123dc151f84a403d22a8d0e7f2b00264.tar.gz pfsense-packages-0c0aba8c123dc151f84a403d22a8d0e7f2b00264.tar.bz2 pfsense-packages-0c0aba8c123dc151f84a403d22a8d0e7f2b00264.zip |
Add generic tinydns log viewer.
Many thanks to Billm for working out the hex foo
Diffstat (limited to 'packages/tinydns')
-rw-r--r-- | packages/tinydns/tinydns.xml | 14 | ||||
-rw-r--r-- | packages/tinydns/tinydns_domains.xml | 4 | ||||
-rw-r--r-- | packages/tinydns/tinydns_parse_logs.php | 96 | ||||
-rw-r--r-- | packages/tinydns/tinydns_view_logs.php | 73 |
4 files changed, 187 insertions, 0 deletions
diff --git a/packages/tinydns/tinydns.xml b/packages/tinydns/tinydns.xml index 1800cca8..e355f335 100644 --- a/packages/tinydns/tinydns.xml +++ b/packages/tinydns/tinydns.xml @@ -24,6 +24,10 @@ <text>Status</text> <url>/tinydns_status.php</url> </tab> + <tab> + <text>Logs</text> + <url>/tinydns_view_logs.php</url> + </tab> </tabs> <aftersaveredirect>/pkg_edit.php?xml=tinydns.xml&id=0</aftersaveredirect> <additional_files_needed> @@ -61,6 +65,16 @@ <chmod>077</chmod> <item>http://www.pfsense.com/packages/config/tinydns/tinydns_up.php</item> </additional_files_needed> + <additional_files_needed> + <prefix>/usr/local/pkg/</prefix> + <chmod>077</chmod> + <item>http://www.pfsense.com/packages/config/tinydns/tinydns_parse_logs.php</item> + </additional_files_needed> + <additional_files_needed> + <prefix>/usr/local/www/</prefix> + <chmod>077</chmod> + <item>http://www.pfsense.com/packages/config/tinydns/tinydns_view_logs.php</item> + </additional_files_needed> <custom_php_install_command> tinydns_custom_php_install_command(); </custom_php_install_command> diff --git a/packages/tinydns/tinydns_domains.xml b/packages/tinydns/tinydns_domains.xml index 75e3c186..acb39e8b 100644 --- a/packages/tinydns/tinydns_domains.xml +++ b/packages/tinydns/tinydns_domains.xml @@ -18,6 +18,10 @@ <text>Status</text> <url>/tinydns_status.php</url> </tab> + <tab> + <text>Logs</text> + <url>/tinydns_view_logs.php</url> + </tab> </tabs> <adddeleteeditpagefields> <columnitem> diff --git a/packages/tinydns/tinydns_parse_logs.php b/packages/tinydns/tinydns_parse_logs.php new file mode 100644 index 00000000..2b316d4c --- /dev/null +++ b/packages/tinydns/tinydns_parse_logs.php @@ -0,0 +1,96 @@ +#!/usr/local/bin/php +<?php + +/* $Id$ */ +/* + tinydns_parse_logs.inc + Copyright (C) 2006 Scott Ullrich + part of pfSense + 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. +*/ + +$query_type = array( + "0001" => "A", + "0002" => "NS", + "0005" => "CNAME", + "0006" => "SOA", + "000c" => "PTR", + "000f" => "MX", + "0010" => "TXT", + "001c" => "AAAA", + "0021" => "RT", + "0026" => "A6", + "00fb" => "IXFR", + "00fc" => "AXFR", + "00ff" => "*" + ); + +$results = array( + "+" => "responded", + "-" => "not_authority", + "I" => "not_implemented/invalid", + "C" => "wrong_class", + "/" => "not_parsed" + ); + +$fp = fopen('php://stdin', 'r'); + +/* loop through stdin and process text */ +while (!feof($fp)) { + $stdintext = chop(fgets($fp)); + preg_match('/^(\S+ \S+) ([^:]+):([^:]+):([^:]+) (\S+) (\S+) (\S+)$/', $stdintext, $items); + $stamp = $items[1]; + $rawip = $items[2]; + $port = $items[3]; + $id = $items[4]; + $result = $items[5]; + $type = $items[6]; + $name = $items[7]; + if (isset($query_type[$type])) + $qtype = $query_type[$type]; + else + $qtype = $type; + $desc = $results[$result]; + $ip = decodeipaddress($rawip); + //echo "RAWIP: $rawip $ip"; + printf("%s %15.15s:%-4.4s %-8.8s %-24.24s %s\n",$stamp,$ip,hexdec($port),$qtype,$desc,$name); +} + +function decodeipaddress($text) { + preg_match('/(..)(..)(..)(..)/', $text, $hexitems); + $ipaddr = ""; + unset($hexitems[0]); + $isfirst = true; + foreach($hexitems as $hexitem) { + if(!$isfirst) + $ipaddr .= "."; + $ipaddr .= hexdec($hexitem); + $isfirst = false; + } + return $ipaddr; +} + +fclose($fp); + +?>
\ No newline at end of file diff --git a/packages/tinydns/tinydns_view_logs.php b/packages/tinydns/tinydns_view_logs.php new file mode 100644 index 00000000..9e24efc7 --- /dev/null +++ b/packages/tinydns/tinydns_view_logs.php @@ -0,0 +1,73 @@ +<?php +/* $Id$ */ +/* + tinydns_view_logs.php + part of pfSense (http://www.pfsense.com/) + + Copyright (C) 2006 Scott Ullrich <sullrich@gmail.com> + 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"); + +/* Defaults to this page but if no settings are present, redirect to setup page */ +if(!$config['installedpackages']['tinydns']['config'][0]) + Header("Location: /pkg_edit.php?xml=tinydns.xml&id=0"); + +$pgtitle = "TinyDNS: View Logs"; +include("head.inc"); + +$tinydnslogs = `tail /etc/tinydns/log/main/current | /usr/local/bin/tai64nlocal | php -f /usr/local/pkg/tinydns_parse_logs.php`; + +?> +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> +<p class="pgtitle"><?=$pgtitle?></font></p> +<?php if ($savemsg) print_info_box($savemsg); ?> + +<div id="mainlevel"> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> +<?php + $tab_array = array(); + $tab_array[] = array(gettext("Settings"), false, "/pkg_edit.php?xml=tinydns.xml&id=0"); + $tab_array[] = array(gettext("Domains"), false, "/tinydns_filter.php"); + $tab_array[] = array(gettext("Status"), false, "/tinydns_status.php"); + $tab_array[] = array(gettext("Logs"), true, "/tinydns_view_logs.php"); + display_top_tabs($tab_array); +?> +</table> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td class="tabcont" > + <form action="tinydns_status.php" method="post"> + <br> +<pre><?=$tinydnslogs?></pre> + </td> + </tr> +</table> +</div> +<?php include("fend.inc"); ?> +<meta http-equiv="refresh" content="60;url=<?php print $_SERVER['SCRIPT_NAME']; ?>"> +</body> +</html> |