<?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/21714" />

	<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>2025-10-23T08:29:28-04:00</updated>

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

		<entry>
		<author><name><![CDATA[Carlin0]]></name></author>
		<updated>2025-10-23T08:29:28-04:00</updated>

		<published>2025-10-23T08:29:28-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=113386#p113386</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=113386#p113386"/>
		<title type="html"><![CDATA[Re: Error in BlackIP.tcl]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=113386#p113386"><![CDATA[
<blockquote class="uncited"><div>Look like ip-api.io now asks for an API key, and the error message is not in json so the json procedures return bad values.<br><br>You should probably ask BLaCkShaDoW to update his script</div></blockquote>Ok thank you...<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12778">Carlin0</a> — Thu Oct 23, 2025 8:29 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[CrazyCat]]></name></author>
		<updated>2025-10-23T08:26:10-04:00</updated>

		<published>2025-10-23T08:26:10-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=113385#p113385</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=113385#p113385"/>
		<title type="html"><![CDATA[Re: Error in BlackIP.tcl]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=113385#p113385"><![CDATA[
Look like ip-api.io now asks for an API key, and the error message is not in json so the json procedures return bad values.<br><br>You should probably ask BLaCkShaDoW to update his script<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=691">CrazyCat</a> — Thu Oct 23, 2025 8:26 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Carlin0]]></name></author>
		<updated>2025-10-23T08:12:16-04:00</updated>

		<published>2025-10-23T08:12:16-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=113384#p113384</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=113384#p113384"/>
		<title type="html"><![CDATA[Re: Error in BlackIP.tcl]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=113384#p113384"><![CDATA[
<blockquote class="uncited"><div><strong class="text-strong">.set errorInfo</strong> with a capital I</div></blockquote>Sorry...<br><div class="codebox"><p>Code: </p><pre><code>[14:07:55] Tcl error [black:ip:check]: unexpected token ":" at position 1; expecting VALUE.set errorInfo[14:08:14] #Carlin0# set errorInfoCurrently: unexpected token ":" at position 1; expecting VALUECurrently:     while executingCurrently: "unexpected $tokenCursor $token "VALUE""Currently:     ("default" arm line 6)Currently:     invoked from withinCurrently: "switch -exact -- $leadingChar {Currently:             "\{" {Currently:                 return [parseObject $tokens $nrTokens tokenCursor]Currently:             }Currently:             "\[" {..."Currently:     (procedure "parseValue" line 12)Currently:     invoked from withinCurrently: "parseValue $tokens $nrTokens tokenCursor"Currently:     (procedure "::json::json2dict" line 10)Currently:     invoked from withinCurrently: "::json::json2dict $data"Currently:     (procedure "blackip:json" line 3)Currently:     invoked from withinCurrently: "blackip:json "suspicious_factors" $data_secured"Currently:     (procedure "check:ip" line 82)Currently:     invoked from withinCurrently: "check:ip $ip $chan 2 [list 0 $nick 3]"Currently:     (procedure "black:ip:check" line 41)Currently:     invoked from withinCurrently: "black:ip:check $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"</code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12778">Carlin0</a> — Thu Oct 23, 2025 8:12 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[CrazyCat]]></name></author>
		<updated>2025-10-23T08:04:24-04:00</updated>

		<published>2025-10-23T08:04:24-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=113383#p113383</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=113383#p113383"/>
		<title type="html"><![CDATA[Re: Error in BlackIP.tcl]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=113383#p113383"><![CDATA[
<strong class="text-strong">.set errorInfo</strong> with a capital I<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=691">CrazyCat</a> — Thu Oct 23, 2025 8:04 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Carlin0]]></name></author>
		<updated>2025-10-23T07:50:57-04:00</updated>

		<published>2025-10-23T07:50:57-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=113382#p113382</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=113382#p113382"/>
		<title type="html"><![CDATA[Re: Error in BlackIP.tcl]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=113382#p113382"><![CDATA[
<blockquote class="uncited"><div>Ok, so when the error occures again, type <strong class="text-strong">.set errorInfo</strong> in party-line and give us the detals about the error.<br><br>Help us to help you.</div></blockquote>Never heard of this setting... but anyway<br><div class="codebox"><p>Code: </p><pre><code>*** Carlin0 joined the party line..set errorinfo[13:39:48] #Carlin0# set errorinfoError: can't read "errorinfo": no such variable[13:42:19] Tcl error [black:ip:check]: unexpected token ":" at position 1; expecting VALUE.set errorinfo[13:42:40] #Carlin0# set errorinfoError: can't read "errorinfo": no such variable</code></pre></div>The error occurs when you give the command !ip &lt;nick&gt; in public.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12778">Carlin0</a> — Thu Oct 23, 2025 7:50 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[CrazyCat]]></name></author>
		<updated>2025-10-23T05:33:47-04:00</updated>

		<published>2025-10-23T05:33:47-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=113380#p113380</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=113380#p113380"/>
		<title type="html"><![CDATA[Re: Error in BlackIP.tcl]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=113380#p113380"><![CDATA[
Ok, so when the error occures again, type <strong class="text-strong">.set errorInfo</strong> in party-line and give us the detals about the error.<br><br>Help us to help you.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=691">CrazyCat</a> — Thu Oct 23, 2025 5:33 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Carlin0]]></name></author>
		<updated>2025-10-22T14:48:58-04:00</updated>

		<published>2025-10-22T14:48:58-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=113379#p113379</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=113379#p113379"/>
		<title type="html"><![CDATA[Error in BlackIP.tcl]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=113379#p113379"><![CDATA[
This script has always worked perfectly<br><div class="codebox"><p>Code: </p><pre><code>#########################################################################################################                                    Copyright 2008 - 2018 @ WwW.TCLScripts.NET ####                        _   _   _   _   _   _   _   _   _   _   _   _   _   _                      ####                       / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \                     ####                      ( T | C | L | S | C | R | I | P | T | S | . | N | E | T )                    ####                       \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/                     ####                                                                                                   ####                                      ® BLaCkShaDoW Production ®                                   ####                                                                                                   ####                                              PRESENTS                                             ####                           ® #############################################   BLACK IP TCL   ############################################                             ####  DESCRIPTION:                              ####  Returns IP address dns, location and organization informations for a nick/IP/hostname.           ####                             ####  Both IPv4 &amp; IPv6 supported.                                                                      ##                                                                    ####                             ####  Tested on Eggdrop v1.8.3 (Debian Linux 3.16.0-4-amd64) Tcl version: 8.6.6                        ####                             ###########################################################################################################                             ####  INSTALLATION:                              ####     ++ http &amp; tls packages are REQUIRED for this script to work.                                  ####     ++ Edit the BlackIP.tcl script and place it into your /scripts directory,                     ####     ++ add "source scripts/BlackIP.tcl" to your eggdrop config and rehash the bot.                ####                             ###########################################################################################################                             ####  CHANGELOG:                                                                                       ####  - 1.8 version                                                                                    ####    + added a flood protection settings against those who abuse the use of command.                ####    + added extra stuff for suspicious details as: proxy, tor and spam.                            ####    + added extra stuff fo latitude/longitude, mobile and timezone date details.                   ####    + added utf-8 support.                                                                         ####    + minor bugs fixed.                                                                            ####  - 1.7 version                                                                                    ####    + completely rebuilt in a new style and with another source for IP informations.               ####    + now supports IPv6.                                                                           ####    + supports eggdrop version less than 1.8.*                                                     ####    + added multi-languages for every channel: RO, EN, FR, ES &amp; IT.                                ####    + minor bugs fixed.                                                                            ####                             ###########################################################################################################                             ####  OFFICIAL LINKS:                                                                                  ####   E-mail      : BLaCkShaDoW[at]tclscripts.net                                                     ####   Bugs report : http://www.tclscripts.net                                                         ####   GitHub page : https://github.com/tclscripts/                              ####   Online help : irc://irc.undernet.org/tcl-help                                                   ####                 #TCL-HELP / UnderNet                                                             ####                 You can ask in english or romanian                                                ####                             ####          Please consider a donation. Thanks!                                                      ####                             ###########################################################################################################                             ####                           You want a customised TCL Script for your eggdrop?                      ####                                Easy-peasy, just tell me what you need!                            ####                I can create almost anything in TCL based on your ideas and donations.             ####                  Email blackshadow@tclscripts.net or info@tclscripts.net with your                ####                    request informations and I'll contact you as soon as possible.                 ####                             ###########################################################################################################                             ####  To activate: .chanset +ip | from BlackTools: .set #channel +ip                                   ####                                                                                                   ####  !ip [nick|IP|host] - shows details assigned to that IP address or nick.                          ####                                                                                                   ####  !set iplang [RO|EN|FR|ES|IT] - set a language for output messages.                               ####                                                                                                   ####  !ip version - returns the BlackIP script version.                                                ####                                                                                                   ####  Supports: both IPv4 &amp; IPv6.                                                                      ####                                                                                                   ###########################################################################################################                                                                                                   ####  EXAMPLES:                                                                                        ####                             #### [request for IP]                                                                                  ####  &lt;user&gt; !ip 188.209.52.109                                                                        ####  &lt;bot&gt; 188.209.52.109 is located in Netherlands (52.3824, 4.8995) ; Timezone: Europe/Amsterdam    ####        Host: hosted-by.blazingfast.io ; ISP: BlazingFast LLC ; Mobile: false ; Proxy: false       ####        Spam: false ; TOR: false ; Suspicious: false                                               ####                                                                                                   #### [request for hostname]                                                                            ####  &lt;user&gt; !ip hosted-by.blazingfast.io                                                              ####  &lt;bot&gt; hosted-by.blazingfast.io is located in Amsterdam, Netherlands (52.3824, 4.8995)            ####        Timezone: Europe/Amsterdam ; IP: 188.209.52.109 ;  ; ISP: BlazingFast LLC ; Mobile: false  ####        Proxy: false ; Spam: false ; TOR: false ; Suspicious: false                                ####                                                                                                   #### [request for nick]                                                                                ####  &lt;user&gt; !ip TCLHelp                                                                               ####  &lt;bot&gt; Nickname: TCLHelp ; Host: tclscripts.net                                                   ####  &lt;bot&gt; tclscripts.net is located in Munich (Ramersdorf - Perlach), Germany (48.1044, 11.601)      ####        Timezone: Europe/Berlin ; IP: 5.189.157.89 ; ISP: Contabo GmbH ; Mobile: false             ####        Proxy: false ; Spam: false ; TOR: false ; Suspicious: false                                ####                                                                                                   ###########################################################################################################                             ####  LICENSE:                                                                                         ####   This code comes with ABSOLUTELY NO WARRANTY.                                                    ####                                                                                                   ####   This program is free software; you can redistribute it and/or modify it under the terms of      ####   the GNU General Public License version 3 as published by the Free Software Foundation.          ####                                                                                                   ####   This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of          ####   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                                            ####   USE AT YOUR OWN RISK.                                                                           ####                                                                                                   ####   See the GNU General Public License for more details.                                            ####        (http://www.gnu.org/copyleft/library.txt)                                                  ####                                                                                                   ####            Copyright 2008 - 2018 @ WwW.TCLScripts.NET                         ####                                                                                                   ###################################################################################################################################################################################################################                                 CONFIGURATION FOR BlackIP.TCL                                   ############################################################################################################## Cmdchar trigger# - set here the trigger you want to use.###set blackip(cmd_char) "!"#### set here who can execute the command (-|- for all)###set black(ip_flags) "-|-"#### Language setting# - set here the default language of the script# - supports different languages for every channel#   ( RO / EN / IT / FR / ES )###set black(default_lang) "it"#### FLOOD PROTECTION#Set the number of minute(s) to ignore flooders, 0 to disable flood protection###set black(ignore_prot) "1"#### FLOOD PROTECTION#Set the number of requests within specifide number of seconds to trigger flood protection.# By default, 4:10, which allows for upto 3 queries in 10 seconds. 4 or more quries in 10 seconds would cuase# the forth and later queries to be ignored for the amount of time specifide above.###set black(flood_prot) "2:10"#Use secure connection (https) for host info ? (0-no; 1-yes)#If you want https, you have to install tls package# https version (using tls package) have extra informations as: is_spam, , is_tor or is_suspicious###set black(ip_secured) "1"##########################################################################################################                       DO NOT MODIFY HERE UNLESS YOU KNOW WHAT YOU'RE DOING                      ##########################################################################################################package require httppackage require json#### Channel flags###setudef flag ipsetudef str iplang#### Bindings# - using commands###bind pub $black(ip_flags) $blackip(cmd_char)ip black:ip:check###if {$black(ip_secured) == "1"} {package require tls}proc black:ip:check {nick host hand chan arg} {set ip [lindex [split $arg] 0]if {![channel get $chan ip]} {return}set flood_protect [blackip:flood:prot $chan $host]if {$flood_protect == "1"} {set get_seconds [blackip:get:flood_time $host $chan]blackip:tell $nick $chan 19 [list $get_seconds $nick]return}if {[string match -nocase $ip "version"]} {blackip:tell $nick $chan 20 [list $nick]return}if {$ip == ""} {blackip:tell $nick $chan 1 nonereturn}if {![string match -nocase "*:*" $ip] &amp;&amp; ![string match -nocase "*.*" $ip]} {putserv "USERHOST :$ip"set ::ipchan $chanset ::ip_search $ipbind RAW - 302 check:for:nickreturn}set check_domain [blackip:domain $ip]if {$check_domain != "0"} {check:ip $ip $chan 2 [list $check_domain $nick 1]return}set check_dns [blackip:getdns $ip]if {$check_dns != "0"} {check:ip $ip $chan 2 [list $check_dns $nick 2]return}check:ip $ip $chan 2 [list 0 $nick 3]}###proc check:for:nick { from keyword arguments } {global blackset ip $::ip_searchset chan $::ipchanset hosts [lindex [split $arguments] 1]set hostname [lindex [split $hosts "="] 1]regsub {^[-+]} $hostname "" maskset nickname [lindex [split $hosts "="] 0]regsub {^:} $nickname "" nickif {$nick == ""} {blackip:tell "" $chan 2 $ipunbind RAW - 302 check:for:nickreturn}set mask [lindex [split $mask @] 1]set check_domain [blackip:domain $mask]if {$check_domain != "0"} {check:ip $mask $chan 3 [list $check_domain $nick 1]unbind RAW - 302 check:for:nickreturn}set check_dns [blackip:getdns $mask]if {$check_dns != "0"} {check:ip $mask $chan 3 [list $check_dns $nick 2]unbind RAW - 302 check:for:nickreturn}check:ip $mask $chan 3 [list 0 $nick 3]unbind RAW - 302 check:for:nick}###proc blackip:domain {ip} {global blackset get_domain ""set check_ipv4 [regexp {^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $ip]set check_ipv6 [regexp {^([0-9A-Fa-f]{0,4}:){2,7}([0-9A-Fa-f]{1,4}$|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4})$} $ip]if {$check_ipv4 == "1" || $check_ipv6 == "1"} {set gethost [catch {exec host $ip 2&gt;/dev/null} results]regexp {(pointer) (.*)} $results get_domainif {$get_domain != ""} {set domain [string trimright [lindex $get_domain 1] "."]return $domain} else { return 0 }} else { return 0 }}###proc blackip:getdns {ip} {global blackset ipv4 ""set ipv6 ""set gethost [catch {exec host $ip 2&gt;/dev/null} results]set res [lrange [split $results] 0 end]set inc 0set llength [llength $res]for {set i 0} { $i &lt;= $llength} { incr i } {set word [lindex $res $i]if {[string match -nocase "*IPv6*" $word]} {lappend ipv6 [join [lindex $res [expr $i + 2]]]}if {[string match -nocase "*address*" $word] &amp;&amp; ![string match -nocase "*IPv6*" [lindex $res [expr $i - 1]]]} {lappend ipv4 [join [lindex $res [expr $i + 1]]]}}if {$ipv4 == "" &amp;&amp; $ipv6 == ""} {return 0}return [list $ipv4 $ipv6]}###proc check:ip {ip chan status arg} {global blackset type [lindex $arg 2]set reverse_dns 0set is_secured 0set domain ""set ipv4_list ""set ipv6 ""set proxy ""set is_tor ""set is_spam ""set is_suspicious ""set ipv4 ""set ipv6_list ""set other_ips ""set ip_to_check ""if {$type == "1"} {set domain [lindex $arg 0]set reverse_dns 1set proxy [blackip:proxy_check $ip]} elseif {$type == "2"} {set reverse_dns 2set ips [lindex $arg 0]set ipv4_list [lindex $ips 0]set ipv6_list [lindex $ips 1]if {$ipv6_list != ""} {if {[llength $ipv6_list] &gt; 1} { set ipv6 [lindex $ipv6_list 0]set ipv6_list [lreplace $ipv6_list 0 0]} else { set ipv6 $ipv6_list set ipv6_list ""}} else {if {[llength $ipv4_list] &gt; 1} { set ipv4 [lindex $ipv4_list 0]set ipv4_list [lreplace $ipv4_list 0 0]} else { set ipv4 $ipv4_list set ipv4_list ""}}}set ipv4_list [join $ipv4_list ", "]set ipv6_list [join $ipv6_list ", "]if {$reverse_dns == "2"} {if {$ipv6 != ""} {set ip_to_check $ipv6} elseif {$ipv4 != ""} {set ip_to_check $ipv4}} else {set ip_to_check $ip}if {$ipv4_list != ""} {lappend other_ips $ipv4_list}if {$ipv6_list != ""} {lappend other_ips $ipv6_list}set other_ips [join $other_ips ", "]set data [blackip:data $ip_to_check]set stat [blackip:json "status" $data]if {$stat == "fail"} {blackip:tell "" $chan 16 $ip_to_checkreturn}set region_name [blackip:json "regionName" $data]set country [blackip:json "country" $data]set city [blackip:json "city" $data]set location [join [encoding convertfrom "utf-8" [list $city $region_name $country]] ", "]set lat [blackip:json "lat" $data]set lon [blackip:json "lon" $data]set latlon [join "$lat $lon" ", "]set timezone [blackip:json "timezone" $data]set mobile [blackip:getstatus [blackip:json "mobile" $data] $chan]set org [blackip:json "isp" [encoding convertfrom "utf-8" $data]]if {$black(ip_secured) == "1"} {set is_secured 1set data_secured [blackip:data_secured $ip_to_check]set suspicious [blackip:json "suspicious_factors" $data_secured]set proxy [lindex $suspicious 1]set is_tor [blackip:getstatus [lindex $suspicious 3] $chan]set is_spam [blackip:getstatus [lindex $suspicious 5] $chan]set is_suspicious [blackip:getstatus [lindex $suspicious 7] $chan]}if {$ip_to_check != "" &amp;&amp; $is_secured == "0"} {set proxy [blackip:proxy_check $ip_to_check]if {$proxy != "0"} {set proxy "true"} else { set proxy "false" }}set proxy [blackip:getstatus $proxy $chan]if {$status == "3"} {set nickname [lindex $arg 1]blackip:tell "" $chan 9 [list $ip $nickname]}if {$reverse_dns == "1"} {if {$is_secured == "1"} {blackip:tell "" $chan 13 [list $ip $location $latlon $timezone $domain $proxy $is_spam $is_tor $is_suspicious $org $mobile]} else {blackip:tell "" $chan 6 [list $ip $location $latlon $timezone $domain $org $proxy $mobile]}return} elseif {$reverse_dns == "2"} {if {$is_secured == "1"} {blackip:tell "" $chan 12 [list $ip $location $latlon $timezone $ip_to_check $proxy $is_spam $is_tor $is_suspicious $org $mobile]} else {blackip:tell "" $chan 5 [list $ip $location $latlon $timezone $ip_to_check $org $proxy $mobile]}} else {if {$is_secured == "1"} {blackip:tell "" $chan 15 [list $ip $location $latlon $timezone $proxy $is_spam $is_tor $is_suspicious $org $mobile]} else {blackip:tell "" $chan 14 [list $ip $location $latlon $timezone $org $proxy $mobile]}}if {$other_ips != ""} {blackip:tell "" $chan 11 [list $other_ips]}}#### Credits###set blackip(projectName) "BlackIP"set blackip(author) "BLaCkShaDoW"set blackip(website) "wWw.TCLScriptS.NeT"set blackip(email) "BLaCkShaDoW@TCLScriptS.NeT"set blackip(version) "v1.8 (IPv6 support)"###proc blackip:data_secured {ip} {global blackset link "https://ip-api.io/json/$ip"http::register https 443 [list ::tls::socket -tls1 1]set ipq [http::config -useragent "lynx"]set ipq [::http::geturl $link] set data [http::data $ipq]::http::cleanup $ipqreturn $data}###proc blackip:data {ip} {global blackset link "http://ip-api.com/json/$ip?fields=country,regionName,city,lat,lon,timezone,mobile,proxy,query,reverse,status,message,isp"set ipq [http::config -useragent "lynx"]set ipq [::http::geturl $link] set data [http::data $ipq]::http::cleanup $ipqreturn $data}###proc blackip:json {get data} {global blackset parse [::json::json2dict $data]set return ""foreach {name info} $parse {if {[string equal -nocase $name $get]} {set return $infobreak;}}return $return}###proc blackip:get_other {ip} {global blackset link "http://ip-api.com/json/$ip?fields=country,regionName,city,lat,lon,timezone,mobile,proxy,query,reverse,status,message,isp"set ipq [http::config -useragent "lynx"]set ipq [::http::geturl $link] set data [http::data $ipq]::http::cleanup $ipqset isp [blackip:json "isp" $data]set mobile [blackip:json "mobile" $data]if {$isp != ""} { return [list $isp $mobile]} else { return 0 }}###proc blackip:proxy_check {ip} {global blackset type ""set link "http://proxycheck.io/v1/$ip"set ipq [http::config -useragent "lynx"]set ipq [::http::geturl $link] set data [http::data $ipq]::http::cleanup $ipqset proxy [blackip:json "proxy" $data]if {$proxy == "yes"} {return [list $proxy]} else {return 0}return 0}###proc blackip:tell {nick chan type arg} {global blackset inc 0foreach s $arg {set inc [expr $inc + 1]set replace(%msg.$inc%) $s}set getlang [blackip:getlang $chan]if {[info exists black(blackip.$getlang.$type)]} {set reply [string map [array get replace] $black(blackip.$getlang.$type)]if {$nick != ""} {putserv "NOTICE $nick :$reply"} else {putserv "PRIVMSG $chan :$reply"}}}###proc blackip:getstatus {text chan} {global blackset getlang [blackip:getlang $chan]switch $text {true {return $black(blackip.$getlang.17)}false {return $black(blackip.$getlang.18)}}}###proc blackip:getlang {chan} {global blackset getlang [string tolower [channel get $chan iplang]]if {$getlang == ""} {set lang [string tolower $black(default_lang)]} else {if {[info exists black(blackip.$getlang.1)]} {set lang $getlang} else { set lang [string tolower $black(default_lang)]}}return $lang}###proc blackip:flood:prot {chan host} {global blackset number [scan $black(flood_prot) %\[^:\]]set timer [scan $black(flood_prot) %*\[^:\]:%s]if {[info exists black(ipflood:$host:$chan:act)]} {return 1}foreach tmr [utimers] {if {[string match "*blackip:remove:flood $host $chan*" [join [lindex $tmr 1]]]} {killutimer [lindex $tmr 2]}}if {![info exists black(ipflood:$host:$chan)]} { set black(ipflood:$host:$chan) 0 }incr black(ipflood:$host:$chan)utimer $timer [list blackip:remove:flood $host $chan]if {$black(ipflood:$host:$chan) &gt; $number} {set black(ipflood:$host:$chan:act) 1utimer [expr $black(ignore_prot) * 60] [list blackip:expire:flood $host $chan]return 1} else {return 0}}###proc blackip:remove:flood {host chan} {global blackif {[info exists black(ipflood:$host:$chan)]} {unset black(ipflood:$host:$chan)}}###proc blackip:expire:flood {host chan} {global blackif {[info exists black(ipflood:$host:$chan:act)]} {unset black(ipflood:$host:$chan:act)}}###proc blackip:get:flood_time {host chan} {global blackforeach tmr [utimers] {if {[string match "*blackip:expire:flood $host $chan*" [join [lindex $tmr 1]]]} {return [lindex $tmr 0]}}}#Languages# Romanian###set black(blackip.ro.1) "\[BlackIP\] Foloseste: \002!ip\002 \[ip|\002host\002|nickname\]"set black(blackip.ro.2) "\[\002%msg.1%\002\] nu este online."set black(blackip.ro.3) "\[\002X\002\] nu am putut rezolva adresa \002%msg.1%\002."set black(blackip.ro.4) "\[\002X\002\] nu am putut rezolva adresa \002%msg.1%\002 apartinand lui \002%msg.2%\002."set black(blackip.ro.5) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobil\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.ro.6) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobil\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.ro.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"set black(blackip.ro.11) "\002Alte rDNS\002: %msg.1%"set black(blackip.ro.12) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspect\002: %msg.9%"set black(blackip.ro.13) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspect\002: %msg.9%"set black(blackip.ro.14) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Mobil\002: %msg.7% ; \002Proxy\002: %msg.6%"set black(blackip.ro.15) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Mobil\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Suspect\002: %msg.8%"set black(blackip.ro.16) "\[X\] \002%msg.1%\002 adresa IP necunoscuta"set black(blackip.ro.17) "da"set black(blackip.ro.18) "nu"set black(blackip.ro.19) "\002%msg.2%\002: Trimiti cereri prea repede. Calmeaza-te si incearca din nou dupa \002%msg.1% secunde\002. Multumesc!"set black(blackip.ro.20) "\002$blackip(projectName) $blackip(version)\002 realizat de\002 $blackip(author)\002 ($blackip(website))"# English###set black(blackip.en.1) "\[BlackIP\] Use: \002!ip\002 \[ip|\002host\002|nickname\]"set black(blackip.en.2) "\[\002%msg.1%\002\] is not Online."set black(blackip.en.3) "\[\002X\002\] unable to resolve address \002%msg.1%\002."set black(blackip.en.4) "\[\002X\002\] unable to resolve address \002%msg.1%\002 from \002%msg.2%\002."set black(blackip.en.5) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.en.6) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.en.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"set black(blackip.en.11) "\002Other rDNS\002: %msg.1%"set black(blackip.en.12) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicious\002: %msg.9%"set black(blackip.en.13) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicious\002: %msg.9%"set black(blackip.en.14) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Mobile\002: %msg.7% ; \002Proxy\002: %msg.6%"set black(blackip.en.15) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Mobile\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Suspicious\002: %msg.8%"set black(blackip.en.16) "\[X\] \002%msg.1%\002 unknown ip address"set black(blackip.en.17) "true"set black(blackip.en.18) "false"set black(blackip.en.19) "\002%msg.2%\002: You're sending requests too fast. Calm down and try again after \002%msg.1% seconds\002. Thanks!"set black(blackip.en.20) "\002$blackip(projectName) $blackip(version)\002 made by\002 $blackip(author)\002 ($blackip(website))"# French###set black(blackip.fr.1) "\[BlackIP\] Utilisation: \002!ip\002 \[ip|\002host\002|nickname\]"set black(blackip.fr.2) "\[\002%msg.1%\002\] n'est pas en ligne."set black(blackip.fr.3) "\[\002X\002\] incapable de resoudre l'adresse \002%msg.1%\002."set black(blackip.fr.4) "\[\002X\002\] incapable de resoudre l'adresse \002%msg.1%\002 de \002%msg.2%\002."set black(blackip.fr.5) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Portable\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.fr.6) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Portable\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.fr.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"set black(blackip.fr.11) "\002Autre rDNS\002: %msg.1%"set black(blackip.fr.12) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Portable\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Soupconneux\002: %msg.9%"set black(blackip.fr.13) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Portable\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Soupconneux\002: %msg.9%"set black(blackip.fr.14) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Portable\002: %msg.7% ; \002Proxy\002: %msg.6%"set black(blackip.fr.15) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Portable\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Soupconneux\002: %msg.8%"set black(blackip.fr.16) "\[X\] \002%msg.1%\002 adresse IP inconnue"set black(blackip.fr.17) "vrai"set black(blackip.fr.18) "faux"set black(blackip.fr.19) "\002%msg.2%\002: Vous envoyez des demandes trop rapidement. Calmez-vous et reessayez apres \002%msg.1% secondes\002. Merci!"set black(blackip.fr.20) "\002$blackip(projectName) $blackip(version)\002 fait par\002 $blackip(author)\002 ($blackip(website))"# Spanish###set black(blackip.es.1) "\[BlackIP\] Uso: \002!ip\002 \[ip|\002host\002|nickname\]"set black(blackip.es.2) "\[\002%msg.1%\002\] no esta en linea."set black(blackip.es.3) "\[\002X\002\] incapaz de resolver la direccion \002%msg.1%\002."set black(blackip.es.4) "\[\002X\002\] incapaz de resolver la direccion \002%msg.1%\002 desde \002%msg.2%\002."set black(blackip.es.5) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Movil\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.es.6) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Movil\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.es.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"set black(blackip.es.11) "\002Otro rDNS\002: %msg.1%"set black(blackip.es.12) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Movil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicaz\002: %msg.9%"set black(blackip.es.13) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Movil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicaz\002: %msg.9%"set black(blackip.es.14) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Movil\002: %msg.7% ; \002Proxy\002: %msg.6%"set black(blackip.es.15) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Movil\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Suspicaz\002: %msg.8%"set black(blackip.es.16) "\[X\] \002%msg.1%\002 direccion IP desconocida"set black(blackip.es.17) "verdadero"set black(blackip.es.18) "falso"set black(blackip.es.19) "\002%msg.2%\002: Estas enviando solicitudes demasiado rapido. Calmate e intenta de nuevo despues de \002%msg.1% segundos\002. Gracias!"set black(blackip.es.20) "\002$blackip(projectName) $blackip(version)\002 hecho por\002 $blackip(author)\002 ($blackip(website))"# Italian###set black(blackip.it.1) "\[BlackIP\] Use: \002!ip\002 \[ip|\002host\002|nickname\]"set black(blackip.it.2) "\[\002%msg.1%\002\] non e online."set black(blackip.it.3) "\[\002X\002\] incapace di risolvere l'indirizzo \002%msg.1%\002."set black(blackip.it.4) "\[\002X\002\] incapace di risolvere l'indirizzo \002%msg.1%\002 da \002%msg.2%\002."set black(blackip.it.5) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.it.6) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"set black(blackip.it.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"set black(blackip.it.11) "\002Altro rDNS\002: %msg.1%"set black(blackip.it.12) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Sospetto\002: %msg.9%"set black(blackip.it.13) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Sospetto\002: %msg.9%"set black(blackip.it.14) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Mobile\002: %msg.7% ; \002Proxy\002: %msg.6%"set black(blackip.it.15) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Mobile\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Sospetto\002: %msg.8%"set black(blackip.it.16) "\[X\] \002%msg.1%\002 indirizzo IP sconosciuto"set black(blackip.it.17) "vero"set black(blackip.it.18) "falso"set black(blackip.it.19) "\002%msg.2%\002: Stai inviando richieste troppo velocemente. Calmati e riprova dopo \002%msg.1% secondi\002. Grazie!"set black(blackip.it.20) "\002$blackip(projectName) $blackip(version)\002 prodotto da\002 $blackip(author)\002 ($blackip(website))"putlog "$blackip(projectName) $blackip(version) Loaded &amp; initialized.."#######################</code></pre></div>Suddenly it no longer works and give this error<br><div class="codebox"><p>Code: </p><pre><code>Tcl error [black:ip:check]: unexpected token ":" at position 1; expecting VALUE</code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12778">Carlin0</a> — Wed Oct 22, 2025 2:48 pm</p><hr />
]]></content>
	</entry>
	</feed>
