NAME
    App::Pocosi - A command line tool for launching a
    POE::Component::Server::IRC instance

DESCRIPTION
    This distribution provides a generic way to launch a
    POE::Component::Server::IRC instance.

    *   Prints useful status information (to your terminal and/or a log
        file)

    *   Will daemonize if you so wish

    *   Supports a configuration file

    *   Offers a user friendly way to pass arguments to
        POE::Component::Server::IRC

    *   Has an interactive mode where you can issue issue commands and call
        methods on the IRCd component.

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 YAML or JSON format. It consists of a hash
    containing the options described in the above code example. Only
    "config" is required.

  "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*.

  "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.

  "log_file"
    Path to a log file to which status messages will be written.

  "class"
    The IRC server component class. Defaults to
    POE::Component::Server::IRC::State.

  "config"
    This is a hash of various configuration variables for the IRCd. See
    PoCo-Server-IRC's "configure" for a list of parameters.

  "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::*YourPlugin* before trying to
    load *YourPlugin*.

  "listeners"
    An array of hashes. The keys should be any of the options listed in the
    docs for PoCo-Server-IRC-Backend's "add_listener" method.

  "auths"
    An array of hashes. The keys are described in the docs for
    PoCo-Server-IRC's "add_auth" method.

  "operators"
    An array of hashes. The keys are described in the docs for
    PoCo-Server-IRC's "add_operator" method. You you can supply an array of
    netmasks (the kind accepted by Net::Netmask's constructor) for the
    'ipmask' key.

  "peers"
    An array of hashes. The keys should be any of the options listed in the
    docs for PoCo-Server-IRC's "add_peer" method.

  "denials"
    An array of arrays. The first element of the inner array should be a
    netmask accepted by Net::Netmask's constructor. The second (optional)
    element should be a reason for the denial.

  "exemptions"
    An array of netmasks (the kind which Net::Netmask's constructor
    accepts).

OUTPUT
    Here is some example output from the program:

     $ pocosi -f example/config.yml
     2011-05-22 15:30:02 Started (pid 13191)
     2011-05-22 15:30:02 Constructing plugins
     2011-05-22 15:30:02 Spawning IRCd component (POE::Component::Server::IRC)
     2011-05-22 15:30:02 Registering plugins
     2011-05-22 15:30:02 Added plugin PocosiStatus_1
     2011-05-22 15:30:02 Added plugin OperServ_1
     2011-05-22 15:30:02 Started listening on 127.0.0.1:10023
     2011-05-22 15:30:02 Connected to peer otherserver.com on 127.0.0.1:12345
     2011-05-22 15:30:02 Server otherserver.com (hops: 1) introduced to the network by myserver.com
     ^C2011-05-22 15:30:18 Exiting due to SIGINT
     2011-05-22 15:30:18 Deleted plugin OperServ_1
     2011-05-22 15:30:18 Deleted plugin PocosiStatus_1
     2011-05-22 15:30:18 IRCd component shut down

AUTHOR
    Hinrik Örn Sigurðsson, hinrik.sig@gmail.com

LICENSE AND COPYRIGHT
    Copyright 2011 Hinrik Örn Sigurðsson

    This program is free software, you can redistribute it and/or modify it
    under the same terms as Perl itself.

