2024-06-07 22:27:58 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use Collections\HomeCollection;
|
2024-06-19 16:47:56 +02:00
|
|
|
use Collections\RolesCollection;
|
|
|
|
use Principal\RolesBackend;
|
2024-06-07 22:27:58 +02:00
|
|
|
use Sabre\DAV;
|
2024-06-12 09:47:22 +02:00
|
|
|
use Dotenv\Dotenv;
|
2024-06-07 22:27:58 +02:00
|
|
|
|
|
|
|
// The autoloader
|
|
|
|
require 'vendor/autoload.php';
|
|
|
|
|
2024-06-20 01:29:02 +02:00
|
|
|
if (is_file(".env")){
|
|
|
|
$dotenv = Dotenv::createImmutable(__DIR__);
|
|
|
|
$dotenv->load();
|
|
|
|
}
|
2024-06-19 23:41:01 +02:00
|
|
|
|
|
|
|
$redis_client = new Redis();
|
|
|
|
$redis_client->connect($_ENV['redis_host'], intval($_ENV['redis_port']));
|
|
|
|
|
2024-06-19 16:47:56 +02:00
|
|
|
$principalBackend = new RolesBackend();
|
2024-06-07 22:27:58 +02:00
|
|
|
|
|
|
|
// Set Auth
|
2024-06-19 23:41:01 +02:00
|
|
|
$authBackend = new Keycloak\KeycloakAuth($redis_client, $principalBackend,$_ENV['client_id'], $_ENV['client_secret'], $_ENV['keycloak_token_url'] );
|
2024-06-07 22:27:58 +02:00
|
|
|
$authBackend->setRealm($_ENV['realm']);
|
|
|
|
$authPlugin = new DAV\Auth\Plugin($authBackend);
|
|
|
|
|
2024-06-20 01:29:02 +02:00
|
|
|
$path = $_ENV['data_path'];
|
2024-06-07 22:27:58 +02:00
|
|
|
|
|
|
|
// The server object is responsible for making sense out of the WebDAV protocol
|
2024-06-19 16:47:56 +02:00
|
|
|
$server = new DAV\Server([new HomeCollection($authPlugin, $path), new RolesCollection($principalBackend, $path)]);
|
2024-06-07 22:27:58 +02:00
|
|
|
|
|
|
|
// If your server is not on your webroot, make sure the following line has the
|
|
|
|
// correct information
|
|
|
|
$server->setBaseUri($_ENV['base_uri']);
|
|
|
|
|
|
|
|
// The lock manager is responsible for making sure users don't overwrite
|
|
|
|
// each others changes.
|
|
|
|
$lockBackend = new DAV\Locks\Backend\File('data/locks');
|
|
|
|
$lockPlugin = new DAV\Locks\Plugin($lockBackend);
|
|
|
|
$server->addPlugin($lockPlugin);
|
|
|
|
|
|
|
|
|
2024-06-19 16:47:56 +02:00
|
|
|
$principalPlugin = new Sabre\DAVACL\Plugin($principalBackend);
|
2024-06-07 22:27:58 +02:00
|
|
|
|
|
|
|
$server->addPlugin($authPlugin);
|
2024-06-19 16:47:56 +02:00
|
|
|
$server->addPlugin($principalPlugin);
|
|
|
|
$server->addPlugin(new DAV\Browser\Plugin());
|
2024-06-20 00:21:22 +02:00
|
|
|
$server->addPlugin(new DAV\PartialUpdate\Plugin());
|
2024-06-19 16:47:56 +02:00
|
|
|
|
2024-06-20 00:21:22 +02:00
|
|
|
$server->addPlugin(
|
|
|
|
new DAV\Sync\Plugin()
|
|
|
|
);
|
2024-06-07 22:27:58 +02:00
|
|
|
|
|
|
|
// All we need to do now, is to fire up the server
|
2024-06-12 09:47:22 +02:00
|
|
|
$server->start();
|