Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias sorgula {
if (!$1) { echo -a Lütfen bir IP giriniz. Örnek: /sorgula 1.2.3.4 | return }
set %ipaddr $1
unset %ipdata | unset %headerdone | unset %clen | unset %got
if ($var(&buf,0)) bunset &buf
echo -a IP: %ipaddr Bilgileri Sorgulanıyor...
sockopen iplookup ip-api.com 80
}
on *:SOCKOPEN:iplookup: {
if ($sockerr) { echo -a Sunucuyla Bağlantı Kurulamıyor. | sockclose $sockname | return }
sockwrite -n $sockname GET $+(/json/,%ipaddr) HTTP/1.1
sockwrite -n $sockname Host: ip-api.com
sockwrite -n $sockname Connection: close
sockwrite -n $sockname Accept: application/json
sockwrite -n $sockname User-Agent: mIRC
sockwrite -n $sockname $crlf
}
on *:SOCKREAD:iplookup: {
if ($sockerr) { echo -a Sunucuyla Bağlantı Kurulamıyor. | sockclose $sockname | return }
var %read 1
while (%read) {
sockread -f &chunk
if ($bvar(&chunk,0) == 0) break
if (!$var(&buf,0)) bcopy &buf 1 &chunk 1 $bvar(&chunk,0)
else bcopy &buf $calc($bvar(&buf,0) + 1) &chunk 1 $bvar(&chunk,0)
bunset &chunk
}
if (!%headerdone) {
var %p $bfind(&buf,1,13 10 13 10)
if (%p) {
set %headerdone 1
var %hdr $bvar(&buf,1,%p).text
if ($regex(%hdr,/Content-Length:\s*([0-9]+)/i)) set %clen $regml(1)
var %bodyStart $calc(%p + 4)
var %len $bvar(&buf,0)
if (%len >= %bodyStart) {
var %bytes $calc(%len - %bodyStart + 1)
var %text $bvar(&buf,%bodyStart,%bytes).text
set %ipdata $+(%ipdata,%text)
set %got $calc(%got + %bytes)
; Buffer'ı sadece gövde ile yeniden düzenle
bcopy &buf 1 &buf %bodyStart $calc(%len - %bodyStart + 1)
}
else bunset &buf
}
return
}
if ($var(&buf,0)) {
var %bytes $bvar(&buf,0)
var %text $bvar(&buf,1,%bytes).text
set %ipdata $+(%ipdata,%text)
set %got $calc(%got + %bytes)
bunset &buf
}
}
on *:SOCKCLOSE:iplookup: {
.timer 1 1 showdata
}
alias showdata {
if (%ipdata == $null) {
echo -a Gösterilecek Veri Yok.
goto cleanup
}
; JSON alanları
var %status = Bulunamadı
var %query = Bulunamadı
var %country = Bulunamadı
var %region = Bulunamadı
var %city = Bulunamadı
var %org = Bulunamadı
var %as = Bulunamadı
var %isp = Bulunamadı
var %lat = Bulunamadı
var %lon = Bulunamadı
var %message = Bulunamadı
if ($regex(%ipdata,/"status":"([^"]+)"/i)) set %status $regml(1)
if ($regex(%ipdata,/"query":"([^"]+)"/i)) set %query $regml(1)
if ($regex(%ipdata,/"country":"([^"]+)"/i)) set %country $regml(1)
if ($regex(%ipdata,/"regionName":"([^"]+)"/i)) set %region $regml(1)
if ($regex(%ipdata,/"city":"([^"]+)"/i)) set %city $regml(1)
if ($regex(%ipdata,/"org":"([^"]+)"/i)) set %org $regml(1)
if ($regex(%ipdata,/"as":"([^"]+)"/i)) set %as $regml(1)
if ($regex(%ipdata,/"isp":"([^"]+)"/i)) set %isp $regml(1)
if ($regex(%ipdata,/"lat":\s*([-0-9.]+)/i)) set %lat $regml(1)
if ($regex(%ipdata,/"lon":\s*([-0-9.]+)/i)) set %lon $regml(1)
if ($regex(%ipdata,/"message":"((?:\\.|[^"])*)"/i)) {
var %m $regml(1)
%m = $replace(%m,\\u0130,İ,\\u0131,ı,\\u00dc,Ü,\\u00fc,ü,\\u011e,Ğ,\\u011f,ğ,\\u015e,Ş,\\u015f,ş,\\u00d6,Ö,\\u00f6,ö,\\u00c7,Ç,\\u00e7,ç,\\/",/")
set %message %m
}
if ($lower(%status) == success) {
echo -a 3,1[ K U L L A N I C I B İ L G İ L E R İ ]
echo -a 9IP : 10 $utf2tr(%query)
echo -a 9Ülke : 10 $utf2tr(%country)
echo -a 9Bölge : 10 $utf2tr(%region)
echo -a 9Şehir : 10 $utf2tr(%city)
echo -a 9ASN/AS : 10 $utf2tr(%as)
echo -a 9Org/ISP : 10 $utf2tr(%org) / $utf2tr(%isp)
echo -a 9Konum : 10 Enlem: $utf2tr(%lat) Boylam: $utf2tr(%lon)
}
else {
echo -a Sorgu başarısız: $iif(%message != Bulunamadı,$utf2tr(%message),Yanıt: $utf2tr(%ipdata))
}
:cleanup
unset %ipaddr | unset %ipdata | unset %headerdone | unset %clen | unset %got
if ($var(&buf,0)) bunset &buf
}
alias utf2tr {
var %text = $1-
%text = $replace(%text,\u0130,İ,\u0131,ı,\u00dc,Ü,\u00fc,ü,\u011e,Ğ,\u011f,ğ,\u015e,Ş,\u015f,ş,\u00d6,Ö,\u00f6,ö,\u00c7,Ç,\u00e7,ç)
return %text
}
Dün test etme imkânım yoktu. Bugün test etme fırsatı buldum bu şekliyle
'te sorunsuz çalışmaktadır.
İyi forumlar. ^^