feat: add dark source inspection interface
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user