X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FSystem.php;h=45a88fe0937b6d92c349d527c8985eab28e04c05;hb=f4dfd4f6490dd965651aeb5fa8d39e0d566ed413;hp=44419ad1796a95cb9c3fd2055217d7a2c69a3c70;hpb=3282ce53894b624893ee2989747a59866ab4b137;p=friendica.git diff --git a/src/Core/System.php b/src/Core/System.php index 44419ad179..45a88fe093 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 @@ -179,6 +176,12 @@ class System extends BaseObject exit(); } + public static function jsonError($httpCode, $data, $content_type = 'application/json') + { + header($_SERVER["SERVER_PROTOCOL"] . ' ' . $httpCode); + self::jsonExit($data, $content_type); + } + /** * @brief Encodes content to json. * @@ -237,21 +240,6 @@ class System extends BaseObject } } - /** - * Generates a process identifier for the logging - * - * @param string $prefix A given prefix - * - * @return string a generated process identifier - */ - public static function processID($prefix) - { - // We aren't calling any other function here. - // Doing so could easily create an endless loop - $trailer = $prefix . ':' . getmypid() . ':'; - return substr($trailer . uniqid('') . mt_rand(), 0, 26); - } - /** * Returns the current Load of the System * @@ -289,6 +277,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()