source: admin/WebConsole/asistentes/gestores/gestor_Comandos.php @ ec06d91

Last change on this file since ec06d91 was 9f1274e, checked in by ramon <ramongomez@…>, 7 years ago

#804: Sustituir funciones para compatibilidad con PHP 7 (split por explode y ereg... por preg_...).

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

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