Passed
Push — master ( fa02f2...bc9f14 )
by
unknown
02:45
created

server.php (1 issue)

Labels
Severity
1
<?php
2
3
/*
4
 * SPDX-License-Identifier: AGPL-3.0-only
5
 * SPDX-FileCopyrightText: Copyright 2016 - 2018 Kopano b.v.
6
 * SPDX-FileCopyrightText: Copyright 2020-2024 grommunio GmbH
7
 *
8
 * This is the entry point through which all requests are processed.
9
 */
10
11
namespace grommunio\DAV;
12
13
use Sabre\CalDAV\CalendarRoot;
14
use Sabre\CalDAV\ICSExportPlugin;
15
use Sabre\CardDAV\AddressBookRoot;
16
use Sabre\CardDAV\Plugin;
17
use Sabre\DAV\Server;
18
use Sabre\DAV\Version;
19
use Sabre\DAVACL\PrincipalCollection;
20
21
// require composer auto-loader
22
require __DIR__ . '/vendor/autoload.php';
23
24
// Configure & create main logger
25
GLogger::configure(__DIR__ . '/glogger.ini');
26
$logger = new GLogger('main');
27
28
// don't log any Sabre asset requests (images etc)
29
if (isset($_REQUEST['sabreAction']) && $_REQUEST['sabreAction'] == 'asset') {
30
	$logger->resetConfiguration();
31
}
32
33
// log the start data
34
$logger->debug('------------------ Start');
35
$logger->debug('%s %s', $_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);
36
$logger->debug('grommunio-dav version %s', GDAV_VERSION);
37
$logger->debug('SabreDAV version %s', Version::VERSION);
38
39
$gdavBackend = new GrommunioDavBackend(new GLogger('dav'));
40
if (defined("SABRE_AUTH_BACKEND") && strcmp(SABRE_AUTH_BACKEND, "apache") == 0) {
0 ignored issues
show
The constant grommunio\DAV\SABRE_AUTH_BACKEND was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
41
	$authBackend = new AuthApache();
42
}
43
else {
44
	$authBackend = new AuthBasicBackend($gdavBackend);
45
}
46
$authBackend->setRealm(SABRE_AUTH_REALM);
47
$principalBackend = new PrincipalsBackend($gdavBackend);
48
$gCarddavBackend = new GrommunioCardDavBackend($gdavBackend, new GLogger('card'));
49
$gCaldavBackend = new GrommunioCalDavBackend($gdavBackend, new GLogger('cal'));
50
51
// Setting up the directory tree
52
$nodes = [
53
	new PrincipalCollection($principalBackend),
54
	new AddressBookRoot($principalBackend, $gCarddavBackend),
55
	new CalendarRoot($principalBackend, $gCaldavBackend),
56
];
57
58
// initialize the server
59
$server = new Server($nodes);
60
$server->setBaseUri(DAV_ROOT_URI);
61
$server->setLogger($logger->getGPSR3Logger());
62
63
$authPlugin = new \Sabre\DAV\Auth\Plugin($authBackend);
64
$server->addPlugin($authPlugin);
65
66
// add our version to the headers
67
$server->httpResponse->addHeader('X-GDAV-Version', GDAV_VERSION);
68
69
// log the incoming request (only if authenticated)
70
$logger->LogIncoming($server->httpRequest);
71
72
$aclPlugin = new DAVACL();
73
$aclPlugin->allowUnauthenticatedAccess = false;
74
$server->addPlugin($aclPlugin);
75
76
$schedulePlugin = new GrommunioSchedulePlugin($gdavBackend, new GLogger('schedule'));
77
$server->addPlugin($schedulePlugin);
78
79
$imipPlugin = new GrommunioIMipPlugin($gdavBackend, new GLogger('imip'));
80
$server->addPlugin($imipPlugin);
81
82
$server->addPlugin(new ICSExportPlugin());
83
$server->addPlugin(new Plugin());
84
85
// TODO: do we need $caldavPlugin for anything?
86
$caldavPlugin = new \Sabre\CalDAV\Plugin();
87
$server->addPlugin($caldavPlugin);
88
89
if (strlen(SYNC_DB) > 0) {
90
	$server->addPlugin(new \Sabre\DAV\Sync\Plugin());
91
}
92
93
if (DEVELOPER_MODE) {
94
	$server->addPlugin(new \Sabre\DAV\Browser\Plugin(false));
95
}
96
97
$server->start();
98
99
// Log outgoing data
100
$logger->LogOutgoing($server->httpResponse);
101
102
$logger->debug(
103
	"httpcode='%s' memory='%s/%s' time='%ss'",
104
	http_response_code(),
105
	$logger->FormatBytes(memory_get_peak_usage(false)),
106
	$logger->FormatBytes(memory_get_peak_usage(true)),
107
	number_format(microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"], 2)
108
);
109
$logger->debug('------------------ End');
110