4.2
Show Your IP
showIP adalah fitur terkecil di antara empat opsi pelacakan: isinya hanya enam baris, tanpa input dari pengguna dan tanpa penguraian data. Fungsi ini mengirim satu request GET ke https://api.ipify.org/, membaca teks mentah dari response, lalu mencetaknya ke terminal. GhostTR.py:169-1761
Opsi 2 pada daftar menu memetakan label 'Show Your IP' ke fungsi showIP tanpa argumen. GhostTR.py:186-1912
Siklus satu request
showIP tidak pernah dipanggil langsung oleh menu. Dekorator is_option membungkusnya dengan wrapper yang menjalankan run_banner() lebih dulu, baru memanggil fungsi aslinya. Karena itu memilih opsi 2 selalu membersihkan layar dan menampilkan banner sebelum ada keluaran IP. GhostTR.py:30-363
Rantai pemanggilan dimulai di main: angka yang dibaca lewat int(input(...)) diteruskan ke execute_option, yang lalu memanggil call_option. GhostTR.py:296-3024 Di dalam call_option, nomor opsi divalidasi lewat is_in_options; nomor yang tidak terdaftar memicu ValueError('Option not found'), sedangkan nomor yang cocok menjalankan option['func'](). GhostTR.py:219-2275 Setelah fungsi selesai, execute_option menahan layar dengan Press enter to continue dan memanggil main() kembali untuk putaran menu berikutnya. GhostTR.py:230-2426
sequenceDiagram
autonumber
actor U as User
participant M as main
participant E as execute_option
participant C as call_option
participant O as options
participant S as showIP
participant B as run_banner
participant A as api.ipify.org
U->>M: pilih opsi 2
M->>E: execute_option opt
E->>C: call_option opt
C->>C: is_in_options opt
C->>O: cari option dengan num 2
O-->>C: func showIP
C->>S: option func dipanggil
S->>B: wrapper is_option menjalankan run_banner
B-->>U: banner GHOST - TRACKER
S->>A: requests.get https://api.ipify.org/
A-->>S: respone.text
S-->>U: print header dan alamat IP
S-->>E: return
E->>M: main dipanggil ulang
%% fig: Siklus satu request showIP
%% desc: Opsi 2 diteruskan dari main ke showIP, yang mengambil teks IP dari api.ipify.org lalu mencetaknya sebelum menu kembali tampil.Bentuk data yang dicetak
requests.get dipanggil tanpa parameter, tanpa header, dan tanpa timeout. GhostTR.py:171-1727 Hasilnya disimpan pada variabel respone (nama ini memang ditulis demikian di kode), lalu teksnya dipindahkan ke Show_IP. ipify membalas dengan teks polos berisi satu alamat IP, jadi jalur ini tidak memakai json.loads — berbeda dari IP_Track yang mengurai JSON dari ipwho.is seperti dijelaskan pada IP Tracker.
Tiga baris print menutup fungsi: header SHOW INFORMATION YOUR IP, baris [ + ] Your IP Adrress (salah eja Adrress berasal dari kode), dan garis penutup ====. GhostTR.py:174-1768
graph LR
REQ["requests.get https://api.ipify.org/"] --> TXT["respone.text"]
TXT --> IP["Show_IP"]
IP --> H["header SHOW INFORMATION YOUR IP"]
IP --> L["[ + ] Your IP Adrress"]
IP --> F["garis penutup"]
style REQ fill:#f59e0b,color:#000
style TXT fill:#8b5cf6,color:#fff
style IP fill:#8b5cf6,color:#fff
style H fill:#2d7d46,color:#fff
style L fill:#2d7d46,color:#fff
style F fill:#2d7d46,color:#fff
%% fig: Dari response mentah ke tiga baris keluaran
%% desc: Satu respons teks dipindahkan ke Show_IP dan dipakai ulang oleh tiga perintah print tanpa transformasi data.Fakta singkat
| Aspek | Nilai | Rujukan |
|---|---|---|
| Nama fungsi | showIP, dibungkus @is_option | GhostTR.py:169-1761 |
| Registrasi menu | num 2, text 'Show Your IP', func showIP | GhostTR.py:186-1912 |
| Endpoint | https://api.ipify.org/ lewat requests.get | GhostTR.py:171-1727 |
| Parameter request | tidak ada | GhostTR.py:171-1727 |
| Nilai response dipakai | respone.text saja | GhostTR.py:171-1727 |
| Jumlah baris keluaran | 3 print | GhostTR.py:174-1768 |
| Validasi nomor opsi | is_in_options, gagal dengan ValueError('Option not found') | GhostTR.py:219-2275 |
| Kembali ke menu | Press enter to continue, lalu main() | GhostTR.py:230-2426 |
| Penanganan error di fungsi | tidak ada try/except | GhostTR.py:169-1761 |
Jebakan
⚠️
showIPtidak menyeteltimeoutdan tidak membungkus request dengantry/except. Kegagalan jaringan karena itu dilempar sebagai exception darirequests, sedangkanexecute_optionhanya menangkapValueErrordanKeyboardInterrupt. Akibatnya host tanpa koneksi keluar tidak kembali ke menu lewat jalur yang sama. GhostTR.py:171-1727 GhostTR.py:230-2426
Nama banner dan helper warna yang dipakai di sini dijelaskan pada Banner, Warna ANSI, dan Helper, sedangkan letak opsi 2 di dalam loop menu dibahas pada Loop Menu dan Dispatch Opsi.