Merged the archive server into the storage server. Still might need an upgrade script to do the transfer of files.
This commit is contained in:
parent
5389324558
commit
4c6b2cd4d3
|
@ -126,7 +126,7 @@ EVENT_SCHEDULER_DIR = ${MODULES_DIR}/eventScheduler
|
||||||
SCHEDULER_CLIENT_DIR = ${MODULES_DIR}/schedulerClient
|
SCHEDULER_CLIENT_DIR = ${MODULES_DIR}/schedulerClient
|
||||||
WIDGETS_DIR = ${MODULES_DIR}/widgets
|
WIDGETS_DIR = ${MODULES_DIR}/widgets
|
||||||
ALIB_DIR = ${MODULES_DIR}/alib
|
ALIB_DIR = ${MODULES_DIR}/alib
|
||||||
ARCHIVE_SERVER_DIR = ${MODULES_DIR}/archiveServer
|
#ARCHIVE_SERVER_DIR = ${MODULES_DIR}/archiveServer
|
||||||
GETID3_DIR = ${MODULES_DIR}/getid3
|
GETID3_DIR = ${MODULES_DIR}/getid3
|
||||||
HTML_UI_DIR = ${MODULES_DIR}/htmlUI
|
HTML_UI_DIR = ${MODULES_DIR}/htmlUI
|
||||||
STORAGE_ADMIN_DIR = ${MODULES_DIR}/storageAdmin
|
STORAGE_ADMIN_DIR = ${MODULES_DIR}/storageAdmin
|
||||||
|
@ -247,15 +247,15 @@ modules_setup: ${TMP_DIR}/modules_setup.stamp
|
||||||
${TMP_DIR}/modules_setup.stamp:
|
${TMP_DIR}/modules_setup.stamp:
|
||||||
cd ${ALIB_DIR} && ./configure --prefix=${prefix} \
|
cd ${ALIB_DIR} && ./configure --prefix=${prefix} \
|
||||||
PACKAGE_VERSION=${PACKAGE_VERSION}
|
PACKAGE_VERSION=${PACKAGE_VERSION}
|
||||||
cd ${ARCHIVE_SERVER_DIR} && \
|
# cd ${ARCHIVE_SERVER_DIR} && \
|
||||||
./configure --prefix=${prefix} \
|
# ./configure --prefix=${prefix} \
|
||||||
--with-hostname=${HOSTNAME} \
|
# --with-hostname=${HOSTNAME} \
|
||||||
--with-www-port=${WWW_PORT} \
|
# --with-www-port=${WWW_PORT} \
|
||||||
--with-database-server=${DB_SERVER} \
|
# --with-database-server=${DB_SERVER} \
|
||||||
--with-database=${DATABASE} \
|
# --with-database=${DATABASE} \
|
||||||
--with-database-user=${DB_USER} \
|
# --with-database-user=${DB_USER} \
|
||||||
--with-database-password=${DB_PASSWORD} \
|
# --with-database-password=${DB_PASSWORD} \
|
||||||
PACKAGE_VERSION=${PACKAGE_VERSION}
|
# PACKAGE_VERSION=${PACKAGE_VERSION}
|
||||||
cd ${GETID3_DIR} && ./configure --prefix=${prefix} \
|
cd ${GETID3_DIR} && ./configure --prefix=${prefix} \
|
||||||
PACKAGE_VERSION=${PACKAGE_VERSION}
|
PACKAGE_VERSION=${PACKAGE_VERSION}
|
||||||
cd ${HTML_UI_DIR} && ./configure --prefix=${prefix} \
|
cd ${HTML_UI_DIR} && ./configure --prefix=${prefix} \
|
||||||
|
@ -371,7 +371,7 @@ depclean:
|
||||||
${MAKE} -C ${WIDGETS_DIR} depclean
|
${MAKE} -C ${WIDGETS_DIR} depclean
|
||||||
${MAKE} -C ${SCHEDULER_DIR} depclean
|
${MAKE} -C ${SCHEDULER_DIR} depclean
|
||||||
${MAKE} -C ${GLIVESUPPORT_DIR} depclean
|
${MAKE} -C ${GLIVESUPPORT_DIR} depclean
|
||||||
-${MAKE} -C ${ARCHIVE_SERVER_DIR} depclean
|
# -${MAKE} -C ${ARCHIVE_SERVER_DIR} depclean
|
||||||
-${MAKE} -C ${STORAGE_SERVER_DIR} depclean
|
-${MAKE} -C ${STORAGE_SERVER_DIR} depclean
|
||||||
|
|
||||||
compile: ${TMP_DIR}/compile.stamp
|
compile: ${TMP_DIR}/compile.stamp
|
||||||
|
@ -449,7 +449,7 @@ setup_install_dirs:
|
||||||
|
|
||||||
install_modules:
|
install_modules:
|
||||||
${MAKE} -C ${ALIB_DIR} install
|
${MAKE} -C ${ALIB_DIR} install
|
||||||
${MAKE} -C ${ARCHIVE_SERVER_DIR} install
|
# ${MAKE} -C ${ARCHIVE_SERVER_DIR} install
|
||||||
${MAKE} -C ${GETID3_DIR} install
|
${MAKE} -C ${GETID3_DIR} install
|
||||||
${MAKE} -C ${HTML_UI_DIR} install
|
${MAKE} -C ${HTML_UI_DIR} install
|
||||||
${MAKE} -C ${STORAGE_ADMIN_DIR} install
|
${MAKE} -C ${STORAGE_ADMIN_DIR} install
|
||||||
|
@ -467,5 +467,5 @@ install_modules:
|
||||||
install_products:
|
install_products:
|
||||||
${MAKE} -C ${SCHEDULER_DIR} install
|
${MAKE} -C ${SCHEDULER_DIR} install
|
||||||
${MAKE} -C ${GLIVESUPPORT_DIR} install
|
${MAKE} -C ${GLIVESUPPORT_DIR} install
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -132,25 +132,25 @@ REPLACE_SED_STRING="s/ls_lib_dir/${USR_LIB_DIR_S}/; \
|
||||||
all:
|
all:
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
${DOXYGEN} ${DOXYGEN_CONFIG}
|
# ${DOXYGEN} ${DOXYGEN_CONFIG}
|
||||||
|
|
||||||
clean: db_clean
|
clean: db_clean
|
||||||
${RMDIR} ${STOR_DIR}
|
# ${RMDIR} ${STOR_DIR}
|
||||||
${RMDIR} ${ACCESS_DIR}
|
# ${RMDIR} ${ACCESS_DIR}
|
||||||
${RMDIR} ${TRANS_DIR}
|
# ${RMDIR} ${TRANS_DIR}
|
||||||
|
|
||||||
docclean:
|
docclean:
|
||||||
${RMDIR} ${DOXYGEN_DIR}/html
|
# ${RMDIR} ${DOXYGEN_DIR}/html
|
||||||
|
|
||||||
depclean: clean
|
depclean: clean
|
||||||
|
|
||||||
dist:
|
dist:
|
||||||
${TAR_C} ${MODULE_NAME}${DATE}${DIST_EXT} *
|
# ${TAR_C} ${MODULE_NAME}${DATE}${DIST_EXT} *
|
||||||
|
|
||||||
distclean: clean docclean
|
distclean: clean docclean
|
||||||
|
|
||||||
testonly: ${TEST_RUNNER}
|
testonly: ${TEST_RUNNER}
|
||||||
${TEST_RUNNER}
|
# ${TEST_RUNNER}
|
||||||
|
|
||||||
check: all
|
check: all
|
||||||
#testonly
|
#testonly
|
||||||
|
@ -158,39 +158,39 @@ check: all
|
||||||
recheck: clean check
|
recheck: clean check
|
||||||
|
|
||||||
install:
|
install:
|
||||||
${MKDIR} ${DEST_DIR}
|
# ${MKDIR} ${DEST_DIR}
|
||||||
${MKDIR} ${DEST_DIR}/access
|
# ${MKDIR} ${DEST_DIR}/access
|
||||||
${MKDIR} ${DEST_DIR}/install
|
# ${MKDIR} ${DEST_DIR}/install
|
||||||
${MKDIR} ${DEST_DIR}/stor
|
# ${MKDIR} ${DEST_DIR}/stor
|
||||||
${MKDIR} ${DEST_DIR}/stor/buffer
|
# ${MKDIR} ${DEST_DIR}/stor/buffer
|
||||||
${MKDIR} ${DEST_DIR}/trans
|
# ${MKDIR} ${DEST_DIR}/trans
|
||||||
${MKDIR} ${DEST_DIR}/xmlrpc
|
# ${MKDIR} ${DEST_DIR}/xmlrpc
|
||||||
${CP} ${VAR_DIR}/*.{php,template} ${DEST_DIR}
|
# ${CP} ${VAR_DIR}/*.{php,template} ${DEST_DIR}
|
||||||
${CP} ${VAR_DIR}/install/*.php ${DEST_DIR}/install
|
# ${CP} ${VAR_DIR}/install/*.php ${DEST_DIR}/install
|
||||||
${CP} ${VAR_DIR}/xmlrpc/*.php ${DEST_DIR}/xmlrpc
|
# ${CP} ${VAR_DIR}/xmlrpc/*.php ${DEST_DIR}/xmlrpc
|
||||||
${CAT} ${VAR_DIR}/conf.php.template | ${SED} -e ${REPLACE_SED_STRING} \
|
# ${CAT} ${VAR_DIR}/conf.php.template | ${SED} -e ${REPLACE_SED_STRING} \
|
||||||
> ${DEST_DIR}/conf.php
|
# > ${DEST_DIR}/conf.php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# Specific targets
|
# Specific targets
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
storage: dir_setup db_init
|
storage: dir_setup db_init
|
||||||
|
|
||||||
dir_setup: ${DOXYGEN_DIR}
|
dir_setup: ${DOXYGEN_DIR}
|
||||||
bin/setupDirs.sh ${STOR_DIR} ${ACCESS_DIR} ${TRANS_DIR} ${BUFF_DIR}
|
# bin/setupDirs.sh ${STOR_DIR} ${ACCESS_DIR} ${TRANS_DIR} ${BUFF_DIR}
|
||||||
|
|
||||||
db_init:
|
db_init:
|
||||||
-cd var/install && php -q install.php
|
# -cd var/install && php -q install.php
|
||||||
|
|
||||||
db_clean:
|
db_clean:
|
||||||
-cd var/install && php -q uninstall.php
|
# -cd var/install && php -q uninstall.php
|
||||||
|
|
||||||
${TMP_DIR}:
|
${TMP_DIR}:
|
||||||
${MKDIR} ${TMP_DIR}
|
# ${MKDIR} ${TMP_DIR}
|
||||||
|
|
||||||
${DOXYGEN_DIR}:
|
${DOXYGEN_DIR}:
|
||||||
${MKDIR} ${DOXYGEN_DIR}
|
# ${MKDIR} ${DOXYGEN_DIR}
|
||||||
|
|
||||||
${TEST_RUNNER}:
|
${TEST_RUNNER}:
|
||||||
|
|
||||||
|
|
|
@ -1406,5 +1406,384 @@ class LocStor extends BasicStor {
|
||||||
return CAMPCASTER_VERSION;
|
return CAMPCASTER_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open upload transport (from station to hub)
|
||||||
|
*
|
||||||
|
* @param string $sessid
|
||||||
|
* session id
|
||||||
|
* @param string $chsum
|
||||||
|
* checksum
|
||||||
|
* @return array
|
||||||
|
* hasharray with:
|
||||||
|
* url string: writable URL
|
||||||
|
* token string: PUT token
|
||||||
|
*/
|
||||||
|
function uploadOpen($sessid, $chsum)
|
||||||
|
{
|
||||||
|
$owner = Alib::GetSessUserId($sessid);
|
||||||
|
if (PEAR::isError($owner)) {
|
||||||
|
return $owner;
|
||||||
|
}
|
||||||
|
$res = $this->bsOpenPut($chsum, NULL, $owner);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
return array('url'=>$res['url'], 'token'=>$res['token']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close upload transport
|
||||||
|
*
|
||||||
|
* @param string $token
|
||||||
|
* transport token
|
||||||
|
* @param string $trtype
|
||||||
|
* transport type
|
||||||
|
* @param array $pars
|
||||||
|
* transport parameters
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
function uploadClose($token, $trtype, $pars=array())
|
||||||
|
{
|
||||||
|
$res = $this->bsClosePut($token);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
extract($res); // fname, owner
|
||||||
|
switch ($trtype) {
|
||||||
|
case "audioclip":
|
||||||
|
$mdtoken = $pars['mdpdtoken'];
|
||||||
|
$res = $this->bsClosePut($mdtoken);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
$mdfname = $res['fname'];
|
||||||
|
if ($gunid == '') {
|
||||||
|
$gunid = NULL;
|
||||||
|
}
|
||||||
|
$parid = $this->_getHomeDirId($owner);
|
||||||
|
if (PEAR::isError($parid)) {
|
||||||
|
return $parid;
|
||||||
|
}
|
||||||
|
$values = array(
|
||||||
|
"filename" => $pars['name'],
|
||||||
|
"filepath" => $fname,
|
||||||
|
"metadata" => $mdfname,
|
||||||
|
"gunid" => $pars['gunid'],
|
||||||
|
"filetype" => "audioclip"
|
||||||
|
);
|
||||||
|
$storedFile = $this->bsPutFile($parid, $values);
|
||||||
|
if (PEAR::isError($storedFile)) {
|
||||||
|
return $storedFile;
|
||||||
|
}
|
||||||
|
$res = $storedFile->getId();
|
||||||
|
@unlink($fname);
|
||||||
|
@unlink($mdfname);
|
||||||
|
break;
|
||||||
|
case "playlist":
|
||||||
|
if ($gunid == '') {
|
||||||
|
$gunid = NULL;
|
||||||
|
}
|
||||||
|
$parid = $this->_getHomeDirId($owner);
|
||||||
|
if (PEAR::isError($parid)) {
|
||||||
|
return $parid;
|
||||||
|
}
|
||||||
|
$values = array(
|
||||||
|
"filename" => $pars['name'],
|
||||||
|
"metadata" => $fname,
|
||||||
|
"gunid" => $pars['gunid'],
|
||||||
|
"filetype" => "playlist"
|
||||||
|
);
|
||||||
|
$storedFile = $this->bsPutFile($parid, $values);
|
||||||
|
if (PEAR::isError($storedFile)) {
|
||||||
|
return $storedFile;
|
||||||
|
}
|
||||||
|
$res = $storedFile->getId();
|
||||||
|
@unlink($fname);
|
||||||
|
break;
|
||||||
|
case "playlistPkg":
|
||||||
|
$chsum = md5_file($fname);
|
||||||
|
// importPlaylistOpen:
|
||||||
|
$res = $this->bsOpenPut($chsum, NULL, $owner);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
$dest = $res['fname'];
|
||||||
|
$token = $res['token'];
|
||||||
|
copy($fname, $dest);
|
||||||
|
$r = $this->importPlaylistClose($token);
|
||||||
|
if (PEAR::isError($r)) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
@unlink($fname);
|
||||||
|
return $r;
|
||||||
|
break;
|
||||||
|
case "searchjob":
|
||||||
|
$crits = file_get_contents($fname);
|
||||||
|
$criteria = unserialize($crits);
|
||||||
|
@unlink($fname);
|
||||||
|
$results = $this->localSearch($criteria);
|
||||||
|
if (PEAR::isError($results)) {
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
$realfile = tempnam($this->accessDir, 'searchjob_');
|
||||||
|
@chmod($realfile, 0660);
|
||||||
|
$len = file_put_contents($realfile, serialize($results));
|
||||||
|
$acc = BasicStor::bsAccess($realfile, '', NULL, 'download');
|
||||||
|
if (PEAR::isError($acc)) {
|
||||||
|
return $acc;
|
||||||
|
}
|
||||||
|
$url = BasicStor::GetUrlPart()."access/".basename($acc['fname']);
|
||||||
|
$chsum = md5_file($realfile);
|
||||||
|
$size = filesize($realfile);
|
||||||
|
$res = array(
|
||||||
|
'url'=>$url, 'token'=>$acc['token'],
|
||||||
|
'chsum'=>$chsum, 'size'=>$size,
|
||||||
|
'filename'=>$filename
|
||||||
|
);
|
||||||
|
return $res;
|
||||||
|
break;
|
||||||
|
case "metadata":
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open download transport
|
||||||
|
*
|
||||||
|
* @param string $sessid
|
||||||
|
* session id
|
||||||
|
* @param string $trtype
|
||||||
|
* transport type
|
||||||
|
* @param array $pars
|
||||||
|
* transport parameters
|
||||||
|
* @return hasharray with:
|
||||||
|
* url string: writable URL
|
||||||
|
* token string: PUT token
|
||||||
|
*/
|
||||||
|
function downloadOpen($sessid, $trtype, $pars=array())
|
||||||
|
{
|
||||||
|
global $CC_CONFIG;
|
||||||
|
switch ($trtype) {
|
||||||
|
case "unknown":
|
||||||
|
case "audioclip":
|
||||||
|
case "metadata":
|
||||||
|
case "playlist":
|
||||||
|
case "playlistPkg":
|
||||||
|
if (!isset($pars['gunid'])) {
|
||||||
|
return PEAR::raiseError("Archive::downloadOpen: gunid not set");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$gunid = $pars['gunid'];
|
||||||
|
// resolve trtype by object type:
|
||||||
|
if ( ($trtype == 'unknown') || ($trtype == 'playlistPkg') ) {
|
||||||
|
$trtype2 = BasicStor::GetType($gunid);
|
||||||
|
if (PEAR::isError($trtype2)) {
|
||||||
|
return $trtype2;
|
||||||
|
}
|
||||||
|
// required with content:
|
||||||
|
$trtype = ( ($trtype2 == 'playlist') && ($trtype == 'playlistPkg') ?
|
||||||
|
'playlistPkg' : $trtype2);
|
||||||
|
//return PEAR::raiseError("Archive::downloadOpen: TT=$trtype TT2=$trtype2 G=$gunid");
|
||||||
|
}
|
||||||
|
switch ($trtype) {
|
||||||
|
case "audioclip":
|
||||||
|
$res = $this->downloadRawAudioDataOpen($sessid, $gunid);
|
||||||
|
break;
|
||||||
|
case "metadata":
|
||||||
|
$res = $this->downloadMetadataOpen($sessid, $gunid);
|
||||||
|
break;
|
||||||
|
case "playlist":
|
||||||
|
$res = $this->accessPlaylist($sessid, $gunid);
|
||||||
|
break;
|
||||||
|
case "playlistPkg":
|
||||||
|
$res = $this->bsExportPlaylistOpen($gunid);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
$tmpn = tempnam($CC_CONFIG['transDir'], 'plExport_');
|
||||||
|
$plfpath = "$tmpn.lspl";
|
||||||
|
copy($res['fname'], $plfpath);
|
||||||
|
$res = $this->bsExportPlaylistClose($res['token']);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
$fname = "transported_playlist.lspl";
|
||||||
|
$id = BasicStor::IdFromGunid($gunid);
|
||||||
|
$acc = BasicStor::bsAccess($plfpath, 'lspl', NULL, 'download');
|
||||||
|
if (PEAR::isError($acc)) {
|
||||||
|
return $acc;
|
||||||
|
}
|
||||||
|
$url = BasicStor::GetUrlPart()."access/".basename($acc['fname']);
|
||||||
|
$chsum = md5_file($plfpath);
|
||||||
|
$size = filesize($plfpath);
|
||||||
|
$res = array(
|
||||||
|
'url'=>$url, 'token'=>$acc['token'],
|
||||||
|
'chsum'=>$chsum, 'size'=>$size,
|
||||||
|
'filename'=>$fname
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "searchjob":
|
||||||
|
$res = $pars;
|
||||||
|
break;
|
||||||
|
case "file":
|
||||||
|
$res = array();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return PEAR::raiseError("Archive::downloadOpen: NotImpl ($trtype)");
|
||||||
|
}
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
switch ($trtype) {
|
||||||
|
case "audioclip":
|
||||||
|
case "metadata":
|
||||||
|
case "playlist":
|
||||||
|
case "playlistPkg":
|
||||||
|
$title = $this->bsGetTitle(NULL, $gunid);
|
||||||
|
break;
|
||||||
|
case "searchjob":
|
||||||
|
$title = 'searchjob';
|
||||||
|
break;
|
||||||
|
case "file":
|
||||||
|
$title = 'regular file';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
$res['title'] = $title;
|
||||||
|
$res['trtype'] = $trtype;
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close download transport
|
||||||
|
*
|
||||||
|
* @param string $token
|
||||||
|
* transport token
|
||||||
|
* @param string $trtype
|
||||||
|
* transport type
|
||||||
|
* @return array
|
||||||
|
* hasharray with:
|
||||||
|
* url string: writable URL
|
||||||
|
* token string: PUT token
|
||||||
|
*/
|
||||||
|
function downloadClose($token, $trtype)
|
||||||
|
{
|
||||||
|
switch ($trtype) {
|
||||||
|
case "audioclip":
|
||||||
|
$res = $this->downloadRawAudioDataClose($token);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
case "metadata":
|
||||||
|
$res = $this->downloadMetadataClose($token);
|
||||||
|
return $res;
|
||||||
|
case "playlist":
|
||||||
|
$res = $this->releasePlaylist(NULL/*$sessid*/, $token);
|
||||||
|
return $res;
|
||||||
|
case "playlistPkg":
|
||||||
|
$res = BasicStor::bsRelease($token, 'download');
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
$realFname = $r['realFname'];
|
||||||
|
@unlink($realFname);
|
||||||
|
if (preg_match("|(plExport_[^\.]+)\.lspl$|", $realFname, $va)) {
|
||||||
|
list(,$tmpn) = $va;
|
||||||
|
$tmpn = $CC_CONFIG['transDir']."/$tmpn";
|
||||||
|
if (file_exists($tmpn)) {
|
||||||
|
@unlink($tmpn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
case "searchjob":
|
||||||
|
$res = BasicStor::bsRelease($token, 'download');
|
||||||
|
return $res;
|
||||||
|
case "file":
|
||||||
|
return array();
|
||||||
|
default:
|
||||||
|
return PEAR::raiseError("Archive::downloadClose: NotImpl ($trtype)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare hub initiated transport
|
||||||
|
*
|
||||||
|
* @param string $target
|
||||||
|
* hostname of transport target
|
||||||
|
* @param string $trtype
|
||||||
|
* transport type
|
||||||
|
* @param string $direction
|
||||||
|
* 'up' | 'down'
|
||||||
|
* @param array $pars
|
||||||
|
* transport parameters
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
function prepareHubInitiatedTransfer(
|
||||||
|
$target, $trtype='file', $direction='up',$pars=array())
|
||||||
|
{
|
||||||
|
$tr = new Transport($this);
|
||||||
|
$trec = TransportRecord::create($tr, $trtype, $direction,
|
||||||
|
array_merge($pars, array('target'=>$target)));
|
||||||
|
if (PEAR::isError($trec)) {
|
||||||
|
return $trec;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List hub initiated transports
|
||||||
|
*
|
||||||
|
* @param string $target
|
||||||
|
* hostname of transport target
|
||||||
|
* @param string $direction
|
||||||
|
* 'up' | 'down'
|
||||||
|
* @param string $trtok
|
||||||
|
* transport token
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
function listHubInitiatedTransfers(
|
||||||
|
$target=NULL, $direction=NULL, $trtok=NULL)
|
||||||
|
{
|
||||||
|
$tr = new Transport($this);
|
||||||
|
$res = $tr->getTransports($direction, $target, $trtok);
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set state of hub initiated transport
|
||||||
|
*
|
||||||
|
* @param string $target
|
||||||
|
* hostname of transport target
|
||||||
|
* @param string $trtok
|
||||||
|
* transport token
|
||||||
|
* @param string $state
|
||||||
|
* transport state
|
||||||
|
* @return TransportRecord|PEAR_Error
|
||||||
|
*/
|
||||||
|
function setHubInitiatedTransfer($target, $trtok, $state)
|
||||||
|
{
|
||||||
|
$tr = new Transport($this);
|
||||||
|
$trec = TransportRecord::recall($tr, $trtok);
|
||||||
|
if (PEAR::isError($trec)) {
|
||||||
|
return $trec;
|
||||||
|
}
|
||||||
|
$r = $trec->setState($state);
|
||||||
|
if (PEAR::isError($r)) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
return $trec;
|
||||||
|
}
|
||||||
|
|
||||||
} // class LocStor
|
} // class LocStor
|
||||||
?>
|
?>
|
|
@ -491,7 +491,7 @@ class Transport
|
||||||
$res = file_get_contents($row['localfile']);
|
$res = file_get_contents($row['localfile']);
|
||||||
$results = unserialize($res);
|
$results = unserialize($res);
|
||||||
if ($andClose) {
|
if ($andClose) {
|
||||||
$ret = $this->xmlrpcCall('archive.downloadClose',
|
$ret = $this->xmlrpcCall('locstor.downloadClose',
|
||||||
array(
|
array(
|
||||||
'token' => $row['pdtoken'] ,
|
'token' => $row['pdtoken'] ,
|
||||||
'trtype' => $row['trtype'] ,
|
'trtype' => $row['trtype'] ,
|
||||||
|
@ -590,7 +590,7 @@ class Transport
|
||||||
*/
|
*/
|
||||||
function getHubInitiatedTransfers()
|
function getHubInitiatedTransfers()
|
||||||
{
|
{
|
||||||
$ret = $this->xmlrpcCall('archive.listHubInitiatedTransfers',
|
$ret = $this->xmlrpcCall('locstor.listHubInitiatedTransfers',
|
||||||
array('target' => HOSTNAME));
|
array('target' => HOSTNAME));
|
||||||
if (PEAR::isError($ret)) {
|
if (PEAR::isError($ret)) {
|
||||||
return $ret;
|
return $ret;
|
||||||
|
@ -616,7 +616,7 @@ class Transport
|
||||||
*/
|
*/
|
||||||
function startHubInitiatedTransfer($uid, $rtrtok)
|
function startHubInitiatedTransfer($uid, $rtrtok)
|
||||||
{
|
{
|
||||||
$ret = $this->xmlrpcCall('archive.listHubInitiatedTransfers',
|
$ret = $this->xmlrpcCall('locstor.listHubInitiatedTransfers',
|
||||||
array(
|
array(
|
||||||
'target' => HOSTNAME,
|
'target' => HOSTNAME,
|
||||||
'trtok' => $rtrtok,
|
'trtok' => $rtrtok,
|
||||||
|
@ -690,7 +690,7 @@ class Transport
|
||||||
"Transport::startHubInitiatedTransfer: ???"
|
"Transport::startHubInitiatedTransfer: ???"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$ret = $this->xmlrpcCall('archive.setHubInitiatedTransfer',
|
$ret = $this->xmlrpcCall('locstor.setHubInitiatedTransfer',
|
||||||
array(
|
array(
|
||||||
'target' => HOSTNAME,
|
'target' => HOSTNAME,
|
||||||
'trtok' => $rtrtok,
|
'trtok' => $rtrtok,
|
||||||
|
@ -716,7 +716,7 @@ class Transport
|
||||||
function loginToArchive()
|
function loginToArchive()
|
||||||
{
|
{
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
$res = $this->xmlrpcCall('archive.login',
|
$res = $this->xmlrpcCall('locstor.login',
|
||||||
array(
|
array(
|
||||||
'login' => $CC_CONFIG['archiveAccountLogin'],
|
'login' => $CC_CONFIG['archiveAccountLogin'],
|
||||||
'pass' => $CC_CONFIG['archiveAccountPass']
|
'pass' => $CC_CONFIG['archiveAccountPass']
|
||||||
|
@ -738,7 +738,7 @@ class Transport
|
||||||
*/
|
*/
|
||||||
function logoutFromArchive($sessid)
|
function logoutFromArchive($sessid)
|
||||||
{
|
{
|
||||||
$res = $this->xmlrpcCall('archive.logout',
|
$res = $this->xmlrpcCall('locstor.logout',
|
||||||
array('sessid'=>$sessid));
|
array('sessid'=>$sessid));
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
@ -962,7 +962,7 @@ class Transport
|
||||||
if (PEAR::isError($trec)) {
|
if (PEAR::isError($trec)) {
|
||||||
return $trec;
|
return $trec;
|
||||||
}
|
}
|
||||||
$ret = $this->xmlrpcCall('archive.uploadOpen',
|
$ret = $this->xmlrpcCall('locstor.uploadOpen',
|
||||||
array(
|
array(
|
||||||
'sessid' => $asessid ,
|
'sessid' => $asessid ,
|
||||||
'chsum' => $row['expectedsum'],
|
'chsum' => $row['expectedsum'],
|
||||||
|
@ -997,7 +997,7 @@ class Transport
|
||||||
if (PEAR::isError($trec)) {
|
if (PEAR::isError($trec)) {
|
||||||
return $trec;
|
return $trec;
|
||||||
}
|
}
|
||||||
$ret = $this->xmlrpcCall('archive.downloadOpen',
|
$ret = $this->xmlrpcCall('locstor.downloadOpen',
|
||||||
array(
|
array(
|
||||||
'sessid'=> $asessid,
|
'sessid'=> $asessid,
|
||||||
'trtype'=> $row['trtype'],
|
'trtype'=> $row['trtype'],
|
||||||
|
@ -1137,7 +1137,7 @@ class Transport
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// wrong md5 at finish - TODO: start again
|
// wrong md5 at finish - TODO: start again
|
||||||
// $this->xmlrpcCall('archive.uploadReset', array());
|
// $this->xmlrpcCall('locstor.uploadReset', array());
|
||||||
$trec->fail('file uploaded with bad md5');
|
$trec->fail('file uploaded with bad md5');
|
||||||
return PEAR::raiseError("Transport::cronUploadWaiting:".
|
return PEAR::raiseError("Transport::cronUploadWaiting:".
|
||||||
" file uploaded with bad md5 ".
|
" file uploaded with bad md5 ".
|
||||||
|
@ -1282,7 +1282,7 @@ class Transport
|
||||||
} else {
|
} else {
|
||||||
$mdpdtoken = NULL;
|
$mdpdtoken = NULL;
|
||||||
}
|
}
|
||||||
$ret = $this->xmlrpcCall('archive.uploadClose',
|
$ret = $this->xmlrpcCall('locstor.uploadClose',
|
||||||
array(
|
array(
|
||||||
'token' => $row['pdtoken'] ,
|
'token' => $row['pdtoken'] ,
|
||||||
'trtype' => $row['trtype'],
|
'trtype' => $row['trtype'],
|
||||||
|
@ -1402,7 +1402,7 @@ class Transport
|
||||||
return $storedFile;
|
return $storedFile;
|
||||||
}
|
}
|
||||||
$res = $storedFile->getId();
|
$res = $storedFile->getId();
|
||||||
$ret = $this->xmlrpcCall('archive.downloadClose',
|
$ret = $this->xmlrpcCall('locstor.downloadClose',
|
||||||
array(
|
array(
|
||||||
'token' => $mdtrec->row['pdtoken'] ,
|
'token' => $mdtrec->row['pdtoken'] ,
|
||||||
'trtype' => 'metadata' ,
|
'trtype' => 'metadata' ,
|
||||||
|
@ -1436,7 +1436,7 @@ class Transport
|
||||||
return TRUE; // don't close - getSearchResults should close it
|
return TRUE; // don't close - getSearchResults should close it
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$ret = $this->xmlrpcCall('archive.downloadClose',
|
$ret = $this->xmlrpcCall('locstor.downloadClose',
|
||||||
array(
|
array(
|
||||||
'token' => $row['pdtoken'] ,
|
'token' => $row['pdtoken'] ,
|
||||||
'trtype' => $row['trtype'] ,
|
'trtype' => $row['trtype'] ,
|
||||||
|
@ -1485,7 +1485,7 @@ class Transport
|
||||||
return PEAR::raiseError("DEBUG: NotImpl ".var_export($row,TRUE));
|
return PEAR::raiseError("DEBUG: NotImpl ".var_export($row,TRUE));
|
||||||
}
|
}
|
||||||
if (!is_null($rtrtok = $trec->row['rtrtok'])) {
|
if (!is_null($rtrtok = $trec->row['rtrtok'])) {
|
||||||
$ret = $this->xmlrpcCall('archive.setHubInitiatedTransfer',
|
$ret = $this->xmlrpcCall('locstor.setHubInitiatedTransfer',
|
||||||
array(
|
array(
|
||||||
'target' => HOSTNAME,
|
'target' => HOSTNAME,
|
||||||
'trtok' => $rtrtok,
|
'trtok' => $rtrtok,
|
||||||
|
@ -1616,7 +1616,7 @@ class Transport
|
||||||
*/
|
*/
|
||||||
function uploadCheck($pdtoken)
|
function uploadCheck($pdtoken)
|
||||||
{
|
{
|
||||||
$ret = $this->xmlrpcCall('archive.uploadCheck',
|
$ret = $this->xmlrpcCall('locstor.uploadCheck',
|
||||||
array('token'=>$pdtoken));
|
array('token'=>$pdtoken));
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
@ -1630,7 +1630,7 @@ class Transport
|
||||||
*/
|
*/
|
||||||
function pingToArchive()
|
function pingToArchive()
|
||||||
{
|
{
|
||||||
$res = $this->xmlrpcCall('archive.ping',
|
$res = $this->xmlrpcCall('locstor.ping',
|
||||||
array('par'=>'ping_'.date('H:i:s')));
|
array('par'=>'ping_'.date('H:i:s')));
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ class TransportRecord
|
||||||
* default parameters (optional, internal use)
|
* default parameters (optional, internal use)
|
||||||
* @return TransportRecord
|
* @return TransportRecord
|
||||||
*/
|
*/
|
||||||
function create(&$tr, $trtype, $direction='up', $defaults=array())
|
public static function create(&$tr, $trtype, $direction='up', $defaults=array())
|
||||||
{
|
{
|
||||||
global $CC_DBC, $CC_CONFIG;
|
global $CC_DBC, $CC_CONFIG;
|
||||||
$trec = new TransportRecord($tr);
|
$trec = new TransportRecord($tr);
|
||||||
|
|
|
@ -69,8 +69,8 @@ $CC_CONFIG = array(
|
||||||
'storageUrlPort' => 80,
|
'storageUrlPort' => 80,
|
||||||
|
|
||||||
/* ================================================ archive configuration */
|
/* ================================================ archive configuration */
|
||||||
'archiveUrlPath' => '/campcasterArchiveServer',
|
'archiveUrlPath' => '/campcasterStorageServer',
|
||||||
'archiveXMLRPC' => 'xmlrpc/xrArchive.php',
|
'archiveXMLRPC' => 'xmlrpc/xrLocStor.php',
|
||||||
'archiveUrlHost' => 'localhost',
|
'archiveUrlHost' => 'localhost',
|
||||||
'archiveUrlPort' => 80,
|
'archiveUrlPort' => 80,
|
||||||
'archiveAccountLogin' => 'root',
|
'archiveAccountLogin' => 'root',
|
||||||
|
|
|
@ -70,8 +70,8 @@ $CC_CONFIG = array(
|
||||||
'storageUrlPort' => ls_php_port,
|
'storageUrlPort' => ls_php_port,
|
||||||
|
|
||||||
/* ================================================ archive configuration */
|
/* ================================================ archive configuration */
|
||||||
'archiveUrlPath' => 'ls_archiveUrlPath',
|
'archiveUrlPath' => 'ls_storageUrlPath',
|
||||||
'archiveXMLRPC' => 'xmlrpc/xrArchive.php',
|
'archiveXMLRPC' => 'xmlrpc/xrLocStor.php',
|
||||||
'archiveUrlHost' => 'ls_php_host',
|
'archiveUrlHost' => 'ls_php_host',
|
||||||
'archiveUrlPort' => ls_php_port,
|
'archiveUrlPort' => ls_php_port,
|
||||||
'archiveAccountLogin' => 'root',
|
'archiveAccountLogin' => 'root',
|
||||||
|
|
|
@ -43,8 +43,8 @@ $CC_CONFIG = array(
|
||||||
'storageUrlPort' => ls_php_port,
|
'storageUrlPort' => ls_php_port,
|
||||||
|
|
||||||
/* ================================================ archive configuration */
|
/* ================================================ archive configuration */
|
||||||
'archiveUrlPath' => 'ls_archiveUrlPath',
|
'archiveUrlPath' => 'ls_storageUrlPath',
|
||||||
'archiveXMLRPC' => 'xmlrpc/xrArchive.php',
|
'archiveXMLRPC' => 'xmlrpc/xrLocStor.php',
|
||||||
'archiveUrlHost' => 'ls_php_host',
|
'archiveUrlHost' => 'ls_php_host',
|
||||||
'archiveUrlPort' => ls_php_port,
|
'archiveUrlPort' => ls_php_port,
|
||||||
'archiveAccountLogin' => 'root',
|
'archiveAccountLogin' => 'root',
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Paul Baranowski <paul@paulbaranowski.org>
|
||||||
|
* @version $Revision: 2834 $
|
||||||
|
* @package Campcaster
|
||||||
|
* @subpackage StorageServer
|
||||||
|
* @copyright 2006 MDLF, Inc.
|
||||||
|
* @license http://www.gnu.org/licenses/gpl.txt
|
||||||
|
* @link http://www.campware.org
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Do not allow remote execution
|
||||||
|
$arr = array_diff_assoc($_SERVER, $_ENV);
|
||||||
|
if (isset($arr["DOCUMENT_ROOT"]) && ($arr["DOCUMENT_ROOT"] != "") ) {
|
||||||
|
header("HTTP/1.1 400");
|
||||||
|
header("Content-type: text/plain; charset=UTF-8");
|
||||||
|
echo "400 Not executable\r\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "*********************************************\n";
|
||||||
|
echo "* StorageServer Upgrade from 1.2.X to 1.3.0 *\n";
|
||||||
|
echo "*********************************************\n";
|
||||||
|
|
||||||
|
require_once(dirname(__FILE__).'/../../conf.php');
|
||||||
|
require_once(dirname(__FILE__)."/../installInit.php");
|
||||||
|
campcaster_db_connect();
|
||||||
|
require_once(dirname(__FILE__)."/../../StoredFile.php");
|
||||||
|
|
||||||
|
// Move audio clips from the archive to the local storage
|
||||||
|
|
||||||
|
echo "*******************************************\n";
|
||||||
|
echo "* StorageServer Upgrade to 1.3.0 Complete *\n";
|
||||||
|
echo "*******************************************\n";
|
||||||
|
|
||||||
|
?>
|
|
@ -3596,6 +3596,204 @@ class XR_LocStor extends LocStor {
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple ping method - return strtouppered string
|
||||||
|
*
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_ping($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
$res = date("Ymd-H:i:s")." Network hub answer: {$r['par']}";
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_uploadOpen($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
$res = $this->uploadOpen($r['sessid'], $r['chsum']);
|
||||||
|
if (PEAR::isError($res))
|
||||||
|
return new XML_RPC_Response(0, 803,
|
||||||
|
"xr_uploadOpen: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check state of file upload
|
||||||
|
*
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_uploadCheck($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
$res = $this->uploadCheck($r['token']);
|
||||||
|
if (PEAR::isError($res))
|
||||||
|
return new XML_RPC_Response(0, 803,
|
||||||
|
"xr_uploadCheck: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_uploadClose($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
$res = $this->uploadClose($r['token'], $r['trtype'], $r['pars']);
|
||||||
|
if (PEAR::isError($res)) {
|
||||||
|
$code = 803;
|
||||||
|
// Special case for duplicate file - give back
|
||||||
|
// different error code so we can display nice user message.
|
||||||
|
if ($res->getCode() == GBERR_GUNID) {
|
||||||
|
$code = 888;
|
||||||
|
}
|
||||||
|
return new XML_RPC_Response(0, $code,
|
||||||
|
"xr_uploadClose: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_downloadOpen($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
$res = $this->downloadOpen($r['sessid'], $r['trtype'], $r['pars']);
|
||||||
|
if (PEAR::isError($res))
|
||||||
|
return new XML_RPC_Response(0, 803,
|
||||||
|
"xr_downloadOpen: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_downloadClose($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
$res = $this->downloadClose($r['token'], $r['trtype']);
|
||||||
|
if (PEAR::isError($res))
|
||||||
|
return new XML_RPC_Response(0, 803,
|
||||||
|
"xr_downloadClose: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_prepareHubInitiatedTransfer($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
foreach (array('trtype'=>NULL, 'direction'=>'up', 'pars'=>array()) as $k => $dv) {
|
||||||
|
if (!isset($r[$k])) {
|
||||||
|
$r[$k] = $dv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$res = $this->prepareHubInitiatedTransfer(
|
||||||
|
$r['target'], $r['trtype'], $r['direction'], $r['pars']);
|
||||||
|
if (PEAR::isError($res))
|
||||||
|
return new XML_RPC_Response(0, 803,
|
||||||
|
"xr_prepareHubInitiatedTransfer: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_listHubInitiatedTransfers($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
foreach (array('target'=>NULL, 'direction'=>NULL, 'trtok'=>NULL) as $k=>$dv) {
|
||||||
|
if (!isset($r[$k])) {
|
||||||
|
$r[$k] = $dv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$res = $this->listHubInitiatedTransfers(
|
||||||
|
$r['target'], $r['direction'], $r['trtok']);
|
||||||
|
if (PEAR::isError($res))
|
||||||
|
return new XML_RPC_Response(0, 803,
|
||||||
|
"xr_listHubInitiatedTransfers: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param XML_RPC_Message $input
|
||||||
|
* @return XML_RPC_Response
|
||||||
|
*/
|
||||||
|
function xr_setHubInitiatedTransfer($input)
|
||||||
|
{
|
||||||
|
list($ok, $r) = XR_LocStor::xr_getParams($input);
|
||||||
|
if (!$ok) {
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
$res = $this->setHubInitiatedTransfer(
|
||||||
|
$r['target'], $r['trtok'], $r['state']);
|
||||||
|
if (PEAR::isError($res))
|
||||||
|
return new XML_RPC_Response(0, 803,
|
||||||
|
"xr_setHubInitiatedTransfer: ".$res->getMessage().
|
||||||
|
" ".$res->getUserInfo()
|
||||||
|
);
|
||||||
|
return new XML_RPC_Response(XML_RPC_encode($res));
|
||||||
|
}
|
||||||
|
|
||||||
/* ==================================================== "private" methods */
|
/* ==================================================== "private" methods */
|
||||||
/**
|
/**
|
||||||
* Check and convert struct of parameters
|
* Check and convert struct of parameters
|
||||||
|
|
|
@ -64,97 +64,105 @@ $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
|
||||||
$locStor = new XR_LocStor();
|
$locStor = new XR_LocStor();
|
||||||
|
|
||||||
$methods = array(
|
$methods = array(
|
||||||
'test' => 'Tests toupper and checks sessid, params: '.
|
'test' => 'Tests toupper and checks sessid, params: teststring, sessid.',
|
||||||
'teststring, sessid.',
|
'getVersion' => 'Dummy function for connection testing.',
|
||||||
'getVersion' => 'Dummy function for connection testing.',
|
'authenticate' => 'Checks authentication.',
|
||||||
'authenticate' => 'Checks authentication.',
|
'login' => 'Login to storage.',
|
||||||
'login' => 'Login to storage.',
|
'logout' => 'Logout from storage.',
|
||||||
'logout' => 'Logout from storage.',
|
'existsAudioClip' => 'Checks if an Audio clip with the specified '.
|
||||||
'existsAudioClip' => 'Checks if an Audio clip with the specified '.
|
'id is stored in local storage.',
|
||||||
'id is stored in local storage.',
|
'storeAudioClipOpen' => 'Open channel to store a new audio clip '.
|
||||||
'storeAudioClipOpen' => 'Open channel to store a new audio clip '.
|
'or replace an existing one.',
|
||||||
'or replace an existing one.',
|
'storeAudioClipClose' => 'Close channel to store a new audio clip'.
|
||||||
'storeAudioClipClose' => 'Close channel to store a new audio clip'.
|
' or replace an existing one.',
|
||||||
' or replace an existing one.',
|
|
||||||
'downloadRawAudioDataOpen'=> 'Create and return downloadable URL'.
|
'downloadRawAudioDataOpen'=> 'Create and return downloadable URL'.
|
||||||
'for audio file',
|
'for audio file',
|
||||||
'downloadRawAudioDataClose'=>'Discard downloadable URL for audio file',
|
'downloadRawAudioDataClose'=>'Discard downloadable URL for audio file',
|
||||||
'downloadMetadataOpen' => 'Create and return downloadable URL'.
|
'downloadMetadataOpen' => 'Create and return downloadable URL'.
|
||||||
'for metadata',
|
'for metadata',
|
||||||
'downloadMetadataClose' => 'Discard downloadable URL for metadata',
|
'downloadMetadataClose' => 'Discard downloadable URL for metadata',
|
||||||
'openPut' => 'openPut',
|
'openPut' => 'openPut',
|
||||||
'closePut' => 'closePut',
|
'closePut' => 'closePut',
|
||||||
'deleteAudioClip' => 'Delete an existing Audio clip.',
|
'deleteAudioClip' => 'Delete an existing Audio clip.',
|
||||||
'updateAudioClipMetadata' => 'Update the metadata of an Audio clip '.
|
'updateAudioClipMetadata' => 'Update the metadata of an Audio clip '.
|
||||||
'stored in Local storage.',
|
'stored in Local storage.',
|
||||||
'searchMetadata' => 'Search through the metadata of stored '.
|
'searchMetadata' => 'Search through the metadata of stored '.
|
||||||
'files, return all matching clip ids.',
|
'files, return all matching clip ids.',
|
||||||
'browseCategory' =>'Return values of specified metadata category.',
|
'browseCategory' =>'Return values of specified metadata category.',
|
||||||
'accessRawAudioData' => 'Get access to raw audio data.',
|
'accessRawAudioData' => 'Get access to raw audio data.',
|
||||||
'releaseRawAudioData' => 'Release access to raw audio data.',
|
'releaseRawAudioData' => 'Release access to raw audio data.',
|
||||||
'getAudioClip' => 'Return the contents of an Audio clip.',
|
'getAudioClip' => 'Return the contents of an Audio clip.',
|
||||||
'resetStorage' => 'Reset storageServer for debugging.',
|
'resetStorage' => 'Reset storageServer for debugging.',
|
||||||
'storeWebstream' => 'Store audio stream identified by URL',
|
'storeWebstream' => 'Store audio stream identified by URL',
|
||||||
|
|
||||||
'createPlaylist' => 'Create a new Playlist metafile.',
|
'createPlaylist' => 'Create a new Playlist metafile.',
|
||||||
'editPlaylist' => 'Open a Playlist metafile for editing.',
|
'editPlaylist' => 'Open a Playlist metafile for editing.',
|
||||||
'savePlaylist' => 'Save a Playlist metafile.',
|
'savePlaylist' => 'Save a Playlist metafile.',
|
||||||
'revertEditedPlaylist' => 'RollBack playlist changes to the locked state.',
|
'revertEditedPlaylist' => 'RollBack playlist changes to the locked state.',
|
||||||
'deletePlaylist' => 'Delete a Playlist metafile.',
|
'deletePlaylist' => 'Delete a Playlist metafile.',
|
||||||
'accessPlaylist' => 'Open readable URL to a Playlist metafile.',
|
'accessPlaylist' => 'Open readable URL to a Playlist metafile.',
|
||||||
'releasePlaylist' => 'Release readable URL from accessPlaylist.',
|
'releasePlaylist' => 'Release readable URL from accessPlaylist.',
|
||||||
'existsPlaylist' => 'Check whether a Playlist exists.',
|
'existsPlaylist' => 'Check whether a Playlist exists.',
|
||||||
'playlistIsAvailable' => 'Check whether a Playlist is available '.
|
'playlistIsAvailable' => 'Check whether a Playlist is available '.
|
||||||
'for editing.',
|
'for editing.',
|
||||||
'exportPlaylistOpen' => 'Create a tarfile with playlist export.',
|
'exportPlaylistOpen' => 'Create a tarfile with playlist export.',
|
||||||
'exportPlaylistClose' => 'Close playlist export.',
|
'exportPlaylistClose' => 'Close playlist export.',
|
||||||
'importPlaylistOpen' => 'Open writable handle for playlist import.',
|
'importPlaylistOpen' => 'Open writable handle for playlist import.',
|
||||||
'importPlaylistClose' => 'Close import-handle and import playlist.',
|
'importPlaylistClose' => 'Close import-handle and import playlist.',
|
||||||
|
|
||||||
'renderPlaylistToFileOpen' => 'Render playlist to ogg file (open handle)',
|
'renderPlaylistToFileOpen' => 'Render playlist to ogg file (open handle)',
|
||||||
'renderPlaylistToFileCheck' => 'Render playlist to ogg file (check results)',
|
'renderPlaylistToFileCheck' => 'Render playlist to ogg file (check results)',
|
||||||
'renderPlaylistToFileClose' => 'Render playlist to ogg file (close handle)',
|
'renderPlaylistToFileClose' => 'Render playlist to ogg file (close handle)',
|
||||||
|
|
||||||
'renderPlaylistToStorageOpen' => 'Render playlist to storage media clip (open handle)',
|
'renderPlaylistToStorageOpen' => 'Render playlist to storage media clip (open handle)',
|
||||||
'renderPlaylistToStorageCheck' => 'Render playlist to storage media clip (check results)',
|
'renderPlaylistToStorageCheck' => 'Render playlist to storage media clip (check results)',
|
||||||
|
|
||||||
'renderPlaylistToRSSOpen' => 'Render playlist to RSS file (open handle)',
|
'renderPlaylistToRSSOpen' => 'Render playlist to RSS file (open handle)',
|
||||||
'renderPlaylistToRSSCheck' => 'Render playlist to RSS file (check results)',
|
'renderPlaylistToRSSCheck' => 'Render playlist to RSS file (check results)',
|
||||||
'renderPlaylistToRSSClose' => 'Render playlist to RSS file (close handle)',
|
'renderPlaylistToRSSClose' => 'Render playlist to RSS file (close handle)',
|
||||||
|
|
||||||
'createBackupOpen' => 'Create backup of storage (open handle)',
|
'createBackupOpen' => 'Create backup of storage (open handle)',
|
||||||
'createBackupCheck' => 'Create backup of storage (check results)',
|
'createBackupCheck' => 'Create backup of storage (check results)',
|
||||||
'createBackupClose' => 'Create backup of storage (close handle)',
|
'createBackupClose' => 'Create backup of storage (close handle)',
|
||||||
|
|
||||||
'restoreBackupOpen' => 'Restore a backup file (open handle)',
|
'restoreBackupOpen' => 'Restore a backup file (open handle)',
|
||||||
'restoreBackupClosePut' => 'Restore a backup file (close PUT handle)',
|
'restoreBackupClosePut' => 'Restore a backup file (close PUT handle)',
|
||||||
'restoreBackupCheck' => 'Restore a backup file (check results)',
|
'restoreBackupCheck' => 'Restore a backup file (check results)',
|
||||||
'restoreBackupClose' => 'Restore a backup file (close handle)',
|
'restoreBackupClose' => 'Restore a backup file (close handle)',
|
||||||
|
|
||||||
'loadPref' => 'Load user preference value.',
|
'loadPref' => 'Load user preference value.',
|
||||||
'savePref' => 'Save user preference value.',
|
'savePref' => 'Save user preference value.',
|
||||||
'delPref' => 'Delete user preference record.',
|
'delPref' => 'Delete user preference record.',
|
||||||
'loadGroupPref' => 'Read group preference record.',
|
'loadGroupPref' => 'Read group preference record.',
|
||||||
'saveGroupPref' => 'Delete user preference record.',
|
'saveGroupPref' => 'Delete user preference record.',
|
||||||
|
|
||||||
'getTransportInfo' => 'Common "check" method and info getter for transports',
|
'getTransportInfo' => 'Common "check" method and info getter for transports',
|
||||||
'turnOnOffTransports' => 'Turn transports on/off, optionaly return current state',
|
'turnOnOffTransports' => 'Turn transports on/off, optionaly return current state',
|
||||||
'doTransportAction' => 'Pause, resume or cancel transport',
|
'doTransportAction' => 'Pause, resume or cancel transport',
|
||||||
'uploadFile2Hub' => 'Open async file transfer from local storageServer to network hub',
|
'uploadFile2Hub' => 'Open async file transfer from local storageServer to network hub',
|
||||||
'getHubInitiatedTransfers' => 'Get list of prepared transfers initiated by hub',
|
'getHubInitiatedTransfers' => 'Get list of prepared transfers initiated by hub',
|
||||||
'startHubInitiatedTransfer' => 'Start of download initiated by hub',
|
'startHubInitiatedTransfer' => 'Start of download initiated by hub',
|
||||||
'upload2Hub' => 'Start upload of audioclip or playlist from local storageServer to hub',
|
'upload2Hub' => 'Start upload of audioclip or playlist from local storageServer to hub',
|
||||||
'downloadFromHub' => 'Start download of audioclip or playlist from hub to local storageServer',
|
'downloadFromHub' => 'Start download of audioclip or playlist from hub to local storageServer',
|
||||||
'globalSearch' => 'Start search job on network hub',
|
'globalSearch' => 'Start search job on network hub',
|
||||||
'getSearchResults' => 'Get results from search job on network hub',
|
'getSearchResults' => 'Get results from search job on network hub',
|
||||||
|
|
||||||
|
'uploadOpen' => 'Open file-layer upload',
|
||||||
|
'uploadCheck' => 'Check the checksum of uploaded file',
|
||||||
|
'uploadClose' => 'Close file-layer upload',
|
||||||
|
'downloadOpen' => 'Open file-layer download',
|
||||||
|
// 'downloadCheck' => 'Check the checksum of downloaded file',
|
||||||
|
'downloadClose' => 'Close file-layer download',
|
||||||
|
'prepareHubInitiatedTransfer' => 'Prepare hub initiated transfer',
|
||||||
|
'listHubInitiatedTransfers' => 'List hub initiated transfers',
|
||||||
|
'setHubInitiatedTransfer' => 'Set state of hub initiated transfers',
|
||||||
|
'ping' => 'Echo request',
|
||||||
);
|
);
|
||||||
|
|
||||||
$defs = array();
|
$defs = array();
|
||||||
foreach ($methods as $method => $description) {
|
foreach ($methods as $method => $description) {
|
||||||
$defs["locstor.$method"] = array(
|
$defs["locstor.$method"] = array(
|
||||||
"function" => array(&$locStor, "xr_$method"),
|
"function" => array(&$locStor, "xr_$method"),
|
||||||
# "function" => "\$GLOBALS['locStor']->xr_$method",
|
|
||||||
"signature" => array(
|
"signature" => array(
|
||||||
array($GLOBALS['XML_RPC_Struct'], $GLOBALS['XML_RPC_Struct'])
|
array($GLOBALS['XML_RPC_Struct'], $GLOBALS['XML_RPC_Struct'])
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in New Issue