diff options
Diffstat (limited to 'admin/WebConsole/comandos/gestores')
-rw-r--r-- | admin/WebConsole/comandos/gestores/gestor_Comandos.php | 59 | ||||
-rw-r--r-- | admin/WebConsole/comandos/gestores/wakeonlan_repo.php | 21 |
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; } -?> + |