| View previous topic :: View next topic |
| Author |
Message |
buuhuu Voice
Joined: 27 Jan 2009 Posts: 5
|
Posted: Tue Jan 27, 2009 5:16 pm Post subject: badwhois |
|
|
Hey guys,
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: |
## ¤ 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.."
|
|
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Tue Jan 27, 2009 5:46 pm Post subject: |
|
|
This script would have to be rewritten in several locations, as channel-checking is currently done like this:
| Code: | | if {[string match -nocase "*$chan*" $bwhois(chans)]} { |
Unfortunately, this cannot be straight swapped with an lsearch, as lsearch does not support case-insensitive searching, and case may vary on the channelname. One workaround would be to always make sure channel-names are treated in lowercase (using string tolower) all throughout the script. _________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
buuhuu Voice
Joined: 27 Jan 2009 Posts: 5
|
Posted: Wed Jan 28, 2009 2:29 am Post subject: |
|
|
Hey,
first of all thx for being that fast
Unfortunately, its not working
Now its doing nothing if i join a chan while i do idle in a bad one
i did replace:
| Code: | | if {[string match -nocase "*[string trimleft $bla ":@+"]*" $bwhois(chans)]} { |
with this:
| Code: | | if {[string match -nocase "*$chan*" $bwhois(chans)]} { |
but if it would be fine, u did ignore this part:
| Code: | | "*[string trimleft $bla ":@+"]*" |
didnt you?´
one more thing is, you wrote that this script should be rewritten in several locations and i did search a couple of hours for any help for this script or any other but it seems to be the only script for checking for bad chans and bad realname, so maybe it would be expedient if someone could write a new one?
I would be really happy about this and i guess a lot more people as well because ive seen a lot of problems with this script when i was looking for help for my problem with ist :/ |
|
| Back to top |
|
 |
Callisto Halfop
Joined: 13 Mar 2005 Posts: 86
|
|
| Back to top |
|
 |
buuhuu Voice
Joined: 27 Jan 2009 Posts: 5
|
Posted: Wed Jan 28, 2009 5:53 am Post subject: |
|
|
Hey,
yeah, i know this script as well but there is no real name check and there is an interval check for checking the whole channel every X min but if u have more than 200 ppl on your chan u cant use it.. :/
moreover this script got no floodprotection. |
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Wed Jan 28, 2009 11:35 am Post subject: |
|
|
buuhuu, I'm not quite sure you actually read my post.
I never suggested replacing various matches with a new string match test. Instead I pointed at the possibility of altering the script to use lsearch on a list, aswell as pointing out the issue of case sensitivity. The highlighted code is just one of several string-based matches done in the code that would have to be altered.
So, no, I did not ignore any part, nor did I provide a complete solution, rather ideas on how this could be achieved. Personally, I try to avoid posting works based on other works not under an open source license, or released in the public domain.
In most cases, "we" recommend trying to get in touch with the author whenever possible. Unfortunately, this may not always be possible for various reasons, or the author may choose not to provide any further assistance.
I cannot say whether you've been in touch with the author, or under what kind of license (if any) this script is released under, so I am thus uncomfortable making a complete rewrite of the script. _________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
Sir_Fz Revered One

Joined: 27 Apr 2003 Posts: 3793 Location: Lebanon
|
Posted: Wed Jan 28, 2009 2:17 pm Post subject: |
|
|
AllProtection has bad/excess channels protection + it scans on interval (with queuing to avoid flooding out on huge channels), try it if suitable. _________________ Follow me on GitHub
- Opposing
Public Tcl scripts |
|
| Back to top |
|
 |
buuhuu Voice
Joined: 27 Jan 2009 Posts: 5
|
Posted: Wed Jan 28, 2009 3:17 pm Post subject: |
|
|
Hey,
thx, it looks really great
Do you think that you can add a realname check on it as well?
Its because i dont think that it would be clever to load a second script for this because the user would be whoised twice :-/ |
|
| Back to top |
|
 |
Sir_Fz Revered One

Joined: 27 Apr 2003 Posts: 3793 Location: Lebanon
|
Posted: Wed Jan 28, 2009 4:54 pm Post subject: |
|
|
I won't promise anything since it has been long since I updated the script but I will keep this in consideration whenever I decide to modify the script. _________________ Follow me on GitHub
- Opposing
Public Tcl scripts |
|
| Back to top |
|
 |
buuhuu Voice
Joined: 27 Jan 2009 Posts: 5
|
Posted: Wed Jan 28, 2009 5:58 pm Post subject: |
|
|
yeah, i think that would be a nice extension and shouldnt take too much time to add it  |
|
| Back to top |
|
 |
|