/usr/share/z-push/lib/request/getattachment.php is in z-push-common 2.3.8-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <?php
/***********************************************
* File : getattachment.php
* Project : Z-Push
* Descr : Provides the GETATTACHMENT command
*
* Created : 16.02.2012
*
* Copyright 2007 - 2016 Zarafa Deutschland GmbH
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Consult LICENSE file for details
************************************************/
class GetAttachment extends RequestProcessor {
/**
* Handles the GetAttachment command
*
* @param int $commandCode
*
* @access public
* @return boolean
*/
public function Handle($commandCode) {
$attname = Request::GetGETAttachmentName();
if(!$attname)
return false;
try {
$attachment = self::$backend->GetAttachmentData($attname);
$stream = $attachment->data;
ZLog::Write(LOGLEVEL_DEBUG, sprintf("HandleGetAttachment(): attachment stream from backend: %s", $stream));
// need to check for a resource here, as eg. feof('Error') === false and causing infinit loop in while!
if (!is_resource($stream))
throw new StatusException(sprintf("HandleGetAttachment(): No stream resource returned by backend for attachment: %s", $attname), SYNC_ITEMOPERATIONSSTATUS_INVALIDATT);
header("Content-Type: application/octet-stream");
self::$topCollector->AnnounceInformation("Starting attachment streaming", true);
$l = fpassthru($stream);
fclose($stream);
if ($l === false)
throw new FatalException("HandleGetAttachment(): fpassthru === false !!!");
self::$topCollector->AnnounceInformation(sprintf("Streamed %d KB attachment", round($l/1024)), true);
ZLog::Write(LOGLEVEL_DEBUG, sprintf("HandleGetAttachment(): attachment with %d KB sent to mobile", round($l/1024)));
}
catch (StatusException $s) {
// StatusException already logged so we just need to pass it upwards to send a HTTP error
throw new HTTPReturnCodeException($s->getMessage(), HTTP_CODE_500, null, LOGLEVEL_DEBUG);
}
return true;
}
}
|