summaryrefslogtreecommitdiffstats
path: root/scripts/bitlbee_hide_password.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/bitlbee_hide_password.pl')
-rw-r--r--scripts/bitlbee_hide_password.pl64
1 files changed, 64 insertions, 0 deletions
diff --git a/scripts/bitlbee_hide_password.pl b/scripts/bitlbee_hide_password.pl
new file mode 100644
index 0000000..feb86b2
--- /dev/null
+++ b/scripts/bitlbee_hide_password.pl
@@ -0,0 +1,64 @@
+use strict;
+use warnings;
+use Irssi;
+
+our $VERSION = '1.0';
+our %IRSSI = (
+ authors => 'Ævar Arnfjörð Bjarmason',
+ contact => 'avarab@gmail.com',
+ name => 'bitlbee_hide_password.pl',
+ description => 'Hide your REGISTER and IDENTIFY password lines in &bitlbee from screen & logs ',
+ license => 'Public Domain',
+ url => 'http://scripts.irssi.org & https://github.com/avar/dotfiles/blob/master/.irssi/scripts/bitlbee_hide_password.pl',
+);
+
+# HOWTO:
+#
+# /load bitlbee_hide_password.pl
+#
+# When you're using Bitlbee and do either:
+#
+# REGISTER <password>
+#
+# or:
+#
+# IDENTIFY <password>
+#
+# Your password will be shown on screen, and more importantly logged
+# in your logfiles. This extension intercepts these commands in your
+# &bitlbee channel and hides it from screen & logs.
+#
+# Note: You can avoid the password going into the log without this
+# plugin by doing:
+#
+# IDENTIFY
+# /OPER
+#
+# But this script also makes sure that your REGISTER commands will be
+# hidden, and of course "IDENTIFY <password>" commands if you ever
+# forget to IDENTIFY with /OPER.
+
+sub msg_intercept_bitlbee_password_lines {
+ my ($tdest, $data, $stripped) = @_;
+
+ # The $tdest object has various other things, like ->{target},
+ # ->{window} (object) etc.
+ my $server = $tdest->{server};
+
+ # Some events just have ->{window} and no ->{server}, we can
+ # ignore those
+ return unless $server;
+
+ # We only care about the &bitlbee control channel
+ my $target = $tdest->{target};
+ return unless $target eq '&bitlbee';
+
+ # We're matching against $stripped but replacing both because the
+ # $data thing is escaped and much harder to match against.
+ if ($stripped =~ /^<.?[^>]+> (?:register|identify) .+/si) {
+ s/(identify|register) .+/$1 <password stripped by $IRSSI{name}>/i for $data, $stripped;
+ Irssi::signal_continue($tdest, $data, $stripped);
+ }
+}
+
+Irssi::signal_add_first('print text', 'msg_intercept_bitlbee_password_lines');