#!/usr/bin/perl -w
##########################################################################
# $Id: pam,v 1.4 1998/03/10 05:41:24 kirk Exp $
##########################################################################
# $Log: pam,v $
# Revision 1.4  1998/03/10 05:41:24  kirk
# Added support for a few more messages...
#
# Revision 1.3  1998/02/23 01:16:59  kirk
# Getting ready for a first distribution
#
# Revision 1.2  1998/02/23 00:15:39  kirk
# Finished up 'pam', starting on 'init'
#
# Revision 1.1  1998/02/22 23:17:02  kirk
# Added support for 'pam' messages...
#
##########################################################################

########################################################
# This was written and is maintained by:
#    Kirk Bauer <kirk@kaybee.org>
#
# Please send all comments, suggestions, bug reports,
#    etc, to kirk@kaybee.org.
#
########################################################

$Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'};

while (defined($ThisLine = <STDIN>)) {
    if ( ( $ThisLine =~ /^pam_get_user: no username obtained$/ ) or
	 ( $ThisLine =~ /^pam_end: NULL pam handle passed/ ) ) { 
	# We don't care about these
    }
    elsif ( $ThisLine =~ s/^FAILED LOGIN SESSION FROM ([^ ]+) FOR .*$/$1/ ) {
	$FailedLogins{$ThisLine}++;
    }
    else {
	# Report any unmatched entries...
	push @OtherList,$ThisLine;
    }
}

if (
    (@OtherList) or
    ( (keys %FailedLogins) and ($Detail >= 10) )
    ) {

    print "\n\n --------------------- pam Begin ------------------------ \n";

    if ( (keys %FailedLogins) and ($Detail >= 10) ) {
	print "\nFailed Login Sessions:\n";
	foreach $ThisOne (keys %FailedLogins) {
	    print "   " . $FailedLogins{$ThisOne} . " from " . $ThisOne;
	}
    }

    if ($#OtherList >= 0) {
	print "\n**Unmatched Entries**\n";
	print @OtherList;
    }

    print "\n\n ---------------------- pam End ------------------------- \n\n";

}

exit(0);



