Current File : //usr/local/softaculous/lib/aefer/srm.php |
<?php
function r_print($array){
echo '<pre>';
print_r($array);
echo '</pre>';
}
function can_create_file(){
$file = dirname(__FILE__).'/soft.tmp';
$fp = @fopen($file, 'wb');
if($fp === FALSE){
return false;
}
if(@fwrite($fp, 'ampps') === FALSE){
return false;
}
@fclose($fp);
// Check if the file exists
if(file_exists($file)){
@unlink($file);
return true;
}
return false;
}
function ampps_ftp($host, $port, $username, $pass, $cd = false, $pri = '', $passphrase = ''){
global $settings;
if($settings['protocol'] == 'sftp' && !class_exists('sftp')){
include_once('_'.$settings['protocol'].'.php');
}elseif($settings['protocol'] == 'ftps' && !class_exists('ftps')){
include_once('_'.$settings['protocol'].'.php');
}elseif($settings['protocol'] == 'ftp' && !class_exists('ftp_base')){
include_once('_'.$settings['protocol'].'.php');
}elseif($settings['protocol'] == 'customio' && !class_exists('CustomIO')){
include_once('_'.$settings['protocol'].'.php');
}elseif(!class_exists($settings['protocol'])){
require_once('_'.$settings['protocol'].'.php');
}
if($settings['protocol'] == 'ftp'){
$ftp = new ftp(FALSE, FALSE);
if(!$ftp->SetServer($host)) {
$ftp->quit();
return 0;
}
if (!$ftp->connect()) {
return -1;
}
if (!$ftp->login($username, $pass)) {
$ftp->quit();
return -2;
}
if(!empty($cd)){
if(!$ftp->chdir($cd)){
if(!$ftp->chdir(trim($cd, '/'))){
return -3;
}
//return -3;
}
}
if(!$ftp->SetType(FTP_AUTOASCII)){
}
if(!$ftp->Passive(TRUE)){
}
}
if(empty($ftp)){
if($settings['protocol'] == 'customio'){
$ftp = new CustomIO();
}else{
$ftp = new $settings['protocol']();
}
if($settings['protocol'] == 'sftp' && !empty($pri)){
$ftp->auth_pass = 0;
}else{
$ftp->auth_pass = 1;
}
$ret = $ftp->connect($host, $port, $username, $pass, $pri, $passphrase);
if(!is_object($ftp)){
return -1;
}
if(!$ret){
return -2;
}
/* if($settings['protocol'] == 'sftp' && (!$ret)){
return -2;
}
if(($settings['protocol'] == 'ftps' || $settings['protocol'] == 'customio') && !$ftp->ftp_conn){
return -2;
} */
if(!empty($cd)){
if(!$ftp->is_dir($cd)){
return -3;
}
}
}
return $ftp;
}
function filelist($startdir="./", $searchSubdirs=1, $directoriesonly=0, $maxlevel="all", $level=1, $reset = 1) {
//list the directory/file names that you want to ignore
$ignoredDirectory[] = ".";
$ignoredDirectory[] = "..";
$ignoredDirectory[] = "_vti_cnf";
global $directorylist; //initialize global array
if(substr($startdir, -1) != '/'){
$startdir = $startdir.'/';
}
if (is_dir($startdir)) {
if ($dh = opendir($startdir)) {
while (($file = readdir($dh)) !== false) {
if (!(array_search($file,$ignoredDirectory) > -1)) {
if (@filetype($startdir . $file) == "dir") {
//build your directory array however you choose;
//add other file details that you want.
$directorylist[$startdir . $file]['level'] = $level;
$directorylist[$startdir . $file]['dir'] = 1;
$directorylist[$startdir . $file]['name'] = $file;
$directorylist[$startdir . $file]['path'] = $startdir;
if ($searchSubdirs) {
if ((($maxlevel) == "all") or ($maxlevel > $level)) {
filelist($startdir . $file . "/", $searchSubdirs, $directoriesonly, $maxlevel, ($level + 1), 0);
}
}
} else {
if (!$directoriesonly) {
// echo substr(strrchr($file, "."), 1);
//if you want to include files; build your file array
//however you choose; add other file details that you want.
$directorylist[$startdir . $file]['level'] = $level;
$directorylist[$startdir . $file]['dir'] = 0;
$directorylist[$startdir . $file]['name'] = $file;
$directorylist[$startdir . $file]['path'] = $startdir;
}}}}
closedir($dh);
}}
if(!empty($reset)){
$r = $directorylist;
$directorylist = array();
return($r);
}
}
function _unlink($path){
global $ftp, $can_write, $settings;
if($can_write){
return @unlink($path);
}
return $ftp->delete(spath($path));
}
function _rmdir($path){
global $ftp, $can_write, $settings;
if($can_write){
return @rmdir($path);
}
return $ftp->rmdir(spath($path));
}
function rmdir_recursive($path){
$path = (substr($path, -1) == '/' || substr($path, -1) == '\\' ? $path : $path.'/');
$files = filelist($path, 1, 0, 'all');
$files = (!is_array($files) ? array() : $files);
//First delete the files only
foreach($files as $k => $v){
@chmod($k, 0777);
if(file_exists($k) && is_file($k) && @filetype($k) == "file"){
@_unlink($k);
}
}
@clearstatcache();
$folders = filelist($path, 1, 1, 'all');
$folders = (!is_array($folders) ? array() : $folders);
@krsort($folders);
//Now Delete the FOLDERS
foreach($folders as $k => $v){
@chmod($k, 0777);
if(is_dir($k)){
@_rmdir($k);
}
}
@_rmdir($path);
@clearstatcache();
}
function soft_memory_limit($mb){
$bytes = ($mb * 1024 * 1024);
$mb_str = (string) $mb.'M';
// Some servers might have ini_get disabled
if(function_exists('ini_get')){
$memory_limit = @ini_get('memory_limit');
}
if(empty($memory_limit)){
return;
}
$memory_limit_bytes = intval($memory_limit);
$ind = array_search(strtolower(substr($memory_limit, -1)), array('b', 'k', 'm', 'g', 't'));
if($ind > 0){
$memory_limit_bytes = intval($memory_limit) * pow(1024, $ind);
}
//$memory_limit_bytes > 0 is for memory limit = -1
if($memory_limit_bytes <= $bytes && $memory_limit_bytes > 0){
// Some servers might have ini_set disabled
if(function_exists('ini_set')){
@ini_set('memory_limit', $mb_str);
}
}
}
function inputsec($string){
//get_magic_quotes_gpc is depricated in php 7.4
if(version_compare(PHP_VERSION, '7.4', '<')){
if(!get_magic_quotes_gpc()){
$string = addslashes($string);
}else{
$string = stripslashes($string);
$string = addslashes($string);
}
}else{
$string = addslashes($string);
}
// This is to replace ` which can cause the command to be executed in exec()
$string = str_replace('`', '\`', $string);
return $string;
}
function GET($name){
global $GET;
if(isset($_GET[$name]) && !empty($_GET[$name])){
return inputsec(trim($_GET[$name]));
}
return $GET[$name];
}
function softdie($txt){
$array = array();
$array['settings'] = $GLOBALS['settings'];
$array['result'] = $txt;
echo '<aefer>'.base64_encode(serialize($array)).'</aefer>';die();
}
function spath($path){
global $settings;
// This is for those who have defined override_spath in custom_user_func.php
if(function_exists('override_spath')){
return override_spath($path);
}
return str_replace($settings['diff_path'], '', $path);
}
//[[[functions]]]
set_time_limit(0);
// Set a Minimum Memory limit of 32 MB
soft_memory_limit(32);
// Which OS are you ?
$globals['os'] = (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') ? 'windows' : 'linux');
// First Delete yourself !
@unlink(__FILE__); // More has to be done here !
// The settings
$settings = unserialize(base64_decode('[[[settings]]]'));
// CHMOD
$path = unserialize(base64_decode('[[[path]]]'));
$can_write = can_create_file(); // Check if we can write
// Can we Create files ?
if(!$can_write){
$ftp = ampps_ftp('127.0.0.1', $settings['port'], $settings['ftp_user'], $settings['ftp_pass'], $settings['ftp_softpath'], base64_decode($settings['_public_key']), base64_decode($settings['_private_key']), $settings['passphrase']);
if($ftp <= 0){
// Try again with domain - Windows
$ftp = ampps_ftp($settings['softdomain'], $settings['port'], $settings['ftp_user'], $settings['ftp_pass'], $settings['ftp_softpath'], base64_decode($settings['_public_key']), base64_decode($settings['_private_key']), $settings['passphrase']);
if($ftp <= 0){
softdie('f'.$ftp);// - Error unzipping
}
}
}
// Remove it !
if(is_dir($path)){
rmdir_recursive($path);
}elseif(file_exists($path)){
_unlink($path);
}
softdie('DONE');