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-1761
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-362
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.Nama variabel di sumber ditulis respone dan Show_IP, bukan response. Keduanya adalah nama identifier asli yang dipakai fungsi ini. GhostTR.py:169-1761
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-1913
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-244
| Urutan | Isi baris | Nilai tetap di kode |
|---|---|---|
| 1 | Judul | ========== SHOW INFORMATION YOUR IP ========== |
| 2 | Label dan nilai | [ + ] Your IP Adrress : diikuti {Show_IP} |
| 3 | Garis 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-1761
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:105
⚠️
showIPtidak membungkusrequests.getdengantry, dan tidak memeriksastatus_codeseperti pola diTrackLu. Pemanggilnya,execute_option, hanya menangkapValueErrordanKeyboardInterrupt, sehingga kegagalan jaringan sepertirequests.exceptions.ConnectionErrortidak tertangkap di sana dan menghentikan program dengan traceback. Karena tidak adatimeout,requestjuga bisa menggantung tanpa batas bilaapi.ipify.orgtidak menjawab. GhostTR.py:230-2426
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.