Current File : //etc/zpanel/panel/modules/ftp_management/code/filezilla.php |
<?php
/**
* @copyright 2014-2015 Sentora Project (http://www.sentora.org/)
* Sentora is a GPL fork of the ZPanel Project whose original header follows:
*
* ZPanel - A Cross-Platform Open-Source Web Hosting Control panel.
*
* @package ZPanel
* @version $Id$
* @author Bobby Allen - ballen@bobbyallen.me
* @copyright (c) 2008-2014 ZPanel Group - http://www.zpanelcp.com/
* @license http://opensource.org/licenses/gpl-3.0.html GNU Public License v3
*
* This program (ZPanel) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
// Set some variables for filezilla from the x_ftp_settings database table...
$ftp_reload = "\"" . ctrl_options::GetSystemOption('ftp_service_root') . ctrl_options::GetSystemOption('ftp_service') . "\" /reload-config";
$ftpconfigfile = ctrl_options::GetSystemOption('ftp_config_file');
$getftpconfigfile = file_get_contents($ftpconfigfile);
$ftpsettings = '/<Settings>(.*)<\/Settings>/msU';
// Included after acount has been created, deleted, or reset...
if (!fs_director::CheckForEmptyValue(self::$create) ||
!fs_director::CheckForEmptyValue(self::$delete) ||
!fs_director::CheckForEmptyValue(self::$reset)) {
$matchresult = preg_match_all($ftpsettings, $getftpconfigfile, $matches);
if (!empty($matchresult)) {
// First grab the filezilla setting so we can add it back in when we write the config file...
$line = "<FileZillaServer>" . fs_filehandler::NewLine();
$line .= $matches[0][0] . fs_filehandler::NewLine();
$line .= "<Groups />" . fs_filehandler::NewLine();
$line .= "<Users>" . fs_filehandler::NewLine();
// Get a list of all the accounts...
$sql = $zdbh->prepare("SELECT * FROM x_ftpaccounts WHERE ft_deleted_ts IS NULL ORDER BY ft_user_vc ASC");
$sql->execute();
while ($rowftpaccounts = $sql->fetch()) {
$ftpuser = ctrl_users::GetUserDetail($rowftpaccounts['ft_acc_fk']);
//Only add the user if they are not disabled...
if ($ftpuser['enabled'] <> 0) {
// begin user loop
$line .= "<User Name=\"" . $rowftpaccounts['ft_user_vc'] . "\">" . fs_filehandler::NewLine();
$line .= "<Option Name=\"Pass\">" . md5($rowftpaccounts['ft_password_vc']) . "</Option>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"Group\"/>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"Bypass server userlimit\">0</Option>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"User Limit\">0</Option>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"IP Limit\">0</Option>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"Enabled\">1</Option>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"Comments\">Auto account generated by Sentora (v. " . ctrl_options::GetSystemOption('dbversion') . ")</Option>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"ForceSsl\">0</Option>" . fs_filehandler::NewLine();
$line .= "<IpFilter>" . fs_filehandler::NewLine();
$line .= "<Disallowed/>" . fs_filehandler::NewLine();
$line .= "<Allowed/>" . fs_filehandler::NewLine();
$line .= "</IpFilter>" . fs_filehandler::NewLine();
$line .= "<Permissions>" . fs_filehandler::NewLine();
$line .= "<Permission Dir=\"" . ctrl_options::GetSystemOption('hosted_dir') . $ftpuser['username'] . $rowftpaccounts['ft_directory_vc'] . "\">" . fs_filehandler::NewLine();
// If read only...
$accessmode = "Read List";
if ($rowftpaccounts['ft_access_vc'] == 'RO') {
$permissionset = "<Option Name=\"FileRead\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileWrite\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileDelete\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileAppend\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirCreate\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirDelete\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirList\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirSubdirs\">1</Option>" . fs_filehandler::NewLine();
$accessmode = "Read access";
}
// If write only...
if ($rowftpaccounts['ft_access_vc'] == 'WO') {
$permissionset = "<Option Name=\"FileRead\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileWrite\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileDelete\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileAppend\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirCreate\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirDelete\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirList\">0</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirSubdirs\"0</Option>" . fs_filehandler::NewLine();
$accessmode = "Write access";
}
// If read and write...
if ($rowftpaccounts['ft_access_vc'] == 'RW') {
$permissionset = "<Option Name=\"FileRead\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileWrite\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileDelete\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"FileAppend\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirCreate\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirDelete\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirList\">1</Option>" . fs_filehandler::NewLine();
$permissionset .= "<Option Name=\"DirSubdirs\">1</Option>" . fs_filehandler::NewLine();
$accessmode = "Full access";
}
$line .= $permissionset;
$line .= "<Option Name=\"IsHome\">1</Option>" . fs_filehandler::NewLine();
$line .= "<Option Name=\"AutoCreate\">0</Option>" . fs_filehandler::NewLine();
$line .= "</Permission>" . fs_filehandler::NewLine();
$line .= "</Permissions>" . fs_filehandler::NewLine();
$line .= "<SpeedLimits DlType=\"0\" DlLimit=\"10\" ServerDlLimitBypass=\"0\" UlType=\"0\" UlLimit=\"10\" ServerUlLimitBypass=\"0\">" . fs_filehandler::NewLine();
$line .= "<Download/>" . fs_filehandler::NewLine();
$line .= "<Upload/>" . fs_filehandler::NewLine();
$line .= "</SpeedLimits>" . fs_filehandler::NewLine();
$line .= "</User>" . fs_filehandler::NewLine();
// end user loop
}
}
$line .= "</Users>" . fs_filehandler::NewLine();
$line .= "</FileZillaServer>";
// Write the Filezilla config file
if (fs_filehandler::UpdateFile($ftpconfigfile, 0777, $line)) {
exec($ftp_reload);
}
}
}
?>