summaryrefslogtreecommitdiffstats
path: root/admin/WebConsole/includes/restfunctions.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/WebConsole/includes/restfunctions.php')
-rw-r--r--admin/WebConsole/includes/restfunctions.php211
1 files changed, 209 insertions, 2 deletions
diff --git a/admin/WebConsole/includes/restfunctions.php b/admin/WebConsole/includes/restfunctions.php
index 3f91f7f5..14cace17 100644
--- a/admin/WebConsole/includes/restfunctions.php
+++ b/admin/WebConsole/includes/restfunctions.php
@@ -1,5 +1,212 @@
<?php
-
+
+define('OG_REST_URL', 'http://127.0.0.1:8888/');
+
+define('GET', 1);
+define('POST', 2);
+define('CUSTOM', 3);
+
+define('OG_REST_CMD_CLIENTS', 'clients');
+define('OG_REST_CMD_WOL', 'wol');
+define('OG_REST_CMD_SESSION', 'session');
+define('OG_REST_CMD_RUN', 'shell/run');
+define('OG_REST_CMD_OUTPUT', 'shell/output');
+define('OG_REST_CMD_POWEROFF', 'poweroff');
+define('OG_REST_CMD_REBOOT', 'reboot');
+define('OG_REST_CMD_STOP', 'stop');
+define('OG_REST_CMD_REFRESH', 'refresh');
+define('OG_REST_CMD_HARDWARE', 'hardware');
+define('OG_REST_CMD_SOFTWARE', 'software');
+
+define('OG_REST_PARAM_CLIENTS', 'clients');
+define('OG_REST_PARAM_ADDR', 'addr');
+define('OG_REST_PARAM_MAC', 'mac');
+define('OG_REST_PARAM_DISK', 'disk');
+define('OG_REST_PARAM_PART', 'partition');
+define('OG_REST_PARAM_RUN', 'run');
+define('OG_REST_PARAM_TYPE', 'type');
+define('OG_REST_PARAM_STATE', 'state');
+
+$conf_file = parse_ini_file(__DIR__ . '/../../etc/ogAdmRepo.cfg');
+define('OG_REST_API_TOKEN', 'Authorization: ' . $conf_file['ApiToken']);
+
+function common_request($command, $type, $data = null) {
+
+ $json = json_encode($data);
+
+ $service_url = OG_REST_URL.$command;
+
+ $curl = curl_init($service_url);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array(
+ OG_REST_API_TOKEN,
+ ));
+
+ switch ($type) {
+ default:
+ case GET:
+ break;
+ case POST:
+ curl_setopt($curl, CURLOPT_POST, true);
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
+ }
+
+ $curl_response = curl_exec($curl);
+ $info = curl_getinfo($curl);
+
+ if ($curl_response === false || $info['http_code'] != 200) {
+ syslog(LOG_ERR, 'error occured during curl exec. Additioanl info: ' . print_r($info, TRUE));
+ return 0;
+ }
+
+ curl_close($curl);
+
+ syslog(LOG_INFO, 'response '.$command.' ok!');
+
+ return json_decode($curl_response, true);
+}
+
+
+function shell($case, $string_ips, $command) {
+
+ $ips = explode(';',$string_ips);
+
+ switch ($case) {
+ case 1:
+ $data = array(OG_REST_PARAM_CLIENTS => $ips,
+ OG_REST_PARAM_RUN => $command);
+ $command = OG_REST_CMD_RUN;
+ break;
+ default:
+ case 2:
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+ $command = OG_REST_CMD_OUTPUT;
+ }
+
+ $result = common_request($command, POST,
+ $data)[OG_REST_PARAM_CLIENTS][0]['output'];
+
+ return (is_null($result) ? '1' : $result);
+}
+
+function clients($case, $ips) {
+
+ switch ($case) {
+ case 1:
+ $type = POST;
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+ break;
+ case 2:
+ $type = GET;
+ $data = null;
+ break;
+ }
+
+ $result = common_request(OG_REST_CMD_CLIENTS, $type, $data);
+
+ $trama_notificacion = "";
+ if (isset($result[OG_REST_PARAM_CLIENTS])) {
+ foreach ($result[OG_REST_PARAM_CLIENTS] as $client) {
+ $trama_notificacion .= $client[OG_REST_PARAM_ADDR].'/'.
+ $client[OG_REST_PARAM_STATE].';';
+ }
+ }
+
+ return $trama_notificacion;
+}
+
+function wol($type_wol, $macs, $ips) {
+
+ switch ($type_wol) {
+ default:
+ case 1:
+ $wol = 'broadcast';
+ break;
+ case 2:
+ $wol = 'unicast';
+ }
+
+ $clients = array();
+
+ for($i=0; $i<count($macs); $i++) {
+ $clients[] = array(OG_REST_PARAM_ADDR => $ips[$i],
+ OG_REST_PARAM_MAC => $macs[$i]);
+ }
+
+ $data = array(OG_REST_PARAM_TYPE => $wol,
+ OG_REST_PARAM_CLIENTS => $clients);
+
+ common_request(OG_REST_CMD_WOL, POST, $data);
+}
+
+function session($string_ips, $params) {
+
+ preg_match_all('!\d{1}!', $params, $matches);
+
+ $ips = explode(';',$string_ips);
+ $disk = $matches[0][0];
+ $part = $matches[0][1];
+
+ $data = array(OG_REST_PARAM_CLIENTS => $ips,
+ OG_REST_PARAM_DISK => $disk, OG_REST_PARAM_PART => $part);
+
+ common_request(OG_REST_CMD_SESSION, POST, $data);
+}
+
+function poweroff($string_ips) {
+
+ $ips = explode(';',$string_ips);
+
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+
+ common_request(OG_REST_CMD_POWEROFF, POST, $data);
+}
+
+function reboot($string_ips) {
+
+ $ips = explode(';',$string_ips);
+
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+
+ common_request(OG_REST_CMD_REBOOT, POST, $data);
+}
+
+function stop($string_ips) {
+
+ $ips = explode(';',$string_ips);
+
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+
+ common_request(OG_REST_CMD_STOP, POST, $data);
+}
+
+function refresh($string_ips) {
+
+ $ips = explode(';',$string_ips);
+
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+
+ common_request(OG_REST_CMD_REFRESH, POST, $data);
+}
+
+function hardware($string_ips) {
+
+ $ips = explode(';',$string_ips);
+
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+
+ common_request(OG_REST_CMD_HARDWARE, POST, $data);
+}
+
+function software($string_ips) {
+
+ $ips = explode(';',$string_ips);
+
+ $data = array(OG_REST_PARAM_CLIENTS => $ips);
+
+ common_request(OG_REST_CMD_SOFTWARE, POST, $data);
+}
+
/*
* @function multiRequest.
* @param URLs array (may include header and POST data), cURL options array.
@@ -69,4 +276,4 @@ function multiRequest($data, $options=array(CURLOPT_SSL_VERIFYHOST => false, CUR
return $result;
}
-?>
+