Firewall-Policy-Designer
view release on metacpan or search on metacpan
lib/Firewall/Policy/Designer/Asa.pm view on Meta::CPAN
package Firewall::Policy::Designer::Asa;
#------------------------------------------------------------------------------
# å è½½ç³»ç»æ¨¡åï¼è¾
婿é 彿°åè½å屿§
#------------------------------------------------------------------------------
use Moose;
use namespace::autoclean;
#------------------------------------------------------------------------------
# å è½½é¡¹ç®æ¨¡å
#------------------------------------------------------------------------------
use Firewall::Utils::Ip;
use Firewall::Utils::Set;
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;
if ( $self->searcherReportFwInfo->type eq 'new' ) {
$self->createRule;
}
elsif ( $self->searcherReportFwInfo->type eq 'modify' ) {
$self->createRule;
}
elsif ( $self->searcherReportFwInfo->type eq 'ignore' ) {
if ( defined $self->searcherReportFwInfo->action ) {
my $natSrc = $self->searcherReportFwInfo->action->{'new'}{'natSrc'};
my $natDst = $self->searcherReportFwInfo->action->{'new'}{'natDst'};
if ( defined $natSrc ) {
for ( values %{$natSrc} ) {
my %natInfo;
$natInfo{'natSrc'} = $_;
$self->checkAndCreateNat( \%natInfo );
}
}
if ( defined $natDst ) {
for ( values %{$natDst} ) {
my %natInfo;
$natInfo{'natDst'} = $_;
$self->checkAndCreateNat( \%natInfo );
}
}
} ## end if ( defined $self->searcherReportFwInfo...)
}
else {
confess "ERROR: searcherReportFwInfo->type(" . $self->searcherReportFwInfo->type . ") Wrong!";
}
return join( '', map {"$_\n"} @{$self->commandText} );
} ## end sub design
sub createRule {
my $self = shift;
=example
access-list inbond extended permit tcp 10.50.0.0 255.255.0.0 host 10.11.100.252 eq 1234 log
access-list inbond extended permit ip host 10.35.174.100 host 10.11.100.37 log
access-list inbond extended permit tcp host 10.33.21.85 host 10.11.100.154 eq 1433
access-list inbond extended permit tcp object-group G_Pub_Terminal_Svr host 10.11.100.52 eq 3389 log
access-list inbond extndd permt tcp host 10.15.103.67 host 10.11.100.61 object-group P_152
=cut
my $natSrc = $self->searcherReportFwInfo->action->{new}{natSrc};
my $natDst = $self->searcherReportFwInfo->action->{new}{natDst};
if ( defined $natSrc or defined $natDst ) {
if ( defined $natSrc ) {
for ( values %{$natSrc} ) {
my %natInfo;
( run in 2.041 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )