App-Pocosi
view release on metacpan or search on metacpan
lib/App/Pocosi.pm view on Meta::CPAN
my ($self, $reason) = @_;
return if $self->{shutdown};
$self->_status('normal', $reason);
$self->{ircd}->shutdown() if $self->{ircd};
$self->{shutdown} = 1;
return;
}
1;
=encoding utf8
=head1 NAME
App::Pocosi - A command line tool for launching a POE::Component::Server::IRC instance
=head1 DESCRIPTION
This distribution provides a generic way to launch a
L<POE::Component::Server::IRC|POE::Component::Server::IRC> instance.
=over 4
=item * Prints useful status information (to your terminal and/or a log file)
=item * Will daemonize if you so wish
=item * Supports a configuration file
=item * Offers a user friendly way to pass arguments to POE::Component::Server::IRC
=item * Has an interactive mode where you can issue issue commands and
call methods on the IRCd component.
=back
=head1 CONFIGURATION
class: POE::Component::Server::IRC
log_file: /my/log.file
pid_file: /my/pid.file
lib: /my/modules
flood: false
auth: true
config:
servername: myserver.com
motd:
- "Welcome to this great server"
- ""
- "Enjoy your stay"
plugins:
- [OperServ]
listeners:
- bindaddr: "127.0.0.1"
port: 10023
denials:
- ["12.34.56.0/24", "I don't like this IP block"]
exemptions:
- "12.34.56.78"
operators:
- username: jack
password: foo
ipmask: ["127.0.0.1", "1.2.3.4", "192.168.1.0/24"]
- username: locke
password: bar
ipmask: "10.0.0.*"
auths:
- mask: "*@example.com"
password: hlagh
spoof: jacob
no_tilde: true
peers:
- name: otherserver.com
rpass: hlaghpass
pass: hlaghpass
type: r
raddress: "127.0.0.1"
rport: 12345
auto: true
The configuration file is in L<YAML|YAML> or L<JSON|JSON> format. It consists
of a hash containing the options described in the above code example. Only
C<config> is required.
=head2 C<lib>
Either the name of a directory containing Perl modules (e.g. plugins), or an
array of such names. Kind of like Perl's I<-I>.
=head2 C<pid_file>
Path to a pid file, as used by most daemons. If is specified, App::Pocosi
will refuse to run if the file already exists.
=head2 C<log_file>
Path to a log file to which status messages will be written.
=head2 C<class>
The IRC server component class. Defaults to
L<POE::Component::Server::IRC::State|POE::Component::Server::IRC::State>.
=head2 C<config>
This is a hash of various configuration variables for the IRCd. See
PoCo-Server-IRC's L<C<configure>|POE::Component::Server::IRC/configure>
for a list of parameters.
=head2 C<plugins>
An array of arrays containing a short plugin class name (e.g. 'OperServ')
and optionally a hash of arguments to that plugin. When figuring out the
correct package name, App::Pocosi will first try to load
POE::Component::Server::IRC::Plugin::I<YourPlugin> before trying to load
I<YourPlugin>.
=head2 C<listeners>
An array of hashes. The keys should be any of the options listed in the docs
for PoCo-Server-IRC-Backend's
( run in 1.263 second using v1.01-cache-2.11-cpan-13bb782fe5a )