Hunter Black Hat SEO
Server:LiteSpeed
System:Linux raton.hozzt.com 4.18.0-553.144.1.lve.el8.x86_64 #1 SMP Thu Jul 16 08:31:06 UTC 2026 x86_64
User:altinkayamarble (1260)
PHP:7.4.33
Disabled:symlink, show_source, system, virtual, shell_exec,passthru, exec, popen, proc_open, proc_close, proc_nice, proc_terminate,proc_get_status, pfsockopen,allow_url_fopen, posix_getpwuid, eval,posix_setsid, posix_mkfifo, posix_setpgid,posix_setuid, posix_uname,posix_kill,apache_child_terminate, apache_setenv,define_syslog_variables,escapeshellarg, escapeshellcmd, leak, dl, fp, fput,ftp_connect, ftp_exec,ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist,highlight_file, ini_alter, ini_get_all, ini_restore, inject_code
Upload Files
File: /home/altinkayamarble/public_html/wp-content/plugins/akeebabackupwp/app/Solo/Model/Sftpbrowser.php
<?php
/**
 * @package   solo
 * @copyright Copyright (c)2014-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
 * @license   GNU General Public License version 3, or later
 */

namespace Solo\Model;


use Awf\Filesystem\Sftp;
use Awf\Mvc\Model;

class Sftpbrowser extends Model
{
	public function doBrowse()
	{
		$dir = $this->getState('directory');

        // Remove the trailing slash and commit it in the state
        $this->setState('directory', rtrim($dir, '/'));

		// Parse directory to parts
		$parsed_dir = trim($dir,'/');
		$parts = empty($parsed_dir) ? array() : explode('/', $parsed_dir);

		// Find the path to the parent directory
		if (!empty($parts))
		{
			$copy_of_parts = $parts;
			array_pop($copy_of_parts);

			if (!empty($copy_of_parts))
			{
				$parent_directory = '/' . implode('/', $copy_of_parts);
			}
			else
			{
				$parent_directory = '/';
			}
		}
		else
		{
			$parent_directory = '/';
		}

		$options = array(
			'host'		=> $this->getState('host'),
			'port'		=> $this->getState('port'),
			'username'	=> $this->getState('username'),
			'password'	=> $this->getState('password'),
			'directory'	=> $this->getState('directory'),
			'privKey'	=> $this->getState('privKey'),
			'pubKey'	=> $this->getState('pubKey'),
		);

		$list = false;
		$error = '';

		try
		{
			$sftp = new Sftp($options);
			$list = $sftp->listFolders();
		}
		catch (\RuntimeException $e)
		{
            $error = $e->getMessage();

            // Did I get an error while fetching the list of folders? Let's try using the working dir
            if(isset($sftp))
            {
                try
                {
                    $dir   = rtrim($sftp->cwd(), '/').'/'.trim($dir, '/');
                    $dir   = rtrim($dir, '/');
                    $this->setState('directory', $dir);
                    $list  = $sftp->listFolders($dir);
                    $error = '';

                    $parsed_dir = trim($dir,'/');
                    $parts = empty($parsed_dir) ? array() : explode('/', $parsed_dir);

                    // Find the path to the parent directory
                    if (!empty($parts))
                    {
                        $copy_of_parts = $parts;
                        array_pop($copy_of_parts);

                        if (!empty($copy_of_parts))
                        {
                            $parent_directory = '/' . implode('/', $copy_of_parts);
                        }
                        else
                        {
                            $parent_directory = '/';
                        }
                    }
                    else
                    {
                        $parent_directory = '/';
                    }
                }
                catch(\RuntimeException $e)
                {
                    $error = $e->getMessage();
                }
            }
		}

		$response_array = array(
			'error'			=> $error,
			'list'			=> $list,
			'breadcrumbs'	=> $parts,
			'directory'		=> $this->getState('directory'),
			'parent'		=> $parent_directory
		);

		return $response_array;
	}
}