114 lines
3.7 KiB
PHP
114 lines
3.7 KiB
PHP
<?php
|
|
/*------------------------------------------------------------------------------
|
|
|
|
Copyright (c) 2004 Media Development Loan Fund
|
|
|
|
This file is part of the LiveSupport project.
|
|
http://livesupport.campware.org/
|
|
To report bugs, send an e-mail to bugs@campware.org
|
|
|
|
LiveSupport is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
LiveSupport 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with LiveSupport; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
|
|
Author : $Author: tomas $
|
|
Version : $Revision: 1.7 $
|
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/storageServer/var/xmlrpc/simpleGet.php,v $
|
|
|
|
------------------------------------------------------------------------------*/
|
|
|
|
/**
|
|
* \file simpleGet.php
|
|
* Returns stored media file identified by global unique ID.
|
|
*
|
|
* simpleGet.php is remote callable script through HTTP GET method.
|
|
* Requires valid session ID with read permission for requested file.
|
|
*
|
|
* This script accepts following HTTP GET parameters:
|
|
* <ul>
|
|
* <li>sessid : string, session ID</li>
|
|
* <li>id : string, global unique ID of requested file</li>
|
|
* </ul>
|
|
*
|
|
* On success, returns HTTP return code 200 and requested file.
|
|
*
|
|
* On errors, returns HTTP return code >200
|
|
* The possible error codes are:
|
|
* <ul>
|
|
* <li> 400 - Incorrect parameters passed to method</li>
|
|
* <li> 403 - Access denied</li>
|
|
* <li> 404 - File not found</li>
|
|
* <li> 500 - Application error</li>
|
|
* </ul>
|
|
*
|
|
*/
|
|
|
|
require_once 'DB.php';
|
|
require_once '../conf.php';
|
|
require_once '../LocStor.php';
|
|
|
|
PEAR::setErrorHandling(PEAR_ERROR_RETURN);
|
|
$dbc = DB::connect($config['dsn'], TRUE);
|
|
$dbc->setFetchMode(DB_FETCHMODE_ASSOC);
|
|
|
|
$locStor = &new LocStor(&$dbc, $config);
|
|
|
|
function http_error($code, $err){
|
|
header("HTTP/1.1 $code");
|
|
header("Content-type: text/plain; charset=UTF-8");
|
|
echo "$err\r\n";
|
|
exit;
|
|
}
|
|
|
|
if(preg_match("|^[0-9a-fA-F]{32}$|", $_REQUEST['sessid'])){
|
|
$sessid = $_REQUEST['sessid'];
|
|
}else{
|
|
http_error(400, "Error on sessid parameter. ({$_REQUEST['sessid']})");
|
|
}
|
|
if(preg_match("|^[0-9a-fA-F]{16}$|", $_REQUEST['id'])){
|
|
$gunid = $_REQUEST['id'];
|
|
}else{
|
|
http_error(400, "Error on id parameter. ({$_REQUEST['id']})");
|
|
}
|
|
|
|
$ex_ac = $locStor->existsAudioClip($sessid, $gunid);
|
|
if(PEAR::isError($ex_ac)){
|
|
if($ex_ac->getCode() == GBERR_DENY){
|
|
http_error(403, $ex_ac->getMessage());
|
|
}else{ http_error(500, $ex_ac->getMessage()); }
|
|
}
|
|
$ex_pl = $locStor->existsPlaylist($sessid, $gunid);
|
|
if(PEAR::isError($ex_pl)){
|
|
if($ex_pl->getCode() == GBERR_DENY){
|
|
http_error(403, $ex_pl->getMessage());
|
|
}else{ http_error(500, $ex_pl->getMessage()); }
|
|
}
|
|
if(!$ex_ac && !$ex_pl){ http_error(404, "404 File not found"); }
|
|
$ac =& StoredFile::recallByGunid(&$locStor, $gunid);
|
|
if(PEAR::isError($ac)){ http_error(500, $ac->getMessage()); }
|
|
if($ex_ac){
|
|
$realFname = $ac->_getRealRADFname();
|
|
$mime = $ac->rmd->getMime();
|
|
header("Content-type: $mime");
|
|
readfile($realFname);
|
|
exit;
|
|
}
|
|
if($ex_pl){
|
|
$md = $locStor->getMdata($ac->getId(), $sessid);
|
|
header("Content-type: application/smil");
|
|
echo $md;
|
|
exit;
|
|
}
|
|
?>
|