summaryrefslogtreecommitdiffstats
path: root/admin/WebConsole/comandos/gestores
diff options
context:
space:
mode:
Diffstat (limited to 'admin/WebConsole/comandos/gestores')
-rw-r--r--admin/WebConsole/comandos/gestores/gestor_Comandos.php59
-rw-r--r--admin/WebConsole/comandos/gestores/wakeonlan_repo.php21
2 files changed, 61 insertions, 19 deletions
diff --git a/admin/WebConsole/comandos/gestores/gestor_Comandos.php b/admin/WebConsole/comandos/gestores/gestor_Comandos.php
index b2a81b79..943fdac7 100644
--- a/admin/WebConsole/comandos/gestores/gestor_Comandos.php
+++ b/admin/WebConsole/comandos/gestores/gestor_Comandos.php
@@ -20,6 +20,16 @@ include_once("../../includes/RecopilaIpesMacs.php");
//________________________________________________________________________________________________________
include_once("../includes/capturaacciones.php");
//________________________________________________________________________________________________________
+
+define('OG_CMD_ID_WAKEUP', 1);
+define('OG_CMD_ID_POWEROFF', 2);
+define('OG_CMD_ID_REBOOT', 5);
+define('OG_CMD_ID_HARDWARE', 6);
+define('OG_CMD_ID_SOFTWARE', 7);
+define("OG_CMD_ID_SCRIPT", 8);
+define('OG_CMD_ID_SESSION', 9);
+define('OG_CMD_ID_SENDMESSAGE', 16);
+
// Recoge parametros de seguimiento
$sw_ejya="";
$sw_seguimiento="";
@@ -73,7 +83,6 @@ $atributos=str_replace('$',chr(9),$atributos);
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<BODY>
<SCRIPT language="javascript" src="../jscripts/comunescomandos.js"></SCRIPT>
<?php echo '<SCRIPT language="javascript" src="../../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
@@ -116,9 +125,25 @@ $cmd->CreaParametro("@ordprocedimiento",0,1);
$cmd->CreaParametro("@ordtarea",0,1);
/* PARCHE UHU heredado de la version 1.1.0: Si la accion a realizar es Arrancar incluimos una pagina para arrancar desde el repo */
-if($funcion == "nfn=Arrancar".chr(13))
- include("wakeonlan_repo.php");
-/**/
+switch ($idcomando) {
+ case OG_CMD_ID_WAKEUP:
+ include("wakeonlan_repo.php");
+ break;
+ case OG_CMD_ID_SESSION:
+ session($cadenaip, $atributos);
+ break;
+ case OG_CMD_ID_POWEROFF:
+ poweroff($cadenaip);
+ break;
+ case OG_CMD_ID_REBOOT:
+ reboot($cadenaip);
+ break;
+ case OG_CMD_ID_HARDWARE:
+ hardware($cadenaip);
+ break;
+ case OG_CMD_ID_SOFTWARE:
+ software($cadenaip);
+}
if($ambito==0){ // Ambito restringido a un subconjuto de ordenadores con formato (idordenador1,idordenador2,etc)
$cmd->ParamSetValor("@restrambito",$idambito);
@@ -174,9 +199,14 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){
$ValorParametros=extrae_parametros($parametros,chr(13),'=');
$script=@urldecode($ValorParametros["scp"]);
if($sw_ejya=='on'){
- // comando 16 sólo agente nuevo
- if ($idcomando != 16){
- // Envio al servidor
+ if ($idcomando != OG_CMD_ID_SENDMESSAGE &&
+ $idcomando != OG_CMD_ID_WAKEUP &&
+ $idcomando != OG_CMD_ID_SESSION &&
+ $idcomando != OG_CMD_ID_POWEROFF &&
+ $idcomando != OG_CMD_ID_HARDWARE &&
+ $idcomando != OG_CMD_ID_SOFTWARE &&
+ $idcomando != OG_CMD_ID_REBOOT) {
+ // Envío al servidor
$shidra=new SockHidra($servidorhidra,$hidraport);
if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
$parametros.=$aplicacion;
@@ -199,28 +229,28 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){
$resulhidra = 1;
}
- // Comprobamos si el comando es soportado por el nuevo ogAgent
+ // Comprobamos si el comando es soportado por el nuevo OGAgent
$numip=0;
$ogAgentNuevo = false;
switch ($idcomando) {
- case 2:
+ case OG_CMD_ID_POWEROFF:
// Apagar
$urlcomando = 'poweroff';
$ogAgentNuevo = true;
break;
- case 5:
+ case OG_CMD_ID_REBOOT:
// Reiniciar
$urlcomando = 'reboot';
$ogAgentNuevo = true;
break;
- case 8:
+ case OG_CMD_ID_SCRIPT:
// Ejecutar script
$urlcomando = 'script';
$ogAgentNuevo = true;
$client = (isset ($_POST['modoejecucion']) && $_POST['modoejecucion'] != '' ) ? $_POST['modoejecucion'] : 'true';
$paramsPost = '{"script":"'.base64_encode($script).'","client":"'.$client.'"}';
break;
- case 16:
+ case OG_CMD_ID_SENDMESSAGE:
// Enviar mensaje
$urlcomando = 'popup';
$ogAgentNuevo = true;
@@ -228,7 +258,7 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){
break;
}
- // Se envía acción al nuevo ogAgent
+ // Se envía acción al nuevo ogAgent
if ( $ogAgentNuevo ) {
// Send REST requests to new OGAgent clients.
$urls = array();
@@ -241,7 +271,6 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){
$urls[$ip]['url'] = "https://$ip:8000/opengnsys/$urlcomando";
if (isset($auxKey[$i])) $urls[$ip]['header'] = Array("Authorization: ".$auxKey[$i]);
if (isset($paramsPost)) $urls[$ip]['post'] = $paramsPost;
-
$i++;
}
// Launch concurrent requests.
@@ -384,6 +413,8 @@ if ($resul){
}
}
?>
+</HEAD>
+<BODY>
</BODY>
</HTML>
diff --git a/admin/WebConsole/comandos/gestores/wakeonlan_repo.php b/admin/WebConsole/comandos/gestores/wakeonlan_repo.php
index b2929d48..c1c5394f 100644
--- a/admin/WebConsole/comandos/gestores/wakeonlan_repo.php
+++ b/admin/WebConsole/comandos/gestores/wakeonlan_repo.php
@@ -9,9 +9,17 @@ include_once("../../includes/restfunctions.php");
$cadenaip
$cadenamac
-*/
+ */
+
+//Multicast or Unicast
+preg_match_all('!\d{1}!', $atributos, $matches);
+
// Capturamos todas las ids
$macs = explode(";",$cadenamac);
+$ips = explode(';',$cadenaip);
+
+wol($matches[0][0], $macs, $ips);
+
// Recorremos las ids y vemos cual es la ip del repositorio
$repos = array();
$reposAndMacs = array();
@@ -43,19 +51,21 @@ foreach($macs as $mac){
}
$rs->Cerrar();
}
+
// En este punto tenemos un array con todos los repos y cada uno de ellos con una lista de todas las macs que deben arrancar
// Recorremos cada uno de ellos
foreach($reposAndMacs as $repo => $macs){
// En el array de $macs tenemos la clave "apikey"
- if($macs["apikey"] !== ""){
+ if($macs["apikey"] !== "") {
$apiKeyRepo = $macs["apikey"];
unset($macs["apikey"]);
// Componer datos de conexión para el repositorio.
$urls[$repo]['url'] = "https://$repo/opengnsys/rest/repository/poweron";
$urls[$repo]['header'] = array('Authorization: '. $apiKeyRepo);
- $urls[$repo]['post'] = '{"macs": ["' . implode('","', $macs) . '"]}';
+ $urls[$repo]['post'] = '{"macs": ["' . implode('","', $macs) . '"], "ips": ["' . str_replace(';', '","', $cadenaip) .
+ '"], "mar": "' . $matches[0][0] . '"}';
}
- else{
+ else {
$avisoRepo = true;
}
}
@@ -76,10 +86,11 @@ function existREPO($repo, $repos){
$index = 0;
while(!$found && $index < count($repos)){
$r = $repos[$index];
+ $index++;
if($r == $repo)
$found=true;
}
return $found;
}
-?>
+