From a03a840bfd8bb1743a9e75b934b1ce9f6505f80d Mon Sep 17 00:00:00 2001 From: Marius Cramer <m.cramer@pixcept.de> Date: Tue, 06 May 2014 13:38:59 -0400 Subject: [PATCH] Implemented ftp user auto-expire --- server/lib/classes/system.inc.php | 51 ++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 36 insertions(+), 15 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 65fa54b..76388a6 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -917,13 +917,11 @@ * This function checks the free space for a given directory * @param path check path * @param limit min. free space in bytes - * @return bool - true when the the free space is above limit ohterwise false + * @return bool - true when the the free space is above limit ohterwise false, opt. available disk-space */ - function check_free_space($path, $limit = 0) { + function check_free_space($path, $limit = 0, &$free_space = 0) { $path = rtrim($path, '/'); - $parts = explode('/', $path); - $out = ''; /** * Make sure that we have only existing directories in the path. @@ -931,19 +929,16 @@ * Given a file name instead of a directory, the behaviour of the disk_free_space function is unspecified and may differ between operating systems and PHP versions. */ - for ($i = 1; $i < count($parts); $i++) { - if ( !is_file($out.'/'.$parts[$i]) && is_dir($out.'/'.$parts[$i]) ) { - $out .= '/'.$parts[$i]; - } + while(!is_dir($path) && $path != '/') $path = realpath(dirname($path)); + + $free_space = disk_free_space($out); + + if (!$free_space) { + $free_space = 0; + return false; } - unset($parts); - - $res = disk_free_space($out); - - if (!$res) return false; - - if ($res >= $limit) { + if ($free_space >= $limit) { return true; } else { return false; @@ -1846,6 +1841,32 @@ } } + function getapachemodules() { + global $app; + + $cmd = ''; + if(is_installed('apache2ctl')) $cmd = 'apache2ctl -t -D DUMP_MODULES'; + elseif(is_installed('apachectl')) $cmd = 'apachectl -t -D DUMP_MODULES'; + else { + $app->log("Could not check apache modules, apachectl not found.", LOGLEVEL_WARN); + return array(); + } + + exec($cmd . ' 2>/dev/null', $output, $return_var); + if($return_var != 0 || !$output[0]) { + $app->log("Could not check apache modules, apachectl did not return any data.", LOGLEVEL_WARN); + return array(); + } + + $modules = array(); + for($i = 0; $i < count($output); $i++) { + if(preg_match('/^\s*(\w+)\s+\((shared|static)\)\s*$/', $output[$i], $matches)) { + $modules[] = $matches[1]; + } + } + + return $modules; + } } ?> -- Gitblit v1.9.1