www/getglobal.php

Mon, 15 Apr 2024 17:06:15 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 15 Apr 2024 17:06:15 +0200
changeset 679
ecfcb1104b54
child 698
92a080c1a5d5
permissions
-rw-r--r--

Added getglobal.php script

679
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 <?php
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 function open_socket()
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 if (!($sock === false)) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 if (socket_connect($sock, "localhost", 6554)) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0));
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 } else {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 socket_close($sock);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 return $sock;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 /**
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * @param string $command to send to the server.
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 * @return string with the complete reply from the
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 * server. This can be a multiline reply.
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 */
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 function send_cmd($command)
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 $sock = open_socket();
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 if ($sock == false) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 return "";
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 socket_write($sock, $command . "\r\n", 4096);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 $answer = "";
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 while (1) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 $line = socket_read($sock, 4096);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 if ($line === '')
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 break;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 $answer .= $line;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 socket_close($sock);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 return $answer;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 function startsWith($haystack, $needle)
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 return !strncmp($haystack, $needle, strlen($needle));
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 $answer = send_cmd("GLOBAL JSON");
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 header("Content-type: application/json");
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 $arr = explode("\r\n", $answer);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 if (startsWith($arr[0], "213")) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 echo $arr[1];
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 } else {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 echo '{}';
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60

mercurial