Abstract
This document is still a work-in-progress. We're doing our best to keep it up-to-date and understandable, but please don't hesitate to contact us if you have comments or questions.
Table of Contents
Table of Contents
Ctrlproxy is an IRC proxy or BNC (bouncer). It keeps a permanent connection to one or more IRC servers. The user can then connect and disconnect his/her IRC client to the bouncer without actually disconnecting from the 'real' IRC server.
Any conversations (or parts of them) that happen on IRC while the user is disconnected can then be sent when the user connects again or asks for them explicitly.
It is also be possible to log into CtrlProxy from multiple locations simultaneously while using one and the same nick name on IRC.
Connect to one server with many clients under one nick transparently
Connect to multiple servers using only one process
CTCP support when no client is attached
irssi-style logging support
Transparent detaching and attaching of clients
Password support
Replication support
Auto-Away support
Keeping track of events occuring
Direct, inetd-style interfacing with local IRC servers (such as bitlbee)
Responses to queries are only sent to the originator of the query
SSL/GNUTLS support
Table of Contents
Most Linux distributions come with a packaged version of CtrlProxy. ctrlproxy is also included in the BSD ports collection.
If you already have a packaged version of ctrlproxy installed, you can skip this chapter.
CtrlProxy should run on pretty much all POSIX-compatible platforms. A version for Windows might be released in the future.
The source of ctrlproxy can be downloaded from the CtrlProxy homepage. The source files available there can be unpacked using tar and gzip:
$
tar xvgz ctrlproxy-3.0.6.tar.gz
ctrlproxy-3.0.6/AUTHORS ...
If you wish to use the bleeding-edge version of ctrlproxy, you can download the sources from Bazaar.
First, run the configure
script:
$
./configure
If this script does not detect all libraries and headers, while
they are present, specify the locations using command line arguments
to configure
. Run ./configure --help for details.
After configure
has finished, run make.
Once ctrlproxy has been built, find your system administrator or become root yourself and run make install.
Table of Contents
CtrlProxy is configured by a set of plain-text files that
live in the .ctrlproxy
directory in the users' home
directory.
By running ctrlproxy with the --init
argument, you can
quickly create a configuration file.
gwalcmai:~%ctrlproxy --init
Please specify port the administration interface should listen on. Prepend with a colon to listen on a specific address. Example: localhost:6668 Port [57000]:57000
Please specify a password for the administration interface: Configuration created in /home/jelmer/.ctrlproxy.
Once you have created a configuration file, you can hand-edit
the files in ~/.ctrlproxy
or connect to administration
port as specified above using your IRC client and use the admin interface.
Table of Contents
Replication (short for 'backlog replication') is the system that stores IRC lines and then sends them to the user once they connect to the proxy.
Additionally, there is a `BACKLOG' command available through the administration interface.
The replication setting in ctrlproxy selects what lines will be sent to the client upon connect. The following methods are available:
All lines that were sent after the last time you disconnected a client are stored and sent to a client that connects to ctrlproxy.
All lines that were sent after the last time you disconnected a client are stored and sent to a client that connects to ctrlproxy.
Table of Contents
CtrlProxy supports remote administration through IRC.
Commands can be executed by either using the /CTRLPROXY command in
your IRC client, sending them to the nick
ctrlproxy
on a network or by
connecting to the admin network, which
is built into CtrlProxy.
It is also possible to use this interface from the command-line on the machine where CtrlProxy is running by using the ctrlproxy-admin command.
The syntax for the commands is very simple: the command should be followed by one or arguments, separated by spaces. Quoting is not supported. Those familiar with NickServ or ChanServ will already be used to this syntax.
The following commands are available:
Syntax:
network add <name>
Add a new network with the specified name.
Syntax:
ADDSERVER <network> <host>[:<port>] [<password>]
Example: addserver OPN irc.freenode.net:6667
Syntax:
BACKLOG [<channel>]
Without any arguments, the BACKLOG command replicates all the backlogs for the current network.
With one argument, the name of a channel, all lines on that channel are replicated.
Syntax:
CHARSET <charset>
Change the character set that ctrlproxy should expect the client to send data in.
See the output of iconv -l for a list of possible character sets.
Syntax:
CONNECT <network>
Connect to the specified network. Ctrlproxy will connect to the first known server for this network.
Syntax:
network del <network>
Remove the specified network. The network may not be connected.
Syntax:
DISCONNECT <network>
Disconnect from the specified network.
Syntax:
network list
Prints out a list of all networks ctrlproxy is connected to at the moment.
Syntax:
set log_level [<level>]
View or change the CtrlProxy internal log level.
Syntax:
set report-time [<true|false>]
Whether or not time should be displayed when sending backlog to the user.
Syntax:
set log_level [<level>]
View or change the path of the message-of-the-day clients see when they log on.
Syntax:
set [<name> [<value>]]
List, view or change internal settings.
Specifying no argument will list all available settings.
Syntax:
NEXTSERVER [<NETWORK>]
Makes the specified network disconnect from the current server and go to the next one.
Syntax:
SAVECONFIG [<path>]
Save the (updated) configuration to the location it was loaded from (usually $HOME/.ctrlproxy/
).
Syntax:
STARTLISTENER [<address>:]<port> <password> [<network>]
Add listener on specified port
Table of Contents
CtrlProxy has various means for logging conversions to file.
By setting log_irssi_path
to a directory,
ctrlproxy will write log files to that directory in the same format
as is default in irssi.
Each channel or nick gets it's own seperate log file, which is located in a directory with the name of the IRC network.
If no directory is specified, data will be logged to $HOME/.ctrlproxy/log_irssi/$NETWORK/$CHANNEL
.
Module that writes logs to one or more files using a defined format.
This module may be used to write out log files that can be parsed by scripts or bots or logs in the same format as your favorite IRC client.
The configuration values define the syntax that is used to write out log file lines. In these configuration values, values beginning with a '%' can be substituted.
The following characters are allowed after a percent sign for all types of lines:
Current time of day, hours field.
Current time of day, number of minutes.
Current time of day, number of seconds.
Nick originating the line (saying the message, doing the kick, quitting, joining, etc).
Hostmask of the user originating the line.
Name of the current IRC network.
Name of the server (as set by the transport).
Percent sign
Substituted with the respective argument in the IRC line.
Replaced by channel name if the message is directed to a channel, the nick name to which the message is being sent, or the name of the sender of the message when the receiver is the user running ctrlproxy.
This substitute will be the name of the first channel on which the user is active if the line type is NICK or QUIT.
Each type of line also has some variables of it's own that it substitutes.
Nick of the user that is being kicked.
Channel the user is being kicked from.
Reason the user is being kicked.
Name of the channel of which the topic is being changed.
The new topic. Only set for 'topic', not for 'notopic'.
Name of user or channel of which the mode is being changed.
Change in the mode, e.g. +oie
Target of which the mode is being changed.
To retrieve any additional arguments for a MODE command,
use %1
, %2
, etc.
Name of channel or nickname of user to which the notice/privmsg/ or action is being sent.
Message that is being sent.
Table of Contents
This chapter contains some brief information on how to configure various IRC clients for use with CtrlProxy.
All IRC clients should be able to work with ctrlproxy (ctrlproxy acts just like any other IRC server and follows the RFC's). Please let us know on the CtrlProxy IRC channel if you find a client that is not working.
Configure the port
and password
settings in ~/.ctrlproxy/config
and run the following commands in irssi:
/set proxy_addressctrlproxy-host
/set proxy_passwordctrlproxy-password
/set proxy_portctrlproxy-port
/set use_proxy ON
You should now be able to connect to any networks as you normally would with irssi.
Configure socks in xchat to point at the host and port ctrlproxy is listening on. If you specified a password in the ctrlproxy configuration, specify it here as well. CtrlProxy will ignore the username that is sent by xchat.
Configure socks in BitchX:
/SET socks_host ctrlproxy-host
and, if you're running ctrlproxy on a port different than 1080:
/SET socks_port ctrlproxy-port
Clients with SOCKS support can simply configure ctrlproxy as if it was an ordinary SOCKS proxy. The username sent by the client is ignored by CtrlProxy, the password has to match the password configured in ctrlproxy's configuration.
Other clients can connect to ctrlproxy as if they were connecting to a standard IRC server.
The client should log in with the password that was configured in the configuration file, followed by a colon and the name of the network to connect to.
For example, the password to use to login to the network Freenode
with the ctrlproxy password set to geheim
would be:
geheim:Freenode
.