Expired eporner mp4 links are answered with a 302 to static.eporner.com/
na.mp4, a one-minute "watch it on eporner.com" clip. The links expire
exactly two hours after the /xhr/video call, so anything played from a
favourite, history entry or a list left open past that hit the decoy.
New /proxy/eporner/{alnum_id}/{height} re-resolves the hash/xhr chain at
play time and 302s to the matching (else best) quality. The eporner
provider and melonstube's eporner destinations now emit these proxy URLs;
verified app clients get the best quality as video.url via the existing
redirect-proxy rule. Verified live: proxy -> fresh CDN link -> 206 video/mp4
for app and non-app clients.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUYdCh2nCVsQYgJAT7gwSi
Hottub Docs
This folder is the fastest handoff path for anyone adding or repairing a channel.
Start here:
- Read
architecture.mdfor the server flow, request lifecycle, and core types. - Read
provider-playbook.md— its top "Best Practices (Living)" section is the cross-cutting rule set to internalize first, then follow the rest of the playbook for the exact process to add a new provider or proxy. - Use
provider-catalog.mdto find the closest existing implementation to copy. - Use
docs/hottubapp/*.htmlwhen you need the client-facing API contract for status, videos, or uploaders. - Only then touch
prompts/new-channel.md; it assumes the docs above exist.
Recommended local workflow:
cargo check -q
HOT_TUB_PROVIDER=<channel_id> cargo check -q
HOT_TUB_PROVIDER=<channel_id> cargo run --features debug
Useful runtime baseline:
DATABASE_URL=hottub.db
RUST_LOG=info
PROXY=0
BURP_URL=http://127.0.0.1:8081
FLARE_URL=http://127.0.0.1:8191/v1
DOMAIN=127.0.0.1:18080
DISCORD_WEBHOOK=
Key facts:
- Hottub is a Rust
ntexserver with providers undersrc/providers/. build.rscontrols compile-time provider registration./api/videosis the main provider execution path./proxy/...exists for sites whose direct media or thumbnails need a redirect/proxy layer.- Only three providers currently implement
/api/uploaders:hsex,omgxxx, andvjav. - Uploader IDs should be namespaced like
<channel>:<site-local-id>so/api/uploaderscan route directly.