SYNOPSIS
dircproxy [-hvDI] [-f config_file] [-P listen_port] [-p pid_file]
DESCRIPTION
dircproxy is an IRC proxy server designed for people who use IRC from
lots of different workstations or clients, but wish to remain connected
and see what they missed while they were away.
You connect to IRC through dircproxy, and it keeps you connected to the
server, even after you detach your client from it. While you're
detached, it logs channel and private messages as well as important
events, and when you re-attach it'll let you know what you missed.
This can be used to give you roughly the same functionality as using
ircII and screen(8) together, except you can use whatever IRC client
you like, including X ones!
Authentication is provided by a password, and optional hostname check-
ing. This links it to a connection class specified in the configura-
tion file. Only one user may use a connection class at one time, when
that user detaches, the connection to the server is kept open. When
someone (usually the user) subsequently connects to dircproxy and pro-
vides the same password, they are reconnected to the connection to the
server, instead of having a new connection created for them.
Multiple connection classes can be defined, allowing multiple people to
use the same proxy.
dircproxy can use either a .dircproxyrc file in the user's home direc-
tory, or a system-wide dircproxyrc file. It will load the first it
finds (home directory first, then system-wide). If no configuration
file is specified, it will not start.
OPTIONS
-f config_file
Specifies the configuration file to be used, overriding the
default search list.
-h Displays a brief help message detailing the command-line argu-
ments, then exits.
-v Displays the dircproxy version number, then exits.
-D Run in the foreground and do not fork into the background.
-I Use to indicate dircproxy is being run from the inetd(8) daemon.
This implies -D. For more information on running dircproxy
under inetd(8), see the README.inetd file.
Connection classes start with 'connection {' and end with '}'. They
obtain default values from all the entries above them in the configura-
tion file, and may contain values of their own.
Otherwise a line is of the format 'keywords arguments'. If the argu-
ment contains spaces it should be contained in double quotes ('"with
spaces"'). The possible keywords and their meanings are as follows
(note that the configuration file is not case-sensitive):
LOCAL OPTIONS
These options may not be placed inside a connection class as they
affect the operation of the entire dircproxy server.
listen_port
What port should dircproxy listen for connections from IRC
clients on?
This can be a numeric port number, or a service name from
/etc/services
pid_file
File to write the dircproxy process id to on startup. If you
start this with a "~/" then it refers to a file in a directory
under your home directory.
none = Don't write pid file
client_timeout
Maxmimum amount of time (in seconds) a client can take to con-
nect to dircproxy and provide their password and nickname etc.
connect_timeout
Maximum amount of time (in seconds) a client has to provide a
server to connect to after they've logged in. This only applies
if 'server_autoconnect' is 'no' for that class.
dns_timeout
Maximum amount of time (in seconds) to wait for a reply from a
DNS server. If the time exceeds this then the lookup is can-
celled.
GLOBAL OPTIONS
These options may be placed in a connection class, or outside of one.
do we wait before retrying again?
server_maxattempts
If we are disconnected from the server, how many times should we
iterate the server list before giving up and declaring the prox-
ied connection dead?
0 = iterate forever
server_maxinitattempts
On first connection, how many times should we iterate the server
list before giving up and declaring the proxied connection dead?
0 = iterate forever. This isn't recommended.
server_keepalive
This checks whether the dircproxy to server connection is alive
at the TCP level. If no data is sent in either direction for a
period of time, a TCP keepalive probe is sent.
yes = send keepalive probes
no = don't send keepalive probes
server_pingtimeout
For some people, dircproxy doesn't notice that the connection to
the server has been dropped because the socket remains open.
For example, those behind a NAT'd firewall. dircproxy can ping
the server and make sure it gets replies back. If the time
since the last reply was received exceeds the number of seconds
below the server is assumed to be "stoned" and dircproxy leaves
it. If you have a high latency connection to the server, it can
wrongly assume the server is stoned because the PINGs don't
arrive in time. Either raise the value, or use the
'server_keepalive' option instead.
0 = don't send PINGs
server_throttle
To prevent you from being flooded off the IRC network, dircproxy
can throttle the connection to the server to prevent too much
being sent within a certain time period.
For this you specify a number of bytes, then optionally a time
period in seconds seperated by a colon. If the time period is
ommitted then per second is assmued.
yes = Automatically connect to the first server
no = Wait for a /DIRCPROXY JUMP from the client
channel_rejoin
If we are kicked off a channel, how many seconds do we wait
before attempting to rejoin.
-1 = Don't rejoin
0 = Immediately
channel_leave_on_detach
Should dircproxy automatically make you leave all the channels
you were on when you detach?
yes = Leave them
no = Remain on them
channel_rejoin_on_attach
If 'channel_leave_on_detach' is 'yes' then should dircproxy
rejoin those channels when you attach again?
yes = Rejoin the channels dircproxy automatically left
no = Leave permanently on detach
idle_maxtime
Set this to the maximum amount of time you want to appear idle
for while on IRC, if you set this then dircproxy will reset your
idle time if it reaches this limit (in seconds).
0 = Don't reset idle time
disconnect_existing_user
If, when you connect to dircproxy, another client is already
using your connection class (ie, if you forgot to close that
one), then this option lets you automatically kill that one off.
Make sure you turn any "automatic reconnect to server" options
off before using this, otherwise you'll have a fight on your
hands.
yes = Yes, disconnect
no = No, don't let me on
disconnect_on_detach
When you detach from dircproxy it usually keeps you connected to
the server until you connect again. If you don't want this, and
you want it to close your server connection as well, then set
drop_modes
Which user modes to drop automatically when you detach, handy to
limit the impact that your client has while connected, or for
extra security if you're an IRCop.
Set to "" to not drop any modes.
refuse_modes
Which user modes to refuse to accept from a server. If the
server attempts to set one of these, then the connection to it
will be dropped and the next server in the list will be tried.
A good setting for many people would be "+r", as most servers
use that to mean your connection is restricted. Don't set it to
this if you're on DALnet however, DALnet uses +r to indicate you
have registered with NickServ (gee, thanks guys!).
Set to "" to not refuse any modes.
local_address
Local hostname to use when connecting to an IRC server. This
provides the same functionality as the ircII -H parameter.
none = Do not bind any specific hostname
away_message
If you don't explicitly set an /AWAY message before you detach,
dircproxy can for you, so people don't think you are really at
your keyboard when you're not.
none = Do not set an away message for you
quit_message
If you don't explicitly give a message when you /DIRCPROXY QUIT,
this will be used instead. Also used for when you've sent
dircproxy not to remain attached to the server on detachment.
none = Use dircproxy version number as QUIT message
attach_message
dircproxy can send an announcement onto every channel you are on
when you reattach to it, just to let everyone know you are back.
If you start this with "/ME " then it will be sent as an ACTION
CTCP message (just like the ircII /me command).
none = Do not announce attachment
was before you detached (ie "*_away" adds "_away" to the end of
your nickname);
none = Leave nickname as it is
nick_keep
Whether dircproxy should attempt to keep the nickname you last
set using your client. If this is 'yes' and your nickname is
lost while your client is disconnected, then it will keep on
trying to get it back until a client connects again.
yes = try to keep my nickname while I'm disconnected
no = if it changes, leave it
ctcp_replies
Whether dircproxy should reply to the standard set of CTCP mes-
sages while the client is detached.
yes = reply to ctcp messages while client is detached
no = nothing but silence
chan_log_enabled
Whether logging of channel text to files should take place. If
this is 'yes', then you'll be able to recall channel text when
you rejoin and see what you missed.
yes = Channel text is logged to files
no = Channel text is NOT logged to files
chan_log_always
Channel text will always be logged while you are offline, so
when you come back you can see what you missed. You can also,
if you wish, log channel text while online, so if you're only
away a short time you can get an idea of any context etc.
This only applies if 'chan_log_enabled' is 'yes'.
yes = Log channel text while offline and online
no = Log channel text only while offline
chan_log_maxsize
To preserve your harddisk space, you can limit the size of a
channel log file. Once the log file reaches this number of
lines, every line added will result in a line removed from the
top. If you know you are never going to want all that logged
information, this might be a good setting for you.
is yes)
0 = Don't automatically recall anything
chan_log_timestamp
Channel text can have a timestamp added to the front to let you
know exactly when a message was logged. These timestamps are
displayed when you recall the log files, or when automatially
dumped.
This applies to ordinary channel logs if 'chan_log_enabled' is
'yes' and also to the permanent copy if 'chan_log_copydir' is
set to something other than 'none'.
yes = Include timestamp
no = Do not include timestamp
chan_log_relativetime
If 'chan_log_timestamp' is 'yes' then you also have the option
of using intelligent relative timestamps. If you do, the time-
stamp shown when log file information is recalled depends on how
old that line is, making sure it displays enough information
(including date if necessary). Otherwise dircproxy will just
tell you the time in HH:MM format which may not be as useful.
This does mean that the time itself won't be displayed in the
log files themselves, a timestamp is in place instead. This may
cause problems if you're doing things with the log files your-
self.
yes = Do fancy relative timestamping
no = Do normal timestamping
chan_log_copydir
As well as dircproxy's own log files, it can also keep a perma-
nent copy somewhere for your use. dircproxy will append all
channel text seen to this file, but will not use it itself.
If you do define it, it'll add to each log as you use it. If
you start with "~/" then it will use a directory under your home
directory.
This is done regardless of the 'chan_log_enabled' and
'chan_log_always' options, although if those are off then you
won't get that text recalled to your client, despite it being in
this file. The timestamping options do apply however.
none = Do not make a permanent copy
other_log_enabled
Whether logging of server and private messages to files should
take place. If this is 'yes', then you'll be able to recall
server and private messages when you rejoined and see what you
missed.
yes = Server/private messages are logged to files
no = Server/private messages are NOT logged to files
other_log_always
Server and private messages will always be logged while you are
offline, so when you come back you can see what you missed. You
can also, if you wish, log these messages while online, so if
you're only away a short time you can get an idea of any context
etc.
This only applies if 'other_log_enabled' is 'yes'.
yes = Log server/private messages while offline and online
no = Log server/private messages only while offline
other_log_maxsize
To preserve your harddisk space, you can limit the size of the
server/private message log file. Once the log file reaches this
number of lines, every line added will result in a line removed
from the top. If you know you are never going to want all that
logged information, this might be a good setting for you.
This only applies if 'other_log_enabled' is 'yes'.
0 = No limit to log file
other_log_recall
Number of lines from the server/private message log file to
automatically recall to your IRC client when you attach. If
this is low, you may not get much useful information, if this is
high, it may take a long time for all the information to arrive.
This only applies if 'other_log_enabled' is 'yes'.
-1 = Recall the whole log (not recommended if other_log_always
is yes)
0 = Don't automatically recall anything
other_log_timestamp
Server and private messages can have a timestamp added to the
front to let you know exactly when a message was logged. These
stamp shown when log file information is recalled depends on how
old that line is, making sure it displays enough information
(including date if necessary). Otherwise dircproxy will just
tell you the time in HH:MM format which may not be as useful.
This does mean that the time itself won't be displayed in the
log files themselves, a timestamp is in place instead. This may
cause problems if you're doing things with the log files your-
self.
yes = Do fancy relative timestamping
no = Do normal timestamping
other_log_copydir
As well as dircproxy's own log file, it can keep a permanent
copy somewhere for your use. dircproxy will append all server
and private messages seen to this file, but will not use it
itself.
If you do define it, it'll add to the log as it uses it. If you
start with "~/" then it will use a directory under your home
directory.
This is done regardless of the 'other_log_enabled' and
'other_log_always' options, although if those are off then won't
get that text recalled to your client, despite it being in this
file. The timestamping options do apply however.
none = Do not make a permanent copy
other_log_program
Program to pipe server and private messages into. If given,
dircproxy will run this program for each log file entry giving
the full source information as the first argument, the destina-
tion as the second and the text as a single line on standard
input.
The program can be anywhere in your $PATH, or you can start it
with "~/" if its in a directory under your home directory.
This is done regardless of the 'other_log_enabled' and
'other_log_always' options.
none = Do not pipe log messages to a program
log_timeoffset
Difference in minutes from your IRC client to the dircproxy
machine. So if you're in GMT, but your dircproxy machine is in
PST (which is 8 hours behind), then this would be -(8 * 60) =
log_events "none,+text,+action"
Example, to log everything but server messages:
log_events "all,-server"
# you don't need to specify 'all'
log_events -server
The possible events are:
text
Channel text and private messages
action
CTCP ACTION events (/me) sent to you or channels
ctcp
Whether to record whether a CTCP was sent to you
join
People (including you) joining channels
part
People (including you) leaving channels
kick
People (including you) being kicked from channels
quit
People quit''ing from IRC
nick
People (including you) changing nickname
mode
Changes in channel modes or your own personal mode
topic
Changes to the channel topic
client
You detaching and attaching
server
Connections and disconnections from servers
error
Problems and errors dircproxy encounters (recommended!)
dcc_proxy_incoming
Whether dircproxy should proxy DCC chat and send requests sent
dcc_proxy_ports
Ports that dircproxy can use to listen for DCC connections on.
This is for when you're behind a firewall that only allows cer-
tain ports through, or when doing DCC-via-ssh.
It is a comma seperated list of port numbers or ranges of ports,
for example '57100-57199,57400,57500,57600-57800'
any = Use any port given to us by the kernel.
dcc_proxy_timeout
Maxmimum amount of time (in seconds) to allow for both sides of
a DCC proxy to be connected.
dcc_proxy_sendreject
Whether to send a physical REJECT message via CTCP back to the
source of the request in event of failure.
yes = Send reject CTCP message back.
no = Do not send any message back.
dcc_send_fast
Whether to ignore the "acknowledgment" packets from the client
and just send the file to them as fast as possible. There
should be no real danger in doing this.
yes = Send as fast as possible.
no = Wait for each packet to be acknowledged.
dcc_capture_directory
dircproxy can capture files sent via DCC and store them on the
server. Especially useful while you are detached, whether it
does it while attached or not depends on 'dcc_capture_always'.
This is the directory to store those captured files in.
If start with "~/" then it will use a directory under your home
directory.
none = Do not capture files.
dcc_capture_always
If we're capturing DCC send's, should we do it while the client
is connected as well? If 'yes', then the client will never see
the file, it'll be just stored on the server with a notice sent
to the client telling them where.
yes = Capture even when a client is connected.
then the capture will be aborted and the file removed from the
disk. Prevents people from filling your disk up while you're
detached with a massive file.
0 = No limit to file size.
dcc_tunnel_incoming
Port of a local ssh tunnel leading to another dircproxy client
that we should use for incoming DCC requests. This should not
be set if 'dcc_tunnel_outgoing' is set.
See the README.dcc-via-ssh file included with the dircproxy dis-
tribution for more information.
This can be a numeric port number, or a service name from
/etc/services
none = There is no tunnel.
dcc_tunnel_outgoing
Port of a local ssh tunnel leading to another dircproxy client
that we should use for outgoing DCC requests. This should not
be set if 'dcc_tunnel_incoming' is set.
See the README.dcc-via-ssh file included with the dircproxy dis-
tribution for more information.
This can be a numeric port number, or a service name from
/etc/services
none = There is no tunnel.
switch_user
If you're running dircproxy as root, it can switch to a differ-
ent "effective user id" to create the server connection. This
means that your system ident daemon (and therefore IRC, if it
queries it) will see your server connection as the user you put
here, instead of root.
This is most useful if you are sysadmin running a dircproxy
server for multiple people and want them to all appear as dif-
ferent usernames without using a hacked identd. Because
dircproxy is still running as root, it will have those privi-
leges for all operations, including the bind(2) for the
'local_address' config option if you're using Secure Linux
patches.
This can only be used if your system supports seteuid(2) and if
you are running dircproxy as the root user, and not just setuid.
no = I don't like logos, I'm boring, I eat llamas.
motd_file
Custom message of the day file to send when users connect to
dircproxy. The contents of this file will be sent after the
logo and before the stats. If you start this with a "~/" then
it refers to a file in a directory under your home directory.
none = No custom motd
motd_stats
Display information on what channels you were on, and log file
sizes etc in the message of the day. This is handy, and lets
you know how not only much information you missed, but how much
will be sent to you.
yes = Show the stats
no = They don't interest me, don't show them.
allow_persist
You can disable the /DIRCPROXY PERSIST command if you do not
want people using your proxy to be able to do that.
yes = Command enabled
no = Command disabled
allow_jump
You can disable the /DIRCPROXY JUMP command if you do not want
people to do that.
yes = Command enabled
no = Command disabled
allow_jump_new
If the /DIRCPROXY JUMP commmand is enabled, then you can disable
it being used to jump to a server:port not in the list specified
in the configuration file.
yes = Can jump to any server
no = Only ones in the config file
allow_host
You can disable the /DIRCPROXY HOST command if you do not want
people to do that.
yes = Command enabled
You can enable the /DIRCPROXY USERS command if you want people
to be able to see who's using your proxy. This isn't recom-
mended as a global option, instead only enable it for a specific
connection class (ie yours).
yes = Command enabled
no = Command disabled
allow_kill
You can enable the /DIRCPROXY KILL command if you want people to
be able to disconnect anyone using your proxy (including you!).
This isn't recommended as a global option, instead only enable
it for a specific connection class (ie yours).
yes = Command enabled
no = Command disabled
Additionally, the following keywords may go only inside a connection
class definition. One 'password' and at least one 'server' (unless
'server_autoconnect' is 'no' and 'allow_jump_new' is 'yes') are manda-
tory.
password
Password required to use this connection class. This should be
encrypted using your system's crypt(3) function. It must be the
same as the password supplied by the IRC client on connection
for this connection class to be used.
You can use the included dircproxy-crypt(1) utility to generate
these passwords.
server Server to connect to. Multiple servers can be given, in which
case they are iterated when the connection to one is dropped.
This has the following format:
[hostname[:[port][:password]]
from The connection hostname must match this mask, multiple masks can
be specified to allow more hosts to connect. The * and ? wild-
cards may be used.
join Channels to join when you first connect. Multiple channels can
be given, either by seperating the names with a comma, or by
specifying multiple from the channel name with a space.
Note: You must surround the list of channels with quotes to dis-
NOTES
More information, including announcements of new releases, can be found
at:
http://www.dircproxy.net/
SEE ALSO
dircproxy-crypt(1) inetd(8) crypt(3)
BUGS
Please submit and review bug reports at:
http://bugzilla.dircproxy.net/
AUTHOR
Written by Scott James Remnant <scott@netsplit.com>.
COPYRIGHT
Copyright (C) 2002 Scott James Remnant. All Rights Reserved.
dircproxy is distributed under the GNU General Public License.
11 Jan 2001 dircproxy(1)
Man(1) output converted with
man2html