This is the BIP IRC Proxy README. Bip can be used in two different ways: - Old school bnc user style: easy and straightforward. - Unix service style with and init.d scripts and the logs in /var/log This small README file explains the usage "Old school" with which : - you do not need the root privileges. - gives easy access to the logs to the owner of the shell. Table of contents : I. Installation II. Configuration A. Manual configuration B. Automated configuration III. Running bip IV. Using bip A. Connecting your client(s) B. Backlog and flood control C. Multiple users and ident issues I. INSTALLATION Install bip on the machine that will be running bip (which is likely to be your personnal or shared server) either compiling the package or using your distro's package. Then create a configuration file. Choose your distribution package if available. If not, build bip the old-fashioned way. You will need make, gcc, lex, yacc, automake, autoconf-archive and optionally libssl-dev to build bip. Just issue: From bip-X.Y.Z.tar.gz package: # ./configure && make From repository: # autoreconf -i # ./configure --enable-maintainer-mode && make If openssl and its developement files are installed, bip should build with SSL support. After a successful build the bip binary can be found in ./src/bip. By default, "-Werror" is used. If you encounter warnings, you could try: # CFLAGS="-Wno-error" ./configure && make II. CONFIGURATION First of all, create your bip configuration an log directory: # mkdir -p ~/.bip/logs There are two ways to create your bip configuration : - edit the sample bip.conf file to match your needs - use the bipgenconfig script to easily generate a configuration If you want to connect to bip using an SSL client, you'll need to create a certificate / key pair (in a bip.pem file) to allow bip to serve SSL sockets. A. MANUAL CONFIGURATION If you are using a distribution package, the bip.conf sample configuration file is likely to be shipped in /usr/share/doc/bip/examples/bip.conf.gz or something similar. If not, you'll find sample configuration file in the source package's `samples' subdirectory. Put the uncompressed configuration file in your ~/.bip directory (its path should be ~/.bip/bip.conf), and edit it, most importantly the "user" section that contains information about you and the servers you will want to connect to. The "name" field in the "user" section is your login to connect to bip. The "name" field of the "connection" subsections are the server identifier for when you connect to bip. The "password" field is a hash of the password you will use to connect to bip. To generate a hash value from a password, use bipmkpw, program which comes in the bip package and source. If you've set client_side_ssl to true, you'll need to generate a bip.pem file containing a certificate / key pair. In order to do so, you can use the third party `openssl' binary : # openssl req -new -x509 -days 365 -nodes -out bip.pem -keyout bip.pem You can then remove the passphrase with : # openssl x509 -subject -dates -fingerprint -noout -in bip.pem B. AUTOMATED CONFIGURATION You can also use the bipgenconfig script to generate a new configuration. This script will also help you generate the SSL certificate / key pair needed for clients to connect to BIP through SSL. This script can be found either in the source package's `scripts' directory or shipped with your distribution's package. Using the script is very simple, and it will generate a configuration file but won't overwrite any existing configuration. It will ask you the path to the bipmkpw binary, to automatically hash the passwords you'll provide. Please make sure to enter the correct path to the binary or you might observe unexpected behaviour. You'll need to move the generated configuration from bip.conf.autogen to bip.conf and the generated PEM file from bip.pem.autogen to bip.pem (or whatever path you've configured in bip.conf). III. RUNNING BIP Once all this is configured, start bip as your regular user: # ./src/bip If you have installed bip in your path (or if you are using you distribution's package), simply use: # bip Once bip starts, it connects to the different servers your defined in all "user"'s "connection" blocks. IV. USING BIP A. CONNECTING YOUR CLIENT(S) Then you want to use your regular irc client and connect to bip. Point your client to the machine bip is running and set the proper port number (defined in your bip.conf). You should then configure the client to use a specific irc server password constructed this way: user:password:connection The user is the name field of the "user" section, the password is the password (*not* the hash) corresponding to the "password" field of the same user section (which is the hash generated with bipmkpw) and the connection is the "name" field of the "connection" subsection. This is how bip authenticates you and puts your client to the correct network. Using the default (or sample file) configuration, logs are in ~/.bip/logs/ B. BACKLOG AND FLOOD CONTROL Bip has a backlogging system which will send back parts of the last logs upon client connection. Depending on your configuration, that may mean a *lot* of data sent back to your client. Users' messages will be replayed as if they were being sent at the moment your client connects to bip, and if not disabled, system messages will appear as coming from the "-bip" user. Considering that, you may want to disable your client's anti-flood system, totally or not, depending on it's flexibility. Since bip doesn't replay CTCP messages, you can safely let your client's anti-flood system manage them. [Xchat] If you're using Xchat, you can "disable" it by issuing these commands : /set flood_msg_num = 1000 /set flood_msg_time = 10 In fact you'll tell xchat to activate its anti-flood system when you're receiving more than 1000 messages in less than 10 seconds. If you forgot to set these, private messages may not appear in separate tabs as usual. If so, simply issue a : /set gui_auto_open_dialog on C. MULTIPLE USERS AND IDENT ISSUES When you host many connections to the same IRC network, you might have more connections than allowed by the network from one host. Depending on the network and the services it runs, session limits may be enforced either matching only your ip address/hostname, or matching the username/ident part too. To avoid being killed for session limit exceeded, you should define a default_username in each user {}; block. A user without default_username would appear as ~bip@yourhost if bip is the system user running bip. With a default_username set to "myuser", he would appear as ~myuser@yourhost, which may be sufficient for most networks. If the network you're on is a bit more demanding, you can set up an oidentd server on your host, and enable oidentd spoofing support ('write_oidentd = true;' option in bip configuration file). Let's say bip is the system user running bip, you should add to your /etc/oidentd.conf : user "bip" { default { allow spoof_all allow spoof_privport allow spoof } } Then reload oidentd and make sure that ~bip is accessible (+rx) by the user running oidentd (which means most of the time ~bip should be world readable and browsable +rx). If you already have a ~bip/.oidentd.conf file, don't worry, bip'll only add its entries without deleting any of the contents of the file. This step should remove the "~" character from the username/ident part of your ircmask, and thus satisfy some networks. If the network is still killing you for session limit exceeded, you'll have to contact it's admins and ask them for an exception on your host or ip address. Happy ircing! -- Arnaud Cornet and Loïc Gomez