ILIAS
release_10 Revision v10.1-43-ga1241a92c2f
◀ 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\DI\Container
;
24
use
ILIAS\FileDelivery\Setup\KeyRotationObjective
;
25
use
ILIAS\FileDelivery\Token\Signer\Key\Secret\SecretKey
;
26
use
ILIAS\FileDelivery\Token\DataSigner
;
27
use
ILIAS\FileDelivery\Token\Signer\Key\Secret\SecretKeyRotation
;
28
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\XSendFileResponseBuilder
;
29
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\PHPResponseBuilder
;
30
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\ResponseBuilder
;
31
use
ILIAS\FileDelivery\Setup\DeliveryMethodObjective
;
32
use
ILIAS\FileDelivery\Delivery\LegacyDelivery
;
33
use
ILIAS\FileDelivery\Delivery\ResponseBuilder\XAccelResponseBuilder
;
34
38
class
Init
39
{
40
public
static
function
init
(
Container
$c
): void
41
{
42
$c[
'file_delivery.response_builder'
] =
static
function
():
ResponseBuilder
{
43
$settings = (@include
DeliveryMethodObjective::PATH
()) ?? [];
44
45
switch
($settings[
DeliveryMethodObjective::SETTINGS
] ?? null) {
46
case
DeliveryMethodObjective::XACCEL
:
47
return
new
XAccelResponseBuilder
();
48
case
DeliveryMethodObjective::XSENDFILE
:
49
return
new
XSendFileResponseBuilder
();
50
case
DeliveryMethodObjective::PHP
:
51
default
:
52
return
new
PHPResponseBuilder
();
53
}
54
};
55
56
$c[
'file_delivery.fallback_response_builder'
] =
static
function
():
ResponseBuilder
{
57
return
new
PHPResponseBuilder
();
58
};
59
60
$c[
'file_delivery.data_signer'
] =
static
function
():
DataSigner
{
61
$keys =
array_map
(
static
function
(
string
$key):
SecretKey
{
62
return
new
SecretKey
($key);
63
}, (require
KeyRotationObjective::PATH
()) ?? []);
64
65
$current_key = array_shift($keys);
66
67
return
new
DataSigner
(
68
new
SecretKeyRotation
(
69
$current_key,
70
...$keys
71
)
72
);
73
};
74
75
$c[
'file_delivery.delivery'
] =
static
function
() use ($c):
\ILIAS\FileDelivery\Delivery\StreamDelivery
{
76
// if http is not initialized, we need to do it here
77
if
(!$c->offsetExists(
'http'
)) {
78
$init_http = new \InitHttpServices();
79
$init_http->init($c);
80
}
81
82
return
new \ILIAS\FileDelivery\Delivery\StreamDelivery(
83
$c[
'file_delivery.data_signer'
],
84
$c[
'http'
],
85
$c[
'file_delivery.response_builder'
],
86
$c[
'file_delivery.fallback_response_builder'
]
87
);
88
};
89
90
$c[
'file_delivery.legacy_delivery'
] =
static
function
() use ($c):
LegacyDelivery
{
91
// if http is not initialized, we need to do it here
92
if
(!$c->offsetExists(
'http'
)) {
93
$init_http = new \InitHttpServices();
94
$init_http->init($c);
95
}
96
97
return
new
LegacyDelivery
(
98
$c[
'http'
],
99
$c[
'file_delivery.response_builder'
],
100
$c[
'file_delivery.fallback_response_builder'
]
101
);
102
};
103
104
$c[
'file_delivery'
] =
static
function
() use ($c):
Services
{
105
return
new
Services
(
106
$c[
'file_delivery.delivery'
],
107
$c[
'file_delivery.legacy_delivery'
],
108
$c[
'file_delivery.data_signer'
],
109
$c[
'http'
]
110
);
111
};
112
}
113
}
ILIAS\FileDelivery\Delivery\ResponseBuilder\PHPResponseBuilder
Definition:
PHPResponseBuilder.php:33
ILIAS\FileDelivery\Token\DataSigner
Definition:
DataSigner.php:49
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\PHP
const PHP
Definition:
DeliveryMethodObjective.php:34
array_map
ILIAS\FileDelivery\Delivery\ResponseBuilder\XAccelResponseBuilder
Definition:
XAccelResponseBuilder.php:30
ILIAS\Setup\Artifact\BuildArtifactObjective\PATH
static PATH()
Definition:
BuildArtifactObjective.php:40
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\XSENDFILE
const XSENDFILE
Definition:
DeliveryMethodObjective.php:32
LegacyDelivery
ILIAS\FileDelivery\Init\init
static init(Container $c)
Definition:
Init.php:40
KeyRotationObjective
ILIAS\FileDelivery\Delivery\StreamDelivery
Definition:
StreamDelivery.php:36
ILIAS\FileDelivery\Delivery\ResponseBuilder\ResponseBuilder
Definition:
ResponseBuilder.php:30
$c
$c
Definition:
deliver.php:9
XSendFileResponseBuilder
SecretKeyRotation
ILIAS\DI\Container
Customizing of pimple-DIC for ILIAS.
Definition:
Container.php:35
Services
DataSigner
Container
ILIAS\FileDelivery\Delivery\ResponseBuilder\XSendFileResponseBuilder
Definition:
XSendFileResponseBuilder.php:30
ILIAS\FileDelivery\Delivery\LegacyDelivery
Definition:
LegacyDelivery.php:29
ResponseBuilder
ILIAS\FileDelivery\Token\Signer\Key\Secret\SecretKey
Signatures are secured by the secret_key.
Definition:
SecretKey.php:39
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\XACCEL
const XACCEL
Definition:
DeliveryMethodObjective.php:33
ILIAS\FileDelivery\Setup\DeliveryMethodObjective\SETTINGS
const SETTINGS
Definition:
DeliveryMethodObjective.php:31
SecretKey
DeliveryMethodObjective
XAccelResponseBuilder
PHPResponseBuilder
ILIAS\FileDelivery
Definition:
Delivery.php:21
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:41
ILIAS\FileDelivery\Init
Definition:
Init.php:38
components
ILIAS
FileDelivery
src
Init.php
Generated on Wed Sep 10 2025 15:15:20 for ILIAS by
1.8.13 (using
Doxyfile
)