summaryrefslogtreecommitdiffstats
path: root/scripts/studivz_bitlbee_rename.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/studivz_bitlbee_rename.pl')
-rw-r--r--scripts/studivz_bitlbee_rename.pl74
1 files changed, 74 insertions, 0 deletions
diff --git a/scripts/studivz_bitlbee_rename.pl b/scripts/studivz_bitlbee_rename.pl
new file mode 100644
index 0000000..ec1d523
--- /dev/null
+++ b/scripts/studivz_bitlbee_rename.pl
@@ -0,0 +1,74 @@
+# See this script's repository at
+# http://github.com/avar/irssi-bitlbee-facebook-rename for further
+# information.
+
+use strict;
+use warnings;
+use Irssi;
+use Irssi::Irc;
+
+our $VERSION = '0.01';
+our %IRSSI = (
+ authors => "Enno Boland",
+ contact => 'g@s01.de',
+ name => 'studivz-bitlbee-rename',
+ description => 'Rename XMPP *vz.net network contacts in bitlbee to human-readable names based on http://github.com/avar/irssi-bitlbee-facebook-rename',
+ license => 'GPL',
+);
+
+my $bitlbeeChannel = "&bitlbee";
+my $vzhost = "vz.net";
+my %nicksToRename = ();
+
+sub message_join
+{
+ # "message join", SERVER_REC, char *channel, char *nick, char *address
+ my ($server, $channel, $nick, $address) = @_;
+ my ($username, $host) = split /@/, $address;
+
+ if ($host eq $vzhost and $channel =~ m/$bitlbeeChannel/ and $nick =~ m/$username/)
+ {
+ $nicksToRename{$nick} = $channel;
+ $server->command("whois -- $nick");
+ }
+}
+
+sub whois_data
+{
+ my ($server, $data) = @_;
+ my ($me, $nick, $user, $host) = split(" ", $data);
+
+ if (exists($nicksToRename{$nick}))
+ {
+ my $channel = $nicksToRename{$nick};
+ delete($nicksToRename{$nick});
+
+ my $ircname = substr($data, index($data,':')+1);
+
+ $ircname = munge_nickname( $ircname );
+
+ if ($ircname ne $nick)
+ {
+ $server->command("msg $channel rename $nick $ircname");
+ $server->command("msg $channel save");
+ }
+ }
+}
+
+sub munge_nickname
+{
+ my ($nick) = @_;
+
+ $nick =~ s/ä/ae/g;
+ $nick =~ s/ü/ue/g;
+ $nick =~ s/ö/oe/g;
+ $nick =~ s/ß/ss/g;
+ $nick =~ s/[^A-Za-z0-9-]/_/g;
+ $nick = "svz_" . $nick;
+ $nick = substr $nick, 0, 24;
+
+ return $nick;
+}
+
+Irssi::signal_add_first 'message join' => 'message_join';
+Irssi::signal_add_first 'event 311' => 'whois_data';