Im using badwhois.tcl at the moment but ive got a little problem
The chan checker isnt accurate because if i activate the script in #channel with ".chanset #channel +badwhois" and put #channel2 on the bwhois(chans) category, the script is banning every user who joins #channel because #channel matchs #channel2 :/
can u tell me maybe what i have to do?
thats the code:
Code: Select all
## ¤ BadWhois
# version 0.1
# caesar <cezarica [at] prietenii [dot] com>
# #eggdrop @ Undernet.org
# http://www.r0x0ring.com/
###
## ¤ Description:
# Performs a whois on join and places a *!*@host ban if mathes a banned realname or a banned channel.
###
## ¤ Available commands:
#
# Where Flag Command Description
# ----- ---- ------- -----------
# PUB : N/A
#
# MSG : N/A
#
# DCC : n|n .chanset Use .chanset to set what protections to active for the particular channel or not.
# Example: .chanset #mychan +badwhois
# .chanset #otherchan -badwhois
###
## ¤ Custom channel flags:
#
# Flag: Description:
# ----- ------------
# +badwhois Channels marked with this flag will be "checked" for bad realnames and bad channels on join.
#
# Attention!
# By default the channel flag (badwhois) is disabled. Enable it on the channels you wish.
# Don't use this script
#
##
# Adjust the folowing things to suit your needs!
# .1. What bad realnames should be banned?
set bwhois(list) {
"*eggdrop*"
"*bot by*"
}
# .2. What bad channels should be banned?
set bwhois(chans) {#channel #channel2 #channel3}
# .3. Specify the ban reason and the ban time (in minutes) for a bad realname:
set bwhois(br) {"Sorry, you are not welcome in here!" 10}
# .4. Specify the ban reason and the ban time (in minutes) for a bad channel:
set bwhois(bc) {"Sorry, you are not allowed to be in any blacklisted channels while in here!" 1}
# .4. Number of joins in seconds do a delayed whois.
set bwhois(flud) "5:3:6"
#
## ¤ Don't edit past here unless you know TCL! ¤
#
set bwhois(version) "0.1"
setudef flag badwhois
##
# ¤ binds
bind join * * badwhois:join
bind part - * badwhois:part
bind raw - 311 badwhois:check
bind raw - 319 badwhois:chans
##
# ¤ whois on join
proc badwhois:join {nick uhost hand chan} {
global bflud bwhois
if {![channel get $chan badwhois] || [isbotnick $nick ] || [matchattr $hand f|f $chan]} {
return
}
if {![info exists bflud($chan)]} {
set bflud($chan) 0
}
incr bflud($chan)
utimer [lindex [set bla [split $bwhois(flud) ":"]] 1] [list incr bflud($chan) -1]
if {$bflud($chan) >= [lindex $bla 0]} {
puthelp "WHOIS $nick"
} else {
utimer [lindex $bla 2] [puthelp "WHOIS $nick"]
}
lappend bwhois(whois) "$nick:$chan:*!*@[lindex [split $uhost @] 1]"
}
##
# ¤ realname check
proc badwhois:check {from key txt} {
global bwhois
if {![info exists bwhois(whois)]} {
set bwhois(whois) ""
}
if {[isbotnick [set nick [lindex [split $txt] 1]]] || [validuser [nick2hand $nick]]} {
return
}
set realname [stripcodes bcruag [string range [join [lrange [split $txt] 5 end]] 1 end]]
foreach bla $bwhois(list) {
if {[string match -nocase $bla $realname]} {
set position [lsearch $bwhois(whois) "*:[set mask *!*@[lindex [split $txt] 3]]*"]
if {[botisop [set chan [lindex [set t [split [lindex $bwhois(whois) $position] :]] 1]]]} {
putquick "KICK $chan $nick :[lindex $bwhois(br) 0]" -next
}
newchanban $chan $mask BadWhois [lindex $bwhois(br) 0] [lindex $bwhois(br) 1]
set bwhois(whois) [lreplace $bwhois(whois) $position $position]
break
}
}
}
##
# ¤ channels check
proc badwhois:chans {from key txt} {
global bwhois
if {[isbotnick [set nick [lindex [split $txt] 1]]] || [validuser [nick2hand $nick]]} {
return
}
if {[set position [lsearch $bwhois(whois) "*$nick:*"]] != -1} {
foreach bla [lrange $txt 2 e] {
if {[string match -nocase "*[string trimleft $bla ":@+"]*" $bwhois(chans)]} {
if {[botisop [set chan [lindex [set t [split [lindex $bwhois(whois) $position] :]] 1]]]} {
putserv "PRIVMSG $nick :You have been banned for being on a bad channel"
putquick "KICK $chan [lindex $t 0] :[lindex $bwhois(bc) 0]" -next
}
newchanban $chan [lindex $t 2] BadWhois [lindex $bwhois(bc) 0] [lindex $bwhois(bc) 1]
set bwhois(whois) [lreplace $bwhois(whois) $position $position]
break
}
}
}
}
##
# ¤ array remove
proc badwhois:part {nick uhost hand chan msg} {
global bflud
if {[isbotnick $nick] && [string match -nocase "*$chan*" [array names bflud]]} {
array unset bflud $chan
}
}
putlog "badwhois v$bwhois(version) loaded.."