TommyBlue.it

Bip: un proxy IRC per rimanere sempre connessi

Bip è un proxy IRC, ovvero un demone che rimane collegato ai server IRC anche quando tu non lo sei. Quando poi ti ricolleghi a Bip ritrovi lo storico dei messaggi dalla tua ultima connessione.

Configurare il demone

Il demone può essere lanciato su un sever con un semplice:

~$ bip

Immediatamente il processo entra in background e rimane attivo finchè non lo si uccide. La configurazione è nel file ~/.bip/bip.conf, di seguito un esempio:

ip = "0.0.0.0"; # Allow connections from all IPs
port = 12345;
client_side_ssl = true; # only SSL connections, unses ~/.bip/bip.pem
log_level = 0;
backlog = false;		# enable backlog
backlog_lines = 0;		# number of lines in backlog, 0 means no limit
backlog_always = false;		# backlog even lines already backlogged
blreset_on_talk = false;
backlog_msg_only = true;

network {
	name = "FreeNode";
	server { host = "irc.freenode.net"; port = 6667; };
	server { host = "irc.eu.freenode.net"; port = 6667; };
	server { host = "irc.us.freenode.net"; port = 6667; };
	server { host = "irc.au.freenode.net"; port = 6667; };
};

network {
	name = "GimpNet";
	server { host = "irc.gimp.org"; port=6667; };
	server { host = "irc.us.gimp.org"; port=6667; };
	server { host = "irc.au.gimp.org"; port=6667; };
};

user {
	name = "tommyblue";
	password = "4249b078bbe9292a2e1be97fd0fff08a5c1fcee1"; # "s3cr3t" password, generated by bipmkpw
	ssl_check_mode = "none";
	default_nick = "tommyblue";
	default_user = "tommyblue";
	default_realname = "Tommaso Visconti";

	connection {
		name = "freenode";
		network = "FreeNode";
		password = ":tommyblue MyS3cr3tPassword";
		on_connect_send = "PRIVMSG NickServ :IDENTIFY MyS3cr3tPassword";
		channel { name = "#ruby"; };
		channel { name = "#ruby-it"; };
		channel { name = "#ruby-lang"; };
		channel { name = "#rubyonrails"; };
		channel { name = "#fedora"; };
	};
	connection {
		name = "gimpnet";
		network = "GimpNet";
		channel { name = "#gnome-it"; };
		channel { name = "#gnome-love"; };
		channel { name = "#gnome-hackers"; };
		channel { name = "#fedora-desktop"; };
	};
};

Con questa configurazione Bip si connetterà  a FreeNode e GimpNet ai vari canali indicati. Nel caso di FreeNode utilizzerà  un utente registrato (per farlo, leggete qui). La password dell’utente tommyblue è stata generata utilizzando il comando bipmkpw, si tratta di un doppio MD5 (della parola “s3cr3t”, in questo esempio).

Poichè ho scelto di connettermi a Bip utilizzando SSL, ho impostato l’opzione client_site_ssl = true;. Affinchè funzioni bisogna avere un certificato SSL valido oppure bisogna crearselo, con:

openssl req -new -x509 -days 365 -nodes -out bip.pem -keyout bip.pem openssl x509 -subject -dates -fingerprint -noout -in bip.pem

Il primo comando genera il certificato, il secondo toglie la password. Il file bip.pem va messo in ~/.bip/bip.pem a meno di non indicarlo nel file di configurazione.

Connettersi a Bip con XChat

A questo punto dobbiamo aprire XChat (ma funziona con qualsiasi client IRC) e aggiungere le due reti configurate (FreeNode e GimpNet), avendo cura di utilizzare una connessione SSL, accettare un certificato SSL autofirmato, impostare l’indirizzo del server con il formato IP-DEL-SERVER/PORTA ovvero, supponendo che l’IP del nostro server sia 1.2.3.4: 1.2.3.4/12345

Come ultima cosa, la password del server sarà  composta da username:password:nome_della_rete nel caso di FreeNode: tommyblue:s3cr3t:freenode

Non è comodissimo inserire tutta la password dato che mentre si digita si vedono solo asterischi, quindi se qualcosa non funziona, per prima cosa mi assicurerei che la password sia corretta. In ogni caso i log di Bip nel server aiutano.

Ci vediamo online :)