core/source/main.php
2025-09-10 15:03:44 +02:00

73 lines
1.7 KiB
PHP

<?php
namespace davigil;
require_once('vendor/autoload.php');
require_once('base.php');
require_once('overwrites/principal_backend.php');
require_once('overwrites/auths/_factory.php');
require_once('overwrites/caldav_backend.php');
require_once('sources/_factory.php');
require_once('conf.php');
function main(
) : void
{
\davigil\conf\load('conf.json');
\davigil\set_parameters([]);
\date_default_timezone_set(\davigil\conf\get()->settings->timezone);
$source = \davigil\sources\make(
[
'kind' => \davigil\conf\get()->source->kind,
'data' => \davigil\conf\get()->source->data,
]
);
$principal_backend = new \davigil\overwrites\class_principle_backend();
$server = new \Sabre\DAV\Server(
[
new \Sabre\CalDAV\Principal\Collection($principal_backend),
new \Sabre\CalDAV\CalendarRoot($principal_backend, new \davigil\overwrites\class_caldav_backend($source)),
]
);
// $server->setBaseUri('/');
$server->addPlugin(
new \Sabre\DAV\Auth\Plugin(
\davigil\overwrites\make_auth_backend(
$source,
[
'kind' => \davigil\conf\get()->auth->kind,
'data' => \davigil\conf\get()->auth->data,
]
)
)
);
/**
* this somehow breaks authentication, but seems to be required for calendar discovery
*/
// $server->addPlugin(new \Sabre\DAVACL\Plugin());
$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());
$server->start();
}
main();
?>