feat: add configurable HLS CORS allowlists

This commit is contained in:
root
2026-09-04 22:28:33 +02:00
parent 6fae6a3a43
commit 9710e8d228
24 changed files with 879 additions and 7 deletions
+39 -1
View File
@@ -3,16 +3,53 @@
declare(strict_types=1);
use App\CallableEventDispatcherInterface;
use App\Event\BuildConsoleCommands;
use App\Event\BuildDoctrineMappingPaths;
use App\Event\BuildMigrationConfigurationArray;
use App\Enums\StationPermissions;
use App\Enums\StationFeatures;
use App\Event;
use App\Middleware;
use Plugin\AzuraCastOnDemandHls\Command\AddCorsOriginCommand;
use Plugin\AzuraCastOnDemandHls\Command\ClearCorsOriginsCommand;
use Plugin\AzuraCastOnDemandHls\Command\ListCorsOriginsCommand;
use Plugin\AzuraCastOnDemandHls\Command\RemoveCorsOriginCommand;
use Plugin\AzuraCastOnDemandHls\Command\SetCorsOriginsCommand;
use Plugin\AzuraCastOnDemandHls\Controller\CreatePlaybackAction;
use Plugin\AzuraCastOnDemandHls\Controller\ServePlaybackAssetAction;
use Plugin\AzuraCastOnDemandHls\EventHandler\NginxConfiguration;
use Plugin\AzuraCastOnDemandHls\Service\ScheduledCleanupTask;
return static function (CallableEventDispatcherInterface $dispatcher): void {
$dispatcher->addListener(
BuildConsoleCommands::class,
static fn(BuildConsoleCommands $event) => $event->addAliases([
'azuracast:ondemand-hls:cors:list' => ListCorsOriginsCommand::class,
'azuracast:ondemand-hls:cors:set' => SetCorsOriginsCommand::class,
'azuracast:ondemand-hls:cors:add' => AddCorsOriginCommand::class,
'azuracast:ondemand-hls:cors:remove' => RemoveCorsOriginCommand::class,
'azuracast:ondemand-hls:cors:clear' => ClearCorsOriginsCommand::class,
])
);
$dispatcher->addListener(
BuildDoctrineMappingPaths::class,
static function (BuildDoctrineMappingPaths $event): void {
$paths = $event->getMappingClassesPaths();
$paths[] = __DIR__ . '/src/Entity';
$event->setMappingClassesPaths(array_values(array_unique($paths)));
}
);
$dispatcher->addListener(
BuildMigrationConfigurationArray::class,
static function (BuildMigrationConfigurationArray $event): void {
$configuration = $event->getMigrationConfigurations();
$configuration['migrations_paths'] ??= [];
$configuration['migrations_paths']['Plugin\AzuraCastOnDemandHls\Entity\Migration'] = __DIR__ . '/src/Entity/Migration';
$event->setMigrationConfigurations($configuration);
}
);
$dispatcher->addListener(
Event\BuildRoutes::class,
static function (Event\BuildRoutes $event): void {
@@ -32,7 +69,8 @@ return static function (CallableEventDispatcherInterface $dispatcher): void {
->add(Middleware\Auth\ApiAuth::class)
->add(Middleware\InjectSession::class);
$app->get(
$app->map(
['GET', 'HEAD', 'OPTIONS'],
'/api/station/{station_id}/ondemand-hls/playback/{token:[A-Za-z0-9_-]+}/{resource:[A-Za-z0-9._-]+}',
ServePlaybackAssetAction::class
)