<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://forum.eggheads.org/app.php/feed/topic/9978" />

	<title>egghelp/eggheads community</title>
	<subtitle>Discussion of eggdrop bots, shell accounts and tcl scripts.</subtitle>
	<link href="https://forum.eggheads.org/index.php" />
	<updated>2005-07-10T04:12:35-04:00</updated>

	<author><name><![CDATA[egghelp/eggheads community]]></name></author>
	<id>https://forum.eggheads.org/app.php/feed/topic/9978</id>

		<entry>
		<author><name><![CDATA[^DooM^]]></name></author>
		<updated>2005-07-10T04:12:35-04:00</updated>

		<published>2005-07-10T04:12:35-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=52157#p52157</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=52157#p52157"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=52157#p52157"><![CDATA[
Ahh sweet yeah it was that but an actual proggy for windows.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3723">^DooM^</a> — Sun Jul 10, 2005 4:12 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[kanibus]]></name></author>
		<updated>2005-07-09T14:09:32-04:00</updated>

		<published>2005-07-09T14:09:32-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=52116#p52116</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=52116#p52116"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=52116#p52116"><![CDATA[
<blockquote class="uncited"><div>Indeed very funky <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_wink.gif" width="15" height="15" alt=";)" title="Wink"> I had a proggy once that did that for you but i am damned if i can remember what it was called  <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_rolleyes.gif" width="15" height="15" alt=":roll:" title="Rolling Eyes"></div></blockquote><a href="http://www.network-science.de/ascii/" class="postlink">http://www.network-science.de/ascii/</a><br><br>;D<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=6186">kanibus</a> — Sat Jul 09, 2005 2:09 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Dizzle]]></name></author>
		<updated>2005-07-08T06:36:03-04:00</updated>

		<published>2005-07-08T06:36:03-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51989#p51989</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51989#p51989"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51989#p51989"><![CDATA[
well think this is lame of you tosser, it doenst matter who made the script, it is what the script does, putting your name on somebody else his script and even show it in the forum metroid is coming going a lot is lame and not very handy <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_smile.gif" width="15" height="15" alt=":)" title="Smile"> <br><br>Question for metroid : do you have a antiproxy script for just a server client and not an IRC operator ??<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=6156">Dizzle</a> — Fri Jul 08, 2005 6:36 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[^DooM^]]></name></author>
		<updated>2005-07-08T04:50:09-04:00</updated>

		<published>2005-07-08T04:50:09-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51986#p51986</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51986#p51986"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51986#p51986"><![CDATA[
Indeed very funky <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_wink.gif" width="15" height="15" alt=";)" title="Wink"> I had a proggy once that did that for you but i am damned if i can remember what it was called  <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_rolleyes.gif" width="15" height="15" alt=":roll:" title="Rolling Eyes"><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3723">^DooM^</a> — Fri Jul 08, 2005 4:50 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[demond]]></name></author>
		<updated>2005-07-08T03:33:37-04:00</updated>

		<published>2005-07-08T03:33:37-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51978#p51978</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51978#p51978"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51978#p51978"><![CDATA[
nice ascii art <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_wink.gif" width="15" height="15" alt=";)" title="Wink"><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=5056">demond</a> — Fri Jul 08, 2005 3:33 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[metroid]]></name></author>
		<updated>2005-07-08T03:03:57-04:00</updated>

		<published>2005-07-08T03:03:57-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51976#p51976</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51976#p51976"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51976#p51976"><![CDATA[
Oh look at this: The real code.<br>And unless i'm mistaken i say, don't break my copyright multiple times.<br>Go check your pm on IRC whilst your permbanned from the development channel.<br><br>Your name serves you right, you are a tosser.<br><div class="codebox"><p>Code: </p><pre><code>#   __ __        __                          ___                                              __      #  _\ \\ \__    /\ \                        /\_ \                                            /\ \__   # /\__  _  _\   \_\ \     __   __  __     __\//\ \     ___   _____     ___ ___      __    ___\ \ ,_\  # \/__\ \\ \__  /'_` \  /'__`\/\ \/\ \  /'__`\\ \ \   / __`\/\ '__`\ /' __` __`\  /'__`\/' _ `\ \ \/  #   /\_   _  _\/\ \_\ \/\  __/\ \ \_/ |/\  __/ \_\ \_/\ \_\ \ \ \_\ \/\ \/\ \/\ \/\  __//\ \/\ \ \ \_ #   \/_/\_\\_\/\ \___,_\ \____\\ \___/ \ \____\/\____\ \____/\ \ ,__/\ \_\ \_\ \_\ \____\ \_\ \_\ \__\#      \/_//_/  \/__,_ /\/____/ \/__/   \/____/\/____/\/___/  \ \ \/  \/_/\/_/\/_/\/____/\/_/\/_/\/__/#                                                              \ \_\ #                                                               \/_/ # #                        /\ \                /\ \__  __                   #  _____   _ __   ___    \_\ \  __  __    ___\ \ ,_\/\_\    ___     ___     ____  # /\ '__`\/\`'__\/ __`\  /'_` \/\ \/\ \  /'___\ \ \/\/\ \  / __`\ /' _ `\  /',__\ # \ \ \_\ \ \ \//\ \_\ \/\ \_\ \ \ \_\ \/\ \__/\ \ \_\ \ \/\ \_\ \/\ \/\ \/\__, `\#  \ \ ,__/\ \_\\ \____/\ \___,_\ \____/\ \____\\ \__\\ \_\ \____/\ \_\ \_\/\____/#   \ \ \/  \/_/ \/___/  \/__,_ /\/___/  \/____/ \/__/ \/_/\/___/  \/_/\/_/\/___/ #    \ \_\                                                                 #     \/_/                                                                 #        # Anti proxy scan script.# /* This is an anti proxy script written for eggdrop. It's been tested on eggdrop1.6.17 with TCL version 8.4# *  Unlike other anti proxy scripts i've seen around. # *  This script works just as well on a windrop as it does on a windrop# *  I've been testing it with a few proxies myself and it clears about 5 proxies in a few seconds without a problem# *  If it detects a floodjoin happening it will set the modes you choose # *  (Default mir = moderated, invite only, registered only) These modes are for Quakenet though.# *  The script will first check what modes you already have set so it won't be unsetting a mode you already had before the floodjoin# */# /* Author info# *  I made this script because i was sick of all the proxies that were joining my channel and spamming it# *  It's based off the proxycheck.tcl made by James. I rewrote the entire script but kept the basics in.# *  This script is generally alot faster than that script. But it's still in beta form!# *  I release this script to http://development.woosah.org# *  and no other websites are allowed to release this without my explicit authorisation. # *  If you have an eggdrop website with scripts and you'd like to put this script on your webpage,# *  Send me an email at metroid at gmail.com replacing at with @# */# /* Installing the anti-proxy script# *  First, put the script into your /scripts folder.# *  Then at the end of your eggdrop.conf, Put:# *  source scripts/anti-proxy.tcl# *  Or if you are using the #development configuration file, you won't have to do anything.# *  Just rehash the bot after you've done this and it should work.# *  Read the next part about using it.# */# /* Using the anti-proxy script# *  The script itself pretty much does everything automaticly once it's activated.# *  You can activate it by typing: &lt;trigger&gt;proxy enable# *  You can deactivate it by typing: &lt;trigger&gt;proxy disable# *  If you want some statistics about how many people it has scanned, detected or kicked,# *  you can use &lt;trigger&gt;proxy stats# *  Just typing &lt;trigger&gt;proxy will tell you if the check is enabled or disabled, and possibly statistics about it.# */namespace eval proxy { variable version "0.75" variable author  "metroid - #development on irc.quakenet.org" variable trigger "$" # The sources we dns to find out if a user is a proxy variable source { "cbl.abuseat.org" "opm.blitzed.org" "dnsbl.ahbl.org" "list.dsbl.org" "sbl.csma.biz" "dnsbl.njabl.org" } setudef flag antiproxy setudef str  antijoins setudef str  antidetected setudef str  antikicked # /* Settings! */ variable flood "4:15" ;# 4 proxies that join in 8 seconds and the channel gets closed variable close "30"   ;# This is in seconds! It will keep the channel closed for 30 seconds variable modes "mir"  ;# the modes it will set when the channel gets flooded. # /* End of settings */ # /* Don't edit anything below these lines. If you break it, don't expect me to fix it for you. */ bind JOIN -|- *                   [namespace current]::checkuser bind PUB  m|n ${trigger}proxy     [namespace current]::toggle variable proxy array set proxy ""}proc proxy::toggle {nickname hostname handle channel arguments} { set command [lindex [split $arguments] 0] switch -exact -- [string tolower $command] {  enable {   if {![channel get $channel antiproxy]} {    channel set $channel +antiproxy    putquick "NOTICE $nickname :Done. Anti-Proxy was enabled."   } else {    putquick "NOTICE $nickname :Error: Anti-Proxy is already enabled."   }  }  disable {   if {[channel get $channel antiproxy]} {    channel set $channel -antiproxy    putquick "NOTICE $nickname :Done. Anti-Proxy was disabled."   } else {    putquick "NOTICE $nickname :Error: Anti-Proxy is already disabled."   }  }  stats {   if {([channel get $channel antijoins] != "") || ([channel get $channel antidetected] != "") || ([channel get $channel antikicked] != "")} {    putquick "NOTICE $nickname :Stats for $channel: [statistics $channel]"   } else {    putquick "NOTICE $nickname :No statistics available for $channel."   }  }  default {   if {[channel get $channel antiproxy]} {    putquick "NOTICE $nickname :Anti-Proxy is currently enabled for $channel. Statistic: [statistics $channel]"   } else {    putquick "NOTICE $nickname :Anti-Proxy is currently disabled for $channel."   }  } }}proc proxy::checkuser {nickname hostname handle channel} { checkstats $channel if {[channel get $channel antiproxy] &amp;&amp; [botisop $channel] &amp;&amp; ![string match *users.quakenet.org* $hostname] &amp;&amp; ![matchattr $handle m|m $channel] &amp;&amp; ![isbotnick $nickname]} {  channel set $channel antijoins "[expr [channel get $channel antijoins] + 1]"  regexp {.*\@(.*)} $hostname -&gt; hostname  if [regexp {[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $hostname] {   [namespace current]::check $hostname $hostname 1 $nickname $hostname $channel    } else {   dnslookup $hostname [namespace current]::check $nickname $hostname $channel  } }}proc proxy::check  {ip hostname status nickname originalhost channel } {  variable source   if {$status} {     regexp {([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})} $ip -&gt; part1 part2 part3 part4    set newip "$part4.$part3.$part2.$part1"      foreach proxylist $source {      dnslookup "$newip.$proxylist" [namespace current]::check2 $nickname $ip $originalhost $hostname $channel $proxylist    }   } else {    putlog "AntiProxy: Couldn't dns resolve $originalhost."   }}proc proxy::check2 {ip hostname status nickname oip realhost originalhost channel rbl } {  variable proxy  variable bantime  variable close  if {[info exists proxy($channel,$nickname)]} { return 0 }  set closemode [modes $channel]   if {$status} {    set proxy($channel,$nickname) 1    utimer 10 [list unset [namespace current]::proxy($channel,$nickname)]    channel set $channel antidetected "[expr [channel get $channel antidetected] + 1]"    if {[floodjoin $channel]} {     putquick "MODE $channel +b$closemode $realhost" -next     set ::close($channel) 1     utimer $close [list [namespace current]::open "$channel" "$closemode"]    }    pushmode $channel +b $realhost    if [regexp {[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $originalhost] {     putquick "KICK $channel $nickname :\&lt;$oip\&gt; is in the DNSBL \[Open Proxy\] \(ID: [expr [channel get $channel antikicked] + 1]\)"    } else {     putquick "KICK $channel $nickname :\&lt;$oip\&gt; \[$originalhost\] is in the DNSBL \[Open Proxy\] \(ID: [expr [channel get $channel antikicked] + 1]\)"    }    channel set $channel antikicked "[expr [channel get $channel antikicked] + 1]"    utimer 3 [list flushmode $channel]   }}    proc proxy::open {channel modes} { if {[info exists ::close($channel)]} {   putserv "MODE $channel -$modes"   unset ::close($channel) } else {  return 0 }}proc proxy::modes {channel} { variable modes set end "" set chanmode [lindex [getchanmode $channel] 0] foreach mode [split $modes ""] {  if {![string match *$mode* $chanmode]} {   append end $mode  } } return "[join $end]"}proc proxy::unsetflood {channel} { if {[info exists ::flood($channel)]} {  unset ::flood($channel) }}proc proxy::statistics {channel} { set joins    [channel get $channel antijoins] set detected [channel get $channel antidetected] set kicked   [channel get $channel antikicked] if {$joins == "" || $joins == "0"} {  return "Statistic Unavailable" } elseif {$detected == "" || $detected == "0"} {  return "Statistic Unavailable" } elseif {$kicked == "" || $kicked == "0"} {  return "Statistic Unavailable" } else {  return "Scanned: $joins, Detected: $detected, Kicked: $kicked  \[[format %.2f [expr ($kicked * 100.0) / $joins]]%\]" }}proc proxy::checkstats {channel} {# /* This is set to 1 to prevent the bot from crashing. (for some people this appears to be a problem) */ if {[channel get $channel antijoins] == ""} { channel set $channel antijoins "1" } if {[channel get $channel antidetected] == ""} { channel set $channel antidetected "1" } if {[channel get $channel antikicked] == ""} { channel set $channel antikicked "1" }}proc proxy::floodjoin {channel} { variable flood set split [split $flood :] set user [lindex $split 0] set seconds [lindex $split 1] if {![info exists ::flood($channel)]} {  set ::flood($channel) 1 } else {  incr ::flood($channel) }  if {$::flood($channel) &gt;= $user} {   set ::flood($channel) 0   return 1  } else {    utimer $seconds [list [namespace current]::unsetflood $channel]  }  return 0}proc proxy::credits {} {  variable file [lindex [split [info script] "/"] end];  variable version;  variable owner "metroid (#development)";  variable modified [clock format [file mtime [info script]] -format "%Y/%m/%d %H:%M:%S"];  set channels 0; set total 0; set end ""  foreach chan [channels] {;   checkstats $chan   incr total   if {[channel get $chan antiproxy]} { incr channels ; lappend end $chan }  }; putlog "$file v$version by $owner - Last modified: $modified" putlog "$file active on $channels/$total ([format %.2f [expr ($channels.0 * 100.0) / $total.0]]%) channels: [join $end ", "]" putlog "$file was successfully loaded!"}proxy::credits# // Copyright: This script was made by metroid (#development). This means, YOU DIDNT MAKE IT! I DID! :p# // Don't break my copyright because it's lame and i'll sue you ass if you do. Have fun!</code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=5078">metroid</a> — Fri Jul 08, 2005 3:03 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[metroid]]></name></author>
		<updated>2005-07-08T02:50:04-04:00</updated>

		<published>2005-07-08T02:50:04-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51974#p51974</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51974#p51974"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51974#p51974"><![CDATA[
Uhm, Hi. Do you realise you broke my copyright and pretended you wrote it by putting your name in the 'author' section.<br><blockquote class="uncited"><div>namespace eval proxy {<br> variable version "0.75"<br> variable author  "Tosser^^ \(#eggtcl\)"<br><br> variable trigger "/$"</div></blockquote><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=5078">metroid</a> — Fri Jul 08, 2005 2:50 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[r0t3n]]></name></author>
		<updated>2005-07-07T17:31:05-04:00</updated>

		<published>2005-07-07T17:31:05-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51952#p51952</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51952#p51952"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51952#p51952"><![CDATA[
ok, Thanks. I found the script. Just to ask, this is a nuub question. I keep on forgetting the difference between antiproxy and antipjen bot, or is there a differentce. Maybe you could tell me. If there is. Where can i find a good antipjen script aswell if possible.<br><br>Thanks in advance!!<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=6300">r0t3n</a> — Thu Jul 07, 2005 5:31 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[^DooM^]]></name></author>
		<updated>2005-07-07T16:50:30-04:00</updated>

		<published>2005-07-07T16:50:30-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51951#p51951</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51951#p51951"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51951#p51951"><![CDATA[
Its not CPU intensive it just opens up a lot of sockets if its run on a big channel and you have a lot of users joining. Do a google Search for wcc portcheck.tcl it originally only checked users joining a channel and banned them if it found an open port. I wanted a proxy checker to scan users when they joined my server and remove them before they had a chance to join a channel. If you are worried about the socket use, Email your shell admin and ask him if you can a) use the script, and b) would he mind monitoring it to make sure its not breaking any rules or is hurting the shell in any way. If they are a decent shell provider they should at least accomodate a request if your open with them. I run that script on my own RH9 box so I can deffinately confirm that CPU usage is low.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3723">^DooM^</a> — Thu Jul 07, 2005 4:50 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[r0t3n]]></name></author>
		<updated>2005-07-07T16:47:05-04:00</updated>

		<published>2005-07-07T16:47:05-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51950#p51950</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51950#p51950"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51950#p51950"><![CDATA[
i found metriod's antiproxy script. <br><div class="codebox"><p>Code: </p><pre><code>namespace eval proxy { variable version "0.75" variable author  "Tosser^^ \(#eggtcl\)" variable trigger "/$" # The sources we dns to find out if a user is a proxy variable source { "cbl.abuseat.org" "opm.blitzed.org" "dnsbl.ahbl.org" "list.dsbl.org" "sbl.csma.biz" "dnsbl.njabl.org" } setudef flag antiproxy setudef str  antijoins setudef str  antidetected setudef str  antikicked # /* Settings! */ variable flood "4:15" ;# 4 proxies that join in 8 seconds and the channel gets closed variable close "30"   ;# This is in seconds! It will keep the channel closed for 30 seconds variable modes "mir"  ;# the modes it will set when the channel gets flooded. # /* End of settings */ # /* Don't edit anything below these lines. If you break it, don't expect me to fix it for you. */ bind JOIN -|- *                   [namespace current]::checkuser bind PUB  -|- ${trigger}proxy     [namespace current]::toggle variable proxy array set proxy ""}proc proxy::toggle {nickname hostname handle channel arguments} { set command [lindex [split $arguments] 0] switch -exact -- [string tolower $command] {  enable {   if {![channel get $channel antiproxy]} {    channel set $channel +antiproxy    putquick "NOTICE $nickname :Done. Anti-Proxy was enabled."   } else {    putquick "NOTICE $nickname :Error: Anti-Proxy is already enabled."   }  }  disable {   if {[channel get $channel antiproxy]} {    channel set $channel -antiproxy    putquick "NOTICE $nickname :Done. Anti-Proxy was disabled."   } else {    putquick "NOTICE $nickname :Error: Anti-Proxy is already disabled."   }  }  stats {   if {([channel get $channel antijoins] != "") || ([channel get $channel antidetected] != "") || ([channel get $channel antikicked] != "")} {    putquick "NOTICE $nickname :Stats for $channel: [statistics $channel]"   } else {    putquick "NOTICE $nickname :No statistics available for $channel."   }  }  default {   if {[channel get $channel antiproxy]} {    putquick "NOTICE $nickname :Anti-Proxy is currently enabled for $channel. Statistic: [statistics $channel]"   } else {    putquick "NOTICE $nickname :Anti-Proxy is currently disabled for $channel."   }  } }}proc proxy::checkuser {nickname hostname handle channel} { checkstats $channel if {[channel get $channel antiproxy] &amp;&amp; [botisop $channel] &amp;&amp; ![string match *users.quakenet.org* $hostname] &amp;&amp; ![matchattr $handle m|m $channel] &amp;&amp; ![isbotnick $nickname]} {  channel set $channel antijoins "[expr [channel get $channel antijoins] + 1]"  regexp {.*\@(.*)} $hostname -&gt; hostname  if [regexp {[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $hostname] {   [namespace current]::check $hostname $hostname 1 $nickname $hostname $channel    } else {   dnslookup $hostname [namespace current]::check $nickname $hostname $channel  } }}proc proxy::check  {ip hostname status nickname originalhost channel } {  variable source   if {$status} {     regexp {([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})} $ip -&gt; part1 part2 part3 part4    set newip "$part4.$part3.$part2.$part1"      foreach proxylist $source {      dnslookup "$newip.$proxylist" [namespace current]::check2 $nickname $ip $originalhost $hostname $channel $proxylist    }   } else {    putlog "AntiProxy: Couldn't dns resolve $originalhost."   }}proc proxy::check2 {ip hostname status nickname oip realhost originalhost channel rbl } {  variable proxy  variable bantime  variable close  if {[info exists proxy($channel,$nickname)]} { return 0 }  set closemode [modes $channel]   if {$status} {    set proxy($channel,$nickname) 1    utimer 10 [list unset [namespace current]::proxy($channel,$nickname)]    channel set $channel antidetected "[expr [channel get $channel antidetected] + 1]"    if {[floodjoin $channel]} {     putquick "MODE $channel +b$closemode $realhost" -next     set ::close($channel) 1     utimer $close [list [namespace current]::open "$channel" "$closemode"]    }    pushmode $channel +b $realhost    if [regexp {[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $originalhost] {     putquick "KICK $channel $nickname :\&lt;$oip\&gt; is in the DNSBL \[Open Proxy\] \(ID: [expr [channel get $channel antikicked] + 1]\)"    } else {     putquick "KICK $channel $nickname :\&lt;$oip\&gt; \[$originalhost\] is in the DNSBL \[Open Proxy\] \(ID: [expr [channel get $channel antikicked] + 1]\)"    }    channel set $channel antikicked "[expr [channel get $channel antikicked] + 1]"    utimer 3 [list flushmode $channel]   }}    proc proxy::open {channel modes} { if {[info exists ::close($channel)]} {   putserv "MODE $channel -$modes"   unset ::close($channel) } else {  return 0 }}proc proxy::modes {channel} { variable modes set end "" set chanmode [lindex [getchanmode $channel] 0] foreach mode [split $modes ""] {  if {![string match *$mode* $chanmode]} {   append end $mode  } } return "[join $end]"}proc proxy::unsetflood {channel} { if {[info exists ::flood($channel)]} {  unset ::flood($channel) }}proc proxy::statistics {channel} { set joins    [channel get $channel antijoins] set detected [channel get $channel antidetected] set kicked   [channel get $channel antikicked] if {$joins == "" || $joins == "0"} {  return "Statistic Unavailable" } elseif {$detected == "" || $detected == "0"} {  return "Statistic Unavailable" } elseif {$kicked == "" || $kicked == "0"} {  return "Statistic Unavailable" } else {  return "Scanned: $joins, Detected: $detected, Kicked: $kicked  \[[format %.2f [expr ($kicked * 100.0) / $joins]]%\]" }}proc proxy::checkstats {channel} {# /* This is set to 1 to prevent the bot from crashing. (for some people this appears to be a problem) */ if {[channel get $channel antijoins] == ""} { channel set $channel antijoins "1" } if {[channel get $channel antidetected] == ""} { channel set $channel antidetected "1" } if {[channel get $channel antikicked] == ""} { channel set $channel antikicked "1" }}proc proxy::floodjoin {channel} { variable flood set split [split $flood :] set user [lindex $split 0] set seconds [lindex $split 1] if {![info exists ::flood($channel)]} {  set ::flood($channel) 1 } else {  incr ::flood($channel) }  if {$::flood($channel) &gt;= $user} {   set ::flood($channel) 0   return 1  } else {    utimer $seconds [list [namespace current]::unsetflood $channel]  }  return 0}proc proxy::credits {} {  variable file [lindex [split [info script] "/"] end];  variable version;  variable owner "metroid (#development)";  variable modified [clock format [file mtime [info script]] -format "%Y/%m/%d %H:%M:%S"];  set channels 0; set total 0; set end ""  foreach chan [channels] {;   checkstats $chan   incr total   if {[channel get $chan antiproxy]} { incr channels ; lappend end $chan }  }; putlog "$file v$version by $owner - Last modified: $modified" putlog "$file active on $channels/$total ([format %.2f [expr ($channels.0 * 100.0) / $total.0]]%) channels: [join $end ", "]" putlog "$file was successfully loaded!"}proxy::credits</code></pre></div>I get this error<br><br>[21:44] antiproxy.tcl v0.75 by metroid (#development) - L<br>7 21:44:10<br>[21:44] Tcl error in file 'eggdrop.conf':<br>[21:44] divide by zero<br>    while executing<br>"expr ($channels.0 * 100.0) / $total.0"<br>    (procedure "proxy::credits" line 13)<br>    invoked from within<br>"proxy::credits"<br>    (file "scripts/antiproxy.tcl" line 265)<br>    invoked from within<br>"source scripts/antiproxy.tcl"<br>    (file "eggdrop.conf" line 1334)<br>[21:44] * CONFIG FILE NOT LOADED (NOT FOUND, OR ERROR)<br><br>Please help!!<br><br>Thanks in advance!!<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=6300">r0t3n</a> — Thu Jul 07, 2005 4:47 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[r0t3n]]></name></author>
		<updated>2005-07-07T16:36:16-04:00</updated>

		<published>2005-07-07T16:36:16-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51949#p51949</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51949#p51949"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51949#p51949"><![CDATA[
hmm. Well that wont be good then. Its going to be hosted of a paid shell. And if it takes alot of CPU i cant use it. I have already had my account taken from me because of high CPU usage. Also, its for Quakenet, so my bot wont become a oper. So, anything for channel checking. Like sicherheit antiproxy/pjen bots.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=6300">r0t3n</a> — Thu Jul 07, 2005 4:36 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[^DooM^]]></name></author>
		<updated>2005-07-07T16:25:53-04:00</updated>

		<published>2005-07-07T16:25:53-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51948#p51948</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51948#p51948"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51948#p51948"><![CDATA[
This is the script I modified to do what you are asking. You may need to tweak it to work correctly for you also the bot needs to be opered up.<div class="codebox"><p>Code: </p><pre><code>############################# ProxyScan.tcl      ###### Version 1.0        ###### By ^DooM^          ###### Based on PortCheck ###### by Wcc             ################################################################################################################################# This script checks the status of a port on a host. Returns either Accepted, Refused, Failed, #### or Timeout as a user connects. Bot has to be an oper and recieve connection notices.         ################################################################################################################################################################ PUB ## !scan &lt;host/ip&gt; &lt;port&gt; (Can be changed)       ########### Checks weather or not the specified port is   ########### open on the specified host or ip.             ######################################################################################################################## Just load the script, set the variables, and rehash. ##################################################################################################################### Set flag required for checking the status of a port. #########################################################set portcheck_setting(flag) "o|o"################################################################ Set the pub command for checking the status of a port here. ################################################################set portcheck_setting(cmd_pub) "!scan"########################################################################## Set the open ports to scan for when a user joins a monitored channel. ##########################################################################set portcheck_setting(ports) "1080 8080 8088 3128"######################## Enable use of bold? ########################set portcheck_setting(bold) 1############################### Channel to output data too ###############################set gCommandChan "#server"################################################## Add how the opered bot will catch connections ##################################################set gCatchNotice "Client connecting"##################### Code begins here #####################set portcheck_setting(autoban_svr) 1set portcheck_setting(read) 1set portcheck_setting(Proxycheck:) 1if {![string match 1.6.* $version]} {    putlog "\002PORTCHECK:\002 \002CRITICAL ERROR\002 PortCheck.tcl requires eggdrop 1.6.x to run."    die "\002PORTCHECK:\002 \002CRITICAL ERROR\002 PortCheck.tcl requires eggdrop 1.6.x to run."}bind pub $portcheck_setting(flag) $portcheck_setting(cmd_pub) portcheck_scan_pubbind raw - NOTICE portcheck_onconnect_scansetudef flag portcheckproc portcheck_dopre {} {    global portcheck_setting    if {!$portcheck_setting(Proxycheck:)} {        return ""    } elseif {!$portcheck_setting(bold)} {        return "ProxyScan: "    } else {        return "^C9\002ProxyScan:\002^O "    }}proc portcheck_onconnect_scan {from keyword arg} {    global gCommandChan gCatchNotice portcheck_setting botnick    if {([string match "*$gCatchNotice*" $arg])} {        set args $arg        set nick [lindex $args 9]        set uhost [lindex $args 10]        set host [lindex [split $uhost @] 1]        set host "[string trimright $host ")"]"        if {$host == "data.searchirc.org" || $host == "python.netsplit.de"} { return }        putquick "PRIVMSG $gCommandChan :^C9\002ProxyCheck:\002^O $nick connected: Scanning $host"            foreach p $portcheck_setting(ports) {            if {![catch {set sock [socket -async $host $p]} error]} {                set timerid [utimer 15 [list portcheck_timeout_join $sock]]                fileevent $sock writable [list portcheck_connected_join $nick $gCommandChan $sock $host $p $timerid]            }        }    }}proc portcheck_scan_pub {nick uhost hand chan text} {    global portcheck_setting    set host [lindex $text 0]    set port [lindex $text 1]    if {$port == ""} {        putquick "NOTICE $nick :Usage: $portcheck_setting(cmd_pub) &lt;host&gt; &lt;port&gt;"    } else {        if {[catch {set sock [socket -async $host $port]} error]} {            putquick "PRIVMSG $chan :^C9\002ProxyCheck:\002^O Connection to $host \($port\) was refused."        } else {            set timerid [utimer 15 [list portcheck_timeout_pub $chan $sock $host $port]]            fileevent $sock writable [list portcheck_connected_pub $chan $sock $host $port $timerid]        }    }}proc portcheck_connected {idx sock host port timerid} {    killutimer $timerid    if {[set error [fconfigure $sock -error]] != ""} {        close $sock        putdcc $idx "[portcheck_dopre]Connection to $host \($port\) failed. \([string totitle $error]\)"    } else {        fileevent $sock writable {}        fileevent $sock readable [list portcheck_read $idx $sock $host $port]        putdcc $idx "[portcheck_dopre]Connection to $host \($port\) accepted."    }}proc portcheck_timeout {idx sock host port} {    close $sock    putdcc $idx "[portcheck_dopre]Connection to $host \($port\) timed out."}proc portcheck_read {idx sock host port} {    global portcheck_setting    if {$portcheck_setting(read)} {        if {[gets $sock read] == -1} {            putdcc $idx "[portcheck_dopre]EOF On Connection To $host \($port\). Socket Closed."            close $sock        } else {            putdcc $idx "[portcheck_dopre]$host \($port\) &gt; $read"        }    } else {        close $sock    }}proc portcheck_connected_pub {chan sock host port timerid} {    killutimer $timerid    if {[set error [fconfigure $sock -error]] != ""} {        close $sock        putquick "PRIVMSG $chan :^C9\002ProxyCheck:\002^O Connection to $host \($port\) failed. \([string totitle $error]\)"    } else {        fileevent $sock writable {}        fileevent $sock readable [list portcheck_read_pub $chan $sock $host $port]        putquick "PRIVMSG $chan :^C4\002ProxyCheck:\002^O Connection to $host \($port\) accepted."    }}proc portcheck_timeout_pub {chan sock host port} {    close $sock    putquick "PRIVMSG $chan :^C7\002ProxyCheck:\002^O Connection to $host \($port\) timed out."}proc portcheck_connected_join {nick chan sock host port timerid} {    global portcheck_setting botnick    killutimer $timerid    if {[set error [fconfigure $sock -error]] != ""} {        close $sock    } else {        fileevent $sock writable {}        fileevent $sock readable [list portcheck_read_join $sock]        if {$portcheck_setting(onotice)} {            foreach i [chanlist $chan] {                if {([isop $i $chan]) &amp;&amp; ($i != $botnick)} {                    putserv "NOTICE $i :Port $port was found open on $nick's host. \($host\)"                }            }        }        if {$portcheck_setting(autoban_svr)} {            putserv "KLINE $nick :Found Open Proxy. Please secure your machine."            putserv "PRIVMSG $gCommandChan :^C4\002ProxyCheck:\002^O Found Open Port ^C4$port^O on $nick's machine. Adding Kline!"        }    }}proc portcheck_timeout_join {sock} {    close $sock}proc portcheck_read_join {sock} {    close $sock}proc portcheck_read_pub {sock} {    global portcheck_setting    if {!$portcheck_setting(read)} {        close $sock    } elseif {[gets $sock read] == -1} {        putquick "PRIVMSG $chan :^C9\002ProxyCheck:\002^O EOF On Connection To $host \($port\). Socket Closed."        close $sock    }}putlog "\002ProxyScan:\002 V1.0 by WCC Modified by ^DooM^."</code></pre></div>This script opens up a lot of connections so be wary if you are running this on a paid for shell. you could get your account terminated. Also REMEMBER that this will kline users that just happen to have those 4 ports open even if they are not proxies. Casualties of war eh? <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_wink.gif" width="15" height="15" alt=";)" title="Wink"><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3723">^DooM^</a> — Thu Jul 07, 2005 4:25 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[r0t3n]]></name></author>
		<updated>2005-07-07T16:09:24-04:00</updated>

		<published>2005-07-07T16:09:24-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51945#p51945</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51945#p51945"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51945#p51945"><![CDATA[
Ok, how exactly do i scan the users ip/hostname. And, i guess can a dns lookup determine if its a open proxy. Also, how can the bot connect using the ip:port from the user to test it. Would a hubbot need to ve used to connect using the ips ?<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=6300">r0t3n</a> — Thu Jul 07, 2005 4:09 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[^DooM^]]></name></author>
		<updated>2005-07-07T16:02:47-04:00</updated>

		<published>2005-07-07T16:02:47-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51943#p51943</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51943#p51943"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51943#p51943"><![CDATA[
You cant just do a command and find out a users port. You have to physically Scan the IP they are using for an open port say 8080 1080 3127 all the usual proxy ports. However just because a user has those ports open doesn't mean they are using a proxy. You have to check by connecting to that ip on the open port and see if it is actually allowing connections and could be used as a proxy. There are tcl scripts in the archive if i remember correctly for port scanning users on join. but none that i know of for checking. Your best bet would be to install this as a service. <a href="http://wiki.blitzed.org/BOPM" class="postlink">http://wiki.blitzed.org/BOPM</a><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3723">^DooM^</a> — Thu Jul 07, 2005 4:02 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[r0t3n]]></name></author>
		<updated>2005-07-07T15:40:37-04:00</updated>

		<published>2005-07-07T15:40:37-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=51941#p51941</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=51941#p51941"/>
		<title type="html"><![CDATA[Ports]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=51941#p51941"><![CDATA[
No, i mean the port a users hostname is. Like 8080 like you know with proxies. Its ip/hostname:port i need to find out the port part. Please help!!<br><br>Thanks in advance!!<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=6300">r0t3n</a> — Thu Jul 07, 2005 3:40 pm</p><hr />
]]></content>
	</entry>
	</feed>
