summaryrefslogtreecommitdiffstats
path: root/modules-available/dnbd3/inc/dnbd3rpc.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/dnbd3/inc/dnbd3rpc.inc.php')
-rw-r--r--modules-available/dnbd3/inc/dnbd3rpc.inc.php58
1 files changed, 58 insertions, 0 deletions
diff --git a/modules-available/dnbd3/inc/dnbd3rpc.inc.php b/modules-available/dnbd3/inc/dnbd3rpc.inc.php
new file mode 100644
index 00000000..cdcda508
--- /dev/null
+++ b/modules-available/dnbd3/inc/dnbd3rpc.inc.php
@@ -0,0 +1,58 @@
+<?php
+
+class Dnbd3Rpc {
+
+ const QUERY_UNREACHABLE = 1;
+ const QUERY_NOT_200 = 2;
+ const QUERY_NOT_JSON = 3;
+
+ /**
+ * Query given DNBD3 server for status information.
+ *
+ * @param string $server server address
+ * @param int $port server port
+ * @param bool $stats include general stats
+ * @param bool $clients include client list
+ * @param bool $images include image list
+ * @param bool $diskSpace include disk space stats
+ * @param bool $config get config
+ * @param bool $altservers list of alt servers with status
+ * @return int|array the queried data as an array, or false on error
+ */
+ public static function query($server, $port, $stats, $clients, $images, $diskSpace = false, $config = false, $altservers = false)
+ {
+ // Special case - local server
+ if ($server === '<self>') {
+ $server = '127.0.0.1';
+ }
+ $url = 'http://' . $server . ':' . $port . '/query?';
+ if ($stats) {
+ $url .= 'q=stats&';
+ }
+ if ($clients) {
+ $url .= 'q=clients&';
+ }
+ if ($images) {
+ $url .= 'q=images&';
+ }
+ if ($diskSpace) {
+ $url .= 'q=space&';
+ }
+ if ($config) {
+ $url .= 'q=config&';
+ }
+ if ($altservers) {
+ $url .= 'q=altservers&';
+ }
+ $str = Download::asString($url, 3, $code);
+ if ($str === false)
+ return self::QUERY_UNREACHABLE;
+ if ($code !== 200)
+ return self::QUERY_NOT_200;
+ $ret = json_decode($str, true);
+ if (!is_array($ret))
+ return self::QUERY_NOT_JSON;
+ return $ret;
+ }
+
+}