Tekil Mesaj gösterimi
Alt 16 Ağustos 2026, 23:24   #1
KivanC Editör
✓
W r i t e r
KivanC - ait Kullanıcı Resmi (Avatar)

Standart IP/Ülke/Şehir/ISP Sorgulama (/ip 88.88*)

Merhaba,
/ip komutuyla çalışan, ipregistry.co API'sini kullanan bir IP sorgulama scripti paylaşıyorum.
Özellikler:
/ip → kendi IP'ni sorgular
/ip 8.8.8.8 → istediğin IP'yi sorgular
IP, Ülke, Bölge (il), Şehir, Posta Kodu, Operatör/ISP, Saat Dilimi bilgilerini ayrı bir pencerede (@IP) gösterir
SSL (443 port) üzerinden çalışır
HTTP durum kodu kontrolü ve bağlantı hatası yönetimi mevcut
Sağlam JSON parse mantığı (iç içe alanlar birbirine karışmıyor)
Kurulum:
Dosyayı indir, mIRC'te Alt+R ile Script Editör'ü aç
File > Load işlemiyle veya içeriği kopyala-yapıştır ile ekle
/ip yaz, dene

HTML-Kodu

alias ip {
  if ($sock(ip)) sockclose ip
  sockopen -e ip api.ipregistry.co 443
  sockmark ip $iif($1,$1,$null)
  echo -a ** ip: sorgulanıyor $iif($1,$1,kendi IP'n) ...
}

on *:sockopen:ip:{
  if ($sockerr) {
    echo -a ** ip: bağlantı kurulamadı - $sock(ip).wserr
    return
  }

  ; her yeni bağlantıda durum değişkenlerini sıfırla
  unset %ip.first %ip.inbody %ip.block

  var %hedefip = $sock(ip).mark
  ; fields= parametresi sayesinde yanıt tek seviye iç içe kalır,
  ; gereksiz alanlar (flag, currency, security vb.) hiç gelmez
  var %fields = ip,location.country.name,location.region.name,location.city,location.postal,connection.organization,time_zone.name
  var %target = / $+ %hedefip $+ ?key=tryout&fields= $+ %fields

  sockwrite -n $sockname GET %target HTTP/1.1
  sockwrite -n $sockname Host: api.ipregistry.co
  sockwrite -n $sockname User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
  sockwrite -n $sockname Accept: application/json
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname
}

on *:sockread:ip:{
  if ($sockerr) {
    echo -a ** ip: okuma hatası - $sock(ip).wserr
    return
  }

  var %data
  sockread -f %data
  if ($sockbr == 0) { return }

  if (!$window(@IP)) { window -ne @IP }

  ; ilk satır HTTP durum satırıdır (örn. HTTP/1.1 200 OK) - kontrol et
  if (%ip.first != $true) {
    %ip.first = $true
    if ($regex(%data,/^HTTP\/\d\.\d\s+(\d+)/)) {
      if ($regml(1) != 200) {
        echo @IP ** ip: sunucu hata kodu döndürdü: $regml(1) (tryout anahtarı limiti dolmuş olabilir)
        sockclose ip
      }
    }
    return
  }

  ; header/body ayracı: boş satır
  if (%ip.inbody != $true) {
    if (%data == $null) { %ip.inbody = $true }
    return
  }

  var %line = %data

  ; --- blok (obje) bağlamı takibi ---
  if ($regex(%line,/^\s*"country"\s*:\s*\{/))    { %ip.block = country    | return }
  if ($regex(%line,/^\s*"region"\s*:\s*\{/))     { %ip.block = region     | return }
  if ($regex(%line,/^\s*"connection"\s*:\s*\{/)) { %ip.block = connection | return }
  if ($regex(%line,/^\s*"time_zone"\s*:\s*\{/))  { %ip.block = timezone   | return }
  if ($regex(%line,/^\s*\}/))                    { %ip.block = $null      | return }

  ; --- alan çıkarımı (bağlama göre) ---
  if ($regex(%line,/"ip"\s*:\s*"([^"]+)"/)) {
    echo @IP ** IP: $regml(1)
    return
  }
  if (%ip.block == country) && ($regex(%line,/"name"\s*:\s*"([^"]+)"/)) {
    echo @IP ** Ülke: $regml(1)
    return
  }
  if (%ip.block == region) && ($regex(%line,/"name"\s*:\s*"([^"]+)"/)) {
    echo @IP ** Bölge (il): $regml(1)
    return
  }
  if ($regex(%line,/"city"\s*:\s*"([^"]+)"/)) {
    echo @IP ** Şehir: $regml(1)
    return
  }
  if ($regex(%line,/"postal"\s*:\s*"([^"]+)"/)) {
    echo @IP ** Posta Kodu: $regml(1)
    return
  }
  if (%ip.block == connection) && ($regex(%line,/"organization"\s*:\s*"([^"]+)"/)) {
    echo @IP ** Operatör/ISP: $regml(1)
    return
  }
  if (%ip.block == timezone) && ($regex(%line,/"name"\s*:\s*"([^"]+)"/)) {
    echo @IP ** Saat Dilimi: $regml(1)
    echo @IP ----------------------------------------
    return
  }
}

on *:sockclose:ip:{
  if ($sockerr) { echo -a ** ip: bağlantı hata ile kapandı - $sock(ip).wserr }
  unset %ip.first %ip.inbody %ip.block
}
________________

"Sevilmenin kıymeti bilinmiyorsa, Uzaklaşmak En güzeli ki üzülen sen olmayasın"