CPM
view release on metacpan or search on metacpan
my $host;
my $i=0;
$answer=~s/OK:OIDL#//;
$host->{RESPONSE}='&';
my @codes=split("#",$answer);
foreach my $code(@codes)
{
$i++;
$code=~/\!\!/;
my $counterid=$`;
my $oid=$';
$counterid=~s/\AC/L/; # adapt Color to Legal
$counterid=~s/\AB/L/; # adapt Black to Legal
$counterid=~s/\AG/L/; # adapt Generic to Legal
if($oid=~/\AMAC/)
{
$oid=~s/\AMAC//;
$host->{RESPONSE}.=$counterid.'='.$self->request($oid,-type=>'MAC').'&';
}
else{
$host->{RESPONSE}.=$counterid.'='.$self->request($oid).'&';
}
}
return $host;
}
sub listandcall
{
my $self=shift;
my %properties=@_; # rest of params by hash
my $browser = LWP::UserAgent->new;
if($self->{xml}->{proxy} ne '')
{
$browser->proxy(['http'],$self->{xml}->{proxy});
}
elsif($self->{xml}->{proxy} eq 'auto')
{
$browser->env_proxy;
}
my $printers=0;
my $verbose=0;
$verbose=$properties{'-verbose'} if defined $properties{'-verbose'};
print "Proxy: $self->{xml}->{proxy}\n" if ($verbose && $self->{xml}->{proxy} ne '');
my $devices=$self->{xml}->{devices}->{device};
foreach my $device(@$devices)
{
$self->{target}=$device->{ip};
print "Checking $self->{target}\n" if $verbose;
if(my $sn=$self->checkip)
{
$printers++;
print "Printer found: $sn\n" if $verbose;
print "Connecting... " if $verbose;
my $response = $browser->get($self->{url}.'&devid='.$sn);
if($response->is_success)
{
print "OK\n" if $verbose;
my $answer=$response->decoded_content;
if($answer eq 'OK:GEN')
{
print "No defined model, using Generics.\n" if $verbose;
if(my $host=$self->getgeneric)
{
print "Sending data\n" if $verbose;
my $a=$browser->get($self->{url}.'&devid='.$sn.'&devread=1'.$host->{RESPONSE});
}
else
{
print "Error during the data validation.\n" if $verbose;
return "ERROR: data validation failure";
}
}
elsif($answer=~/OK:OIDL#.*/)
{
print "Model identified\n" if $verbose;
my $host=$self->getmodel($answer);
$browser->get($self->{url}.'&devid='.$sn.'&devread=1'.$host->{RESPONSE});
}
elsif($answer=~/OK:MR#.*/)
{
print "Maximun number of readings per day achieved.\n" if $verbose;
return "ERROR: Maximun number of readings per day achieved";
}
elsif($answer=~/OK:UP#.*/)
{
print "Error, please verify yor configuration.\n" if $verbose;
return "ERROR: configuration fault";
}
}
else
{
print "Connection failed!\n" if $verbose;
return "ERROR: connection failed";
}
}
}
print "$printers Printer(s) monitorized\n" if $verbose;
return "OK $printers";
}
sub discoverandcall
{
my $self=shift;
my %properties=@_; # rest of params by hash
my $browser = LWP::UserAgent->new;
if($self->{xml}->{proxy} ne '')
{
$browser->proxy(['http'],$self->{xml}->{proxy});
}
elsif($self->{xml}->{proxy} eq 'auto')
{
$browser->env_proxy;
}
my $printers=0;
my $verbose=0;
$verbose=$properties{'-verbose'} if defined $properties{'-verbose'};
print "Proxy: $self->{xml}->{proxy}\n" if ($verbose && $self->{xml}->{proxy} ne '');
my $devices=$self->{xml}->{devices}->{device};
my $ranges=$self->{xml}->{range};
foreach my $range(@$ranges)
{
if ($range->{lan} eq '')
{
my $testip=eval{$self->{address}=Net::Address::IP::Local->public};
if($@){$self->{address}='127.0.0.1';}
}
else
{
$self->{address}=$range->{lan};
}
$self->{net}=$self->{address};
$self->{net}=~s/\.\d*\Z//; # extract net from address
my $init=1;
my $end=254;
$init=$range->{from} if defined $range->{from};
$end=$range->{to} if defined $range->{to};
print "Discovering LAN: $self->{net} [$init - $end] \n" if $verbose;
for (my $i=$init;$i<=$end;$i++)
{
$self->{target}=$self->{net}.'.'.$i;
print "Checking $self->{target}\n" if $verbose;
if(my $sn=$self->checkip)
{
$printers++;
print "Printer found: $sn\n" if $verbose;
my $response = $browser->get($self->{url}.'&devid='.$sn);
if($response->is_success)
{
my $answer=$response->decoded_content;
if($answer eq 'OK:GEN')
{
print "No model identified, using Generics.\n" if $verbose;
if(my $host=$self->getgeneric)
{
my $a=$browser->get($self->{url}.'&devid='.$sn.'&devread=1'.$host->{RESPONSE});
print "Sending data.\n" if $verbose;
}
else
{
print "Error during the data validation.\n" if $verbose;
return "ERROR: data validation failure";
}
}
elsif($answer=~/OK:OIDL#.*/)
{
print "Model identified.\n" if $verbose;
my $host=$self->getmodel($answer);
$browser->get($self->{url}.'&devid='.$sn.'&devread=1'.$host->{RESPONSE});
}
elsif($answer=~/OK:MR#.*/)
{
print "Maximum number of readings per day achieved.\n" if $verbose;
return "ERROR: maximum number of readings per day achieved";
}
elsif($answer=~/OK:UP#.*/)
{
print "Error, please verify yor configuration.\n" if $verbose;
return "ERROR: configuration fault";
}
}
else
{
print "Connection failed!\n" if $verbose;
return "ERROR: connection failed";
}
}
}
}
print "$printers Printer(s) monitorized\n";
return "OK $printers";
}
sub listandmail
{
my $self=shift;
my %properties=@_; # rest of params by hash
my $verbose=0;
$verbose=$properties{'-verbose'} if defined $properties{'-verbose'};
my $printers=0;
my $user=$self->{xml}->{mail}->{user};
my $pass=$self->{xml}->{mail}->{pass};
my $server=$self->{xml}->{mail}->{smtp};
my $to=$self->{xml}->{mail}->{to};
my $body_mail = "Mail sent by CPM - list\n\n#####\n";
my $devices=$self->{xml}->{devices}->{device};
foreach my $device(@$devices)
{
( run in 0.461 second using v1.01-cache-2.11-cpan-2398b32b56e )