Konu: Tcl Arşivi
Tekil Mesaj gösterimi
Alt 16 Aralık 2007, 21:51   #3
Çevrimdışı
AsiL
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Tcl Arşivi




Bad Nick

PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
###############################################################################
########### Bad nick Protection by Prince_of_the_net ############
###############################################################################
#While I am in my channel I have seen quite a few people joining with irrtating
#or offensive nicks.This script will teach thoes lamers a lesson by kicking and
#optionally banning them.Like my other scripts,you need to load my counter
#script (counter.tcl,available at 
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #0000BB">set bnick 
{
"*fuck*" 
"*rape*" 
"*fuk*" 
"*badwa" 
"*phudi*" 
"*fudi" 
"*pussy*" 
"*boobs*" 
"*porn*" 
"*p0rn*"
}
#Set this to the time for which you would like to place a bad nick host on ban.
#0 makes the ban permanent.(Not recommended)
set bnick_bantime 30
#Set this to the time after which you would like to reset the timer for the
#bad nick.
set bnick_reset 60
#Set this to the number of times you want to warn before you would like to
#place ban.0 gives no warnings.
set bnick_warnings 1
#Set this to the reason to be given while kicking the offender the first time.
set bnick_kick "Your nick offends me.Change it and come back."
#Set this to the reason while banning the user after bnick_warnings have expired
set bnick_ban "I think I told you to change ur nick.Now we don't need you."
# How do you want it to mask a ban? Default == 2
# 0 - *!user@host.domain
# 1 - *!*user@host.domain
# 2 - *!*@host.domain
# 3 - *!*user@*.domain
# 4 - *!*@*.domain
# 5 - nick!user@host.domain
# 6 - nick!*user@host.domain
# 7 - nick!*@host.domain
# 8 - nick!*user@*.domain
# 9 - nick!*@*.domain
# You can also specify a type of 10 to 19 which correspond to masks 0 to 9, but
# instead of using a * wildcard to replace portions of the host.domain, it uses ?
# wildcards to replace the numbers in the address.
set bnick_ban_type 12
###############################################################################
## You can edit below this but dont mail me if things start acting weird :Ş ##
###############################################################################
bind join - * bnick:check
bind nick 
- * bnick:check
proc bnick
:check {nick uhost hand chan {newnick ""}} {
global 
logo bnicks bnick_bantime bnick bnick_reset bnick_warnings bnick_kick bnick_ban bnick_ban_type
if {$newnick == ""} {set newnick $nick}
foreach 
bword [split $bnick "\n"] { 
if {[
regexp -nocase $bword $newnick] && [botisop $chan]} {
if {![
info exists bnicks($uhost)]} {
set bnicks($uhost1
putkick $chan $newnick 
"$bnick_kick [count_update 0] $logo"
timer $bnick_reset "unset bnicks($uhost)"
putlog "Warned and kicked $newnick on $chan for using bad nicks."
puthelp "NOTICE $newnick :Change your nick before you come to $chan.The next time I catch you using bad nicks, I will ban you. $logo"
} {
if {
$bnicks($uhost) < $bnick_warnings} {
incr bnicks($uhost)
bnick:resettimer "bnicks($uhost)"
timer $bnick_reset "unset bnicks($uhost)"
putkick $chan $newnick "Warning $bnicks($uhost) for using bad nicks.Be careful I am watching you... [count_update 0] $logo"
puthelp "NOTICE $newnick :Join $chan with a bad nick for [expr $bnick_warnings - $bnick($uhost)] more time(s) and I will make sure you will join no more. $logo"
putlog "Warning $bnick($uhost) for $newnick on $chan for using bad nicks."
} {
unset 
bnicks($uhost)
bnick:resettimer "bnicks($uhost)"
newchanban $chan [bnick:masktype $nick!$uhost $bnick_ban_type"Bad Nick Protection" "$bnick_ban [count_update 1] $logo$$bnick_bantime
putkick $chan $newnick 
"$bnick_ban [count_update 1] $logo"
}
}
}
}
}
proc bnick:resettimer {reset} {
foreach 
time_check [string tolower [timers]] {
if {[
string match *$reset$time_check]} {killtimer [lindex [split $time_checkend]}
}
}
proc bnick:replace {string subs} {
if {[
llength $subs] == "1"} {set subs [lindex $subs 0]}
for {
set i 0} {[lindex $subs $i] != ""} {incr i 2} {
regsub -all -- [lindex $subs $i$string [lindex $subs [expr $i+1]] string
} ; return $string
}
proc bnick:masktype {uhost type} {
if {![
string match "*!*@*.*" $uhost]} {
set nick [lindex [split $uhost "!"0] ; set uhost "$nick![getchanhost $nick]"
if {$uhost == "$nick!"} {set type "return_nothing"}
}
switch -
exact $type {
{set ban "*[string range $uhost [string first ! $uhost] e]"}
{set ban "*!*[string trimleft [string range $uhost [expr [string first ! $uhost]+1] e] "~"]"}
{set ban "*!*[string range $uhost [string first @ $uhost] e]"}
{
set ident [string range $uhost [expr [string first $uhost]+1] [expr [string last $uhost]-1]]
set ban "*!*[string trimleft $ident "~"][string range [maskhost $uhost] [string first @ [maskhost $uhost]] e]"
}
{set ban "*!*[string range [maskhost $uhost] [string last "@" [maskhost $uhost]] e]"}
{set ban $uhost}
{
set nick [string range $uhost 0 [expr [string first "!" $uhost]-1]]
set ident [string range $uhost [expr [string first "!" $uhost]+1] [expr [string last "@" $uhost]-1]]
set ban "$nick!*[string trimleft $ident "~"][string range $uhost [string last "@$uhost] e]"
}
{
set nick [string range $uhost 0 [expr [string first "!" $uhost]-1]]
set ban "$nick!*[string range $uhost [string last "@$uhost] e]"
}
{
set nick [string range $uhost 0 [expr [string first "!" $uhost]-1]]
set ident [string range $uhost [expr [string first "!" $uhost]+1] [expr [string last "@" $uhost]-1]]
set ban "$nick!*[string trimleft $ident "~"][string range [maskhost $uhost] [string last "@" [maskhost $uhost]] e]"
}
{
set nick [string range $uhost 0 [expr [string first "!" $uhost]-1]]
set ban "$nick!*[string range [maskhost $uhost] [string last "@" [maskhost $uhost]] e]"
}
10 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {
set host [bnick:replace $host "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 0 ?"]
set ident [string range $uhost [expr [string first "!" $uhost]+1] [expr [string last "@" $uhost]-1]]
set ban "*!$ident$host"
} {set ban [bnick:masktype $uhost 0]}
}
11 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {
set host [bnick:replace $host "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 0 ?"]
set ident [string range $uhost [expr [string first "!" $uhost]+1] [expr [string last "@" $uhost]-1]]
set ban "*!*[string trimleft $ident "~"]$host"
} {set ban [bnick:masktype $uhost 1]}
}
12 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {
set host [bnick:replace $host "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 0 ?"]
set ban "*!*$host"
} {set ban [bnick:masktype $uhost 2]}
}
13 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {set ban [bnick:masktype $uhost 11]} {set ban [bnick:masktype $uhost 3]}
}
14 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {set ban [bnick:masktype $uhost 12]} {set ban [bnick:masktype $uhost 4]}
}
15 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {
set host [bnick:replace $host "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 0 ?"]
set rest [string range $uhost 0 [expr [string last "@" $uhost]-1]]
set ban $rest$host
} {set ban [bnick:masktype $uhost 5]}
}
16 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {
set host [bnick:replace $host "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 0 ?"]
set rest "[string range $uhost 0 [expr [string first "!$uhost]-1]]!*[string trimleft [string range $uhost [expr [string first "!$uhost]+1] [expr [string last "@$uhost]-1]] "~"]"
set ban $rest$host
} {set ban [bnick:masktype $uhost 6]}
}
17 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {
set host [bnick:replace $host "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 0 ?"]
set rest "[string range $uhost 0 [expr [string first "!$uhost]-1]]!*"
set ban $rest$host 
} {set ban [bnick:masktype $uhost 7]}
}
18 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {set ban [bnick:masktype $uhost 16]} {set ban [bnick:masktype $uhost 8]}
}
19 {
set host [string range $uhost [string last "@" $uhoste]
if {[
bnick:findip [string range $host 1 e]] == "0"} {set ban [bnick:masktype $uhost 17]} {set ban [bnick:masktype $uhost 9]}
}
return_nothing {set ban ""}
default {
set ban "*!*[string range $uhost [string first "@$uhost] e]"}
}
set _nick [lindex [split $ban !] 0]
set _ident [string range $ban [expr [string first $ban]+1] [expr [string last $ban]-1]]
set _host [string range $ban [expr [string last $ban]+1e]
if {
$_ident != [set temp [string range $_ident [expr [string length $_ident]-9e]]} {
set _ident *[string trimleft $temp *]
}
if {
$_host != [set temp [string range $_host [expr [string length $_host]-63e]]} {
set _host *[string trimleft $temp *]
} ; return 
$_nick!$_ident@$_host
}
proc bnick:findip {args} {
catch {unset 
bnick_found_ip}
if {![
string match *.*.*.* $args]} {return 0}
foreach 
arg $args {
if {[
string match *.*.*.* $arg]} {
set bnick_testa [split $arg "."] ; set i 0
while {[llength $bnick_testa] != $i} {
set bnick_test [lrange $bnick_testa $i end]
if {[
string length [lindex $bnick_test 1]]<&& [string length [lindex $bnick_test 2]]<4} {
if {[
lindex $bnick_test 1] < 256 && [lindex $bnick_test 2] < 256 && [lindex $bnick_test 1] >= && [lindex $bnick_test 2] >= 0} {
set first "abcdefghi"
if {[string index [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 1]] <= && [string index [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 1]] >= 0} {
set first [string range [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 1end]
if {[
string index [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 2]] <= && [string index [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 2]] >= 0} {
set first [string range [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 2end]
if {[
string index [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 3]] <= && [string index [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 3]] >= 0} {
set first [string range [lindex $bnick_test 0] [expr [string length [lindex $bnick_test 0]] - 3end]
}
}
}
set second [lindex $bnick_test 1] ; set third [lindex $bnick_test 2] ; set fourth "abcdefghi"
if {[string index [lindex $bnick_test 30] <= && [string index [lindex $bnick_test 30] >= 0} {
set fourth [string index [lindex $bnick_test 30]
if {[
string index [lindex $bnick_test 31] <= && [string index [lindex $bnick_test 31] >= 0} {
set fourth $fourth[string index [lindex $bnick_test 31]
if {[
string index [lindex $bnick_test 32] <= && [string index [lindex $bnick_test 32] >= 0} {
set fourth $fourth[string index [lindex $bnick_test 32]
}
}
}
if {(
$first 256) && ($second 256) && ($third 256) &&
(
$fourth 256) && ($first 0) && ($second 0) &&
(
$third 0) && ($fourth 0) && ([string index $first 0] > 0) &&
([
string index $second 0] > 0) && ([string index $third 0] > 0) &&
([
string index $fourth 0] > 0)} {
if {[
info exists bnick_found_ip]} {
set bnick_found_ip "$bnick_found_ip $first.$second.$third.$fourth"
} {set bnick_found_ip $first.$second.$third.$fourth}
}
}
} ; 
incr i +1
}
}
} ; if {[
info exists bnick_found_ip]} {return $bnick_found_ip} {return 0}
}
putlog "Bad nick control v3.0 by \002Prince_of_the_net\002 \[Loaded\]"
###############################################################################
######################## END OF SCRIPT ##########################
############################################################################### 


 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver