ACL-Regex
view release on metacpan or search on metacpan
examples/postifx-policy-server.pl view on Meta::CPAN
# Global config settings
my $TC = 1;
my $debug = 1;
my $port = 12345;
our $pidfile = "/var/run/postfix-policy-server.pid";
our %redirectmap;
# Param1: Client socket
# Param2: hash_ref
sub parse_postfix_input( $$ ) {
my ($socket,$hashref) = @_;
local $/ = "\r\n";
while( my $line = <$socket> ){
chomp( $line );
$line =~ s/\r//g;
$line =~ s/\n//g;
return if $line =~ /^(\r|\n)*$/;
#print "DEBUG: $line" if $debug;
if( $line =~ /^(\w+?)=(.+)$/ ){
$hashref->{$1} = $2;
}
}
}
sub convert_hashref_to_acl($){
my( $hash_ref ) = @_;
my @a;
for( sort( keys %$hash_ref ) ) {
my $str = "$_=\[$hash_ref->{$_}\]";
push( @a, $str );
}
return( join( " ", @a ) );
}
sub process_client($){
my ($socket) = @_;
# Create some stuff
my $accept_acl = ACL->new->generate_required( 'required.txt' )->parse_acl_from_file( { Filename => "acl.permit.txt" } );
my $reject_acl = ACL->new->generate_required( 'required.txt' )->parse_acl_from_file( { Filename => "acl.reject.txt" } );
ACCEPT: while( my $client = $socket->accept() ){
my $hash_ref = {};
parse_postfix_input( $client, $hash_ref );
lib/ACL/Regex.pm view on Meta::CPAN
# with the defaults (enabled).
my @required = qw(
account
action
ip
group
dow
time
);
sub generate_required( $$ ){
my ( $acl, $required_file ) = @_;
open FD, "<$required_file" or die("Cannot open $required_file: $!\n" );
while( <FD> ){
next if /^#/;
if( /(\S+?)=(\S+)/ ){
my @a = split( /,/, $2 );
$acl->{req}->{$1} = \@a;
}
lib/ACL/Regex.pm view on Meta::CPAN
my $acl_element = "$key=\[]";
push ( @acl_array, $acl_element );
} else {
my $acl_element = "$key=\[$hash{$key}\]";
push ( @acl_array, $acl_element );
}
} ## end for my $key ( sort ( @required...
return 0,'OK',join ( " ", @acl_array );
} ## end sub sanitize_action ($)
sub parse_acl_from_file( $$ ) {
my ( $self, $hash ) = @_;
die ( "Please give a filename as an option!\n" )
unless defined $hash->{Filename};
open FD, "<$hash->{Filename}"
or die ( "Cannot open $hash->{Filename}: $!\n" );
ENTRY: while ( <FD> ) {
chomp;
( run in 0.559 second using v1.01-cache-2.11-cpan-65fba6d93b7 )