mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-16 06:06:18 -08:00
New guide at /blog/remote-control-guide/: enabling the remote in Settings, opening it on a phone from the QR code, what each control does and which list it navigates, a checklist for a page that does not load, and why the remote must stay on the local network. Eight FAQ entries. The remote-control feature page now links to it instead of the M3U guide. Both screenshots are mock-backed. The phone view is the first "browser" shot: a manifest entry names a loopback URL and a mobile viewport, and the capture frames it in a separate Chromium page behind the same network and content guards, with the manifest validator accepting loopback origins only. The setup saves the remote-control setting so the app's own server answers, then selects a live channel; the Xtream mock's marketing scenario now serves live stream URLs from local bytes so that selection never leaves the machine. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
74 lines
3.3 KiB
TypeScript
74 lines
3.3 KiB
TypeScript
/**
|
|
* Fixture identities shared by the capture driver (seeding) and the named
|
|
* setup actions (guide shots that re-enter the add-playlist dialog). Kept in
|
|
* a leaf module so capture-navigation.ts can import them without pulling in
|
|
* the driver, which itself imports the navigation module.
|
|
*
|
|
* Everything here is fictional and resolves only against the local Xtream
|
|
* mock server; the G4 frame guard still rejects any URL carrying query
|
|
* credentials, so the auto-detect hand-out deliberately uses labeled lines
|
|
* instead of a `get.php?username=…` link.
|
|
*/
|
|
|
|
import { FICTIONAL_STALKER_MAC } from './screenshot-guards.mjs';
|
|
|
|
export const XTREAM_MOCK_ORIGIN = 'http://localhost:3211';
|
|
export const XTREAM_FIXTURE_TITLE = 'Fictional Xtream Demo';
|
|
export const M3U_FIXTURE_TITLE = 'release-demo';
|
|
|
|
export const STALKER_MOCK_ORIGIN = 'http://localhost:3210';
|
|
export const STALKER_FIXTURE_TITLE = 'Fictional Stalker Demo';
|
|
/** Reseller-panel shape most hand-outs use; discovery classifies the mock's answer itself. */
|
|
export const STALKER_FIXTURE_PORTAL_URL = `${STALKER_MOCK_ORIGIN}/portal.php`;
|
|
/** The mock's `marketing-demo` scenario; the only MAC the frame guard lets through. */
|
|
export const STALKER_FIXTURE_MAC = FICTIONAL_STALKER_MAC;
|
|
|
|
/** Credential pair of the mock server's curated `marketing` scenario. */
|
|
export const XTREAM_FIXTURE_CREDENTIALS = {
|
|
username: 'marketing',
|
|
password: 'marketing',
|
|
} as const;
|
|
|
|
/**
|
|
* Second Xtream source for the alternative-sources guide: the mock's
|
|
* `marketing2` scenario serves the identical catalog, so every movie exists in
|
|
* both playlists and the detail page shows its Sources chip. Seeded only for
|
|
* shots that walk into it — it adds a card to the dashboard.
|
|
*/
|
|
export const XTREAM_SECONDARY_FIXTURE_TITLE = 'Fictional Xtream Backup';
|
|
export const XTREAM_SECONDARY_FIXTURE_CREDENTIALS = {
|
|
username: 'marketing2',
|
|
password: 'marketing2',
|
|
} as const;
|
|
|
|
/**
|
|
* Port the remote-control guide shots enable in the app's settings. The app's
|
|
* default; the phone-view shot opens `http://127.0.0.1:<port>/` in a mobile
|
|
* viewport. A capture fails with a clear message when something else holds it.
|
|
*/
|
|
export const CAPTURE_REMOTE_CONTROL_PORT = 8765;
|
|
export const CAPTURE_REMOTE_CONTROL_URL = `http://127.0.0.1:${CAPTURE_REMOTE_CONTROL_PORT}/`;
|
|
|
|
/**
|
|
* Download folder the guide shots authorize inside the isolated data dir. The
|
|
* capture stubs Electron's folder dialog to return it, so no download ever
|
|
* lands in the real OS Downloads folder and no personal path reaches a frame.
|
|
*/
|
|
export const CAPTURE_DOWNLOAD_FOLDER_NAME = 'IPTVnator downloads';
|
|
|
|
/** Fictional playlist and guide addresses typed into forms for the M3U guide shots; never fetched. */
|
|
export const M3U_FIXTURE_PLAYLIST_URL = `${XTREAM_MOCK_ORIGIN}/demo/channels.m3u8`;
|
|
export const M3U_FIXTURE_PLAYLIST_TITLE = 'Fictional TV playlist';
|
|
export const EPG_FIXTURE_URL = `${XTREAM_MOCK_ORIGIN}/demo/guide.xml.gz`;
|
|
|
|
/** A fictional "your subscription is ready" message for the Auto-detect shot. */
|
|
export const AUTO_DETECT_FIXTURE_MESSAGE = [
|
|
'Welcome to Fictional TV! Your account is ready.',
|
|
'',
|
|
`Host: ${XTREAM_MOCK_ORIGIN}`,
|
|
`Username: ${XTREAM_FIXTURE_CREDENTIALS.username}`,
|
|
`Password: ${XTREAM_FIXTURE_CREDENTIALS.password}`,
|
|
'',
|
|
'Use these details in any Xtream Codes compatible player.',
|
|
].join('\n');
|