Hello RTIR,
I’ve borrowed the code from RTIR_FindIP.pm and modified it so I can specify
the ticket object to Add and Delete IP addresses. This is so I can iterate
through child tickets of an Incident and perform the same action on them.
I can add IP addresses to CF.{IP} but not delete IP addresses though. I’m
stumped. Any clues about how to delete an IP address from the IP custom
field?
This works: (%existing is a hash where each key is an IP address already
in the CF)
$self->AddIP( Ticket => $ticket, IP => $ipaddr, CustomField => $cf, Skip =>
%existing );
sub AddIP {
my $self = shift;
my %arg = ( CustomField => undef, IP => undef, Skip => {}, @_ );
return 0 if !$arg{‘IP’} || $arg{‘Skip’}->{ $arg{‘IP’} }++ ||
$arg{‘Skip’}->{ $arg{‘IP’} .‘-’. $arg{‘IP’} }++;
my $t = $arg{‘Ticket’};
my ($status, $msg) = $t->AddCustomFieldValue( Value => $arg{‘IP’},
Field => $arg{‘CustomField’}, );
RT->Logger->error(“Couldn’t add IP address: $msg”) unless $status;
return 1;
}
The code that errors out: (%keep is a hash where each key is a list of IP
addresses not to delete)
$spots_left += $self->RemIP( Ticket => $ticket, IP => $, CustomField =>
$cf, Skip => %keep );
sub RemIP {
my $self = shift;
my %arg = ( CustomField => undef, IP => undef, Skip => {}, @ );
return 0 if !$arg{‘IP’} || $arg{‘Skip’}->{ $arg{‘IP’} }++ ||
$arg{‘Skip’}->{ $arg{‘IP’} .‘-’. $arg{‘IP’} }++;
my $t = $arg{‘Ticket’};
my ($status, $msg) = $t->DeleteCustomFieldValue( Value => $arg{‘IP’},
Field => $arg{‘CustomField’}, );
RT->Logger->error(“Couldn’t remove IP address: $msg”) unless $status;
return 1;
}
The error:
RT::CustomField::ParseIPRange Unimplemented in RT::ObjectCustomFieldValue.
(/opt/rt4/bin/…/lib/RT/ObjectCustomFieldValue.pm line 169)
Commenting out DeleteCustomFieldValue() line and the logger line make the
error not happen so I’m sure that line is the problem one.
Thank you for reading!
Landon Stewart :: lstewart@iweb.com
Lead Specialist, Abuse and Security Management
Spécialiste principal, gestion des abus et sécurité
http://iweb.com :: +1 (888) 909-4932