Firewall-Policy-Designer
view release on metacpan or search on metacpan
lib/Firewall/Policy/Designer/Fortinet.pm view on Meta::CPAN
package Firewall::Policy::Designer::Fortinet;
#------------------------------------------------------------------------------
# å è½½ç³»ç»æ¨¡å
#------------------------------------------------------------------------------
use Moose;
use namespace::autoclean;
#------------------------------------------------------------------------------
# å è½½é¡¹ç®æ¨¡å
#------------------------------------------------------------------------------
use Firewall::Utils::Ip;
use Firewall::Policy::Searcher::Report::FwInfo;
has dbi => ( is => 'ro', does => 'Firewall::DBI::Role', required => 1, );
has searcherReportFwInfo => ( is => 'ro', isa => 'Firewall::Policy::Searcher::Report::FwInfo', required => 1, );
has commandText => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [] }, );
sub addToCommandText {
my ( $self, @commands ) = @_;
push @{$self->commandText}, @commands;
}
sub design {
my $self = shift;
#delete $self->searcherReportFwInfo->{parser};
#say dumper $self->searcherReportFwInfo;exit;
if ( $self->searcherReportFwInfo->type eq 'new' ) {
$self->createRule;
}
elsif ( $self->searcherReportFwInfo->type eq 'modify' ) {
$self->modifyRule;
}
elsif ( $self->searcherReportFwInfo->type eq 'ignore' ) {
if ( defined $self->searcherReportFwInfo->action ) {
my $param = $self->searcherReportFwInfo->action->{'new'};
for my $type ( keys %{$param} ) {
if ( $type eq 'natDst' or $type eq 'natSrc' ) {
$self->createNat( $param->{$type}, $type );
}
}
}
}
else {
confess( "ERROR: searcherReportFwInfo->type(" . $self->searcherReportFwInfo->type . ") must be 'new' or 'modify'" );
}
=pod
if (@{$self->commandText} >0 ){
push @{$self->commandText},'save';
}
=cut
my $parser = $self->searcherReportFwInfo->{parser};
if ( defined $parser->{isvdom} and $parser->{isvdom} == 1 ) {
unshift @{$self->commandText}, "edit $parser->{vdom}";
unshift @{$self->commandText}, "config vdom";
}
push @{$self->commandText}, "end";
return join( '', map {"$_\n"} @{$self->commandText} );
} ## end sub design
sub createRule {
my $self = shift;
my $action = $self->searcherReportFwInfo->action->{'new'};
my $nameMap = $self->checkAndCreateAddrOrSrvOrNat($action);
=pod
my $natString = '';
$natString .= $nameMap->{natSrc}->[0]->{natStr} if defined $nameMap->{natSrc};
$natString .= $nameMap->{natDst}->[0]->{natStr} if defined $nameMap->{natDst};
=cut
my $schedule = $self->searcherReportFwInfo->{schedule};
my $scheduleName = 'always';
( run in 0.534 second using v1.01-cache-2.11-cpan-39bf76dae61 )