Firewall-Config-Parser

 view release on metacpan or  search on metacpan

lib/Firewall/Config/Parser/Asa.pm  view on Meta::CPAN

use Firewall::Config::Element::Zone::Asa;
use Firewall::Config::Element::Interface::Asa;
use Firewall::Config::Element::StaticNat::Asa;
use Firewall::Config::Element::NatPool::Asa;
use Firewall::Config::Element::DynamicNat::Asa;
use Firewall::Utils::Ip;

#------------------------------------------------------------------------------
# Firewall::Config::Parser::Asa 通用属性
#------------------------------------------------------------------------------
has aclLineNumbers => ( is => 'ro', isa => 'HashRef[Int]', default => sub { {} }, );

#------------------------------------------------------------------------------
# 定义 Firewall::Config::Parser::Asa 配置解析入口函数
# parse 为 Firewall::Config::Parser::Role 角色必须实现的方法
#------------------------------------------------------------------------------
sub parse {
  my $self = shift;
  while ( my $string = $self->nextUnParsedLine ) {
    if    ( $self->isRoute($string) ) { $self->parseRoute($string) }
    elsif ( $self->isInterfaceZone($string) ) {$self->parseInterfaceZone($string)}

lib/Firewall/Config/Parser/Elements.pm  view on Meta::CPAN

use Firewall::Config::Element::Schedule::Role;
use Firewall::Config::Element::Service::Role;
use Firewall::Config::Element::ServiceGroup::Role;
use Firewall::Config::Element::ServiceMeta::Role;
use Firewall::Config::Element::StaticNat::Role;
use Firewall::Config::Element::Zone::Role;

#------------------------------------------------------------------------------
# Firewall::Config::Parser::Elements 通用属性
#------------------------------------------------------------------------------
has natPool => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::NatPool::Role]', default => sub { {} }, );

has zone => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Zone::Role]', default => sub { {} }, );

has interface => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Interface::Role]', default => sub { {} }, );

has route => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Route::Role]', default => sub { {} }, );

has staticNat => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::StaticNat::Role]', default => sub { {} }, );

has dynamicNat =>
  ( is => 'ro', does => 'HashRef[Firewall::Config::Element::DynamicNat::Role]', default => sub { {} }, );

has address => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Address::Role]', default => sub { {} }, );

has addressGroup =>
  ( is => 'ro', does => 'HashRef[Firewall::Config::Element::AddressGroup::Role]', default => sub { {} }, );

has protocolGroup =>
  ( is => 'ro', does => 'HashRef[Firewall::Config::Element::ProtocolGroup::Role]', default => sub { {} }, );

has schedule => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Schedule::Role]', default => sub { {} }, );

has service => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Service::Role]', default => sub { {} }, );

has serviceGroup =>
  ( is => 'ro', does => 'HashRef[Firewall::Config::Element::ServiceGroup::Role]', default => sub { {} }, );

has rule => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Rule::Role]', default => sub { {} }, );

#------------------------------------------------------------------------------
# addElement 新增解析对象元素类型
#------------------------------------------------------------------------------
sub addElement {
  my ( $self, $obj ) = @_;

  #say dumper $obj;
  my $className = ref($obj);
  if ( $className =~ /^Firewall::Config::Element::(?<elementType>\w+)::\w+$/o ) {

lib/Firewall/Config/Parser/Report.pm  view on Meta::CPAN

#------------------------------------------------------------------------------
# 加载扩展模块
#------------------------------------------------------------------------------
use Moose;
use namespace::autoclean;

#------------------------------------------------------------------------------
# Firewall::Config::Parser::Report 通用属性
#------------------------------------------------------------------------------
has source =>
  ( is => 'ro', isa => 'HashRef[Firewall::Policy::Element::Source]', default => sub { {} }, writer => 'setSource', );

has destination => (
  is      => 'ro',
  isa     => 'HashRef[Firewall::Policy::Element::Destination]',
  default => sub { {} },
  writer  => 'setDestination',
);

has service => (
  is      => 'ro',

lib/Firewall/Config/Parser/Role.pm  view on Meta::CPAN

  handles  => {
    nextUnParsedLine => 'nextUnParsedLine',
    backtrackLine    => 'backtrack',
    ignoreLine       => 'ignore',
    getUnParsedLines => 'getUnParsedLines',
    lineNumber       => 'cursor',
    goToHeadLine     => 'goToHead',
  },
);

has preDefinedService => ( is => 'ro', does => 'HashRef[Firewall::Config::Element::Service::Role]', required => 1, );

has elements => (
  is      => 'ro',
  isa     => 'Firewall::Config::Parser::Elements',
  default => sub { Firewall::Config::Parser::Elements->new },
  handles => {addElement => 'addElement',},
);

has report => (
  is      => 'ro',
  isa     => 'Firewall::Config::Parser::Report',
  default => sub { Firewall::Config::Parser::Report->new },
);

has elementType => ( is => 'ro', isa => 'Str|Undef', default => undef, writer => 'setElementType', );

has ruleIndex => ( is => 'ro', isa => 'HashRef', default => sub { {} }, );

#------------------------------------------------------------------------------
# Firewall::Config::Parser::Role 通用属性
#------------------------------------------------------------------------------
sub getElement {
  my ( $self, $elementType, @params ) = @_;
  confess "ERROR: number of params must bigger then 0" if @params == 0;
  my $sign = Firewall::Config::Element::Role->createSign(@params);
  $self->elements->getElement( $elementType, $sign );
}



( run in 0.660 second using v1.01-cache-2.11-cpan-5f2e87ce722 )