package XML::IODEF::Simple::Plugin::Domain;
use Regexp::Common qw/URI/;
sub prepare {
my $class = shift;
my $info = shift;
my $address = $info->{'address'};
return unless($address);
return if($address =~ /^$RE{'URI'}{'HTTP'}$/);
return if($address =~ /^$RE{'URI'}{'HTTP'}{-scheme => 'https'}$/);
return(0) unless($address && $address =~ /^[a-zA-Z0-9.\-_]+\.[a-z]{2,5}$/);
unless($info->{'impact'} =~ /domain/){
$info->{'impact'} .= ' domain';
}
return(1);
}
sub convert {
my $self = shift;
my $info = shift;
my $iodef = shift;
my $address = lc($info->{'address'});
$iodef->add('IncidentEventDataFlowSystemNodeAddresscategory','ext-value');
$iodef->add('IncidentEventDataFlowSystemNodeAddressext-category','domain');
$iodef->add('IncidentEventDataFlowSystemNodeAddress',$address);
if($info->{'tld'}){
$iodef->add('IncidentEventDataFlowSystemAdditionalDatadtype','string');
$iodef->add('IncidentEventDataFlowSystemAdditionalDatameaning','tld');
$iodef->add('IncidentEventDataFlowSystemAdditionalData',$_);
}
if($info->{'rdata'}){
$iodef->add('IncidentEventDataFlowSystemAdditionalDatadtype','string');
$iodef->add('IncidentEventDataFlowSystemAdditionalDatameaning','rdata');
$iodef->add('IncidentEventDataFlowSystemAdditionalData',$info->{'rdata'} || '');
$iodef = XML::IODEF::Simple::Plugin::Bgp->convert($_,$iodef);
}
$iodef->add('IncidentEventDataFlowSystemAdditionalDatadtype','string');
$iodef->add('IncidentEventDataFlowSystemAdditionalDatameaning','type');
$iodef->add('IncidentEventDataFlowSystemAdditionalData',$info->{'type'} || 'A');
return($iodef);
}
1;