The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.