type, "start");
// start
if ($interactive == 1)
$ch->start($transfer, true, (tfb_getRequestVar('queue') == '1') ? FluxdQmgr::isRunning() : false);
else
$ch->start($transfer, false, FluxdQmgr::isRunning());
// check
if ($ch->state == CLIENTHANDLER_STATE_ERROR) { // start failed
$msgs = array();
array_push($msgs, "transfer : ".$transfer);
array_push($msgs, "\nmessages :");
$msgs = array_merge($msgs, $ch->messages);
AuditAction($cfg["constants"]["error"], "Start failed: ".$transfer."\n".implode("\n", $ch->messages));
@error("Start failed", "", "", $msgs);
} else {
if (($interactive == 1) && (isset($_REQUEST["close"]))) {
echo '';
// Prevent dispatcher_exit from running and redirecting client, otherwise script won't be executed.
exit();
}
}
}
/**
* stopTransfer
*
* @param $transfer
*/
function dispatcher_stopTransfer($transfer) {
global $cfg;
// valid
if (tfb_isValidTransfer($transfer) !== true) {
AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: ".$transfer);
@error("Invalid Transfer", "", "", array($transfer));
}
// ch
$ch = ClientHandler::getInstance(getTransferClient($transfer));
// permission
dispatcher_checkTypePermission($transfer, $ch->type, "stop");
// stop
$ch->stop($transfer);
// check
if (count($ch->messages) > 0)
@error("There were Problems", "", "", $ch->messages);
}
/**
* restartTransfer
*
* @param $transfer
*/
function dispatcher_restartTransfer($transfer) {
global $cfg;
// stop if running
$tRunningFlag = isTransferRunning($transfer);
if ($tRunningFlag) {
dispatcher_stopTransfer($transfer);
$tRunningFlag = isTransferRunning($transfer);
}
// start if not running
if (!$tRunningFlag)
dispatcher_startTransfer($transfer);
}
/**
* forceStopTransfer
*
* @param $transfer
*/
function dispatcher_forceStopTransfer($transfer, $pid) {
global $cfg;
// valid
if (tfb_isValidTransfer($transfer) !== true) {
AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: ".$transfer);
@error("Invalid Transfer", "", "", array($transfer));
}
// ch
$ch = ClientHandler::getInstance(getTransferClient($transfer));
// permission
dispatcher_checkTypePermission($transfer, $ch->type, "forceStop");
// forceStop
$ch->stop($transfer, true, $pid);
// check
if (count($ch->messages) > 0)
@error("There were Problems", "", "", $ch->messages);
}
/**
* deleteTransfer
*
* @param $transfer
*/
function dispatcher_deleteTransfer($transfer) {
global $cfg;
// valid
if (tfb_isValidTransfer($transfer) !== true) {
AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: ".$transfer);
@error("Invalid Transfer", "", "", array($transfer));
}
// client
$client = getTransferClient($transfer);
// ch
$ch = ClientHandler::getInstance($client);
// permission
dispatcher_checkTypePermission($transfer, $ch->type, "delete");
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
if ($tRunningFlag) {
// stop first
$ch->stop($transfer);
if (count($ch->messages) > 0)
@error("There were Problems", "", "", $ch->messages);
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
}
// if it was running... hope the thing is down...
// only continue if it is
if ($tRunningFlag) {
@error("Delete failed, Transfer is running and stop failed", "", "", $ch->messages);
} else {
// delete
$ch->delete($transfer);
// check
if (count($ch->messages) > 0)
@error("There were Problems", "", "", $ch->messages);
}
}
/**
* deleteDataTransfer
*
* @param $transfer
*/
function dispatcher_deleteDataTransfer($transfer) {
global $cfg;
// valid
if (tfb_isValidTransfer($transfer) !== true) {
AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: ".$transfer);
@error("Invalid Transfer", "", "", array($transfer));
}
// client
$client = getTransferClient($transfer);
// ch
$ch = ClientHandler::getInstance($client);
// permission
dispatcher_checkTypePermission($transfer, $ch->type, "deleteWithData");
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
if ($tRunningFlag) {
// stop first
$ch->stop($transfer);
if (count($ch->messages) > 0)
@error("There were Problems", "", "", $ch->messages);
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
}
// if it was running... hope the thing is down...
// only continue if it is
if ($tRunningFlag) {
@error("Delete with Data failed, Transfer is running and stop failed", "", "", $ch->messages);
} else {
// transferData
$msgsDelete = deleteTransferData($transfer);
if (count($msgsDelete) > 0)
@error("There were Problems deleting Transfer-Data", "", "", $msgsDelete);
// transfer
$ch->delete($transfer);
if (count($ch->messages) > 0)
@error("There were Problems", "", "", $ch->messages);
}
}
/**
* wipeTransfer
*
* @param $transfer
*/
function dispatcher_wipeTransfer($transfer) {
global $cfg;
// valid
if (tfb_isValidTransfer($transfer) !== true) {
AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: ".$transfer);
@error("Invalid Transfer", "", "", array($transfer));
}
// client
$client = getTransferClient($transfer);
// ch
$ch = ClientHandler::getInstance($client);
// permission
dispatcher_checkTypePermission($transfer, $ch->type, "wipe");
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
if ($tRunningFlag) {
// stop first
$ch->stop($transfer);
if (count($ch->messages) > 0)
@error("There were Problems", "", "", $ch->messages);
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
}
// if it was running... hope the thing is down...
// only continue if it is
if ($tRunningFlag) {
@error("Wipe failed, Transfer is running and stop failed", "", "", $ch->messages);
} else {
// transferData
$msgsDelete = deleteTransferData($transfer);
if (count($msgsDelete) > 0)
@error("There were Problems deleting Transfer-Data", "", "", $msgsDelete);
// totals + t
$msgsReset = resetTransferTotals($transfer, true);
if (count($msgsReset) > 0)
@error("There were Problems wiping the Transfer", "", "", $msgsReset);
}
}
/**
* deQueueTransfer
*
* @param $transfer
*/
function dispatcher_deQueueTransfer($transfer) {
global $cfg;
// valid
if (tfb_isValidTransfer($transfer) !== true) {
AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: ".$transfer);
@error("Invalid Transfer", "", "", array($transfer));
}
// ch
$ch = ClientHandler::getInstance(getTransferClient($transfer));
// permission
dispatcher_checkTypePermission($transfer, $ch->type, "dequeue");
// dequeue
FluxdQmgr::dequeueTransfer($transfer, $cfg['user']);
}
/**
* injectWget
*
* @param $url
*/
function dispatcher_injectWget($url) {
global $cfg;
// permission
dispatcher_checkTypePermission($url, 'wget', "inject");
// inject
if (!empty($url)) {
$ch = ClientHandler::getInstance('wget');
$ch->inject($url);
// instant action ?
$actionId = tfb_getRequestVar('aid');
if ($actionId > 1) {
switch ($actionId) {
case 3:
$ch->start($ch->transfer, false, true);
break;
case 2:
$ch->start($ch->transfer, false, false);
break;
}
if ($ch->state == CLIENTHANDLER_STATE_ERROR) { // start failed
$msgs = array();
array_push($msgs, "url : ".$url);
array_push($msgs, "\nmessages :");
$msgs = array_merge($msgs, $ch->messages);
AuditAction($cfg["constants"]["error"], "Start failed: ".$url."\n".implode("\n", $ch->messages));
@error("Start failed", "", "", $msgs);
}
}
}
}
/**
* setFilePriority
*
* @param $transfer
*/
function dispatcher_setFilePriority($transfer) {
global $cfg;
if ($cfg["enable_file_priority"])
setFilePriority($transfer);
}
/**
* set
*
* @param $key
* @param $val
*/
function dispatcher_set($key, $val) {
if (!empty($key)) {
if ($key == "_all_") {
$keys = array_keys($_SESSION['settings']);
foreach ($keys as $settingKey)
$_SESSION['settings'][$settingKey] = $val;
} elseif ($key == "_refresh_") {
$_SESSION['settings']['index_ajax_update'] = $val;
$_SESSION['settings']['index_meta_refresh'] = $val;
} else {
$_SESSION['settings'][$key] = $val;
}
}
}
/**
* bulk
*
* @param $op
*/
function dispatcher_bulk($op) {
global $cfg;
// is enabled ?
if ($cfg["enable_bulkops"] != 1) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use ".$op);
@error("bulkops are disabled", "", "");
}
// messages
$dispatcherMessages = array();
// op-switch
switch ($op) {
case "stop":
$transferList = getTransferArray();
foreach ($transferList as $transfer) {
if (isTransferRunning($transfer)) {
if (($cfg['isAdmin']) || (IsOwner($cfg["user"], getOwner($transfer)))) {
$ch = ClientHandler::getInstance(getTransferClient($transfer));
$ch->stop($transfer);
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
}
}
}
break;
case "resume":
$transferList = getTransferArray();
$sf = new StatFile("");
foreach ($transferList as $transfer) {
$sf->init($transfer);
if (((trim($sf->running)) == 0) && (!isTransferRunning($transfer))) {
if (($cfg['isAdmin']) || (IsOwner($cfg["user"], getOwner($transfer)))) {
$ch = ClientHandler::getInstance(getTransferClient($transfer));
$ch->start($transfer, false, false);
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
}
}
}
break;
case "start":
$transferList = getTransferArray();
foreach ($transferList as $transfer) {
if (!isTransferRunning($transfer)) {
if (($cfg['isAdmin']) || (IsOwner($cfg["user"], getOwner($transfer)))) {
$ch = ClientHandler::getInstance(getTransferClient($transfer));
$ch->start($transfer, false, false);
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
}
}
}
break;
}
// error if messages
if (count($dispatcherMessages) > 0)
@error("There were Problems", "", "", $dispatcherMessages);
}
/**
* multi
*
* @param $action
*/
function dispatcher_multi($action) {
global $cfg;
// is enabled ?
if ($cfg["enable_multiops"] != 1) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use multi-op ".$action);
@error("multiops are disabled", "", "");
}
// messages-ary
$dispatcherMessages = array();
// loop
if (empty($_POST['transfer'])) return;
foreach ($_POST['transfer'] as $key => $element) {
// url-decode
$transfer = urldecode($element);
// is valid transfer ? + check permissions
$invalid = true;
if (tfb_isValidTransfer($transfer) === true) {
if (substr($transfer, -8) == ".torrent") {
// this is a torrent-client
$invalid = false;
} else if (substr($transfer, -5) == ".wget") {
// this is wget.
$invalid = false;
// is enabled ?
if ($cfg["enable_wget"] == 0) {
$invalid = true;
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use wget");
array_push($dispatcherMessages, "wget is disabled : ".$transfer);
} else if ($cfg["enable_wget"] == 1) {
if (!$cfg['isAdmin']) {
$invalid = true;
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use wget");
array_push($dispatcherMessages, "wget is disabled for users : ".$transfer);
}
}
} else if (substr($transfer, -4) == ".nzb") {
// This is nzbperl.
$invalid = false;
if ($cfg["enable_nzbperl"] == 0) {
$invalid = true;
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use nzbperl");
array_push($dispatcherMessages, "nzbperl is disabled : ".$transfer);
} else if ($cfg["enable_nzbperl"] == 1) {
if (!$cfg['isAdmin']) {
$invalid = true;
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use nzbperl");
array_push($dispatcherMessages, "nzbperl is disabled for users : ".$transfer);
}
}
}
}
if ($invalid) {
AuditAction($cfg["constants"]["error"], "INVALID TRANSFER: ".$cfg["user"]." tried to ".$action." ".$transfer);
array_push($dispatcherMessages, "Invalid Transfer : ".$transfer);
continue;
}
// client
$client = getTransferClient($transfer);
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
// action switch
switch ($action) {
case "transferStart": /* transferStart */
if (!$tRunningFlag) {
$ch = ClientHandler::getInstance($client);
$ch->start($transfer, false, FluxdQmgr::isRunning());
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
}
break;
case "transferStop": /* transferStop */
if ($tRunningFlag) {
$ch = ClientHandler::getInstance($client);
$ch->stop($transfer);
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
}
break;
case "transferEnQueue": /* transferEnQueue */
if (!$tRunningFlag) {
// enqueue it
$ch = ClientHandler::getInstance($client);
$ch->start($transfer, false, true);
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
}
break;
case "transferDeQueue": /* transferDeQueue */
if (!$tRunningFlag) {
// dequeue it
FluxdQmgr::dequeueTransfer($transfer, $cfg['user']);
}
break;
case "transferResetTotals": /* transferResetTotals */
$msgs = resetTransferTotals($transfer, false);
if (count($msgs) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $msgs);
break;
default:
if ($tRunningFlag) {
// stop first
$ch = ClientHandler::getInstance($client);
$ch->stop($transfer);
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
// is transfer running ?
$tRunningFlag = isTransferRunning($transfer);
}
// if it was running... hope the thing is down...
// only continue if it is
if (!$tRunningFlag) {
switch ($action) {
case "transferWipe": /* transferWipe */
$msgsDelete = deleteTransferData($transfer);
if (count($msgsDelete) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $msgsDelete);
$msgsReset = resetTransferTotals($transfer, true);
if (count($msgsReset) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $msgsReset);
break;
case "transferData": /* transferData */
$msgsDelete = deleteTransferData($transfer);
if (count($msgsDelete) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $msgsDelete);
case "transfer": /* transfer */
$ch = ClientHandler::getInstance($client);
$ch->delete($transfer);
if (count($ch->messages) > 0)
$dispatcherMessages = array_merge($dispatcherMessages, $ch->messages);
}
}
} // end switch
} // end loop
// error if messages
if (count($dispatcherMessages) > 0)
@error("There were Problems", "", "", $dispatcherMessages);
}
/**
* processDownload
*
* @param $url url of metafile to download
*/
function dispatcher_processDownload($url, $type = 'torrent') {
global $cfg;
switch ($type) {
default:
case 'torrent':
// process download
_dispatcher_processDownload($url, 'torrent', '.torrent');
break;
case 'nzb':
// is enabled ?
if ($cfg["enable_nzbperl"] == 0) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use nzb-download");
@error("nzbperl is disabled", "", "");
} else if ($cfg["enable_nzbperl"] == 1) {
if (!$cfg['isAdmin']) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use nzb-download");
@error("nzbperl is disabled for users", "", "");
}
}
// process download
_dispatcher_processDownload($url, 'nzb', '.nzb');
break;
}
}
/**
* (internal) Function with which metafiles are downloaded and injected
*
* @param $url url to download
* @param $type
*/
function _dispatcher_processDownload($url, $type = 'torrent', $ext = '.torrent') {
global $cfg;
$filename = "";
$downloadMessages = array();
if (!empty($url)) {
$arURL = explode("/", $url);
$filename = urldecode($arURL[count($arURL)-1]); // get the file name
$filename = str_replace(array("'",","), "", $filename);
$filename = stripslashes($filename);
// Check to see if url has something like ?passkey=12345
// If so remove it.
if (($point = strrpos($filename, "?")) !== false )
$filename = substr($filename, 0, $point);
$ret = strrpos($filename, ".");
if ($ret === false) {
$filename .= $ext;
} else {
if (!strcmp(strtolower(substr($filename, -(strlen($ext)))), $ext) == 0)
$filename .= $ext;
}
$url = str_replace(" ", "%20", $url);
// This is to support Sites that pass an id along with the url for downloads.
$tmpId = tfb_getRequestVar("id");
if(!empty($tmpId))
$url .= "&id=".$tmpId;
// retrieve the file
require_once("inc/classes/SimpleHTTP.php");
$content = "";
switch ($type) {
default:
case 'torrent':
$content = SimpleHTTP::getTorrent($url);
break;
case 'nzb':
$content = SimpleHTTP::getNzb($url);
break;
}
if ((SimpleHTTP::getState() == SIMPLEHTTP_STATE_OK) && (strlen($content) > 0)) {
$fileNameBackup = $filename;
$filename = SimpleHTTP::getFilename();
if ($filename != "") {
$filename = ((strpos($filename, $ext) !== false))
? tfb_cleanFileName($filename)
: tfb_cleanFileName($filename.$ext);
}
if (($filename == "") || ($filename === false) || (transferExists($filename))) {
$filename = tfb_cleanFileName($fileNameBackup);
if (($filename === false) || (transferExists($filename))) {
$filename = tfb_cleanFileName($url.$ext);
if (($filename === false) || (transferExists($filename))) {
$filename = tfb_cleanFileName(md5($url.strval(@microtime())).$ext);
if (($filename === false) || (transferExists($filename))) {
// Error
array_push($downloadMessages , "failed to get a valid transfer-filename for ".$url);
}
}
}
}
if (empty($downloadMessages)) { // no messages
// check if content contains html
if ($cfg['debuglevel'] > 0) {
if (strpos($content, "
") !== false)
AuditAction($cfg["constants"]["debug"], "download-content contained html : ".htmlentities(addslashes($url), ENT_QUOTES));
}
if (is_file($cfg["transfer_file_path"].$filename)) {
// Error
array_push($downloadMessages, "the file ".$filename." already exists on the server.");
} else {
// write to file
$handle = false;
$handle = @fopen($cfg["transfer_file_path"].$filename, "w");
if (!$handle) {
array_push($downloadMessages, "cannot open ".$filename." for writing.");
} else {
$result = @fwrite($handle, $content);
@fclose($handle);
if ($result === false)
array_push($downloadMessages, "cannot write content to ".$filename.".");
}
}
}
} else {
$msgs = SimpleHTTP::getMessages();
if (count($msgs) > 0)
$downloadMessages = array_merge($downloadMessages, $msgs);
}
if (empty($downloadMessages)) { // no messages
AuditAction($cfg["constants"]["url_upload"], $filename);
// inject
injectTransfer($filename);
// instant action ?
$actionId = tfb_getRequestVar('aid');
if ($actionId > 1) {
$ch = ClientHandler::getInstance(getTransferClient($filename));
switch ($actionId) {
case 3:
$ch->start($filename, false, true);
break;
case 2:
$ch->start($filename, false, false);
break;
}
if (count($ch->messages) > 0)
$downloadMessages = array_merge($downloadMessages, $ch->messages);
}
}
} else {
array_push($downloadMessages, "Invalid Url : ".$url);
}
if (count($downloadMessages) > 0) {
AuditAction($cfg["constants"]["error"], $cfg["constants"]["url_upload"]." :: ".$filename);
@error("There were Problems", "", "", $downloadMessages);
}
}
/**
* processUpload
*/
function dispatcher_processUpload() {
global $cfg;
// check if files exist
if (empty($_FILES)) {
// log
AuditAction($cfg["constants"]["error"], "no file in file-upload");
// return
return;
}
// action-id
$actionId = tfb_getRequestVar('aid');
// file upload
$uploadMessages = array();
// stack
$tStack = array();
// process upload
while (count($_FILES) > 0) {
$upload = array_shift($_FILES);
if (is_array($upload['size'])) {
foreach ($upload['size'] as $id => $size) {
if ($size > 0) {
_dispatcher_processUpload(
$upload['name'][$id], $upload['tmp_name'][$id], $size,
$actionId, $uploadMessages, $tStack);
}
}
} else {
if ($upload['size'] > 0) {
_dispatcher_processUpload(
$upload['name'], $upload['tmp_name'], $upload['size'],
$actionId, $uploadMessages, $tStack);
}
}
}
// instant action ?
if (($actionId > 1) && (!empty($tStack))) {
foreach ($tStack as $transfer) {
$ch = ClientHandler::getInstance(getTransferClient($transfer));
switch ($actionId) {
case 3:
$ch->start($transfer, false, true);
break;
case 2:
$ch->start($transfer, false, false);
break;
}
if (count($ch->messages) > 0)
$uploadMessages = array_merge($uploadMessages, $ch->messages);
}
}
// messages
if (count($uploadMessages) > 0) {
@error("There were Problems", "", "", $uploadMessages);
}
}
/**
* _dispatcher_processUpload
*
* @param $name
* @param $tmp_name
* @param $size
* @param $actionId
* @param &$uploadMessages
* @param &$tStack
* @return bool
*/
function _dispatcher_processUpload($name, $tmp_name, $size, $actionId, &$uploadMessages, &$tStack) {
global $cfg;
$filename = tfb_cleanFileName(stripslashes($name));
if ($filename === false) {
// invalid file
array_push($uploadMessages, "The type of file ".stripslashes($name)." is not allowed.");
array_push($uploadMessages, "\nvalid file-extensions: ");
array_push($uploadMessages, $cfg["file_types_label"]);
return false;
} else {
// file is valid
if (substr($filename, -5) == ".wget") {
// is enabled ?
if ($cfg["enable_wget"] == 0) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to upload wget-file ".$filename);
array_push($uploadMessages, "wget is disabled : ".$filename);
return false;
} else if ($cfg["enable_wget"] == 1) {
if (!$cfg['isAdmin']) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to upload wget-file ".$filename);
array_push($uploadMessages, "wget is disabled for users : ".$filename);
return false;
}
}
} else if (substr($filename, -4) == ".nzb") {
// is enabled ?
if ($cfg["enable_nzbperl"] == 0) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to upload nzb-file ".$filename);
array_push($uploadMessages, "nzbperl is disabled : ".$filename);
return false;
} else if ($cfg["enable_nzbperl"] == 1) {
if (!$cfg['isAdmin']) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to upload nzb-file ".$filename);
array_push($uploadMessages, "nzbperl is disabled for users : ".$filename);
return false;
}
}
}
if ($size <= $cfg["upload_limit"] && $size > 0) {
//FILE IS BEING UPLOADED
if (@is_file($cfg["transfer_file_path"].$filename)) {
// Error
array_push($uploadMessages, "the file ".$filename." already exists on the server.");
return false;
} else {
if (@move_uploaded_file($tmp_name, $cfg["transfer_file_path"].$filename)) {
@chmod($cfg["transfer_file_path"].$filename, 0644);
AuditAction($cfg["constants"]["file_upload"], $filename);
// inject
injectTransfer($filename);
// instant action ?
if ($actionId > 1)
array_push($tStack,$filename);
// return
return true;
} else {
array_push($uploadMessages, "File not uploaded, file could not be found or could not be moved: ".$cfg["transfer_file_path"].$filename);
return false;
}
}
} else {
array_push($uploadMessages, "File not uploaded, file size limit is ".$cfg["upload_limit"].". file has ".$size);
return false;
}
}
}
/**
* sendMetafile
*
* @param $mfile
*/
function dispatcher_sendMetafile($mfile) {
global $cfg;
// is enabled ?
if ($cfg["enable_metafile_download"] != 1) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to download a metafile");
@error("metafile download is disabled", "", "");
}
if (tfb_isValidTransfer($mfile) === true) {
// Does the file exist?
if (@file_exists($cfg["transfer_file_path"].$mfile)) {
// filenames in IE containing dots will screw up the filename
$headerName = (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
? preg_replace('/\./', '%2e', $mfile, substr_count($mfile, '.') - 1)
: $mfile;
// Prompt the user to download file.
if (substr($mfile, -8) == ".torrent")
@header("Content-type: application/x-bittorrent\n");
else
@header( "Content-type: application/octet-stream\n" );
@header("Content-disposition: attachment; filename=\"".$headerName."\"\n");
@header("Content-transfer-encoding: binary\n");
@header("Content-length: ".@filesize($cfg["transfer_file_path"].$mfile)."\n");
// write the session to close so you can continue to browse on the site.
@session_write_close();
// Send the file
$fp = @fopen($cfg["transfer_file_path"].$mfile, "r");
@fpassthru($fp);
@fclose($fp);
AuditAction($cfg["constants"]["fm_download"], $mfile);
exit();
} else {
AuditAction($cfg["constants"]["error"], "File Not found for download: ".$mfile);
@error("File Not found for download", "", "", array($mfile));
}
} else {
AuditAction($cfg["constants"]["error"], "ILLEGAL DOWNLOAD: ".$mfile);
@error("Invalid File", "", "", array($mfile));
}
}
/**
* checkTypePermission
*
* @param $transfer
* @param $type
* @param $action
*/
function dispatcher_checkTypePermission($transfer, $type, $action) {
global $cfg;
switch ($type) {
case "wget":
// is enabled ?
if ($cfg["enable_wget"] == 0) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use ".$action.". wget-transfer: ".$transfer);
@error("wget is disabled", "", "");
} else if ($cfg["enable_wget"] == 1) {
if (!$cfg['isAdmin']) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use ".$action.". wget-transfer: ".$transfer);
@error("wget is disabled for users", "", "");
}
}
break;
case "nzb":
// is enabled ?
if ($cfg["enable_nzbperl"] == 0) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use ".$action.". nzb-transfer: ".$transfer);
@error("nzbperl is disabled", "", "");
} else if ($cfg["enable_nzbperl"] == 1) {
if (!$cfg['isAdmin']) {
AuditAction($cfg["constants"]["error"], "ILLEGAL ACCESS: ".$cfg["user"]." tried to use ".$action.". nzb-transfer: ".$transfer);
@error("nzbperl is disabled for users", "", "");
}
}
break;
}
}
/**
* exit
*/
function dispatcher_exit() {
global $cfg;
$redir = (isset($_REQUEST['riid']))
? tfb_getRequestVar('riid')
: "index";
switch ($redir) {
case "_exit_":
exit("1");
case "_none_":
break;
case "_referer_":
if (isset($_SERVER["HTTP_REFERER"]))
@header("location: ".$_SERVER["HTTP_REFERER"]);
break;
default:
if (preg_match('/^[a-zA-Z]+$/D', $redir)) {
@header("location: index.php?iid=".$redir);
} else {
AuditAction($cfg["constants"]["error"], "INVALID PAGE (riid): ".$redir);
@error("Invalid Page", "", "", array($redir));
}
}
// exit
exit();
}
?>