Current version : 0.0.1
This puppet module allows you to easily install an UnrealIRC IRC server.
It will install a basic IRC server and let you config it with puppet. There is a puppet type for each section of the unrealircd.conf. This way, you can easily manage opers, vhosts, server links...
You may be interested by the following modules :
-
Anope Puppet Module for IRC services management
class { '::unrealirc':
}
class { '::unrealirc':
install_path => '/var/lib/unreal',
user => 'irc',
group => 'irc',
log_path => '/var/log/ircd.log',
servername => 'irc.myserver.org',
serverdesc => 'Description of irc server',
maxusers => 100,
maxservers => 10,
admins => ['admin <admin@myserver.org>'],
pidfile => '/var/lib/unreal/ircd.pid',
url => 'http://www.unrealircd.com/downloads/Unreal3.2.10.2.tar.gz'
}
install_path
Directory where UnrealIRCd will be installed
user
Unix user that should own the UnrealIRC directory and run the service
group
Group of the user that should own the UnrealIRC directory and run the service
log_path
Path of the log file. Beware that this path may be defined later in the server advanced config
servername
Name of your IRC server
serverdesc
Description of your IRC server
maxusers
Max number of users that can simultaneously be connected on the server
maxservers
Max number of servers that can be linked to the server
admins
Array containing the names of server admins.
pidfile
Path of the service pid file
url
Url to the UnrealIRC download archive
Some values must be defined for your IRC network to work. You can set them by using the unrealirc::config::set type.
unrealirc::config::set { 'network':
network_name => "Public Name of My Server",
default_server => "irc.myserver.org",
services_server => "services.myserver.org",
kline_address => "contact@myserver.org",
}
You can built step by step your unrealircd.conf by using unrealirc::config puppet types. Examples provided below only show required options. Each type have several other options to precisely suits to your needs. For further informations about how to use theses options, please read the UnrealIRC doc at http://www.unrealircd.com/files/docs/unreal32docs.html
Your unrealircd.conf will be built by including wildcard *.conf files generated by the use of unrealirc::config puppet types. Each type will create a {TYPE}_{TYPE_NAME}.conf file in the config directory located in the install path.
Please refer to the UnrealIRC documentation to know how to configure your server.
unrealirc::config::set { 'server':
modes_on_connect => "+ix",
modes_on_oper => "+xwgs",
auto_join => "#welcome",
oper_auto_join => "#opers",
}
unrealirc::config::listen { 'default_6667': port => 6667, }
unrealirc::config::allow { 'clients':
maxperip => 5,
}
unrealirc::config::log { 'default':
flags => ['oper','kline','connects','server-connects','kills','errors','sadmin-commands','chg-commands','oper-override','spamfilter'],
}
unrealirc::config::oper { 'me':
username => 'The-Master',
password => 'mypassword',
}
NOTE: This config will be stored in /var/lib/unreal/config/oper_me.conf file
unrealirc::config::vhost { 'me':
vhost => 'the.creator',
login => 'The-Master',
password => 'mypassword',
swhois => 'This is the creator!',
}
NOTE: This config will be stored in /var/lib/unreal/config/vhost_me.conf file
unrealirc::config::link { 'services':
servername => 'services.myserver.org',
hostname => '127.0.0.1',
port => '6667',
password_connect => 'myserverpassword',
password_receive => 'myserverpassword2',
}
unrealirc::config::ulines { 'servers':
servers => ['services.myserver.org'],
}
unrealirc::config::ban { 'notallowed':
type => 'NicknameNotAllowed',
mask => '*',
reason => 'This nickname is not allowed',
}
unrealirc::config::except { 'dontbanme':
type => 'ban',
mask => '*@me',
}
unrealirc::config::deny { 'denydcc':
type => 'dcc',
filename => 'virus.exe',
reason => 'This file is a virus!',
soft => 'yes',
}
Take a look at other unrealirc::config types to learn how you can configure your server. These types are only wrappers around unrealircd.conf configuration options and parameters can be easily matched with those present in the official UnrealIRC documentation.
This modules currently supports UnrealIRCd 3.2.10 but should also be compatible with newer releases.
It was tested on debian like systems but should also work on other linux distributions (except for the services part restricted to debian, contributions for other distribs would be welcomed!).
Since the unrealircd.conf is built by including wildcard *.conf files generated by the module and located in the irc server "config" directory, you should be careful to clean this directory when you update the server config in puppet (especially if you change the name of the config type you used).
For IRC related questions, please have a look to UnrealIRC documentation :
http://www.unrealircd.com/files/docs/unreal32docs.html
Please report any module issue to project bug tracker on github :
https://github.com/Wharenn/puppet-unrealirc/issues
Contributions in form of pull requests are also welcomed! :-)
This module is distributed under the MIT licence. Please check the full licence included at the root of the project tree.