egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

badwhois

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
buuhuu
Voice


Joined: 27 Jan 2009
Posts: 5

PostPosted: Tue Jan 27, 2009 5:16 pm    Post subject: badwhois Reply with quote

Hey guys,

Im using badwhois.tcl at the moment but ive got a little problem Sad
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
View user's profile Send private message
nml375
Revered One


Joined: 04 Aug 2006
Posts: 2857

PostPosted: Tue Jan 27, 2009 5:46 pm    Post subject: Reply with quote

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
View user's profile Send private message
buuhuu
Voice


Joined: 27 Jan 2009
Posts: 5

PostPosted: Wed Jan 28, 2009 2:29 am    Post subject: Reply with quote

Hey,

first of all thx for being that fast Very Happy

Unfortunately, its not working Sad
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? Razz
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
View user's profile Send private message
Callisto
Halfop


Joined: 13 Mar 2005
Posts: 86

PostPosted: Wed Jan 28, 2009 4:28 am    Post subject: Reply with quote

Hi, I use banchan by MC8, you can search for it in the TCL archive or go to http://www.egghelp.org/cgi-bin/tcl_archive.tcl?mode=download&id=32
Hope this works better for you
Back to top
View user's profile Send private message
buuhuu
Voice


Joined: 27 Jan 2009
Posts: 5

PostPosted: Wed Jan 28, 2009 5:53 am    Post subject: Reply with quote

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
View user's profile Send private message
nml375
Revered One


Joined: 04 Aug 2006
Posts: 2857

PostPosted: Wed Jan 28, 2009 11:35 am    Post subject: Reply with quote

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
View user's profile Send private message
Sir_Fz
Revered One


Joined: 27 Apr 2003
Posts: 3793
Location: Lebanon

PostPosted: Wed Jan 28, 2009 2:17 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
buuhuu
Voice


Joined: 27 Jan 2009
Posts: 5

PostPosted: Wed Jan 28, 2009 3:17 pm    Post subject: Reply with quote

Hey,

thx, it looks really great Smile
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
View user's profile Send private message
Sir_Fz
Revered One


Joined: 27 Apr 2003
Posts: 3793
Location: Lebanon

PostPosted: Wed Jan 28, 2009 4:54 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
buuhuu
Voice


Joined: 27 Jan 2009
Posts: 5

PostPosted: Wed Jan 28, 2009 5:58 pm    Post subject: Reply with quote

yeah, i think that would be a nice extension and shouldnt take too much time to add it Wink
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber