Null-DRM-Official/apps/streamd/internal/ui/index.html
404errordeveloper 2fa8f2435f Initial commit: Null DRM Official
Capture, decrypt, and restream toolkit with compiled-in app modules
(RTE, TG4, BBC), on-device MITM proxy, streamd control plane, and www.
BBC module.yaml is published (clear streams); other module values stay local.
2026-10-06 00:25:35 +02:00

84 lines
2.9 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>streamd</title>
<link rel="stylesheet" href="/static/app.css" />
</head>
<body>
<header>
<h1>streamd</h1>
<div class="header-right">
<span id="uptime" class="muted"></span>
<label class="token-box">token <input id="token" type="password" placeholder="STREAMD_TOKEN" autocomplete="off" /></label>
</div>
</header>
<section class="card">
<h2>Add stream</h2>
<form id="create-form" class="grid">
<label>name <input name="name" required placeholder="my-channel" /></label>
<label>title <input name="title" placeholder="My Channel" /></label>
<label>app
<select name="app" id="app-select"></select>
</label>
<label>channel
<select name="channel" id="channel-select"></select>
</label>
<label class="span2">mpd <input name="mpd" placeholder="https://…/manifest.mpd (optional until capture)" /></label>
<label class="span2">key <textarea name="key" rows="4" placeholder="KID:KEY (one per line; multi-key streams need every key)" spellcheck="false"></textarea></label>
<label class="span2">headers JSON <input name="headers_json" value="{}" /></label>
<div class="span2 actions">
<button type="submit">Create</button>
</div>
</form>
<p id="form-msg" class="msg"></p>
</section>
<section class="card">
<div class="row-between">
<h2>Streams</h2>
<div class="row-actions">
<span id="agents-status" class="muted">agents: —</span>
<button type="button" id="refresh" class="ghost">Refresh</button>
</div>
</div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>name</th>
<th>app / channel</th>
<th>health</th>
<th>claim</th>
<th>age</th>
<th>play</th>
<th>actions</th>
</tr>
</thead>
<tbody id="rows"></tbody>
</table>
</div>
<p id="list-msg" class="msg muted">Loading…</p>
</section>
<dialog id="edit-dlg">
<form method="dialog" id="edit-form" class="grid">
<h2 class="span2">Edit stream</h2>
<input type="hidden" name="id" />
<label>title <input name="title" /></label>
<label>channel <input name="channel" /></label>
<label class="span2">mpd <input name="mpd" /></label>
<label class="span2">key <textarea name="key" rows="4" placeholder="KID:KEY (one per line)" spellcheck="false"></textarea></label>
<label class="span2">headers JSON <input name="headers_json" /></label>
<div class="span2 actions">
<button type="submit" value="save">Save</button>
<button type="button" id="edit-cancel" class="ghost">Cancel</button>
</div>
</form>
</dialog>
<script src="/static/app.js"></script>
</body>
</html>