HTTP vs HTTPS Status Checker

HTTP vs HTTPS Status Checker

Analyze URLs to verify HTTPS implementation and redirect status.

URL Status Breakdown

URL HTTP Status HTTPS Status Redirects to HTTPS? Overall Status

URL Security Status Distribution

${secureCount}

Insecure

${insecureCount}

Errors / Issues

${errorCount}

`; // Main Table const dashboardTableBody = document.getElementById('dashboard-table-body'); dashboardTableBody.innerHTML = urls.map(url => { const res = url.result; let statusClass, redirectClass; if (res.status === 'Secure') statusClass = 'bg-green-100 text-green-800'; else if (res.status === 'Insecure') statusClass = 'bg-red-100 text-red-800'; else if (res.status === 'Mixed Content Risk') statusClass = 'bg-yellow-100 text-yellow-800'; else statusClass = 'bg-gray-100 text-gray-800'; if (res.redirects) redirectClass = 'text-green-600 font-semibold'; else redirectClass = 'text-red-600 font-semibold'; return ` ${url.domain} ${res.http} ${res.https} ${res.redirects ? 'Yes' : 'No'} ${res.status} `; }).join(''); // Chart if (statusChart) statusChart.destroy(); statusChart = new Chart(document.getElementById('status-chart').getContext('2d'), { type: 'pie', data: { labels: ['Secure', 'Insecure', 'Errors / Issues'], datasets: [{ data: [secureCount, insecureCount, errorCount], backgroundColor: ['#34d399', '#f87171', '#fbbf24'] }] }, options: { responsive: true, plugins: { legend: { position: 'top' } } } }); }; // --- EVENT HANDLERS --- const handleAddUrl = () => { const input = document.getElementById('new-url-input'); const domain = input.value.trim().toLowerCase().replace(/^(https?:\/\/)?(www\.)?/, '').replace(/\/.*$/, ''); if (domain && !urls.some(u => u.domain === domain)) { const newId = urls.length > 0 ? Math.max(...urls.map(u => u.id)) + 1 : 1; urls.push({ id: newId, domain, result: null }); renderConfigTable(); input.value = ''; } else if (!domain) { alert('Please enter a domain.'); } else { alert('This domain is already in the list.'); } }; const handleDeleteUrl = (e) => { const btn = e.target.closest('.delete-btn'); if (btn) { const id = parseInt(btn.closest('tr').dataset.id); urls = urls.filter(u => u.id !== id); renderConfigTable(); } }; const generatePDF = () => { const pdfContent = document.getElementById('pdf-content'); html2canvas(pdfContent, { scale: 2, useCORS: true }).then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'l', unit: 'mm', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const imgWidth = pdfWidth - 20; const imgHeight = (canvas.height * imgWidth) / canvas.width; pdf.setFontSize(22).setFont('helvetica', 'bold').text('HTTP vs HTTPS Status Report', pdfWidth / 2, 15, { align: 'center' }); pdf.addImage(imgData, 'PNG', 10, 25, imgWidth, imgHeight); pdf.save('http-https-status-report.pdf'); }); }; // --- ATTACH LISTENERS --- prevBtn.addEventListener('click', () => showTab('dashboard')); nextBtn.addEventListener('click', () => showTab('config')); tabButtons.dashboard.addEventListener('click', () => showTab('dashboard')); tabButtons.config.addEventListener('click', () => showTab('config')); document.getElementById('add-url-btn').addEventListener('click', handleAddUrl); document.getElementById('config-table-body').addEventListener('click', handleDeleteUrl); document.getElementById('download-pdf-btn').addEventListener('click', generatePDF); // --- INITIAL SETUP --- showTab('dashboard'); });
Scroll to Top