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, [email protected]

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.