package XML::IODEF::Simple::Plugin::Service;
use Regexp::Common qw/net/;
sub prepare {
my $class = shift;
my $info = shift;
return(0) unless($info->{'portlist'} || $info->{'protocol'});
return(1);
}
sub convert {
my $class = shift;
my $info = shift;
my $iodef = shift;
$info->{'protocol'} = normalize($info->{'protocol'}) if($info->{'protocol'});
unless($iodef->get('IncidentEventDataFlowSystemServicePortlist')){
$iodef->add('IncidentEventDataFlowSystemServicePortlist',$info->{'portlist'}) if($info->{'portlist'});
}
unless($iodef->get('IncidentEventDataFlowSystemServiceip_protocol')){
$iodef->add('IncidentEventDataFlowSystemServiceip_protocol',$info->{'protocol'}) if($info->{'protocol'});
}
return($iodef);
}
sub normalize {
my $proto = shift;
return $proto if($proto =~ /^\d+$/);
for(lc($proto)){
if(/^tcp$/){
return(6);
}
if(/^udp$/){
return(17);
}
if(/^icmp$/){
return(1);
}
}
return($proto);
}
1;