#!/usr/bin/perl -w
#
# Logwatch script for hostapd
#
# Copyright 2005 Henrik Brix Andersen <brix@gentoo.org>
# Distributed under the terms of the GNU General Public License v2
# Alternatively, this file may be distributed under the terms of the BSD License

use strict;

my $debug = $ENV{'LOGWATCH_DEBUG'} || 0;
my $detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0;
my $debugcounter = 1;

my %hostapd;
my @unmatched;

if ($debug >= 5) {
	print STDERR "\n\nDEBUG: Inside HOSTAPD Filter\n\n";
}

while (defined(my $line = <STDIN>)) {
	if ($debug >= 5) {
		print STDERR "DEBUG($debugcounter): $line";
		$debugcounter++;
	}
    chomp($line);

	if (my ($iface,$mac,$layer,$details) = ($line =~ /(.*?): STA (.*?) (.*?): (.*?)$/i)) {
		unless ($detail == 10) {
			# collapse association events
			$details =~ s/^(associated) .*$/$1/i;
		}
		$hostapd{$iface}->{$mac}->{$layer}->{$details}++;
	} else {
		push @unmatched, "$line\n";
	}
}

if (keys %hostapd) {
	foreach my $iface (sort keys %hostapd) {
		print "Interface $iface:\n";
		foreach my $mac (sort keys %{$hostapd{$iface}}) {
			print "  Client MAC Address $mac:\n";
			foreach my $layer (sort keys %{$hostapd{$iface}->{$mac}}) {
				print "    $layer:\n";
				foreach my $details (sort keys %{$hostapd{$iface}->{$mac}->{$layer}}) {
					print "      $details";
					my $count = $hostapd{$iface}->{$mac}->{$layer}->{$details};
					if ($count > 1) {
						print ": " . $count . " Times";
					}
					print "\n";
				}
			}
		}
	}
}

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

exit(0);
