X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FSystem.php;h=f0ed08357359f5cc75f1d3a77652085e35ca657e;hb=f68b3c7c4ec9c7c98054035957db178d5071542c;hp=44419ad1796a95cb9c3fd2055217d7a2c69a3c70;hpb=3282ce53894b624893ee2989747a59866ab4b137;p=friendica.git diff --git a/src/Core/System.php b/src/Core/System.php index 44419ad179..f0ed083573 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -5,8 +5,6 @@ namespace Friendica\Core; use Friendica\BaseObject; -use Friendica\Core\Logger; -use Friendica\Core\Renderer; use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Util\XML; @@ -61,7 +59,6 @@ class System extends BaseObject array_shift($trace); $callstack = []; - $counter = 0; $previous = ['class' => '', 'function' => '']; // The ignore list contains all functions that are only wrapper functions @@ -289,6 +286,61 @@ class System extends BaseObject exit(); } + /** + * @brief Returns the system user that is executing the script + * + * This mostly returns something like "www-data". + * + * @return string system username + */ + public static function getUser() + { + if (!function_exists('posix_getpwuid') || !function_exists('posix_geteuid')) { + return ''; + } + + $processUser = posix_getpwuid(posix_geteuid()); + return $processUser['name']; + } + + /** + * @brief Checks if a given directory is usable for the system + * + * @param $directory + * @param bool $check_writable + * + * @return boolean the directory is usable + */ + public static function isDirectoryUsable($directory, $check_writable = true) + { + if ($directory == '') { + Logger::log('Directory is empty. This shouldn\'t happen.', Logger::DEBUG); + return false; + } + + if (!file_exists($directory)) { + Logger::log('Path "' . $directory . '" does not exist for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + if (is_file($directory)) { + Logger::log('Path "' . $directory . '" is a file for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + if (!is_dir($directory)) { + Logger::log('Path "' . $directory . '" is not a directory for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + if ($check_writable && !is_writable($directory)) { + Logger::log('Path "' . $directory . '" is not writable for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + return true; + } + /// @todo Move the following functions from boot.php /* function killme()