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.

Proxy checker Lock mode help

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
s
samhain
Halfop
Posts: 77
Joined: Wed Jan 03, 2007 5:19 am

Proxy checker Lock mode help

Post by samhain »

I Use James Proxycheck TCL, the channel gets flooded daily, however I tried to use a few tweaks, but I failed, I'd like to see this script modified, to Such that it's not working good when there are 3-4 joins of flood bots at once, plus I'd like to see an option so that if there's a proxy that joins the channel the script should Lock the channel to +mr modes, and then send a notice to the channel that the channel has been locked due to flood, here's the code.

Code: Select all

set proxycheck_rbls { "dnsbl.dronebl.org" "tor.dnsbl.sectoor.de" "rbl.efnet.org" "dnsbl.swiftbl.org" "opm.blitzed.org" "dnsbl.ahbl.org" }

# Eggdrop's Time in minutes to BAN the proxy. (Note: The ban will last in the banlist of the manual channel).
set proxycheck_bantime 30

# DO NOT TOUCH THE CODE YOU WILL RUIN THE SCRIPT


]
#add our channel flag
setudef flag proxycheck

#bind our events
bind join - *!*@* proxycheck_join

#swing your pants

# catch joins
proc proxycheck_join { nick host handle channel } {
  #check we're active
  if {![channel get $channel proxycheck]} {
    return 0
  }

  #don't apply to friends, voices, ops
  if {[matchattr $handle fov|fov $channel]} {
    return 0
  }

  #get the actual host
  regexp ".+@(.+)" $host matches newhost
  if [regexp {[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $newhost] {
    #it's a numeric host, skip the lookup
    proxycheck_check2 $newhost $newhost 1 $nick $newhost $channel
  } else {
    putloglev d * "proxycheck: doing dns lookup on $newhost to get IP"
    dnslookup $newhost proxycheck_check2 $nick $newhost $channel
  }
}

# first callback (runs RBL checks)
proc proxycheck_check2 { ip host status nick orighost channel } {
  global proxycheck_rbls

  if {$status} {
    putloglev d * "proxycheck: $host resolved DNS to $ip"

    # reverse the IP
    regexp {([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})} $ip matches a b c d
    set newip "$d.$c.$b.$a"

    # look it up in the rbls
    foreach rbl $proxycheck_rbls {
      putloglev d * "proxycheck: looking up $newip.$rbl"
      dnslookup "$newip.$rbl" proxycheck_check3 $nick $host $channel $rbl
    }
  } else {
    putlog "proxycheck: Couldn't resolve $host. (No further action taken.)"
  }
}

# second callback (catches RBL results)
proc proxycheck_check3 { ip host status nick orighost channel rbl } {
  global proxycheck_bantime

  if {$status} {
    putlog "proxycheck: got host $host = ip $ip from RBL $rbl ... banning
    putserv "KICK $channel $nick :Reason: OPEN proxy -- Source: $rbl From: $nick"
    putserv "MODE $channel +b *@$orighost"
  }
  #if we didn't get a host, they're not in RBL
}
Post Reply