From 4329e85010531edeaca3d10a62241014b799345e Mon Sep 17 00:00:00 2001
From: ramon
Date: Wed, 28 Nov 2012 11:38:50 +0000
Subject: Versión 1.0.5, #565: Integrar código del ticket:565 en rama de
desarrollo.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3446 a21b9725-9963-47de-94b9-378ad31fedc9
---
admin/Database/ogAdmBD-1.0.4a-1.0.5pre.sql | 39 +-
admin/Database/ogAdmBD.sql | 31 +-
admin/Interface/CrearImagenBasica | 107 +++++
admin/Interface/CrearSoftIncremental | 127 ++++++
admin/Interface/ImagenesSincronizadas.lib | 205 +++++++++
admin/Interface/RestaurarImagenBasica | 135 ++++++
admin/Interface/RestaurarSoftIncremental | 172 ++++++++
.../Clients/ogAdmClient/sources/ogAdmClient.c | 488 +++++++++++++++++++--
.../Clients/ogAdmClient/sources/ogAdmClient.h | 21 +-
admin/Sources/Includes/ogAdmLib.c | 26 +-
admin/Sources/Includes/ogAdmLib.h | 5 +-
.../Services/ogAdmServer/sources/ogAdmServer.cpp | 47 +-
.../Services/ogAdmServer/sources/ogAdmServer.h | 4 +-
admin/WebConsole/comandos/Arrancar.php | 23 +-
admin/WebConsole/comandos/CrearImagenBasica.php | 248 +++++++++++
admin/WebConsole/comandos/CrearSoftIncremental.php | 251 +++++++++++
.../WebConsole/comandos/RestaurarImagenBasica.php | 278 ++++++++++++
.../comandos/RestaurarSoftIncremental.php | 279 ++++++++++++
admin/WebConsole/comandos/jscripts/Arrancar.js | 10 +-
.../comandos/jscripts/CrearImagenBasica.js | 89 ++++
.../comandos/jscripts/CrearSoftIncremental.js | 91 ++++
.../comandos/jscripts/RestaurarImagenBasica.js | 98 +++++
.../comandos/jscripts/RestaurarSoftIncremental.js | 100 +++++
admin/WebConsole/controlacceso.php | 3 +-
admin/WebConsole/gestores/gestor_grupos.php | 19 +-
admin/WebConsole/gestores/gestor_imagenes.php | 39 +-
.../esp/comandos/crearimagenbasica_esp.js | 9 +
.../esp/comandos/crearsoftincremental_esp.js | 6 +-
.../esp/comandos/restaurarimagenbasica_esp.js | 13 +
.../esp/comandos/restaurarsoftincremental_esp.js | 13 +
.../javascripts/esp/propiedades_imagenes_esp.js | 5 +-
admin/WebConsole/idiomas/php/esp/aulas_esp.php | 1 +
.../idiomas/php/esp/comandos/arrancar_esp.php | 4 +
.../php/esp/comandos/crearimagenbasica_esp.php | 25 ++
.../php/esp/comandos/crearsoftincremental_esp.php | 16 +-
.../php/esp/comandos/restaurarimagenbasica_esp.php | 51 +++
.../esp/comandos/restaurarsoftincremental_esp.php | 51 +++
admin/WebConsole/idiomas/php/esp/imagenes_esp.php | 3 +
.../WebConsole/idiomas/php/esp/msgbrowser_esp.php | 13 +-
.../idiomas/php/esp/propiedades_grupos_esp.php | 3 +
.../idiomas/php/esp/propiedades_imagenes_esp.php | 13 +-
admin/WebConsole/includes/HTMLSELECT.php | 5 +-
admin/WebConsole/includes/comunes.php | 65 +--
admin/WebConsole/includes/constantes.php | 28 +-
admin/WebConsole/jscripts/constantes.js | 6 +
admin/WebConsole/jscripts/imagenes.js | 36 ++
admin/WebConsole/jscripts/propiedades_imagenes.js | 26 +-
admin/WebConsole/principal/aula.php | 81 +++-
admin/WebConsole/principal/aulas.php | 91 +++-
admin/WebConsole/principal/imagenes.php | 276 ++++++++----
.../WebConsole/propiedades/propiedades_grupos.php | 24 +-
.../propiedades/propiedades_imagenes.php | 168 +++++--
admin/WebConsole/varios/informacion_acciones.php | 15 +-
doc/CHANGELOG.es.txt | 3 +
repoman/etc/rsyncd.conf | 14 +
repoman/etc/rsyncd.secrets | 1 +
56 files changed, 3663 insertions(+), 337 deletions(-)
create mode 100755 admin/Interface/CrearImagenBasica
create mode 100755 admin/Interface/CrearSoftIncremental
create mode 100755 admin/Interface/ImagenesSincronizadas.lib
create mode 100755 admin/Interface/RestaurarImagenBasica
create mode 100755 admin/Interface/RestaurarSoftIncremental
create mode 100644 admin/WebConsole/comandos/CrearImagenBasica.php
create mode 100644 admin/WebConsole/comandos/CrearSoftIncremental.php
create mode 100644 admin/WebConsole/comandos/RestaurarImagenBasica.php
create mode 100644 admin/WebConsole/comandos/RestaurarSoftIncremental.php
create mode 100644 admin/WebConsole/comandos/jscripts/CrearImagenBasica.js
create mode 100644 admin/WebConsole/comandos/jscripts/CrearSoftIncremental.js
create mode 100644 admin/WebConsole/comandos/jscripts/RestaurarImagenBasica.js
create mode 100644 admin/WebConsole/comandos/jscripts/RestaurarSoftIncremental.js
create mode 100644 admin/WebConsole/idiomas/javascripts/esp/comandos/crearimagenbasica_esp.js
create mode 100644 admin/WebConsole/idiomas/javascripts/esp/comandos/restaurarimagenbasica_esp.js
create mode 100644 admin/WebConsole/idiomas/javascripts/esp/comandos/restaurarsoftincremental_esp.js
create mode 100644 admin/WebConsole/idiomas/php/esp/comandos/crearimagenbasica_esp.php
create mode 100644 admin/WebConsole/idiomas/php/esp/comandos/restaurarimagenbasica_esp.php
create mode 100644 admin/WebConsole/idiomas/php/esp/comandos/restaurarsoftincremental_esp.php
create mode 100644 repoman/etc/rsyncd.conf
create mode 100644 repoman/etc/rsyncd.secrets
diff --git a/admin/Database/ogAdmBD-1.0.4a-1.0.5pre.sql b/admin/Database/ogAdmBD-1.0.4a-1.0.5pre.sql
index 005dfac3..d77f6046 100644
--- a/admin/Database/ogAdmBD-1.0.4a-1.0.5pre.sql
+++ b/admin/Database/ogAdmBD-1.0.4a-1.0.5pre.sql
@@ -1,8 +1,33 @@
-# Actualización SQL para crear el comando Eliminar Imagen Cache.
-INSERT INTO ogAdmBD.comandos
- SET idcomando=11, descripcion='Eliminar Imagen Cache',
- pagina='../comandos/EliminarImagenCache.php',
- gestor='../comandos/gestores/gestor_Comandos.php',
- funcion='EliminarImagenCache', aplicambito=31,
- visuparametros='iph;tis;dcr;scp', parametros='nfn;iph;tis;dcr;scp', activo=1;
+# Nuevos comandos "Eliminar Imagen Cache" y "Generar Software Incremental".
+ALTER TABLE ogAdmBD.parametros
+ ADD submenu VARCHAR(50) NULL;
+INSERT INTO ogAdmBD.comandos (idcomando, descripcion, pagina, gestor, funcion, urlimg, aplicambito, visuparametros, parametros, comentarios, activo, submenu) VALUES
+ (11, 'Eliminar Imagen Cache', '../comandos/EliminarImagenCache.php', '../comandos/gestores/gestor_Comandos.php', 'EliminarImagenCache', '', 31, 'iph;tis;dcr;scp', 'nfn;iph;tis;dcr;scp', '', 1, ''),
+ (12, 'Crear Imagen Basica', '../comandos/CrearImagenBasica.php', '../comandos/gestores/gestor_Comandos.php', 'CrearImagenBasica', '', 16, 'dsk;par;cpt;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba', 'nfn;dsk;par;cpt;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba', '', 1, 'Sincronizacion'),
+ (13, 'Restaurar Imagen Basica', '../comandos/RestaurarImagenBasica.php', '../comandos/gestores/gestor_Comandos.php', 'RestaurarImagenBasica', '', 28, 'dsk;par;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba,met', 'nfn;dsk;par;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba;met', '', 1, 'Sincronizacion'),
+ (14, 'Crear Software Incremental', '../comandos/CrearSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'CrearSoftIncremental', '', 16, 'dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;nba', 'nfn;dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;nba', '', 1, 'Sincronizacion'),
+ (15, 'Restaurar Software Incremental', '../comandos/RestaurarSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'RestaurarSoftIncremental', '', 28, 'dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', 'nfn;dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', '', 1, 'Sincronizacion');
+
+# Parámetros para el comando "Generar Software Incremental".
+ALTER TABLE ogAdmBD.parametros
+ ADD KEY (nemonico);
+INSERT INTO ogAdmBD.parametros (idparametro, nemonico, descripcion, nomidentificador, nomtabla, nomliteral, tipopa, visual) VALUES
+ (31, 'idf', 'Imagen Incremental', 'idimagen', 'imagenes', 'descripcion', 1, 1),
+ (32, 'ncf', 'Nombre canónico de la Imagen Incremental', '', '', '', 0, 1),
+ (33, 'bpi', 'Borrar imagen o partición previamente', '', '', '', 5, 1),
+ (34, 'cpc', 'Copiar también en cache', '', '', '', 5, 1),
+ (35, 'bpc', 'Borrado previo de la imagen en cache', '', '', '', 5, 1),
+ (36, 'rti', 'Ruta de origen', '', '', '', 0, 1),
+ (37, 'met', 'Método clonación', '', '', '', 0, 1),
+ (38, 'nba', 'No borrar archivos en destino', '', '', '', 0, 1);
+
+# Imágenes incrementales.
+ALTER TABLE ogAdmBD.imagenes
+ ADD tipo TINYINT NULL,
+ ADD imagenid INT NOT NULL DEFAULT '0',
+ ADD ruta VARCHAR(250) NULL;
+UPDATE ogAdmBd.imagenes SET tipo=1;
+
+# Cambio de tipo de grupo.
+UPDATE ogAdmBD.grupos SET tipo=70 WHERE tipo=50;
diff --git a/admin/Database/ogAdmBD.sql b/admin/Database/ogAdmBD.sql
index 0942a0d7..2d894c21 100644
--- a/admin/Database/ogAdmBD.sql
+++ b/admin/Database/ogAdmBD.sql
@@ -182,13 +182,13 @@ CREATE TABLE IF NOT EXISTS `centros` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
- --
- -- Volcar la base de datos para la tabla `centros`
- --
- INSERT INTO `centros` (`idcentro`,`nombrecentro`,`identidad`,`comentarios`) VALUES
- (1,'Unidad Organizativa (Default)',1,'Esta Unidad Organizativa se crea automáticamente en el proceso de instalación de OpenGnSys');
-
-
+--
+-- Volcar la base de datos para la tabla `centros`
+--
+INSERT INTO `centros` (`idcentro`,`nombrecentro`,`identidad`,`comentarios`) VALUES
+ (1,'Unidad Organizativa (Default)',1,'Esta Unidad Organizativa se crea automáticamente en el proceso de instalación de OpenGnSys');
+
+
-- --------------------------------------------------------
--
@@ -208,7 +208,7 @@ CREATE TABLE IF NOT EXISTS `comandos` (
`comentarios` text,
`activo` tinyint(1) NOT NULL,
PRIMARY KEY (`idcomando`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
--
-- Volcar la base de datos para la tabla `comandos`
@@ -225,7 +225,8 @@ INSERT INTO `comandos` (`idcomando`, `descripcion`, `pagina`, `gestor`, `funcion
(8, 'Ejecutar Script', '../comandos/EjecutarScripts.php', '../comandos/gestores/gestor_Comandos.php', 'EjecutarScript', '', 31, 'iph;tis;dcr;scp', 'nfn;iph;tis;dcr;scp', '', 1),
(9, 'Iniciar Sesion', '../comandos/IniciarSesion.php', '../comandos/gestores/gestor_Comandos.php', 'IniciarSesion', '', 31, 'par', 'nfn;iph;par', '', 1),
(10, 'Particionar y Formatear', '../comandos/Configurar.php', '../comandos/gestores/gestor_Comandos.php', 'Configurar', '', 28, 'dsk;cfg;', 'nfn;iph;mac;dsk;cfg;par;cpt;sfi;tam;ope', '', 0),
-(11, 'Eliminar Imagen Cache', '../comandos/EliminarImagenCache.php', '../comandos/gestores/gestor_Comandos.php', 'EliminarImagenCache', '', 31, 'iph;tis;dcr;scp', 'nfn;iph;tis;dcr;scp', '', 1);
+(11, 'Eliminar Imagen Cache', '../comandos/EliminarImagenCache.php', '../comandos/gestores/gestor_Comandos.php', 'EliminarImagenCache', '', 31, 'iph;tis;dcr;scp', 'nfn;iph;tis;dcr;scp', '', 1),
+(12, 'Generar Incremental', '../comandos/CrearSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'CrearSoftIncremental', '', 16, 'nfn;dsk;iph;par;idf;ncf;idi;nci;ipr', 'nfn;dsk;iph;par;idf;ncf;idi;nci;ipr', '', 1);
@@ -416,6 +417,9 @@ CREATE TABLE IF NOT EXISTS `imagenes` (
`idrepositorio` int(11) NOT NULL,
`numpar` smallint(6) NOT NULL,
`codpar` int(8) NOT NULL,
+ `tipo` tinyint NULL,
+ `imagenid` int NOT NULL DEFAULT '0',
+ `ruta` varchar(250) NULL,
PRIMARY KEY (`idimagen`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
@@ -523,7 +527,7 @@ CREATE TABLE IF NOT EXISTS `parametros` (
`tipopa` tinyint(1) DEFAULT '0',
`visual` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`idparametro`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=33 ;
--
-- Volcar la base de datos para la tabla `parametros`
@@ -542,7 +546,7 @@ INSERT INTO `parametros` (`idparametro`, `nemonico`, `descripcion`, `nomidentifi
(9, 'ifh', 'Perfil Hardware', 'idperfilhard', 'perfileshard', 'descripcion', 1, 1),
(10, 'ifs', 'Perfil Software', 'idperfilsoft', 'perfilessoft', 'descripcion', 1, 1),
(11, 'idi', 'Imagen', 'idimagen', 'imagenes', 'descripcion', 1, 1),
-(12, 'nci', 'Nombre canonico', '', '', '', 0, 1),
+(12, 'nci', 'Nombre canónico', '', '', '', 0, 1),
(13, 'scp', 'Código a ejecutar en formato script', '', '', '', 0, 0),
(14, 'npc', 'Nombre del cliente', '', '', '', NULL, 0),
(15, 'che', 'Tamaño de la cache del cliente', '', '', '', NULL, 0),
@@ -558,12 +562,15 @@ INSERT INTO `parametros` (`idparametro`, `nemonico`, `descripcion`, `nomidentifi
(26, 'sft', 'Nombre del archivo de inventario software enviado por la red', '', '', '', 0, 0),
(27, 'tpc', 'Tipo de cliente', '', '', '', 0, 0),
(28, 'scp', 'Código script', '', '', '', 4, 1),
-(30, 'ptc', 'Protocolo de clonación', ';', '', ';Unicast;Multicast;Torrent', 1, 1);
+(30, 'ptc', 'Protocolo de clonación', ';', '', ';Unicast;Multicast;Torrent', 1, 1),
+(31, 'idf', 'Imagen diferencial', 'idsoftincremental', 'softincrementales', 'descripcion', 1, 1),
+(32, 'ncf', 'Nombre de la imagen diferencial', '', '', '', 0, 1);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `perfileshard`
+
--
CREATE TABLE IF NOT EXISTS `perfileshard` (
diff --git a/admin/Interface/CrearImagenBasica b/admin/Interface/CrearImagenBasica
new file mode 100755
index 00000000..a439788e
--- /dev/null
+++ b/admin/Interface/CrearImagenBasica
@@ -0,0 +1,107 @@
+#!/bin/bash
+#___________________________________________________________________
+#
+# CREAR IMAGEN BÁSICA
+#___________________________________________________________________
+#
+# Parámetros recibidos desde el cliente:
+#
+# $1 Número de disco
+# $2 Número de particion
+# $3 Nombre canónico de la imagen básica (sin extensión)
+# $4 Dirección del repositorio (Si es 0.0.0.0 es caché)
+# $5 Es una cadena "nnnn" tipo flags que codifica varios parametros.
+# Tiene el formato "nnnn" donde "n" vale 0 ó 1.
+# 1XXX: Borrar la imagen del repositorio antes de crearla
+# X1XX: Copiar Imagen básica también a la cache
+# XX1X: Borrar previamente la imagen de la cache antes de copiarla
+# XXX1: No borrar archivos en destino
+# El valor X indica que no importa el valor que tenga el dato
+# $6 Ruta de origen de la Imagen (Carpeta)
+
+#___________________________________________________________________
+#
+# Control parámetros
+#___________________________________________________________________
+
+ PROG="$(basename $0)"
+ if [ $# -lt 5 ]; then
+ usage=" ndisco nparticion nombre_imagen_basica ip_repositorio"
+ usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen"
+ ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage"
+ exit $?
+ fi
+
+ DISCO=$1
+ PARTICION=$2
+ NOMBREIMG=$3
+ IPREPOSITORIO=$4
+
+ flag=$5
+ echo "flah:$flag">/tmp/log
+ BORRARIMG=${flag:0:1}
+ COPIACACHE=${flag:1:1}
+ BORRACACHE=${flag:2:1}
+ NOBORRACHIVOS=${flag:3:1}
+
+ RUTAORIGEN=$6
+#___________________________________________________________________
+#
+# Variables y configuración logs
+#___________________________________________________________________
+
+ source /opt/opengnsys/interfaceAdm/ImagenesSincronizadas.lib
+#___________________________________________________________________
+#
+# Proceso
+#___________________________________________________________________
+
+ echo "Creacion de imagen basica..." | tee -a $OGLOGSESSION $OGLOGFILE
+
+ ORIGEN=$PARTICION$RUTAORIGEN/
+ DESTINO="$REPOSITORIO/$NOMBREIMG/"
+
+ # Borrado previo de imagen en repositorio
+ if [ $BORRARIMG -eq 1 ]; then
+ echo "Borrando previamente imagen del repositorio" | tee -a $OGLOGSESSION $OGLOGFILE
+ fi
+
+ # Creación de la imagen básica
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+
+ # Copia opcional a la caché
+ if [ $COPIACACHE -eq 1 ]; then
+ echo "Copiando imagen a cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ CACHE=$(montaCache)
+ if [ -z $CACHE ]; then
+ echo "No se ha podido copiar la imagen a la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ exit 0
+ fi
+
+ # Borrar imagen de la caché
+ if [ $BORRACACHE -eq 1 ]; then
+ echo "Borrando imagen $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ rm -R $CACHE$OGIMG/$NOMBREIMG
+ fi
+
+ # Redefinir destino
+ DESTINO="$CACHE$OGIMG/$NOMBREIMG/"
+
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+ fi
+#___________________________________________________________________
+#
+# Retorno
+#___________________________________________________________________
+
+ exit 0
diff --git a/admin/Interface/CrearSoftIncremental b/admin/Interface/CrearSoftIncremental
new file mode 100755
index 00000000..f788635e
--- /dev/null
+++ b/admin/Interface/CrearSoftIncremental
@@ -0,0 +1,127 @@
+#!/bin/bash
+#___________________________________________________________________
+#
+# CREAR IMAGEN INCREMENTAL
+#___________________________________________________________________
+#
+# Parámetros recibidos desde el cliente:
+#
+# $1 Número de disco
+# $2 Número de particion
+# $3 Nombre canónico de la imagen básica (sin extensión)
+# $4 Dirección del repositorio (Si es 0.0.0.0 es caché)
+# $5 Nombre canónico de la imagen incremental (sin extensión)
+# $6 Es una cadena "nnnn" tipo flags que codifica varios parametros.
+# Tiene el formato "nnnn" donde "n" vale 0 ó 1.
+# 1XXX: Borrar la imagen incremental del repositorio antes de crearla
+# X1XX: Copiar imagen incremental también a la cache
+# XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla
+# XXX1: No borrar archivos en destino
+# El valor X indica que no importa el valor que tenga el dato
+# $7 Ruta de origen de la Imagen (Carpeta)
+
+#___________________________________________________________________
+#
+# Control parámetros
+#___________________________________________________________________
+
+ PROG="$(basename $0)"
+ if [ $# -lt 6 ]; then
+ usage=" ndisco nparticion nombre_imagen_basica ip_repositorio nombre_imagen_incremental"
+ usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen"
+ ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage"
+ exit $?
+ fi
+
+ DISCO=$1
+ PARTICION=$2
+ NOMBREIMG=$3
+ IPREPOSITORIO=$4
+ NOMBREIMGINC=$5
+
+ flag=$6
+ echo "flah:$flag">/tmp/log
+ BORRARIMG=${flag:0:1}
+ COPIACACHE=${flag:1:1}
+ BORRACACHE=${flag:2:1}
+ NOBORRACHIVOS=${flag:3:1}
+
+ RUTAORIGEN=$7
+#___________________________________________________________________
+#
+# Variables y configuración logs
+#___________________________________________________________________
+
+ source /opt/opengnsys/interfaceAdm/ImagenesSincronizadas.lib
+
+#___________________________________________________________________
+#
+# Lista de archivos a sincronizar
+#___________________________________________________________________
+
+ TMPFILELIST="/tmp/_listatmp_"
+ FILELIST="/tmp/_lista_"
+#___________________________________________________________________
+#
+# Proceso
+#___________________________________________________________________
+
+ echo "Creacion de imagen incremental..." | tee -a $OGLOGSESSION $OGLOGFILE
+
+ ORIGEN=$PARTICION$RUTAORIGEN/
+ DESTINO="$REPOSITORIO/$NOMBREIMG/"
+
+ # Borrado previo de imagen en repositorio
+ if [ $BORRARIMG -eq 1 ]; then
+ echo "Borrando previamente imagen del repositorio" | tee -a $OGLOGSESSION $OGLOGFILE
+ fi
+
+ # Creación de la lista de archivos entre partición e imagen básica del repositorio
+ echo "Creación de la lista de archivos a transferir entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 $TMPFILELIST
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+
+ # Editar la lista y depurarla
+ editarLista $TMPFILELIST $FILELIST
+
+ # Creación de la imagen incremental en el repositorio
+ echo "Sincronizacion para crear imagen incremental entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 $FILELIST
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+
+ # Copia opcional a la caché
+ if [ $COPIACACHE -eq 1 ]; then
+ echo "Copiando imagen a cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ CACHE=$(montaCache)
+ if [ -z $CACHE ]; then
+ echo "No se ha podido copiar la imagen a la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ exit 0
+ fi
+
+ # Borrar imagen de la caché
+ if [ $BORRACACHE -eq 1 ]; then
+ echo "Borrando imagen $NOMBREIMGINC de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ rm -R $CACHE$OGIMG/$NOMBREIMGINC
+ fi
+
+ DESTINO="$CACHE$OGIMG/$NOMBREIMGINC/"
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 $FILELIST
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+ fi
+#___________________________________________________________________
+#
+# Retorno
+#___________________________________________________________________
+
+ exit 0
+
\ No newline at end of file
diff --git a/admin/Interface/ImagenesSincronizadas.lib b/admin/Interface/ImagenesSincronizadas.lib
new file mode 100755
index 00000000..2b0d3ace
--- /dev/null
+++ b/admin/Interface/ImagenesSincronizadas.lib
@@ -0,0 +1,205 @@
+#!/bin/bash
+#___________________________________________________________________
+#
+#@file ImagenesSincronizadas.lib
+#@brief Librería o clase ImagenesSincronizadas
+#@class ImagenesSincronizadas
+#@brief Funciones para la creación y restauración de imagenes por sincronización.
+#@version 1.0.4
+#@warning License: GNU GPLv3+
+#___________________________________________________________________
+
+ #Load engine configurator from engine.cfg file.
+ #Carga el configurador del engine desde el fichero engine.cfg
+ [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
+
+ # Clear temporary file used as log track by httpdlog
+ # Limpia los ficheros temporales usados como log de seguimieincludento para httpdlog
+ echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp
+
+ # Registro de inicio de ejecución
+ #echo "[START Interface ] Run this command: $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
+ echo "$MSG_INTERFACE_START $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
+
+ # Solo ejecutable por OpenGnSys Client.
+ PATH=$PATH:$(dirname $0)
+ PROG=$(basename $0)
+ CALLER=$(ogGetCaller)
+ if [ "$CALLER" != "ogAdmClient" ]; then
+ ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG"
+ exit $?
+ fi
+
+ #___________________________________________________________________
+ #
+ # Variables globales
+ #___________________________________________________________________
+
+ TIPOPARTICION="$(ogGetPartitionId $DISCO $PARTICION)"; # Tipo de particion
+ SISTEMAFICHERO="$(ogGetOsType $DISCO $PARTICION)" # Sistema de ficheros
+ PARTICION=$(ogMount $DISCO $PARTICION); # Monta partición
+ REPOSITORIO="root@$IPREPOSITORIO::imagenes" # Ruta de las imagenes en el repositorio
+
+ # Borrar archivos en destino
+ OP_DELETE="--delete"
+ if [ $NOBORRACHIVOS -eq 1 ]; then
+ OP_DELETE=""
+ fi
+
+ #___________________________________________________________________
+ #
+ # Crea un fichero con la clave remota del rsync y actualiza el
+ # parámetro "--password-file" para que no se pida ésta en el proceso.
+ #___________________________________________________________________
+ #
+ f="/tmp/passrsync" # Creación del archivo de claves
+ echo "passusuog">$f # Escribe dentro la clave remota
+ chmod 400 $f # Es obligatorio que el archivo de claves tenga estos permisos
+ FILE_PASSWD="--password-file=$f"
+
+
+ #___________________________________________________________________
+ #
+ # Función: montaCache
+ #
+ # Descripción:
+ #
+ # Monta la cache y devuelve la ruta hacía ella
+ #
+ # Parámetros:
+ #
+ # Ninguno
+ #___________________________________________________________________
+ #
+ function montaCache()
+ {
+ # Error si no existe caché
+ if ! $(ogFindCache >/dev/null); then
+ echo ""
+ return
+ fi
+ cache=$(ogMountCache)
+ echo $cache
+ }
+ #___________________________________________________________________
+ #
+ # Función: editarLista
+ #
+ # Descripción:
+ #
+ # Edita lista de archivos a transferir para depurar lineas
+ #
+ # Parámetros:
+ #
+ # $1 Lista de entrada
+ # $2 Lista de salida
+ #___________________________________________________________________
+ #
+ function editarLista()
+ {
+ # Edición:
+ # a) Quitarle lineas que contengan './'
+ # b) La primera linea (reporter del rsync)
+ # c) Las dos últimas lineas del final (reporter del rsync)
+
+ echo "Editando lista de archivos Entrada:$1 Salida:$2" | tee -a $OGLOGSESSION $OGLOGFILE
+ cat $1 | sed '/\.\//d' | sed '1d' | sed -n -e :a -e '1,2!{P;N;D;};N;ba'>$2
+ }
+
+ #___________________________________________________________________
+ #
+ # Función: crearImagen
+ #
+ # Descripción:
+ #
+ # Sincroniza archivos entre origen y destino. Al final del
+ # proceso el contenido de destino será igual al de origen.
+ # La creación de imagen siempre tiene lugar entre una partición
+ # y un repositorio como origen y destino respectivamente.
+ #
+ # Parámetros:
+ #
+ # $1: Origen
+ # $2: Destino
+ # $3: Sistema de ficheros de la partición
+ # $4: Vale 1=Para crear la lista de archivos a transferir
+ # 2= Cuando se quiere sincronizar usando la lista
+ # $5: Path a la lista de archivos
+ #___________________________________________________________________
+ #
+ function crearImagen()
+ {
+ case "$3" in
+ Windows)
+ OP_ARCHIVO="-aH"
+ OP_EXCLUDE="--exclude '$PARTICION/pagefile.sys'"
+ ;;
+ Linux)
+ OP_ARCHIVO="-alH"
+ OP_EXCLUDE="--exclude '/tmp ..exclude '/proc' --exclude='/sys'"
+ ;;
+ esac
+
+ FREG=$OGLOGCOMMAND # Por defecto se redirecciona al archivo de log de comandos
+
+ case "$4" in
+ 1)
+ OP_ARCHIVO=$OP_ARCHIVO"nv" # Simulación para crear lista
+ FREG=$5
+ ;;
+ 2)
+ OP_FILELIST="--files-from=$5"
+ OP_ARCHIVO="$OP_ARCHIVO $OP_FILELIST"
+ ;;
+ esac
+
+ OP_PASSWD=$FILE_PASSWD
+ echo "rsync $OP_ARCHIVO $OP_DELETE $OP_EXCLUDE $OP_PASSWD $1 $2 " | tee -a $OGLOGSESSION $OGLOGFILE
+ rsync $OP_ARCHIVO $OP_DELETE $OP_EXCLUDE $OP_PASSWD $1 $2>$FREG;
+ }
+
+ #___________________________________________________________________
+ #
+ # Función: restaurarImagen
+ #
+ # Descripción:
+ #
+ # Sincroniza archivos entre origen y destino. Al final del
+ # proceso el contenido de destino será igual al de origen.
+ # La restauración de imagen siempre tiene lugar entre la caché
+ # o un repositorio y una partición o carpeta como origen y destino
+ # respectivamente.
+ #
+ # Parámetros:
+ #
+ # $1: Origen
+ # $2: Destino
+ # $3: Sistema de ficheros de la partición
+ # $4: Indica si la sincronización es local o remota
+ # 1: El origen o el destino es remoto
+ # 2: Tanto el origen como el destino son locales
+ #___________________________________________________________________
+ #
+ function restaurarImagen()
+ {
+ case "$3" in
+ Windows)
+ OP_ARCHIVO="-aH"
+ ;;
+ Linux)
+ OP_ARCHIVO="-alH"
+ ;;
+ esac
+
+ case "$4" in
+ 1)
+ OP_PASSWD=$FILE_PASSWD
+ ;;
+ 2)
+ OP_PASSWD=""
+ ;;
+ esac
+ echo "rsync $OP_ARCHIVO $OP_DELETE $OP_PASSWD $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE
+ rsync $OP_ARCHIVO $OP_DELETE $OP_PASSWD $1 $2>$OGLOGCOMMAND;
+ }
+
\ No newline at end of file
diff --git a/admin/Interface/RestaurarImagenBasica b/admin/Interface/RestaurarImagenBasica
new file mode 100755
index 00000000..133d2e5a
--- /dev/null
+++ b/admin/Interface/RestaurarImagenBasica
@@ -0,0 +1,135 @@
+#!/bin/bash
+#___________________________________________________________________
+#
+# RESTAURAR IMAGEN BÁSICA
+#___________________________________________________________________
+#
+# Parámetros recibidos desde el cliente:
+#
+# $1 Número de disco
+# $2 Número de particion
+# $3 Nombre canónico de la imagen básica (sin extensión)
+# $4 Dirección del repositorio (Si es 0.0.0.0 es caché)
+# $5 Es una cadena "nnnn" tipo flags que codifica varios parametros.
+# Tiene el formato "nnnn" donde "n" vale 0 ó 1.
+# 1XXX: Borrar la particion de destino antes de restaurar la imagen basica
+# X1XX: Copiar Imagen básica también a la cache
+# XX1X: Borrar previamente la imagen basica de la cache antes de copiarla
+# XXX1: No borrar archivos en destino
+# El valor X indica que no importa el valor que tenga el dato
+# $6 Método de clonación 0=Desde caché 1=Desde repositorio
+# $7 Ruta de origen de la Imagen (Carpeta)
+#___________________________________________________________________
+#
+# Control parámetros
+#___________________________________________________________________
+
+ PROG="$(basename $0)"
+ if [ $# -lt 6 ]; then
+ usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché "
+ usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen"
+ ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage"
+ exit $?
+ fi
+
+ DISCO=$1
+ PARTICION=$2
+ NOMBREIMG=$3
+ IPREPOSITORIO=$4
+
+ flag=$5
+ echo "flah:$flag">/tmp/log
+ BORRARIMG=${flag:0:1}
+ COPIACACHE=${flag:1:1}
+ BORRACACHE=${flag:2:1}
+ NOBORRACHIVOS=${flag:3:1}
+
+ METCLONA=$6
+ RUTAORIGEN=$7
+#___________________________________________________________________
+#
+# Variables y configuración logs
+#___________________________________________________________________
+
+ source /opt/opengnsys/interfaceAdm/ImagenesSincronizadas.lib
+#___________________________________________________________________
+#
+# Proceso
+#___________________________________________________________________
+
+ echo "Restauracion de imagen basica..." | tee -a $OGLOGSESSION $OGLOGFILE
+
+ # Borrado previo de la partición
+ if [ $BORRARIMG -eq 1 ]; then
+ if [ -n $RUTAORIGEN ]; then
+ echo "Borrando carpeta $PARTICION$RUTAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE
+ rm -R $PARTICION$RUTAORIGEN
+ else
+ echo "Formateando la particion" | tee -a $OGLOGSESSION $OGLOGFILE
+ ogFormat $DISCO $PARTICION $TIPOPARTICION
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_PARTITION
+ fi
+ fi
+ fi
+
+ # Sincronización desde repositorio
+ if [ $METCLONA = 1 ]; then
+ if [ $COPIACACHE = 0 ]; then
+ echo "Restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
+ ORIGEN="$REPOSITORIO/$NOMBREIMG/"
+ DESTINO=$PARTICION$RUTAORIGEN/
+ # Restauración de la imagen básica
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
+ RETVAL=$?
+ exit $RETVAL
+ fi
+ fi
+
+ # Restauración desde la caché
+ echo "Restaurando desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+
+ # Comprobar si existe caché
+ CACHE=$(montaCache)
+ if [ -z $CACHE ]; then
+ echo "No se ha podido restaurar la imagen desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ ogRaiseError $OG_ERR_NOTCACHE "CACHE"
+ exit $?
+ fi
+
+ # Borrar imagen de la caché
+ if [ $BORRACACHE -eq 1 ]; then
+ echo "Borrando imagen $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ rm -R $CACHE$OGIMG/$NOMBREIMG
+ fi
+
+ # Actualización de la caché
+ echo "Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
+ ORIGEN="$REPOSITORIO/$NOMBREIMG/"
+ DESTINO="$CACHE$OGIMG/$NOMBREIMG/"
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+
+ # Restauración desde caché a la partición
+ echo "Copiando imagen a la partición desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
+
+ ORIGEN="$CACHE$OGIMG/$NOMBREIMG/"
+ DESTINO=$PARTICION$RUTAORIGEN/
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+#___________________________________________________________________
+#
+# Retorno
+#___________________________________________________________________
+
+ exit 0
diff --git a/admin/Interface/RestaurarSoftIncremental b/admin/Interface/RestaurarSoftIncremental
new file mode 100755
index 00000000..f1afc5be
--- /dev/null
+++ b/admin/Interface/RestaurarSoftIncremental
@@ -0,0 +1,172 @@
+#!/bin/bash
+#___________________________________________________________________
+#
+# RESTAURAR IMAGEN INCREMENTAL
+#___________________________________________________________________
+#
+# Parámetros recibidos desde el cliente:
+#
+# $1 Número de disco
+# $2 Número de particion
+# $3 Nombre canónico de la imagen básica (sin extensión)
+# $4 Dirección del repositorio (Si es 0.0.0.0 es caché)
+# $5 Nombre canónico del software incremental (sin extensión)
+# $5 Es una cadena "nnnn" tipo flags que codifica varios parametros.
+# Tiene el formato "nnnn" donde "n" vale 0 ó 1.
+# 1XXX: Borrar la particion de destino antes de restaurar la imagen incremental
+# X1XX: Copiar Imagen incremental también a la cache
+# XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla
+# XXX1: No borrar archivos en destino
+# El valor X indica que no importa el valor que tenga el dato
+# $7 Método de clonación 0=Desde caché 1=Desde repositorio
+# $8 Ruta de origen de la Imagen (Carpeta)
+#___________________________________________________________________
+#
+# Control parámetros
+#___________________________________________________________________
+
+ PROG="$(basename $0)"
+ if [ $# -lt 6 ]; then
+ usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché "
+ usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen"
+ ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage"
+ exit $?
+ fi
+
+ DISCO=$1
+ PARTICION=$2
+ NOMBREIMG=$3
+ IPREPOSITORIO=$4
+ NOMBREIMGINC=$5
+
+ flag=$6
+ echo "flah:$flag">/tmp/log
+ BORRARIMG=${flag:0:1}
+ COPIACACHE=${flag:1:1}
+ BORRACACHE=${flag:2:1}
+ NOBORRACHIVOS=${flag:3:1}
+
+ METCLONA=$7
+ RUTAORIGEN=$8
+#___________________________________________________________________
+#
+# Variables y configuración logs
+#___________________________________________________________________
+
+ source /opt/opengnsys/interfaceAdm/ImagenesSincronizadas.lib
+#___________________________________________________________________
+#
+# Proceso
+#___________________________________________________________________
+
+ echo "Restauracion de imagen incremental..." | tee -a $OGLOGSESSION $OGLOGFILE
+
+ # Borrado previo de la partición
+ if [ $BORRARIMG -eq 1 ]; then
+ if [ -n $RUTAORIGEN ]; then
+ echo "Borrando carpeta $PARTICION$RUTAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE
+ rm -R $PARTICION$RUTAORIGEN
+ else
+ echo "Formateando la particion" | tee -a $OGLOGSESSION $OGLOGFILE
+ ogFormat $DISCO $PARTICION $TIPOPARTICION
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_PARTITION
+ fi
+ fi
+ fi
+
+ # Sincronización desde repositorio
+ if [ $METCLONA = 1 ]; then
+ if [ $COPIACACHE = 0 ]; then
+ echo "Restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
+ ORIGEN="$REPOSITORIO/$NOMBREIMG/"
+ DESTINO=$PARTICION$RUTAORIGEN/
+ # Restauración de la imagen básica
+ echo "Sincronizando imagen basica entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+
+ # Restauración de la imagen incremental
+ echo "Restaurando imagen incremental desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
+ ORIGEN="$REPOSITORIO/$NOMBREIMGINC/"
+ DESTINO=$PARTICION$RUTAORIGEN/
+ OP_DELETE=""
+ # Restauración de la imagen incremental
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
+ RETVAL=$?
+ exit $RETVAL
+ fi
+ fi
+
+ # Restauración desde la caché
+ echo "Restaurando desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+
+ # Comprobar si existe caché
+ CACHE=$(montaCache)
+ if [ -z $CACHE ]; then
+ echo "No se ha podido restaurar la imagen desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ ogRaiseError $OG_ERR_NOTCACHE "CACHE"
+ exit $?
+ fi
+
+ # Borrar imagen de la caché
+ if [ $BORRACACHE -eq 1 ]; then
+ echo "Borrando imagen basica $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ rm -R $CACHE$OGIMG/$NOMBREIMG
+ echo "Borrando imagen incremental $NOMBREIMGINC de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
+ rm -R $CACHE$OGIMG/$NOMBREIMGINC
+ fi
+
+ # Actualización de la caché
+ echo "Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
+
+ ORIGEN="$REPOSITORIO/$NOMBREIMG/"
+ DESTINO="$CACHE$OGIMG/$NOMBREIMG/"
+ echo "Sincronizando imagen basica entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+ ORIGEN="$REPOSITORIO/$NOMBREIMGINC/"
+ DESTINO="$CACHE$OGIMG/$NOMBREIMGINC/"
+ echo "Sincronizando imagen incremental entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+
+ # Restauración desde caché a la partición
+
+ echo "Copiando imagen basica a la partición desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
+ ORIGEN="$CACHE$OGIMG/$NOMBREIMG/"
+ DESTINO=$PARTICION$RUTAORIGEN/
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+
+ echo "Copiando imagen incremental a la partición desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
+ ORIGEN="$CACHE$OGIMG/$NOMBREIMGINC/"
+ DESTINO=$PARTICION$RUTAORIGEN/
+ OP_DELETE=""
+ echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
+ restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ exit $OG_ERR_IMAGE
+ fi
+#___________________________________________________________________
+#
+# Retorno
+#___________________________________________________________________
+
+ exit 0
\ No newline at end of file
diff --git a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c
index d766eb34..087130c9 100644
--- a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c
+++ b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c
@@ -83,28 +83,33 @@ BOOLEAN tomaConfiguracion(char* filecfg)
}
if (servidoradm[0] == CHARNULL) {
+ liberaMemoria(buffer);
errorLog(modulo,4, FALSE); // Falta parámetro SERVIDORADM
return (FALSE);
}
if (puerto[0] == CHARNULL) {
+ liberaMemoria(buffer);
errorLog(modulo,5, FALSE); // Falta parámetro PUERTO
return (FALSE);
}
if (pathinterface[0] == CHARNULL) {
+ liberaMemoria(buffer);
errorLog(modulo,56, FALSE); // Falta parámetro PATHINTERFACE
return (FALSE);
}
if (urlmenu[0] == CHARNULL) {
+ liberaMemoria(buffer);
errorLog(modulo,89, FALSE); // Falta parámetro URLMENU
return (FALSE);
}
if (urlmsg[0] == CHARNULL) {
+ liberaMemoria(buffer);
errorLog(modulo,90, FALSE); // Falta parámetro URLMSG
return (FALSE);
}
-
+ liberaMemoria(buffer);
return (TRUE);
}
//______________________________________________________________________________________________________
@@ -368,6 +373,10 @@ BOOLEAN tomaIPlocal()
{
char modulo[] = "tomaIPlocal()";
+ // Para debug
+ //strcpy(IPlocal,"10.1.15.203");
+ //return(TRUE);
+
sprintf(interface,"%s/getIpAddress",pathinterface);
herror=interfaceAdmin(interface,NULL,IPlocal);
if(herror){
@@ -389,6 +398,8 @@ BOOLEAN tomaIPlocal()
//______________________________________________________________________________________________________
BOOLEAN cuestionCache(char* tam)
{
+ return(TRUE);
+ //>>>>>>>>>>>>>>>>>>>>>>>>>>
char msglog[LONSTD];
char modulo[] = "cuestionCache()";
@@ -473,9 +484,13 @@ void muestraMenu()
// ________________________________________________________________________________________________________
void muestraMensaje(int idx,char*msg)
{
- char url[250];
- if(msg)
- sprintf(url,"%s?msg=%s",urlmsg,URLEncode(msg)); // Url de la página de mensajes
+ char *msgpan,url[250];
+
+ if(msg){
+ msgpan=URLEncode(msg);
+ sprintf(url,"%s?msg=%s",urlmsg,msgpan); // Url de la página de mensajes
+ liberaMemoria(msgpan);
+ }
else
sprintf(url,"%s?idx=%d",urlmsg,idx); // Url de la página de mensajes
cargaPaginaWeb(url);
@@ -513,7 +528,8 @@ BOOLEAN inclusionCliente(TRAMA* ptrTrama)
initParametros(ptrTrama,0);
lon=sprintf(ptrTrama->parametros,"nfn=InclusionCliente\r"); // Nombre de la función a ejecutar en el servidor
lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuración de los Sistemas Operativos del cliente
-
+ liberaMemoria(cfg);
+
if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){
errorLog(modulo,37,FALSE);
return(FALSE);
@@ -551,15 +567,18 @@ BOOLEAN RESPUESTA_InclusionCliente(TRAMA* ptrTrama)
res=copiaParametro("res",ptrTrama); // Resultado del proceso de inclusión
if(atoi(res)==0){ // Error en el proceso de inclusión
+ liberaMemoria(res);
errorLog(modulo,41,FALSE);
return (FALSE);
}
- strcpy(idordenador,copiaParametro("ido",ptrTrama)); // Identificador del ordenador
- strcpy(nombreordenador,copiaParametro("npc",ptrTrama)); // Nombre del ordenador
- strcpy(cache,copiaParametro("che",ptrTrama)); // Tamaño de la caché reservada al cliente
- strcpy(idproautoexec,copiaParametro("exe",ptrTrama)); // Procedimento de inicio (Autoexec)
- strcpy(idcentro,copiaParametro("idc",ptrTrama)); // Identificador de la Unidad Organizativa
- strcpy(idaula,copiaParametro("ida",ptrTrama)); // Identificador de la Unidad Organizativa
+ liberaMemoria(res);
+
+ idordenador=copiaParametro("ido",ptrTrama); // Identificador del ordenador
+ nombreordenador=copiaParametro("npc",ptrTrama); // Nombre del ordenador
+ cache=copiaParametro("che",ptrTrama); // Tamaño de la caché reservada al cliente
+ idproautoexec=copiaParametro("exe",ptrTrama); // Procedimento de inicio (Autoexec)
+ idcentro=copiaParametro("idc",ptrTrama); // Identificador de la Unidad Organizativa
+ idaula=copiaParametro("ida",ptrTrama); // Identificador del aula
if(idordenador==NULL || nombreordenador==NULL){
errorLog(modulo,40,FALSE);
@@ -589,10 +608,16 @@ char* LeeConfiguracion(char* dsk)
errorLog(modulo,3,FALSE);
return(NULL);
}
+
+ // Para debug
+ //sprintf(parametroscfg,"disk=1\tpar=%s\tcpt=%s\tfsi=%s\tsoi=%s\ttam=%s\n","1","7","NTFS","Microsoft Windows XP","50000000");
+ //return(parametroscfg);
+
sprintf(interface,"%s/%s",pathinterface,"getConfiguration");
herror=interfaceAdmin(interface,NULL,parametroscfg);
if(herror){ // No se puede recuperar la configuración del cliente
+ liberaMemoria(parametroscfg);
errorLog(modulo,36,FALSE);
return(NULL);
}
@@ -656,11 +681,16 @@ BOOLEAN RESPUESTA_AutoexecCliente(TRAMA* ptrTrama)
res=copiaParametro("res",ptrTrama);
if(atoi(res)==0){ // Error en el proceso de autoexec
+ liberaMemoria(res);
return (FALSE);
}
+ liberaMemoria(res);
+
nfl=copiaParametro("nfl",ptrTrama);
initParametros(ptrTrama,0);
sprintf(ptrTrama->parametros,"nfn=enviaArchivo\rnfl=%s\r",nfl);
+ liberaMemoria(nfl);
+
/* Envía petición */
if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){
errorLog(modulo,42,FALSE);
@@ -879,19 +909,20 @@ BOOLEAN Sondeo(TRAMA* ptrTrama)
BOOLEAN ConsolaRemota(TRAMA* ptrTrama)
{
SOCKET socket_c;
- char *nfn,*ids,*scp,ecosrc[LONPRM],ecodst[LONPRM],msglog[LONSTD];;
+ char *nfn,*scp,*aux,ecosrc[LONPRM],ecodst[LONPRM],msglog[LONSTD];;
char modulo[] = "ConsolaRemota()";
- scp=URLDecode(copiaParametro("scp",ptrTrama));
-
- nfn=copiaParametro("nfn",ptrTrama);
- ids=copiaParametro("ids",ptrTrama);
-
/* Nombre del archivo de script */
char filescript[LONPRM];
sprintf(filescript,"/tmp/_script_%s",IPlocal);
+
+ aux=copiaParametro("scp",ptrTrama);
+ scp=URLDecode(aux);
escribeArchivo(filescript,scp);
-
+ liberaMemoria(aux);
+ liberaMemoria(scp);
+
+ nfn=copiaParametro("nfn",ptrTrama);
sprintf(interface,"%s/%s",pathinterface,nfn);
sprintf(ecosrc,"/tmp/_econsola_%s",IPlocal);
sprintf(parametros,"%s %s %s",nfn,filescript,ecosrc);
@@ -910,6 +941,7 @@ BOOLEAN ConsolaRemota(TRAMA* ptrTrama)
return(FALSE);
}
/* Espera señal para comenzar el envío */
+ liberaMemoria(ptrTrama);
recibeFlag(&socket_c,ptrTrama);
/* Envía archivo */
if(!sendArchivo(&socket_c,ecosrc)){
@@ -918,6 +950,7 @@ BOOLEAN ConsolaRemota(TRAMA* ptrTrama)
}
close(socket_c);
}
+ liberaMemoria(nfn);
return(TRUE);
}
//_____________________________________________________________________________________________________
@@ -954,6 +987,8 @@ BOOLEAN Comando(TRAMA* ptrTrama)
initParametros(ptrTrama,0);
lon=sprintf(ptrTrama->parametros,"nfn=RESPUESTA_%s\r",nfn);
respuestaEjecucionComando(ptrTrama,herror,ids);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
return(TRUE);
}
//_____________________________________________________________________________________________________
@@ -985,6 +1020,7 @@ BOOLEAN Arrancar(TRAMA* ptrTrama)
lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Arrancar");
lon+=sprintf(ptrTrama->parametros+lon,"tpc=%s\r",CLIENTE_OPENGNSYS);
respuestaEjecucionComando(ptrTrama,0,ids);
+ liberaMemoria(ids);
return(TRUE);
}
//_____________________________________________________________________________________________________
@@ -1019,9 +1055,13 @@ BOOLEAN Apagar(TRAMA* ptrTrama)
herror=interfaceAdmin(interface,NULL,NULL);
if(herror){
sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
errorInfo(modulo,msglog);
return(FALSE);
}
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
return(TRUE);
}
//_____________________________________________________________________________________________________
@@ -1056,9 +1096,13 @@ BOOLEAN Reiniciar(TRAMA* ptrTrama)
herror=interfaceAdmin(interface,NULL,NULL);
if(herror){
sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
errorInfo(modulo,msglog);
return(FALSE);
}
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
return(TRUE);
}
//_____________________________________________________________________________________________________
@@ -1089,16 +1133,21 @@ BOOLEAN IniciarSesion(TRAMA* ptrTrama)
initParametros(ptrTrama,0);
lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_IniciarSesion");
respuestaEjecucionComando(ptrTrama,0,ids);
+ liberaMemoria(ids);
sprintf(interface,"%s/%s",pathinterface,nfn);
sprintf(parametros,"%s %s",nfn,par);
+ liberaMemoria(par);
+
herror=interfaceAdmin(interface,parametros,NULL);
if(herror){
sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ liberaMemoria(nfn);
errorInfo(modulo,msglog);
return(FALSE);
}
+ liberaMemoria(nfn);
return(TRUE);
}
//______________________________________________________________________________________________________
@@ -1133,6 +1182,7 @@ BOOLEAN CrearImagen(TRAMA* ptrTrama)
nfn=copiaParametro("nfn",ptrTrama);
ids=copiaParametro("ids",ptrTrama);
muestraMensaje(7,NULL);
+
if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente
muestraMensaje(2,NULL);
sprintf(interface,"%s/%s",pathinterface,nfn);
@@ -1161,6 +1211,181 @@ BOOLEAN CrearImagen(TRAMA* ptrTrama)
lon+=sprintf(ptrTrama->parametros+lon,"cpt=%s\r",cpt); // Tipo o código de partición
lon+=sprintf(ptrTrama->parametros+lon,"ipr=%s\r",ipr); // Ip del repositorio donde se alojó
respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(cpt);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(ipr);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Función: CrearImagenBasica
+//
+// Descripción:
+// Crea una imagen básica a traverś dela sincronización
+// Parámetros:
+// ptrTrama: contenido del mensaje
+//
+// FDevuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algún error
+//______________________________________________________________________________________________________
+BOOLEAN CrearImagenBasica(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*cpt,*idi,*nci,*rti,*ipr,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "CrearImagenBasica()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+ dsk=copiaParametro("dsk",ptrTrama); // Disco
+ par=copiaParametro("par",ptrTrama); // Número de partición
+ cpt=copiaParametro("cpt",ptrTrama); // Tipo de partición
+ idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen
+ nci=copiaParametro("nci",ptrTrama); // Nombre canónico de la imagen
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+ //muestraMensaje(7,NULL); // Creando Inventario Software
+ //if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente
+ muestraMensaje(30,NULL);// Creando Imagen Básica, por favor espere...
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s%s%s%s %s",nfn,dsk,par,nci,ipr,bpi,cpc,bpc,nba,rti);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(29,NULL);// Ha habido algún error en el proceso de creación de imagen básica
+ }
+ else
+ muestraMensaje(28,NULL);// El proceso de creación de imagen básica ha terminado correctamente
+ //}
+ //else{
+ // sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ // errorInfo(modulo,msglog);
+ //}
+
+ muestraMenu();
+ ids=copiaParametro("ids",ptrTrama); // Identificador de la sesión
+
+ /* Envia respuesta de ejecución de la función de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearImagenBasica");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición de donde se creó
+ lon+=sprintf(ptrTrama->parametros+lon,"cpt=%s\r",cpt); // Tipo o código de partición
+ lon+=sprintf(ptrTrama->parametros+lon,"ipr=%s\r",ipr); // Ip del repositorio donde se alojó
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(cpt);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ipr);
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Función: CrearSoftIncremental
+//
+// Descripción:
+// Crea una software incremental comparando una partición con una imagen básica
+// Parámetros:
+// ptrTrama: contenido del mensaje
+//
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algún error
+//______________________________________________________________________________________________________
+BOOLEAN CrearSoftIncremental(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*idi,*idf,*ipr,*nci,*rti,*ncf,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "CrearSoftIncremental()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+
+ dsk=copiaParametro("dsk",ptrTrama); // Disco
+ par=copiaParametro("par",ptrTrama); // Número de partición
+ idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen
+ nci=copiaParametro("nci",ptrTrama); // Nombre canónico de la imagen
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio
+ idf=copiaParametro("idf",ptrTrama); // Identificador de la imagen diferencial
+ ncf=copiaParametro("ncf",ptrTrama); // Nombre canónico de la imagen diferencial
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+// muestraMensaje(7,NULL); // Creando Inventario Software
+// if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente
+ muestraMensaje(25,NULL);// Creando Imagen Incremental, por favor espere...
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s %s%s%s%s %s",nfn,dsk,par,nci,ipr,ncf,bpi,cpc,bpc,nba,rti);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(27,NULL);// Ha habido algún error en el proceso de creación de imagen básica
+ }
+ else
+ muestraMensaje(26,NULL);// El proceso de creación de imagen básica ha terminado correctamente
+// }
+// else{
+// sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+// errorInfo(modulo,msglog);
+// }
+
+ muestraMenu();
+ ids=copiaParametro("ids",ptrTrama); // Identificador de la sesión
+
+ /* Envia respuesta de ejecución de la función de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearSoftIncremental");
+ lon+=sprintf(ptrTrama->parametros+lon,"idf=%s\r",idf); // Identificador de la imagen incremental
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ipr);
+ liberaMemoria(idf);
+ liberaMemoria(ncf);
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
return(TRUE);
}
//______________________________________________________________________________________________________
@@ -1172,7 +1397,7 @@ BOOLEAN CrearImagen(TRAMA* ptrTrama)
// ptrTrama: contenido del mensaje
// Devuelve:
// TRUE: Si el proceso es correcto
-// FALSE: En caso de ocurrir algún error
+// FALSE: En bpccaso de ocurrir algún error
//______________________________________________________________________________________________________
BOOLEAN RestaurarImagen(TRAMA* ptrTrama)
{
@@ -1216,6 +1441,172 @@ BOOLEAN RestaurarImagen(TRAMA* ptrTrama)
lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición
lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software
respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(ipr);
+ liberaMemoria(ifs);
+ liberaMemoria(ptc);
+ liberaMemoria(ids);
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Función: RestaurarImagenBasica
+//
+// Descripción:
+// Restaura una imagen básica en una partición
+// Parámetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algún error
+//______________________________________________________________________________________________________
+BOOLEAN RestaurarImagenBasica(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*idi,*ipr,*met,*nci,*rti,*ifs,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "RestaurarImagenBasica()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ dsk=copiaParametro("dsk",ptrTrama);
+ par=copiaParametro("par",ptrTrama);
+ idi=copiaParametro("idi",ptrTrama);
+ ipr=copiaParametro("ipr",ptrTrama);
+ met=copiaParametro("met",ptrTrama); // Método de clonación 0= desde caché 1= desde repositorio
+ nci=copiaParametro("nci",ptrTrama);
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ifs=copiaParametro("ifs",ptrTrama);
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(31,NULL);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s%s%s%s %s %s",nfn,dsk,par,nci,ipr,bpi,cpc,bpc,nba,met,rti);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(33,NULL);
+ }
+ else
+ muestraMensaje(32,NULL);
+
+ muestraMenu();
+
+ /* Envia respuesta de ejecución de la función de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarImagenBasica");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición
+ lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ifs);
+ liberaMemoria(ipr);
+ liberaMemoria(met);
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Función: RestaurarSoftIncremental
+//
+// Descripción:
+// Restaura software incremental en una partición
+// Parámetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algún error
+//______________________________________________________________________________________________________
+BOOLEAN RestaurarSoftIncremental(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*idi,*ipr,*met,*ifs,*nci,*rti,*idf,*ncf,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "RestaurarSoftIncremental()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ dsk=copiaParametro("dsk",ptrTrama);
+ par=copiaParametro("par",ptrTrama);
+ idi=copiaParametro("idi",ptrTrama);
+ idf=copiaParametro("idf",ptrTrama);
+ ipr=copiaParametro("ipr",ptrTrama);
+ met=copiaParametro("met",ptrTrama); // Método de clonación 0= desde caché 1= desde repositorio
+ ifs=copiaParametro("ifs",ptrTrama);
+ nci=copiaParametro("nci",ptrTrama);
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ncf=copiaParametro("ncf",ptrTrama);
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(31,NULL);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s %s%s%s%s %s %s",nfn,dsk,par,nci,ipr,ncf,bpi,cpc,bpc,nba,met,rti);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(35,NULL);
+ }
+ else
+ muestraMensaje(34,NULL);
+
+ muestraMenu();
+
+ /* Envia respuesta de ejecución de la función de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarSoftIncremental");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idf); // Identificador de la imagen incremental (Forzada a idi)
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición
+ lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software
+
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(idf);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ncf);
+ liberaMemoria(ifs);
+ liberaMemoria(ipr);
+ liberaMemoria(met);
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
return(TRUE);
}
//______________________________________________________________________________________________________
@@ -1274,6 +1665,12 @@ BOOLEAN Configurar(TRAMA* ptrTrama)
lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Configurar");
lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Identificador de la imagen
respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(dsk);
+ liberaMemoria(cfg);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+
return(TRUE);
}
// ________________________________________________________________________________________________________
@@ -1319,10 +1716,13 @@ BOOLEAN InventarioHardware(TRAMA* ptrTrama)
initParametros(ptrTrama,0);
sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",hrddst);
if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
errorLog(modulo,42,FALSE);
return(FALSE);
}
/* Espera señal para comenzar el envío */
+ liberaMemoria(ptrTrama);
recibeFlag(&socket_c,ptrTrama);
/* Envía archivo */
if(!sendArchivo(&socket_c,hrdsrc)){
@@ -1339,6 +1739,8 @@ BOOLEAN InventarioHardware(TRAMA* ptrTrama)
lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_InventarioHardware");
lon+=sprintf(ptrTrama->parametros+lon,"hrd=%s\r",hrddst);
respuestaEjecucionComando(ptrTrama,herror,ids);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
return(TRUE);
}
// ________________________________________________________________________________________________________
@@ -1366,6 +1768,8 @@ BOOLEAN InventarioSoftware(TRAMA* ptrTrama)
muestraMensaje(7,NULL);
InventariandoSoftware(ptrTrama,TRUE,nfn);
respuestaEjecucionComando(ptrTrama,herror,ids);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
muestraMenu();
return(TRUE);
}
@@ -1413,9 +1817,12 @@ BOOLEAN InventariandoSoftware(TRAMA* ptrTrama,BOOLEAN sw,char *nfn)
sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",sftdst);
if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){
errorLog(modulo,42,FALSE);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
return(FALSE);
}
/* Espera señal para comenzar el envío */
+ liberaMemoria(ptrTrama);
if(!recibeFlag(&socket_c,ptrTrama)){
errorLog(modulo,17,FALSE);
}
@@ -1434,6 +1841,8 @@ BOOLEAN InventariandoSoftware(TRAMA* ptrTrama,BOOLEAN sw,char *nfn)
if(!sw)
respuestaEjecucionComando(ptrTrama,herror,"0");
+ liberaMemoria(dsk);
+ liberaMemoria(par);
return(TRUE);
}
// ________________________________________________________________________________________________________
@@ -1450,23 +1859,21 @@ BOOLEAN InventariandoSoftware(TRAMA* ptrTrama,BOOLEAN sw,char *nfn)
BOOLEAN EjecutarScript(TRAMA* ptrTrama)
{
int lon;
- char *nfn,*ids,*scp,msglog[LONSTD];
+ char *nfn,*aux,*ids,*scp,msglog[LONSTD];
char modulo[] = "EjecutarScript()";
if (ndebug>=DEBUG_MAXIMO) {
sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
infoDebug(msglog);
}
- scp=URLDecode(copiaParametro("scp",ptrTrama));
- ids=copiaParametro("ids",ptrTrama);
-
- nfn=copiaParametro("nfn",ptrTrama);
- ids=copiaParametro("ids",ptrTrama);
+ aux=copiaParametro("scp",ptrTrama);
+ scp=URLDecode(aux);
muestraMensaje(8,NULL);
/* Nombre del archivo de script */
char filescript[LONPRM];
sprintf(filescript,"/tmp/_script_%s",IPlocal);
escribeArchivo(filescript,scp);
+ nfn=copiaParametro("nfn",ptrTrama);
sprintf(interface,"%s/%s",pathinterface,nfn);
sprintf(parametros,"%s %s",nfn,filescript);
herror=interfaceAdmin(interface,parametros,NULL);
@@ -1481,7 +1888,14 @@ BOOLEAN EjecutarScript(TRAMA* ptrTrama)
//herror=ejecutarCodigoBash(scp);
initParametros(ptrTrama,0);
lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_EjecutarScript");
+ ids=copiaParametro("ids",ptrTrama);
respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ liberaMemoria(aux);
+ liberaMemoria(scp);
+
return(TRUE);
}
//______________________________________________________________________________________________________
@@ -1514,7 +1928,7 @@ BOOLEAN respuestaEjecucionComando(TRAMA* ptrTrama,int res,char *ids)
else{ // Algún error
lon+=sprintf(ptrTrama->parametros+lon,"res=%s\r","2");
if(res>MAXERRORSCRIPT)
- lon+=sprintf(ptrTrama->parametros+lon,"der=%s (Error de script:%d)\r",tbErroresScripts[MAXERRORSCRIPT],res);// Descripción del error
+ lon+=sprintf(ptrTrama->parametros+lon,"der=%s (Error de script:%d)\r",tbErroresScripts[0],res);// Descripción del error
else
lon+=sprintf(ptrTrama->parametros+lon,"der=%s\r",tbErroresScripts[res]);// Descripción del error
}
@@ -1547,13 +1961,17 @@ BOOLEAN gestionaTrama(TRAMA *ptrTrama)
for (i = 0; i < MAXIMAS_FUNCIONES; i++) { // Recorre funciones que procesan las tramas
res = strcmp(tbfuncionesClient[i].nf, nfn);
if (res == 0) { // Encontrada la función que procesa el mensaje
+ liberaMemoria(nfn);
return(tbfuncionesClient[i].fptr(ptrTrama)); // Invoca la función
}
}
- /* Sólo puede ser un comando personalizado */
+
+ liberaMemoria(nfn);
+
+ /* Sólo puede ser un comando personalizado
if (ptrTrama->tipo==MSG_COMANDO)
return(Comando(ptrTrama));
-
+ */
errorLog(modulo, 18, FALSE);
return (FALSE);
}
@@ -1591,6 +2009,7 @@ BOOLEAN ejecutaArchivo(char* filecmd,TRAMA *ptrTrama)
}
}
}
+ liberaMemoria(buffer);
return(TRUE);
}
//______________________________________________________________________________________________________
@@ -1695,9 +2114,22 @@ int main(int argc, char *argv[])
strcpy(tbfuncionesClient[cf].nf, "CrearImagen");
tbfuncionesClient[cf++].fptr = &CrearImagen;
+ strcpy(tbfuncionesClient[cf].nf, "CrearImagenBasica");
+ tbfuncionesClient[cf++].fptr = &CrearImagenBasica;
+
+ strcpy(tbfuncionesClient[cf].nf, "CrearSoftIncremental");
+ tbfuncionesClient[cf++].fptr = &CrearSoftIncremental;
+
strcpy(tbfuncionesClient[cf].nf, "RestaurarImagen");
tbfuncionesClient[cf++].fptr = &RestaurarImagen;
+ strcpy(tbfuncionesClient[cf].nf, "RestaurarImagenBasica");
+ tbfuncionesClient[cf++].fptr = &RestaurarImagenBasica;
+
+ strcpy(tbfuncionesClient[cf].nf, "RestaurarSoftIncremental");
+ tbfuncionesClient[cf++].fptr = &RestaurarSoftIncremental;
+
+
strcpy(tbfuncionesClient[cf].nf, "Configurar");
tbfuncionesClient[cf++].fptr = &Configurar;
diff --git a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h
index f39df68c..2f2e609c 100644
--- a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h
+++ b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h
@@ -23,12 +23,12 @@
// ________________________________________________________________________________________________________
// Variables globales
// ________________________________________________________________________________________________________
-char idordenador[LONPRM]; // Identificador del ordenador
-char nombreordenador[LONPRM]; // Nombre del ordenador
-char cache[LONPRM]; // Tamaño de la caché
-char idproautoexec[LONPRM]; // Identificador del procedimiento de autoexec
-char idcentro[LONPRM]; // Identificador de la Unidad Organizativa
-char idaula[LONPRM]; // Identificador del aula
+char *idordenador; // Identificador del ordenador
+char *nombreordenador; // Nombre del ordenador
+char *cache; // Tamaño de la caché
+char *idproautoexec; // Identificador del procedimiento de autoexec
+char *idcentro; // Identificador de la Unidad Organizativa
+char *idaula; // Identificador del aula
char IPlocal[LONIP]; // Ip local
char servidoradm[LONPRM]; // Dirección IP del servidor de administración
@@ -56,14 +56,14 @@ MSGFUN tbfuncionesClient[MAXIMAS_FUNCIONES];
// ________________________________________________________________________________________________________
// Tabla de errores de la ejecución de los scripts
// ________________________________________________________________________________________________________
-char* tbErroresScripts[]={"Se han generado errores. No se puede continuar la ejecución de este módulo",\
+char* tbErroresScripts[]={"Se han generado errores desconocidos. No se puede continuar la ejecución de este módulo",\
"001-Formato de ejecución incorrecto.",\
"002-Fichero o dispositivo no encontrado",\
"003-Error en partición de disco",\
"004-Partición o fichero bloqueado",\
"005-Error al crear o restaurar una imagen",\
"006-Sin sistema operativo",\
- "007-Programa o función BOOLEANno ejecutable",\
+ "007-Programa o función BOOLEAN no ejecutable",\
"008-Error en la creación del archivo de eco para consola remota",\
"009-Error en la lectura del archivo temporal de intercambio",\
"010-Error al ejecutar la llamada a la interface de administración",\
@@ -119,7 +119,7 @@ char* tbErroresScripts[]={"Se han generado errores. No se puede continuar la eje
"060-Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER",\
"Error desconocido "
};
- #define MAXERRORSCRIPT 999 // Error máximo cometido
+ #define MAXERRORSCRIPT 60 // Error máximo cometido
// ________________________________________________________________________________________________________
// Prototipo de funciones
// ________________________________________________________________________________________________________
@@ -151,6 +151,9 @@ BOOLEAN Apagar(TRAMA *);
BOOLEAN Reiniciar(TRAMA *);
BOOLEAN IniciarSesion(TRAMA *);
BOOLEAN CrearImagen(TRAMA *);
+BOOLEAN CrearImagenBasica(TRAMA *);
+BOOLEAN CrearSoftIncremental(TRAMA*);
+
BOOLEAN InventarioHardware(TRAMA *);
BOOLEAN InventariandoSoftware(TRAMA *,BOOLEAN,char*);
BOOLEAN EjecutarScript(TRAMA *);
diff --git a/admin/Sources/Includes/ogAdmLib.c b/admin/Sources/Includes/ogAdmLib.c
index dbb41762..cfb80462 100644
--- a/admin/Sources/Includes/ogAdmLib.c
+++ b/admin/Sources/Includes/ogAdmLib.c
@@ -289,8 +289,9 @@ char* ampliaMemoria(char* ptr,int lon)
//______________________________________________________________________________________________________
void liberaMemoria(void* ptr)
{
- if(ptr)
+ if(ptr){
free (ptr);
+ }
}
// ________________________________________________________________________________________________________
// Función: splitCadena
@@ -598,6 +599,7 @@ BOOLEAN mandaTrama(SOCKET *sock, TRAMA* ptrTrama)
{
int lonprm;
char *buffer,hlonprm[LONHEXPRM+1];
+ BOOLEAN res;
lonprm=strlen(ptrTrama->parametros);
ptrTrama->parametros=encriptar(ptrTrama->parametros,&lonprm); // Encripta los parámetros
@@ -608,10 +610,10 @@ BOOLEAN mandaTrama(SOCKET *sock, TRAMA* ptrTrama)
return(FALSE);
memcpy(buffer,ptrTrama,LONGITUD_CABECERATRAMA); // Copia cabecera de trama
memcpy(&buffer[LONGITUD_CABECERATRAMA],hlonprm,LONHEXPRM); // Copia longitud de la trama
- memcpy(&buffer[LONGITUD_CABECERATRAMA+LONHEXPRM],ptrTrama->parametros,lonprm); // Copia parametros encriptados
- if(!sendData(sock,buffer,LONGITUD_CABECERATRAMA+LONHEXPRM+lonprm))
- return (FALSE);
- return(TRUE);
+ memcpy(&buffer[LONGITUD_CABECERATRAMA+LONHEXPRM],ptrTrama->parametros,lonprm);
+ res=sendData(sock,buffer,LONGITUD_CABECERATRAMA+LONHEXPRM+lonprm);
+ liberaMemoria(buffer);
+ return (res);
}
// ________________________________________________________________________________________________________
// Función: sendData
@@ -659,7 +661,7 @@ BOOLEAN sendData(SOCKET *sock, char* datos,int lon)
TRAMA* recibeTrama(SOCKET *sock)
{
int ret,lon,lSize;
- char *buffer,bloque[LONBLK],*hlonprm;
+ char *buffer,*bufferd,bloque[LONBLK],*hlonprm;
TRAMA * ptrTrama;
lon=lSize=0;
@@ -671,10 +673,10 @@ TRAMA* recibeTrama(SOCKET *sock)
if (strncmp(bloque, "@JMMLCAMDJ_MCDJ",15)!=0)
return(NULL); // No se reconoce la trama
hlonprm=reservaMemoria(LONHEXPRM+1);
- if(!hlonprm)
- return(NULL);
+ if(!hlonprm) return(NULL);
memcpy(hlonprm,&bloque[LONGITUD_CABECERATRAMA],LONHEXPRM);
lSize=strtol(hlonprm,NULL,16); // Longitud total de la trama con los parametros encriptados
+ liberaMemoria(hlonprm);
buffer=(char*)reservaMemoria(lSize); // Toma memoria para la trama completa
if(!buffer)
return(NULL);
@@ -687,13 +689,13 @@ TRAMA* recibeTrama(SOCKET *sock)
}while(lonparametros,buffer,lon);
+ memcpy(ptrTrama->parametros,bufferd,lon);
+ liberaMemoria((char*)buffer);
ptrTrama->lonprm=lon; // Almacena longitud de los parámetros ya desencriptados
return(ptrTrama);
}
diff --git a/admin/Sources/Includes/ogAdmLib.h b/admin/Sources/Includes/ogAdmLib.h
index 748fe59b..c613e87e 100644
--- a/admin/Sources/Includes/ogAdmLib.h
+++ b/admin/Sources/Includes/ogAdmLib.h
@@ -228,7 +228,10 @@ const char* tbErrores[]={"Se han generado errores. No se puede continuar la ejec
"090-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMSG",\
"091-Ha habido algún problema al enviar un mensaje de tipo petición al Servidor",\
"092-Error en el fichero de configuración del programa. No se ha definido el parámetro IPLOCAL",\
- "093-No se puede caragar la libraria Windows para trabajar con sockets",\
+ "093-No se puede cargar la librería Windows para trabajar con sockets",\
+ "094-Ha habido algún problerma al procesar la actualización después de crear una imagen",\
+ "095-Ha habido algún problerma al procesar la actualización después de restaurar una imagen",\
+ "096-Ha habido algún problerma al procesar la actualización después de crear un software incremental",\
};
// ________________________________________________________________________________________________________
diff --git a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp
index 59f42142..cf40ed14 100644
--- a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp
+++ b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp
@@ -148,7 +148,7 @@ BOOLEAN gestionaTrama(SOCKET *socket_c)
if (res == 0) { // Encontrada la función que procesa el mensaje
liberaMemoria(nfn);
res=tbfuncionesServer[i].fptr(socket_c, ptrTrama); // Invoca la función
- liberaMemoria(ptrTrama);
+ liberaMemoria((char*)ptrTrama);
return(res);
}
}
@@ -1364,20 +1364,27 @@ BOOLEAN respuestaConsola(SOCKET *socket_c, TRAMA *ptrTrama, int res) {
// FALSE: En caso de ocurrir algún error
// ________________________________________________________________________________________________________
BOOLEAN Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) {
- char *mac, msglog[LONSTD];
+ char *iph,*mac,*mar, msglog[LONSTD];
+ BOOLEAN res;
char modulo[] = "Arrancar()";
+ iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP
mac = copiaParametro("mac",ptrTrama); // Toma dirección/es MAC
- if (!Levanta(mac)) {
- liberaMemoria(mac);
+ mar = copiaParametro("mar",ptrTrama); // Método de arranque (Broadcast o Unicast)
+
+ res=Levanta(iph,mac,mar);
+
+ liberaMemoria(iph);
+ liberaMemoria(mac);
+ liberaMemoria(mar);
+
+ if(!res){
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
errorInfo(modulo, msglog);
respuestaConsola(socket_c, ptrTrama, FALSE);
return (FALSE);
}
- liberaMemoria(mac);
-
if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) {
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
errorInfo(modulo, msglog);
@@ -1393,13 +1400,16 @@ BOOLEAN Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) {
// Descripción:
// Enciende ordenadores a través de la red cuyas macs se pasan como parámetro
// Parámetros:
+// - iph: Cadena de direcciones ip separadas por ";"
// - mac: Cadena de direcciones mac separadas por ";"
+// - mar: Método de arranque (1=Broadcast, 2=Unicast)
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
// ________________________________________________________________________________________________________
-BOOLEAN Levanta(char *mac) {
- char *ptrMacs[MAXIMOS_CLIENTES];
+BOOLEAN Levanta(char* iph,char *mac, char* mar)
+{
+ char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES];
int i, lon, res;
SOCKET s;
BOOLEAN bOpt;
@@ -1426,9 +1436,10 @@ BOOLEAN Levanta(char *mac) {
exit(EXIT_FAILURE);
}
/* fin creación de socket */
+ lon = splitCadena(ptrIP, iph, ';');
lon = splitCadena(ptrMacs, mac, ';');
for (i = 0; i < lon; i++) {
- if (!WakeUp(&s, ptrMacs[i])) {
+ if (!WakeUp(&s,ptrIP[i],ptrMacs[i],mar)) {
errorLog(modulo, 49, TRUE);
close(s);
return (FALSE);
@@ -1444,12 +1455,16 @@ BOOLEAN Levanta(char *mac) {
// Enciende el ordenador cuya MAC se pasa como parámetro
// Parámetros:
// - s : Socket para enviar trama magic packet
+// - iph : Cadena con la dirección ip
// - mac : Cadena con la dirección mac en formato XXXXXXXXXXXX
+// - mar: Método de arranque (1=Broadcast, 2=Unicast)
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
//_____________________________________________________________________________________________________________
-BOOLEAN WakeUp(SOCKET *s, char *mac) {
+//
+BOOLEAN WakeUp(SOCKET *s, char* iph,char *mac,char* mar)
+{
int i, res;
char HDaddress_bin[6];
struct {
@@ -1470,7 +1485,10 @@ BOOLEAN WakeUp(SOCKET *s, char *mac) {
/* Creación de socket del cliente que recibe la trama magic packet */
WakeUpCliente.sin_family = AF_INET;
WakeUpCliente.sin_port = htons((short) PUERTO_WAKEUP);
- WakeUpCliente.sin_addr.s_addr = htonl(INADDR_BROADCAST); // Para hacerlo con broadcast
+ if(atoi(mar)==2)
+ WakeUpCliente.sin_addr.s_addr = inet_addr(iph); // Para hacerlo con IP
+ else
+ WakeUpCliente.sin_addr.s_addr = htonl(INADDR_BROADCAST); // Para hacerlo con broadcast
res = sendto(*s, (char *) &Trama_WakeUp, sizeof(Trama_WakeUp), 0,
(sockaddr *) &WakeUpCliente, sizeof(WakeUpCliente));
@@ -3345,7 +3363,7 @@ BOOLEAN recibeArchivo(SOCKET *socket_c, TRAMA *ptrTrama) {
BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama)
{
char sqlstr[LONSQL], msglog[LONSTD];
- char *idp,iph[LONIP],mac[LONMAC];
+ char *idp,*mar,iph[LONIP],mac[LONMAC];
Database db;
Table tbl;
int idx,idcomando;
@@ -3398,11 +3416,14 @@ BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama)
errorInfo(modulo, msglog);
return (FALSE);
}
- if (!Levanta(mac)) {
+ mar = copiaParametro("mar",ptrTrama); // Toma modo de arranque si el comando es Arrancar
+ if (!Levanta(iph,mac,mar)) {
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
errorInfo(modulo, msglog);
+ liberaMemoria(mar);
return (FALSE);
}
+ liberaMemoria(mar);
}
if (clienteDisponible(iph, &idx)) { // Si el cliente puede recibir comandos
strcpy(tbsockets[idx].estado, CLIENTE_OCUPADO); // Actualiza el estado del cliente
diff --git a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h
index 4569ad74..bc887d08 100644
--- a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h
+++ b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h
@@ -84,8 +84,8 @@ BOOLEAN Comando(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_Comando(SOCKET *,TRAMA *);
BOOLEAN Arrancar(SOCKET *,TRAMA *);
-BOOLEAN Levanta(char*);
-BOOLEAN WakeUp(SOCKET *,char *);
+BOOLEAN Levanta(char*,char*,char*);
+BOOLEAN WakeUp(SOCKET *,char*,char*,char*);
void PasaHexBin(char *,char *);
BOOLEAN RESPUESTA_Arrancar(SOCKET *,TRAMA*);
BOOLEAN Apagar(SOCKET *,TRAMA *);
diff --git a/admin/WebConsole/comandos/Arrancar.php b/admin/WebConsole/comandos/Arrancar.php
index ecb066e0..a903840a 100644
--- a/admin/WebConsole/comandos/Arrancar.php
+++ b/admin/WebConsole/comandos/Arrancar.php
@@ -1,4 +1,4 @@
-
+'?>
-
+'.$TbMsg[5].' ';
//________________________________________________________________________________________________________
//
include_once("./includes/FiltradoAmbito.php");
+?>
+
Datos suministrar echo $TbMsg[7] ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Administracin web de aulas
+
+
+
+
+
+'?>
+'?>
+
+
+
+
+
echo $TbMsg[0] ?>
+
+ echo $TbMsg[1] ?>
+
+
+
+
echo $TbMsg[2] ?>
+ echo '
'.$nombreordenador.'
';?>
+
+
+
+
echo $TbMsg[3] ?>
+ echo '
'.$ip.'
';?>
+
+
+
echo $TbMsg[4] ?>
+ echo '
'.$mac.'
';?>
+
+
+
+
+
echo $TbMsg[6] ?>
+
+
+//---------------------------------------------------------------------------------------------
+// Pie
+//----------------------------------------------------------------------------------------------
+ include_once("./includes/formularioacciones.php");
+ include_once("./includes/opcionesacciones.php");
+?>
+
+
+
+//*********************************************************************************************
+// FUNCIONES
+//*********************************************************************************************
+
+/*----------------------------------------------------------------------------------------------
+ Recupera los datos de un ordenador
+ Parametros:
+ - ido: El identificador del ordenador
+----------------------------------------------------------------------------------------------*/
+function tomaPropiedades($cmd,$ido)
+{
+ global $nombreordenador;
+ global $ip;
+ global $mac;
+ global $cmd;
+
+ $rs=new Recordset;
+ $cmd->texto="SELECT nombreordenador,ip,mac,idperfilhard,idrepositorio
+ FROM ordenadores
+ WHERE idordenador='".$ido."'";
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return(false); // Error al abrir recordset
+ $rs->Primero();
+ if (!$rs->EOF){
+ $nombreordenador=$rs->campos["nombreordenador"];
+ $ip=$rs->campos["ip"];
+ $mac=$rs->campos["mac"];global $idcentro;
+ $rs->Cerrar();
+ return(true);
+ }
+ else
+ return(false);
+}
+/*----------------------------------------------------------------------------------------------
+ Dibuja una tabla con los datos de particiones y parametros a elegir
+
+ Parametros:
+ - idordenador: El identificador del ordenador
+----------------------------------------------------------------------------------------------*/
+function tablaConfiguraciones($idordenador)
+{
+ global $idcentro;
+ global $TbMsg;
+ global $cmd;
+
+ $tablaHtml="";
+ $cmd->texto="SELECT DISTINCT ordenadores_particiones.numpar, ordenadores_particiones.idnombreso, nombresos.nombreso,
+ ordenadores_particiones.idimagen, ordenadores_particiones.codpar,
+ tipospar.clonable, perfilessoft.idperfilsoft,
+ nombresos.idnombreso, nombresos.nombreso
+ FROM ordenadores_particiones
+ INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
+ LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
+ LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
+ WHERE ordenadores_particiones.idordenador=$idordenador
+ ORDER BY ordenadores_particiones.numpar";
+ //echo $cmd->texto;
+ $rs=new Recordset;
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
+ $rs->Primero();
+ $tbPAR="";
+ while (!$rs->EOF){
+ //$swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]) && !empty($rs->campos["idperfilsoft"]);
+ $sw=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]);
+ if($sw){// Una particin es clonable si es cierta esta variable
+ $tbPAR.=$rs->campos["numpar"].";"; // Cadena con las particiones a procesar
+ $tablaHtml.='
';
+ $tablaHtml.='
'.$rs->campos["numpar"].'
'; // Nmero de particin
+ $tablaHtml.='
'.$rs->campos["nombreso"].'
'; // Nombre sistema operativo
+ $tablaHtml.='
'.HTMLSELECT_imagenes($rs->campos["idimagen"]).'
';
+ $tablaHtml.='
';
+ }
+ $rs->Siguiente();
+ }
+ $rs->Cerrar();
+ echo $tablaHtml;
+ return($tbPAR);
+}
+/*----------------------------------------------------------------------------------------------
+ Dibuja una tabla con las opciones generales
+----------------------------------------------------------------------------------------------*/
+function opcionesAdicionales()
+{
+ global $TbMsg;
+
+ $tablaHtml.='
';
+ $tablaHtml.='
'.$TbMsg[12].'
';
+ $tablaHtml.='
+
'.$TbMsg[13].'
+
'; // Borrar imagen previamente del servidor
+ $tablaHtml.='
+
'.$TbMsg[14].'
+
'; // Copiar adems la imagen a la cach
+ $tablaHtml.='
+
'.$TbMsg[15].'
+
'; // Borrar imagen de la cach previamente antes de copiarla
+ $tablaHtml.='
+
'.$TbMsg[16].'
+
'; // No borrar archivos en destino
+ $tablaHtml.='
';
+ $tablaHtml.='
';
+ echo $tablaHtml;
+}
+/*----------------------------------------------------------------------------------------------
+ Crea desplegable de imagenes
+----------------------------------------------------------------------------------------------*/
+function HTMLSELECT_imagenes($idimagen)
+{
+ global $cmd;
+ global $IMAGENES_BASICAS;
+ global $idcentro;
+
+ $SelectHtml="";
+ $cmd->texto="SELECT imagenes.idimagen,imagenes.descripcion,imagenes.nombreca,imagenes.ruta,
+ repositorios.ip,repositorios.nombrerepositorio
+ FROM imagenes
+ INNER JOIN repositorios on imagenes.idrepositorio = repositorios.idrepositorio
+ WHERE tipo=".$IMAGENES_BASICAS."
+ AND imagenes.idcentro=".$idcentro;
+
+ //echo $cmd->texto;
+ $rs=new Recordset;
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return("");
+ $rs->Primero();
+ $SelectHtml.= '';
+ return($SelectHtml);
+}
+?>
+
diff --git a/admin/WebConsole/comandos/CrearSoftIncremental.php b/admin/WebConsole/comandos/CrearSoftIncremental.php
new file mode 100644
index 00000000..92729bdc
--- /dev/null
+++ b/admin/WebConsole/comandos/CrearSoftIncremental.php
@@ -0,0 +1,251 @@
+
+// *************************************************************************************************************************************************
+// Aplicacin WEB: ogAdmWebCon
+// Autor: Jos Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
+// Fecha Creacin: Ao 2012
+// Fecha ltima modificacin: Noviembre-2012
+// Nombre del fichero: CrearImagenBas.php
+// Descripcin :
+// Implementacin del comando "CrearImagenBas.php"
+// *************************************************************************************************************************************************
+include_once("../includes/ctrlacc.php");
+include_once("../clases/AdoPhp.php");
+include_once("../includes/constantes.php");
+include_once("../includes/comunes.php");
+include_once("../includes/CreaComando.php");
+include_once("../includes/HTMLSELECT.php");
+include_once("../includes/HTMLCTESELECT.php");
+include_once("../idiomas/php/".$idioma."/comandos/crearsoftincremental_".$idioma.".php");
+include_once("../idiomas/php/".$idioma."/comandos/opcionesacciones_".$idioma.".php");
+//________________________________________________________________________________________________________
+//
+include_once("./includes/capturaacciones.php");
+//________________________________________________________________________________________________________
+//
+$cmd=CreaComando($cadenaconexion);
+if (!$cmd)
+ Header('Location: '.$pagerror.'?herror=2'); // Error de conexin con servidor B.D.
+//________________________________________________________________________________________________________
+//
+$resul=tomaPropiedades($cmd,$idambito);
+if (!$resul){
+ Header('Location: '.$pagerror.'?herror=3'); // Error de recuperacin de datos.
+}
+//________________________________________________________________________________________________________
+?>
+
+Administracin web de aulas
+
+
+
+
+
+ echo ''?>
+ echo ''?>
+
+
+
+
+
echo $TbMsg[0] ?>
+
+ echo $TbMsg[1] ?>
+
+
+
+
echo $TbMsg[2] ?>
+ echo '
'.$nombreordenador.'
';?>
+
+
+
+
echo $TbMsg[3] ?>
+ echo '
'.$ip.'
';?>
+
+
+
echo $TbMsg[4] ?>
+ echo '
'.$mac.'
';?>
+
+
+
+
+
echo $TbMsg[6] ?>
+
+
+//---------------------------------------------------------------------------------------------
+// Pie
+//----------------------------------------------------------------------------------------------
+ include_once("./includes/formularioacciones.php");
+ include_once("./includes/opcionesacciones.php");
+?>
+
+
+
+//*********************************************************************************************
+// FUNCIONES
+//*********************************************************************************************
+
+/*----------------------------------------------------------------------------------------------
+ Recupera los datos de un ordenador
+ Parametros:
+ - ido: El identificador del ordenador
+----------------------------------------------------------------------------------------------*/
+function tomaPropiedades($cmd,$ido)
+{
+ global $nombreordenador;
+ global $ip;
+ global $mac;
+ global $cmd;
+
+ $rs=new Recordset;
+ $cmd->texto="SELECT nombreordenador, ip, mac, idperfilhard, idrepositorio
+ FROM ordenadores
+ WHERE idordenador='".$ido."'";
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return(false); // Error al abrir recordset
+ $rs->Primero();
+ if (!$rs->EOF){
+ $nombreordenador=$rs->campos["nombreordenador"];
+ $ip=$rs->campos["ip"];
+ $mac=$rs->campos["mac"];global $idcentro;
+ $rs->Cerrar();
+ return(true);
+ }
+ else
+ return(false);
+}
+/*----------------------------------------------------------------------------------------------
+ Dibuja una tabla con los datos de particiones y parametros a elegir
+
+ Parametros:
+ - idordenador: El identificador del ordenador
+----------------------------------------------------------------------------------------------*/
+function tablaConfiguraciones($idordenador)
+{
+ global $idcentro;
+ global $TbMsg;
+ global $cmd;
+
+ $tablaHtml="";
+
+ $cmd->texto="SELECT DISTINCT ordenadores_particiones.numpar, ordenadores_particiones.idnombreso,
+ nombresos.nombreso, ordenadores_particiones.idimagen,
+ tipospar.clonable, perfilessoft.idperfilsoft,
+ nombresos.idnombreso, nombresos.nombreso
+ FROM ordenadores_particiones
+ INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
+ LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
+ LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
+ WHERE ordenadores_particiones.idordenador=$idordenador
+ ORDER BY ordenadores_particiones.numpar";
+ //echo $cmd->texto;
+ $rs=new Recordset;
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
+ $rs->Primero();
+ $tbPAR="";
+ while (!$rs->EOF){
+ //$swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]) && !empty($rs->campos["idperfilsoft"]);
+ $sw=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]);
+ if($sw){// Una particin es clonable si es cierta esta variable
+ $tbPAR.=$rs->campos["numpar"].";"; // Cadena con las particiones a procesar
+ $tablaHtml.='
';
+ $tablaHtml.='
'.$rs->campos["numpar"].'
'; // Nmero de particin
+ $tablaHtml.='
'.$rs->campos["nombreso"].'
'; // Nombre sistema operativo
+ $tablaHtml.='
'.HTMLSELECT_imagenes($rs->campos["idimagen"]).'
';
+ $tablaHtml.='
';
+ }
+ $rs->Siguiente();
+ }
+ $rs->Cerrar();
+ echo $tablaHtml;
+ return($tbPAR);
+}
+/*----------------------------------------------------------------------------------------------
+ Dibuja una tabla con las opciones generales
+----------------------------------------------------------------------------------------------*/
+function opcionesAdicionales()
+{
+ global $TbMsg;
+
+ $tablaHtml.='
';
+ $tablaHtml.='
'.$TbMsg[11].'
';
+ $tablaHtml.='
+
'.$TbMsg[13].'
+
'; // Borrar imagen del servidor o borrar particin previamente
+ $tablaHtml.='
+
'.$TbMsg[14].'
+
'; // Copiar adems la imagen a la cach
+ $tablaHtml.='
+
'.$TbMsg[15].'
+
'; // Borrar imagen de la cach previamente antes de copiarla
+ $tablaHtml.='
+
'.$TbMsg[16].'
+
'; // No borrar archivos en destino
+ $tablaHtml.='
';
+ $tablaHtml.='
';
+ echo $tablaHtml;
+}
+/*----------------------------------------------------------------------------------------------
+ Crea desplegable de imagenes
+----------------------------------------------------------------------------------------------*/
+function HTMLSELECT_imagenes($idimagen)
+{
+ global $cmd;
+ global $idcentro;
+ global $IMAGENES_INCREMENTALES;
+
+ $SelectHtml="";
+ $cmd->texto="SELECT imagenes.idimagen as idimageninc,imagenes.descripcion,imagenes.nombreca as nombreincca,
+ imagesbas.nombreca,imagesbas.idimagen,imagesbas.ruta,
+ repositorios.ip,repositorios.nombrerepositorio
+ FROM imagenes
+ INNER JOIN imagenes as imagesbas on imagesbas.idimagen = imagenes.imagenid
+ INNER JOIN repositorios on imagesbas.idrepositorio = repositorios.idrepositorio
+ WHERE imagenes.tipo=".$IMAGENES_INCREMENTALES."
+ AND imagesbas.idcentro=".$idcentro;
+ //echo $cmd->texto;
+ $rs=new Recordset;
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return("");
+ $rs->Primero();
+ $SelectHtml.= '';
+ return($SelectHtml);
+}
+?>
+
diff --git a/admin/WebConsole/comandos/RestaurarImagenBasica.php b/admin/WebConsole/comandos/RestaurarImagenBasica.php
new file mode 100644
index 00000000..ab7ef65f
--- /dev/null
+++ b/admin/WebConsole/comandos/RestaurarImagenBasica.php
@@ -0,0 +1,278 @@
+
+// ********************************************************************************************************
+// Aplicacin WEB: ogAdmWebCon
+// Autor: Jos Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
+// Fecha Creacin: Ao 2012
+// Fecha ltima modificacin: Noviembre-2012
+// Nombre del fichero: RestaurarImagenBasica.php
+// Descripcin :
+// Implementacin del comando "RestaurarImagenBsica"
+// ********************************************************************************************************
+include_once("../includes/ctrlacc.php");
+include_once("../clases/AdoPhp.php");
+include_once("../includes/constantes.php");
+include_once("../includes/comunes.php");
+include_once("../includes/CreaComando.php");
+include_once("../includes/HTMLSELECT.php");
+include_once("../includes/HTMLCTESELECT.php");
+include_once("../includes/TomaDato.php");
+include_once("../includes/ConfiguracionesParticiones.php");
+include_once("../includes/RecopilaIpesMacs.php");
+include_once("../idiomas/php/".$idioma."/comandos/restaurarimagenbasica_".$idioma.".php");
+include_once("../idiomas/php/".$idioma."/comandos/opcionesacciones_".$idioma.".php");
+include_once("./includes/capturaacciones.php");
+//________________________________________________________________________________________________________
+//
+$cmd=CreaComando($cadenaconexion);
+if (!$cmd)
+ Header('Location: '.$pagerror.'?herror=2'); // Error de conexin con servidor B.D.
+//________________________________________________________________________________________________________
+//
+//
+// Captura parmetros
+//________________________________________________________________________________________________________
+//
+
+$ambito=0;
+$idambito=0;
+
+// Agrupamiento por defecto
+
+$fk_sysFi=0;
+$fk_tamano=0;
+$fk_nombreSO=0;
+
+if (isset($_GET["idambito"])) $idambito=$_GET["idambito"];
+if (isset($_GET["ambito"])) $ambito=$_GET["ambito"];
+
+if (isset($_POST["idambito"])) $idambito=$_POST["idambito"];
+if (isset($_POST["ambito"])) $ambito=$_POST["ambito"];
+
+if (isset($_POST["fk_sysFi"])) $fk_sysFi=$_POST["fk_sysFi"];
+if (isset($_POST["fk_tamano"])) $fk_tamano=$_POST["fk_tamano"];
+if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"];
+
+//________________________________________________________________________________________________________
+//
+?>
+
+Administracin web de aulas
+
+
+
+
+
+
+
+
+ echo ''?>
+ echo ''?>
+
+
+
+//________________________________________________________________________________________________________
+//
+//
+// Cabecera
+//________________________________________________________________________________________________________
+//
+//
+ echo '
';
+ if($ambito!=$AMBITO_ORDENADORES){
+ $cadenaid="";
+ $cadenaip="";
+ $cadenamac="";
+ RecopilaIpesMacs($cmd,$ambito,$idambito);
+ ?>
+
+
+ }
+ $sws=$fk_sysFi | $fk_tamano | $fk_nombreSO;
+ pintaConfiguraciones($cmd,$idambito,$ambito,9,$sws,false);
+ echo " ";
+ opcionesAdicionales();
+//________________________________________________________________________________________________________
+//
+ include_once("./includes/formularioacciones.php");
+ include_once("./includes/opcionesacciones.php");
+//________________________________________________________________________________________________________
+//
+?>
+
+
+
+
+//*********************************************************************************************
+// FUNCIONES
+//*********************************************************************************************
+//
+// Descripcin:
+// (Esta funcin es llamada por pintaConfiguraciones que est incluida en ConfiguracionesParticiones.php)
+// Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador,
+// grupo de ordenadores o aula
+// Parametros:
+// $configuraciones: Cadena con las configuraciones de particioners del mbito. El formato
+// sera una secuencia de cadenas del tipo "clave de configuracin" separados por "@"
+// Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0
+// Devuelve:
+// El cdigo html de la tabla
+//________________________________________________________________________________________________________
+//
+//
+function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito)
+{
+ global $tbKeys; // Tabla contenedora de claves de configuracin
+ global $conKeys; // Contador de claves de configuracin
+ global $TbMsg;
+ global $_SESSION;
+ $colums=8;
+ echo '
';
+ echo '
';
+ echo '
'.$TbMsg[8].'
';
+ echo '
'.$TbMsg[24].'
';
+ echo '
'.$TbMsg[31].'
';
+ echo '
'.$TbMsg[27].'
';
+ echo '
'.$TbMsg[22].'
';
+ echo '
'.$TbMsg[10].'
';
+ echo '
'.$TbMsg[16].'
';
+ echo '
';
+
+ $auxCfg=split("@",$configuraciones); // Crea lista de particiones
+ for($i=0;$i'.chr(13);
+ $icp=$cc."_".$tbKeys[$k]["numpar"]; // Identificador de la configuracin-particin
+ echo '