2025-09-09 12:07:53 +02:00
|
|
|
<?php
|
|
|
|
|
|
2025-09-16 12:05:35 +02:00
|
|
|
namespace davina;
|
2025-09-09 12:07:53 +02:00
|
|
|
|
2025-09-16 12:48:45 +02:00
|
|
|
define("DIR_LOGIC", "logic");
|
|
|
|
|
|
2025-09-09 12:07:53 +02:00
|
|
|
require_once('vendor/autoload.php');
|
2025-09-16 12:48:45 +02:00
|
|
|
require_once(DIR_LOGIC . '/base.php');
|
|
|
|
|
require_once(DIR_LOGIC . '/overwrites/principal_backend.php');
|
|
|
|
|
require_once(DIR_LOGIC . '/overwrites/auths/_factory.php');
|
|
|
|
|
require_once(DIR_LOGIC . '/overwrites/caldav_backend.php');
|
|
|
|
|
require_once(DIR_LOGIC . '/sources/_factory.php');
|
|
|
|
|
require_once(DIR_LOGIC . '/conf.php');
|
2025-09-09 12:07:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
function main(
|
|
|
|
|
) : void
|
|
|
|
|
{
|
2025-09-16 12:05:35 +02:00
|
|
|
\davina\conf\load('conf.json');
|
2025-09-09 12:07:53 +02:00
|
|
|
|
2025-09-16 12:05:35 +02:00
|
|
|
\davina\set_parameters([]);
|
2025-09-10 15:03:44 +02:00
|
|
|
|
2025-09-16 12:05:35 +02:00
|
|
|
\date_default_timezone_set(\davina\conf\get()->settings->timezone);
|
2025-09-09 12:07:53 +02:00
|
|
|
|
2025-09-16 12:05:35 +02:00
|
|
|
$source = \davina\sources\make(
|
2025-09-09 19:43:23 +02:00
|
|
|
[
|
2025-09-16 12:05:35 +02:00
|
|
|
'kind' => \davina\conf\get()->source->kind,
|
|
|
|
|
'data' => \davina\conf\get()->source->data,
|
2025-09-09 19:43:23 +02:00
|
|
|
]
|
|
|
|
|
);
|
2025-09-09 12:07:53 +02:00
|
|
|
|
2025-09-16 12:05:35 +02:00
|
|
|
$principal_backend = new \davina\overwrites\class_principle_backend();
|
2025-09-09 12:07:53 +02:00
|
|
|
|
|
|
|
|
$server = new \Sabre\DAV\Server(
|
|
|
|
|
[
|
|
|
|
|
new \Sabre\CalDAV\Principal\Collection($principal_backend),
|
2025-09-16 12:05:35 +02:00
|
|
|
new \Sabre\CalDAV\CalendarRoot($principal_backend, new \davina\overwrites\class_caldav_backend($source)),
|
2025-09-09 12:07:53 +02:00
|
|
|
]
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// $server->setBaseUri('/');
|
|
|
|
|
|
|
|
|
|
$server->addPlugin(
|
|
|
|
|
new \Sabre\DAV\Auth\Plugin(
|
2025-09-16 12:05:35 +02:00
|
|
|
\davina\overwrites\make_auth_backend(
|
2025-09-09 12:07:53 +02:00
|
|
|
$source,
|
2025-09-09 19:43:23 +02:00
|
|
|
[
|
2025-09-16 12:05:35 +02:00
|
|
|
'kind' => \davina\conf\get()->auth->kind,
|
|
|
|
|
'data' => \davina\conf\get()->auth->data,
|
2025-09-09 19:43:23 +02:00
|
|
|
]
|
2025-09-09 12:07:53 +02:00
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
/**
|
2025-09-09 19:43:23 +02:00
|
|
|
* this somehow breaks authentication, but seems to be required for calendar discovery
|
2025-09-09 12:07:53 +02:00
|
|
|
*/
|
2025-09-10 15:03:44 +02:00
|
|
|
// $server->addPlugin(new \Sabre\DAVACL\Plugin());
|
2025-09-09 12:07:53 +02:00
|
|
|
$server->addPlugin(new \Sabre\CalDAV\Plugin());
|
|
|
|
|
$server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
|
|
|
|
|
$server->addPlugin(new \Sabre\CalDAV\Schedule\Plugin());
|
|
|
|
|
$server->addPlugin(new \Sabre\DAV\Sync\Plugin());
|
|
|
|
|
$server->addPlugin(new \Sabre\DAV\Sharing\Plugin());
|
|
|
|
|
$server->addPlugin(new \Sabre\CalDAV\SharingPlugin());
|
|
|
|
|
/**
|
|
|
|
|
* not required
|
|
|
|
|
*/
|
|
|
|
|
$server->addPlugin(new \Sabre\DAV\Browser\Plugin());
|
2025-09-10 15:03:44 +02:00
|
|
|
|
2025-09-09 12:07:53 +02:00
|
|
|
$server->start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
main();
|
|
|
|
|
|
|
|
|
|
?>
|