HEX
Server: LiteSpeed
System: Linux cde2.duelhost.dk 4.18.0-553.34.1.lve.el8.x86_64 #1 SMP Thu Jan 9 16:30:32 UTC 2025 x86_64
User: dtptviut (1121)
PHP: 8.0.30
Disabled: exec,system,passthru,shell_exec,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/dtptviut/public_html/wp-content/plugins/nitropack/classes/Integration/Server/NginxFastCgi.php
<?php

namespace NitroPack\Integration\Server;

use NitroPack\SDK\StorageDriver\Disk;
use NitroPack\Url\Url;

class NginxFastCgi {
    const STAGE = "very_early";

    public function isActive() {
        if (
            defined('NITROPACK_NGINX_FAST_CGI_CACHE_PATH') && 
            is_dir(NITROPACK_NGINX_FAST_CGI_CACHE_PATH) && 
            is_writable(NITROPACK_NGINX_FAST_CGI_CACHE_PATH)
        ) {
            return true;
        }

        return false;
    }

    public function init($stage) {
        if ($stage === 'very_early' && $this->isActive()) {
            add_action('nitropack_execute_purge_url', [$this, 'purgeUrl']);
            add_action('nitropack_execute_purge_all', [$this, 'purgeAll']);
        }
    }

    public function purgeUrl($url) {
        $cacheFile = $this->getCachePathFromUrl($url);
        $diskStorage = new Disk();
        if (!$diskStorage->exists($cacheFile)) {
            return false;
        }

        return $diskStorage->deleteFile($cacheFile);
    }

    public function purgeAll() {
        $diskStorage = new Disk();
        if (!$diskStorage->exists(NITROPACK_NGINX_FAST_CGI_CACHE_PATH)) {
            return false;
        }

        return $diskStorage->trunkDir(NITROPACK_NGINX_FAST_CGI_CACHE_PATH);
    }

    private function getCachePathFromUrl($url) {
        if (empty($url)) {
            return false;
        }

        $urlObj = new Url($url);

        if (
            empty($urlObj->getScheme()) ||
            empty($urlObj->getHost()) ||
            empty($urlObj->getPath())
        ) {
            return false;
        }

        $cacheKeyBase = sprintf(
            '%sGET%s%s%s', 
            $urlObj->getScheme(), 
            $urlObj->getHost(), 
            $urlObj->getPath(), 
            $urlObj->getQuery() ? '?' . $urlObj->getQuery() : ''
        );

        $cacheKey = md5($cacheKeyBase);

        return sprintf(
            '%s%s/%s/%s', 
            nitropack_trailingslashit(NITROPACK_NGINX_FAST_CGI_CACHE_PATH), 
            substr($cacheKey, -1), 
            substr($cacheKey, -3, 2), 
            $cacheKey
        );
    }
}