Please note this has now been replaced for ZNC, please see ZNC Documentation

Given the fact that Linaro members span multiple timezones, many interesting conversations may take place on IRC when you are away from your computer. IRC proxies help you deal with this.

Bip Logo

Bip is an IRC proxy that maintains a persistent connection(s) to a list of IRC channels. You can then point your IRC client to BIP each time you log in and playback the conversations that took place while you were away.

BIP Configuration

BIP can be installed on an Ubuntu system with:

sudo apt-get install bip

BIP needs an SSL key to be generated. You can do that with:

mkdir ~/.bip && cd ~/.bip
openssl req -new -newkey rsa:4096 -nodes -x509 -keyout bip.pem -out bip.pem
chmod 600 bip.pem

You now need a bip configuration file (~/.bip/bip.conf). The example below shows how to connect to linaro channels on FreeNode. Remember to change the TODO_YOUR_VALUE comments in the file below:

ip = "";

# To connect a client to bip, try the port below, and
# be sure to set the password to the value
# specified in the network you want to connect to.
port = 7778;

# If you set this to true, you'll only be able to connect to bip
# with a SSL capable IRC client. Be sure to generate a certificate
# for bip with 'make cert'
client_side_ssl = true;

log_level = 3;


# This is where logs go. Channel and private messages will use that
# configuration value as a prefix, and then log_format to determine
# full log filename.
log_root = "/var/log/bip/";

# Log format allows you to make log filenames depend on the log line's
# attributes. Here's a list :
# %u -> user name
# %n -> network name
# %Y -> 4 digit year
# %m -> 2 digit month
# %d -> 2 digit day
# %c -> destination (#chan, privates, ...)
#log_format = "%n/%Y-%m/%c.%d.log";

# Sets the frequency (in seconds) of log syncing (real write to kernel)
#log_sync_interval = 5;

# Makes bip send the log of each channel and privates while
# you were not connected to the proxy upon connection.
backlog = true;         # enable backlog
backlog_lines = 0;              # number of lines in backlog, 0 means no limit
backlog_always = false;         # backlog even lines already backlogged
backlog_msg_only = true;

# If blreset_on_talk talking on an irc network has the same effect of issuing
# /bip blreset, meaning that stuffed logged before the command won't be read
# back on backlog
#blreset_on_talk = false;
blreset_on_talk = true;
backlog_reset_on_talk = true;

network {
        name = "freenode";
        server { host = ""; port = 6667; };

# Configuration example with one user who connects to two irc networks
# To use the multi-server feature:
#  - define the connections
#  - chose and setup a different login for each connection
# on your irc client:
#  - Use the multi server feature of your client, the server beeing each time
#    the server where bip is running. In your client setup server password to:
#      username:password:connectionname
#  - do not store the password in clear here, use the bipmkpw util to generate
# a hash

# User structure is grouping information for a given user
user {
        # The name in bip of the user
        # This is used by bip only
        name = "TODO_YOUR_VALUE";
        # this user's password (md5(md5("tata"))) with seed - generated by bipmkpw
        password = "TODO_YOUR_VALUE";

        # SSL certificates checking mode for user:
        # - "none" to accept anything;
        # - "basic" to accept if the certificate is contained in the store;
        # In "basic" mode, encountered untrusted certificates can be added to
        # the store interactively by connecting a client and "trusting" them.
        # - "ca" to do a complete certificate chain checking with the objects
        # in the store below (you have to put in it every cert, CRL, up to the
        # root CA). You have to build your store manually, so you may prefer
        # using "basic" unless you're a crypto zealot...
        ssl_check_mode = "none";

        # Location of the user's store for SSL certificate check
        # In "basic" mode, that must point to a single file with all trusted
        # certs concatenated together (the interactive "trust" appends to this
        # file).
        # In "ca" mode, it's a directory of a standard openssl store; you must
        # put PEM objects (certificates, CRLs...) with .pem extension and run
        # `c_rehash .' in it
        # ssl_check_store = "/home/bip`debian/.bip/trustedcerts.txt";

        # These will be the default for each connections
        default_nick = "TODO_YOUR_VALUE";
        default_user = "TODO_YOUR_VALUE";
        default_realname = "TODO_YOUR_VALUE";

        # A user can have mutiple connections to irc networks.
        # define a connection:

        #connect to Linaro channels on FreeNode:
        connection {
                name = "freenode";              # used by bip only
                network = "freenode";   # which ircnet to connect to

                # Some options:
                #follow_nick = true;
                ignore_first_nick = true;
                no_client_away_msg = "currently disconnected";
                #Optional - if you have your ID password protected:
                #on_connect_send = "PRIVMSG NickServ :IDENTIFY TODO_YOUR_VALUE";

                # Autojoined channels:
                channel {
                        name = "#linaro,#linaro-meeting";

If you need to join a password protected channel, the format is channel { name = "#linaro-internal"; key = "password"; };

Bip may complain if the directory /var/run/bip/ does not exist before you launch it.

XChat Logo

XChat Configuration Example

You can then create a "BIP-Freenode" server and have it automatically join your configured channels with by adding the entry below to the top of your ${HOME}/.xchat2/servlist_.conf, and then updating the YOUR_BIP_* values to match your configuration.

E=IRC (Latin/Unicode Hybrid)

CategoryHowTo CategoryInformationTechnology

Resources/HowTo/BIP (last modified 2014-10-14 09:34:20)