示例#1
0
 public function __construct(FederatedShareProvider $federatedShareProvider = null)
 {
     if ($federatedShareProvider) {
         $this->federatedShareProvider = $federatedShareProvider;
     } else {
         $federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application('federatedfilesharing');
         $this->federatedShareProvider = $federatedSharingApp->getFederatedShareProvider();
     }
 }
示例#2
0
 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');
 }
示例#3
0
/**
 * @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')];
});
示例#4
0
 * 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);
}
示例#5
0
 * 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);
示例#6
0
 * 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);
}