1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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;
}
|