367 lines
11 KiB
PHP
367 lines
11 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 : $ $
|
|
|
|
------------------------------------------------------------------------------*/
|
|
require_once"gbHtml_h.php";
|
|
|
|
/**
|
|
* storageServer WWW-form interface
|
|
*
|
|
* @author $Author: tomas $
|
|
* @version $Revision: 1.7 $
|
|
* @see Alib
|
|
* @see GreenBox
|
|
*/
|
|
|
|
|
|
// debugging utilities:
|
|
#header("Content-type: text/plain"); echo"GET:\n"; print_r($_GET); exit;
|
|
#header("Content-type: text/plain"); echo"POST:\n"; print_r($_POST); exit;
|
|
#header("Content-type: text/plain"); echo"REQUEST:\n"; print_r($_REQUEST); exit;
|
|
#header("Content-type: text/plain"); echo"FILES:\n"; print_r($_FILES); exit;
|
|
#echo"<pre>$redirUrl\n"; print_r($_REQUEST); exit;
|
|
|
|
define('BROWSER', "gbHtmlBrowse.php");
|
|
|
|
$sessid = $_REQUEST[$config['authCookieName']];
|
|
$userid = $gb->getSessUserId($sessid);
|
|
$login = $gb->getSessLogin($sessid);
|
|
|
|
$id = (!$_REQUEST['id'] ? $gb->storId : $_REQUEST['id']);
|
|
|
|
$redirUrl="gbHtmlBrowse.php?id=$id";
|
|
|
|
switch($_REQUEST['act']){
|
|
// --- authentication ---
|
|
/**
|
|
* login
|
|
*
|
|
* Login to the storageServer.
|
|
* It set sessid to the cookie with name defined in ../conf.php
|
|
*
|
|
* @param login string, username
|
|
* @param pass string, password
|
|
*/
|
|
case"login";
|
|
$sessid = $gb->login($_REQUEST['login'], $_REQUEST['pass']);
|
|
if($sessid && !PEAR::isError($sessid)){
|
|
setcookie($config['authCookieName'], $sessid);
|
|
$redirUrl="gbHtmlBrowse.php";
|
|
$fid = $gb->getObjId($_REQUEST['login'], $gb->storId);
|
|
if(!PEAR::isError($fid)) $redirUrl.="?id=$fid";
|
|
}else{
|
|
$redirUrl="gbHtmlLogin.php"; $_SESSION['alertMsg']='Login failed.';
|
|
}
|
|
break;
|
|
/**
|
|
* logout
|
|
*
|
|
* Logut from storageServer, takes sessid from cookie
|
|
*
|
|
*/
|
|
case"logout";
|
|
$gb->logout($sessid);
|
|
setcookie($config['authCookieName'], '');
|
|
$redirUrl="gbHtmlLogin.php";
|
|
break;
|
|
|
|
// --- files ---
|
|
/**
|
|
* upload
|
|
*
|
|
* Provides file upload and store it to the storage
|
|
*
|
|
* @param filename string, name for the uploaded file
|
|
* @param mediafile file uploded by HTTP, raw binary media file
|
|
* @param mdatafile file uploded by HTTP, metadata XML file
|
|
* @param id int, destination folder id
|
|
*/
|
|
case"upload":
|
|
$tmpgunid = md5(
|
|
microtime().$_SERVER['SERVER_ADDR'].rand()."org.mdlf.livesupport"
|
|
);
|
|
$ntmp = "{$gb->bufferDir}/$tmpgunid";
|
|
# $ntmp = tempnam(""{$gb->bufferDir}", 'gbTmp_');
|
|
$mdtmp = "";
|
|
move_uploaded_file($_FILES['mediafile']['tmp_name'], $ntmp);
|
|
chmod($ntmp, 0664);
|
|
if($_FILES['mdatafile']['tmp_name']){
|
|
$mdtmp = "$ntmp.xml";
|
|
if(move_uploaded_file($_FILES['mdatafile']['tmp_name'], $mdtmp)){
|
|
chmod($mdtmp, 0664);
|
|
}
|
|
}
|
|
$r = $gb->putFile($id, $_REQUEST['filename'], $ntmp, $mdtmp, $sessid);
|
|
if(PEAR::isError($r)) $_SESSION['alertMsg'] = $r->getMessage();
|
|
else{
|
|
# $gb->updateMetadataDB($gb->_pathFromId($r), $mdata, $sessid);
|
|
@unlink($ntmp);
|
|
@unlink($mdtmp);
|
|
}
|
|
$redirUrl = BROWSER."?id=$id";
|
|
break;
|
|
/**
|
|
* newFolder
|
|
*
|
|
* Create new folder in the storage
|
|
*
|
|
* @param newname string, name for the new folder
|
|
* @param id int, destination folder id
|
|
*/
|
|
case"newFolder":
|
|
$r = $gb->createFolder($id, $_REQUEST['newname'], $sessid);
|
|
if(PEAR::isError($r)) $_SESSION['alertMsg'] = $r->getMessage();
|
|
$redirUrl = BROWSER."?id=$id";
|
|
break;
|
|
/**
|
|
* rename
|
|
*
|
|
* Change the name of file or folder
|
|
*
|
|
* @param newname string, new name for the file or folder
|
|
* @param id int, destination folder id
|
|
*/
|
|
case"rename":
|
|
$parid = $gb->getParent($id);
|
|
$r = $gb->renameFile($id, $_REQUEST['newname'], $sessid);
|
|
if(PEAR::isError($r)) $_SESSION['alertMsg'] = $r->getMessage();
|
|
$redirUrl = BROWSER."?id=$parid";
|
|
break;
|
|
/**
|
|
* move
|
|
*
|
|
* Move file to another folder
|
|
* TODO: format of destinantion path should be properly defined
|
|
*
|
|
* @param newPath string, destination relative path
|
|
* @param id int, destination folder id
|
|
*/
|
|
case"move":
|
|
$newPath = urlencode($_REQUEST['newPath']);
|
|
$did = $gb->getObjIdFromRelPath($id, $newPath);
|
|
$parid = $gb->getParent($id);
|
|
$r = $gb->moveFile($id, $did, $sessid);
|
|
if(PEAR::isError($r)){
|
|
$_SESSION['alertMsg'] = $r->getMessage();
|
|
$redirUrl = BROWSER."?id=$parid";
|
|
}
|
|
else $redirUrl = BROWSER."?id=$did";
|
|
break;
|
|
/**
|
|
* copy
|
|
*
|
|
* Copy file to another folder
|
|
* TODO: format of destinantion path should be properly defined
|
|
*
|
|
* @param newPath string, destination relative path
|
|
* @param id int, destination folder id
|
|
*/
|
|
case"copy":
|
|
$newPath = urldecode($_REQUEST['newPath']);
|
|
$did = $gb->getObjIdFromRelPath($id, $newPath);
|
|
$parid = $gb->getParent($id);
|
|
$r = $gb->copyFile($id, $did, $sessid);
|
|
if(PEAR::isError($r)){
|
|
$_SESSION['alertMsg'] = $r->getMessage();
|
|
$redirUrl = BROWSER."?id=$parid";
|
|
}
|
|
else $redirUrl = BROWSER."?id=$did";
|
|
break;
|
|
/**
|
|
* delete
|
|
*
|
|
* Delete of stored file
|
|
*
|
|
* @param id int, local id of deleted file or folder
|
|
*/
|
|
case"delete":
|
|
$parid = $gb->getParent($id);
|
|
$r = $gb->deleteFile($id, $sessid);
|
|
if(PEAR::isError($r)) $_SESSION['alertMsg'] = $r->getMessage();
|
|
$redirUrl = BROWSER."?id=$parid";
|
|
break;
|
|
/**
|
|
* getFile
|
|
*
|
|
* Call access method and show access path.
|
|
* Example only - not really useable.
|
|
* TODO: resource should be released by release method call
|
|
*
|
|
* @param id int, local id of accessed file
|
|
*/
|
|
case"getFile":
|
|
$r = $gb->access($id, $sessid);
|
|
if(PEAR::isError($r)) $_SESSION['alertMsg'] = $r->getMessage();
|
|
else echo $r;
|
|
exit;
|
|
break;
|
|
/**
|
|
* getMdata
|
|
*
|
|
* Show file's metadata as XML
|
|
*
|
|
* @param id int, local id of stored file
|
|
*/
|
|
case"getMdata":
|
|
header("Content-type: text/xml");
|
|
$r = $gb->getMdata($id, $sessid);
|
|
print_r($r);
|
|
exit;
|
|
break;
|
|
/**
|
|
* getInfo
|
|
*
|
|
* Call getid3 library to analyze media file and show some results
|
|
*
|
|
* @param
|
|
* @param
|
|
*/
|
|
case"getInfo":
|
|
header("Content-type: text/plain");
|
|
$ia = $gb->analyzeFile($id, $sessid);
|
|
echo"fileformat: {$ia['fileformat']}\n";
|
|
echo"channels: {$ia['audio']['channels']}\n";
|
|
echo"sample_rate: {$ia['audio']['sample_rate']}\n";
|
|
echo"bits_per_sample: {$ia['audio']['bits_per_sample']}\n";
|
|
echo"channelmode: {$ia['audio']['channelmode']}\n";
|
|
echo"title: {$ia['id3v1']['title']}\n";
|
|
echo"artist: {$ia['id3v1']['artist']}\n";
|
|
echo"comment: {$ia['id3v1']['comment']}\n";
|
|
exit;
|
|
break;
|
|
|
|
// --- subjs ----
|
|
/**
|
|
* addSubj
|
|
*
|
|
* Create new user or group (empty pass => create group)
|
|
*
|
|
* @param login string, login name from new user
|
|
* @param pass string, password for new user
|
|
*/
|
|
case"addSubj";
|
|
$redirUrl="gbHtmlSubj.php";
|
|
if($gb->checkPerm($userid, 'subjects')){
|
|
$res = $gb->addSubj($_REQUEST['login'],
|
|
($_REQUEST['pass']=='' ? NULL:$_REQUEST['pass'] ));
|
|
}else{
|
|
$_SESSION['alertMsg']='Access denied.';
|
|
break;
|
|
}
|
|
if(PEAR::isError($res)) $_SESSION['alertMsg'] = $res->getMessage();
|
|
break;
|
|
/**
|
|
* removeSubj
|
|
*
|
|
* Remove existing user or group
|
|
*
|
|
* @param login string, login name of removed user
|
|
*/
|
|
case"removeSubj";
|
|
$redirUrl="gbHtmlSubj.php";
|
|
if($gb->checkPerm($userid, 'subjects')){
|
|
$res = $gb->removeSubj($_REQUEST['login']);
|
|
}else{
|
|
$_SESSION['alertMsg']='Access denied.';
|
|
break;
|
|
}
|
|
if(PEAR::isError($res)) $_SESSION['alertMsg'] = $res->getMessage();
|
|
break;
|
|
/**
|
|
* passwd
|
|
*
|
|
* Change password for specified user
|
|
*
|
|
* @param uid int, local user id
|
|
* @param oldpass string, old user password
|
|
* @param pass string, new password
|
|
* @param pass2 string, retype of new password
|
|
*/
|
|
case"passwd";
|
|
$redirUrl="gbHtmlSubj.php";
|
|
$ulogin = $gb->getSubjName($_REQUEST['uid']);
|
|
if($userid != $_REQUEST['uid'] &&
|
|
! $gb->checkPerm($userid, 'subjects')){
|
|
$_SESSION['alertMsg']='Access denied..';
|
|
break;
|
|
}
|
|
if(FALSE === $gb->authenticate($ulogin, $_REQUEST['oldpass'])){
|
|
$_SESSION['alertMsg']='Wrong old pasword.';
|
|
break;
|
|
}
|
|
if($_REQUEST['pass'] !== $_REQUEST['pass2']){
|
|
$_SESSION['alertMsg'] = "Passwords do not match. ".
|
|
"({$_REQUEST['pass']}/{$_REQUEST['pass2']})";
|
|
break;
|
|
}
|
|
$gb->passwd($ulogin, $_REQUEST['oldpass'], $_REQUEST['pass']);
|
|
break;
|
|
|
|
// --- perms ---
|
|
/**
|
|
* addPerm
|
|
*
|
|
* Add new permission record
|
|
*
|
|
* @param subj int, local user/group id
|
|
* @param permAction string, type of action from set predefined in conf.php
|
|
* @param id int, local id of file/object
|
|
* @param allowDeny char, A or D
|
|
*/
|
|
case"addPerm";
|
|
$parid = $gb->getparent($_REQUEST['oid']);
|
|
if($gb->checkPerm($userid, 'editPerms', $parid)){
|
|
$gb->addPerm($_REQUEST['subj'], $_REQUEST['permAction'],
|
|
$_REQUEST['id'], $_REQUEST['allowDeny']);
|
|
}else{
|
|
$_SESSION['alertMsg']='Access denied.';
|
|
}
|
|
$redirUrl="gbHtmlPerms.php?id=$id";
|
|
break;
|
|
/**
|
|
* removePerm
|
|
*
|
|
* Remove permission record
|
|
*
|
|
* @param permid int, local id of permission record
|
|
*/
|
|
case"removePerm";
|
|
$parid = $gb->getparent($_REQUEST['oid']);
|
|
if($gb->checkPerm($userid, 'editPerms', $parid))
|
|
$gb->removePerm($_REQUEST['permid']);
|
|
else $_SESSION['alertMsg']='Access denied.';
|
|
$redirUrl="gbHtmlPerms.php?id=$id";
|
|
break;
|
|
|
|
default:
|
|
$_SESSION['alertMsg']="Unknown method: {$_REQUEST['act']}";
|
|
$redirUrl="gbHtmlLogin.php";
|
|
}
|
|
|
|
header("Location: $redirUrl");
|
|
?>
|