{"id":2269,"date":"2026-03-14T19:33:44","date_gmt":"2026-03-14T16:33:44","guid":{"rendered":"https:\/\/fot.net.tr\/?page_id=2269"},"modified":"2026-03-14T19:33:45","modified_gmt":"2026-03-14T16:33:45","slug":"dns-sorgulama","status":"publish","type":"page","link":"https:\/\/fot.net.tr\/en\/dns-sorgulama\/","title":{"rendered":"DNS Lookup"},"content":{"rendered":"    <div class=\"dns-wrap\">\n        <div class=\"dns-card\">\n\n            <div class=\"dns-header\">\n                <div class=\"dns-icon\">\n                    <svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                        <path d=\"M4 6h16M4 12h16M4 18h7\"\/>\n                        <circle cx=\"18\" cy=\"18\" r=\"3\"\/>\n                        <path d=\"m21 21-1.5-1.5\"\/>\n                    <\/svg>\n                <\/div>\n                <h2 class=\"dns-title\">DNS Lookup<\/h2>\n            <\/div>\n\n            <div class=\"dns-input-row\">\n                <input class=\"dns-input\" id=\"dns-input\" type=\"text\" placeholder=\"Enter domain\u2026 (e.g. fot.net.tr)\" value=\"fot.net.tr\" autocomplete=\"off\" spellcheck=\"false\">\n                <button class=\"dns-btn-search\" id=\"dns-btn-search\">Query<\/button>\n            <\/div>\n\n            <div class=\"dns-loading\" id=\"dns-loading\">\n                <div class=\"dns-spinner\"><\/div>\n                <span>Querying\u2026<\/span>\n            <\/div>\n\n            <div class=\"dns-error\" id=\"dns-error\"><\/div>\n\n            <div class=\"dns-results\" id=\"dns-results\">\n                <div class=\"dns-queried-domain\" id=\"dns-queried-domain\"><\/div>\n                <div class=\"dns-sections\" id=\"dns-sections\"><\/div>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n    <style>\n    .dns-wrap * { box-sizing: border-box; margin: 0; padding: 0; }\n\n    .dns-wrap {\n        font-family: 'Josefin Sans', sans-serif;\n        display: flex;\n        justify-content: center;\n        padding: 32px 16px;\n    }\n\n    .dns-card {\n        background: #0f1416;\n        border: 1.5px solid #66590F;\n        border-radius: 6px;\n        width: 100%;\n        max-width: 1100px;\n        padding: 36px 32px;\n        box-shadow: 0 0 48px rgba(102,89,15,0.18), 5px 5px 0 #3d3608;\n    }\n\n    .dns-header {\n        display: flex;\n        align-items: center;\n        gap: 12px;\n        margin-bottom: 28px;\n    }\n\n    .dns-icon { color: #c9a227; }\n\n    .dns-title {\n        font-family: 'Bricolage Grotesque', sans-serif;\n        font-size: 22px;\n        font-weight: 700;\n        color: #ffffff;\n        letter-spacing: -0.3px;\n    }\n\n    .dns-input-row {\n        display: flex;\n        gap: 8px;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    .dns-input {\n        flex: 1;\n        min-width: 0;\n        background: #080C0E !important;\n        border: 1.5px solid #2e2a0e !important;\n        border-radius: 4px !important;\n        padding: 12px 16px !important;\n        color: #ffffff !important;\n        font-family: 'Bricolage Grotesque', sans-serif !important;\n        font-size: 14px !important;\n        font-weight: 500 !important;\n        letter-spacing: 0.5px !important;\n        outline: none !important;\n        box-shadow: none !important;\n        transition: border-color 0.15s;\n        -webkit-appearance: none;\n    }\n\n    .dns-input::placeholder { color: #3a3820 !important; opacity: 1; }\n    .dns-input:focus { border-color: #66590F !important; outline: none !important; box-shadow: none !important; }\n\n    .dns-input:-webkit-autofill,\n    .dns-input:-webkit-autofill:hover,\n    .dns-input:-webkit-autofill:focus {\n        -webkit-box-shadow: 0 0 0px 1000px #080C0E inset !important;\n        -webkit-text-fill-color: #ffffff !important;\n        border-color: #2e2a0e !important;\n    }\n\n    .dns-btn-search {\n        background: #66590F;\n        border: none;\n        border-radius: 4px;\n        padding: 12px 20px;\n        color: #ffffff;\n        font-family: 'Josefin Sans', sans-serif;\n        font-size: 12px;\n        font-weight: 600;\n        letter-spacing: 2px;\n        text-transform: uppercase;\n        cursor: pointer;\n        transition: background 0.15s, box-shadow 0.15s;\n        flex-shrink: 0;\n    }\n\n    .dns-btn-search:hover {\n        background: #7a6a10;\n        box-shadow: 0 4px 20px rgba(102,89,15,0.4);\n    }\n\n    .dns-loading {\n        display: none;\n        align-items: center;\n        gap: 12px;\n        padding: 16px 0;\n        color: #7a6e30;\n        font-size: 12px;\n        letter-spacing: 1.5px;\n        text-transform: uppercase;\n    }\n\n    .dns-loading.show { display: flex; }\n\n    .dns-spinner {\n        width: 18px;\n        height: 18px;\n        border: 2px solid #2e2a0e;\n        border-top-color: #c9a227;\n        border-radius: 50%;\n        animation: dns-spin 0.7s linear infinite;\n        flex-shrink: 0;\n    }\n\n    @keyframes dns-spin { to { transform: rotate(360deg); } }\n\n    .dns-error {\n        display: none;\n        background: rgba(192,57,43,0.1);\n        border: 1px solid rgba(192,57,43,0.3);\n        border-radius: 4px;\n        padding: 12px 16px;\n        color: #e74c3c;\n        font-size: 13px;\n        margin-bottom: 16px;\n    }\n\n    .dns-error.show { display: block; }\n\n    .dns-results { display: none; }\n    .dns-results.show { display: block; }\n\n    .dns-queried-domain {\n        font-family: 'Bricolage Grotesque', sans-serif;\n        font-size: 26px;\n        font-weight: 700;\n        color: #ffffff;\n        letter-spacing: 1px;\n        margin-bottom: 20px;\n        padding-bottom: 16px;\n        border-bottom: 1px solid #1e1c08;\n    }\n\n    .dns-queried-domain span {\n        font-size: 11px;\n        font-weight: 400;\n        color: #7a6e30;\n        letter-spacing: 2px;\n        text-transform: uppercase;\n        display: block;\n        margin-bottom: 4px;\n        font-family: 'Josefin Sans', sans-serif;\n    }\n\n    .dns-sections {\n        display: flex;\n        flex-direction: column;\n        gap: 16px;\n    }\n\n    .dns-section-title {\n        font-size: 9px;\n        font-weight: 600;\n        letter-spacing: 2.5px;\n        text-transform: uppercase;\n        color: #3a3210;\n        padding-bottom: 6px;\n        border-bottom: 1px solid #1a1808;\n        margin-bottom: 8px;\n    }\n\n    .dns-record-grid {\n        display: grid;\n        grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n        gap: 8px;\n    }\n\n    .dns-record {\n        background: #0b0e10;\n        border: 1.5px solid #1e1c08;\n        border-radius: 4px;\n        padding: 10px 12px;\n        display: flex;\n        flex-direction: column;\n        gap: 4px;\n    }\n\n    .dns-record-type {\n        font-size: 9px;\n        font-weight: 600;\n        letter-spacing: 2px;\n        text-transform: uppercase;\n        color: #66590F;\n    }\n\n    .dns-record-val {\n        font-family: 'Bricolage Grotesque', sans-serif;\n        font-size: 13px;\n        font-weight: 500;\n        color: #ffffff;\n        word-break: break-all;\n        line-height: 1.4;\n    }\n\n    .dns-record-meta {\n        font-size: 11px;\n        color: #7a6e30;\n        margin-top: 2px;\n        line-height: 1.6;\n    }\n\n    .dns-record-meta-row {\n        display: flex;\n        gap: 6px;\n    }\n\n    .dns-record-meta-label {\n        color: #3a3210;\n        text-transform: uppercase;\n        font-size: 9px;\n        letter-spacing: 1px;\n        padding-top: 1px;\n        flex-shrink: 0;\n    }\n\n    .dns-empty {\n        color: #3a3820;\n        font-style: italic;\n        font-size: 13px;\n        padding: 12px 0;\n    }\n\n    @media (max-width: 640px) {\n        .dns-card { padding: 24px 18px; }\n        .dns-btn-search { flex: 1; }\n        .dns-record-grid { grid-template-columns: 1fr; }\n    }\n    <\/style>\n\n    <script>\n    (function() {\n        var ajaxUrl   = 'https:\/\/fot.net.tr\/wp-admin\/admin-ajax.php';\n        var i18n      = {\"title\":\"DNS Lookup\",\"placeholder\":\"Enter domain\\u2026 (e.g. fot.net.tr)\",\"btn\":\"Query\",\"querying\":\"Querying\\u2026\",\"queried\":\"Queried Domain\",\"no_records\":\"No records found for this domain.\",\"empty_domain\":\"Please enter a domain.\",\"fail_prefix\":\"Query failed: \",\"conn_error\":\"Connection error: \",\"unknown\":\"unknown error\",\"records\":\"Records\",\"priority\":\"Priority\",\"weight\":\"Weight\",\"port\":\"Port\",\"responsible\":\"Responsible\",\"ttl\":\"TTL\",\"min_ttl\":\"Min TTL\",\"refresh\":\"Refresh\",\"retry\":\"Retry\",\"expire\":\"Expire\",\"cpu\":\"CPU\",\"os\":\"OS\",\"service\":\"Service\",\"protocol\":\"Protocol\",\"name\":\"Name\",\"replacement\":\"Replacement\",\"flags\":\"Flags\",\"tag\":\"Tag\",\"regex\":\"Regex\",\"order\":\"Order\"};\n        var lang      = 'en';\n        var input     = document.getElementById('dns-input');\n        var btnSearch = document.getElementById('dns-btn-search');\n        var loading   = document.getElementById('dns-loading');\n        var errorBox  = document.getElementById('dns-error');\n        var results   = document.getElementById('dns-results');\n        var queriedDomain = document.getElementById('dns-queried-domain');\n        var sections  = document.getElementById('dns-sections');\n\n        function esc(s) {\n            return String(s)\n                .replace(\/&\/g,'&amp;')\n                .replace(\/<\/g,'&lt;')\n                .replace(\/>\/g,'&gt;')\n                .replace(\/\"\/g,'&quot;');\n        }\n\n        function metaRow(label, value) {\n            if (value === undefined || value === null || value === '') return '';\n            return '<div class=\"dns-record-meta-row\">'\n                + '<span class=\"dns-record-meta-label\">' + label + '<\/span>'\n                + '<span>' + esc(String(value)) + '<\/span>'\n                + '<\/div>';\n        }\n\n        function formatRecord(type, rec) {\n            var val = '';\n            var meta = '';\n\n            if (type === 'A') {\n                val = esc(rec.ip || '');\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'AAAA') {\n                val = esc(rec.ipv6 || '');\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'MX') {\n                val = esc(rec.target || '');\n                meta += metaRow(i18n.priority, rec.pri);\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'NS') {\n                val = esc(rec.target || '');\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'TXT') {\n                var txt = '';\n                if (Array.isArray(rec.entries)) {\n                    txt = rec.entries.join('');\n                } else if (rec.txt) {\n                    txt = Array.isArray(rec.txt) ? rec.txt.join('') : rec.txt;\n                }\n                val = esc(txt);\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'CNAME') {\n                val = esc(rec.target || '');\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'SOA') {\n                val = esc(rec.mname || '');\n                meta += metaRow(i18n.responsible, rec.rname);\n                meta += metaRow('Serial', rec.serial);\n                meta += metaRow(i18n.refresh, rec.refresh !== undefined ? rec.refresh + 's' : '');\n                meta += metaRow(i18n.retry, rec.retry !== undefined ? rec.retry + 's' : '');\n                meta += metaRow(i18n.expire, rec.expire !== undefined ? rec.expire + 's' : '');\n                meta += metaRow(i18n.min_ttl, rec.minimum_ttl !== undefined ? rec.minimum_ttl + 's' : '');\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'CAA') {\n                val = esc((rec.tag || '') + ' ' + (rec.value || ''));\n                meta += metaRow(i18n.flags, rec.flags);\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'SRV') {\n                val = esc(rec.target || '');\n                meta += metaRow(i18n.priority, rec.pri);\n                meta += metaRow(i18n.weight, rec.weight);\n                meta += metaRow(i18n.port, rec.port);\n                meta += metaRow(i18n.service, rec.service);\n                meta += metaRow(i18n.protocol, rec.proto);\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'PTR') {\n                val = esc(rec.target || '');\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'HINFO') {\n                val = esc(rec.cpu || '');\n                meta += metaRow(i18n.os, rec.os);\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'NAPTR') {\n                val = esc(rec.replacement || '');\n                meta += metaRow(i18n.order, rec.order);\n                meta += metaRow(i18n.flags, rec.flags);\n                meta += metaRow('Service', rec.services);\n                meta += metaRow(i18n.regex, rec.regex);\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else if (type === 'A6') {\n                val = esc(rec.ipv6 || '');\n                meta += metaRow(i18n.ttl, rec.ttl !== undefined ? rec.ttl + 's' : '');\n            } else {\n                val = esc(JSON.stringify(rec));\n            }\n\n            return '<div class=\"dns-record\">'\n                + '<div class=\"dns-record-type\">' + type + '<\/div>'\n                + '<div class=\"dns-record-val\">' + (val || '<span style=\"color:#3a3820;font-style:italic\">\u2014<\/span>') + '<\/div>'\n                + (meta ? '<div class=\"dns-record-meta\">' + meta + '<\/div>' : '')\n                + '<\/div>';\n        }\n\n        function query(domain) {\n            if (!domain) {\n                errorBox.textContent = i18n.empty_domain;\n                errorBox.classList.add('show');\n                return;\n            }\n\n            loading.classList.add('show');\n            errorBox.classList.remove('show');\n            results.classList.remove('show');\n            errorBox.textContent = '';\n\n            var url = ajaxUrl + '?action=dnslookup_query&lang=' + lang + '&domain=' + encodeURIComponent(domain);\n\n            fetch(url)\n                .then(function(r) { return r.json(); })\n                .then(function(d) {\n                    loading.classList.remove('show');\n                    if (d.status !== 'success') {\n                        errorBox.textContent = i18n.fail_prefix + (d.message || i18n.unknown);\n                        errorBox.classList.add('show');\n                        return;\n                    }\n\n                    queriedDomain.innerHTML = '<span>' + i18n.queried + '<\/span>' + esc(d.domain);\n\n                    var html = '';\n                    var typeOrder = ['A','AAAA','MX','NS','TXT','CNAME','SOA','CAA','SRV','PTR','HINFO','NAPTR','A6'];\n                    var found = false;\n\n                    typeOrder.forEach(function(type) {\n                        if (!d.records[type] || d.records[type].length === 0) return;\n                        found = true;\n                        html += '<div class=\"dns-section\">';\n                        html += '<div class=\"dns-section-title\">' + type + ' ' + i18n.records + '<\/div>';\n                        html += '<div class=\"dns-record-grid\">';\n                        d.records[type].forEach(function(rec) {\n                            html += formatRecord(type, rec);\n                        });\n                        html += '<\/div><\/div>';\n                    });\n\n                    if (!found) {\n                        html = '<div class=\"dns-empty\">' + i18n.no_records + '<\/div>';\n                    }\n\n                    sections.innerHTML = html;\n                    results.classList.add('show');\n                })\n                .catch(function(e) {\n                    loading.classList.remove('show');\n                    errorBox.textContent = i18n.conn_error + e.message;\n                    errorBox.classList.add('show');\n                });\n        }\n\n        btnSearch.addEventListener('click', function() { query(input.value.trim()); });\n        input.addEventListener('keydown', function(e) { if (e.key === 'Enter') query(input.value.trim()); });\n\n        query('fot.net.tr');\n    })();\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2269","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/pages\/2269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/comments?post=2269"}],"version-history":[{"count":1,"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/pages\/2269\/revisions"}],"predecessor-version":[{"id":2270,"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/pages\/2269\/revisions\/2270"}],"wp:attachment":[{"href":"https:\/\/fot.net.tr\/en\/wp-json\/wp\/v2\/media?parent=2269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}