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 IRC component(s).
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 IRC 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.