view release on metacpan or search on metacpan
$Contact = "Patrick Boettcher <patrick.boettcher\@desy.de>, Wolfgang Friebel <wolfgang.friebel\@desy.de>";
my @syslog_arr = ('emerg','alert','crit','err','warning','notice','info','debug');
# package member vars
sub members
{
return {
# private:
# protected:
_error => undef, # contains the error message
_syslog => 1, # log to syslog or to STDERR
# public:
loglevel => 7, # loglevel is combination of bits (1=AUTH,2=USER,4=ERR,8=CMDDEBUG,16=VERBSIDE,32=DEBUG) see _Log method
logfileprefix => "", # Prepended to every log entry
logdestination => 'syslog', # Where should all the log output go to ('stderr','syslog')
};
}
## Constructor.
## Initializes the object and returns it blessed.
} else {
$errstr = join(" ",@_).$errstr ;
}
$errstr =~ s/\r//g;
$errstr =~ s/\n/ /g;
$this->{_error} = $errstr;
return;
}
## User function to get the error msg.
##out> the error message if any otherwise undef
##eg> unless (my $err = $arc->IsError()) { .. } else { print STDERR $err; }
sub IsError
{
my $this = shift;
my $ret = $this->{_error};
$this->{_error} = undef;
return $ret;
}
## Destructor
sub DESTROY {
my $this = shift;
closelog() if $this->{_syslog};
}
lib/Arc.pod view on Meta::CPAN
=back
=head3 PROTECTED MEMBERS
=over 2
=item _error
B<Description>: contains the error message
B<Default value>: undef
=item _syslog
B<Description>: log to syslog or to STDERR
B<Default value>: 1
=back
=over 2
lib/Arc.pod view on Meta::CPAN
=item DESTROY ( )
B<Description>: Destructor
=item IsError ( )
B<Description>: User function to get the error msg.
B<Returns:> the error message if any otherwise undef
B<Example:>
unless (my $err = $arc->IsError()) { .. } else { print STDERR $err; }
=item Log ( $facility, ... (message) )
B<Description>: Log function.
lib/Arc/Command.pm view on Meta::CPAN
sub members
{
my $this = shift;
return { %{$this->SUPER::members},
# private:
# protected:
_commands => {}, # the "available commands"-hash from the server,
_username => "", # user, who has authenticated against ARCv2 Server by using SASL
_realm => "", # the name of the realm, to which the user belongs (SASL)
_mech => undef, # user uses this authentication mechanism (e.g. GSSAPI)
_peeraddr => undef, # users ip address
_peername => undef, # users host address in sockaddr_in format
_peerport => undef, # users port
_cmd => undef, # user runs this command
# public:
logfileprefix => "command",
};
}
## execute this command.
## This function is called by the ARCv2 Server when the user wants
## to execute this command.
##in> ... (parameter from users request)
lib/Arc/Command.pod view on Meta::CPAN
=back
=head3 PROTECTED MEMBERS
=over 2
=item _cmd
B<Description>: user runs this command
B<Default value>: undef
=item _commands
B<Description>: the "available commands"-hash from the server,
B<Default value>: {}
=item _mech
B<Description>: user uses this authentication mechanism (e.g. GSSAPI)
B<Default value>: undef
=item _peeraddr
B<Description>: users ip address
B<Default value>: undef
=item _peername
B<Description>: users host address in sockaddr_in format
B<Default value>: undef
=item _peerport
B<Description>: users port
B<Default value>: undef
=item _realm
B<Description>: the name of the realm, to which the user belongs (SASL)
B<Default value>: ""
=item _username
B<Description>: user, who has authenticated against ARCv2 Server by using SASL
lib/Arc/Command.pod view on Meta::CPAN
B<Default value>: ""
=back
=over 2
=item _error I<inherited from Arc>
B<Description>: contains the error message
B<Default value>: undef
=item _syslog I<inherited from Arc>
B<Description>: log to syslog or to STDERR
B<Default value>: 1
=back
=over 2
lib/Arc/Command.pod view on Meta::CPAN
=item DESTROY ( ) I<inherited from Arc>
B<Description>: Destructor
=item IsError ( ) I<inherited from Arc>
B<Description>: User function to get the error msg.
B<Returns:> the error message if any otherwise undef
B<Example:>
unless (my $err = $arc->IsError()) { .. } else { print STDERR $err; }
=item Log ( $facility, ... (message) ) I<inherited from Arc>
B<Description>: Log function.
lib/Arc/Connection.pm view on Meta::CPAN
use Arc qw(LOG_AUTH LOG_USER LOG_ERR LOG_CMD LOG_SIDE LOG_DEBUG);
use Authen::SASL;
@Arc::Connection::ISA = qw(Arc);
sub members
{
my $this = shift;
return { %{$this->SUPER::members},
# private:
__sasl => undef, # Authen::SASL Handle
__linequeue => [], # internal line buffer (idea From Net::Cmd)
__partial => "", # a partial line (idea From Net::Cmd)
# protected:
_connection => undef, # IO::Socket for the ARCv2 Connection
_cmdclientsock => undef, # IO::Socket for the command connection (encrypted)
_select => undef, # IO::Select for the ARCv2 Connection
_authenticated => 0, # Are we authenticated
#_sasl => undef, # Authen::SASL::Cyrus Handle
#_saslmech => "", # SASL mechnanism used at authentication
_cmdparameter => undef, # parameter after the command
_expectedcmds => undef, # array, which ARCv2 protocol commands are allowed to come next
_connected => 0, # are we connected
_username => "anonymous", # username extracted from SASL
# public:
protocol => undef, # Which protocol is used (0 = ARC/2.0, 1 = ARC/2.1)
timeout => undef, # timeout for all connections (ARCv2 and command) in seconds
service => undef, # name of the server (for SASL)
};
}
sub _Init
{
my $this = shift;
return $this->_SetError("Initialization failed.") unless $this->SUPER::_Init(@_);
# timeout
lib/Arc/Connection.pm view on Meta::CPAN
$ret = $this->_SetError("Sending command $cmd failed.") unless $this->_SendLine($cmd,defined $msg ? " ".$msg : "");
return $ret;
}
## receive a line (command). (protocol)
## This function receives data from the ARCv2 connection and
## fills the internal C<__linequeue> and C<__partial>. It returns
## a line from the internal buffer if there is any. It also handles
## timeouts and "connection closed by foreign host"'s.
##out> true (and the line) if everything worked fine, otherwise false (undef)
##eg> if (my $line = $this->_RecvLine()) { ... }
sub _RecvLine
{
my $this = shift;
return shift @{$this->{__linequeue}} if scalar @{$this->{__linequeue}};
# no connection is set not connected
return $this->_SetError("RecvCommand only Available when connection and select is set.") unless $this->{_connected};
lib/Arc/Connection.pm view on Meta::CPAN
## receives an ARCv2 Command. (protocol)
## This function gets a line from C<_RecvLine> and extracts the ARCv2 command and
## the optional command parameter C<_cmdparameter>.
##out> ARCv2 command and true if everything works fine, otherwise false
##eg> while (my $cmd = $this->_RecvCommand()) { ... }
sub _RecvCommand
{
my $this = shift;
my $command = undef;
if (my $line = $this->_RecvLine()) { # Fetch and parse a cmd from queue
$line =~ s/[\r\n]//g;
($command,$this->{_cmdparameter}) = $line =~ m/^([A-Z]+)\ ?(.*)?$/;
}
return $command; # There was an error if undef is return
}
## process an ARCv2 command. (protocol)
## Process a command by evaling $this->_R$cmd. Also checks if
## this command was expected now (looks into the $this->{_expectedcmds} array).
## Used by client and server.
##in> $cmd
##out> true, if ARCv2 command has been in place, otherwise false
##eg> while (my $cmd = $this->_RecvCommand() && $this->_ProcessLine($cmd)) {}
sub _ProcessLine
lib/Arc/Connection.pm view on Meta::CPAN
sub clean
{
my $this = shift;
delete $this->{__sasl};
$this->{__linequeue} = [];
$this->{__partial} = "";
$this->{_authenticated} = 0;
$this->{_sasl} = undef;
$this->{_saslmech} = "";
$this->{_cmdparameter} = undef;
$this->{_expectedcmds} = undef;
$this->{_connected} = 0;
$this->{_username} = "anonymous";
$this->{_error} = undef;
# public:
$this->{protocol} = undef;
}
1;
lib/Arc/Connection.pod view on Meta::CPAN
=head1 Class VARIABLES
=head3 PUBLIC MEMBERS
=over 2
=item protocol
B<Description>: Which protocol is used (0 = ARC/2.0, 1 = ARC/2.1)
B<Default value>: undef
=item service
B<Description>: name of the server (for SASL)
B<Default value>: undef
=item timeout
B<Description>: timeout for all connections (ARCv2 and command) in seconds
B<Default value>: undef
=back
=over 2
=item logdestination I<inherited from Arc>
B<Description>: Where should all the log output go to ('stderr','syslog')
B<Default value>: 'syslog'
lib/Arc/Connection.pod view on Meta::CPAN
=over 2
=item _authenticated
B<Description>: Are we authenticated
=item _cmdclientsock
B<Description>: IO::Socket for the command connection (encrypted)
B<Default value>: undef
=item _cmdparameter
B<Description>: parameter after the command
B<Default value>: undef
=item _connected
B<Description>: are we connected
=item _connection
B<Description>: IO::Socket for the ARCv2 Connection
B<Default value>: undef
=item _expectedcmds
B<Description>: array, which ARCv2 protocol commands are allowed to come next
B<Default value>: undef
=item _select
B<Description>: IO::Select for the ARCv2 Connection
B<Default value>: undef
=item _username
B<Description>: username extracted from SASL
B<Default value>: "anonymous"
=back
=over 2
=item _error I<inherited from Arc>
B<Description>: contains the error message
B<Default value>: undef
=item _syslog I<inherited from Arc>
B<Description>: log to syslog or to STDERR
B<Default value>: 1
=back
=over 2
lib/Arc/Connection.pod view on Meta::CPAN
=item __partial
B<Description>: a partial line (idea From Net::Cmd)
B<Default value>: ""
=item __sasl
B<Description>: Authen::SASL Handle
B<Default value>: undef
=back
=head1 Class METHODS
=head3 PUBLIC METHODS
=over 2
=item clean ( )
lib/Arc/Connection.pod view on Meta::CPAN
=item DESTROY ( ) I<inherited from Arc>
B<Description>: Destructor
=item IsError ( ) I<inherited from Arc>
B<Description>: User function to get the error msg.
B<Returns:> the error message if any otherwise undef
B<Example:>
unless (my $err = $arc->IsError()) { .. } else { print STDERR $err; }
=item Log ( $facility, ... (message) ) I<inherited from Arc>
B<Description>: Log function.
lib/Arc/Connection.pod view on Meta::CPAN
=item _RecvLine ( )
B<Description>: receive a line (command). (protocol)
This function receives data from the ARCv2 connection and
fills the internal C<__linequeue> and C<__partial>. It returns
a line from the internal buffer if there is any. It also handles
timeouts and "connection closed by foreign host"'s.
B<Returns:> true (and the line) if everything worked fine, otherwise false (undef)
B<Example:>
if (my $line = $this->_RecvLine()) { ... }
=item _Sasl ( $saslstr )
B<Description>: send the ARCv2 SASL command. (protocol)
lib/Arc/Connection/Client.pm view on Meta::CPAN
{
my $this = shift;
return { %{$this->SUPER::members},
logfileprefix => "client",
logdestination => "stderr",
sasl_cb_user => $ENV{'USER'}, # SASL Callback for username (PLAIN and some other mechs only)
sasl_cb_auth => $ENV{'USER'}, # SASL Callback for authname (PLAIN and some other mechs only)
sasl_cb_pass => "", # SASL Callback for password (PLAIN and some other mechs only)
server => undef, # Server to connect to
port => undef, # Port to connect to
sasl_mechanism => undef, # use this mechanism for authentication
server_sasl_mechanisms => [], # filled by the sasl mechanisms
protocol => 1, # Which protocol type the shall use.
};
}
sub _Init
{
my $this = shift;
return 0 unless $this->SUPER::_Init(@_);
lib/Arc/Connection/Client.pm view on Meta::CPAN
my $this = shift;
return $this->_SetError("There is no command running.") unless defined $this->{_cmdclientsock};
if ($this->{protocol} == 1) {
# encrypted protocol and command connection, don't lose synchronized sasl_de/encode
$this->CommandEOF();
while ($_ = $this->CommandRead()) { $this->_Debug("read text: ".$_); };
}
$this->{_cmdclientsock}->close();
$this->{_cmdclientsock} = undef;
while (my $cmd = $this->_RecvCommand()) {
last unless $this->_ProcessLine($cmd);
last if $cmd eq "DONE";
}
return if $this->{_error};
return 1;
}
lib/Arc/Connection/Client.pod view on Meta::CPAN
Arc::Connection::Client - Client class for ARCv2
my $arc = new Arc::Connection::Client(
server => "hyade11",
port => 4242,
timeout => 30,
loglevel=> 7,
logdestination => 'stderr',
service => 'arc',
sasl_mechanism => undef,
sasl_cb_user => \&username,
sasl_cb_auth => \&username,
sasl_cb_pass => \&password,
);
if (my $m = $arc->IsError()) {
die $m;
}
if ($arc->StartSession) {
lib/Arc/Connection/Client.pod view on Meta::CPAN
B<Default value>: "stderr"
=item logfileprefix I<reimplemented from Arc>
B<Default value>: "client"
=item port
B<Description>: Port to connect to
B<Default value>: undef
=item protocol I<reimplemented from Arc::Connection>
B<Description>: Which protocol type the shall use.
B<Default value>: 1
=item sasl_cb_auth
B<Description>: SASL Callback for authname (PLAIN and some other mechs only)
lib/Arc/Connection/Client.pod view on Meta::CPAN
=item sasl_cb_user
B<Description>: SASL Callback for username (PLAIN and some other mechs only)
B<Default value>: $ENV{'USER'}
=item sasl_mechanism
B<Description>: use this mechanism for authentication
B<Default value>: undef
=item server
B<Description>: Server to connect to
B<Default value>: undef
=item server_sasl_mechanisms
B<Description>: filled by the sasl mechanisms
B<Default value>: []
=back
=over 2
=item service I<inherited from Arc::Connection>
B<Description>: name of the server (for SASL)
B<Default value>: undef
=item timeout I<inherited from Arc::Connection>
B<Description>: timeout for all connections (ARCv2 and command) in seconds
B<Default value>: undef
=back
=over 2
=item loglevel I<inherited from Arc>
B<Description>: loglevel is combination of bits (1=AUTH,2=USER,4=ERR,8=CMDDEBUG,16=VERBSIDE,32=DEBUG) see _Log method
B<Default value>: 7
lib/Arc/Connection/Client.pod view on Meta::CPAN
=over 2
=item _authenticated I<inherited from Arc::Connection>
B<Description>: Are we authenticated
=item _cmdclientsock I<inherited from Arc::Connection>
B<Description>: IO::Socket for the command connection (encrypted)
B<Default value>: undef
=item _cmdparameter I<inherited from Arc::Connection>
B<Description>: parameter after the command
B<Default value>: undef
=item _connected I<inherited from Arc::Connection>
B<Description>: are we connected
=item _connection I<inherited from Arc::Connection>
B<Description>: IO::Socket for the ARCv2 Connection
B<Default value>: undef
=item _expectedcmds I<inherited from Arc::Connection>
B<Description>: array, which ARCv2 protocol commands are allowed to come next
B<Default value>: undef
=item _select I<inherited from Arc::Connection>
B<Description>: IO::Select for the ARCv2 Connection
B<Default value>: undef
=item _username I<inherited from Arc::Connection>
B<Description>: username extracted from SASL
B<Default value>: "anonymous"
=back
=over 2
=item _error I<inherited from Arc>
B<Description>: contains the error message
B<Default value>: undef
=item _syslog I<inherited from Arc>
B<Description>: log to syslog or to STDERR
B<Default value>: 1
=back
=over 2
lib/Arc/Connection/Client.pod view on Meta::CPAN
=item DESTROY ( ) I<inherited from Arc>
B<Description>: Destructor
=item IsError ( ) I<inherited from Arc>
B<Description>: User function to get the error msg.
B<Returns:> the error message if any otherwise undef
B<Example:>
unless (my $err = $arc->IsError()) { .. } else { print STDERR $err; }
=item Log ( $facility, ... (message) ) I<inherited from Arc>
B<Description>: Log function.
lib/Arc/Connection/Client.pod view on Meta::CPAN
=item _RecvLine ( ) I<inherited from Arc::Connection>
B<Description>: receive a line (command). (protocol)
This function receives data from the ARCv2 connection and
fills the internal C<__linequeue> and C<__partial>. It returns
a line from the internal buffer if there is any. It also handles
timeouts and "connection closed by foreign host"'s.
B<Returns:> true (and the line) if everything worked fine, otherwise false (undef)
B<Example:>
if (my $line = $this->_RecvLine()) { ... }
=item _Sasl ( $saslstr ) I<inherited from Arc::Connection>
B<Description>: send the ARCv2 SASL command. (protocol)
lib/Arc/Connection/Server.pm view on Meta::CPAN
sub members
{
my $this = shift;
return { %{$this->SUPER::members},
_realm => "", # Name of the SASL realm, if the user is from the default realm, this is empty
logfileprefix => "server",
sasl_cb_getsecret => "", # Callback for SASL (if PLAIN (or equal) mechanisms are used). See Authen::SASL(::Cyrus).
sasl_cb_checkpass => 0, # Callback for SASL (if PLAIN (or equal) mechanisms are used). See Authen::SASL(::Cyrus).
sasl_mechanisms => undef, # array of allowed SASL mechanisms
commands => undef, # hash of assignment between B<Command Name> and B<Command Class>. See L<Arc::Command>
};
}
sub _Init
{
my $this = shift;
return unless $this->SUPER::_Init(@_);
# sasl_mechanisms
lib/Arc/Connection/Server.pm view on Meta::CPAN
}
sub _CheckCmd
{
my $this = shift;
my ($cmd, $perlcmd) = @_;
# Do nothing by default.
# This method is mearly here so a sub-class can override it.
return undef;
}
sub _SplitCmdArgs
{
my $this = shift;
my $para = shift;
return split(/\s+/,$para) if defined $para; # better splitting for array TODO
return ();
}
lib/Arc/Connection/Server.pod view on Meta::CPAN
=head1 Class VARIABLES
=head3 PUBLIC MEMBERS
=over 2
=item commands
B<Description>: hash of assignment between B<Command Name> and B<Command Class>. See L<Arc::Command>
B<Default value>: undef
=item logfileprefix I<reimplemented from Arc>
B<Default value>: "server"
=item sasl_cb_checkpass
B<Description>: Callback for SASL (if PLAIN (or equal) mechanisms are used). See Authen::SASL(::Cyrus).
=item sasl_cb_getsecret
B<Description>: Callback for SASL (if PLAIN (or equal) mechanisms are used). See Authen::SASL(::Cyrus).
B<Default value>: ""
=item sasl_mechanisms
B<Description>: array of allowed SASL mechanisms
B<Default value>: undef
=back
=over 2
=item protocol I<inherited from Arc::Connection>
B<Description>: Which protocol is used (0 = ARC/2.0, 1 = ARC/2.1)
B<Default value>: undef
=item service I<inherited from Arc::Connection>
B<Description>: name of the server (for SASL)
B<Default value>: undef
=item timeout I<inherited from Arc::Connection>
B<Description>: timeout for all connections (ARCv2 and command) in seconds
B<Default value>: undef
=back
=over 2
=item logdestination I<inherited from Arc>
B<Description>: Where should all the log output go to ('stderr','syslog')
B<Default value>: 'syslog'
lib/Arc/Connection/Server.pod view on Meta::CPAN
=over 2
=item _authenticated I<inherited from Arc::Connection>
B<Description>: Are we authenticated
=item _cmdclientsock I<inherited from Arc::Connection>
B<Description>: IO::Socket for the command connection (encrypted)
B<Default value>: undef
=item _cmdparameter I<inherited from Arc::Connection>
B<Description>: parameter after the command
B<Default value>: undef
=item _connected I<inherited from Arc::Connection>
B<Description>: are we connected
=item _connection I<inherited from Arc::Connection>
B<Description>: IO::Socket for the ARCv2 Connection
B<Default value>: undef
=item _expectedcmds I<inherited from Arc::Connection>
B<Description>: array, which ARCv2 protocol commands are allowed to come next
B<Default value>: undef
=item _select I<inherited from Arc::Connection>
B<Description>: IO::Select for the ARCv2 Connection
B<Default value>: undef
=item _username I<inherited from Arc::Connection>
B<Description>: username extracted from SASL
B<Default value>: "anonymous"
=back
=over 2
=item _error I<inherited from Arc>
B<Description>: contains the error message
B<Default value>: undef
=item _syslog I<inherited from Arc>
B<Description>: log to syslog or to STDERR
B<Default value>: 1
=back
=over 2
lib/Arc/Connection/Server.pod view on Meta::CPAN
=item DESTROY ( ) I<inherited from Arc>
B<Description>: Destructor
=item IsError ( ) I<inherited from Arc>
B<Description>: User function to get the error msg.
B<Returns:> the error message if any otherwise undef
B<Example:>
unless (my $err = $arc->IsError()) { .. } else { print STDERR $err; }
=item Log ( $facility, ... (message) ) I<inherited from Arc>
B<Description>: Log function.
lib/Arc/Connection/Server.pod view on Meta::CPAN
=item _RecvLine ( ) I<inherited from Arc::Connection>
B<Description>: receive a line (command). (protocol)
This function receives data from the ARCv2 connection and
fills the internal C<__linequeue> and C<__partial>. It returns
a line from the internal buffer if there is any. It also handles
timeouts and "connection closed by foreign host"'s.
B<Returns:> true (and the line) if everything worked fine, otherwise false (undef)
B<Example:>
if (my $line = $this->_RecvLine()) { ... }
=item _Sasl ( $saslstr ) I<inherited from Arc::Connection>
B<Description>: send the ARCv2 SASL command. (protocol)
lib/Arc/Server.pm view on Meta::CPAN
use IO::Socket;
use Arc qw(LOG_AUTH LOG_USER LOG_ERR LOG_CMD LOG_SIDE LOG_DEBUG);
@Arc::Server::ISA = qw(Arc Net::Server::PreFork);
sub members
{
my $this = shift;
return { %{$this->SUPER::members},
# private:
__arc => undef, # stores the Arc::Connection::Server object for optimal PreFork
# protected:
# public:
connection_type => 'Arc::Connection::Server', # Class to use for connections
connection_vars => undef, # variables passed directly to every connection handle See C<Arc::Connection::Server>
logfileprefix => "mainserver", # Logfileprefix
# net::server
server => undef, # attributes for Net::Server::PreFork
};
}
sub _Init
{
my $this = shift;
return unless $this->SUPER::_Init(@_);
return $this->_SetError("You have to specify at least the SASL mechs and the commands you want to run, to start the ARCv2 Server.")
lib/Arc/Server.pm view on Meta::CPAN
}
unless (defined $this->{server}->{port}) {
$this->Log(LOG_SIDE,"No port specified, falling back to standard port $Arc::DefaultPort.");
$this->{server}->{port} = [$Arc::DefaultPort];
}
# net::server::* initilizations
$this->{server}->{proto} = 'tcp';
$this->{server}->{listen} = SOMAXCONN;
$this->{server}->{child_communication} = undef,
}
## start the server
## This function is used by the user to start the server and enter the main accept-loop.
## Only by calling the C<Interrupt> function this call can be aborted.
##out> return true if everything worked fine, otherwise false is returned and C<IsError> should be checked.
##eg> $arc->Start();
sub Start
{
my $this = shift;
lib/Arc/Server.pod view on Meta::CPAN
=item connection_type
B<Description>: Class to use for connections
B<Default value>: 'Arc::Connection::Server'
=item connection_vars
B<Description>: variables passed directly to every connection handle See C<Arc::Connection::Server>
B<Default value>: undef
=item logfileprefix
B<Description>: Logfileprefix
B<Default value>: "mainserver"
=item server
B<Description>: attributes for Net::Server::PreFork
B<Default value>: undef
=back
=over 2
=item logdestination I<inherited from Arc>
B<Description>: Where should all the log output go to ('stderr','syslog')
B<Default value>: 'syslog'
lib/Arc/Server.pod view on Meta::CPAN
=back
=head3 PROTECTED MEMBERS
=over 2
=item _error I<inherited from Arc>
B<Description>: contains the error message
B<Default value>: undef
=item _syslog I<inherited from Arc>
B<Description>: log to syslog or to STDERR
B<Default value>: 1
=back
=over 2
lib/Arc/Server.pod view on Meta::CPAN
=back
=head3 PRIVATE MEMBERS
=over 2
=item __arc
B<Description>: stores the Arc::Connection::Server object for optimal PreFork
B<Default value>: undef
=back
=head1 Class METHODS
=head3 PUBLIC METHODS
=over 2
=item child_init_hook ( )
lib/Arc/Server.pod view on Meta::CPAN
=item DESTROY ( ) I<inherited from Arc>
B<Description>: Destructor
=item IsError ( ) I<inherited from Arc>
B<Description>: User function to get the error msg.
B<Returns:> the error message if any otherwise undef
B<Example:>
unless (my $err = $arc->IsError()) { .. } else { print STDERR $err; }
=item Log ( $facility, ... (message) ) I<inherited from Arc>
B<Description>: Log function.
scripts/arcx view on Meta::CPAN
getopts("01S:l:nh:s:p:L:r:t:vaA:uU:wW:f:FC:V",\%args) || usage("Wrong parameter construction.");
usage() if $args{V};
usage("Timeout value must be numeric.") if (defined $args{t} && $args{t} !~ /^\d+$/);
usage("If using -r, a string must be appended.") if (defined $args{r} && length($args{r}) == 0);
usage("Port must be a number correct number.") if (defined $args{p} && $args{p} != 1 && $args{p} !~ /^\d+$/);
usage("Logging destination not chosen correctly.") if (defined $args{L} && ($args{L} ne "syslog" && $args{L} ne "stderr"));
$args{t} = defined $args{t} ? $args{t} : undef;
$args{l} = defined $args{l} ? $args{l} : 0;
$args{L} = defined $args{L} ? $args{L} : 'stderr';
$args{S} = defined $args{S} ? $args{S} : 'arc';
$args{f} = defined $args{f} && $args{f} ne "" ? $args{f} : $ENV{HOME}.'/.archistory';
$args{C} = defined $args{C} && $args{C} ne "" ? $args{C} : $Arc::ConfigPath.'/arcx.conf';
my $intact = !@ARGV;
my $stop = 0;
my @server_list;
scripts/arcx view on Meta::CPAN
1;
}
sub interrupt
{
my $sig = shift;
verbout("Received signal: $sig.");
$stop = 1;
undef;
}
sub addhistoryfile
{
unless ($args{F}) {
unless (open(FH,">>$args{f}")) {
$args{F} = 1;
err("Cannot write to history file: $args{f}. (",$!,")");
return;
}
scripts/arcxd view on Meta::CPAN
my $prop = $def{server};
$prop->{port} = [split(/,/,$args{p} ? $args{p} : $cf->val("arcd","port",$Arc::DefaultPort))];
$prop->{host} = $cf->val("arcd","host",0);
$prop->{max_requests} = $cf->val("arcd","max_requests");
$prop->{min_servers} = $cf->val("arcd","min_servers");
$prop->{max_servers} = $cf->val("arcd","max_servers");
$prop->{max_spare_servers} = $cf->val("arcd","max_spare_servers");
$prop->{min_spare_servers} = $cf->val("arcd","min_spare_servers");
$prop->{pid_file} = $args{P} ? $args{P} : $cf->val("arcd","pid_file",$Arc::DefaultPIDFile);
$prop->{background} = $args{d} ? undef : 1;
unless (open(FH,">".$prop->{pid_file})) {
die "will not be able to create PID file ".$prop->{pid_file};
}
close(FH);
my $cmds = {};
foreach ($cf->Parameters("commands")) {
$cmds->{$_} = $cf->val("commands",$_);
verbout("adding possible command:",$_);