fail2ban
Giorgos Keramidas
keramida at ceid.upatras.gr
Tue Apr 24 14:31:25 EEST 2007
On 2007-04-24 10:24, Alexandros Kosiaris <alex at noc.ntua.gr> wrote:
>Christos Ricudis wrote:
>>George Iordanou wrote:
>>> μόνο μια φορά και στη συνέχεια έχει "Last message repeated
>>> X times". Προφανώς το παραπάνω δεν γίνεται αντιληπτό από
>>> το fail2ban.. Υπάρχει κάποιος τρόπος να απενεργοποιήσω το
>>> συγκεκριμένο feature του logger;
>
> Και επειδή ξέχασα να απαντήσω, τουλάχιστον το
>
> <KeramidasBait>
> syslogd του FreeBSD έχει το -c flag που απενεργοποιεί αυτό
> το feature. Το syslogd του debian δεν βλέπω να το έχει.
> </KeramidasBait>
Δεν είναι *τόσο* δύσκολο να το φτιάξεις αυτό, για αυτό δεν τσίμπησα.
Attached είναι π.χ. ένα καρα-experimental untested patch που έφτιαξα
μόλις για το sysklogd-1.4.1_20 του Debian, που υλοποιεί ακριβώς αυτό
το -c option, το οποίο είναι διαθέσιμο και σε plain text μορφή στη
διεύθυνση:
http://people.freebsd.org/~keramida/diff/sysklogd-1.4.1-nocompression.patch
%%%
diff -r c74c7571633b sysklogd.8
--- a/sysklogd.8 Tue Apr 24 14:14:47 2007 +0300
+++ b/sysklogd.8 Tue Apr 24 14:27:13 2007 +0300
@@ -86,6 +86,12 @@ described by the people from OpenBSD at
described by the people from OpenBSD at
http://www.psionic.com/papers/dns.html.
.TP
+.B "\-c"
+Disable the compression of repeated instances of the same line into
+a single line of the form ``last message repeated N times'' when the
+output is a pipe to another program. If specified twice disable this
+compression in all cases.
+.TP
.B "\-d"
Turns on debug mode. Using this the daemon will not proceed a
.BR fork (2)
diff -r c74c7571633b syslogd.c
--- a/syslogd.c Tue Apr 24 14:14:47 2007 +0300
+++ b/syslogd.c Tue Apr 24 14:27:13 2007 +0300
@@ -720,6 +720,7 @@ struct code FacNames[] = {
{NULL, -1},
};
+int Compression = 1; /* compression of repeated messages flag */
int Debug; /* debug flag */
char LocalHostName[MAXHOSTNAMELEN+1]; /* our hostname */
char *LocalDomain; /* our local domain name */
@@ -829,13 +830,17 @@ int main(argc, argv)
funix[i] = -1;
}
- while ((ch = getopt(argc, argv, "a:dhf:l:m:np:rs:v")) != EOF)
+ while ((ch = getopt(argc, argv, "a:cdhf:l:m:np:rs:v")) != EOF)
switch((char)ch) {
case 'a':
if (nfunix < MAXFUNIX)
funixn[nfunix++] = optarg;
else
fprintf(stderr, "Out of descriptors, ignoring %s\n", optarg);
+ break;
+ case 'c':
+ if (Compression >= 0)
+ Compression--;
break;
case 'd': /* debug */
Debug = 1;
@@ -1174,7 +1179,7 @@ int main(argc, argv)
int usage()
{
- fprintf(stderr, "usage: syslogd [-drvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
+ fprintf(stderr, "usage: syslogd [-cdrvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
" [-s domainlist] [-f conffile]\n");
exit(1);
}
@@ -1731,7 +1736,9 @@ void fprintlog(f, from, flags, msg)
if (msg) {
v->iov_base = msg;
v->iov_len = strlen(msg);
- } else if (f->f_prevcount > 1) {
+ } else if (f->f_prevcount > 1 &&
+ ((Compression == 0 && f->f_type != F_PIPE) ||
+ Compression > 0)) {
(void) snprintf(repbuf, sizeof(repbuf), "last message repeated %d times",
f->f_prevcount);
v->iov_base = repbuf;
%%%
More information about the Linux-greek-users
mailing list