* @author Björn Schießle * @author Frank Karlitschek * @author Jörn Friedrich Dreyer * @author Lukas Reschke * @author Morris Jobke * @author Piotr Filiciak * @author Robin Appelman * * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see * */ // Check if we are a user OCP\User::checkLoggedIn(); \OC::$server->getSession()->close(); $files = isset($_GET['files']) ? (string)$_GET['files'] : ''; $dir = isset($_GET['dir']) ? (string)$_GET['dir'] : ''; $files_list = json_decode($files); // in case we get only a single file if (!is_array($files_list)) { $files_list = array($files); } /** * this sets a cookie to be able to recognize the start of the download * the content must not be longer than 32 characters and must only contain * alphanumeric characters */ if(isset($_GET['downloadStartSecret']) && !isset($_GET['downloadStartSecret'][32]) && preg_match('!^[a-zA-Z0-9]+$!', $_GET['downloadStartSecret']) === 1) { setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/'); } $server_params = array( 'head' => \OC::$server->getRequest()->getMethod() == 'HEAD' ); /** * Http range requests support */ if (isset($_SERVER['HTTP_RANGE'])) { $server_params['range'] = \OC::$server->getRequest()->getHeader('Range'); } OC_Files::get($dir, $files_list, $server_params);