public static function backup($filename, $channelId, $removeAfterBackup = false) { $serv = StorageServer::getFreestServer(); $relativepath = "uploads/{$channelId}/{$filename}"; if ($serv !== false) { $hash = hash_hmac('sha256', $serv->address, $serv->private_key); $err = file_get_contents($serv->address . 'mkdir.php?cid=' . $channelId . '&hash=' . $hash); $filepath = ROOT . $relativepath; $addr = preg_replace("#^https?://([a-zA-Z0-9.-]+)(/.*)?\$#", "\$1", $serv->address); shell_exec("scp {$filepath} " . $serv->user . "@{$addr}:" . $serv->path . $relativepath . ""); if ($removeAfterBackup) { unlink($filepath); } if (class_exists('Backup')) { Backup::create(array('channel_id' => $channelId, 'filepath' => $filepath, 'server' => $serv->address)); } } return $serv->address . $relativepath; }
public static function upload($file, $type, $fileId, $channelId, $default = '', $backup = false) { if (!file_exists(ROOT . 'uploads/')) { mkdir(ROOT . 'uploads'); } if (!file_exists(ROOT . 'uploads/' . $channelId . '/')) { mkdir(ROOT . 'uploads/' . $channelId); } if ($file['name'] != '') { $name = $file['name']; $ext = explode('.', $name); $ext = $ext[count($ext) - 1]; switch ($type) { case 'vid': if (in_array(strtolower($ext), array('webm', 'mp4', 'm4a', 'mpg', 'mpeg', '3gp', '3g2', 'asf', 'wma', 'mov', 'avi', 'wmv', 'ogg', 'ogv', 'flv', 'mkv'))) { $path = 'uploads/' . $channelId . '/' . $fileId . '.' . $ext; move_uploaded_file($file['tmp_name'], ROOT . $path); $duration = self::getVideoDuration(ROOT . $path); StorageServer::lockFreestServer(); self::convert(ROOT . $path); $serv = StorageServer::getFreestServer(); return array($serv->address . $path, $duration); } break; case 'img': if (in_array(strtolower($ext), array('jpeg', 'jpg', 'png', 'gif', 'tiff', 'svg'))) { $path = 'uploads/' . $channelId . '/' . $fileId . '.' . $ext; move_uploaded_file($file['tmp_name'], ROOT . $path); if ($backup) { StorageServer::backup($fileId . '.' . $ext, $channelId); } return WEBROOT . $path . '?' . time(); } break; } } return $default; }