private static function filesize($app, $path) { if (array_key_exists($path, Item::$size_cache)) { return Item::$size_cache[$path]; } $size = null; if (is_file($path)) { $size = @filesize($path); } else { if (is_dir($path)) { $options = $app->get_options(); if ($options["foldersize"]["enabled"]) { if (HAS_CMD_DU && $options["foldersize"]["type"] === "shell-du") { $cmdv = array("du", "-sk", $path); $size = intval(preg_replace("#\\s.*\$#", "", exec_cmdv($cmdv)), 10) * 1024; } else { $size = 0; foreach ($app->read_dir($path) as $name) { $size += Item::filesize($app, $path . "/" . $name); } } } } } Item::$size_cache[$path] = $size; return $size; }
private static function filesize($app, $path) { if (array_key_exists($path, Item::$size_cache)) { return Item::$size_cache[$path]; } $size = null; if (is_file($path)) { if (PHP_INT_SIZE < 8) { $_handle = fopen($path, "r"); $_pos = 0; $_size = 1073741824; fseek($_handle, 0, SEEK_SET); while ($_size > 1) { fseek($_handle, $_size, SEEK_CUR); if (fgetc($_handle) === false) { fseek($_handle, -$_size, SEEK_CUR); $_size = (int) ($_size / 2); } else { fseek($_handle, -1, SEEK_CUR); $_pos += $_size; } } while (fgetc($_handle) !== false) { $_pos++; } fclose($_handle); $size = $_pos * 1.0E+20; } else { $size = @filesize($path); } } else { if (is_dir($path)) { $options = $app->get_options(); if ($options["foldersize"]["enabled"]) { if (HAS_CMD_DU && $options["foldersize"]["type"] === "shell-du") { $cmdv = array("du", "-sk", $path); $size = intval(preg_replace("#\\s.*\$#", "", exec_cmdv($cmdv)), 10) * 1024; } else { $size = 0; foreach ($app->read_dir($path) as $name) { $size += Item::filesize($app, $path . "/" . $name); } } } } } Item::$size_cache[$path] = $size; return $size; }
private function capture($cmdv, $source_path) { if (!file_exists($source_path)) { return null; } $capture_path = $this->thumbs_path . "/capture-" . sha1($source_path) . ".jpg"; if (!file_exists($capture_path) || filemtime($source_path) >= filemtime($capture_path)) { foreach ($cmdv as &$arg) { $arg = str_replace("[SRC]", $source_path, $arg); $arg = str_replace("[DEST]", $capture_path, $arg); } exec_cmdv($cmdv); } return file_exists($capture_path) ? $capture_path : null; }
function setup() { // MISC putenv("LANG=en_US.UTF-8"); setlocale(LC_CTYPE, "en_US.UTF-8"); date_default_timezone_set("UTC"); define("NAME", "h5ai"); define("VERSION", "0.25.2"); define("STAMP", "2014-07-01 22:38:06"); define("BACKEND", "PHP"); define("API", true); define("FILE_PREFIX", "_h5ai"); // ADMIN session_start(); define("AS_ADMIN_SESSION_KEY", "__H5AI_AS_ADMIN__"); define("AS_ADMIN", isset($_SESSION[AS_ADMIN_SESSION_KEY]) && $_SESSION[AS_ADMIN_SESSION_KEY] === true); define("HAS_CUSTOM_PASSHASH", PASSHASH !== "da39a3ee5e6b4b0d3255bfef95601890afd80709"); // PHP define("MIN_PHP_VERSION", "5.3.0"); define("HAS_PHP_VERSION", version_compare(PHP_VERSION, MIN_PHP_VERSION) >= 0); define("HAS_PHP_EXIF", function_exists("exif_thumbnail")); $has_php_jpg = false; if (function_exists("gd_info")) { $infos = gd_info(); $has_php_jpg = array_key_exists("JPG Support", $infos) && $infos["JPG Support"] || array_key_exists("JPEG Support", $infos) && $infos["JPEG Support"]; } define("HAS_PHP_JPG", $has_php_jpg); // SERVER $server_name = null; $server_version = null; $server_software = getenv("SERVER_SOFTWARE"); if ($server_software && preg_match("#^(.*?)/(.*?)(?: |\$)#", strtolower($server_software), $matches)) { $server_name = $matches[1]; $server_version = $matches[2]; } define("SERVER_NAME", $server_name); define("SERVER_VERSION", $server_version); define("HAS_SERVER", in_array($server_name, array("apache", "lighttd", "nginx", "cherokee"))); define("HAS_WIN_OS", strtolower(substr(PHP_OS, 0, 3)) === "win"); // PATHS $script_name = getenv("SCRIPT_NAME"); if (SERVER_NAME === "lighttpd") { $script_name = preg_replace("#^.*?//#", "/", $script_name); } define("APP_HREF", normalize_path(dirname(dirname(dirname($script_name))), true)); define("APP_PATH", normalize_path(dirname(dirname(dirname(dirname(__FILE__)))), false)); define("ROOT_HREF", normalize_path(dirname(APP_HREF), true)); define("ROOT_PATH", normalize_path(dirname(APP_PATH), false)); $uri_parts = parse_url(getenv("REQUEST_URI")); $current_href = normalize_path($uri_parts["path"], true); $rel_href = substr($current_href, strlen(ROOT_HREF)); $current_path = normalize_path(ROOT_PATH . "/" . rawurldecode($rel_href)); if (!is_dir($current_path)) { $current_href = normalize_path(dirname($current_href), true); $current_path = normalize_path(dirname($current_path), false); } define("CURRENT_HREF", $current_href); define("CURRENT_PATH", $current_path); define("INDEX_HREF", normalize_path(APP_HREF . "server/php/index.php", false)); define("CACHE_HREF", normalize_path(APP_HREF . "cache", true)); define("CACHE_PATH", normalize_path(APP_PATH . "/cache", false)); define("HAS_WRITABLE_CACHE", @is_writable(CACHE_PATH)); // EXTERNAL COMMANDS foreach (array("tar", "zip", "convert", "ffmpeg", "avconv", "du") as $cmd) { $cmdv = HAS_WIN_OS ? array("which", $cmd) : array("command", "-v", $cmd); define("HAS_CMD_" . strtoupper($cmd), @preg_match("#" . $cmd . "(.exe)?\$#i", exec_cmdv($cmdv)) > 0); } }