Apache2-SSI
view release on metacpan or search on metacpan
lib/Apache2/Expression.pm view on Meta::CPAN
};
use strict;
use warnings;
sub init
{
my $self = shift( @_ );
$self->{legacy} = 0;
$self->{trunk} = 0;
$self->SUPER::init( @_ );
return( $self );
}
sub legacy { return( shift->_set_get_boolean( 'legacy', @_ ) ); }
sub parse
{
my $self = shift( @_ );
my $data = shift( @_ );
return( '' ) if( !length( $data ) );
lib/Apache2/SSI.pm view on Meta::CPAN
$self->{echomsg} = '';
$self->{errmsg} = '[an error occurred while processing this directive]';
$self->{filename} = '';
$self->{legacy} = 0;
$self->{trunk} = 0;
$self->{remote_ip} = '';
$self->{sizefmt} = 'abbrev';
$self->{timefmt} = undef;
$self->{_init_strict_use_sub} = 1;
$self->{_init_params_order} = [qw( apache_filter apache_request document_root document_uri )];
$self->SUPER::init( %$args ) || return;
$self->{_env} = '';
$self->{_path_info_processed} = 0;
# Used to hold regular expression matches during eval in _eval_vars()
# and make them available for the next evaluation
$self->{_regexp_capture}= [];
$self->{_uri_reset} = 0;
# A stack reflecting the current state of if/else parser.
# Each entry is 1 when we've seen a true condition in this if-chain,
# 0 when we haven't. Initially it's as if we're in a big true
# if-block with no else.
lib/Apache2/SSI/File.pm view on Meta::CPAN
{
my $self = shift( @_ );
my $file = shift( @_ );
return( $self->error( "No file was provided." ) ) if( !defined( $file ) || !length( $file ) );
$self->{apache_request} = '';
$self->{base_dir} = '' unless( length( $self->{base_dir} ) );
$self->{base_file} = '';
$self->{code} = 200;
$self->{finfo} = '';
$self->{_init_strict_use_sub} = 1;
$self->SUPER::init( @_ ) || return;
my $base_dir = '';
if( length( $self->{base_file} ) )
{
if( -d( $self->{base_file} ) )
{
$base_dir = $self->{base_file};
}
else
{
my @segments = split( "\Q${DIR_SEP}\E", $self->{base_file}, -1 );
lib/Apache2/SSI/File/Type.pm view on Meta::CPAN
$file = shift( @_ ) if( @_ % 2 );
my $opts = $self->_get_args_as_hash( @_ );
$opts->{magic} = $file if( length( $file ) );
$self->{follow_links} = 1;
$self->{check_magic} = 0;
# If there is an error or file is empty, it returns undef instead of application/octet-stream
$self->{error_returns_undef} = 0;
# Default to returns text/plain. If not, it will return an empty string and leave the caller to set the default mime-type.
$self->{default_type} = 'text/plain';
$self->{_init_strict_use_sub} = 1;
$self->SUPER::init( @_ );
$self->{magic} = {};
$self->{magic_data} = [];
my $load_json_data = sub
{
my $json_file = shift( @_ ) || return;
my $io = IO::File->new( "<$json_file" ) ||
return( $self->error( "Unable to open our own json magic file \"$json_file\": $!" ) );
local $/;
my $buf = scalar( <$io> );
$io->close;
lib/Apache2/SSI/Finfo.pm view on Meta::CPAN
use warnings;
sub init
{
my $self = shift( @_ );
my $file = shift( @_ ) || return( $self->error( "No file provided to instantiate a ", ref( $self ), " object." ) );
# return( $self->error( "File or directory \"$file\" does not exist." ) ) if( !-e( $file ) );
$self->{apache_request} = '';
$self->{apr_finfo} = '';
$self->{_init_strict_use_sub} = 1;
$self->SUPER::init( @_ );
$self->{filepath} = $file;
$self->{_data} = [];
my $r = $self->{apache_request};
if( $r )
{
# <https://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#toc_C_filename_>
local $@;
# try-catch
eval
{
lib/Apache2/SSI/Notes.pm view on Meta::CPAN
use strict;
use warnings;
sub init
{
my $self = shift( @_ );
$self->{key} = 'ap2_ssi_notes';
$self->{size} = MAX_SIZE;
$self->{_init_strict_use_sub} = 1;
$self->SUPER::init( @_ );
return( $self->error( "Notes under this system $^O are unsupported." ) ) if( !Apache2::SSI::SharedMem->supported );
my $mem = Apache2::SSI::SharedMem->new(
key => ( length( $self->{key} ) ? $self->{key} : 'ap2_ssi_notes' ),
# 512 Kb max
size => $self->{size},
# Create if necessary
create => 1,
debug => $self->debug,
) || return( $self->pass_error( Apache2::SSI::SharedMem->error ) );
my $shem = $mem->open || return( $self->pass_error( $mem->error ) );
lib/Apache2/SSI/SharedMem.pm view on Meta::CPAN
# Default action when accessing a shared memory? If 1, it will create it if it does not exist already
$self->{create} = 0;
$self->{destroy} = 0;
$self->{exclusive} = 0;
$self->{key} = &IPC::SysV::IPC_PRIVATE;
$self->{mode} = 0666;
$self->{serial} = '';
# SHM_BUFSIZ
$self->{size} = SHM_BUFSIZ;
$self->{_init_strict_use_sub} = 1;
$self->SUPER::init( @_ ) || return;
$self->{addr} = undef();
$self->{id} = undef();
$self->{locked} = 0;
$self->{owner} = $$;
$self->{removed} = 0;
$self->{semid} = undef();
return( $self );
}
sub addr { return( shift->_set_get_scalar( 'addr', @_ ) ); }
lib/Apache2/SSI/URI.pm view on Meta::CPAN
# By default
$self->{code} = 200;
$self->{document_path} = '';
$self->{document_root} = '';
# Reference document for the main request
$self->{document_uri} = '';
$self->{filepath} = '';
$self->{finfo} = '';
$self->{_init_params_order} = [qw( apache_request document_root base_uri document_uri document_path filepath )];
$self->{_init_strict_use_sub} = 1;
$self->SUPER::init( @_ ) || return;
$self->{_env} = {};
$self->{_path_info_processed} = 0;
$self->{_uri_reset} = 0;
$self->{document_root} ||= $self->env( 'DOCUMENT_ROOT' );
$self->{base_uri} ||= $self->env( 'DOCUMENT_URI' );
return( $self->error( "No document root was provided." ) ) if( !length( $self->{document_root} ) );
return( $self->error( "No base uri was provided." ) ) if( !length( $self->{base_uri} ) );
return( $self->error( "No document uri was provided." ) ) if( !length( $self->{document_uri} ) );
# Small correction if necessary. If the base uri is a directory, it needs to have a trailing "/", so URI knows this is a directory and not a file.
# URI->new( "./file.pl" )->abs( "/ssi/plop" ) becomes "/ssi/file.pl" whereas it should be /ssi/plop/file.pl
( run in 1.259 second using v1.01-cache-2.11-cpan-49f99fa48dc )