|
|
@@ -0,0 +1,80 @@
|
|
|
+#########################################################################
|
|
|
+## BlackTools - The Ultimate Channel Control Script ##
|
|
|
+## One TCL. One smart Eggdrop ##
|
|
|
+#########################################################################
|
|
|
+########################### NoProxy TCL #############################
|
|
|
+#########################################################################
|
|
|
+## ##
|
|
|
+## BlackTools : http://blacktools.tclscripts.net ##
|
|
|
+## Bugs report : http://www.tclscripts.net/ ##
|
|
|
+## GitHub page : https://github.com/tclscripts/BlackToolS-TCL ##
|
|
|
+## Online Help : irc://irc.undernet.org/tcl-help ##
|
|
|
+## #TCL-HELP / UnderNet ##
|
|
|
+## You can ask in english or romanian ##
|
|
|
+## ##
|
|
|
+#########################################################################
|
|
|
+
|
|
|
+###
|
|
|
+proc noproxy:protect {nick host hand chan} {
|
|
|
+ global black
|
|
|
+if {![validchan $chan]} { return }
|
|
|
+if {[setting:get $chan noproxy]} {
|
|
|
+if {[matchattr $hand $black(exceptflags) $chan]} { return }
|
|
|
+set bl_protect [blacktools:protect $nick $chan]
|
|
|
+if {$bl_protect == "1"} { return }
|
|
|
+if {![botisop $chan] && ![setting:get $chan xonly]} { return }
|
|
|
+ set uhost [lindex [split $host @] 1]
|
|
|
+ set is_except 0
|
|
|
+foreach ex $black(noproxy:excepts) {
|
|
|
+if {[string match -nocase $ex $uhost]} {
|
|
|
+ set is_except 1
|
|
|
+ }
|
|
|
+}
|
|
|
+if {$is_except == 1} {return}
|
|
|
+ set check_proxy [blacktools:noproxy_data $uhost]
|
|
|
+if {$check_proxy == 0} {return}
|
|
|
+ set isp [lindex $check_proxy 0]
|
|
|
+ set proxy_status [lindex $check_proxy 1]
|
|
|
+if {$proxy_status == "false"} {return}
|
|
|
+ blacktools:banner:2 $nick "noproxy" $chan $chan $host "0" [list $isp]
|
|
|
+if {[link:status $chan] == "1"} {
|
|
|
+ foreach c [link:chan:get $chan] {
|
|
|
+ blacktools:banner:2 $nick "noproxy" $c $c $host "1" [list $isp]
|
|
|
+ }
|
|
|
+ blacktools:link_ban2 [link:get] 0
|
|
|
+ } else { who:chan $chan }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+###
|
|
|
+proc blacktools:noproxy_data {host} {
|
|
|
+ global black
|
|
|
+if {[catch {package require http} no_http] != 0} {
|
|
|
+ source $black(backdir)/BlackTools/Addons/http.tcl
|
|
|
+ package require http
|
|
|
+}
|
|
|
+ set link "http://ip-api.com/json/${host}?fields=proxy,status,isp"
|
|
|
+ set ipq [::http::config -useragent "lynx"]
|
|
|
+ set ipq [::http::geturl "$link" -timeout 10000]
|
|
|
+ set check_it [catch {set ipq [::http::geturl $link -timeout 3000]} error]
|
|
|
+if {$check_it == "1"} { return 0 }
|
|
|
+ set data [::http::data $ipq]
|
|
|
+ ::http::cleanup $ipq
|
|
|
+ regexp -nocase {\"status\":\"(.+)\"} $data -> status
|
|
|
+ regsub -all {\",(.*)} $status "" status
|
|
|
+if {$status != "success"} {
|
|
|
+ return 0
|
|
|
+}
|
|
|
+ set proxy_status "false"
|
|
|
+ set isp ""
|
|
|
+ regexp {"proxy":(.+)\}} $data -> proxy_status
|
|
|
+ regsub {,(.*)} $proxy_status "" proxy_status
|
|
|
+ regexp {"isp":\"(.+)\"} $data -> isp
|
|
|
+ regsub {\",(.*)} $isp "" isp
|
|
|
+ return [list $isp $proxy_status]
|
|
|
+}
|
|
|
+
|
|
|
+##############
|
|
|
+#########################################################################
|
|
|
+## END ##
|
|
|
+#########################################################################
|