public function __construct(FederatedShareProvider $federatedShareProvider = null) { if ($federatedShareProvider) { $this->federatedShareProvider = $federatedShareProvider; } else { $federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing'); $this->federatedShareProvider = $federatedSharingApp->getFederatedShareProvider(); } }
public function __construct(array $urlParams = array()) { parent::__construct('files_sharing', $urlParams); $container = $this->getContainer(); $server = $container->getServer(); /** * Controllers */ $container->registerService('ShareController', function (SimpleContainer $c) use($server) { $federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing'); return new ShareController($c->query('AppName'), $c->query('Request'), $server->getConfig(), $server->getURLGenerator(), $server->getUserManager(), $server->getLogger(), $server->getActivityManager(), $server->getShareManager(), $server->getSession(), $server->getPreviewManager(), $server->getRootFolder(), $federatedSharingApp->getFederatedShareProvider()); }); $container->registerService('ExternalSharesController', function (SimpleContainer $c) { return new ExternalSharesController($c->query('AppName'), $c->query('Request'), $c->query('ExternalManager'), $c->query('HttpClientService')); }); /** * Core class wrappers */ $container->registerService('HttpClientService', function (SimpleContainer $c) use($server) { return $server->getHTTPClientService(); }); $container->registerService('ExternalManager', function (SimpleContainer $c) use($server) { $user = $server->getUserSession()->getUser(); $uid = $user ? $user->getUID() : null; $discoveryManager = new DiscoveryManager(\OC::$server->getMemCacheFactory(), \OC::$server->getHTTPClientService()); return new \OCA\Files_Sharing\External\Manager($server->getDatabaseConnection(), \OC\Files\Filesystem::getMountManager(), \OC\Files\Filesystem::getLoader(), $server->getHTTPHelper(), $server->getNotificationManager(), $discoveryManager, $uid); }); /** * Middleware */ $container->registerService('SharingCheckMiddleware', function (SimpleContainer $c) use($server) { return new SharingCheckMiddleware($c->query('AppName'), $server->getConfig(), $server->getAppManager(), $c['ControllerMethodReflector']); }); // Execute middlewares $container->registerMiddleware('SharingCheckMiddleware'); $container->registerService('MountProvider', function (IContainer $c) { /** @var \OCP\IServerContainer $server */ $server = $c->query('ServerContainer'); return new MountProvider($server->getConfig(), $server->getShareManager(), $server->getLogger()); }); $container->registerService('ExternalMountProvider', function (IContainer $c) { /** @var \OCP\IServerContainer $server */ $server = $c->query('ServerContainer'); return new \OCA\Files_Sharing\External\MountProvider($server->getDatabaseConnection(), function () use($c) { return $c->query('ExternalManager'); }); }); /* * Register capabilities */ $container->registerCapability('OCA\\Files_Sharing\\Capabilities'); }
/** * @author Björn Schießle <*****@*****.**> * @author Joas Schilling <*****@*****.**> * * @copyright Copyright (c) 2016, ownCloud, Inc. * @license AGPL-3.0 * * This code 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, version 3, * along with this program. If not, see <http://www.gnu.org/licenses/> * */ $app = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing'); use OCA\FederatedFileSharing\Notifier; $l = \OC::$server->getL10N('files_sharing'); $app->registerSettings(); $manager = \OC::$server->getNotificationManager(); $manager->registerNotifier(function () { return new Notifier(\OC::$server->getL10NFactory()); }, function () use($l) { return ['id' => 'files_sharing', 'name' => $l->t('Federated sharing')]; });
* along with this program. If not, see <http://www.gnu.org/licenses/> * */ use OCP\API; // Config API::register('get', '/config', array('OC_OCS_Config', 'apiConfig'), 'core', API::GUEST_AUTH); // Person API::register('post', '/person/check', array('OC_OCS_Person', 'check'), 'core', API::GUEST_AUTH); // Privatedata API::register('get', '/privatedata/getattribute', array('OC_OCS_Privatedata', 'get'), 'core', API::USER_AUTH, array('app' => '', 'key' => '')); API::register('get', '/privatedata/getattribute/{app}', array('OC_OCS_Privatedata', 'get'), 'core', API::USER_AUTH, array('key' => '')); API::register('get', '/privatedata/getattribute/{app}/{key}', array('OC_OCS_Privatedata', 'get'), 'core', API::USER_AUTH); API::register('post', '/privatedata/setattribute/{app}/{key}', array('OC_OCS_Privatedata', 'set'), 'core', API::USER_AUTH); API::register('post', '/privatedata/deleteattribute/{app}/{key}', array('OC_OCS_Privatedata', 'delete'), 'core', API::USER_AUTH); // cloud API::register('get', '/cloud/capabilities', array('OC_OCS_Cloud', 'getCapabilities'), 'core', API::USER_AUTH); API::register('get', '/cloud/user', array('OC_OCS_Cloud', 'getCurrentUser'), 'core', API::USER_AUTH); // Server-to-Server Sharing if (\OC::$server->getAppManager()->isEnabledForUser('files_sharing')) { $federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing'); $addressHandler = new \OCA\FederatedFileSharing\AddressHandler(\OC::$server->getURLGenerator(), \OC::$server->getL10N('federatedfilesharing')); $notification = new \OCA\FederatedFileSharing\Notifications($addressHandler, \OC::$server->getHTTPClientService(), new \OCA\FederatedFileSharing\DiscoveryManager(\OC::$server->getMemCacheFactory(), \OC::$server->getHTTPClientService()), \OC::$server->getJobList()); $s2s = new OCA\FederatedFileSharing\RequestHandler($federatedSharingApp->getFederatedShareProvider(), \OC::$server->getDatabaseConnection(), \OC::$server->getShareManager(), \OC::$server->getRequest(), $notification, $addressHandler, \OC::$server->getUserManager()); API::register('post', '/cloud/shares', array($s2s, 'createShare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/reshare', array($s2s, 'reShare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/permissions', array($s2s, 'updatePermissions'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/accept', array($s2s, 'acceptShare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/decline', array($s2s, 'declineShare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/unshare', array($s2s, 'unshare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/revoke', array($s2s, 'revoke'), 'files_sharing', API::GUEST_AUTH); }
* along with this program. If not, see <http://www.gnu.org/licenses/> * */ // load needed apps $RUNTIME_APPTYPES = ['filesystem', 'authentication', 'logging']; OC_App::loadApps($RUNTIME_APPTYPES); OC_Util::obEnd(); \OC::$server->getSession()->close(); // Backends $authBackend = new OCA\DAV\Connector\PublicAuth(\OC::$server->getRequest(), \OC::$server->getShareManager(), \OC::$server->getSession()); $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory(\OC::$server->getConfig(), \OC::$server->getLogger(), \OC::$server->getDatabaseConnection(), \OC::$server->getUserSession(), \OC::$server->getMountManager(), \OC::$server->getTagManager(), \OC::$server->getRequest()); $requestUri = \OC::$server->getRequest()->getRequestUri(); $linkCheckPlugin = new \OCA\DAV\Files\Sharing\PublicLinkCheckPlugin(); $server = $serverFactory->createServer($baseuri, $requestUri, $authBackend, function (\Sabre\DAV\Server $server) use($authBackend, $linkCheckPlugin) { $isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'; $federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing'); $federatedShareProvider = $federatedSharingApp->getFederatedShareProvider(); if ($federatedShareProvider->isOutgoingServer2serverShareEnabled() === false && !$isAjax) { // this is what is thrown when trying to access a non-existing share throw new \Sabre\DAV\Exception\NotAuthenticated(); } $share = $authBackend->getShare(); $owner = $share->getShareOwner(); $isWritable = $share->getPermissions() & (\OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_CREATE); $fileId = $share->getNodeId(); if (!$isWritable) { \OC\Files\Filesystem::addStorageWrapper('readonly', function ($mountPoint, $storage) { return new \OC\Files\Storage\Wrapper\PermissionsMask(array('storage' => $storage, 'mask' => \OCP\Constants::PERMISSION_READ + \OCP\Constants::PERMISSION_SHARE)); }); } OC_Util::setupFS($owner);
* 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, version 3, * along with this program. If not, see <http://www.gnu.org/licenses/> * */ use OCP\API; // Config API::register('get', '/config', array('OC_OCS_Config', 'apiConfig'), 'core', API::GUEST_AUTH); // Person API::register('post', '/person/check', array('OC_OCS_Person', 'check'), 'core', API::GUEST_AUTH); // Privatedata API::register('get', '/privatedata/getattribute', array('OC_OCS_Privatedata', 'get'), 'core', API::USER_AUTH, array('app' => '', 'key' => '')); API::register('get', '/privatedata/getattribute/{app}', array('OC_OCS_Privatedata', 'get'), 'core', API::USER_AUTH, array('key' => '')); API::register('get', '/privatedata/getattribute/{app}/{key}', array('OC_OCS_Privatedata', 'get'), 'core', API::USER_AUTH); API::register('post', '/privatedata/setattribute/{app}/{key}', array('OC_OCS_Privatedata', 'set'), 'core', API::USER_AUTH); API::register('post', '/privatedata/deleteattribute/{app}/{key}', array('OC_OCS_Privatedata', 'delete'), 'core', API::USER_AUTH); // cloud API::register('get', '/cloud/capabilities', array('OC_OCS_Cloud', 'getCapabilities'), 'core', API::USER_AUTH); API::register('get', '/cloud/user', array('OC_OCS_Cloud', 'getCurrentUser'), 'core', API::USER_AUTH); // Server-to-Server Sharing if (\OC::$server->getAppManager()->isEnabledForUser('files_sharing')) { $federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing'); $s2s = new \OCA\Files_Sharing\API\Server2Server($federatedSharingApp->getFederatedShareProvider()); API::register('post', '/cloud/shares', array($s2s, 'createShare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/accept', array($s2s, 'acceptShare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/decline', array($s2s, 'declineShare'), 'files_sharing', API::GUEST_AUTH); API::register('post', '/cloud/shares/{id}/unshare', array($s2s, 'unshare'), 'files_sharing', API::GUEST_AUTH); }