#!/usr/bin/perl -w
###########################################
# Mike Schilli, 2006 (m@perlmeister.com)
###########################################
use strict;
use WatchLAN;
use Mail::Mailer;
use Cache::File;
use Template;
my $cache = Cache::File->new(
  cache_root => "$ENV{HOME}/.arpemail");

my $events = WatchLAN::Activity::Manager->
  get_activity(
    with_objects => [ 'device',
                      'ip_address' ],
    query   => [ "t2.name" => undef ],
    sort_by => ['minute'],
);

$events = [ grep { 
  my $mac = $_->device()->mac_address();
  !$cache->get($mac) &&
    ($cache->set($mac, 0) || 1);
} @$events ];

exit 0 unless @$events;

my $mailer = new Mail::Mailer;
$mailer->open({
  'From' => 'me@_foo.com',
  'To'   => 'oncall@_foo.com',
  'Subject' => "*** New MAC detected ***",
});

my $t = Template->new();
$t->process(
  \*DATA, { events => $events }, $mailer
) or die $t->error();

close($mailer);

__DATA__
[% FOREACH e = events %]
  When: [% e.minute %] 
  IP:   [% e.ip_address.string %]
  MAC:  [% e.device.mac_address %]

[% END %]
