diff options
Diffstat (limited to 'stacks/web/share/reverse-proxy/docroot/max25-websocket/config.php')
| -rw-r--r-- | stacks/web/share/reverse-proxy/docroot/max25-websocket/config.php | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/stacks/web/share/reverse-proxy/docroot/max25-websocket/config.php b/stacks/web/share/reverse-proxy/docroot/max25-websocket/config.php new file mode 100644 index 0000000..7a7f8cf --- /dev/null +++ b/stacks/web/share/reverse-proxy/docroot/max25-websocket/config.php @@ -0,0 +1,98 @@ +<?php +/** + * Browser terminal defaults — merged from web-terminal.ini and max25d.ini. + */ +declare(strict_types=1); + +function max25_web_ini_path(): string +{ + $p = getenv('MAX25_WEB_TERMINAL_INI'); + if ($p !== false && $p !== '') { + return $p; + } + if (is_readable('/etc/max25/web-terminal.ini')) { + return '/etc/max25/web-terminal.ini'; + } + return __DIR__ . '/../../../web-terminal.ini.example'; +} + +function max25_web_parse_bool(string $v, bool $default): bool +{ + $v = strtolower(trim($v)); + if ($v === '') { + return $default; + } + return in_array($v, ['1', 'yes', 'true', 'on'], true); +} + +/** @return array{device:string,callerid:string,callid:string,ax25_ui:bool,connect_on_start:bool} */ +function max25_web_session_defaults(): array +{ + $defaults = [ + 'device' => '', + 'callerid' => '', + 'callid' => '', + 'ax25_ui' => true, + 'connect_on_start' => true, + ]; + + $web_ini = max25_web_ini_path(); + $web = @parse_ini_file($web_ini, true, INI_SCANNER_RAW); + $sec = []; + if (is_array($web)) { + $sec = $web['session'] ?? []; + if (isset($sec['device'])) { + $defaults['device'] = trim((string)$sec['device']); + } + if (isset($sec['callerid']) && trim((string)$sec['callerid']) !== '') { + $defaults['callerid'] = strtoupper(trim((string)$sec['callerid'])); + } + if (isset($sec['callid']) && trim((string)$sec['callid']) !== '') { + $defaults['callid'] = strtoupper(trim((string)$sec['callid'])); + } + if (isset($sec['ax25_ui'])) { + $defaults['ax25_ui'] = max25_web_parse_bool((string)$sec['ax25_ui'], true); + } + if (isset($sec['connect_on_start'])) { + $defaults['connect_on_start'] = max25_web_parse_bool((string)$sec['connect_on_start'], true); + } + $max25d_ini = trim((string)($web['max25-web-terminal']['max25d_ini'] ?? '')); + } else { + $max25d_ini = ''; + } + + if ($max25d_ini === '') { + $env = getenv('MAX25D_INI'); + $max25d_ini = ($env !== false && $env !== '') ? $env : '/etc/max25/max25d.ini'; + } + if (!is_readable($max25d_ini)) { + return $defaults; + } + + $md = @parse_ini_file($max25d_ini, true, INI_SCANNER_RAW); + if (!is_array($md)) { + return $defaults; + } + + $modem = $md['modem'] ?? []; + $devices = $md['devices'] ?? []; + + if ($defaults['device'] === '') { + if (isset($devices['default'])) { + $defaults['device'] = trim((string)$devices['default']); + } elseif (isset($md['daemon']['device'])) { + $defaults['device'] = trim((string)$md['daemon']['device']); + } + } + if ($defaults['callerid'] === '' && isset($modem['callerid'])) { + $defaults['callerid'] = strtoupper(trim((string)$modem['callerid'])); + } + if ($defaults['callid'] === '' && isset($modem['callid'])) { + $defaults['callid'] = strtoupper(trim((string)$modem['callid'])); + } + if (!isset($sec['ax25_ui']) && isset($modem['ax25_ui'])) { + $defaults['ax25_ui'] = max25_web_parse_bool((string)$modem['ax25_ui'], true); + } + + return $defaults; +} |
