Procházet zdrojové kódy

Allow URI as data for vcard PHOTO

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
tags/v16.0.0alpha1
John Molakvoæ (skjnldsv) před 5 roky
rodič
revize
fa6c257084
Žádný účet není propojen s e-mailovou adresou tvůrce revize

+ 1
- 0
apps/dav/lib/CardDAV/ImageExportPlugin.php Zobrazit soubor

@@ -108,6 +108,7 @@ class ImageExportPlugin extends ServerPlugin {

$response->setBody($file->getContent());
} catch (NotFoundException $e) {
var_dump($e);
$response->setStatus(404);
}


+ 9
- 4
apps/dav/lib/CardDAV/PhotoCache.php Zobrazit soubor

@@ -30,6 +30,7 @@ use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
use Sabre\CardDAV\Card;
use Sabre\VObject\Property\Binary;
use Sabre\VObject\Property\Uri;
use Sabre\VObject\Reader;

class PhotoCache {
@@ -193,12 +194,13 @@ class PhotoCache {
}

$photo = $vObject->PHOTO;
$type = $this->getType($photo);

$val = $photo->getValue();

// handle data URI. e.g PHOTO;VALUE=URI:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQE
if ($photo->getValueType() === 'URI') {
$parsed = \Sabre\URI\parse($val);
//only allow data://

// only allow data://
if ($parsed['scheme'] !== 'data') {
return false;
}
@@ -206,6 +208,9 @@ class PhotoCache {
list($type,) = explode(';', $parsed['path']);
}
$val = file_get_contents($val);
} else {
// get type if binary data
$type = $this->getBinaryType($photo);
}

$allowedContentTypes = [
@@ -240,7 +245,7 @@ class PhotoCache {
* @param Binary $photo
* @return string
*/
private function getType(Binary $photo) {
private function getBinaryType(Binary $photo) {
$params = $photo->parameters();
if (isset($params['TYPE']) || isset($params['MEDIATYPE'])) {
/** @var Parameter $typeParam */

Načítá se…
Zrušit
Uložit