ILIAS
trunk Revision v12.0_alpha-1227-g7ff6d300864
◀ ilDoc Overview
Init.php
Go to the documentation of this file.
1
<?php
2
19
declare(strict_types=1);
20
21
namespace
ILIAS\FileDelivery
;
22
23
use
ILIAS\FileDelivery\Delivery\StreamDelivery
;
24
use
ILIAS\DI\Container
;
25
use
ILIAS\FileDelivery\Setup\KeyRotationObjective
;
26
use
ILIAS\FileDelivery\Token\Signer\Key\Secret\SecretKey
;
27
use
ILIAS\FileDelivery\Token\DataSigner
;
28
use
ILIAS\FileDelivery\Token\Signer\Key\Secret\SecretKeyRotation
;
29
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\XSendFileResponseBuilder
;
30
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\PHPResponseBuilder
;
31
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\ResponseBuilder
;
32
use
ILIAS\FileDelivery\Setup\DeliveryMethodObjective
;
33
use
ILIAS\FileDelivery\Delivery\LegacyDelivery
;
34
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\XAccelResponseBuilder
;
35
39
class
Init
40
{
41
public
static
function
init
(
Container
$c
): void
42
{
43
$c
[
'file_delivery.response_builder'
] =
static
function
():
ResponseBuilder
{
44
$settings = (@include
DeliveryMethodObjective::PATH
()) ?? [];
45
46
return
match ($settings[
DeliveryMethodObjective::SETTINGS
] ??
null
) {
47
DeliveryMethodObjective::XACCEL
=>
new
XAccelResponseBuilder
(
48
$settings[
DeliveryMethodObjective::SETTINGS_EXTERNAL_DATA_DIR
]
49
),
50
DeliveryMethodObjective::XSENDFILE
=>
new
XSendFileResponseBuilder
(),
51
default
=>
new
PHPResponseBuilder
(),
52
};
53
};
54
55
$c
[
'file_delivery.fallback_response_builder'
] = (
static
fn():
ResponseBuilder
=>
new
PHPResponseBuilder
());
56
57
$c
[
'file_delivery.data_signer'
] =
static
function
():
DataSigner
{
58
$keys = array_map(
static
fn(
string
$key):
SecretKey
=>
new
SecretKey
($key), (require
KeyRotationObjective::PATH
()) ?? []);
59
60
$current_key = array_shift($keys);
61
62
return
new
DataSigner
(
63
new
SecretKeyRotation
(
64
$current_key,
65
...$keys
66
)
67
);
68
};
69
70
$c
[
'file_delivery.delivery'
] =
static
function
() use (
$c
):
StreamDelivery
{
71
// if http is not initialized, we need to do it here
72
if
(!
$c
->offsetExists(
'http'
)) {
73
$init_http = new \InitHttpServices();
74
$init_http->init(
$c
);
75
}
76
77
return
new
StreamDelivery
(
78
$c
[
'file_delivery.data_signer'
],
79
$c
[
'http'
],
80
$c
[
'file_delivery.response_builder'
],
81
$c
[
'file_delivery.fallback_response_builder'
]
82
);
83
};
84
85
$c
[
'file_delivery.legacy_delivery'
] =
static
function
() use (
$c
):
LegacyDelivery
{
86
// if http is not initialized, we need to do it here
87
if
(!
$c
->offsetExists(
'http'
)) {
88
$init_http = new \InitHttpServices();
89
$init_http->init(
$c
);
90
}
91
92
return
new
LegacyDelivery
(
93
$c
[
'http'
],
94
$c
[
'file_delivery.response_builder'
],
95
$c
[
'file_delivery.fallback_response_builder'
]
96
);
97
};
98
99
$c
[
'file_delivery'
] = (
static
fn():
Services
=>
new
Services
(
100
$c
[
'file_delivery.delivery'
],
101
$c
[
'file_delivery.legacy_delivery'
],
102
$c
[
'file_delivery.data_signer'
],
103
$c
[
'http'
]
104
));
105
}
106
}
ILIAS\DI\Container
Customizing of pimple-DIC for ILIAS.
Definition:
Container.php:36
ILIAS\FileDelivery\Delivery\LegacyDelivery
Definition:
LegacyDelivery.php:29
ILIAS\FileDelivery\Delivery\ResponseBuilder\PHPResponseBuilder
Definition:
PHPResponseBuilder.php:34
ILIAS\FileDelivery\Delivery\ResponseBuilder\XAccelResponseBuilder
Definition:
XAccelResponseBuilder.php:31
ILIAS\FileDelivery\Delivery\ResponseBuilder\XSendFileResponseBuilder
Definition:
XSendFileResponseBuilder.php:31
ILIAS\FileDelivery\Delivery\StreamDelivery
Definition:
StreamDelivery.php:37
ILIAS\FileDelivery\Init
Definition:
Init.php:40
ILIAS\FileDelivery\Init\init
static init(Container $c)
Definition:
Init.php:41
ILIAS\FileDelivery\Services
Definition:
Services.php:34
ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective\PATH
static PATH()
Definition:
BuildStaticConfigStoredObjective.php:37
ILIAS\FileDelivery\Setup\DeliveryMethodObjective
Definition:
DeliveryMethodObjective.php:33
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\XACCEL
const XACCEL
Definition:
DeliveryMethodObjective.php:37
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\XSENDFILE
const XSENDFILE
Definition:
DeliveryMethodObjective.php:36
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\SETTINGS_EXTERNAL_DATA_DIR
const SETTINGS_EXTERNAL_DATA_DIR
Definition:
DeliveryMethodObjective.php:35
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\SETTINGS
const SETTINGS
Definition:
DeliveryMethodObjective.php:34
ILIAS\FileDelivery\Setup\KeyRotationObjective
Definition:
KeyRotationObjective.php:30
ILIAS\FileDelivery\Token\DataSigner
Definition:
DataSigner.php:45
ILIAS\FileDelivery\Token\Signer\Key\Secret\SecretKeyRotation
Key rotation can provide an extra layer of mitigation against an attacker discovering a secret key.
Definition:
SecretKeyRotation.php:42
ILIAS\FileDelivery\Token\Signer\Key\Secret\SecretKey
Signatures are secured by the secret_key.
Definition:
SecretKey.php:40
$c
$c
Definition:
deliver.php:25
ILIAS\FileDelivery\Delivery\ResponseBuilder\ResponseBuilder
Definition:
ResponseBuilder.php:31
ILIAS\FileDelivery
Definition:
Delivery.php:21
components
ILIAS
FileDelivery
src
Init.php
Generated on Wed Apr 8 2026 23:04:35 for ILIAS by
1.9.4 (using
Doxyfile
)