summaryrefslogtreecommitdiff
path: root/stacks/web/share/reverse-proxy/docroot/max25-websocket/config.php
diff options
context:
space:
mode:
authorinfo@mode42.com <info@mode42.com>2026-08-07 18:25:13 +0000
committerinfo@mode42.com <info@mode42.com>2026-08-07 18:25:13 +0000
commit04d965d67a7264a1c7c211494aebda1953df7603 (patch)
tree0ebd700a6e219f84a26a656f4bee8778bc75da7b /stacks/web/share/reverse-proxy/docroot/max25-websocket/config.php
Initial push
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.php98
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;
+}
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com