CPM

 view release on metacpan or  search on metacpan

lib/CPM.pm  view on Meta::CPAN

  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 )