From be828a80357390addcf8693b6e072fa067445494 Mon Sep 17 00:00:00 2001 From: Matt Simerson Date: Sat, 30 Jun 2012 15:40:24 -0400 Subject: [PATCH] added log/show_message, dropped .pl suffix to be consistent with other QP scripts --- log/{log2sql.pl => log2sql} | 0 log/show_message | 72 +++++++++++++++++++++++++++++++++ log/{summarize.pl => summarize} | 0 log/{watch.pl => watch} | 0 4 files changed, 72 insertions(+) rename log/{log2sql.pl => log2sql} (100%) create mode 100755 log/show_message rename log/{summarize.pl => summarize} (100%) rename log/{watch.pl => watch} (100%) diff --git a/log/log2sql.pl b/log/log2sql similarity index 100% rename from log/log2sql.pl rename to log/log2sql diff --git a/log/show_message b/log/show_message new file mode 100755 index 0000000..932726a --- /dev/null +++ b/log/show_message @@ -0,0 +1,72 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Data::Dumper; + +my $QPDIR = '/usr/home/qpsmtpd/smtpd'; +my $logfile = "$QPDIR/log/main/current"; + +my $is_ip = 0; +my $search = $ARGV[0]; + +if ( ! $search ) { + die "\nusage: $0 [ ip_address | PID ]\n\n"; +}; + +if ( $search =~ /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/ ) { + #print "it's an IP\n"; + $is_ip++; +}; + +open my $LOG, '<', $logfile; + +if ( $is_ip ) { # look for the connection start message for the IP + my $ip_matches; + while ( defined (my $line = <$LOG>) ) { + next if ! $line; + my ( $tai, $pid, $mess ) = split /\s/, $line, 3; + if ( 'Connection from ' eq substr( $mess, 0, 16 ) ) { + my ( $ip ) = (split /\s+/, $mess)[-1]; # IP is last word + $ip = substr $ip, 1, -1; # trim off brackets + if ( $ip eq $search ) { + $ip_matches++; + $search = $pid; + $is_ip = 0; + }; + }; + }; + seek $LOG, 0, 0; + die "no pid found for ip $search\n" if $is_ip; + print "showing the last of $ip_matches connnections from $ARGV[0]\n"; +}; + +print "showing QP message PID $search\n"; + +while ( defined (my $line = <$LOG>) ) { + next if ! $line; + my ( $tai, $pid, $mess ) = split /\s/, $line, 3; + next if ! $pid; + print $mess if ( $pid eq $search ); +}; +close $LOG; + + +sub get_qp_dir { + foreach my $user ( qw/ qpsmtpd smtpd / ) { + my ($homedir) = (getpwnam( $user ))[7] or next; + + if ( -d "$homedir/plugins" ) { + return "$homedir"; + }; + foreach my $s ( qw/ smtpd qpsmtpd qpsmtpd-dev / ) { + if ( -d "$homedir/$s/plugins" ) { + return "$homedir/$s"; + }; + }; + }; + if ( -d "./plugins" ) { + return Cwd::getcwd(); + }; +}; diff --git a/log/summarize.pl b/log/summarize similarity index 100% rename from log/summarize.pl rename to log/summarize diff --git a/log/watch.pl b/log/watch similarity index 100% rename from log/watch.pl rename to log/watch