(intervalMs = PWN_STATUS_POLL_INTERVAL)
| 5840 | } |
| 5841 | |
| 5842 | const html = `<!doctype html><html><head><meta charset="utf-8"><title>PCAP Analysis Report</title> |
| 5843 | <style> |
| 5844 | body{font:13px/1.5 -apple-system,Segoe UI,Roboto,sans-serif;color:#111;max-width:900px;margin:24px auto;padding:0 16px} |
| 5845 | h1{font-size:22px;margin:0 0 2px} h2{font-size:15px;margin:22px 0 6px;border-bottom:1px solid #ddd;padding-bottom:3px} |
| 5846 | h3{font-size:13px;margin:14px 0 4px} .sub{color:#666;font-size:12px;margin-bottom:14px} |
| 5847 | table{border-collapse:collapse;width:100%;font-size:11.5px;margin-top:4px} th,td{border:1px solid #ddd;padding:3px 6px;text-align:left} |
| 5848 | th{background:#f4f4f5} td.num,th.num{text-align:right;white-space:nowrap} .mono{font-family:ui-monospace,monospace;font-size:10.5px} |
| 5849 | ul{margin:4px 0;padding-left:20px} .foot{margin-top:26px;color:#999;font-size:11px} @media print{body{margin:0}} |
| 5850 | .ai{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:2px 12px} .ai h3{color:#0369a1;margin:10px 0 3px} .ai p{margin:4px 0} |
| 5851 | </style></head><body> |
| 5852 | <h1>PCAP Analysis Report</h1> |
| 5853 | <div class="sub">${now.toLocaleString()} · ${srcLine}${d.note ? ' · ' + escapeHtml(d.note) : ''}</div> |
| 5854 | <h2>Summary</h2> |
| 5855 | ${window_} |
| 5856 | <table><tbody>${summRows}</tbody></table> |
| 5857 | ${ai} |
| 5858 | ${protoTable} |
| 5859 | ${talkTable} |
| 5860 | ${wifi} |
| 5861 | ${expert} |
| 5862 | <div class="foot">Generated by Ragnar PCAP Analyzer (tshark/capinfos). Passive triage — read-only.</div> |
no test coverage detected