Firewall-Policy-Designer
view release on metacpan or search on metacpan
lib/Firewall/Policy/Designer/ClearPolicy/Netscreen.pm view on Meta::CPAN
package Firewall::Policy::Designer::ClearPolicy::Netscreen;
#------------------------------------------------------------------------------
# å è½½ç³»ç»æ¨¡åï¼è¾
婿é 彿°åè½å屿§
#------------------------------------------------------------------------------
use Moose;
use namespace::autoclean;
#------------------------------------------------------------------------------
# å è½½é¡¹ç®æ¨¡å
#------------------------------------------------------------------------------
use Firewall::Utils::Date;
has commandText => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [] }, );
sub addToCommandText {
my ( $self, @commands ) = @_;
push( @{$self->commandText}, @commands );
}
sub design {
my ( $self, $designReport ) = @_;
if ( $designReport->{clearSrv} ) {
#æ¸
çipå portççç¥
return $self->design2($designReport);
}
else {
#æ¸
çipçææçç¥
return $self->design1($designReport);
}
}
sub design1 {
my ( $self, $designReport ) = @_;
my $rules = $designReport->{rule};
my @commandStr;
for my $rule ( @{$rules} ) {
if ( ref($rule) eq 'HASH' and defined $rule->{policyId} ) {
if ( $rule->{memberCounter} == 1 ) {
push @commandStr, "unset policy id $rule->{policyId}";
}
else {
my $srcOrDstStr = $rule->{zone} eq $rule->{fromZone} ? "src-address" : "dst-address";
my $comStr = "set policy id $rule->{policyId}\n";
$comStr .= "unset $srcOrDstStr $rule->{addrName}\n";
$comStr .= "exit\n";
push @commandStr, $comStr;
}
}
} ## end for my $rule ( @{$rules...})
my $realIpAndGroup = $designReport->{address}{realIp};
if ( defined $realIpAndGroup ) {
for my $addInfo ( values $realIpAndGroup ) {
my $addName = $addInfo->{name};
my $zone = $addInfo->{zone};
my $addGroup = $addInfo->{addressGroup};
if ( defined $addGroup ) {
for my $gn ( keys $addGroup ) {
push @commandStr, "unset group address $zone $addGroup remove $addName";
}
}
push @commandStr, "unset address $zone $addName" if defined $addName;
}
}
my $natIpAndGroup = $designReport->{address}{natIp};
if ( defined $natIpAndGroup ) {
( run in 0.560 second using v1.01-cache-2.11-cpan-39bf76dae61 )