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 )