{"id":44860313,"url":"https://github.com/alsyundawy/php-looking-glass","last_synced_at":"2026-03-05T02:04:53.852Z","repository":{"id":338769535,"uuid":"1159084766","full_name":"alsyundawy/php-looking-glass","owner":"alsyundawy","description":"A professional, lightweight, single-file PHP Looking Glass tool designed for network diagnostics. Fully compatible with IPv4 and IPv6, featuring a modern, responsive UI (Dark/Light mode) and utilizing standard system utilities.","archived":false,"fork":false,"pushed_at":"2026-02-17T22:57:38.000Z","size":1934,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-22T17:44:32.199Z","etag":null,"topics":["alsyundawy","apache","dns","indonesia","internet","internet-provider","internet-service-provider","iperf3","isp","jakarta","looking-glass","mtr","my-traceroute","nginx","php","php-looking-glass","ping","tcp","traceroute","udp"],"latest_commit_sha":null,"homepage":"https://alsyundawy.github.io/php-looking-glass/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alsyundawy.png","metadata":{"files":{"readme":"README-ID.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T09:48:25.000Z","updated_at":"2026-02-21T01:01:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alsyundawy/php-looking-glass","commit_stats":null,"previous_names":["alsyundawy/php-looking-glass"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/alsyundawy/php-looking-glass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsyundawy%2Fphp-looking-glass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsyundawy%2Fphp-looking-glass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsyundawy%2Fphp-looking-glass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsyundawy%2Fphp-looking-glass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alsyundawy","download_url":"https://codeload.github.com/alsyundawy/php-looking-glass/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alsyundawy%2Fphp-looking-glass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30106203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T01:39:18.192Z","status":"online","status_checked_at":"2026-03-05T02:00:06.710Z","response_time":93,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alsyundawy","apache","dns","indonesia","internet","internet-provider","internet-service-provider","iperf3","isp","jakarta","looking-glass","mtr","my-traceroute","nginx","php","php-looking-glass","ping","tcp","traceroute","udp"],"created_at":"2026-02-17T09:02:48.392Z","updated_at":"2026-03-05T02:04:53.844Z","avatar_url":"https://github.com/alsyundawy.png","language":"PHP","funding_links":["https://www.paypal.me/alsyundawy","https://github.com/sponsors/alsyundawy"],"categories":[],"sub_categories":[],"readme":"# Alsyundawy PHP Looking Glass\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg) ![PHP](https://img.shields.io/badge/php-%3E%3D8.1-777bb4.svg)\n[![Latest Version](https://img.shields.io/github/v/release/alsyundawy/php-looking-glass)](https://github.com/alsyundawy/php-looking-glass/releases)\n[![Maintenance Status](https://img.shields.io/maintenance/yes/9999)](https://github.com/alsyundawy/php-looking-glass/)\n[![License](https://img.shields.io/github/license/alsyundawy/php-looking-glass)](https://github.com/alsyundawy/php-looking-glass/blob/master/LICENSE)\n[![GitHub Issues](https://img.shields.io/github/issues/alsyundawy/php-looking-glass)](https://github.com/alsyundawy/php-looking-glass/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/alsyundawy/php-looking-glass)](https://github.com/alsyundawy/php-looking-glass/pulls)\n[![Donate with PayPal](https://img.shields.io/badge/PayPal-donate-orange)](https://www.paypal.me/alsyundawy)\n[![Sponsor with GitHub](https://img.shields.io/badge/GitHub-sponsor-orange)](https://github.com/sponsors/alsyundawy)\n[![GitHub Stars](https://img.shields.io/github/stars/alsyundawy/php-looking-glass?style=social)](https://github.com/alsyundawy/php-looking-glass/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/alsyundawy/php-looking-glass?style=social)](https://github.com/alsyundawy/php-looking-glass/network/members)\n[![GitHub Contributors](https://img.shields.io/github/contributors/alsyundawy/php-looking-glass?style=social)](https://github.com/alsyundawy/php-looking-glass/graphs/contributors)\n\n## Statistik Bintang\n\n[![Stargazers over time](https://starchart.cc/alsyundawy/php-looking-glass.svg?variant=dark)](https://starchart.cc/alsyundawy/php-looking-glass)\n\n**Sebuah alat Looking Glass PHP yang profesional, ringan, dan terdiri dari satu file, dirancang untuk diagnostik jaringan. Sepenuhnya kompatibel dengan IPv4 dan IPv6, dilengkapi antarmuka modern yang responsif (Mode Gelap/Terang) serta memanfaatkan utilitas sistem standar.**\n\n![looking-glass](/php-looking-glass.png)\n\n## Fitur\n\n- **Diagnostik Jaringan**: Ping, Traceroute, MTR (My Traceroute), dan Host (Pencarian DNS).\n- **Pengujian Performa**:\n  - **Iperf3**: Dukungan mode TCP, UDP, dan Reverse.\n  - **Uji Unduhan**: Unduhan file biner yang dapat dikustomisasi.\n- **Antarmuka Modern**:\n  - Desain responsif penuh (Mobile hingga 4K).\n  - Tombol mode Gelap/Terang.\n  - Deteksi IP klien secara real-time.\n- **Keamanan**: Sanitasi input ketat untuk mencegah injeksi perintah.\n- **Mudah Dipasang**: Satu file PHP, tanpa memerlukan database.\n\n## Persyaratan\n\n- **PHP**: Versi 8.1 atau lebih tinggi.\n- **Modul PHP**: `php-cli`, `php-common`, `php-fpm` (jika menggunakan Nginx), `php-json`, `php-mbstring`, `php-xml`.\n- **Web Server**: Nginx atau Apache.\n- **Utilitas Sistem**: Pengguna web server harus dapat menjalankan perintah berikut:\n  - `ping`\n  - `traceroute`\n  - `mtr`\n  - `iperf3`\n  - `host` (biasanya bagian dari paket `bind-utils` atau `dnsutils`)\n\n---\n\n## Panduan Instalasi\n\n### 1. Instal Dependensi Sistem melalui Terminal\n\n**Debian/Ubuntu:**\n\n```bash\nsudo apt-get update\nsudo apt-get install php-cli php-fpm php-json php-common php-mbstring php-xml ping traceroute mtr-tiny iperf3 dnsutils -y\n```\n\n**CentOS/RHEL/AlmaLinux:**\n\n```bash\nsudo dnf install php-cli php-fpm php-json php-common php-mbstring php-xml iputils traceroute mtr iperf3 bind-utils -y\n```\n\n### 2. Pemasangan\n\nCukup unduh file `ALSYUNDAWY-LG-GITHUB-2026.php`, ubah nama menjadi `index.php`, lalu unggah ke direktori publik web server Anda (misalnya `/var/www/html/lg/`).\n\n### 3. Konfigurasi Web Server\n\nUntuk memastikan performa, keamanan, dan fungsionalitas yang optimal (terutama untuk unduhan besar dan pengujian yang berjalan lama seperti MTR), silakan gunakan konfigurasi berikut.\n\n#### Opsi A: Nginx + PHP-FPM\n\nBuat server block baru atau ubah yang sudah ada. Konfigurasi ini mencakup **kompresi Gzip**, **Timeout yang Diperpanjang**, **Header Keamanan**, dan **dukungan IPv6**.\n\n```nginx\nserver {\n    # Mendengarkan port 80 untuk IPv4 dan IPv6\n    listen 80;\n    listen [::]:80;\n    \n    server_name lg.yourdomain.com;\n    root /var/www/html/lg;\n    index index.php;\n\n    # =========================================================================\n    # PERFORMA \u0026 TIMEOUT\n    # =========================================================================\n    # Izinkan upload/download file besar (Penting untuk Speedtest/Uji Unduhan)\n    client_max_body_size 4096M;\n    \n    # Timeout diperpanjang untuk proses yang berjalan lama (MTR, Traceroute)\n    client_header_timeout 86400;\n    client_body_timeout 86400;\n    fastcgi_read_timeout 86400;\n    proxy_read_timeout 86400;\n\n    # =========================================================================\n    # HEADER \u0026 PENGATURAN KEAMANAN\n    # =========================================================================\n    server_tokens off;      # Sembunyikan versi Nginx\n    autoindex off;          # Nonaktifkan daftar direktori\n    http2 on;               # Aktifkan HTTP/2 untuk performa lebih baik\n\n    # Header keamanan\n    add_header Vary Accept-Encoding;\n    proxy_hide_header Vary;\n\n    # =========================================================================\n    # HALAMAN ERROR KUSTOM\n    # =========================================================================\n    error_page 400 /400.html;\n    error_page 401 /401.html;\n    error_page 402 /402.html;\n    error_page 403 /403.html;\n    error_page 404 /404.html;\n    error_page 500 /500.html;\n    error_page 502 /502.html;\n    error_page 503 /503.html;\n\n    # =========================================================================\n    # KOMPRESI GZIP\n    # =========================================================================\n    gzip on;\n    gzip_static on;\n    gzip_disable \"MSIE [1-6]\\.(?!.*SV1)\";\n    gzip_http_version 1.1;\n    gzip_min_length 1100;\n    gzip_vary on;\n    gzip_comp_level 7;\n    gzip_proxied any;\n    gzip_buffers 128 4k;\n    gzip_types\n        text/css\n        text/javascript\n        text/plain\n        text/xml\n        application/x-javascript\n        application/javascript\n        application/json\n        application/vnd.ms-fontobject\n        application/x-font-opentype\n        application/x-font-truetype\n        application/x-font-ttf\n        application/xml\n        application/font-woff\n        application/atom+xml\n        application/rss+xml\n        application/x-web-app-manifest+json\n        application/xhtml+xml\n        font/eot\n        font/opentype\n        font/otf\n        image/svg+xml\n        image/vnd.microsoft.icon\n        image/bmp\n        image/png\n        image/gif\n        image/jpeg\n        image/jpg\n        image/webp\n        image/x-icon\n        text/x-component;\n\n    # =========================================================================\n    # BLOK LOKASI\n    # =========================================================================\n    location / {\n        try_files $uri $uri/ =404;\n    }\n\n    location ~ \\.php$ {\n        include snippets/fastcgi-php.conf;\n        # Sesuaikan path socket dengan versi PHP Anda (misal: php8.1-fpm.sock)\n        fastcgi_pass unix:/run/php/php8.1-fpm.sock;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        include fastcgi_params;\n    }\n\n    # Tolak akses ke file tersembunyi (misal: .htaccess, .git)\n    location ~ /\\.ht {\n        deny all;\n    }\n}\n```\n\n#### Opsi B: Apache + PHP\n\nPastikan `mod_rewrite`, `mod_deflate`, `mod_headers`, dan `mod_http2` sudah diaktifkan.\n\n```apache\n\u003cVirtualHost *:80\u003e\n    ServerName lg.yourdomain.com\n    DocumentRoot /var/www/html/lg\n\n    # =========================================================================\n    # PROTOKOL \u0026 KEAMANAN\n    # =========================================================================\n    # Aktifkan HTTP/2 (Memerlukan mod_http2)\n    Protocols h2 http/1.1\n\n    # Sembunyikan versi dan tanda tangan Apache\n    ServerTokens Prod\n    ServerSignature Off\n\n    # =========================================================================\n    # PERFORMA \u0026 TIMEOUT\n    # =========================================================================\n    # Izinkan upload/download besar (4096M = 4294967296 bytes)\n    LimitRequestBody 4294967296\n\n    # Timeout diperpanjang untuk pengujian yang berjalan lama (MTR/Traceroute)\n    # Direktif TimeOut pada Apache (dalam detik)\n    TimeOut 86400\n\n    \u003cDirectory /var/www/html/lg\u003e\n        Options -Indexes +FollowSymLinks\n        AllowOverride All\n        Require all granted\n    \u003c/Directory\u003e\n\n    # =========================================================================\n    # HALAMAN ERROR KUSTOM\n    # =========================================================================\n    ErrorDocument 400 /400.html\n    ErrorDocument 401 /401.html\n    ErrorDocument 402 /402.html\n    ErrorDocument 403 /403.html\n    ErrorDocument 404 /404.html\n    ErrorDocument 500 /500.html\n    ErrorDocument 502 /502.html\n    ErrorDocument 503 /503.html\n\n    # =========================================================================\n    # HEADER\n    # =========================================================================\n    \u003cIfModule mod_headers.c\u003e\n        Header append Vary Accept-Encoding\n    \u003c/IfModule\u003e\n\n    # =========================================================================\n    # KOMPRESI GZIP (mod_deflate)\n    # =========================================================================\n    \u003cIfModule mod_deflate.c\u003e\n        AddOutputFilterByType DEFLATE text/css text/javascript text/plain text/xml\n        AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/json\n        AddOutputFilterByType DEFLATE application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype\n        AddOutputFilterByType DEFLATE application/x-font-ttf application/xml application/font-woff\n        AddOutputFilterByType DEFLATE application/atom+xml application/rss+xml application/x-web-app-manifest+json application/xhtml+xml\n        AddOutputFilterByType DEFLATE font/eot font/opentype font/otf\n        AddOutputFilterByType DEFLATE image/svg+xml image/vnd.microsoft.icon image/bmp image/x-icon\n    \u003c/IfModule\u003e\n\u003c/VirtualHost\u003e\n```\n\n### 4. Instalasi SSL (Certbot)\n\nAmankan Looking Glass Anda dengan HTTPS menggunakan Let's Encrypt.\n\n**Instal Certbot:**\n\n*Debian/Ubuntu:*\n\n```bash\nsudo apt-get install certbot python3-certbot-nginx python3-certbot-apache -y\n```\n\n*CentOS/RHEL:*\n\n```bash\nsudo dnf install certbot python3-certbot-nginx python3-certbot-apache -y\n```\n\n**Jalankan Certbot:**\n\n*Untuk Nginx:*\n\n```bash\nsudo certbot --nginx -d lg.yourdomain.com\n```\n\n*Untuk Apache:*\n\n```bash\nsudo certbot --apache -d lg.yourdomain.com\n```\n\nIkuti instruksi di layar untuk mengonfigurasi SSL secara otomatis.\n\n### 5. Konfigurasi PHP (`php.ini`)\n\nPastikan fungsi-fungsi berikut **TIDAK** dinonaktifkan dalam file `php.ini` Anda (direktif `disable_functions`):\n\n- `proc_open`\n- `proc_get_status`\n- `proc_close`\n- `stream_get_contents`\n\nContoh:\n\n```ini\ndisable_functions = passthru,shell_exec,system,popen,parse_ini_file,show_source\n; hapus proc_open, proc_close, dll. dari daftar\n```\n\n### 6. Optimasi Performa PHP\n\nUntuk memastikan kelancaran pengujian jaringan (terutama ukuran unduhan yang ditentukan dan traceroute yang panjang), tambahkan atau ubah baris berikut di konfigurasi `php.ini` atau pool FPM Anda:\n\n```ini\n; Tingkatkan waktu eksekusi untuk pengujian yang lama (MTR/Traceroute)\nmax_execution_time = 300\nmax_input_time = 300\n\n; Pastikan memori cukup untuk penanganan data besar\nmemory_limit = 256M\n\n; Nonaktifkan output buffering untuk hasil real-time (opsional tapi disarankan)\noutput_buffering = Off\nzlib.output_compression = Off\n```\n\n---\n\n## Konfigurasi Layanan (Iperf3)\n\nUntuk menjaga server Iperf3 tetap berjalan di latar belakang sebagai layanan, buat file unit systemd.\n\n1. **Buat file layanan:**\n\n   ```bash\n    sudo nano /etc/systemd/system/iperf3.service\n   ```\n\n2. **Tambahkan konten berikut:**\n\n   ```ini\n    [Unit]\n    Description=Iperf3 Server Service\n    After=network.target\n\n    [Service]\n    Type=simple\n    User=nobody\n    ExecStart=/usr/bin/iperf3 -s -p 5201\n    Restart=always\n    RestartSec=3\n\n    [Install]\n    WantedBy=multi-user.target\n   ```\n\n3. **Mulai dan aktifkan layanan:**\n\n   ```bash\n    sudo systemctl daemon-reload\n    sudo systemctl start iperf3\n    sudo systemctl enable iperf3\n   ```\n\n---\n\n## Konfigurasi Firewall\n\nAnda perlu mengizinkan lalu lintas pada port **80** (HTTP), **443** (HTTPS), dan **5201** (Iperf3).\n\n### Opsi A: UFW (Ubuntu/Debian)\n\n```bash\nsudo ufw allow 80/tcp\nsudo ufw allow 443/tcp\nsudo ufw allow 5201/tcp\nsudo ufw reload\n```\n\n### Opsi B: Firewalld (CentOS/RHEL/AlmaLinux)\n\n```bash\nsudo firewall-cmd --permanent --add-service=http\nsudo firewall-cmd --permanent --add-service=https\nsudo firewall-cmd --permanent --add-port=5201/tcp\nsudo firewall-cmd --reload\n```\n\n### Opsi C: Iptables\n\n```bash\nsudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 5201 -j ACCEPT\nsudo service iptables save\n```\n\n---\n\n## Konfigurasi\n\nBuka `index.php` di editor teks dan sesuaikan bagian-bagian berikut agar sesuai dengan detail server dan organisasi Anda.\n\n### 1. Konfigurasi Utama (Wajib)\n\nTemukan bagian `// Hardcoded Looking Glass Tools Configuration` di dekat bagian atas file (~baris 184) dan perbarui nilainya:\n\n```php\n// Hardcoded Looking Glass Tools Configuration\n$ipv4 = 'lg.yourdomain.com';              // Alamat IPv4 server atau hostname Anda\n$ipv6 = 'lg.yourdomain.com';              // Alamat IPv6 server atau hostname Anda (kosongkan '' jika tidak tersedia)\n$siteName = 'LOOKING GLASS NETWORK TOOLS'; // Nama situs/perusahaan Anda\n$siteUrl = 'https://lg.yourdomain.com';    // URL Looking Glass Anda\n$siteUrlv4 = 'https://lg.yourdomain.com';  // URL khusus IPv4 untuk uji unduhan\n$siteUrlv6 = 'https://lg.yourdomain.com';  // URL khusus IPv6 untuk uji unduhan\n$serverLocation = 'JAKARTA - INDONESIA';   // Lokasi server Anda\n\n// Port Iperf\n$iperfport = '5201';                       // Port Iperf3 (default: 5201)\n\n// File uji\n$testFiles = array('250MB', '500MB', '1GB'); // Ukuran file uji unduhan (file harus ada di direktori yang sama)\n```\n\n### 2. Informasi Kontak Header\n\nTemukan bagian `\u003cheader class=\"header\"\u003e` (~baris 641) dan perbarui detail kontak:\n\n| Item | Yang perlu diubah |\n| ------ | ------------------- |\n| Nomor telepon | `+62-812-6969-6969` (muncul di header desktop dan mobile) |\n| Alamat email | `info@alsyundawy.com` (tautan mailto) |\n| Nomor WhatsApp | `6281269696969` di tautan `wa.me/` |\n| URL Website | `https://www.alsyundawy.com` |\n\n### 3. Tautan Navigasi\n\nTemukan bagian `\u003cnav class=\"main-nav\"\u003e` (~baris 680) dan perbarui tautan:\n\n| Item | Yang perlu diubah |\n| ------ | ------------------- |\n| Tautan WhatsApp | `https://wa.me/62-812-6969-6969` |\n| Tautan Telegram | `https://t.me/alsyundawy` |\n| Tautan GitHub | `https://github.com/alsyundawy` |\n| Tautan Website | `https://www.alsyundawy.com` |\n| Email Kontak | `mailto:info@alsyundawy.com` |\n\n### 4. Data Terstruktur JSON-LD (SEO)\n\nTemukan bagian `JSON-LD via json_encode()` (~baris 440) dan perbarui data organisasi:\n\n| Item | Yang perlu diubah |\n| ------ | ------------------- |\n| Nama organisasi | `ALSYUNDAWY IT SOLUTION` (muncul di `$appSchema`, `$websiteSchema`, `$orgSchema`) |\n| URL organisasi | `https://alsyundawy.com` |\n| Nomor telepon | `+62-812-6969-6969` |\n| Email NOC | `noc@alsyundawy.com` |\n| Email Abuse | `abuse@alsyundawy.com` |\n| Nomor AS | `AS696969` dan `696969` (muncul di URL PeeringDB, BGP.tools dan identifier) |\n| Alamat kantor | Alamat pos lengkap di `$orgSchema` |\n| URL Logo | `https://alsyundawy.com/logo.png` |\n\n### 5. Footer\n\nTemukan bagian `\u003cfooter class=\"site-footer\"\u003e` (~baris 989) dan perbarui:\n\n| Item | Yang perlu diubah |\n| ------ | ------------------- |\n| Nama perusahaan | `ALSYUNDAWY IT SOLUTION` |\n| Nomor AS | `AS696969` (di teks hak cipta dan tautan info) |\n| Kredit desainer | `HARRY DERTIN SUTISNA ALSYUNDAWY` |\n| Tautan info | URL RIPESTAT, HE.NET, BGP.Tools, ROBTEX, PEERINGDB, IPinfo, ASRank (ganti `696969` dengan ASN Anda) |\n\n### 6. Tautan Media Sosial\n\nTemukan bagian `\u003cdiv class=\"social-links\"\u003e` di footer (~baris 1013) dan perbarui semua URL media sosial:\n\n| Platform | URL yang perlu diubah |\n| ---------- | ----------------------- |\n| GitHub | `https://github.com/alsyundawy` |\n| LinkedIn | `https://linkedin.com/alsyundawy` |\n| Twitter/X | `https://twitter.com/alsyundawy` |\n| Facebook | `https://facebook.com/alsyundawy` |\n| Instagram | `https://instagram.com/harry.ds.alsyundawy` |\n| YouTube | `https://youtube.com/alsyundawy` |\n| TikTok | `https://tiktok.com/alsyundawy` |\n| Threads | `https://threads.net/alsyundawy` |\n| Discord | `https://discord.gg/alsyundawy` |\n| Telegram | `https://telegram.org/alsyundawy` |\n| WhatsApp | `https://wa.me/+62-812-6969-6969` |\n\n## Kustomisasi Gambar dan Logo\n\nAnda dapat menyesuaikan logo dan gambar latar belakang dengan mengganti file berikut di direktori yang sama dengan skrip:\n\n1. **Logo**: `lg-logo.webp` (Tinggi yang disarankan: ~36px)\n2. **Latar Belakang**: `hero-lg.webp` (Latar belakang untuk header, disarankan format webp terkompresi)\n\nPastikan file-file ini dapat diakses oleh pengguna web server.\n\n### Membuat File Dummy untuk Uji Unduhan\n\nAnda dapat membuat file dummy untuk uji kecepatan unduhan menggunakan perintah `dd` di terminal. Navigasi ke direktori web server Anda (misal: `/var/www/html/lg/`) dan jalankan:\n\n**File 250MB:**\n\n```bash\ndd if=/dev/zero of=250MB.bin bs=1M count=250 status=progress\n```\n\n**File 500MB:**\n\n```bash\ndd if=/dev/zero of=500MB.bin bs=1M count=500 status=progress\n```\n\n**File 1GB:**\n\n```bash\ndd if=/dev/zero of=1GB.bin bs=1M count=1024 status=progress\n```\n\n\u003e **Catatan:** Pastikan nama file sesuai dengan nilai pada array konfigurasi `$testFiles` di skrip PHP.\n\n## Pemecahan Masalah\n\n### 1. Error 404 Not Found\n\n- **Nginx**: Pastikan direktif `try_files` ada di blok lokasi Anda.\n- **Apache**: Pastikan `mod_rewrite` diaktifkan dan dukungan `.htaccess` aktif (`AllowOverride All`).\n\n### 2. Error 500 Internal Server Error\n\n- Periksa log error web server (`/var/log/nginx/error.log` atau `/var/log/apache2/error.log`).\n- Pastikan semua ekstensi PHP yang diperlukan sudah terinstal.\n- Periksa izin akses: Pengguna web server (`www-data` atau `apache`) harus memiliki akses baca ke skrip.\n\n### 3. \"Command not found\" atau Output Kosong\n\n- Verifikasi bahwa `ping`, `traceroute`, `mtr`, dan lainnya sudah terinstal (`which ping`).\n- Periksa `php.ini` untuk memastikan `proc_open` dan `proc_get_status` TIDAK ada di `disable_functions`.\n\n### 4. Iperf3 Connection Refused\n\n- Pastikan layanan Iperf3 berjalan: `sudo systemctl status iperf3`.\n- Periksa pengaturan firewall untuk memastikan port 5201 terbuka.\n- Verifikasi IP server pada konfigurasi PHP sesuai dengan IP publik Anda yang sebenarnya.\n\n---\n\n## Catatan Perubahan\n\n### v1.0.3 - 2026-03-05\n\n- Memperbaiki variabel `$script_name` yang tidak terdefinisi; sekarang menggunakan `$_SERVER['SCRIPT_NAME']`.\n- Memperbaiki format `date()` yang salah dari `'YY-mm-dd'` menjadi `'Y-m-d'` (ISO 8601).\n- Memperbaiki skema `https://` yang hilang pada tag preconnect `cdnjs.cloudflare.com`.\n- Memperbaiki kesalahan sintaks JavaScript: selektor jQuery `$((html,body))` yang tidak valid.\n- Meningkatkan buffer `fread()` dari 8192 menjadi 16384 untuk output streaming yang lebih cepat.\n- Menghapus entri changelog duplikat dan baris kosong di komentar dokumen.\n- Tinjauan dan optimasi kode secara menyeluruh.\n\n### v1.0.2 - 2026-02-18\n\n- Memperbarui latar belakang hero di mode terang agar sesuai dengan gaya mode gelap.\n- Memperbarui `lg-logo.webp` dan `hero-lg.webp`.\n- Optimasi minifikasi CSS dan JS.\n\n### v1.0.1 - 2026-02-17\n\n- Menerapkan Pemeriksaan Validitas Sesi (Token CSRF) pada permintaan POST.\n- Menambahkan penanganan error dwibahasa (ID/EN) untuk sesi yang kedaluwarsa.\n- Peningkatan dan optimasi gambar webp.\n- Peningkatan keamanan dan optimasi.\n\n### v1.0.0 - 2026-02-16\n\n- Rilis Awal.\n- Fungsionalitas Looking Glass lengkap dengan tata letak 3-kolom yang dioptimalkan.\n- Integrasi fitur Iperf3 dan Uji Unduhan.\n\n---\n\n## Donasi\n\nAnda bebas untuk mengubah dan mendistribusikan skrip ini untuk keperluan Anda.\n\nJika Anda merasa terbantu dan ingin mendukung proyek ini, pertimbangkan untuk berdonasi melalui \u003chttps://www.paypal.me/alsyundawy\u003e. Terima kasih atas dukungannya!\n\nJika Anda merasa terbantu dan ingin mendukung proyek ini, pertimbangkan untuk berdonasi melalui QRIS. Terima kasih atas dukungannya!\n\n![Donasi QRIS](https://github.com/user-attachments/assets/a0126f28-6dde-43da-ba14-d7c9a27de0df)\n\n## Lisensi\n\n## Lisensi MIT - Hak Cipta (c) 2026 Alsyundawy IT Solution\n\n![Alt](https://repobeats.axiom.co/api/embed/78ddb5f1a231029b742cc467a74bcce400941d0f.svg \"Repobeats analytics image\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falsyundawy%2Fphp-looking-glass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falsyundawy%2Fphp-looking-glass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falsyundawy%2Fphp-looking-glass/lists"}