-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathconnect.php
85 lines (76 loc) · 2.09 KB
/
connect.php
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
<?php
require_once('../include/apiInit.php');
require_once('AMI.php');
if(!modifyOk())
exit("Insufficient user permission to execute commands\n");
// Filter and validate user input
$fields = ['remotenode', 'button', 'localnode', 'perm', 'autodisc'];
foreach($fields as $f)
$$f = isset($_POST[$f]) ? trim(strip_tags($_POST[$f])) : '';
$perm = ($perm === 'true');
$autodisc = ($autodisc === 'true');
if(!preg_match("/^\d+$/", $localnode) || !$localnode)
exit("Invalid local node number\n");
if(!preg_match("/^\d+$/", $remotenode) || (!$remotenode && $button !== 'disconnect'))
exit("Invalid remote node number\n");
chdir('..');
// Load allmon.ini
$cfg = readNodeCfg();
if($cfg === false)
exit("allmon.ini not found\n");
// Open socket to Asterisk Manager
$ami = new AMI();
$fp = $ami->connect($cfg[$localnode]['host']);
if($fp === false)
exit("Could not connect\n");
$amiuser = $cfg[$localnode]['user'];
$pass = $cfg[$localnode]['passwd'];
if($ami->login($fp, $amiuser, $pass) === false)
exit("Could not login\n");
switch($button) {
case 'connect':
if($autodisc) {
echo "Disconnect all nodes from $localnode...";
$resp = $ami->command($fp, "rpt cmd $localnode ilink 6 0");
echo $resp . BR;
usleep(500000);
}
if($perm) {
$ilink = 13;
echo "Permanently Connect $localnode to $remotenode...";
} else {
$ilink = 3;
echo "Connect $localnode to $remotenode...";
}
break;
case 'monitor':
if($perm) {
$ilink = 12;
echo "Permanently Monitor $remotenode from $localnode...";
} else {
$ilink = 2;
echo "Monitor $remotenode from $localnode...";
}
break;
case 'localmonitor':
if($perm) {
$ilink = 18;
echo "Permanently Local Monitor $remotenode from $localnode...";
} else {
$ilink = 8;
echo "Local Monitor $remotenode from $localnode...";
}
break;
case 'disconnect':
if($remotenode === '0') {
$ilink = 6;
echo "Disconnect all nodes from $localnode...";
} else {
$ilink = 11;
echo "Disconnect $remotenode from $localnode...";
}
break;
}
$resp = $ami->command($fp, "rpt cmd $localnode ilink $ilink $remotenode");
fclose($fp);
echo $resp;