summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrina Gómez <irinagomez@us.es>2021-02-23 12:21:01 +0100
committerIrina Gómez <irinagomez@us.es>2021-02-23 12:21:01 +0100
commit69fd9c1714660848714351e95a7f28aee115c723 (patch)
tree56b682a3643e8369c1f2f763a2f5fc7f52607cd1
parentf7e9f6fa49e883383e6e5d107df02ebd730c07e8 (diff)
#992 REST route /ous/:ouid/labs/:labid/clients/:clntid/init:
Fixes that include global variables, required to add the operating system startup to the action queue. This route is defined in swagger.
-rw-r--r--admin/WebConsole/rest/opengnsys-api.yml29
-rw-r--r--admin/WebConsole/rest/remotepc.php10
2 files changed, 38 insertions, 1 deletions
diff --git a/admin/WebConsole/rest/opengnsys-api.yml b/admin/WebConsole/rest/opengnsys-api.yml
index bea6cae2..b63af11a 100644
--- a/admin/WebConsole/rest/opengnsys-api.yml
+++ b/admin/WebConsole/rest/opengnsys-api.yml
@@ -662,6 +662,35 @@ paths:
- server
- client
- remotepc
+ /ous/{ouid}/labs/{labid}/clients/{clientid}/init:
+ post:
+ description: Send an init operation to a client with an image installed.
+ parameters:
+ - $ref: "#/parameters/ouParam"
+ - $ref: "#/parameters/labParam"
+ - $ref: "#/parameters/clientParam"
+ - name: data
+ in: body
+ description: Image identificator
+ required: true
+ schema:
+ type: object
+ properties:
+ image:
+ description: Operating System Image Identifier
+ type: integer
+ format: int64
+ minimum: 0
+ required: [ image ]
+ responses:
+ "200":
+ description: Successful response
+ security:
+ - apikey: []
+ tags:
+ - server
+ - client
+ - remotepc
/ous/{ouid}/labs/{labid}/clients/{clientid}/session:
post:
description: Record session data for a client
diff --git a/admin/WebConsole/rest/remotepc.php b/admin/WebConsole/rest/remotepc.php
index c3b4fe7c..a7f50d2d 100644
--- a/admin/WebConsole/rest/remotepc.php
+++ b/admin/WebConsole/rest/remotepc.php
@@ -573,6 +573,12 @@ $app->post('/ous/:ouid/labs/:labid/clients/:clntid/init', 'validateApiKey',
function($ouid, $labid, $clntid) use ($app) {
global $cmd;
global $userid;
+ global $AMBITO_ORDENADORES;
+ global $EJECUCION_COMANDO;
+ global $ACCION_INICIADA;
+ global $ACCION_FINALIZADA;
+ global $ACCION_SINRESULTADO;
+ global $ACCION_FALLIDA;
if ($app->settings['debug'])
writeRemotepcLog("{$app->request()->getResourceUri()}: Init.");
@@ -587,6 +593,7 @@ $app->post('/ous/:ouid/labs/:labid/clients/:clntid/init', 'validateApiKey',
// Reading POST parameters in JSON format.
$input = json_decode($app->request()->getBody());
$imageid = $input->image ?? 0;
+ $opts = Array('options' => Array('min_range' => 1)); // Check for int>0
if (filter_var($imageid, FILTER_VALIDATE_INT, $opts) === false) {
throw new Exception("Image id. must be positive integer");
}
@@ -601,7 +608,7 @@ $app->post('/ous/:ouid/labs/:labid/clients/:clntid/init', 'validateApiKey',
// Select data to init a session.
$cmd->texto = <<<EOD
-SELECT adm.idusuario, ordenadores.ip, ordenadores.mac, ordenadores.mascara, ordenadores.agentkey,
+SELECT adm.idusuario, ordenadores.idordenador, ordenadores.ip, ordenadores.mac, ordenadores.mascara, ordenadores.agentkey,
par.numdisk, par.numpar, repo.ip AS repoip, repo.apikey AS repokey
FROM ordenadores
JOIN aulas USING(idaula)
@@ -652,6 +659,7 @@ EOD;
$result = multiRequest($repo);
}
// Create an init session on opertions queue.
+ $timestamp = time();
$cmd->texto = <<<EOD
INSERT INTO acciones
SET tipoaccion=$EJECUCION_COMANDO,