<?php
require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../includes/functions.php';

$page_title   = 'My IPv6 Address – Details and Network Information';
$page_desc    = 'Show your IPv6 address with details: address type, prefix, interface ID, ISP, ASN and location – free on ipcheck.tools.';
$page_current = 'ipv6';

$ips  = get_visitor_ips();
$ipv6 = $ips['ipv6'];

if (!$ipv6) {
    $geo = [];
} else {
    $geo      = get_geoip($ipv6);
    $hostname = get_hostname($ipv6);

    // IPv6 analysieren
    $packed   = inet_pton($ipv6);
    $expanded = implode(':', str_split(bin2hex($packed), 4));
    $prefix64 = inet_ntop(substr($packed, 0, 8) . str_repeat("\0", 8)) . '::/64';

    // Adresstyp bestimmen
    $bin = '';
    for ($i = 0; $i < strlen($packed); $i++) {
        $bin .= sprintf('%08b', ord($packed[$i]));
    }

    $type = 'Global Unicast (public)';
    $scope = 'Global';
    if ($ipv6 === '::1') { $type = 'Loopback'; $scope = 'Host'; }
    elseif (str_starts_with($bin, '11111110100')) { $type = 'Link-Local'; $scope = 'Link'; }
    elseif (str_starts_with($bin, '11111100') || str_starts_with($bin, '11111101')) { $type = 'Unique Local (ULA)'; $scope = 'Local'; }
    elseif (str_starts_with($bin, '11111111')) { $type = 'Multicast'; $scope = 'Various'; }

    // Interface-ID (letzte 64 Bit)
    $interface_id = implode(':', str_split(substr(bin2hex($packed), 16), 4));
}

require_once __DIR__ . '/header.php';
?>

<div class="hero">
  <div class="hero-label">IPv6 Detail View</div>
  <?php if ($ipv6): ?>
    <div class="hero-ip" style="font-size:22px; word-break:break-all;"><?= h($ipv6) ?></div>
    <div class="hero-sub">
      <span class="status-dot"></span>
      <?= $type ?? 'Global Unicast (public)' ?>
    </div>
    <div style="display:flex; gap:8px; justify-content:center; margin-top:12px; flex-wrap:wrap;">
      <button class="copy-btn" onclick="copyToClipboard('<?= h($ipv6) ?>', this)">
        <i class="ti ti-copy"></i> Copy IPv6
      </button>
      <a href="/en/whois.php?domain=<?= urlencode($ipv6) ?>" class="copy-btn">
        <i class="ti ti-id"></i> IP-WHOIS
      </a>
    </div>
  <?php else: ?>
    <div class="hero-ip" style="font-size:22px; color:var(--text4);">No IPv6 detected</div>
    <div class="hero-sub">Your connection does not support IPv6</div>
  <?php endif; ?>
</div>

<div class="wrap">

  <div class="ad-slot"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8287576653347400" data-ad-slot="2715725452" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div>

  <?php if ($ipv6): ?>

    <div class="stat-grid">
      <div class="stat">
        <div class="stat-val" style="font-size:11px; color:var(--purple-dim);">128 Bit</div>
        <div class="stat-key">Address length</div>
      </div>
      <div class="stat">
        <div class="stat-val" style="font-size:12px; color:var(--green);">Active</div>
        <div class="stat-key">IPv6 Status</div>
      </div>
      <div class="stat">
        <div class="stat-val" style="font-size:11px;">/64</div>
        <div class="stat-key">Prefix</div>
      </div>
      <div class="stat">
        <div class="stat-val" style="font-size:11px;"><?= h($scope ?? 'Global') ?></div>
        <div class="stat-key">Scope</div>
      </div>
    </div>

    <div class="grid2">
      <div class="card card-purple">
        <div class="card-title"><i class="ti ti-network"></i> Address Representation</div>
        <div class="data-row"><span class="dk">Compact (Standard)</span><span class="dv mono" style="color:var(--purple-dim); font-size:11px;"><?= h($ipv6) ?></span></div>
        <div class="data-row"><span class="dk">Full (Expanded)</span><span class="dv mono" style="font-size:10px;"><?= h(strtoupper($expanded ?? '')) ?></span></div>
        <div class="data-row"><span class="dk">Network prefix (/64)</span><span class="dv mono" style="font-size:11px;"><?= h($prefix64 ?? '–') ?></span></div>
        <div class="data-row"><span class="dk">Interface-ID</span><span class="dv mono" style="font-size:11px;"><?= h($interface_id ?? '–') ?></span></div>
      </div>

      <div class="card">
        <div class="card-title"><i class="ti ti-info-circle"></i> Address Type</div>
        <div class="data-row"><span class="dk">Type</span><span class="dv"><?= h($type ?? '–') ?></span></div>
        <div class="data-row"><span class="dk">Scope</span><span class="dv"><span class="badge badge-green"><?= h($scope ?? 'Global') ?></span></span></div>
        <div class="data-row"><span class="dk">Prefix length</span><span class="dv mono">/64</span></div>
        <div class="data-row"><span class="dk">IP Version</span><span class="dv"><span class="badge badge-v6">IPv6 (128-bit)</span></span></div>
        <div class="data-row"><span class="dk">PTR / Hostname</span><span class="dv mono" style="font-size:11px;"><?= h($hostname ?? '–') ?></span></div>
      </div>
    </div>

    <div class="grid2">
      <div class="card">
        <div class="card-title"><i class="ti ti-building"></i> Provider & Network</div>
        <div class="data-row"><span class="dk">ISP / Provider</span><span class="dv"><?= h($geo['isp'] ?: $geo['asn_org'] ?: '–') ?></span></div>
        <div class="data-row"><span class="dk">Organisation</span><span class="dv"><?= h($geo['asn_org'] ?: '–') ?></span></div>
        <div class="data-row"><span class="dk">ASN</span><span class="dv mono">
          <?php if ($geo['asn']): ?>
            <a href="/en/asn.php?asn=<?= urlencode($geo['asn']) ?>" style="color:var(--blue-dim);"><?= h($geo['asn']) ?></a>
          <?php else: ?>–<?php endif; ?>
        </span></div>
        <div class="data-row"><span class="dk">Country</span><span class="dv">
          <?= $geo['country_iso'] ? country_flag($geo['country_iso']) : '' ?>
          <?= h($geo['country'] ?: '–') ?>
        </span></div>
        <div class="data-row"><span class="dk">City</span><span class="dv"><?= h($geo['city'] ?: '–') ?></span></div>
      </div>

      <div class="card">
        <div class="card-title"><i class="ti ti-calculator"></i> Quick Tools</div>
        <div style="display:flex; flex-direction:column; gap:8px;">
          <a href="/en/ip-lookup.php?ip=<?= urlencode($ipv6) ?>" class="btn btn-primary" style="font-size:12px; padding:6px 14px;">
            <i class="ti ti-world-search"></i> IP Lookup
          </a>
          <a href="/en/subnet.php?ip=<?= urlencode($ipv6) ?>&prefix=64" class="btn btn-primary" style="font-size:12px; padding:6px 14px; background:#1e1a3a; border-color:#3d3080; color:var(--purple-dim);">
            <i class="ti ti-calculator"></i> Subnet Calculator
          </a>
          <a href="/en/dns-lookup.php" class="btn btn-ghost" style="font-size:12px; padding:6px 14px;">
            <i class="ti ti-search"></i> DNS Lookup
          </a>
        </div>
      </div>
    </div>

  <?php else: ?>
    <div class="alert alert-warn">
      <i class="ti ti-alert-triangle"></i>
      <span>No IPv6 address detected. Your connection does not support IPv6 or it is not being forwarded. <a href="/en/ipv4.php">View IPv4 details</a>.</span>
    </div>
  <?php endif; ?>

  <div class="ad-slot"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8287576653347400" data-ad-slot="2715725452" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div>

  <div class="tools-row">
    <a href="/en/"              class="tool-btn"><i class="ti ti-home"></i><span>My IP</span></a>
    <a href="/en/ipv4.php"      class="tool-btn"><i class="ti ti-network"></i><span>IPv4 Detail</span></a>
    <a href="/en/ipv6.php"      class="tool-btn current"><i class="ti ti-network"></i><span>IPv6 Detail</span></a>
    <a href="/en/ip-lookup.php" class="tool-btn"><i class="ti ti-world-search"></i><span>IP Lookup</span></a>
    <a href="/en/dns-lookup.php" class="tool-btn"><i class="ti ti-search"></i><span>DNS Lookup</span></a>
  </div>

  <div class="seo-box">
    <h2>What is an IPv6 address?</h2>
    <p>IPv6 (Internet Protocol version 6) is the successor to IPv4 and uses 128-bit addresses represented as eight groups of four hexadecimal digits separated by colons (e.g. 2001:db8::1). This enables approximately 340 undecillion unique addresses. Unlike IPv4, IPv6 has built-in security features (IPSec), better routing efficiency and no need for NAT (Network Address Translation). Germany is one of the countries with high IPv6 adoption.</p>
  </div>

<?php require_once __DIR__ . '/footer.php'; ?>
