[-]
[+]
|
Added |
fwlogwatch.changes
|
|
[-]
[+]
|
Changed |
fwlogwatch.spec
^
|
|
[-]
[+]
|
Deleted |
fwlogwatch-1.2.tar.gz/contrib/pix-names.sh
^
|
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-if [ -z "$1" ]
-then
- echo "usage: $0 <file containing pix configuration>"
- echo "example: $0 /tftpboot/pix-config.txt >> /etc/hosts"
- exit 1
-fi
-
-grep "^name " "$1" | awk '{print $2" "$3}' | sort -k2
-
-exit 0
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/ChangeLog
^
|
@@ -1,4 +1,17 @@
-$Id: ChangeLog 710 2010-10-10 11:28:41Z bw $
+$Id: ChangeLog 733 2013-05-23 14:04:42Z bw $
+
+Version 1.4 2013-05-23
+- Added IPv6 support to ipfilter parser
+- Added rsyslog timestamp format (RFC5424) to netfilter parser
+- Modified DNS forward resolution to only use same protocol as reverse
+- Various small fixes in parsers and compiler warnings
+
+Version 1.3 2011-11-11
+- Added general IPv6 support, currently only the netfilter parser and dns
+ cache make use of it
+- Added DNS cache initialization with a hosts file
+- Extended Cisco PIX/ASA parser, it also uses the dns cache now
+- Various small fixes
Version 1.2 2010-10-10
- Extended netfilter and Cisco PIX/ASA parsers
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/Makefile
^
|
@@ -1,19 +1,25 @@
-# Copyright (C) 2000-2010 Boris Wesslowski
-# $Id: Makefile 710 2010-10-10 11:28:41Z bw $
+# Copyright (C) 2000-2013 Boris Wesslowski
+# $Id: Makefile 731 2013-05-17 14:15:23Z bw $
# You might want to add -DSHORT_NAMES to CFLAGS if you only intend to analyze
# log formats with short list/chain/branch/interface names like ipchains.
# You can also add -DLOGDOTS if your Cisco log host logs FQDNs and you only
-# want the hostnames in the output.
-# -DHAVE_IPV6 enables IPv6 support for the status web server.
+# want the host names in the output.
+# -DHAVE_ZLIB enables support for gzip compressed files.
+# -DHAVE_GETTEXT enables localization support.
# -DHAVE_ADNS enables support for asynchronous DNS lookups.
# Linux
CC = gcc
CFLAGS = -DHAVE_ZLIB -DHAVE_GETTEXT -pipe -O2 -Wall #-pedantic -Wpointer-arith #-g #-p
-LDFLAGS = #-g #-static -p
+LDFLAGS = -s #-g #-static -p
LIBS = -lcrypt -lz #-ladns #-lc_p
+# Mac OS X
+#CC = gcc
+#CFLAGS = -DHAVE_ZLIB -pipe -O2 -Wall
+#LIBS = -lz
+
# Solaris
#LIBS = -lnsl -lsocket -lcrypt -lz
#
@@ -26,23 +32,23 @@
# OpenBSD
#CC = gcc
-#CFLAGS = -DHAVE_ZLIB -DHAVE_GETTEXT -pipe -O2 -Wall -I/usr/include
-#LIBS = -L/usr/lib -lz -lintl
+#CFLAGS = -DHAVE_ZLIB -DHAVE_GETTEXT -pipe -O2 -Wall -I/usr/local/include
+#LIBS = -L/usr/local/lib -lz -lintl
# FreeBSD
#CC = gcc
-#CFLAGS = -DHAVE_ZLIB -DHAVE_GETTEXT -pipe -O2 -Wall -I/usr/include
-#LIBS = -L/usr/lib -lcrypt -lz -lintl
+#CFLAGS = -DHAVE_ZLIB -DHAVE_GETTEXT -pipe -O2 -Wall -I/usr/local/include
+#LIBS = -L/usr/local/lib -lcrypt -lz -lintl
LEX = flex
LFLAGS = -B --nounput #-f #-p -p -d
INSTALL = install
-INSTALL_PROGRAM = $(INSTALL) -s -m 0755
+INSTALL_PROGRAM = $(INSTALL) -m 0755
INSTALL_SCRIPT = $(INSTALL) -m 0755
INSTALL_DATA = $(INSTALL) -m 0644
-INSTALL_DIR = /usr
+INSTALL_DIR = /usr/local
CONF_DIR = /etc
LOCALE_DIR = /usr
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/README
^
|
@@ -1,4 +1,4 @@
-$Id: README 710 2010-10-10 11:28:41Z bw $
+$Id: README 724 2012-02-09 14:18:30Z bw $
fwlogwatch is a security tool written in C by Boris Wesslowski originally for
RUS-CERT. It is a packet filter/firewall/IDS log analyzer with support for a
@@ -13,10 +13,10 @@
- Can detect and process log entries in the following formats:
- Linux ipchains
- Linux netfilter/iptables
- - Solaris/BSD/Irix/HP-UX ipfilter
+ - Solaris/BSD/IRIX/HP-UX ipfilter
- BSD ipfw
- Cisco IOS
- - Cisco PIX / FWSM / ASA
+ - Cisco PIX/FWSM/ASA
- NetScreen
- Elsa Lancom router
- Snort IDS
@@ -34,6 +34,8 @@
or excluded as needed.
- Support for internationalization (available in english, german,
portuguese, simplified and traditional chinese, swedish and japanese).
+ - Supports IPv6 (currently only the netfilter parser, dns cache and web
+ interface make use of it).
- Log summary mode:
- A lot of options to find and display relevant patterns in connection
attempts.
@@ -58,7 +60,7 @@
firewall rules.
- Supports trusted hosts (anti-spoofing).
- The current status of the program can be followed and controlled
- through a web interface (supports IPv6).
+ through a web interface.
The commented configuration file supports and explains all options and will
get you started quickly. Please read the man page for details on the
@@ -69,9 +71,10 @@
- Cisco PIX/ASA support focuses on denied packets, knows some permitted
packet log entries and ignores all other kinds of log entries. It
expects log entries as from a syslog host. If your PIX/ASA uses names
- you can use the script pix-names.sh from the contrib direcory to
- extract them from a saved PIX/ASA configuration and add them to your
- hosts file, if fwlogwatch is not able to resolve the names it will
+ or objects in the log you can use the script asa-hosts.sh from the
+ contrib directory to extract them from a saved PIX/ASA configuration
+ and format them as a hosts file, which you can use to initialize the
+ dns cache. If fwlogwatch is not able to resolve the names it will
discard the corresponding log entries.
- The ipfilter parser does not support logs with resolved service names
and tcp/udp entries without ports.
@@ -83,11 +86,11 @@
INSTALLATION
- General
- The Makefile assumes you use Linux, to compile on Solaris, OpenBSD,
- FreeBSD or IRIX look for the corresponding lines at the top of the
- Makefile. fwlogwatch may also be compiled and run on Windows with help of
- cygwin or mingw. You may want to have a look at main.h if you want to
- change some default values.
+ The Makefile assumes you use Linux, to compile on Mac OS X, Solaris,
+ OpenBSD, FreeBSD or IRIX look for the corresponding lines at the top of
+ the Makefile. fwlogwatch may also be compiled and run on Windows with
+ help of cygwin or mingw. You may want to have a look at main.h if you
+ want to change some default values.
flex is required to build fwlogwatch. Besides that a simple 'make' should
be enough to obtain a working binary. If your make (like the one on
@@ -99,13 +102,13 @@
read access to the system's standard log file (e.g. /var/log/messages)
you can use group permissions. You can also bind a nonprivileged port for
the status server. 'make install' will install the binary (in
- /usr/sbin) and the man page, 'make install-config' will also
+ /usr/local/sbin) and the man page, 'make install-config' will also
install a sample configuration file in /etc.
-- Zlib/Gettext/IPv6/GNU adns
- If you define HAVE_ZLIB, HAVE_GETTEXT, HAVE_IPV6 and HAVE_ADNS fwlogwatch
- will be compiled with zlib, gettext, IPv6 and adns support. The output of
- fwlogwatch -V will contain an overview of the compiler options used.
+- Zlib/Gettext/GNU adns
+ If you define HAVE_ZLIB, HAVE_GETTEXT and HAVE_ADNS fwlogwatch will be
+ compiled with zlib, gettext and adns support. The output of fwlogwatch -V
+ will contain an overview of the compiler options used.
You will need the zlib compression library version 1.0.9 or newer and
it's header files to be able to use zlib support.
@@ -114,9 +117,6 @@
gettext package (sometimes with it's surroundings libtool, GNU m4,
autoconf and automake) installed.
- You need an operating system with a IPv6 stack and headers with IPv6
- support to be able to use this protocol.
-
The GNU adns library and header files must be installed to build fwlogwatch
with support for faster, asynchronous DNS lookups.
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/cisco_ios.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: cisco_ios.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: cisco_ios.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _CISCO_IOS_H
#define _CISCO_IOS_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/cisco_ios.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: cisco_ios.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: cisco_ios.l 731 2013-05-17 14:15:23Z bw $ */
%option prefix="cisco_ios"
%option outfile="cisco_ios.c"
@@ -94,6 +94,8 @@
retval = sscanf(input, "%3s %2d %2d:%2d:%2d:", smonth, &day, &hour, &minute, &second);
if (retval != 5)
return;
+ } else {
+ exit(EXIT_FAILURE);
}
build_time(smonth, day, hour, minute, second);
@@ -118,6 +120,8 @@
return;
} else if (mode == CI_OPT_MISSING) {
return;
+ } else {
+ exit(EXIT_FAILURE);
}
snprintf(ip, IPLEN, "%d.%d.%d.%d", shost1, shost2, shost3, shost4);
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/cisco_pix.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: cisco_pix.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: cisco_pix.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _CISCO_PIX_H
#define _CISCO_PIX_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/cisco_pix.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: cisco_pix.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: cisco_pix.l 731 2013-05-17 14:15:23Z bw $ */
%option prefix="cisco_pix"
%option outfile="cisco_pix.c"
@@ -14,6 +14,7 @@
#include <netdb.h>
#include "main.h"
#include "utils.h"
+#include "resolve.h"
extern struct options opt;
@@ -49,20 +50,23 @@
{MONTH}[ ]{1,2}{DIGIT}{1,2}[ ]{DIGIT}{4}[ ]{DIGIT}{2}:{DIGIT}{2}:{DIGIT}{2}(":")? cisco_pix_parse_date(cisco_pixtext, CP_OPT_NONE);
{LOGHOST}[ ]+": " /* ignore */
" Inbound TCP connection denied from "{IPPORT} cisco_pix_parse_src(cisco_pixtext+36, CP_OPT_TCP);
-" Deny TCP (no connection) from "{IPPORT} cisco_pix_parse_src(cisco_pixtext+31, CP_OPT_TCP);
-" Deny inbound UDP from "{IPPORT} cisco_pix_parse_src(cisco_pixtext+23, CP_OPT_UDP);
-" Deny udp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+14, CP_OPT_UDP_S);
-" Deny udp src "{ZONENAMEPORT} cisco_pix_parse_src(cisco_pixtext+14, CP_OPT_UDP_N);
-" Deny tcp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+14, CP_OPT_TCP_S);
-" Deny tcp src "{ZONENAMEPORT} cisco_pix_parse_src(cisco_pixtext+14, CP_OPT_TCP_N);
-" Deny icmp src "{ZONEIP} cisco_pix_parse_src(cisco_pixtext+15, CP_OPT_ICMP_S);
-" Deny inbound icmp src "{ZONEIP} cisco_pix_parse_src(cisco_pixtext+23, CP_OPT_ICMP_S);
-" Deny inbound tcp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+22, CP_OPT_TCP_S);
-" Deny inbound (No xlate) tcp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+33, CP_OPT_TCP_S);
-" Deny inbound (No xlate) udp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+33, CP_OPT_UDP_S);
-" Deny inbound (No xlate) icmp src "{ZONEIP} cisco_pix_parse_src(cisco_pixtext+34, CP_OPT_ICMP_S);
-" Deny UDP reverse path check from "{IP} cisco_pix_parse_src(cisco_pixtext+34, CP_OPT_UDP_NOPORT);
+" TCP access denied by ACL from "{IPPORT} cisco_pix_parse_src(cisco_pixtext+31, CP_OPT_TCP);
+" Deny" xstrncpy(opt.line->branchname, "Deny", SHORTLEN);
+" TCP (no connection) from "{IPPORT} cisco_pix_parse_src(cisco_pixtext+26, CP_OPT_TCP);
+" inbound UDP from "{IPPORT} cisco_pix_parse_src(cisco_pixtext+18, CP_OPT_UDP);
+" udp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+9, CP_OPT_UDP_S);
+" udp src "{ZONENAMEPORT} cisco_pix_parse_src(cisco_pixtext+9, CP_OPT_UDP_N);
+" tcp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+9, CP_OPT_TCP_S);
+" tcp src "{ZONENAMEPORT} cisco_pix_parse_src(cisco_pixtext+9, CP_OPT_TCP_N);
+" icmp src "{ZONEIP} cisco_pix_parse_src(cisco_pixtext+10, CP_OPT_ICMP_S);
+" inbound icmp src "{ZONEIP} cisco_pix_parse_src(cisco_pixtext+18, CP_OPT_ICMP_S);
+" inbound tcp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+17, CP_OPT_TCP_S);
+" inbound (No xlate) tcp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+28, CP_OPT_TCP_S);
+" inbound (No xlate) udp src "{ZONEIPPORT} cisco_pix_parse_src(cisco_pixtext+28, CP_OPT_UDP_S);
+" inbound (No xlate) icmp src "{ZONEIP} cisco_pix_parse_src(cisco_pixtext+29, CP_OPT_ICMP_S);
+" UDP reverse path check from "{IP} cisco_pix_parse_src(cisco_pixtext+29, CP_OPT_UDP_NOPORT);
{IP}" attempted to ping " cisco_pix_parse_src(cisco_pixtext, CP_OPT_ICMP);
+"to "{ZONEIPPORT} cisco_pix_parse_dst(cisco_pixtext+3, CP_OPT_DST_S);
"to "{IPPORT} cisco_pix_parse_dst(cisco_pixtext+3, CP_OPT_DST);
"to "{IP} cisco_pix_parse_dst(cisco_pixtext+3, CP_OPT_NONE);
"dst "{ZONEIPPORT} cisco_pix_parse_dst(cisco_pixtext+4, CP_OPT_DST_S);
@@ -81,12 +85,14 @@
"due to DNS "("Query"|"Response") /* ignore */
"("{IP}")" /* ignore */
" access-list "{STRING} xstrncpy(opt.line->chainlabel, cisco_pixtext+13, SHORTLEN);
-" permitted tcp "{ZONEIPPORT2} cisco_pix_parse_src(cisco_pixtext+15, CP_OPT_TCP_S2);
-" permitted udp "{ZONEIPPORT2} cisco_pix_parse_src(cisco_pixtext+15, CP_OPT_UDP_S2);
-" permitted icmp "{ZONEIPPORT2} cisco_pix_parse_src(cisco_pixtext+16, CP_OPT_ICMP_S2);
-" permitted tcp "{ZONENAMEPORT2} cisco_pix_parse_src(cisco_pixtext+15, CP_OPT_TCP_N2);
-" permitted udp "{ZONENAMEPORT2} cisco_pix_parse_src(cisco_pixtext+15, CP_OPT_UDP_N2);
-" permitted icmp "{ZONENAMEPORT2} cisco_pix_parse_src(cisco_pixtext+16, CP_OPT_ICMP_N2);
+" permitted" xstrncpy(opt.line->branchname, "permitted", SHORTLEN);
+" denied" xstrncpy(opt.line->branchname, "denied", SHORTLEN);
+" tcp "{ZONEIPPORT2} cisco_pix_parse_src(cisco_pixtext+5, CP_OPT_TCP_S2);
+" udp "{ZONEIPPORT2} cisco_pix_parse_src(cisco_pixtext+5, CP_OPT_UDP_S2);
+" icmp "{ZONEIPPORT2} cisco_pix_parse_src(cisco_pixtext+6, CP_OPT_ICMP_S2);
+" tcp "{ZONENAMEPORT2} cisco_pix_parse_src(cisco_pixtext+5, CP_OPT_TCP_N2);
+" udp "{ZONENAMEPORT2} cisco_pix_parse_src(cisco_pixtext+5, CP_OPT_UDP_N2);
+" icmp "{ZONENAMEPORT2} cisco_pix_parse_src(cisco_pixtext+6, CP_OPT_ICMP_N2);
" -> "{ZONEIPPORT2} cisco_pix_parse_dst(cisco_pixtext+4, CP_OPT_DST_S2);
" -> "{ZONENAMEPORT2} cisco_pix_parse_dst(cisco_pixtext+4, CP_OPT_DST_N2);
"hit-cnt "{NUMBER} /* ignore */
@@ -103,6 +109,13 @@
{IP}" Accessed URL ".+ opt.parser=opt.parser|CISCO_PIX_NO_HIT;
" IGRP request discarded from "{IP}" to "{ZONEIP} opt.parser=opt.parser|CISCO_PIX_NO_HIT;
{NUMBER}" in use, "{NUMBER}" most used" opt.parser=opt.parser|CISCO_PIX_NO_HIT;
+" No matching connection for ICMP error message: icmp src "({ZONEIP}|{ZONENAME})" dst "({ZONEIP}|{ZONENAME})" (type "{NUMBER}", code "{NUMBER}") on "{STRING}" interface. Original IP payload: "(("udp"|"tcp"|"icmp"|"protocol "{NUMBER})" src "({IPPORT}|{STRING}"/"{PORT}|{IP}|{STRING})" dst "({IPPORT}|{STRING}"/"{PORT}|{IP}|{STRING})|"<unknown>")(" (type "{NUMBER}", code "{NUMBER}")")?"." opt.parser=opt.parser|CISCO_PIX_NO_HIT;
+" [".*"] drop rate-"{DIGIT}" exceeded. Current burst rate is "{NUMBER}" per second, max configured rate is "{NUMBER}"; Current average rate is "{NUMBER}" per second, max configured rate is "{NUMBER}"; Cumulative total count is "{NUMBER} opt.parser=opt.parser|CISCO_PIX_NO_HIT;
+" Begin configuration: "({IP}|{STRING})" reading from http [POST]" opt.parser=opt.parser|CISCO_PIX_NO_HIT;
+" Group = "{STRING}", Username = "{STRING}", IP = "({IP}|{STRING})", ".* opt.parser=opt.parser|CISCO_PIX_NO_HIT;
+" Bad TCP hdr length (hdrlen=".* opt.parser=opt.parser|CISCO_PIX_NO_HIT;
+" User '"{STRING}"', running '"("CLI"|"N/A")"' from IP "({IP}|{STRING})", executed '".*"'" opt.parser=opt.parser|CISCO_PIX_NO_HIT;
+" User '"{STRING}"' executed the '".*"' command." opt.parser=opt.parser|CISCO_PIX_NO_HIT;
"["{HEXNUMBER}", "{HEXNUMBER}"]" /* ignore */
[ ]+ /* ignore whitespace */
[\n] /* ignore */
@@ -143,6 +156,8 @@
retval = sscanf(input, "%3s %2d %4d %2d:%2d:%2d", smonth, &day, &year, &hour, &minute, &second);
if (retval != 6)
return;
+ } else {
+ exit(EXIT_FAILURE);
}
build_time(smonth, day, hour, minute, second);
@@ -177,7 +192,6 @@
return;
} else if ((mode == CP_OPT_TCP_S2) || (mode == CP_OPT_UDP_S2) || (mode == CP_OPT_ICMP_S2)) {
char buf[BUFSIZE], *pnt;
- xstrncpy(opt.line->branchname, "permitted", SHORTLEN);
pnt = strstr(input, "/");
*pnt = ' ';
retval = sscanf(input, "%" BUFSIZE_S "s %3d.%3d.%3d.%3d(%5d)", buf, &shost1, &shost2, &shost3, &shost4, &opt.line->sport);
@@ -191,7 +205,7 @@
return;
} else if ((mode == CP_OPT_TCP_N) || (mode == CP_OPT_UDP_N)) {
char buf[BUFSIZE], *pnt;
- struct hostent *he;
+ struct in6_addr *ip;
pnt = strstr(input, ":");
*pnt = ' ';
pnt = strstr(input, "/");
@@ -203,9 +217,9 @@
opt.line->protocol = 17;
if (retval != 2)
return;
- he = gethostbyname(buf);
- if (he != NULL) {
- opt.line->shost.s_addr = ((struct in_addr *) he->h_addr_list[0])->s_addr;
+ ip = resolve_hostname_from_cache(buf);
+ if (ip != NULL) {
+ memcpy(&opt.line->shost, ip, sizeof(struct in6_addr));
resolved = 1;
} else {
if (opt.verbose)
@@ -214,8 +228,7 @@
}
} else if ((mode == CP_OPT_TCP_N2) || (mode == CP_OPT_UDP_N2) || (mode == CP_OPT_ICMP_N2)) {
char buf[BUFSIZE], *pnt;
- struct hostent *he;
- xstrncpy(opt.line->branchname, "permitted", SHORTLEN);
+ struct in6_addr *ip;
pnt = strstr(input, "/");
*pnt = ' ';
pnt = strstr(input, "(");
@@ -231,9 +244,9 @@
opt.line->protocol = 1;
if (retval != 2)
return;
- he = gethostbyname(buf);
- if (he != NULL) {
- opt.line->shost.s_addr = ((struct in_addr *) he->h_addr_list[0])->s_addr;
+ ip = resolve_hostname_from_cache(buf);
+ if (ip != NULL) {
+ memcpy(&opt.line->shost, ip, sizeof(struct in6_addr));
resolved = 1;
} else {
if (opt.verbose)
@@ -295,7 +308,7 @@
return;
} else if (mode == CP_OPT_DST_N) {
char buf[BUFSIZE], *pnt;
- struct hostent *he;
+ struct in6_addr *ip;
pnt = strstr(input, ":");
*pnt = ' ';
pnt = strstr(input, "/");
@@ -303,9 +316,9 @@
retval = sscanf(input, "%*s %" BUFSIZE_S "s %5d", buf, &opt.line->dport);
if (retval != 2)
return;
- he = gethostbyname(buf);
- if (he != NULL) {
- opt.line->dhost.s_addr = ((struct in_addr *) he->h_addr_list[0])->s_addr;
+ ip = resolve_hostname_from_cache(buf);
+ if (ip != NULL) {
+ memcpy(&opt.line->dhost, ip, sizeof(struct in6_addr));
resolved = 1;
} else {
if (opt.verbose)
@@ -314,7 +327,7 @@
}
} else if (mode == CP_OPT_DST_N2) {
char buf[BUFSIZE], *pnt;
- struct hostent *he;
+ struct in6_addr *ip;
pnt = strstr(input, "/");
*pnt = ' ';
pnt = strstr(input, "(");
@@ -324,9 +337,9 @@
retval = sscanf(input, "%*s %" BUFSIZE_S "s %5d", buf, &opt.line->dport);
if (retval != 2)
return;
- he = gethostbyname(buf);
- if (he != NULL) {
- opt.line->dhost.s_addr = ((struct in_addr *) he->h_addr_list[0])->s_addr;
+ ip = resolve_hostname_from_cache(buf);
+ if (ip != NULL) {
+ memcpy(&opt.line->dhost, ip, sizeof(struct in6_addr));
resolved = 1;
} else {
if (opt.verbose)
@@ -372,7 +385,7 @@
xstrncpy(opt.line->interface, "-", SHORTLEN);
xstrncpy(opt.line->chainlabel, "-", SHORTLEN);
- xstrncpy(opt.line->branchname, "Deny", SHORTLEN);
+ xstrncpy(opt.line->branchname, "-", SHORTLEN);
opt.line->count = 1;
cisco_pix_scan_string(input);
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/compare.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: compare.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: compare.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -120,10 +120,10 @@
break;
case SORT_SOURCEHOST:
if (opt.sortmode == ORDER_ASCENDING) {
- if (ntohl(op1->shost.s_addr) > ntohl(op2->shost.s_addr))
+ if (compare_ipv6(&op1->shost, &op2->shost) == -1)
cond++;
} else {
- if (ntohl(op1->shost.s_addr) < ntohl(op2->shost.s_addr))
+ if (compare_ipv6(&op1->shost, &op2->shost) == 1)
cond++;
}
break;
@@ -138,10 +138,10 @@
break;
case SORT_DESTHOST:
if (opt.sortmode == ORDER_ASCENDING) {
- if (ntohl(op1->dhost.s_addr) > ntohl(op2->dhost.s_addr))
+ if (compare_ipv6(&op1->dhost, &op2->dhost) == -1)
cond++;
} else {
- if (ntohl(op1->dhost.s_addr) < ntohl(op2->dhost.s_addr))
+ if (compare_ipv6(&op1->dhost, &op2->dhost) == 1)
cond++;
}
break;
@@ -343,10 +343,10 @@
this = first;
while (this != NULL) {
- if ((opt.dst_ip) && (this->dhost.s_addr != opt.line->dhost.s_addr)) {
+ if ((opt.dst_ip) && (compare_ipv6_equal(&this->dhost, &opt.line->dhost) != 0)) {
goto no_match;
}
- if ((opt.src_ip) && (this->shost.s_addr != opt.line->shost.s_addr)) {
+ if ((opt.src_ip) && (compare_ipv6_equal(&this->shost, &opt.line->shost) != 0)) {
goto no_match;
}
if ((opt.dst_port) && (this->dport != opt.line->dport)) {
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/compare.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: compare.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: compare.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _COMPARE_H
#define _COMPARE_H
|
[-]
[+]
|
Added |
fwlogwatch-1.4.tar.bz2/contrib/asa-hosts.sh
^
|
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if [ -z "$1" ]
+then
+ echo "usage: $0 <file containing asa configuration>"
+ echo "example: $0 /tftpboot/asa-config.txt > hosts.txt"
+ exit 1
+fi
+
+echo "# names"
+grep "^name " "$1" | awk '{print $2" "$3}' | sort -k2
+
+echo
+echo "# host objects"
+grep -A1 "^object network " $1 \
+| grep -v "^--" \
+| sed -e 'N;s/\n / /g' \
+| grep " host " \
+| awk '{print $5" "$3}' \
+| sort -k2
+
+exit 0
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/contrib/fwlogsummary.cgi
^
|
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (C) 2000-2010 Boris Wesslowski
-# $Id: fwlogsummary.cgi 706 2010-10-06 12:02:36Z bw $
+# Copyright (C) 2000-2013 Boris Wesslowski
+# $Id: fwlogsummary.cgi 731 2013-05-17 14:15:23Z bw $
# This script generates 8 fwlogwatch html summaries in a directory visible
# to your web server.
@@ -18,7 +18,7 @@
RECENT="-l 1h"
WEBDIR="/var/www/html/fwlogwatch"
-FWLOGWATCH="/usr/sbin/fwlogwatch"
+FWLOGWATCH="/usr/local/sbin/fwlogwatch"
if [ ! -d $WEBDIR ] ; then
echo "Directory $WEBDIR does not exist!"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/contrib/fwlogsummary_small.cgi
^
|
@@ -1,7 +1,7 @@
#!/bin/sh
-# Copyright (C) 2000-2010 Boris Wesslowski
-# $Id: fwlogsummary_small.cgi 706 2010-10-06 12:02:36Z bw $
+# Copyright (C) 2000-2013 Boris Wesslowski
+# $Id: fwlogsummary_small.cgi 731 2013-05-17 14:15:23Z bw $
echo "Content-Type: text/html"
echo
-/usr/sbin/fwlogwatch -w -l 1h -z -s -d
+/usr/local/sbin/fwlogwatch -w -l 1h -z -s -d
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/contrib/fwlogwatch.init.redhat
^
|
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: fwlogwatch.init.redhat 684 2009-02-13 18:50:07Z bw $
+# $Id: fwlogwatch.init.redhat 718 2011-09-30 09:40:44Z bw $
#
# Init file for fwlogwatch on redhat linux systems
#
@@ -17,14 +17,14 @@
prog="fwlogwatch"
# Some functions to make the below more readable
-FWLOGWATCH=/usr/sbin/fwlogwatch
+FWLOGWATCH=/usr/local/sbin/fwlogwatch
PID_FILE=/var/run/fwlogwatch.pid
start()
{
echo -n $"Starting $prog:"
- initlog -c "$FWLOGWATCH -R -A -X 888 -Pn" && success || failure
+ $FWLOGWATCH -R -A -X 888 && success || failure
RETVAL=$?
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/fwlogwatch
echo
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/contrib/fwlogwatch.php
^
|
@@ -1,6 +1,6 @@
<?
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: fwlogwatch.php 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: fwlogwatch.php 731 2013-05-17 14:15:23Z bw $ */
/*
This program is a rewrite based on work by
@@ -16,7 +16,7 @@
$debug = '0';
$logdir = "/var/log";
$logbase = messages;
-$fwlogwatch = "/usr/sbin/fwlogwatch";
+$fwlogwatch = "/usr/local/sbin/fwlogwatch";
/**********************************************************************/
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/contrib/fwlw_notify
^
|
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (C) 2000-2010 Boris Wesslowski
-# $Id: fwlw_notify 706 2010-10-06 12:02:36Z bw $
+# Copyright (C) 2000-2013 Boris Wesslowski
+# $Id: fwlw_notify 731 2013-05-17 14:15:23Z bw $
# fwlogwatch realtime notification script
# You can invoke a custom action through this script when fwlogwatch
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/contrib/fwlw_respond
^
|
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (C) 2000-2010 Boris Wesslowski
-# $Id: fwlw_respond 706 2010-10-06 12:02:36Z bw $
+# Copyright (C) 2000-2013 Boris Wesslowski
+# $Id: fwlw_respond 731 2013-05-17 14:15:23Z bw $
# fwlogwatch realtime response script
# Set the $MODE variable to activate realtime modification of
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/fwlogwatch.8
^
|
@@ -1,14 +1,17 @@
-.\" Copyright (C) 2000-2010 Boris Wesslowski
-.\" $Id: fwlogwatch.8 710 2010-10-10 11:28:41Z bw $
-.TH FWLOGWATCH 8 "25 April 2004" IS
+.\" Copyright (C) 2000-2013 Boris Wesslowski
+.\" $Id: fwlogwatch.8 731 2013-05-17 14:15:23Z bw $
+.TH FWLOGWATCH 8 "November 11, 2011" "Boris Wesslowski"
+
.SH NAME
fwlogwatch \- a firewall log analyzer and realtime response agent
+
.SH SYNOPSIS
.B fwlogwatch
.RI [ options ]\ [ input_files ]
+
.SH DESCRIPTION
.B fwlogwatch
-produces Linux ipchains, Linux netfilter/iptables, Solaris/BSD/Irix/HP-UX
+produces Linux ipchains, Linux netfilter/iptables, Solaris/BSD/IRIX/HP-UX
ipfilter, ipfw, Cisco IOS, Cisco PIX/ASA, NetScreen, Elsa Lancom router and
Snort IDS log summary reports in plain text and HTML form and has a lot of
options to analyze and display relevant patterns. It also can run as daemon
@@ -27,6 +30,7 @@
.IP \-V
Show version and copyright information and the options used to compile
fwlogwatch.
+
.SH "GLOBAL OPTIONS"
The global options for all modes are:
.IP \-b
@@ -73,6 +77,12 @@
and to exclude entries which have the class C network 192.168.1.0 as source
or belong to the chain INPUT:
.B -Eehs192.168.1.0/24 -EecINPUT
+.IP \-i\ \fIfile\fR
+If your logs contain private IP addresses that are not resolvable through
+DNS but you want reports with meaningful host names or you have any other
+reason to influence the host names in reports you can initialize the DNS
+cache with your own list of IP/name pairs. The file should be in the same
+format as /etc/hosts and will not be modified.
.IP \-M\ \fInumber\fR
If you only want to see a fixed maximum amount of entries (e.g. the "top 20")
this option will trim the output for you.
@@ -81,12 +91,15 @@
that have a small count. You can hide entries below a certain threshold with
this option.
.IP \-N
-Enable service lookups. Port numbers will be looked up in /etc/services.
+Enable service lookups. The service name for a specific port number and
+protocol will be looked up in /etc/services.
.IP \-n
Enable DNS lookups. Host names will be resolved (reverse and forward lookup
-with a warning if they don't match). This makes summary generation very
-slow if a lot of different hosts appear in the log file. Resolved host names
-are cached.
+with a warning if they don't match). If this makes summary generation very
+slow (this happens when a lot of different hosts appear in the log file)
+you should use a version of fwlogwatch compiled with GNU adns support.
+Resolved host names are cached in memory for as long as fwlogwatch is
+running, the DNS cache can be initialized with the -i option.
.IP \-O\ \fIorder\fR
This is the sort order of the summary and packet cache. Since entries often
are equal in certain fields you can sort by several fields one after another
@@ -180,11 +193,17 @@
Differentiate TCP options. All packets with a SYN are listed separately,
other TCP flags are shown in full format if they are available (ipchains
does not log them, netfilter and ipfilter do, Cisco IOS doesn't even log SYNs).
+
.SH "LOG SUMMARY MODE"
This are additional options that are only available in log summary mode:
+.IP \-C\ \fIemail\fR
+A carbon copy of the summary will be sent by email to this address.
.IP \-e
-Show timestamp of last packet logged. End times are only available if
-there is more than one packet log entry with unique characteristics.
+Show timestamp of the last packet logged for this entry. End times are only
+available if there is more than one packet log entry with unique
+characteristics.
+.IP \-F\ \fIemail\fR
+Set the sender address of the email.
.IP \-l\ \fItime\fR
Process recent events only. See
.B TIME FORMAT
@@ -198,23 +217,24 @@
selected the report will be embedded as attachment so HTML-aware mail
clients can show it directly.
.IP \-t
-Show timestamp of first packet logged.
+Show timestamp of the first packet logged for this entry.
.IP \-W
Look up information about the source addresses in the whois database. This
is slow, please don't stress the registry with too many queries.
.IP \-w
-Produce output in HTML format.
+Produce output in HTML format (XHTML 1.1 with CSS).
.IP \-z
Show time interval between start and end time of packet log entries. This
is only available if there is more than one packet log entry with unique
characteristics.
+
.SH "REALTIME RESPONSE MODE"
.IP \-R
Enter realtime response mode. This means: detach and run as daemon until
the TERM signal (kill) is received. The HUP signal forces a reload of the
-configuration file, the USR1 signal forces fwlogwatch to reopen and read the
-input file from the beginning (useful e.g. for log rotation). All output
-can be followed in the system log.
+configuration file, the USR1 signal forces fwlogwatch to reopen and read
+the input file from the beginning (useful e.g. for log rotation). All
+output can be followed in the system log.
.IP \-a\ \fIcount\fR
Alert threshold. Notify or start countermeasures if this limit is reached.
Defaults to 5.
@@ -233,13 +253,10 @@
.IP \-B
The response script is invoked when the threshold is reached. Using the
example script fwlw_respond this will block the attacking host with a new
-firewall rule. A new chain for
-.B fwlogwatch
-actions is inserted in the input chain and block rules added as needed.
-The chain and its content is removed if
-.B fwlogwatch
-is terminated normally. The example scripts contain actions for ipchains
-and netfilter, you can modify them or add others as you like.
+firewall rule. A new chain for fwlogwatch actions is inserted in the input
+chain and block rules added as needed. The chain and its content is removed
+if fwlogwatch is terminated normally. The example scripts contain actions
+for ipchains and netfilter, you can modify them or add others as you like.
.IP \-X\ \fIport\fR
Activate the internal web server to monitor and control the current status
of the daemon. It listens on the specified
@@ -251,6 +268,7 @@
.B fwlogwat
(since DES can only encrypt 8 characters). All options related to the
status web server can be changed in the configuration file.
+
.SH "INPUT FILES"
You can specify one or more input files (if none is given it defaults to
.B /var/log/messages
@@ -260,6 +278,7 @@
may be used for reading from standard input (stdin). In realtime response
mode the file needs to be specified with an absolute path since the daemon
uses the file system root (/) as working directory.
+
.SH "TIME FORMAT"
Time is specified as
.B nx
@@ -283,6 +302,7 @@
for months and
.I y
for years.
+
.SH FILES
.IP \fB/etc/fwlogwatch.config\fR
Default configuration file.
@@ -291,6 +311,7 @@
.IP \fB/var/run/fwlogwatch.pid\fR
Default PID file generated by the daemon in realtime response mode if
configured to do so.
+
.SH "FEATURES ONLY IN CONFIGURATION FILE"
The following features are only available in the configuration file and not
on the command line, they are presented and explained in more detail in the
@@ -299,25 +320,23 @@
The colors of the HTML output and status page can be customized, an
external cascading stylesheet can be referenced.
.IP Realtime\ response\ options
-Verification of ipchains rules, PID file handling, the user
-.B fwlogwatch
+Verification of ipchains rules, PID file handling, the user fwlogwatch
should run as, the location of the notification and response scripts, which
address the status web server listens on, which host can connect, the
refresh interval of the status page and the admin name and password can be
configured.
+
.SH SECURITY
-Since
-.B fwlogwatch
-is a security tool special care was taken to make it secure. You can and
-should run it with user permissions for most functions, you can make it
-setgid for a group
-.B /var/log/messages
-is in if all you need is to be able to read this file. Only the realtime
-response mode with activated ipchains rule analysis needs superuser
-permissions but you might also need them to write the PID file, for actions
-in the response script and for binding the default status port. However, you
-can configure fwlogwatch to drop root privileges as soon as possible after
-allocating these resources (the notification and response scripts will still
-be executed with user privileges and log rotation might not work).
+Since fwlogwatch is a security tool special care was taken to make it
+secure. You can and should run it with user permissions for most functions,
+you can make it setgid for a group /var/log/messages is in if all you need
+is to be able to read this file. Only the realtime response mode with
+activated ipchains rule analysis needs superuser permissions but you might
+also need them to write the PID file, for actions in the response script
+and for binding the default status port. However, you can configure
+fwlogwatch to drop root privileges as soon as possible after allocating
+these resources (the notification and response scripts will still be
+executed with user privileges and log rotation might not work).
+
.SH AUTHOR
Boris Wesslowski <bw@inside-security.de>
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/fwlogwatch.config
^
|
@@ -1,4 +1,4 @@
-# $Id: fwlogwatch.config 710 2010-10-10 11:28:41Z bw $
+# $Id: fwlogwatch.config 715 2010-10-22 14:21:15Z bw $
#
# Sample fwlogwatch configuration file
#
@@ -32,6 +32,14 @@
#resolve_hosts = no
#resolve_services = no
+# If your logs contain private IP addresses that are not resolvable through
+# DNS but you want reports with meaningful host names you can inject your
+# own list of IP/name pairs (in the same format as /etc/hosts) into the DNS
+# cache with the 'dns_cache' option. fwlogwatch will not modify this file.
+# Command line option: -i <file>
+#
+#dns_cache = /home/user/my_hosts.txt
+
# Specify the input file(s) if you don't want to use the default. Use one line
# for each file. Compressed files (gzip) are supported. You can use '-' for
# standard input (stdin). In realtime response mode the daemon needs the
@@ -310,8 +318,8 @@
# Alternative paths for the notification and response scripts can be
# specified with the 'notification_script' and 'response_script' options.
#
-#notification_script = /usr/sbin/fwlw_notify
-#response_script = /usr/sbin/fwlw_respond
+#notification_script = /usr/local/sbin/fwlw_notify
+#response_script = /usr/local/sbin/fwlw_respond
# Known hosts are those that will not be warned about or actions taken
# against, even if they match the alert/response criteria.
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/fwlogwatch.spec
^
|
@@ -1,21 +1,22 @@
-# Copyright (C) 2000-2010 Boris Wesslowski
-# $Id: fwlogwatch.spec 710 2010-10-10 11:28:41Z bw $
+# Copyright (C) 2000-2013 Boris Wesslowski
+# $Id: fwlogwatch.spec 734 2013-05-23 14:23:55Z bw $
Name: fwlogwatch
-Version: 1.2
+Version: 1.4
Release: 1
Group: Productivity/Networking/Security
Vendor: Boris Wesslowski
URL: http://fwlogwatch.inside-security.de/
License: GPL
Summary: Firewall log analyzer, report generator and realtime response agent
+#Source: http://fwlogwatch.inside-security.de/sw/%{name}-%{version}.tar.gz
Source: %{name}-%{version}.tar.gz
-BuildRequires(build): flex
+BuildRequires: flex
BuildRoot: %_tmppath/%{name}-%{version}-buildroot
%description
fwlogwatch produces Linux ipchains, Linux netfilter/iptables,
-Solaris/BSD/Irix/HP-UX ipfilter, Cisco IOS, Cisco PIX/ASA, NetScreen, Elsa
+Solaris/BSD/IRIX/HP-UX ipfilter, Cisco IOS, Cisco PIX/ASA, NetScreen, Elsa
Lancom router and Snort IDS log summary reports in plain text and HTML form
and has a lot of options to analyze and display relevant patterns. It also
can run as daemon (with web interface) doing realtime log monitoring and
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/ipchains.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: ipchains.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: ipchains.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _IPCHAINS_H
#define _IPCHAINS_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/ipchains.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: ipchains.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: ipchains.l 731 2013-05-17 14:15:23Z bw $ */
%option prefix="ipchains"
%option outfile="ipchains.c"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/ipfilter.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: ipfilter.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: ipfilter.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _IPFILTER_H
#define _IPFILTER_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/ipfilter.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: ipfilter.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: ipfilter.l 731 2013-05-17 14:15:23Z bw $ */
%option prefix="ipf"
%option outfile="ipfilter.c"
@@ -36,6 +36,9 @@
FLAGS "-"[SAFRPU]+
PROTO [0-9a-z-]+
TARGET [SpPbBnL]
+IPV4ADDR {OCTET}"."{OCTET}"."{OCTET}"."{OCTET}
+IPV6ADDR ([0-9a-f]{1,4}":"+){1,7}[0-9a-f]{1,4}
+IPV4OR6ADDR ({IPV4ADDR}|{IPV6ADDR})
%%
@@ -45,42 +48,44 @@
{DIGIT}{2}":"{DIGIT}{2}":"{DIGIT}{2}"."{DIGIT}{6} /* ignore */
{STRING}[ ]"@"{NUMBER}":"{NUMBER}[ ]{TARGET} ipf_parse_data(ipftext, IPF_OPT_NONE);
{NUMBER}"x"[ ]+{STRING}[ ]"@"{NUMBER}":"{NUMBER}[ ]{TARGET} ipf_parse_data(ipftext, IPF_OPT_COUNT);
-{OCTET}"."{OCTET}"."{OCTET}"."{OCTET} ipf_parse_ips(ipftext, IPF_OPT_SRC);
-" -> "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET} ipf_parse_ips(ipftext+4, IPF_OPT_DST);
-{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{PORT} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_PORT);
-" -> "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{PORT} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_PORT);
-{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"]" ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RES);
-" -> "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"]" ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RES);
-{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{PORT} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RES|IPF_OPT_PORT);
-" -> "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{PORT} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RES|IPF_OPT_PORT);
-{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{STRING} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RPORT);
-" -> "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{STRING} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RPORT);
-{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{STRING} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RES|IPF_OPT_RPORT);
-" -> "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{STRING} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RES|IPF_OPT_RPORT);
+{IPV4OR6ADDR} ipf_parse_ips(ipftext, IPF_OPT_SRC);
+" -> "{IPV4OR6ADDR} ipf_parse_ips(ipftext+4, IPF_OPT_DST);
+{IPV4OR6ADDR}","{PORT} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_PORT);
+" -> "{IPV4OR6ADDR}","{PORT} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_PORT);
+{STRING}"["{IPV4OR6ADDR}"]" ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RES);
+" -> "{STRING}"["{IPV4OR6ADDR}"]" ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RES);
+{STRING}"["{IPV4OR6ADDR}"],"{PORT} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RES|IPF_OPT_PORT);
+" -> "{STRING}"["{IPV4OR6ADDR}"],"{PORT} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RES|IPF_OPT_PORT);
+{IPV4OR6ADDR}","{STRING} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RPORT);
+" -> "{IPV4OR6ADDR}","{STRING} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RPORT);
+{STRING}"["{IPV4OR6ADDR}"],"{STRING} ipf_parse_ips(ipftext, IPF_OPT_SRC|IPF_OPT_RES|IPF_OPT_RPORT);
+" -> "{STRING}"["{IPV4OR6ADDR}"],"{STRING} ipf_parse_ips(ipftext+4, IPF_OPT_DST|IPF_OPT_RES|IPF_OPT_RPORT);
+"PR icmpv6" opt.line->protocol = 58; opt.parser=opt.parser|IPF_PROTO;
"PR "{PROTO} ipf_parse_proto(ipftext+3);
"len "{NUMBER}[ ][(]?{NUMBER}[)]? opt.line->datalen = atoi(ipftext+4);
"frag "{NUMBER}"@"{NUMBER} /* ignore */
"icmp "{DIGIT}{1,2}"/"{DIGIT}{1,2} sscanf(ipftext, "icmp %d/%d", &opt.line->sport, &opt.line->dport); opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
-"icmp echo/0" opt.line->sport = 8; opt.line->dport = 0; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
+"icmp"("v6")?" echo/0" opt.line->sport = 8; opt.line->dport = 0; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
"icmp echoreply/0" opt.line->sport = 0; opt.line->dport = 0; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
"icmp sourcequench/0" opt.line->sport = 4; opt.line->dport = 0; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
"icmp unreach/host" opt.line->sport = 3; opt.line->dport = 1; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
"icmp unreach/port" opt.line->sport = 3; opt.line->dport = 3; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
"icmp unreach/admin_prohibit" opt.line->sport = 3; opt.line->dport = 10; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
"icmp timxceed/intrans" opt.line->sport = 11; opt.line->dport = 1; opt.parser=opt.parser|IPF_SRC_PORT|IPF_DST_PORT;
-"for "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{PORT}" - "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{PORT}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
-"for "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{STRING}" - "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{STRING}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
-"for "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{PORT}" - "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{PORT}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
-"for "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{PORT}" - "{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}","{STRING}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
-"for "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"] - "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"] PR "{PROTO}" len "{NUMBER}" ("{NUMBER}")" /* ignore */
-"for "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{PORT}" - "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{PORT}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
-"for "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{PORT}" - "{STRING}"["{OCTET}"."{OCTET}"."{OCTET}"."{OCTET}"],"{STRING}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
+"for "{IPV4OR6ADDR}","{PORT}" - "{IPV4OR6ADDR}","{PORT}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
+"for "{IPV4OR6ADDR}","{STRING}" - "{STRING}"["{IPV4OR6ADDR}"],"{STRING}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
+"for "{STRING}"["{IPV4OR6ADDR}"],"{PORT}" - "{IPV4OR6ADDR}","{PORT}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
+"for "{STRING}"["{IPV4OR6ADDR}"],"{PORT}" - "{IPV4OR6ADDR}","{STRING}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
+"for "{STRING}"["{IPV4OR6ADDR}"] - "{STRING}"["{IPV4OR6ADDR}"] PR "{PROTO}" len "{NUMBER}" ("{NUMBER}")" /* ignore */
+"for "{STRING}"["{IPV4OR6ADDR}"],"{PORT}" - "{STRING}"["{IPV4OR6ADDR}"],"{PORT}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
+"for "{STRING}"["{IPV4OR6ADDR}"],"{PORT}" - "{STRING}"["{IPV4OR6ADDR}"],"{STRING}" PR "{PROTO}" len "{NUMBER}[ ]{NUMBER} /* ignore */
{FLAGS} ipf_parse_flags(ipftext+1);
"K-S" /* ignore */
"K-F" /* ignore */
"IN" /* ignore */
"OUT" /* ignore */
"mbcast" /* ignore */
+"low-ttl" /* ignore */
{NUMBER}[ ]{NUMBER}[ ]{NUMBER}" IN" /* ignore */
({HEXDIGIT}{HEXDIGIT}[ ]?)+[ ]+[ -~]+ opt.parser=opt.parser|IPF_NO_HIT;
[ \t]+ /* ignore whitespace */
@@ -123,51 +128,90 @@
opt.parser = opt.parser | IPF_DATA;
}
+int resolve_service_by_name(char *name)
+{
+ struct servent *se;
+
+ se = getservbyname(name, NULL);
+ endservent();
+
+ if (se != NULL)
+ return se->s_port;
+ else
+ return 0;
+}
+
void ipf_parse_ips(char *input, unsigned char mode)
{
- int host1, host2, host3, host4, port;
- int retval;
- char ip[IPLEN];
+ int retval, port;
+ char ip[IP6LEN];
if (mode == (IPF_OPT_SRC | IPF_OPT_RES | IPF_OPT_RPORT) || mode == (IPF_OPT_DST | IPF_OPT_RES | IPF_OPT_RPORT)) {
char name[255], *ptr, portname[32];
- ptr = strchr(input, '[');
+ ptr = input;
+ while (*ptr != '[')
+ ptr++;
+ *ptr = ' ';
+ while (*ptr != ']')
+ ptr++;
*ptr = ' ';
- retval = sscanf(input, "%255s %3d.%3d.%3d.%3d],%32s", name, &host1, &host2, &host3, &host4, portname);
- if (retval != 6)
+ ptr++;
+ *ptr = ' ';
+ retval = sscanf(input, "%255s %40s %32s", name, ip, portname);
+ if (retval != 3)
return;
+ port = resolve_service_by_name(portname);
} else if (mode == (IPF_OPT_SRC | IPF_OPT_RES | IPF_OPT_PORT) || mode == (IPF_OPT_DST | IPF_OPT_RES | IPF_OPT_PORT)) {
char name[255], *ptr;
- ptr = strchr(input, '[');
+ ptr = input;
+ while (*ptr != '[')
+ ptr++;
*ptr = ' ';
- retval = sscanf(input, "%255s %3d.%3d.%3d.%3d],%5d", name, &host1, &host2, &host3, &host4, &port);
- if (retval != 6)
+ while (*ptr != ']')
+ ptr++;
+ *ptr = ' ';
+ ptr++;
+ *ptr = ' ';
+ retval = sscanf(input, "%255s %40s %5d", name, ip, &port);
+ if (retval != 3)
return;
} else if (mode == (IPF_OPT_SRC | IPF_OPT_RES) || mode == (IPF_OPT_DST | IPF_OPT_RES)) {
char name[255], *ptr;
- ptr = strchr(input, '[');
+ ptr = input;
+ while (*ptr != '[')
+ ptr++;
*ptr = ' ';
- retval = sscanf(input, "%255s %3d.%3d.%3d.%3d]", name, &host1, &host2, &host3, &host4);
- if (retval != 5)
+ while (*ptr != ']')
+ ptr++;
+ *ptr = ' ';
+ retval = sscanf(input, "%255s %40s", name, ip);
+ if (retval != 2)
return;
} else if (mode == (IPF_OPT_SRC | IPF_OPT_RPORT) || mode == (IPF_OPT_DST | IPF_OPT_RPORT)) {
- char portname[32];
- retval = sscanf(input, "%3d.%3d.%3d.%3d,%32s", &host1, &host2, &host3, &host4, portname);
- if (retval != 5)
+ char portname[32], *ptr;
+ ptr = input;
+ while (*ptr != ',')
+ ptr++;
+ *ptr = ' ';
+ retval = sscanf(input, "%40s %32s", ip, portname);
+ if (retval != 2)
return;
+ port = resolve_service_by_name(portname);
} else if (mode == (IPF_OPT_SRC | IPF_OPT_PORT) || mode == (IPF_OPT_DST | IPF_OPT_PORT)) {
- retval = sscanf(input, "%3d.%3d.%3d.%3d,%5d", &host1, &host2, &host3, &host4, &port);
- if (retval != 5)
+ char *ptr;
+ ptr = input;
+ while (*ptr != ',')
+ ptr++;
+ *ptr = ' ';
+ retval = sscanf(input, "%40s %5d", ip, &port);
+ if (retval != 2)
return;
} else if (mode == IPF_OPT_SRC || mode == IPF_OPT_DST) {
- retval = sscanf(input, "%3d.%3d.%3d.%3d", &host1, &host2, &host3, &host4);
- if (retval != 4)
- return;
+ xstrncpy(ip, input, 40);
} else {
return;
}
- snprintf(ip, IPLEN, "%d.%d.%d.%d", host1, host2, host3, host4);
if (mode & IPF_OPT_SRC) {
if (convert_ip(ip, &opt.line->shost) == IN_ADDR_ERROR)
return;
@@ -239,6 +283,8 @@
if (opt.parser == (IPF_DATE | IPF_DATA | IPF_PROTO | IPF_SRC_IP | IPF_DST_IP | IPF_SRC_PORT | IPF_DST_PORT)) {
return PARSE_OK;
+ } else if ((opt.line->protocol == 44) && (opt.parser == (IPF_DATE | IPF_DATA | IPF_PROTO | IPF_SRC_IP | IPF_DST_IP))) {
+ return PARSE_OK;
} else {
if (opt.verbose)
fprintf(stderr, "ipfilter parse error in line %d, ignoring.\n", linenum);
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/ipfw.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: ipfw.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: ipfw.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _IPFW_H
#define _IPFW_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/ipfw.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: ipfw.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: ipfw.l 731 2013-05-17 14:15:23Z bw $ */
%option prefix="ipfw"
%option outfile="ipfw.c"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/lancom.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: lancom.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: lancom.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -24,6 +24,11 @@
sinpute = sinputs + 15;
*sinpute = '\0';
retval = sscanf(sinputs, "%3s %2d %2d:%2d:%2d", smonth, &day, &hour, &minute, &second);
+ if (retval != 5) {
+ if (opt.verbose)
+ fprintf(stderr, "lancom parse error while reading dhost in line %d, ignoring.\n", linenum);
+ return PARSE_WRONG_FORMAT;
+ }
build_time(smonth, day, hour, minute, second);
/* Read loghost */
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/lancom.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: lancom.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: lancom.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _LANCOM_H
#define _LANCOM_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/main.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: main.c 709 2010-10-06 15:34:09Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: main.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -37,8 +37,9 @@
printf(_(" -E <format> select or exclude hosts, ports, chains and targets\n"));
printf(_(" quick reference: -E[ie][hp][sd]<ip/number>\n"));
printf(_(" -E[ie][cb]<name>\n"));
- printf(_(" -m <count> only show entries with at least so many incidents\n"));
+ printf(_(" -i <file> initialize DNS cache with entries from file\n"));
printf(_(" -M <number> only show this amount of entries\n"));
+ printf(_(" -m <count> only show entries with at least so many incidents\n"));
printf(_(" -N resolve service names\n"));
printf(_(" -n resolve host names\n"));
printf(_(" -O <order> define the sort order (see the man page for details)\n"));
@@ -83,7 +84,7 @@
{
/* GNU standards compatible program info */
printf("%s %s\n", PACKAGE, VERSION);
- puts("Copyright (C) 2000-2010 Boris Wesslowski");
+ puts("Copyright (C) 2000-2013 Boris Wesslowski");
puts("");
puts("This program is free software; you can redistribute it and/or modify");
puts("it under the terms of the GNU General Public License as published by");
@@ -120,12 +121,6 @@
#else
puts(_("disabled"));
#endif
- printf(_("IPv6 support "));
-#ifdef HAVE_IPV6
- puts(_("enabled"));
-#else
- puts(_("disabled"));
-#endif
printf(_("GNU adns support "));
#ifdef HAVE_ADNS
puts(_("enabled"));
@@ -150,6 +145,7 @@
opt.whois_lookup = 0;
opt.whois_sock = -1;
xstrncpy(opt.rcfile, RCFILE, FILESIZE);
+ opt.rcfile_dns[0] = '\0';
opt.line = NULL;
opt.format_sel[0] = '\0';
@@ -321,6 +317,9 @@
case 'h':
usage(argv[0], EXIT_SUCCESS);
break;
+ case 'i':
+ xstrncpy(opt.rcfile_dns, optarg, FILESIZE);
+ break;
case 'k':
add_known_host(optarg);
break;
@@ -403,11 +402,14 @@
}
if (!alt_rcfile) {
- read_rcfile(opt.rcfile, MAY_NOT_EXIST);
+ read_rcfile(opt.rcfile, MAY_NOT_EXIST, RCFILE_CF);
} else {
- read_rcfile(opt.rcfile, MUST_EXIST);
+ read_rcfile(opt.rcfile, MUST_EXIST, RCFILE_CF);
}
+ if (opt.rcfile_dns[0] != '\0')
+ read_rcfile(opt.rcfile_dns, MUST_EXIST, RCFILE_DNS);
+
while (optind < argc)
add_input_file(argv[optind++]);
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/main.h
^
|
@@ -1,16 +1,16 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: main.h 710 2010-10-10 11:28:41Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: main.h 733 2013-05-23 14:04:42Z bw $ */
#ifndef _MAIN_H
#define _MAIN_H
#define PACKAGE "fwlogwatch"
-#define VERSION "1.2 2010/10/10"
+#define VERSION "1.4 2013-05-23"
#define COPYRIGHT "Boris Wesslowski"
/* Paths */
-#define INSTALL_DIR "/usr"
+#define INSTALL_DIR "/usr/local"
#define CONF_DIR "/etc"
#define LOCALE_DIR "/usr"
@@ -31,6 +31,7 @@
#define FILESIZE 256
#define TIMESIZE 64
#define HOSTLEN 256
+#define HOSTLEN_M1_S "255"
#define SHOSTLEN 32
#define SHOSTLEN_S "32"
#define IPLEN 16
@@ -63,6 +64,12 @@
#endif
#define RCFILE CONF_DIR "/fwlogwatch.config"
+/* Includes */
+
+#ifdef HAVE_ZLIB
+#include <zlib.h>
+#endif
+
enum {
MAY_NOT_EXIST,
MUST_EXIST
@@ -112,6 +119,11 @@
IN_ADDR_ERROR
};
+enum {
+ RCFILE_CF,
+ RCFILE_DNS
+};
+
/* TCP flags */
#define TCP_SYN 1
@@ -144,7 +156,9 @@
NF_OPT_PREFIX,
NF_OPT_PREFIX_KTIME,
NF_OPT_SRC,
- NF_OPT_DST
+ NF_OPT_DST,
+ NF_OPT_SRC6,
+ NF_OPT_DST6
};
/* cisco ios support */
@@ -308,11 +322,7 @@
#define FWLW_NOTIFY INSTALL_DIR "/sbin/fwlw_notify"
#define FWLW_RESPOND INSTALL_DIR "/sbin/fwlw_respond"
#define STATUS_TITLE _("fwlogwatch status")
-#ifndef HAVE_IPV6
-#define LISTENIF "127.0.0.1"
-#else
#define LISTENIF "::1"
-#endif
#define LISTENPORT 888
#define DEFAULT_USER "admin"
#define DEFAULT_PASSWORD "2fi4nEVVz0IXo" /* fwlogwat[ch]
@@ -367,9 +377,9 @@
char interface[SHORTLEN];
int protocol;
unsigned long int datalen;
- struct in_addr shost;
+ struct in6_addr shost;
int sport;
- struct in_addr dhost;
+ struct in6_addr dhost;
int dport;
unsigned char flags;
int count;
@@ -385,9 +395,9 @@
char *interface;
int protocol;
unsigned long int datalen;
- struct in_addr shost;
+ struct in6_addr shost;
int sport;
- struct in_addr dhost;
+ struct in6_addr dhost;
int dport;
unsigned char flags;
int id;
@@ -400,7 +410,7 @@
};
struct dns_cache {
- struct in_addr ip;
+ struct in6_addr ip;
char *fqdn;
struct dns_cache *next;
};
@@ -416,9 +426,9 @@
struct known_hosts {
time_t time;
int count;
- struct in_addr shost;
- struct in_addr netmask;
- struct in_addr dhost;
+ struct in6_addr shost;
+ struct in6_addr netmask;
+ struct in6_addr dhost;
int protocol;
int sport;
int dport;
@@ -428,8 +438,9 @@
struct parser_options {
unsigned char mode;
+ struct in6_addr host;
+ struct in6_addr netmask;
unsigned long int value;
- struct in_addr netmask;
char *svalue;
struct parser_options *next;
};
@@ -451,6 +462,9 @@
struct options {
unsigned char mode;
FILE *inputfd;
+#ifdef HAVE_ZLIB
+ gzFile gzinputfd;
+#endif
unsigned char std_in;
unsigned char verbose;
@@ -460,6 +474,7 @@
int whois_sock;
int filecount;
char rcfile[FILESIZE];
+ char rcfile_dns[FILESIZE];
struct log_line *line;
char format_sel[SHORTLEN];
@@ -527,13 +542,15 @@
unsigned char stateful_start;
int sock;
char listenif[IP6LEN];
+ char listento[IP6LEN];
int listenport;
- char listento[IPLEN];
char user[USERSIZE];
char password[PASSWORDSIZE];
int refresh;
unsigned char webpage;
int global_id;
+
+ char ntop[INET6_ADDRSTRLEN];
};
#endif
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/modes.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: modes.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: modes.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -54,13 +54,12 @@
retval = (fgets(buf, BUFSIZE, opt.inputfd) != NULL);
#ifdef HAVE_ZLIB
} else {
- retval = (gzgets(opt.inputfd, buf, BUFSIZE) != Z_NULL);
+ retval = (gzgets(opt.gzinputfd, buf, BUFSIZE) != Z_NULL);
}
#endif
while (retval) {
*linenum += 1;
- hit = PARSE_NO_HIT;
hit = parse_line(buf, *linenum);
opt.repeated = 0;
switch (hit) {
@@ -85,7 +84,7 @@
retval = (fgets(buf, BUFSIZE, opt.inputfd) != NULL);
#ifdef HAVE_ZLIB
} else {
- retval = (gzgets(opt.inputfd, buf, BUFSIZE) != Z_NULL);
+ retval = (gzgets(opt.gzinputfd, buf, BUFSIZE) != Z_NULL);
}
#endif
}
@@ -115,14 +114,12 @@
fprintf(stderr, _("Opening input file '%s'\n"), input);
#ifdef HAVE_ZLIB
- opt.inputfd = gzopen(input, "rb");
+ opt.gzinputfd = gzopen(input, "rb");
+ if (opt.gzinputfd == NULL) {
+ fprintf(stderr, "gzopen %s: %s\n", input, strerror(errno));
#else
opt.inputfd = fopen(input, "r");
-#endif
if (opt.inputfd == NULL) {
-#ifdef HAVE_ZLIB
- fprintf(stderr, "gzopen %s: %s\n", input, strerror(errno));
-#else
fprintf(stderr, "fopen %s: %s\n", input, strerror(errno));
#endif
exit(EXIT_FAILURE);
@@ -153,10 +150,10 @@
if (retval == EOF) {
perror("fclose");
#else
- retval = gzclose(opt.inputfd);
+ retval = gzclose(opt.gzinputfd);
if (retval != 0) {
if (retval != Z_ERRNO) {
- fprintf(stderr, "gzclose %s: %s\n", input, gzerror(opt.inputfd, &retval));
+ fprintf(stderr, "gzclose %s: %s\n", input, gzerror(opt.gzinputfd, &retval));
} else {
perror("gzclose");
}
@@ -356,7 +353,7 @@
if (opt.verbose)
fprintf(stderr, _("Resolving\n"));
- retval = adns_init(&adns, adns_if_noenv, 0);
+ retval = adns_init(&adns, adns_if_none, 0);
if (retval) {
perror("adns_init");
exit(EXIT_FAILURE);
@@ -426,11 +423,18 @@
void mode_rt_response_reread_conf()
{
free_exclude_data();
- if (read_rcfile(opt.rcfile, MAY_NOT_EXIST) == EXIT_SUCCESS) {
+ if (read_rcfile(opt.rcfile, MAY_NOT_EXIST, RCFILE_CF) == EXIT_SUCCESS) {
syslog(LOG_NOTICE, _("SIGHUP caught, reread configuration file %s"), opt.rcfile);
} else {
syslog(LOG_NOTICE, _("SIGHUP caught, unable to reread configuration file %s"), opt.rcfile);
}
+ if (opt.rcfile_dns[0] != '\0') {
+ if (read_rcfile(opt.rcfile_dns, MAY_NOT_EXIST, RCFILE_DNS) == EXIT_SUCCESS) {
+ syslog(LOG_NOTICE, _("Reread DNS cache file %s"), opt.rcfile_dns);
+ } else {
+ syslog(LOG_NOTICE, _("Unable to reread DNS cache file %s"), opt.rcfile_dns);
+ }
+ }
signal(SIGHUP, mode_rt_response_reread_conf);
}
@@ -629,7 +633,7 @@
prepare_socket();
#ifdef HAVE_ADNS
if (opt.resolve) {
- retval = adns_init(&adns, adns_if_noenv, 0);
+ retval = adns_init(&adns, adns_if_none, 0);
if (retval) {
syslog(LOG_NOTICE, "adns_init: %s", strerror(errno));
log_exit(EXIT_FAILURE);
@@ -725,14 +729,12 @@
} else {
input = file->name;
#ifdef HAVE_ZLIB
- opt.inputfd = gzopen(input, "rb");
+ opt.gzinputfd = gzopen(input, "rb");
+ if (opt.gzinputfd == NULL) {
+ fprintf(stderr, "gzopen %s: %s\n", input, strerror(errno));
#else
opt.inputfd = fopen(input, "r");
-#endif
if (opt.inputfd == NULL) {
-#ifdef HAVE_ZLIB
- fprintf(stderr, "gzopen %s: %s\n", input, strerror(errno));
-#else
fprintf(stderr, "fopen %s: %s\n", input, strerror(errno));
#endif
exit(EXIT_FAILURE);
@@ -748,7 +750,7 @@
loop = (fgets(buf, BUFSIZE, opt.inputfd) != NULL);
#ifdef HAVE_ZLIB
} else {
- loop = (gzgets(opt.inputfd, buf, BUFSIZE) != Z_NULL);
+ loop = (gzgets(opt.gzinputfd, buf, BUFSIZE) != Z_NULL);
}
#endif
@@ -770,7 +772,7 @@
loop = (fgets(buf, BUFSIZE, opt.inputfd) != NULL);
#ifdef HAVE_ZLIB
} else {
- loop = (gzgets(opt.inputfd, buf, BUFSIZE) != Z_NULL);
+ loop = (gzgets(opt.gzinputfd, buf, BUFSIZE) != Z_NULL);
}
#endif
}
@@ -786,10 +788,10 @@
if (retval == EOF) {
perror("fclose");
#else
- retval = gzclose(opt.inputfd);
+ retval = gzclose(opt.gzinputfd);
if (retval != 0) {
if (retval != Z_ERRNO) {
- fprintf(stderr, "gzclose %s: %s\n", input, gzerror(opt.inputfd, &retval));
+ fprintf(stderr, "gzclose %s: %s\n", input, gzerror(opt.gzinputfd, &retval));
} else {
perror("gzclose");
}
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/modes.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: modes.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: modes.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _MODES_H
#define _MODES_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/net.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: net.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: net.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -19,6 +19,7 @@
#include <arpa/inet.h>
#include <signal.h>
+#ifndef __APPLE__
#ifndef __OpenBSD__
#ifndef __FreeBSD__
#ifndef __NetBSD__
@@ -26,6 +27,7 @@
#endif
#endif
#endif
+#endif
#ifndef INT_MAX
#include <limits.h>
@@ -36,6 +38,7 @@
#include "response.h"
#include "resolve.h"
#include "compare.h"
+#include "utils.h"
extern struct options opt;
extern struct conn_data *first;
@@ -59,20 +62,10 @@
void prepare_socket()
{
int retval, x;
-#ifndef HAVE_IPV6
- struct sockaddr_in sa;
- struct in_addr ina;
-#else
struct sockaddr_in6 sain6;
struct in6_addr in6a;
- char nab[INET6_ADDRSTRLEN];
-#endif
-#ifndef HAVE_IPV6
- opt.sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
-#else
opt.sock = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP);
-#endif
if (opt.sock == -1) {
syslog(LOG_NOTICE, "socket: %s", strerror(errno));
log_exit(EXIT_FAILURE);
@@ -83,17 +76,6 @@
syslog(LOG_NOTICE, "setsockopt: %s", strerror(errno));
log_exit(EXIT_FAILURE);
}
-#ifndef HAVE_IPV6
- ina.s_addr = inet_addr(opt.listenif);
- if (ina.s_addr == -1) {
- syslog(LOG_NOTICE, "inet_addr: Bad address %s", opt.listenif);
- log_exit(EXIT_FAILURE);
- }
- bzero(&sa, sizeof(sa));
- sa.sin_family = AF_INET;
- sa.sin_port = htons(opt.listenport);
- sa.sin_addr = ina;
-#else
retval = inet_pton(AF_INET6, opt.listenif, in6a.s6_addr);
if (retval != 1) {
char nnb[HOSTLEN];
@@ -109,13 +91,8 @@
sain6.sin6_family = AF_INET6;
sain6.sin6_port = htons(opt.listenport);
sain6.sin6_addr = in6a;
-#endif
-#ifndef HAVE_IPV6
- retval = bind(opt.sock, (struct sockaddr *) &sa, sizeof(sa));
-#else
retval = bind(opt.sock, (struct sockaddr *) &sain6, sizeof(sain6));
-#endif
if (retval == -1) {
syslog(LOG_NOTICE, "bind: %s", strerror(errno));
log_exit(EXIT_FAILURE);
@@ -126,11 +103,11 @@
syslog(LOG_NOTICE, "listen: %s", strerror(errno));
log_exit(EXIT_FAILURE);
}
-#ifndef HAVE_IPV6
- syslog(LOG_NOTICE, _("Listening on %s port %i"), inet_ntoa(sa.sin_addr), ntohs(sa.sin_port));
-#else
- syslog(LOG_NOTICE, _("Listening on %s port %i"), inet_ntop(AF_INET6, &sain6.sin6_addr, nab, INET6_ADDRSTRLEN), ntohs(sain6.sin6_port));
-#endif
+ syslog(LOG_NOTICE, _("Listening on %s port %i"), my_inet_ntop(&sain6.sin6_addr), ntohs(sain6.sin6_port));
+
+ if (opt.listento[0] != '\0') {
+ syslog(LOG_NOTICE, _("Connections are only allowed from %s"), opt.listento);
+ }
}
/*
@@ -447,9 +424,9 @@
if (opt.datalen) {
fdprintf(conn, "<td>%lu</td>", this->datalen);
}
- fdprintf(conn, "<td>%s</td>", inet_ntoa(this->shost));
+ fdprintf(conn, "<td>%s</td>", my_inet_ntop(&this->shost));
if (opt.resolve) {
- fdprintf(conn, "<td>%s</td>", resolve_hostname(this->shost));
+ fdprintf(conn, "<td>%s</td>", resolve_address(this->shost));
}
if (opt.src_port) {
fdprintf(conn, "<td>%d</td>", this->sport);
@@ -458,9 +435,9 @@
}
}
if (opt.dst_ip) {
- fdprintf(conn, "<td>%s</td>", inet_ntoa(this->dhost));
+ fdprintf(conn, "<td>%s</td>", my_inet_ntop(&this->dhost));
if (opt.resolve) {
- fdprintf(conn, "<td>%s</td>", resolve_hostname(this->dhost));
+ fdprintf(conn, "<td>%s</td>", resolve_address(this->dhost));
}
}
if (opt.dst_port) {
@@ -510,33 +487,19 @@
if (this_host->time == 0) {
int mask;
- unsigned long int netmask[33] = {
- 0x0,
- 0x80000000, 0xC0000000, 0xE0000000, 0xF0000000,
- 0xF8000000, 0xFC000000, 0xFE000000, 0xFF000000,
- 0xFF800000, 0xFFC00000, 0xFFE00000, 0xFFF00000,
- 0xFFF80000, 0xFFFC0000, 0xFFFE0000, 0xFFFF0000,
- 0xFFFF8000, 0xFFFFC000, 0xFFFFE000, 0xFFFFF000,
- 0xFFFFF800, 0xFFFFFC00, 0xFFFFFE00, 0xFFFFFF00,
- 0xFFFFFF80, 0xFFFFFFC0, 0xFFFFFFE0, 0xFFFFFFF0,
- 0xFFFFFFF8, 0xFFFFFFFC, 0xFFFFFFFE, 0xFFFFFFFF
- };
fdprintf(conn, "<td>-</td>");
if (opt.proto) {
fdprintf(conn, _("<td>any</td>"));
}
- for (mask = 0; mask < 32; mask++) {
- if (ntohl(netmask[mask]) == this_host->netmask.s_addr)
- break;
- }
- if (mask == 32) {
- fdprintf(conn, "<td>%s</td>", inet_ntoa(this_host->shost));
+ mask = convert_mask(&this_host->netmask);
+ if ((mask == 128) || ((isV4mappedV6addr(&this_host->shost)) && (mask == 32))) {
+ fdprintf(conn, "<td>%s</td>", my_inet_ntop(&this_host->shost));
} else {
- fdprintf(conn, "<td>%s/%d</td>", inet_ntoa(this_host->shost), mask);
+ fdprintf(conn, "<td>%s/%d</td>", my_inet_ntop(&this_host->shost), mask);
}
if (opt.resolve) {
- if (mask == 32) {
+ if ((mask == 128) || ((isV4mappedV6addr(&this_host->shost)) && (mask == 32))) {
fdprintf(conn, _("<td>(known host)</td>"));
} else {
fdprintf(conn, _("<td>(known net)</td>"));
@@ -567,9 +530,9 @@
if (opt.proto) {
fdprintf(conn, "<td>%s</td>", resolve_protocol(this_host->protocol));
}
- fdprintf(conn, "<td>%s</td>", inet_ntoa(this_host->shost));
+ fdprintf(conn, "<td>%s</td>", my_inet_ntop(&this_host->shost));
if (opt.resolve) {
- fdprintf(conn, "<td>%s</td>", resolve_hostname(this_host->shost));
+ fdprintf(conn, "<td>%s</td>", resolve_address(this_host->shost));
}
if (opt.src_port) {
fdprintf(conn, "<td>%d</td>", this_host->sport);
@@ -578,9 +541,9 @@
}
}
if (opt.dst_ip) {
- fdprintf(conn, "<td>%s</td>", inet_ntoa(this_host->dhost));
+ fdprintf(conn, "<td>%s</td>", my_inet_ntop(&this_host->dhost));
if (opt.resolve) {
- fdprintf(conn, "<td>%s</td>", resolve_hostname(this_host->dhost));
+ fdprintf(conn, "<td>%s</td>", resolve_address(this_host->dhost));
}
}
if (opt.dst_port) {
@@ -623,39 +586,23 @@
#else
size_t socks;
#endif
-#ifndef HAVE_IPV6
- struct sockaddr_in sac;
-#else
struct sockaddr_in6 sain6;
char nab[INET6_ADDRSTRLEN];
-#endif
char buf[BUFSIZE], password[PASSWORDSIZE], salt[3], *pnt, command[9] = "", option1 = 'm', option2 = 'm';
unsigned char auth = 0;
-#ifndef HAVE_IPV6
- socks = sizeof(struct sockaddr_in);
-#else
socks = sizeof(struct sockaddr_in6);
-#endif
-#ifndef HAVE_IPV6
- conn = accept(opt.sock, (struct sockaddr *) &sac, &socks);
-#else
conn = accept(opt.sock, (struct sockaddr *) &sain6, &socks);
-#endif
if (conn == -1) {
syslog(LOG_NOTICE, "accept: %s", strerror(errno));
return;
}
opt.status = STATUS_OK;
-#ifndef HAVE_IPV6
- if ((opt.listento[0] != '\0') && (strncmp(opt.listento, inet_ntoa(sac.sin_addr), IPLEN) != 0)) {
- syslog(LOG_NOTICE, _("Rejected connect from unallowed ip %s port %i"), inet_ntoa(sac.sin_addr), ntohs(sac.sin_port));
-#else
- if ((opt.listento[0] != '\0') && (strncmp(opt.listento, inet_ntop(AF_INET6, &sain6.sin6_addr, nab, INET6_ADDRSTRLEN), IPLEN) != 0)) {
- syslog(LOG_NOTICE, _("Rejected connect from unallowed ip %s port %i"), inet_ntop(AF_INET6, &sain6.sin6_addr, nab, INET6_ADDRSTRLEN), ntohs(sain6.sin6_port));
-#endif
+ if ((opt.listento[0] != '\0')
+ && (strncmp(opt.listento, inet_ntop(AF_INET6, &sain6.sin6_addr, nab, INET6_ADDRSTRLEN), IP6LEN) != 0)) {
+ syslog(LOG_NOTICE, _("Rejected connection from unallowed IP address %s port %i"), my_inet_ntop(&sain6.sin6_addr), ntohs(sain6.sin6_port));
retval = close(conn);
if (retval == -1) {
syslog(LOG_NOTICE, "close: %s", strerror(errno));
@@ -664,11 +611,7 @@
}
if (opt.verbose)
-#ifndef HAVE_IPV6
- syslog(LOG_NOTICE, _("Connect from %s port %i"), inet_ntoa(sac.sin_addr), ntohs(sac.sin_port));
-#else
syslog(LOG_NOTICE, _("Connect from %s port %i"), inet_ntop(AF_INET6, &sain6.sin6_addr, nab, INET6_ADDRSTRLEN), ntohs(sain6.sin6_port));
-#endif
secure_read(conn, buf, BUFSIZE);
while (!(strncmp(buf, "", BUFSIZE) == 0)) {
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/net.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: net.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: net.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _NET_H
#define _NET_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/netfilter.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: netfilter.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: netfilter.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _NETFILTER_H
#define _NETFILTER_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/netfilter.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: netfilter.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: netfilter.l 732 2013-05-23 12:38:56Z bw $ */
%option prefix="nf"
%option outfile="netfilter.c"
@@ -19,6 +19,7 @@
void nf_parse_start_hn(char *input);
void nf_parse_start(char *input);
void nf_parse_isostart_hn(char *input);
+void nf_parse_rfc5424start_hn(char *input);
void nf_parse_prefix(char *input, unsigned char mode);
void nf_parse_ip(char *input, unsigned char mode);
void nf_parse_proto(char *input);
@@ -35,6 +36,7 @@
HEXDIGIT [0-9a-fA-F]
HEXNUM "0x"{HEXDIGIT}+
PROTO "TCP"|"UDP"|"ICMP"|"ESP"|"AH"|"ICMPv6"|{NUMBER}
+IPV6ADDR ([0-9a-f]{1,4}":"+){1,7}[0-9a-f]{1,4}
%%
@@ -43,7 +45,8 @@
{DIGIT}{4}[ ]{MONTH}[ ]{1,2}{DIGIT}{1,2}[ ]{DIGIT}{2}:{DIGIT}{2}:{DIGIT}{2}[ ]{LOGHOST} nf_parse_start_hn(nftext+5);
{DIGIT}{4}[ ]{MONTH}[ ]{1,2}{DIGIT}{1,2}[ ]{DIGIT}{2}:{DIGIT}{2}:{DIGIT}{2} nf_parse_start(nftext+5);
{DIGIT}{4}:{DIGIT}{2}:{DIGIT}{2}-{DIGIT}{2}:{DIGIT}{2}:{DIGIT}{2}[ ]{LOGHOST} nf_parse_isostart_hn(nftext);
-" kernel: ["{NUMBER}"."{DIGIT}{6}"]"{PREFIX}{STRING}? nf_parse_prefix(nftext+18, NF_OPT_PREFIX_KTIME);
+{DIGIT}{4}"-"{DIGIT}{2}"-"{DIGIT}{2}"T"{DIGIT}{2}":"{DIGIT}{2}":"{DIGIT}{2}"."{DIGIT}{6}("+"|"-"){DIGIT}{2}":"{DIGIT}{2}[ ]{LOGHOST} nf_parse_rfc5424start_hn(nftext);
+" kernel: ["[ ]{0,4}{NUMBER}"."{DIGIT}{6}"]"{PREFIX}{STRING}? nf_parse_prefix(nftext+18, NF_OPT_PREFIX_KTIME);
" kernel: IN="{STRING}? nf_parse_prefix(nftext+12, NF_OPT_NOPREFIX);
" kernel: "{PREFIX}{STRING}? nf_parse_prefix(nftext+9, NF_OPT_PREFIX);
" [kernel] IN="{STRING}? nf_parse_prefix(nftext+13, NF_OPT_NOPREFIX);
@@ -59,6 +62,8 @@
"MAC="(({HEXDIGIT}{HEXDIGIT}:){13}{HEXDIGIT}{HEXDIGIT})? /* ignore */
"SRC="{OCTET}"."{OCTET}"."{OCTET}"."{OCTET} nf_parse_ip(nftext+4, NF_OPT_SRC);
"DST="{OCTET}"."{OCTET}"."{OCTET}"."{OCTET} nf_parse_ip(nftext+4, NF_OPT_DST);
+"SRC="{IPV6ADDR} nf_parse_ip(nftext+4, NF_OPT_SRC6);
+"DST="{IPV6ADDR} nf_parse_ip(nftext+4, NF_OPT_DST6);
"LEN="{NUMBER} opt.line->datalen = atoi(nftext+4);
"TOS="({HEXNUM}|"00") /* ignore */
"PREC="{HEXNUM} /* ignore */
@@ -72,8 +77,10 @@
"INCOMPLETE ["{NUMBER}" bytes]" /* ignore */
"TYPE="{NUMBER} { opt.line->sport = atoi(nftext+5); opt.parser=opt.parser|NF_TYPE; }
"CODE="{NUMBER} { opt.line->dport = atoi(nftext+5); opt.parser=opt.parser|NF_CODE; }
+"PARAMETER="{NUMBER} /* ignore */
"SEQ="{NUMBER} /* ignore */
"MARK="{HEXNUM} /* ignore */
+"MARK=0" /* ignore */
"ACK="{NUMBER} /* ignore */
"SPT="{PORT} { opt.line->sport = atoi(nftext+4); opt.parser=opt.parser|NF_SPT; }
"DPT="{PORT} { opt.line->dport = atoi(nftext+4); opt.parser=opt.parser|NF_DPT; }
@@ -158,6 +165,30 @@
opt.parser = opt.parser | NF_DATE;
}
+void nf_parse_rfc5424start_hn(char *input)
+{
+ int retval, year, month, day, hour, minute, second, fraction, tz_hour, tz_minute;
+ struct tm *t;
+
+ retval = sscanf(input, "%4d-%2d-%2dT%2d:%2d:%2d.%6d%3d:%2d %32s", &year, &month, &day, &hour, &minute, &second, &fraction, &tz_hour, &tz_minute, opt.line->hostname);
+ if (retval != 10) {
+ return;
+ }
+
+ t = xmalloc(sizeof(struct tm));
+ t->tm_year = year - 1900;
+ t->tm_mon = month - 1;
+ t->tm_mday = day;
+ t->tm_hour = hour;
+ t->tm_min = minute;
+ t->tm_sec = second;
+ t->tm_isdst = -1;
+ opt.line->time = mktime(t);
+ free(t);
+
+ opt.parser = opt.parser | NF_DATE;
+}
+
void nf_parse_prefix(char *input, unsigned char mode)
{
size_t i = 0;
@@ -194,7 +225,7 @@
void nf_parse_ip(char *input, unsigned char mode)
{
- if (mode == NF_OPT_SRC) {
+ if ((mode == NF_OPT_SRC) || (mode == NF_OPT_SRC6)) {
if (convert_ip(input, &opt.line->shost) == IN_ADDR_ERROR)
return;
opt.parser = opt.parser | NF_SRC;
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/netscreen.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: netscreen.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: netscreen.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _NETSCREEN_H
#define _NETSCREEN_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/netscreen.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: netscreen.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: netscreen.l 731 2013-05-17 14:15:23Z bw $ */
%option prefix="ns"
%option outfile="netscreen.c"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/output.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: output.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: output.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <string.h>
@@ -143,9 +143,9 @@
fprintf(fd, "</td><td>%lu", input->datalen);
if (opt.src_ip) {
- fprintf(fd, "</td><td>%s", inet_ntoa(input->shost));
+ fprintf(fd, "</td><td>%s", my_inet_ntop(&input->shost));
if (opt.resolve)
- fprintf(fd, "</td><td>%s", resolve_hostname(input->shost));
+ fprintf(fd, "</td><td>%s", resolve_address(input->shost));
if (opt.whois_lookup) {
struct whois_entry *we;
we = whois(input->shost);
@@ -165,9 +165,9 @@
}
if (opt.dst_ip) {
- fprintf(fd, "</td><td>%s", inet_ntoa(input->dhost));
+ fprintf(fd, "</td><td>%s", my_inet_ntop(&input->dhost));
if (opt.resolve)
- fprintf(fd, "</td><td>%s", resolve_hostname(input->dhost));
+ fprintf(fd, "</td><td>%s", resolve_address(input->dhost));
}
if (opt.dst_port) {
@@ -261,9 +261,9 @@
fprintf(fd, _(" (%lu bytes)"), input->datalen);
if (opt.src_ip) {
- fprintf(fd, _(" from %s"), inet_ntoa(input->shost));
+ fprintf(fd, _(" from %s"), my_inet_ntop(&input->shost));
if (opt.resolve)
- fprintf(fd, " (%s)", resolve_hostname(input->shost));
+ fprintf(fd, " (%s)", resolve_address(input->shost));
if (opt.whois_lookup) {
struct whois_entry *we;
we = whois(input->shost);
@@ -283,9 +283,9 @@
}
if (opt.dst_ip) {
- fprintf(fd, _(" to %s"), inet_ntoa(input->dhost));
+ fprintf(fd, _(" to %s"), my_inet_ntop(&input->dhost));
if (opt.resolve) {
- fprintf(fd, " (%s)", resolve_hostname(input->dhost));
+ fprintf(fd, " (%s)", resolve_address(input->dhost));
}
}
@@ -425,46 +425,3 @@
fdprintf(fd, "<p class=\"copyright\"><a href=\"http://fwlogwatch.inside-security.de/\">%s</a> %s © %s</p>\n", PACKAGE, VERSION, COPYRIGHT);
fdprintf(fd, "</body>\n</html>\n");
}
-
-void output_raw_data(struct conn_data *input)
-{
- struct conn_data *this;
-
- this = first;
- while (this != NULL) {
-#ifndef __OpenBSD__
-#ifndef __FreeBSD__
- printf("%d;%ld;%ld;"
- "%s;%s;%s;"
- "%s;%d;"
- "%u;%d;"
- "%u;%d;"
- "%d\n",
- input->count, input->start_time, input->end_time,
- input->hostname, input->chainlabel, input->branchname,
- input->interface, input->protocol, ntohl(input->shost.s_addr), input->sport, ntohl(input->dhost.s_addr), input->dport, input->flags);
-#else
- printf("%d;%ld;%ld;"
- "%s;%s;%s;"
- "%s;%d;"
- "%ld;%d;"
- "%ld;%d;"
- "%d\n",
- input->count, input->start_time, input->end_time,
- input->hostname, input->chainlabel, input->branchname,
- input->interface, input->protocol, ntohl(input->shost.s_addr), input->sport, ntohl(input->dhost.s_addr), input->dport, input->flags);
-#endif
-#else
- printf("%d;%d;%d;"
- "%s;%s;%s;"
- "%s;%d;"
- "%u;%d;"
- "%u;%d;"
- "%d\n",
- input->count, input->start_time, input->end_time,
- input->hostname, input->chainlabel, input->branchname,
- input->interface, input->protocol, ntohl(input->shost.s_addr), input->sport, ntohl(input->dhost.s_addr), input->dport, input->flags);
-#endif
- this = this->next;
- }
-}
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/output.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: output.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: output.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _OUTPUT_H
#define _OUTPUT_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/parser.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: parser.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: parser.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -8,16 +8,17 @@
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
-#include "compare.h"
#include "cisco_ios.h"
#include "cisco_pix.h"
+#include "compare.h"
#include "ipchains.h"
#include "ipfilter.h"
#include "ipfw.h"
+#include "lancom.h"
#include "netfilter.h"
-#include "snort.h"
#include "netscreen.h"
-#include "lancom.h"
+#include "snort.h"
+#include "utils.h"
struct parser_options *excluded_first;
extern struct options opt;
@@ -100,8 +101,12 @@
excluded_this = excluded_first;
while (excluded_this != NULL) {
if ((match != P_MATCH_EXC) && (excluded_this->mode & PARSER_MODE_HOST) != 0) {
+ struct in6_addr testhost;
+ int i;
if ((excluded_this->mode & PARSER_MODE_SRC) != 0) {
- if ((opt.line->shost.s_addr & excluded_this->netmask.s_addr) == excluded_this->value) {
+ for (i = 0; i < 16; i++)
+ testhost.s6_addr[i] = opt.line->shost.s6_addr[i] & excluded_this->netmask.s6_addr[i];
+ if (compare_ipv6_equal(&testhost, &excluded_this->host) == 0) {
if ((excluded_this->mode & PARSER_MODE_NOT) != 0) {
match = P_MATCH_EXC;
} else {
@@ -109,7 +114,9 @@
}
}
} else {
- if ((opt.line->dhost.s_addr & excluded_this->netmask.s_addr) == excluded_this->value) {
+ for (i = 0; i < 16; i++)
+ testhost.s6_addr[i] = opt.line->dhost.s6_addr[i] & excluded_this->netmask.s6_addr[i];
+ if (compare_ipv6_equal(&testhost, &excluded_this->host) == 0) {
if ((excluded_this->mode & PARSER_MODE_NOT) != 0) {
match = P_MATCH_EXC;
} else {
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/parser.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: parser.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: parser.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _PARSER_H
#define _PARSER_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/Makefile
^
|
@@ -1,5 +1,5 @@
-# Copyright (C) 2000-2010 Boris Wesslowski
-# $Id: Makefile 706 2010-10-06 12:02:36Z bw $
+# Copyright (C) 2000-2013 Boris Wesslowski
+# $Id: Makefile 731 2013-05-17 14:15:23Z bw $
all:
msgfmt -v -o de.mo de.po
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/de.po
^
|
@@ -1,14 +1,15 @@
# German translation of fwlogwatch messages
-# Copyright (C) 2000-2010 Boris Wesslowski
+# Copyright (C) 2000-2013 Boris Wesslowski
# This file is distributed under the same license as the fwlogwatch package.
msgid ""
msgstr ""
"Project-Id-Version: fwlogwatch\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-06 13:58+0200\n"
-"PO-Revision-Date: 2010-10-06 14:25+0200\n"
+"POT-Creation-Date: 2013-05-23 15:04+0200\n"
+"PO-Revision-Date: 2013-05-23 15:15+0200\n"
"Last-Translator: Boris Wesslowski <bw@inside-security.de>\n"
"Language-Team: -\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -35,8 +36,8 @@
msgid "Error in sort string, direction expected, ignoring.\n"
msgstr "Fehler in der Sortierreihenfolge, Richtung erwartet, wird ignoriert.\n"
-#: ../compare.c:382 ../compare.c:384 ../modes.c:196 ../modes.c:203
-#: ../modes.c:813 ../modes.c:815 ../output.c:106 ../output.c:113
+#: ../compare.c:382 ../compare.c:384 ../modes.c:193 ../modes.c:200
+#: ../modes.c:815 ../modes.c:817 ../output.c:106 ../output.c:113
#: ../output.c:193 ../output.c:202 ../output.c:380
msgid "%b %d %H:%M:%S"
msgstr "%b %d %H:%M:%S"
@@ -114,8 +115,8 @@
#: ../main.c:40
#, c-format
-msgid " -m <count> only show entries with at least so many incidents\n"
-msgstr " -m <anzahl> Nur Einträge mit mindestens dieser Anzahl anzeigen\n"
+msgid " -i <file> initialize DNS cache with entries from file\n"
+msgstr " -i <datei> Initialisiere DNS-Cache aus dieser Datei\n"
#: ../main.c:41
#, c-format
@@ -124,709 +125,727 @@
#: ../main.c:42
#, c-format
+msgid " -m <count> only show entries with at least so many incidents\n"
+msgstr " -m <anzahl> Nur Einträge mit mindestens dieser Anzahl anzeigen\n"
+
+#: ../main.c:43
+#, c-format
msgid " -N resolve service names\n"
msgstr " -N Dienstenamen auflösen\n"
-#: ../main.c:43
+#: ../main.c:44
#, c-format
msgid " -n resolve host names\n"
msgstr " -n Rechnernamen auflösen\n"
-#: ../main.c:44
+#: ../main.c:45
#, c-format
msgid " -O <order> define the sort order (see the man page for details)\n"
msgstr " -O <ordnung> Sortierung der Ausgabe (siehe Dokumentation)\n"
-#: ../main.c:45
+#: ../main.c:46
#, c-format
msgid ""
" -P <format> use parsers for specific formats (defaults to netfilter)\n"
-msgstr " -P <format> Parser für bestimmte Formate benutzen (Vorgabe: netfilter)\n"
+msgstr ""
+" -P <format> Parser für bestimmte Formate benutzen (Vorgabe: netfilter)\n"
-#: ../main.c:46
+#: ../main.c:47
#, c-format
msgid " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
msgstr " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
-#: ../main.c:47
+#: ../main.c:48
#, c-format
msgid ""
" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
-msgstr " p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
+msgstr ""
+" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
-#: ../main.c:48
+#: ../main.c:49
#, c-format
msgid " -p differentiate protocols\n"
msgstr " -p Protokolle unterscheiden\n"
-#: ../main.c:49
+#: ../main.c:50
#, c-format
msgid " -s differentiate source ports\n"
msgstr " -s Quellports unterscheiden\n"
-#: ../main.c:50
+#: ../main.c:51
#, c-format
msgid " -U <title> set report and status page title and email subject\n"
msgstr ""
" -U <titel> Titel des Berichts, der Statusseite und E-Mail-Betreff "
"setzen\n"
-#: ../main.c:51
+#: ../main.c:52
#, c-format
msgid " -v verbose, specify twice for more info\n"
msgstr ""
" -v Information bei der Verarbeitung anzeigen (-vv für mehr)\n"
-#: ../main.c:52
+#: ../main.c:53
#, c-format
msgid " -y differentiate TCP options\n"
msgstr " -y TCP-Optionen unterscheiden\n"
-#: ../main.c:55
+#: ../main.c:56
#, c-format
msgid "Log summary mode (default):\n"
msgstr "Loganalysemodus (Vorgabe):\n"
-#: ../main.c:56
+#: ../main.c:57
#, c-format
msgid " -C <email> carbon copy recipients\n"
msgstr " -C <email> Empfängeradresse für Kopien\n"
-#: ../main.c:57
+#: ../main.c:58
#, c-format
msgid " -e show end times\n"
msgstr " -e Endzeiten anzeigen\n"
-#: ../main.c:58
+#: ../main.c:59
#, c-format
msgid " -F <email> report sender address (defaults to '%s')\n"
msgstr " -F <email> Absenderadresse des Berichts (Vorgabe: %s)\n"
-#: ../main.c:59
+#: ../main.c:60
#, c-format
msgid " -l <time> process recent events only (defaults to off)\n"
msgstr ""
" -l <zeit> Nur die jügsten Einträge bearbeiten (Vorgabe: deaktiviert)\n"
-#: ../main.c:60
+#: ../main.c:61
#, c-format
msgid " -o <file> specify output file\n"
msgstr " -o <datei> Ausgabedatei angeben\n"
-#: ../main.c:61
+#: ../main.c:62
#, c-format
msgid " -S do not differentiate source IP addresses\n"
msgstr " -S Quell-IP-Adressen nicht unterscheiden\n"
-#: ../main.c:62
+#: ../main.c:63
#, c-format
msgid " -T <email> send report by email to this address\n"
msgstr " -T <email> Bericht per E-mail an diese Adresse senden\n"
-#: ../main.c:63
+#: ../main.c:64
#, c-format
msgid " -t show start times\n"
msgstr " -t Anfangszeiten anzeigen\n"
-#: ../main.c:64
+#: ../main.c:65
#, c-format
msgid " -W activate whois lookups for source addresses\n"
msgstr " -W whois-Nachfrage für Quell-IP-Adressen\n"
-#: ../main.c:65
+#: ../main.c:66
#, c-format
msgid " -w HTML output\n"
msgstr " -w HTML-Ausgabe\n"
-#: ../main.c:66
+#: ../main.c:67
#, c-format
msgid " -z show time interval\n"
msgstr " -z Zeitintervalle anzeigen\n"
-#: ../main.c:69
+#: ../main.c:70
#, c-format
msgid "Realtime response mode:\n"
msgstr "Echtzeitantwortmodus:\n"
-#: ../main.c:70
+#: ../main.c:71
#, c-format
msgid " -R realtime response as daemon (default action: log only)\n"
msgstr ""
" -R Echtzeitantwort als Daemon (Vorgegebene Aktion: Loggen)\n"
-#: ../main.c:71
+#: ../main.c:72
#, c-format
msgid " -a <count> alert threshold (defaults to %d entries)\n"
msgstr " -a <anzahl> Alarmschwelle (Vorgabe: %d Einträge)\n"
-#: ../main.c:72
+#: ../main.c:73
#, c-format
msgid " -l <time> forget events this old (defaults to %d hours)\n"
msgstr ""
" -l <zeit> Alte Ereignisse werden verworfen (Vorgabe: %d Stunden)\n"
-#: ../main.c:73
+#: ../main.c:74
#, c-format
msgid " -k <IP/net> add this IP address or net to the list of known hosts\n"
-msgstr " -k <ip/netz> Diese IP-Adresse(n) in der Liste der Bekannten aufnehmen\n"
+msgstr ""
+" -k <ip/netz> Diese IP-Adresse(n) in der Liste der Bekannten aufnehmen\n"
-#: ../main.c:74
+#: ../main.c:75
#, c-format
msgid " -A invoke notification script if threshold is reached\n"
msgstr ""
" -A Aufruf des Benachrichtigungsskripts bei Err. der Schwelle\n"
-#: ../main.c:75
+#: ../main.c:76
#, c-format
msgid " -B invoke response action script (e.g. block host)\n"
msgstr " -B Aufruf des Antwortskipts (z.B. um Rechner zu sperren)\n"
-#: ../main.c:76
+#: ../main.c:77
#, c-format
msgid " -X <port> activate internal status information web server\n"
msgstr " -X <port> Internen Webserver für Zustandsinformation aktivieren\n"
-#: ../main.c:102
+#: ../main.c:103
msgid "You can contact the author at <bw@inside-security.de>."
msgstr "Der Autor ist unter <bw@inside-security.de> zu erreichen."
-#: ../main.c:104
+#: ../main.c:105
msgid "Compile-time options of this version:"
msgstr "Beim kompilieren dieser Version benutzte Optionen:"
-#: ../main.c:105
+#: ../main.c:106
#, c-format
msgid "Short name limit "
msgstr "Längenbegrenzung der Namen "
-#: ../main.c:107 ../main.c:113 ../main.c:119 ../main.c:125 ../main.c:131
+#: ../main.c:108 ../main.c:114 ../main.c:120 ../main.c:126
msgid "enabled"
msgstr "aktiviert"
-#: ../main.c:109 ../main.c:115 ../main.c:121 ../main.c:127 ../main.c:133
+#: ../main.c:110 ../main.c:116 ../main.c:122 ../main.c:128
msgid "disabled"
msgstr "deaktiviert"
-#: ../main.c:111
+#: ../main.c:112
#, c-format
msgid "Zlib support "
msgstr "Zlib-Unterstützung "
-#: ../main.c:117
+#: ../main.c:118
#, c-format
msgid "Gettext (i18n) support "
msgstr "Gettext-Unterstützung (i18n) "
-#: ../main.c:123
-#, c-format
-msgid "IPv6 support "
-msgstr "IPv6-Unterstützung "
-
-#: ../main.c:129
+#: ../main.c:124
#, c-format
msgid "GNU adns support "
msgstr "GNU adns-Unterstützung "
-#: ../main.c:287
+#: ../main.c:282
#, c-format
msgid "Illegal inclusion/exclusion pos. 1 (expected [ie]): %s\n"
msgstr "Ungültiger Parameter an Position 1 (erwartet: [ie]): %s\n"
-#: ../main.c:288 ../main.c:305 ../main.c:314 ../main.c:452
+#: ../main.c:283 ../main.c:300 ../main.c:309 ../main.c:453
#, c-format
msgid "Exiting\n"
msgstr "Das Programm wird beendet\n"
-#: ../main.c:304
+#: ../main.c:299
#, c-format
msgid "Illegal inclusion/exclusion pos. 2 (expected [hpcb]): %s\n"
msgstr "Ungültiger Parameter an Position 2 (erwartet: [hpcb]): %s\n"
-#: ../main.c:313
+#: ../main.c:308
#, c-format
msgid "Illegal inclusion/exclusion pos. 3 (expected [sd]): %s\n"
msgstr "Ungültiger Parameter an Position 3 (erwartet: [sd]): %s\n"
-#: ../modes.c:109
+#: ../modes.c:108
#, c-format
msgid "Using stdin as input\n"
msgstr "Die Daten werden von der Standardeingabe gelesen\n"
-#: ../modes.c:115
+#: ../modes.c:114
#, c-format
msgid "Opening input file '%s'\n"
msgstr "Die Eingabedatei '%s' wird geöffnet\n"
-#: ../modes.c:133
+#: ../modes.c:130
#, c-format
msgid "Processing\n"
msgstr "Verarbeitung\n"
-#: ../modes.c:140
+#: ../modes.c:137
#, c-format
msgid "Unrecognized entries or tokens can be submitted at\n"
msgstr "Unerkannte Einträge können unter folgender URL eingereicht werden:\n"
-#: ../modes.c:149 ../modes.c:396 ../modes.c:782 ../rcfile.c:321
+#: ../modes.c:146 ../modes.c:393 ../modes.c:784 ../rcfile.c:379
#, c-format
msgid "Closing '%s'\n"
msgstr "'%s' wird geschlossen\n"
-#: ../modes.c:178
+#: ../modes.c:175
#, c-format
msgid "Sorting data\n"
msgstr "Daten werden sortiert\n"
-#: ../modes.c:215
+#: ../modes.c:212
#, c-format
msgid "Opening output file '%s'\n"
msgstr "Die Ausgabedatei '%s' wird geöffnet\n"
-#: ../modes.c:226
+#: ../modes.c:223
#, c-format
msgid "Sending\n"
msgstr "Wird versandt\n"
-#: ../modes.c:249 ../net.c:364 ../net.c:367
+#: ../modes.c:246 ../net.c:341 ../net.c:344
msgid "%A %B %d %H:%M:%S %Z %Y"
msgstr "%A, %d. %B %H:%M:%S %Z %Y"
-#: ../modes.c:250
+#: ../modes.c:247
#, c-format
msgid "Generated %s by "
msgstr "Erzeugt am %s von "
-#: ../modes.c:260
+#: ../modes.c:257
#, c-format
msgid "an unknown user.\n"
msgstr "einem unbekannten Benutzer.\n"
-#: ../modes.c:268
+#: ../modes.c:265
#, c-format
msgid "(and %d older than %d seconds) "
msgstr "(und %d älter als %d Sekunden) "
-#: ../modes.c:271
+#: ../modes.c:268
#, c-format
msgid "(and %d malformed) "
msgstr "(und %d fehlerhaft) "
-#: ../modes.c:274
+#: ../modes.c:271
#, c-format
msgid "of %d entries in the file \"%s\" are packet logs, "
msgstr "von %d Einträgen in der Datei \"%s\" sind Paketfiltereinträge, "
-#: ../modes.c:276
+#: ../modes.c:273
#, c-format
msgid "of %d entries in standard input are packet logs, "
msgstr "von %d Einträgen aus der Standardeingabe sind Paketfiltereinträge, "
-#: ../modes.c:278
+#: ../modes.c:275
#, c-format
msgid "of %d entries in %d input files are packet logs, "
msgstr "von %d Einträgen in %d Dateien sind Paketfiltereinträge, "
-#: ../modes.c:282
+#: ../modes.c:279
#, c-format
msgid "one has unique characteristics.\n"
msgstr "einer ist eindeutig.\n"
-#: ../modes.c:284
+#: ../modes.c:281
#, c-format
msgid "%d have unique characteristics.\n"
msgstr "%d sind eindeutig.\n"
-#: ../modes.c:292
+#: ../modes.c:289
#, c-format
msgid "One entry was excluded by configuration.\n"
msgstr "Ein Eintrag wurde von der Konfiguration ausgeschlossen.\n"
-#: ../modes.c:294
+#: ../modes.c:291
#, c-format
msgid "%d entries were excluded by configuration.\n"
msgstr "%d Einträge wurden von der Konfiguration ausgeschlossen.\n"
-#: ../modes.c:302
+#: ../modes.c:299
#, c-format
msgid "First packet log entry: %s, last: %s.\n"
msgstr "Erster Paketfiltereintrag: %s, letzter: %s.\n"
-#: ../modes.c:304 ../modes.c:811
+#: ../modes.c:301 ../modes.c:813
#, c-format
msgid "No valid time entries found.\n"
msgstr "Keine gültigen Zeiteinträge gefunden.\n"
-#: ../modes.c:311
+#: ../modes.c:308
#, c-format
msgid "All entries were logged by the same host: \"%s\".\n"
msgstr "Alle Einträge wurden vom diesem Rechner geloggt: \"%s\".\n"
-#: ../modes.c:318
+#: ../modes.c:315
#, c-format
msgid "All entries are from the same chain: \"%s\".\n"
msgstr "Alle Einträge kommen von der selben Kette: \"%s\".\n"
-#: ../modes.c:325
+#: ../modes.c:322
#, c-format
msgid "All entries have the same target: \"%s\".\n"
msgstr "Alle Einträge haben das selbe Ziel: \"%s\".\n"
-#: ../modes.c:332
+#: ../modes.c:329
#, c-format
msgid "All entries are from the same interface: \"%s\".\n"
msgstr "Alle Einträge kommen von der selben Schnittstelle: \"%s\".\n"
-#: ../modes.c:339
+#: ../modes.c:336
#, c-format
msgid "Only entries with a count of at least %d are shown.\n"
msgstr "Nur Einträge mit mindestens %d Treffern werden gezeigt.\n"
-#: ../modes.c:346
+#: ../modes.c:343
#, c-format
msgid "Only the top %d entries are shown.\n"
msgstr "Nur die ersten %d Einträge werden gezeigt.\n"
-#: ../modes.c:357
+#: ../modes.c:354
#, c-format
msgid "Resolving\n"
msgstr "Auflösung\n"
-#: ../modes.c:416
+#: ../modes.c:413
#, c-format
msgid "Warning: pidfile exists, another fwlogwatch might be running.\n"
msgstr ""
"Warnung: pid-Datei existiert, fwlogwatch wird evtl. schon ausgeführt.\n"
-#: ../modes.c:430
+#: ../modes.c:427
#, c-format
msgid "SIGHUP caught, reread configuration file %s"
msgstr "SIGHUP abgefangen, Konfigurationsdatei %s wird neu eingelesen"
-#: ../modes.c:432
+#: ../modes.c:429
#, c-format
msgid "SIGHUP caught, unable to reread configuration file %s"
msgstr ""
"SIGHUP abgefangen, Konfigurationsdatei %s konnte nicht neu eingelesen werden"
-#: ../modes.c:455
+#: ../modes.c:433
+#, c-format
+msgid "Reread DNS cache file %s"
+msgstr "Die DNS-Cache-Datei %s wird neu eingelesen"
+
+#: ../modes.c:435
+#, c-format
+msgid "Unable to reread DNS cache file %s"
+msgstr "Die DNS-Cache-Datei %s konnte nicht neu eingelesen werden"
+
+#: ../modes.c:459
msgid "SIGUSR1 caught, reading input from stdin, no need to reopen log file"
msgstr ""
"SIGUSR1 abgefangen, die Standardeingabe wird benutzt, neu öffnen nicht nötig"
-#: ../modes.c:457
+#: ../modes.c:461
#, c-format
msgid "SIGUSR1 caught, reopening log file %s"
msgstr "SIGUSR1 abgefangen, Logdatei %s wird neu geöffnet"
-#: ../modes.c:529
+#: ../modes.c:533
msgid "SIGTERM caught, cleaning up"
msgstr "SIGTERM abgefangen, Speicher wird aufgeräumt"
-#: ../modes.c:611
+#: ../modes.c:615
#, c-format
msgid "Starting (pid %d)"
msgstr "Programmstart (pid %d)"
-#: ../modes.c:661
+#: ../modes.c:665
msgid "User to run as was not found"
msgstr "Der Benutzer dessen ID benutzt werden soll wurde nicht gefunden"
-#: ../modes.c:676
+#: ../modes.c:680
#, c-format
msgid "Changed uid from %d to %d, gid from %d to %d"
msgstr "Benutzer-ID gewechselt von %d zu %d, Gruppen-ID von %d zu %d"
-#: ../modes.c:678
+#: ../modes.c:682
#, c-format
msgid "Running with uid %d, gid %d"
msgstr "Prozess läuft mit uid %d, gid %d"
-#: ../modes.c:682
+#: ../modes.c:686
msgid "Alert threshold is one attempt"
msgstr "Alarmschwelle ist ein Versuch"
-#: ../modes.c:684
+#: ../modes.c:688
#, c-format
msgid "Alert threshold is %d attempts"
msgstr "Alarmschwelle ist %d Versuche"
-#: ../modes.c:688
+#: ../modes.c:692
#, c-format
msgid "Events older than %d second(s) are discarded"
msgstr "Ereignisse die älter als %d Sekunde(n) sind werden verworfen"
-#: ../modes.c:690
+#: ../modes.c:694
#, c-format
msgid "Events older than %d hour(s) are discarded"
msgstr "Ereignisse die älter als %d Stunde(n) sind werden verworfen"
-#: ../modes.c:693
+#: ../modes.c:697
#, c-format
msgid "Response mode: Log%s%s"
msgstr "Antwortmodus: loggen%s%s"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", notify"
msgstr ", benachrichtigen"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", respond"
msgstr ", antworten"
-#: ../modes.c:724
+#: ../modes.c:728
#, c-format
msgid "Reading standard input\n"
msgstr "Die Standardeingabe wird gelesen\n"
-#: ../modes.c:742
+#: ../modes.c:744
#, c-format
msgid "Reading '%s'\n"
msgstr "Die Datei '%s' wird gelesen\n"
-#: ../modes.c:808
+#: ../modes.c:810
#, c-format
msgid "Number of files: %d\n"
msgstr "Anzahl der Dateien: %d\n"
-#: ../modes.c:809
+#: ../modes.c:811
#, c-format
msgid "Number of lines: %d\n"
msgstr "Anzahl der Zeilen: %d\n"
-#: ../modes.c:814
+#: ../modes.c:816
#, c-format
msgid "First entry: %s\n"
msgstr "Erster Eintrag: %s\n"
-#: ../modes.c:816
+#: ../modes.c:818
#, c-format
msgid "Last entry : %s\n"
msgstr "Letzter Eintrag: %s\n"
-#: ../modes.c:818
+#: ../modes.c:820
#, c-format
msgid "Difference : %s\n"
msgstr "Differenz : %s\n"
-#: ../net.c:130 ../net.c:132
+#: ../net.c:106
#, c-format
msgid "Listening on %s port %i"
msgstr "Lauschen auf %s port %i"
-#: ../net.c:172
+#: ../net.c:109
+#, c-format
+msgid "Connections are only allowed from %s"
+msgstr "Verbindungen sind nur von %s erlaubt"
+
+#: ../net.c:149
msgid "decode_base64: input string incomplete"
msgstr "decode_base64: Eingabezeichenkette unvollständig"
-#: ../net.c:179
+#: ../net.c:156
#, c-format
msgid "decode_base64: illegal character '%c' in input string"
msgstr "decode_base64: ungültiges Zeichen '%c' in der Eingabe"
-#: ../net.c:214
+#: ../net.c:191
msgid "count"
msgstr "Anzahl"
-#: ../net.c:215
+#: ../net.c:192
msgid "added"
msgstr "Hinzugefügt"
-#: ../net.c:217
+#: ../net.c:194
msgid "proto"
msgstr "Protokoll"
-#: ../net.c:219
+#: ../net.c:196
msgid "bytes"
msgstr "Bytes"
-#: ../net.c:220
+#: ../net.c:197
msgid "source"
msgstr "Quelle"
-#: ../net.c:222 ../net.c:231
+#: ../net.c:199 ../net.c:208
msgid "hostname"
msgstr "Rechnername"
-#: ../net.c:224 ../net.c:234
+#: ../net.c:201 ../net.c:211
msgid "port"
msgstr "Port"
-#: ../net.c:226 ../net.c:236
+#: ../net.c:203 ../net.c:213
msgid "service"
msgstr "Dienst"
-#: ../net.c:229
+#: ../net.c:206
msgid "destination"
msgstr "Ziel"
-#: ../net.c:239
+#: ../net.c:216
msgid "opts"
msgstr "Optionen"
-#: ../net.c:240
+#: ../net.c:217
msgid "time remaining"
msgstr "Verbleibende Zeit"
-#: ../net.c:241
+#: ../net.c:218
msgid "action"
msgstr "Aktion"
-#: ../net.c:293 ../net.c:295 ../net.c:360
+#: ../net.c:270 ../net.c:272 ../net.c:337
msgid "Information"
msgstr "Information"
-#: ../net.c:299 ../net.c:301 ../net.c:398
+#: ../net.c:276 ../net.c:278 ../net.c:375
msgid "Options"
msgstr "Optionen"
-#: ../net.c:305 ../net.c:307 ../net.c:426
+#: ../net.c:282 ../net.c:284 ../net.c:403
msgid "Packet cache"
msgstr "Paketcache"
-#: ../net.c:311 ../net.c:313 ../net.c:495
+#: ../net.c:288 ../net.c:290 ../net.c:472
msgid "Host status"
msgstr "Rechnerzustand"
-#: ../net.c:316
+#: ../net.c:293
msgid "Reload"
msgstr "Neu laden"
-#: ../net.c:365
+#: ../net.c:342
msgid "Daemon start time"
msgstr "Startzeit des Daemons"
-#: ../net.c:368
+#: ../net.c:345
msgid "Current time"
msgstr "Aktuelle Zeit"
-#: ../net.c:371
+#: ../net.c:348
msgid "Running time"
msgstr "Ausführungszeit"
-#: ../net.c:373
+#: ../net.c:350
msgid "Log"
msgstr "Loggen"
-#: ../net.c:374
+#: ../net.c:351
msgid "Response mode"
msgstr "Antwortmodus"
-#: ../net.c:376
+#: ../net.c:353
msgid "Lines seen"
msgstr "Gesehene Zeilen"
-#: ../net.c:377
+#: ../net.c:354
msgid "Hits"
msgstr "Treffer"
-#: ../net.c:378
+#: ../net.c:355
msgid "Old/excluded/malformed"
msgstr "Alt/ausgeschlossen/fehlerhaft"
-#: ../net.c:385
+#: ../net.c:362
msgid "Entries in packet cache"
msgstr "Einträge im Paketcache"
-#: ../net.c:392
+#: ../net.c:369
msgid "Entries in host status"
msgstr "Einträge im Rechnerzustand"
-#: ../net.c:400
+#: ../net.c:377
msgid "Parameter"
msgstr "Parameter"
-#: ../net.c:402
+#: ../net.c:379
msgid "Decrease"
msgstr "Reduzieren"
-#: ../net.c:404
+#: ../net.c:381
msgid "Current"
msgstr "Aktuell"
-#: ../net.c:406
+#: ../net.c:383
msgid "Increase"
msgstr "Erhöhen"
-#: ../net.c:408
+#: ../net.c:385
msgid "Alert threshold"
msgstr "Alarmschwelle"
-#: ../net.c:410
+#: ../net.c:387
msgid "Discard timeout"
msgstr "Zeitgrenze zum Verwerfen:"
-#: ../net.c:411
+#: ../net.c:388
msgid "Minimum count in packet cache"
msgstr "Minimale Anzahl von Vorfällen bei Einträgen im Paketcache"
-#: ../net.c:413 ../net.c:415
+#: ../net.c:390 ../net.c:392
msgid "Top amount of entries in packet cache"
msgstr "Maximale Anzahl von Einträgen im Paketcache"
-#: ../net.c:418 ../net.c:420
+#: ../net.c:395 ../net.c:397
msgid "Refresh time"
msgstr "Aktualisierungszeit"
-#: ../net.c:442 ../net.c:565
+#: ../net.c:419 ../net.c:528
msgid "%Y/%m/%d %H:%M:%S"
msgstr "%Y/%m/%d %H:%M:%S"
-#: ../net.c:479 ../net.c:595
+#: ../net.c:456 ../net.c:558
msgid "drop"
msgstr "Verwerfen"
-#: ../net.c:481
+#: ../net.c:458
msgid "escalate"
msgstr "Eskalieren"
-#: ../net.c:527 ../net.c:546 ../net.c:552 ../net.c:558
+#: ../net.c:493 ../net.c:509 ../net.c:515 ../net.c:521
msgid "<td>any</td>"
msgstr "<td>beliebig</td>"
-#: ../net.c:540
+#: ../net.c:503
msgid "<td>(known host)</td>"
msgstr "<td>(bekannte Adresse)</td>"
-#: ../net.c:542
+#: ../net.c:505
msgid "<td>(known net)</td>"
msgstr "<td>(bekanntes Netz)</td>"
-#: ../net.c:654 ../net.c:657
+#: ../net.c:605
#, c-format
-msgid "Rejected connect from unallowed ip %s port %i"
+msgid "Rejected connection from unallowed IP address %s port %i"
msgstr "Verbindung von unerlaubter IP %s port %i wurde abgewiesen"
-#: ../net.c:668 ../net.c:670
+#: ../net.c:614
#, c-format
msgid "Connect from %s port %i"
msgstr "Verbindung von %s port %i"
-#: ../net.c:734
+#: ../net.c:677
msgid "Authorization failed"
msgstr "Autorisierung fehlgeschlagen"
-#: ../net.c:737
+#: ../net.c:680
msgid "Authorization required"
msgstr "Autorisierung ist notwendig"
-#: ../net.c:814
+#: ../net.c:757
msgid "Bad request"
msgstr "Ungültige Anfrage"
-#: ../net.c:819
+#: ../net.c:762
msgid "Redirect"
msgstr "Umleitung"
-#: ../net.c:819
+#: ../net.c:762
msgid "You should be redirected to the <a href=\"/\">root directory</a>"
msgstr ""
"Sie sollten in das <a href=\"/\">Hauptverzeichnis</a> umgeleitet werden"
-#: ../net.c:831
+#: ../net.c:774
#, c-format
msgid "Requested function: %s"
msgstr "Angeforderte Funktion: %s"
-#: ../net.c:834
+#: ../net.c:777
msgid "Connection closed"
msgstr "Verbindung geschlossen"
@@ -945,33 +964,43 @@
msgid "<th>opts</th>"
msgstr "<th>Optionen</th>"
-#: ../parser.c:263
+#: ../parser.c:270
#, c-format
msgid "Unknown parser: '%c'.\n"
msgstr "Unbekannter Parser: '%c'.\n"
-#: ../rcfile.c:57
+#: ../rcfile.c:58
#, c-format
msgid "Error in configuration file '%s' line %d: not a number\n"
msgstr ""
"Fehler in der Konfigurationsdatei '%s' in Zeile %d: Nicht eine Nummer\n"
-#: ../rcfile.c:86
+#: ../rcfile.c:87
#, c-format
msgid "Error in configuration file '%s' line %d, assuming 'true'\n"
msgstr "Fehler in der Konfigurationsdatei '%s' in Zeile %d: Annahme 'true'\n"
-#: ../rcfile.c:278
+#: ../rcfile.c:281
#, c-format
msgid "Unrecognized option in configuration file '%s' line %d\n"
msgstr "Unbekannte Option in der Konfigurationsdatei '%s' in Zeile %d\n"
-#: ../rcfile.c:299
+#: ../rcfile.c:332
+#, c-format
+msgid "Unrecognized entry in DNS cache file '%s' line %d\n"
+msgstr "Unbekannte Option in der DNS-Cache-Ddatei '%s' in Zeile %d\n"
+
+#: ../rcfile.c:349
#, c-format
msgid "%s is not a regular file, ignoring.\n"
msgstr "%s ist keine normale Datei, wird ignoriert.\n"
-#: ../rcfile.c:307
+#: ../rcfile.c:358
+#, c-format
+msgid "Opening DNS cache file '%s'\n"
+msgstr "Die DNS-Cache-Datei '%s' wird geöffnet\n"
+
+#: ../rcfile.c:360
#, c-format
msgid "Opening configuration file '%s'\n"
msgstr "Die Konfigurationsdatei '%s' wird geöffnet\n"
@@ -981,50 +1010,64 @@
msgid "port mismatch: %d != %d\n"
msgstr "Port-Versatz: %d != %d\n"
-#: ../resolve.c:81 ../resolve.c:151
-#, c-format
-msgid "Resolving %s from cache\n"
-msgstr "Auflösung von %s aus dem Cache\n"
+#: ../resolve.c:99 ../resolve.c:172
+msgid "[timeout]"
+msgstr "[Zeitüberschreitung]"
+
+#: ../resolve.c:101 ../resolve.c:174
+msgid "[server failure]"
+msgstr "[Server-Fehler]"
-#: ../resolve.c:89 ../resolve.c:112
+#: ../resolve.c:111 ../resolve.c:213
#, c-format
msgid "Resolving %s\n"
msgstr "Auflösung von %s\n"
-#: ../resolve.c:95
-#, c-format
-msgid "Wrong host name size\n"
-msgstr "Länge des Rechnernamens falsch\n"
-
-#: ../resolve.c:119
-#, c-format
-msgid "%s [forward lookup: %s]"
-msgstr "%s [Vorwärts-Suche: %s]"
-
#: ../resolve.c:122
#, c-format
msgid "%s [forward lookup failed]"
msgstr "%s [Vorwärts-Suche fehlgeschlagen]"
-#: ../resolve.c:163
+#: ../resolve.c:131
#, c-format
-msgid "Resolving %s from adns\n"
-msgstr "Auflösung von %s aus adns\n"
+msgid " [v4 forward lookup: %s]"
+msgstr " [IPv4 Vorwärts-Suche: %s]"
-#: ../resolve.c:167
-msgid "[inconsistent forward lookup]"
-msgstr "[inkonsistente Vorwärts-Suche]"
+#: ../resolve.c:138
+#, c-format
+msgid " [v6 forward lookup: %s]"
+msgstr " [IPv6 Vorwärts-Suche: %s]"
-#: ../resolve.c:171
+#: ../resolve.c:180
#, c-format
msgid "[adns status %d]"
msgstr "[adns-Status %d]"
-#: ../resolve.c:189
-msgid "DNS cache error"
-msgstr "DNS-Cache-Fehler"
+#: ../resolve.c:192
+msgid "[adns error]"
+msgstr "[adns-Fehler]"
+
+#: ../resolve.c:206 ../resolve.c:354
+#, c-format
+msgid "Resolving %s from cache\n"
+msgstr "Auflösung von %s aus dem Cache\n"
-#: ../resolve.c:207
+#: ../resolve.c:218
+#, c-format
+msgid "Resolving %s from adns\n"
+msgstr "Auflösung von %s mit adns\n"
+
+#: ../resolve.c:240
+#, c-format
+msgid "IP address %s is already in DNS cache\n"
+msgstr "Die IP-Adresse %s ist bereits im DNS-Cache\n"
+
+#: ../resolve.c:246
+#, c-format
+msgid "Adding IP address '%s' with host name '%s' to DNS cache\n"
+msgstr "IP-Adresse '%s' mit Hostname '%s' wird dem DNS-Cache hinzugefügt\n"
+
+#: ../resolve.c:283
#, c-format
msgid "Submitted %s to adns\n"
msgstr "%s an adns übergeben\n"
@@ -1058,7 +1101,7 @@
msgid "Deleting host status entry (%s)"
msgstr "Eintrag aus dem Rechnercache wird gelöscht (%s)"
-#: ../response.c:276
+#: ../response.c:280
#, c-format
msgid "ALERT: %d attempts from %s"
msgstr "ALARM: %d Versuche von %s"
@@ -1103,45 +1146,50 @@
" oder kommentieren Sie alle Einträge in der vorgegebenen\n"
" Konfigurationsdatei und benutzen Sie Kommandozeilenparameter.\n"
-#: ../utils.c:268
+#: ../utils.c:301
+#, c-format
+msgid "[error]"
+msgstr "[Fehler]"
+
+#: ../utils.c:317
#, c-format
msgid "IP address error: %s\n"
msgstr "IP-Adressfehler: %s\n"
-#: ../utils.c:294
+#: ../utils.c:342 ../utils.c:353
#, c-format
msgid "Error in CIDR format: %s\n"
msgstr "Fehler im CIDR-Format: %s\n"
-#: ../utils.c:312
+#: ../utils.c:403
#, c-format
msgid "(known host)\n"
msgstr "(bekannter Rechner)\n"
-#: ../utils.c:351
+#: ../utils.c:443
#, c-format
msgid "(excluded host)\n"
msgstr "(ausgeschlossener Rechner)\n"
-#: ../whois.c:220
+#: ../whois.c:226
#, c-format
-msgid "Looking up whois info for %s from cache\n"
-msgstr "Suche der whois-Information für %s vom Cache\n"
+msgid "Looking up whois info for %s(/%d) from cache\n"
+msgstr "Suche der whois-Information für %s(/%d) aus dem Cache\n"
-#: ../whois.c:227
+#: ../whois.c:233
#, c-format
msgid "Looking up whois info for %s\n"
msgstr "Suche der whois-Information für %s\n"
-#: ../whois.c:248
+#: ../whois.c:254
#, c-format
msgid "lookup failed: %s\n"
msgstr "Suche fehlgeschlagen: %s\n"
-#: ../main.h:300
+#: ../main.h:314
msgid "fwlogwatch summary"
msgstr "fwlogwatch-Zusammenfassung"
-#: ../main.h:310
+#: ../main.h:324
msgid "fwlogwatch status"
msgstr "Zustand von fwlogwatch"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/fwlogwatch.pot
^
|
@@ -8,10 +8,11 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-06 13:58+0200\n"
+"POT-Creation-Date: 2013-05-23 15:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -36,8 +37,8 @@
msgid "Error in sort string, direction expected, ignoring.\n"
msgstr ""
-#: ../compare.c:382 ../compare.c:384 ../modes.c:196 ../modes.c:203
-#: ../modes.c:813 ../modes.c:815 ../output.c:106 ../output.c:113
+#: ../compare.c:382 ../compare.c:384 ../modes.c:193 ../modes.c:200
+#: ../modes.c:815 ../modes.c:817 ../output.c:106 ../output.c:113
#: ../output.c:193 ../output.c:202 ../output.c:380
msgid "%b %d %H:%M:%S"
msgstr ""
@@ -114,7 +115,7 @@
#: ../main.c:40
#, c-format
-msgid " -m <count> only show entries with at least so many incidents\n"
+msgid " -i <file> initialize DNS cache with entries from file\n"
msgstr ""
#: ../main.c:41
@@ -124,698 +125,713 @@
#: ../main.c:42
#, c-format
-msgid " -N resolve service names\n"
+msgid " -m <count> only show entries with at least so many incidents\n"
msgstr ""
#: ../main.c:43
#, c-format
-msgid " -n resolve host names\n"
+msgid " -N resolve service names\n"
msgstr ""
#: ../main.c:44
#, c-format
-msgid " -O <order> define the sort order (see the man page for details)\n"
+msgid " -n resolve host names\n"
msgstr ""
#: ../main.c:45
#, c-format
+msgid " -O <order> define the sort order (see the man page for details)\n"
+msgstr ""
+
+#: ../main.c:46
+#, c-format
msgid ""
" -P <format> use parsers for specific formats (defaults to netfilter)\n"
msgstr ""
-#: ../main.c:46
+#: ../main.c:47
#, c-format
msgid " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
msgstr ""
-#: ../main.c:47
+#: ../main.c:48
#, c-format
msgid ""
" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
msgstr ""
-#: ../main.c:48
+#: ../main.c:49
#, c-format
msgid " -p differentiate protocols\n"
msgstr ""
-#: ../main.c:49
+#: ../main.c:50
#, c-format
msgid " -s differentiate source ports\n"
msgstr ""
-#: ../main.c:50
+#: ../main.c:51
#, c-format
msgid " -U <title> set report and status page title and email subject\n"
msgstr ""
-#: ../main.c:51
+#: ../main.c:52
#, c-format
msgid " -v verbose, specify twice for more info\n"
msgstr ""
-#: ../main.c:52
+#: ../main.c:53
#, c-format
msgid " -y differentiate TCP options\n"
msgstr ""
-#: ../main.c:55
+#: ../main.c:56
#, c-format
msgid "Log summary mode (default):\n"
msgstr ""
-#: ../main.c:56
+#: ../main.c:57
#, c-format
msgid " -C <email> carbon copy recipients\n"
msgstr ""
-#: ../main.c:57
+#: ../main.c:58
#, c-format
msgid " -e show end times\n"
msgstr ""
-#: ../main.c:58
+#: ../main.c:59
#, c-format
msgid " -F <email> report sender address (defaults to '%s')\n"
msgstr ""
-#: ../main.c:59
+#: ../main.c:60
#, c-format
msgid " -l <time> process recent events only (defaults to off)\n"
msgstr ""
-#: ../main.c:60
+#: ../main.c:61
#, c-format
msgid " -o <file> specify output file\n"
msgstr ""
-#: ../main.c:61
+#: ../main.c:62
#, c-format
msgid " -S do not differentiate source IP addresses\n"
msgstr ""
-#: ../main.c:62
+#: ../main.c:63
#, c-format
msgid " -T <email> send report by email to this address\n"
msgstr ""
-#: ../main.c:63
+#: ../main.c:64
#, c-format
msgid " -t show start times\n"
msgstr ""
-#: ../main.c:64
+#: ../main.c:65
#, c-format
msgid " -W activate whois lookups for source addresses\n"
msgstr ""
-#: ../main.c:65
+#: ../main.c:66
#, c-format
msgid " -w HTML output\n"
msgstr ""
-#: ../main.c:66
+#: ../main.c:67
#, c-format
msgid " -z show time interval\n"
msgstr ""
-#: ../main.c:69
+#: ../main.c:70
#, c-format
msgid "Realtime response mode:\n"
msgstr ""
-#: ../main.c:70
+#: ../main.c:71
#, c-format
msgid " -R realtime response as daemon (default action: log only)\n"
msgstr ""
-#: ../main.c:71
+#: ../main.c:72
#, c-format
msgid " -a <count> alert threshold (defaults to %d entries)\n"
msgstr ""
-#: ../main.c:72
+#: ../main.c:73
#, c-format
msgid " -l <time> forget events this old (defaults to %d hours)\n"
msgstr ""
-#: ../main.c:73
+#: ../main.c:74
#, c-format
msgid " -k <IP/net> add this IP address or net to the list of known hosts\n"
msgstr ""
-#: ../main.c:74
+#: ../main.c:75
#, c-format
msgid " -A invoke notification script if threshold is reached\n"
msgstr ""
-#: ../main.c:75
+#: ../main.c:76
#, c-format
msgid " -B invoke response action script (e.g. block host)\n"
msgstr ""
-#: ../main.c:76
+#: ../main.c:77
#, c-format
msgid " -X <port> activate internal status information web server\n"
msgstr ""
-#: ../main.c:102
+#: ../main.c:103
msgid "You can contact the author at <bw@inside-security.de>."
msgstr ""
-#: ../main.c:104
+#: ../main.c:105
msgid "Compile-time options of this version:"
msgstr ""
-#: ../main.c:105
+#: ../main.c:106
#, c-format
msgid "Short name limit "
msgstr ""
-#: ../main.c:107 ../main.c:113 ../main.c:119 ../main.c:125 ../main.c:131
+#: ../main.c:108 ../main.c:114 ../main.c:120 ../main.c:126
msgid "enabled"
msgstr ""
-#: ../main.c:109 ../main.c:115 ../main.c:121 ../main.c:127 ../main.c:133
+#: ../main.c:110 ../main.c:116 ../main.c:122 ../main.c:128
msgid "disabled"
msgstr ""
-#: ../main.c:111
+#: ../main.c:112
#, c-format
msgid "Zlib support "
msgstr ""
-#: ../main.c:117
+#: ../main.c:118
#, c-format
msgid "Gettext (i18n) support "
msgstr ""
-#: ../main.c:123
-#, c-format
-msgid "IPv6 support "
-msgstr ""
-
-#: ../main.c:129
+#: ../main.c:124
#, c-format
msgid "GNU adns support "
msgstr ""
-#: ../main.c:287
+#: ../main.c:282
#, c-format
msgid "Illegal inclusion/exclusion pos. 1 (expected [ie]): %s\n"
msgstr ""
-#: ../main.c:288 ../main.c:305 ../main.c:314 ../main.c:452
+#: ../main.c:283 ../main.c:300 ../main.c:309 ../main.c:453
#, c-format
msgid "Exiting\n"
msgstr ""
-#: ../main.c:304
+#: ../main.c:299
#, c-format
msgid "Illegal inclusion/exclusion pos. 2 (expected [hpcb]): %s\n"
msgstr ""
-#: ../main.c:313
+#: ../main.c:308
#, c-format
msgid "Illegal inclusion/exclusion pos. 3 (expected [sd]): %s\n"
msgstr ""
-#: ../modes.c:109
+#: ../modes.c:108
#, c-format
msgid "Using stdin as input\n"
msgstr ""
-#: ../modes.c:115
+#: ../modes.c:114
#, c-format
msgid "Opening input file '%s'\n"
msgstr ""
-#: ../modes.c:133
+#: ../modes.c:130
#, c-format
msgid "Processing\n"
msgstr ""
-#: ../modes.c:140
+#: ../modes.c:137
#, c-format
msgid "Unrecognized entries or tokens can be submitted at\n"
msgstr ""
-#: ../modes.c:149 ../modes.c:396 ../modes.c:782 ../rcfile.c:321
+#: ../modes.c:146 ../modes.c:393 ../modes.c:784 ../rcfile.c:379
#, c-format
msgid "Closing '%s'\n"
msgstr ""
-#: ../modes.c:178
+#: ../modes.c:175
#, c-format
msgid "Sorting data\n"
msgstr ""
-#: ../modes.c:215
+#: ../modes.c:212
#, c-format
msgid "Opening output file '%s'\n"
msgstr ""
-#: ../modes.c:226
+#: ../modes.c:223
#, c-format
msgid "Sending\n"
msgstr ""
-#: ../modes.c:249 ../net.c:364 ../net.c:367
+#: ../modes.c:246 ../net.c:341 ../net.c:344
msgid "%A %B %d %H:%M:%S %Z %Y"
msgstr ""
-#: ../modes.c:250
+#: ../modes.c:247
#, c-format
msgid "Generated %s by "
msgstr ""
-#: ../modes.c:260
+#: ../modes.c:257
#, c-format
msgid "an unknown user.\n"
msgstr ""
-#: ../modes.c:268
+#: ../modes.c:265
#, c-format
msgid "(and %d older than %d seconds) "
msgstr ""
-#: ../modes.c:271
+#: ../modes.c:268
#, c-format
msgid "(and %d malformed) "
msgstr ""
-#: ../modes.c:274
+#: ../modes.c:271
#, c-format
msgid "of %d entries in the file \"%s\" are packet logs, "
msgstr ""
-#: ../modes.c:276
+#: ../modes.c:273
#, c-format
msgid "of %d entries in standard input are packet logs, "
msgstr ""
-#: ../modes.c:278
+#: ../modes.c:275
#, c-format
msgid "of %d entries in %d input files are packet logs, "
msgstr ""
-#: ../modes.c:282
+#: ../modes.c:279
#, c-format
msgid "one has unique characteristics.\n"
msgstr ""
-#: ../modes.c:284
+#: ../modes.c:281
#, c-format
msgid "%d have unique characteristics.\n"
msgstr ""
-#: ../modes.c:292
+#: ../modes.c:289
#, c-format
msgid "One entry was excluded by configuration.\n"
msgstr ""
-#: ../modes.c:294
+#: ../modes.c:291
#, c-format
msgid "%d entries were excluded by configuration.\n"
msgstr ""
-#: ../modes.c:302
+#: ../modes.c:299
#, c-format
msgid "First packet log entry: %s, last: %s.\n"
msgstr ""
-#: ../modes.c:304 ../modes.c:811
+#: ../modes.c:301 ../modes.c:813
#, c-format
msgid "No valid time entries found.\n"
msgstr ""
-#: ../modes.c:311
+#: ../modes.c:308
#, c-format
msgid "All entries were logged by the same host: \"%s\".\n"
msgstr ""
-#: ../modes.c:318
+#: ../modes.c:315
#, c-format
msgid "All entries are from the same chain: \"%s\".\n"
msgstr ""
-#: ../modes.c:325
+#: ../modes.c:322
#, c-format
msgid "All entries have the same target: \"%s\".\n"
msgstr ""
-#: ../modes.c:332
+#: ../modes.c:329
#, c-format
msgid "All entries are from the same interface: \"%s\".\n"
msgstr ""
-#: ../modes.c:339
+#: ../modes.c:336
#, c-format
msgid "Only entries with a count of at least %d are shown.\n"
msgstr ""
-#: ../modes.c:346
+#: ../modes.c:343
#, c-format
msgid "Only the top %d entries are shown.\n"
msgstr ""
-#: ../modes.c:357
+#: ../modes.c:354
#, c-format
msgid "Resolving\n"
msgstr ""
-#: ../modes.c:416
+#: ../modes.c:413
#, c-format
msgid "Warning: pidfile exists, another fwlogwatch might be running.\n"
msgstr ""
-#: ../modes.c:430
+#: ../modes.c:427
#, c-format
msgid "SIGHUP caught, reread configuration file %s"
msgstr ""
-#: ../modes.c:432
+#: ../modes.c:429
#, c-format
msgid "SIGHUP caught, unable to reread configuration file %s"
msgstr ""
-#: ../modes.c:455
+#: ../modes.c:433
+#, c-format
+msgid "Reread DNS cache file %s"
+msgstr ""
+
+#: ../modes.c:435
+#, c-format
+msgid "Unable to reread DNS cache file %s"
+msgstr ""
+
+#: ../modes.c:459
msgid "SIGUSR1 caught, reading input from stdin, no need to reopen log file"
msgstr ""
-#: ../modes.c:457
+#: ../modes.c:461
#, c-format
msgid "SIGUSR1 caught, reopening log file %s"
msgstr ""
-#: ../modes.c:529
+#: ../modes.c:533
msgid "SIGTERM caught, cleaning up"
msgstr ""
-#: ../modes.c:611
+#: ../modes.c:615
#, c-format
msgid "Starting (pid %d)"
msgstr ""
-#: ../modes.c:661
+#: ../modes.c:665
msgid "User to run as was not found"
msgstr ""
-#: ../modes.c:676
+#: ../modes.c:680
#, c-format
msgid "Changed uid from %d to %d, gid from %d to %d"
msgstr ""
-#: ../modes.c:678
+#: ../modes.c:682
#, c-format
msgid "Running with uid %d, gid %d"
msgstr ""
-#: ../modes.c:682
+#: ../modes.c:686
msgid "Alert threshold is one attempt"
msgstr ""
-#: ../modes.c:684
+#: ../modes.c:688
#, c-format
msgid "Alert threshold is %d attempts"
msgstr ""
-#: ../modes.c:688
+#: ../modes.c:692
#, c-format
msgid "Events older than %d second(s) are discarded"
msgstr ""
-#: ../modes.c:690
+#: ../modes.c:694
#, c-format
msgid "Events older than %d hour(s) are discarded"
msgstr ""
-#: ../modes.c:693
+#: ../modes.c:697
#, c-format
msgid "Response mode: Log%s%s"
msgstr ""
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", notify"
msgstr ""
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", respond"
msgstr ""
-#: ../modes.c:724
+#: ../modes.c:728
#, c-format
msgid "Reading standard input\n"
msgstr ""
-#: ../modes.c:742
+#: ../modes.c:744
#, c-format
msgid "Reading '%s'\n"
msgstr ""
-#: ../modes.c:808
+#: ../modes.c:810
#, c-format
msgid "Number of files: %d\n"
msgstr ""
-#: ../modes.c:809
+#: ../modes.c:811
#, c-format
msgid "Number of lines: %d\n"
msgstr ""
-#: ../modes.c:814
+#: ../modes.c:816
#, c-format
msgid "First entry: %s\n"
msgstr ""
-#: ../modes.c:816
+#: ../modes.c:818
#, c-format
msgid "Last entry : %s\n"
msgstr ""
-#: ../modes.c:818
+#: ../modes.c:820
#, c-format
msgid "Difference : %s\n"
msgstr ""
-#: ../net.c:130 ../net.c:132
+#: ../net.c:106
#, c-format
msgid "Listening on %s port %i"
msgstr ""
-#: ../net.c:172
+#: ../net.c:109
+#, c-format
+msgid "Connections are only allowed from %s"
+msgstr ""
+
+#: ../net.c:149
msgid "decode_base64: input string incomplete"
msgstr ""
-#: ../net.c:179
+#: ../net.c:156
#, c-format
msgid "decode_base64: illegal character '%c' in input string"
msgstr ""
-#: ../net.c:214
+#: ../net.c:191
msgid "count"
msgstr ""
-#: ../net.c:215
+#: ../net.c:192
msgid "added"
msgstr ""
-#: ../net.c:217
+#: ../net.c:194
msgid "proto"
msgstr ""
-#: ../net.c:219
+#: ../net.c:196
msgid "bytes"
msgstr ""
-#: ../net.c:220
+#: ../net.c:197
msgid "source"
msgstr ""
-#: ../net.c:222 ../net.c:231
+#: ../net.c:199 ../net.c:208
msgid "hostname"
msgstr ""
-#: ../net.c:224 ../net.c:234
+#: ../net.c:201 ../net.c:211
msgid "port"
msgstr ""
-#: ../net.c:226 ../net.c:236
+#: ../net.c:203 ../net.c:213
msgid "service"
msgstr ""
-#: ../net.c:229
+#: ../net.c:206
msgid "destination"
msgstr ""
-#: ../net.c:239
+#: ../net.c:216
msgid "opts"
msgstr ""
-#: ../net.c:240
+#: ../net.c:217
msgid "time remaining"
msgstr ""
-#: ../net.c:241
+#: ../net.c:218
msgid "action"
msgstr ""
-#: ../net.c:293 ../net.c:295 ../net.c:360
+#: ../net.c:270 ../net.c:272 ../net.c:337
msgid "Information"
msgstr ""
-#: ../net.c:299 ../net.c:301 ../net.c:398
+#: ../net.c:276 ../net.c:278 ../net.c:375
msgid "Options"
msgstr ""
-#: ../net.c:305 ../net.c:307 ../net.c:426
+#: ../net.c:282 ../net.c:284 ../net.c:403
msgid "Packet cache"
msgstr ""
-#: ../net.c:311 ../net.c:313 ../net.c:495
+#: ../net.c:288 ../net.c:290 ../net.c:472
msgid "Host status"
msgstr ""
-#: ../net.c:316
+#: ../net.c:293
msgid "Reload"
msgstr ""
-#: ../net.c:365
+#: ../net.c:342
msgid "Daemon start time"
msgstr ""
-#: ../net.c:368
+#: ../net.c:345
msgid "Current time"
msgstr ""
-#: ../net.c:371
+#: ../net.c:348
msgid "Running time"
msgstr ""
-#: ../net.c:373
+#: ../net.c:350
msgid "Log"
msgstr ""
-#: ../net.c:374
+#: ../net.c:351
msgid "Response mode"
msgstr ""
-#: ../net.c:376
+#: ../net.c:353
msgid "Lines seen"
msgstr ""
-#: ../net.c:377
+#: ../net.c:354
msgid "Hits"
msgstr ""
-#: ../net.c:378
+#: ../net.c:355
msgid "Old/excluded/malformed"
msgstr ""
-#: ../net.c:385
+#: ../net.c:362
msgid "Entries in packet cache"
msgstr ""
-#: ../net.c:392
+#: ../net.c:369
msgid "Entries in host status"
msgstr ""
-#: ../net.c:400
+#: ../net.c:377
msgid "Parameter"
msgstr ""
-#: ../net.c:402
+#: ../net.c:379
msgid "Decrease"
msgstr ""
-#: ../net.c:404
+#: ../net.c:381
msgid "Current"
msgstr ""
-#: ../net.c:406
+#: ../net.c:383
msgid "Increase"
msgstr ""
-#: ../net.c:408
+#: ../net.c:385
msgid "Alert threshold"
msgstr ""
-#: ../net.c:410
+#: ../net.c:387
msgid "Discard timeout"
msgstr ""
-#: ../net.c:411
+#: ../net.c:388
msgid "Minimum count in packet cache"
msgstr ""
-#: ../net.c:413 ../net.c:415
+#: ../net.c:390 ../net.c:392
msgid "Top amount of entries in packet cache"
msgstr ""
-#: ../net.c:418 ../net.c:420
+#: ../net.c:395 ../net.c:397
msgid "Refresh time"
msgstr ""
-#: ../net.c:442 ../net.c:565
+#: ../net.c:419 ../net.c:528
msgid "%Y/%m/%d %H:%M:%S"
msgstr ""
-#: ../net.c:479 ../net.c:595
+#: ../net.c:456 ../net.c:558
msgid "drop"
msgstr ""
-#: ../net.c:481
+#: ../net.c:458
msgid "escalate"
msgstr ""
-#: ../net.c:527 ../net.c:546 ../net.c:552 ../net.c:558
+#: ../net.c:493 ../net.c:509 ../net.c:515 ../net.c:521
msgid "<td>any</td>"
msgstr ""
-#: ../net.c:540
+#: ../net.c:503
msgid "<td>(known host)</td>"
msgstr ""
-#: ../net.c:542
+#: ../net.c:505
msgid "<td>(known net)</td>"
msgstr ""
-#: ../net.c:654 ../net.c:657
+#: ../net.c:605
#, c-format
-msgid "Rejected connect from unallowed ip %s port %i"
+msgid "Rejected connection from unallowed IP address %s port %i"
msgstr ""
-#: ../net.c:668 ../net.c:670
+#: ../net.c:614
#, c-format
msgid "Connect from %s port %i"
msgstr ""
-#: ../net.c:734
+#: ../net.c:677
msgid "Authorization failed"
msgstr ""
-#: ../net.c:737
+#: ../net.c:680
msgid "Authorization required"
msgstr ""
-#: ../net.c:814
+#: ../net.c:757
msgid "Bad request"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "Redirect"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "You should be redirected to the <a href=\"/\">root directory</a>"
msgstr ""
-#: ../net.c:831
+#: ../net.c:774
#, c-format
msgid "Requested function: %s"
msgstr ""
-#: ../net.c:834
+#: ../net.c:777
msgid "Connection closed"
msgstr ""
@@ -934,32 +950,42 @@
msgid "<th>opts</th>"
msgstr ""
-#: ../parser.c:263
+#: ../parser.c:270
#, c-format
msgid "Unknown parser: '%c'.\n"
msgstr ""
-#: ../rcfile.c:57
+#: ../rcfile.c:58
#, c-format
msgid "Error in configuration file '%s' line %d: not a number\n"
msgstr ""
-#: ../rcfile.c:86
+#: ../rcfile.c:87
#, c-format
msgid "Error in configuration file '%s' line %d, assuming 'true'\n"
msgstr ""
-#: ../rcfile.c:278
+#: ../rcfile.c:281
#, c-format
msgid "Unrecognized option in configuration file '%s' line %d\n"
msgstr ""
-#: ../rcfile.c:299
+#: ../rcfile.c:332
+#, c-format
+msgid "Unrecognized entry in DNS cache file '%s' line %d\n"
+msgstr ""
+
+#: ../rcfile.c:349
#, c-format
msgid "%s is not a regular file, ignoring.\n"
msgstr ""
-#: ../rcfile.c:307
+#: ../rcfile.c:358
+#, c-format
+msgid "Opening DNS cache file '%s'\n"
+msgstr ""
+
+#: ../rcfile.c:360
#, c-format
msgid "Opening configuration file '%s'\n"
msgstr ""
@@ -969,50 +995,64 @@
msgid "port mismatch: %d != %d\n"
msgstr ""
-#: ../resolve.c:81 ../resolve.c:151
-#, c-format
-msgid "Resolving %s from cache\n"
+#: ../resolve.c:99 ../resolve.c:172
+msgid "[timeout]"
+msgstr ""
+
+#: ../resolve.c:101 ../resolve.c:174
+msgid "[server failure]"
msgstr ""
-#: ../resolve.c:89 ../resolve.c:112
+#: ../resolve.c:111 ../resolve.c:213
#, c-format
msgid "Resolving %s\n"
msgstr ""
-#: ../resolve.c:95
+#: ../resolve.c:122
#, c-format
-msgid "Wrong host name size\n"
+msgid "%s [forward lookup failed]"
msgstr ""
-#: ../resolve.c:119
+#: ../resolve.c:131
#, c-format
-msgid "%s [forward lookup: %s]"
+msgid " [v4 forward lookup: %s]"
msgstr ""
-#: ../resolve.c:122
+#: ../resolve.c:138
#, c-format
-msgid "%s [forward lookup failed]"
+msgid " [v6 forward lookup: %s]"
msgstr ""
-#: ../resolve.c:163
+#: ../resolve.c:180
#, c-format
-msgid "Resolving %s from adns\n"
+msgid "[adns status %d]"
msgstr ""
-#: ../resolve.c:167
-msgid "[inconsistent forward lookup]"
+#: ../resolve.c:192
+msgid "[adns error]"
msgstr ""
-#: ../resolve.c:171
+#: ../resolve.c:206 ../resolve.c:354
#, c-format
-msgid "[adns status %d]"
+msgid "Resolving %s from cache\n"
msgstr ""
-#: ../resolve.c:189
-msgid "DNS cache error"
+#: ../resolve.c:218
+#, c-format
+msgid "Resolving %s from adns\n"
msgstr ""
-#: ../resolve.c:207
+#: ../resolve.c:240
+#, c-format
+msgid "IP address %s is already in DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:246
+#, c-format
+msgid "Adding IP address '%s' with host name '%s' to DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:283
#, c-format
msgid "Submitted %s to adns\n"
msgstr ""
@@ -1045,7 +1085,7 @@
msgid "Deleting host status entry (%s)"
msgstr ""
-#: ../response.c:276
+#: ../response.c:280
#, c-format
msgid "ALERT: %d attempts from %s"
msgstr ""
@@ -1081,45 +1121,50 @@
" entries in the default configuration and use command line parameters.\n"
msgstr ""
-#: ../utils.c:268
+#: ../utils.c:301
+#, c-format
+msgid "[error]"
+msgstr ""
+
+#: ../utils.c:317
#, c-format
msgid "IP address error: %s\n"
msgstr ""
-#: ../utils.c:294
+#: ../utils.c:342 ../utils.c:353
#, c-format
msgid "Error in CIDR format: %s\n"
msgstr ""
-#: ../utils.c:312
+#: ../utils.c:403
#, c-format
msgid "(known host)\n"
msgstr ""
-#: ../utils.c:351
+#: ../utils.c:443
#, c-format
msgid "(excluded host)\n"
msgstr ""
-#: ../whois.c:220
+#: ../whois.c:226
#, c-format
-msgid "Looking up whois info for %s from cache\n"
+msgid "Looking up whois info for %s(/%d) from cache\n"
msgstr ""
-#: ../whois.c:227
+#: ../whois.c:233
#, c-format
msgid "Looking up whois info for %s\n"
msgstr ""
-#: ../whois.c:248
+#: ../whois.c:254
#, c-format
msgid "lookup failed: %s\n"
msgstr ""
-#: ../main.h:300
+#: ../main.h:314
msgid "fwlogwatch summary"
msgstr ""
-#: ../main.h:310
+#: ../main.h:324
msgid "fwlogwatch status"
msgstr ""
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/ja.po
^
|
@@ -2,10 +2,11 @@
msgstr ""
"Project-Id-Version: fwlogwatch 0.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-06 13:58+0200\n"
+"POT-Creation-Date: 2013-05-23 15:04+0200\n"
"PO-Revision-Date: 2002-03-06 00:00+0900\n"
"Last-Translator: Takashi Kobayashi <kobayasi@res.kutc.kansai-u.ac.jp>\n"
"Language-Team: -\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=euc-jp\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -33,8 +34,8 @@
msgstr ""
"¥½¡¼¥Èʸ»úÎó '%c' ¤Ç´Ö°ã¤¤¤¬¤¢¤ê¤Þ¤¹¡£Êý¸þ¤¬´üÂÔ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Ìµ»ë¤·¤Þ¤¹¡£\n"
-#: ../compare.c:382 ../compare.c:384 ../modes.c:196 ../modes.c:203
-#: ../modes.c:813 ../modes.c:815 ../output.c:106 ../output.c:113
+#: ../compare.c:382 ../compare.c:384 ../modes.c:193 ../modes.c:200
+#: ../modes.c:815 ../modes.c:817 ../output.c:106 ../output.c:113
#: ../output.c:193 ../output.c:202 ../output.c:380
msgid "%b %d %H:%M:%S"
msgstr ""
@@ -114,11 +115,9 @@
msgstr ""
#: ../main.c:40
-#, fuzzy, c-format
-msgid " -m <count> only show entries with at least so many incidents\n"
+#, c-format
+msgid " -i <file> initialize DNS cache with entries from file\n"
msgstr ""
-" -m <¥«¥¦¥ó¥È>\n"
-" ¾¯¤Ê¤¯¤È¤â¿¤¤»ö·ï¤Ë¸Â¤Ã¤¿¥¨¥ó¥È¥ê¤òɽ¼¨¤¹¤ë¤À¤±\n"
#: ../main.c:41
#, c-format
@@ -127,22 +126,29 @@
#: ../main.c:42
#, fuzzy, c-format
+msgid " -m <count> only show entries with at least so many incidents\n"
+msgstr ""
+" -m <¥«¥¦¥ó¥È>\n"
+" ¾¯¤Ê¤¯¤È¤â¿¤¤»ö·ï¤Ë¸Â¤Ã¤¿¥¨¥ó¥È¥ê¤òɽ¼¨¤¹¤ë¤À¤±\n"
+
+#: ../main.c:43
+#, fuzzy, c-format
msgid " -N resolve service names\n"
msgstr " -N ¥µ¡¼¥Ó¥¹Ì¾¤ò²ò·è¤¹¤ë\n"
-#: ../main.c:43
+#: ../main.c:44
#, fuzzy, c-format
msgid " -n resolve host names\n"
msgstr " -n ¥Û¥¹¥È̾¤ò²ò·è¤¹¤ë\n"
-#: ../main.c:44
+#: ../main.c:45
#, fuzzy, c-format
msgid " -O <order> define the sort order (see the man page for details)\n"
msgstr ""
" -O <½ç½ø> ʤÙÊѤ¨¤Î½ç½ø¤òÄêµÁ¤¹¤ë\n"
" (¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò»²¾È)\n"
-#: ../main.c:45
+#: ../main.c:46
#, fuzzy, c-format
msgid ""
" -P <format> use parsers for specific formats (defaults to netfilter)\n"
@@ -150,708 +156,718 @@
" -P <¥Õ¥©¡¼¥Þ¥Ã¥È>\n"
" »ØÄê¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÁöºº¤Î¤ß¤ò»È¤¦\n"
-#: ../main.c:46
+#: ../main.c:47
#, c-format
msgid " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
msgstr ""
-#: ../main.c:47
+#: ../main.c:48
#, c-format
msgid ""
" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
msgstr ""
-#: ../main.c:48
+#: ../main.c:49
#, fuzzy, c-format
msgid " -p differentiate protocols\n"
msgstr " -p ¥×¥í¥È¥³¥ë¤ò¶èÊ̤¹¤ë\n"
-#: ../main.c:49
+#: ../main.c:50
#, fuzzy, c-format
msgid " -s differentiate source ports\n"
msgstr " -s Á÷¿®¸µ IP ¥Ý¡¼¥È¤ò¶èÊ̤¹¤ë\n"
-#: ../main.c:50
+#: ../main.c:51
#, c-format
msgid " -U <title> set report and status page title and email subject\n"
msgstr ""
-#: ../main.c:51
+#: ../main.c:52
#, fuzzy, c-format
msgid " -v verbose, specify twice for more info\n"
msgstr " -v ¾éŤˤ¹¤ë¡¤£²ÅÙ»ØÄꤹ¤ë¤È¤µ¤é¤Ë¾éĹ¤Ë¤Ê¤ë\n"
-#: ../main.c:52
+#: ../main.c:53
#, fuzzy, c-format
msgid " -y differentiate TCP options\n"
msgstr " -y TCP ¥ª¥×¥·¥ç¥ó¤ò¶èÊ̤¹¤ë\n"
-#: ../main.c:55
+#: ../main.c:56
#, c-format
msgid "Log summary mode (default):\n"
msgstr "¥í¥°½¸·×¥â¡¼¥É (¥Ç¥Õ¥©¥ë¥È):\n"
-#: ../main.c:56
+#: ../main.c:57
#, fuzzy, c-format
msgid " -C <email> carbon copy recipients\n"
msgstr " -C <email> ¥«¡¼¥Ü¥ó¥³¥Ô¡¼¼õ¿®¼Ô\n"
-#: ../main.c:57
+#: ../main.c:58
#, fuzzy, c-format
msgid " -e show end times\n"
msgstr " -e ½ªÎ»»þ¹ï¤òɽ¼¨¤¹¤ë\n"
-#: ../main.c:58
+#: ../main.c:59
#, fuzzy, c-format
msgid " -F <email> report sender address (defaults to '%s')\n"
msgstr ""
" -F <email>\n"
" ¥ì¥Ý¡¼¥È¤ÎÁ÷¿®¼Ô¥¢¥É¥ì¥¹\n"
-#: ../main.c:59
+#: ../main.c:60
#, fuzzy, c-format
msgid " -l <time> process recent events only (defaults to off)\n"
msgstr ""
" -l <»þ¹ï>\n"
" ºÇ¶á¤Î¥¤¥Ù¥ó¥È¤Î¤ß¤ò½èÍý¤¹¤ë(¥Ç¥Õ¥©¥ë¥È off)\n"
-#: ../main.c:60
+#: ../main.c:61
#, fuzzy, c-format
msgid " -o <file> specify output file\n"
msgstr ""
" -o <¥Õ¥¡¥¤¥ë>\n"
" ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë\n"
-#: ../main.c:61
+#: ../main.c:62
#, fuzzy, c-format
msgid " -S do not differentiate source IP addresses\n"
msgstr " -S Á÷¿®¸µ IP ¥¢¥É¥ì¥¹¤ò¶èÊ̤·¤Ê¤¤\n"
-#: ../main.c:62
+#: ../main.c:63
#, fuzzy, c-format
msgid " -T <email> send report by email to this address\n"
msgstr ""
" -F <email>\n"
" ¥ì¥Ý¡¼¥È¤ÎÁ÷¿®¼Ô¥¢¥É¥ì¥¹\n"
-#: ../main.c:63
+#: ../main.c:64
#, fuzzy, c-format
msgid " -t show start times\n"
msgstr " -t ³«»Ï»þ¹ï¤òɽ¼¨¤¹¤ë\n"
-#: ../main.c:64
+#: ../main.c:65
#, fuzzy, c-format
msgid " -W activate whois lookups for source addresses\n"
msgstr " -W Á÷¿®¸µ¥¢¥É¥ì¥¹¤Î whois ¸¡º÷¤ò͸ú¤Ë¤¹¤ë\n"
-#: ../main.c:65
+#: ../main.c:66
#, fuzzy, c-format
msgid " -w HTML output\n"
msgstr " -w HTML ½ÐÎÏ\n"
-#: ../main.c:66
+#: ../main.c:67
#, fuzzy, c-format
msgid " -z show time interval\n"
msgstr " -z »þ¹ï´Ö³Ö¤òɽ¼¨¤¹¤ë\n"
-#: ../main.c:69
+#: ../main.c:70
#, c-format
msgid "Realtime response mode:\n"
msgstr "¼Â»þ´Ö±þÅú¥â¡¼¥É:\n"
-#: ../main.c:70
+#: ../main.c:71
#, fuzzy, c-format
msgid " -R realtime response as daemon (default action: log only)\n"
msgstr ""
" -R daemon¤È¤·¤Æ¼Â»þ´ÖÂбþ (¥Ç¥Õ¥©¥ë¥ÈÆ°ºî: ¥í¥°¤Î¤ß)\n"
-#: ../main.c:71
+#: ../main.c:72
#, fuzzy, c-format
msgid " -a <count> alert threshold (defaults to %d entries)\n"
msgstr ""
" -a <¥«¥¦¥ó¥È>\n"
" ·Ù¹ð¤ÎïçÃÍ (¥Ç¥Õ¥©¥ë¥È %d ¥¨¥ó¥È¥ê)\n"
-#: ../main.c:72
+#: ../main.c:73
#, fuzzy, c-format
msgid " -l <time> forget events this old (defaults to %d hours)\n"
msgstr ""
" -l <time> ¤³¤ì¤è¤ê¸Å¤¤¥¤¥Ù¥ó¥È¤ò˺¤ì¤ë (¥Ç¥Õ¥©¥ë¥È %d »þ´Ö)\n"
-#: ../main.c:73
+#: ../main.c:74
#, fuzzy, c-format
msgid " -k <IP/net> add this IP address or net to the list of known hosts\n"
msgstr ""
" -k <IP/net> ´ûÃΤΥۥ¹¥È¤Î¥ê¥¹¥È¤Ë¤³¤Î IP ¥¢¥É¥ì¥¹¤Þ¤¿¤Ï net ¤òÄɲÃ"
"¤¹¤ë\n"
-#: ../main.c:74
+#: ../main.c:75
#, fuzzy, c-format
msgid " -A invoke notification script if threshold is reached\n"
msgstr " -A ïçÃͤË㤷¤¿»þ¤ËÄÌÃÎ¥¹¥¯¥ê¥×¥È¤òµ¯Æ°¤¹¤ë\n"
-#: ../main.c:75
+#: ../main.c:76
#, fuzzy, c-format
msgid " -B invoke response action script (e.g. block host)\n"
msgstr ""
" -B ±þÅú¥¹¥¯¥ê¥×¥È¤òµ¯Æ°¤¹¤ë (Î㤨¤Ð¥Û¥¹¥È¤ò¥Ö¥í¥Ã¥¯¤¹¤ë\n"
-#: ../main.c:76
+#: ../main.c:77
#, fuzzy, c-format
msgid " -X <port> activate internal status information web server\n"
msgstr " -X ÆâÉô¾õÂ֤ξðÊó¤Î¥¦¥§¥Ö¥µ¡¼¥Ð¤ò͸ú¤Ë¤¹¤ë\n"
-#: ../main.c:102
+#: ../main.c:103
msgid "You can contact the author at <bw@inside-security.de>."
msgstr ""
-#: ../main.c:104
+#: ../main.c:105
msgid "Compile-time options of this version:"
msgstr ""
-#: ../main.c:105
+#: ../main.c:106
#, c-format
msgid "Short name limit "
msgstr ""
-#: ../main.c:107 ../main.c:113 ../main.c:119 ../main.c:125 ../main.c:131
+#: ../main.c:108 ../main.c:114 ../main.c:120 ../main.c:126
msgid "enabled"
msgstr ""
-#: ../main.c:109 ../main.c:115 ../main.c:121 ../main.c:127 ../main.c:133
+#: ../main.c:110 ../main.c:116 ../main.c:122 ../main.c:128
msgid "disabled"
msgstr ""
-#: ../main.c:111
+#: ../main.c:112
#, c-format
msgid "Zlib support "
msgstr ""
-#: ../main.c:117
+#: ../main.c:118
#, c-format
msgid "Gettext (i18n) support "
msgstr ""
-#: ../main.c:123
-#, c-format
-msgid "IPv6 support "
-msgstr ""
-
-#: ../main.c:129
+#: ../main.c:124
#, c-format
msgid "GNU adns support "
msgstr ""
-#: ../main.c:287
+#: ../main.c:282
#, c-format
msgid "Illegal inclusion/exclusion pos. 1 (expected [ie]): %s\n"
msgstr ""
-#: ../main.c:288 ../main.c:305 ../main.c:314 ../main.c:452
+#: ../main.c:283 ../main.c:300 ../main.c:309 ../main.c:453
#, c-format
msgid "Exiting\n"
msgstr "½ªÎ»\n"
-#: ../main.c:304
+#: ../main.c:299
#, c-format
msgid "Illegal inclusion/exclusion pos. 2 (expected [hpcb]): %s\n"
msgstr ""
-#: ../main.c:313
+#: ../main.c:308
#, c-format
msgid "Illegal inclusion/exclusion pos. 3 (expected [sd]): %s\n"
msgstr ""
-#: ../modes.c:109
+#: ../modes.c:108
#, c-format
msgid "Using stdin as input\n"
msgstr "ÆþÎϤËɸ½àÆþÎϤò»È¤¤¤Þ¤¹\n"
-#: ../modes.c:115
+#: ../modes.c:114
#, c-format
msgid "Opening input file '%s'\n"
msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë '%s' ¤ò³«¤¤¤Æ¤¤¤Þ¤¹\n"
-#: ../modes.c:133
+#: ../modes.c:130
#, c-format
msgid "Processing\n"
msgstr "½èÍýÃæ\n"
-#: ../modes.c:140
+#: ../modes.c:137
#, c-format
msgid "Unrecognized entries or tokens can be submitted at\n"
msgstr ""
-#: ../modes.c:149 ../modes.c:396 ../modes.c:782 ../rcfile.c:321
+#: ../modes.c:146 ../modes.c:393 ../modes.c:784 ../rcfile.c:379
#, c-format
msgid "Closing '%s'\n"
msgstr "'%s' ¤òÊĤ¸¤Æ¤¤¤Þ¤¹\n"
-#: ../modes.c:178
+#: ../modes.c:175
#, c-format
msgid "Sorting data\n"
msgstr "¥Ç¡¼¥¿¤ÎʤÙÊѤ¨Ãæ\n"
-#: ../modes.c:215
+#: ../modes.c:212
#, c-format
msgid "Opening output file '%s'\n"
msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë '%s' ¤ò³«¤¤¤Æ¤¤¤Þ¤¹\n"
-#: ../modes.c:226
+#: ../modes.c:223
#, fuzzy, c-format
msgid "Sending\n"
msgstr "Á÷¿®Ãæ...\n"
-#: ../modes.c:249 ../net.c:364 ../net.c:367
+#: ../modes.c:246 ../net.c:341 ../net.c:344
msgid "%A %B %d %H:%M:%S %Z %Y"
msgstr ""
-#: ../modes.c:250
+#: ../modes.c:247
#, c-format
msgid "Generated %s by "
msgstr "ºîÀ®Æü: %s, ºîÀ®¼Ô: "
-#: ../modes.c:260
+#: ../modes.c:257
#, c-format
msgid "an unknown user.\n"
msgstr "an unknown user.\n"
-#: ../modes.c:268
+#: ../modes.c:265
#, c-format
msgid "(and %d older than %d seconds) "
msgstr "(and %d older than %d seconds) "
-#: ../modes.c:271
+#: ../modes.c:268
#, c-format
msgid "(and %d malformed) "
msgstr "(and %d malformed) "
-#: ../modes.c:274
+#: ../modes.c:271
#, fuzzy, c-format
msgid "of %d entries in the file \"%s\" are packet logs, "
msgstr "of %d entries in the file "
-#: ../modes.c:276
+#: ../modes.c:273
#, c-format
msgid "of %d entries in standard input are packet logs, "
msgstr ""
-#: ../modes.c:278
+#: ../modes.c:275
#, fuzzy, c-format
msgid "of %d entries in %d input files are packet logs, "
msgstr "of %d entries in the file "
-#: ../modes.c:282
+#: ../modes.c:279
#, c-format
msgid "one has unique characteristics.\n"
msgstr "one has unique characteristics.\n"
-#: ../modes.c:284
+#: ../modes.c:281
#, c-format
msgid "%d have unique characteristics.\n"
msgstr "%d have unique characteristics.\n"
-#: ../modes.c:292
+#: ../modes.c:289
#, c-format
msgid "One entry was excluded by configuration.\n"
msgstr "£±¤Ä¤Î¥¨¥ó¥È¥ê¤¬ÀßÄê¤Ë¤è¤Ã¤Æ½ü³°¤µ¤ì¤Þ¤·¤¿¡£\n"
-#: ../modes.c:294
+#: ../modes.c:291
#, c-format
msgid "%d entries were excluded by configuration.\n"
msgstr "%d ¥¨¥ó¥È¥ê¤¬ÀßÄê¤Ë¤è¤Ã¤Æ½ü³°¤µ¤ì¤Þ¤·¤¿¡£\n"
-#: ../modes.c:302
+#: ../modes.c:299
#, c-format
msgid "First packet log entry: %s, last: %s.\n"
msgstr "ºÇ½é¤Î¥Ñ¥±¥Ã¥È¥í¥°¥¨¥ó¥È¥ê: %s, ºÇ¸å: %s\n"
-#: ../modes.c:304 ../modes.c:811
+#: ../modes.c:301 ../modes.c:813
#, c-format
msgid "No valid time entries found.\n"
msgstr "͸ú¤Ê»þ¹ï¥¨¥ó¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£\n"
-#: ../modes.c:311
+#: ../modes.c:308
#, c-format
msgid "All entries were logged by the same host: \"%s\".\n"
msgstr "¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤¬Æ±¤¸¥Û¥¹¥È \"%s\" ¤Ç¥í¥°¤µ¤ì¤Þ¤·¤¿¡£\n"
-#: ../modes.c:318
+#: ../modes.c:315
#, c-format
msgid "All entries are from the same chain: \"%s\".\n"
msgstr "¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤¬Æ±¤¸¥Á¥§¥¤¥ó \"%s\" ¤«¤éÍè¤Æ¤¤¤Þ¤¹¡£\n"
-#: ../modes.c:325
+#: ../modes.c:322
#, c-format
msgid "All entries have the same target: \"%s\".\n"
msgstr "¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤¬Æ±¤¸¥¿¡¼¥²¥Ã¥È \"%s\" ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£\n"
-#: ../modes.c:332
+#: ../modes.c:329
#, c-format
msgid "All entries are from the same interface: \"%s\".\n"
msgstr "¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤¬Æ±¤¸¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹ \"%s\" ¤«¤éÍè¤Æ¤¤¤Þ¤¹¡£\n"
-#: ../modes.c:339
+#: ../modes.c:336
#, fuzzy, c-format
msgid "Only entries with a count of at least %d are shown.\n"
msgstr "%d °Ê¾å¤Î²ó¿ô¤Î¥¨¥ó¥È¥ê¤À¤±¤òɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£\n"
-#: ../modes.c:346
+#: ../modes.c:343
#, fuzzy, c-format
msgid "Only the top %d entries are shown.\n"
msgstr "%d °Ê¾å¤Î²ó¿ô¤Î¥¨¥ó¥È¥ê¤À¤±¤òɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£\n"
-#: ../modes.c:357
+#: ../modes.c:354
#, fuzzy, c-format
msgid "Resolving\n"
msgstr "%s ¤ò²ò·è¤·¤Æ¤¤¤Þ¤¹\n"
-#: ../modes.c:416
+#: ../modes.c:413
#, c-format
msgid "Warning: pidfile exists, another fwlogwatch might be running.\n"
msgstr ""
"Warning: pidfile ¤¬Â¸ºß¤·¤Æ¤¤¤Þ¤¹¡£Â¾¤Î fwlogwatch ¤¬Æ°¤¤¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»"
"¤ó¡£\n"
-#: ../modes.c:430
+#: ../modes.c:427
#, fuzzy, c-format
msgid "SIGHUP caught, reread configuration file %s"
msgstr "SIGHUP ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿¤Î¤Ç¡¤¥í¥°¥Õ¥¡¥¤¥ë¤òºÆ¤Ó³«¤¤¤Æ¤¤¤Þ¤¹"
-#: ../modes.c:432
+#: ../modes.c:429
#, fuzzy, c-format
msgid "SIGHUP caught, unable to reread configuration file %s"
msgstr "SIGHUP ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿¤Î¤Ç¡¤¥í¥°¥Õ¥¡¥¤¥ë¤òºÆ¤Ó³«¤¤¤Æ¤¤¤Þ¤¹"
-#: ../modes.c:455
+#: ../modes.c:433
+#, c-format
+msgid "Reread DNS cache file %s"
+msgstr ""
+
+#: ../modes.c:435
+#, fuzzy, c-format
+msgid "Unable to reread DNS cache file %s"
+msgstr "SIGHUP ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿¤Î¤Ç¡¤¥í¥°¥Õ¥¡¥¤¥ë¤òºÆ¤Ó³«¤¤¤Æ¤¤¤Þ¤¹"
+
+#: ../modes.c:459
msgid "SIGUSR1 caught, reading input from stdin, no need to reopen log file"
msgstr ""
-#: ../modes.c:457
+#: ../modes.c:461
#, fuzzy, c-format
msgid "SIGUSR1 caught, reopening log file %s"
msgstr "SIGHUP ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿¤Î¤Ç¡¤¥í¥°¥Õ¥¡¥¤¥ë¤òºÆ¤Ó³«¤¤¤Æ¤¤¤Þ¤¹"
-#: ../modes.c:529
+#: ../modes.c:533
msgid "SIGTERM caught, cleaning up"
msgstr "SIGTERM ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿¤Î¤Ç¡¤Áݽü¤·¤Æ¤¤¤Þ¤¹"
-#: ../modes.c:611
+#: ../modes.c:615
#, c-format
msgid "Starting (pid %d)"
msgstr "³«»Ï¤·¤Æ¤¤¤Þ¤¹ (pid %d)"
-#: ../modes.c:661
+#: ../modes.c:665
msgid "User to run as was not found"
msgstr ""
-#: ../modes.c:676
+#: ../modes.c:680
#, c-format
msgid "Changed uid from %d to %d, gid from %d to %d"
msgstr ""
-#: ../modes.c:678
+#: ../modes.c:682
#, c-format
msgid "Running with uid %d, gid %d"
msgstr ""
-#: ../modes.c:682
+#: ../modes.c:686
msgid "Alert threshold is one attempt"
msgstr "Alert threshold is one attempt"
-#: ../modes.c:684
+#: ../modes.c:688
#, c-format
msgid "Alert threshold is %d attempts"
msgstr "Alert threshold is %d attempts"
-#: ../modes.c:688
+#: ../modes.c:692
#, c-format
msgid "Events older than %d second(s) are discarded"
msgstr "%d Éäè¤ê¸Å¤¤¥¤¥Ù¥ó¥È¤¬ÇË´þ¤µ¤ì¤Þ¤¹"
-#: ../modes.c:690
+#: ../modes.c:694
#, c-format
msgid "Events older than %d hour(s) are discarded"
msgstr "%d »þ´Ö¤è¤ê¸Å¤¤¥¤¥Ù¥ó¥È¤¬ÇË´þ¤µ¤ì¤Þ¤¹"
-#: ../modes.c:693
+#: ../modes.c:697
#, fuzzy, c-format
msgid "Response mode: Log%s%s"
msgstr "±þÅú¥â¡¼¥É: log%s%s"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", notify"
msgstr ", ÄÌÃÎ"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", respond"
msgstr ", ±þÅú"
-#: ../modes.c:724
+#: ../modes.c:728
#, c-format
msgid "Reading standard input\n"
msgstr "ɸ½àÆþÎϤòÆɤߤȤäƤ¤¤Þ¤¹\n"
-#: ../modes.c:742
+#: ../modes.c:744
#, c-format
msgid "Reading '%s'\n"
msgstr "'%s' ¤òÆɤߤȤäƤ¤¤Þ¤¹\n"
-#: ../modes.c:808
+#: ../modes.c:810
#, fuzzy, c-format
msgid "Number of files: %d\n"
msgstr "Number of logged attempts: %s\n"
-#: ../modes.c:809
+#: ../modes.c:811
#, fuzzy, c-format
msgid "Number of lines: %d\n"
msgstr "¹Ô¿ô: %d\n"
-#: ../modes.c:814
+#: ../modes.c:816
#, c-format
msgid "First entry: %s\n"
msgstr "ºÇ½é¤Î¥¨¥ó¥È¥ê: %s\n"
-#: ../modes.c:816
+#: ../modes.c:818
#, c-format
msgid "Last entry : %s\n"
msgstr "ºÇ¸å¤Î¥¨¥ó¥È¥ê: %s\n"
-#: ../modes.c:818
+#: ../modes.c:820
#, c-format
msgid "Difference : %s\n"
msgstr ""
-#: ../net.c:130 ../net.c:132
+#: ../net.c:106
#, c-format
msgid "Listening on %s port %i"
msgstr "%s ¾å¤Î¥Ý¡¼¥È %i ¤ÇÂÔ¤Á¼õ¤±Ãæ¤Ç¤¹"
-#: ../net.c:172
+#: ../net.c:109
+#, c-format
+msgid "Connections are only allowed from %s"
+msgstr ""
+
+#: ../net.c:149
msgid "decode_base64: input string incomplete"
msgstr "decode_base64: ÆþÎÏʸ»úÎó¤¬ÉÔ´°Á´¤Ç¤¹"
-#: ../net.c:179
+#: ../net.c:156
#, c-format
msgid "decode_base64: illegal character '%c' in input string"
msgstr "decode_base64: ÉÔÀµ¤Êʸ»ú '%c' ¤¬ÆþÎÏʸ»úÎó¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹"
-#: ../net.c:214
+#: ../net.c:191
msgid "count"
msgstr ""
-#: ../net.c:215
+#: ../net.c:192
msgid "added"
msgstr ""
-#: ../net.c:217
+#: ../net.c:194
msgid "proto"
msgstr ""
-#: ../net.c:219
+#: ../net.c:196
#, fuzzy
msgid "bytes"
msgstr " (%d ¥Ð¥¤¥È)"
-#: ../net.c:220
+#: ../net.c:197
msgid "source"
msgstr ""
-#: ../net.c:222 ../net.c:231
+#: ../net.c:199 ../net.c:208
#, fuzzy
msgid "hostname"
msgstr "<td>¥Û¥¹¥È̾</td>"
-#: ../net.c:224 ../net.c:234
+#: ../net.c:201 ../net.c:211
#, fuzzy
msgid "port"
msgstr " port %d"
-#: ../net.c:226 ../net.c:236
+#: ../net.c:203 ../net.c:213
#, fuzzy
msgid "service"
msgstr "<td>¥µ¡¼¥Ó¥¹</td>"
-#: ../net.c:229
+#: ../net.c:206
#, fuzzy
msgid "destination"
msgstr "<td>°¸Àè</td>"
-#: ../net.c:239
+#: ../net.c:216
msgid "opts"
msgstr ""
-#: ../net.c:240
+#: ../net.c:217
msgid "time remaining"
msgstr ""
-#: ../net.c:241
+#: ../net.c:218
msgid "action"
msgstr ""
-#: ../net.c:293 ../net.c:295 ../net.c:360
+#: ../net.c:270 ../net.c:272 ../net.c:337
msgid "Information"
msgstr ""
-#: ../net.c:299 ../net.c:301 ../net.c:398
+#: ../net.c:276 ../net.c:278 ../net.c:375
msgid "Options"
msgstr ""
-#: ../net.c:305 ../net.c:307 ../net.c:426
+#: ../net.c:282 ../net.c:284 ../net.c:403
#, fuzzy
msgid "Packet cache"
msgstr "<h2>¥Ñ¥±¥Ã¥È¥¥ã¥Ã¥·¥å</h2>\n"
-#: ../net.c:311 ../net.c:313 ../net.c:495
+#: ../net.c:288 ../net.c:290 ../net.c:472
#, fuzzy
msgid "Host status"
msgstr "<h2>¥Û¥¹¥È¾õÂÖ</h2>\n"
-#: ../net.c:316
+#: ../net.c:293
msgid "Reload"
msgstr ""
-#: ../net.c:365
+#: ../net.c:342
msgid "Daemon start time"
msgstr ""
-#: ../net.c:368
+#: ../net.c:345
msgid "Current time"
msgstr ""
-#: ../net.c:371
+#: ../net.c:348
msgid "Running time"
msgstr ""
-#: ../net.c:373
+#: ../net.c:350
msgid "Log"
msgstr ""
-#: ../net.c:374
+#: ../net.c:351
#, fuzzy
msgid "Response mode"
msgstr "±þÅú¥â¡¼¥É: log%s%s"
-#: ../net.c:376
+#: ../net.c:353
msgid "Lines seen"
msgstr ""
-#: ../net.c:377
+#: ../net.c:354
msgid "Hits"
msgstr ""
-#: ../net.c:378
+#: ../net.c:355
msgid "Old/excluded/malformed"
msgstr ""
-#: ../net.c:385
+#: ../net.c:362
msgid "Entries in packet cache"
msgstr ""
-#: ../net.c:392
+#: ../net.c:369
msgid "Entries in host status"
msgstr ""
-#: ../net.c:400
+#: ../net.c:377
msgid "Parameter"
msgstr ""
-#: ../net.c:402
+#: ../net.c:379
msgid "Decrease"
msgstr ""
-#: ../net.c:404
+#: ../net.c:381
msgid "Current"
msgstr ""
-#: ../net.c:406
+#: ../net.c:383
msgid "Increase"
msgstr ""
-#: ../net.c:408
+#: ../net.c:385
#, fuzzy
msgid "Alert threshold"
msgstr "Alert threshold is one attempt"
-#: ../net.c:410
+#: ../net.c:387
msgid "Discard timeout"
msgstr ""
-#: ../net.c:411
+#: ../net.c:388
msgid "Minimum count in packet cache"
msgstr ""
-#: ../net.c:413 ../net.c:415
+#: ../net.c:390 ../net.c:392
msgid "Top amount of entries in packet cache"
msgstr ""
-#: ../net.c:418 ../net.c:420
+#: ../net.c:395 ../net.c:397
msgid "Refresh time"
msgstr ""
-#: ../net.c:442 ../net.c:565
+#: ../net.c:419 ../net.c:528
msgid "%Y/%m/%d %H:%M:%S"
msgstr ""
-#: ../net.c:479 ../net.c:595
+#: ../net.c:456 ../net.c:558
msgid "drop"
msgstr ""
-#: ../net.c:481
+#: ../net.c:458
msgid "escalate"
msgstr ""
-#: ../net.c:527 ../net.c:546 ../net.c:552 ../net.c:558
+#: ../net.c:493 ../net.c:509 ../net.c:515 ../net.c:521
msgid "<td>any</td>"
msgstr "<td>²¿¤Ç¤â</td>"
-#: ../net.c:540
+#: ../net.c:503
#, fuzzy
msgid "<td>(known host)</td>"
msgstr "<td>¥í¥°¥Û¥¹¥È</td>"
-#: ../net.c:542
+#: ../net.c:505
#, fuzzy
msgid "<td>(known net)</td>"
msgstr "<td>¥Ý¡¼¥È</td>"
-#: ../net.c:654 ../net.c:657
-#, c-format
-msgid "Rejected connect from unallowed ip %s port %i"
+#: ../net.c:605
+#, fuzzy, c-format
+msgid "Rejected connection from unallowed IP address %s port %i"
msgstr "µö²Ä¤µ¤ì¤Æ¤¤¤Ê¤¤ ip %s ¥Ý¡¼¥È %i ¤«¤é¤Î Rejected Àܳ"
-#: ../net.c:668 ../net.c:670
+#: ../net.c:614
#, c-format
msgid "Connect from %s port %i"
msgstr "%s ¥Ý¡¼¥È %i ¤«¤é¤ÎÀܳ"
-#: ../net.c:734
+#: ../net.c:677
msgid "Authorization failed"
msgstr "ǧ¾Ú¼ºÇÔ"
-#: ../net.c:737
+#: ../net.c:680
#, fuzzy
msgid "Authorization required"
msgstr "ǧ¾Ú¼ºÇÔ"
-#: ../net.c:814
+#: ../net.c:757
msgid "Bad request"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "Redirect"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "You should be redirected to the <a href=\"/\">root directory</a>"
msgstr ""
-#: ../net.c:831
+#: ../net.c:774
#, c-format
msgid "Requested function: %s"
msgstr ""
-#: ../net.c:834
+#: ../net.c:777
msgid "Connection closed"
msgstr "Àܳ¤¬ÊĤ¸¤Þ¤·¤¿"
@@ -970,32 +986,42 @@
msgid "<th>opts</th>"
msgstr "<td>opts</td>"
-#: ../parser.c:263
+#: ../parser.c:270
#, c-format
msgid "Unknown parser: '%c'.\n"
msgstr "Unknown parser: '%c'.\n"
-#: ../rcfile.c:57
+#: ../rcfile.c:58
#, c-format
msgid "Error in configuration file '%s' line %d: not a number\n"
msgstr ""
-#: ../rcfile.c:86
+#: ../rcfile.c:87
#, c-format
msgid "Error in configuration file '%s' line %d, assuming 'true'\n"
msgstr ""
-#: ../rcfile.c:278
+#: ../rcfile.c:281
#, fuzzy, c-format
msgid "Unrecognized option in configuration file '%s' line %d\n"
msgstr "Unrecognized option in rcfile: %s"
-#: ../rcfile.c:299
+#: ../rcfile.c:332
+#, fuzzy, c-format
+msgid "Unrecognized entry in DNS cache file '%s' line %d\n"
+msgstr "Unrecognized option in rcfile: %s"
+
+#: ../rcfile.c:349
#, c-format
msgid "%s is not a regular file, ignoring.\n"
msgstr "%s ¤ÏÄ̾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Ìµ»ë¤·¤Þ¤¹¡£\n"
-#: ../rcfile.c:307
+#: ../rcfile.c:358
+#, fuzzy, c-format
+msgid "Opening DNS cache file '%s'\n"
+msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë '%s' ¤ò³«¤¤¤Æ¤¤¤Þ¤¹\n"
+
+#: ../rcfile.c:360
#, fuzzy, c-format
msgid "Opening configuration file '%s'\n"
msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë '%s' ¤ò³«¤¤¤Æ¤¤¤Þ¤¹\n"
@@ -1005,51 +1031,64 @@
msgid "port mismatch: %d != %d\n"
msgstr "¥Ý¡¼¥È¤¬°ìÃפ·¤Þ¤»¤ó: %d != %d\n"
-#: ../resolve.c:81 ../resolve.c:151
-#, c-format
-msgid "Resolving %s from cache\n"
-msgstr "¥¥ã¥Ã¥·¥å¤«¤é %s ¤ò²ò·è¤·¤Æ¤¤¤Þ¤¹\n"
+#: ../resolve.c:99 ../resolve.c:172
+msgid "[timeout]"
+msgstr ""
-#: ../resolve.c:89 ../resolve.c:112
+#: ../resolve.c:101 ../resolve.c:174
+msgid "[server failure]"
+msgstr ""
+
+#: ../resolve.c:111 ../resolve.c:213
#, c-format
msgid "Resolving %s\n"
msgstr "%s ¤ò²ò·è¤·¤Æ¤¤¤Þ¤¹\n"
-#: ../resolve.c:95
-#, c-format
-msgid "Wrong host name size\n"
-msgstr "´Ö°ã¤Ã¤¿¥Û¥¹¥È̾¤Î¥µ¥¤¥º¤Ç¤¹\n"
-
-#: ../resolve.c:119
-#, c-format
-msgid "%s [forward lookup: %s]"
-msgstr "%s [Á°¸þ¤¸¡º÷: %s]"
-
#: ../resolve.c:122
#, c-format
msgid "%s [forward lookup failed]"
msgstr "%s [Á°¸þ¤¸¡º÷¼ºÇÔ]"
-#: ../resolve.c:163
+#: ../resolve.c:131
#, fuzzy, c-format
-msgid "Resolving %s from adns\n"
-msgstr "¥¥ã¥Ã¥·¥å¤«¤é %s ¤ò²ò·è¤·¤Æ¤¤¤Þ¤¹\n"
+msgid " [v4 forward lookup: %s]"
+msgstr "%s [Á°¸þ¤¸¡º÷: %s]"
-#: ../resolve.c:167
-#, fuzzy
-msgid "[inconsistent forward lookup]"
+#: ../resolve.c:138
+#, fuzzy, c-format
+msgid " [v6 forward lookup: %s]"
msgstr "%s [Á°¸þ¤¸¡º÷: %s]"
-#: ../resolve.c:171
+#: ../resolve.c:180
#, c-format
msgid "[adns status %d]"
msgstr ""
-#: ../resolve.c:189
-msgid "DNS cache error"
+#: ../resolve.c:192
+msgid "[adns error]"
+msgstr ""
+
+#: ../resolve.c:206 ../resolve.c:354
+#, c-format
+msgid "Resolving %s from cache\n"
+msgstr "¥¥ã¥Ã¥·¥å¤«¤é %s ¤ò²ò·è¤·¤Æ¤¤¤Þ¤¹\n"
+
+#: ../resolve.c:218
+#, fuzzy, c-format
+msgid "Resolving %s from adns\n"
+msgstr "¥¥ã¥Ã¥·¥å¤«¤é %s ¤ò²ò·è¤·¤Æ¤¤¤Þ¤¹\n"
+
+#: ../resolve.c:240
+#, c-format
+msgid "IP address %s is already in DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:246
+#, c-format
+msgid "Adding IP address '%s' with host name '%s' to DNS cache\n"
msgstr ""
-#: ../resolve.c:207
+#: ../resolve.c:283
#, c-format
msgid "Submitted %s to adns\n"
msgstr ""
@@ -1084,7 +1123,7 @@
msgid "Deleting host status entry (%s)"
msgstr "¥Û¥¹¥È¾õÂÖ¥¨¥ó¥È¥ê (%s) ¤òºï½ü¤·¤Æ¤¤¤Þ¤¹"
-#: ../response.c:276
+#: ../response.c:280
#, c-format
msgid "ALERT: %d attempts from %s"
msgstr "ALERT: %d attempts from %s"
@@ -1128,49 +1167,61 @@
" ¤Î¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ñ¥é¥á¡¼¥¿¤ò»È\n"
" ¤Ã¤Æ¤¯¤À¤µ¤¤¡£\n"
-#: ../utils.c:268
+#: ../utils.c:301
+#, c-format
+msgid "[error]"
+msgstr ""
+
+#: ../utils.c:317
#, c-format
msgid "IP address error: %s\n"
msgstr "IP ¥¢¥É¥ì¥¹¤Ë¥¨¥é¡¼¤¬¤¢¤ê¤Þ¤¹: %s\n"
-#: ../utils.c:294
+#: ../utils.c:342 ../utils.c:353
#, c-format
msgid "Error in CIDR format: %s\n"
msgstr "CIDR¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¥¨¥é¡¼¤¬¤¢¤ê¤Þ¤¹: %s\n"
-#: ../utils.c:312
+#: ../utils.c:403
#, c-format
msgid "(known host)\n"
msgstr "(´ûÃΤΥۥ¹¥È)\n"
-#: ../utils.c:351
+#: ../utils.c:443
#, c-format
msgid "(excluded host)\n"
msgstr "(½ü³°¤¹¤ë¥Û¥¹¥È)\n"
-#: ../whois.c:220
-#, c-format
-msgid "Looking up whois info for %s from cache\n"
+#: ../whois.c:226
+#, fuzzy, c-format
+msgid "Looking up whois info for %s(/%d) from cache\n"
msgstr "¥¥ã¥Ã¥·¥å¤«¤é %s ¤Î whois ¾ðÊó¤ò¸¡º÷¤·¤Æ¤¤¤Þ¤¹\n"
-#: ../whois.c:227
+#: ../whois.c:233
#, c-format
msgid "Looking up whois info for %s\n"
msgstr "%s ¤Î whois ¾ðÊó¤ò¸¡º÷¤·¤Æ¤¤¤Þ¤¹\n"
-#: ../whois.c:248
+#: ../whois.c:254
#, c-format
msgid "lookup failed: %s\n"
msgstr "¸¡º÷¤Ë¼ºÇÔ: %s\n"
-#: ../main.h:300
+#: ../main.h:314
msgid "fwlogwatch summary"
msgstr "fwlogwatch ¤Î°ìÍ÷"
-#: ../main.h:310
+#: ../main.h:324
msgid "fwlogwatch status"
msgstr "fwlogwatch ¤Î¾õÂÖ"
+#~ msgid "Wrong host name size\n"
+#~ msgstr "´Ö°ã¤Ã¤¿¥Û¥¹¥È̾¤Î¥µ¥¤¥º¤Ç¤¹\n"
+
+#, fuzzy
+#~ msgid "[inconsistent forward lookup]"
+#~ msgstr "%s [Á°¸þ¤¸¡º÷: %s]"
+
#, fuzzy
#~ msgid "Interactive report mode (summary mode extension):\n"
#~ msgstr "ÂÐÏÃ¥ì¥Ý¡¼¥È¥â¡¼¥É:\n"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/pt.po
^
|
@@ -2,10 +2,11 @@
msgstr ""
"Project-Id-Version: fwlogwatch 0.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-06 13:58+0200\n"
+"POT-Creation-Date: 2013-05-23 15:04+0200\n"
"PO-Revision-Date: 2002-01-27 16:17+0100\n"
"Last-Translator: Ivan F. Martinez <ivanfm@ecodigit.com.br>\n"
"Language-Team: -\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -30,8 +31,8 @@
msgid "Error in sort string, direction expected, ignoring.\n"
msgstr "Erro na string de ordenacao: '%c', experado direcao, ignorando.\n"
-#: ../compare.c:382 ../compare.c:384 ../modes.c:196 ../modes.c:203
-#: ../modes.c:813 ../modes.c:815 ../output.c:106 ../output.c:113
+#: ../compare.c:382 ../compare.c:384 ../modes.c:193 ../modes.c:200
+#: ../modes.c:815 ../modes.c:817 ../output.c:106 ../output.c:113
#: ../output.c:193 ../output.c:202 ../output.c:380
msgid "%b %d %H:%M:%S"
msgstr ""
@@ -110,10 +111,9 @@
msgstr ""
#: ../main.c:40
-#, fuzzy, c-format
-msgid " -m <count> only show entries with at least so many incidents\n"
+#, c-format
+msgid " -i <file> initialize DNS cache with entries from file\n"
msgstr ""
-" -m <num> mostra somente entradas com um minimo de ocorrencias\n"
#: ../main.c:41
#, c-format
@@ -122,559 +122,575 @@
#: ../main.c:42
#, fuzzy, c-format
+msgid " -m <count> only show entries with at least so many incidents\n"
+msgstr ""
+" -m <num> mostra somente entradas com um minimo de ocorrencias\n"
+
+#: ../main.c:43
+#, fuzzy, c-format
msgid " -N resolve service names\n"
msgstr " -N resolve nome de servico\n"
-#: ../main.c:43
+#: ../main.c:44
#, fuzzy, c-format
msgid " -n resolve host names\n"
msgstr " -n resolve nome de hosts\n"
-#: ../main.c:44
+#: ../main.c:45
#, fuzzy, c-format
msgid " -O <order> define the sort order (see the man page for details)\n"
msgstr ""
" -O <ordem> define a ordem para ordenação (veja pagina man para "
"detalhes)\n"
-#: ../main.c:45
+#: ../main.c:46
#, fuzzy, c-format
msgid ""
" -P <format> use parsers for specific formats (defaults to netfilter)\n"
msgstr " -P <formato> utiliza somente os formatos especificados\n"
-#: ../main.c:46
+#: ../main.c:47
#, c-format
msgid " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
msgstr ""
-#: ../main.c:47
+#: ../main.c:48
#, c-format
msgid ""
" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
msgstr ""
-#: ../main.c:48
+#: ../main.c:49
#, fuzzy, c-format
msgid " -p differentiate protocols\n"
msgstr " -p diferenciar protocolos\n"
-#: ../main.c:49
+#: ../main.c:50
#, fuzzy, c-format
msgid " -s differentiate source ports\n"
msgstr " -s diferenciar portas de origem\n"
-#: ../main.c:50
+#: ../main.c:51
#, c-format
msgid " -U <title> set report and status page title and email subject\n"
msgstr ""
-#: ../main.c:51
+#: ../main.c:52
#, fuzzy, c-format
msgid " -v verbose, specify twice for more info\n"
msgstr ""
" -v detalhes, especifique duas vezes para mais informações\n"
-#: ../main.c:52
+#: ../main.c:53
#, fuzzy, c-format
msgid " -y differentiate TCP options\n"
msgstr " -y diferenciar opções de TCP\n"
-#: ../main.c:55
+#: ../main.c:56
#, c-format
msgid "Log summary mode (default):\n"
msgstr "Modo sumario de log (padrão):\n"
-#: ../main.c:56
+#: ../main.c:57
#, fuzzy, c-format
msgid " -C <email> carbon copy recipients\n"
msgstr " -C <email> destinatarios para cópia\n"
-#: ../main.c:57
+#: ../main.c:58
#, fuzzy, c-format
msgid " -e show end times\n"
msgstr " -e mostrar horario final\n"
-#: ../main.c:58
+#: ../main.c:59
#, fuzzy, c-format
msgid " -F <email> report sender address (defaults to '%s')\n"
msgstr " -F <email> email origem no envio do relatório\n"
-#: ../main.c:59
+#: ../main.c:60
#, fuzzy, c-format
msgid " -l <time> process recent events only (defaults to off)\n"
msgstr ""
" -l <tempo> processa eventos recentes somente (padrão : desligado)\n"
-#: ../main.c:60
+#: ../main.c:61
#, fuzzy, c-format
msgid " -o <file> specify output file\n"
msgstr " -o <arq.> especifica arquivo de saida\n"
-#: ../main.c:61
+#: ../main.c:62
#, fuzzy, c-format
msgid " -S do not differentiate source IP addresses\n"
msgstr " -S não diferencia endereços IP de origem\n"
-#: ../main.c:62
+#: ../main.c:63
#, c-format
msgid " -T <email> send report by email to this address\n"
msgstr ""
-#: ../main.c:63
+#: ../main.c:64
#, fuzzy, c-format
msgid " -t show start times\n"
msgstr " -t mostrar horario inicial\n"
-#: ../main.c:64
+#: ../main.c:65
#, fuzzy, c-format
msgid " -W activate whois lookups for source addresses\n"
msgstr " -W activa verificação whois para endereços origem\n"
-#: ../main.c:65
+#: ../main.c:66
#, fuzzy, c-format
msgid " -w HTML output\n"
msgstr " -w saída em HTML\n"
-#: ../main.c:66
+#: ../main.c:67
#, fuzzy, c-format
msgid " -z show time interval\n"
msgstr " -z mostra intervalo de tempo\n"
-#: ../main.c:69
+#: ../main.c:70
#, c-format
msgid "Realtime response mode:\n"
msgstr "Modo de resposta em tempo real:\n"
-#: ../main.c:70
+#: ../main.c:71
#, fuzzy, c-format
msgid " -R realtime response as daemon (default action: log only)\n"
msgstr ""
" -R modo de resposta em tempo real (ação padrão: somente "
"registra)\n"
-#: ../main.c:71
+#: ../main.c:72
#, fuzzy, c-format
msgid " -a <count> alert threshold (defaults to %d entries)\n"
msgstr " -a <num> limite de ativação (padrão : %d entradas)\n"
-#: ../main.c:72
+#: ../main.c:73
#, fuzzy, c-format
msgid " -l <time> forget events this old (defaults to %d hours)\n"
msgstr ""
" -l <tempo> esquece eventos após periodo (padrão : %d horas)\n"
-#: ../main.c:73
+#: ../main.c:74
#, fuzzy, c-format
msgid " -k <IP/net> add this IP address or net to the list of known hosts\n"
msgstr " -k <IP/rede> adiciona IP ou rede à lista de conhecidos\n"
-#: ../main.c:74
+#: ../main.c:75
#, fuzzy, c-format
msgid " -A invoke notification script if threshold is reached\n"
msgstr " -A executa scripta de avisao ao chegar no limite\n"
-#: ../main.c:75
+#: ../main.c:76
#, fuzzy, c-format
msgid " -B invoke response action script (e.g. block host)\n"
msgstr ""
" -B executa script de resposta automatica (ex. bloqueia "
"maquina)\n"
-#: ../main.c:76
+#: ../main.c:77
#, fuzzy, c-format
msgid " -X <port> activate internal status information web server\n"
msgstr " -X activa servidor web interno de informações\n"
-#: ../main.c:102
+#: ../main.c:103
#, fuzzy
msgid "You can contact the author at <bw@inside-security.de>."
msgstr "Você pode contactar o autor via <bw@inside-security.de>."
-#: ../main.c:104
+#: ../main.c:105
msgid "Compile-time options of this version:"
msgstr ""
-#: ../main.c:105
+#: ../main.c:106
#, c-format
msgid "Short name limit "
msgstr ""
-#: ../main.c:107 ../main.c:113 ../main.c:119 ../main.c:125 ../main.c:131
+#: ../main.c:108 ../main.c:114 ../main.c:120 ../main.c:126
msgid "enabled"
msgstr ""
-#: ../main.c:109 ../main.c:115 ../main.c:121 ../main.c:127 ../main.c:133
+#: ../main.c:110 ../main.c:116 ../main.c:122 ../main.c:128
msgid "disabled"
msgstr ""
-#: ../main.c:111
+#: ../main.c:112
#, c-format
msgid "Zlib support "
msgstr ""
-#: ../main.c:117
+#: ../main.c:118
#, c-format
msgid "Gettext (i18n) support "
msgstr ""
-#: ../main.c:123
-#, c-format
-msgid "IPv6 support "
-msgstr ""
-
-#: ../main.c:129
+#: ../main.c:124
#, c-format
msgid "GNU adns support "
msgstr ""
-#: ../main.c:287
+#: ../main.c:282
#, c-format
msgid "Illegal inclusion/exclusion pos. 1 (expected [ie]): %s\n"
msgstr ""
-#: ../main.c:288 ../main.c:305 ../main.c:314 ../main.c:452
+#: ../main.c:283 ../main.c:300 ../main.c:309 ../main.c:453
#, c-format
msgid "Exiting\n"
msgstr "Terminando\n"
-#: ../main.c:304
+#: ../main.c:299
#, c-format
msgid "Illegal inclusion/exclusion pos. 2 (expected [hpcb]): %s\n"
msgstr ""
-#: ../main.c:313
+#: ../main.c:308
#, c-format
msgid "Illegal inclusion/exclusion pos. 3 (expected [sd]): %s\n"
msgstr ""
-#: ../modes.c:109
+#: ../modes.c:108
#, c-format
msgid "Using stdin as input\n"
msgstr "Usando stdin como entrada\n"
-#: ../modes.c:115
+#: ../modes.c:114
#, c-format
msgid "Opening input file '%s'\n"
msgstr "Abrindo arquivo de entrada '%s'\n"
-#: ../modes.c:133
+#: ../modes.c:130
#, c-format
msgid "Processing\n"
msgstr "Processando\n"
-#: ../modes.c:140
+#: ../modes.c:137
#, c-format
msgid "Unrecognized entries or tokens can be submitted at\n"
msgstr ""
-#: ../modes.c:149 ../modes.c:396 ../modes.c:782 ../rcfile.c:321
+#: ../modes.c:146 ../modes.c:393 ../modes.c:784 ../rcfile.c:379
#, c-format
msgid "Closing '%s'\n"
msgstr "Fechando '%s'\n"
-#: ../modes.c:178
+#: ../modes.c:175
#, c-format
msgid "Sorting data\n"
msgstr "Ordenando dados\n"
-#: ../modes.c:215
+#: ../modes.c:212
#, c-format
msgid "Opening output file '%s'\n"
msgstr "Abrindo arquivo de saída '%s'\n"
-#: ../modes.c:226
+#: ../modes.c:223
#, fuzzy, c-format
msgid "Sending\n"
msgstr "Enviando...\n"
-#: ../modes.c:249 ../net.c:364 ../net.c:367
+#: ../modes.c:246 ../net.c:341 ../net.c:344
msgid "%A %B %d %H:%M:%S %Z %Y"
msgstr ""
-#: ../modes.c:250
+#: ../modes.c:247
#, c-format
msgid "Generated %s by "
msgstr "Gerado %s por "
-#: ../modes.c:260
+#: ../modes.c:257
#, c-format
msgid "an unknown user.\n"
msgstr "um usuario desconhecido.\n"
-#: ../modes.c:268
+#: ../modes.c:265
#, c-format
msgid "(and %d older than %d seconds) "
msgstr "(e %d anteriores à %d segundos) "
-#: ../modes.c:271
+#: ../modes.c:268
#, c-format
msgid "(and %d malformed) "
msgstr "(e %d mal formadas) "
-#: ../modes.c:274
+#: ../modes.c:271
#, fuzzy, c-format
msgid "of %d entries in the file \"%s\" are packet logs, "
msgstr "de %d entradas no arquivo "
-#: ../modes.c:276
+#: ../modes.c:273
#, c-format
msgid "of %d entries in standard input are packet logs, "
msgstr ""
-#: ../modes.c:278
+#: ../modes.c:275
#, fuzzy, c-format
msgid "of %d entries in %d input files are packet logs, "
msgstr "de %d entradas no arquivo "
-#: ../modes.c:282
+#: ../modes.c:279
#, c-format
msgid "one has unique characteristics.\n"
msgstr "um tem caracteristica unica.\n"
-#: ../modes.c:284
+#: ../modes.c:281
#, c-format
msgid "%d have unique characteristics.\n"
msgstr "%d tem caracteristicas unicas.\n"
-#: ../modes.c:292
+#: ../modes.c:289
#, c-format
msgid "One entry was excluded by configuration.\n"
msgstr "Uma entrada foi excluida pela configuração.\n"
-#: ../modes.c:294
+#: ../modes.c:291
#, c-format
msgid "%d entries were excluded by configuration.\n"
msgstr "%d entradas foram excluidas pela configuração.\n"
-#: ../modes.c:302
+#: ../modes.c:299
#, c-format
msgid "First packet log entry: %s, last: %s.\n"
msgstr "Primeiro pacote registrado: %s, ultimo: %s.\n"
-#: ../modes.c:304 ../modes.c:811
+#: ../modes.c:301 ../modes.c:813
#, c-format
msgid "No valid time entries found.\n"
msgstr "Nenhum registro de horario valido encontrado.\n"
-#: ../modes.c:311
+#: ../modes.c:308
#, c-format
msgid "All entries were logged by the same host: \"%s\".\n"
msgstr "Todos registros são da mesma maquina: \"%s\".\n"
-#: ../modes.c:318
+#: ../modes.c:315
#, c-format
msgid "All entries are from the same chain: \"%s\".\n"
msgstr "Todos registros são do mesmo chain: \"%s\".\n"
-#: ../modes.c:325
+#: ../modes.c:322
#, c-format
msgid "All entries have the same target: \"%s\".\n"
msgstr "Todos registros tem o mesmo destino: \"%s\".\n"
-#: ../modes.c:332
+#: ../modes.c:329
#, c-format
msgid "All entries are from the same interface: \"%s\".\n"
msgstr "Todos registros são da mesma interface: \"%s\".\n"
-#: ../modes.c:339
+#: ../modes.c:336
#, fuzzy, c-format
msgid "Only entries with a count of at least %d are shown.\n"
msgstr "Somente registros com contagem maior que %d são mostrados.\n"
-#: ../modes.c:346
+#: ../modes.c:343
#, fuzzy, c-format
msgid "Only the top %d entries are shown.\n"
msgstr "Somente registros com contagem maior que %d são mostrados.\n"
-#: ../modes.c:357
+#: ../modes.c:354
#, fuzzy, c-format
msgid "Resolving\n"
msgstr "Resolvendo %s\n"
-#: ../modes.c:416
+#: ../modes.c:413
#, c-format
msgid "Warning: pidfile exists, another fwlogwatch might be running.\n"
msgstr "Aviso: arquivo pid existe,outro fwlogwatch pode estar rodando.\n"
-#: ../modes.c:430
+#: ../modes.c:427
#, fuzzy, c-format
msgid "SIGHUP caught, reread configuration file %s"
msgstr "SIGHUP recebido, reabrindo arquivo de log"
-#: ../modes.c:432
+#: ../modes.c:429
#, fuzzy, c-format
msgid "SIGHUP caught, unable to reread configuration file %s"
msgstr "SIGHUP recebido, reabrindo arquivo de log"
-#: ../modes.c:455
+#: ../modes.c:433
+#, c-format
+msgid "Reread DNS cache file %s"
+msgstr ""
+
+#: ../modes.c:435
+#, fuzzy, c-format
+msgid "Unable to reread DNS cache file %s"
+msgstr "SIGHUP recebido, reabrindo arquivo de log"
+
+#: ../modes.c:459
msgid "SIGUSR1 caught, reading input from stdin, no need to reopen log file"
msgstr ""
-#: ../modes.c:457
+#: ../modes.c:461
#, fuzzy, c-format
msgid "SIGUSR1 caught, reopening log file %s"
msgstr "SIGHUP recebido, reabrindo arquivo de log"
-#: ../modes.c:529
+#: ../modes.c:533
msgid "SIGTERM caught, cleaning up"
msgstr "SIGTERM recebido, fechando"
-#: ../modes.c:611
+#: ../modes.c:615
#, c-format
msgid "Starting (pid %d)"
msgstr "Iniciando (pid %d)"
-#: ../modes.c:661
+#: ../modes.c:665
msgid "User to run as was not found"
msgstr ""
-#: ../modes.c:676
+#: ../modes.c:680
#, c-format
msgid "Changed uid from %d to %d, gid from %d to %d"
msgstr ""
-#: ../modes.c:678
+#: ../modes.c:682
#, c-format
msgid "Running with uid %d, gid %d"
msgstr ""
-#: ../modes.c:682
+#: ../modes.c:686
msgid "Alert threshold is one attempt"
msgstr "Limite de alerta em uma tentativa"
-#: ../modes.c:684
+#: ../modes.c:688
#, c-format
msgid "Alert threshold is %d attempts"
msgstr "Limite de alerta : %d tentativas"
-#: ../modes.c:688
+#: ../modes.c:692
#, c-format
msgid "Events older than %d second(s) are discarded"
msgstr "Eventos anteriores a %d segundo(s) são discartados"
-#: ../modes.c:690
+#: ../modes.c:694
#, c-format
msgid "Events older than %d hour(s) are discarded"
msgstr "Eventos anteriores a %d houra(s) são discartados"
-#: ../modes.c:693
+#: ../modes.c:697
#, fuzzy, c-format
msgid "Response mode: Log%s%s"
msgstr "Modo de resposta : registra%s%s"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", notify"
msgstr ", avisa"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", respond"
msgstr ", responde"
-#: ../modes.c:724
+#: ../modes.c:728
#, c-format
msgid "Reading standard input\n"
msgstr "Lendo entrada padrão(stdin)\n"
-#: ../modes.c:742
+#: ../modes.c:744
#, c-format
msgid "Reading '%s'\n"
msgstr "Lendo '%s'\n"
-#: ../modes.c:808
+#: ../modes.c:810
#, fuzzy, c-format
msgid "Number of files: %d\n"
msgstr "Numero de tentativas registradas: %s\n"
-#: ../modes.c:809
+#: ../modes.c:811
#, fuzzy, c-format
msgid "Number of lines: %d\n"
msgstr "no. de linhas : %d\n"
-#: ../modes.c:814
+#: ../modes.c:816
#, c-format
msgid "First entry: %s\n"
msgstr "Primeiro registro: %s\n"
-#: ../modes.c:816
+#: ../modes.c:818
#, c-format
msgid "Last entry : %s\n"
msgstr "Ultimo registro : %s\n"
-#: ../modes.c:818
+#: ../modes.c:820
#, c-format
msgid "Difference : %s\n"
msgstr ""
-#: ../net.c:130 ../net.c:132
+#: ../net.c:106
#, c-format
msgid "Listening on %s port %i"
msgstr "Esperando conexões em %s porta %i"
-#: ../net.c:172
+#: ../net.c:109
+#, c-format
+msgid "Connections are only allowed from %s"
+msgstr ""
+
+#: ../net.c:149
msgid "decode_base64: input string incomplete"
msgstr "decode_base64: string de entrada incompleta"
-#: ../net.c:179
+#: ../net.c:156
#, c-format
msgid "decode_base64: illegal character '%c' in input string"
msgstr "decode_base64: caracter ilegal '%c' na string de entrada"
-#: ../net.c:214
+#: ../net.c:191
msgid "count"
msgstr ""
-#: ../net.c:215
+#: ../net.c:192
msgid "added"
msgstr ""
-#: ../net.c:217
+#: ../net.c:194
msgid "proto"
msgstr ""
-#: ../net.c:219
+#: ../net.c:196
#, fuzzy
msgid "bytes"
msgstr " (%d bytes)"
-#: ../net.c:220
+#: ../net.c:197
msgid "source"
msgstr ""
-#: ../net.c:222 ../net.c:231
+#: ../net.c:199 ../net.c:208
#, fuzzy
msgid "hostname"
msgstr "<td>maquina</td>"
-#: ../net.c:224 ../net.c:234
+#: ../net.c:201 ../net.c:211
#, fuzzy
msgid "port"
msgstr " porta %d"
-#: ../net.c:226 ../net.c:236
+#: ../net.c:203 ../net.c:213
#, fuzzy
msgid "service"
msgstr "<td>serviço</td>"
-#: ../net.c:229
+#: ../net.c:206
#, fuzzy
msgid "destination"
msgstr "<td>destino</td>"
-#: ../net.c:239
+#: ../net.c:216
msgid "opts"
msgstr ""
-#: ../net.c:240
+#: ../net.c:217
#, fuzzy
msgid "time remaining"
msgstr "<td>Tempo restante</td></tr>\n"
-#: ../net.c:241
+#: ../net.c:218
msgid "action"
msgstr ""
-#: ../net.c:293 ../net.c:295 ../net.c:360
+#: ../net.c:270 ../net.c:272 ../net.c:337
#, fuzzy
msgid "Information"
msgstr ""
@@ -682,167 +698,167 @@
"</div>\n"
"<h2>Informações Gerais</h2>\n"
-#: ../net.c:299 ../net.c:301 ../net.c:398
+#: ../net.c:276 ../net.c:278 ../net.c:375
msgid "Options"
msgstr ""
-#: ../net.c:305 ../net.c:307 ../net.c:426
+#: ../net.c:282 ../net.c:284 ../net.c:403
#, fuzzy
msgid "Packet cache"
msgstr "<h2>Cache de pacotes</h2>\n"
-#: ../net.c:311 ../net.c:313 ../net.c:495
+#: ../net.c:288 ../net.c:290 ../net.c:472
#, fuzzy
msgid "Host status"
msgstr "<h2>Situação da maquina</h2>\n"
-#: ../net.c:316
+#: ../net.c:293
msgid "Reload"
msgstr ""
-#: ../net.c:365
+#: ../net.c:342
msgid "Daemon start time"
msgstr ""
-#: ../net.c:368
+#: ../net.c:345
msgid "Current time"
msgstr ""
-#: ../net.c:371
+#: ../net.c:348
msgid "Running time"
msgstr ""
-#: ../net.c:373
+#: ../net.c:350
msgid "Log"
msgstr ""
-#: ../net.c:374
+#: ../net.c:351
#, fuzzy
msgid "Response mode"
msgstr "Modo de resposta : registra%s%s"
-#: ../net.c:376
+#: ../net.c:353
msgid "Lines seen"
msgstr ""
-#: ../net.c:377
+#: ../net.c:354
msgid "Hits"
msgstr ""
-#: ../net.c:378
+#: ../net.c:355
msgid "Old/excluded/malformed"
msgstr ""
-#: ../net.c:385
+#: ../net.c:362
#, fuzzy
msgid "Entries in packet cache"
msgstr "<h2>Cache de pacotes</h2>\n"
-#: ../net.c:392
+#: ../net.c:369
#, fuzzy
msgid "Entries in host status"
msgstr "<h2>Situação da maquina</h2>\n"
-#: ../net.c:400
+#: ../net.c:377
msgid "Parameter"
msgstr ""
-#: ../net.c:402
+#: ../net.c:379
msgid "Decrease"
msgstr ""
-#: ../net.c:404
+#: ../net.c:381
msgid "Current"
msgstr ""
-#: ../net.c:406
+#: ../net.c:383
msgid "Increase"
msgstr ""
-#: ../net.c:408
+#: ../net.c:385
#, fuzzy
msgid "Alert threshold"
msgstr "Limite de alerta em uma tentativa"
-#: ../net.c:410
+#: ../net.c:387
msgid "Discard timeout"
msgstr ""
-#: ../net.c:411
+#: ../net.c:388
msgid "Minimum count in packet cache"
msgstr ""
-#: ../net.c:413 ../net.c:415
+#: ../net.c:390 ../net.c:392
msgid "Top amount of entries in packet cache"
msgstr ""
-#: ../net.c:418 ../net.c:420
+#: ../net.c:395 ../net.c:397
msgid "Refresh time"
msgstr ""
-#: ../net.c:442 ../net.c:565
+#: ../net.c:419 ../net.c:528
msgid "%Y/%m/%d %H:%M:%S"
msgstr ""
-#: ../net.c:479 ../net.c:595
+#: ../net.c:456 ../net.c:558
msgid "drop"
msgstr ""
-#: ../net.c:481
+#: ../net.c:458
msgid "escalate"
msgstr ""
-#: ../net.c:527 ../net.c:546 ../net.c:552 ../net.c:558
+#: ../net.c:493 ../net.c:509 ../net.c:515 ../net.c:521
msgid "<td>any</td>"
msgstr "<td>qualquer</td>"
-#: ../net.c:540
+#: ../net.c:503
#, fuzzy
msgid "<td>(known host)</td>"
msgstr "<td>-</td><td>%s/%d (maquina/rede conhecida)</td>"
-#: ../net.c:542
+#: ../net.c:505
#, fuzzy
msgid "<td>(known net)</td>"
msgstr "<td>-</td><td>%s/%d (maquina/rede conhecida)</td>"
-#: ../net.c:654 ../net.c:657
-#, c-format
-msgid "Rejected connect from unallowed ip %s port %i"
+#: ../net.c:605
+#, fuzzy, c-format
+msgid "Rejected connection from unallowed IP address %s port %i"
msgstr "Conexão recusada de endedeço não permitido : ip %s porta %i"
-#: ../net.c:668 ../net.c:670
+#: ../net.c:614
#, c-format
msgid "Connect from %s port %i"
msgstr "Conexão de %s porta %i"
-#: ../net.c:734
+#: ../net.c:677
msgid "Authorization failed"
msgstr "Falha na autorização"
-#: ../net.c:737
+#: ../net.c:680
#, fuzzy
msgid "Authorization required"
msgstr "Falha na autorização"
-#: ../net.c:814
+#: ../net.c:757
msgid "Bad request"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "Redirect"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "You should be redirected to the <a href=\"/\">root directory</a>"
msgstr ""
-#: ../net.c:831
+#: ../net.c:774
#, c-format
msgid "Requested function: %s"
msgstr ""
-#: ../net.c:834
+#: ../net.c:777
msgid "Connection closed"
msgstr "Coneão fechada"
@@ -961,32 +977,42 @@
msgid "<th>opts</th>"
msgstr "<td>opções</td>"
-#: ../parser.c:263
+#: ../parser.c:270
#, c-format
msgid "Unknown parser: '%c'.\n"
msgstr "Tipo desconhecido: '%c'.\n"
-#: ../rcfile.c:57
+#: ../rcfile.c:58
#, c-format
msgid "Error in configuration file '%s' line %d: not a number\n"
msgstr ""
-#: ../rcfile.c:86
+#: ../rcfile.c:87
#, c-format
msgid "Error in configuration file '%s' line %d, assuming 'true'\n"
msgstr ""
-#: ../rcfile.c:278
+#: ../rcfile.c:281
#, fuzzy, c-format
msgid "Unrecognized option in configuration file '%s' line %d\n"
msgstr "Opção desconhecida no arquivo rc: %s"
-#: ../rcfile.c:299
+#: ../rcfile.c:332
+#, fuzzy, c-format
+msgid "Unrecognized entry in DNS cache file '%s' line %d\n"
+msgstr "Opção desconhecida no arquivo rc: %s"
+
+#: ../rcfile.c:349
#, c-format
msgid "%s is not a regular file, ignoring.\n"
msgstr "%s não é um arquivo padrão, ignorando.\n"
-#: ../rcfile.c:307
+#: ../rcfile.c:358
+#, fuzzy, c-format
+msgid "Opening DNS cache file '%s'\n"
+msgstr "Abrindo arquivo de entrada '%s'\n"
+
+#: ../rcfile.c:360
#, fuzzy, c-format
msgid "Opening configuration file '%s'\n"
msgstr "Abrindo arquivo de entrada '%s'\n"
@@ -996,51 +1022,64 @@
msgid "port mismatch: %d != %d\n"
msgstr "porta incompativel: %d != %d\n"
-#: ../resolve.c:81 ../resolve.c:151
-#, c-format
-msgid "Resolving %s from cache\n"
-msgstr "Resolvendo %s pelo cache\n"
+#: ../resolve.c:99 ../resolve.c:172
+msgid "[timeout]"
+msgstr ""
+
+#: ../resolve.c:101 ../resolve.c:174
+msgid "[server failure]"
+msgstr ""
-#: ../resolve.c:89 ../resolve.c:112
+#: ../resolve.c:111 ../resolve.c:213
#, c-format
msgid "Resolving %s\n"
msgstr "Resolvendo %s\n"
-#: ../resolve.c:95
-#, c-format
-msgid "Wrong host name size\n"
-msgstr "Tamanho do nome de maquina invalido\n"
-
-#: ../resolve.c:119
-#, c-format
-msgid "%s [forward lookup: %s]"
-msgstr "%s [resolução direta: %s]"
-
#: ../resolve.c:122
#, c-format
msgid "%s [forward lookup failed]"
msgstr "%s [resolução direta falhou]"
-#: ../resolve.c:163
+#: ../resolve.c:131
#, fuzzy, c-format
-msgid "Resolving %s from adns\n"
-msgstr "Resolvendo %s pelo cache\n"
+msgid " [v4 forward lookup: %s]"
+msgstr "%s [resolução direta: %s]"
-#: ../resolve.c:167
-#, fuzzy
-msgid "[inconsistent forward lookup]"
+#: ../resolve.c:138
+#, fuzzy, c-format
+msgid " [v6 forward lookup: %s]"
msgstr "%s [resolução direta: %s]"
-#: ../resolve.c:171
+#: ../resolve.c:180
#, c-format
msgid "[adns status %d]"
msgstr ""
-#: ../resolve.c:189
-msgid "DNS cache error"
+#: ../resolve.c:192
+msgid "[adns error]"
msgstr ""
-#: ../resolve.c:207
+#: ../resolve.c:206 ../resolve.c:354
+#, c-format
+msgid "Resolving %s from cache\n"
+msgstr "Resolvendo %s pelo cache\n"
+
+#: ../resolve.c:218
+#, fuzzy, c-format
+msgid "Resolving %s from adns\n"
+msgstr "Resolvendo %s pelo cache\n"
+
+#: ../resolve.c:240
+#, c-format
+msgid "IP address %s is already in DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:246
+#, c-format
+msgid "Adding IP address '%s' with host name '%s' to DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:283
#, c-format
msgid "Submitted %s to adns\n"
msgstr ""
@@ -1073,7 +1112,7 @@
msgid "Deleting host status entry (%s)"
msgstr "Removendo situação da maquina (%s)"
-#: ../response.c:276
+#: ../response.c:280
#, c-format
msgid "ALERT: %d attempts from %s"
msgstr "ALERTA: %d tentativas de %s"
@@ -1117,49 +1156,61 @@
" as linhas na configuração padrão e utilize parametros de linha de \n"
" comando.\n"
-#: ../utils.c:268
+#: ../utils.c:301
+#, c-format
+msgid "[error]"
+msgstr ""
+
+#: ../utils.c:317
#, c-format
msgid "IP address error: %s\n"
msgstr "Erro no endereço IP: %s\n"
-#: ../utils.c:294
+#: ../utils.c:342 ../utils.c:353
#, c-format
msgid "Error in CIDR format: %s\n"
msgstr "Erro no formato CIDR: %s\n"
-#: ../utils.c:312
+#: ../utils.c:403
#, c-format
msgid "(known host)\n"
msgstr "(maquina desconhecida)\n"
-#: ../utils.c:351
+#: ../utils.c:443
#, c-format
msgid "(excluded host)\n"
msgstr "(maquina escluida)\n"
-#: ../whois.c:220
-#, c-format
-msgid "Looking up whois info for %s from cache\n"
+#: ../whois.c:226
+#, fuzzy, c-format
+msgid "Looking up whois info for %s(/%d) from cache\n"
msgstr "Verificando informação whois para %s no cache\n"
-#: ../whois.c:227
+#: ../whois.c:233
#, c-format
msgid "Looking up whois info for %s\n"
msgstr "Verificando informação whios para %s\n"
-#: ../whois.c:248
+#: ../whois.c:254
#, c-format
msgid "lookup failed: %s\n"
msgstr "resolução falhou: %s\n"
-#: ../main.h:300
+#: ../main.h:314
msgid "fwlogwatch summary"
msgstr "Resumo do fwlogwatch"
-#: ../main.h:310
+#: ../main.h:324
msgid "fwlogwatch status"
msgstr "Situação do fwlogwatch"
+#~ msgid "Wrong host name size\n"
+#~ msgstr "Tamanho do nome de maquina invalido\n"
+
+#, fuzzy
+#~ msgid "[inconsistent forward lookup]"
+#~ msgstr "%s [resolução direta: %s]"
+
#, fuzzy
#~ msgid "Interactive report mode (summary mode extension):\n"
#~ msgstr "Modo de relatório interativo:\n"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/sv.po
^
|
@@ -2,10 +2,11 @@
msgstr ""
"Project-Id-Version: fwlogwatch 1.0.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-06 13:58+0200\n"
+"POT-Creation-Date: 2013-05-23 15:04+0200\n"
"PO-Revision-Date: 2005-12-06 16:06+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -32,8 +33,8 @@
msgid "Error in sort string, direction expected, ignoring.\n"
msgstr "Fel i sorteringssträng: \"%c\", riktning förväntad, felet ignoreras.\n"
-#: ../compare.c:382 ../compare.c:384 ../modes.c:196 ../modes.c:203
-#: ../modes.c:813 ../modes.c:815 ../output.c:106 ../output.c:113
+#: ../compare.c:382 ../compare.c:384 ../modes.c:193 ../modes.c:200
+#: ../modes.c:815 ../modes.c:817 ../output.c:106 ../output.c:113
#: ../output.c:193 ../output.c:202 ../output.c:380
msgid "%b %d %H:%M:%S"
msgstr "%b %d %H:%M:%S"
@@ -111,8 +112,8 @@
#: ../main.c:40
#, c-format
-msgid " -m <count> only show entries with at least so many incidents\n"
-msgstr " -m <antal> visa enbart poster med åtminstone ANTAL incidenter\n"
+msgid " -i <file> initialize DNS cache with entries from file\n"
+msgstr ""
#: ../main.c:41
#, c-format
@@ -121,708 +122,723 @@
#: ../main.c:42
#, c-format
+msgid " -m <count> only show entries with at least so many incidents\n"
+msgstr " -m <antal> visa enbart poster med åtminstone ANTAL incidenter\n"
+
+#: ../main.c:43
+#, c-format
msgid " -N resolve service names\n"
msgstr " -N slå upp namn på tjänster\n"
-#: ../main.c:43
+#: ../main.c:44
#, c-format
msgid " -n resolve host names\n"
msgstr " -n slå upp värdnamn\n"
-#: ../main.c:44
+#: ../main.c:45
#, c-format
msgid " -O <order> define the sort order (see the man page for details)\n"
msgstr ""
" -O <ordning> ange sorteringsordning (se manualsida för beskrivning)\n"
-#: ../main.c:45
+#: ../main.c:46
#, fuzzy, c-format
msgid ""
" -P <format> use parsers for specific formats (defaults to netfilter)\n"
msgstr " -P <format> använd enbart tolkar för specifika format\n"
-#: ../main.c:46
+#: ../main.c:47
#, c-format
msgid " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
msgstr ""
-#: ../main.c:47
+#: ../main.c:48
#, c-format
msgid ""
" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
msgstr ""
-#: ../main.c:48
+#: ../main.c:49
#, c-format
msgid " -p differentiate protocols\n"
msgstr " -p skilj mellan protokoll\n"
-#: ../main.c:49
+#: ../main.c:50
#, c-format
msgid " -s differentiate source ports\n"
msgstr " -s skilj på källportar\n"
-#: ../main.c:50
+#: ../main.c:51
#, c-format
msgid " -U <title> set report and status page title and email subject\n"
msgstr ""
" -U <titel> sätt titel för rapport- och statussida och ämne för e-post\n"
-#: ../main.c:51
+#: ../main.c:52
#, c-format
msgid " -v verbose, specify twice for more info\n"
msgstr " -v var informativ, ange två gånger för mer data\n"
-#: ../main.c:52
+#: ../main.c:53
#, c-format
msgid " -y differentiate TCP options\n"
msgstr " -y skilj på TCP-flaggor\n"
-#: ../main.c:55
+#: ../main.c:56
#, c-format
msgid "Log summary mode (default):\n"
msgstr "Läge för loggsammandrag (standard):\n"
-#: ../main.c:56
+#: ../main.c:57
#, c-format
msgid " -C <email> carbon copy recipients\n"
msgstr " -C <e-post> kännedomskopia av rapporten\n"
-#: ../main.c:57
+#: ../main.c:58
#, c-format
msgid " -e show end times\n"
msgstr " -e visa stopptider\n"
-#: ../main.c:58
+#: ../main.c:59
#, c-format
msgid " -F <email> report sender address (defaults to '%s')\n"
msgstr " -F <epost> avsändaradress för rapporten (förval \"%s\")\n"
-#: ../main.c:59
+#: ../main.c:60
#, c-format
msgid " -l <time> process recent events only (defaults to off)\n"
msgstr ""
" -l <tid> bearbeta endast senaste händelser (avstängd som standard)\n"
-#: ../main.c:60
+#: ../main.c:61
#, c-format
msgid " -o <file> specify output file\n"
msgstr " -o <fil> ange fil för utdata\n"
-#: ../main.c:61
+#: ../main.c:62
#, c-format
msgid " -S do not differentiate source IP addresses\n"
msgstr " -S skilj inte på källornas IP-adresser\n"
-#: ../main.c:62
+#: ../main.c:63
#, c-format
msgid " -T <email> send report by email to this address\n"
msgstr " -T <email> skicka rapport via e-post till denna address\n"
-#: ../main.c:63
+#: ../main.c:64
#, c-format
msgid " -t show start times\n"
msgstr " -t visa starttider\n"
-#: ../main.c:64
+#: ../main.c:65
#, c-format
msgid " -W activate whois lookups for source addresses\n"
msgstr " -W aktivera whois-uppslag för källadresser\n"
-#: ../main.c:65
+#: ../main.c:66
#, c-format
msgid " -w HTML output\n"
msgstr " -w utdata som HTML\n"
-#: ../main.c:66
+#: ../main.c:67
#, c-format
msgid " -z show time interval\n"
msgstr " -z visa tidsintervall\n"
-#: ../main.c:69
+#: ../main.c:70
#, c-format
msgid "Realtime response mode:\n"
msgstr "Läge för realtidssvar:\n"
-#: ../main.c:70
+#: ../main.c:71
#, c-format
msgid " -R realtime response as daemon (default action: log only)\n"
msgstr ""
" -R låt demonen åtgärda i realtid (förvald åtgärd: enbart "
"loggning)\n"
-#: ../main.c:71
+#: ../main.c:72
#, c-format
msgid " -a <count> alert threshold (defaults to %d entries)\n"
msgstr " -a <antal> tröskelvärde för larm (förval: %d poster)\n"
-#: ../main.c:72
+#: ../main.c:73
#, c-format
msgid " -l <time> forget events this old (defaults to %d hours)\n"
msgstr " -l <tid> glöm händelser äldre än (förval: %d timmar)\n"
-#: ../main.c:73
+#: ../main.c:74
#, c-format
msgid " -k <IP/net> add this IP address or net to the list of known hosts\n"
msgstr ""
" -k <IP/nät> lägg till IP-adress eller nät till listan över kända värdar\n"
-#: ../main.c:74
+#: ../main.c:75
#, c-format
msgid " -A invoke notification script if threshold is reached\n"
msgstr " -A anropa notifieringsskript om tröskelvärdet nås\n"
-#: ../main.c:75
+#: ../main.c:76
#, c-format
msgid " -B invoke response action script (e.g. block host)\n"
msgstr " -B anropa åtgärdsskriptet (exempelvis spärra värd)\n"
-#: ../main.c:76
+#: ../main.c:77
#, c-format
msgid " -X <port> activate internal status information web server\n"
msgstr ""
" -X <port> aktivera den interna webbservern för statusinformation\n"
-#: ../main.c:102
+#: ../main.c:103
msgid "You can contact the author at <bw@inside-security.de>."
msgstr "Upphovsmannen kan kontaktas på adressen <bw@inside-security.de>"
-#: ../main.c:104
+#: ../main.c:105
msgid "Compile-time options of this version:"
msgstr "Byggtidsflaggor för denna version:"
-#: ../main.c:105
+#: ../main.c:106
#, c-format
msgid "Short name limit "
msgstr "Gräns för kort namn "
-#: ../main.c:107 ../main.c:113 ../main.c:119 ../main.c:125 ../main.c:131
+#: ../main.c:108 ../main.c:114 ../main.c:120 ../main.c:126
msgid "enabled"
msgstr "aktiverad"
-#: ../main.c:109 ../main.c:115 ../main.c:121 ../main.c:127 ../main.c:133
+#: ../main.c:110 ../main.c:116 ../main.c:122 ../main.c:128
msgid "disabled"
msgstr "avstängd"
-#: ../main.c:111
+#: ../main.c:112
#, c-format
msgid "Zlib support "
msgstr "Stöd för Zlib"
-#: ../main.c:117
+#: ../main.c:118
#, c-format
msgid "Gettext (i18n) support "
msgstr "Stöd för gettext (i18n)"
-#: ../main.c:123
-#, c-format
-msgid "IPv6 support "
-msgstr "Stöd för IPv6"
-
-#: ../main.c:129
+#: ../main.c:124
#, fuzzy, c-format
msgid "GNU adns support "
msgstr "Stöd för IPv6"
-#: ../main.c:287
+#: ../main.c:282
#, c-format
msgid "Illegal inclusion/exclusion pos. 1 (expected [ie]): %s\n"
msgstr "Ogiltigt inkludering/exkludering pos. 1 (förväntade [ie]): %s\n"
-#: ../main.c:288 ../main.c:305 ../main.c:314 ../main.c:452
+#: ../main.c:283 ../main.c:300 ../main.c:309 ../main.c:453
#, c-format
msgid "Exiting\n"
msgstr "Avslutar\n"
-#: ../main.c:304
+#: ../main.c:299
#, c-format
msgid "Illegal inclusion/exclusion pos. 2 (expected [hpcb]): %s\n"
msgstr "Ogiltigt inkludering/exkludering pos. 2 (förväntade [hpcb]): %s\n"
-#: ../main.c:313
+#: ../main.c:308
#, c-format
msgid "Illegal inclusion/exclusion pos. 3 (expected [sd]): %s\n"
msgstr "Ogiltigt inkludering/exkludering pos. 3 (förväntade [sd]): %s\n"
-#: ../modes.c:109
+#: ../modes.c:108
#, c-format
msgid "Using stdin as input\n"
msgstr "Använder standard in för inmatning\n"
-#: ../modes.c:115
+#: ../modes.c:114
#, c-format
msgid "Opening input file '%s'\n"
msgstr "Öppnar inmatningsfil \"%s\"\n"
-#: ../modes.c:133
+#: ../modes.c:130
#, c-format
msgid "Processing\n"
msgstr "Bearbetar\n"
-#: ../modes.c:140
+#: ../modes.c:137
#, c-format
msgid "Unrecognized entries or tokens can be submitted at\n"
msgstr "Okända poster eller token kan skickas på\n"
-#: ../modes.c:149 ../modes.c:396 ../modes.c:782 ../rcfile.c:321
+#: ../modes.c:146 ../modes.c:393 ../modes.c:784 ../rcfile.c:379
#, c-format
msgid "Closing '%s'\n"
msgstr "Stänger \"%s\"\n"
-#: ../modes.c:178
+#: ../modes.c:175
#, c-format
msgid "Sorting data\n"
msgstr "Sorterar data\n"
-#: ../modes.c:215
+#: ../modes.c:212
#, c-format
msgid "Opening output file '%s'\n"
msgstr "Öppnar utdatafil \"%s\"\n"
-#: ../modes.c:226
+#: ../modes.c:223
#, c-format
msgid "Sending\n"
msgstr "Sänder\n"
-#: ../modes.c:249 ../net.c:364 ../net.c:367
+#: ../modes.c:246 ../net.c:341 ../net.c:344
msgid "%A %B %d %H:%M:%S %Z %Y"
msgstr "%A %B %d %H:%M:%S %Z %Y"
-#: ../modes.c:250
+#: ../modes.c:247
#, c-format
msgid "Generated %s by "
msgstr "Genererad %s av "
-#: ../modes.c:260
+#: ../modes.c:257
#, c-format
msgid "an unknown user.\n"
msgstr "en okänd användare.\n"
-#: ../modes.c:268
+#: ../modes.c:265
#, c-format
msgid "(and %d older than %d seconds) "
msgstr "(och %d äldre än %d sekunder) "
-#: ../modes.c:271
+#: ../modes.c:268
#, c-format
msgid "(and %d malformed) "
msgstr "(och %d felaktiga) "
-#: ../modes.c:274
+#: ../modes.c:271
#, c-format
msgid "of %d entries in the file \"%s\" are packet logs, "
msgstr "av %d posterna i filen \"%s\" är paketloggar, "
-#: ../modes.c:276
+#: ../modes.c:273
#, c-format
msgid "of %d entries in standard input are packet logs, "
msgstr "av %d poster i standard in är paketloggar, "
-#: ../modes.c:278
+#: ../modes.c:275
#, c-format
msgid "of %d entries in %d input files are packet logs, "
msgstr "av %d posterna i %d inmatningsfiler är paketloggar, "
-#: ../modes.c:282
+#: ../modes.c:279
#, c-format
msgid "one has unique characteristics.\n"
msgstr "en har unika egenskaper.\n"
-#: ../modes.c:284
+#: ../modes.c:281
#, c-format
msgid "%d have unique characteristics.\n"
msgstr "%d har unika egenskaper.\n"
-#: ../modes.c:292
+#: ../modes.c:289
#, c-format
msgid "One entry was excluded by configuration.\n"
msgstr "En post utelämnades av konfigurationen.\n"
-#: ../modes.c:294
+#: ../modes.c:291
#, c-format
msgid "%d entries were excluded by configuration.\n"
msgstr "%d poster utelämnades av konfigurationen.\n"
-#: ../modes.c:302
+#: ../modes.c:299
#, c-format
msgid "First packet log entry: %s, last: %s.\n"
msgstr "Den första posten i loggen: %s, sista: %s.\n"
-#: ../modes.c:304 ../modes.c:811
+#: ../modes.c:301 ../modes.c:813
#, c-format
msgid "No valid time entries found.\n"
msgstr "Inga giltiga tidsposter funna.\n"
-#: ../modes.c:311
+#: ../modes.c:308
#, c-format
msgid "All entries were logged by the same host: \"%s\".\n"
msgstr "Alla poster var loggade av samma värd: \"%s\".\n"
-#: ../modes.c:318
+#: ../modes.c:315
#, c-format
msgid "All entries are from the same chain: \"%s\".\n"
msgstr "Alla poster kom från samma kedja: \"%s\".\n"
-#: ../modes.c:325
+#: ../modes.c:322
#, c-format
msgid "All entries have the same target: \"%s\".\n"
msgstr "Alla poster har samma måladress: \"%s\".\n"
-#: ../modes.c:332
+#: ../modes.c:329
#, c-format
msgid "All entries are from the same interface: \"%s\".\n"
msgstr "Alla poster kommer från samma nätverksgränssnitt: \"%s\".\n"
-#: ../modes.c:339
+#: ../modes.c:336
#, c-format
msgid "Only entries with a count of at least %d are shown.\n"
msgstr "Bara poster med ett antal av minst %d visas.\n"
-#: ../modes.c:346
+#: ../modes.c:343
#, c-format
msgid "Only the top %d entries are shown.\n"
msgstr "Bara de översta %d posterna visas.\n"
-#: ../modes.c:357
+#: ../modes.c:354
#, fuzzy, c-format
msgid "Resolving\n"
msgstr "Slår upp %s\n"
-#: ../modes.c:416
+#: ../modes.c:413
#, c-format
msgid "Warning: pidfile exists, another fwlogwatch might be running.\n"
msgstr ""
"Varning: En pid-fil existerar redan, ytterligare en fwlogwatch kanske körs?\n"
-#: ../modes.c:430
+#: ../modes.c:427
#, c-format
msgid "SIGHUP caught, reread configuration file %s"
msgstr "SIGHUP fångad, konfigurationsfil %s läses om"
-#: ../modes.c:432
+#: ../modes.c:429
#, c-format
msgid "SIGHUP caught, unable to reread configuration file %s"
msgstr "SIGHUP fångad, konfigurationsfil %s kunde inte att läsas om"
-#: ../modes.c:455
+#: ../modes.c:433
+#, c-format
+msgid "Reread DNS cache file %s"
+msgstr ""
+
+#: ../modes.c:435
+#, fuzzy, c-format
+msgid "Unable to reread DNS cache file %s"
+msgstr "SIGHUP fångad, konfigurationsfil %s kunde inte att läsas om"
+
+#: ../modes.c:459
msgid "SIGUSR1 caught, reading input from stdin, no need to reopen log file"
msgstr ""
"SIGUSR1 fångad, läser indata från standard in, ingen idé att öppna loggfil "
"igen"
-#: ../modes.c:457
+#: ../modes.c:461
#, c-format
msgid "SIGUSR1 caught, reopening log file %s"
msgstr "SIGUSR1 fångad, loggfilen %s öppnas igen"
-#: ../modes.c:529
+#: ../modes.c:533
msgid "SIGTERM caught, cleaning up"
msgstr "SIGTERM påträffades, rensar upp"
-#: ../modes.c:611
+#: ../modes.c:615
#, c-format
msgid "Starting (pid %d)"
msgstr "Startar (pid %d)"
-#: ../modes.c:661
+#: ../modes.c:665
msgid "User to run as was not found"
msgstr "Användaren som ska köras som hittades inte"
-#: ../modes.c:676
+#: ../modes.c:680
#, c-format
msgid "Changed uid from %d to %d, gid from %d to %d"
msgstr "Ändrade uid från %d till %d, gid från %d till %d"
-#: ../modes.c:678
+#: ../modes.c:682
#, c-format
msgid "Running with uid %d, gid %d"
msgstr "Kör med uid %d, gid %d"
-#: ../modes.c:682
+#: ../modes.c:686
msgid "Alert threshold is one attempt"
msgstr "Tröskelvärde för <alert> är ett försök"
-#: ../modes.c:684
+#: ../modes.c:688
#, c-format
msgid "Alert threshold is %d attempts"
msgstr "Tröskelvärde för <alert> är %d försök"
-#: ../modes.c:688
+#: ../modes.c:692
#, c-format
msgid "Events older than %d second(s) are discarded"
msgstr "Poster äldre än %d sekund(er) sållas bort"
-#: ../modes.c:690
+#: ../modes.c:694
#, c-format
msgid "Events older than %d hour(s) are discarded"
msgstr "Poster äldre än %d timme/timmar sållas bort"
-#: ../modes.c:693
+#: ../modes.c:697
#, c-format
msgid "Response mode: Log%s%s"
msgstr "Svarsläge: Log%s%s"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", notify"
msgstr ", notifiera"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", respond"
msgstr ", svara"
-#: ../modes.c:724
+#: ../modes.c:728
#, c-format
msgid "Reading standard input\n"
msgstr "Läser från standard in\n"
-#: ../modes.c:742
+#: ../modes.c:744
#, c-format
msgid "Reading '%s'\n"
msgstr "Läser \"%s\"\n"
-#: ../modes.c:808
+#: ../modes.c:810
#, c-format
msgid "Number of files: %d\n"
msgstr "Antal filer: %d\n"
-#: ../modes.c:809
+#: ../modes.c:811
#, c-format
msgid "Number of lines: %d\n"
msgstr "Antal rader: %d\n"
-#: ../modes.c:814
+#: ../modes.c:816
#, c-format
msgid "First entry: %s\n"
msgstr "Första posten: %s\n"
-#: ../modes.c:816
+#: ../modes.c:818
#, c-format
msgid "Last entry : %s\n"
msgstr "Sista posten: %s\n"
-#: ../modes.c:818
+#: ../modes.c:820
#, c-format
msgid "Difference : %s\n"
msgstr "Skillnad : %s\n"
-#: ../net.c:130 ../net.c:132
+#: ../net.c:106
#, c-format
msgid "Listening on %s port %i"
msgstr "Lyssnar på %s port %i"
-#: ../net.c:172
+#: ../net.c:109
+#, c-format
+msgid "Connections are only allowed from %s"
+msgstr ""
+
+#: ../net.c:149
msgid "decode_base64: input string incomplete"
msgstr "decode_base64: okomplett indatasträng"
-#: ../net.c:179
+#: ../net.c:156
#, c-format
msgid "decode_base64: illegal character '%c' in input string"
msgstr "decode_base64: Otillåtet tecken \"%c\" i indatasträngen"
-#: ../net.c:214
+#: ../net.c:191
msgid "count"
msgstr "antal"
-#: ../net.c:215
+#: ../net.c:192
msgid "added"
msgstr "lagt till"
-#: ../net.c:217
+#: ../net.c:194
msgid "proto"
msgstr "proto"
-#: ../net.c:219
+#: ../net.c:196
msgid "bytes"
msgstr "byte"
-#: ../net.c:220
+#: ../net.c:197
msgid "source"
msgstr "källa"
-#: ../net.c:222 ../net.c:231
+#: ../net.c:199 ../net.c:208
msgid "hostname"
msgstr "värdnamn"
-#: ../net.c:224 ../net.c:234
+#: ../net.c:201 ../net.c:211
msgid "port"
msgstr "port"
-#: ../net.c:226 ../net.c:236
+#: ../net.c:203 ../net.c:213
msgid "service"
msgstr "tjänst"
-#: ../net.c:229
+#: ../net.c:206
msgid "destination"
msgstr "destination"
-#: ../net.c:239
+#: ../net.c:216
msgid "opts"
msgstr "flaggor"
-#: ../net.c:240
+#: ../net.c:217
msgid "time remaining"
msgstr "återstående tid"
-#: ../net.c:241
+#: ../net.c:218
msgid "action"
msgstr "åtgärd"
-#: ../net.c:293 ../net.c:295 ../net.c:360
+#: ../net.c:270 ../net.c:272 ../net.c:337
msgid "Information"
msgstr "Information"
-#: ../net.c:299 ../net.c:301 ../net.c:398
+#: ../net.c:276 ../net.c:278 ../net.c:375
msgid "Options"
msgstr "Inställningar"
-#: ../net.c:305 ../net.c:307 ../net.c:426
+#: ../net.c:282 ../net.c:284 ../net.c:403
msgid "Packet cache"
msgstr "Paketcache"
-#: ../net.c:311 ../net.c:313 ../net.c:495
+#: ../net.c:288 ../net.c:290 ../net.c:472
msgid "Host status"
msgstr "Värdstatus"
-#: ../net.c:316
+#: ../net.c:293
msgid "Reload"
msgstr "Läs om"
-#: ../net.c:365
+#: ../net.c:342
msgid "Daemon start time"
msgstr "Demonens starttid"
-#: ../net.c:368
+#: ../net.c:345
msgid "Current time"
msgstr "Nuvarande tid"
-#: ../net.c:371
+#: ../net.c:348
msgid "Running time"
msgstr "Körtid"
-#: ../net.c:373
+#: ../net.c:350
msgid "Log"
msgstr "Logg"
-#: ../net.c:374
+#: ../net.c:351
msgid "Response mode"
msgstr "Svarsläge"
-#: ../net.c:376
+#: ../net.c:353
msgid "Lines seen"
msgstr "Rader sedda"
-#: ../net.c:377
+#: ../net.c:354
msgid "Hits"
msgstr "Träffar"
-#: ../net.c:378
+#: ../net.c:355
msgid "Old/excluded/malformed"
msgstr "Gammal/utesluten/felaktig"
-#: ../net.c:385
+#: ../net.c:362
msgid "Entries in packet cache"
msgstr "Poster i paketcache"
-#: ../net.c:392
+#: ../net.c:369
msgid "Entries in host status"
msgstr "Post i värdstatus"
-#: ../net.c:400
+#: ../net.c:377
msgid "Parameter"
msgstr "Parameter"
-#: ../net.c:402
+#: ../net.c:379
msgid "Decrease"
msgstr "Minska"
-#: ../net.c:404
+#: ../net.c:381
msgid "Current"
msgstr "Nuvarande"
-#: ../net.c:406
+#: ../net.c:383
msgid "Increase"
msgstr "Öka"
-#: ../net.c:408
+#: ../net.c:385
msgid "Alert threshold"
msgstr "Tröskelvärde för larm"
-#: ../net.c:410
+#: ../net.c:387
msgid "Discard timeout"
msgstr "Kasta timeout"
-#: ../net.c:411
+#: ../net.c:388
msgid "Minimum count in packet cache"
msgstr "Minimum antal i paketcache"
-#: ../net.c:413 ../net.c:415
+#: ../net.c:390 ../net.c:392
msgid "Top amount of entries in packet cache"
msgstr "Max antal poster i paketcache"
-#: ../net.c:418 ../net.c:420
+#: ../net.c:395 ../net.c:397
msgid "Refresh time"
msgstr "Uppdateringsfrekvens"
-#: ../net.c:442 ../net.c:565
+#: ../net.c:419 ../net.c:528
msgid "%Y/%m/%d %H:%M:%S"
msgstr "%Y/%m/%d %H:%M:%S"
-#: ../net.c:479 ../net.c:595
+#: ../net.c:456 ../net.c:558
msgid "drop"
msgstr ""
-#: ../net.c:481
+#: ../net.c:458
msgid "escalate"
msgstr ""
-#: ../net.c:527 ../net.c:546 ../net.c:552 ../net.c:558
+#: ../net.c:493 ../net.c:509 ../net.c:515 ../net.c:521
msgid "<td>any</td>"
msgstr "<td>någon</td>"
-#: ../net.c:540
+#: ../net.c:503
msgid "<td>(known host)</td>"
msgstr "<td>(kända värdar)</td>"
-#: ../net.c:542
+#: ../net.c:505
msgid "<td>(known net)</td>"
msgstr "<td>(kända nät)</td>"
-#: ../net.c:654 ../net.c:657
-#, c-format
-msgid "Rejected connect from unallowed ip %s port %i"
+#: ../net.c:605
+#, fuzzy, c-format
+msgid "Rejected connection from unallowed IP address %s port %i"
msgstr "Avvisad anslutning från otillåten IP-adress %s port %i"
-#: ../net.c:668 ../net.c:670
+#: ../net.c:614
#, c-format
msgid "Connect from %s port %i"
msgstr "Anslutning från %s port %i"
-#: ../net.c:734
+#: ../net.c:677
msgid "Authorization failed"
msgstr "Auktorisation misslyckades"
-#: ../net.c:737
+#: ../net.c:680
msgid "Authorization required"
msgstr "Auktorisation krävs"
-#: ../net.c:814
+#: ../net.c:757
msgid "Bad request"
msgstr "Felaktig begäran"
-#: ../net.c:819
+#: ../net.c:762
msgid "Redirect"
msgstr "Dirigera om"
-#: ../net.c:819
+#: ../net.c:762
msgid "You should be redirected to the <a href=\"/\">root directory</a>"
msgstr "Du bör bli omdirigerad till <a href=\"/\">rotkatalogen</a>"
-#: ../net.c:831
+#: ../net.c:774
#, c-format
msgid "Requested function: %s"
msgstr "Begärd funktion: %s"
-#: ../net.c:834
+#: ../net.c:777
msgid "Connection closed"
msgstr "Anslutning stängd"
@@ -941,32 +957,42 @@
msgid "<th>opts</th>"
msgstr "<th>flaggor</th>"
-#: ../parser.c:263
+#: ../parser.c:270
#, c-format
msgid "Unknown parser: '%c'.\n"
msgstr "Okänd tolk: \"%c\".\n"
-#: ../rcfile.c:57
+#: ../rcfile.c:58
#, c-format
msgid "Error in configuration file '%s' line %d: not a number\n"
msgstr "Fel i konfigurationsfil \"%s\" rad %d: inte ett nummer\n"
-#: ../rcfile.c:86
+#: ../rcfile.c:87
#, c-format
msgid "Error in configuration file '%s' line %d, assuming 'true'\n"
msgstr "Fel i konfigurationsfil \"%s\" rad %d, antar \"true\"\n"
-#: ../rcfile.c:278
+#: ../rcfile.c:281
#, c-format
msgid "Unrecognized option in configuration file '%s' line %d\n"
msgstr "Okänd inställning i konfigurationsfil \"%s\" line %d\n"
-#: ../rcfile.c:299
+#: ../rcfile.c:332
+#, fuzzy, c-format
+msgid "Unrecognized entry in DNS cache file '%s' line %d\n"
+msgstr "Okänd inställning i konfigurationsfil \"%s\" line %d\n"
+
+#: ../rcfile.c:349
#, c-format
msgid "%s is not a regular file, ignoring.\n"
msgstr "%s är inte en vanlig fil, ignoreras.\n"
-#: ../rcfile.c:307
+#: ../rcfile.c:358
+#, fuzzy, c-format
+msgid "Opening DNS cache file '%s'\n"
+msgstr "Öppnar inmatningsfil \"%s\"\n"
+
+#: ../rcfile.c:360
#, c-format
msgid "Opening configuration file '%s'\n"
msgstr "Öppnar konfigurationsfil '%s'\n"
@@ -976,51 +1002,64 @@
msgid "port mismatch: %d != %d\n"
msgstr "Port stämmer inte: %d != %d\n"
-#: ../resolve.c:81 ../resolve.c:151
-#, c-format
-msgid "Resolving %s from cache\n"
-msgstr "Slår upp %s från cache\n"
+#: ../resolve.c:99 ../resolve.c:172
+msgid "[timeout]"
+msgstr ""
-#: ../resolve.c:89 ../resolve.c:112
+#: ../resolve.c:101 ../resolve.c:174
+msgid "[server failure]"
+msgstr ""
+
+#: ../resolve.c:111 ../resolve.c:213
#, c-format
msgid "Resolving %s\n"
msgstr "Slår upp %s\n"
-#: ../resolve.c:95
-#, c-format
-msgid "Wrong host name size\n"
-msgstr "Felaktig storlek för värdnamn\n"
-
-#: ../resolve.c:119
-#, c-format
-msgid "%s [forward lookup: %s]"
-msgstr "%s [uppslag: %s]"
-
#: ../resolve.c:122
#, c-format
msgid "%s [forward lookup failed]"
msgstr "%s [uppslag misslyckades]"
-#: ../resolve.c:163
+#: ../resolve.c:131
#, fuzzy, c-format
-msgid "Resolving %s from adns\n"
-msgstr "Slår upp %s från cache\n"
+msgid " [v4 forward lookup: %s]"
+msgstr "%s [uppslag: %s]"
-#: ../resolve.c:167
-#, fuzzy
-msgid "[inconsistent forward lookup]"
+#: ../resolve.c:138
+#, fuzzy, c-format
+msgid " [v6 forward lookup: %s]"
msgstr "%s [uppslag: %s]"
-#: ../resolve.c:171
+#: ../resolve.c:180
#, c-format
msgid "[adns status %d]"
msgstr ""
-#: ../resolve.c:189
-msgid "DNS cache error"
+#: ../resolve.c:192
+msgid "[adns error]"
msgstr ""
-#: ../resolve.c:207
+#: ../resolve.c:206 ../resolve.c:354
+#, c-format
+msgid "Resolving %s from cache\n"
+msgstr "Slår upp %s från cache\n"
+
+#: ../resolve.c:218
+#, fuzzy, c-format
+msgid "Resolving %s from adns\n"
+msgstr "Slår upp %s från cache\n"
+
+#: ../resolve.c:240
+#, c-format
+msgid "IP address %s is already in DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:246
+#, c-format
+msgid "Adding IP address '%s' with host name '%s' to DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:283
#, c-format
msgid "Submitted %s to adns\n"
msgstr ""
@@ -1053,7 +1092,7 @@
msgid "Deleting host status entry (%s)"
msgstr "Raderar statuspost för värd (%s)"
-#: ../response.c:276
+#: ../response.c:280
#, c-format
msgid "ALERT: %d attempts from %s"
msgstr "LARM: %d angreppsförsök från %s"
@@ -1096,49 +1135,64 @@
" Använd en separat konfigurationsfil för varje läge eller kommentera ut\n"
" delar av standardkonfigurationen och använd parametrar på kommandoraden.\n"
-#: ../utils.c:268
+#: ../utils.c:301
+#, c-format
+msgid "[error]"
+msgstr ""
+
+#: ../utils.c:317
#, c-format
msgid "IP address error: %s\n"
msgstr "IP-adressfel: %s\n"
-#: ../utils.c:294
+#: ../utils.c:342 ../utils.c:353
#, c-format
msgid "Error in CIDR format: %s\n"
msgstr "Fel i CIDR-format: %s\n"
-#: ../utils.c:312
+#: ../utils.c:403
#, c-format
msgid "(known host)\n"
msgstr "(känd värd)\n"
-#: ../utils.c:351
+#: ../utils.c:443
#, c-format
msgid "(excluded host)\n"
msgstr "(utesluten värd)\n"
-#: ../whois.c:220
-#, c-format
-msgid "Looking up whois info for %s from cache\n"
+#: ../whois.c:226
+#, fuzzy, c-format
+msgid "Looking up whois info for %s(/%d) from cache\n"
msgstr "Slår upp whois-information för %s från cache\n"
-#: ../whois.c:227
+#: ../whois.c:233
#, c-format
msgid "Looking up whois info for %s\n"
msgstr "Slår upp whois-information för %s\n"
-#: ../whois.c:248
+#: ../whois.c:254
#, c-format
msgid "lookup failed: %s\n"
msgstr "Uppslag misslyckades: %s\n"
-#: ../main.h:300
+#: ../main.h:314
msgid "fwlogwatch summary"
msgstr "Sammandrag från fwlogwatch"
-#: ../main.h:310
+#: ../main.h:324
msgid "fwlogwatch status"
msgstr "Status för fwlogwatch"
+#~ msgid "IPv6 support "
+#~ msgstr "Stöd för IPv6"
+
+#~ msgid "Wrong host name size\n"
+#~ msgstr "Felaktig storlek för värdnamn\n"
+
+#, fuzzy
+#~ msgid "[inconsistent forward lookup]"
+#~ msgstr "%s [uppslag: %s]"
+
#~ msgid "Interactive report mode (summary mode extension):\n"
#~ msgstr "Interaktivt rapporteringsläge (utökning för kortfattat läge):\n"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/zh_CN.po
^
|
@@ -2,10 +2,11 @@
msgstr ""
"Project-Id-Version: fwlogwatch 0.5.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-06 13:58+0200\n"
+"POT-Creation-Date: 2013-05-23 15:04+0200\n"
"PO-Revision-Date: 2002-02-05 14:20+0100\n"
"Last-Translator: Xiaojun Yang\n"
"Language-Team: -\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -30,8 +31,8 @@
msgid "Error in sort string, direction expected, ignoring.\n"
msgstr "ÅÅÐò´íÎó: '%c', ÐèÒª·¶Î§,ºöÂÔ\n"
-#: ../compare.c:382 ../compare.c:384 ../modes.c:196 ../modes.c:203
-#: ../modes.c:813 ../modes.c:815 ../output.c:106 ../output.c:113
+#: ../compare.c:382 ../compare.c:384 ../modes.c:193 ../modes.c:200
+#: ../modes.c:815 ../modes.c:817 ../output.c:106 ../output.c:113
#: ../output.c:193 ../output.c:202 ../output.c:380
msgid "%b %d %H:%M:%S"
msgstr ""
@@ -107,9 +108,9 @@
msgstr ""
#: ../main.c:40
-#, fuzzy, c-format
-msgid " -m <count> only show entries with at least so many incidents\n"
-msgstr " -m <ÊýÁ¿> \tÖ»ÏÔʾÖÁÉÙÓÐÕâô¶àÊýÁ¿µÄ¼Ç¼\n"
+#, c-format
+msgid " -i <file> initialize DNS cache with entries from file\n"
+msgstr ""
#: ../main.c:41
#, c-format
@@ -118,550 +119,565 @@
#: ../main.c:42
#, fuzzy, c-format
+msgid " -m <count> only show entries with at least so many incidents\n"
+msgstr " -m <ÊýÁ¿> \tÖ»ÏÔʾÖÁÉÙÓÐÕâô¶àÊýÁ¿µÄ¼Ç¼\n"
+
+#: ../main.c:43
+#, fuzzy, c-format
msgid " -N resolve service names\n"
msgstr " -N \t½âÎöÓòÃû\n"
-#: ../main.c:43
+#: ../main.c:44
#, fuzzy, c-format
msgid " -n resolve host names\n"
msgstr " -n \t½âÎöÓòÃû\n"
-#: ../main.c:44
+#: ../main.c:45
#, fuzzy, c-format
msgid " -O <order> define the sort order (see the man page for details)\n"
msgstr " -O <ÅÅÐò·½·¨> \t¶ÔÊä³ö½øÐÐÅÅÐò (¾ßÌå²Î¼ûÏàÓ¦Îĵµ\n"
-#: ../main.c:45
+#: ../main.c:46
#, fuzzy, c-format
msgid ""
" -P <format> use parsers for specific formats (defaults to netfilter)\n"
msgstr " -P <¸ñʽ> \tֻʹÓöÔÓÚÌØÊâ¸ñʽµÄ·ÖÎöÆ÷\n"
-#: ../main.c:46
+#: ../main.c:47
#, c-format
msgid " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
msgstr ""
-#: ../main.c:47
+#: ../main.c:48
#, c-format
msgid ""
" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
msgstr ""
-#: ../main.c:48
+#: ../main.c:49
#, fuzzy, c-format
msgid " -p differentiate protocols\n"
msgstr " -p \tÇø·Ö´«ÊäÐÒé\n"
-#: ../main.c:49
+#: ../main.c:50
#, fuzzy, c-format
msgid " -s differentiate source ports\n"
msgstr " -s \tÇø·ÖÔ´¶Ë¿Ú\n"
-#: ../main.c:50
+#: ../main.c:51
#, c-format
msgid " -U <title> set report and status page title and email subject\n"
msgstr ""
-#: ../main.c:51
+#: ../main.c:52
#, fuzzy, c-format
msgid " -v verbose, specify twice for more info\n"
msgstr " -v \t´¦ÀíʱÏÔʾÐÅÏ¢,ʹÓà -vv µÃµ½¸ü¶àÐÅÏ¢\n"
-#: ../main.c:52
+#: ../main.c:53
#, fuzzy, c-format
msgid " -y differentiate TCP options\n"
msgstr " -y \tÇø·ÖTCPÑ¡Ïî\n"
-#: ../main.c:55
+#: ../main.c:56
#, c-format
msgid "Log summary mode (default):\n"
msgstr "µÇ½ժҪģʽ (ȱʡ):\n"
-#: ../main.c:56
+#: ../main.c:57
#, fuzzy, c-format
msgid " -C <email> carbon copy recipients\n"
msgstr " -C <email> \tת·¢µØÖ·\n"
-#: ../main.c:57
+#: ../main.c:58
#, fuzzy, c-format
msgid " -e show end times\n"
msgstr " -e \tÏÔʾ½áÊøʱ¼ä\n"
-#: ../main.c:58
+#: ../main.c:59
#, fuzzy, c-format
msgid " -F <email> report sender address (defaults to '%s')\n"
msgstr " -F <email> \t·¢ÐÅÈ˵ØÖ·\n"
-#: ../main.c:59
+#: ../main.c:60
#, fuzzy, c-format
msgid " -l <time> process recent events only (defaults to off)\n"
msgstr " -l <ʱ¼ä> \tÖ»´¦Àíµ±Ç°Ê¼þ (ȱʡΪ¹Ø±Õ)\n"
-#: ../main.c:60
+#: ../main.c:61
#, fuzzy, c-format
msgid " -o <file> specify output file\n"
msgstr " -o <Îļþ> \tÖ¸¶¨Êä³öÎļþ\n"
-#: ../main.c:61
+#: ../main.c:62
#, fuzzy, c-format
msgid " -S do not differentiate source IP addresses\n"
msgstr " -S \t²»Çø·ÖÔ´IPµØÖ·\n"
-#: ../main.c:62
+#: ../main.c:63
#, c-format
msgid " -T <email> send report by email to this address\n"
msgstr ""
-#: ../main.c:63
+#: ../main.c:64
#, fuzzy, c-format
msgid " -t show start times\n"
msgstr " -t \tÏÔʾ¿ªÊ¼Ê±¼ä\n"
-#: ../main.c:64
+#: ../main.c:65
#, fuzzy, c-format
msgid " -W activate whois lookups for source addresses\n"
msgstr " -W \tÆô¶¯¶ÔÔ´IPµØÖ·µÄwhois²éѯ\n"
-#: ../main.c:65
+#: ../main.c:66
#, fuzzy, c-format
msgid " -w HTML output\n"
msgstr " -w \tÒÔHTML¸ñʽÊä³ö\n"
-#: ../main.c:66
+#: ../main.c:67
#, fuzzy, c-format
msgid " -z show time interval\n"
msgstr " -z \tÏÔʾʱ¼ä¼ä¸ô\n"
-#: ../main.c:69
+#: ../main.c:70
#, c-format
msgid "Realtime response mode:\n"
msgstr "ʵʱ»ØӦģʽ:\n"
-#: ../main.c:70
+#: ../main.c:71
#, fuzzy, c-format
msgid " -R realtime response as daemon (default action: log only)\n"
msgstr "\t-R \tʵʱ»ØÓ¦×÷Ϊ´«Êä´úÀí³ÌÐò (ȱʡ: Ö»ÓÐÔËÐмǼ)\n"
-#: ../main.c:71
+#: ../main.c:72
#, fuzzy, c-format
msgid " -a <count> alert threshold (defaults to %d entries)\n"
msgstr " -a <ÊýÁ¿> \t¾¯¸æÁ÷ (ȱʡ %d ¼Ç¼)\n"
-#: ../main.c:72
+#: ../main.c:73
#, fuzzy, c-format
msgid " -l <time> forget events this old (defaults to %d hours)\n"
msgstr " -l <ʱ¼ä> \tºöÂÔ´Ëʱ¼äÇ°¾Éʼþ (ȱʡ: %dСʱ)\n"
-#: ../main.c:73
+#: ../main.c:74
#, fuzzy, c-format
msgid " -k <IP/net> add this IP address or net to the list of known hosts\n"
msgstr " -k <IP/ÍøÂç> \t½«´ËIPµØÖ·¼ÓÈëµ½ÒÑÖªÖ÷»úÁбíÖÐ\n"
-#: ../main.c:74
+#: ../main.c:75
#, fuzzy, c-format
msgid " -A invoke notification script if threshold is reached\n"
msgstr " -A \tÈç¹ûÓÐÁ÷½øÈëÆô¶¯Í¨ÖªÎı¾\n"
-#: ../main.c:75
+#: ../main.c:76
#, fuzzy, c-format
msgid " -B invoke response action script (e.g. block host)\n"
msgstr " -B \tÆô¶¯»ØÓ¦Îı¾ (±ÈÈç ÇжÏÖ÷»úÓëÍⲿÁªÏµ)\n"
-#: ../main.c:76
+#: ../main.c:77
#, fuzzy, c-format
msgid " -X <port> activate internal status information web server\n"
msgstr " -X \tÆô¶¯ÄÚ²¿×´Ì¬ÐÅÏ¢web·þÎñÆ÷\n"
-#: ../main.c:102
+#: ../main.c:103
#, fuzzy
msgid "You can contact the author at <bw@inside-security.de>."
msgstr "ÇëʹÓÃÒÔϵØÖ·Óë×÷ÕßÁªÏµÊµ¼Ê<bw@inside-security.de>."
-#: ../main.c:104
+#: ../main.c:105
msgid "Compile-time options of this version:"
msgstr ""
-#: ../main.c:105
+#: ../main.c:106
#, c-format
msgid "Short name limit "
msgstr ""
-#: ../main.c:107 ../main.c:113 ../main.c:119 ../main.c:125 ../main.c:131
+#: ../main.c:108 ../main.c:114 ../main.c:120 ../main.c:126
msgid "enabled"
msgstr ""
-#: ../main.c:109 ../main.c:115 ../main.c:121 ../main.c:127 ../main.c:133
+#: ../main.c:110 ../main.c:116 ../main.c:122 ../main.c:128
msgid "disabled"
msgstr ""
-#: ../main.c:111
+#: ../main.c:112
#, c-format
msgid "Zlib support "
msgstr ""
-#: ../main.c:117
+#: ../main.c:118
#, c-format
msgid "Gettext (i18n) support "
msgstr ""
-#: ../main.c:123
-#, c-format
-msgid "IPv6 support "
-msgstr ""
-
-#: ../main.c:129
+#: ../main.c:124
#, c-format
msgid "GNU adns support "
msgstr ""
-#: ../main.c:287
+#: ../main.c:282
#, c-format
msgid "Illegal inclusion/exclusion pos. 1 (expected [ie]): %s\n"
msgstr ""
-#: ../main.c:288 ../main.c:305 ../main.c:314 ../main.c:452
+#: ../main.c:283 ../main.c:300 ../main.c:309 ../main.c:453
#, c-format
msgid "Exiting\n"
msgstr "Í˳ö\n"
-#: ../main.c:304
+#: ../main.c:299
#, c-format
msgid "Illegal inclusion/exclusion pos. 2 (expected [hpcb]): %s\n"
msgstr ""
-#: ../main.c:313
+#: ../main.c:308
#, c-format
msgid "Illegal inclusion/exclusion pos. 3 (expected [sd]): %s\n"
msgstr ""
-#: ../modes.c:109
+#: ../modes.c:108
#, c-format
msgid "Using stdin as input\n"
msgstr "ʹÓñê×¼ÊäÈë\n"
-#: ../modes.c:115
+#: ../modes.c:114
#, c-format
msgid "Opening input file '%s'\n"
msgstr "´ò¿ªÊäÈëÎļþ '%s'\n"
-#: ../modes.c:133
+#: ../modes.c:130
#, c-format
msgid "Processing\n"
msgstr "´¦Àí\n"
-#: ../modes.c:140
+#: ../modes.c:137
#, c-format
msgid "Unrecognized entries or tokens can be submitted at\n"
msgstr ""
-#: ../modes.c:149 ../modes.c:396 ../modes.c:782 ../rcfile.c:321
+#: ../modes.c:146 ../modes.c:393 ../modes.c:784 ../rcfile.c:379
#, c-format
msgid "Closing '%s'\n"
msgstr "¹Ø±Õ '&s'\n"
-#: ../modes.c:178
+#: ../modes.c:175
#, c-format
msgid "Sorting data\n"
msgstr "Êý¾ÝÅÅÐò\n"
-#: ../modes.c:215
+#: ../modes.c:212
#, c-format
msgid "Opening output file '%s'\n"
msgstr "´ò¿ªÊä³öÎļþ '%s'\n"
-#: ../modes.c:226
+#: ../modes.c:223
#, fuzzy, c-format
msgid "Sending\n"
msgstr "·¢ËÍ...\n"
-#: ../modes.c:249 ../net.c:364 ../net.c:367
+#: ../modes.c:246 ../net.c:341 ../net.c:344
msgid "%A %B %d %H:%M:%S %Z %Y"
msgstr ""
-#: ../modes.c:250
+#: ../modes.c:247
#, c-format
msgid "Generated %s by "
msgstr "Éú³É %s ÓÉ"
-#: ../modes.c:260
+#: ../modes.c:257
#, c-format
msgid "an unknown user.\n"
msgstr "²»Ã÷ʹÓÃÕß\n"
-#: ../modes.c:268
+#: ../modes.c:265
#, c-format
msgid "(and %d older than %d seconds) "
msgstr "(²¢ÇÒ &d ±È %d ÀÏ) "
-#: ../modes.c:271
+#: ../modes.c:268
#, c-format
msgid "(and %d malformed) "
msgstr "(²¢ÇÒ %d ÓдíÎó)"
-#: ../modes.c:274
+#: ../modes.c:271
#, fuzzy, c-format
msgid "of %d entries in the file \"%s\" are packet logs, "
msgstr "ÎļþÖÐ%dµÄ¼Ç¼"
-#: ../modes.c:276
+#: ../modes.c:273
#, c-format
msgid "of %d entries in standard input are packet logs, "
msgstr ""
-#: ../modes.c:278
+#: ../modes.c:275
#, fuzzy, c-format
msgid "of %d entries in %d input files are packet logs, "
msgstr "ÎļþÖÐ%dµÄ¼Ç¼"
-#: ../modes.c:282
+#: ../modes.c:279
#, c-format
msgid "one has unique characteristics.\n"
msgstr "Ò»¸öÓÐÌØÊâÐÎʽ\n"
-#: ../modes.c:284
+#: ../modes.c:281
#, c-format
msgid "%d have unique characteristics.\n"
msgstr "%dÓÐÌØÊâÐÎʽ\n"
-#: ../modes.c:292
+#: ../modes.c:289
#, c-format
msgid "One entry was excluded by configuration.\n"
msgstr "Ò»Ìõ¼Ç¼ÔÚÅäÖÃʱ±»É¾³ý\n"
-#: ../modes.c:294
+#: ../modes.c:291
#, c-format
msgid "%d entries were excluded by configuration.\n"
msgstr "%d¼Ç¼ÔÚÅäÖÃʱ±»É¾³ý\n"
-#: ../modes.c:302
+#: ../modes.c:299
#, c-format
msgid "First packet log entry: %s, last: %s.\n"
msgstr "µÚÒ»ÌõÊý¾Ý°üµÇ½¼Ç¼: %s, ×îºóÒ»Ìõ: %s.\n"
-#: ../modes.c:304 ../modes.c:811
+#: ../modes.c:301 ../modes.c:813
#, c-format
msgid "No valid time entries found.\n"
msgstr "ûÕÒµ½ÓÐЧʱ¼ä¼Ç¼\n"
-#: ../modes.c:311
+#: ../modes.c:308
#, c-format
msgid "All entries were logged by the same host: \"%s\".\n"
msgstr "ËùÓеļǼ¶¼ÊÇ´Óͬһ¸öÖ÷»úµÇ½µÄ: \"%s\".\n"
-#: ../modes.c:318
+#: ../modes.c:315
#, c-format
msgid "All entries are from the same chain: \"%s\".\n"
msgstr "ËùÓеļǼ¶¼À´×Ôͬһ¸öÁ´: \"%s\".\n"
-#: ../modes.c:325
+#: ../modes.c:322
#, c-format
msgid "All entries have the same target: \"%s\".\n"
msgstr "ËùÓеļǼ¶¼ÓÐͬÑùµÄÄ¿±ê: \"%s\".\n"
-#: ../modes.c:332
+#: ../modes.c:329
#, c-format
msgid "All entries are from the same interface: \"%s\".\n"
msgstr "ËùÓеļǼ¶¼À´×Ôͬһ¸ö½çÃæ: \"%s\".\n"
-#: ../modes.c:339
+#: ../modes.c:336
#, fuzzy, c-format
msgid "Only entries with a count of at least %d are shown.\n"
msgstr "Ö»ÏÔʾ´óÓÚ%dµÄ¼Ç¼.\n"
-#: ../modes.c:346
+#: ../modes.c:343
#, fuzzy, c-format
msgid "Only the top %d entries are shown.\n"
msgstr "Ö»ÏÔʾ´óÓÚ%dµÄ¼Ç¼.\n"
-#: ../modes.c:357
+#: ../modes.c:354
#, fuzzy, c-format
msgid "Resolving\n"
msgstr "½âÎö %s\n"
-#: ../modes.c:416
+#: ../modes.c:413
#, c-format
msgid "Warning: pidfile exists, another fwlogwatch might be running.\n"
msgstr "¾¯¸æ: ´æÔÚpidÎļþ,¿ÉÄÜÁíÒ»¸öfwlogwatchÔÚÔËÐÐ.\n"
-#: ../modes.c:430
+#: ../modes.c:427
#, fuzzy, c-format
msgid "SIGHUP caught, reread configuration file %s"
msgstr "²¶×½µ½SIGHUP, ÖØдò¿ªlogÎļþ"
-#: ../modes.c:432
+#: ../modes.c:429
#, fuzzy, c-format
msgid "SIGHUP caught, unable to reread configuration file %s"
msgstr "²¶×½µ½SIGHUP, ÖØдò¿ªlogÎļþ"
-#: ../modes.c:455
+#: ../modes.c:433
+#, c-format
+msgid "Reread DNS cache file %s"
+msgstr ""
+
+#: ../modes.c:435
+#, fuzzy, c-format
+msgid "Unable to reread DNS cache file %s"
+msgstr "²¶×½µ½SIGHUP, ÖØдò¿ªlogÎļþ"
+
+#: ../modes.c:459
msgid "SIGUSR1 caught, reading input from stdin, no need to reopen log file"
msgstr ""
-#: ../modes.c:457
+#: ../modes.c:461
#, fuzzy, c-format
msgid "SIGUSR1 caught, reopening log file %s"
msgstr "²¶×½µ½SIGHUP, ÖØдò¿ªlogÎļþ"
-#: ../modes.c:529
+#: ../modes.c:533
msgid "SIGTERM caught, cleaning up"
msgstr "²¶×½µ½SIGTERM, Çå³ýÄÚ´æ"
-#: ../modes.c:611
+#: ../modes.c:615
#, c-format
msgid "Starting (pid %d)"
msgstr "¿ªÊ¼ (pid %d)"
-#: ../modes.c:661
+#: ../modes.c:665
msgid "User to run as was not found"
msgstr ""
-#: ../modes.c:676
+#: ../modes.c:680
#, c-format
msgid "Changed uid from %d to %d, gid from %d to %d"
msgstr ""
-#: ../modes.c:678
+#: ../modes.c:682
#, c-format
msgid "Running with uid %d, gid %d"
msgstr ""
-#: ../modes.c:682
+#: ../modes.c:686
msgid "Alert threshold is one attempt"
msgstr "¾¯¸æthresholdÊÇÒ»´Î³¢ÊÔ"
-#: ../modes.c:684
+#: ../modes.c:688
#, c-format
msgid "Alert threshold is %d attempts"
msgstr "¾¯¸æthresholdÊÇ%d´Î³¢ÊÔ"
-#: ../modes.c:688
+#: ../modes.c:692
#, c-format
msgid "Events older than %d second(s) are discarded"
msgstr "ÔÚ%dÃë֮ǰµÄʼþ½«²»ÊÜÀí"
-#: ../modes.c:690
+#: ../modes.c:694
#, c-format
msgid "Events older than %d hour(s) are discarded"
msgstr "ÔÚ%dСʱ֮ǰµÄʼþ½«²»ÊÜÀí"
-#: ../modes.c:693
+#: ../modes.c:697
#, fuzzy, c-format
msgid "Response mode: Log%s%s"
msgstr "»ØӦģʽ: log%s%s"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", notify"
msgstr "֪ͨ"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", respond"
msgstr ". »Ø´ð"
-#: ../modes.c:724
+#: ../modes.c:728
#, c-format
msgid "Reading standard input\n"
msgstr "¶ÁÈ¡±ê×¼ÊäÈë\n"
-#: ../modes.c:742
+#: ../modes.c:744
#, c-format
msgid "Reading '%s'\n"
msgstr "¶Á '%s'\n"
-#: ../modes.c:808
+#: ../modes.c:810
#, fuzzy, c-format
msgid "Number of files: %d\n"
msgstr "³¢ÊԵǽµÄ´ÎÊý: %s\n"
-#: ../modes.c:809
+#: ../modes.c:811
#, fuzzy, c-format
msgid "Number of lines: %d\n"
msgstr "ÐÐÊý : %d\n"
-#: ../modes.c:814
+#: ../modes.c:816
#, c-format
msgid "First entry: %s\n"
msgstr "µÚÒ»Ìõ¼Ç¼: %s\n"
-#: ../modes.c:816
+#: ../modes.c:818
#, c-format
msgid "Last entry : %s\n"
msgstr "×îºóÒ»Ìõ¼Ç¼ : %s\n"
-#: ../modes.c:818
+#: ../modes.c:820
#, c-format
msgid "Difference : %s\n"
msgstr ""
-#: ../net.c:130 ../net.c:132
+#: ../net.c:106
#, c-format
msgid "Listening on %s port %i"
msgstr "ÁгöÔÚ &s ÉÏµÄ¶Ë¿Ú %i"
-#: ../net.c:172
+#: ../net.c:109
+#, c-format
+msgid "Connections are only allowed from %s"
+msgstr ""
+
+#: ../net.c:149
msgid "decode_base64: input string incomplete"
msgstr "decode_base64: ÊäÈë×Ö·û´®²»ÍêÕû"
-#: ../net.c:179
+#: ../net.c:156
#, c-format
msgid "decode_base64: illegal character '%c' in input string"
msgstr "decode_base64: ÔÚÊäÈë×Ö·û´®ÓзǷ¨×Ö·û '%c'"
-#: ../net.c:214
+#: ../net.c:191
msgid "count"
msgstr ""
-#: ../net.c:215
+#: ../net.c:192
msgid "added"
msgstr ""
-#: ../net.c:217
+#: ../net.c:194
msgid "proto"
msgstr ""
-#: ../net.c:219
+#: ../net.c:196
#, fuzzy
msgid "bytes"
msgstr " (%d ×Ö½Ú)"
-#: ../net.c:220
+#: ../net.c:197
msgid "source"
msgstr ""
-#: ../net.c:222 ../net.c:231
+#: ../net.c:199 ../net.c:208
#, fuzzy
msgid "hostname"
msgstr "<td>Ö÷»úÃû</td>"
-#: ../net.c:224 ../net.c:234
+#: ../net.c:201 ../net.c:211
#, fuzzy
msgid "port"
msgstr " ¶Ë¿Ú %d"
-#: ../net.c:226 ../net.c:236
+#: ../net.c:203 ../net.c:213
#, fuzzy
msgid "service"
msgstr "<td>·þÎñ</td>"
-#: ../net.c:229
+#: ../net.c:206
#, fuzzy
msgid "destination"
msgstr "<td>Ä¿±ê</td>"
-#: ../net.c:239
+#: ../net.c:216
msgid "opts"
msgstr ""
-#: ../net.c:240
+#: ../net.c:217
#, fuzzy
msgid "time remaining"
msgstr "<td>Ê£Óàʱ¼ä</td></tr>\n"
-#: ../net.c:241
+#: ../net.c:218
msgid "action"
msgstr ""
-#: ../net.c:293 ../net.c:295 ../net.c:360
+#: ../net.c:270 ../net.c:272 ../net.c:337
#, fuzzy
msgid "Information"
msgstr ""
@@ -669,167 +685,167 @@
"</div>\n"
"<h2>»ù±¾ÐÅÏ¢</h2>\n"
-#: ../net.c:299 ../net.c:301 ../net.c:398
+#: ../net.c:276 ../net.c:278 ../net.c:375
msgid "Options"
msgstr ""
-#: ../net.c:305 ../net.c:307 ../net.c:426
+#: ../net.c:282 ../net.c:284 ../net.c:403
#, fuzzy
msgid "Packet cache"
msgstr "<h2> Êý¾Ý»º´æ</h2>\n"
-#: ../net.c:311 ../net.c:313 ../net.c:495
+#: ../net.c:288 ../net.c:290 ../net.c:472
#, fuzzy
msgid "Host status"
msgstr "<h2>Ö÷»ú״̬</h2>\n"
-#: ../net.c:316
+#: ../net.c:293
msgid "Reload"
msgstr ""
-#: ../net.c:365
+#: ../net.c:342
msgid "Daemon start time"
msgstr ""
-#: ../net.c:368
+#: ../net.c:345
msgid "Current time"
msgstr ""
-#: ../net.c:371
+#: ../net.c:348
msgid "Running time"
msgstr ""
-#: ../net.c:373
+#: ../net.c:350
msgid "Log"
msgstr ""
-#: ../net.c:374
+#: ../net.c:351
#, fuzzy
msgid "Response mode"
msgstr "»ØӦģʽ: log%s%s"
-#: ../net.c:376
+#: ../net.c:353
msgid "Lines seen"
msgstr ""
-#: ../net.c:377
+#: ../net.c:354
msgid "Hits"
msgstr ""
-#: ../net.c:378
+#: ../net.c:355
msgid "Old/excluded/malformed"
msgstr ""
-#: ../net.c:385
+#: ../net.c:362
#, fuzzy
msgid "Entries in packet cache"
msgstr "<h2> Êý¾Ý»º´æ</h2>\n"
-#: ../net.c:392
+#: ../net.c:369
#, fuzzy
msgid "Entries in host status"
msgstr "<h2>Ö÷»ú״̬</h2>\n"
-#: ../net.c:400
+#: ../net.c:377
msgid "Parameter"
msgstr ""
-#: ../net.c:402
+#: ../net.c:379
msgid "Decrease"
msgstr ""
-#: ../net.c:404
+#: ../net.c:381
msgid "Current"
msgstr ""
-#: ../net.c:406
+#: ../net.c:383
msgid "Increase"
msgstr ""
-#: ../net.c:408
+#: ../net.c:385
#, fuzzy
msgid "Alert threshold"
msgstr "¾¯¸æthresholdÊÇÒ»´Î³¢ÊÔ"
-#: ../net.c:410
+#: ../net.c:387
msgid "Discard timeout"
msgstr ""
-#: ../net.c:411
+#: ../net.c:388
msgid "Minimum count in packet cache"
msgstr ""
-#: ../net.c:413 ../net.c:415
+#: ../net.c:390 ../net.c:392
msgid "Top amount of entries in packet cache"
msgstr ""
-#: ../net.c:418 ../net.c:420
+#: ../net.c:395 ../net.c:397
msgid "Refresh time"
msgstr ""
-#: ../net.c:442 ../net.c:565
+#: ../net.c:419 ../net.c:528
msgid "%Y/%m/%d %H:%M:%S"
msgstr ""
-#: ../net.c:479 ../net.c:595
+#: ../net.c:456 ../net.c:558
msgid "drop"
msgstr ""
-#: ../net.c:481
+#: ../net.c:458
msgid "escalate"
msgstr ""
-#: ../net.c:527 ../net.c:546 ../net.c:552 ../net.c:558
+#: ../net.c:493 ../net.c:509 ../net.c:515 ../net.c:521
msgid "<td>any</td>"
msgstr "<td>ÈκÎ</td>"
-#: ../net.c:540
+#: ../net.c:503
#, fuzzy
msgid "<td>(known host)</td>"
msgstr "<td>-</td><td>%s/%d (ÒÑÖªÖ÷»ú/ÍøÂç)</td>"
-#: ../net.c:542
+#: ../net.c:505
#, fuzzy
msgid "<td>(known net)</td>"
msgstr "<td>-</td><td>%s/%d (ÒÑÖªÖ÷»ú/ÍøÂç)</td>"
-#: ../net.c:654 ../net.c:657
-#, c-format
-msgid "Rejected connect from unallowed ip %s port %i"
+#: ../net.c:605
+#, fuzzy, c-format
+msgid "Rejected connection from unallowed IP address %s port %i"
msgstr "¾Ü¾øÀ´×Ô %s ¶Ë¿Ú %i µÄ·ÃÎÊ"
-#: ../net.c:668 ../net.c:670
+#: ../net.c:614
#, c-format
msgid "Connect from %s port %i"
msgstr "À´×Ô %s ¶Ë¿Ú %i µÄ·ÃÎÊ"
-#: ../net.c:734
+#: ../net.c:677
msgid "Authorization failed"
msgstr "¼ìÑé´íÎó"
-#: ../net.c:737
+#: ../net.c:680
#, fuzzy
msgid "Authorization required"
msgstr "¼ìÑé´íÎó"
-#: ../net.c:814
+#: ../net.c:757
msgid "Bad request"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "Redirect"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "You should be redirected to the <a href=\"/\">root directory</a>"
msgstr ""
-#: ../net.c:831
+#: ../net.c:774
#, c-format
msgid "Requested function: %s"
msgstr ""
-#: ../net.c:834
+#: ../net.c:777
msgid "Connection closed"
msgstr "¹Ø±ÕÁª½Ó"
@@ -948,32 +964,42 @@
msgid "<th>opts</th>"
msgstr "<td>Ñ¡Ïî</td>"
-#: ../parser.c:263
+#: ../parser.c:270
#, c-format
msgid "Unknown parser: '%c'.\n"
msgstr "²»Öªparser: '%c'.\n"
-#: ../rcfile.c:57
+#: ../rcfile.c:58
#, c-format
msgid "Error in configuration file '%s' line %d: not a number\n"
msgstr ""
-#: ../rcfile.c:86
+#: ../rcfile.c:87
#, c-format
msgid "Error in configuration file '%s' line %d, assuming 'true'\n"
msgstr ""
-#: ../rcfile.c:278
+#: ../rcfile.c:281
#, fuzzy, c-format
msgid "Unrecognized option in configuration file '%s' line %d\n"
msgstr "ÅäÖÃÎļþÖв»Ã÷Ñ¡Ïî: %s"
-#: ../rcfile.c:299
+#: ../rcfile.c:332
+#, fuzzy, c-format
+msgid "Unrecognized entry in DNS cache file '%s' line %d\n"
+msgstr "ÅäÖÃÎļþÖв»Ã÷Ñ¡Ïî: %s"
+
+#: ../rcfile.c:349
#, c-format
msgid "%s is not a regular file, ignoring.\n"
msgstr "%s ²»ÊDZê×¼Îļþ, ºöÂÔ.\n"
-#: ../rcfile.c:307
+#: ../rcfile.c:358
+#, fuzzy, c-format
+msgid "Opening DNS cache file '%s'\n"
+msgstr "´ò¿ªÊäÈëÎļþ '%s'\n"
+
+#: ../rcfile.c:360
#, fuzzy, c-format
msgid "Opening configuration file '%s'\n"
msgstr "´ò¿ªÊäÈëÎļþ '%s'\n"
@@ -983,51 +1009,64 @@
msgid "port mismatch: %d != %d\n"
msgstr "¶Ë¿Ú²»Æ¥Åä: %d != %d\n"
-#: ../resolve.c:81 ../resolve.c:151
-#, c-format
-msgid "Resolving %s from cache\n"
-msgstr "»º´æÖнâÎö%s\n"
+#: ../resolve.c:99 ../resolve.c:172
+msgid "[timeout]"
+msgstr ""
+
+#: ../resolve.c:101 ../resolve.c:174
+msgid "[server failure]"
+msgstr ""
-#: ../resolve.c:89 ../resolve.c:112
+#: ../resolve.c:111 ../resolve.c:213
#, c-format
msgid "Resolving %s\n"
msgstr "½âÎö %s\n"
-#: ../resolve.c:95
-#, c-format
-msgid "Wrong host name size\n"
-msgstr "Ö÷»úÃû³¤¶È´íÎó\n"
-
-#: ../resolve.c:119
-#, c-format
-msgid "%s [forward lookup: %s]"
-msgstr "%s [ÏòÇ°ËÑË÷: %s]"
-
#: ../resolve.c:122
#, c-format
msgid "%s [forward lookup failed]"
msgstr "%s [ÏòÇ°ËÑË÷ʧ°Ü]"
-#: ../resolve.c:163
+#: ../resolve.c:131
#, fuzzy, c-format
-msgid "Resolving %s from adns\n"
-msgstr "»º´æÖнâÎö%s\n"
+msgid " [v4 forward lookup: %s]"
+msgstr "%s [ÏòÇ°ËÑË÷: %s]"
-#: ../resolve.c:167
-#, fuzzy
-msgid "[inconsistent forward lookup]"
+#: ../resolve.c:138
+#, fuzzy, c-format
+msgid " [v6 forward lookup: %s]"
msgstr "%s [ÏòÇ°ËÑË÷: %s]"
-#: ../resolve.c:171
+#: ../resolve.c:180
#, c-format
msgid "[adns status %d]"
msgstr ""
-#: ../resolve.c:189
-msgid "DNS cache error"
+#: ../resolve.c:192
+msgid "[adns error]"
msgstr ""
-#: ../resolve.c:207
+#: ../resolve.c:206 ../resolve.c:354
+#, c-format
+msgid "Resolving %s from cache\n"
+msgstr "»º´æÖнâÎö%s\n"
+
+#: ../resolve.c:218
+#, fuzzy, c-format
+msgid "Resolving %s from adns\n"
+msgstr "»º´æÖнâÎö%s\n"
+
+#: ../resolve.c:240
+#, c-format
+msgid "IP address %s is already in DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:246
+#, c-format
+msgid "Adding IP address '%s' with host name '%s' to DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:283
#, c-format
msgid "Submitted %s to adns\n"
msgstr ""
@@ -1060,7 +1099,7 @@
msgid "Deleting host status entry (%s)"
msgstr "ɾ³ýÖ÷»ú״̬ÖеÄÄÚÈÝ"
-#: ../response.c:276
+#: ../response.c:280
#, c-format
msgid "ALERT: %d attempts from %s"
msgstr "¾¯¸æ: À´×Ô %s µÄ %d ³¢ÊÔ"
@@ -1101,49 +1140,61 @@
" »òÕßÓеڶþÖÖģʽ±»Ä¬ÈÏÆô¶¯,»òÔÚÅäÖÃÎļþÖÐÓзñÖ¸¶¨\n"
" ¶ÔÓÚ²»Í¬µÄģʽÇëʹÓò»Í¬µÄÅäÖÃÎļþ, »òʹÓÃÃüÁîÐвÎÊý\n"
-#: ../utils.c:268
+#: ../utils.c:301
+#, c-format
+msgid "[error]"
+msgstr ""
+
+#: ../utils.c:317
#, c-format
msgid "IP address error: %s\n"
msgstr "IPµØÖ·´íÎó: %s\n"
-#: ../utils.c:294
+#: ../utils.c:342 ../utils.c:353
#, c-format
msgid "Error in CIDR format: %s\n"
msgstr "CIDR¸ñʽÓдíÎó: %s\n"
-#: ../utils.c:312
+#: ../utils.c:403
#, c-format
msgid "(known host)\n"
msgstr "(²»Ã÷Ö÷»ú)\n"
-#: ../utils.c:351
+#: ../utils.c:443
#, c-format
msgid "(excluded host)\n"
msgstr "(±»ÅųýµÄÖ÷»ú)\n"
-#: ../whois.c:220
-#, c-format
-msgid "Looking up whois info for %s from cache\n"
+#: ../whois.c:226
+#, fuzzy, c-format
+msgid "Looking up whois info for %s(/%d) from cache\n"
msgstr "ÔÚ»º´æÖÐΪ %s Ñ°ÕÒwhoisÐÅÏ¢\n"
-#: ../whois.c:227
+#: ../whois.c:233
#, c-format
msgid "Looking up whois info for %s\n"
msgstr "Ϊ %s Ñ°ÕÒwhoisÐÅÏ¢\n"
-#: ../whois.c:248
+#: ../whois.c:254
#, c-format
msgid "lookup failed: %s\n"
msgstr "ËÑË÷ʧ°Ü: %s\n"
-#: ../main.h:300
+#: ../main.h:314
msgid "fwlogwatch summary"
msgstr "fwlogwatch ͳ¼ÆÕªÒª"
-#: ../main.h:310
+#: ../main.h:324
msgid "fwlogwatch status"
msgstr "fwlogwatch ״̬"
+#~ msgid "Wrong host name size\n"
+#~ msgstr "Ö÷»úÃû³¤¶È´íÎó\n"
+
+#, fuzzy
+#~ msgid "[inconsistent forward lookup]"
+#~ msgstr "%s [ÏòÇ°ËÑË÷: %s]"
+
#, fuzzy
#~ msgid "Interactive report mode (summary mode extension):\n"
#~ msgstr "½»»¥Ê½±¨¸æģʽ:\n"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/po/zh_TW.po
^
|
@@ -2,10 +2,11 @@
msgstr ""
"Project-Id-Version: fwlogwatch 0.5.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-06 13:58+0200\n"
+"POT-Creation-Date: 2013-05-23 15:04+0200\n"
"PO-Revision-Date: 2001-11-11 00:20+0100\n"
"Last-Translator: Ying-Chieh Liao <ijliao@csie.nctu.edu.tw>\n"
"Language-Team: -\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=Big5\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -30,8 +31,8 @@
msgid "Error in sort string, direction expected, ignoring.\n"
msgstr "±Æ§Ç¿ù»~: '%c', »ÝnS³ò,©¿²¤\n"
-#: ../compare.c:382 ../compare.c:384 ../modes.c:196 ../modes.c:203
-#: ../modes.c:813 ../modes.c:815 ../output.c:106 ../output.c:113
+#: ../compare.c:382 ../compare.c:384 ../modes.c:193 ../modes.c:200
+#: ../modes.c:815 ../modes.c:817 ../output.c:106 ../output.c:113
#: ../output.c:193 ../output.c:202 ../output.c:380
msgid "%b %d %H:%M:%S"
msgstr ""
@@ -107,9 +108,9 @@
msgstr ""
#: ../main.c:40
-#, fuzzy, c-format
-msgid " -m <count> only show entries with at least so many incidents\n"
-msgstr "\t-m <¼Æ¶q> \t¥uÅã¥Ü¦Ü¤Ö¦³³o»ò¦h¼Æ¶qªº°O¿ý\n"
+#, c-format
+msgid " -i <file> initialize DNS cache with entries from file\n"
+msgstr ""
#: ../main.c:41
#, c-format
@@ -118,550 +119,565 @@
#: ../main.c:42
#, fuzzy, c-format
+msgid " -m <count> only show entries with at least so many incidents\n"
+msgstr "\t-m <¼Æ¶q> \t¥uÅã¥Ü¦Ü¤Ö¦³³o»ò¦h¼Æ¶qªº°O¿ý\n"
+
+#: ../main.c:43
+#, fuzzy, c-format
msgid " -N resolve service names\n"
msgstr " -n \t¸ÑªR°ì¦W\n"
-#: ../main.c:43
+#: ../main.c:44
#, fuzzy, c-format
msgid " -n resolve host names\n"
msgstr " -n \t¸ÑªR°ì¦W\n"
-#: ../main.c:44
+#: ../main.c:45
#, fuzzy, c-format
msgid " -O <order> define the sort order (see the man page for details)\n"
msgstr "\t-O <±Æ§Ç¤èªk> \t¹ï¿é¥X¶i¦æ±Æ§Ç (¨ãÅé°Ñ¨£¬ÛÀ³¤åÀÉ\n"
-#: ../main.c:45
+#: ../main.c:46
#, fuzzy, c-format
msgid ""
" -P <format> use parsers for specific formats (defaults to netfilter)\n"
msgstr " -P <®æ¦¡> \n"
-#: ../main.c:46
+#: ../main.c:47
#, c-format
msgid " i: ipchains, n: netfilter, f: ipfilter, c: cisco ios\n"
msgstr ""
-#: ../main.c:47
+#: ../main.c:48
#, c-format
msgid ""
" p: cisco pix, e: netscreen, l: lancom, s: snort, b: ipfw\n"
msgstr ""
-#: ../main.c:48
+#: ../main.c:49
#, fuzzy, c-format
msgid " -p differentiate protocols\n"
msgstr " -p \t°Ï¤À¶Ç¿é¨óij\n"
-#: ../main.c:49
+#: ../main.c:50
#, fuzzy, c-format
msgid " -s differentiate source ports\n"
msgstr " -s \t°Ï¤À·½ºÝ¤f\n"
-#: ../main.c:50
+#: ../main.c:51
#, c-format
msgid " -U <title> set report and status page title and email subject\n"
msgstr ""
-#: ../main.c:51
+#: ../main.c:52
#, fuzzy, c-format
msgid " -v verbose, specify twice for more info\n"
msgstr " -v \t³B²z®ÉÅã¥Ü«H®§,¨Ï¥Î -vv ±o¨ì§ó¦h«H®§\n"
-#: ../main.c:52
+#: ../main.c:53
#, fuzzy, c-format
msgid " -y differentiate TCP options\n"
msgstr " -y \t°Ï¤ÀTCP¿ï¶µ\n"
-#: ../main.c:55
+#: ../main.c:56
#, c-format
msgid "Log summary mode (default):\n"
msgstr ""
-#: ../main.c:56
+#: ../main.c:57
#, fuzzy, c-format
msgid " -C <email> carbon copy recipients\n"
msgstr " -C <email> \tÂàµo¦a§}\n"
-#: ../main.c:57
+#: ../main.c:58
#, fuzzy, c-format
msgid " -e show end times\n"
msgstr " -t \tÅã¥Ü¶}©l»Pµ²§ô®É¶¡\n"
-#: ../main.c:58
+#: ../main.c:59
#, fuzzy, c-format
msgid " -F <email> report sender address (defaults to '%s')\n"
msgstr " -F <email> \tµo«H¤H¦a§}\n"
-#: ../main.c:59
+#: ../main.c:60
#, fuzzy, c-format
msgid " -l <time> process recent events only (defaults to off)\n"
msgstr " -l <®É¶¡> \t¥u³B²z·í«e¨Æ¥ó (¯Ê¬Ù¬°Ãö³¬)\n"
-#: ../main.c:60
+#: ../main.c:61
#, fuzzy, c-format
msgid " -o <file> specify output file\n"
msgstr " -o <¤å¥ó> \t«ü©w¿é¥X¤å¥ó\n"
-#: ../main.c:61
+#: ../main.c:62
#, fuzzy, c-format
msgid " -S do not differentiate source IP addresses\n"
msgstr " -S \t¤£°Ï¤À·½IP¦a§}\n"
-#: ../main.c:62
+#: ../main.c:63
#, c-format
msgid " -T <email> send report by email to this address\n"
msgstr ""
-#: ../main.c:63
+#: ../main.c:64
#, fuzzy, c-format
msgid " -t show start times\n"
msgstr " -t \tÅã¥Ü¶}©l»Pµ²§ô®É¶¡\n"
-#: ../main.c:64
+#: ../main.c:65
#, fuzzy, c-format
msgid " -W activate whois lookups for source addresses\n"
msgstr " -W \t±Ò°Ê¹ï·½IP¦a§}ªºwhois¬d¸ß\n"
-#: ../main.c:65
+#: ../main.c:66
#, fuzzy, c-format
msgid " -w HTML output\n"
msgstr " -w \t¥HHTML®æ¦¡¿é¥X\n"
-#: ../main.c:66
+#: ../main.c:67
#, fuzzy, c-format
msgid " -z show time interval\n"
msgstr " -z \tÅã¥Ü®É¶¡¶¡¹j\n"
-#: ../main.c:69
+#: ../main.c:70
#, c-format
msgid "Realtime response mode:\n"
msgstr "¹ê®É¦^À³¼Ò¦¡:\n"
-#: ../main.c:70
+#: ../main.c:71
#, fuzzy, c-format
msgid " -R realtime response as daemon (default action: log only)\n"
msgstr "\t-R \t\t¹ê®É¦^À³§@¬°¶Ç¿é¥N²zµ{§Ç (¯Ê¬Ù: ¥u¦³¹B¦æ°O¿ý)\n"
-#: ../main.c:71
+#: ../main.c:72
#, fuzzy, c-format
msgid " -a <count> alert threshold (defaults to %d entries)\n"
msgstr "\t-a <¼Æ¶q> \tĵ§i¬y (¯Ê¬Ù %d °O¿ý)\n"
-#: ../main.c:72
+#: ../main.c:73
#, fuzzy, c-format
msgid " -l <time> forget events this old (defaults to %d hours)\n"
msgstr "\t-l <®É¶¡> \t©¿²¤¦¹®É¶¡«e¨ƥó (¯Ê¬Ù: %d¤p®É)\n"
-#: ../main.c:73
+#: ../main.c:74
#, fuzzy, c-format
msgid " -k <IP/net> add this IP address or net to the list of known hosts\n"
msgstr "\t-k <IP/ºôµ¸> \t±N¦¹IP¦a§}¥[¤J¨ì¤wª¾¥D¾÷¦Cªí¤¤\n"
-#: ../main.c:74
+#: ../main.c:75
#, fuzzy, c-format
msgid " -A invoke notification script if threshold is reached\n"
msgstr "\t-A\t\t¦pªG¦³¬y¶i¤J±Ò°Ê³qª¾¤å¥»\n"
-#: ../main.c:75
+#: ../main.c:76
#, fuzzy, c-format
msgid " -B invoke response action script (e.g. block host)\n"
msgstr "\t-B\t \t±Ò°Ê¦^À³¤å¥» (¤ñ¦p ¤ÁÂ_¥D¾÷»P¥~³¡Áp¨t)\n"
-#: ../main.c:76
+#: ../main.c:77
#, fuzzy, c-format
msgid " -X <port> activate internal status information web server\n"
msgstr "\t-X \t±Ò°Ê¤º³¡ª¬ºA«H®§webªA°È¾¹\n"
-#: ../main.c:102
+#: ../main.c:103
#, fuzzy
msgid "You can contact the author at <bw@inside-security.de>."
msgstr "½Ð¨Ï¥Î¥H¤U¦a§}»P§@ªÌÁp¨t¹ê»Ú<bw@inside-security.de>."
-#: ../main.c:104
+#: ../main.c:105
msgid "Compile-time options of this version:"
msgstr ""
-#: ../main.c:105
+#: ../main.c:106
#, c-format
msgid "Short name limit "
msgstr ""
-#: ../main.c:107 ../main.c:113 ../main.c:119 ../main.c:125 ../main.c:131
+#: ../main.c:108 ../main.c:114 ../main.c:120 ../main.c:126
msgid "enabled"
msgstr ""
-#: ../main.c:109 ../main.c:115 ../main.c:121 ../main.c:127 ../main.c:133
+#: ../main.c:110 ../main.c:116 ../main.c:122 ../main.c:128
msgid "disabled"
msgstr ""
-#: ../main.c:111
+#: ../main.c:112
#, c-format
msgid "Zlib support "
msgstr ""
-#: ../main.c:117
+#: ../main.c:118
#, c-format
msgid "Gettext (i18n) support "
msgstr ""
-#: ../main.c:123
-#, c-format
-msgid "IPv6 support "
-msgstr ""
-
-#: ../main.c:129
+#: ../main.c:124
#, c-format
msgid "GNU adns support "
msgstr ""
-#: ../main.c:287
+#: ../main.c:282
#, c-format
msgid "Illegal inclusion/exclusion pos. 1 (expected [ie]): %s\n"
msgstr ""
-#: ../main.c:288 ../main.c:305 ../main.c:314 ../main.c:452
+#: ../main.c:283 ../main.c:300 ../main.c:309 ../main.c:453
#, c-format
msgid "Exiting\n"
msgstr "°h¥X\n"
-#: ../main.c:304
+#: ../main.c:299
#, c-format
msgid "Illegal inclusion/exclusion pos. 2 (expected [hpcb]): %s\n"
msgstr ""
-#: ../main.c:313
+#: ../main.c:308
#, c-format
msgid "Illegal inclusion/exclusion pos. 3 (expected [sd]): %s\n"
msgstr ""
-#: ../modes.c:109
+#: ../modes.c:108
#, c-format
msgid "Using stdin as input\n"
msgstr "¨Ï¥Î¼Ð·Ç¿é¤J\n"
-#: ../modes.c:115
+#: ../modes.c:114
#, c-format
msgid "Opening input file '%s'\n"
msgstr "¥´¶}¿é¤J¤å¥ó '%s'\n"
-#: ../modes.c:133
+#: ../modes.c:130
#, c-format
msgid "Processing\n"
msgstr "³B²z\n"
-#: ../modes.c:140
+#: ../modes.c:137
#, c-format
msgid "Unrecognized entries or tokens can be submitted at\n"
msgstr ""
-#: ../modes.c:149 ../modes.c:396 ../modes.c:782 ../rcfile.c:321
+#: ../modes.c:146 ../modes.c:393 ../modes.c:784 ../rcfile.c:379
#, c-format
msgid "Closing '%s'\n"
msgstr "Ãö³¬ '&s'\n"
-#: ../modes.c:178
+#: ../modes.c:175
#, c-format
msgid "Sorting data\n"
msgstr "¼Æ¾Ú±Æ§Ç\n"
-#: ../modes.c:215
+#: ../modes.c:212
#, c-format
msgid "Opening output file '%s'\n"
msgstr "¥´¶}¿é¥X¤å¥ó '%s'\n"
-#: ../modes.c:226
+#: ../modes.c:223
#, fuzzy, c-format
msgid "Sending\n"
msgstr "µo°e...\n"
-#: ../modes.c:249 ../net.c:364 ../net.c:367
+#: ../modes.c:246 ../net.c:341 ../net.c:344
msgid "%A %B %d %H:%M:%S %Z %Y"
msgstr ""
-#: ../modes.c:250
+#: ../modes.c:247
#, c-format
msgid "Generated %s by "
msgstr "¥Í¦¨ %s ¥Ñ"
-#: ../modes.c:260
+#: ../modes.c:257
#, c-format
msgid "an unknown user.\n"
msgstr "¤£©ú¨Ï¥ÎªÌ\n"
-#: ../modes.c:268
+#: ../modes.c:265
#, c-format
msgid "(and %d older than %d seconds) "
msgstr "(¨Ã¥B &d ¤ñ %d ¦Ñ) "
-#: ../modes.c:271
+#: ../modes.c:268
#, c-format
msgid "(and %d malformed) "
msgstr "(¨Ã¥B %d ¦³¿ù»~)"
-#: ../modes.c:274
+#: ../modes.c:271
#, fuzzy, c-format
msgid "of %d entries in the file \"%s\" are packet logs, "
msgstr "\"%s\" ¬O¼Æ¾Ú¥]°O¿ý"
-#: ../modes.c:276
+#: ../modes.c:273
#, c-format
msgid "of %d entries in standard input are packet logs, "
msgstr ""
-#: ../modes.c:278
+#: ../modes.c:275
#, c-format
msgid "of %d entries in %d input files are packet logs, "
msgstr ""
-#: ../modes.c:282
+#: ../modes.c:279
#, c-format
msgid "one has unique characteristics.\n"
msgstr "¤@Ó¦³¯S®í§Î¦¡\n"
-#: ../modes.c:284
+#: ../modes.c:281
#, c-format
msgid "%d have unique characteristics.\n"
msgstr "%d¦³¯S®í§Î¦¡\n"
-#: ../modes.c:292
+#: ../modes.c:289
#, c-format
msgid "One entry was excluded by configuration.\n"
msgstr "¤@±ø°O¿ý¦b°t¸m®É³Q§R°£\n"
-#: ../modes.c:294
+#: ../modes.c:291
#, c-format
msgid "%d entries were excluded by configuration.\n"
msgstr "%d°O¿ý¦b°t¸m®É³Q§R°£\n"
-#: ../modes.c:302
+#: ../modes.c:299
#, c-format
msgid "First packet log entry: %s, last: %s.\n"
msgstr "²Ä¤@±ø¼Æ¾Ú¥]µn³°°O¿ý: %s, ³Ì«á¤@±ø: %s.\n"
-#: ../modes.c:304 ../modes.c:811
+#: ../modes.c:301 ../modes.c:813
#, c-format
msgid "No valid time entries found.\n"
msgstr "¨S§ä¨ì¦³®Ä®É¶¡°O¿ý\n"
-#: ../modes.c:311
+#: ../modes.c:308
#, c-format
msgid "All entries were logged by the same host: \"%s\".\n"
msgstr "©Ò¦³ªº°O¿ý³£¬O±q¦P¤@Ó¥D¾÷µn³°ªº: \"%s\".\n"
-#: ../modes.c:318
+#: ../modes.c:315
#, c-format
msgid "All entries are from the same chain: \"%s\".\n"
msgstr "©Ò¦³ªº°O¿ý³£¨Ó¦Û¦P¤@ÓÃì: \"%s\".\n"
-#: ../modes.c:325
+#: ../modes.c:322
#, c-format
msgid "All entries have the same target: \"%s\".\n"
msgstr "©Ò¦³ªº°O¿ý³£¦³¦P¼Ëªº¥Ø¼Ð: \"%s\".\n"
-#: ../modes.c:332
+#: ../modes.c:329
#, c-format
msgid "All entries are from the same interface: \"%s\".\n"
msgstr "©Ò¦³ªº°O¿ý³£¨Ó¦Û¦P¤@Ӭɱ: \"%s\".\n"
-#: ../modes.c:339
+#: ../modes.c:336
#, fuzzy, c-format
msgid "Only entries with a count of at least %d are shown.\n"
msgstr "¥uÅã¥Ü¤j¤_%dªº°O¿ý.\n"
-#: ../modes.c:346
+#: ../modes.c:343
#, fuzzy, c-format
msgid "Only the top %d entries are shown.\n"
msgstr "¥uÅã¥Ü¤j¤_%dªº°O¿ý.\n"
-#: ../modes.c:357
+#: ../modes.c:354
#, fuzzy, c-format
msgid "Resolving\n"
msgstr "¸ÑªR %s\n"
-#: ../modes.c:416
+#: ../modes.c:413
#, c-format
msgid "Warning: pidfile exists, another fwlogwatch might be running.\n"
msgstr "ĵ§i: ¦s¦bpid¤å¥ó,¥i¯à¥t¤@Ófwlogwatch¦b¹B¦æ.\n"
-#: ../modes.c:430
+#: ../modes.c:427
#, fuzzy, c-format
msgid "SIGHUP caught, reread configuration file %s"
msgstr "®·®»¨ìSIGHUP, «·s¥´¶}log¤å¥ó"
-#: ../modes.c:432
+#: ../modes.c:429
#, fuzzy, c-format
msgid "SIGHUP caught, unable to reread configuration file %s"
msgstr "®·®»¨ìSIGHUP, «·s¥´¶}log¤å¥ó"
-#: ../modes.c:455
+#: ../modes.c:433
+#, c-format
+msgid "Reread DNS cache file %s"
+msgstr ""
+
+#: ../modes.c:435
+#, fuzzy, c-format
+msgid "Unable to reread DNS cache file %s"
+msgstr "®·®»¨ìSIGHUP, «·s¥´¶}log¤å¥ó"
+
+#: ../modes.c:459
msgid "SIGUSR1 caught, reading input from stdin, no need to reopen log file"
msgstr ""
-#: ../modes.c:457
+#: ../modes.c:461
#, fuzzy, c-format
msgid "SIGUSR1 caught, reopening log file %s"
msgstr "®·®»¨ìSIGHUP, «·s¥´¶}log¤å¥ó"
-#: ../modes.c:529
+#: ../modes.c:533
msgid "SIGTERM caught, cleaning up"
msgstr "®·®»¨ìSIGTERM, ²M°£¤º¦s"
-#: ../modes.c:611
+#: ../modes.c:615
#, c-format
msgid "Starting (pid %d)"
msgstr "¶}©l (pid %d)"
-#: ../modes.c:661
+#: ../modes.c:665
msgid "User to run as was not found"
msgstr ""
-#: ../modes.c:676
+#: ../modes.c:680
#, c-format
msgid "Changed uid from %d to %d, gid from %d to %d"
msgstr ""
-#: ../modes.c:678
+#: ../modes.c:682
#, c-format
msgid "Running with uid %d, gid %d"
msgstr ""
-#: ../modes.c:682
+#: ../modes.c:686
msgid "Alert threshold is one attempt"
msgstr "ĵ§ithreshold¬O¤@¦¸¹Á¸Õ"
-#: ../modes.c:684
+#: ../modes.c:688
#, c-format
msgid "Alert threshold is %d attempts"
msgstr "ĵ§ithreshold¬O%d¦¸¹Á¸Õ"
-#: ../modes.c:688
+#: ../modes.c:692
#, c-format
msgid "Events older than %d second(s) are discarded"
msgstr "¦b%d¬í¤§«eªº¨Æ¥ó±N¤£¨ü²z"
-#: ../modes.c:690
+#: ../modes.c:694
#, c-format
msgid "Events older than %d hour(s) are discarded"
msgstr "¦b%d¤p®É¤§«eªº¨Æ¥ó±N¤£¨ü²z"
-#: ../modes.c:693
+#: ../modes.c:697
#, fuzzy, c-format
msgid "Response mode: Log%s%s"
msgstr "¦^À³¼Ò¦¡: log%s%s"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", notify"
msgstr "³qª¾"
-#: ../modes.c:693 ../net.c:373
+#: ../modes.c:697 ../net.c:350
msgid ", respond"
msgstr ". ¦^µª"
-#: ../modes.c:724
+#: ../modes.c:728
#, c-format
msgid "Reading standard input\n"
msgstr "Ū¨ú¼Ð·Ç¿é¤J\n"
-#: ../modes.c:742
+#: ../modes.c:744
#, c-format
msgid "Reading '%s'\n"
msgstr "Ū '%s'\n"
-#: ../modes.c:808
+#: ../modes.c:810
#, fuzzy, c-format
msgid "Number of files: %d\n"
msgstr "¹Á¸Õµn³°ªº¦¸¼Æ: %s\n"
-#: ../modes.c:809
+#: ../modes.c:811
#, fuzzy, c-format
msgid "Number of lines: %d\n"
msgstr "¦æ¼Æ : %d\n"
-#: ../modes.c:814
+#: ../modes.c:816
#, c-format
msgid "First entry: %s\n"
msgstr "²Ä¤@±ø°O¿ý: %s\n"
-#: ../modes.c:816
+#: ../modes.c:818
#, c-format
msgid "Last entry : %s\n"
msgstr "³Ì«á¤@±ø°O¿ý : %s\n"
-#: ../modes.c:818
+#: ../modes.c:820
#, c-format
msgid "Difference : %s\n"
msgstr ""
-#: ../net.c:130 ../net.c:132
+#: ../net.c:106
#, c-format
msgid "Listening on %s port %i"
msgstr "¦C¥X¦b &s ¤WªººÝ¤f %i"
-#: ../net.c:172
+#: ../net.c:109
+#, c-format
+msgid "Connections are only allowed from %s"
+msgstr ""
+
+#: ../net.c:149
msgid "decode_base64: input string incomplete"
msgstr "decode_base64: ¿é¤J¦r²Å¦ê¤£§¹¾ã"
-#: ../net.c:179
+#: ../net.c:156
#, c-format
msgid "decode_base64: illegal character '%c' in input string"
msgstr "decode_base64: ¦b¿é¤J¦r²Å¦ê¦³«Dªk¦r²Å '%c'"
-#: ../net.c:214
+#: ../net.c:191
msgid "count"
msgstr ""
-#: ../net.c:215
+#: ../net.c:192
msgid "added"
msgstr ""
-#: ../net.c:217
+#: ../net.c:194
msgid "proto"
msgstr ""
-#: ../net.c:219
+#: ../net.c:196
#, fuzzy
msgid "bytes"
msgstr "¦r¸`)"
-#: ../net.c:220
+#: ../net.c:197
msgid "source"
msgstr ""
-#: ../net.c:222 ../net.c:231
+#: ../net.c:199 ../net.c:208
#, fuzzy
msgid "hostname"
msgstr "<td>¥D¾÷¦W</td>"
-#: ../net.c:224 ../net.c:234
+#: ../net.c:201 ../net.c:211
#, fuzzy
msgid "port"
msgstr "ºÝ¤f"
-#: ../net.c:226 ../net.c:236
+#: ../net.c:203 ../net.c:213
#, fuzzy
msgid "service"
msgstr "<td>·½</td>"
-#: ../net.c:229
+#: ../net.c:206
#, fuzzy
msgid "destination"
msgstr "<td>¥Ø¼Ð</td>"
-#: ../net.c:239
+#: ../net.c:216
msgid "opts"
msgstr ""
-#: ../net.c:240
+#: ../net.c:217
#, fuzzy
msgid "time remaining"
msgstr "<td>³Ñ§E®É¶¡</td></tr>\n"
-#: ../net.c:241
+#: ../net.c:218
msgid "action"
msgstr ""
-#: ../net.c:293 ../net.c:295 ../net.c:360
+#: ../net.c:270 ../net.c:272 ../net.c:337
#, fuzzy
msgid "Information"
msgstr ""
@@ -669,167 +685,167 @@
"</div>\n"
"<h2>°ò¥»«H®§</h2>\n"
-#: ../net.c:299 ../net.c:301 ../net.c:398
+#: ../net.c:276 ../net.c:278 ../net.c:375
msgid "Options"
msgstr ""
-#: ../net.c:305 ../net.c:307 ../net.c:426
+#: ../net.c:282 ../net.c:284 ../net.c:403
#, fuzzy
msgid "Packet cache"
msgstr "<h2> ¼Æ¾Ú½w¦s</h2>\n"
-#: ../net.c:311 ../net.c:313 ../net.c:495
+#: ../net.c:288 ../net.c:290 ../net.c:472
#, fuzzy
msgid "Host status"
msgstr "<h2>¥D¾÷ª¬ºA</h2>\n"
-#: ../net.c:316
+#: ../net.c:293
msgid "Reload"
msgstr ""
-#: ../net.c:365
+#: ../net.c:342
msgid "Daemon start time"
msgstr ""
-#: ../net.c:368
+#: ../net.c:345
msgid "Current time"
msgstr ""
-#: ../net.c:371
+#: ../net.c:348
msgid "Running time"
msgstr ""
-#: ../net.c:373
+#: ../net.c:350
msgid "Log"
msgstr ""
-#: ../net.c:374
+#: ../net.c:351
#, fuzzy
msgid "Response mode"
msgstr "¦^À³¼Ò¦¡: log%s%s"
-#: ../net.c:376
+#: ../net.c:353
msgid "Lines seen"
msgstr ""
-#: ../net.c:377
+#: ../net.c:354
msgid "Hits"
msgstr ""
-#: ../net.c:378
+#: ../net.c:355
msgid "Old/excluded/malformed"
msgstr ""
-#: ../net.c:385
+#: ../net.c:362
#, fuzzy
msgid "Entries in packet cache"
msgstr "<h2> ¼Æ¾Ú½w¦s</h2>\n"
-#: ../net.c:392
+#: ../net.c:369
#, fuzzy
msgid "Entries in host status"
msgstr "<h2>¥D¾÷ª¬ºA</h2>\n"
-#: ../net.c:400
+#: ../net.c:377
msgid "Parameter"
msgstr ""
-#: ../net.c:402
+#: ../net.c:379
msgid "Decrease"
msgstr ""
-#: ../net.c:404
+#: ../net.c:381
msgid "Current"
msgstr ""
-#: ../net.c:406
+#: ../net.c:383
msgid "Increase"
msgstr ""
-#: ../net.c:408
+#: ../net.c:385
#, fuzzy
msgid "Alert threshold"
msgstr "ĵ§ithreshold¬O¤@¦¸¹Á¸Õ"
-#: ../net.c:410
+#: ../net.c:387
msgid "Discard timeout"
msgstr ""
-#: ../net.c:411
+#: ../net.c:388
msgid "Minimum count in packet cache"
msgstr ""
-#: ../net.c:413 ../net.c:415
+#: ../net.c:390 ../net.c:392
msgid "Top amount of entries in packet cache"
msgstr ""
-#: ../net.c:418 ../net.c:420
+#: ../net.c:395 ../net.c:397
msgid "Refresh time"
msgstr ""
-#: ../net.c:442 ../net.c:565
+#: ../net.c:419 ../net.c:528
msgid "%Y/%m/%d %H:%M:%S"
msgstr ""
-#: ../net.c:479 ../net.c:595
+#: ../net.c:456 ../net.c:558
msgid "drop"
msgstr ""
-#: ../net.c:481
+#: ../net.c:458
msgid "escalate"
msgstr ""
-#: ../net.c:527 ../net.c:546 ../net.c:552 ../net.c:558
+#: ../net.c:493 ../net.c:509 ../net.c:515 ../net.c:521
msgid "<td>any</td>"
msgstr "<td>¥ô¦ó</td>"
-#: ../net.c:540
+#: ../net.c:503
#, fuzzy
msgid "<td>(known host)</td>"
msgstr "<td>-</td><td>%s/%d (¤wª¾¥D¾÷/ºôµ¸)</td>"
-#: ../net.c:542
+#: ../net.c:505
#, fuzzy
msgid "<td>(known net)</td>"
msgstr "<td>-</td><td>%s/%d (¤wª¾¥D¾÷/ºôµ¸)</td>"
-#: ../net.c:654 ../net.c:657
-#, c-format
-msgid "Rejected connect from unallowed ip %s port %i"
+#: ../net.c:605
+#, fuzzy, c-format
+msgid "Rejected connection from unallowed IP address %s port %i"
msgstr "©Úµ´¨Ó¦Û %s ºÝ¤f %i ªº³X°Ý"
-#: ../net.c:668 ../net.c:670
+#: ../net.c:614
#, c-format
msgid "Connect from %s port %i"
msgstr "¨Ó¦Û %s ºÝ¤f %i ªº³X°Ý"
-#: ../net.c:734
+#: ../net.c:677
msgid "Authorization failed"
msgstr "ÀËÅç¿ù»~"
-#: ../net.c:737
+#: ../net.c:680
#, fuzzy
msgid "Authorization required"
msgstr "ÀËÅç¿ù»~"
-#: ../net.c:814
+#: ../net.c:757
msgid "Bad request"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "Redirect"
msgstr ""
-#: ../net.c:819
+#: ../net.c:762
msgid "You should be redirected to the <a href=\"/\">root directory</a>"
msgstr ""
-#: ../net.c:831
+#: ../net.c:774
#, c-format
msgid "Requested function: %s"
msgstr ""
-#: ../net.c:834
+#: ../net.c:777
msgid "Connection closed"
msgstr "Ãö³¬Áp±µ"
@@ -948,32 +964,42 @@
msgid "<th>opts</th>"
msgstr "<td>¿ï¶µ</td>"
-#: ../parser.c:263
+#: ../parser.c:270
#, c-format
msgid "Unknown parser: '%c'.\n"
msgstr "¤£ª¾parser: '%c'.\n"
-#: ../rcfile.c:57
+#: ../rcfile.c:58
#, c-format
msgid "Error in configuration file '%s' line %d: not a number\n"
msgstr ""
-#: ../rcfile.c:86
+#: ../rcfile.c:87
#, c-format
msgid "Error in configuration file '%s' line %d, assuming 'true'\n"
msgstr ""
-#: ../rcfile.c:278
+#: ../rcfile.c:281
#, fuzzy, c-format
msgid "Unrecognized option in configuration file '%s' line %d\n"
msgstr "°t¸m¤å¥ó¤¤¤£©ú¿ï¶µ: %s"
-#: ../rcfile.c:299
+#: ../rcfile.c:332
+#, fuzzy, c-format
+msgid "Unrecognized entry in DNS cache file '%s' line %d\n"
+msgstr "°t¸m¤å¥ó¤¤¤£©ú¿ï¶µ: %s"
+
+#: ../rcfile.c:349
#, c-format
msgid "%s is not a regular file, ignoring.\n"
msgstr "%s ¤£¬O¼Ð·Ç¤å¥ó, ©¿²¤.\n"
-#: ../rcfile.c:307
+#: ../rcfile.c:358
+#, fuzzy, c-format
+msgid "Opening DNS cache file '%s'\n"
+msgstr "¥´¶}¿é¤J¤å¥ó '%s'\n"
+
+#: ../rcfile.c:360
#, fuzzy, c-format
msgid "Opening configuration file '%s'\n"
msgstr "¥´¶}¿é¤J¤å¥ó '%s'\n"
@@ -983,51 +1009,64 @@
msgid "port mismatch: %d != %d\n"
msgstr "ºÝ¤f¤£¤Ç°t: %d != %d\n"
-#: ../resolve.c:81 ../resolve.c:151
-#, c-format
-msgid "Resolving %s from cache\n"
-msgstr "½w¦s¤¤¸ÑªR%s\n"
+#: ../resolve.c:99 ../resolve.c:172
+msgid "[timeout]"
+msgstr ""
+
+#: ../resolve.c:101 ../resolve.c:174
+msgid "[server failure]"
+msgstr ""
-#: ../resolve.c:89 ../resolve.c:112
+#: ../resolve.c:111 ../resolve.c:213
#, c-format
msgid "Resolving %s\n"
msgstr "¸ÑªR %s\n"
-#: ../resolve.c:95
-#, c-format
-msgid "Wrong host name size\n"
-msgstr "¥D¾÷¦Wªø«×¿ù»~\n"
-
-#: ../resolve.c:119
-#, c-format
-msgid "%s [forward lookup: %s]"
-msgstr "%s [¦V«e·j¯Á: %s]"
-
#: ../resolve.c:122
#, c-format
msgid "%s [forward lookup failed]"
msgstr "%s [¦V«e·j¯Á¥¢±Ñ]"
-#: ../resolve.c:163
+#: ../resolve.c:131
#, fuzzy, c-format
-msgid "Resolving %s from adns\n"
-msgstr "½w¦s¤¤¸ÑªR%s\n"
+msgid " [v4 forward lookup: %s]"
+msgstr "%s [¦V«e·j¯Á: %s]"
-#: ../resolve.c:167
-#, fuzzy
-msgid "[inconsistent forward lookup]"
+#: ../resolve.c:138
+#, fuzzy, c-format
+msgid " [v6 forward lookup: %s]"
msgstr "%s [¦V«e·j¯Á: %s]"
-#: ../resolve.c:171
+#: ../resolve.c:180
#, c-format
msgid "[adns status %d]"
msgstr ""
-#: ../resolve.c:189
-msgid "DNS cache error"
+#: ../resolve.c:192
+msgid "[adns error]"
msgstr ""
-#: ../resolve.c:207
+#: ../resolve.c:206 ../resolve.c:354
+#, c-format
+msgid "Resolving %s from cache\n"
+msgstr "½w¦s¤¤¸ÑªR%s\n"
+
+#: ../resolve.c:218
+#, fuzzy, c-format
+msgid "Resolving %s from adns\n"
+msgstr "½w¦s¤¤¸ÑªR%s\n"
+
+#: ../resolve.c:240
+#, c-format
+msgid "IP address %s is already in DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:246
+#, c-format
+msgid "Adding IP address '%s' with host name '%s' to DNS cache\n"
+msgstr ""
+
+#: ../resolve.c:283
#, c-format
msgid "Submitted %s to adns\n"
msgstr ""
@@ -1060,7 +1099,7 @@
msgid "Deleting host status entry (%s)"
msgstr "§R°£¥D¾÷ª¬ºA¤¤ªº¤º®e"
-#: ../response.c:276
+#: ../response.c:280
#, c-format
msgid "ALERT: %d attempts from %s"
msgstr "ĵ§i: ¨Ó¦Û %s ªº %d ¹Á¸Õ"
@@ -1101,49 +1140,61 @@
" ©ÎªÌ¦³²Ä¤GºØ¼Ò¦¡³QÀq»{±Ò°Ê,©Î¦b°t¸m¤å¥ó¤¤¦³§_«ü©w\n"
" ¹ï¤_¤£¦Pªº¼Ò¦¡½Ð¨Ï¥Î¤£¦Pªº°t¸m¤å¥ó, ©Î¨Ï¥Î©R¥O¦æ°Ñ¼Æ\n"
-#: ../utils.c:268
+#: ../utils.c:301
+#, c-format
+msgid "[error]"
+msgstr ""
+
+#: ../utils.c:317
#, c-format
msgid "IP address error: %s\n"
msgstr "IP¦a§}¿ù»~: %s\n"
-#: ../utils.c:294
+#: ../utils.c:342 ../utils.c:353
#, c-format
msgid "Error in CIDR format: %s\n"
msgstr "CIDR®æ¦¡¦³¿ù»~: %s\n"
-#: ../utils.c:312
+#: ../utils.c:403
#, c-format
msgid "(known host)\n"
msgstr "(¤£©ú¥D¾÷)\n"
-#: ../utils.c:351
+#: ../utils.c:443
#, c-format
msgid "(excluded host)\n"
msgstr "(³Q±Æ°£ªº¥D¾÷)\n"
-#: ../whois.c:220
-#, c-format
-msgid "Looking up whois info for %s from cache\n"
+#: ../whois.c:226
+#, fuzzy, c-format
+msgid "Looking up whois info for %s(/%d) from cache\n"
msgstr "¦b½w¦s¤¤¬° %s ´M§äwhois«H®§\n"
-#: ../whois.c:227
+#: ../whois.c:233
#, c-format
msgid "Looking up whois info for %s\n"
msgstr "¬° %s ´M§äwhois«H®§\n"
-#: ../whois.c:248
+#: ../whois.c:254
#, c-format
msgid "lookup failed: %s\n"
msgstr "·j¯Á¥¢±Ñ: %s\n"
-#: ../main.h:300
+#: ../main.h:314
msgid "fwlogwatch summary"
msgstr ""
-#: ../main.h:310
+#: ../main.h:324
msgid "fwlogwatch status"
msgstr ""
+#~ msgid "Wrong host name size\n"
+#~ msgstr "¥D¾÷¦Wªø«×¿ù»~\n"
+
+#, fuzzy
+#~ msgid "[inconsistent forward lookup]"
+#~ msgstr "%s [¦V«e·j¯Á: %s]"
+
#, fuzzy
#~ msgid "Interactive report mode (summary mode extension):\n"
#~ msgstr "¥æ¤¬¦¡³ø§i¼Ò¦¡:\n"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/rcfile.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: rcfile.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: rcfile.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -11,6 +11,7 @@
#include "main.h"
#include "parser.h"
#include "utils.h"
+#include "resolve.h"
extern struct options opt;
@@ -104,7 +105,7 @@
if (strncasecmp(command, "include_file", 12) == 0) {
xstrncpy(opt.rcfile, get_one_parameter(command + 13, HASH_ENDS_INPUT), FILESIZE);
- read_rcfile(opt.rcfile, MUST_EXIST);
+ read_rcfile(opt.rcfile, MUST_EXIST, RCFILE_CF);
}
/* Global options */
@@ -117,6 +118,8 @@
opt.sresolve = get_yes_or_no(command + 17, rcfile, linenum);
} else if (strncasecmp(command, "input", 5) == 0) {
add_input_file(get_one_parameter(command + 6, HASH_ENDS_INPUT));
+ } else if (strncasecmp(command, "dns_cache", 9) == 0) {
+ xstrncpy(opt.rcfile_dns, get_one_parameter(command + 10, HASH_ENDS_INPUT), FILESIZE);
}
/* Evaluation options */
@@ -258,7 +261,7 @@
} else if (strncasecmp(command, "listen_port", 11) == 0) {
opt.listenport = get_num_parameter(command + 12, rcfile, linenum);
} else if (strncasecmp(command, "listen_to", 9) == 0) {
- xstrncpy(opt.listento, get_one_parameter(command + 10, HASH_ENDS_INPUT), IPLEN);
+ xstrncpy(opt.listento, get_one_parameter(command + 10, HASH_ENDS_INPUT), IP6LEN);
} else if (strncasecmp(command, "status_user", 11) == 0) {
xstrncpy(opt.user, get_one_parameter(command + 12, HASH_ENDS_INPUT), USERSIZE);
} else if (strncasecmp(command, "status_password", 15) == 0) {
@@ -282,7 +285,54 @@
free(command);
}
-unsigned char read_rcfile(char *rcfile, unsigned char must_exist)
+void parse_dns_cache(char *input, char *rcfile, int linenum)
+{
+ char *p, *p1, *p2;
+ struct in6_addr addr;
+
+ while (*input == ' ' || *input == '\t')
+ ++input;
+
+ if (*input == '#' || *input == '\n')
+ return;
+
+ p1 = strchr(input, ' ');
+ p2 = strchr(input, '\t');
+ if (p1 != NULL && p2 != NULL) {
+ if (p1 < p2)
+ p = p1;
+ else
+ p = p2;
+ } else if (p1 != NULL || p2 != NULL) {
+ if (p1 != NULL)
+ p = p1;
+ else
+ p = p2;
+ } else {
+ goto unrecognized;
+ }
+ *p = 0;
+ p++;
+ if (convert_ip(input, &addr) == IN_ADDR_OK) {
+ while (*p == ' ' || *p == '\t')
+ p++;
+ p1 = strchr(p, ' ');
+ if (p1 != NULL)
+ *p1 = 0;
+ p1 = strchr(p, '\t');
+ if (p1 != NULL)
+ *p1 = 0;
+ p1 = strchr(p, '\n');
+ if (p1 != NULL)
+ *p1 = 0;
+ init_dns_cache(&addr, p);
+ return;
+ }
+unrecognized:
+ fprintf(stderr, _("Unrecognized entry in DNS cache file '%s' line %d\n"), rcfile, linenum);
+}
+
+unsigned char read_rcfile(char *rcfile, unsigned char must_exist, unsigned char type)
{
char buf[BUFSIZE], *name;
FILE *fd;
@@ -303,8 +353,13 @@
name = strdup(rcfile);
- if (opt.verbose)
- fprintf(stderr, _("Opening configuration file '%s'\n"), name);
+ if (opt.verbose) {
+ if (type == RCFILE_DNS) {
+ fprintf(stderr, _("Opening DNS cache file '%s'\n"), name);
+ } else {
+ fprintf(stderr, _("Opening configuration file '%s'\n"), name);
+ }
+ }
fd = fopen(name, "r");
if (fd == NULL) {
@@ -313,7 +368,10 @@
}
while (fgets(buf, BUFSIZE, fd)) {
- parse_rcfile(buf, name, linenum);
+ if (type == RCFILE_CF)
+ parse_rcfile(buf, name, linenum);
+ else
+ parse_dns_cache(buf, name, linenum);
linenum++;
}
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/rcfile.h
^
|
@@ -1,9 +1,9 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: rcfile.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: rcfile.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _RCFILE_H
#define _RCFILE_H
-unsigned char read_rcfile(char *rcfile, unsigned char must_exist);
+unsigned char read_rcfile(char *rcfile, unsigned char must_exist, unsigned char type);
#endif
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/resolve.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: resolve.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: resolve.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -28,7 +28,7 @@
extern struct known_hosts *first_host;
adns_state adns;
struct adns_entry {
- struct in_addr ip;
+ struct in6_addr ip;
adns_query query;
struct adns_entry *next;
} *adnse_first = NULL;
@@ -67,117 +67,120 @@
return ("-");
}
-#ifndef HAVE_ADNS
-char *resolve_hostname(struct in_addr ip)
+char *resolve_address_sync(struct in6_addr ip)
{
- struct hostent *reverse, *forward;
- struct dns_cache *dns;
- char *pnt, fqdn[HOSTLEN];
+ char *fqdn;
- dns = dns_first;
- while (dns != NULL) {
- if (ip.s_addr == dns->ip.s_addr) {
- if (opt.verbose) {
- fprintf(stderr, _("Resolving %s from cache\n"), inet_ntoa(ip));
- }
- return (dns->fqdn);
- }
- dns = dns->next;
- }
-
- if (opt.verbose)
- fprintf(stderr, _("Resolving %s\n"), inet_ntoa(ip));
+ int r;
- reverse = gethostbyaddr((void *) &ip.s_addr, sizeof(struct in_addr), AF_INET);
+ char hbuf[NI_MAXHOST];
- if ((reverse != NULL) && (reverse->h_name != NULL)) {
- if ((unsigned int) reverse->h_length > sizeof(struct in_addr)) {
- fprintf(stderr, _("Wrong host name size\n"));
- reverse->h_length = sizeof(struct in_addr);
- reverse->h_name[reverse->h_length] = '\0';
- }
+ socklen_t len;
- pnt = reverse->h_name;
- while (*pnt != '\0') {
- if (isalnum((int) *pnt) || *pnt == '.' || *pnt == '-') {
- pnt++;
- continue;
- } else {
- *pnt = '_';
- pnt++;
- }
- }
+ void *sa;
+ struct sockaddr_in6 *sai6;
+ struct in6_addr in6a;
+
+ unsigned char buf[sizeof(struct sockaddr_in6)];
+ memset(&buf, 0, sizeof(struct sockaddr_in6));
+
+ fqdn = xmalloc(HOSTLEN);
+
+ memcpy(&in6a, &ip, sizeof(struct in6_addr));
+ sai6 = (struct sockaddr_in6 *) &buf;
+ sai6->sin6_addr = in6a;
+ sai6->sin6_family = AF_INET6;
+ len = sizeof(struct sockaddr_in6);
+ sa = sai6;
+ r = getnameinfo((struct sockaddr *) sa, len, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD);
+ if (r == EAI_NONAME) {
+ snprintf(fqdn, HOSTLEN, "-");
+ } else if (r == EAI_AGAIN) {
+ xstrncpy(fqdn, _("[timeout]"), HOSTLEN);
+ } else if (r == EAI_FAIL) {
+ xstrncpy(fqdn, _("[server failure]"), HOSTLEN);
+ } else if (r != 0) {
+ snprintf(fqdn, HOSTLEN, "[%s]", gai_strerror(r));
+ } else {
+ {
+ struct addrinfo hints, *res, *rp;
+ int s;
+ char dst[HOSTLEN], dst2[HOSTLEN];
- if (opt.verbose)
- fprintf(stderr, _("Resolving %s\n"), reverse->h_name);
+ if (opt.verbose)
+ fprintf(stderr, _("Resolving %s\n"), hbuf);
- forward = gethostbyname(reverse->h_name);
- if ((forward != NULL) && (forward->h_addr_list[0]) != NULL) {
- if (strncmp(inet_ntoa(ip), inet_ntoa(*(struct in_addr *) forward->h_addr_list[0]), IPLEN) == 0) {
- xstrncpy(fqdn, reverse->h_name, HOSTLEN);
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+
+ s = getaddrinfo(hbuf, NULL, &hints, &res);
+ if (s != 0) {
+#ifdef DNS_DEBUG
+ snprintf(fqdn, HOSTLEN, "%s [%s]", hbuf, gai_strerror(s));
+#else
+ snprintf(fqdn, HOSTLEN, _("%s [forward lookup failed]"), hbuf);
+#endif
} else {
- snprintf(fqdn, HOSTLEN, _("%s [forward lookup: %s]"), reverse->h_name, inet_ntoa(*(struct in_addr *) forward->h_addr_list[0]));
+ snprintf(fqdn, HOSTLEN, "%s", hbuf);
+ for (rp = res; rp != NULL; rp = rp->ai_next) {
+ if (rp->ai_family == AF_INET && isV4mappedV6addr(&ip)) {
+ struct sockaddr_in *sin;
+ sin = (void *) rp->ai_addr;
+ if (ip.s6_addr32[3] != sin->sin_addr.s_addr) {
+ snprintf(dst2, HOSTLEN, _(" [v4 forward lookup: %s]"), inet_ntop(rp->ai_family, &sin->sin_addr, dst, HOSTLEN));
+ strncat(fqdn, dst2, HOSTLEN - strlen(fqdn) - 1);
+ }
+ } else if (rp->ai_family == AF_INET6 && !isV4mappedV6addr(&ip)) {
+ struct sockaddr_in6 *sin6;
+ sin6 = (void *) rp->ai_addr;
+ if (compare_ipv6_equal(&ip, &sin6->sin6_addr) != 0) {
+ snprintf(dst2, HOSTLEN, _(" [v6 forward lookup: %s]"), inet_ntop(rp->ai_family, &sin6->sin6_addr, dst, HOSTLEN));
+ strncat(fqdn, dst2, HOSTLEN - strlen(fqdn) - 1);
+ }
+ }
+ }
+ freeaddrinfo(res);
}
- } else {
- snprintf(fqdn, HOSTLEN, _("%s [forward lookup failed]"), reverse->h_name);
}
- } else {
- xstrncpy(fqdn, "-", HOSTLEN);
}
-
- dns = xmalloc(sizeof(struct dns_cache));
- dns->ip.s_addr = ip.s_addr;
- dns->fqdn = xmalloc(strlen(fqdn) + 1);
- xstrncpy(dns->fqdn, fqdn, strlen(fqdn) + 1);
- dns->next = dns_first;
- dns_first = dns;
-
- return (dns->fqdn);
+ return (fqdn);
}
-#else
-
-char *resolve_hostname(struct in_addr ip)
+#ifdef HAVE_ADNS
+char *resolve_address_async(struct in6_addr ip)
{
- struct dns_cache *dns;
struct adns_entry *adnse;
adns_answer *answer;
- char fqdn[HOSTLEN];
+ char *fqdn;
- dns = dns_first;
- while (dns != NULL) {
- if (ip.s_addr == dns->ip.s_addr) {
- if (opt.verbose)
- fprintf(stderr, _("Resolving %s from cache\n"), inet_ntoa(ip));
- return (dns->fqdn);
- }
- dns = dns->next;
- }
+ fqdn = xmalloc(HOSTLEN);
adnse = adnse_first;
while (adnse != NULL) {
- if (adnse->ip.s_addr == ip.s_addr) {
+ if (compare_ipv6_equal(&adnse->ip, &ip) == 0) {
errno = adns_wait(adns, &adnse->query, &answer, NULL);
if (!errno) {
- if (opt.verbose)
- fprintf(stderr, _("Resolving %s from adns\n"), inet_ntoa(ip));
if (answer->status == adns_s_ok) {
xstrncpy(fqdn, *answer->rrs.str, HOSTLEN);
- } else if (answer->status == adns_s_inconsistent) {
- xstrncpy(fqdn, _("[inconsistent forward lookup]"), HOSTLEN);
+ } else if (answer->status == adns_s_inconsistent || answer->status == adns_s_prohibitedcname || answer->status == adns_s_answerdomaininvalid) {
+ char *fqdn_sync;
+ fqdn_sync = resolve_address_sync(ip);
+ xstrncpy(fqdn, fqdn_sync, HOSTLEN);
+ free(fqdn_sync);
+ } else if (answer->status == adns_s_timeout) {
+ xstrncpy(fqdn, _("[timeout]"), HOSTLEN);
+ } else if (answer->status == adns_s_rcodeservfail) {
+ xstrncpy(fqdn, _("[server failure]"), HOSTLEN);
} else if (answer->status == adns_s_nxdomain) {
xstrncpy(fqdn, "-", HOSTLEN);
+ } else if (answer->status == adns_s_nodata) {
+ xstrncpy(fqdn, "-", HOSTLEN);
} else {
snprintf(fqdn, HOSTLEN, _("[adns status %d]"), answer->status);
}
free(answer);
- dns = xmalloc(sizeof(struct dns_cache));
- dns->ip.s_addr = ip.s_addr;
- dns->fqdn = xmalloc(strlen(fqdn) + 1);
- xstrncpy(dns->fqdn, fqdn, strlen(fqdn) + 1);
- dns->next = dns_first;
- dns_first = dns;
- return (dns->fqdn);
+ return (fqdn);
} else {
perror("adns_wait");
break;
@@ -186,28 +189,101 @@
adnse = adnse->next;
}
- return _("DNS cache error");
+ xstrncpy(fqdn, _("[adns error]"), HOSTLEN);
+ return (fqdn);
}
+#endif
-void adns_list_add(struct in_addr ip)
+char *resolve_address(struct in6_addr ip)
+{
+ struct dns_cache *dns;
+ char *fqdn;
+
+ dns = dns_first;
+ while (dns != NULL) {
+ if (compare_ipv6_equal(&ip, &dns->ip) == 0) {
+ if (opt.verbose)
+ fprintf(stderr, _("Resolving %s from cache\n"), my_inet_ntop(&ip));
+ return (dns->fqdn);
+ }
+ dns = dns->next;
+ }
+#ifndef HAVE_ADNS
+ if (opt.verbose)
+ fprintf(stderr, _("Resolving %s\n"), my_inet_ntop(&ip));
+
+ fqdn = resolve_address_sync(ip);
+#else
+ if (opt.verbose)
+ fprintf(stderr, _("Resolving %s from adns\n"), my_inet_ntop(&ip));
+
+ fqdn = resolve_address_async(ip);
+#endif
+
+ dns = xmalloc(sizeof(struct dns_cache));
+ memcpy(&dns->ip, &ip, sizeof(struct in6_addr));
+ dns->fqdn = xmalloc(strlen(fqdn) + 1);
+ xstrncpy(dns->fqdn, fqdn, strlen(fqdn) + 1);
+ dns->next = dns_first;
+ dns_first = dns;
+ free(fqdn);
+ return (dns->fqdn);
+}
+
+void init_dns_cache(struct in6_addr *ip, char *hostname)
+{
+ struct dns_cache *dns;
+ dns = dns_first;
+ while (dns != NULL) {
+ if (compare_ipv6_equal(ip, &dns->ip) == 0) {
+ if (opt.verbose == 2)
+ fprintf(stderr, _("IP address %s is already in DNS cache\n"), my_inet_ntop(ip));
+ return;
+ }
+ dns = dns->next;
+ }
+ if (opt.verbose == 2)
+ fprintf(stderr, _("Adding IP address '%s' with host name '%s' to DNS cache\n"), my_inet_ntop(ip), hostname);
+ dns = xmalloc(sizeof(struct dns_cache));
+ memcpy(&dns->ip, ip, sizeof(struct in6_addr));
+ dns->fqdn = xmalloc(strlen(hostname) + 1);
+ xstrncpy(dns->fqdn, hostname, strlen(hostname) + 1);
+ dns->next = dns_first;
+ dns_first = dns;
+}
+
+#ifdef HAVE_ADNS
+
+void adns_list_add(struct in6_addr *ip)
{
- struct sockaddr_in sa;
struct adns_entry *adnse;
+ struct sockaddr_in sa;
+ struct sockaddr_in6 sa6;
adnse = xmalloc(sizeof(struct adns_entry));
- adnse->ip.s_addr = ip.s_addr;
- bzero(&sa, sizeof(sa));
- sa.sin_family = AF_INET;
- sa.sin_addr = adnse->ip;
- adns_submit_reverse(adns, (struct sockaddr *) &sa, adns_r_ptr, 0, NULL, &adnse->query);
+
+ memcpy(&adnse->ip, ip, sizeof(struct in6_addr));
+ if (isV4mappedV6addr(ip)) {
+ char buf[INET6_ADDRSTRLEN];
+ bzero(&sa, sizeof(struct sockaddr_in));
+ sa.sin_family = AF_INET;
+ inet_ntop(AF_INET, ip->s6_addr + 12, buf, INET_ADDRSTRLEN);
+ inet_pton(AF_INET, buf, &sa.sin_addr);
+ adns_submit_reverse(adns, (struct sockaddr *) &sa, adns_r_ptr, adns_qf_none, NULL, &adnse->query);
+ } else {
+ bzero(&sa6, sizeof(struct sockaddr_in6));
+ sa6.sin6_family = AF_INET6;
+ memcpy(&sa6.sin6_addr, ip, sizeof(struct in6_addr));
+ adns_submit_reverse(adns, (struct sockaddr *) &sa6, adns_r_ptr, adns_qf_none, NULL, &adnse->query);
+ }
adnse->next = adnse_first;
adnse_first = adnse;
if (opt.verbose == 2)
- fprintf(stderr, _("Submitted %s to adns\n"), inet_ntoa(adnse->ip));
+ fprintf(stderr, _("Submitted %s to adns\n"), my_inet_ntop(&adnse->ip));
}
-void adns_check_entry(struct in_addr ip)
+void adns_check_entry(struct in6_addr *ip)
{
struct dns_cache *dns;
struct adns_entry *adnse;
@@ -215,7 +291,7 @@
dns = dns_first;
while (dns != NULL) {
- if (ip.s_addr == dns->ip.s_addr) {
+ if (compare_ipv6_equal(ip, &dns->ip) == 0) {
found++;
break;
}
@@ -224,7 +300,7 @@
if (!found) {
adnse = adnse_first;
while (adnse != NULL) {
- if (ip.s_addr == adnse->ip.s_addr) {
+ if (compare_ipv6_equal(ip, &adnse->ip) == 0) {
found++;
break;
}
@@ -244,9 +320,9 @@
while ((this != NULL) && (opt.max == 0 || max < opt.max)) {
if (this->count >= opt.least) {
if (opt.src_ip)
- adns_check_entry(this->shost);
+ adns_check_entry(&this->shost);
if (opt.dst_ip)
- adns_check_entry(this->dhost);
+ adns_check_entry(&this->dhost);
}
if (opt.max != 0)
max++;
@@ -257,12 +333,29 @@
this_host = first_host;
while (this_host != NULL) {
if (opt.src_ip)
- adns_check_entry(this_host->shost);
+ adns_check_entry(&this_host->shost);
if (opt.dst_ip)
- adns_check_entry(this_host->dhost);
+ adns_check_entry(&this_host->dhost);
this_host = this_host->next;
}
}
}
#endif
+
+struct in6_addr *resolve_hostname_from_cache(char *name)
+{
+ struct dns_cache *dns;
+
+ dns = dns_first;
+ while (dns != NULL) {
+ if (strcmp(dns->fqdn, name) == 0) {
+ if (opt.verbose == 2)
+ fprintf(stderr, _("Resolving %s from cache\n"), name);
+ return &dns->ip;
+ }
+ dns = dns->next;
+ }
+
+ return NULL;
+}
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/resolve.h
^
|
@@ -1,12 +1,13 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: resolve.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: resolve.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _RESOLVE_H
#define _RESOLVE_H
char *resolve_protocol(int proto);
char *resolve_service(int port, char *proto);
-char *resolve_hostname(struct in_addr ip);
+char *resolve_address(struct in6_addr ip);
+void init_dns_cache(struct in6_addr *ip, char *hostname);
#ifdef HAVE_ADNS
enum {
@@ -16,4 +17,6 @@
void adns_preresolve(unsigned char mode);
#endif
+struct in6_addr *resolve_hostname_from_cache(char *name);
+
#endif
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/response.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: response.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: response.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -110,41 +110,41 @@
} else {
xstrncpy(buf, opt.respond_script, BUFSIZE);
if (mode == EX_RESPOND_ADD) {
- strncat(buf, " add", BUFSIZE);
+ strncat(buf, " add", BUFSIZE - strlen(buf) - 1);
} else {
- strncat(buf, " remove", BUFSIZE);
+ strncat(buf, " remove", BUFSIZE - strlen(buf) - 1);
}
}
- snprintf(buf2, BUFSIZE, " %d %s", this_host->count, inet_ntoa(this_host->shost));
- strncat(buf, buf2, BUFSIZE);
+ snprintf(buf2, BUFSIZE, " %d %s", this_host->count, my_inet_ntop(&this_host->shost));
+ strncat(buf, buf2, BUFSIZE - strlen(buf) - 1);
if (opt.dst_ip) {
- snprintf(buf2, BUFSIZE, " %s", inet_ntoa(this_host->dhost));
- strncat(buf, buf2, BUFSIZE);
+ snprintf(buf2, BUFSIZE, " %s", my_inet_ntop(&this_host->dhost));
+ strncat(buf, buf2, BUFSIZE - strlen(buf) - 1);
} else {
- strncat(buf, " -", BUFSIZE);
+ strncat(buf, " -", BUFSIZE - strlen(buf) - 1);
}
if (opt.proto) {
snprintf(buf2, BUFSIZE, " %d", this_host->protocol);
- strncat(buf, buf2, BUFSIZE);
+ strncat(buf, buf2, BUFSIZE - strlen(buf) - 1);
} else {
- strncat(buf, " -", BUFSIZE);
+ strncat(buf, " -", BUFSIZE - strlen(buf) - 1);
}
if (opt.src_port) {
snprintf(buf2, BUFSIZE, " %d", this_host->sport);
- strncat(buf, buf2, BUFSIZE);
+ strncat(buf, buf2, BUFSIZE - strlen(buf) - 1);
} else {
- strncat(buf, " -", BUFSIZE);
+ strncat(buf, " -", BUFSIZE - strlen(buf) - 1);
}
if (opt.dst_port) {
snprintf(buf2, BUFSIZE, " %d", this_host->dport);
- strncat(buf, buf2, BUFSIZE);
+ strncat(buf, buf2, BUFSIZE - strlen(buf) - 1);
} else {
- strncat(buf, " -", BUFSIZE);
+ strncat(buf, " -", BUFSIZE - strlen(buf) - 1);
}
run_command(buf);
@@ -165,7 +165,7 @@
while (this != NULL) {
if ((now - this->end_time) >= opt.recent) {
if (opt.verbose == 2)
- syslog(LOG_NOTICE, _("Deleting packet cache entry (%s)"), inet_ntoa(this->shost));
+ syslog(LOG_NOTICE, _("Deleting packet cache entry (%s)"), my_inet_ntop(&this->shost));
if (is_first == 1) {
prev = this->next;
free(this->hostname);
@@ -199,7 +199,7 @@
while (this_host != NULL) {
if ((this_host->time != 0) && ((now - this_host->time) >= opt.recent)) {
if (opt.verbose == 2)
- syslog(LOG_NOTICE, _("Deleting host status entry (%s)"), inet_ntoa(this_host->shost));
+ syslog(LOG_NOTICE, _("Deleting host status entry (%s)"), my_inet_ntop(&this_host->shost));
if (opt.response & OPT_RESPOND)
react(EX_RESPOND_REMOVE, this_host);
if (is_first == 1) {
@@ -223,15 +223,19 @@
struct known_hosts *is_known(struct conn_data *host)
{
struct known_hosts *this_host;
+ int i;
+ struct in6_addr testhost;
this_host = first_host;
while (this_host != NULL) {
- if (this_host->shost.s_addr != (host->shost.s_addr & this_host->netmask.s_addr)) {
+ for (i = 0; i < 16; i++)
+ testhost.s6_addr[i] = host->shost.s6_addr[i] & this_host->netmask.s6_addr[i];
+ if (memcmp(&this_host->shost, &testhost, sizeof(struct in6_addr)) != 0) {
goto no_match;
}
if (this_host->time == 0)
return this_host;
- if ((opt.dst_ip) && (this_host->dhost.s_addr != host->dhost.s_addr)) {
+ if ((opt.dst_ip) && (compare_ipv6_equal(&this_host->dhost, &host->dhost) != 0)) {
goto no_match;
}
if ((opt.dst_port) && (this_host->dport != host->dport)) {
@@ -265,7 +269,7 @@
this_host->time = time(NULL);
this_host->count = (this->count / opt.threshold) * opt.threshold;
this_host->shost = this->shost;
- this_host->netmask.s_addr = 0xFFFFFFFF;
+ memset(&this_host->netmask, 0xff, sizeof(struct in6_addr));
this_host->protocol = this->protocol;
this_host->dhost = this->dhost;
this_host->sport = this->sport;
@@ -273,7 +277,7 @@
this_host->id = opt.global_id++;
this_host->next = first_host;
first_host = this_host;
- syslog(LOG_NOTICE, _("ALERT: %d attempts from %s"), this_host->count, inet_ntoa(this_host->shost));
+ syslog(LOG_NOTICE, _("ALERT: %d attempts from %s"), this_host->count, my_inet_ntop(&this_host->shost));
if (opt.response & OPT_NOTIFY)
react(EX_NOTIFY, this_host);
if (opt.response & OPT_RESPOND)
@@ -340,10 +344,10 @@
break;
case SORT_SOURCEHOST:
if (opt.sortmode == ORDER_ASCENDING) {
- if (ntohl(op1->shost.s_addr) > ntohl(op2->shost.s_addr))
+ if (compare_ipv6(&op1->shost, &op2->shost) == -1)
cond++;
} else {
- if (ntohl(op1->shost.s_addr) < ntohl(op2->shost.s_addr))
+ if (compare_ipv6(&op1->shost, &op2->shost) == 1)
cond++;
}
break;
@@ -358,10 +362,10 @@
break;
case SORT_DESTHOST:
if (opt.sortmode == ORDER_ASCENDING) {
- if (ntohl(op1->dhost.s_addr) > ntohl(op2->dhost.s_addr))
+ if (compare_ipv6(&op1->dhost, &op2->dhost) == -1)
cond++;
} else {
- if (ntohl(op1->dhost.s_addr) < ntohl(op2->dhost.s_addr))
+ if (compare_ipv6(&op1->dhost, &op2->dhost) == 1)
cond++;
}
break;
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/response.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: response.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: response.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _RESPONSE_H
#define _RESPONSE_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/snort.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: snort.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: snort.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _SNORT_H
#define _SNORT_H
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/snort.l
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: snort.l 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: snort.l 731 2013-05-17 14:15:23Z bw $ */
%option prefix="snort"
%option outfile="snort.c"
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/utils.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: utils.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: utils.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -181,9 +181,9 @@
opt.line->interface[0] = '\0';
opt.line->protocol = 0;
opt.line->datalen = 0;
- opt.line->shost.s_addr = 0;
+ memset(&opt.line->shost, 0, sizeof(struct in6_addr));
opt.line->sport = 0;
- opt.line->dhost.s_addr = 0;
+ memset(&opt.line->dhost, 0, sizeof(struct in6_addr));
opt.line->dport = 0;
opt.line->flags = 0;
opt.line->count = 0;
@@ -250,75 +250,167 @@
opt.line->time = mktime(t);
}
-unsigned char convert_ip(char *ip, struct in_addr *addr)
+char compare_ipv6(struct in6_addr *ip1, struct in6_addr *ip2)
+{
+ int i;
+ for (i = 0; i < 16; i++) {
+ if (ip1->s6_addr[i] != ip2->s6_addr[i]) {
+ if (ip1->s6_addr[i] < ip2->s6_addr[i]) {
+ return -1;
+ } else {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+char compare_ipv6_equal(struct in6_addr *ip1, struct in6_addr *ip2)
+{
+ if (ip1->s6_addr32[0] == ip2->s6_addr32[0]
+ && ip1->s6_addr32[1] == ip2->s6_addr32[1]
+ && ip1->s6_addr32[2] == ip2->s6_addr32[2]
+ && ip1->s6_addr32[3] == ip2->s6_addr32[3])
+ return 0;
+ return 1;
+}
+
+unsigned char isV4mappedV6addr(struct in6_addr *ip)
+{
+ int i;
+ for (i = 0; i < 10; i++) {
+ if (ip->s6_addr[i] != 0)
+ return 0;
+ }
+ for (i = 10; i < 12; i++) {
+ if (ip->s6_addr[i] != 0xff)
+ return 0;
+ }
+ return 1;
+}
+
+char *my_inet_ntop(struct in6_addr *ip)
+{
+ const char *rp;
+ if (isV4mappedV6addr(ip)) {
+ rp = inet_ntop(AF_INET, ip->s6_addr + 12, opt.ntop, INET_ADDRSTRLEN);
+ } else {
+ rp = inet_ntop(AF_INET6, ip->s6_addr, opt.ntop, INET6_ADDRSTRLEN);
+ }
+ if (rp == NULL) {
+ snprintf(opt.ntop, INET6_ADDRSTRLEN, _("[error]"));
+ }
+ return opt.ntop;
+}
+
+unsigned char convert_ip(char *ip, struct in6_addr *addr)
{
-#ifndef SOLARIS
int retval;
- retval = inet_aton(ip, addr);
- if (retval == 0) {
-#else
-#ifndef INADDR_NONE
-#define INADDR_NONE -1
-#endif
- addr->s_addr = inet_addr(ip);
- if (addr->s_addr == INADDR_NONE) {
-#endif
- if (opt.verbose)
- fprintf(stderr, _("IP address error: %s\n"), ip);
- return IN_ADDR_ERROR;
+ retval = inet_pton(AF_INET6, ip, addr->s6_addr);
+ if (retval != 1) {
+ char nnb[HOSTLEN];
+ snprintf(nnb, HOSTLEN, "::ffff:%s", ip);
+ retval = inet_pton(AF_INET6, nnb, addr->s6_addr);
+ if (retval != 1) {
+ if (opt.verbose)
+ fprintf(stderr, _("IP address error: %s\n"), ip);
+ return IN_ADDR_ERROR;
+ }
}
return IN_ADDR_OK;
}
-unsigned long int parse_cidr(char *input)
+void parse_cidr(char *input, struct in6_addr *in6_addr)
{
char *pnt;
- int n;
- unsigned long int netmask[33] = {
- 0x0,
- 0x80000000, 0xC0000000, 0xE0000000, 0xF0000000,
- 0xF8000000, 0xFC000000, 0xFE000000, 0xFF000000,
- 0xFF800000, 0xFFC00000, 0xFFE00000, 0xFFF00000,
- 0xFFF80000, 0xFFFC0000, 0xFFFE0000, 0xFFFF0000,
- 0xFFFF8000, 0xFFFFC000, 0xFFFFE000, 0xFFFFF000,
- 0xFFFFF800, 0xFFFFFC00, 0xFFFFFE00, 0xFFFFFF00,
- 0xFFFFFF80, 0xFFFFFFC0, 0xFFFFFFE0, 0xFFFFFFF0,
- 0xFFFFFFF8, 0xFFFFFFFC, 0xFFFFFFFE, 0xFFFFFFFF
- };
+ int n, s, x, y, z;
+ struct in6_addr ip;
pnt = strstr(input, "/");
if (pnt != NULL) {
n = atoi(pnt + 1);
- if ((n < 0) || (n > 32)) {
+ *pnt = '\0';
+ } else {
+ n = 128;
+ }
+
+ memset(in6_addr, 0, sizeof(struct in6_addr));
+ convert_ip(input, &ip);
+ if (isV4mappedV6addr(&ip)) {
+ if ((pnt != NULL) && ((n < 0) || (n > 32))) {
fprintf(stderr, _("Error in CIDR format: %s\n"), input);
exit(EXIT_FAILURE);
}
- *pnt = '\0';
+ in6_addr->s6_addr[10] = 0xff;
+ in6_addr->s6_addr[11] = 0xff;
+ s = 96;
+ y = 12;
+ if (pnt != NULL)
+ n += 96;
+ } else {
+ if ((n < 0) || (n > 128)) {
+ fprintf(stderr, _("Error in CIDR format: %s\n"), input);
+ exit(EXIT_FAILURE);
+ }
+ y = s = 0;
+ }
+
+ z = 0;
+ for (x = s; x < n; x++) {
+ in6_addr->s6_addr[y] = in6_addr->s6_addr[y] | (1 << (7 - z));
+ z++;
+ if (z == 8) {
+ z = 0;
+ y++;
+ }
+ }
+}
+
+int convert_mask(struct in6_addr *in6_addr)
+{
+ int s, n, x, y, z;
+
+ if (isV4mappedV6addr(in6_addr)) {
+ s = 96;
+ y = 12;
} else {
- n = 32;
+ y = s = 0;
}
- return ntohl(netmask[n]);
+ n = z = 0;
+ for (x = s; x < 128; x++) {
+ if ((in6_addr->s6_addr[y] & (1 << (7 - z))) == 0)
+ break;
+ n++;
+ z++;
+ if (z == 8) {
+ z = 0;
+ y++;
+ }
+ }
+ return n;
}
void add_known_host(char *ip)
{
struct known_hosts *host, *test_host;
+ int i;
host = xmalloc(sizeof(struct known_hosts));
- host->netmask.s_addr = parse_cidr(ip);
+ parse_cidr(ip, &host->netmask);
if (convert_ip(ip, &host->shost) == IN_ADDR_ERROR) {
fprintf(stderr, _("(known host)\n"));
free(host);
exit(EXIT_FAILURE);
}
- host->shost.s_addr = host->shost.s_addr & host->netmask.s_addr;
+ for (i = 0; i < 16; i++)
+ host->shost.s6_addr[i] = host->shost.s6_addr[i] & host->netmask.s6_addr[i];
test_host = first_host;
while (test_host != NULL) {
- if (test_host->shost.s_addr == host->shost.s_addr) {
+ if (compare_ipv6_equal(&test_host->shost, &host->shost) == 0) {
free(host);
return;
}
@@ -328,7 +420,7 @@
host->time = 0;
host->count = 0;
host->protocol = 0;
- host->dhost.s_addr = 0;
+ memset(&host->dhost, 0, sizeof(struct in6_addr));
host->sport = 0;
host->dport = 0;
host->id = opt.global_id++;
@@ -339,23 +431,24 @@
void add_exclude_hpb(char *input, unsigned char mode)
{
struct parser_options *excluded_this;
- struct in_addr ip;
+ struct in6_addr ip;
+ int i;
excluded_this = xmalloc(sizeof(struct parser_options));
excluded_this->mode = mode;
- excluded_this->svalue = NULL;
if (mode & PARSER_MODE_HOST) {
struct parser_options *excluded_test;
- excluded_this->netmask.s_addr = parse_cidr(input);
+ parse_cidr(input, &excluded_this->netmask);
if (convert_ip(input, &ip) == IN_ADDR_ERROR) {
fprintf(stderr, _("(excluded host)\n"));
free(excluded_this);
exit(EXIT_FAILURE);
}
- excluded_this->value = ip.s_addr & excluded_this->netmask.s_addr;
+ for (i = 0; i < 16; i++)
+ excluded_this->host.s6_addr[i] = ip.s6_addr[i] & excluded_this->netmask.s6_addr[i];
excluded_test = excluded_first;
while (excluded_test != NULL) {
- if (excluded_test->value == excluded_this->value) {
+ if (compare_ipv6_equal(&excluded_test->host, &excluded_this->host) == 0) {
free(excluded_this);
return;
}
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/utils.h
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: utils.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: utils.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _UTILS_H
#define _UTILS_H
@@ -16,8 +16,13 @@
void init_line(void);
void mode_error(void);
void build_time(char *smonth, int day, int hour, int minute, int second);
-unsigned char convert_ip(char *ip, struct in_addr *addr);
-unsigned long int parse_cidr(char *input);
+char compare_ipv6(struct in6_addr *ip1, struct in6_addr *ip2);
+char compare_ipv6_equal(struct in6_addr *ip1, struct in6_addr *ip2);
+unsigned char isV4mappedV6addr(struct in6_addr *ip);
+char *my_inet_ntop(struct in6_addr *ip);
+unsigned char convert_ip(char *ip, struct in6_addr *addr);
+void parse_cidr(char *input, struct in6_addr *in6_addr);
+int convert_mask(struct in6_addr *in6_addr);
void add_known_host(char *ip);
void add_exclude_hpb(char *input, unsigned char mode);
void add_input_file(char *name);
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/whois.c
^
|
@@ -1,5 +1,5 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: whois.c 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: whois.c 731 2013-05-17 14:15:23Z bw $ */
#include <stdio.h>
#include <stdlib.h>
@@ -19,8 +19,8 @@
#include "main.h"
#include "utils.h"
-#define QUAD2IP(a,b,c,d) ((a)<<24 | (b)<<16 | (c<<8) | (d))
-#define PREFIX2MASK(n) (~0UL<<(32-(n)))
+#define QUAD2IP(a,b,c,d) ((a) | (b)<<8 | (c<<16) | (d)<<24)
+#define PREFIX2MASK(n) (~0U>>(32-(n)))
struct whois_entry *whois_first = NULL;
extern struct options opt;
@@ -121,7 +121,7 @@
}
}
-void whois_from_ip(struct in_addr ip, struct whois_entry *we)
+void whois_from_ip(struct in6_addr ip, struct whois_entry *we)
{
char cmdstr[WHOISCMDLEN], *data, *descs, *desce;
@@ -130,12 +130,12 @@
we->ip_descr = NULL;
we->as_descr = NULL;
- snprintf(cmdstr, WHOISCMDLEN, "!r%s/32,l\n", inet_ntoa(ip));
+ snprintf(cmdstr, WHOISCMDLEN, "!r%s/32,l\n", my_inet_ntop(&ip));
write(opt.whois_sock, cmdstr, strlen(cmdstr));
data = whois_read_data();
if (data != NULL) {
- descs = desce = data;
+ descs = data;
while (*descs != '\0') {
if ((we->as_number == 0) && (strstr(descs, "origin:") == descs)) {
descs += 7;
@@ -148,8 +148,8 @@
we->as_number = atoi(descs);
whois_search_desc(we);
descs = desce + 1;
- } else if ((we->ip_route == NULL) && (strstr(descs, "route:") == descs)) {
- descs += 6;
+ } else if ((we->ip_route == NULL) && ((strstr(descs, "route:") == descs) || (strstr(descs, "route6:") == descs))) {
+ descs += 7;
while ((*descs == ' ') || (*descs == '\t'))
descs++;
desce = strchr(descs, '\n');
@@ -191,40 +191,46 @@
}
}
-struct whois_entry *whois(struct in_addr ip)
+struct whois_entry *whois(struct in6_addr ip)
{
- char adds[WHOISROUTELEN];
- struct in_addr net, addr;
+ char saddrt[WHOISROUTELEN];
+ struct in6_addr in6_mask, in6_addrt, in6_net;
struct whois_entry *we;
- unsigned long int tmp_ip;
+ int i;
if (opt.whois_sock == -1)
return NULL;
- tmp_ip = ntohl(ip.s_addr);
- if ((tmp_ip == QUAD2IP(0, 0, 0, 0))
- || ((tmp_ip & PREFIX2MASK(8)) == QUAD2IP(127, 0, 0, 0))
- || ((tmp_ip & PREFIX2MASK(8)) == QUAD2IP(10, 0, 0, 0))
- || ((tmp_ip & PREFIX2MASK(12)) == QUAD2IP(172, 16, 0, 0))
- || ((tmp_ip & PREFIX2MASK(16)) == QUAD2IP(192, 168, 0, 0))
- || (tmp_ip == QUAD2IP(255, 255, 255, 255)))
- return NULL;
+ if (isV4mappedV6addr(&ip)) {
+ if ((ip.s6_addr32[3] == QUAD2IP(0, 0, 0, 0))
+ || ((ip.s6_addr32[3] & PREFIX2MASK(8)) == QUAD2IP(127, 0, 0, 0))
+ || ((ip.s6_addr32[3] & PREFIX2MASK(8)) == QUAD2IP(10, 0, 0, 0))
+ || ((ip.s6_addr32[3] & PREFIX2MASK(12)) == QUAD2IP(172, 16, 0, 0))
+ || ((ip.s6_addr32[3] & PREFIX2MASK(16)) == QUAD2IP(192, 168, 0, 0))
+ || (ip.s6_addr32[3] == QUAD2IP(255, 255, 255, 255)))
+ return NULL;
+ } else {
+ if ((ip.s6_addr[0] & 0xE0) != 0x20)
+ return NULL;
+ }
we = whois_first;
while (we != NULL) {
- xstrncpy(adds, we->ip_route, WHOISROUTELEN);
- net.s_addr = ip.s_addr & parse_cidr(adds);
- convert_ip(adds, &addr);
- if (addr.s_addr == net.s_addr) {
+ xstrncpy(saddrt, we->ip_route, WHOISROUTELEN);
+ parse_cidr(saddrt, &in6_mask);
+ for (i = 0; i < 16; i++)
+ in6_addrt.s6_addr[i] = ip.s6_addr[i] & in6_mask.s6_addr[i];
+ convert_ip(saddrt, &in6_net);
+ if (compare_ipv6_equal(&in6_addrt, &in6_net) == 0) {
if (opt.verbose)
- fprintf(stderr, _("Looking up whois info for %s from cache\n"), inet_ntoa(ip));
+ fprintf(stderr, _("Looking up whois info for %s(/%d) from cache\n"), my_inet_ntop(&ip), convert_mask(&in6_mask));
return (we);
}
we = we->next;
}
if (opt.verbose)
- fprintf(stderr, _("Looking up whois info for %s\n"), inet_ntoa(ip));
+ fprintf(stderr, _("Looking up whois info for %s\n"), my_inet_ntop(&ip));
we = xmalloc(sizeof(struct whois_entry));
whois_from_ip(ip, we);
|
[-]
[+]
|
Changed |
fwlogwatch-1.4.tar.bz2/whois.h
^
|
@@ -1,10 +1,10 @@
-/* Copyright (C) 2000-2010 Boris Wesslowski */
-/* $Id: whois.h 706 2010-10-06 12:02:36Z bw $ */
+/* Copyright (C) 2000-2013 Boris Wesslowski */
+/* $Id: whois.h 731 2013-05-17 14:15:23Z bw $ */
#ifndef _WHOIS_H
#define _WHOIS_H
-struct whois_entry *whois(struct in_addr ip);
+struct whois_entry *whois(struct in6_addr ip);
void whois_connect(const char *whois_server);
void whois_close(void);
|