source: admin/WebConsole/gestores/gestor_ejecutaracciones.php @ 4d92ee0d

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-instalacion
Last change on this file since 4d92ee0d was 5cef356, checked in by OpenGnSys Support Team <soporte-og@…>, 6 years ago

#915 Remove all references to SocketHidra?

This patch removes all remaining references to SocketHidra?. The existing
code uses the REST API ogAdmServer.

  • Property mode set to 100644
File size: 10.3 KB
RevLine 
[c870c84]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: Mayo-2005
7// Nombre del fichero: gestor_procedimientos.php
8// Descripción :
9//              Gestiona la ejecución de procedimientos
10// *************************************************************************************************************************************************
11include_once("../includes/ctrlacc.php");
12include_once("../clases/AdoPhp.php");
13include_once("../clases/XmlPhp.php");
14include_once("../clases/ArbolVistaXML.php");
15include_once("../includes/CreaComando.php");
16include_once("../includes/constantes.php");
17include_once("../includes/comunes.php");
18include_once("../includes/RecopilaIpesMacs.php");
[1d380e5]19include_once("../includes/restfunctions.php");
[c870c84]20//________________________________________________________________________________________________________
21
22$opcion=0; // Inicializa parametros
23
24$idprocedimiento=0;
25$idtarea=0;
26$ambito=0;
27$idambito=0;
28$swc=0; // switch de cliente, esta pagina la llama el cliente a través del browser
29
30if (isset($_POST["opcion"])) $opcion=$_POST["opcion"];
31if (isset($_POST["idprocedimiento"]))   $idprocedimiento=$_POST["idprocedimiento"];
32if (isset($_POST["descriprocedimiento"]))       $descriprocedimiento=$_POST["descriprocedimiento"];
33if (isset($_POST["ambito"])) $ambito=$_POST["ambito"];
34if (isset($_POST["idambito"])) $idambito=$_POST["idambito"];
35if (isset($_POST["idtarea"]))   $idtarea=$_POST["idtarea"];
36if (isset($_POST["descritarea"]))       $descritarea=$_POST["descritarea"];
37
38if (isset($_GET["opcion"])) $opcion=$_GET["opcion"];
39if (isset($_GET["idprocedimiento"])) $idprocedimiento=$_GET["idprocedimiento"];
40if (isset($_GET["descriprocedimiento"]))$descriprocedimiento=$_GET["descriprocedimiento"];
41if (isset($_GET["ambito"])) $ambito=$_GET["ambito"];
42if (isset($_GET["idambito"])) $idambito=$_GET["idambito"];
43if (isset($_GET["idtarea"])) $idtarea=$_GET["idtarea"];
44if (isset($_GET["descritarea"])) $descritarea=$_GET["descritarea"];
45
46if (isset($_GET["swc"])) $swc=$_GET["swc"]; // Switch que indica que la página la solicita un cliente a través del browser
47
48$cmd=CreaComando($cadenaconexion); // Crea objeto comando
49$resul=false;
50if ($cmd){
51        $cadenaid="";
52        $cadenaip="";
53        $cadenamac="";
54        $sesion=0;
55        $vez=0;
56        if(opcion!=$EJECUCION_TAREA)
57                RecopilaIpesMacs($cmd,$ambito,$idambito); // Recopila Ipes del ámbito
58        if(opcion!=$EJECUCION_AUTOEXEC){
59                //Creación parametros para inserción en tabla acciones
60                $sesion=time();
61                $cmd->CreaParametro("@tipoaccion",$opcion,1);
62                $cmd->CreaParametro("@idtipoaccion",0,1);
63                $cmd->CreaParametro("@descriaccion","",0);
64                $cmd->CreaParametro("@idordenador",0,1);
65                $cmd->CreaParametro("@ip","",0);
66                $cmd->CreaParametro("@sesion",$sesion,1);
67                $cmd->CreaParametro("@idcomando",0,1);
68                $cmd->CreaParametro("@parametros","",0);
69                $cmd->CreaParametro("@fechahorareg","",0);
70                $cmd->CreaParametro("@fechahorafin","",0);
71                $cmd->CreaParametro("@estado",$ACCION_INICIADA,1);
72                $cmd->CreaParametro("@resultado",$ACCION_SINRESULTADO,1);
73                $cmd->CreaParametro("@descrinotificacion","",0);
74                $cmd->CreaParametro("@idprocedimiento",0,1);
75                $cmd->CreaParametro("@idtarea",0,1);
76                $cmd->CreaParametro("@idcentro",$idcentro,1);
77                $cmd->CreaParametro("@ambito",0,1);
78                $cmd->CreaParametro("@idambito",0,1);
79                $cmd->CreaParametro("@restrambito","",0);
80        }
81        switch($opcion){
82                case $EJECUCION_AUTOEXEC:
83                        $resul=actualizaAutoexec($idprocedimiento);
84                        $literal="resultado_gestion_procedimiento";
85                        break;
86                case $EJECUCION_PROCEDIMIENTO:
87                        $cmd->ParamSetValor("@idtipoaccion",$idprocedimiento);
88                        $cmd->ParamSetValor("@descriaccion",$descriprocedimiento);
89                        $resul=ejecucionProcedimiento($idprocedimiento,$ambito,$idambito);
90                        $literal="resultado_gestion_procedimiento";
91                        break;
92                case $EJECUCION_TAREA:
93                        $cmd->ParamSetValor("@idtipoaccion",$idtarea);
94                        $cmd->ParamSetValor("@descriaccion",$descritarea);
95                        $cmd->ParamSetValor("@idtarea",$idtarea);
96                        $resul=ejecucionTarea($idtarea);
97                        $literal="resultado_ejecutar_tareas";
98                        break;
99        }
100        $cmd->Conexion->Cerrar();
101}
102if ($resul){
103        if(empty($swc)){
104                echo $literal."(1,'".$cmd->DescripUltimoError()."');".chr(13);
105        }
106        else{
107                echo '<SCRIPT language="javascript">'.chr(13);
108                echo 'alert("El item se ha ejecutado correctamente");'.chr(13);
109                echo 'var wurl="../varios/menucliente.php?iph='.trim($_SESSION["ogCliente"]).'";';
110                echo 'history.back();';
111                echo '</SCRIPT>';
112        }
113}
114else{
115        if(empty($swc)){
116                echo $literal."(0,'".$cmd->DescripUltimoError()."')";
117        }
118        else{
119                echo '<SCRIPT language="javascript">'.chr(13);
120                echo 'alert("***ATENCIÓN:El item NO se ha podido ejecutar");'.chr(13);
121                echo 'var wurl="../varios/menucliente.php?iph='.trim($_SESSION["ogCliente"]).'";';
122                echo 'location.href=wurl;';
123                echo '</SCRIPT>';
124        }
125}
126//********************************************************************************************************
127//
128// Incorpora un procedimiento como autoexec
129//________________________________________________________________________________________________________
130function actualizaAutoexec($idprocedimiento)
131{
132        global $cadenaid;
133        global $cmd;
134
135        $cmd->texto="UPDATE ordenadores SET idproautoexec=".$idprocedimiento." WHERE idordenador IN (".$cadenaid.")";
136        $resul=$cmd->Ejecutar();
137        return(resul);
138}
139//________________________________________recorreProcedimientos________________________________________________________________
140//
141// Ejecuta un procedimiento: lo registra en acciones y lo envía por la red
142//________________________________________________________________________________________________________
143function ejecucionProcedimiento($idprocedimiento,$ambito,$idambito)
144{
145        return(recorreProcedimientos($idprocedimiento,$ambito,$idambito));                                               
146}
147//________________________________________________________________________________________________________
148//
149// Ejecuta una tarea: la registra en acciones y la envía por la red
150//________________________________________________________________________________________________________
151function ejecucionTarea($idtarea)
152{
153        return(recorreTareas($idtarea));                                                 
154}
155//________________________________________________________________________________________________________
156function recorreProcedimientos($idprocedimiento,$ambito,$idambito)
157{               
158        global $cmd;
159        global $sesion;
160
161        $cmd->texto="SELECT   idcomando,procedimientoid,parametros
162                         FROM procedimientos_acciones
163                        WHERE idprocedimiento=".$idprocedimiento."
164                        ORDER BY orden";       
165
166        $rs=new Recordset;
167        $rs->Comando=&$cmd;
168        if (!$rs->Abrir()) return(false); // Error al abrir recordset
169        while (!$rs->EOF){
170                $procedimientoid=$rs->campos["procedimientoid"];
171                if($procedimientoid>0){ // Procedimiento recursivo
172                        if(!recorreProcedimientos($procedimientoid,$ambito,$idambito)){
173                                return(false);
174                        }
175                }
176                else{
177                        $parametros=$rs->campos["parametros"];
178                        $idcomando=$rs->campos["idcomando"];
179                        // Ticket 681: bucle infinito en procedimiento compuesto (J.M. Alonso).
180                        do{
181                                $nwsesion=time();       
182                        }while($sesion==$nwsesion);
183                        $sesion=$nwsesion;
184                        $cmd->ParamSetValor("@sesion",$sesion);
185                        // Fin ticket 681.
186                        if(!insertaComando($idcomando,$parametros,$idprocedimiento,$ambito,$idambito))
187                                return(false); 
188                }
189                $rs->Siguiente();
190        }
191        return(true);
192}
193//________________________________________________________________________________________________________
194function recorreTareas($idtarea)
195{               
196        global $cadenaid;
197        global $cadenaip;
198        global $cadenamac;     
199        global $cmd;   
200                         
201        $cmd->texto="SELECT tareas_acciones.orden,tareas_acciones.idprocedimiento,tareas_acciones.tareaid,
202                                                tareas.ambito,tareas.idambito,tareas.restrambito
203                                 FROM tareas
204                                 INNER JOIN tareas_acciones ON tareas_acciones.idtarea=tareas.idtarea
205                                 WHERE tareas_acciones.idtarea=".$idtarea."
206                                 ORDER BY tareas_acciones.orden";       
207        //echo $cmd->texto;                                                                     
208        $rs=new Recordset;
209        $rs->Comando=&$cmd;
210        if (!$rs->Abrir()) return(false); // Error al abrir recordset
211        while (!$rs->EOF){
212                $tareaid=$rs->campos["tareaid"];
213                if($tareaid>0){ // Tarea recursiva
214                        if(!recorreTareas($tareaid)){
215                                return(false);
216                        }
217                }
218                else{
219                        $ambito=$rs->campos["ambito"];
220                        $idambito=$rs->campos["idambito"];
221                        if($ambito==0 && $idambito==0){ // Ámbito restringido
222                                $idambito=$rs->campos["restrambito"];
223                        }
224                        RecopilaIpesMacs($cmd,$ambito,$idambito); // Recopila Ipes del ámbito           
225                        $idprocedimiento=$rs->campos["idprocedimiento"];
226                        if(!recorreProcedimientos($idprocedimiento,$ambito,$idambito))
227                                return(false); 
228                }
229                $rs->Siguiente();
230        }
231        return(true);
232}
233//________________________________________________________________________________________________________
234//
235//      Registra un procedimiento para un ambito concreto
236//________________________________________________________________________________________________________
237function insertaComando($idcomando,$parametros,$idprocedimiento,$ambito,$idambito)
238{
239        global $cadenaid;
240        global $cadenaip;
241        global $cmd;   
242        global $sesion;
243        global $vez;
244
245        if($ambito==0){ // Ambito restringido a un subconjuto de ordenadores con formato (idordenador1,idordenador2,etc)
246                $cmd->ParamSetValor("@restrambito",$idambito);
247                $idambito=0;
248        }       
249       
250        $cmd->ParamSetValor("@idcomando",$idcomando);
251        $cmd->ParamSetValor("@idprocedimiento",$idprocedimiento);
252        $cmd->ParamSetValor("@parametros",$parametros);
253        $cmd->ParamSetValor("@fechahorareg",date("y/m/d H:i:s"));
254        $cmd->ParamSetValor("@ambito",$ambito);
255        $cmd->ParamSetValor("@idambito",$idambito);
256
257        if(strlen($cadenaip)==0) return(true); 
258
259        $auxID=explode(",",$cadenaid);
260        $auxIP=explode(";",$cadenaip);
261
262        for ($i=0;$i<sizeof($auxID);$i++){
263                $cmd->ParamSetValor("@idordenador",$auxID[$i]);
264                $cmd->ParamSetValor("@ip",$auxIP[$i]);
265                $cmd->texto="INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,restrambito,idprocedimiento,idtarea,idcentro)
266                                        VALUES (@idordenador,@tipoaccion,@idtipoaccion,@descriaccion,@ip,@sesion,@idcomando,@parametros,@fechahorareg,@estado,@resultado,@ambito,@idambito,@restrambito,@idprocedimiento,@idtarea,@idcentro)";
267                $resul=$cmd->Ejecutar();
268                //echo $cmd->texto;
269                if(!$resul) return(false);
[1d380e5]270
271                // Let the clients know they can start executing pending commands.
[c870c84]272                if(empty($vez)){
[1d380e5]273                        run_schedule($cadenaip);
[c870c84]274                        $vez++;
275                }
276        }
277        return(true);
278}
279
Note: See TracBrowser for help on using the repository browser.