mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-05 20:02:41 +02:00
The prelude shims (Paths/AppConfig/Binaries/ErrorCodes.php) were deleted and the $rErrorCodes global is gone. Point the developer guides at the new homes: constants → ConstantsInitializer (paths()/appConfig()/binaries() maps), error catalogue → ErrorResponder::codes(). Also refresh the now-outdated "refactored later" note in build/rector.php's skip list. Only docs/en is edited (docs/ru is regenerated from it before a release); make docs-build passes.
112 lines
4.2 KiB
Markdown
112 lines
4.2 KiB
Markdown
# Development Feature Flags
|
|
|
|
XC_VM uses constants and settings-driven flags to control environment behavior.
|
|
|
|
Application constants are defined by the `appConfig()` map in `src/Core/Config/ConstantsInitializer.php`.
|
|
|
|
---
|
|
|
|
## Active Runtime Flag
|
|
|
|
### `PHP_ERRORS`
|
|
|
|
```php
|
|
define('PHP_ERRORS', $rShowErrors); // derived from $rSettings['debug_show_errors']
|
|
```
|
|
|
|
`PHP_ERRORS` controls PHP/debug verbosity and logger screen output:
|
|
|
|
```php
|
|
Logger::init(PHP_ERRORS, LOGS_TMP_PATH . 'error_log.log');
|
|
```
|
|
|
|
### `DB_ACCESS_ENABLED`
|
|
|
|
```php
|
|
define('DB_ACCESS_ENABLED', false); // enables phpMiniAdmin tab/page in admin panel
|
|
```
|
|
|
|
`DB_ACCESS_ENABLED` controls access to phpMiniAdmin from admin UI only.
|
|
It does not block core application database connections. Its companion `DB_ACCESS_PWD`
|
|
(also in the `appConfig()` map) sets the password protecting that page — leave it empty to keep the
|
|
tab off, set a strong value only while you need it.
|
|
|
|
### `DEV_MODE`
|
|
|
|
```php
|
|
define('DEV_MODE', false); // master development-mode flag
|
|
```
|
|
|
|
`DEV_MODE` is the compile-time development switch (`bootstrap.php` reads it into `self::$devMode`).
|
|
When `true` it forces `PHP_ERRORS` on (verbose on-screen errors), surfaces reCAPTCHA diagnostics,
|
|
and enables other developer conveniences.
|
|
|
|
> ⚠️ **Never enable `DEV_MODE` or `debug_show_errors` on production** — both expose internal
|
|
> errors/paths to visitors. `PHP_ERRORS` ends up `true` if **either** the `DEV_MODE` constant is
|
|
> set (bootstrap path) **or** the `debug_show_errors` setting is on (request-guard path); that is
|
|
> the resolution rule when the two overlap.
|
|
|
|
---
|
|
|
|
## Settings-driven Flags (`$rSettings`)
|
|
|
|
Loaded from settings cache and used in runtime decision points.
|
|
|
|
| Key | Type | Meaning |
|
|
| --- | --- | --- |
|
|
| `debug_show_errors` | `bool` | show detailed errors/debug output |
|
|
| `recaptcha_enable` | `bool` | enable reCAPTCHA v2 on login |
|
|
| `verify_host` | `bool` | enforce host allowlist validation |
|
|
| `save_login_logs` | `bool` | persist login attempts in `login_logs` |
|
|
| `fanout_supervise` | `bool` | hand live streams to the xc_fanout supervisor instead of a PHP monitor (default on) |
|
|
| `fanout_source_backend` | `auto` / `ffmpeg` / `native` | how sources become MPEG-TS; with supervision, whether copy-only streams run the native remuxer (`auto`: with ffmpeg fallback) |
|
|
|
|
These values are loaded from `CACHE_TMP_PATH/settings` by request guards.
|
|
|
|
---
|
|
|
|
## Static App Constants
|
|
|
|
From the `appConfig()` map in `src/Core/Config/ConstantsInitializer.php` (each entry is
|
|
`define()`'d by `ConstantsInitializer::init()`):
|
|
|
|
```php
|
|
'DB_ACCESS_ENABLED' => false,
|
|
'DB_ACCESS_PWD' => '', // password for the phpMiniAdmin tab (empty = off)
|
|
'DEV_MODE' => false, // master development-mode switch
|
|
'XC_VM_VERSION' => '2.4.1', // bumped every release — treat as illustrative
|
|
'GIT_OWNER' => 'Vateron-Media',
|
|
'GIT_REPO_MAIN' => 'XC_VM',
|
|
'GIT_REPO_UPDATE' => 'XC_VM_Update',
|
|
'GIT_REPO_BIN' => 'XC_VM_Binaries',
|
|
'GIT_REPO_FANOUT' => 'XC_VM_Fanout', // xc_fanout daemon source + binaries
|
|
'GIT_REPO_PROXY' => 'XC_VM_Proxy',
|
|
'MONITOR_CALLS' => 3,
|
|
'OPENSSL_EXTRA' => '...', // literal fallback; the real per-install secret is read
|
|
// from the config/openssl_extra file by init()
|
|
```
|
|
|
|
---
|
|
|
|
## Adding New Flags
|
|
|
|
Use static constants in the `appConfig()` map (`ConstantsInitializer.php`) for fixed infrastructure/runtime constants (edited in
|
|
code, take effect on next request). Use settings (`$rSettings`) for values an operator toggles
|
|
from the admin panel (**Settings** page) — those are persisted in the `settings` DB table and
|
|
read from `CACHE_TMP_PATH/settings`.
|
|
|
|
Avoid defining the same behavior in both places. When they unavoidably overlap (as with
|
|
`DEV_MODE` vs `debug_show_errors` → `PHP_ERRORS`), the effective value is the **OR** of the two —
|
|
either turning it on wins.
|
|
|
|
---
|
|
|
|
## Related files
|
|
|
|
| File | Purpose |
|
|
| --- | --- |
|
|
| `src/Core/Config/ConstantsInitializer.php` | static app constants (`appConfig()` map) |
|
|
| `src/Core/Http/RequestGuard.php` | loads `$rSettings`, sets `PHP_ERRORS` |
|
|
| `src/Core/Error/ErrorHandler.php` | uses `debug_show_errors` behavior |
|
|
| `src/Core/Logging/Logger.php` | debug/verbosity behavior |
|