summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2013-07-30 12:29:12 +0200
committerGeorg Ehrke <developer@georgehrke.com>2013-07-30 12:33:54 +0200
commitac6a3133eca86b853da838ae310534b76e9fb662 (patch)
treed74eab54dcc560ca77b5561892363971d710ee19 /core
parent7425efade78a04f20cb3cc83f964c6a00094b6ce (diff)
downloadnextcloud-server-ac6a3133eca86b853da838ae310534b76e9fb662.tar.gz
nextcloud-server-ac6a3133eca86b853da838ae310534b76e9fb662.zip
style fixes
Diffstat (limited to 'core')
-rw-r--r--core/ajax/preview.php42
-rw-r--r--core/ajax/publicpreview.php92
-rw-r--r--core/ajax/trashbinpreview.php46
-rw-r--r--core/routes.php6
4 files changed, 183 insertions, 3 deletions
diff --git a/core/ajax/preview.php b/core/ajax/preview.php
new file mode 100644
index 00000000000..a9d127ffcc4
--- /dev/null
+++ b/core/ajax/preview.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Copyright (c) 2013 Georg Ehrke georg@ownCloud.com
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+\OC_Util::checkLoggedIn();
+
+$file = array_key_exists('file', $_GET) ? (string) urldecode($_GET['file']) : '';
+$maxX = array_key_exists('x', $_GET) ? (int) $_GET['x'] : '36';
+$maxY = array_key_exists('y', $_GET) ? (int) $_GET['y'] : '36';
+$scalingUp = array_key_exists('scalingup', $_GET) ? (bool) $_GET['scalingup'] : true;
+
+if($file === '') {
+ \OC_Response::setStatus(400); //400 Bad Request
+ \OC_Log::write('core-preview', 'No file parameter was passed', \OC_Log::DEBUG);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+if($maxX === 0 || $maxY === 0) {
+ \OC_Response::setStatus(400); //400 Bad Request
+ \OC_Log::write('core-preview', 'x and/or y set to 0', \OC_Log::DEBUG);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+try{
+ $preview = new \OC\Preview(\OC_User::getUser(), 'files');
+ $preview->setFile($file);
+ $preview->setMaxX($maxX);
+ $preview->setMaxY($maxY);
+ $preview->setScalingUp($scalingUp);
+
+ $preview->show();
+}catch(\Exception $e) {
+ \OC_Response::setStatus(500);
+ \OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR);
+ \OC\Preview::showErrorPreview();
+ exit;
+} \ No newline at end of file
diff --git a/core/ajax/publicpreview.php b/core/ajax/publicpreview.php
new file mode 100644
index 00000000000..aace24caa21
--- /dev/null
+++ b/core/ajax/publicpreview.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Copyright (c) 2013 Georg Ehrke georg@ownCloud.com
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+if(!\OC_App::isEnabled('files_sharing')){
+ exit;
+}
+
+$file = array_key_exists('file', $_GET) ? (string) urldecode($_GET['file']) : '';
+$maxX = array_key_exists('x', $_GET) ? (int) $_GET['x'] : '36';
+$maxY = array_key_exists('y', $_GET) ? (int) $_GET['y'] : '36';
+$scalingUp = array_key_exists('scalingup', $_GET) ? (bool) $_GET['scalingup'] : true;
+$token = array_key_exists('t', $_GET) ? (string) $_GET['t'] : '';
+
+if($token === ''){
+ \OC_Response::setStatus(400); //400 Bad Request
+ \OC_Log::write('core-preview', 'No token parameter was passed', \OC_Log::DEBUG);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+$linkedItem = \OCP\Share::getShareByToken($token);
+if($linkedItem === false || ($linkedItem['item_type'] !== 'file' && $linkedItem['item_type'] !== 'folder')) {
+ \OC_Response::setStatus(404);
+ \OC_Log::write('core-preview', 'Passed token parameter is not valid', \OC_Log::DEBUG);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+if(!isset($linkedItem['uid_owner']) || !isset($linkedItem['file_source'])) {
+ \OC_Response::setStatus(500);
+ \OC_Log::write('core-preview', 'Passed token seems to be valid, but it does not contain all necessary information . ("' . $token . '")', \OC_Log::WARN);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+$userId = $linkedItem['uid_owner'];
+\OC_Util::setupFS($userId);
+
+$pathId = $linkedItem['file_source'];
+$path = \OC\Files\Filesystem::getPath($pathId);
+$pathInfo = \OC\Files\Filesystem::getFileInfo($path);
+$sharedFile = null;
+
+if($linkedItem['item_type'] === 'folder') {
+ $isvalid = \OC\Files\Filesystem::isValidPath($file);
+ if(!$isvalid) {
+ \OC_Response::setStatus(400); //400 Bad Request
+ \OC_Log::write('core-preview', 'Passed filename is not valid, might be malicious (file:"' . $file . '";ip:"' . $_SERVER['REMOTE_ADDR'] . '")', \OC_Log::WARN);
+ \OC\Preview::showErrorPreview();
+ exit;
+ }
+ $sharedFile = \OC\Files\Filesystem::normalizePath($file);
+}
+
+if($linkedItem['item_type'] === 'file') {
+ $parent = $pathInfo['parent'];
+ $path = \OC\Files\Filesystem::getPath($parent);
+ $sharedFile = $pathInfo['name'];
+}
+
+$path = \OC\Files\Filesystem::normalizePath($path, false);
+if(substr($path, 0, 1) === '/') {
+ $path = substr($path, 1);
+}
+
+if($maxX === 0 || $maxY === 0) {
+ \OC_Response::setStatus(400); //400 Bad Request
+ \OC_Log::write('core-preview', 'x and/or y set to 0', \OC_Log::DEBUG);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+$root = 'files/' . $path;
+
+try{
+ $preview = new \OC\Preview($userId, $root);
+ $preview->setFile($sharedFile);
+ $preview->setMaxX($maxX);
+ $preview->setMaxY($maxY);
+ $preview->setScalingUp($scalingUp);
+
+ $preview->show();
+}catch(\Exception $e) {
+ \OC_Response::setStatus(500);
+ \OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR);
+ \OC\Preview::showErrorPreview();
+ exit;
+} \ No newline at end of file
diff --git a/core/ajax/trashbinpreview.php b/core/ajax/trashbinpreview.php
new file mode 100644
index 00000000000..d018a57d37b
--- /dev/null
+++ b/core/ajax/trashbinpreview.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright (c) 2013 Georg Ehrke georg@ownCloud.com
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+\OC_Util::checkLoggedIn();
+
+if(!\OC_App::isEnabled('files_trashbin')){
+ exit;
+}
+
+$file = array_key_exists('file', $_GET) ? (string) urldecode($_GET['file']) : '';
+$maxX = array_key_exists('x', $_GET) ? (int) $_GET['x'] : '44';
+$maxY = array_key_exists('y', $_GET) ? (int) $_GET['y'] : '44';
+$scalingUp = array_key_exists('scalingup', $_GET) ? (bool) $_GET['scalingup'] : true;
+
+if($file === '') {
+ \OC_Response::setStatus(400); //400 Bad Request
+ \OC_Log::write('core-preview', 'No file parameter was passed', \OC_Log::DEBUG);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+if($maxX === 0 || $maxY === 0) {
+ \OC_Response::setStatus(400); //400 Bad Request
+ \OC_Log::write('core-preview', 'x and/or y set to 0', \OC_Log::DEBUG);
+ \OC\Preview::showErrorPreview();
+ exit;
+}
+
+try{
+ $preview = new \OC\Preview(\OC_User::getUser(), 'files_trashbin/files');
+ $preview->setFile($file);
+ $preview->setMaxX($maxX);
+ $preview->setMaxY($maxY);
+ $preview->setScalingUp($scalingUp);
+
+ $preview->showPreview();
+}catch(\Exception $e) {
+ \OC_Response::setStatus(500);
+ \OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR);
+ \OC\Preview::showErrorPreview();
+ exit;
+} \ No newline at end of file
diff --git a/core/routes.php b/core/routes.php
index 41e82f8a73d..75cc4d511c0 100644
--- a/core/routes.php
+++ b/core/routes.php
@@ -43,11 +43,11 @@ $this->create('js_config', '/core/js/config.js')
$this->create('core_ajax_routes', '/core/routes.json')
->action('OC_Router', 'JSRoutes');
$this->create('core_ajax_preview', '/core/preview.png')
- ->action('OC\Preview', 'previewRouter');
+ ->actionInclude('core/ajax/preview.php');
$this->create('core_ajax_trashbin_preview', '/core/trashbinpreview.png')
- ->action('OC\Preview', 'trashbinPreviewRouter');
+ ->actionInclude('core/ajax/trashbinpreview.php');
$this->create('core_ajax_public_preview', '/core/publicpreview.png')
- ->action('OC\Preview', 'publicPreviewRouter');
+ ->actionInclude('core/ajax/publicpreview.php');
OC::$CLASSPATH['OC_Core_LostPassword_Controller'] = 'core/lostpassword/controller.php';
$this->create('core_lostpassword_index', '/lostpassword/')
->get()