Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
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);
    }
}