public function indexAction() { // Set the root directory $webdavPath = Phprojekt::getInstance()->getConfig()->webdavPath; if (Phprojekt_Auth::isLoggedIn()) { $project = new Project_Models_Project(); $project = $project->find(1); $rootDirectory = new WebDAV_Models_ProjectDirectory($project); } else { // Some clients seem to send some queries without http auth. We need the dummy to serve those. $rootDirectory = new WebDAV_Models_EmptyDir(); } // The server object is responsible for making sense out of the WebDAV protocol $server = new Sabre_DAV_Server($rootDirectory); $server->setBaseUri($this->view->baseUrl('index.php/WebDAV/index/index/')); // The lock manager is reponsible for making sure users don't overwrite each others changes. // Change 'data' to a different directory, if you're storing your data somewhere else. $lockBackend = new Sabre_DAV_Locks_Backend_File($webdavPath . 'data/locks'); $lockPlugin = new Sabre_DAV_Locks_Plugin($lockBackend); $server->addPlugin($lockPlugin); // Authentication $authBackend = new WebDAV_Helper_Auth(); $authPlugin = new Sabre_DAV_Auth_Plugin($authBackend, 'WebDAV'); $server->addPlugin($authPlugin); // All we need to do now, is to fire up the server $server->exec(); }
public function process() { // initialize authentication $auth = new Sabre_HTTP_DigestAuth(); $auth->setRealm($this->app->config->site->auth_realm); $auth->init(); // authenticate and get correct user $email = $auth->getUsername(); $class_name = SwatDBClassMap::get('PinholeAdminUser'); $user = new $class_name(); $user->setDatabase($this->app->db); if (!$user->loadFromEmail($email) || !$auth->validateA1($user->digest_ha1)) { $auth->requireLogin(); echo Pinhole::_('Authentication required') . "\n"; exit; } // create directory for account and object tree for dav server $root = new PinholeDavDirectory($this->app, $user); $tree = new Sabre_DAV_ObjectTree($root); // create server $server = new Sabre_DAV_Server($tree); $server->setBaseUri($this->getDavBaseUri()); // don't save temp files in the database $tempFilePlugin = new Sabre_DAV_TemporaryFileFilterPlugin($this->getDataDir('dav/temp')); $server->addPlugin($tempFilePlugin); // set up lock plugin $lockBackend = new Sabre_DAV_Locks_Backend_FS($this->getDataDir('dav/locks')); $lockPlugin = new Sabre_DAV_Locks_Plugin($lockBackend); $server->addPlugin($lockPlugin); // also allow regular web browsing $browserPlugin = new Sabre_DAV_Browser_Plugin(false); $server->addPlugin($browserPlugin); // serve it up! $server->exec(); }
/** * Fire up the SabreDAV server with our custom backends. * * This is mostly copied from the sabredav wiki */ public function indexAction() { // Backends $authBackend = new WebDAV_Helper_Auth(); $principalBackend = new Phprojekt_CalDAV_PrincipalBackend(); $calendarBackend = new Calendar2_CalDAV_CalendarBackend(); // Directory tree $tree = array(new Sabre_DAVACL_PrincipalCollection($principalBackend), new Sabre_CalDAV_CalendarRootNode($principalBackend, $calendarBackend)); $server = new Sabre_DAV_Server($tree); $server->setBaseUri('/index.php/Calendar2/caldav/index'); // Authentication plugin $authPlugin = new Sabre_DAV_Auth_Plugin($authBackend, 'CalDAV'); $server->addPlugin($authPlugin); // CalDAV plugin $caldavPlugin = new Sabre_CalDAV_Plugin(); $server->addPlugin($caldavPlugin); // ACL plugin $aclPlugin = new Sabre_DAVACL_Plugin(); $server->addPlugin($aclPlugin); // Support for html frontend $browser = new Sabre_DAV_Browser_Plugin(); $server->addPlugin($browser); // And off we go! $server->exec(); }
function setUp() { $this->setUpBackends(); $this->setUpTree(); $this->server = new Sabre_DAV_Server($this->tree); $this->server->debugExceptions = true; if ($this->setupCalDAV) { $this->caldavPlugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($this->caldavPlugin); } if ($this->setupCalDAVSharing) { $this->caldavSharingPlugin = new Sabre_CalDAV_SharingPlugin(); $this->server->addPlugin($this->caldavSharingPlugin); } if ($this->setupCardDAV) { $this->carddavPlugin = new Sabre_CardDAV_Plugin(); $this->server->addPlugin($this->carddavPlugin); } if ($this->setupACL) { $this->aclPlugin = new Sabre_DAVACL_Plugin(); $this->server->addPlugin($this->aclPlugin); } if ($this->autoLogin) { $authBackend = new Sabre_DAV_Auth_MockBackend(); $authBackend->defaultUser = $this->autoLogin; $this->authPlugin = new Sabre_DAV_Auth_Plugin($authBackend, 'SabreDAV'); $this->server->addPlugin($this->authPlugin); } }
function setup() { if (!SABRE_HASSQLITE) { $this->markTestSkipped('No PDO SQLite support'); } $this->caldavBackend = Sabre_CalDAV_TestUtil::getBackend(); $principalBackend = new Sabre_DAVACL_MockPrincipalBackend(); $principalBackend->setGroupMemberSet('principals/admin/calendar-proxy-read', array('principals/user1')); $principalBackend->setGroupMemberSet('principals/admin/calendar-proxy-write', array('principals/user1')); $principalBackend->addPrincipal(array('uri' => 'principals/admin/calendar-proxy-read')); $principalBackend->addPrincipal(array('uri' => 'principals/admin/calendar-proxy-write')); $calendars = new Sabre_CalDAV_CalendarRootNode($principalBackend, $this->caldavBackend); $principals = new Sabre_CalDAV_Principal_Collection($principalBackend); $root = new Sabre_DAV_SimpleCollection('root'); $root->addChild($calendars); $root->addChild($principals); $objectTree = new Sabre_DAV_ObjectTree($root); $this->server = new Sabre_DAV_Server($objectTree); $this->server->debugExceptions = true; $this->server->setBaseUri('/'); $this->plugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($this->plugin); $this->response = new Sabre_HTTP_ResponseMock(); $this->server->httpResponse = $this->response; }
function setUp() { $nodes = array(new Sabre_DAV_SimpleCollection('testdir')); $this->server = new Sabre_DAV_Server($nodes); $this->plugin = new Sabre_DAVACL_Plugin(); $this->plugin->allowAccessToNodesWithoutACL = false; $this->server->addPlugin($this->plugin); }
function setUp() { $this->backend = new Sabre_CardDAV_Backend_Mock(); $principalBackend = new Sabre_DAVACL_MockPrincipalBackend(); $tree = array(new Sabre_CardDAV_AddressBookRoot($principalBackend, $this->backend), new Sabre_DAVACL_PrincipalCollection($principalBackend)); $this->plugin = new Sabre_CardDAV_Plugin(); $this->plugin->directories = array('directory'); $this->server = new Sabre_DAV_Server($tree); $this->server->addPlugin($this->plugin); $this->server->debugExceptions = true; }
function setUp() { $calendars = array(array('id' => 'calendar1', 'principaluri' => 'principals/admin', 'uri' => 'calendar1', '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet(array('VEVENT', 'VTODO', 'VJOURNAL'))), array('id' => 'calendar2', 'principaluri' => 'principals/admin', 'uri' => 'calendar2', '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet(array('VTODO', 'VJOURNAL')))); $this->calBackend = new Sabre_CalDAV_Backend_Mock($calendars, array()); $principalBackend = new Sabre_DAVACL_MockPrincipalBackend(); $tree = array(new Sabre_CalDAV_CalendarRootNode($principalBackend, $this->calBackend)); $this->server = new Sabre_DAV_Server($tree); $this->server->debugExceptions = true; $plugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($plugin); $response = new Sabre_HTTP_ResponseMock(); $this->server->httpResponse = $response; }
function setUp() { $calendars = array(array('id' => 'calendar1', 'principaluri' => 'principals/admin', 'uri' => 'calendar1')); $this->calBackend = new Sabre_CalDAV_Backend_Mock($calendars, array()); $principalBackend = new Sabre_DAVACL_MockPrincipalBackend(); $tree = array(new Sabre_CalDAV_CalendarRootNode($principalBackend, $this->calBackend)); $this->server = new Sabre_DAV_Server($tree); $this->server->debugExceptions = true; $plugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($plugin); $response = new Sabre_HTTP_ResponseMock(); $this->server->httpResponse = $response; }
function setUp() { $this->setUpBackends(); $this->setUpTree(); $this->server = new Sabre_DAV_Server($this->tree); if ($this->setupCalDAV) { $this->caldavPlugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($this->caldavPlugin); } if ($this->setupCardDAV) { $this->carddavPlugin = new Sabre_CardDAV_Plugin(); $this->server->addPlugin($this->carddavPlugin); } }
function testGetCurrentUserPrivilegeSet() { $acl = array(array('principal' => 'principals/admin', 'privilege' => '{DAV:}read'), array('principal' => 'principals/user1', 'privilege' => '{DAV:}read'), array('principal' => 'principals/admin', 'privilege' => '{DAV:}write')); $tree = array(new Sabre_DAVACL_MockACLNode('foo', $acl), new Sabre_DAV_SimpleDirectory('principals', array(new Sabre_DAVACL_MockPrincipal('admin', 'principals/admin')))); $server = new Sabre_DAV_Server($tree); $aclPlugin = new Sabre_DAVACL_Plugin(); $server->addPlugin($aclPlugin); $auth = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(), 'SabreDAV'); $server->addPlugin($auth); //forcing login $auth->beforeMethod('GET', '/'); $expected = array('{DAV:}read', '{DAV:}read-acl', '{DAV:}read-current-user-privilege-set', '{DAV:}write', '{DAV:}write-acl', '{DAV:}write-properties', '{DAV:}write-content', '{DAV:}bind', '{DAV:}unbind', '{DAV:}unlock'); $this->assertEquals($expected, $aclPlugin->getCurrentUserPrivilegeSet('foo')); }
function testBeforeMethodNoExport() { $p = new Sabre_CalDAV_ICSExportPlugin(); $s = new Sabre_DAV_Server(); $s->addPlugin($p); $this->assertNull($p->beforeMethod('GET', 'UUID-123467')); }
function testLockEtc() { mkdir(SABRE_TEMPDIR . '/mstest'); $tree = new Sabre_DAV_FS_Directory(SABRE_TEMPDIR . '/mstest'); $server = new Sabre_DAV_Server($tree); $server->debugExceptions = true; $locksBackend = new Sabre_DAV_Locks_Backend_File(SABRE_TEMPDIR . '/locksdb'); $locksPlugin = new Sabre_DAV_Locks_Plugin($locksBackend); $server->addPlugin($locksPlugin); $response1 = new Sabre_HTTP_ResponseMock(); $server->httpRequest = $this->getLockRequest(); $server->httpResponse = $response1; $server->exec(); $this->assertEquals('HTTP/1.1 201 Created', $server->httpResponse->status); $this->assertTrue(isset($server->httpResponse->headers['Lock-Token'])); $lockToken = $server->httpResponse->headers['Lock-Token']; //sleep(10); $response2 = new Sabre_HTTP_ResponseMock(); $server->httpRequest = $this->getLockRequest2(); $server->httpResponse = $response2; $server->exec(); $this->assertEquals('HTTP/1.1 201 Created', $server->httpResponse->status); $this->assertTrue(isset($server->httpResponse->headers['Lock-Token'])); //sleep(10); $response3 = new Sabre_HTTP_ResponseMock(); $server->httpRequest = $this->getPutRequest($lockToken); $server->httpResponse = $response3; $server->exec(); $this->assertEquals('HTTP/1.1 204 No Content', $server->httpResponse->status); }
/** * @depends testInit */ function testGetCurrentUserPrincipal() { $fakeServer = new Sabre_DAV_Server(new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleDirectory('bla'))); $plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(), 'realm'); $fakeServer->addPlugin($plugin); $fakeServer->broadCastEvent('beforeMethod', array('GET', '/')); $this->assertEquals('admin', $plugin->getCurrentUser()); }
/** * @depends testNoAdminAccess */ function testAdminAccess() { $principalBackend = new Sabre_DAVACL_MockPrincipalBackend(); $tree = array(new Sabre_DAVACL_MockACLNode('adminonly', array()), new Sabre_DAVACL_PrincipalCollection($principalBackend)); $fakeServer = new Sabre_DAV_Server($tree); $plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(), 'realm'); $fakeServer->addPlugin($plugin); $plugin = new Sabre_DAVACL_Plugin(); $plugin->adminPrincipals = array('principals/admin'); $fakeServer->addPlugin($plugin); $request = new Sabre_HTTP_Request(array('REQUEST_METHOD' => 'OPTIONS', 'HTTP_DEPTH' => 1, 'REQUEST_URI' => '/adminonly')); $response = new Sabre_HTTP_ResponseMock(); $fakeServer->httpRequest = $request; $fakeServer->httpResponse = $response; $fakeServer->exec(); $this->assertEquals('HTTP/1.1 200 OK', $response->status); }
public function gallery() { $root = new Gallery3_DAV_Album(""); $tree = new Gallery3_DAV_Tree($root); // Skip the lock plugin for now, we don't want Finder to get write support for the time being. // $lock_backend = new Sabre_DAV_Locks_Backend_FS(TMPPATH . "sabredav"); // $lock = new Sabre_DAV_Locks_Plugin($lock_backend); $filter = new Sabre_DAV_TemporaryFileFilterPlugin(TMPPATH . "sabredav"); $server = new Sabre_DAV_Server($tree); $server->setBaseUri(url::site("webdav/gallery")); // $server->addPlugin($lock); $server->addPlugin($filter); $server->addPlugin(new Sabre_DAV_Browser_GuessContentType()); if ($this->_authenticate()) { $server->exec(); } }
public function testSetBadNode() { $tree = array(new Sabre_DAV_SimpleCollection('foo')); $server = new Sabre_DAV_Server($tree); $server->addPlugin(new Sabre_DAVACL_Plugin()); $result = $server->updateProperties('foo', array('{DAV:}group-member-set' => new Sabre_DAV_Property_HrefList(array('bar', 'baz')), '{DAV:}bar' => 'baz')); $expected = array('href' => 'foo', '403' => array('{DAV:}group-member-set' => null), '424' => array('{DAV:}bar' => null)); $this->assertEquals($expected, $result); }
function testResourceType() { $tree = array(new Sabre_CardDAV_DirectoryMock('directory')); $server = new Sabre_DAV_Server($tree); $plugin = new Sabre_CardDAV_Plugin(); $server->addPlugin($plugin); $props = $server->getProperties('directory', array('{DAV:}resourcetype')); $this->assertTrue($props['{DAV:}resourcetype']->is('{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}directory')); }
public function handle() { try { Tinebase_Core::initFramework(); } catch (Zend_Session_Exception $exception) { if (Tinebase_Core::isLogLevel(Zend_Log::WARN)) { Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' invalid session. Delete session cookie.'); } Zend_Session::expireSessionCookie(); header('WWW-Authenticate: Basic realm="WebDAV for Tine 2.0"'); header('HTTP/1.1 401 Unauthorized'); return; } if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) { Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' is CalDav, CardDAV or WebDAV request.'); } if (empty($_SERVER['PHP_AUTH_USER']) && empty($_SERVER['REMOTE_USER']) && empty($_SERVER['REDIRECT_REMOTE_USER'])) { header('WWW-Authenticate: Basic realm="WebDav for Tine 2.0"'); header('HTTP/1.1 401 Unauthorized'); return; } // when used with (f)cgi no PHP_AUTH variables are available without defining a special rewrite rule if (!isset($_SERVER['PHP_AUTH_USER'])) { // $_SERVER["REMOTE_USER"] == "Basic didhfiefdhfu4fjfjdsa34drsdfterrde..." $basicAuthData = base64_decode(substr(isset($_SERVER["REMOTE_USER"]) ? $_SERVER["REMOTE_USER"] : $_SERVER['REDIRECT_REMOTE_USER'], 6)); list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(":", $basicAuthData); } if (Tinebase_Controller::getInstance()->login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_SERVER['REMOTE_ADDR'], 'TineWebDav') !== true) { header('WWW-Authenticate: Basic realm="CardDav for Tine 2.0"'); header('HTTP/1.1 401 Unauthorized'); return; } self::$_server = new Sabre_DAV_Server(new Tinebase_WebDav_Root()); // compute base uri $request = new Zend_Controller_Request_Http(); self::$_server->setBaseUri($request->getBaseUrl() . '/'); $tempDir = Tinebase_Core::getTempDir(); if (!empty($tempDir)) { $lockBackend = new Sabre_DAV_Locks_Backend_File($tempDir . '/webdav.lock'); $lockPlugin = new Sabre_DAV_Locks_Plugin($lockBackend); self::$_server->addPlugin($lockPlugin); } $authPlugin = new Sabre_DAV_Auth_Plugin(new Tinebase_WebDav_Auth(), null); self::$_server->addPlugin($authPlugin); $aclPlugin = new Sabre_DAVACL_Plugin(); $aclPlugin->defaultUsernamePath = 'principals/users'; $aclPlugin->principalCollectionSet = array($aclPlugin->defaultUsernamePath); self::$_server->addPlugin($aclPlugin); self::$_server->addPlugin(new Sabre_CardDAV_Plugin()); self::$_server->addPlugin(new Sabre_CalDAV_Plugin()); self::$_server->addPlugin(new Sabre_CalDAV_Schedule_Plugin()); self::$_server->addPlugin(new Sabre_DAV_Browser_Plugin()); self::$_server->exec(); }
public function frameResponse(\FrameResponseObject $frameResponseObject) { $root = array(new \SteamDavDirectory($GLOBALS["STEAM"]->get_current_steam_user()->get_workroom()), new \Sabre_DAV_SimpleDirectory("Lesezeichen"), new \Sabre_DAV_SimpleDirectory("Gruppen"), new \Sabre_DAV_SimpleDirectory("Kurse")); $server = new \Sabre_DAV_Server($root); $server->setBaseUri("/webdav/index/"); // Support for html frontend $browser = new \Sabre_DAV_Browser_Plugin(); $server->addPlugin($browser); // And off we go! $server->exec(); exit; }
function testReportPassThrough() { $fakeServer = new Sabre_DAV_Server(new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleDirectory('bla'))); $plugin = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(), 'realm'); $fakeServer->addPlugin($plugin); $request = new Sabre_HTTP_Request(array('REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', 'REQUEST_URI' => '/')); $request->setBody('<?xml version="1.0"?><s:somereport xmlns:s="http://www.rooftopsolutions.nl/NS/example" />'); $fakeServer->httpRequest = $request; $fakeServer->httpResponse = new Sabre_HTTP_ResponseMock(); $fakeServer->exec(); $this->assertEquals('HTTP/1.1 501 Not Implemented', $fakeServer->httpResponse->status); }
function testCheckPrivileges() { $acl = array(array('principal' => 'principals/admin', 'privilege' => '{DAV:}read'), array('principal' => 'principals/user1', 'privilege' => '{DAV:}read'), array('principal' => 'principals/admin', 'privilege' => '{DAV:}write')); $tree = array(new Sabre_DAVACL_MockACLNode('foo', $acl), new Sabre_DAV_SimpleCollection('principals', array(new Sabre_DAVACL_MockPrincipal('admin', 'principals/admin')))); $server = new Sabre_DAV_Server($tree); $aclPlugin = new Sabre_DAVACL_Plugin(); $server->addPlugin($aclPlugin); $auth = new Sabre_DAV_Auth_Plugin(new Sabre_DAV_Auth_MockBackend(), 'SabreDAV'); $server->addPlugin($auth); //forcing login //$auth->beforeMethod('GET','/'); $this->assertFalse($aclPlugin->checkPrivileges('foo', array('{DAV:}read'), Sabre_DAVACL_Plugin::R_PARENT, false)); }
function getServer() { $tree = array(new Sabre_DAVACL_MockPropertyNode('node1', array('{http://sabredav.org/ns}simple' => 'foo', '{http://sabredav.org/ns}href' => new Sabre_DAV_Property_Href('node2'), '{DAV:}displayname' => 'Node 1')), new Sabre_DAVACL_MockPropertyNode('node2', array('{http://sabredav.org/ns}simple' => 'simple', '{http://sabredav.org/ns}hreflist' => new Sabre_DAV_Property_HrefList(array('node1', 'node3')), '{DAV:}displayname' => 'Node 2')), new Sabre_DAVACL_MockPropertyNode('node3', array('{http://sabredav.org/ns}simple' => 'simple', '{DAV:}displayname' => 'Node 3'))); $fakeServer = new Sabre_DAV_Server($tree); $fakeServer->debugExceptions = true; $fakeServer->httpResponse = new Sabre_HTTP_ResponseMock(); $plugin = new Sabre_DAVACL_Plugin(); $plugin->allowAccessToNodesWithoutACL = true; $this->assertTrue($plugin instanceof Sabre_DAVACL_Plugin); $fakeServer->addPlugin($plugin); $this->assertEquals($plugin, $fakeServer->getPlugin('acl')); return $fakeServer; }
function getServer() { $backend = new Sabre_DAV_Auth_MockBackend(); $dir = new Sabre_DAV_SimpleDirectory('root'); $principals = new Sabre_DAV_Auth_PrincipalCollection($backend); $dir->addChild($principals); $fakeServer = new Sabre_DAV_Server(new Sabre_DAV_ObjectTree($dir)); $fakeServer->httpResponse = new Sabre_HTTP_ResponseMock(); $plugin = new Sabre_DAV_Auth_Plugin($backend, 'realm'); $this->assertTrue($plugin instanceof Sabre_DAV_Auth_Plugin); $fakeServer->addPlugin($plugin); $this->assertEquals($plugin, $fakeServer->getPlugin('Sabre_DAV_Auth_Plugin')); return $fakeServer; }
/** * @expectedException Sabre_DAV_Exception */ function testFreeBusyReportNoACLPlugin() { $this->server = new Sabre_DAV_Server(); $this->plugin = new Sabre_CalDAV_Plugin(); $this->server->addPlugin($this->plugin); $reportXML = <<<XML <?xml version="1.0"?> <c:free-busy-query xmlns:c="urn:ietf:params:xml:ns:caldav"> <c:time-range start="20111001T000000Z" end="20111101T000000Z" /> </c:free-busy-query> XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($reportXML); $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom); }
function getServer() { $backend = new Sabre_DAVACL_MockPrincipalBackend(); $dir = new Sabre_DAV_SimpleDirectory('root'); $principals = new Sabre_DAVACL_PrincipalCollection($backend); $dir->addChild($principals); $fakeServer = new Sabre_DAV_Server(new Sabre_DAV_ObjectTree($dir)); $fakeServer->httpResponse = new Sabre_HTTP_ResponseMock(); $fakeServer->debugExceptions = true; $plugin = new Sabre_DAVACL_MockPlugin($backend, 'realm'); $plugin->allowAccessToNodesWithoutACL = true; $this->assertTrue($plugin instanceof Sabre_DAVACL_Plugin); $fakeServer->addPlugin($plugin); $this->assertEquals($plugin, $fakeServer->getPlugin('acl')); return $fakeServer; }
/** * Handles a WebDAV request. */ public function requestAction() { if (!isset($this->_config->resources->sabredav->enabled) || 0 == $this->_config->resources->sabredav->enabled) { // Render 404 $response = $this->getResponse(); $response->clearAllHeaders(); $response->clearBody(); $response->setHttpResponseCode(404); $response->sendResponse(); return; } $baseUri = $this->view->url('@admin_webdav'); $publicDir = ROOT_PATH . '/public/uploads'; $tmpDir = ROOT_PATH . '/data/tmp'; $auth = new Sabre_HTTP_BasicAuth(); $auth->setRealm('Fizzy'); $authResult = $auth->getUserPass(); if (false === $authResult) { $auth->requireLogin(); die('Authentication required'); } list($username, $password) = $authResult; $authAdapter = new Fizzy_Doctrine_AuthAdapter($username, $password); $authResult = $authAdapter->authenticate(); if ($authResult->getCode() !== Zend_Auth_Result::SUCCESS) { $auth->requireLogin(); die('Authentication failed'); } $publicDirObj = new Sabre_DAV_FS_Directory($publicDir); $objectTree = new Sabre_DAV_ObjectTree($publicDirObj); $server = new Sabre_DAV_Server($objectTree); $server->setBaseUri($baseUri); if (isset($this->_config->resources->sabredav->browser) && false != $this->_config->resources->sabredav->browser) { $browser = new Sabre_DAV_Browser_Plugin(); $server->addPlugin($browser); } $server->exec(); }
/** * @param App $a */ function dav_init(&$a) { /* * Recommended settings: * ALTER TABLE `photo` ADD INDEX ( `contact-id` ) */ dav_include_files(); if (false) { dbg(true); error_reporting(E_ALL); ini_set("display_errors", 1); } wdcal_create_std_calendars(); if ($a->argc >= 2 && $a->argv[1] == "wdcal") { if ($a->argc >= 3 && $a->argv[2] == "feed") { wdcal_print_feed($a->get_baseurl() . "/dav/wdcal/"); killme(); } elseif ($a->argc >= 3 && strlen($a->argv[2]) > 0) { wdcal_addRequiredHeadersEdit(); } else { wdcal_addRequiredHeaders(); } return; } if ($a->argc >= 2 && $a->argv[1] == "settings") { return; } $authBackend = new Sabre_DAV_Auth_Backend_Friendica(); $principalBackend = new Sabre_DAVACL_PrincipalBackend_Friendica($authBackend); $caldavBackend_std = new Sabre_CalDAV_Backend_Std(); $caldavBackend_community = new Sabre_CalDAV_Backend_Friendica(); $carddavBackend_std = new Sabre_CardDAV_Backend_Std(); $carddavBackend_community = new Sabre_CardDAV_Backend_FriendicaCommunity(); if (isset($_SERVER["PHP_AUTH_USER"])) { $tree = new Sabre_DAV_SimpleCollection('root', array(new Sabre_DAV_SimpleCollection('principals', array(new Sabre_CalDAV_Principal_Collection($principalBackend, "principals/users"))), new Sabre_CalDAV_AnimexxCalendarRootNode($principalBackend, array($caldavBackend_std, $caldavBackend_community)), new Sabre_CardDAV_AddressBookRootFriendica($principalBackend, array($carddavBackend_std, $carddavBackend_community)))); } else { $tree = new Sabre_DAV_SimpleCollection('root', array()); } // The object tree needs in turn to be passed to the server class $server = new Sabre_DAV_Server($tree); $url = parse_url($a->get_baseurl()); $server->setBaseUri(CALDAV_URL_PREFIX); $authPlugin = new Sabre_DAV_Auth_Plugin($authBackend, 'SabreDAV'); $server->addPlugin($authPlugin); $aclPlugin = new Sabre_DAVACL_Plugin_Friendica(); $aclPlugin->defaultUsernamePath = "principals/users"; $server->addPlugin($aclPlugin); $caldavPlugin = new Sabre_CalDAV_Plugin(); $server->addPlugin($caldavPlugin); $carddavPlugin = new Sabre_CardDAV_Plugin(); $server->addPlugin($carddavPlugin); $browser = new Sabre_DAV_Browser_Plugin(); $server->addPlugin($browser); $server->exec(); killme(); }
function testGETPassthrough() { $server = new Sabre_DAV_Server(); $caldav = new Sabre_CalDAV_Plugin(); $httpResponse = new Sabre_HTTP_ResponseMock(); $server->httpResponse = $httpResponse; $server->addPlugin($caldav); $caldav->beforeMethod('GET', 'foo'); $this->assertNull($caldav->beforeMethod('GET', 'foozz')); }
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library 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 library. If not, see <http://www.gnu.org/licenses/>. * */ // only need filesystem apps $RUNTIME_APPTYPES = array('filesystem', 'authentication'); OC_App::loadApps($RUNTIME_APPTYPES); // Backends $authBackend = new OC_Connector_Sabre_Auth(); $lockBackend = new OC_Connector_Sabre_Locks(); // Create ownCloud Dir $publicDir = new OC_Connector_Sabre_Directory(''); // Fire up server $server = new Sabre_DAV_Server($publicDir); $server->setBaseUri($baseuri); // Load plugins $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload // And off we go! $server->exec();