Files
ac-ms-sfu-signaling/public/index.php
Anton Afanasyeu 0c5c079179 SFU M0: browser lab E2E client for Janus VideoRoom.
Add lab page with screen-share publisher and subscriber viewer, join API
feed support, shared session auth, static assets route, and lab docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 22:15:42 +02:00

55 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
require_once dirname(__DIR__) . '/src/bootstrap.php';
/* ── Simple front-controller ─────────────────────────────────────── */
$uri = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH);
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
/* Strip project prefix /app/androidcast_project/sfu */
$uri = preg_replace('#^/app/androidcast_project/sfu#', '', $uri);
$uri = $uri === '' ? '/' : $uri;
if (preg_match('#^/api/rooms/\d+$#', $uri)) {
require __DIR__ . '/api/rooms.php';
exit;
}
$routes = [
'/' => 'dashboard.php',
'/dashboard' => 'dashboard.php',
'/dashboard.php' => 'dashboard.php',
'/lab' => 'lab.php',
'/lab.php' => 'lab.php',
'/health' => 'health.php',
'/health.php' => 'health.php',
'/api/rooms' => 'api/rooms.php',
'/api/rooms.php' => 'api/rooms.php',
'/api/join' => 'api/join.php',
'/api/join.php' => 'api/join.php',
'/api/stats' => 'api/stats.php',
'/api/stats.php' => 'api/stats.php',
];
$target = $routes[$uri] ?? null;
if ($target && is_file(__DIR__ . '/' . $target)) {
require __DIR__ . '/' . $target;
exit;
}
/* Static assets under /assets/ */
if (str_starts_with($uri, '/assets/')) {
$file = __DIR__ . $uri;
if (is_file($file)) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
$types = ['js' => 'application/javascript', 'css' => 'text/css'];
header('Content-Type: ' . ($types[$ext] ?? 'application/octet-stream'));
readfile($file);
exit;
}
}
http_response_code(404);
header('Content-Type: application/json');
echo json_encode(['ok' => false, 'error' => 'not found']);