########################################################
# Copyright (c) 2008 Kirk Bauer
# Covered under the included MIT/X-Consortium License:
#    http://www.opensource.org/licenses/mit-license.php
# All modifications and contributions by other persons to
# this script are assumed to have been donated to the
# Logwatch project and thus assume the above copyright
# and licensing terms.  If you want to make contributions
# under your own copyright or a different license this
# must be explicitly stated in the contribution an the
# Logwatch project reserves the right to not accept such
# contributions.  If you have made significant
# contributions to this script and want to claim
# copyright please contact logwatch-devel@lists.sourceforge.net.
########################################################

use strict;

sub hostcmp {
  my ($a,$b) = @_;

  my ($an) = ($a =~ /(\d*)$/);
  my $ap = $`;
  my ($bn) = ($b =~ /(\d*)$/);
  my $bp = $`;
  return ($ap cmp $bp) || ($an <=> $bn);
}

my $TempDir = $ENV{'LOGWATCH_TEMP_DIR'};

my ($line, $host,$tothost);
my %hostlist;
my $HostFile = ("$TempDir/hostfile");
if (-f $HostFile) {
   open (TEMPFILE,$HostFile);
   foreach (<TEMPFILE>) {
      chomp;
      $hostlist{$_} = 1;
   }
   close (TEMPFILE);
}

while (defined($line = <STDIN>)) {
   #Would this miss some hosts?
   if ($line =~ m/^... .. ..:..:.. (\S*)/io) {
      $host = $1;
      $hostlist{$host} = 1 unless defined $hostlist{$host};
   }
}

open (TEMPFILE,">$HostFile") || die $!;
foreach $tothost (sort {&hostcmp($a,$b)} keys %hostlist) {
   chomp $tothost;
   if (length($tothost) == "0") {
   } else {
      print TEMPFILE "$tothost\n";
   }
}
close TEMPFILE;

# vi: shiftwidth=3 syntax=perl tabstop=3 et
# Local Variables:
# mode: perl
# perl-indent-level: 3
# indent-tabs-mode: nil
# End:
