Commands: !ip 1.2.3.4 - .ip 1.2.3.4 - @ip 1.2.3.4
#ip on
on *:text:*:#:{ if (?ip iswm $1 && $2 && $left($1,1) isin .@!) { ipit $2 # } }
on *:input:#:{ if (?ip iswm $1 && $server && /* !iswm $1 && $2 && $left($1,1) isin .@!) { ipit $2 # } }
set %color $chr(3) $+ $gettok(02 03 04 05 06 07 10 11 12 13 14 15,$rand(1,12),32)
set %cololove $chr(3) $+ $gettok(03 04 05 06 07 09 10 11 12 13 14 15,$rand(1,12),32)
alias c { return $+ %color $+ -=- }
alias -l ipit {
if (127.* iswm $1 || 192.168.* iswm $1 || 10.* iswm $1 || *localhost* iswm $1) { msg $2 No local addresses! | return }
sockclose ipit
sockopen ipit ip-api.com 80
sockmark ipit $1
%newchan = $2
%line = ""
}
on *:sockopen:ipit:{
if ($sockerr) { msg %newchan [IPinfo] $c Open Error! | unset %newchan %line | return }
sockwrite -n $sockname GET $+(/json/,$sock($sockname).mark) HTTP/1.1
sockwrite -n $sockname Host: ip-api.com
sockwrite -n $sockname Connection: keep-alive
sockwrite -n $sockname Accept: */*
sockwrite -n $sockname Accept-Language: en-us
sockwrite -n $sockname User-Agent: Mozilla/4.0
sockwrite -n $sockname Content-Type: text/html
sockwrite -n $sockname $str($crlf,2)
}
on *:sockread:ipit:{
if ($sockerr) { msg %newchan [IPinfo] $c Read Error! | unset %newchan %line | return }
var %x
sockread -f %x
tokenize 32 %x
if ($+(*,$chr(123),*) iswm $1-) {
var %a = 1, %b, %x, %x2
while ($gettok($1-,%a,44)) {
%b = $v1
%x = $remove($gettok(%b,1,58),")
%x2 = $remove($gettok(%b,2,58),")
if ($+($chr(123),as) != %x && %x != zip) { set -u5 $eval($+(%,%x),1) %x2 }
inc %a
}
}
if (%country) {
%line = 9[10I4p10I4n10F4o9] $c IP: $+ %cololove $sock($sockname).mark
if (%country) { %line = %line $c Country: $+ %cololove %country $c }
if (%city) { %line = %line City: $+ %cololove %city $c }
if (%regionName) { %line = %line State: $+ %cololove %regionName $c }
if (%isp) { %line = %line ISP: $+ %cololove %isp $c }
if (%lon) { %line = %line Longitude: $+ %cololove %lon $c }
if (%lat) { %line = %line Latitude: $+ %cololove %lat $c }
sockclose $sockname
endit
}
}
alias -l endit {
if (!%line) { msg %newchan [IpInfo] $c Nothing Found! }
else { msg %newchan $gettok(%line,1--2,32) }
unset %line %newchan %city %regionName %country %lat %lon %isp
}
#ip end