Lompat ke konten
dokumentasi.id
Commit a5cb8ad
v2
Star20 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

7

Show Your IP

showIP adalah opsi nomor 2 pada menu GhostTrack. Fungsi ini mengirim satu request HTTP ke https://api.ipify.org/, menyimpan isi respone.text apa adanya, lalu mencetak hasilnya ke terminal. Tidak ada parsing, tidak ada pemeriksaan status_code, dan tidak ada timeout pada panggilan itu. GhostTR.py:169-176

Fungsi ini juga tidak melakukan input apa pun, sehingga berbeda dari opsi lain yang menanyakan target lebih dulu. Begitu dipilih, request langsung dijalankan.

Alur satu request

Rantai pemanggilan dimulai dari options, diteruskan oleh call_option, lalu masuk ke showIP yang sudah dibungkus dekorator @is_option. Dekorator itu menjalankan run_banner() lebih dulu, baru memanggil badan fungsi. GhostTR.py:30-36

graph TD
  menu["options: num 2, Show Your IP"] --> wrapper["is_option.wrapper"]
  wrapper --> banner["run_banner"]
  banner --> fn["showIP"]
  fn --> api["requests.get https://api.ipify.org/"]
  api --> txt["Show_IP = respone.text"]
  txt --> head["print SHOW INFORMATION YOUR IP"]
  head --> val["print Your IP Adrress"]
  val --> foot["print garis penutup"]
  style api fill:#f59e0b,color:#000
  style txt fill:#8b5cf6,color:#fff
  style val fill:#2d7d46,color:#fff
%% fig: Alur satu request showIP
%% desc: Menu opsi 2 memicu wrapper is_option, satu request ke api.ipify.org, lalu teks mentah respons dicetak pada tiga baris keluaran.
Fig. 1: Alur satu request showIPMenu opsi 2 memicu wrapper is_option, satu request ke api.ipify.org, lalu teks mentah respons dicetak pada tiga baris keluaran.

Nama variabel di sumber ditulis respone dan Show_IP, bukan response. Keduanya adalah nama identifier asli yang dipakai fungsi ini. GhostTR.py:169-176

Pendaftaran di menu

Opsi ini terdaftar sebagai objek kamus dengan 'num': 2, 'text': 'Show Your IP', dan 'func': showIP. Pemanggilan aktualnya lewat call_option, yang menjalankan option['func']() ketika nomor cocok. Mekanisme dispatch dan loop menu dibahas di Alur Eksekusi Menu, sedangkan efek run_banner diulas di Banner dan Dekorator is_option. GhostTR.py:186-191

Keluaran yang dicetak

Hanya tiga baris print dijalankan setelah request selesai. Warnanya diambil dari konstanta Wh (\033[1;37m) dan Gr (\033[1;32m) pada blok warna di awal berkas. GhostTR.py:17-24

UrutanIsi barisNilai tetap di kode
1Judul========== SHOW INFORMATION YOUR IP ==========
2Label dan nilai[ + ] Your IP Adrress : diikuti {Show_IP}
3Garis penutup==============================================

Label pada baris kedua ditulis Your IP Adrress di dalam kode, dengan dua huruf d. Nilai IP disisipkan langsung dari Show_IP tanpa dirapikan lebih dulu. GhostTR.py:169-176

Beda dengan IP Tracker

Opsi 1 memanggil json.loads(req_api.text) pada http://ipwho.is/{ip} dan membaca belasan field dari ip_data, sedangkan showIP tidak menyentuh json sama sekali: seluruh badan respons dianggap satu string IP. Perbandingan lengkap endpoint dan field ada di IP Tracker dan Peta Endpoint dan Konfigurasi. Modul requests yang dipakai keduanya diimpor sekali di bagian atas berkas. GhostTR.py:10

⚠️ showIP tidak membungkus requests.get dengan try, dan tidak memeriksa status_code seperti pola di TrackLu. Pemanggilnya, execute_option, hanya menangkap ValueError dan KeyboardInterrupt, sehingga kegagalan jaringan seperti requests.exceptions.ConnectionError tidak tertangkap di sana dan menghentikan program dengan traceback. Karena tidak ada timeout, request juga bisa menggantung tanpa batas bila api.ipify.org tidak menjawab. GhostTR.py:230-242

Konsekuensi lain: bila ipify membalas halaman error, isi halaman itu tercetak sebagai "IP" pada baris kedua tanpa penanda apa pun. Penanganan kegagalan global di aplikasi ini dijelaskan lebih lanjut di Penanganan Error dan Interupsi.