Lompat ke konten
dokumentasi.id
Commit a5cb8ad
v4
Star20 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

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-176

Opsi 2 pada daftar menu memetakan label 'Show Your IP' ke fungsi showIP tanpa argumen. GhostTR.py:186-191

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-36

Rantai pemanggilan dimulai di main: angka yang dibaca lewat int(input(...)) diteruskan ke execute_option, yang lalu memanggil call_option. GhostTR.py:296-302 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-227 Setelah fungsi selesai, execute_option menahan layar dengan Press enter to continue dan memanggil main() kembali untuk putaran menu berikutnya. GhostTR.py:230-242

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.
Fig. 1: Siklus satu request showIPOpsi 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-172 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-176

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.
Fig. 2: Dari response mentah ke tiga baris keluaranSatu respons teks dipindahkan ke Show_IP dan dipakai ulang oleh tiga perintah print tanpa transformasi data.

Fakta singkat

AspekNilaiRujukan
Nama fungsishowIP, dibungkus @is_optionGhostTR.py:169-176
Registrasi menunum 2, text 'Show Your IP', func showIPGhostTR.py:186-191
Endpointhttps://api.ipify.org/ lewat requests.getGhostTR.py:171-172
Parameter requesttidak adaGhostTR.py:171-172
Nilai response dipakairespone.text sajaGhostTR.py:171-172
Jumlah baris keluaran3 printGhostTR.py:174-176
Validasi nomor opsiis_in_options, gagal dengan ValueError('Option not found')GhostTR.py:219-227
Kembali ke menuPress enter to continue, lalu main()GhostTR.py:230-242
Penanganan error di fungsitidak ada try/exceptGhostTR.py:169-176

Jebakan

⚠️ showIP tidak menyetel timeout dan tidak membungkus request dengan try/except. Kegagalan jaringan karena itu dilempar sebagai exception dari requests, sedangkan execute_option hanya menangkap ValueError dan KeyboardInterrupt. Akibatnya host tanpa koneksi keluar tidak kembali ke menu lewat jalur yang sama. GhostTR.py:171-172 GhostTR.py:230-242

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.