Lompat ke konten
dokumentasi.id
Commit a5cb8ad
v2
Star20 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

3

Struktur Berkas dan Arsitektur

GhostTrack dikirim sebagai satu modul tunggal. Berkas GhostTR.py memuat seluruh program, dari shebang dan komentar lisensi di baris pertama sampai guard if __name__ == '__main__' di baris terakhir (GhostTR.py:1-5, GhostTR.py:309-315). Tidak ada paket dan tidak ada pemecahan modul per fitur: lapisan menu, dispatcher, dan semua handler hidup di berkas yang sama. Berkas pendukung di akar repository hanya menyuplai dependensi, instruksi pakai, dan gambar.

BerkasPeranBukti
GhostTR.pyseluruh logika: import, palet warna ANSI, dekorator is_option, empat handler, tabel options, dispatcher, banner, entry pointGhostTR.py:7-15
requirements.txtdua dependensi runtime, requests dan phonenumbers, masing-masing satu barisrequirements.txt:1-2
README.mdurutan git clone sampai python3 GhostTR.py beserta tangkapan layar tiap menuREADME.md:21-27
asset/bn.pngbanner di kepala READMEREADME.md:1-4
asset/ip.pngtangkapan layar menu IP TrackerREADME.md:29-31
asset/phone.pngtangkapan layar menu Phone TrackerREADME.md:39-41
asset/User.pngtangkapan layar menu Username TrackerREADME.md:45-47

Tiga lapisan di dalam satu berkas

Struktur internal GhostTR.py terdiri dari tiga lapisan yang saling memanggil langsung, ditambah satu tabel data yang menjadi satu-satunya titik registrasi fitur (GhostTR.py:179-207). Lapisan menu menggambar layar, lapisan dispatcher menerjemahkan nomor pilihan menjadi pemanggilan fungsi, dan lapisan handler melakukan pekerjaan pelacakan.

graph TD
  entry["__main__ guard"] --> main
  main --> option
  main --> execute_option
  option --> clear
  option --> option_text
  option_text --> options[("options")]
  execute_option --> call_option
  execute_option -->|setelah Press enter| main
  call_option --> is_in_options
  call_option --> options
  options --> IP_Track
  options --> showIP
  options --> phoneGW
  options --> TrackLu
  options -->|num 0| exit_opt["exit"]
  IP_Track -.->|@is_option| run_banner
  showIP -.->|@is_option| run_banner
  phoneGW -.->|@is_option| run_banner
  TrackLu -.->|@is_option| run_banner
  style entry fill:#2d7d46,color:#fff
  style main fill:#2d7d46,color:#fff
  style execute_option fill:#2d7d46,color:#fff
  style options fill:#f59e0b,color:#000
  style call_option fill:#f59e0b,color:#000
  style is_in_options fill:#f59e0b,color:#000
  style IP_Track fill:#8b5cf6,color:#fff
  style showIP fill:#8b5cf6,color:#fff
  style phoneGW fill:#8b5cf6,color:#fff
  style TrackLu fill:#8b5cf6,color:#fff
  style run_banner fill:#8b5cf6,color:#fff
  style exit_opt fill:#dc2626,color:#fff
%% fig: Lapisan menu, dispatcher, dan handler di GhostTR.py
%% desc: main memanggil option lalu execute_option; execute_option memakai call_option dan is_in_options untuk memilih entri options yang menunjuk ke salah satu handler, dan setiap handler digambar bannernya lewat is_option.
Fig. 1: Lapisan menu, dispatcher, dan handler di GhostTR.pymain memanggil option lalu execute_option; execute_option memakai call_option dan is_in_options untuk memilih entri options yang menunjuk ke salah satu handler, dan setiap handler digambar bannernya lewat is_option.
LapisanFungsiIsi
Entry pointpenjaga eksekusiif __name__ == '__main__' membungkus main() dan menangkap KeyboardInterrupt (GhostTR.py:309-315)
Menumenggambar layaroption menulis banner ASCII dan daftar pilihan, option_text menyusun barisnya, clear memilih cls atau clear sesuai os.name (GhostTR.py:259-272, GhostTR.py:245-249, GhostTR.py:210-216)
Bannerdekorasi per fiturrun_banner mencetak banner Ghost Tracker ke stderr sebelum handler berjalan (GhostTR.py:275-293)
Dispatchermemilih dan menjalankanmain, execute_option, call_option, is_in_options (GhostTR.py:296-306, GhostTR.py:230-242, GhostTR.py:219-227, GhostTR.py:252-256)
Dataregistrasi fiturdaftar options berisi kunci num, text, dan func (GhostTR.py:179-207)
Handlerpekerjaan pelacakanIP_Track, phoneGW, TrackLu, showIP (GhostTR.py:39-176)

Urutan pemanggilan tetap: main membersihkan layar, memanggil option, lalu membaca int(input(...)); nilai itu diteruskan ke execute_option (GhostTR.py:296-306). execute_option memanggil call_option, menahan layar dengan input('... Press enter to continue'), lalu kembali ke main (GhostTR.py:230-242). call_option lebih dulu memverifikasi nomor lewat is_in_options dan melempar ValueError('Option not found') bila nomor tidak terdaftar (GhostTR.py:219-227, GhostTR.py:252-256).

⚠️ Registrasi fitur tersebar di dua tempat. Satu handler harus didefinisikan sebagai fungsi dan didaftarkan ulang sebagai entri options; tidak ada mekanisme penemuan otomatis. Entri yang kehilangan kunci func hanya mencetak No function detected dan tidak melakukan apa pun (GhostTR.py:179-207, GhostTR.py:219-227).

Dekorator dan palet warna bersama

Semua handler memakai satu dekorator yang sama, is_option. wrapper di dalamnya memanggil run_banner() lebih dulu, baru mengeksekusi func(*args, **kwargs) (GhostTR.py:30-36). Perilakunya dirinci di Banner dan Dekorator is_option.

Delapan konstanta warna ANSI (Bl, Re, Gr, Ye, Blu, Mage, Cy, Wh) didefinisikan sekali di bagian atas berkas dan dipakai ulang oleh setiap print di menu maupun handler (GhostTR.py:17-24). Karena itu seluruh tampilan perkakas konsisten tanpa modul tema terpisah.

Ketergantungan ke pustaka luar

Berkas hanya mengimpor json, requests, time, os, phonenumbers, dan stderr (GhostTR.py:7-15). requests dipakai untuk memanggil API pada handler IP dan username, sedangkan phonenumbers beserta carrier, geocoder, dan timezone hanya dipakai handler nomor telepon (GhostTR.py:39-176). Dua pustaka itulah isi requirements.txt, sehingga pip3 install -r requirements.txt sebelum menjalankan skrip sudah cukup (requirements.txt:1-2). Rincian endpoint per handler ada di Peta Endpoint dan Konfigurasi.

Karena arsitekturnya satu berkas, membaca GhostTR.py dari atas ke bawah sudah cukup untuk memahami seluruh program: konstanta, dekorator, handler, tabel options, dispatcher, banner, lalu entry point. Alur menu secara langkah demi langkah dibahas di Alur Eksekusi Menu.