| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/minedecapgaronne/administrator/components/com_akeeba/models/ |
Upload File : |
<?php
/**
* @package AkeebaBackup
* @copyright Copyright (c)2009-2014 Nicholas K. Dionysopoulos
* @license GNU General Public License version 3, or later
*
* @since 3.0
*/
// Protect from unauthorized access
defined('_JEXEC') or die();
class AkeebaModelFtpbrowsers extends F0FModel
{
/** @var string The FTP server hostname */
public $host = '';
/** @var int The FTP server port number (default: 21) */
public $port = 21;
/** @var bool Should I use passive mode (default: yes) */
public $passive = true;
/** @var bool Should I use FTP over SSL (default: no) */
public $ssl = false;
/** @var string Username for logging in */
public $username = '';
/** @var string Password for logging in */
public $password = '';
/** @var string The directory to browse */
public $directory = '';
/** @var array Breadcrumbs to the current directory */
public $parts = array();
/** @var string Path to the parent directory */
public $parent_directory = null;
public function getListing()
{
$dir = $this->directory;
// Parse directory to parts
$parsed_dir = trim($dir,'/');
$this->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)) {
$this->parent_directory = '/' . implode('/', $copy_of_parts);
} else {
$this->parent_directory = '/';
}
} else {
$this->parent_directory = '';
}
// Connect to the server
if($this->ssl) {
$con = @ftp_ssl_connect($this->host, $this->port);
} else {
$con = @ftp_connect($this->host, $this->port);
}
if($con === false) {
$this->setError(JText::_('FTPBROWSER_ERROR_HOSTNAME'));
return false;
}
// Login
$result = @ftp_login($con,$this->username,$this->password);
if($result === false) {
$this->setError(JText::_('FTPBROWSER_ERROR_USERPASS'));
return false;
}
// Set the passive mode -- don't care if it fails, though!
@ftp_pasv($con, $this->passive);
// Try to chdir to the specified directory
if(!empty($dir)) {
$result = @ftp_chdir($con, $dir);
if($result === false) {
$this->setError(JText::_('FTPBROWSER_ERROR_NOACCESS'));
return false;
}
}
// Get a raw directory listing (hoping it's a UNIX server!)
$list = @ftp_rawlist($con,'.');
ftp_close($con);
if($list === false) {
$this->setError(JText::_('FTPBROWSER_ERROR_UNSUPPORTED'));
return false;
}
// Parse the raw listing into an array
$folders = $this->parse_rawlist($list);
return $folders;
}
private function parse_rawlist($list)
{
$folders = array();
foreach($list as $v)
{
$info = array();
$vinfo = preg_split("/[\s]+/", $v, 9);
if ($vinfo[0] !== "total") {
$perms = $vinfo[0];
if(substr($perms,0,1) == 'd') {
$folders[] = $vinfo[8];
}
}
}
asort($folders);
return $folders;
}
public function doBrowse()
{
$list = $this->getListing();
$response_array = array(
'error' => $this->getError(),
'list' => $list,
'breadcrumbs' => $this->parts,
'directory' => $this->directory,
'parent' => $this->parent_directory
);
return $response_array;
}
}