source: admin/WebConsole/comandos/gestores/gestor_Comandos.php @ 18779c5

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 18779c5 was 468bb2b, checked in by alonso <alonso@…>, 12 years ago

git-svn-id: https://opengnsys.es/svn/branches/version1.0@3773 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 12.4 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<?php
79
80/* Recopila identificadore ,ipes y macs para envío de comandos */
81$cadenaid="";
82$cadenaip="";
83$cadenamac="";
84
85if(!empty($filtro)){ // Ambito restringido a un subconjuto de ordenadores
86        if(substr($filtro,strlen($cadenaid)-1,1)==";") // Si el último caracter es una coma
87                $filtro=substr($filtro,0,strlen($filtro)-1); // Quita la coma
88}
89RecopilaIpesMacs($cmd,$ambito,$idambito,$filtro);
90
91/*--------------------------------------------------------------------------------------------------------------------
92        Creación de parametros para sentencias SQL
93--------------------------------------------------------------------------------------------------------------------*/
94$cmd->CreaParametro("@tipoaccion",0,1);
95$cmd->CreaParametro("@idtipoaccion",0,1);
96$cmd->CreaParametro("@descriaccion","",0);
97$cmd->CreaParametro("@idordenador",0,1);
98$cmd->CreaParametro("@ip","",0);
99$cmd->CreaParametro("@sesion",0,1);
100$cmd->CreaParametro("@parametros","",0);
101$cmd->CreaParametro("@fechahorareg","",0);
102$cmd->CreaParametro("@estado",0,1);
103$cmd->CreaParametro("@resultado",0,1);
104$cmd->CreaParametro("@idcentro",0,1);
105$cmd->CreaParametro("@idprocedimiento",0,1);
106$cmd->CreaParametro("@descripcion","",0);
107$cmd->CreaParametro("@idcomando",0,1);
108$cmd->CreaParametro("@idtarea",0,1);
109$cmd->CreaParametro("@ambito",0,1);
110$cmd->CreaParametro("@idambito",0,1);
111$cmd->CreaParametro("@restrambito","",0);
112$cmd->CreaParametro("@ordprocedimiento",0,1);
113$cmd->CreaParametro("@ordtarea",0,1);
114
115if($ambito==0){ // Ambito restringido a un subconjuto de ordenadores con formato (idordenador1,idordenador2,etc)
116        $cmd->ParamSetValor("@restrambito",$idambito);
117        $idambito=0;
118}
119if(!empty($filtro)){ // Ambito restringido a un subconjuto de ordenadores
120        $cmd->ParamSetValor("@restrambito",$filtro);
121}
122$resul=true;
123
124/*--------------------------------------------------------------------------------------------------------------------
125        Switch de ejecución inmediata y de seguimiento
126--------------------------------------------------------------------------------------------------------------------*/
127if($sw_ejya=='on' || $sw_ejprg=="on" ){
128        $parametros=$funcion.$atributos;
129        $aplicacion=chr(13)."ido=".$cadenaid.chr(13)."mac=".$cadenamac.chr(13)."iph=".$cadenaip.chr(13);
130        if($sw_seguimiento==1 || $sw_ejprg=="on"){ // Switch de ejecución con seguimiento o comando programado
131                $sesion=time();
132                $cmd->ParamSetValor("@tipoaccion",$EJECUCION_COMANDO);
133                $cmd->ParamSetValor("@idtipoaccion",$idcomando);
134                $cmd->ParamSetValor("@descriaccion",$descricomando);
135                $cmd->ParamSetValor("@sesion",$sesion);
136                $cmd->ParamSetValor("@idcomando",$idcomando);
137                $cmd->ParamSetValor("@parametros",$parametros);
138                $cmd->ParamSetValor("@fechahorareg",date("y/m/d H:i:s"));
139                if($sw_ejprg=="on") // Switch de ejecución con programación (se para el comando tarea para lanzarlo posteriormente)
140                        $cmd->ParamSetValor("@estado",$ACCION_DETENIDA);
141                else
142                        $cmd->ParamSetValor("@estado",$ACCION_INICIADA);
143                $cmd->ParamSetValor("@resultado",$ACCION_SINRESULTADO);
144                $cmd->ParamSetValor("@ambito",$ambito);
145                $cmd->ParamSetValor("@idambito",$idambito);                     
146                $cmd->ParamSetValor("@idcentro",$idcentro);
147                $auxID=split(",",$cadenaid);
148                $auxIP=split(";",$cadenaip);
149                for ($i=0;$i<sizeof($auxID);$i++){
150                        $cmd->ParamSetValor("@idordenador",$auxID[$i]);
151                        $cmd->ParamSetValor("@ip",$auxIP[$i]);
152                        $cmd->texto="INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,
153                                                sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,restrambito,idcentro)
154                                                VALUES (@idordenador,@tipoaccion,@idtipoaccion,@descriaccion,@ip,
155                                                @sesion,@idcomando,@parametros,@fechahorareg,@estado,@resultado,@ambito,@idambito,@restrambito,@idcentro)";
156                        $resul=$cmd->Ejecutar();
157                        //echo "<br>".$cmd->texto;
158                }
159                $acciones=chr(13)."ids=".$sesion.chr(13); // Para seguimiento
160        }
161        if (!$resul){
162                echo '<SCRIPT language="javascript">';
163                echo 'resultado_comando(7);'.chr(13);
164                echo '</SCRIPT>';
165        }
166        else{
167                if($sw_ejya=='on'){     
168                        // Envio al servidor
169                        $shidra=new SockHidra($servidorhidra,$hidraport);
170                        if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
171                                $parametros.=$aplicacion;
172                                $parametros.=$acciones;
173                                //die($parametros);
174                                $resul=$shidra->envia_comando($parametros);
175                                if($resul)
176                                        $trama=$shidra->recibe_respuesta();
177                                        if($resul){
178                                                $hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM));
179                                                $parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm);
180                                                $ValorParametros=extrae_parametros($parametros,chr(13),'=');
181                                                $resul=$ValorParametros["res"];
182                                        }
183                                $shidra->desconectar();
184                        }
185                        if (!$resul){
186                                echo '<SCRIPT language="javascript">';
187                                echo 'resultado_comando(1);'.chr(13);
188                                echo '</SCRIPT>';
189                        }
190                        else{
191                                echo '<SCRIPT language="javascript">'.chr(13);
192                                echo 'resultado_comando(2);'.chr(13);
193                                echo '</SCRIPT>'.chr(13);
194                        }               
195                }
196        }
197}
198/*--------------------------------------------------------------------------------------------------------------------
199        Switch de creación o inclusión en procedimiento
200--------------------------------------------------------------------------------------------------------------------*/
201if($sw_mkprocedimiento=='on' || $sw_mktarea=='on'){
202        $resul=false;
203        if($idprocedimiento==0 || $sw_mktarea=='on'){ // Nuevo procedimiento o Tarea
204                if($sw_mktarea=='on' && empty($nombreprocedimiento)){ // Si tarea con inclusión de procedimiento...
205                        if(!empty($nombretarea))
206                                $nombreprocedimiento="Proc($nombretarea)";      // .. tarea nueva
207                        else
208                                $nombreprocedimiento="Proc($idtarea)";  // .. inclusión en tarea
209                }
210                $cmd->ParamSetValor("@descripcion",$nombreprocedimiento);
211                $cmd->ParamSetValor("@idcentro",$idcentro);
212                $cmd->texto="INSERT INTO procedimientos(descripcion,idcentro) VALUES (@descripcion,@idcentro)";
213                $resul=$cmd->Ejecutar();
214                if($resul){
215                        if($idprocedimiento==0) // Cambia el identificador sólo si es nuevo procedimiento
216                                $idprocedimiento=$cmd->Autonumerico();
217                        if($sw_mktarea=='on')
218                                $idprocedimientotarea=$cmd->Autonumerico(); // Identificador para la tarea;     
219                }
220        }
221        if( $idprocedimiento>0 || $sw_mktarea=='on'){ //  inclusión en procedimiento existente
222                $cmd->ParamSetValor("@idprocedimiento",$idprocedimiento);
223                $cmd->ParamSetValor("@idcomando",$idcomando);
224                $cmd->ParamSetValor("@ordprocedimiento",$ordprocedimiento);
225                $parametros=$funcion.$atributos;
226                $cmd->ParamSetValor("@parametros",$parametros);
227                $cmd->texto="INSERT INTO procedimientos_acciones(idprocedimiento,orden,idcomando,parametros)
228                                    VALUES (@idprocedimiento,@ordprocedimiento,@idcomando,@parametros)";
229                $resul=$cmd->Ejecutar();
230                if($sw_mktarea=='on' && $idprocedimiento!=$idprocedimientotarea){ // Si es tarea se graba para su procedimiento independiente aunque los parametros sean los mismos
231                        $cmd->ParamSetValor("@idprocedimiento",$idprocedimientotarea);         
232                        $cmd->texto="INSERT INTO procedimientos_acciones(idprocedimiento,orden,idcomando,parametros)
233                                            VALUES (@idprocedimiento,@ordprocedimiento,@idcomando,@parametros)";
234                        $resul=$cmd->Ejecutar();
235                }
236        }
237        if (!$resul){
238                echo '<SCRIPT language="javascript">';
239                echo 'resultado_comando(3);'.chr(13);
240                echo '</SCRIPT>';
241        }
242        else{
243                if($sw_mkprocedimiento=='on'){
244                        echo '<SCRIPT language="javascript">'.chr(13);
245                        echo 'resultado_comando(4);'.chr(13);
246                        echo '</SCRIPT>'.chr(13);
247                }
248        }
249}       
250/*--------------------------------------------------------------------------------------------------------------------
251        Switch de creación o inclusión en tarea
252--------------------------------------------------------------------------------------------------------------------*/
253if($sw_mktarea=='on'){
254        $resul=false;
255        if($idtarea==0){ // Nueva tarea
256                $cmd->ParamSetValor("@descripcion",$nombretarea);
257                $cmd->ParamSetValor("@idcentro",$idcentro);
258                $cmd->ParamSetValor("@ambito",$ambito);
259                $cmd->ParamSetValor("@idambito",$idambito);             
260                $cmd->texto="INSERT INTO tareas(descripcion,idcentro,ambito,idambito,restrambito)
261                                        VALUES (@descripcion,@idcentro,@ambito,@idambito,@restrambito)";
262                $resul=$cmd->Ejecutar();
263                if($resul)
264                        $idtarea=$cmd->Autonumerico();
265        }
266        if($idtarea>0){ //  inclusión en tarea existente
267                $cmd->ParamSetValor("@idtarea",$idtarea);
268                $cmd->ParamSetValor("@idprocedimiento",$idprocedimientotarea);
269                $cmd->ParamSetValor("@ordtarea",$ordtarea);
270                $cmd->texto="INSERT INTO tareas_acciones(idtarea,orden,idprocedimiento)
271                                                        VALUES (@idtarea,@ordtarea,@idprocedimiento)";
272                $resul=$cmd->Ejecutar();
273                //echo $cmd->texto;
274        }
275        if (!$resul){
276                echo '<SCRIPT language="javascript">'.chr(13);
277                echo 'resultado_comando(5);'.chr(13);
278                echo '</SCRIPT>'.chr(13);
279        }
280        else{
281                echo '<SCRIPT language="javascript">'.chr(13);
282                echo 'resultado_comando(6);'.chr(13);
283                echo '</SCRIPT>'.chr(13);
284        }
285}
286/* Programación del comando */
287if ($resul){
288        if($sw_ejprg=="on" ){   
289                echo '<SCRIPT language="javascript">'.chr(13);
290                echo 'var whref="../../varios/programaciones.php?idcomando='.$idcomando.'";'.chr(13);
291                echo 'whref+="&sesion='.$sesion.'&descripcioncomando='.UrlEncode($descricomando).'&tipoaccion='.$EJECUCION_COMANDO.'";'.chr(13);
292                echo 'location.href=whref;';
293                echo '</SCRIPT>';
294        }
295}
296?>
297</BODY>
298</HTML>
299
Note: See TracBrowser for help on using the repository browser.