{
    "ok": true,
    "domain": "joinpeertube.org",
    "generated_at": "2026-08-09T20:53:50-05:00",
    "cache": {
        "hit": true,
        "ttl": 0
    },
    "score": {
        "total": 90,
        "label": "Excellent",
        "categories": {
            "dns": 100,
            "mail": 90,
            "security": 73,
            "network": 85,
            "availability": 100
        },
        "category_weights": {
            "dns": 25,
            "mail": 20,
            "security": 25,
            "network": 10,
            "availability": 20
        },
        "items": [
            {
                "category": "dns",
                "title": "IPv4 (A)",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0,
                "detail": "1 IPv4 address(es) detected."
            },
            {
                "category": "dns",
                "title": "IPv6 (AAAA)",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "1 IPv6 address(es) detected."
            },
            {
                "category": "dns",
                "title": "Name server redundancy",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "2 NS record(s); 2 or more required."
            },
            {
                "category": "dns",
                "title": "SOA record",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Authoritative zone record."
            },
            {
                "category": "dns",
                "title": "DNSSEC chain",
                "max_points": 15,
                "earned_points": 15,
                "lost_points": 0,
                "detail": "DS and DNSKEY detected."
            },
            {
                "category": "dns",
                "title": "CAA policy",
                "max_points": 5,
                "earned_points": 5,
                "lost_points": 0,
                "detail": "Certificate authority restriction."
            },
            {
                "category": "dns",
                "title": "DNS propagation",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Agreement between public resolvers."
            },
            {
                "category": "mail",
                "title": "MX records",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "1 MX record(s)."
            },
            {
                "category": "mail",
                "title": "SPF",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0,
                "detail": "SPF policy published."
            },
            {
                "category": "mail",
                "title": "DMARC",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0,
                "detail": "DMARC policy published."
            },
            {
                "category": "mail",
                "title": "DKIM",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "A DKIM selector was verified."
            },
            {
                "category": "mail",
                "title": "MTA-STS",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5,
                "detail": "Mail transport policy."
            },
            {
                "category": "mail",
                "title": "TLS-RPT",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5,
                "detail": "TLS reporting policy."
            },
            {
                "category": "security",
                "title": "Valid TLS certificate",
                "max_points": 55,
                "earned_points": 55,
                "lost_points": 0,
                "detail": "47 day(s) remaining."
            },
            {
                "category": "security",
                "title": "Certificate lifetime",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Full points require at least 30 days remaining."
            },
            {
                "category": "security",
                "title": "HTTP security headers",
                "max_points": 35,
                "earned_points": 8,
                "lost_points": 27,
                "detail": "2 of 9 evaluated headers detected."
            },
            {
                "category": "network",
                "title": "PTR reverse DNS",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0,
                "detail": "PTR: carl.framasoft.org"
            },
            {
                "category": "network",
                "title": "IPv4 diversity",
                "max_points": 35,
                "earned_points": 20,
                "lost_points": 15,
                "detail": "Two or more IPv4 addresses receive full points."
            },
            {
                "category": "network",
                "title": "IPv6 connectivity",
                "max_points": 35,
                "earned_points": 35,
                "lost_points": 0,
                "detail": "AAAA availability."
            },
            {
                "category": "availability",
                "title": "DNS resolution",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0,
                "detail": "At least one address family must resolve."
            },
            {
                "category": "availability",
                "title": "HTTP response",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0,
                "detail": "HTTP/2 200 "
            },
            {
                "category": "availability",
                "title": "HTTPS final URL",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "Final URL uses HTTPS."
            }
        ],
        "methodology": "Each category is normalized to 100. The total is the weighted sum: DNS 25%, Email 20%, Security 25%, Network 10%, Availability 20%.",
        "diagnostics": [
            {
                "level": "ok",
                "title": "IPv4 (A)",
                "detail": "1 IPv4 address(es) detected.",
                "category": "dns",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "IPv6 (AAAA)",
                "detail": "1 IPv6 address(es) detected.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "Name server redundancy",
                "detail": "2 NS record(s); 2 or more required.",
                "category": "dns",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "SOA record",
                "detail": "Authoritative zone record.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DNSSEC chain",
                "detail": "DS and DNSKEY detected.",
                "category": "dns",
                "max_points": 15,
                "earned_points": 15,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "CAA policy",
                "detail": "Certificate authority restriction.",
                "category": "dns",
                "max_points": 5,
                "earned_points": 5,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DNS propagation",
                "detail": "Agreement between public resolvers.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "MX records",
                "detail": "1 MX record(s).",
                "category": "mail",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "SPF",
                "detail": "SPF policy published.",
                "category": "mail",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DMARC",
                "detail": "DMARC policy published.",
                "category": "mail",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DKIM",
                "detail": "A DKIM selector was verified.",
                "category": "mail",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "error",
                "title": "MTA-STS",
                "detail": "Mail transport policy.",
                "category": "mail",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5
            },
            {
                "level": "error",
                "title": "TLS-RPT",
                "detail": "TLS reporting policy.",
                "category": "mail",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5
            },
            {
                "level": "ok",
                "title": "Valid TLS certificate",
                "detail": "47 day(s) remaining.",
                "category": "security",
                "max_points": 55,
                "earned_points": 55,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "Certificate lifetime",
                "detail": "Full points require at least 30 days remaining.",
                "category": "security",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "warning",
                "title": "HTTP security headers",
                "detail": "2 of 9 evaluated headers detected.",
                "category": "security",
                "max_points": 35,
                "earned_points": 8,
                "lost_points": 27
            },
            {
                "level": "ok",
                "title": "PTR reverse DNS",
                "detail": "PTR: carl.framasoft.org",
                "category": "network",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0
            },
            {
                "level": "warning",
                "title": "IPv4 diversity",
                "detail": "Two or more IPv4 addresses receive full points.",
                "category": "network",
                "max_points": 35,
                "earned_points": 20,
                "lost_points": 15
            },
            {
                "level": "ok",
                "title": "IPv6 connectivity",
                "detail": "AAAA availability.",
                "category": "network",
                "max_points": 35,
                "earned_points": 35,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DNS resolution",
                "detail": "At least one address family must resolve.",
                "category": "availability",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "HTTP response",
                "detail": "HTTP/2 200 ",
                "category": "availability",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "HTTPS final URL",
                "detail": "Final URL uses HTTPS.",
                "category": "availability",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            }
        ]
    },
    "dns": {
        "records": {
            "A": [
                "94.130.212.178"
            ],
            "AAAA": [
                "2a01:4f8:221:131d::178"
            ],
            "CNAME": [],
            "MX": [
                "5 mail.framasoft.org."
            ],
            "TXT": [
                "\"google-site-verification=xMTSx_ChRPg_pEbUR8QNM4GI-Wx2njkWYiiDHuvTvSA\"",
                "\"v=spf1 a mx include:_spf.framasoft.org -all\"",
                "\"google-site-verification=x7F3xjKJ0_H5tx8lri_TsmaSIZhqxkVFHgGHrQqW3zw\""
            ],
            "NS": [
                "ns10.ovh.net.",
                "dns10.ovh.net."
            ],
            "SOA": [
                "dns10.ovh.net. tech.ovh.net. 2085942212 86400 3600 3600000 60"
            ],
            "CAA": [
                "0 issue \"letsencrypt.org\""
            ],
            "DS": [
                "52711 8 2 569F17882BDA1DB2687A59CCBC503B2DE7207A778BF04BAFD5188CEE 9FA7B521"
            ],
            "DNSKEY": [
                "257 3 8 AwEAAaBcp0Qas6t6a9V38VSG2RQdKth3e1HgJy8TPNL6mi85Dy2hucKv RSDCATF9Wdnu5Z15lUN+Bh3M17cNmFLAEm+NdoIt+A4k5QaWaJ0B4FwL 3iorjKl/DMV0zgsa6K3R+8IJ4llpRukriMpIXO01Ib2Fy5i5CpDryuEq CV/EUiN/dEwQDp5fNhPEU1Q68OmqwgW1nxS0DQ7qIvyHpuOzdVkHZdpR PN8KdLNTteyHhDRQx7TXBfUCaW5adieYfb97d1w/DQqZJ2xm36O2ZXLa UrzfXZXZhyrYwx3kknlbf0HwJMr8TNUfd+ab6v/qx9ZPHeHrJJLYlI1u e8ED4PL20+s=",
                "256 3 8 AwEAAe4F4bxQbGjJSsqyx7pibrxmzI0taeZFKysrpEpBPgQE7u4JJVX1 QEfG+5lraPM+An7bMVT6fK+c5LEzhZ/rSkz8sJT+xOtAkiUmm3dtoW9p lAUFbYGvTa1j8JACKc5+9LKFqJTZ1HssS0XmSdH5DbzG5QqvrVVE6RoA rYkzSp5x"
            ],
            "RRSIG": [
                "A 8 2 3600 20260904140333 20260805140333 47538 joinpeertube.org. Z5r1aVlL2fw8KEucwfGgJ16YfAS5mZOc9c3z4FlcycrgwpF0K4f3UTYm XkqEyliOm1gc2CPEZiegAFrxovFznNhQDyvN25N/eX0me8uAi2ETu/D9 jLiTYDA2IyWvXwAUB6L/zLnCoC1f9bvbAiOxve24uZceOiNoVI/PO+Hl DnU=",
                "DS 8 2 3600 20260830152406 20260809142406 44925 org. G2sQhUezFXNgpHqJyWmU16a7hdYQKNTlo2HbJqQ5E6x3wxgKyh5LxsQb vHXXBFn7u4IMIwk8J6Xhl327gryQhlmAE1K9DCWJSBli02Eh4WU9+Fd6 5/SlWYGP/0mBMwcnp1z/eoOu/K7bH15iwM/WX1AbNpXgmKxmeL2LR5Jt iac=",
                "CAA 8 2 3600 20260904140333 20260805140333 47538 joinpeertube.org. HaLZRviok0HLJv1w30tg1wb0t1WNvlZrkDlhqogd5KkRZJ3VZkrkDVCJ I4BMlWF4OhFAJLamGZI34SG5ULWTBec+t8t4/otGqg4groSjui2q7SJK upwu7HRH9x7IHNewpHD83aDqkOPK6TzXLDFvIeQe+EzO7pr34a9/fBdg kN0="
            ],
            "NSEC": [],
            "NSEC3": [],
            "SRV": [],
            "NAPTR": [],
            "TLSA": [],
            "SSHFP": []
        },
        "ipv4": [
            "94.130.212.178"
        ],
        "ipv6": [
            "2a01:4f8:221:131d::178"
        ]
    },
    "mail": {
        "spf": "v=spf1 a mx include:_spf.framasoft.org -all",
        "dmarc": "v=DMARC1;p=none;rua=mailto:tech-dmarc-reports@framalistes.org;sp=none;aspf=r;",
        "dkim_selector": "dkim",
        "dkim_host": "dkim._domainkey.joinpeertube.org",
        "dkim": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCo/LXHF8Hr2hvlUsjZwbISN4HTSJKj4kxq5RvQMkDbhl6ofOX7XtRcVo7Ya6KSwV6c/v/u4Zh/pPwiYrcDFg1rRcbUGu/R2i3tF7+Q2axuMZkFnMK12JQOkDfOYk5LvJqzE4JeO6NjnYFpSBrDt7EJ80FZaZu9n4qF2MPcNzVQ6wIDAQAB",
        "spf_analysis": {
            "valid": true,
            "lookups": 3,
            "final": "-all",
            "message": "Within the estimated limit"
        },
        "dmarc_analysis": {
            "valid": true,
            "policy": "none"
        },
        "bimi": "",
        "mta_sts": "",
        "tls_rpt": ""
    },
    "advanced": {
        "ptr": "carl.framasoft.org",
        "propagation": {
            "consistent": true,
            "results": [
                {
                    "provider": "Google",
                    "server": "8.8.8.8",
                    "result": [
                        "94.130.212.178"
                    ],
                    "time_ms": 298.95
                },
                {
                    "provider": "Cloudflare",
                    "server": "1.1.1.1",
                    "result": [
                        "94.130.212.178"
                    ],
                    "time_ms": 387.52
                },
                {
                    "provider": "Quad9",
                    "server": "9.9.9.9",
                    "result": [
                        "94.130.212.178"
                    ],
                    "time_ms": 23.36
                },
                {
                    "provider": "OpenDNS",
                    "server": "208.67.222.222",
                    "result": [
                        "94.130.212.178"
                    ],
                    "time_ms": 238.09
                },
                {
                    "provider": "AdGuard",
                    "server": "94.140.14.14",
                    "result": [
                        "94.130.212.178"
                    ],
                    "time_ms": 144.96
                }
            ]
        }
    },
    "ssl": {
        "available": true,
        "issuer": "Let's Encrypt",
        "subject": "joinpeertube.org",
        "valid_from": "2026-06-28T09:14:35-05:00",
        "valid_to": "2026-09-26T09:14:34-05:00",
        "days_remaining": 47,
        "san": [
            "joinpeertube.org",
            "peertu.be",
            "www.joinpeertube.org",
            "www.peertu.be"
        ],
        "protocol": "TLSv1.3",
        "cipher": "TLS_AES_256_GCM_SHA384"
    },
    "http": {
        "url": "https://joinpeertube.org/",
        "status": "HTTP/2 200 ",
        "http_version": "3",
        "headers": {
            "server": "nginx",
            "date": "Mon, 10 Aug 2026 01:53:46 GMT",
            "content-type": "text/html; charset=UTF-8",
            "content-length": "108346",
            "x-powered-by": "Express",
            "accept-ranges": "bytes",
            "cache-control": "public, max-age=0",
            "last-modified": "Wed, 05 Aug 2026 14:49:51 GMT",
            "etag": "W/\"1a73a-19fd266f7bc\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "permissions-policy": "browsing-topics=()",
            "x-clacks-overhead": "GNU Terry Pratchett"
        },
        "security_checks": {
            "strict-transport-security": true,
            "content-security-policy": false,
            "x-content-type-options": false,
            "x-frame-options": false,
            "referrer-policy": false,
            "permissions-policy": true,
            "cross-origin-opener-policy": false,
            "cross-origin-embedder-policy": false,
            "cross-origin-resource-policy": false
        },
        "server": "nginx",
        "powered_by": "Express"
    },
    "webpage": {
        "url": "https://joinpeertube.org/",
        "title": "What is PeerTube? | JoinPeerTube",
        "description": "A free software to take back control of your videos! With more than 600,000 hosted videos, viewed more than 70 millions times and 150,000 users, PeerTube is the decentralized free software alternative to videos platforms developed by Framasoft",
        "success": true,
        "error": "",
        "status": 206
    },
    "network": {
        "94.130.212.178": {
            "success": false,
            "country": "",
            "region": "",
            "city": "",
            "asn": "",
            "organization": "",
            "isp": ""
        }
    },
    "smtp": {
        "host": "mail.framasoft.org",
        "ports": [
            {
                "port": 25,
                "open": false,
                "time_ms": 0.9,
                "banner": "",
                "error": "Network is unreachable"
            },
            {
                "port": 465,
                "open": false,
                "time_ms": 115.4,
                "banner": "",
                "error": "No connection"
            },
            {
                "port": 587,
                "open": false,
                "time_ms": 115.3,
                "banner": "220 mail.framasoft.org ESMTP",
                "error": "No connection"
            }
        ]
    },
    "visitor": {
        "ip": "216.73.217.62",
        "reverse": "",
        "country": "",
        "country_code": "",
        "region": "",
        "city": "",
        "latitude": null,
        "longitude": null,
        "isp": "",
        "organization": "",
        "asn": "",
        "timezone": "",
        "browser": "Other",
        "os": "Other",
        "language": "",
        "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)",
        "is_bot": true,
        "cloudflare": false
    },
    "analysis_time_ms": 83.27
}