feat: add dark source inspection interface

This commit is contained in:
bot
2026-08-12 18:42:03 +03:00
parent db75f2c4f8
commit 277aa8a568
9 changed files with 1090 additions and 16 deletions
+25 -11
View File
@@ -36,22 +36,27 @@ accounts, playlists, live recording, or multiple simultaneous downloads.
## Development stages
1. Create a minimal containerized web application with a health check.
2. Inspect a URL and display sanitized source metadata and formats.
3. Add a durable job queue and separate worker.
4. Download media and report progress.
5. Add original-quality and compatible-MP4 output modes.
6. Add cleanup, limits, failure handling, and security tests.
7. Validate the complete local Docker deployment.
8. Deploy privately to the VPS through Cloudflare Access and Tunnel.
- [x] Create a minimal containerized web application with a health check.
- [x] Inspect a URL and display sanitized source metadata and formats.
- [x] Add a dark, responsive inspection interface.
- [ ] Define download presets and their exact yt-dlp selectors.
- [ ] Add a durable job queue and separate worker.
- [ ] Download media and report progress.
- [ ] Add cleanup, limits, failure handling, and security tests.
- [ ] Validate the complete local Docker deployment.
- [ ] Deploy privately to the VPS through Cloudflare Access and Tunnel.
Each stage should produce a small, working, reviewable commit.
## Local development
The current milestone is a minimal FastAPI application running in a hardened
local container. Docker publishes it only on the PC's loopback interface, so it
is not exposed to other devices on the LAN.
The current milestone provides a browser interface for inspecting public video
sources. It shows normalized source metadata and previews best-available and
compatible-MP4 outcomes. Download jobs are not implemented yet.
The application runs as a non-root user in a read-only container with Linux
capabilities dropped. Docker publishes it only on the PC's loopback interface,
so it is not exposed to other devices on the LAN.
Build and start it:
@@ -85,6 +90,10 @@ hostname must resolve entirely to public IP addresses. Playlists and
multi-video sources are rejected, and raw signed media URLs are not returned
to the browser.
The initial URL validation is not yet a complete SSRF defense. Do not expose
this development build to the Internet. See [`docs/SECURITY.md`](docs/SECURITY.md)
for the implemented boundary and work required before deployment.
Run the automated tests in an ephemeral container:
```bash
@@ -107,6 +116,11 @@ The original project discussion is retained in
that affect the implementation will be documented in this repository rather
than relying on that discussion alone.
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) describes the current and
planned application structure.
- [`docs/SECURITY.md`](docs/SECURITY.md) tracks the trust boundary and
pre-deployment requirements.
## Responsible use
This tool is intended for material the operator is authorized to retrieve and