diff options
| author | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
|---|---|---|
| committer | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
| commit | 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch) | |
| tree | 1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/nickmix-c0ffee.pl | |
| parent | 2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff) | |
| download | scripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2 | |
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/nickmix-c0ffee.pl')
| -rw-r--r-- | scripts/nickmix-c0ffee.pl | 89 | 
1 files changed, 89 insertions, 0 deletions
| diff --git a/scripts/nickmix-c0ffee.pl b/scripts/nickmix-c0ffee.pl new file mode 100644 index 0000000..203c875 --- /dev/null +++ b/scripts/nickmix-c0ffee.pl @@ -0,0 +1,89 @@ +# Nickmix - Perturbates your nick to avoid being collided of be split-riders +#	    trying to guess your nick (this normally includes banning them +#	    and setting the channel +i) +# + + +use strict; + +use vars qw ($VERSION %IRSSI); + +$VERSION = 'v0.1'; +%IRSSI = ( +          name        => 'nickmix-c0ffee', +          authors     => 'c0ffee', +          contact     => 'c0ffee@penguin-breeder.org', +          url         => 'http://www.penguin-breeder.org/irssi/', +          license     => 'GPLv2, not later', +          description => 'Perturbates your nick, use /nickmix nick/len where len is the number of chars you want to keep from your orig nick. use /stopmix to stop. Always issue the commands in a window of the server you want to mix in.' +         ); + + +use Irssi; + + +my %mix; +my %nick; +my %len; +my %servers; + +my @valid_chars = (split //, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789[]{}`_-\\'); + +sub nickmix { +  my ($data, $mask, $cnt) = @_; + +  $data =~ s/$mask/"$1" . join "", (map { $valid_chars[rand @valid_chars] } (1..$cnt))/e; +  return $data; + +} + +sub mixer { +  my $new_nick; +   +  $new_nick = nickmix($nick{$_},"(.\{$len{$_}\}).*",length($nick{$_}) - $len{$_}), +  $servers{$_}->command("NICK $new_nick") foreach (keys %mix); + +} + +sub cmd_nickmix { +  my ($data, $server, $channel) = @_; + +  Irssi::print("Not connected to a server."), return if not $server; + +  if ($data eq "") { +    Irssi::print "mixing $nick{$_} on $servers{$_}->{chatnet}" foreach (keys %mix); +    return; +  } + +  Irssi::print("Invalid format: usage: /nickmix nick/keep (keep is an int)"), +    return if $data !~ /^\S+\/\d+$/; + +  $mix{$server->{chatnet}} = $data; + +  ($nick{$server->{chatnet}},$len{$server->{chatnet}}) = $data =~ /^(\S+)\/(\d+)$/; +  $servers{$server->{chatnet}} = $server; + +  Irssi::print("Now mixing $nick{$server->{chatnet}} on $server->{chatnet}"); + +} + +sub cmd_stopmix { + +  my ($data, $server, $channel) = @_; + +  Irssi::print("Not connected to a server."), return if not $server; + + +  Irssi::print("Invalid format: usage: /stopmix"), +    return if $data !~ /^\s*$/; + +  Irssi::print("Stop mixing $nick{$server->{chatnet}} on $server->{chatnet}"); +  delete $mix{$server->{chatnet}}; +} + +Irssi::command_bind("stopmix", "cmd_stopmix"); +Irssi::command_bind("nickmix", "cmd_nickmix"); + +Irssi::print("Nickmix $VERSION loaded..."); + +Irssi::timeout_add(30000,'mixer',0); | 
