Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Реализация файловой системы WebDAV с помощью PHP и SabreDAV. Часть 6

Автор: Квентин Зерваас (Quentin Zervaas), 29 марта 2010.

Сервер WebDAV полностью

Теперь, когда мы реализовали метод аутентификации, можем добавить его в разработанный ранее код. Продемонстрируем полный листинг кода, объединяющий все предыдущие кусочки.

Только учтите, что методы user_exists() и get_user_hash() в действительности не существует. Вы должны заменить их собственным механизмом получения данных о пользователе.

Кроме того, я опустил плагин Sabre_DAV_TemporaryFileFilterPlugin, но, если хотите, вы можете экспериментировать с ним сами.

Листинг 10. Полный сервер WebDAV (server.php):

<?php
    require_once('Sabre.autoload.php');
 
    // задаем путь и область аутентификации
    $path  = '/var/www/dav/files';
    $realm = 'webdavserver';
 
    // производим аутентификацию
    $auth = new Sabre_HTTP_DigestAuth();
    $auth->setRealm($realm);
    $auth->init();
 
    // @todo
    function user_exists($username)
    {
        return false;
    }
 
    // @todo
    function get_user_hash($username)
    {
        return null;
    }
 
    // получаем информацию о пользователе для аутентификации
    $username = $auth->getUsername();
 
    if (!user_exists($username)) {
        $auth->requireLogin();
        echo "Требуется аутентификация";
        exit;
    }
 
    $hash = get_user_hash($username);
 
    // пытаемся аутентифицировать пользователя
    if (!$auth->validateA1($hash)) {
        $auth->requireLogin();
        echo "Требуется аутентификация";
        exit;
    }
 
    // создаем сервер WebDAV
 
    $tree = new Sabre_DAV_ObjectTree(
        new Sabre_DAV_FS_Directory($path)
    );
 
    $server = new Sabre_DAV_Server($tree);
 
    // добавляем плагин для браузера
    $server->addPlugin(
        new Sabre_DAV_Browser_Plugin()
    );
 
    // добавляем плагин для блокировок
    $backend = new Sabre_DAV_Locks_Backend_FS();
 
    $server->addPlugin(
        new Sabre_DAV_Locks_Plugin($backend)
    );
 
    // обрабатываем запрос
    $server->exec();
?>

Виртуальные файловые системы

Ранее в этой статье мы реализовали полно-функциональный сервер WebDAV с помощью включенного в SabreDAV дерева файловой системы. Если ваши файлы хранятся другим способом, вы также можете использовать SabreDAV.

Например, вы можете использовать базу данных для хранения дополнительной информации о файлах на диске. Если так, то вам может понадобиться обновлять базу данных при создании, редактировании, перемещении или удалении файлов.

В этой статье мы не станем реализовывать особую файловую систему, но все же, этот параграф может оказаться полезным, если начнете реализовывать ее сами.

Для решения этой задачи вы должны написать расширение класса Sabre_DAV_Tree. Вам необходимо будет реализовать всего один метод — getNodeForPath().

Этот метод возвращает путь к файлу в виде PHP-объекта, который может использовать SabreDAV. Возвращаемый объект должен соответствовать интерфейсу Sabre_DAV_IDirectory, если является директорией, или интерфейсу Sabre_DAV_IFile, если это файл.

Эти интерфейсы определяют набор методов для обработки операций WebDAV. Ваш класс, реализующий Sabre_DAV_IDirectory, должен, в частности, уметь создавать, переименовывать и удалять директорию.

Чтобы лучше понять, как это взаимодействует вместе, я рекомендую посмотреть следующие классы:

  • Sabre_DAV_FS_Directory
  • Sabre_DAV_FS_File

Объекты этих типов возвращаются методом getNodeForPath(), который реализован в Sabre_DAV_ObjectTree.

Вообще, вы можете продублировать эти классы и добавить в них прикладные методы для работы со своей базой.

Заключение

В этой статье я показал вам, как создать собственный сервер WebDAV с помощью PHP и открытой библиотеки SabreDAV.

Сначала я показал вам, как настроить виртуальный хост Apache для вашего сервера WebDAV. Затем я показал вам, как устанавливать SabreDAV. Еще мы создали место в файловой структуре вашего сервера для хранения файлов под управлением WebDAV.

После этого я показал вам, как начать работать с SabreDAV просто указав ему нужную директорию и запустив обработку запроса. Чтобы вы видели результат работы сервера, я показал вам, как монтировать диск WebDAV в Windows и в OS X.

Далее мы рассмотрели систему плагинов SabreDAV, которая позволила нам расширить функциональность нашего сервера просто добавив плагин для браузера и фильтр файлов-ресурсов. Затем мы добавили на сервер поддержку блокировки файлов, требуемую некоторыми клиентами WebDAV для записи файлов.

Когда наш сервер стал полнофункциональным, я показал вам реализацию системы аутентификации с помощью HTTP дайджест-аутентификации. Это означает, что пользователи должны вводить свои логины и пароли для доступа к серверу WebDAV.

Наконец, я кратко описал, как вы можете реализовать собственную виртуальную файловую систему с SabreDAV, позволяющую вам легко добавить WebDAV в уже существующее веб-приложение (такое как Система управления контентом).

Что читать далее

Перевод с английского: Дмитрий Скоробогатов, специально для xBB.uz, 29.01.2014
Оригинальный текст может быть найден по адресу http://www.phpriot.com/articles/web-dav-with-php


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2014-01-29 03:51:44

Метки материала: webdav, файловая система, php, система webdav, sabredav, реализации webdav, веб, сервер webdav, файлы, библиотека sabredav, web

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.