403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.217.228.195
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/wavevlvu/diixadigital.com/wp-content/plugins/google-site-kit/fpm/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/wavevlvu/diixadigital.com/wp-content/plugins/google-site-kit/fpm/measurement.php
<?php // phpcs:disable ?>
<?php
/**
 * FirstPartyServing redirect file
 *
 * @package   Google\FirstPartyLibrary
 * @copyright 2024 Google LLC
 * @license   https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
 *
 * NOTICE: This file has been modified from its original version in accordance with the Apache License, Version 2.0.
 *
 * PHPCS rules have been disabled at the very top of the file to allow it to be included in Site Kit's codebase mostly unmodified.
 */

// This file should run in isolation from any other PHP file. This means using
// minimal to no external dependencies, which leads us to supressing the
// following linting rules:
//
// phpcs:disable PSR1.Files.SideEffects.FoundWithSymbols
// phpcs:disable PSR1.Classes.ClassDeclaration.MultipleClasses

namespace Google\FirstPartyLibrary;

if ( isset( $_GET['healthCheck'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
	echo 'ok';
	exit;
}

/** Core measurement.php logic. */
final class Measurement
{
    private const TAG_ID_QUERY = '?id=';
    private const REDIRECTOR_ID_QUERY = '.php' . self::TAG_ID_QUERY;
    private const PATH_QUERY = '&s=';
    private const FPS_PATH = 'PHP_FPM_REPLACE_PATH';

    /** @var RequestHelper */
    private $helper;

    /**
     * Create the measurement request handler.
     *
     * @param RequestHelper $helper
     */
    public function __construct($helper)
    {
        $this->helper = $helper;
    }

    /** Run the measurement logic. */
    public function run()
    {
        $requestString = $_SERVER['REQUEST_URI'];
        $documentRoot = $_SERVER['DOCUMENT_ROOT'];

        if (empty($documentRoot) || empty($requestString)) {
            $this->helper->invalidRequest(500);
            return "";
        }

        $redirectorFile = explode($documentRoot, __FILE__)[1];
        if (empty($redirectorFile)) {
            $this->helper->invalidRequest(500);
            return "";
        }

        $parameters = self::extractParameters($requestString);
        if (empty($parameters)) {
            $this->helper->invalidRequest(400);
            return "";
        }

        $tagId = $parameters['tag_id'];
        $path = $parameters['path'];

        if (strlen($tagId) === 0 || strlen($path) === 0) {
            http_response_code(400);
            return "";
        }

        if (!self::isScriptRequest($path)) {
            $path = self::appendRequestIP($path);
        }

        $fpsUrl = 'https://' . $tagId . '.fps.goog/' . self::FPS_PATH . $path;

        if (self::isScriptRequest($path)) {
            $response = $this->helper->sendRequest($fpsUrl);
            return str_replace(
                '/' . self::FPS_PATH . '/',
                $redirectorFile . self::TAG_ID_QUERY . $tagId . self::PATH_QUERY,
                $response
            );
        } else {
            return $this->helper->sendRequest($fpsUrl);
        }
    }

    private static function appendRequestIP($path)
    {
        if (!isset($_SERVER['REMOTE_ADDR'])) {
            return $path;
        }

        $requestIP = $_SERVER['REMOTE_ADDR'];
        //  Use x-forwarded-for IP if behind a proxy
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $requestIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        $requestIP = urlencode($requestIP);

        $gaPath = "/g/collect";
        if (strpos($path, $gaPath) !== false) {
            return $path . '&_uip=' . $requestIP;
        } else {
            return $path . '&uip=' . $requestIP;
        }
    }

    private static function isScriptRequest($requestPath)
    {
        return substr($requestPath, 0, 7) === "/gtm.js"
        || substr($requestPath, 0, 8) === "/gtag.js"
        || substr($requestPath, 0, 8) === "/gtag/js";
    }


    private static function extractParameters($requestString)
    {
        $tagIdPosition = strpos($requestString, self::REDIRECTOR_ID_QUERY);
        if ($tagIdPosition === false) {
            return null;
        }

        $tagIdStart = $tagIdPosition + strlen(self::REDIRECTOR_ID_QUERY);
        $tagIdEnd = strpos($requestString, self::PATH_QUERY, $tagIdStart);
        if ($tagIdEnd === false) {
            return null;
        }

        $tagId = substr($requestString, $tagIdStart, $tagIdEnd - $tagIdStart);
        $path = substr($requestString, $tagIdEnd + strlen(self::PATH_QUERY));

        return array(
        "tag_id" =>  $tagId,
        "path" => $path,
        );
    }
}

/**
 * Isolates network requests and other methods like exit to inject into the
 * Measurement class
 */
class RequestHelper
{
    /**
     * Helper method to exit the script early and send back a status code.
     *
     * @param int $statusCode
     */
    public function invalidRequest($statsCode)
    {
        http_response_code($statsCode);
        exit();
    }

    /**
     * Helper method to send requests depending on the PHP environment.
     *
     * @param string $url
     */
    public function sendRequest($url)
    {
        if ($this->isCurlInstalled()) {
            $response = $this->sendCurlRequest($url);
        } else {
            $response = $this->sendFileGetContents($url);
        }
        return $response;
    }

    protected function sendCurlRequest($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

    protected function sendFileGetContents($url)
    {
        return file_get_contents($url);
    }

    protected function isCurlInstalled()
    {
        return extension_loaded('curl');
    }
}

// Skip initial run for testing
if (!defined('IS_FIRST_PARTY_MODE_TEST')) {
    echo (new Measurement(new RequestHelper()))->run();
}

Youez - 2016 - github.com/yon3zu
LinuXploit