source: admin/WebConsole/comandos/gestores/gestor_Comandos.php @ d81fc6a

Last change on this file since d81fc6a was de687e3, checked in by ramon <ramongomez@…>, 10 years ago

#673: Integrar código de la versión 1.0.6 en rama principal.

git-svn-id: https://opengnsys.es/svn/trunk@4641 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 12.9 KB
Line 
1<?php
2// *************************************************************************************************************************************************
3// Aplicación WEB: ogAdmWebCon
4// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
5// Fecha Creación: Año 2009-2010
6// Fecha Última modificación: Agosto-2010
7// Nombre del fichero: gestor_Comandos.php
8// Descripción :
9//              Gestor de todos los comandos
10// *************************************************************************************************************************************************
11include_once("../../includes/ctrlacc.php");
12include_once("../../clases/AdoPhp.php");
13include_once("../../clases/SockHidra.php");
14include_once("../../includes/constantes.php");
15include_once("../../includes/comunes.php");
16include_once("../../includes/cuestionacciones.php");
17include_once("../../includes/CreaComando.php");
18include_once("../../includes/RecopilaIpesMacs.php");
19//________________________________________________________________________________________________________
20include_once("../includes/capturaacciones.php");
21//________________________________________________________________________________________________________
22
23 // Recoge parametros de seguimiento
24$sw_ejya="";
25$sw_seguimiento="";
26$sw_ejprg="";
27$sw_mkprocedimiento="";
28$nombreprocedimiento="";
29$idprocedimiento="";
30$ordprocedimiento=0;
31
32$sw_mktarea="";
33$nombretarea="";
34$idtarea="";
35$ordtarea=0;
36
37if (isset($_POST["sw_ejya"]))   $sw_ejya=$_POST["sw_ejya"];
38if (isset($_POST["sw_seguimiento"]))    $sw_seguimiento=$_POST["sw_seguimiento"];
39
40if (isset($_POST["sw_ejprg"]))  $sw_ejprg=$_POST["sw_ejprg"];
41
42if (isset($_POST["sw_mkprocedimiento"]))        $sw_mkprocedimiento=$_POST["sw_mkprocedimiento"];
43if (isset($_POST["nombreprocedimiento"]))       $nombreprocedimiento=$_POST["nombreprocedimiento"];
44if (isset($_POST["idprocedimiento"]))   $idprocedimiento=$_POST["idprocedimiento"];
45if (isset($_POST["ordprocedimiento"]))  $ordprocedimiento=$_POST["ordprocedimiento"];
46if(empty($ordprocedimiento)) $ordprocedimiento=0;
47
48if (isset($_POST["sw_mktarea"]))        $sw_mktarea=$_POST["sw_mktarea"];
49if (isset($_POST["nombretarea"]))       $nombretarea=$_POST["nombretarea"];
50if (isset($_POST["idtarea"]))   $idtarea=$_POST["idtarea"];
51if (isset($_POST["ordtarea"]))  $ordtarea=$_POST["ordtarea"];
52if(empty($ordtarea)) $ordtarea=0;
53
54//__________________________________________________________________
55$cmd=CreaComando($cadenaconexion);
56if (!$cmd)
57        Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
58//__________________________________________________________________
59$funcion="nfn=".$funcion.chr(13); // Nombre de la función que procesa el comando y el script que lo implementa
60$aplicacion=""; // Ámbito de aplicación (cadena de ipes separadas por ";" y de identificadores de ordenadores por ","
61$acciones=""; // Cadena de identificadores de acciones separadas por ";" para seguimiento
62
63
64
65$atributos=str_replace('@',chr(13),$atributos); // Reemplaza caracters
66$atributos=str_replace('#',chr(10),$atributos);
67$atributos=str_replace('$',chr(9),$atributos);
68
69
70//__________________________________________________________________
71?>
72<HTML>
73<HEAD>
74        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
75<BODY>
76        <SCRIPT language="javascript" src="../jscripts/comunescomandos.js"></SCRIPT>
77        <? echo '<SCRIPT language="javascript" src="../../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
78        <? echo '<SCRIPT language="javascript" src="../../idiomas/javascripts/'.$idioma.'/comandos/ejecutarscripts_'.$idioma.'.js"></SCRIPT>'?>
79<?php
80//##################################################################
81if ( ereg("ptc=UNICAST", $atributos) & $ambito!=16) { ?>
82        <SCRIPT language="javascript">
83        if (confirm(TbMsg[4]) == false) {
84                alert(CTbMsg[0]);
85                location.href="../../nada.php"
86        }
87        </SCRIPT>
88<?php } ?>
89
90<?php
91//##################################################################
92/* Recopila identificadore ,ipes y macs para envío de comandos */
93$cadenaid="";
94$cadenaip="";
95$cadenamac="";
96
97if(!empty($filtro)){ // Ambito restringido a un subconjuto de ordenadores
98        if(substr($filtro,strlen($cadenaid)-1,1)==";") // Si el último caracter es una coma
99                $filtro=substr($filtro,0,strlen($filtro)-1); // Quita la coma
100}
101RecopilaIpesMacs($cmd,$ambito,$idambito,$filtro);
102
103/*--------------------------------------------------------------------------------------------------------------------
104        Creación de parametros para sentencias SQL
105--------------------------------------------------------------------------------------------------------------------*/
106$cmd->CreaParametro("@tipoaccion",0,1);
107$cmd->CreaParametro("@idtipoaccion",0,1);
108$cmd->CreaParametro("@descriaccion","",0);
109$cmd->CreaParametro("@idordenador",0,1);
110$cmd->CreaParametro("@ip","",0);
111$cmd->CreaParametro("@sesion",0,1);
112$cmd->CreaParametro("@parametros","",0);
113$cmd->CreaParametro("@fechahorareg","",0);
114$cmd->CreaParametro("@estado",0,1);
115$cmd->CreaParametro("@resultado",0,1);
116$cmd->CreaParametro("@idcentro",0,1);
117$cmd->CreaParametro("@idprocedimiento",0,1);
118$cmd->CreaParametro("@descripcion","",0);
119$cmd->CreaParametro("@idcomando",0,1);
120$cmd->CreaParametro("@idtarea",0,1);
121$cmd->CreaParametro("@ambito",0,1);
122$cmd->CreaParametro("@idambito",0,1);
123$cmd->CreaParametro("@restrambito","",0);
124$cmd->CreaParametro("@ordprocedimiento",0,1);
125$cmd->CreaParametro("@ordtarea",0,1);
126
127if($ambito==0){ // Ambito restringido a un subconjuto de ordenadores con formato (idordenador1,idordenador2,etc)
128        $cmd->ParamSetValor("@restrambito",$idambito);
129        $idambito=0;
130}
131if(!empty($filtro)){ // Ambito restringido a un subconjuto de ordenadores
132        $cmd->ParamSetValor("@restrambito",$filtro);
133}
134$resul=true;
135
136/*--------------------------------------------------------------------------------------------------------------------
137        Switch de ejecución inmediata y de seguimiento
138--------------------------------------------------------------------------------------------------------------------*/
139if($sw_ejya=='on' || $sw_ejprg=="on" ){
140        $parametros=$funcion.$atributos;
141        $aplicacion=chr(13)."ido=".$cadenaid.chr(13)."mac=".$cadenamac.chr(13)."iph=".$cadenaip.chr(13);
142        if($sw_seguimiento==1 || $sw_ejprg=="on"){ // Switch de ejecución con seguimiento o comando programado
143                $sesion=time();
144                $cmd->ParamSetValor("@tipoaccion",$EJECUCION_COMANDO);
145                $cmd->ParamSetValor("@idtipoaccion",$idcomando);
146                $cmd->ParamSetValor("@descriaccion",$descricomando);
147                $cmd->ParamSetValor("@sesion",$sesion);
148                $cmd->ParamSetValor("@idcomando",$idcomando);
149                $cmd->ParamSetValor("@parametros",$parametros);
150                $cmd->ParamSetValor("@fechahorareg",date("y/m/d H:i:s"));
151                if($sw_ejprg=="on") // Switch de ejecución con programación (se para el comando tarea para lanzarlo posteriormente)
152                        $cmd->ParamSetValor("@estado",$ACCION_DETENIDA);
153                else
154                        $cmd->ParamSetValor("@estado",$ACCION_INICIADA);
155                $cmd->ParamSetValor("@resultado",$ACCION_SINRESULTADO);
156                $cmd->ParamSetValor("@ambito",$ambito);
157                $cmd->ParamSetValor("@idambito",$idambito);                     
158                $cmd->ParamSetValor("@idcentro",$idcentro);
159                $auxID=split(",",$cadenaid);
160                $auxIP=split(";",$cadenaip);
161                for ($i=0;$i<sizeof($auxID);$i++){
162                        $cmd->ParamSetValor("@idordenador",$auxID[$i]);
163                        $cmd->ParamSetValor("@ip",$auxIP[$i]);
164                        $cmd->texto="INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,
165                                                sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,restrambito,idcentro)
166                                                VALUES (@idordenador,@tipoaccion,@idtipoaccion,@descriaccion,@ip,
167                                                @sesion,@idcomando,@parametros,@fechahorareg,@estado,@resultado,@ambito,@idambito,@restrambito,@idcentro)";
168                        $resul=$cmd->Ejecutar();
169                        //echo "<br>".$cmd->texto;
170                }
171                $acciones=chr(13)."ids=".$sesion.chr(13); // Para seguimiento
172        }
173        if (!$resul){
174                echo '<SCRIPT language="javascript">';
175                echo 'resultado_comando(7);'.chr(13);
176                echo '</SCRIPT>';
177        }
178        else{
179                if($sw_ejya=='on'){     
180                        // Envio al servidor
181                        $shidra=new SockHidra($servidorhidra,$hidraport);
182                        if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
183                                $parametros.=$aplicacion;
184                                $parametros.=$acciones;
185                                //die($parametros);
186                                $resul=$shidra->envia_comando($parametros);
187                                if($resul)
188                                        $trama=$shidra->recibe_respuesta();
189                                        if($resul){
190                                                $hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM));
191                                                $parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm);
192                                                $ValorParametros=extrae_parametros($parametros,chr(13),'=');
193                                                $resul=$ValorParametros["res"];
194                                        }
195                                $shidra->desconectar();
196                        }
197                        if (!$resul){
198                                echo '<SCRIPT language="javascript">';
199                                echo 'resultado_comando(1);'.chr(13);
200                                echo '</SCRIPT>';
201                        }
202                        else{
203                                echo '<SCRIPT language="javascript">'.chr(13);
204                                echo 'resultado_comando(2);'.chr(13);
205                                echo '</SCRIPT>'.chr(13);
206                        }               
207                }
208        }
209}
210/*--------------------------------------------------------------------------------------------------------------------
211        Switch de creación o inclusión en procedimiento
212--------------------------------------------------------------------------------------------------------------------*/
213if($sw_mkprocedimiento=='on' || $sw_mktarea=='on'){
214        $resul=false;
215        if($idprocedimiento==0 || $sw_mktarea=='on'){ // Nuevo procedimiento o Tarea
216                if($sw_mktarea=='on' && empty($nombreprocedimiento)){ // Si tarea con inclusión de procedimiento...
217                        if(!empty($nombretarea))
218                                $nombreprocedimiento="Proc($nombretarea)";      // .. tarea nueva
219                        else
220                                $nombreprocedimiento="Proc($idtarea)";  // .. inclusión en tarea
221                }
222                $cmd->ParamSetValor("@descripcion",$nombreprocedimiento);
223                $cmd->ParamSetValor("@idcentro",$idcentro);
224                $cmd->texto="INSERT INTO procedimientos(descripcion,idcentro) VALUES (@descripcion,@idcentro)";
225                $resul=$cmd->Ejecutar();
226                if($resul){
227                        if($idprocedimiento==0) // Cambia el identificador sólo si es nuevo procedimiento
228                                $idprocedimiento=$cmd->Autonumerico();
229                        if($sw_mktarea=='on')
230                                $idprocedimientotarea=$cmd->Autonumerico(); // Identificador para la tarea;     
231                }
232        }
233        if( $idprocedimiento>0 || $sw_mktarea=='on'){ //  inclusión en procedimiento existente
234                $cmd->ParamSetValor("@idprocedimiento",$idprocedimiento);
235                $cmd->ParamSetValor("@idcomando",$idcomando);
236                $cmd->ParamSetValor("@ordprocedimiento",$ordprocedimiento);
237                $parametros=$funcion.$atributos;
238                $cmd->ParamSetValor("@parametros",$parametros);
239                $cmd->texto="INSERT INTO procedimientos_acciones(idprocedimiento,orden,idcomando,parametros)
240                                    VALUES (@idprocedimiento,@ordprocedimiento,@idcomando,@parametros)";
241                $resul=$cmd->Ejecutar();
242                if($sw_mktarea=='on' && $idprocedimiento!=$idprocedimientotarea){ // Si es tarea se graba para su procedimiento independiente aunque los parametros sean los mismos
243                        $cmd->ParamSetValor("@idprocedimiento",$idprocedimientotarea);         
244                        $cmd->texto="INSERT INTO procedimientos_acciones(idprocedimiento,orden,idcomando,parametros)
245                                            VALUES (@idprocedimiento,@ordprocedimiento,@idcomando,@parametros)";
246                        $resul=$cmd->Ejecutar();
247                }
248        }
249        if (!$resul){
250                echo '<SCRIPT language="javascript">';
251                echo 'resultado_comando(3);'.chr(13);
252                echo '</SCRIPT>';
253        }
254        else{
255                if($sw_mkprocedimiento=='on'){
256                        echo '<SCRIPT language="javascript">'.chr(13);
257                        echo 'resultado_comando(4);'.chr(13);
258                        echo '</SCRIPT>'.chr(13);
259                }
260        }
261}       
262/*--------------------------------------------------------------------------------------------------------------------
263        Switch de creación o inclusión en tarea
264--------------------------------------------------------------------------------------------------------------------*/
265if($sw_mktarea=='on'){
266        $resul=false;
267        if($idtarea==0){ // Nueva tarea
268                $cmd->ParamSetValor("@descripcion",$nombretarea);
269                $cmd->ParamSetValor("@idcentro",$idcentro);
270                $cmd->ParamSetValor("@ambito",$ambito);
271                $cmd->ParamSetValor("@idambito",$idambito);             
272                $cmd->texto="INSERT INTO tareas(descripcion,idcentro,ambito,idambito,restrambito)
273                                        VALUES (@descripcion,@idcentro,@ambito,@idambito,@restrambito)";
274                $resul=$cmd->Ejecutar();
275                if($resul)
276                        $idtarea=$cmd->Autonumerico();
277        }
278        if($idtarea>0){ //  inclusión en tarea existente
279                $cmd->ParamSetValor("@idtarea",$idtarea);
280                $cmd->ParamSetValor("@idprocedimiento",$idprocedimientotarea);
281                $cmd->ParamSetValor("@ordtarea",$ordtarea);
282                $cmd->texto="INSERT INTO tareas_acciones(idtarea,orden,idprocedimiento)
283                                                        VALUES (@idtarea,@ordtarea,@idprocedimiento)";
284                $resul=$cmd->Ejecutar();
285                //echo $cmd->texto;
286        }
287        if (!$resul){
288                echo '<SCRIPT language="javascript">'.chr(13);
289                echo 'resultado_comando(5);'.chr(13);
290                echo '</SCRIPT>'.chr(13);
291        }
292        else{
293                echo '<SCRIPT language="javascript">'.chr(13);
294                echo 'resultado_comando(6);'.chr(13);
295                echo '</SCRIPT>'.chr(13);
296        }
297}
298/* Programación del comando */
299if ($resul){
300        if($sw_ejprg=="on" ){   
301                echo '<SCRIPT language="javascript">'.chr(13);
302                echo 'var whref="../../varios/programaciones.php?idcomando='.$idcomando.'";'.chr(13);
303                echo 'whref+="&sesion='.$sesion.'&descripcioncomando='.UrlEncode($descricomando).'&tipoaccion='.$EJECUCION_COMANDO.'";'.chr(13);
304                echo 'location.href=whref;';
305                echo '</SCRIPT>';
306        }
307}
308?>
309</BODY>
310</HTML>
311
Note: See TracBrowser for help on using the repository browser.