This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

need to change Bad channel bantype.

Help for those learning Tcl or writing their own scripts.
Post Reply
h
honeybee
Halfop
Posts: 80
Joined: Sun Jan 01, 2006 12:42 pm

need to change Bad channel bantype.

Post by honeybee »

Hey guys.
I am using badchan.tcl by bass, and wants to change the default ban type to *!*@host.ip here is the bass code responsible for it.

Code: Select all

proc bmaskhost {uhost} {
  set uhost [lindex [split $uhost !] [expr [llength [split $uhost !]] -1]]
  set temp [string range [lindex [split $uhost @] 0] [expr [string length [lindex [split $uhost @] 0]] - 8] e]
  return "*!*$temp@[lindex [split [maskhost *!*@[lindex [split $uhost @] 1]] @] 1]"
}

proc bc_whois {from key args} {
  global bchan bcqueue bcnicks
#  putlog "319: $args"
  set args [join $args]
  set nick [string tolower [lindex $args 1]]
  if {[info exists bcnicks($nick)]} {set chan $bcnicks($nick)} {return 0}
  set chans [string tolower [lrange $args 2 e]]
  if {[lsearch $bchan(exempt) $chan] == -1 && $bchan(global) != ""} {set bans $bchan(global)} {set bans ""}
  if {[lsearch $bchan(chans) $chan] > -1} {set bans "$bans $bchan($chan)"}
  foreach tok $chans {
    set tok [string trimleft $tok ":@+"]
    foreach ban $bans {
      if {[string match [lindex $ban 0] $tok]} {
        putlog "badchan:  match! $nick k/b'd from $chan because [lrange $ban 1 e]"
        putlog "args: $args, ban: $ban"
        if {[onchan $nick $chan]} {newchanban $chan [bmaskhost [getchanhost $nick $chan]] badchan "[lrange $ban 1 e]" 10}
        return 0
      }
    }
  }
  return 0
}
I changed the code to this:

Code: Select all

proc bmaskhost {uhost} {
  set uhost "*!*@[lindex [split $uhost @] 1]"
  return "$uhost"
}
any other suggestions please.
Last edited by honeybee on Tue Jun 27, 2006 9:24 am, edited 1 time in total.
User avatar
krimson
Halfop
Posts: 86
Joined: Wed Apr 19, 2006 8:12 am

Post by krimson »

you splited and got the host.ip part of the uhost correctly, but you could just return it, without writing it to $uhost before

Code: Select all

proc bmaskhost {uhost} {
  return "*!*@[lindex [split $uhost @] 1]"
}
h
honeybee
Halfop
Posts: 80
Joined: Sun Jan 01, 2006 12:42 pm

Post by honeybee »

i guess its faster to set it and then return.
User avatar
krimson
Halfop
Posts: 86
Joined: Wed Apr 19, 2006 8:12 am

Post by krimson »

i really don't think you can feel the difference in execution speed with this change :) but why do you want another method of obtaining the ban? you already posted the fastest and simplest way one can use for this task
Post Reply