#!/usr/bin/perl #IP BL Bot v1.0 by seraphim, mit freundlicher Unterstützung der Supporter #von de.perl.org und unter mithilfe von Talustus #Support gibts nirgends, also seht wie ihr klar kommt :D use strict; use IO::Socket::INET; use English; use warnings; use Data::Dumper; #Pfadangabe zur Blacklistdatei!!! my $srcpath = 'H:\perl\result.txt'; #Login Daten my $operacc = "seraphim"; #Oper Account my $operpw = "seraphim"; #Oper Passwort my $nick = "P"; #Nick des Bots my $ident = "Ident"; #Ident des Bots my $rname = "Realname"; #Realname des Bots my $chan = "#main"; #Channel, in den geloggt werden soll my $bantime = "3600"; #Banzeit der GZLine in Sekunden my $banreason = "Your IP is blacklisted at our local Database."; #Operatoren des Bots, nimmt Befehle nur via PM an! #Format: qw(nick nick nick nick nick); my @opers = qw(seraphim); #Socket öffnen my $sock = IO::Socket::INET->new( PeerAddr => '127.0.0.1', #Adresse des IRCd´s PeerPort => 6667, #Port Proto => 'tcp', ) or die $!; #Introduction senden print $sock "NICK $nick\r\n"; print ") { #so lange $sock aktiv ist (also für alles was übertragen wird) chomp($_); if ($_ =~ /^PING(.*)$/i) { print $sock "PONG $1\r\n"; #ping-pong }else { #print ">$_\n"; #Debug Print }; my @line = split ' ', $_; #aufteilen von $_ getrennt an chr32 zu $line[x] local $/ = "\n"; chomp @line; local $/ = "\r"; chomp @line; if ($line[1] eq "376") { #bei Ende von /lusers Antwort print $sock "OPER $operacc $operpw\r\n"; print ") { #Durchlauf von @ipbl, der IP Blacklist chomp $line; if ($line eq $ipx) { print $sock "GZLINE *\@$line $bantime :$banreason\r\n"; print $sock "PRIVMSG $chan :GEFUNDEN! $line war in Blacklist!\r\n"; #print ") { chomp $x; if ($x ne $search) { push @list, $x; print "$x"; }; }; print "AAAA @list"; close ($handle1); open my $handle2, '>', $srcpath or die "Cant open File: $!"; foreach my $o (@list) { print $handle2 "$o\n"; }; close($handle2); }; }; }; }; }; #Subroutine zum Rausfischen von Nick aus :Nick!ident@host sub getnick { my @x = split /!/, $_; my @y = split /:/, $x[0]; return $y[1]; }; #Subroutine zur Prüfung ob der Nick ein Operator ist (&ifop(nick,@opers)) sub ifop { my $x = $_[0]; my @o = @_; my $z = scalar @o; $z = $z - 1; foreach (@o[1..$z]) { if ($_ eq $x) { return 1; }; }; };