#!perl -w @erlaubt; ################################################################### # Hier bitte die Notwendigen Einstellungen vornehmen ################################################################### # Diese Nachricht wird dem User angezeigt, der dich anqueryt. $deny_message = "%C4Automatische Antwort: %OAlle Query's werden ignoriert. Naja vielleicht nicht alle :)"; # Diese Nachricht wird dem User angezeigt, wenn du ihm den erfragten Query erlaubst. $allow_message = "%C4Automatische Antwort: %OQuery akzeptiert"; ################################################################### # Ab hier bitte nur ändern, wenn du weisst, was du tust! ################################################################### $scriptname = "GodOfGTA's Query Blocker modif by Zap-Zarerap - made usable by gargelkarg+checkit"; $version = "1.2.3"; $home = IRC::get_info(4); $confpath = "$home/queryblocker.conf"; IRC::register ($scriptname, $version, "", ""); IRC::add_command_handler("qb", "qb_on_off"); IRC::add_command_handler("oki", "erlauben"); IRC::add_command_handler("weg", "nichterlauben"); IRC::add_command_handler("wer", "allowliste"); IRC::add_command_handler("qbhelp", "hilfesystem"); IRC::add_command_handler("query", "eigenerquery"); IRC::add_message_handler(PRIVMSG,auto_answer); IRC::print("Query-Blocker Script geladen und aktiviert!"); IRC::print("Zum deaktivieren /qb\nHilfesystem mit /qbhelp"); $qbs = 1; $letzternick = " "; &load_conf(); $MyName = (IRC::get_info(1)); if (&check_in_list($MyName) == -1) { push(@erlaubt,$MyName); } sub check_in_list { local($nick) = @_; $cnt = 0; CYCLE: foreach (@erlaubt) { if (uc($_) eq uc($nick)) { return $cnt; } $cnt++; } return -1; } sub eigenerquery { local($line) = @_; if($qbs==1) { if (&check_in_list($line) == -1) { push(@erlaubt,$line); } &save_conf(); } return 0; } sub erlauben { local($nick) = @_; if($qbs==1) { if ($nick ne "") { if (&check_in_list($nick) == -1) { push(@erlaubt,$nick); } else { IRC::print("$nick ist schon in der allow-liste."); } } else { if($letzternick eq " ") { return 1; } push(@erlaubt,$letzternick); IRC::command("/query $letzternick"); IRC::command("/msg $letzternick $allow_message "); } &save_conf(); } return 1; } sub nichterlauben { local($nick) = @_; my $idx; if($qbs==1) { if($nick ne "") { $idx = &check_in_list($nick); if ($idx == -1) { IRC::print("$nick ist nicht in der allow-liste."); return 1; } else { $temp = splice(@erlaubt,$idx,1); } } else { $temp = pop(@erlaubt); } IRC::print("Query's von $temp werden wieder geblockt"); &save_conf(); } return 1; } sub allowliste { $schleife= 0; IRC::print("Diesen Usern ist der Query erlaubt:\n"); foreach $temp (@erlaubt) { IRC::print("($schleife) $temp"); $schleife++; } return 1; } sub qb_on_off { if($qbs == 1) { IRC::print("Der Query-Blocker wurde deaktiviert!\nZum reaktivieren einfach nochmal /qb"); $qbs = 0; return 1; } else { IRC::print("Der Query-Blocker wurde aktiviert!\nZum deaktivieren einfach nochmal /qb"); $qbs = 1; return 1; } } sub auto_answer { if($qbs != 0) { local($line) = @_; $MyName = (IRC::get_info(1)); if($line =~ m/:(.+?)\!.+? PRIVMSG $MyName :(\w.*)/) { $QUser = $1; $letzternick = $1; $QMessage = $2; foreach $temp (@erlaubt) { if($temp eq $QUser) { return 0; } } IRC::command("/notice $MyName %B$QUser %Owill was im Query: $QMessage"); IRC::command("/notice $MyName Query erlauben mit %B/oki"); IRC::command("/msg $QUser $deny_message "); return 1; } else { return 0; } } else { return 0; } } sub hilfesystem { IRC::print("\n$scriptname\n---------------------------------------- v$version\n"); IRC::print("Befehle: /qb -> Schaltet die Funktionen des Query-Blockers ein\n"); IRC::print(" oder aus.\n"); IRC::print(" /oki -> Dem letzten User, die versucht hat, Dich per Query\n"); IRC::print(" zu erreichen, diesen erlauben (Query akzeptiert).\n"); IRC::print(" /oki nick -> Dem User mit nick erlauben zu dir Queries aufzubauen\n"); IRC::print(" /wer -> Zeigt die Liste der User auf, denen Du den Query\n"); IRC::print(" erlaubst.\n"); IRC::print(" /weg -> Dem letzten User, dem Du den Query erlaubt hast,\n"); IRC::print(" dieses Recht wieder nehmen.\n"); IRC::print(" /weg nick -> Dem User nick, dem Du den Query erlaubt hast,\n"); IRC::print(" dieses Recht wieder nehmen.\n\n"); IRC::print(" Autoupdate sollte auch unter Windows funktionieren.\n"); IRC::print(" Wenn du jemanden anqueriest, wird er automatisch in die \n"); IRC::print(" Access Liste eingetragen.\n\n"); IRC::print(" Die Access Liste ist jetzt non case sensitiv.\n"); IRC::print(" /qbhelp -> Dieses Hilfesystem :)\n\n"); return 1; } sub load_conf { open (CONF, "<$confpath"); if ( -f CONF) { while () { chop; push (@erlaubt, $_); } close CONF; IRC::print("Config file $confpath loaded"); } } sub save_conf { open (CONF, ">$confpath"); if ( -f CONF) { foreach (@erlaubt) { print CONF $_."\n"; } close CONF; } }