core/source/main.php
2025-09-21 13:27:37 +02:00

81 lines
1.9 KiB
PHP

<?php
namespace davina;
define("DIR_LOGIC", "logic");
require_once('vendor/autoload.php');
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');
function main(
) : void
{
\davina\conf\load('conf.json');
\davina\set_parameters([]);
\date_default_timezone_set(\davina\conf\get()->settings->timezone);
/**
* @todo nicht einfach die source names als keys verwenden …
*/
$sources = [];
foreach (\davina\conf\get()->sources as $source_raw)
{
$sources[$source_raw->name] = \davina\sources\make(
$source_raw->kind,
$source_raw->data
);
}
$principal_backend = new \davina\overwrites\class_principle_backend($sources);
$server = new \Sabre\DAV\Server(
[
new \Sabre\CalDAV\Principal\Collection(
$principal_backend
),
new \Sabre\CalDAV\CalendarRoot(
$principal_backend,
new \davina\overwrites\class_caldav_backend($sources)
),
]
);
// $server->setBaseUri('/');
$server->addPlugin(
new \Sabre\DAV\Auth\Plugin(
new \davina\overwrites\class_auth_backend_basic(
$sources
)
)
);
/**
* 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();
?>