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

remotes/github/debian-pkg
alonso 2010-10-23 09:34:04 +00:00
parent 550b680d17
commit 3ec149cb19
814 changed files with 58167 additions and 0 deletions

View File

@ -0,0 +1,8 @@
-- Cambios para gestión de Multicast
ALTER TABLE `ordenadores`
ADD COLUMN `modomul` TINYINT(4) NOT NULL,
ADD COLUMN `ipmul` VARCHAR(16) NOT NULL,
ADD COLUMN `pormul` INT(11) NOT NULL,
ADD COLUMN `velmul` SMALLINT(6) NOT NULL;

View File

@ -0,0 +1,915 @@
-- phpMyAdmin SQL Dump
-- version 3.2.2.1deb1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 20-09-2010 a las 22:43:50
-- Versión del servidor: 5.1.37
-- Versión de PHP: 5.2.10-2ubuntu6.4
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de datos: `ogAdmBD`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `acciones`
--
CREATE TABLE IF NOT EXISTS `acciones` (
`idaccion` int(11) NOT NULL AUTO_INCREMENT,
`tipoaccion` smallint(6) NOT NULL,
`idtipoaccion` int(11) NOT NULL,
`descriaccion` varchar(250) NOT NULL,
`idordenador` int(11) NOT NULL,
`ip` varchar(50) NOT NULL,
`sesion` int(11) NOT NULL,
`idcomando` int(11) NOT NULL,
`parametros` text,
`fechahorareg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`fechahorafin` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`estado` tinyint(1) NOT NULL DEFAULT '0',
`resultado` tinyint(1) NOT NULL DEFAULT '0',
`descrinotificacion` varchar(256) DEFAULT NULL,
`ambito` smallint(6) NOT NULL DEFAULT '0',
`idambito` int(11) NOT NULL DEFAULT '0',
`restrambito` text NOT NULL,
`idprocedimiento` int(11) NOT NULL DEFAULT '0',
`idtarea` int(11) NOT NULL DEFAULT '0',
`idcentro` int(11) NOT NULL DEFAULT '0',
`idprogramacion` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`idaccion`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `acciones_menus`
--
CREATE TABLE IF NOT EXISTS `acciones_menus` (
`idaccionmenu` int(11) NOT NULL AUTO_INCREMENT,
`tipoaccion` tinyint(4) NOT NULL DEFAULT '0',
`idtipoaccion` int(11) NOT NULL DEFAULT '0',
`idmenu` int(11) NOT NULL DEFAULT '0',
`tipoitem` tinyint(4) DEFAULT NULL,
`idurlimg` int(11) DEFAULT NULL,
`descripitem` varchar(250) DEFAULT NULL,
`orden` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`idaccionmenu`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `administradores_centros`
--
CREATE TABLE IF NOT EXISTS `administradores_centros` (
`idadministradorcentro` int(11) NOT NULL AUTO_INCREMENT,
`idusuario` int(11) NOT NULL DEFAULT '0',
`idcentro` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`idadministradorcentro`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `aulas`
--
CREATE TABLE IF NOT EXISTS `aulas` (
`idaula` int(11) NOT NULL AUTO_INCREMENT,
`nombreaula` varchar(100) NOT NULL DEFAULT '',
`idcentro` int(11) NOT NULL DEFAULT '0',
`urlfoto` varchar(250) DEFAULT NULL,
`cuadro_y` char(3) DEFAULT NULL,
`cuadro_x` char(3) DEFAULT NULL,
`cagnon` tinyint(1) DEFAULT NULL,
`pizarra` tinyint(1) DEFAULT NULL,
`grupoid` int(11) DEFAULT NULL,
`ubicacion` varchar(255) DEFAULT NULL,
`comentarios` text,
`puestos` tinyint(4) DEFAULT NULL,
`horaresevini` tinyint(4) DEFAULT NULL,
`horaresevfin` tinyint(4) DEFAULT NULL,
`modomul` tinyint(4) NOT NULL,
`ipmul` varchar(16) NOT NULL,
`pormul` int(11) NOT NULL,
`velmul` smallint(6) NOT NULL,
PRIMARY KEY (`idaula`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `campus`
--
CREATE TABLE IF NOT EXISTS `campus` (
`idcampus` int(11) NOT NULL AUTO_INCREMENT,
`nombrecampus` varchar(100) NOT NULL DEFAULT '',
`iduniversidad` int(11) DEFAULT NULL,
`urlmapa` varchar(255) DEFAULT NULL,
`cuadro_y` tinyint(3) DEFAULT NULL,
`cuadro_x` tinyint(3) DEFAULT NULL,
PRIMARY KEY (`idcampus`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Volcar la base de datos para la tabla `campus`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `centros`
--
CREATE TABLE IF NOT EXISTS `centros` (
`idcentro` int(11) NOT NULL AUTO_INCREMENT,
`nombrecentro` varchar(100) NOT NULL DEFAULT '',
`identidad` int(11) DEFAULT NULL,
`comentarios` text,
PRIMARY KEY (`idcentro`)
) 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');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `comandos`
--
CREATE TABLE IF NOT EXISTS `comandos` (
`idcomando` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`pagina` varchar(256) NOT NULL,
`gestor` varchar(256) NOT NULL,
`funcion` varchar(64) NOT NULL,
`urlimg` varchar(250) DEFAULT NULL,
`aplicambito` tinyint(4) DEFAULT NULL,
`visuparametros` varchar(250) DEFAULT NULL,
`parametros` varchar(250) DEFAULT NULL,
`comentarios` text,
`activo` tinyint(1) NOT NULL,
PRIMARY KEY (`idcomando`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Volcar la base de datos para la tabla `comandos`
--
INSERT INTO `comandos` (`idcomando`, `descripcion`, `pagina`, `gestor`, `funcion`, `urlimg`, `aplicambito`, `visuparametros`, `parametros`, `comentarios`, `activo`) VALUES
(1, 'Arrancar', '../comandos/Arrancar.php', '../comandos/gestores/gestor_Comandos.php', 'Arrancar', '', 31, '', 'nfn;iph;mac', '', 1),
(2, 'Apagar', '../comandos/Apagar.php', '../comandos/gestores/gestor_Comandos.php', 'Apagar', '', 31, '', 'nfn;iph;mac', '', 1),
(3, 'Restaurar Imagen', '../comandos/RestaurarImagen.php', '../comandos/gestores/gestor_Comandos.php', 'RestaurarImagen', '', 28, 'dsk;par;idi;nci;ipr;ptc', 'nfn;iph;mac;dsk;par;idi;nci;ipr;ifs;ptc', '', 1),
(4, 'Crear Imagen', '../comandos/CrearImagen.php', '../comandos/gestores/gestor_Comandos.php', 'CrearImagen', '', 16, 'dsk;par;idi;nci;ipr;cpt', 'nfn;iph;mac;dsk;par;idi;nci;ipr;cpt;', '', 1),
(5, 'Reiniciar', '../comandos/Reiniciar.php', '../comandos/gestores/gestor_Comandos.php', 'Reiniciar', '', 31, '', 'nfn;iph;mac;', '', 1),
(6, 'Inventario Hardware', '../comandos/InventarioHardware.php', '../comandos/gestores/gestor_Comandos.php', 'InventarioHardware', '', 16, '', 'nfn;iph;mac;', '', 1),
(7, 'Inventario Software', '../comandos/InventarioSoftware.php', '../comandos/gestores/gestor_Comandos.php', 'InventarioSoftware', '', 16, 'par', 'nfn;iph;mac;par', '', 1),
(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', '', 1);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `entidades`
--
CREATE TABLE IF NOT EXISTS `entidades` (
`identidad` int(11) NOT NULL AUTO_INCREMENT,
`nombreentidad` varchar(200) NOT NULL DEFAULT '',
`comentarios` text,
`iduniversidad` int(11) DEFAULT NULL,
`grupoid` int(11) DEFAULT NULL,
PRIMARY KEY (`identidad`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `entidades`
--
INSERT INTO `entidades` (`identidad`, `nombreentidad`, `comentarios`, `iduniversidad`, `grupoid`) VALUES
(1, 'Entidad (Default)', 'Esta Entidad se crea automáticamente en el proceso de instalación de OpenGNSys', 1, 0);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `entornos`
--
CREATE TABLE IF NOT EXISTS `entornos` (
`identorno` int(11) NOT NULL AUTO_INCREMENT,
`ipserveradm` varchar(50) NOT NULL,
`portserveradm` int(20) NOT NULL,
`protoclonacion` varchar(50) NOT NULL,
PRIMARY KEY (`identorno`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `entornos`
--
INSERT INTO `entornos` (`identorno`, `ipserveradm`, `portserveradm`, `protoclonacion`) VALUES
(1, '10.1.15.3', 2009, 'MULTICAST');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `estatus`
--
CREATE TABLE IF NOT EXISTS `estatus` (
`idestatus` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`idestatus`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
--
-- Volcar la base de datos para la tabla `estatus`
--
INSERT INTO `estatus` (`idestatus`, `descripcion`) VALUES
(1, 'P.D.I. ( Profesor)'),
(2, 'P.A.S.'),
(3, 'Doctor'),
(4, 'Alumno'),
(5, 'Otros');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `grupos`
--
CREATE TABLE IF NOT EXISTS `grupos` (
`idgrupo` int(11) NOT NULL AUTO_INCREMENT,
`nombregrupo` varchar(250) NOT NULL DEFAULT '',
`grupoid` int(11) NOT NULL DEFAULT '0',
`tipo` tinyint(4) NOT NULL DEFAULT '0',
`idcentro` int(11) NOT NULL DEFAULT '0',
`iduniversidad` int(11) DEFAULT NULL,
`comentarios` text,
PRIMARY KEY (`idgrupo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `gruposordenadores`
--
CREATE TABLE IF NOT EXISTS `gruposordenadores` (
`idgrupo` int(11) NOT NULL AUTO_INCREMENT,
`nombregrupoordenador` varchar(250) NOT NULL DEFAULT '',
`idaula` int(11) NOT NULL DEFAULT '0',
`grupoid` int(11) DEFAULT NULL,
`comentarios` text,
PRIMARY KEY (`idgrupo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `hardwares`
--
CREATE TABLE IF NOT EXISTS `hardwares` (
`idhardware` int(11) NOT NULL AUTO_INCREMENT,
`idtipohardware` int(11) NOT NULL DEFAULT '0',
`descripcion` varchar(250) NOT NULL DEFAULT '',
`idcentro` int(11) NOT NULL DEFAULT '0',
`grupoid` int(11) DEFAULT NULL,
PRIMARY KEY (`idhardware`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `iconos`
--
CREATE TABLE IF NOT EXISTS `iconos` (
`idicono` int(11) NOT NULL AUTO_INCREMENT,
`urlicono` varchar(200) DEFAULT NULL,
`idtipoicono` int(11) DEFAULT NULL,
`descripcion` varchar(250) DEFAULT NULL,
PRIMARY KEY (`idicono`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;
--
-- Volcar la base de datos para la tabla `iconos`
--
INSERT INTO `iconos` (`idicono`, `urlicono`, `idtipoicono`, `descripcion`) VALUES
(1, 'vga.gif', 1, 'Tarjeta gráfica'),
(2, 'nic.gif', 1, 'Tarjeta de Red'),
(3, 'placabase.gif', 1, 'Placas base'),
(4, 'tsonido.gif', 1, 'Tarjeta de sonido'),
(5, 'camweb.gif', 1, 'Cámara web'),
(6, 'logoXP.png', 2, 'Logo Windows XP'),
(7, 'logolinux.png', 2, 'Logo General de Linux'),
(8, 'particionar.png', 2, 'Particionar'),
(9, 'ordenadoroff.png', 2, 'Ordenador apagado'),
(10, 'ordenadoron.png', 2, 'Ordenador encendido'),
(11, 'usb.gif', 1, 'Mi icono usb'),
(12, 'ide.gif', 1, 'Controladores IDE'),
(13, 'dvdcd.gif', 1, 'Lectoras y grabadoras de DVD'),
(14, 'audio.gif', 1, 'Dispositivos de audio');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `idiomas`
--
CREATE TABLE IF NOT EXISTS `idiomas` (
`ididioma` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(100) DEFAULT NULL,
`nemonico` char(3) DEFAULT NULL,
PRIMARY KEY (`ididioma`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- Volcar la base de datos para la tabla `idiomas`
--
INSERT INTO `idiomas` (`ididioma`, `descripcion`, `nemonico`) VALUES
(1, 'Español', 'esp'),
(2, 'Ingles', 'eng'),
(3, 'Catalan', 'cat');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `imagenes`
--
CREATE TABLE IF NOT EXISTS `imagenes` (
`idimagen` int(11) NOT NULL AUTO_INCREMENT,
`nombreca` varchar(50) NOT NULL,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`idperfilsoft` int(11) DEFAULT NULL,
`idcentro` int(11) DEFAULT NULL,
`comentarios` text,
`grupoid` int(11) DEFAULT NULL,
`idrepositorio` int(11) NOT NULL,
`numpar` smallint(6) NOT NULL,
`codpar` smallint(6) NOT NULL,
PRIMARY KEY (`idimagen`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `menus`
--
CREATE TABLE IF NOT EXISTS `menus` (
`idmenu` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`idcentro` int(11) NOT NULL DEFAULT '0',
`idurlimg` int(11) NOT NULL DEFAULT '0',
`titulo` varchar(250) DEFAULT NULL,
`coorx` int(11) DEFAULT NULL,
`coory` int(11) DEFAULT NULL,
`modalidad` tinyint(4) DEFAULT NULL,
`scoorx` int(11) DEFAULT NULL,
`scoory` int(11) DEFAULT NULL,
`smodalidad` tinyint(4) DEFAULT NULL,
`comentarios` text,
`grupoid` int(11) NOT NULL DEFAULT '0',
`htmlmenupub` varchar(250) DEFAULT NULL,
`htmlmenupri` varchar(250) DEFAULT NULL,
`resolucion` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`idmenu`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `nombresos`
--
CREATE TABLE IF NOT EXISTS `nombresos` (
`idnombreso` smallint(11) NOT NULL AUTO_INCREMENT,
`nombreso` varchar(250) NOT NULL,
`idtiposo` int(11) DEFAULT '0',
PRIMARY KEY (`idnombreso`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `ordenadores`
--
CREATE TABLE IF NOT EXISTS `ordenadores` (
`idordenador` int(11) NOT NULL AUTO_INCREMENT,
`nombreordenador` varchar(100) DEFAULT NULL,
`ip` varchar(16) NOT NULL,
`mac` varchar(12) DEFAULT NULL,
`idaula` int(11) DEFAULT NULL,
`idperfilhard` int(11) DEFAULT NULL,
`idrepositorio` int(11) DEFAULT NULL,
`grupoid` int(11) DEFAULT NULL,
`idmenu` int(11) DEFAULT NULL,
`cache` int(11) DEFAULT NULL,
`router` varchar(16) NOT NULL,
`mascara` varchar(16) NOT NULL,
`idproautoexec` int(11) NOT NULL,
PRIMARY KEY (`idordenador`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `ordenadores_particiones`
--
CREATE TABLE IF NOT EXISTS `ordenadores_particiones` (
`idordenador` int(11) NOT NULL,
`numpar` tinyint(4) NOT NULL,
`codpar` smallint(11) NOT NULL,
`tamano` int(11) NOT NULL,
`idsistemafichero` smallint(11) NOT NULL,
`idnombreso` smallint(11) NOT NULL,
`idimagen` int(11) NOT NULL,
`idperfilsoft` int(11) NOT NULL,
UNIQUE KEY `idordenadornumpar` (`idordenador`,`numpar`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `parametros`
--
CREATE TABLE IF NOT EXISTS `parametros` (
`idparametro` int(11) NOT NULL AUTO_INCREMENT,
`nemonico` char(3) NOT NULL,
`descripcion` text NOT NULL,
`nomidentificador` varchar(64) NOT NULL,
`nomtabla` varchar(64) NOT NULL,
`nomliteral` varchar(64) NOT NULL,
`tipopa` tinyint(1) DEFAULT '0',
`visual` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`idparametro`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ;
--
-- Volcar la base de datos para la tabla `parametros`
--
INSERT INTO `parametros` (`idparametro`, `nemonico`, `descripcion`, `nomidentificador`, `nomtabla`, `nomliteral`, `tipopa`, `visual`) VALUES
(1, 'nfn', 'Nombre de la función o script a ejecutar en el cliente y que implementa el comando. Es posible que también els ervidor debo ejecutar la misma función como ocurre en el comando "Arrancar" y que implementa el comportamiento del comando en el servidor', '', '', '', 0, 0),
(2, 'iph', 'Dirección ip de los ordenadores a los que se envía el comando', '', '', '', 0, 0),
(3, 'ido', 'Identificadores de los ordenadores a los que se envía el comando', '', '', '', 0, 0),
(4, 'mac', 'Direcciones macs de los clientes a los que se le envía el comando', '', '', '', 0, 0),
(5, 'idc', 'Unidad organizativa', 'idcentro', 'centros', '', 1, 0),
(6, 'ida', 'Aula', 'idaula', 'aulas', 'nombreaula', 1, 0),
(18, 'cfg', 'Configuración', '', '', '', 2, 1),
(7, 'dsk', 'Disco', '', '', '', 0, 1),
(8, 'par', 'Partición', '', '', '', 0, 1),
(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),
(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),
(16, 'exe', 'Identificador del procedimiento que será el que ejecute el cliente al arrancar (Autoexec)', '', '', '', 0, 0),
(17, 'res', 'Respuesta del comando: Puede tomar los valores 1 o 2 en el caso de que la respuesta sea correcta o que haya un error al ejecutarse.', '', '', '', 0, 0),
(19, 'ipr', 'Repositorio', 'ip', 'repositorios', 'nombrerepositorio', 1, 1),
(20, 'cpt', 'Tipo partición', 'codpar', 'tipospar', 'tipopar', 1, 1),
(21, 'sfi', 'Sistema de fichero', 'idsistemafichero', 'sistemasficheros', 'nemonico', 1, 0),
(22, 'tam', 'Tamaño', '', '', '', 0, 0),
(23, 'ope', 'Operación', ';', '', 'Sin operación;Formatear;Ocultar;Mostrar', 3, 1),
(24, 'nfl', 'Nombre del fichero que se envía o se recibe', '', '', '', 0, 0),
(25, 'hrd', 'Nombre del archivo de inventario hardware enviado por la red', '', '', '', 0, 0),
(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', 3, 1);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `perfileshard`
--
CREATE TABLE IF NOT EXISTS `perfileshard` (
`idperfilhard` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`comentarios` text,
`grupoid` int(11) DEFAULT NULL,
`idcentro` int(11) NOT NULL,
PRIMARY KEY (`idperfilhard`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `perfileshard_hardwares`
--
CREATE TABLE IF NOT EXISTS `perfileshard_hardwares` (
`idperfilhard` int(11) NOT NULL DEFAULT '0',
`idhardware` int(11) NOT NULL DEFAULT '0',
KEY `idperfilhard` (`idperfilhard`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `perfilessoft`
--
CREATE TABLE IF NOT EXISTS `perfilessoft` (
`idperfilsoft` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`comentarios` text,
`grupoid` int(11) DEFAULT NULL,
`idcentro` int(11) NOT NULL,
PRIMARY KEY (`idperfilsoft`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `perfilessoft_softwares`
--
CREATE TABLE IF NOT EXISTS `perfilessoft_softwares` (
`idperfilsoft` int(11) NOT NULL DEFAULT '0',
`idsoftware` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `plataformas`
--
CREATE TABLE IF NOT EXISTS `plataformas` (
`idplataforma` int(11) NOT NULL AUTO_INCREMENT,
`plataforma` varchar(250) NOT NULL,
PRIMARY KEY (`idplataforma`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;
--
-- Volcar la base de datos para la tabla `plataformas`
--
INSERT INTO `plataformas` (`idplataforma`, `plataforma`) VALUES
(1, 'MsDos'),
(2, 'Windows'),
(3, 'Linux'),
(4, 'Mac'),
(5, 'OS');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `procedimientos`
--
CREATE TABLE IF NOT EXISTS `procedimientos` (
`idprocedimiento` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`urlimg` varchar(250) DEFAULT NULL,
`idcentro` int(11) NOT NULL DEFAULT '0',
`comentarios` text,
`grupoid` int(11) DEFAULT '0',
PRIMARY KEY (`idprocedimiento`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `procedimientos_acciones`
--
CREATE TABLE IF NOT EXISTS `procedimientos_acciones` (
`idprocedimientoaccion` int(11) NOT NULL AUTO_INCREMENT,
`idprocedimiento` int(11) NOT NULL DEFAULT '0',
`orden` smallint(4) DEFAULT NULL,
`idcomando` int(11) NOT NULL DEFAULT '0',
`parametros` text,
`procedimientoid` int(11) NOT NULL,
PRIMARY KEY (`idprocedimientoaccion`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `programaciones`
--
CREATE TABLE IF NOT EXISTS `programaciones` (
`idprogramacion` int(11) NOT NULL AUTO_INCREMENT,
`tipoaccion` int(11) DEFAULT NULL,
`identificador` int(11) DEFAULT NULL,
`nombrebloque` varchar(255) DEFAULT NULL,
`annos` tinyint(4) DEFAULT NULL,
`meses` smallint(4) DEFAULT NULL,
`diario` int(11) DEFAULT NULL,
`dias` tinyint(4) DEFAULT NULL,
`semanas` tinyint(4) DEFAULT NULL,
`horas` smallint(4) DEFAULT NULL,
`ampm` tinyint(1) DEFAULT NULL,
`minutos` tinyint(4) DEFAULT NULL,
`segundos` tinyint(4) DEFAULT NULL,
`horasini` smallint(4) DEFAULT NULL,
`ampmini` tinyint(1) DEFAULT NULL,
`minutosini` tinyint(4) DEFAULT NULL,
`horasfin` smallint(4) DEFAULT NULL,
`ampmfin` tinyint(1) DEFAULT NULL,
`minutosfin` tinyint(4) DEFAULT NULL,
`suspendida` tinyint(1) DEFAULT NULL,
`sesion` int(11) NOT NULL,
PRIMARY KEY (`idprogramacion`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `repositorios`
--
CREATE TABLE IF NOT EXISTS `repositorios` (
`idrepositorio` int(11) NOT NULL AUTO_INCREMENT,
`nombrerepositorio` varchar(250) NOT NULL,
`ip` varchar(15) NOT NULL DEFAULT '',
`passguor` varchar(50) NOT NULL DEFAULT '',
`pathrepoconf` varchar(250) NOT NULL,
`pathrepod` varchar(250) NOT NULL,
`pathpxe` varchar(250) NOT NULL,
`idcentro` int(11) DEFAULT NULL,
`grupoid` int(11) DEFAULT NULL,
`comentarios` text,
`puertorepo` int(11) NOT NULL,
PRIMARY KEY (`idrepositorio`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `sistemasficheros`
--
CREATE TABLE IF NOT EXISTS `sistemasficheros` (
`idsistemafichero` smallint(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(50) NOT NULL DEFAULT '',
`nemonico` varchar(16) DEFAULT NULL,
`codpar` smallint(6) NOT NULL,
PRIMARY KEY (`idsistemafichero`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `softwares`
--
CREATE TABLE IF NOT EXISTS `softwares` (
`idsoftware` int(11) NOT NULL AUTO_INCREMENT,
`idtiposoftware` int(11) NOT NULL DEFAULT '0',
`descripcion` varchar(250) NOT NULL DEFAULT '',
`idcentro` int(11) NOT NULL DEFAULT '0',
`urlimg` varchar(250) DEFAULT NULL,
`idtiposo` int(11) DEFAULT NULL,
`grupoid` int(11) DEFAULT NULL,
PRIMARY KEY (`idsoftware`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `tareas`
--
CREATE TABLE IF NOT EXISTS `tareas` (
`idtarea` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`urlimg` varchar(250) DEFAULT NULL,
`idcentro` int(11) NOT NULL DEFAULT '0',
`ambito` smallint(6) NOT NULL DEFAULT '0',
`idambito` int(11) NOT NULL DEFAULT '0',
`restrambito` text NOT NULL,
`comentarios` text,
`grupoid` int(11) DEFAULT '0',
PRIMARY KEY (`idtarea`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `tareas_acciones`
--
CREATE TABLE IF NOT EXISTS `tareas_acciones` (
`idtareaaccion` int(11) NOT NULL AUTO_INCREMENT,
`idtarea` int(11) NOT NULL DEFAULT '0',
`orden` smallint(6) NOT NULL DEFAULT '0',
`idprocedimiento` int(11) NOT NULL DEFAULT '0',
`tareaid` int(11) DEFAULT '0',
PRIMARY KEY (`idtareaaccion`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `tipohardwares`
--
CREATE TABLE IF NOT EXISTS `tipohardwares` (
`idtipohardware` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`urlimg` varchar(250) NOT NULL DEFAULT '',
`nemonico` char(3) NOT NULL,
`pci` tinyint(1) NOT NULL,
PRIMARY KEY (`idtipohardware`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
--
-- Volcar la base de datos para la tabla `tipohardwares`
--
INSERT INTO `tipohardwares` (`idtipohardware`, `descripcion`, `urlimg`, `nemonico`, `pci`) VALUES
(1, 'Placas', '../images/iconos/placabase.gif', 'boa', 0),
(2, 'Dispositivos Multimedia', '../images/iconos/tsonido.gif', 'mul', 0),
(3, 'Tarjetas de Red', '../images/iconos/nic.gif', 'net', 0),
(4, 'Microprocesadores', '../images/iconos/micro.gif', 'cpu', 0),
(5, 'Memorias', '../images/iconos/confihard.gif', 'mem', 0),
(7, 'Tarjetas gráficas', '../images/iconos/vga.gif', 'vga', 0),
(8, 'Discos', '../images/iconos/discoduro.gif', 'dis', 0),
(9, 'Dispositivos de sonido', '../images/iconos/audio.gif', 'aud', 0),
(10, 'Marca y modelo del equipo', '../images/iconos/confihard.gif', 'mod', 0),
(11, 'Modelo y version de la bios', '../images/iconos/confihard.gif', 'bio', 0),
(12, 'Modelo de grabadora o grabadora de CD/DVD', '../images/iconos/dvdcd.gif', 'cdr', 0),
(13, 'Controladores IDE', '../images/iconos/ide.gif', 'ide', 0),
(14, 'Controladores FireWire', '../images/iconos/confihard.gif', 'fir', 0),
(15, 'Controladores USB', '../images/iconos/usb.gif', 'usb', 0),
(16, 'Bus del Sistema', '../images/iconos/confihard.gif', 'bus', 0);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `tiposoftwares`
--
CREATE TABLE IF NOT EXISTS `tiposoftwares` (
`idtiposoftware` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
`urlimg` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`idtiposoftware`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- Volcar la base de datos para la tabla `tiposoftwares`
--
INSERT INTO `tiposoftwares` (`idtiposoftware`, `descripcion`, `urlimg`) VALUES
(1, 'Sistemas Operativos', '../images/iconos/so.gif'),
(2, 'Aplicaciones', '../images/iconos/aplicaciones.gif'),
(3, 'Archivos', '../images/iconos/archivos.gif');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `tiposos`
--
CREATE TABLE IF NOT EXISTS `tiposos` (
`idtiposo` int(11) NOT NULL AUTO_INCREMENT,
`tiposo` varchar(250) NOT NULL,
`idplataforma` int(11) NOT NULL,
PRIMARY KEY (`idtiposo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;
--
-- Volcar la base de datos para la tabla `tiposos`
--
INSERT INTO `tiposos` (`idtiposo`, `tiposo`, `idplataforma`) VALUES
(1, 'MsDos 6.0', 1),
(2, 'Windows 98', 2),
(3, 'Linux Ubuntu', 3),
(4, 'Mac', 0),
(5, 'OS', 0),
(17, 'Windows XP', 2),
(18, 'Windows Vista', 2),
(19, 'Linux Red Hat', 3),
(20, 'Windows 7', 2);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `tipospar`
--
CREATE TABLE IF NOT EXISTS `tipospar` (
`codpar` smallint(4) NOT NULL,
`tipopar` varchar(250) NOT NULL,
`clonable` tinyint(4) NOT NULL,
UNIQUE KEY `codpar` (`codpar`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Volcar la base de datos para la tabla `tipospar`
--
INSERT INTO `tipospar` (`codpar`, `tipopar`, `clonable`) VALUES
(0, 'EMPTY', 0),
(1, 'FAT12', 1),
(5, 'EXTENDED', 0),
(7, 'NTFS', 1),
(11, 'FAT32', 1),
(17, 'HFAT12', 1),
(22, 'HFAT16', 1),
(23, 'HNTFS', 1),
(27, 'HFAT32', 1),
(130, 'LINUX-SWAP', 0),
(131, 'LINUX', 1),
(142, 'LINUX-LVM', 1),
(191, 'SOLARIS', 1),
(202, 'CACHE', 0),
(253, 'LINUX-RAID', 1);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `universidades`
--
CREATE TABLE IF NOT EXISTS `universidades` (
`iduniversidad` int(11) NOT NULL AUTO_INCREMENT,
`nombreuniversidad` varchar(200) NOT NULL DEFAULT '',
`comentarios` text,
PRIMARY KEY (`iduniversidad`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `universidades`
--
INSERT INTO `universidades` (`iduniversidad`, `nombreuniversidad`, `comentarios`) VALUES
(1, 'Universidad default...', 'Esta Universidad se crea automáticamentese en el proceso de instalación de OpenGNSys');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `urlimagesitems`
--
CREATE TABLE IF NOT EXISTS `urlimagesitems` (
`idurlimagesitems` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`idurlimagesitems`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Volcar la base de datos para la tabla `urlimagesitems`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `usuarios`
--
CREATE TABLE IF NOT EXISTS `usuarios` (
`idusuario` int(11) NOT NULL AUTO_INCREMENT,
`usuario` varchar(50) NOT NULL DEFAULT '',
`pasguor` varchar(50) NOT NULL DEFAULT '',
`nombre` varchar(200) DEFAULT NULL,
`email` varchar(200) DEFAULT NULL,
`ididioma` int(11) DEFAULT NULL,
`idtipousuario` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`idusuario`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `usuarios`
--
INSERT INTO `usuarios` (`idusuario`, `usuario`, `pasguor`, `nombre`, `email`, `ididioma`, `idtipousuario`) VALUES
(1, 'usuog', 'passusuog', 'Usuario de la base de datos MySql', '', 1, 1);

View File

@ -0,0 +1,2 @@
#!/bin/bash
poweroff

View File

@ -0,0 +1,81 @@
#!/bin/bash
#_______________________________________________________________________________________________________________________________
#
# Formato de entrada:
# $1 disco
# $2 par=Número de particion#cod=Código de partición#sfi=Sistema de ficheros#tam=Tamaño de la partición#ope=Operación$
#_______________________________________________________________________________________________________________________________
particiones=$(echo $2 | awk '{n=split($0,sep,"$");print n}')
declare -a TBP
declare -a TBF
for ((par=1;par<$particiones;par++));
do
TBP[$par]=$(echo $2 | awk -v p=$par '{
n=split($0,sep,"$");
split(sep[p],dua,"#");
split(dua[1],prm,"=");
par=prm[2];
split(dua[2],prm,"=");
cpt=prm[2];
split(dua[3],prm,"=");
sfi=prm[2];
split(dua[4],prm,"=");
tam=prm[2];
split(dua[5],prm,"=");
ope=prm[2];
printf("%s %x %s %s %s",par,cpt,sfi,tam,ope);
}')
done
# Prepara cadena de particiones _______________________________________
cP=""
for ((par=1;par<$particiones;par++));
do
cfg=${TBP[$par]}
cP=$cP$(echo $cfg | awk '{
n=split($0,prm," ");
par=prm[1];
cpt=prm[2];
sfi=prm[3];
tam=prm[4];
ope=prm[5];
if(ope==1)
printf("%s:%s ",sfi,tam);
else{
if(ope==2)
printf("H%s:%s ",sfi,tam);
else
printf("%s:%s ",sfi,tam);
}
}')
TBF[$par]=$(echo $cfg | awk '{
n=split($0,prm," ");
sfi=prm[3];
ope=prm[5];
if(ope==1)
printf("%s",sfi);
else
printf("EMPTY");
}')
done
ogCreatePartitions $1 $cP
# Formatear _______________________________________
for ((par=1;par<$particiones;par++));
do
sfi=${TBF[$par]}
if [ $sfi == "EMPTY" ]; then
TBF[$par]=" "
else
ogFormatFs $1 $par $sfi
fi
done

View File

@ -0,0 +1,3 @@
#!/bin/bash
chmod +x $1
$1>$2 || exit $?

View File

@ -0,0 +1,12 @@
#!/bin/bash
#_______________________________________________________________________________________________________________________________
#
# PARAMETROS RECIBIDOS DESDE EL CLIENTE:
# $1 disco
# $2 par=Número de particion
# $3 Nombre canónico de la imagen
# $4 Dirección del repositorio
#_______________________________________________________________________________________________________________________________
#createImage $1 $2 REPO $3
exit 0

View File

@ -0,0 +1,3 @@
#!/bin/bash
chmod +x $1
$1 || exit $?

View File

@ -0,0 +1,3 @@
#!/bin/bash
file=$(listHardwareInfo)
cp $file $1

View File

@ -0,0 +1,3 @@
#!/bin/bash
file=$(listSoftwareInfo $1 $2)
cp $file $3

View File

@ -0,0 +1,2 @@
#!/bin/bash
reboot

View File

@ -0,0 +1,12 @@
#!/bin/bash
#_______________________________________________________________________________________________________________________________
#
# PARAMETROS RECIBIDOS DESDE EL CLIENTE:
# $1 disco
# $2 par=Número de particion
# $3 Nombre canónico de la imagen
# $4 Dirección del repositorio
#_______________________________________________________________________________________________________________________________
#ogRestoreImage REPO $3 $1 $2 UNICAST
exit 0

View File

@ -0,0 +1,45 @@
#!/bin/bash
#_______________________________________________________________________________________________________________________________
#
# Formato de salida:
# par=Número de particion\tcod=Código de partición\tsfi=Sistema de ficheros\tsoi=Sistema instalado\ttam=Tamaño de la partición\n
#_______________________________________________________________________________________________________________________________
cfg=$(listPrimaryPartitions 1)
particiones=$(echo $cfg | awk '{n=split($0,sep," ");print n}')
cfg=""
for ((par=1;par<=$particiones;par++));
do
# Tipo de partición o sistema de fichero
fsi=$(getFsType 1 $par 2>/dev/null)
fsi=${fsi:-"EMPTY"}
# Tamaño de la particón
tam=$(ogGetPartitionSize 1 $par 2>/dev/null)
tam=${tam:-"0"}
# Código de la partición
cod=$(ogFsToId $fsi)
if [ $cod == 82 ]; then
soi=" "
else
# Sistema de fichero instalado
soi=$(getOsVersion 1 $par 2>/dev/null)
soi=$(echo $soi | awk '{split($0,sep,":"); print sep[2]}')
fi
cfg=$(echo $cfg$par":"$cod":"$fsi":"$soi":"$tam";")
done
echo $cfg | awk '{
n=split($0,sep,";");
for(i=1;i<n;i++){
split(sep[i],dua,":");
printf("par=%s\tcpt=%s\tfsi=%s\tsoi=%s\ttam=%s\n",dua[1],dua[2],dua[3],dua[4],dua[5]);
}
}'

View File

@ -0,0 +1,2 @@
#!/bin/bash
getIpAddress

View File

@ -0,0 +1,2 @@
#!/bin/bash
initCache $1

View File

@ -0,0 +1,34 @@
# makefile
# Nombre del proyecto
PROYECTO := ogAdmClient
# Directorios y librerias
DIRS :=
LIBS := -static
# Opciones de compilacion
OPCS := -O0 -g -Wall # Depuracion
#OPCS := -O3 -Wall # Optimizacion
# Ficheros objetos
OBJS := sources/ogAdmClient.o
all: $(PROYECTO)
$(PROYECTO): $(OBJS)
g++ $(DIRS) $(LIBS) $(OBJS) -o $(PROYECTO)
# strip $(PROYECTO) # Optimizacion
clean:
rm $(PROYECTO) $(OBJS)
sources/%.o: sources/%.cpp
g++ $(OPCS) -c -o"$@" "$<"
sources/%.o: sources/%.c
gcc $(OPCS) -I ../../Includes -c -o"$@" "$<"

View File

@ -0,0 +1,6 @@
ServidorAdm=SERVERIP
PUERTO=2008
PATHINTERFACE=/opt/opengnsys/Interface
UrlMenu=OPENGNSYSURL/varios/menubrowser.php
UrlMsg=OPENGNSYSURL/varios/msgbrowser.php

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,121 @@
// ********************************************************************************************************
// Cliernte: ogAdmClient
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Nombre del fichero: ogAdmClient.h
// Descripción :Este fichero implementa el cliente general del sistema
// ********************************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <unistd.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <signal.h>
#include "ogAdmLib.h"
// ________________________________________________________________________________________________________
// 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 IPlocal[LONIP]; // Ip local
char servidoradm[LONPRM]; // Dirección IP del servidor de administración
char puerto[LONPRM]; // Puerto de comunicación
char pathinterface[LONPRM]; // Path donde está la interface entre la administración y el módulo de clonación
char interface[LONFUN]; // Nombre del módulo,función o script de la interface con el módulo de administración
char parametros[LONSTD]; // Parámetros para la llamada
int herror;
BOOLEAN CMDPTES; // Para bucle de comandos pendientes
pid_t pidbrowser; // Identificador del proceso que se crea para mostrar una página web con el browser
pid_t pidbash; // Identificador del proceso que se crea cuando se conmuta el browser
char urlmenu[MAXLONURL]; // Url de la pagina de menu para el browser
char urlmsg[MAXLONURL]; // Url de la página de mensajed para el browser
typedef struct{ // Estructura usada para referenciar las funciones que procesan las tramas
char nf[LONFUN]; // Nombre de la función
BOOLEAN (*fptr)(TRAMA*); // Puntero a la función que procesa la trama
}MSGFUN;
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",\
"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",\
"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",\
"011-La información retornada por la interface de administración excede de la longitud permitida",\
"012-Error en el envío de fichero por la red",\
"013-Error en la creación del proceso hijo",\
"Error desconocido "
};
#define MAXERRORSCRIPT 14 // Error máximo cometido
// ________________________________________________________________________________________________________
// Prototipo de funciones
// ________________________________________________________________________________________________________
BOOLEAN autoexecCliente(TRAMA*);
BOOLEAN RESPUESTA_AutoexecCliente(TRAMA*);
void procesaComandos(TRAMA*);
BOOLEAN tomaConfiguracion(char*);
BOOLEAN tomaIPlocal(void);
void scriptLog(const char *,int );
BOOLEAN gestionaTrama(TRAMA *);
BOOLEAN inclusionCliente();
char* LeeConfiguracion(char*);
BOOLEAN RESPUESTA_InclusionCliente(TRAMA *);
BOOLEAN comandosPendientes(TRAMA*);
BOOLEAN NoComandosPtes(TRAMA *);
BOOLEAN respuestaEjecucionComando(TRAMA *,int,char*);
BOOLEAN Sondeo(TRAMA *);
BOOLEAN Actualizar(TRAMA *);
int Purgar(TRAMA* );
BOOLEAN ConsolaRemota(TRAMA*);
BOOLEAN Arrancar(TRAMA *);
BOOLEAN Apagar(TRAMA *);
BOOLEAN Reiniciar(TRAMA *);
BOOLEAN IniciarSesion(TRAMA *);
BOOLEAN CrearImagen(TRAMA *);
BOOLEAN InventarioHardware(TRAMA *);
BOOLEAN InventariandoSoftware(TRAMA *,BOOLEAN,char*);
BOOLEAN EjecutarScript(TRAMA *);
BOOLEAN ejecutaArchivo(char*,TRAMA*);
BOOLEAN cuestionCache(char*);
int cargaPaginaWeb(char *);
void muestraMenu(void);
void muestraMensaje(int idx,char*);
BOOLEAN enviaMensajeServidor(SOCKET *,TRAMA *,char);

View File

@ -0,0 +1,198 @@
// ********************************************************************************************************
// Nombre del fichero: Database.cpp
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Descripción:
// Fichero de implementación de la clase Database para funciones de manipulación
// de bases de datos sobre un Servidor Mysql
// ********************************************************************************************************
#include "Database.h"
// __________________________________________________________________________
void ErrorHandler(Herror hr, char* ErrStr)
{
sprintf(ErrStr,"Error:\n");
sprintf(ErrStr,"%sCode = %d\n",ErrStr ,hr.nError);
sprintf(ErrStr,"%sDescription = %s",ErrStr, (char*) hr.dError);
}
// __________________________________________________________________________
Database::Database()
{
m_Cnn=NULL;
sprintf(m_ErrStr,"NULL POINTER");
}
// __________________________________________________________________________
void Database::GetErrorErrStr(char* ErrStr)
{
sprintf(ErrStr,"%s",m_ErrStr);
}
// __________________________________________________________________________
void Table::GetErrorErrStr(char* ErrStr)
{
sprintf(ErrStr,"%s",m_ErrStr);
}
// __________________________________________________________________________
bool Database::Open(char* UserName, char* Pwd,char* server,char*Bd)
{
Herror hr;
m_Cnn=mysql_init(NULL);
if(m_Cnn==NULL){
hr.nError=0;
strcpy(hr.dError,"Error en la Creación del objeto MYSQL");
ErrorHandler(hr,m_ErrStr);
return(false); // Fallo de inicializaci<63>
}
if(!mysql_real_connect(m_Cnn, server,UserName,Pwd,Bd, MYSQL_PORT,NULL,0)){
mysql_error(m_Cnn);
hr.nError=mysql_errno(m_Cnn);
strcpy(hr.dError,mysql_error(m_Cnn));
ErrorHandler(hr,m_ErrStr);
return(false); // Fallo de conexi<78>
}
hr.nError=0;
strcpy(hr.dError,"Success");
ErrorHandler(hr,m_ErrStr);
return (true);
}
// __________________________________________________________________________
bool Database::Close()
{
mysql_close(m_Cnn);
return(true);
}
// __________________________________________________________________________
bool Database::Execute(char* CmdStr)
{
Herror hr;
if (mysql_query(m_Cnn,CmdStr)){ // Ejecuta la consulta
mysql_error(m_Cnn);
hr.nError=mysql_errno(m_Cnn);
strcpy(hr.dError,mysql_error(m_Cnn));
ErrorHandler(hr,m_ErrStr);
mysql_close(m_Cnn);
return(false); // Fallo de conexión
}
hr.nError=0;
strcpy(hr.dError,"Success");
ErrorHandler(hr,m_ErrStr);
return (true);
}
// __________________________________________________________________________
bool Database::Execute(char* CmdStr, Table& Tbl)
{
Herror hr;
if (mysql_query(m_Cnn,CmdStr)) { // Ejecuta la consulta
mysql_error(m_Cnn);
hr.nError=mysql_errno(m_Cnn);
strcpy(hr.dError,mysql_error(m_Cnn));
ErrorHandler(hr,m_ErrStr);
mysql_close(m_Cnn);
return(false); // Fallo de conexi<78>
}
hr.nError=0;
strcpy(hr.dError,"Success");
ErrorHandler(hr,m_ErrStr);
Tbl.m_Rec = mysql_store_result(m_Cnn) ; // Toma el recordset
if(Tbl.m_Rec){
Tbl.row=mysql_fetch_row(Tbl.m_Rec);
Tbl.fields = mysql_fetch_fields(Tbl.m_Rec);
Tbl.num_fields = mysql_num_fields(Tbl.m_Rec);
Tbl.numreg=mysql_num_rows(Tbl.m_Rec);
Tbl.eof=Tbl.numreg==0; // Consulta vacia
}
return (true);
}
// __________________________________________________________________________
Table::Table()
{
m_Rec=NULL;
}
// __________________________________________________________________________
bool Table::ISEOF()
{
return(eof);
}
// __________________________________________________________________________
bool Table::Get(const char* FieldName, char *FieldValue)
{
char * aux;
aux=tomadato(FieldName);
if(aux)
strcpy(FieldValue,aux);
else
strcpy(FieldValue,"");
return(true);
}
// __________________________________________________________________________
bool Table::Get(const char* FieldName,int &FieldValue)
{
char *aux;
aux=tomadato(FieldName);
if(aux)
FieldValue=atoi(aux);
else
FieldValue=0;
return(true);
}
// __________________________________________________________________________
bool Table::Get(const char* FieldName,char &FieldValue)
{
char *aux;
aux=tomadato(FieldName);
FieldValue=aux[0];
return(true);
}
// __________________________________________________________________________
char* Table::tomadato(const char* FieldName)
{
Herror hr;
unsigned int i;
for(i = 0; i < num_fields; i++){
if(strcmp((char*)fields[i].name,FieldName)==0){
sprintf(m_ErrStr,"Success");
return((char*)row[i]);
}
}
hr.nError=-1;
strcpy(hr.dError,"El nombre del campo no existe");
ErrorHandler(hr,m_ErrStr);
return(NULL); // No existe el nombre del campo en la tabla
}
// __________________________________________________________________________
bool Table::MoveNext()
{
eof=false;
row=mysql_fetch_row(m_Rec);
if(row==NULL){
if(!mysql_eof(m_Rec))
return(false); // Fallo de lectura
else
eof=true; // Fin de fichero
}
return (true);
}
// __________________________________________________________________________
bool Table::MoveFirst()
{
my_ulonglong auxnumreg;
auxnumreg=0;
mysql_data_seek(m_Rec,auxnumreg);
return (MoveNext());
}
// __________________________________________________________________________
bool Table::MoveLast()
{
my_ulonglong auxnumreg;
auxnumreg=numreg;
auxnumreg--;
if(auxnumreg<0) auxnumreg=0; // Principio de fichero
mysql_data_seek(m_Rec,auxnumreg);
return (MoveNext());
return (true);
}

View File

@ -0,0 +1,60 @@
// ******************************************************************************************************
// Aplicación HIDRA
// Copyright 2004 Jos<6F>Manuel Alonso. Todos los derechos reservados.
// Fichero: Database.h
// Descripción:
// Fichero de cabecera de la clase Database para implementar funciones de manipulaci<63>
// de bases de datos sobre un Servidor Mysql
// ******************************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include </usr/include/mysql/mysql.h>
// __________________________________________________________________________
class Database;
class Table;
// __________________________________________________________________________
class Database
{
public:
MYSQL *m_Cnn;
char m_ErrStr[500];
Database();
bool Open(char* UserName, char* Pwd,char* server,char*Database);
bool OpenTbl(int Mode, char* CmdStr, Table& Tbl);
bool Close(void);
bool Execute(char* CmdStr);
bool Execute(char* CmdStr, Table& Tbl);
void GetErrorErrStr(char* ErrStr);
};
// __________________________________________________________________________
class Table{
char* tomadato(const char* FieldName);
public:
bool eof,bof;
MYSQL_RES * m_Rec ;
MYSQL_FIELD *fields;
unsigned int num_fields;
MYSQL_ROW row ;
MYSQL_ROW_OFFSET ptr;
my_ulonglong numreg;
char m_ErrStr[500];
Table();
void GetErrorErrStr(char* ErrStr);
bool ISEOF();
bool MoveNext();
bool MovePrevious();
bool MoveFirst();
bool MoveLast();
bool Get(const char* FieldName, char* FieldValue);
bool Get(const char* FieldName,int &FieldValue);
bool Get(const char* FieldName,char &FieldValue);
};
// __________________________________________________________________________
class Herror
{
public:
int nError; // C<>igo del error
char dError[500]; // Descripción del error
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,308 @@
// **************************************************************************************************************************************************
// Libreria: ogAdmLib
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Nombre del fichero: ogAdmLib.h
// Descripción: Este fichero implementa el archivo de cabecera de la libreria ogAdmLib
// **************************************************************************************************************************************************
// ________________________________________________________________________________________________________
// Valores definidos
// ________________________________________________________________________________________________________
#define LONSTD 1024 // Longitud de memoria estandar
#define LONINT 16 // Longitud de memoria estandar para un número entero
#define LONFIL 256 // Longitud de memoria estandar para nombres de archivo completos (incluido path)
#define LONIP 16 // Longitud de memoria estandar para cadenas que contiene una dirección IP
#define LONMAC 16 // Longitud de memoria estandar para cadenas que contiene una dirección MAC
#define LONSQL 4096 // Longitud de memoria estandar para una sentencia SQL
#define LONPRM 512 // Longitud estandar de los parámetros del fichero de configuración del servicio
#define LONSCP 2024 // Longitud estandar de los parámetros de las tramas
#define LONFUN 64 // Longitud estandar de los nombres de las funciones que procesan las tramas
#define LONSUC 512 // Longitud de los mensajes de sucesos
#define LONBLK 512 // Longitud de los paquetes de tramas leidos cada vez
#define MAXPRM 10 // Máximo número de parámeros del fichero de configuración del servicio
#define MAXPAR 16 // Máximo número de particiones manejadas por el sistema
#define MAXLONURL 512 // Longitud máxima de una dirección url con parámetros
#define LONHEXPRM 5 // Longitud del campo que contiene el tamaño de la cadena de parámetros
#define LONGITUD_CABECERATRAMA 16 // Longitud de la cabecera de las tramas
#define LONGITUD_PARAMETROS 1024 // Longitud estandar de la información de la trama (parámetros)
#define MAXCMD_PARAMETROS 200 // Máximo número de parámetros de una trama
#define MAXIMOS_CLIENTES 4000 // Máximo número de conexiones con ordenadores clientes
#define MAXIMAS_FUNCIONES LONSTD // Máximo número de funciones que procesan los mensajes entre servicio y clientes
#define MAXIMAS_LINEAS 3000 // Longitud máxima de lineas en un archivo de comandos
#define AUTOINCORPORACION_OFF 0x0000 // Los ordenadores no se pueden dar de alta automáticamente
#define AUTOINCORPORACION_ONA 0x0001 // Los ordenadores se pueden dar de alta automáticamente si existe el aula
#define AUTOINCORPORACION_ONX 0x0002 // Los ordenadores se pueden dar de alta automáticamentee y si no existe el aula la crea
#define DEBUG_BAJO 1 // Nivel de debug bajo
#define DEBUG_MEDIO 2 // Nivel de debug medio
#define DEBUG_ALTO 3 // Nivel de debug alto
#define DEBUG_MAXIMO 4 // Nivel de debug máximo
#define CLIENTE_OCUPADO "BSY" // Cliente ocupado
#define CLIENTE_APAGADO "OFF" // Cliente apagado
#define CLIENTE_INICIANDO "INI" // Cliente iniciando
#define CLIENTE_OPENGNSYS "OPG" // Cliente Opengnsys
#define CLIENTE_WIN "WIN" // Cliente Windows genérico
#define CLIENTE_WNT "WNT" // Windows NT
#define CLIENTE_W2K "W2K" // Windows 2000
#define CLIENTE_WS2 "WS2" // Windows Server 2003
#define CLIENTE_WXP "WXP" // Cliente Windows XP
#define CLIENTE_W95 "W95" // Windows 95
#define CLIENTE_W98 "W98" // Windows 98
#define CLIENTE_WML "WML" // Windows Milenium
#define CLIENTE_MS2 "MS2" // MsDos
#define CLIENTE_WVI "WVI" // Cliente Windows Vista
#define CLIENTE_WI7 "WI7" // Cliente Windows 7
#define CLIENTE_LNX "LNX" // Cliente Linux
#define ACCION_SINRESULTADO 0 // Sin resultado
#define ACCION_EXITOSA 1 // Finalizada con éxito
#define ACCION_FALLIDA 2 // Finalizada con errores
#define ACCION_INICIADA 1 // Acción activa
#define ACCION_DETENIDA 2 // Acción momentanemente parada
#define ACCION_FINALIZADA 3 // Accion finalizada
#define EJECUCION_COMANDO 1
#define EJECUCION_PROCEDIMIENTO 2
#define EJECUCION_TAREA 3
#define EJECUCION_RESERVA 4
#define AMBITO_CENTROS 0x01
#define AMBITO_GRUPOSAULAS 0x02
#define AMBITO_AULAS 0x04
#define AMBITO_GRUPOSORDENADORES 0x08
#define AMBITO_ORDENADORES 0x10
// Código de los tipos de mensajes
#define MSG_COMANDO '1' // Mensaje del tipo comando
#define MSG_NOTIFICACION '2' // Respuesta a la ejecución un comando
#define MSG_PETICION '3' // Petición de cualquier actuación
#define MSG_RESPUESTA '4' // Respuesta a una petición
#define MSG_INFORMACION '5' // Envío de cualquier información sin espera de confirmación o respuesta
#define ANNOREF 2009 // Año de referencia base
#define LONGITUD_SCRIPTSALIDA 512 // Longitud máxima de la información devuelta por una función de interface
#define MAXARGS 16 // Número máximo de argumentos enviados a un scripts
#define MAXCNX 5 // Máximos intentos de conexión al servidor de Administración
#define PUERTO_WAKEUP 9 // Puerto wake up
#define MAXHARDWARE 128 // Máximos elementos hardware a detectar
#define MAXSOFTWARE 2048 // Máximos elementos software a detectar
// ________________________________________________________________________________________________________
// Tipos definidos
// ________________________________________________________________________________________________________
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef int BOOLEAN;
typedef char BYTE;
typedef int SOCKET;
typedef void* LPVOID;
#define TRUE 1
#define FALSE 0
#define SOCKET_ERROR (-1)
#define INVALID_SOCKET (SOCKET)(~0)
#define LEER 0
#define ESCRIBIR 1
#define CHARNULL '\0'
// ________________________________________________________________________________________________________
// Variables globales
// ________________________________________________________________________________________________________
char szPathFileCfg[LONSTD],szPathFileLog[LONSTD];
int ndebug; // Nivel de debuger
typedef struct{ // Estructura de las tramas
char arroba; // Caracter arroba siempre
char identificador[14]; // Identificador de la trama, siempre JMMLCAMDJ_MCDJ
char tipo; // Tipo de mensaje
int lonprm; // Longitud en hexadecimal de los parámetros
char *parametros; // Parámetros de la trama
}TRAMA;
// ________________________________________________________________________________________________________
// Tabla de errores
// ________________________________________________________________________________________________________
const char* tbErrores[]={"Se han generado errores. No se puede continuar la ejecución de este módulo",\
"001-El nombre del fichero de configuración del programa está vacío",\
"002-No existe fichero de configuración del programa",\
"003-No hay memoria suficiente para el buffer",\
"004-Error en el fichero de configuración del programa. No se ha definido el parámetro SERVIDORADM",\
"005-Error en el fichero de configuración del programa. No se ha definido el parámetro PUERTO",\
"006-Error en el fichero de configuración del programa. No se ha definido el parámetro USUARIO",\
"007-Error en el fichero de configuración del programa. No se ha definido el parámetro PASSWORD",\
"008-Error en el fichero de configuración del programa. No se ha definido el parámetro DATASOURCE",\
"009-Error en el fichero de configuración del programa. No se ha definido el parámetro CATALOG",\
"010-Error en los parámetros de ejecución del programa. Debe especificar el fichero de configuración",\
"011-Error en los parámetros de ejecución del programa. Debe especificar el fichero de log",\
"012-Error de sintaxis en los parámetros de ejecución del programa: Debe especificar -f nombre_del_fichero_de_configuración_del_programa -l nombre_del_fichero_de_log_del_programa -d nivel de debug",\
"013-Error al crear socket ***socket() fallo",\
"014-Error al enlazar socket al interface ***bind() fallo",\
"015-Error al acceptar conexión de clientes ***accept() fallo",\
"016-Error al crear hebra de cliente en módulo main()",\
"017-Error al recibir trama ***recv() fallo",\
"018-No se reconoce el mensaje enviado",\
"019-Trama recibida NO válida",\
"020-No se puede establecer conexión con la base de datos",\
"021-No se han podido recuperar los datos de la consulta o bien insertar, modificar o eliminar datos",\
"022-El cliente no se ha sido dado de alta en la base de datos del sistema. Se rechaza su petición de inclusión",\
"023-Ha habido algún problema en la incorporación automática del cliente",\
"024-Ha habido algún problema en la actualización de la configuración del cliente",\
"025-La tabla de clientes está llena, no pueden registrarse más clientes en el sistema",\
"026-Error al enviar trama ***send() fallo",\
"027-No se encuentra Repositorio del cliente",\
"028-Ha ocurrido algún error al tomar las particiones",\
"029-Ha ocurrido algún problema en el proceso de inclusión del cliente. Se rechaza su petición",\
"030-Ha ocurrido algún problema en el proceso de respuesta al comando",\
"031-No se ha encontrado la acción a notificar es posible que se haya eliminado el registro",\
"032-Ha ocurrido algún problema en el envío del comando",\
"033-Error en el fichero de configuración del programa. No se ha definido el parámetro PATHSCRIPTS",\
"034-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMENU",\
"035-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMSG",\
"036-No se ha podido recuperar la configuración de las particiones del disco",\
"037-Ha ocurrido algún problema en el proceso de inclusión del cliente",\
"038-No se ha podido establecer conexión con el Servidor de Administración",\
"039-Ha ocurrido algún problema al procesar la trama recibida",\
"040-Se han recibido parámetros conurl valores no válidos",\
"041-Ha ocurrido algún problema en el proceso de inclusión del cliente",\
"042-Ha ocurrido algún problema al enviar una petición de comandos o tareas pendientes al Servidor de Administración",\
"043-Ha ocurrido algún problema al enviar una petición de comandos interactivos al Servidor de Administración",\
"044-Ha ocurrido algún problema al enviar una respuesta de comandos al servidor",\
"045-Ha ocurrido algún problema al recibir una petición de comandos o tareas pendientes desde el Servidor de Administración",\
"046-Ha ocurrido algún problema al recibir un comando interactivo desde el Servidor de Administración",\
"047-El cliente no está registrado en la tabla de sockest del sistema",\
"048-Error al configurar opción BROADCAST para socket: setsockopt(SO_BROADCAST)",\
"049-Error al enviar trama magic packet",\
"050-Ha ocurrido algún problema al enviar un fichero por la red",\
"051-Error en el fichero de configuración del programa. No se ha definido el parámetro PATHLOGFIL",\
"052-No se puede crear archivo temporal para ejecución de Comandos",\
"053-Ha ocurrido algún problema al procesar el Inventario Hardware del cliente",\
"054-Existe un tipo de hardware que no está registrado",\
"055-Ha ocurrido algún problema al actualizar el hardware del cliente",\
"056-Error en el fichero de configuración del programa. No se ha definido el parámetro PATHINTERFACE",\
"057-Ha ocurrido algún problema al enviar un archivo por la red",\
"058-Ha ocurrido algún problema al recibir un archivo por la red",\
"059-Error al crear la hebra DHCP o BOOTP",\
"060-Error al crear la hebra TFTP",\
"061-Error al crear socket para servicio DHCP",\
"062-Error al enlazar socket con interface para servicio DHCP",\
"063-No hay puertos libres para la hebra del servicio",\
"064-Error al crear estructura de control para protocolo DHCP",\
"065-Error al recibir mensaje DHCP. Se para el servicio",\
"066-Error al crear la hebra cliente DHCP",\
"067-Error al crear socket para servicio BOOTP",\
"068-Error al enlazar socket con interface para servicio BOOTP",\
"069-Error al crear estructura de control para protocolo BOOTP",\
"070-Error al recibir mensaje BOOTP. Se para el servicio",\
"071-Error al crear la hebra cliente BOOTP",\
"072-Error al crear socket para servicio TFTP",\
"073-Error al enlazar socket con interface para servicio TFTP",\
"074-Error al crear estructura de control para protocolo TFTP",\
"075-Error al recibir mensaje TFTP. Se para el servicio",\
"076-Error al crear la hebra cliente TFTP",\
"077-No se encontró opción DHCP",\
"078-ERROR TFTP",\
"079-Error al recibir mensaje TFTP en hebra cliente",\
"080-Error al recibir mensaje DHCP",\
"081-Error al crear socket de usuario para hebra",\
"082-Ha ocurrido algún problema al procesar el Inventario software del cliente",\
"083-Ha ocurrido algún problema al actualizar el software del cliente",\
"084-Ha ocurrido algún problema al reiniciar la sesión del cliente",\
"085-No se ha podido recuperar la dirección IP del cliente",\
"086-Error al ejecutar el comando",\
"087-Error al leer o escribir el contenido del archivo de eco de consola remota",\
"088-Ha habido algún problerma al procesar la caché",\
"089-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMENU",\
"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",\
};
// ________________________________________________________________________________________________________
// Tabla de mensajes
// ________________________________________________________________________________________________________
const char* tbMensajes[]={"",\
"001-Inicio de sesion",\
"002-Petición de inclusión de cliente",\
"003-Abriendo sesión en el servidor de Administración",\
"004-Cliente iniciado",\
"005-Ejecución de archivo Autoexec",\
"006-Procesa comandos pendientes",\
"007-Acciones pendientes procesadas",\
"008-Ejecución del script",\
"009-Parámetro del script",\
"010-Ha ocurrido algún error en la creación del proceso hijo",\
"011-Aviso: La información de salida del script excede de la longitud permitida. Puede haberse truncado",\
"012-Información devuelta por el script",\
"013-Estatus de finalización del script",\
"014-Configuración de particiones",\
"015-Enviando petición de inclusión en el sistema al Servidor de Administración",\
"016-Recibiendo respuesta de inclusión desde el Servidor de Administración",\
"017-Enviando petición de comandos o tareas pendientes al Servidor de Administración",\
"018-Recibiendo respuesta de comandos o tareas pendientes desde el Servidor de Administración",\
"019-Disponibilidad de comandos activada",\
"020-Disponibilidad de comandos desactivada",\
"021-Ejecución de comando",\
"022-Sin eco",\
"023-Procesando caché",\
"024-Repositorio iniciado",\
};
// ________________________________________________________________________________________________________
// Prototipo de funciones
// ________________________________________________________________________________________________________
char *desencriptar(char *,int*);
char *encriptar(char *,int*);
struct tm * tomaHora();
void registraLog(const char *,const char *,int );
void errorLog(const char *,int ,int);
void errorInfo(const char *,char *);
void infoLog(int);
void infoDebug(char*);
BOOLEAN validacionParametros(int,char**,int);
char* reservaMemoria(int);
char* ampliaMemoria(char*,int);
void liberaMemoria(char*);
BOOLEAN initParametros(TRAMA*,int);
int splitCadena(char **,char *, char);
void sustituir(char *,char ,char );
char* StrToUpper(char *);
char* StrToLower(char *);
void INTROaFINCAD(TRAMA*);
void FINCADaINTRO(TRAMA*);
int cuentaIPES(char*);
char *tomaParametro(const char*,TRAMA*);
char *copiaParametro(const char*,TRAMA *);
BOOLEAN contieneIP(char *,char *);
char* rTrim(char *);
SOCKET TCPConnect(char *,char *);
SOCKET abreConexion(void);
BOOLEAN enviaMensaje(SOCKET *,TRAMA *,char);
TRAMA* recibeMensaje(SOCKET *);
BOOLEAN mandaTrama(SOCKET*,TRAMA*);
BOOLEAN sendData(SOCKET *, char* ,int );
BOOLEAN enviaTrama(SOCKET *,TRAMA *);
TRAMA* recibeTrama(SOCKET*);
BOOLEAN recData(SOCKET *,char*,int,int*);
BOOLEAN sendFlag(SOCKET *, char* ,int );
BOOLEAN recibeFlag(SOCKET*,TRAMA*);
char* URLEncode(char *);
char* URLDecode(char *);
char* leeArchivo(char*);
int lonArchivo(char *);
BOOLEAN escribeArchivo(char *,char*);
BOOLEAN sendArchivo(SOCKET *,char *);
BOOLEAN recArchivo(SOCKET *,char *);
SOCKET TCPConnect(char *,char*);

View File

@ -0,0 +1,43 @@
# makefile
# Nombre del proyecto
PROYECTO := ogAdmAgent
# Directorio de instalación
INSTALL_DIR := /opt/opengnsys
# Opciones de compilacion
CFLAGS := -O0 -g -Wall -I../../Includes # Depuracion
#CFLAGS := -O3 -Wall # Optimizacion
CPPFLAGS := $(CFLAGS)
# Opciones de linkado
LDFLAGS := -L/usr/lib -L/usr/lib/mysql -lpthread -lmysqlclient
# Ficheros objetos
OBJS := ../../Includes/Database.o sources/ogAdmAgent.o
all: $(PROYECTO)
$(PROYECTO): $(OBJS)
g++ $(LDFLAGS) $(OBJS) -o $(PROYECTO)
# strip $(PROYECTO) # Optimizacion
install: $(PROYECTO)
cp $(PROYECTO) $(INSTALL_DIR)/sbin
cp $(PROYECTO).cfg $(INSTALL_DIR)/etc
clean:
rm -f $(PROYECTO) $(OBJS)
uninstall: clean
rm -f /usr/local/sbin/$(PROYECTO) /usr/local/etc/$(PROYECTO).cfg
sources/%.o: sources/%.cpp
g++ $(CPPFLAGS) -c -o"$@" "$<"
sources/%.o: sources/%.c
gcc $(CFLAGS) -c -o"$@" "$<"

View File

@ -0,0 +1,7 @@
ServidorAdm=SERVERIP
PUERTO=2008
USUARIO=usuog
PASSWORD=passusuog
datasource=localhost
CATALOG=ogAdmBD

View File

@ -0,0 +1,905 @@
// ********************************************************************************************************
// Servicio: ogAdmAgent
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Nombre del fichero: ogAdmAgent.cpp
// Descripción: Este fichero implementa el servicio agente del sistema. Revisa a intervalos
// regulares la base de datos para comprobar si existen acciones programadas.
// ********************************************************************************************************
#include "ogAdmAgent.h"
#include "ogAdmLib.c"
//________________________________________________________________________________________________________
// Función: tomaConfiguracion
//
// Descripción:
// Lee el fichero de configuración del servicio
// Parámetros:
// filecfg : Ruta completa al fichero de configuración
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
//________________________________________________________________________________________________________
BOOLEAN tomaConfiguracion(char* filecfg)
{
char modulo[] = "tomaConfiguracion()";
if (filecfg == NULL || strlen(filecfg) == 0) {
errorLog(modulo, 1, FALSE); // Fichero de configuración del servicio vacío
return (FALSE);
}
FILE *fcfg;
long lSize;
char * buffer, *lineas[MAXPRM], *dualparametro[2];
int i, numlin, resul;
fcfg = fopen(filecfg, "rt");
if (fcfg == NULL) {
errorLog(modulo, 2, FALSE); // No existe fichero de configuración del servicio
return (FALSE);
}
fseek(fcfg, 0, SEEK_END);
lSize = ftell(fcfg); // Obtiene tamaño del fichero.
rewind(fcfg);
buffer = (char*) reservaMemoria(lSize + 1); // Toma memoria para el buffer de lectura.
if (buffer == NULL) { // No hay memoria suficiente para el buffer
errorLog(modulo, 3, FALSE);
return (FALSE);
}
fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero
buffer[lSize] = (char) NULL;
fclose(fcfg);
servidoradm[0] = (char) NULL; //inicializar variables globales
puerto[0] = (char) NULL;
usuario[0] = (char) NULL;
pasguor[0] = (char) NULL;
datasource[0] = (char) NULL;
catalog[0] = (char) NULL;
numlin = splitCadena(lineas, buffer, '\n');
for (i = 0; i < numlin; i++) {
splitCadena(dualparametro, lineas[i], '=');
resul = strcmp(StrToUpper(dualparametro[0]), "SERVIDORADM");
if (resul == 0)
strcpy(servidoradm, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO");
if (resul == 0)
strcpy(puerto, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "USUARIO");
if (resul == 0)
strcpy(usuario, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "PASSWORD");
if (resul == 0)
strcpy(pasguor, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "DATASOURCE");
if (resul == 0)
strcpy(datasource, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "CATALOG");
if (resul == 0)
strcpy(catalog, dualparametro[1]);
}
if (servidoradm[0] == (char) NULL) {
errorLog(modulo, 4, FALSE); // Falta parámetro SERVIDORADM
return (FALSE);
}
if (puerto[0] == (char) NULL) {
errorLog(modulo, 5, FALSE); // Falta parámetro PUERTO
return (FALSE);
}
if (usuario[0] == (char) NULL) {
errorLog(modulo, 6, FALSE); // Falta parámetro USUARIO
return (FALSE);
}
if (pasguor[0] == (char) NULL) {
errorLog(modulo, 7, FALSE); // Falta parámetro PASSWORD
return (FALSE);
}
if (datasource[0] == (char) NULL) {
errorLog(modulo, 8, FALSE); // Falta parámetro DATASOURCE
return (FALSE);
}
if (catalog[0] == (char) NULL) {
errorLog(modulo, 9, FALSE); // Falta parámetro CATALOG
return (FALSE);
}
return (TRUE);
}
// ________________________________________________________________________________________________________
//
// Función: diadelaSemana
//
// Descripción:
// Calcula el número del día de la semana que corresponde a una fecha
// Parámetros:
// - dia: Un día
// - mes: Un mes
// - anno: Un año
// Devuelve:
// El número del día de la semana: 1=Lunes, 2=martes ... 6=sábado 7=domingo
// ________________________________________________________________________________________________________
int diadelaSemana(WORD dia,WORD mes,WORD anno)
{
int i,cont,dias_anuales;
int desplazamiento_dias=6;
int orddiasem;
cont =0;
for (i=1900;i<anno;i++){
if (bisiesto(i)) dias_anuales=366; else dias_anuales=365;
cont+=dias_anuales;
}
for (i=1;i<mes;i++){
if (i!=2)
cont+=dias_meses[i];
else{
if (bisiesto(anno))
cont+=29;
else
cont+=28;
}
}
cont+=dia+desplazamiento_dias;
orddiasem=(cont%7);
if(orddiasem==0) orddiasem=7;
return(orddiasem);
}
// ________________________________________________________________________________________________________
//
// Función: bisiesto
//
// Descripción:
// Calcula si un año es bisiesto o no lo es
// Parámetros:
// - anno: Un año
// Devuelve:
// TRUE si el año es bisiesto
// FALSE si no es bisiesto
// ________________________________________________________________________________________________________
BOOLEAN bisiesto(WORD anno){
return(anno%4==0);
}
// ________________________________________________________________________________________________________
//
// Función: semanadelMes
//
// Descripción:
// Calcula el número de semana perteneciente a un día del mes
// Parámetros:
// - ordiasem_1: Orden semanal (1,2...) del primer dia del mes que se pasa como parámetro
// - diames: El mes concreto
// Devuelve:
// El número del día de la semana: 1=Lunes, 2=martes ... 6=sábado 7=domingo , de ese mes
// ________________________________________________________________________________________________________
int semanadelMes(int ordiasem_1,int diames)
{
int nwdia,resto,cociente;
nwdia=diames+ordiasem_1-1;
cociente=nwdia/7;
resto=nwdia%7;
if(resto>0) cociente++;
return(cociente);
}
// ________________________________________________________________________________________________________
//
// Función: buscaAccion
//
// Descripción:
// Busca en la base de datos, acciones programadas
// Parámetros:
// - db: Objeto base de datos (operativo)
// - dia : Día actual del mes
// - mes : mes en curso
// - anno : Año en curso
// - hora : Hora actual
// - minutos : Minutos actuales
// - diasemana : Dia de la semana 1=lunes,2=martes ... ( 0 Domingo)
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
// ________________________________________________________________________________________________________
BOOLEAN buscaAccion(Database db,WORD dia,WORD mes,WORD anno,WORD hora,WORD minutos,WORD diasemana)
{
char msglog[LONSTD], sqlstr[LONSQL];
Table tbl;
BYTE swampm,bitsemana;
int ordsem,ordulsem,ordiasem_1,maxdias;
int sesionprog;
char modulo[] = "buscaAccion()";
/* Año de comienzo */
anno=anno-ANNOREF; //
/* Preparación hora */
if(hora>11){
hora-=12;
swampm=1; // Es P.M.
}
else
swampm=0; // Es am
/* Preparación semana */
if(diasemana==0) diasemana=7; // El domingo
// Cuestión semanas
ordiasem_1=diadelaSemana(1,mes,anno+2009);
ordsem=semanadelMes(ordiasem_1,dia); // Calcula el número de la semana
if (mes!=2) // Toma el último día de ese mes
maxdias=dias_meses[mes];
else{
if (bisiesto(anno+ANNOREF))
maxdias=29;
else
maxdias=28;
}
ordulsem=semanadelMes(ordiasem_1,maxdias); // Calcula el número de la última semana
bitsemana=HEX_semanas[ordsem];
if(ordsem==ordulsem) // Si es la última semana del mes
bitsemana|=HEX_semanas[6];
sprintf(sqlstr,"SELECT DISTINCT idprogramacion,tipoaccion,identificador,sesion,idcentro,"\
"tareas.descripcion as descritarea"\
" FROM programaciones"\
" LEFT OUTER JOIN tareas ON tareas.idtarea=programaciones.identificador"\
" WHERE suspendida=0 "\
" AND (annos & %d <> 0) "\
" AND (meses & %d<>0) "\
" AND ((diario & %d<>0) OR (dias & %d<>0) OR (semanas & %d<>0))"\
" AND (horas & %d<>0) AND ampm=%d AND minutos=%d",\
HEX_annos[anno],\
HEX_meses[mes],\
HEX_dias[dia],\
HEX_diasemana[diasemana],\
bitsemana,\
HEX_horas[hora],\
swampm,minutos);
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(tbl.ISEOF()){
return(TRUE); // No hay acciones programadas
}
while(!tbl.ISEOF()){
if(!tbl.Get("idprogramacion",idprogramacion)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("tipoaccion",tipoaccion)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("identificador",idtipoaccion)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("sesion",sesionprog)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("idcentro",idcentro)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(tipoaccion==EJECUCION_COMANDO){ // Es una programación de un comando
return(ejecutarComando(db,idprogramacion,sesionprog));
}
else{
if(tipoaccion==EJECUCION_TAREA){
if(!tbl.Get("descritarea",descriaccion)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
return(ejecutarTarea(db,idprogramacion,idtipoaccion));
}
else{
if(tipoaccion==EJECUCION_RESERVA){
EjecutarReserva(idtipoaccion,db); // Es una programación de un trabajo
}
}
}
tbl.MoveNext();
}
return(TRUE);
}
// ________________________________________________________________________________________________________
//
// Función: ejecutarComando
//
// Descripción:
// Ejecuta un comando programado
// Parámetros:
// - db: Objeto base de datos (operativo)
// - idcomando: Identificador del comando
// - sesion: Sesión correspondiente al comando cuando se grabó en la tabla acciones
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
// ________________________________________________________________________________________________________
BOOLEAN ejecutarComando(Database db,int idprogramacion,int sesion )
{
struct tm* st;
char msglog[LONSTD], sqlstr[LONSQL];
char fechahorareg[24];
char modulo[] = "ejecutarComando()";
st = tomaHora();
sprintf(fechahorareg,"%d/%d/%d %d:%d:%d", st->tm_year + 1900, st->tm_mon + 1,
st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec);
sprintf(sqlstr,"UPDATE acciones SET estado=%d,idprogramacion=%d,fechahorareg='%s'"\
" WHERE sesion=%d", ACCION_INICIADA,idprogramacion,fechahorareg,sesion);
if (!db.Execute(sqlstr)) { // Error al recuperar los datos
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
return(enviaPeticion(idprogramacion));
}
// ________________________________________________________________________________________________________
//
// Función: ejecutarProcedimiento
//
// Descripción:
// Ejecuta un procedimiento programado
// Parámetros:
// - db: Objeto base de datos (operativo)
// - idprocedimiento: Identificador del procedimiento
// - ambito: Ámbito de aplicación
// - idambito: Identificador del ámbito
// - restrambito: cadena con los identificadores de los ordenadores a los que se aplica la acción
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
// ________________________________________________________________________________________________________
BOOLEAN ejecutarProcedimiento(Database db,int idprocedimiento,int ambito,int idambito,char* restrambito)
{
char msglog[LONSTD], sqlstr[LONSQL],*parametros;
Table tbl;
int procedimientoid,idcomando,lonprm;
char modulo[] = "ejecutarProcedimiento()";
sprintf(sqlstr,"SELECT idcomando,procedimientoid,parametros,length(parametros) as lonprm"\
" FROM procedimientos_acciones"\
" WHERE idprocedimiento=%d ORDER BY orden",idprocedimiento);
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(tbl.ISEOF()){
return(TRUE); // No exustde tarea
}
while(!tbl.ISEOF()){
if(!tbl.Get("procedimientoid",procedimientoid)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(procedimientoid>0){ // Procedimiento recursivo
if(!ejecutarProcedimiento(db,procedimientoid,ambito,idambito,restrambito)){
return(false);
}
}
else{
if(!tbl.Get("lonprm",lonprm)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
parametros = reservaMemoria(lonprm+1); // Reserva para almacenar los parametros del procedimiento
if (parametros == NULL) {
errorLog(modulo, 3, FALSE);
return (FALSE);
}
if(!tbl.Get("parametros",parametros)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("idcomando",idcomando)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!insertaComando(db,idcomando,parametros,idprocedimiento,ambito,idambito,restrambito))
return(false);
}
tbl.MoveNext();
}
return(TRUE);
}
// ________________________________________________________________________________________________________
//
// Función: ejecutarTarea
//
// Descripción:
// Ejecuta una tarea programada
// Parámetros:
// - db: Objeto base de datos (operativo)
// - idtarea: Identificador de la tarea
// - idprogramacion: Identificador de la programación
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
// ________________________________________________________________________________________________________
BOOLEAN ejecutarTarea(Database db, int idprogramacion, int idtarea)
{
char msglog[LONSTD], sqlstr[LONSQL];
Table tbl;
int tareaid,ambito,idambito,idprocedimiento,lonrestrambito;
char* restrambito;
char modulo[] = "ejecutarTarea()";
sprintf(sqlstr,"SELECT tareas_acciones.orden,tareas_acciones.idprocedimiento,tareas_acciones.tareaid,"\
" tareas.ambito,tareas.idambito,tareas.restrambito,length(tareas.restrambito) as lonrestrambito"\
" FROM tareas"\
" INNER JOIN tareas_acciones ON tareas_acciones.idtarea=tareas.idtarea"\
" WHERE tareas_acciones.idtarea=%d ORDER BY tareas_acciones.orden",idtarea);
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(tbl.ISEOF()){
return(TRUE); // No existe tarea
}
while(!tbl.ISEOF()){
if(!tbl.Get("tareaid",tareaid)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(tareaid>0){ // Tarea recursiva
if(!ejecutarTarea(db,idprogramacion,tareaid)){
return(false);
}
}
else{
if(!tbl.Get("ambito",ambito)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("idambito",idambito)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("lonrestrambito",lonrestrambito)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
restrambito = reservaMemoria(lonrestrambito+1);
if (restrambito == NULL) {
errorLog(modulo, 3, FALSE);
return (FALSE);
}
if(!tbl.Get("restrambito",restrambito)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
RecopilaIpesMacs(db,ambito,idambito,restrambito); // Recopila Ipes del ámbito
if(!tbl.Get("idprocedimiento",idprocedimiento)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
sesion=time(NULL);
if(!ejecutarProcedimiento(db,idprocedimiento,ambito,idambito,restrambito))
return(FALSE);
}
tbl.MoveNext();
}
return(enviaPeticion(idprogramacion));
}
// ________________________________________________________________________________________________________
//
// Función: ejecutarTarea
//
// Descripción:
// Registra un procedimiento para un ambito concreto
// Parámetros:
// - db: Objeto base de datos (operativo)
// - idcomando: Identificador del comando
// - idprocedimiento: Identificador del procedimiento
// - ambito: Ámbito de aplicación
// - idambito: Identificador del ámbito
// - restrambito: cadena con los identificadores de los ordenadores a los que se aplica la acción
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
//________________________________________________________________________________________________________
BOOLEAN insertaComando(Database db,int idcomando,char*parametros,int idprocedimiento,int ambito,int idambito,char*restrambito)
{
char msglog[LONSTD], sqlstr[LONSQL];
struct tm* st;
char *auxID[MAXIMOS_CLIENTES],*auxIP[MAXIMOS_CLIENTES];
char fechahorareg[24];
int i;
char modulo[] = "insertaComando()";
if(concli==0) return(TRUE); // No hay ordenadores en el ámbito
st = tomaHora();
sprintf(fechahorareg,"%d/%d/%d %d:%d:%d", st->tm_year + 1900, st->tm_mon + 1, st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec);
splitCadena(auxID,cadenaid,',');
splitCadena(auxIP,cadenaip,';');
for (i=0;i<concli;i++){
sprintf(sqlstr,"INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,"\
"sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,"\
"restrambito,idprocedimiento,idcentro,idprogramacion)"\
" VALUES (%s,%d,%d,'%s','%s',%d,%d,'%s','%s',%d,%d,%d,%d,'%s',%d,%d,%d)",\
auxID[i],tipoaccion,idtipoaccion,descriaccion,auxIP[i],sesion,idcomando,parametros,fechahorareg,\
ACCION_INICIADA,ACCION_SINRESULTADO,ambito,idambito,restrambito,idprocedimiento,idcentro,idprogramacion);
if (!db.Execute(sqlstr)) { // Error al recuperar los datos
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
}
return(TRUE);
}
// _____________________________________________________________________________________________________________
// Función: EjecutarReserva
//
// Descripción:
// Registra una acción (Tarea) y la envía para su ejecución
// Parámetros:
// - idreserva : Identificador de la reserva
// - db: una conexion ADO operativa
// - parametros: Parámetros de la acción
// _____________________________________________________________________________________________________________
BOOLEAN EjecutarReserva(int idreserva,Database db )
{
return(true);
}
// _____________________________________________________________________________________________________________
// Función: enviaPeticion
//
// Descripción:
// Hace una petición al servidor para que actualice los ordenadores implicados en la programación
// Parámetros:
// - idprogramacion: Identificador de la programación
// _____________________________________________________________________________________________________________
BOOLEAN enviaPeticion(int idprogramacion)
{
int lon;
TRAMA *ptrTrama;
SOCKET socket_c;
char modulo[] = "enviaPeticion()";
/* Envio de comandos a clientes */
ptrTrama=(TRAMA *)reservaMemoria(sizeof(TRAMA));
if (ptrTrama == NULL) { // No hay memoria suficiente para el bufer de las tramas
errorLog(modulo, 3, FALSE);
return(FALSE);
}
initParametros(ptrTrama,0);
lon=sprintf(ptrTrama->parametros,"nfn=envioProgramacion\r"); // Nombre de la función a ejecutar en el servidor
lon+=sprintf(ptrTrama->parametros+lon,"idp=%d\r",idprogramacion); // Configuración de los Sistemas Operativos del cliente
if(!enviaMensaje(&socket_c,ptrTrama,MSG_PETICION)){
errorLog(modulo,91,FALSE);
return(FALSE);
}
return(TRUE);
}
// _____________________________________________________________________________________________________________
//
// Función: RecopilaIpesMacs
//
// Descripción :
// Recopila las IPes, las Macs y los identificadores de ordenadores de un ámbito determinado
//
// Especificaciones:
// Esta Función recibe tres parámatros:
// db : Un objeto Base de datos totalmente operativo
// ambito: Tipo de ámbito
// idambito: Identificador del ámbito
// Devuelve:
// Todas los identificadores de ordenadores , las ipes y las macs de los ordenadores que componen el ámbito
// Para ellos habrá que tener declarada tres variables globales :
// cadenaid,cadenaip y cadenamac
// _____________________________________________________________________________________________________________
BOOLEAN RecopilaIpesMacs(Database db,int ambito,int idambito,char *restrambito)
{
char sqlstr[LONSQL];
concli=0;
/* Reserva memoria al meno para caracter nulo */
cadenaid=(char*) reservaMemoria(1);
cadenaip=(char*) reservaMemoria(1);
cadenamac=(char*) reservaMemoria(1);
switch(ambito){
case AMBITO_CENTROS :
sprintf(sqlstr,"SELECT idcentro FROM centros WHERE idcentro=%d",idambito);
RecorreCentro(db,sqlstr);
break;
case AMBITO_GRUPOSAULAS :
sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE idgrupo=%d AND tipo=%d",idambito,AMBITO_GRUPOSAULAS);
RecorreGruposAulas(db,sqlstr);
break;
case AMBITO_AULAS :
sprintf(sqlstr,"SELECT idaula FROM aulas WHERE idaula=%d",idambito);
RecorreAulas(db,sqlstr);
break;
case AMBITO_GRUPOSORDENADORES :
sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE idgrupo=%d",idambito);
RecorreGruposOrdenadores(db,sqlstr);
break;
case AMBITO_ORDENADORES :
sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idordenador=%d",idambito);
RecorreOrdenadores(db,sqlstr);
break;
default: // Se trata de un conjunto aleatorio de ordenadores
sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idordenador IN (%s)",restrambito);
RecorreOrdenadores(db,sqlstr);
}
return (TRUE);
}
//________________________________________________________________________________________________________
BOOLEAN RecorreCentro(Database db, char* sqlstr)
{
char msglog[LONSTD];
Table tbl;
int idcentro;
char modulo[] = "RecorreCentro()";
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.ISEOF()){
if(!tbl.Get("idcentro",idcentro)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE idcentro=%d AND grupoid=0 AND tipo=%d",idcentro,AMBITO_GRUPOSAULAS);
RecorreGruposAulas(db,sqlstr);
sprintf(sqlstr,"SELECT idaula FROM aulas WHERE idcentro=%d AND grupoid=0",idcentro);
RecorreAulas(db,sqlstr);
}
return (TRUE);
}
//________________________________________________________________________________________________________
BOOLEAN RecorreGruposAulas(Database db, char* sqlstr)
{
char msglog[LONSTD];
Table tbl;
int idgrupo;
char modulo[] = "RecorreGruposAulas()";
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
while(!tbl.ISEOF()){
if(!tbl.Get("idgrupo",idgrupo)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE grupoid=%d AND tipo=%d",idgrupo,AMBITO_GRUPOSAULAS);
RecorreGruposAulas(db,sqlstr);
sprintf(sqlstr,"SELECT idaula FROM aulas WHERE grupoid=%d",idgrupo);
RecorreAulas(db,sqlstr);
tbl.MoveNext();
}
return (TRUE);
}
//________________________________________________________________________________________________________
BOOLEAN RecorreAulas(Database db, char* sqlstr)
{
char msglog[LONSTD];
Table tbl;
int idaula;
char modulo[] = "RecorreAulas()";
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
while(!tbl.ISEOF()){
if(!tbl.Get("idaula",idaula)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE idaula=%d AND grupoid=0",idaula);
RecorreGruposOrdenadores(db,sqlstr);
sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idaula=%d AND grupoid=0",idaula);
RecorreOrdenadores(db,sqlstr);
tbl.MoveNext();
}
return (TRUE);
}
//________________________________________________________________________________________________________
BOOLEAN RecorreGruposOrdenadores(Database db, char* sqlstr)
{
char msglog[LONSTD];
Table tbl;
int idgrupo;
char modulo[] = "RecorreGruposOrdenadores()";
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
while(!tbl.ISEOF()){
if(!tbl.Get("idgrupo",idgrupo)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE grupoid=%d",idgrupo);
RecorreGruposOrdenadores(db,sqlstr);
sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE grupoid=%d",idgrupo);
RecorreOrdenadores(db,sqlstr);
tbl.MoveNext();
}
return (TRUE);
}
//________________________________________________________________________________________________________
BOOLEAN RecorreOrdenadores(Database db, char* sqlstr)
{
char msglog[LONSTD];
Table tbl;
int idordenador,o,p,m,lon;
char ido[16],ip[LONIP],mac[LONMAC];
char modulo[] = "RecorreOrdenadores()";
if (!db.Execute(sqlstr, tbl)) { // Error al leer
errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
o=p=m=0;
while(!tbl.ISEOF()){
if(!tbl.Get("idordenador",idordenador)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("ip",ip)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
if(!tbl.Get("mac",mac)){
tbl.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
return (FALSE);
}
sprintf(ido,"%d",idordenador);
lon=strlen(ido);
if(lon>16) lon=16;
cadenaid=(char*) ampliaMemoria(cadenaid,o+lon+1);
memcpy(&cadenaid[o],ido,lon);
o+=lon;
cadenaid[o++]=',';
lon=strlen(ip);
if(lon>16) lon=LONIP;
cadenaip=(char*) ampliaMemoria(cadenaip,p+lon+1);
memcpy(&cadenaip[p],ip,lon);
p+=lon;
cadenaip[p++]=';';
lon=strlen(mac);
if(lon>16) lon=LONMAC;
cadenamac=(char*) ampliaMemoria(cadenamac,m+lon+1);
memcpy(&cadenamac[m],mac,lon);
m+=lon;
cadenamac[m++]=';';
concli++;
tbl.MoveNext();
}
if(o>0) o--;
if(p>0) p--;
if(m>0) m--;
cadenaid[o]='\0';
cadenaip[p]='\0';
cadenamac[m]='\0';
return (TRUE);
}
// ********************************************************************************************************
// PROGRAMA PRINCIPAL (SERVICIO)
// ********************************************************************************************************
int main(int argc, char *argv[])
{
int pseg;
char msglog[LONSTD];
struct tm* st;
Database db;
char modulo[] = "main()";
/* Validación de parámetros de ejecución y lectura del fichero de configuración del servicio */
if (!validacionParametros(argc, argv, 5)) // Valida parámetros de ejecución
exit(EXIT_FAILURE);
if (!tomaConfiguracion(szPathFileCfg)) { // Toma parametros de configuracion
exit(EXIT_FAILURE);
}
/* Bucle principal del servicio */
while (TRUE){
st = tomaHora();
pseg=65-st->tm_sec; // Calcula segundos de inactividad de la hebra
sleep(pseg);
// Toma la hora
st = tomaHora();
if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion
errorLog(modulo, 20, FALSE);
db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog);
exit(EXIT_FAILURE);
}
buscaAccion(db,st->tm_mday,st->tm_mon+1,st->tm_year+1900,st->tm_hour,st->tm_min,st->tm_wday );
db.Close(); // Cierra conexión
}
exit(EXIT_SUCCESS);
}

View File

@ -0,0 +1,81 @@
// ********************************************************************************************************
// Servicio: ogAdmAgent
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Nombre del fichero: ogAdmAgent.h
// Descripción: Este fichero implementa el servicio agente del sistema. Revisa a intervalos
// regulares la base de datos para comprobar si existen acciones programadas.
// ********************************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <unistd.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include </usr/include/mysql/mysql.h>
#include "Database.h"
#include "ogAdmLib.h"
// ________________________________________________________________________________________________________
//
// Valores hexadecimales para consultas
// ________________________________________________________________________________________________________
BYTE HEX_annos[]={0,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
WORD HEX_meses[]={0,0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800};
int HEX_dias[]={0,0x00000001,0x00000002,0x00000004,0x00000008,0x00000010,0x00000020,0x00000040,0x00000080,0x00000100,0x00000200,
0x00000400,0x00000800,0x00001000,0x00002000,0x00004000,0x00008000,0x00010000,0x00020000,0x00040000,0x00080000,
0x00100000,0x00200000,0x00400000,0x00800000,0x01000000,0x02000000,0x04000000,0x08000000,0x10000000,0x20000000,0x40000000};
WORD HEX_horas[]={0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800 };
BYTE HEX_diasemana[]={0,0x01,0x02,0x04,0x08,0x10,0x20,0x40};
BYTE HEX_semanas[]={0,0x01,0x02,0x04,0x08,0x10,0x20};
WORD dias_meses[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
// ________________________________________________________________________________________________________
//
// Variables globales
// ________________________________________________________________________________________________________
char servidoradm[LONPRM]; // Dirección IP del servidor de administración
char puerto[LONPRM]; // Puerto de comunicación
char usuario[LONPRM]; // Usuario de acceso a la base de datos
char pasguor[LONPRM]; // Password del usuario
char datasource[LONPRM]; // Dirección IP del gestor de base de datos
char catalog[LONPRM]; // Nombre de la base de datos
int idprogramacion;
int tipoaccion,idtipoaccion;
char descriaccion[250];
char *cadenaid;
char *cadenaip;
char *cadenamac;
int concli;
int sesion;
int idcentro;
// ________________________________________________________________________________________________________
// Prototipo de funciones
// ________________________________________________________________________________________________________
BOOLEAN tomaConfiguracion(char*);
int diadelaSemana(WORD,WORD,WORD);
BOOLEAN bisiesto(WORD);
BOOLEAN buscaAccion(Database,WORD,WORD,WORD,WORD,WORD,WORD);
BOOLEAN ejecutarComando(Database,int,int );
BOOLEAN ejecutarProcedimiento(Database,int,int,int,char*);
BOOLEAN ejecutarTarea(Database,int, int);
BOOLEAN insertaComando(Database,int,char*,int,int,int,char*);
BOOLEAN EjecutarReserva(int,Database);
BOOLEAN enviaPeticion(int);
BOOLEAN RecopilaIpesMacs(Database,int,int,char *);
BOOLEAN RecorreCentro(Database, char*);
BOOLEAN RecorreGruposAulas(Database, char*);
BOOLEAN RecorreAulas(Database, char*);
BOOLEAN RecorreGruposOrdenadores(Database, char*);
BOOLEAN RecorreOrdenadores(Database, char*);

View File

@ -0,0 +1,43 @@
# makefile
# Nombre del proyecto
PROYECTO := ogAdmBoot
# Directorio de instalación
INSTALL_DIR := /opt/opengnsys
# Opciones de compilacion
CFLAGS := -O0 -g -Wall -I../includes # Depuracion
#CFLAGS := -O3 -Wall # Optimizacion
CPPFLAGS := $(CFLAGS)
# Opciones de linkado
LDFLAGS := -L/usr/lib -L/usr/lib/mysql -lpthread -lmysqlclient
# Ficheros objetos
OBJS := ../includes/Database.o sources/ogAdmBoot.o
all: $(PROYECTO)
$(PROYECTO): $(OBJS)
g++ $(LDFLAGS) $(OBJS) -o $(PROYECTO)
# strip $(PROYECTO) # Optimizacion
install: $(PROYECTO)
cp $(PROYECTO) $(INSTALL_DIR)/sbin
cp $(PROYECTO).cfg $(INSTALL_DIR)/etc
clean:
rm -f $(PROYECTO) $(OBJS)
uninstall: clean
rm -f /usr/local/sbin/$(PROYECTO) /usr/local/etc/$(PROYECTO).cfg
sources/%.o: sources/%.cpp
g++ $(CPPFLAGS) -I ../includes -c -o"$@" "$<"
sources/%.o: sources/%.c
gcc $(CFLAGS) -I ../includes -c -o"$@" "$<"

View File

@ -0,0 +1,8 @@
IPLocal=10.1.15.8
USUARIO=usuog
PASSWORD=passusuog
datasource=localhost
CATALOG=ogAdmBD
router=10.1.12.1
mascara=lsasdfasdfasdf255.255.252.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,262 @@
// ********************************************************************************************************
// Servicio: ogAdmBoot
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Julio-2010
// Fecha Última modificación: Julio-2010
// Nombre del fichero: ogAdmBoot.cpp
// Descripción :Este fichero implementa el servicio dhcp y tftp propios del sistema
// ********************************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <unistd.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include </usr/include/mysql/mysql.h>
#include <pthread.h>
#include "Database.h"
#include "ogAdmLib.h"
// _____________________________________________________________________________________________________________
#define PUERTODHCPORIGEN 67
#define PUERTODHCPDESTINO 68
#define PUERTOBOOTPORIGEN 4011
#define PUERTOBOOTPDESTINO 68
#define PUERTOTFTPORIGEN 69
#define PUERTOMINUSER 20000
#define PUERTOMAXUSER 60000
#define MAX_INTERFACE_LIST 20
#define MAX_NUM_CSADDRS 20
// _____________________________________________________________________________________________________________
#define DHCP_UDP_OVERHEAD (20 + 8 ) // IP header + UDP header
#define DHCP_SNAME_LEN 64
#define DHCP_FILE_LEN 128
#define DHCP_FIXED_NON_UDP 236
#define DHCP_FIXED_LEN (DHCP_FIXED_NON_UDP + DHCP_UDP_OVERHEAD) // Longitud de la trama sin las opciones
#define DHCP_MTU_MAX 1500
#define DHCP_OPTION_LEN (DHCP_MTU_MAX - DHCP_FIXED_LEN)
#define BOOTP_MIN_LEN 300
#define DHCP_MIN_LEN 548
struct dhcp_packet {
unsigned char op; // Message opcode
unsigned char htype; // Hardware addr type
unsigned char hlen; // Hardware addr length
unsigned char hops; // Number of relay agent hops from client
unsigned long xid; // Transaction ID
unsigned short secs; // Seconds since client started looking
unsigned short flags; // Flag bits
struct in_addr ciaddr; // Client IP address
struct in_addr yiaddr; // Client IP address
struct in_addr siaddr; // IP address of next server
struct in_addr giaddr; // DHCP relay agent IP address
unsigned char chaddr [16];// Client hardware address
char sname[DHCP_SNAME_LEN]; // Server name
char file[DHCP_FILE_LEN]; // Boot filename
unsigned char magiccookie[4];
unsigned char options [DHCP_OPTION_LEN-4]; // Optional parameters.
};
// Estructura genrica de una opcin DHCP
struct dhcp_opcion {
unsigned char codop;
unsigned char tam;
unsigned char dato;
};
// Cdigo de las distintas opciones DHCP
#define DHCP_PAD 0
#define DHCP_SUBNET_MASK 1
#define DHCP_TIME_OFFSET 2
#define DHCP_ROUTERS 3
#define DHCP_TIME_SERVERS 4
#define DHCP_NAME_SERVERS 5
#define DHCP_DOMAIN_NAME_SERVERS 6
#define DHCP_LOG_SERVERS 7
#define DHCP_COOKIE_SERVERS 8
#define DHCP_LPR_SERVERS 9
#define DHCP_IMPRESS_SERVERS 10
#define DHCP_RESOURCE_LOCATION_SERVERS 11
#define DHCP_HOST_NAME 12
#define DHCP_BOOT_SIZE 13
#define DHCP_MERIT_DUMP 14
#define DHCP_DOMAIN_NAME 15
#define DHCP_SWAP_SERVER 16
#define DHCP_ROOT_PATH 17
#define DHCP_EXTENSIONS_PATH 18
#define DHCP_IP_FORWARDING 19
#define DHCP_NON_LOCAL_SOURCE_ROUTING 20
#define DHCP_POLICY_FILTER 21
#define DHCP_MAX_DGRAM_REASSEMBLY 22
#define DHCP_DEFAULT_IP_TTL 23
#define DHCP_PATH_MTU_AGING_TIMEOUT 24
#define DHCP_PATH_MTU_PLATEAU_TABLE 25
#define DHCP_INTERFACE_MTU 26
#define DHCP_ALL_SUBNETS_LOCAL 27
#define DHCP_BROADCAST_ADDRESS 28
#define DHCP_PERFORM_MASK_DISCOVERY 29
#define DHCP_MASK_SUPPLIER 30
#define DHCP_ROUTER_DISCOVERY 31
#define DHCP_ROUTER_SOLICITATION_ADDRESS 32
#define DHCP_STATIC_ROUTES 33
#define DHCP_TRAILER_ENCAPSULATION 34
#define DHCP_ARP_CACHE_TIMEOUT 35
#define DHCP_IEEE802_3_ENCAPSULATION 36
#define DHCP_DEFAULT_TCP_TTL 37
#define DHCP_TCP_KEEPALIVE_INTERVAL 38
#define DHCP_TCP_KEEPALIVE_GARBAGE 39
#define DHCP_NIS_DOMAIN 40
#define DHCP_NIS_SERVERS 41
#define DHCP_NTP_SERVERS 42
#define DHCP_VENDOR_ENCAPSULATED_OPTIONS 43
#define DHCP_NETBIOS_NAME_SERVERS 44
#define DHCP_NETBIOS_DD_SERVER 45
#define DHCP_NETBIOS_NODE_TYPE 46
#define DHCP_NETBIOS_SCOPE 47
#define DHCP_FONT_SERVERS 48
#define DHCP_X_DISPLAY_MANAGER 49
#define DHCP_REQUESTED_ADDRESS 50
#define DHCP_LEASE_TIME 51
#define DHCP_OPTION_OVERLOAD 52
#define DHCP_MESSAGE_TYPE 53
#define DHCP_SERVER_IDENTIFIER 54
#define DHCP_PARAMETER_REQUEST_LIST 55
#define DHCP_MESSAGE 56
#define DHCP_MAX_MESSAGE_SIZE 57
#define DHCP_RENEWAL_TIME 58
#define DHCP_REBINDING_TIME 59
#define DHCP_CLASS_IDENTIFIER 60
#define DHCP_CLIENT_IDENTIFIER 61
#define DHCP_USER_CLASS_ID 77
#define DHCP_END 255
// DHCP message types.
#define DHCPDISCOVER 1
#define DHCPOFFER 2
#define DHCPREQUEST 3
#define DHCPDECLINE 4
#define DHCPACK 5
#define DHCPNAK 6
#define DHCPRELEASE 7
#define DHCPINFORM 8
// Estructura para trabajar en cada hebra con el cliente en cuestion
struct TramaDhcpBootp{
SOCKET sck;
struct sockaddr_in cliente;
socklen_t sockaddrsize;
struct dhcp_packet pckDchp;
char bdIP[16];
};
// _____________________________________________________________________________________________________________
#define MAXBLOCK 4096
// TFTP Cdigos de operacin.
#define TFTPRRQ 1 // Read request.
#define TFTPWRQ 2 // Write request
#define TFTPDATA 3 // Read or write the next block of data.
#define TFTPACK 4 // Confirnacin de bloque procesado
#define TFTPERROR 5 // Error message
#define TFTPOACK 6 // Option acknowledgment
// Paquete TFTP genrico
struct tftp_packet
{
WORD opcode;
char buffer[MAXBLOCK+2];
};
// Paquete TFTP tipo ACK
struct tftppacket_ack
{
WORD opcode;
WORD block;
char buffer[MAXBLOCK];
};
// Paquete TFTP tipo ERROR packet
struct tftppacket_error
{
WORD opcode;
WORD errorcode;
char errormessage[508];
};
// Estructura para trabajar en cada hebra con el cliente en cuestion
struct TramaTftp{
SOCKET sck;
struct sockaddr_in cliente;
socklen_t sockaddrsize;
struct tftp_packet pckTftp;
FILE * fileboot;
int bloquesize;
int tsize;
int interval;
int numblock;
unsigned short currentopCode;
};
//______________________________________________________
static pthread_mutex_t guardia; // Controla acceso exclusivo de hebras
//______________________________________________________
char IPlocal[LONPRM];
char usuario[LONPRM];
char pasguor[LONPRM];
char datasource[LONPRM];
char catalog[LONPRM];
char router[LONPRM];
char mascara[LONPRM];
char oProuter[LONPRM];
char oPmascara[LONPRM];
// Prototipo de funciones
void RegistraLog(char *,int);
int TomaParametrosReg();
LPVOID ServicioDHCP(LPVOID);
LPVOID ServicioBOOTP(LPVOID);
LPVOID ServicioTFTP(LPVOID);
LPVOID GestionaServicioDHCP(LPVOID);
LPVOID GestionaServicioBOOTP(LPVOID);
LPVOID GestionaServicioTFTP(LPVOID);
int ClienteExistente(struct TramaDhcpBootp *,char*,int);
int OpcionesPresentes(unsigned char *);
unsigned char * BuscaOpcion(dhcp_packet* ,unsigned char );
int OpcionPXEClient(dhcp_packet* );
void ProcesaTramaClientePXE(struct TramaDhcpBootp* trmInfo);
void ProcesaTramaClienteDHCP(struct TramaDhcpBootp* trmInfo);
void ProcesaTramaClienteBOOTP(struct TramaDhcpBootp* trmInfo);
void ProcesaTramaClienteTFTP(struct TramaTftp * trmInfo);
void RellenaIPCLiente(struct TramaDhcpBootp*);
void RellenaIPServidor(struct TramaDhcpBootp*);
void dhcpDISCOVER_PXE(struct TramaDhcpBootp*);
void dhcpREQUEST_PXE(struct TramaDhcpBootp*);
void bootpREQUEST_PXE(struct TramaDhcpBootp*);
int PeticionFichero(struct TramaTftp*);
void AdjDHCPOFFER(unsigned char**,int*);
void AdjDHCPACK(unsigned char**,int*);
void AdjROUTERS(unsigned char** ,int*);
void AdjSUBNETMASK(unsigned char**,int*);
void AdjCLASSIDENTIFIER(unsigned char** ,int*);
void AdjSERVERIDENTIFIER(unsigned char** ,int*);
void AdjLEASETIME(unsigned char** ,int*);
void AdjBOOTSIZE(unsigned char** ,int*);
SOCKET TomaSocketUser();
struct tm * TomaHora();
int split_parametros(char **,char *, char *);
void duerme(unsigned int );

View File

@ -0,0 +1,43 @@
# makefile
# Nombre del proyecto
PROYECTO := ogAdmRepo
#Directorio de instalación
INSTALL_DIR := /opt/opengnsys
# Opciones de compilacion
CFLAGS := -O0 -g -Wall -I../includes # Depuracion
#CFLAGS := -O3 -Wall # Optimizacion
CPPFLAGS := $(CFLAGS)
# Opciones de linkado
LDFLAGS := -L/usr/lib -L/usr/lib/mysql -lpthread -lmysqlclient
# Ficheros objetos
OBJS := ../includes/Database.o ../includes/encriptacion.o sources/ogAdmRepo.o
all: $(PROYECTO)
$(PROYECTO): $(OBJS)
g++ $(LDFLAGS) $(OBJS) -o $(PROYECTO)
# strip $(PROYECTO) # Optimizacion
install: $(PROYECTO)
cp $(PROYECTO) $(INSTALL_DIR)/sbin
cp $(PROYECTO).cfg $(INSTALL_DIR)/etc
clean:
rm -f $(PROYECTO) $(OBJS)
uninstall: clean
rm -f /usr/local/sbin/$(PROYECTO) /usr/local/etc/$(PROYECTO).cfg
sources/%.o: sources/%.cpp
g++ $(CPPFLAGS) -c -o"$@" "$<"
sources/%.o: sources/%.c
gcc $(CFLAGS) -c -o"$@" "$<"

View File

@ -0,0 +1,3 @@
IPlocal=SERVERIP
IPhidra=SERVERIP
Puerto=2008

View File

@ -0,0 +1,177 @@
// ********************************************************************************************************
// Servicio: ogAdmRepo
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Nombre del fichero: ogAdmRepo.cpp
// Descripción :Este fichero implementa el servicio de administración general del sistema
// ********************************************************************************************************
#include "ogAdmRepo.h"
#include "ogAdmLib.c"
//________________________________________________________________________________________________________
// Función: tomaConfiguracion
//
// Descripción:
// Lee el fichero de configuración del servicio
// Parámetros:
// filecfg : Ruta completa al fichero de configuración
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
//________________________________________________________________________________________________________
BOOLEAN tomaConfiguracion(char* filecfg) {
char modulo[] = "tomaConfiguracion()";
if (filecfg == NULL || strlen(filecfg) == 0) {
errorLog(modulo, 1, FALSE); // Fichero de configuración del servicio vacío
return (FALSE);
}
FILE *fcfg;
long lSize;
char * buffer, *lineas[MAXPRM], *dualparametro[2];
int i, numlin, resul;
fcfg = fopen(filecfg, "rt");
if (fcfg == NULL) {
errorLog(modulo, 2, FALSE); // No existe fichero de configuración del servicio
return (FALSE);
}
fseek(fcfg, 0, SEEK_END);
lSize = ftell(fcfg); // Obtiene tamaño del fichero.
rewind(fcfg);
buffer = (char*) reservaMemoria(lSize+1); // Toma memoria para el buffer de lectura.
if (buffer == NULL) { // No hay memoria suficiente para el buffer
errorLog(modulo, 3, FALSE);
return (FALSE);
}
fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero
buffer[lSize]=(char) NULL;
fclose(fcfg);
iplocal[0] = (char) NULL; //inicializar variables globales
puerto[0] = (char) NULL;
numlin = splitCadena(lineas, buffer, '\n');
for (i = 0; i < numlin; i++) {
splitCadena(dualparametro, lineas[i], '=');
resul = strcmp(StrToUpper(dualparametro[0]), "IPLOCAL");
if (resul == 0)
strcpy(iplocal, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO");
if (resul == 0)
strcpy(puerto, dualparametro[1]);
}
if (iplocal[0] == (char) NULL) {
errorLog(modulo, 4, FALSE); // Falta parámetro IPLOCAL
return (FALSE);
}
if (puerto[0] == (char) NULL) {
errorLog(modulo, 5, FALSE); // Falta parámetro PUERTO
return (FALSE);
}
return (TRUE);
}
// ________________________________________________________________________________________________________
// Función: gestionaTrama
//
// Descripción:
// Procesa las tramas recibidas .
// Parametros:
// - s : Socket usado para comunicaciones
// Devuelve:
// TRUE: Si el proceso es correcto
// FALSE: En caso de ocurrir algún error
// ________________________________________________________________________________________________________
BOOLEAN gestionaTrama(SOCKET *socket_c)
{
TRAMA* ptrTrama;
int i, res;
char *nfn;
char modulo[] = "gestionaTrama()";
ptrTrama=recibeTrama(socket_c);
if (ptrTrama){
INTROaFINCAD(ptrTrama);
nfn = copiaParametro("nfn",ptrTrama); // Toma dirección/es IP
for (i = 0; i < MAXIMAS_FUNCIONES; i++) { // Recorre funciones que procesan las tramas
res = strcmp(tbfuncionesRepo[i].nf, nfn);
if (res == 0) { // Encontrada la función que procesa el mensaje
return (tbfuncionesRepo[i].fptr(socket_c, ptrTrama)); // Invoca la función
}
}
}
else
errorLog(modulo, 17, FALSE); // Error en la recepción
return (TRUE);
}
// ********************************************************************************************************
// PROGRAMA PRINCIPAL (SERVICIO)
// ********************************************************************************************************
int main(int argc, char *argv[])
{
SOCKET socket_r; // Socket donde escucha el servidor
SOCKET socket_c; // Socket de los clientes que se conectan
socklen_t iAddrSize;
struct sockaddr_in local, cliente;
char modulo[] = "main()";
/*--------------------------------------------------------------------------------------------------------
Validación de parámetros de ejecución y lectura del fichero de configuración del servicio
---------------------------------------------------------------------------------------------------------*/
if (!validacionParametros(argc, argv,1)) // Valida parámetros de ejecución
exit(EXIT_FAILURE);
if (!tomaConfiguracion(szPathFileCfg)) { // Toma parametros de configuracion
exit(EXIT_FAILURE);
}
/*--------------------------------------------------------------------------------------------------------
Carga del catálogo de funciones que procesan las tramas (referencia directa por puntero a función)
---------------------------------------------------------------------------------------------------------*/
int cf = 0;
cf++;
/*--------------------------------------------------------------------------------------------------------
Creación y configuración del socket del servicio
---------------------------------------------------------------------------------------------------------*/
socket_r = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Crea socket del servicio
if (socket_r == SOCKET_ERROR) { // Error al crear el socket del servicio
errorLog(modulo, 13, TRUE);
exit(EXIT_FAILURE);
}
local.sin_addr.s_addr = htonl(INADDR_ANY); // Configura el socket del servicio
local.sin_family = AF_INET;
local.sin_port = htons(atoi(puerto));
if (bind(socket_r, (struct sockaddr *) &local, sizeof(local))== SOCKET_ERROR) { // Enlaza socket
errorLog(modulo, 14, TRUE);
exit(EXIT_FAILURE);
}
listen(socket_r, 250); // Pone a escuchar al socket
iAddrSize = sizeof(cliente);
/*--------------------------------------------------------------------------------------------------------
Bucle para acceptar conexiones
---------------------------------------------------------------------------------------------------------*/
infoLog(1); // Inicio de sesión
while(TRUE) {
socket_c = accept(socket_r, (struct sockaddr *) &cliente, &iAddrSize);
if (socket_c == INVALID_SOCKET) {
errorLog(modulo, 15, TRUE);
exit(EXIT_FAILURE);
}
if(!gestionaTrama(&socket_c)){
errorLog(modulo, 39, TRUE);
break;
}
close(socket_c);
}
/*--------------------------------------------------------------------------------------------------------
Fin del servicio
---------------------------------------------------------------------------------------------------------*/
close(socket_r);
exit(EXIT_SUCCESS);
}

View File

@ -0,0 +1,41 @@
// ********************************************************************************************************
// Servicio: ogAdmRepo
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Nombre del fichero: ogAdmRepo.h
// Descripción: Este fichero implementa el servicio de repositorio de imágenes
// ********************************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <unistd.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "ogAdmLib.h"
// ________________________________________________________________________________________________________
// Variables globales
// ________________________________________________________________________________________________________
char iplocal[LONPRM]; // Dirección IP del servidor de administración
char puerto[LONPRM]; // Puerto de comunicación
char servidoradm[LONIP]; // IP del servidor
typedef struct{ // Estructura usada para referenciar las funciones que procesan las tramas
char nf[LONFUN]; // Nombre de la función
BOOLEAN (*fptr)(SOCKET*,TRAMA*); // Puntero a la función que procesa la trama
}MSGFUN;
MSGFUN tbfuncionesRepo[MAXIMAS_FUNCIONES];
// ________________________________________________________________________________________________________
// Prototipo de funciones
// ________________________________________________________________________________________________________
BOOLEAN tomaConfiguracion(char*);
BOOLEAN gestionaTrama(SOCKET*);
BOOLEAN tomaConfiguracion(char*);

View File

@ -0,0 +1,43 @@
# makefile
# Nombre del proyecto
PROYECTO := ogAdmServer
# Directorio de instalación
INSTALL_DIR := /opt/opengnsys
# Opciones de compilacion
CFLAGS := -O0 -g -Wall -I../../Includes # Depuracion
#CFLAGS := -O3 -Wall # Optimizacion
CPPFLAGS := $(CFLAGS)
# Opciones de linkado
LDFLAGS := -L/usr/lib -L/usr/lib/mysql -lpthread -lmysqlclient
# Ficheros objetos
OBJS := ../../Includes/Database.o sources/ogAdmServer.o
all: $(PROYECTO)
$(PROYECTO): $(OBJS)
g++ $(LDFLAGS) $(OBJS) -o $(PROYECTO)
# strip $(PROYECTO) # Optimizacion
install: $(PROYECTO)
cp $(PROYECTO) $(INSTALL_DIR)/sbin
cp $(PROYECTO).cfg $(INSTALL_DIR)/etc
clean:
rm -f $(PROYECTO) $(OBJS)
uninstall: clean
rm -f /usr/local/sbin/$(PROYECTO) /usr/local/etc/$(PROYECTO).cfg
sources/%.o: sources/%.cpp
g++ $(CPPFLAGS) -c -o"$@" "$<"
sources/%.o: sources/%.c
gcc $(CFLAGS) -c -o"$@" "$<"

View File

@ -0,0 +1,6 @@
ServidorAdm=SERVERIP
PUERTO=2008
USUARIO=usuog
PASSWORD=passusuog
datasource=localhost
CATALOG=ogAdmBD

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,118 @@
// ********************************************************************************************************
// Servicio: ogAdmServer
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Marzo-2010
// Fecha Última modificación: Marzo-2010
// Nombre del fichero: ogAdmServer.h
// Descripción: Este fichero implementa el servicio de administración general del sistema
// ********************************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <unistd.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include </usr/include/mysql/mysql.h>
#include "Database.h"
#include "ogAdmLib.h"
// ________________________________________________________________________________________________________
// Variables globales
// ________________________________________________________________________________________________________
char servidoradm[LONPRM]; // Dirección IP del servidor de administración
char puerto[LONPRM]; // Puerto de comunicación
char usuario[LONPRM]; // Usuario de acceso a la base de datos
char pasguor[LONPRM]; // Password del usuario
char datasource[LONPRM]; // Dirección IP del gestor de base de datos
char catalog[LONPRM]; // Nombre de la base de datos
char aulaup[LONPRM]; // Conmutador para registro automático de clientes
typedef struct{ // Estructura usada para guardar información de los clientes
char ip[LONIP]; // IP del cliente
char estado[4]; // Tipo de Sistema Operativo en que se encuentra el cliente
SOCKET sock; // Socket por el que se comunica
}SOCKETCL;
SOCKETCL tbsockets[MAXIMOS_CLIENTES];
BOOLEAN swcSocket; // Switch para indicar si se debe cerrar el socket del cliente
typedef struct{ // Estructura usada para referenciar las funciones que procesan las tramas
char nf[LONFUN]; // Nombre de la función
BOOLEAN (*fptr)(SOCKET*,TRAMA*); // Puntero a la función que procesa la trama
}MSGFUN;
MSGFUN tbfuncionesServer[MAXIMAS_FUNCIONES];
// ________________________________________________________________________________________________________
// Prototipo de funciones
// ________________________________________________________________________________________________________
BOOLEAN tomaConfiguracion(char*);
BOOLEAN gestionaTrama(SOCKET*);
BOOLEAN Sondeo(SOCKET*,TRAMA*);
BOOLEAN respuestaSondeo(SOCKET *,TRAMA*);
BOOLEAN InclusionCliente(SOCKET*,TRAMA*);
BOOLEAN registraCliente(char *);
BOOLEAN procesoInclusionCliente(SOCKET*,TRAMA*);
BOOLEAN clienteExistente(char *,int *);
BOOLEAN clienteDisponible(char *,int *);
BOOLEAN hayHueco(int *);
BOOLEAN actualizaConfiguracion(Database , Table ,char* ,int);
BOOLEAN AutoexecCliente(SOCKET *, TRAMA *);
BOOLEAN recorreProcedimientos(Database ,char* ,FILE*,char*);
BOOLEAN tomaRepositorio(Database ,Table ,char*,int*);
BOOLEAN buscaComandos(char *,TRAMA *,int *);
BOOLEAN DisponibilidadComandos(SOCKET*,TRAMA*);
BOOLEAN respuestaEstandar(TRAMA *,char **,char **,char ** ,Database *,Table *);
BOOLEAN respuestaConsola(SOCKET *,TRAMA *,int);
BOOLEAN enviaComando(TRAMA *ptrTrama,const char*);
BOOLEAN Actualizar(SOCKET *, TRAMA* );
BOOLEAN Purgar(SOCKET *, TRAMA* );
BOOLEAN ConsolaRemota(SOCKET *,TRAMA*);
BOOLEAN RESPUESTA_ConsolaRemota(SOCKET *,TRAMA*);
BOOLEAN EcoConsola(SOCKET *,TRAMA*);
BOOLEAN Comando(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_Comando(SOCKET *,TRAMA *);
BOOLEAN Arrancar(SOCKET *,TRAMA *);
BOOLEAN Levanta(char*);
BOOLEAN WakeUp(SOCKET *,char *);
void PasaHexBin(char *,char *);
BOOLEAN RESPUESTA_Arrancar(SOCKET *,TRAMA*);
BOOLEAN Apagar(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_Apagar(SOCKET *,TRAMA *);
BOOLEAN Reiniciar(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_Reiniciar(SOCKET *,TRAMA *);
BOOLEAN IniciarSesion(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_IniciarSesion(SOCKET *,TRAMA *);
BOOLEAN CrearImagen(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_CrearImagen(SOCKET *,TRAMA *);
BOOLEAN actualizaCreacionImagen(Database,Table,char*,char*,char*,char*,char*);
BOOLEAN RestaurarImagen(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_RestaurarImagen(SOCKET *,TRAMA *);
BOOLEAN actualizaRestauracionImagen(Database,Table,char*,char*,char*,char*);
BOOLEAN Configurar(SOCKET *,TRAMA* );
BOOLEAN RESPUESTA_Configurar(SOCKET *,TRAMA* );
BOOLEAN actualizaConfigurar(Database , Table , char* );
BOOLEAN InventarioHardware(SOCKET *,TRAMA *);
BOOLEAN RESPUESTA_InventarioHardware(SOCKET *,TRAMA *);
BOOLEAN actualizaHardware(Database, Table,char* ,char*,char*,char*);
BOOLEAN cuestionPerfilHardware(Database,Table,char*,char*,int,char*,char*,int *,int);
BOOLEAN actualizaSoftware(Database , Table , char* , char* , char*,char*,char*);
BOOLEAN cuestionPerfilSoftware(Database, Table, char*, char*,int,char*,char*,char*,int *,int);
BOOLEAN enviaArchivo(SOCKET *, TRAMA *);
BOOLEAN recibeArchivo(SOCKET *, TRAMA *);
BOOLEAN envioProgramacion(SOCKET *, TRAMA *);
int checkDato(Database,Table,char*,const char*,const char*,const char*);

View File

@ -0,0 +1,21 @@
<?
// ********************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Agosto-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: barramenu.php
// Descripción :Este fichero implementa el menu general de la Aplicación
// ********************************************************************************************************
if(isset($_SESSION)){ // Si existe algua sesión ...
session_unset(); // Elimina variables
session_destroy(); // Destruye sesión
}
include_once("controlacceso.php");
$herror=0;
if (isset($_GET["herror"])) $herror=$_GET["herror"];
if (isset($_POST["herror"])) $herror=$_POST["herror"];
Header("Location: acceso_".$idi.".php?herror=".$herror); // Redireccionamiento a la página de inicio en el idioma por defecto
?>

View File

@ -0,0 +1,117 @@
<?
// *********************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Agosto-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: acceso.php
// Descripción : Presenta la pantalla de login de la aplicación
// ********************************************************************************************************
include_once("controlacceso.php");
include_once("./includes/CreaComando.php");
include_once("./clases/AdoPhp.php");
include_once("./includes/HTMLSELECT.php");
//________________________________________________________________________________________________________
$cmd=CreaComando($cnx); // Crea objeto comando
if (!$cmd)
die("Error de acceso");
//________________________________________________________________________________________________________
$herror=0;
if (isset($_GET["herror"])) $herror=$_GET["herror"];
if (isset($_POST["herror"])) $herror=$_POST["herror"];
$TbErr=array();
$TbErr[0]="SIN ERRORES";
$TbErr[1]="ATENCIÓN: Debe acceder a la aplicación a través de la pagina inicial";
$TbErr[2]="ATENCIÓN: La Aplicación no tiene acceso al Servidor de Bases de Datos";
$TbErr[3]="ATENCIÓN: Existen problemas para recuperar el registro, puede que haya sido eliminado";
$TbErr[4]="ATENCIÓN: Usted no tiene acceso a esta aplicación";
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="estilos.css">
</HEAD>
<SCRIPT LANGUAGE="JAVASCRIPT">
//________________________________________________________________________________________________________
function confirmar(){
if (comprobar_datos())
document.fdatos.submit();
}
//________________________________________________________________________________________________________
function comprobar_datos(){
if (document.fdatos.usu.value==""){
alert("Debe introducir un nombre de Usuario")
document.fdatos.usu.focus()
return(false)
}
if (document.fdatos.pss.value==""){
alert("Debe introducir una contraseña")
document.fdatos.pss.focus()
return(false)
}
var p=document.fdatos.idcentro.selectedIndex
if (p==0){
var res=confirm("ATENCIÓN: No ha introducido ninguna Unidad Organizativa. NO tendrá acceso al sistema a menos que sea adminstrador general de la Aplicación. ¿Desea acceder con este perfil?");
if(!res)
return(false)
}
return(true)
}
//______________________________________________________________________________________________________
function PulsaEnter(oEvento){
var iAscii;
if (oEvento.keyCode)
iAscii = oEvento.keyCode;
else{
if (oEvento.which)
iAscii = oEvento.which;
else
return false;
}
if (iAscii == 13) confirmar();
return true;
}
//________________________________________________________________________________________________________
</SCRIPT>
</HEAD>
<BODY>
<DIV style="POSITION:absolute;top:90;left:250">
<FORM action="controlpostacceso.php" name="fdatos" method="post">
<DIV align="center">
<IMG src="./images/login_esp.jpg" width=500 >
<INPUT onkeypress="PulsaEnter(event)" name="usu"
style="POSITION:absolute;top:125px;left:365px;width:90;height:20;COLOR: #999999; FONT-FAMILY: Verdana; FONT-SIZE: 12px;">
<INPUT onkeypress="PulsaEnter(event)" name="pss" type="password"
style="POSITION:absolute;top:160px;left:365;width:90;height:20;COLOR: #999999; FONT-FAMILY: Verdana; FONT-SIZE: 12px;">
<DIV style="POSITION:absolute;top:180px;left:265;COLOR: #F9F9F9; FONT-FAMILY: Verdana; FONT-SIZE: 12px;">
<P>Unidad Organizativa<BR>
<?
echo HTMLSELECT($cmd,0,'centros',$idcentro,'idcentro','nombrecentro',220);
?>
</P></DIV>
<IMG onclick="confirmar()" src="./images/botonok.gif" style="POSITION:absolute;top:240;left:400;CURSOR: hand">
</DIV>
</FORM>
</DIV>
<?
//________________________________________________________________________________________________________
echo '<DIV style="POSITION: absolute;LEFT: 20px;TOP:300px;visibility:hidden" height=300 width=300>';
echo '<IFRAME scrolling=yes height=300 width=310 id="iframes_comodin" src="./nada.php"></IFRAME>';
echo '</DIV>';
//________________________________________________________________________________________________________
// Posiciona cursor en campo usuario y muestra mensaje de error si lo hubiera
echo '<SCRIPT LANGUAGE="javascript">';
if (!empty($herror))
echo " alert('".$TbErr[$herror]."');";
echo 'document.fdatos.usu.focus()';
echo '</SCRIPT>';
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>

View File

@ -0,0 +1,175 @@
<?
// ********************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Agosto-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: barramenu.php
// Descripción :Este fichero implementa el menu general de la Aplicación
// ********************************************************************************************************
include_once("./includes/ctrlacc.php");
include_once("./includes/constantes.php");
include_once("./idiomas/php/".$idioma."/barramenu_".$idioma.".php");
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
<LINK rel="stylesheet" type="text/css" href="estilos.css">
<SCRIPT language="javascript">
var currentOp=null;
//________________________________________________________________________________________________________
function resaltar(o){
if (o==currentOp) return
o.style.borderBottomColor="#808080"
o.style.borderRightColor="#808080"
o.style.borderTopColor="#ffffff"
o.style.borderLeftColor="#ffffff"
}
//________________________________________________________________________________________________________
function desresaltar(o){
if (o==currentOp) return
o.style.borderBottomColor="#d4d0c8"
o.style.borderRightColor="#d4d0c8"
o.style.borderTopColor="#d4d0c8"
o.style.borderLeftColor="#d4d0c8"
}
//________________________________________________________________________________________________________
function eleccion(o,op){
opadre=window.parent // Toma frame padre
opadre.frames["frame_contenidos"].document.location.href="nada.php"
var href;
var href2="nada.php"
var href3="./api/tree.html"
var href4="./api/main.html"
var href5="./api/index.html"
switch(op){
case 1:
href="./principal/aulas.php"
break;
case 2:
href="./principal/acciones.php"
break;
case 3:
href="./principal/imagenes.php"
break;
case 4:
href="./principal/hardwares.php"
break;
case 5:
href="./principal/softwares.php"
break;
case 6:
href="./principal/repositorios.php"
break;
case 7:
href="./principal/menus.php"
break;
case 8:
href="./principal/reservas.php"
break;
case 9:
href="./principal/administracion.php"
break;
case 10:
href="./images/L_Iconos.php"
href2="./images/M_Iconos.php"
break;
case 13:
href="./principal/usuarios.php"
break;
}
var oldOp=currentOp
currentOp=o;
if (oldOp) desresaltar(oldOp);
currentOp.style.borderBottomColor="#ffffff"
currentOp.style.borderRightColor="#ffffff"
currentOp.style.borderTopColor="#808080"
currentOp.style.borderLeftColor="#808080"
if(op<20){
opadre.frames["frame_arbol"].document.location.href=href
opadre.frames["frame_contenidos"].document.location.href=href2
}
else{
switch(op){
case 21:
window.top.location.href="acceso.php";
break;
case 22:
opadre.frames["frame_contenidos"].document.location.href=href4
break;
}
}
}
//________________________________________________________________________________________________________
</SCRIPT>
</HEAD>
<BODY bgcolor="#d4d0c8">
<FORM name=fdatos>
<TABLE border=0 width=100% style="POSITION:absolute;LEFT:0px;TOP:0px" cellPadding=2 cellSpacing=0>
<TR>
<TD align=left>
<TABLE class=menupral align=left cellPadding=1 cellSpacing=0 >
<TR valign=baseline>
<TD width=10><IMG src="./images/iconos/pomo.gif"></TD>
<? if($idtipousuario!=$SUPERADMINISTRADOR){?>
<TD onclick=eleccion(this,1) onmouseout=desresaltar(this) onmouseover=resaltar(this) >
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/centros.gif">&nbsp;<SPAN class="menupral"><?echo $TbMsg[0]?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,2) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/acciones.gif">&nbsp;<SPAN class=menupral ><?echo $TbMsg[1]?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,3) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/imagenes.gif">&nbsp;<SPAN class=menupral ><?echo $TbMsg[2]?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,4) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/confihard.gif">&nbsp;<SPAN class=menupral ><?echo $TbMsg[3] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,5) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/confisoft.gif">&nbsp;<SPAN class=menupral ><?echo $TbMsg[4] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,6) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/repositorio.gif">&nbsp;<SPAN class=menupral ><?echo $TbMsg[5] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,7) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/menus.gif">&nbsp;<SPAN class=menupral ><?echo $TbMsg[6] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<!--TD onclick=eleccion(this,8) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>
&nbsp;<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/reservas.gif">&nbsp;<SPAN class=menupral ><?echo $TbMsg[7] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD-->
<? }
else{
if($idtipousuario==$SUPERADMINISTRADOR){?>
<TD onclick=eleccion(this,9) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>&nbsp;
<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/administracion.gif">
<SPAN class=menupral ><?echo $TbMsg[8] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,10) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>&nbsp;
<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/iconos.gif">
<SPAN class=menupral ><?echo $TbMsg[9] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<?}?>
<?}?>
<TD onclick=eleccion(this,22) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>&nbsp;
<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/ayuda.gif">&nbsp;
<SPAN class=menupral ><?echo $TbMsg[11] ?></SPAN></A>&nbsp;</TD>
<TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD>
<TD onclick=eleccion(this,21) onmouseout=desresaltar(this) onmouseover=resaltar(this) align=middle>&nbsp;
<A href="#" style="text-decoration: none"><IMG border=0 src="./images/iconos/usuarioslog.gif">&nbsp;
<SPAN class=menupral ><?echo $TbMsg[10] ?></SPAN></A>&nbsp;</TD>
</TR>
</TABLE>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

View File

@ -0,0 +1,676 @@
<?php
/*================================================================================
Clase para conectar con una base de datos.
Especificaciones:
- Estado de la conexión($estado)
0: No conectado
1: Conectado
2: Se est<EFBFBD>intentando conectar
================================================================================*/
class Conexion{
var $basedatos; // Base de datos
var $servidor; // Servidor de Base de datos
var $usuario; // Nombre de usuario
var $password; // Clave de usuario
var $controlador; // Controlador
var $estado; // Estado de la conexion
var $proveedor; // Proveedor de BD
var $error; // Colecci<63> de errores ocurridos durante el proceso (C<>igo de error)
var $ultimoerror; // Ultimo error detectado
var $inderror; // Nmero de errores ocurridos durante el proceso
var $msgerrores=array(
"No se ha producido ningn error",
"001 : conexiónError - La conexion no se pudo establecer",
"002 : conexiónError - Se estableci<63> la conexióncon el servidor pero la base de datos no responde",
"003 : conexiónError - No se ha podido cerrar la actual conexi<78>",
"004 : conexiónError - El objeto est<73>ocupado intentando establecer una conexiónanterior",
"005 : conexiónError - La conexiónya est<73>cerrada",
"006 : conexiónError - No se ha especificado ningn servidor de base de datos",
"007 : conexiónError - No se ha especificado ningn usuario de la base de datos",
"008 : conexiónError - No se ha especificado password de usuario",
"009 : conexiónError - No se ha especificado ninguna base de datos",
"010 : conexiónError - No se ha especificado ningn proveedor de bases de datos",
);
/*--------------------------------------------------------------------------------------------*/
function Conexion(){ // Constructor de la clase
$this->inderror=0;
$this->ultimoerror=0;
$this->estado=0;
}
/* -------------------------------------------------------------------------------------------
Adquiere o actualiza los datos necesarias para establecer conexiones
Par<EFBFBD>etros de entrada:
servidor: Servidor donde se ubica la base de datos
usuario : Un usuario con acceso al servidor
passwor : Clave de usuario
basedato: Base de datos a la se quiere acceder
proveedor: Proveedor de Base de datos
Devuelve :
true : Si los datos aportadospara establecer conexiones son correctos
false: En caso contrario
En el caso de devolver false, la funci<EFBFBD> TomaUltimoError() devuelve el error ocurrido
----------------------------------------------------------------------------------------------*/
function CadenaConexion($servidor,$usuario,$password,$basedatos,$proveedor){
$this->servidor=$servidor;
$this->usuario=$usuario;
$this->password=$password;
$this->basedatos=$basedatos;
$this->proveedor=$proveedor;
if (!$this->_cadena_conexion()) return(false); else return(true);
}
/* -------------------------------------------------------------------------------------------
Abre una conexión
Devuelve :
true : Si la apertura de la conexiónha sido satisfactoria
false: En caso contrario
En el caso de devolver false, la funci<EFBFBD> TomaUltimoError() devuelve el error ocurrido
----------------------------------------------------------------------------------------------*/
function Abrir(){
$this->inderror=-1; // Inicializar contador de errores
$this->ultimoerror=-1;
$MAXIMOS_INTENTOS_DE_CONECCION=10;
if (!$this->_cadena_conexion()) return(false); // Comprueba si los datos necesarios para conexiones se han aportado
switch ($this->estado) {
case 1: // Existe actualmente una conexiónabierta que se sustituir<69>por la nueva
if (mysql_close($this->controlador)){ // Se cierra la conexion actual
$this->estado=0;
$intentos_de_conexion=0;
while(true){
$intentos_de_conexion++;
$resul=($this->_nueva_conexion());
if ($resul || $intentos_de_conexion>$MAXIMOS_INTENTOS_DE_CONECCION) return($resul);
sleep(1); // Espera 1 segundo para intentar la conexiónde nuevo
}
}
else{ // Error al cerrar la conexi<78>
$this->error[$this->inderror++]=3;
$this->ultimoerror=3;
return(false);
}
break;
case 2: // Actualmente est<73>objeto est<73>ocupado intentando establecer otra conexi<78>
$this->error[$this->inderror++]=4;
$this->ultimoerror=4;
return(false);
break;
default : // No existe actualmente ninguna conexiónabierta, se abrir<69>una nueva
$intentos_de_conexion=0;
while(true){
$intentos_de_conexion++;
$resul=($this->_nueva_conexion());
if ($resul || $intentos_de_conexion>$MAXIMOS_INTENTOS_DE_CONECCION) return($resul);
sleep(1); // Espera 1 segundo para intentar la conexiónde nuevo
}
}
}
/* -------------------------------------------------------------------------------------------
Cierra una conexión
Devuelve :
true : Si la conexiónse ha cerrado satisfactoriamente
false: En caso contrario
En el caso de devolver false, la funci<EFBFBD> TomaUltimoError() devuelve el error ocurrido
----------------------------------------------------------------------------------------------*/
function Cerrar(){
$this->inderror=-1; // Inicializar contador de errores
$this->ultimoerror=-1;
switch ($this->estado) {
case 1: // Actualmente la conexion est<73>abierta
if (mysql_close($this->controlador)){ // Se cierra la conexion actual
$this->estado=0;
$this->error[$this->inderror++]=0;
$this->ultimoerror=0;
return(true);
}
else{ // Error al cerrar la conexi<78>
$this->error[$this->inderror++]=3;
$this->ultimoerror=3;
return(false);
}
break;
case 2: // Actualmente est<73>objeto est<73>ocupado intentando establecer otra conexi<78>
$this->error[$this->inderror++]=4;
$this->ultimoerror=4;
return(false);
break;
default : // Actualmente la conexiónest<73>ya cerrada
$this->error[$this->inderror++]=5;
$this->ultimoerror=5;
return(false);
}
}
/* -------------------------------------------------------------------------------------------
Establece una nueva conexi<EFBFBD>. Este m<EFBFBD>odo es privado y s<EFBFBD>o lo puede ejecutar la propia
clase desde el m<EFBFBD>odo pblico Abrir.
----------------------------------------------------------------------------------------------*/
function _nueva_conexion(){
$this->estado=2;// Intenta la conexion
if ($this->controlador=mysql_connect($this->servidor,$this->usuario,$this->password)){// Conexion O.K.
$this->estado=1; // La conexion con el servidor se estableci<63>
if (mysql_select_db($this->basedatos, $this->controlador)){// Base datos O.K.
$this->error[$this->inderror++]=0;
$this->ultimoerror=0;
return(true);
}
else{ // Problemas con la base de datos
$this->error[$this->inderror++]=2;
$this->ultimoerror=2;
if (mysql_close ($this->controlador)) $this->estado=0; // Se cierra la conexion
return(false);
}
}
else{ // Problemas con la conexion
$this->estado=0;
$this->error[$this->inderror++]=1;
$this->ultimoerror=1;
return(false);
}
}
/* -------------------------------------------------------------------------------------------
Establece una sistema UTF8 para las consultas
----------------------------------------------------------------------------------------------*/
function SetUtf8(){
mysql_query("SET NAMES 'utf8'");
}
/* -------------------------------------------------------------------------------------------
Revisa y detecta las condiciones que deben cumplir los datos necesarios para establecer
conexiones
Devuelve :
true : Si los datos aportados son correctos
false: Si algn dato NO ha sido aportado o es incorrecto
Este m<EFBFBD>odo es privado y s<EFBFBD>o lo ejecutan m<EFBFBD>odos pblicos de la propia clase
----------------------------------------------------------------------------------------------*/
function _cadena_conexion(){
if ($this->servidor==null){
$this->error[$this->inderror++]=6; // Servidor no establecido
$this->ultimoerror=6;
return(false);
}
if ($this->usuario==null){
$this->error[$this->inderror++]=7;// usuario no establecido
$this->ultimoerror=7;
return(false);
}
if ($this->password==null){
$this->error[$this->inderror++]=8; // password no establecido
$this->ultimoerror=8;
return(false);
}
if ($this->basedatos==null){
$this->error[$this->inderror++]=9; // base de datos no establecido
$this->ultimoerror=9;
return(false);
}
if ($this->proveedor==null){
$this->error[$this->inderror++]=10; // proveedor no establecido
$this->ultimoerror=10;
return(false);
}
$this->error[$this->inderror++]=0; // Datos de conexióncorrectos
$this->ultimoerror=0;
return(true);
}
/* -------------------------------------------------------------------------------------------
Devuelve el c<EFBFBD>igo del ltimo error ocurrido durante el proceso anterior.
----------------------------------------------------------------------------------------------*/
function UltimoError(){
return($this->ultimoerror);
}
/* -------------------------------------------------------------------------------------------
Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
----------------------------------------------------------------------------------------------*/
function DescripUltimoError(){
return($this->msgerrores[$this->ultimoerror]);
}
}
/*=========================================================================================
Clase para usarla con la clase comando.
Especificaciones:
Esta clase tiene dos propiedades que definen su contenido
nombre=nombre del parametro
valor = valor de dicho par<EFBFBD>etro
tipo = tipo de parametro:
0: El valor del par<EFBFBD>etro debe ir encerrado entre comillas simples
1: El valor del par<EFBFBD>etro no necesita ir entre comillas simples
========================================================================================*/
class parametro{
var $nombre;
var $valor;
var $tipo;
/*--------------------------------------------------------------------------------------------*/
function parametro($nombre="SinNombre",$valor="",$tipo="0"){ // Constructor de la clase
$this->SetParametro($nombre,$valor,$tipo);
}
/* -------------------------------------------------------------------------------------------
Modifica los valores de las propiedades de la clase
----------------------------------------------------------------------------------------------*/
function SetParametro($nombre,$valor,$tipo){
$this->nombre=$nombre;
$this->valor=$valor;
$this->tipo=$tipo;
if($tipo==1 && empty($valor)) $this->valor=0;
}
}
/*==========================================================================================
Clase para manipular bases de datos a traves de una conexiónprevia.
Especificaciones:
Las sentencias SQL pueden contener par<EFBFBD>etros que pueden ser sustituidos por el valor
de los objetos par<EFBFBD>etro. Estos par<EFBFBD>etros tendr<EFBFBD> la forma:@nombre_del_parametro
==================================================================================================*/
class Comando{
var $texto;
var $Conexion;
var $parametros=array();
var $Recordset;
var $resul;
var $error; // Error
var $ultimoerror; // Ultimo error detectado
var $inderror; // Contador de errores
var $msgerrores=array(
"No se ha producido ningn error",
"001 : Comando Error - No se ha establecido el texto del comando",
"002 : Comando Error - No se ha establecido la conexióndel comando",
"003 : Comando Error - No se ha abierto la conexi<78>",
"004 : Comando Error - La sentencia SQl del comando no es correcta",
"005 : Comando Error - No se ha podido recuperar el valor @@identity de la ltima clave insertada",
);
/*--------------------------------------------------------------------------------------------*/
function Comando(){ // Constructor de la clase
$this->inderror=0;
$this->ultimoerror=0;
$this->Recordset=new Recordset;
}
/* -------------------------------------------------------------------------------------------
Devuelve el c<EFBFBD>igo del ltimo error ocurrido durante el proceso anterior.
----------------------------------------------------------------------------------------------*/
function UltimoError(){
return($this->ultimoerror);
}
/* -------------------------------------------------------------------------------------------
Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
----------------------------------------------------------------------------------------------*/
function DescripUltimoError(){
return($this->msgerrores[$this->ultimoerror]);
}
/* -------------------------------------------------------------------------------------------
A<EFBFBD>de un par<EFBFBD>etro a la colecci<EFBFBD> de parametros. La matriz que implementa la colecci<EFBFBD>
es una matriz asociativa cuyo indice asociativo es el nombre del par<EFBFBD>etro
Par<EFBFBD>etros de entrada:
objparam: Un objeto parametro
---------------------------------------------------------------------------------------------*/
function AddParametro($objparam){
$tbparametro["nombre"]=$objparam->nombre;
$tbparametro["valor"]=$objparam->valor;
$tbparametro["tipo"]=$objparam->tipo;
$this->parametros[]=$tbparametro;
}
/* -------------------------------------------------------------------------------------------
A<EFBFBD>de un par<EFBFBD>etro a la colecci<EFBFBD> de parametros. La matriz que implementa la colecci<EFBFBD>
es una matriz asociativa cuyo indice asociativo es el del par<EFBFBD>etro
Par<EFBFBD>etros de entrada:
nombre: El nombre del par<EFBFBD>etro
valor : El valor del par<EFBFBD>etro
tipo = tipo de parametro:
0: El valor del par<EFBFBD>etro debe ir encerrado entre comillas simples
1: El valor del par<EFBFBD>etro no necesita ir entre comillas simples
---------------------------------------------------------------------------------------------*/
function CreaParametro($nombre,$valor,$tipo){
for($i=0;$i<sizeof($this->parametros);$i++){
if($this->parametros[$i]["nombre"]==$nombre){
$this->parametros[$i]["valor"]=$valor;
return;
}
}
$p = new parametro($nombre,$valor,$tipo);
$this->AddParametro($p);
}
/* -------------------------------------------------------------------------------------------
Sustituye el valor de un par<EFBFBD>etro existente por otro
Par<EFBFBD>etros de entrada:
nombre: El nombre del par<EFBFBD>etro
valor : El nuevo valor del par<EFBFBD>etro
---------------------------------------------------------------------------------------------*/
function ParamSetValor($nombre,$valor){
for($i=0;$i<sizeof($this->parametros);$i++){
if($this->parametros[$i]["nombre"]==$nombre)
$this->parametros[$i]["valor"]=$valor;
}
}
/* -------------------------------------------------------------------------------------------
Establece la conexiónque se usar<EFBFBD>para ejecutar las acciones pertinentes
Par<EFBFBD>etros de entrada:
objconexion: Un objeto conexion
---------------------------------------------------------------------------------------------*/
function EstableceConexion($objconexion){
$this->Conexion= $objconexion;
}
/* -------------------------------------------------------------------------------------------
Establece la conexiónque se usar<EFBFBD>para ejecutar las acciones pertinentes
Par<EFBFBD>etros de entrada:
textocomando: Un texto con la sentencia SQL (Puede contener par<EFBFBD>etros)
---------------------------------------------------------------------------------------------*/
function EstableceTexto($textocomando){
$this->texto=$textocomando;
}
/* -------------------------------------------------------------------------------------------
Sustituye el valor de los parametros en la expresi<EFBFBD> que forma el texto del Comando
---------------------------------------------------------------------------------------------*/
function Traduce(){
$execomando=$this->texto;
if (sizeof($this->parametros)>0){ // Hay par<61>etros que sustituir
foreach($this->parametros as $parametro){
if ($parametro["tipo"]==0) // Tipo alfanum<75>ico
$execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
else
$execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
}
}
$this->texto=$execomando;
}
/* -------------------------------------------------------------------------------------------
Ejecuta la sentencia SQL contenida en la propiedad texto
---------------------------------------------------------------------------------------------*/
function Ejecutar(){
$this->inderror=-1; // Inicializar contador de errores
$this->ultimoerror=-1;
if ($this->texto==null){
$this->error[$this->inderror++]=1; // Texto no especificado
$this->ultimoerror=1;
return(false);
}
else{
if ($this->Conexion==null){
$this->error[$this->inderror++]=2; // conexiónNO establecida
$this->ultimoerror=2;
return(false);
}
else{
if ($this->Conexion->estado==0){
$this->error[$this->inderror++]=3; // conexiónNO abierta
$this->ultimoerror=3;
return(false);
}
}
}
$this->Traduce();
if (!$this->resul=mysql_query($this->texto,$this->Conexion->controlador)){
$this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando
$this->ultimoerror=4;
return(false);
}
if (stristr($this->texto,"select")){
$this->Recordset->Inicializar();
$this->Recordset->filas=$this->resul;
$this->Recordset->numerodecampos=mysql_num_fields($this->Recordset->filas);
$this->Recordset->numeroderegistros=mysql_num_rows($this->Recordset->filas);
if ($this->Recordset->numeroderegistros>0){
$this->Recordset->BOF=false;
$this->Recordset->EOF=false;
$this->Recordset->campos=mysql_fetch_array($this->Recordset->filas);
}
}
$this->error[$this->inderror++]=0; // Comando ejecutado correctamante
$this->ultimoerror=0;
return(true);
}
/* -------------------------------------------------------------------------------------------
Esta funci<EFBFBD> recupera el ltimo nmero asignado a una clave autonum<EFBFBD>ica de una tabla
---------------------------------------------------------------------------------------------*/
function Autonumerico(){
$ulreg=mysql_insert_id();
return($ulreg);
}
}
/*=========================================================================================
Clase para consultar tablas y vistas de una base de datos.
Especificaciones:
- Estado del recordset ($estado)
0: Cerrado
1: Abierto
=========================================================================================*/
class Recordset{
var $Comando;
var $filas= array();
var $BOF,$EOF,$estado;
var $campos;
var $numeroderegistros,$numerodecampos,$posicion;
var $error; // Error
var $ultimoerror; // Ultimo error detectado
var $inderror; // Contador de errores
var $msgerrores=array(
"No se ha producido ningn error",
"001 : Recordset Error - Comando no establecido",
"002 : Recordset Error - No se ha establecido la conexióndel comando",
"003 : Recordset Error - No se ha abierto la conexi<78>",
"004 : Recordset Error - No se pudo abrir la consulta",
"005 : Recordset Error - La sentencia SQl del comando no contiene la clausula SELECT",
"006 : Recordset Error - No se puede liberar la consulta",
);
/*--------------------------------------------------------------------------------------------*/
function Recordset(){ // Constructor de la clase
$this->Inicializar();
}
/* -------------------------------------------------------------------------------------------
Inicializa propiedades de las clase
----------------------------------------------------------------------------------------------*/
function Inicializar(){
$this->BOF=true;
$this->EOF=true;
$this->posicion=0;
$this->numeroderegistros=0;
$this->numerodecampos=0;
$this->estado=0;
}
/* -------------------------------------------------------------------------------------------
Devuelve el c<EFBFBD>igo del ltimo error ocurrido durante el proceso anterior.
----------------------------------------------------------------------------------------------*/
function UltimoError(){
return($this->ultimoerror);
}
/* -------------------------------------------------------------------------------------------
Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
----------------------------------------------------------------------------------------------*/
function DescripUltimoError(){
return($this->msgerrores[$this->ultimoerror]);
}
/* -------------------------------------------------------------------------------------------
Establece el comando que se usar<EFBFBD>para ejecutar las consultas pertinentes
Par<EFBFBD>etros de entrada:
objcomando: Un objeto comando con la sentencia SQL (Puede contener par<EFBFBD>etros)
Devuelve :
true : Si el texto del comando contiene la clausula SELECT
false: En caso contrario
En el caso de devolver false, la funci<EFBFBD> TomaUltimoError() devuelve el error ocurrido
---------------------------------------------------------------------------------------------*/
function EstableceComando($objcomando){
$this->inderror=-1; // Inicializar contador de errores
$this->ultimoerror=-1;
if (stristr($objcomando->texto,"select")){
$this->Comando=$objcomando;
$this->error[$this->inderror++]=0; // Comando v<>ido, contiene "SELECT"
$this->ultimoerror=0;
return(true);
}
else{
$this->error[$this->inderror++]=5; // Comando no valido, NO contiene "SELECT"
$this->ultimoerror=5;
return(false);
}
}
/* -------------------------------------------------------------------------------------------
Sustituye el valor de los parametros en la expresi<EFBFBD> que forma el texto del Comando
---------------------------------------------------------------------------------------------*/
function Traduce(){
$execomando=$this->Comando->texto;
if (sizeof($this->Comando->parametros)>0){ // Hay par<61>etros que sustituir
foreach($this->Comando->parametros as $parametro){
if ($parametro["tipo"]==0) // Tipo alfanum<75>ico
$execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
else
$execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
}
}
$this->Comando->texto=$execomando;
}
/* -------------------------------------------------------------------------------------------
Recupera registros de la base de datos
---------------------------------------------------------------------------------------------*/
function Abrir(){
$this->inderror=-1; // Inicializar contador de errores
$this->ultimoerror=-1;
if ($this->Comando==null){
$this->error[$this->inderror++]=1; // Comando no especificado
$this->ultimoerror=1;
return(false);
}
else{
if ($this->Comando->Conexion==null){
$this->error[$this->inderror++]=2; // conexiónNO establecida
$this->ultimoerror=2;
return(false);
}
else{
if ($this->Comando->Conexion->estado==0){
$this->error[$this->inderror++]=3; // conexiónNO abierta
$this->ultimoerror=3;
return(false);
}
}
}
$this->Traduce();
$this->Inicializar();
if (!$this->filas=mysql_query($this->Comando->texto,$this->Comando->Conexion->controlador)){
$this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando o al abrir la consula
$this->ultimoerror=4;
return(false);
}
$this->numeroderegistros=mysql_num_rows($this->filas); // La consulta se ha realizado con <20>ito
$this->numerodecampos=mysql_num_fields($this->filas);
if ($this->numeroderegistros>0){
$this->BOF=false;
$this->EOF=false;
$this->campos=mysql_fetch_array($this->filas);
}
$this->estado=1; // Recordset abierto
$this->error[$this->inderror++]=0; // Recuperaci<63> de registros correcta
$this->ultimoerror=0;
return(true);
}
/* -------------------------------------------------------------------------------------------
Libera los registros de una consulta de la base de datos
---------------------------------------------------------------------------------------------*/
function Cerrar(){
$this->inderror=-1; // Inicializar contador de errores
$this->ultimoerror=-1;
if (!mysql_free_result($this->filas)){
$this->error[$this->inderror++]=6; // Error al cerrar la consulta (Al liberar memoria)
$this->ultimoerror=6;
return(false);
}
$this->Inicializar();
$this->error[$this->inderror++]=0; // Recuperaci<63> de registros correcta
$this->ultimoerror=0;
return(true);
}
/* -------------------------------------------------------------------------------------------
Mueve el puntero de lectura al siguiente registro del recordset
---------------------------------------------------------------------------------------------*/
function Siguiente(){
if (!$this->EOF){
$this->posicion++;
if ($this->posicion==$this->numeroderegistros)
$this->EOF=true;
else{
if (mysql_data_seek($this->filas,$this->posicion))
$this->campos=mysql_fetch_array($this->filas);
}
}
}
/* -------------------------------------------------------------------------------------------
Mueve el puntero de lectura al anterior registro del recordset
---------------------------------------------------------------------------------------------*/
function Anterior(){
if (!$this->BOF){
$this->posicion--;
if ($this->posicion<0)
$this->BOF=true;
else{
if (mysql_data_seek($this->filas,$this->posicion));
$this->campos=mysql_fetch_array($this->filas);
}
}
}
/* -------------------------------------------------------------------------------------------
Mueve el puntero de lectura al primer registro del recordset
---------------------------------------------------------------------------------------------*/
function Primero(){
if ($this->numeroderegistros>0){
$this->posicion=0;
if (mysql_data_seek($this->filas,$this->posicion))
$this->campos=mysql_fetch_array($this->filas);
}
}
/* -------------------------------------------------------------------------------------------
Mueve el puntero de lectura al ltimo registro del recordset
---------------------------------------------------------------------------------------------*/
function Ultimo(){
if ($this->numeroderegistros>0){
$this->posicion=$this->numeroderegistros-1;
if (mysql_data_seek($this->filas,$this->posicion))
$this->campos=mysql_fetch_array($this->filas);
}
}
}
/* -------------------------------------------------------------------------------------------
Esta funci<EFBFBD>n devuelve una matriz asociativa con el nombre de los campos del recordset
---------------------------------------------------------------------------------------------*/
function DatosNombres(){
if (mysql_data_seek($this->filas,$this->posicion))
return(mysql_fetch_assoc($this->filas));
return("");
}
/* -------------------------------------------------------------------------------------------
Esta funci<EFBFBD>n devuelve informaci<EFBFBD>n sobre los campos de la tabla
---------------------------------------------------------------------------------------------*/
function InfoCampos(){
$infocampos= array ();
while ($row = mssql_fetch_field($this->filas)) {
$campo["name"]=$row->name;
$campo["column_source"]=$row->column_source;
$campo["maxlon"]=$row->max_length;
$campo["numeric"]=$row->numeric;
array_push($infocampos,$campo);
}
return($infocampos);
}
?>

View File

@ -0,0 +1,272 @@
<?
include_once("XmlPhp.php");
/*===============================================================
Esta clase implementa la apariencia y comportamiento de un treeview en código HTML y javascript.
La clase utiliza la clase XmlPhp.php para acceder al documento XML.
Parámetros del constructor:
-fXML=Fichero XML
-fileocade=Indica si el dato anterior es un fichero o una variable con el contenido del árbol
0: Es una cadena
1: Es un fichero
-baseurlimg= Url base de las imágenes de los nodos de contracción-expansión
-clasedefault=Clase por defecto de los literales de los nodos
-nivelexp= Máximo nivel que aparecera expandido
-x= Posición x donde aparecerá la tabla
-y= Posición y donde aparecerá la tabla
=================================================================*/
class ArbolVistaXML{
var $baseurlimg; // Base de la URL de las imágenes de los nodos de contracción-expansión
var $clasedefault; // Clase por defecto de los literales de los nodos
var $gXML; // Objeto gestor del documento XML
var $nivelexp; // Nivel máximo que aprecerá visible
var $x; // Posición x donde aparecerá la tabla
var $y; // Posición y donde aparecerá la tabla
var $c_imgnivel=array(); // Imagenes de expansión y contracción para los distintos niveles
var $v_imgnivel=array(); // Valores de expansión y contracción para los distintos niveles
var $nodos_count; // Contador de nodo
Function ArbolVistaXML($fXML,$fileocade,$baseurlimg="/.images/",$clasedefault,$nivelexp=0,$x=0,$y=0,$tipotabla=0,$titulotabla=""){
// Constructor
$this->gXML=new XmlPhp($fXML,$fileocade);
$this->baseurlimg=$baseurlimg;
$this->clasedefault=$clasedefault;
$this->nivelexp=$nivelexp;
$this->x=$x;
$this->y=$y;
$this->tipotabla=$tipotabla;
$this->titulotabla=$titulotabla;
// Anchura de los distibtos tipos de tablas
if($this->tipotabla>0){
$this->anchoM=" width=100% ";
$this->ancho=" width=100% ";
}
else{
$this->anchoM=" width=1024 ";
$this->ancho="";
}
for($i=0;$i<=5;$i++){ // Inicializar
$this->c_imgnivel[$i]=$this->baseurlimg.'/nada.gif';
$this->v_imgnivel[$i]="nada";
}
$this->nodos_count=0;
}
/*------------------------------------------------------------------------------------------------
Esta función devuelve una cadena con el contenido de un treeview en código HTML
------------------------------------------------------------------------------------------------*/
Function CreaArbolVistaXML(){
if (!$this->gXML->NodoRaiz()) return; // No existe documento XML que analizar
$arbol_total='<TABLE border=0 '.$this->anchoM.' class="'.$this->clasedefault. '" style="POSITION:absolute;TOP:'.$this->y.'px;LEFT:'.$this->x.'px" class=texto_arbol cellspacing=0 cellpadding=0 border=0>';
if($this->tipotabla>0) $arbol_total.='<TR><TH>'. $this->titulotabla .'</TH></TR>';
$arbol_total.='<TR style="display:block">';
$arbol_total.='<TD>';
$arbol_total.='<TABLE id=tablanivel-0 border=0 cellspacing=0 cellpadding="0">';
$arbol_total.=$this->_arbolXmlrecur(0);
$arbol_total.='</TABLE>';
$arbol_total.='</TD>';
$arbol_total.='</TR>';
$arbol_total.='</TABLE>';
return($arbol_total);
}
// -------------------------------------------------------------------------------------
// Recorrido recursivo del arbol XML
// Parámetros:
// nivel: nivel del nodo
// -------------------------------------------------------------------------------------
function _arbolXmlrecur($nivel){
$arbol_total="";
if ($nivel+1>$this->nivelexp) $displai="none"; else $displai="block";
do{
$gnptr=$this->gXML->nptr;
$arbol_total.='<TR style="display:block" id=TRNodo-'.$this->nodos_count.'>';
$arbol_total.='<TD>';
$arbol_total.=$this->_dibujo_nodo($this->gXML->Nodo(),$nivel,$this->gXML->NumerodeHijos(),$this->gXML->EsUltimoHermano());
$arbol_total.='</TD>';
$arbol_total.='</TR>';
$this->nodos_count++;
if ($this->gXML->PrimerNodoHijo()){
$arbol_total.='<TR id="TRNodoHijo-'.$this->nodos_count.'" style="display:'.$displai.'">';
$arbol_total.='<TD>';
$arbol_total.='<TABLE id="tablanivel-'.($nivel+1).'" border=0 cellspacing=0 cellpadding=0>';
$arbol_total.=$this->_arbolXmlrecur($nivel+1);
$arbol_total.='</TABLE>';
$arbol_total.='</TD>';
$arbol_total.='</TR>';
}
$this->gXML->nptr=$gnptr;
}while($this->gXML->SiguienteNodoHermano());
return($arbol_total);
}
// -------------------------------------------------------------------------------------
// Crea un nodo
// Parámetros:
// nivel: nivel del nodo
// -------------------------------------------------------------------------------------
function CreaNodo($nivel){
$nodo=$this->_dibujo_nodo($this->gXML->Nodo(),$nivel,0,true);
return($nodo);
}
/*------------------------------------------------------------------------------------------------
Dibuja los nodos del árbol
parámetros:
nodo: La información del nodo
nivel: Nivel del nodo
nhijos: numero de hijos
uhermano: Es true si el nodo es el último de sus hermanos
Especificaciones:
Los atributos de los nodos pueden ser HTML o especificos de
esta aplicación. Lso atributos del nodo propios de ésta son:
- clicksupimg: Función suplementaria de la imagen de signo
- imagenid: Identificador de la imagen de signo
- clickimg: La función que se ejecutará al hacer click sobre la imagen de nodo
- downimg: La función que se ejecutará al pulsar el ratón sobre la imagen de nodo
- clickcontextualimg: Función que se ejecutara al hacer click con el boton derecho sobre la imagen del nodo
- imagenodo: Es la url de la imagen de nodo
- infonodo: Es texto que se visualiza del nodo
- mouseovernodo: La función a ejecutar cuando se posa el ratón sobre el literal del nodo
- clicksupnodo: Función suplementaria del literal del nodo
- clickcontextualnodo: Función que se ejecutara al hacer click con el boton derecho sobre el nodo
- classnodo: Clase (style) a la que pertenece el nodo
- nodoid: identificador del nodo
- nodovalue: parametro value del nodo
------------------------------------------------------------------------------------------------*/
function _dibujo_nodo($nodo,$nivel,$nhijos,$uhermano){
// Comprobar descendencia y posición dentro de los hermanos
$swu=false; // switch para saber si el nodo es el último hermano
$swh=false; // switch para saber si el nodo tiene hijos
if ($nhijos>0) $swh=true;
$swu=$uhermano;
if ($swh){ // Si tiene hijos ..
if ($swu){ // Si es el último de sus hermanos ..
if ($nivel<$this->nivelexp){
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/menos_c.gif';
$this->v_imgnivel[$nivel]="menos_c";
}
else{
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/mas_c.gif';
$this->v_imgnivel[$nivel]="mas_c";
}
}
else{ // Si NO lo es ..
if ($nivel<$this->nivelexp){
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/menos_t.gif';
$this->v_imgnivel[$nivel]="menos_t";
}
else{
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/mas_t.gif';
$this->v_imgnivel[$nivel]="mas_t";
}
}
if ($nivel==0){
if ($this->nivelexp>0)
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/menos_root.gif';
else
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/mas_root.gif';
}
}
else{ // Si NO tiene hijos ..
if ($swu){ // Si es el último de sus hermanos ..
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada_c.gif';
$this->v_imgnivel[$nivel]="nada_c";
}
else{ // Si no lo es ..
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada_t.gif';
$this->v_imgnivel[$nivel]="nada_t";
}
}
// Fin Comprobar descendencia y posición dentro de los hermanos
if($this->tipotabla==0)
$arbol='<TABLE border=0 cellspacing=0 cellpadding=0>';
else
$arbol='<TABLE style="BORDER-BOTTOM:#000000 1px solid;" border=0 cellspacing=0 cellpadding=0>';
$arbol.='<TR height="16px">';
$atributosHTML=" ";
$atributosHTML=$this->gXML->Atributos($nodo);
$colornodo="";
$fondonodo="";
$estilo="";
$atributosHTML=$this->gXML->TomaAtributoEspecial("colornodo",$colornodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("fondonodo",$fondonodo,$atributosHTML);
if ($colornodo!="" ) $colornodo=' COLOR:'.$colornodo.";";
if ($fondonodo!="" ) $fondonodo=' BACKGROUND-COLOR:'.$fondonodo.";";
$estilo=$colornodo || $fondonodo;
if ($estilo!="" ) $estilo='style="'.$colornodo.$fondonodo.'"';
for ($i=0;$i<$nivel;$i++){ // Niveles previos
$arbol.='<TD '.$estilo.'width="3px"></TD>';
$arbol.='<TD '.$estilo.' width="16px"><IMG src="'.$this->c_imgnivel[$i].'" width="16px" height="16px" ></TD>';
}
$arbol.='<TD '.$estilo.' width="3px"></TD>'; // Desplazamiento de la imagen
$arbol.='<TD '.$estilo.' width="16px">';
$imagenid="";
$clicksupimg="";
$atributosHTML=$this->gXML->TomaAtributoEspecial("imagenid",$imagenid,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("clicksupimg",$clicksupimg,$atributosHTML);
if ($clicksupimg!="") $clicksupimg.=';';
if ($swh){ // El nodo tiene hijos
$arbol.='<A href="#nodo"><IMG border=0 '.$estilo.' id="'.$imagenid.'" onclick="clickImagenSigno(this,' ."'".$this->baseurlimg."'".','.$nivel.');'.$clicksupimg.'" src="'.$this->c_imgnivel[$nivel].'" width="16px" height="16px" value="'.$this->v_imgnivel[$nivel].'"></A></TD>';
}
else
$arbol.='<SPAN><IMG '.$estilo.' id="'.$imagenid.'" src="'.$this->c_imgnivel[$nivel].'" width="16px" height="16px" value="'.$this->v_imgnivel[$nivel].'"></SPAN></TD>';
$imagenodo="";
$clickimg="";
$downimg="";
$clickcontextualimg="";
$styleimg="";
$atributosHTML=$this->gXML->TomaAtributoEspecial("imagenodo",$imagenodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("clickimg",$clickimg,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("downimg",$downimg,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("clickcontextualimg",$clickcontextualimg,$atributosHTML);
if ($clickimg!="" ) $clickimg=' onclick="'.$clickimg.'" ';
if ($downimg!="" ) $downimg=' onmousedown="'.$downimg.'" ';
if ($clickcontextualimg!="" ) $clickcontextualimg=' oncontextmenu=" '.$clickcontextualimg.'" ';
if ($clickimg!="" || $downimg!="" || $clickcontextualimg!="" ) $styleimg=' style="cursor:hand"';
$arbol.='<TD '.$estilo.' width=16px><IMG '.$styleimg.' src="'.$imagenodo.'"'.$clickimg.$downimg.$clickcontextualimg.' width="16px" height="16px"></TD>';
$arbol.='<TD '.$estilo.' width="4px"></TD>';
$clicksupnodo="";
$clickcontextualnodo="";
$classnodo="";
$nodoid="";
$nodovalue="";
$mouseovernodo="";
$infonodo="";
$atributosHTML=$this->gXML->TomaAtributoEspecial("clickcontextualnodo",$clickcontextualnodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("clicksupnodo",$clicksupnodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("classnodo",$classnodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("nodoid",$nodoid,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("nodovalue",$nodovalue,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("colornodo",$colornodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("fondonodo",$fondonodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("mouseovernodo",$mouseovernodo,$atributosHTML);
$atributosHTML=$this->gXML->TomaAtributoEspecial("infonodo",$infonodo,$atributosHTML);
if ($clickcontextualnodo!="" ) $clickcontextualnodo=' oncontextmenu="'.$clickcontextualnodo.'" ';
if ($mouseovernodo!="" ) $mouseovernodo=' onmouseover="'.$mouseovernodo.'" ';
if ($nodovalue!="" ) $nodovalue=' value="'.$nodovalue.'" ';
if (!$classnodo) $classnodo=$this->clasedefault;
$arbol.='<TD width="1024px" '.$estilo.' class="'.$classnodo.'">';
$arbol.='<A href="#nodo" class="'.$this->clasedefault. '" style="text-decoration: none"><SPAN id="'.$nodoid.'" ';
if($this->tipotabla<2){
$arbol.=' onclick="clickLiteralNodo(this ,' ."'".$this->baseurlimg."'".');';
$arbol.=" ".$clicksupnodo.'"'.$nodovalue.$mouseovernodo.$clickcontextualnodo;
}
$arbol.=' >'.$infonodo.'</SPAN></A></TD>';
$arbol.='</TR>';
$arbol.='</TABLE>';
if ($swu)
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada.gif';
else
$this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada_l.gif';
return($arbol);
}
} // Fin de la clase

View File

@ -0,0 +1,55 @@
<?php
/*================================================================================
Clase para encriptar y desencriptar cadenas
================================================================================*/
class EncripDescrip{
var $cadena; // La cadena encriptada o desencriptada que ser<65>devuelta
var $clave; // La clave de la cadena encriptada o desencriptada que ser<65>devuelta
//________________________________________________________________________________________
//
// Constructor
//________________________________________________________________________________________
function EncripDescrip($clave=12){
$this->cadena="";
$this->clave=$clave;
}
// ____________________________________________________________________________
//
// Encripta una cadena
//_____________________________________________________________________________
function Encriptar($cadena){
return( $cadena);
$clave=(int)$this->clave;
$clave = (int)$clave & 0xFF;
$lon=strlen($cadena);
$this->cadena="";
for($i=0;$i<$lon;$i++){
$ch=(int)ord($cadena[$i]);
$pot=(int)$ch^(int)$clave;
$this->cadena.=chr($pot);
}
return( $this->cadena);
}
// ____________________________________________________________________________
//
// Desencripta una cadena
//_____________________________________________________________________________
function Desencriptar($cadena){
return( $cadena);
$clave=(int)$this->clave;
$clave = (int)$clave & 0xFF;
$lon=strlen($cadena);
$this->cadena="";
for($i=0;$i<$lon;$i++){
$ch=(int)ord($cadena[$i]);
$pot=(int)$ch^(int)$clave;
$this->cadena.=chr($pot);
}
return( $this->cadena);
}
}
?>

View File

@ -0,0 +1,164 @@
<?php
/*==================================================================================================
Clase para trabajar con menús contextuales.
Especificaciones de las etiquetas XML:
- MENUCONTEXTUAL: Elemento raiz en el se especifican los atributos del <DIV>
- ITEM: Especificaciones de cada item.
- SEPARADOR: Indica una linea divisoria entre items
Especificaciones de atributos:
- idctx: Identificador del menu contextual (DIV)
- imgitem: La url de la imagen que acompañará al literal
- alignitem: La alineación del texto del item (por defecto left)
- textoitem: El literal del item
- subflotante: Si el item despliega otro menu contextual. El valor es el id de ése
- maxanchu: Máxima anchura del menu contextual
- swimg: Vale 1 si el menu tiene algún item con imagen y 0 en caso contrario
- alpulsar: Nombre de la función javascript que se ejecutará en respuesta al evento onclick
- clase: Estilo CSS que tendrán los item menu contextual
- origen_x: Posición de origen, coordenada x
- origen_y: Posición de origen, coordenada y
Especificaciones de eventos:
- Los eventos onmouseover y onmouseout están implicitos en la clase por defecto
Especificaciones de submenus:
- Si una opción lleva un submenu asociado el id de éste va en el atributo name del <TR>
==================================================================================================*/
class MenuContextual{
Function MenuContextual($urlImages="../images/flotantes"){
$this->urlImg=$urlImages;
}
/*---------------------------------------------------------------------------------------------
Devuelve una cadena en formato HTML de un layer para usarlo como menu contextual
Parametros:
- cadenaXML: Una cadena en formato XML con los atributos de cada item
---------------------------------------------------------------------------------------------*/
function CreaMenuContextual($cadenaXML){
$idx=0;
$layer="";
$idctx="";
$maxanchu=100;
$swimg=0;
$imgitem="";
$alignitem="";
$textoitem="";
$clase="";
$subflotante="";
$origen_x="0";
$origen_y="0";
$gXML=new XmlPhp($cadenaXML,0);
$gXML->NodoRaiz();
$atributosHTML=$gXML->Atributos();
$atributosHTML=$gXML->TomaAtributoEspecial("maxanchu",$maxanchu,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("swimg",$swimg,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("clase",$clase,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("idctx",$idctx,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("origen_x",$origen_x,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("origen_y",$origen_y,$atributosHTML);
if(empty($origen_x)) $origen_x=0;
if(empty($origen_y)) $origen_y=0;
if (!$clase) $clase="menu_contextual";
$layer.='<DIV class="'.$clase.'" id="'.$idctx.'" width='.$maxanchu.' style="visibility:hidden;position:absolute;top:'.$origen_y.';left:'.$origen_x.'" >';
$nuitems=2;
if ($gXML->PrimerNodoHijo()){
$layer.='<TABLE border=0 width='.$maxanchu.' border=0 cellspacing=0 cellpadding=0>';
$layer.='<TR width='.$maxanchu.' height=3>'; // Primera linea
$layer.='<TD width=3 background="'.$this->urlImg.'/esi.gif"></TD>';
$layer.='<TD colspan=6 background="'.$this->urlImg.'/lsu.gif"></TD>';
$layer.='<TD width=3 background="'.$this->urlImg.'/esd.gif"></TD>';
$layer.='</TR>';
$layer.='<TR width='.$maxanchu.' height=3>'; // Linea de relleno
$layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD colspan=4></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
$layer.='</TR>';
do{
$nuitems++;
$atributosHTML=$gXML->Atributos();
$tiponodo=$gXML->NombreNodo();
if ($tiponodo=="ITEM"){
$atributosHTML=$gXML->TomaAtributoEspecial("imgitem",$imgitem,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("textoitem",$textoitem,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("subflotante",$subflotante,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("alpulsar",$alpulsar,$atributosHTML);
$atributosHTML=$gXML->TomaAtributoEspecial("alignitem",$alignitem,$atributosHTML);
if ($alignitem==null) $alignitem="left";
$clickcontextual=' onclick="'.$alpulsar.'" ';
$oncontextual=' onmouseover="sobre_contextual(this)" ';
$offcontextual="";
$idx++;
$layer.='<TR id='.$idx.' name="'.$subflotante.'" width='.$maxanchu.' '.$clickcontextual.' '.$oncontextual.' '.$offcontextual.' height=20>'; // Linea de item
$layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
$layer.='<TD width=3></TD>';
if ($imgitem!=null){ // Item con imagen
$imgonclick="";
$layer.='<TD width=20 align=center id="TDimg-'.$idx .'"><IMG width=16 src="'.$imgitem.'"></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD align='.$alignitem.' id="TDLit-'.$idx .'" width='.($maxanchu-38).' '.$atributosHTML.'><A href="javascript:void(0)" style="text-decoration: none"><SPAN>'.$textoitem.'</SPAN></A></TD>';
}
else{
if ($swimg==1){ // Hay algún item con imagen
$layer.='<TD width=20></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD align='.$alignitem.' width='.($maxanchu-38).' '.$atributosHTML.'><A href="#" style="text-decoration: none"><SPAN>'.$textoitem.'</SPAN></A></TD>';
}
else{
$layer.='<TD width=10></TD>';
$layer.='<TD colspan=2 align='.$alignitem.' width='.($maxanchu-25).' ' .$atributosHTML.' ><A href="#" style="text-decoration: none"><SPAN>'.$textoitem.'</SPAN></A></TD>';
}
}
if ($subflotante!=null)
$layer.='<TD valign=middle><IMG width=3 name="swsbfn" align=left src="'.$this->urlImg.'/swsbfn.gif">';
else
$layer.='<TD width=3 >';
$layer.='</TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
$layer.='</TR>';
}
if ($tiponodo=="SEPARADOR"){ // Separadores
$layer.='<TR width='.$maxanchu.' height=16>'; // Linea de separación
$layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD colspan=4 background="'.$this->urlImg.'/sep.gif"></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
$layer.='</TR>';
}
}while($gXML->SiguienteNodoHermano());
$layer.='<TR width='.$maxanchu.' height=3>'; // Linea de relleno
$layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD colspan=4></TD>';
$layer.='<TD width=3></TD>';
$layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
$layer.='</TR>';
$layer.='<TR width='.$maxanchu.' height=3>'; // Última linea
$layer.='<TD width=3 background="'.$this->urlImg.'/eii.gif"></TD>';
$layer.='<TD colspan=6 background="'.$this->urlImg.'/lin.gif"></TD>';
$layer.='<TD width=3 background="'.$this->urlImg.'/eid.gif"></TD>';
$layer.='</TR>';
$layer.='</TABLE>';
$layer.='<INPUT type=hidden value="-1">'; // Representará el índice seleccionado
$layer.='</DIV>';
}
return($layer);
}
}
?>

View File

@ -0,0 +1,183 @@
<?php
include_once("EncripDescrip.php");
/*================================================================================
Clase para conectarse con el servidor hidra y enviar comandos
Cualquier error producido en los procesos se puede recuperar con los m<EFBFBD>odos
================================================================================*/
class SockHidra{
var $ultimoerror; // Ultimo error detectado
var $descripultimoerror; // Descripción del ltimo error detectado
var $socket; // Stream socket
var $servidor; // El servidor hidra
var $puerto; // El puerto odnde se conectar<61>
var $timeout; // El tiempo de espera para la conexi<78>
var $encripdescrip; // El encriptador
var $LONGITUD_TRAMA; // M<>ima longitud de la trama
//________________________________________________________________________________________
//
// Constructor
// Parámetros:
// - servidor: El nombre o la IP del servidor
// - puerto: El puerto usado para las comunicaciones
// - timeout: El tiempo de espera para la conexi<78>
//________________________________________________________________________________________
function SockHidra($servidor,$puerto,$timeout=30){
$this->servidor=$servidor;
if (!$this->_esIP($this->servidor))
$this->servidor = gethostbyname ($servidor);
$this->puerto=$puerto;
$this->timeout=$timeout;
$this->LONGITUD_TRAMA=4048;
$this->encripdescrip=new EncripDescrip();
}
//________________________________________________________________________________________
//
// Averigua si el parametro pasado es una IP. devuelve true en caso afirmativo
//________________________________________________________________________________________
function _esIP(){
return(false);
}
//________________________________________________________________________________________
//
// Conecta con el servidor
// Devuelve:
// - false: Si falla la conexi<78>
// - true: En caso contrario
//________________________________________________________________________________________
function conectar(){
$this->socket = socket_create (AF_INET, SOCK_STREAM, 0);
if ($this->socket < 0) {
$this->ultimoerror=socket_strerror($socket);
$this->descripultimoerror="socket_create() fallo";
return(false);
}
$result = socket_connect ($this->socket,$this->servidor,$this->puerto);
if ($result < 0) {
$this->ultimoerror=socket_strerror($result);
$this->descripultimoerror="socket_connect() fallo";
return(false);
}
return(true);
}
//________________________________________________________________________________________
//
// Cerrar la conexióncon el servidor
// Devuelve:
// - false: Si falla la conexi<78>
// - true: En caso contrario
//________________________________________________________________________________________
function desconectar(){
socket_close ($this->socket);
}
//________________________________________________________________________________________
//
// Devuelve el c<>igo del ltimo error ocurrido durante el proceso anterior.
//________________________________________________________________________________________
function UltimoError(){
return($this->ultimoerror);
}
//________________________________________________________________________________________
//
// Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
//________________________________________________________________________________________
function DescripUltimoError(){
return($this->descripultimoerror);
}
//________________________________________________________________________________________
//
// Envia una petición de comando al servidor
// Parámetros:
// - Parámetros: Parámetros del mensaje
//________________________________________________________________________________________
function envia_comando($parametros)
{
global $MSG_COMANDO;
$tipo=$MSG_COMANDO;
return($this->envia_trama($parametros,$tipo));
}
//________________________________________________________________________________________
//
// Envia una petición de información al servidor
// Parámetros:
// - Parámetros: Parámetros del mensaje
//________________________________________________________________________________________
function envia_peticion($parametros)
{
global $MSG_PETICION;
$tipo=$MSG_PETICION;
return($this->envia_trama($parametros,$tipo));
}
//________________________________________________________________________________________
//
// Envia un mensaje al servidor
// Parámetros:
// - trama: Trama a enviar
// - tipo: Tipo de mensaje
//________________________________________________________________________________________
function envia_trama($parametros,$tipo)
{
global $LONHEXPRM;
global $LONCABECERA;
$arroba="@";
$identificador="JMMLCAMDJ_MCDJ";
$lonprm=strlen($parametros);
/* Encripta los parámetros */
$parametros=$this->encripdescrip->Encriptar($parametros,&$lonprm);
/* Pasa a hexadecimal la longitud de los parámetros ya encriptados para incluirla dentro de la cabecera */
$hlonprm=str_pad(dechex($LONCABECERA+$LONHEXPRM+$lonprm),$LONHEXPRM,"0",STR_PAD_LEFT); // Rellena con ceros
$trama=$arroba.$identificador.$tipo.$hlonprm.$parametros;
$resul=socket_write($this->socket,$trama,$LONCABECERA+$LONHEXPRM+$lonprm);
if (!$resul) {
$this->ultimoerror=socket_strerror($resul);
$this->descripultimoerror="socket_write() fallo";
return(false);
}
return(true);
}
//________________________________________________________________________________________
//
// Recibe una trama del servidor
// Parámetros:
// - lon: Longitud de la trama
// Devuelve:
// La trama recibida
//________________________________________________________________________________________
function recibe_respuesta()
{
global $LONHEXPRM;
global $LONCABECERA;
global $LONBLK;
$lon=$lSize=0;
$buffer="";
$cadenaret="";
do{
$bloque = socket_read ($this->socket,$LONBLK);// Lee bloque
$buffer.=$bloque; // Añade bloque
$lon+=strlen($bloque);
if($lSize==0){ // Comprueba tipo de trama y longitud total de los parámetros
if (substr($buffer,0,15)!="@JMMLCAMDJ_MCDJ")
return($cadenaret); // No se reconoce la trama
$hlonprm=hexdec(substr($buffer,$LONCABECERA,$LONHEXPRM));
$lSize=$hlonprm; // Longitud total de la trama con los parametros encriptados
}
}while($lon<$lSize);
$lon=$lSize-($LONCABECERA+$LONHEXPRM); // Longitud de los parametros aún encriptados
$parametros=substr($buffer,$LONCABECERA+$LONHEXPRM,$lon); // Parametros encriptados
$parametros=$this->encripdescrip->Desencriptar($parametros,&$lonprm); // Parametros sin encriptar
$hlonprm=str_pad(dechex($lon),$LONHEXPRM,"0",STR_PAD_LEFT); // Rellena con ceros
$cadenaret=substr($buffer,0,$LONCABECERA).$hlonprm.$parametros;
return($cadenaret);
}
}
?>

View File

@ -0,0 +1,285 @@
<?
/*================================================================================
Esta clase implementa funciones de utilidad para tratar ficheros XML
Parametros del constructor:
fxml=Fichero XML que contiene los atributos de los nodos
fileocade=Indica si el dato anterior es un fichero o una variable con el contenido del árbol:
0: Es una cadena
1: Es un fichero
Especificaciones:
Se le llama información del nodo al nombre del nodo + sus atributos eliminando los marcadores
de comienzo:"<" y fin:">"
================================================================================*/
class XmlPhp{
var $buffer;
var $nptr;
function XmlPhp($fxml,$fileocade){ // Constructor
if ($fileocade==0){
$this->nptr=1;
$this->buffer=trim($fxml);
}
else{
$tbuffer=filesize($fxml); // Calcula tamaño del fichero
if ($tbuffer>0){ // EL fichero tiene contenido
$fd=fopen($fxml, "r");
$this->buffer=fread ($fd,$tbuffer);
fclose ($fd);
$this->nptr=1;
$this->buffer=trim($this->buffer);
}
}
$this->buffer=ereg_replace( "[\n\r\t]"," ", $this->buffer );
}
/* -------------------------------------------------------------------------------------------
Recupera la información del primer nodo (nodo raiz) del arbol.Devuelve false en caso de que
no tenga hijos o bien no exista documento XML que analizar.
---------------------------------------------------------------------------------------------*/
function InfoNodoRaiz(){
if (!$this->NodoRaiz()) // No existe documento XML
return(false);
return($this->Infonodo());
}
/* -------------------------------------------------------------------------------------------
Establece el puntero de nodos al primer nodo del árbol (nodo raiz). Devuelve false en caso
de que no exista documento XML que analizar.
---------------------------------------------------------------------------------------------*/
function NodoRaiz(){
if ($this->buffer==null) return(false); // No existe documento XML
$this->nptr=0;
while ($this->nptr<strlen($this->buffer))
if ('<'==substr($this->buffer,$this->nptr++,1)) return(true);
return(false);
}
/* -------------------------------------------------------------------------------------------
Recupera la información del primer nodo hijo del nodo actual. Devuelve false en caso de que
no tenga hijos o bien no exista documento XML que analizar.
---------------------------------------------------------------------------------------------*/
function InfoPrimerNodoHijo(){
if (!$this->PrimerNodoHijo()) // No tiene hijos o no existe documento XML
return(false);
return($this->Infonodo());
}
/* -------------------------------------------------------------------------------------------
Establece el puntero de nodos al primer nodo hijo del nodo actual. Devuelve false en caso
de que no tenga hijos o bien no exista documento XML que analizar.
---------------------------------------------------------------------------------------------*/
function PrimerNodoHijo(){
if ($this->buffer==null) return(false); // No existe documento XML
$gnptr=$this->nptr;
while ($this->nptr<strlen($this->buffer))
if ('<'==substr($this->buffer,$this->nptr++,1)) break;
$lon=$this->nptr;
if ('/'==substr($this->buffer,$lon,1)){ // No tiene hijos
$this->nptr=$gnptr;
return(false);
}
return(true);
}
/* -------------------------------------------------------------------------------------------
Recupera la información del siguiente nodo hermano del actual. Devuelve false en caso de que
el nodo actual sea el último de sus hermanos o bien no exista documento XML que analizar.
---------------------------------------------------------------------------------------------*/
function InfoSiguienteNodoHermano(){
if (!$this->SiguienteNodoHermano()) // No tiene hermanos o no existe documento XML
return(false);
return($this->Infonodo());
}
/* -------------------------------------------------------------------------------------------
Establece el puntero de nodos al siguiente nodo hermano del nodo actual. Devuelve false en
caso de que el nodo actual sea el último de los hermanos o bien no exista documento XML que analizar.
---------------------------------------------------------------------------------------------*/
function SiguienteNodoHermano(){
if ($this->buffer==null) return(false); // No existe documento XML
$gnptr=$this->nptr;
$resul=$this->_siguiente_hermano();
if (!$resul){
$this->nptr=$gnptr; // Es el último hermano
return(false);
}
return(true);
}
/* -------------------------------------------------------------------------------------------
Establece el puntero de nodos al siguiente nodo hermano del actual
---------------------------------------------------------------------------------------------*/
function _siguiente_hermano(){
$lon=$this->nptr;
$sw=1;
$nombrenodo=$this->NombreNodo();
while (1){
$lon = strpos($this->buffer,'<',++$lon);
if (substr($this->buffer,++$lon,1)=='/')
$sw--;
else
$sw++;
if ($sw==0){
while ($lon<strlen($this->buffer)){
if (substr($this->buffer,$lon++,1)=='<'){
if (substr($this->buffer,$lon,1)=='/')
return(false); // Es el último hermano
else{
$this->nptr=$lon;
return(true);
}
}
}
return(false); // Se trata del nodo raiz
}
}
}
/* -------------------------------------------------------------------------------------------
Recupera el número de hijos del nodo actual
---------------------------------------------------------------------------------------------*/
function NumerodeHijos(){
$gnptr=$this->nptr;
$nh=0;
if ($this->PrimerNodoHijo()){
$nh++;
while ($this->SiguienteNodoHermano()) $nh++;
}
$this->nptr=$gnptr;
return($nh);
}
/* -------------------------------------------------------------------------------------------
Devuelve true si el nodo es el último de sus hermanos
---------------------------------------------------------------------------------------------*/
function EsUltimoHermano(){
$gnptr=$this->nptr;
if (!$this->SiguienteNodoHermano()){
$this->nptr=$gnptr;
return(true);
}
$this->nptr=$gnptr;
return(false);
}
/* -------------------------------------------------------------------------------------------
Devuelve los atributos del nodo.
Prámetros:
Si se aporta el puntero del nodo se devolverán los atributos del nodo apuntado
pero si no se especifican argumentos se devuelven los atributos del nodo actual.
---------------------------------------------------------------------------------------------*/
function Atributos($ptrnodo=-1){
if ($ptrnodo!=-1)
$this->_setnodo($ptrnodo);
$atributosHTML="";
$info=$this->Infonodo();
$pos=strpos($info," ");
if ($pos) // El nodo tiene atributos
$atributosHTML=" ".substr($info,$pos);
return($atributosHTML);
}
/* -------------------------------------------------------------------------------------------
Posiciona el puntero de nodos
---------------------------------------------------------------------------------------------*/
function _setnodo($ptrnodo){
$this->nptr=$ptrnodo;
}
/* -------------------------------------------------------------------------------------------
Devuelve el puntero del nodo actual
---------------------------------------------------------------------------------------------*/
function Nodo(){
return($this->nptr);
}
/* -------------------------------------------------------------------------------------------
Recupera el nombre del nodo
---------------------------------------------------------------------------------------------*/
function NombreNodo(){
$infonodo=$this->Infonodo();
$trozos=split(" ",$infonodo);
return ($trozos[0]);
}
/* -------------------------------------------------------------------------------------------
Recupera la información del nodo actual
---------------------------------------------------------------------------------------------*/
function Infonodo(){
if ($this->buffer==null) return(false); // No existe documento XML
$lon=$this->nptr;
while ($lon<strlen($this->buffer))
if ('>'==substr($this->buffer,++$lon,1)) break;
$info=trim(substr($this->buffer,$this->nptr,$lon-$this->nptr));
$info=str_replace("[","<",$info);
$info=str_replace("]",">",$info);
return $info;
}
/* -------------------------------------------------------------------------------------------
Recorre el arbol de nodos del documento XML y para cada nodo genera un evento que se
puede capturar a través de una funcion que tiene esta forma:
fNodoXML(nivel,infonodo) donde:
- nivel es el nivel de profundidad del nodo (en base 0)
- infonodo es toda la información contenida en el nodo.
---------------------------------------------------------------------------------------------*/
function RecorreArboXML(){
if (!$this->NodoRaiz()) return; // No existe documento XML que analizar
$this->_arbolXmlrecur(0);
}
// -------------------------------------------------------------------------------------
// Recorrido recursivo del arbol XML
// -------------------------------------------------------------------------------------
function _arbolXmlrecur($nivel){
do{
$infonodo=$this->Infonodo();
fNodoXML($nivel,$infonodo);
$gnptr=$this->nptr;
if ($this->PrimerNodoHijo())
$this->_arbolXmlrecur($nivel+1);
$this->nptr=$gnptr;
}while($this->SiguienteNodoHermano());
}
/*------------------------------------------------------------------------------------------------
Elimina un atributo de la información del nodo
Parametros:
- nombreatributo:El nombre del atributo
- info: La información del Nodo
------------------------------------------------------------------------------------------------*/
function EliminaAtributo($nombreatributo,$info){
$nada="";
return($this->TomaAtributo($nombreatributo,&$nada,$info,true));
}
/*------------------------------------------------------------------------------------------------
Recupera el valor del atributo y lo elimina de la información del nodo
Parametros:
- nombreatributo:El nombre del atributo
- puntero: Referencia a la variable que contendrá el valor del atributo
- info: La información del Nodo
------------------------------------------------------------------------------------------------*/
function TomaAtributoEspecial($nombreatributo,&$puntero,$info){
return($this->TomaAtributo($nombreatributo,&$puntero,$info,true));
}
/*------------------------------------------------------------------------------------------------
Recupera el valor del atributo
Parametros:
- nombreatributo:El nombre del atributo
- puntero: Referencia a la variable que contendrá el valor del atributo
- info: La información del Nodo
- sw: Si vale true el atributo se eliminará de la información del nodo
------------------------------------------------------------------------------------------------*/
function TomaAtributo($nombreatributo,&$puntero,$info,$swkill=false){
$doblescomillas='"';
$strAtributo=" ".$nombreatributo."=";
$pos=strpos($info,$strAtributo);
if (!$pos){
$puntero=null;
return($info);
}
$pos+=strlen($strAtributo); // Avanza hasta el signo igual
$posa=$pos; // Primera posición del valor del atributo
$swcomillas=false;
while ($pos<strlen($info)){
if ($doblescomillas==substr($info,$pos,1)) $swcomillas=!$swcomillas;
if (' '==substr($info,$pos,1) || '> '==substr($info,$pos,1))
if (!$swcomillas) break;
$pos++;
}
$posb=$pos;
$valoratributo=substr($info,$posa,$posb-$posa);
if ($swkill) // Eliminar el atributo de la la cadena
$info=str_replace($strAtributo.$valoratributo,"",$info); // Elimina el atributo de la información
if ($doblescomillas==substr($valoratributo,0,1)) // Elimina las comillas
$valoratributo=str_replace($doblescomillas,"",$valoratributo);
$puntero=$valoratributo;
return($info);
}
} // Fin de la clase
?>

View File

@ -0,0 +1,574 @@
// ************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fichero: ArbolVistaXML.js
// Este fichero implementa las funciones javascript de la clase ArbolVistaXML.php
// *************************************************************************************************
var botonraton=null; // Botón presionado
var currentNodo=""; // Nodo actual
var currentpathimg=""; // Path por defecto de las imágenes de signo
var gLiteralcolor; // Color nodo vista para restablecer
var gLiteralbackground; // Fondo color nodo vista para restablecer
//________________________________________________________________________________________________________
// definicion dela clase triada
//________________________________________________________________________________________________________
function NodoVista(){
this.nivel=0; // Profundidad del nodo
this.imgsigno=null; // Objeto IMG (Imagen de signo de la celda vista) O SPAN si el nodo vista no tiene hijos
this.literal=null; // Objeto SPAN (Literal de la celda vista)
this.CeldaVista=null; // El objeto TABLE que contiene la imagen de signo y el literal)
this.Nodo=null; // El nodo en si (Objeto TR que contiene el objeto TABLE celda vista final)
this.ArbolHijos=null; // El arbol conteniendo todos los nodos hijos ( Si nulo no tiene hijos)(Objeto TR)
this.NodoPadre=null; // El nodo padre (Objeto TR que contiene el objeto TABLE celda vista final, del padre)
this.ArbolHijosNodoPadre=null; // El arbol del padre conteniendo los nodos hijos(Objeto TR)
this.siguienteHermano=null; // El nodo hermano siguiente ( Si nulo es el último hermano)(Objeto TR)
//____________________________________________________________________________
//
// Devuelve el estado del nodo 0: Contraido 1:Desplegado
//____________________________________________________________________________
this.estadoNodo= function(){
var signoimg=this.imgsigno.getAttribute("value");
var estado;
switch(signoimg){
case "menos_t" :
case "menos_c" :
estado=1;
break;
case "mas_t" :
case "mas_c" :
estado=0;
break;
default:
estado=-1;
}
return(estado);
}
//____________________________________________________________________________
//
// Devuelve el segundo dato de una cadena con formato xxxxx-xxx que es id del nodo vista
//____________________________________________________________________________
this.toma_identificador= function(){
if(this.literal==null) return(null);
var cadena=this.literal.getAttribute("id");
var iditem=cadena.split("-") // Toma el identificador
return(iditem[1]);
}
//____________________________________________________________________________
//
// Devuelve el primer dato de una cadena con formato xxxxx-xxx que es sufijo del nodo vista
//____________________________________________________________________________
this.toma_sufijo= function(){
if(this.literal==null) return(null);
var cadena=this.literal.getAttribute("id");
var iditem=cadena.split("-") // Toma el identificador
return(iditem[0]);
}
//____________________________________________________________________________
//
// Devuelve el literal de un nodo vista
//____________________________________________________________________________
this.toma_infonodo= function(){
if(this.literal==null) return(null);
return(this.literal.innerHTML);
}
//____________________________________________________________________________
//
// Devuelve el literal de un nodo vista
//____________________________________________________________________________
this.pone_infonodo= function(lit){
this.literal.innerHTML=lit;
}
//____________________________________________________________________________
//
// Devuelve el segundo dato de una cadena con formato xxxxx-xxx que es id del nodo vista
//____________________________________________________________________________
this.toma_atributoNodo= function(atr){
if(atr=="") return(null);
if(this.literal==null) return(null);
var atributo=this.literal.getAttribute(atr);
return(atributo);
}
//____________________________________________________________________________
//
// Devuelve true si el nodo tiene hijos,false en caso contrario
//____________________________________________________________________________
this.TieneHijos= function(){
return(this.ArbolHijos!=null);
}
//____________________________________________________________________________
//
// Devuelve true si el nodo es el último, false en caso contrario
//____________________________________________________________________________
this.UltimoHermano= function(){
return(this.siguienteHermano==null);
}
//____________________________________________________________________________
//
// Devuelve el nodo vista padre
//____________________________________________________________________________
this.PapaNodo= function(){
if(this.NodoPadre==null) return(null);
var oTABLE=this.NodoPadre.getElementsByTagName('TABLE')[0];
return(TomaDatosNodo(oTABLE));
}
// Fin de la clase
}
//________________________________________________________________________________________________________
//
// Devuelve un nodo vista
// Parametro:
// o: Objeto que puede ser la imagen de signo o el literal de una de las lineas del arbolVista
//________________________________________________________________________________________________________
function TomaDatosNodo(o){
var nodo=new NodoVista();
while(o.tagName!="TABLE" )
o=o.parentNode;
nodo.CeldaVista=o;
var TAnchor=nodo.CeldaVista.getElementsByTagName('A');
if(TAnchor.length==2){ // Imagen de signo pulsable
nodo.imgsigno=TAnchor[0].childNodes[0];
nodo.literal=TAnchor[1].childNodes[0];
}
else{
var TSpan=nodo.CeldaVista.getElementsByTagName('SPAN');
nodo.imgsigno=TSpan[0].childNodes[0];
nodo.literal=TAnchor[0].childNodes[0];
}
while(o.tagName!="TR" )
o=o.parentNode;
nodo.Nodo=o;
while(o.tagName!="TABLE" )
o=o.parentNode;
var Mnivel=o.getAttribute("id").split("-")
nodo.nivel=Mnivel[1]
while(o.tagName!="TR" )
o=o.parentNode;
nodo.ArbolHijosNodoPadre=o;
if(parseInt(nodo.nivel)>0){
o=o.previousSibling;
while(o.nodeType!=1 )
o=o.previousSibling
nodo.NodoPadre=o;
}
else
nodo.NodoPadre=null; // Es el primer nodo
var o=nodo.Nodo;
var auxsplit=o.getAttribute("id");
var idTR=auxsplit.split("-") [0];
o=o.nextSibling
while(o!=null && o.nodeType!=1 )
o=o.nextSibling
if(o==null){ // Es el último hermano y no tiene hijos
nodo.ArbolHijos=null;
nodo.siguienteHermano=null;
return(nodo);
}
var auxsplit=o.getAttribute("id");
var idTRhijo=auxsplit.split("-") [0];
if(idTR==idTRhijo) { // El nodo no tiene hiijos y no es último hermano
nodo.ArbolHijos=null;
nodo.siguienteHermano=o;
return(nodo);
}
nodo.ArbolHijos=o;
o=o.nextSibling
while(o!=null && o.nodeType!=1)
o=o.nextSibling
if(o==null){ // El nodo tiene hijos y es ultimo hermano
nodo.siguienteHermano=null;
return(nodo);
}
nodo.siguienteHermano=o; // El nodo tiene hijos y no es último hermano
return(nodo);
}
//-----------------------------------------------------------------------------------------------------------------------
// Gestiona el despliegue y contracción de nodovs
//-----------------------------------------------------------------------------------------------------------------------
function clickNodo(nodov,pathimg){
var signoimg=nodov.imgsigno.getAttribute("value");
switch(signoimg){
case "menos_t" :
nodov.imgsigno.setAttribute("value","mas_t",null);
nodov.imgsigno.setAttribute("src",pathimg+"/mas_t.gif",null);
nodov.ArbolHijos.style.display="none"
break;
case "menos_c" :
nodov.imgsigno.setAttribute("value","mas_c",null);
nodov.imgsigno.setAttribute("src",pathimg+"/mas_c.gif",null);
if (nodov.nivel==0)
nodov.imgsigno.setAttribute("src",pathimg+"/mas_root.gif",null);
nodov.ArbolHijos.style.display="none"
break;
case "mas_t" :
nodov.imgsigno.setAttribute("value","menos_t",null);
nodov.imgsigno.setAttribute("src",pathimg+"/menos_t.gif",null);
nodov.ArbolHijos.style.display="block"
break;
case "mas_c" :
nodov.imgsigno.setAttribute("value","menos_c",null);
nodov.imgsigno.setAttribute("src",pathimg+"/menos_c.gif",null);
if (nodov.nivel==0)
nodov.imgsigno.setAttribute("src",pathimg+"/menos_root.gif",null);
nodov.ArbolHijos.style.display="block"
break;
}
}
//-----------------------------------------------------------------------------------------------------------------------
// Gestiona el despliegue y contracción de nodos a través de la imagen del nodo
//-----------------------------------------------------------------------------------------------------------------------
function clickImagenSigno(oIMG,pathimg){
currentpathimg=pathimg;
var nodov=TomaDatosNodo(oIMG);
clickNodo(nodov,pathimg);
if (EsAncestro(nodov,currentNodo))
resalta(nodov);
}
//-----------------------------------------------------------------------------------------------------------------------
// Gestiona el despliegue y contracción de nodos a través del literal del nodo
//-----------------------------------------------------------------------------------------------------------------------
function clickLiteralNodo(oLIT,pathimg){
var nodov=TomaDatosNodo(oLIT);
resalta(nodov);
if(nodov.imgsigno==null) return;
if(pathimg==null){
var signoimg=nodov.imgsigno.getAttribute("src");
var p=signoimg.lastIndexOf("/");
var pathimg=signoimg.substring(0,p);
currentpathimg=pathimg;
}
var signoimg=nodov.imgsigno.getAttribute("value");
var signo=signoimg.split("_")
if(botonraton==1){
if (signo[0]=="mas" || signo[0]=="menos" ) clickNodo(nodov,pathimg);
}
else{
if (signo[0]=="mas" ) clickNodo(nodov,pathimg);
}
}
//-----------------------------------------------------------------------------------------------------------------------
// Resalta el nodo vista seleccionado y lo pone como nodo vista actual
//-----------------------------------------------------------------------------------------------------------------------
function resalta(nodov){
if(currentNodo==nodov) return;
if (currentNodo){
currentNodo.literal.style.color=gLiteralcolor;
currentNodo.literal.style.backgroundColor=gLiteralbackground;
}
gLiteralcolor=nodov.literal.style.color; // Guarda el color del nodo
gLiteralbackground=nodov.literal.style.backgroundColor; // Guarda el background del nodo
nodov.literal.style.color="#FFFFFF"; // Blanco
nodov.literal.style.backgroundColor="#0a266a"; // Azul marino
currentNodo=nodov;
}
//-----------------------------------------------------------------------------------------------------------------------
// Deja de resaltar un nodo vista
//____________________________________________________________________________
function desresalta(nodov){
nodov.literal.style.color=nodov.Literalcolor;
nodov.literal.style.backgroundColor=nodov.Literalbackground;
}
//-----------------------------------------------------------------------------------------------------------------------
// Averigua si el primer nodo vista es ancestro del segundo
//____________________________________________________________________________
function EsAncestro(nodoA,nodoH){
if(nodoH==null) return(false);
var NodoAncestro=nodoA.ArbolHijos;
var NodoHijo=nodoH.Nodo;
while(NodoHijo!=null){
if(NodoHijo==NodoAncestro) return(true);
NodoHijo=NodoHijo.parentNode;
}
return(false);
}
//-----------------------------------------------------------------------------------------------------------------------
// Despliega un nivel el nodo indicado
//-----------------------------------------------------------------------------------------------------------------------
function despliega(o,pathimg){
var nodov=TomaDatosNodo(o);
clickNodo(nodov,pathimg);
}
//-----------------------------------------------------------------------------------------------------------------------
// Despliega el nodo indicado ( desde la pagina
//-----------------------------------------------------------------------------------------------------------------------
function DespliegaNodo(lit,id){
var o=document.getElementById(lit+"-"+id);
if(o!=null){
var ancestro= TomaDatosNodo(o);
resalta(ancestro);
while(ancestro!=null){
if(ancestro.estadoNodo()==0) // Nodo contraido
clickNodo(ancestro,currentpathimg);
ancestro=ancestro.PapaNodo();
}
}
}
//____________________________________________________________________________
//
// Inserta un nodo en el árbol
// Especificaciones:
// Los parámetros recibidos son:
// - nodov: Nodo vista
// - tablanodo: Tabla nodo generada para la nueva celda vista
//____________________________________________________________________________
function InsertaNodo(nodov,tablanodo){
var nwceldavista=CreaCeldaVista(nodov,tablanodo);
var nwTR = document.createElement('TR');
nwTR.id="TRNodo-0";
var nwTD = document.createElement('TD');
nwTD.innerHTML=nwceldavista;
nwTR.appendChild(nwTD);
if(!nodov.TieneHijos()){
CreaNodoHijo(nodov);
if(parseInt(nodov.nivel)==0){ // Nodo raiz
nodov.imgsigno.setAttribute("value","menos_c",null);
nodov.imgsigno.setAttribute("src",currentpathimg+"/menos_root.gif",null);
}
else{
if(nodov.UltimoHermano()){
nodov.imgsigno.setAttribute("value","menos_c",null);
nodov.imgsigno.setAttribute("src",currentpathimg+"/menos_c.gif",null);
}
else{
nodov.imgsigno.setAttribute("value","menos_t",null);
nodov.imgsigno.setAttribute("src",currentpathimg+"/menos_t.gif",null);
}
}
var ATTonclick='clickImagenSigno(this,' + "'"+currentpathimg+"'"+','+nodov.nivel+');';
nodov.imgsigno.setAttribute("onclick",ATTonclick,null);
nodov.imgsigno.setAttribute("border","0",null);
var oSPAN=nodov.imgsigno.parentNode;
var htmlIMG=oSPAN.innerHTML;
TDpadre=oSPAN.parentNode;
TDpadre.innerHTML='<A href="#">'+htmlIMG+'</A>';
}
var pivoteNodo=nodov.ArbolHijos;
var nodoTD = pivoteNodo.childNodes[0];;
var nodoTABLE=nodoTD.childNodes[0];
var nodoTBODY=nodoTABLE.childNodes[0];
var nodoTR=nodoTBODY.childNodes[0];
if(nodoTR!=null)
nodoTBODY.insertBefore(nwTR,nodoTR);
else
nodoTBODY.appendChild(nwTR);
}
//____________________________________________________________________________
//
// Monta y devuelve el código HTML de la estructura de una celda vista
// Los parámetros recibidos son:
// - pivoteNodo: Nodo vista
// - tablanodo: Tabla nodo generada para la nueva celda vista
//____________________________________________________________________________
function CreaCeldaVista(nodov,tablanodo){
var nodoTD = document.createElement('TD');
nodoTD.innerHTML=tablanodo;
var nodoTABLE=nodoTD.childNodes[0];
var nodoTBODY=nodoTABLE.childNodes[0];
var nodoTBODYTR=nodoTBODY.childNodes[0];
var oIMG=nodoTBODYTR.getElementsByTagName('IMG')[0];
var HTMLinner=nodoTBODYTR.innerHTML;
if(nodov.TieneHijos()){
var patron = new RegExp("nada_c","gi")
HTMLinner=HTMLinner.replace(patron,"nada_t");
}
else{
var patron = new RegExp("nada_t","gi")
HTMLinner=HTMLinner.replace(patron,"nada_c");
}
var auxnodo=nodov;
var nwHTMLinner="";
var img="";
while(auxnodo!=null){
(auxnodo.UltimoHermano())? img="nada.gif" : img="nada_l.gif";
nwHTMLinner='<TD width="3px"></TD><TD width="16px"><IMG src="../images/signos/'+img+'" width="16px" height="16px" ></TD>'+nwHTMLinner;
auxnodo=auxnodo.PapaNodo();
}
nwHTMLinner='<TABLE border=0 cellspacing=0 cellpadding=0><TR height="16px">'+nwHTMLinner+HTMLinner+"</TR></TABLE>"; // Contenido de la tabla del nodo literal
return(nwHTMLinner);
}
//____________________________________________________________________________
//
// Crea un nuevo nodo Hijo (objeto TABLE)
// Parámetros:
// - nodov: Un nodo vista
//____________________________________________________________________________
function CreaNodoHijo(nodov){
var nivel=parseInt(nodov.nivel)+1;
var nTR=document.createElement('TR');
nTR.id="TRNodoHijo-0";
var nTD=document.createElement('TD');
nTD.innerHTML='<TABLE with="100%"id="tablanivel-'+nivel+'" border="0" cellspacing="0" cellpadding="0"><TBODY></TBODY></TABLE>';
nTR.appendChild(nTD);
var pivoteNodo=nodov.Nodo.parentNode;
if(nodov.UltimoHermano()){
pivoteNodo.appendChild(nTR); // Para insertar al final
}
else{
pivoteNodo.insertBefore(nTR,nodov.siguienteHermano)
}
nodov.ArbolHijos=nTR;
}
//____________________________________________________________________________
//
// Inserta un nodo en el árbol
// Especificaciones:
// Los parámetros recibidos son:
// - nodov: Nodo vista
//____________________________________________________________________________
function EliminaNodo(nodov){
var swuh=nodov.UltimoHermano();
var pn=nodov.Nodo.parentNode; // Nodo padre
var papa=nodov.PapaNodo(); // Nodo vista padre
if(nodov.TieneHijos())
pn.removeChild(nodov.ArbolHijos); // Elimina arbol hijo
pn.removeChild(nodov.Nodo); // Elimina Nodo
var antHermano=pn.lastChild
if(antHermano==null){ // El nodo padre no tiene más hijos
var pn=papa.ArbolHijos.parentNode; // Nodo padre
pn.removeChild(papa.ArbolHijos); // Elimina arbol hijo
ChgSignoPadreEliminaNodo(papa.imgsigno);
}
else{
if(swuh){ // Si era el último hermano ...
var auxsplit=antHermano.getAttribute("id");
var idTR=auxsplit.split("-") [0];
if(idTR=="TRNodoHijo"){
antHermano=antHermano.previousSibling;
while(antHermano.nodeType!=1 )
antHermano=antHermano.previousSibling
var TAnchor=antHermano.getElementsByTagName('A');
if(TAnchor.length==2) // Imagen de signo pulsable
var oIMG=TAnchor[0].childNodes[0];
}
else{
var TSpan=antHermano.getElementsByTagName('SPAN');
var oIMG=TSpan[0].childNodes[0];
}
var nh=TomaDatosNodo(oIMG);
ChgSignoEliminaNodo(oIMG);
if(nh.TieneHijos())
ChgSignoNivel(nh.ArbolHijos,nh.nivel);
}
}
}
//-----------------------------------------------------------------------------------------------------------------------
// Cambia la imagen de signo del hermano anterior de un nodo eliminado
//-----------------------------------------------------------------------------------------------------------------------
function ChgSignoEliminaNodo(imgsigno){
var signoimg=imgsigno.getAttribute("value");
switch(signoimg){
case "menos_t" :
imgsigno.setAttribute("value","menos_c",null);
imgsigno.setAttribute("src",currentpathimg+"/menos_c.gif",null);
break;
case "mas_t" :
imgsigno.setAttribute("value","mas_c",null);
imgsigno.setAttribute("src",currentpathimg+"/mas_c.gif",null);
break;
case "nada_t" :
imgsigno.setAttribute("value","nada_c",null);
imgsigno.setAttribute("src",currentpathimg+"/nada_c.gif",null);
break;
}
}
//-----------------------------------------------------------------------------------------------------------------------
// Cambia la imagen de signo del nodo padre de un nodo eliminado ( unico hijo)
//-----------------------------------------------------------------------------------------------------------------------
function ChgSignoPadreEliminaNodo(imgsigno){
var signoimg=imgsigno.getAttribute("value");
switch(signoimg){
case "menos_t" :
imgsigno.setAttribute("value","nada_t",null);
imgsigno.setAttribute("src",currentpathimg+"/nada_t.gif",null);
QuitaANCHOR(imgsigno);
break;
case "menos_c" :
imgsigno.setAttribute("value","nada_c",null);
imgsigno.setAttribute("src",currentpathimg+"/nada_c.gif",null);
QuitaANCHOR(imgsigno);
break;
case "mas_t" :
imgsigno.setAttribute("value","nada_t",null);
imgsigno.setAttribute("src",currentpathimg+"/nada_t.gif",null);
QuitaANCHOR(imgsigno);
break;
case "mas_c" :
imgsigno.setAttribute("value","nada_c",null);
imgsigno.setAttribute("src",currentpathimg+"/nada_c.gif",null);
QuitaANCHOR(imgsigno);
break;
}
}
//-----------------------------------------------------------------------------------------------------------------------
// Cambia la imagen de un determinado nivel
//-----------------------------------------------------------------------------------------------------------------------
function QuitaANCHOR(oIMG){
var TAnchor=oIMG.parentNode;
var oHTML=TAnchor.innerHTML;
var oTD=TAnchor.parentNode;
oTD.innerHTML="<SPAN>"+oHTML+"</SPAN>";
}
//-----------------------------------------------------------------------------------------------------------------------
// Cambia la imagen de un determinado nivel
//-----------------------------------------------------------------------------------------------------------------------
function ChgSignoNivel(arbolv,n){
if(arbolv==null) return
var nodoTD =arbolv.childNodes[0];
var nodoTABLE=nodoTD.childNodes[0];
var nodoTBODY=nodoTABLE.childNodes[0];
var oTRs=nodoTBODY.childNodes;
for(var i=0;i<oTRs.length;i++){
var auxsplit=oTRs[i].getAttribute("id");
var idTR=auxsplit.split("-") [0];
if(idTR=="TRNodoHijo"){
ChgSignoNivel(oTRs[i],n)
}
else{
var oTABLE=oTRs[i].getElementsByTagName('TABLE');
var oIMGs=oTABLE[0].getElementsByTagName('IMG');
oIMGs[n].setAttribute("src",currentpathimg+"/nada.gif",null);
}
}
}
//____________________________________________________________________________
//
// Se ejecuta cada vez que se mueve el puntero del ratón. Se usa para desmarca
// cualquier item de menu contextual que estuviese activo
//____________________________________________________________________________
function click_de_raton_prov(e){
if(IE){
botonraton=event.button
event.returnValue=true;
return;
}
if(NS){
botonraton=e.which;
e.returnValue=true;
return;
}
}
//____________________________________________________________________________
//
// Recupera el navegador utilizado
//____________________________________________________________________________
var IE=(navigator.appName=="Microsoft Internet Explorer");
var NS=(navigator.appName=="Netscape");
//____________________________________________________________________________
//
// Redirecciona el evento onmousedown a la función de usuario especificada.
//____________________________________________________________________________
document.onmousedown = click_de_raton_prov; // Redefine el evento onmousedown
if(NS) document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP)

View File

@ -0,0 +1,59 @@
// ********************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: consolaremota.php
// Descripción : Clase para llamar páginas web usando metodología AJAX
// ********************************************************************************
var _url;
var _fun;
var oXMLHttpRequest;
//____________________________________________________________________________
//
// LLama a la página
//
// Parámetros:
//
// url // Url de la página a la que se llama
// fun // Función a la que se llama despues de descargarse la página
//____________________________________________________________________________
function CallPage(url,prm,fun,met){
_url=url;
_fun=fun;
if (window.XMLHttpRequest) {
oXMLHttpRequest= new XMLHttpRequest();
oXMLHttpRequest.onreadystatechange = procesaoXMLHttpRequest;
oXMLHttpRequest.open("POST",_url, true);
oXMLHttpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
oXMLHttpRequest.send(prm);
} else if (window.ActiveXObject) {
isIE = true;
try {
oXMLHttpRequest= new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
oXMLHttpRequest= new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
oXMLHttpRequest= false;
}
}
if (oXMLHttpRequest) {
oXMLHttpRequest.onreadystatechange =procesaoXMLHttpRequest;
oXMLHttpRequest.open("POST",_url, true);
oXMLHttpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
oXMLHttpRequest.send(prm);
}
}
}
//_____________________________________________________________________________________
function procesaoXMLHttpRequest(){
if (oXMLHttpRequest.readyState == 4) {
if (oXMLHttpRequest.status == 200) {
var fcbk=_fun+"(oXMLHttpRequest.responseText)";
eval(fcbk)
}
}
}

View File

@ -0,0 +1,394 @@
// ***************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fichero: menucontextual.js
// Este fichero implementa las funciones javascript de la clase MenuContextual
// ***************************************************************************
var ctx_grissistema="#d4d0c8"
var ctx_azulmarino="#0a266a";
var ctx_blanco="#ffffff";
var ctx_negro="#000000";
var ctx_grissombra="#808080";
gmenuctx=new Array(); // Guarda el último menu flotante
var idxmnu=0 // Indice de los menus flotantes
var currentItem=null;
var currentPadresubmenu;
var currentPadreY;
var ClickX=null // Coordenada x del evento click del boton derecho
var ClickY=null // Coordenada y del evento click del boton derecho
var botonraton=null;
//____________________________________________________________________________
//
// Esta función muestra un menu contextual
// Parámetros:
// - x: Coordenada x de referencia
// - y: Coordenada y de referencia
// - menuctx: Objeto DIV contenedor del menu contextual
//____________________________________________________________________________
function muestra_contextual(x,y,menuctx){
var margen=0
dpzx=16
dpzy=16
wtop=calculatop_ctx(y,dpzy,margen,menuctx) // Calcula posición del menu contextual
wleft=calculaleft_ctx(x,dpzx,margen,menuctx)
ftop=wtop+parseInt(document.body.scrollTop) // Tiene en cuenta el scrolling
fleft=wleft+parseInt(document.body.scrollLeft)
menuctx.style.top=ftop
menuctx.style.left=fleft
menuctx.style.visibility="visible"
menuctxSetSelectedIndex(menuctx,-1) // Coloca el nuevo indice
gmenuctx[idxmnu++]=menuctx;
}
//____________________________________________________________________________
//
// Calcula coordenada top para el menu contextual que se mostrará.
// Parametros:
// - oriy : Coordenada Y del objeto que provoca el evento
// - dpzy : Desplazamiento sobre el eje y
// - margen : Margen para que el menu aparezca un poco separado del ese objeto
// - menuctx: El menu (objeto DIV) que se mostrará
//____________________________________________________________________________
function calculatop_ctx(oriy,dpzy,margen,menuctx){ // Calcula Y del menu contextual
largodiv=parseInt(menuctx.offsetHeight);
var wtop=oriy+dpzy+margen
if (wtop+largodiv>parseInt(document.body.clientHeight)){
var nwtop=oriy-dpzy-margen-largodiv
if (nwtop>0) wtop=nwtop
}
return(wtop)
}
//____________________________________________________________________________
//
// Calcula coordenada left para el menu contextual que se mostrará.
// Parametros:
// - orix : Coordenada X del objeto que provoca el evento
// - dpzx : Desplazamiento sobre el eje x
// - margen : Margen para que el menu aparezca un poco separado del ese objeto
// - menuctx: El menu (objeto DIV) que se mostrará
//____________________________________________________________________________
function calculaleft_ctx(orix,dpzx,margen,menuctx){ // Calcula Y del menu contextual
anchodiv=parseInt(menuctx.offsetWidth)
var wleft=orix+dpzx+margen
var maximodpl=parseInt(document.body.clientWidth)
if (wleft+anchodiv>maximodpl){ // Si no cabe a la derecha
var nwleft=orix-dpzx-margen-anchodiv // lo intenta a la izda.
if (nwleft>0) wleft=nwleft
else{
wleft=maximodpl-dpzx-margen-anchodiv;
if(wleft<document.body.scrollLeft) wleft=document.body.scrollLeft+16
}
}
return(wleft)
}
//____________________________________________________________________________
//
// Esta función devuelve el objeto DIV al que pertenece el item <TR>
// Parametros:
// - o: El objeto <TR>
//____________________________________________________________________________
function contextual(o){
while(o.tagName!="DIV")
o=o.parentNode
return(o)
}
//____________________________________________________________________________
//
// Esta función devuelve el objeto <TR> apuntado por el indice
// Parametros:
// - o: El objeto TR
// - idx: el indice del item, si es nulo se devuelve el item(objeto TR), seleccionado
//____________________________________________________________________________
function menuctxSelectedItem(o,idx){
var oDIV=contextual(o); // Se asegura que el objeto de inicio es DIV
var oTABLE=oDIV.childNodes[0]; // objeto TABLE
var oINPUT=oDIV.childNodes[1]; // objeto INPUT
var oTBODY=oTABLE.getElementsByTagName('TBODY')[0];
if(idx==null) // No se especificó indice, devuelve el item seleccionado
idx=oINPUT.getAttribute("value");
var oTRS=oTBODY.getElementsByTagName('TR');
for (var i=0;i<oTRS.length;i++){
var oTR=oTRS[i];
if(oTR.getAttribute("id")==idx) return(oTR);
}
return(null);
}
//____________________________________________________________________________
//
// Esta función actualiza el nuevo el indice del item seleccionado
// Parametros:
// - o: El objeto DIV que contiene el menu contextual o un item(objeto TR) de él
// - i: El valor del indice
//____________________________________________________________________________
function menuctxSetSelectedIndex(o,idx){
var oDIV=contextual(o); // Se asegura que el objeto de inicio es DIV
var oINPUT=oDIV.childNodes[1];
oINPUT.value=idx;
}
//____________________________________________________________________________
//
// Esta función devuelve el indice del item seleccionado
// Parametros:
// -o : El objeto DIV que contiene el menu contextual o un item(objeto TR) de él
//____________________________________________________________________________
function menuctxSelectedIndex(o){
var oDIV=contextual(o); // Se asegura que el objeto de inicio es DIV
var oINPUT=oDIV.childNodes[1];
return(oINPUT.value);
}
//____________________________________________________________________________
// Se ejecuta cuando se posiciona el cursor dentro de un item de algún menú contextual.
// Parámetros:
// - o: El item (objeto TR) donde se ha colocado el ratón
//____________________________________________________________________________
function sobre_contextual(o){
var oDIV=contextual(o) // Se asegura que el objeto de inicio es DIV
var idx=menuctxSelectedIndex(oDIV) // Indice del Item anterior seleccionado
var nwid=o.getAttribute("id");
if (parseInt(idx)!=parseInt(nwid)){ // Si cambio de item
if(idx>0){ // Si existía item anterior seleccionado
desmarcar_item(oDIV,idx) // Desmarca item anterior
}
marcar_item(o); // Marca el actual item
currentItem=o;
}
}
//____________________________________________________________________________
//
// Hace resaltar el item del menu contextual donde se coloca el cursor.
// Si este item tuviese un submenu contextual,éste también aparecería.
// Además, inicializa el campo oculto de cada DIV donde se guarda el índice
// del item selecionado.
//
// Parametros:
// - item: El objeto <TR>
//____________________________________________________________________________
function marcar_item(item){
marca_desmarca(item,true) // Marca el item
if (item.getAttribute("name")!=""){ // Existe submenu contextual
currentPadresubmenu=item
currentPadreY=ClickY
setTimeout ("muestra_submenu();", 300);
}
menuctxSetSelectedIndex(contextual(item),item.getAttribute("id")); // Coloca el nuevo indice
}
//____________________________________________________________________________
//
// Quita el resalte de un item y oculta los posibles submenus que tuviera
// Parametros:
// -o : El objeto DIV que contiene el menu contextual
// - idx: el indice del item, si es nulo desmarca el item(objeto TR), seleccionado
//____________________________________________________________________________
function desmarcar_item(o,idx){
var oDIV=contextual(o) // Se asegura que el objeto de inicio es DIV
if(idx==null) // No se especificó indice
idx=menuctxSelectedIndex(oDIV) // Indice del Item seleccionado
var item=menuctxSelectedItem(oDIV,idx)
if(item==null) return // No hay item seleccionado
marca_desmarca(item,false);
var nomsub=item.getAttribute("name");
if (nomsub!=null &&nomsub!=""){ // Tiene submenu
var submenuctx=document.getElementById(nomsub);
desmarcar_item(submenuctx); // Desmarca submenu
submenuctx.style.visibility="hidden";
}
}
//____________________________________________________________________________
//
// Marca o desmarca items dependiendo del parametro sw.
// Parámetros:
// - o: El item (objeto TR)
// Si sw=true marca, si sw=false demarca
//____________________________________________________________________________
function marca_desmarca(o,sw){
if(sw){ // Marca
var wfondo=ctx_azulmarino;
var wcolor=ctx_blanco;
}
else{ // Desmarca
var wfondo=ctx_grissistema;
var wcolor=ctx_negro;
}
(MenuconImagen(contextual(o)) ? i0=2:i0=1);
var nh=o.childNodes.length;
for (var i=i0;i<nh-1;i++){
var oTD=o.childNodes[i];
var oIMGS=oTD.getElementsByTagName('IMG');
if (oIMGS.length>0){
var oIMG=oIMGS[0];
if (oIMG.getAttribute("name")=="swsbfn"){ // imagen switch submenu
oTD.style.backgroundColor=wfondo
oTD.style.color=wcolor
if (sw)
oIMG.setAttribute("src","../images/flotantes/swsbfb.gif",null);
else
oIMG.setAttribute("src","../images/flotantes/swsbfn.gif",null);
}
else{ // imagen del item
if (sw){ // Marcar
oIMG.style.border="1px";
oIMG.style.borderStyle="outset";
}
else{ // Desmarcar
oIMG.style.borderStyle="none";
}
}
}
else{
oTD.style.backgroundColor=wfondo
var oSPAN=oTD.getElementsByTagName('SPAN');
if (oSPAN.length>0)
oSPAN[0].style.color=wcolor
}
}
}
//____________________________________________________________________________
//
// Detecta si el menu contextual tiene items con imágenes asociadas
// Devuelve true en caso afirmativo y false en caso contrario.
//____________________________________________________________________________
function MenuconImagen(o){
var oDIV=contextual(o);
var oIMGS=oDIV.getElementsByTagName('IMG');
return(oIMGS.length>0);
}
//____________________________________________________________________________
function reset_contextual(x,y){
var swm=false;
for (var i=0;i<idxmnu;i++ ){
if (gmenuctx[i].style.visibility=="visible")
swm=swm || EnContextual(x,y,gmenuctx[i])
}
if (!swm){ // No se ha hecho click en ningún menu contextual
for (var i=0;i<idxmnu;i++ ){
desmarcar_item(gmenuctx[i]);
gmenuctx[i].style.visibility="hidden";
gmenuctx[i]=null
}
idxmnu=0;
}
}
//____________________________________________________________________________
//
// Detecta si ha hecho fuera del menu contextual pasado como parametro
// Parametros:
// - x : Coordenada X de la pantalla donde se hizo click
// - y : Coordenada Y de la pantalla donde se hizo click
// - menuctx: El submenu (objeto DIV)
//____________________________________________________________________________
function EnContextual(x,y,menuctx){
origen_x=parseInt(menuctx.offsetLeft)-parseInt(document.body.scrollLeft)
origen_y=parseInt(menuctx.offsetTop)-parseInt(document.body.scrollTop)
anchodiv=parseInt(menuctx.offsetWidth)
largodiv=parseInt(menuctx.offsetHeight)
if ( x>=origen_x && x<=origen_x+anchodiv && y>=origen_y && y<=origen_y+largodiv ) return true
return(false)
}
//____________________________________________________________________________
//
// Muestra un submenu
// Parametros:
// - item: El objeto <TR> padre del submenu
//____________________________________________________________________________
function muestra_submenu(){
if(currentPadresubmenu==currentItem){
var objdiv=contextual(currentPadresubmenu)
var menuctx=document.getElementById(currentPadresubmenu.getAttribute("name")); // Obtiene el submenu
//desmarcar_item(menuctx) // Desmarca el submenu por si se ha usado anteriormente
wleft=subcalculaleft_ctx(objdiv,menuctx) // La x en función del padre
wtop=subcalculatop_ctx(currentPadreY,menuctx) // La y depende de la longitud del submenu
menuctx.style.top=wtop
menuctx.style.left=wleft
menuctx.style.visibility="visible";
menuctxSetSelectedIndex(menuctx,-1) // Coloca el nuevo indice
gmenuctx[idxmnu++]=menuctx;
}
}
//____________________________________________________________________________
//
// Calcula coordenada top para el submenu contextual que se mostrará.
// Parametros:
// - y : Coordenada Y de la pantalla donde se hizo click
// - menuctx: El submenu (objeto DIV) que se mostrará
//____________________________________________________________________________
function subcalculatop_ctx(y,menuctx){ // Calcula el posicionamiento (y) del DIV ( SUBmenu contextual)
var dpl=0
largodiv=parseInt(menuctx.offsetHeight)
var wtop=y+dpl+parseInt(document.body.scrollTop)
if (parseInt(wtop+largodiv)>parseInt(document.body.clientHeight+parseInt(document.body.scrollTop))){
var nwtop=y+parseInt(document.body.scrollTop)-16-largodiv
if (nwtop>0) wtop=nwtop
}
return(wtop)
}
//____________________________________________________________________________
//
// Calcula coordenada left para el submenu contextual que se mostrará.
// Parametros:
// - padrediv : Objeto DIV padre del submenu a mostrar
// - menuctx: El submenu (objeto DIV) que se mostrará
//____________________________________________________________________________
function subcalculaleft_ctx(padrediv,menuctx){ // Calcula el posicionamiento (x) del DIV ( SUBmenu contextual)
anchopadrediv=parseInt(padrediv.offsetWidth) // Ancho del div padre
anchomenuctx=parseInt(menuctx.offsetWidth) // Ancho del div
if(IE)
leftpadrediv=padrediv.style.pixelLeft // Coordenada x del div padre
else
if(NS)
leftpadrediv=parseInt(padrediv.style.left) // Coordenada x del div padre
desplazamiento=leftpadrediv+anchopadrediv-4 // Desplazamiento
var wleft=parseInt(desplazamiento)
var maximodpl=parseInt(document.body.clientWidth)+parseInt(document.body.scrollLeft)
if (wleft+anchomenuctx>maximodpl){
var nwleft=leftpadrediv-anchomenuctx
if (nwleft>0) wleft=nwleft
else{
wleft=maximodpl-anchomenuctx;
if(wleft<document.body.scrollLeft) wleft=document.body.scrollLeft+18
}
}
return(wleft)
}
//____________________________________________________________________________
//
// Se ejecuta cada vez que se hace click con el puntero del ratón. Se usa para desmarca
// cualquier item de menu contextual que estuviese activo
//____________________________________________________________________________
function click_de_raton(e){
if(IE){
botonraton=event.button
event.returnValue=true;
}
if(NS){
botonraton=e.which;
e.returnValue=true;
}
if (gmenuctx.length>0){
reset_contextual(ClickX,ClickY);
}
}
//____________________________________________________________________________
//
// Se ejecuta cada vez que se mueve el puntero del ratón. Se usa para capturar coordenadas
//____________________________________________________________________________
function move_de_raton(e){
if(IE){
ClickX=event.clientX
ClickY=event.clientY
event.returnValue=true;
}
if(NS){
ClickX=e.clientX
ClickY=e.clientY
e.returnValue=true;
}
}
//____________________________________________________________________________
//
// Redirecciona el evento onmousedown a la función de usuario especificada.
//____________________________________________________________________________
document.onmousedown = click_de_raton; // Redefine el evento onmousedown
document.onmousemove = move_de_raton; // Redefine el evento onmousedown

View File

@ -0,0 +1,72 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Apagar.php
// Descripción :
// Implementación del comando "Apagar"
// *************************************************************************************************************************************************
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("../idiomas/php/".$idioma."/comandos/apagar_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/Apagar.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras>
<U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>

View File

@ -0,0 +1,71 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Arrancar.php
// Descripción :
// Implementación del comando "Arrancar"
// *************************************************************************************************************************************************
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("../idiomas/php/".$idioma."/comandos/arrancar_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/Arrancar.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras><U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>

View File

@ -0,0 +1,72 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Comando.php
// Descripción :
// Implementación de cualquier comando que no necesite parametros adicionales
// *************************************************************************************************************************************************
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("../idiomas/php/".$idioma."/comandos/comando_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/Comando.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$descricomando.'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras>
<U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>

View File

@ -0,0 +1,260 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Configurar.php
// Descripción :
// Implementación del comando "Configurar"
// *************************************************************************************************************************************************
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/configurar_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
//
// Captura parámetros
//________________________________________________________________________________________________________
$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"];
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<STYLE TYPE="text/css"></STYLE>
<SCRIPT language="javascript" src="./jscripts/Configurar.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<SCRIPT language="javascript" src="../jscripts/constantes.js"></SCRIPT>
<SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/configurar_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'</span><br>'; // Cabecera
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras>
<U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>'; // Subcebecera
echo '<P align=center><SPAN align=center class=subcabeceras>'.$TbMsg[19].'</SPAN></P>';
if($ambito!=$AMBITO_ORDENADORES){
$cadenaid="";
$cadenaip="";
$cadenamac="";
RecopilaIpesMacs($cmd,$ambito,$idambito);
?>
<FORM action="Configurar.php" name="fdatos" method="POST">
<INPUT type="hidden" name="idambito" value="<? echo $idambito?>">
<INPUT type="hidden" name="ambito" value="<? echo $ambito?>">
<INPUT type="hidden" name="cadenaid" value="<? echo $cadenaid?>">
<TABLE class="tabla_busquedas" align=center border=0 cellPadding=0 cellSpacing=0>
<TR>
<TH height=15 align="center" colspan=14><? echo $TbMsg[18]?></TH>
</TR>
<TR>
<TD align=right><? echo $TbMsg[30]?></TD>
<TD align=center><INPUT type="checkbox" value="<? echo $msk_sysFi?>" name="fk_sysFi" <? if($fk_sysFi==$msk_sysFi) echo " checked "?>></TD>
<TD width="20" align=center>&nbsp;</TD>
<TD align=right><? echo $TbMsg[32]?></TD>
<TD align=center><INPUT type="checkbox" value="<? echo $msk_tamano?>" name="fk_tamano" <? if($fk_tamano==$msk_tamano) echo " checked "?>></TD>
<TD width="20" align=center>&nbsp;</TD>
<TD align=right><? echo $TbMsg[31]?></TD>
<TD align=center><INPUT type="checkbox" value="<? echo $msk_nombreSO?>" name="fk_nombreSO" <? if($fk_nombreSO==$msk_nombreSO) echo " checked "?>></TD>
<TD width="20" align=center>&nbsp;</TD>
</TR>
<TR>
<TD height=2 style="BORDER-TOP:#999999 1px solid;" align="center" colspan=14>&nbsp;</TD>
</TR>
<TR>
<TD height=20 align="center" colspan=14>
<A href=#>
<IMG border=0 src="../images/boton_confirmar.gif" onclick="document.fdatos.submit()"></A></TD>
</TR>
</TABLE>
</FORM>
<?
}
$sws=$fk_sysFi | $fk_tamano | $fk_nombreSO;
pintaConfiguraciones($cmd,$idambito,$ambito,7,$sws,true);
/* Dibuja tabla patron !OJO! no insertar caracteres entre las etiquetas*/
echo '<TABLE style="visibility:hidden"><TR id="TR_patron">';
echo '<TD align=center><input id="CHK_patron" type="checkbox"></TD>';
echo '<TD align=center>'.HTMLSELECT_particiones(0).'</TD>';
echo '<TD align=center>'.HTMLSELECT_tipospar($cmd,0).'</TD>';
echo '<TD align=center>'.HTMLSELECT_sistemasficheros($cmd,0).'</TD>';
echo '<TD align=center><INPUT type="text" style="width:100" value="0"></TD>';
echo '<TD align=center>&nbsp;</TD>';
echo '<TD align=center>'.HTMLSELECT_operaciones().'</TD></TR></TABlE>';
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
$swb=true; // Este switch hace que se muestren o se oculten los botonotes de confirmación
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>
<?
/*________________________________________________________________________________________________________
Descripción:
(Esta función 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
sería una secuencia de cadenas del tipo "clave de configuración" separados por "@"
Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0
$idordenadores: cadena con los identificadores de los ordenadores que forman parte del bloque
$cc: Identificador de la configuración
Devuelve:
El código html de la tabla
________________________________________________________________________________________________________*/
function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc)
{
global $tbKeys; // Tabla contenedora de claves de configuración
global $conKeys; // Contador de claves de configuración
global $TbMsg;
$colums=7;
echo '<TR id="TR_'.$cc.'">';
echo '<TH align=center><IMG src="../images/iconos/eliminar.gif"></TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[8].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[24].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[27].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[22].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[21].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[12].'&nbsp;</TH>';
echo '</TR>';
$auxCfg=split("@",$configuraciones); // Crea lista de particiones
for($i=0;$i<sizeof($auxCfg);$i++){
$auxKey=split(";",$auxCfg[$i]); // Toma clave de configuracion
for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partición
if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas
$icp=$cc."_".$k; // Identificador de la configuración-partición
echo '<TR id="TR_'.$icp.'">';
echo '<TD align=center><input type=checkbox onclick="eliminaParticion(\''.$icp.'\',this)"></TD>';
echo '<TD align=center>'.HTMLSELECT_particiones($tbKeys[$k]["numpar"]).'</TD>';
echo '<TD align=center>'.HTMLSELECT_tipospar($cmd,$tbKeys[$k]["codpar"]).'</TD>';
$sf=tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,true);
echo'<TD align=center>'.HTMLSELECT_sistemasficheros($cmd,$sf).'</TD>';
$tm=tomaTamano($tbKeys[$k]["numpar"],$idordenadores);
echo'<TD align=center><INPUT type="text" style="width:100" value="'.$tm.'"></TD>';
echo '<TD align=center>'.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).'</TD>';
echo '<TD align=center>'.HTMLSELECT_operaciones().'</TD>';
echo '</TR>';
}
}
}
/* Botones de añadir y confirmar */
echo '<TR id="TRIMG_'.$cc.'" height=5><TD colspan='.$colums.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;">&nbsp;</TD></TR>';
echo '<TR height=30><TD style="BACKGROUND-COLOR: #FFFFFF;" colspan='.$colums.' align=center>';
echo ' <A href="#add" style="text-decoration:none">
<IMG id="IMG_'.$icp.'" border=0 src="../images/boton_insertar.gif"
value="'.$k.'" onclick="addParticion(this,'.$cc.')"></A>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<A href="#add" style="text-decoration:none">
<IMG border=0 src="../images/boton_aceptar.gif" onclick="Confirmar('.$cc.')"></A></TD>
</TR>';
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los número de particiones
________________________________________________________________________________________________________*/
function HTMLSELECT_particiones($p)
{
global $TbMsg;
$SelectHtml="";
$opciones="";
for($i=0;$i<8;$i++)
$opciones.="$i=$i".chr(13);
$opciones.="$i=$i";
$SelectHtml.=HTMLCTESELECT($opciones,"particiones","estilodesple","",$p,40,"");
return($SelectHtml);
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de las operaciones
________________________________________________________________________________________________________*/
function HTMLSELECT_operaciones()
{
global $TbMsg;
$SelectHtml="";
$opciones="1=".$TbMsg[14]."".chr(13);
$opciones.="2=".$TbMsg[15]."".chr(13);
$opciones.="3=".$TbMsg[16]."";
$SelectHtml.=HTMLCTESELECT($opciones,"operaciones","estilodesple",$TbMsg[13],0,100,"");
return($SelectHtml);
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los tipos de particiones
________________________________________________________________________________________________________*/
function HTMLSELECT_tipospar($cmd,$codpar)
{
return(HTMLSELECT($cmd,0,"tipospar",$codpar,"codpar","tipopar",150,"","formulariodatos"));
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los sistemas de ficheros
________________________________________________________________________________________________________*/
function HTMLSELECT_sistemasficheros($cmd,$idsistemafichero)
{
return(HTMLSELECT($cmd,0,"sistemasficheros",$idsistemafichero,"idsistemafichero","descripcion",150,"","formulariodatos"));
}
?>

View File

@ -0,0 +1,212 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: CrearImagen.php
// Descripción :
// Implementación del comando "CrearImagen.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/TomaDato.php");
include_once("../idiomas/php/".$idioma."/comandos/crearimagen_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
$resul=tomaPropiedades($cmd,$idambito);
if (!$resul){
Header('Location: '.$pagerror.'?herror=3'); // Error de recuperación de datos.
}
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/CrearImagen.js"></SCRIPT>
<SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/crearimagen_'.$idioma.'.js"></SCRIPT>'?>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
</HEAD>
<BODY>
<?
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[15];
echo '<p align=center><span class=cabeceras>'.$TbMsg[0].'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras>
<U>'.$TbMsg[14].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
?>
<P align=center><SPAN align=center class=subcabeceras><? echo $TbMsg[6] ?></SPAN></P>
<FORM align=center name="fdatos">
<TABLE id="tabla_conf" align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos>
<TR>
<TH align=center>&nbsp;&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[8] ?>&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[13] ?>&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[9] ?>&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[10] ?>&nbsp;</TD>
<TH align=center>&nbsp;<? echo $TbMsg[11] ?>&nbsp;</TD>
</TR>
<?
echo tablaConfiguraciones($cmd,$idambito,$idrepositorio);
?>
</TABLE>
</FORM>
<?
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>
<?
/**************************************************************************************************************************************************
Recupera los datos de un ordenador
Parametros:
- cmd: Una comando ya operativo (con conexiónabierta)
- ido: El identificador del ordenador
________________________________________________________________________________________________________*/
function tomaPropiedades($cmd,$ido){
global $nombreordenador;
global $ip;
global $mac;
global $idperfilhard;
global $idrepositorio;
$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"];
$idperfilhard=$rs->campos["idperfilhard"];
$idrepositorio=$rs->campos["idrepositorio"];
$rs->Cerrar();
return(true);
}
else
return(false);
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los perfiles softwares
________________________________________________________________________________________________________*/
function HTMLSELECT_imagenes($cmd,$idperfilsoft,$particion)
{
$SelectHtml="";
$cmd->texto="SELECT imagenes.idimagen,imagenes.descripcion,imagenes.nombreca,imagenes.idperfilsoft FROM imagenes";
// WHERE imagenes.idperfilsoft=".$idperfilsoft;
// echo $cmd->texto;
$rs=new Recordset;
$rs->Comando=&$cmd;
$SelectHtml.= '<SELECT class="formulariodatos" id="despleimagen_'.$particion.'" style="WIDTH: 300">';
$SelectHtml.= ' <OPTION value="0"></OPTION>';
if ($rs->Abrir()){
$rs->Primero();
while (!$rs->EOF){
$SelectHtml.='<OPTION value="'.$rs->campos["idimagen"]."_".$rs->campos["nombreca"]."_".$rs->campos["nombreca"].'"';
if($idperfilsoft==$rs->campos["idperfilsoft"]) $SelectHtml.=" selected ";
$SelectHtml.='>';
$SelectHtml.= $rs->campos["descripcion"].'</OPTION>';
$rs->Siguiente();
}
$rs->Cerrar();
}
$SelectHtml.= '</SELECT>';
return($SelectHtml);
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los repositorios
________________________________________________________________________________________________________*/
function HTMLSELECT_repositorios($cmd,$idcentro,$idrepositorio,$particion){
$SelectHtml="";
$rs=new Recordset;
$cmd->texto="SELECT nombrerepositorio,ip FROM repositorios";
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return($SelectHtml); // Error al abrir recordset
$SelectHtml.= '<SELECT class="formulariodatos" id="desplerepositorios_'.$particion.'" style="WIDTH: 250">';
$rs->Primero();
while (!$rs->EOF){
$SelectHtml.='<OPTION value="'.$rs->campos["ip"].'"';
if($rs->campos["idrepositorio"]==$idrepositorio) $SelectHtml.=" selected ";
$SelectHtml.='>';
$SelectHtml.= $rs->campos["nombrerepositorio"];
$SelectHtml.='</OPTION>';
$rs->Siguiente();
}
$SelectHtml.= '</SELECT>';
$rs->Cerrar();
return($SelectHtml);
}
/*________________________________________________________________________________________________________
Crea la tabla de configuraciones y perfiles a crear
________________________________________________________________________________________________________*/
function tablaConfiguraciones($cmd,$idordenador,$idrepositorio)
{
global $idcentro;
global $TbMsg;
$tablaHtml="";
$rs=new Recordset;
$cmd->texto="SELECT ordenadores_particiones.numpar,ordenadores_particiones.codpar,ordenadores_particiones.tamano,
ordenadores_particiones.idnombreso,nombresos.nombreso,tipospar.tipopar,tipospar.clonable,
imagenes.nombreca,imagenes.descripcion as imagen,perfilessoft.idperfilsoft,
perfilessoft.descripcion as perfilsoft,sistemasficheros.descripcion as sistemafichero
FROM ordenadores
INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero
WHERE ordenadores.idordenador=$idordenador ORDER BY ordenadores_particiones.numpar";
//echo $cmd->texto;
$rs->Comando=&$cmd;
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
$rs->Primero();
while (!$rs->EOF){
$swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]);
$swc=$rs->campos["idperfilsoft"]>0; // Una partición es clonable si posee un identificador de perfil software
$swccc=$swcc && $swcc;
$tablaHtml.='<TR>'.chr(13);
if($swccc){
$tablaHtml.='<TD><input type=radio name="particion" value="'.$rs->campos["numpar"]."_".$rs->campos["codpar"].'"></TD>'.chr(13);
$tablaHtml.='<TD align=center>&nbsp;'.$rs->campos["numpar"].'&nbsp;</TD>'.chr(13);
$tablaHtml.='<TD align=center>&nbsp;'.$rs->campos["tipopar"].'&nbsp;</TD>'.chr(13);
if(empty($rs->campos["nombreso"]) && !empty($rs->campos["idnombreso"])) // Si el identificador del S.O. no es nulo pero no hay descripción
$tablaHtml.='<TD align=center>&nbsp;'.'<span style="FONT-SIZE:10px; COLOR: red;" >'.$TbMsg[12].'</span></TD>'.chr(13);
else
$tablaHtml.='<TD>&nbsp;'.$rs->campos["nombreso"].'&nbsp;</TD>'.chr(13);
$tablaHtml.='<TD>'.HTMLSELECT_imagenes($cmd,$rs->campos["idperfilsoft"],$rs->campos["numpar"]).'</TD>';
$tablaHtml.='<TD>'.HTMLSELECT_repositorios($cmd,$idcentro,$idrepositorio,$rs->campos["numpar"]).'</TD>';
$tablaHtml.='<TD>&nbsp;</TD>';
}
$tablaHtml.='</TR>'.chr(13);
$rs->Siguiente();
}
$rs->Cerrar();
return($tablaHtml);
}
?>

View File

@ -0,0 +1,81 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Comando.php
// Descripción :
// Implementación del comando "EjecutarScripts"
// *************************************************************************************************************************************************
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("../idiomas/php/".$idioma."/comandos/ejecutarscripts_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/EjecutarScripts.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/ejecutarscripts_'.$idioma.'.js"></SCRIPT>'?>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$descricomando.'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras>
<U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
?>
<form align=center name="fdatos">
<table align=center class=tabla_datos border="0" cellpadding="0" cellspacing="1">
<tr>
<th>&nbsp;<? echo $TbMsg[9]?>&nbsp;</th>
<td><textarea class="cajatexto" name="codigo" cols="70" rows="18"></textarea></td></tr>
</table>
</form>
<?
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>

View File

@ -0,0 +1,153 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: IniciarSesion.php
// Descripción :
// Implementación<C3B3> del comando "Iniciar Sesión"
// *************************************************************************************************************************************************
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/TomaDato.php");
include_once("../idiomas/php/".$idioma."/comandos/iniciarsesion_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//___________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/IniciarSesion.js"></SCRIPT>
<SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/iniciarsesion_'.$idioma.'.js"></SCRIPT>'?>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras><U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
?>
<P align=center>
<SPAN align=center class=subcabeceras><? echo $TbMsg[7] ?></SPAN>
</BR>
<form align=center name="fdatos">
<TABLE id="tabla_conf" align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos>
<TR>
<TH align=center>&nbsp;&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[8] ?>&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[9] ?>&nbsp;</TH>
</TR>
<?
echo tabla_configuraciones($cmd,$idambito);
?>
</TABLE>
</FORM>
<?
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>
<?
/**************************************************************************************************************************************************
Recupera los datos de un ordenador
Parametros:
- cmd: Una comando ya operativo (con conexiónabierta)
- ido: El identificador del ordenador
________________________________________________________________________________________________________*/
function toma_propiedades($cmd,$idordenador){
global $nombreordenador;
global $ip;
global $mac;
global $idperfilhard;
global $idservidordhcp;
global $idservidorrembo;
$rs=new Recordset;
$cmd->texto="SELECT nombreordenador,ip,mac,idperfilhard FROM ordenadores WHERE idordenador='".$idordenador."'";
$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"];
$idperfilhard=$rs->campos["idperfilhard"];
$rs->Cerrar();
return(true);
}
else
return(false);
}
/*________________________________________________________________________________________________________
Crea la tabla de configuraciones y perfiles a crear
________________________________________________________________________________________________________*/
function tabla_configuraciones($cmd,$idordenador){
global $idcentro;
$tablaHtml="";
$cmd->texto="SELECT ordenadores_particiones.idnombreso,ordenadores_particiones.numpar,ordenadores_particiones.tamano,nombresos.nombreso,tipospar.tipopar,
imagenes.descripcion as imagen,perfilessoft.descripcion as perfilsoft,sistemasficheros.descripcion as sistemafichero
FROM ordenadores
INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero
WHERE ordenadores.idordenador=$idordenador ORDER BY ordenadores_particiones.numpar";
$rs->Comando=&$cmd;
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
$rs->Primero();
while (!$rs->EOF){
if(!empty($rs->campos["idnombreso"])){
$tablaHtml.='<TR>'.chr(13);
$tablaHtml.='<TD ><input type="radio" name="particion" value='.$rs->campos["numpar"].'></TD>'.chr(13);
$tablaHtml.='<TD align=center>&nbsp;'.$rs->campos["numpar"].'&nbsp;</TD>'.chr(13);
$tablaHtml.='<TD>&nbsp;'.$rs->campos["nombreso"].'&nbsp;</TD>'.chr(13);
$tablaHtml.='</TR>'.chr(13);
}
$rs->Siguiente();
}
$rs->Cerrar();
return($tablaHtml);
}
?>

View File

@ -0,0 +1,72 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: InventarioHardware.php
// Descripción :
// Implementación del comando "Inventario Hardware"
// *************************************************************************************************************************************************
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("../idiomas/php/".$idioma."/comandos/inventariohardware_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/InventarioHardware.js"></SCRIPT>
<SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras><U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>

View File

@ -0,0 +1,122 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: InventarioSoftware.php
// Descripción :
// Implementación del comando "Inventario Software"
// *************************************************************************************************************************************************
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("../idiomas/php/".$idioma."/comandos/inventariosoftware_".$idioma.".php");
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/InventarioSoftware.js"></SCRIPT>
<SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/inventariosoftware_'.$idioma.'.js"></SCRIPT>'?>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras><U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
?>
<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
<P align=center>
<SPAN align=center class=subcabeceras><? echo $TbMsg[7] ?></SPAN>
</BR>
<TABLE id="tabla_conf" align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos>
<TR>
<TH align=center>&nbsp;&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[8] ?>&nbsp;</TH>
<TH align=center>&nbsp;<? echo $TbMsg[9] ?>&nbsp;</TH>
</TR>
<?
echo tabla_configuraciones($cmd,$idambito);
?>
</TABLE>
<BR>
<?
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>
<?
/*________________________________________________________________________________________________________
Particiones
________________________________________________________________________________________________________*/
function tabla_configuraciones($cmd,$idordenador)
{
global $idcentro;
$tablaHtml="";
$rs=new Recordset;
$rsp=new Recordset;
$cmd->texto="SELECT ordenadores_particiones.numpar,nombresos.nombreso
FROM ordenadores_particiones
INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
INNER JOIN nombresos ON ordenadores_particiones.idnombreso=nombresos.idnombreso
WHERE ordenadores_particiones.idordenador=$idordenador
AND tipospar.clonable>0 AND ordenadores_particiones.idnombreso>0
ORDER BY ordenadores_particiones.numpar";
$rs->Comando=&$cmd;
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
$rs->Primero();
while (!$rs->EOF){
$tablaHtml.='<TR>'.chr(13);
$tablaHtml.='<TD ><input type="radio" name="particion" value='.$rs->campos["numpar"].'></TD>'.chr(13);
$tablaHtml.='<TD align=center>&nbsp;'.$rs->campos["numpar"].'&nbsp;</TD>'.chr(13);
$tablaHtml.='<TD>&nbsp;'.$rs->campos["nombreso"].'&nbsp;</TD>'.chr(13);
$tablaHtml.='</TR>'.chr(13);
$rs->Siguiente();
}
$rs->Cerrar();
return($tablaHtml);
}
?>

View File

@ -0,0 +1,71 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Reiniciar.php
// Descripción :
// Implementación del comando "Reiniciar"
// *************************************************************************************************************************************************
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("../idiomas/php/".$idioma."/comandos/reiniciar_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="./jscripts/Reiniciar.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_CENTROS :
$urlimg='../images/iconos/centros.gif';
$textambito=$TbMsg[0];
break;
case $AMBITO_GRUPOSAULAS :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[1];
break;
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'&nbsp;</span><br>';
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras><U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>';
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>

View File

@ -0,0 +1,269 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: RestaurarImagenOrdenador.php
// Descripción :
// Implementación del comando "RestaurarImagen" (Ordenadores)
// *************************************************************************************************************************************************
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/restaurarimagen_".$idioma.".php");
//________________________________________________________________________________________________________
include_once("./includes/capturaacciones.php");
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
//
// Captura parámetros
//________________________________________________________________________________________________________
$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"];
//________________________________________________________________________________________________________
?>
<HTML>
<TITLE>Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<STYLE TYPE="text/css"></STYLE>
<SCRIPT language="javascript" src="./jscripts/RestaurarImagen.js"></SCRIPT>
<SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
<SCRIPT language="javascript" src="./jscripts/comunescomandos.js"></SCRIPT>
<SCRIPT language="javascript" src="../jscripts/constantes.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comandos/restaurarimagen_'.$idioma.'.js"></SCRIPT>'?>
</HEAD>
<BODY>
<?
switch($ambito){
case $AMBITO_AULAS :
$urlimg='../images/iconos/aula.gif';
$textambito=$TbMsg[2];
break;
case $AMBITO_GRUPOSORDENADORES :
$urlimg='../images/iconos/carpeta.gif';
$textambito=$TbMsg[3];
break;
case $AMBITO_ORDENADORES :
$urlimg='../images/iconos/ordenador.gif';
$textambito=$TbMsg[4];
break;
}
echo '<p align=center><span class=cabeceras>'.$TbMsg[5].'</span><br>'; // Cabecera
echo '<IMG src="'.$urlimg.'">&nbsp;&nbsp;<span align=center class=subcabeceras>
<U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span>&nbsp;&nbsp;</span></p>'; // Subcebecera
echo '<P align=center><SPAN align=center class=subcabeceras>'.$TbMsg[19].'</SPAN></P>';
if($ambito!=$AMBITO_ORDENADORES){
$cadenaid="";
$cadenaip="";
$cadenamac="";
RecopilaIpesMacs($cmd,$ambito,$idambito);
?>
<FORM action="RestaurarImagen.php" name="fdatos" method="POST">
<INPUT type="hidden" name="idambito" value="<? echo $idambito?>">
<INPUT type="hidden" name="ambito" value="<? echo $ambito?>">
<INPUT type="hidden" name="cadenaid" value="<? echo $cadenaid?>">
<TABLE class="tabla_busquedas" align=center border=0 cellPadding=0 cellSpacing=0>
<TR>
<TH height=15 align="center" colspan=14><? echo $TbMsg[18]?></TH>
</TR>
<TR>
<TD align=right><? echo $TbMsg[30]?></TD>
<TD align=center><INPUT type="checkbox" value="<? echo $msk_sysFi?>" name="fk_sysFi" <? if($fk_sysFi==$msk_sysFi) echo " checked "?>></TD>
<TD width="20" align=center>&nbsp;</TD>
<TD align=right><? echo $TbMsg[32]?></TD>
<TD align=center><INPUT type="checkbox" value="<? echo $msk_tamano?>" name="fk_tamano" <? if($fk_tamano==$msk_tamano) echo " checked "?>></TD>
<TD width="20" align=center>&nbsp;</TD>
<TD align=right><? echo $TbMsg[31]?></TD>
<TD align=center><INPUT type="checkbox" value="<? echo $msk_nombreSO?>" name="fk_nombreSO" <? if($fk_nombreSO==$msk_nombreSO) echo " checked "?>></TD>
<TD width="20" align=center>&nbsp;</TD>
</TR>
<TR>
<TD height=2 style="BORDER-TOP:#999999 1px solid;" align="center" colspan=14>&nbsp;</TD>
</TR>
<TR>
<TD height=20 align="center" colspan=14>
<A href=#>
<IMG border=0 src="../images/boton_confirmar.gif" onclick="document.fdatos.submit()"></A></TD>
</TR>
</TABLE>
</FORM>
<?
}
$sws=$fk_sysFi | $fk_tamano | $fk_nombreSO;
pintaConfiguraciones($cmd,$idambito,$ambito,9,$sws,false);
//________________________________________________________________________________________________________
include_once("./includes/formularioacciones.php");
//________________________________________________________________________________________________________
//________________________________________________________________________________________________________
include_once("./includes/opcionesacciones.php");
//________________________________________________________________________________________________________
?>
</BODY>
</HTML>
<?
//________________________________________________________________________________________________________
//
// Descripción:
// (Esta función 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
// sería una secuencia de cadenas del tipo "clave de configuración" separados por "@"
// Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0
// Devuelve:
// El código html de la tabla
//________________________________________________________________________________________________________
function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc)
{
global $tbKeys; // Tabla contenedora de claves de configuración
global $conKeys; // Contador de claves de configuración
global $TbMsg;
global $_SESSION;
$colums=8;
echo '<TR>';
echo '<TH align=center>&nbsp;&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[8].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[24].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[31].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[27].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[22].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[10].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[11].'&nbsp;</TH>';
echo '<TH align=center>&nbsp;'.$TbMsg[9].'&nbsp;</TH>';
echo '</TR>';
$auxCfg=split("@",$configuraciones); // Crea lista de particiones
for($i=0;$i<sizeof($auxCfg);$i++){
$auxKey=split(";",$auxCfg[$i]); // Toma clave de configuracion
for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partición
if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas
$swcc=$tbKeys[$k]["clonable"];
echo '<TR>'.chr(13);
if($swcc){
$icp=$cc."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición
echo '<TD ><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numpar"].'></TD>'.chr(13);
echo '<TD align=center>&nbsp;'.$tbKeys[$k]["numpar"].'&nbsp;</TD>'.chr(13);
echo '<TD align=center>&nbsp;'.$tbKeys[$k]["tipopar"].'&nbsp;</TD>'.chr(13);
//echo '<TD>&nbsp;'.$tbKeys[$k]["nombreso"].'&nbsp;</TD>'.chr(13);
echo '<TD align=center>&nbsp;'.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).'&nbsp;</TD>'.chr(13);
//echo'<TD align=center>&nbsp;'.$tbKeys[$k]["sistemafichero"].'&nbsp;</TD>'.chr(13);
echo'<TD align=center>&nbsp;'.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores).'&nbsp;</TD>'.chr(13);
//echo'<TD align=rigth>&nbsp;'.formatomiles($tbKeys[$k]["tamano"]).'&nbsp;</TD>'.chr(13);
echo'<TD align=center>&nbsp;'.tomaTamano($tbKeys[$k]["numpar"],$idordenadores).'&nbsp;</TD>'.chr(13);
echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true).'</TD>';
echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false).'</TD>';
//Clonación
$metodos="1=UNICAST".chr(13);
$metodos.="2=MULTICAST".chr(13);
$metodos.="3=TORRENT";
$TBmetodos["UNICAST"]=1;
$TBmetodos["MULTICAST"]=2;
$TBmetodos["TORRENT"]=3;
$idxc=$_SESSION["protclonacion"];
echo '<TD>'.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).'</TD>';
}
echo '<TR>'.chr(13);
}
}
}
echo '<TR height=5><TD colspan='.$colums.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;">&nbsp;</TD></TR>';
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los perfiles softwares
________________________________________________________________________________________________________*/
function HTMLSELECT_imagenes($cmd,$idimagen,$numpar,$codpar,$icp,$sw)
{
$SelectHtml="";
$cmd->texto="SELECT *,repositorios.ip as iprepositorio FROM imagenes
INNER JOIN repositorios ON repositorios.idrepositorio=imagenes.idrepositorio";
if($sw) // Imágenes con el mismo tipo de partición
$cmd->texto.= " WHERE imagenes.codpar=".$codpar;
else
$cmd->texto.= " WHERE imagenes.codpar<>".$codpar;
$cmd->texto.=" AND imagenes.numpar>0 AND imagenes.codpar>0 AND imagenes.idrepositorio>0"; // La imagene debe existir y estar creada
$rs=new Recordset;
$rs->Comando=&$cmd;
if($sw) $des=1; else $des=0;
$SelectHtml.= '<SELECT class="formulariodatos" id="despleimagen_'.$icp.'_'.$des.'" style="WIDTH:220">';
$SelectHtml.= ' <OPTION value="0"></OPTION>';
if ($rs->Abrir()){
$rs->Primero();
while (!$rs->EOF){
$SelectHtml.='<OPTION value="'.$rs->campos["idimagen"]."_".$rs->campos["nombreca"]."_".$rs->campos["iprepositorio"]."_".$rs->campos["idperfilsoft"].'"';
if($idimagen==$rs->campos["idimagen"]) $SelectHtml.=" selected ";
$SelectHtml.='>';
$SelectHtml.= $rs->campos["descripcion"].'</OPTION>';
$rs->Siguiente();
}
$rs->Cerrar();
}
$SelectHtml.= '</SELECT>';
return($SelectHtml);
}
/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los repositorios
________________________________________________________________________________________________________*/
function HTMLSELECT_repositorios($cmd,$idcentro,$idrepositorio,$particion){
$SelectHtml="";
$rs=new Recordset;
$cmd->texto="SELECT nombrerepositorio,ip FROM repositorios";
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return($SelectHtml); // Error al abrir recordset
$SelectHtml.= '<SELECT class="formulariodatos" id="desplerepositorios_'.$particion.'" style="WIDTH: 200">';
$rs->Primero();
while (!$rs->EOF){
$SelectHtml.='<OPTION value="'.$rs->campos["ip"].'"';
if($rs->campos["idrepositorio"]==$idrepositorio) $SelectHtml.=" selected ";
$SelectHtml.='>';
$SelectHtml.= $rs->campos["nombrerepositorio"];
$SelectHtml.='</OPTION>';
$rs->Siguiente();
}
$SelectHtml.= '</SELECT>';
$rs->Cerrar();
return($SelectHtml);
}
?>

View File

@ -0,0 +1,285 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_Comandos.php
// Descripción :
// Gestor de todos los comandos
// *************************************************************************************************************************************************
include_once("../../includes/ctrlacc.php");
include_once("../../clases/AdoPhp.php");
include_once("../../clases/SockHidra.php");
include_once("../../includes/constantes.php");
include_once("../../includes/comunes.php");
include_once("../../includes/cuestionacciones.php");
include_once("../../includes/CreaComando.php");
include_once("../../includes/RecopilaIpesMacs.php");
//________________________________________________________________________________________________________
include_once("../includes/capturaacciones.php");
//________________________________________________________________________________________________________
// Recoge parametros de seguimiento
$sw_ejya="";
$sw_seguimiento="";
$sw_mkprocedimiento="";
$nombreprocedimiento="";
$idprocedimiento="";
$ordprocedimiento=0;
$sw_mktarea="";
$nombretarea="";
$idtarea="";
$ordtarea=0;
if (isset($_POST["sw_ejya"])) $sw_ejya=$_POST["sw_ejya"];
if (isset($_POST["sw_seguimiento"])) $sw_seguimiento=$_POST["sw_seguimiento"];
if (isset($_POST["sw_ejprg"])) $sw_ejprg=$_POST["sw_ejprg"];
if (isset($_POST["sw_mkprocedimiento"])) $sw_mkprocedimiento=$_POST["sw_mkprocedimiento"];
if (isset($_POST["nombreprocedimiento"])) $nombreprocedimiento=$_POST["nombreprocedimiento"];
if (isset($_POST["idprocedimiento"])) $idprocedimiento=$_POST["idprocedimiento"];
if (isset($_POST["ordprocedimiento"])) $ordprocedimiento=$_POST["ordprocedimiento"];
if(empty($ordprocedimiento)) $ordprocedimiento=0;
if (isset($_POST["sw_mktarea"])) $sw_mktarea=$_POST["sw_mktarea"];
if (isset($_POST["nombretarea"])) $nombretarea=$_POST["nombretarea"];
if (isset($_POST["idtarea"])) $idtarea=$_POST["idtarea"];
if (isset($_POST["ordtarea"])) $ordtarea=$_POST["ordtarea"];
if(empty($ordtarea)) $ordtarea=0;
//__________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//__________________________________________________________________
$funcion="nfn=".$funcion.chr(13); // Nombre de la función que procesa el comando y el script que lo implementa
$aplicacion=""; // Ámbito de aplicación (cadena de ipes separadas por ";" y de identificadores de ordenadores por ","
$acciones=""; // Cadena de identificadores de acciones separadas por ";" para seguimiento
$atributos=str_replace('@',chr(13),$atributos); // Reemplaza caracters
$atributos=str_replace('#',chr(10),$atributos);
$atributos=str_replace('$',chr(9),$atributos);
//__________________________________________________________________
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<BODY>
<SCRIPT language="javascript" src="../jscripts/comunescomandos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?>
<?
/* Recopila identificadore ,ipes y macs para envío de comandos */
$cadenaid="";
$cadenaip="";
$cadenamac="";
RecopilaIpesMacs($cmd,$ambito,$idambito);
/*--------------------------------------------------------------------------------------------------------------------
Creación de parametros para sentencias SQL
--------------------------------------------------------------------------------------------------------------------*/
$cmd->CreaParametro("@tipoaccion",0,1);
$cmd->CreaParametro("@idtipoaccion",0,1);
$cmd->CreaParametro("@descriaccion","",0);
$cmd->CreaParametro("@idordenador",0,1);
$cmd->CreaParametro("@ip","",0);
$cmd->CreaParametro("@sesion",0,1);
$cmd->CreaParametro("@parametros","",0);
$cmd->CreaParametro("@fechahorareg","",0);
$cmd->CreaParametro("@estado",0,1);
$cmd->CreaParametro("@resultado",0,1);
$cmd->CreaParametro("@idcentro",0,1);
$cmd->CreaParametro("@idprocedimiento",0,1);
$cmd->CreaParametro("@descripcion","",0);
$cmd->CreaParametro("@idcomando",0,1);
$cmd->CreaParametro("@idtarea",0,1);
$cmd->CreaParametro("@ambito",0,1);
$cmd->CreaParametro("@idambito",0,1);
$cmd->CreaParametro("@restrambito","",0);
$cmd->CreaParametro("@ordprocedimiento",0,1);
$cmd->CreaParametro("@ordtarea",0,1);
if($ambito==0){ // Ambito restringido a un subconjuto de ordenadores con formato (idordenador1,idordenador2,etc)
$cmd->ParamSetValor("@restrambito",$idambito);
$idambito=0;
}
$resul=true;
/*--------------------------------------------------------------------------------------------------------------------
Switch de ejecución inmediata y de seguimiento
--------------------------------------------------------------------------------------------------------------------*/
if($sw_ejya=='on' || $sw_ejprg=="on" ){
$parametros=$funcion.$atributos;
$aplicacion=chr(13)."ido=".$cadenaid.chr(13)."mac=".$cadenamac.chr(13)."iph=".$cadenaip.chr(13);
if($sw_seguimiento==1 || $sw_ejprg=="on"){ // Switch de ejecución con seguimiento o comando programado
$sesion=time();
$cmd->ParamSetValor("@tipoaccion",$EJECUCION_COMANDO);
$cmd->ParamSetValor("@idtipoaccion",$idcomando);
$cmd->ParamSetValor("@descriaccion",$descricomando);
$cmd->ParamSetValor("@sesion",$sesion);
$cmd->ParamSetValor("@idcomando",$idcomando);
$cmd->ParamSetValor("@parametros",$parametros);
$cmd->ParamSetValor("@fechahorareg",date("y/m/d H:i:s"));
if($sw_ejprg=="on") // Switch de ejecución con programación (se para el comando tarea para lanzarlo posteriormente)
$cmd->ParamSetValor("@estado",$ACCION_DETENIDA);
else
$cmd->ParamSetValor("@estado",$ACCION_INICIADA);
$cmd->ParamSetValor("@resultado",$ACCION_SINRESULTADO);
$cmd->ParamSetValor("@ambito",$ambito);
$cmd->ParamSetValor("@idambito",$idambito);
$cmd->ParamSetValor("@idcentro",$idcentro);
$auxID=split(",",$cadenaid);
$auxIP=split(";",$cadenaip);
for ($i=0;$i<sizeof($auxID);$i++){
$cmd->ParamSetValor("@idordenador",$auxID[$i]);
$cmd->ParamSetValor("@ip",$auxIP[$i]);
$cmd->texto="INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,
sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,restrambito,idcentro)
VALUES (@idordenador,@tipoaccion,@idtipoaccion,@descriaccion,@ip,
@sesion,@idcomando,@parametros,@fechahorareg,@estado,@resultado,@ambito,@idambito,@restrambito,@idcentro)";
$resul=$cmd->Ejecutar();
//echo "<br>".$cmd->texto;
}
$acciones=chr(13)."ids=".$sesion.chr(13); // Para seguimiento
}
if (!$resul){
echo '<SCRIPT language="javascript">';
echo 'resultado_comando(7);'.chr(13);
echo '</SCRIPT>';
}
else{
if($sw_ejya=='on'){
// Envio al servidor
$shidra=new SockHidra($servidorhidra,$hidraport);
if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
$parametros.=$aplicacion;
$parametros.=$acciones;
//echo $parametros;
$resul=$shidra->envia_comando($parametros);
if($resul)
$trama=$shidra->recibe_respuesta();
if($resul){
$hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM));
$parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm);
$ValorParametros=extrae_parametros($parametros,chr(13),'=');
$resul=$ValorParametros["res"];
}
$shidra->desconectar();
}
if (!$resul){
echo '<SCRIPT language="javascript">';
echo 'resultado_comando(1);'.chr(13);
echo '</SCRIPT>';
}
else{
echo '<SCRIPT language="javascript">'.chr(13);
echo 'resultado_comando(2);'.chr(13);
echo '</SCRIPT>'.chr(13);
}
}
}
}
/*--------------------------------------------------------------------------------------------------------------------
Switch de creación o inclusión en procedimiento
--------------------------------------------------------------------------------------------------------------------*/
if($sw_mkprocedimiento=='on' || $sw_mktarea=='on'){
$resul=false;
if($idprocedimiento==0 || $sw_mktarea=='on'){ // Nuevo procedimiento o Tarea
if($sw_mktarea=='on' && empty($nombreprocedimiento)){ // Si tarea con inclusión de procedimiento...
if(!empty($nombretarea))
$nombreprocedimiento="Proc($nombretarea)"; // .. tarea nueva
else
$nombreprocedimiento="Proc($idtarea)"; // .. inclusión en tarea
}
$cmd->ParamSetValor("@descripcion",$nombreprocedimiento);
$cmd->ParamSetValor("@idcentro",$idcentro);
$cmd->texto="INSERT INTO procedimientos(descripcion,idcentro) VALUES (@descripcion,@idcentro)";
$resul=$cmd->Ejecutar();
if($resul){
if($idprocedimiento==0) // Cambia el identificador sólo si es nuevo procedimiento
$idprocedimiento=$cmd->Autonumerico();
if($sw_mktarea=='on')
$idprocedimientotarea=$cmd->Autonumerico(); // Identificador para la tarea;
}
}
if( $idprocedimiento>0 || $sw_mktarea=='on'){ // inclusión en procedimiento existente
$cmd->ParamSetValor("@idprocedimiento",$idprocedimiento);
$cmd->ParamSetValor("@idcomando",$idcomando);
$cmd->ParamSetValor("@ordprocedimiento",$ordprocedimiento);
$parametros=$funcion.$atributos;
$cmd->ParamSetValor("@parametros",$parametros);
$cmd->texto="INSERT INTO procedimientos_acciones(idprocedimiento,orden,idcomando,parametros) VALUES (@idprocedimiento,@ordprocedimiento,@idcomando,@parametros)";
$resul=$cmd->Ejecutar();
if($sw_mktarea=='on' && $idprocedimiento!=$idprocedimientotarea){ // Si es tarea se graba para su procedimiento independiente aunque los parametros sean los mismos
$cmd->ParamSetValor("@idprocedimiento",$idprocedimientotarea);
$cmd->texto="INSERT INTO procedimientos_acciones(idprocedimiento,orden,idcomando,parametros) VALUES (@idprocedimiento,@ordprocedimiento,@idcomando,@parametros)";
$resul=$cmd->Ejecutar();
}
}
if (!$resul){
echo '<SCRIPT language="javascript">';
echo 'resultado_comando(3);'.chr(13);
echo '</SCRIPT>';
}
else{
if($sw_mkprocedimiento=='on'){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'resultado_comando(4);'.chr(13);
echo '</SCRIPT>'.chr(13);
}
}
}
/*--------------------------------------------------------------------------------------------------------------------
Switch de creación o inclusión en tarea
--------------------------------------------------------------------------------------------------------------------*/
if($sw_mktarea=='on'){
$resul=false;
if($idtarea==0){ // Nueva tarea
$cmd->ParamSetValor("@descripcion",$nombretarea);
$cmd->ParamSetValor("@idcentro",$idcentro);
$cmd->ParamSetValor("@ambito",$ambito);
$cmd->ParamSetValor("@idambito",$idambito);
$cmd->texto="INSERT INTO tareas(descripcion,idcentro,ambito,idambito,restrambito)
VALUES (@descripcion,@idcentro,@ambito,@idambito,@restrambito)";
$resul=$cmd->Ejecutar();
if($resul)
$idtarea=$cmd->Autonumerico();
}
if($idtarea>0){ // inclusión en tarea existente
$cmd->ParamSetValor("@idtarea",$idtarea);
$cmd->ParamSetValor("@idprocedimiento",$idprocedimientotarea);
$cmd->ParamSetValor("@ordtarea",$ordtarea);
$cmd->texto="INSERT INTO tareas_acciones(idtarea,orden,idprocedimiento)
VALUES (@idtarea,@ordtarea,@idprocedimiento)";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
}
if (!$resul){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'resultado_comando(5);'.chr(13);
echo '</SCRIPT>'.chr(13);
}
else{
echo '<SCRIPT language="javascript">'.chr(13);
echo 'resultado_comando(6);'.chr(13);
echo '</SCRIPT>'.chr(13);
}
}
/* Programación del comando */
if ($resul){
if($sw_ejprg=="on" ){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'var whref="../../varios/programaciones.php?idcomando='.$idcomando.'";'.chr(13);
echo 'whref+="&sesion='.$sesion.'&descripcioncomando='.UrlEncode($descricomando).'&tipoaccion='.$EJECUCION_COMANDO.'";'.chr(13);
echo 'location.href=whref;';
echo '</SCRIPT>';
}
}
?>
</BODY>
</HTML>

View File

@ -0,0 +1,31 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Abril-2010
// Nombre del fichero: opcionesacciones.php
// Descripción :
// Captura de parámetros comunes para la ejecución de comandos
// *************************************************************************************************************************************************
//________________________________________________________________________________________________________
// Captura parámetros
//________________________________________________________________________________________________________
$idcomando=0;
$ambito=0;
$idambito=0;
$nombreambito="";
$funcion="";
$atributos="";
$gestor="";
if (isset($_POST["idcomando"])) $idcomando=$_POST["idcomando"];
if (isset($_POST["descricomando"])) $descricomando=$_POST["descricomando"];
if (isset($_POST["ambito"])) $ambito=$_POST["ambito"];
if (isset($_POST["idambito"])) $idambito=$_POST["idambito"];
if (isset($_POST["nombreambito"])) $nombreambito=$_POST["nombreambito"];
if (isset($_POST["funcion"])) $funcion=$_POST["funcion"];
if (isset($_POST["atributos"])) $atributos=$_POST["atributos"];
if (isset($_POST["gestor"])) $gestor=$_POST["gestor"];
?>

View File

@ -0,0 +1,20 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Abril-2010
// Nombre del fichero: opcionesacciones.php
// Descripción :
// Formulario para paso de parametros comunes para la ejecución de comandos
// *************************************************************************************************************************************************
?>
<FORM align=center name="fdatosejecucion" action="<? echo $gestor?>" method="post">
<INPUT type="hidden" name="idcomando" value="<? echo $idcomando?>">
<INPUT type="hidden" name="descricomando" value="<? echo $descricomando?>">
<INPUT type="hidden" name="ambito" value="<? echo $ambito?>">
<INPUT type="hidden" name="idambito" value="<? echo $idambito?>">
<INPUT type="hidden" name="funcion" value="<? echo $funcion?>">
<INPUT type="hidden" name="atributos" value="<? echo $atributos?>">
<INPUT type="hidden" name="gestor" value="<? echo $gestor?>">

View File

@ -0,0 +1,93 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Abril-2010
// Nombre del fichero: opcionesacciones.php
// Descripción :
// Opciones comunes para la ejecución de comandos
// *************************************************************************************************************************************************
?>
<P align=center><span align=center class=subcabeceras><? echo "Opciones de Ejecución"?></span></P>
<?if($idcomando!=10){?>
<TABLE align=center>
<TR>
<TD><IMG border=0 style="cursor:pointer" src="../images/boton_aceptar.gif" onclick="confirmar()" ></TD>
</TR>
</TABLE>
<BR>
<?}?>
<TABLE align=center class=opciones_ejecucion BORDER=0>
<TR>
<TD><INPUT name=sw_ejya type=checkbox checked></TD>
<TD colspan=3>Ejecutar inmediatamente</TD>
</TR>
<TR>
<TD>&nbsp; </TD>
<TD><INPUT name=sw_seguimiento type=radio value=1></TD><TD>Ejecutar con seguimiento&nbsp;</TD>
</TR>
<TR>
<TD>&nbsp; </TD>
<TD><INPUT checked name=sw_seguimiento type=radio value=0></TD><TD>Sin seguimiento&nbsp;</TD>
</TR>
<!-------------------------------------------------------------------------------------------------------------------------------->
<TR HEIGHT=5><TD colspan=4><HR></TD></TR>
<!-------------------------------------------------------------------------------------------------------------------------------->
<TR>
<TD><INPUT name=sw_ejprg type=checkbox></TD>
<TD colspan=3>Programar comando</TD>
</TR>
<!-------------------------------------------------------------------------------------------------------------------------------->
<TR HEIGHT=5><TD colspan=4><HR></TD></TR>
<!-------------------------------------------------------------------------------------------------------------------------------->
<TR>
<TD><INPUT onclick="clic_mkprocedimiento(this)" name=sw_mkprocedimiento type=checkbox></TD>
<TD colspan=3>Guardar como procedimiento</TD></TR>
<TR>
<TD>&nbsp; </TD>
<TD><INPUT onclick="clic_nwprocedimiento(this)" name=sw_procedimiento type=radio value=0></TD>
<TD>Guardar como nuevo procedimiento&nbsp;</TD>
<TD><INPUT onclick="clic_nomprocedimiento(this)" style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px" name=nombreprocedimiento style="HEIGHT: 22px; WIDTH: 275px"></TD></TR>
<TR>
<TD>&nbsp; </TD>
<TD><INPUT onclick="clic_exprocedimiento(this)" name=sw_procedimiento type=radio value=1></TD>
<TD>Incluir en un procedimiento existente&nbsp;</TD>
<TD><?echo HTMLSELECT($cmd,$idcentro,'procedimientos',0,'idprocedimiento','descripcion',275,"procedimientoexistente");?></TD></TR>
<TR>
<TD>&nbsp; </TD>
<TD>&nbsp; </TD>
<TD>Orden de ejecución&nbsp;</TD>
<TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30" name=ordprocedimiento type=text value=""></TD></TR>
<!-------------------------------------------------------------------------------------------------------------------------------->
<TR HEIGHT=10><TD colspan=4>&nbsp; <HR></TD></TR>
<!-------------------------------------------------------------------------------------------------------------------------------->
<TR>
<TD><INPUT onclick="clic_mktarea(this)" name=sw_mktarea type=checkbox></TD>
<TD colspan=3>Guardar como tarea</TD></TR>
<TR>
<TD>&nbsp; </TD>
<TD><INPUT onclick="clic_nwtarea(this)" name=sw_tarea type=radio value=0></TD>
<TD>Guardar como una tarea nueva&nbsp;</TD>
<TD><INPUT onclick="clic_nomtarea(this)" style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px" name=nombretarea style="HEIGHT: 22px; WIDTH: 275px"></TD></TR>
<TR>
<TD>&nbsp; </TD>
<TD><INPUT onclick="clic_extarea(this)" name=sw_tarea type=radio value=1></TD>
<TD>Incluir en una tarea existente&nbsp;</TD>
<TD><?echo HTMLSELECT($cmd,$idcentro,'tareas',0,'idtarea','descripcion',275,"tareaexistente");?></TD></TR>
<TR>
<TD>&nbsp; </TD>
<TD>&nbsp; </TD>
<TD>Orden de ejecución&nbsp;</TD>
<TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30" name=ordtarea type=text value=""></TD></TR>
<!-------------------------------------------------------------------------------------------------------------------------------->
</TABLE>
</FORM>

View File

@ -0,0 +1,24 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Apagar.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero Apagar.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if (comprobar_datos()){
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos(){
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,24 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Arrancar.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero Arrancar.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if (comprobar_datos()){
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos(){
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,24 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Apagar.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero Comando.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if (comprobar_datos()){
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos(){
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,174 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Configurar.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero Configurar.php (Comandos)
// *************************************************************************************************************************************************
var atributos; // Variable global
//________________________________________________________________________________________________________
//
// Elimina una fila de una tabla de configuraciones perteneciente a las propiedades de una partición
// Parametros:
// icp: Identificador de la configuración-partición
// o: Objeto checkbox que invoca la función
//________________________________________________________________________________________________________
function eliminaParticion(icp,o)
{
var res=confirm(TbMsg[4]); // Pide confirmación
if(!res){
o.checked=false;
return;
}
var tbCfg = document.getElementById("tabla_conf"); // Recupera objeto <TABLE>
var trCfg = document.getElementById("TR_"+icp); // Recupera <TR> de la fila a eliminar
var tbodyObj=tbCfg.firstChild; // Recupera hijo <TBODY> del objeto <TABLE>
tbodyObj.removeChild(trCfg); // Elimina nodo <TR> completo
}
//________________________________________________________________________________________________________
function addParticion(objImg,cc)
{
var tbCfg = document.getElementById("tabla_conf"); // Recupera objeto <TABLE>
var tbodyObj=tbCfg.firstChild; // Recupera hijo <TBODY> del objeto <TABLE>
var trImg=document.getElementById("TRIMG_"+cc); // Recupera <TR> de los botones para insertar antes
var k=objImg.getAttribute('value'); // Toma siguiente identificador de nodo
var icp=cc+"_"+k; // Identificador de la configuración-partición
/* Crea objeto TR y lo añade al TBODY de la tabla*/
var nwTR = document.createElement('TR');
nwTR.setAttribute("id","TR_"+icp);
tbodyObj.insertBefore(nwTR,trImg); // Inserta nodo <TR> completo
var patron = document.getElementById("TR_patron"); // Recupera <TR> patron
nwTR.innerHTML=patron.innerHTML;
/* Actualiza objeto checkbox nuevo para que actue como los demás */
var nwCHK = document.getElementById("CHK_patron"); // Recupera reciente chekcbox
var fclbk="eliminaParticion('"+icp+"');";
nwCHK.setAttribute("onclick",fclbk);
nwCHK.removeAttribute("id");
/* Incrementa para siguiente identificador de nodo */
k++;
objImg.setAttribute('value',k);
}
//________________________________________________________________________________________________________
//
// Confirma un bloque de configuración de particiones
// Parametros:
// idordenadores: Identificadores de los ordenadores a los que se aplicará el comando
// cc: Identificador de la configuración (bloque de particiones)
// Especificaciones:
// Cuando un comando se va a aplicar a un conjunto aleatorio de ordenaores, el código del
// ámbito será cero y la variable idambito contendrá la cadena con los identificadores de
// los oordenadores separados por coma (este dato aparece en esta función como promer parámetro)
//________________________________________________________________________________________________________
function Confirmar(cc)
{
if(comprobarDatos(cc)){
var RC="@";
var disco=1; // Siempre disco 1
atributos+=RC+"dsk="+disco+RC; // Le añade a la variable global el parámetro disco
//alert(atributos)
if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){
var tbOrd= document.getElementById("tbOrd_"+cc); // Recupera tabla de ordenadores de la configuración
var idordenadores=tbOrd.getAttribute('value'); // Toma identificadores de los ordenadores
var cadenaid=document.fdatos.cadenaid.value; // Cadena de identificadores de todos los ordenadores del ámbito
if(idordenadores!=cadenaid){ // Si no son iguales es que el ámbito de aplicación es restringido
document.fdatosejecucion.ambito.value=0; // Ambito de aplicación restringido
document.fdatosejecucion.idambito.value=idordenadores;
}
}
document.fdatosejecucion.atributos.value=atributos;
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
//
// Confirma un bloque de configuración de particiones
// Parametros:
// cc: Identificador de la configuración (bloque de particiones)
//________________________________________________________________________________________________________
function comprobarDatos(cc)
{
// Indices de campos a recuperar
var ipar=1;
var icodpar=2;
var isysfi=3;
var itama=4;
var iope=6;
var SL="#";
var TB="$";
var tbpar=new Array(); // Para control de particiones duplicadas
atributos="cfg="; // Inicializa variable global de parámetros del comando
var trCfg = document.getElementById("TR_"+cc); // Recupera primer <TR> de la configuración
trCfg=trCfg.nextSibling; // Primera fila de particiones
while(trCfg.id!="TRIMG_"+cc){
var par=tomavalorDesple(trCfg.childNodes[ipar].childNodes[0]); // Partición
if(par==0){
alert(TbMsg[1]);
trCfg.childNodes[ipar].childNodes[0].focus();
return(false);
}
if(tbpar[par]==1){ // Existe ya una partición con ese número
alert(TbMsg[0]);
trCfg.childNodes[ipar].childNodes[0].focus();
return(false);
}
tbpar[par]=1;
var codpar=tomavalorDesple(trCfg.childNodes[icodpar].childNodes[0]); // Tipo de partición
if(codpar==0){
alert(TbMsg[2]);
trCfg.childNodes[icodpar].childNodes[0].focus();
return(false);
}
var sysfi=tomatextDesple(trCfg.childNodes[isysfi].childNodes[0]); // Sistema de ficheros
var tama=trCfg.childNodes[itama].childNodes[0].value; // Tamaño de partición
if(tama==0){
alert(TbMsg[3]);
trCfg.childNodes[itama].childNodes[0].focus();
return(false);
}
var ope=tomavalorDesple(trCfg.childNodes[iope].childNodes[0]); // Operación a realizar
trCfg=trCfg.nextSibling; // Primera fila de particiones
/* Compone formato del comando */
atributos+="par="+par+TB+"cpt="+codpar+TB+"sfi="+sysfi+TB+"tam="+tama+TB+"ope="+ope+SL;
}
return(true);
}
//________________________________________________________________________________________________________
//
// Devuelve el valor seleccionado de un desplegable cualquiera
//________________________________________________________________________________________________________
function tomavalorDesple(desplegable)
{
var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable
var val=desplegable.options[idx].value; // Valor seleccionado en el desplegable
return(val);
}
//________________________________________________________________________________________________________
//
// Devuelve el valor seleccionado de un desplegable cualquiera
//________________________________________________________________________________________________________
function tomatextDesple(desplegable)
{
var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable
var txt=desplegable.options[idx].text; // Valor seleccionado en el desplegable
return(txt);
}

View File

@ -0,0 +1,70 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: CrearImagen.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero CrearImagen.php (Comandos)
// *************************************************************************************************************************************************
function confirmar()
{
if (!comprobar_datos()) return;
var RC="@";
var disco=1; // Siempre disco 1
var atributos="dsk="+disco+RC;
var tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked){
var parcod=ochecks[i].value.split("_");
atributos+="par="+parcod[0]+RC; // Número de partición
atributos+="cpt="+parcod[1]+RC; // Código de partición
var despleimagen=document.getElementById("despleimagen_"+parcod[0]);
var imgcan=despleimagen.value.split("_");
atributos+="idi="+imgcan[0]+RC; // Identificador de la imagen
atributos+="nci="+imgcan[1]+RC; // Nonbre canónico
var desplerepositorios=document.getElementById("desplerepositorios_"+parcod[0]);
var idx=desplerepositorios.selectedIndex;
atributos+="ipr="+desplerepositorios.options[idx].value+RC;
break;
}
}
document.fdatosejecucion.atributos.value=atributos;
document.fdatosejecucion.submit();
}
//________________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos()
{
tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
var op=0
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked){
op++;
var particion=ochecks[i].value.split("_")[0];
despleimagen=document.getElementById("despleimagen_"+particion);
var p=despleimagen.selectedIndex
if (p==0){
alert(TbMsg[0])
despleimagen.focus()
return(false)
}
}
}
if(op==0){
alert(TbMsg[1])
return(false);
}
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,34 @@
// ***********************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: EjecutarScripts.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero EjecutarScripts.php (Comandos)
// ***********************************************************************************************************
function confirmar(){
if (comprobar_datos()){
var RC='@';
document.fdatosejecucion.atributos.value="scp="+escape(document.fdatos.codigo.value)+RC;
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
function cancelar()
{
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos()
{
if (document.fdatos.codigo.value=="") {
alert(TbMsg[1]);
document.fdatos.codigo.focus();
return(false);
}
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,47 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: IniciarSesion.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero IniciarSesion.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if (comprobar_datos()){
// Compone atributos del comando
tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
var particion;
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked){
particion=ochecks[i].value
}
}
var RC='@';
document.fdatosejecucion.atributos.value="par="+particion+RC;
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
function cancelar()
{
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos()
{
tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
var op=0
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked) op++;
}
if(op==0){
alert(TbMsg[1])
return(false);
}
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,24 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: InventarioHardware.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero InventarioHardware.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if (comprobar_datos()){
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos(){
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,44 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: InventarioHardware.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero InventarioHardware.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if (comprobar_datos()){
tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
var particion;
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked){
particion=ochecks[i].value
}
}
var RC="@";
var disco=1; // Siempre disco 1
document.fdatosejecucion.atributos.value="dsk="+disco+RC+"par="+particion+RC;
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos(){
tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
var op=0
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked) op++;
}
if(op==0){
alert(TbMsg[1])
return(false);
}
return(comprobar_datosejecucion());
}

View File

@ -0,0 +1,24 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Reiniciar.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero Reiniciar.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if (comprobar_datos()){
document.fdatosejecucion.submit();
}
}
//__________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//__________________________________________________________________________________________________
function comprobar_datos(){
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,95 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: RestaurarImagen.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero RestaurarImagen.php (Comandos)
// *************************************************************************************************************************************************
function confirmar(){
if(comprobar_datos()){
var RC="@";
var disco=1; // Siempre disco 1
var atributos="dsk="+disco+RC;
var tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked){
var idradio=ochecks[i].id;
var numpar=ochecks[i].value;
atributos+="par="+numpar+RC; // Número de partición
var despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1");
var despleimagendrcha=document.getElementById("despleimagen_"+idradio+"_0");
var despleimagen;
var protoclonacion=document.getElementById("protoclonacion_"+idradio);
if(despleimagenizda.selectedIndex>0) despleimagen=despleimagenizda;
if(despleimagendrcha.selectedIndex>0) despleimagen=despleimagendrcha;
var imgcanrepo=despleimagen.value.split("_");
atributos+="idi="+imgcanrepo[0]+RC; // Identificador de la imagen
atributos+="nci="+imgcanrepo[1]+RC; // Nombre canónico
atributos+="ipr="+imgcanrepo[2]+RC; // Ip del repositorio donde está alojada
atributos+="ifs="+imgcanrepo[3]+RC; // Identificador del perfil soft contenido en la imagen
atributos+="ptc="+protoclonacion.value+RC; // Identificador del protocolo de clonación
var cc=ochecks[i].getAttribute('idcfg'); // Toma identificador del bloque de configuración
if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){
var tbOrd=document.getElementById("tbOrd_"+cc);
var idordenadores=tbOrd.getAttribute('value'); // Toma identificadores de los ordenadores
var cadenaid=document.fdatos.cadenaid.value; // Cadena de identificadores de todos los ordenadores del ámbito
if(idordenadores!=cadenaid){
document.fdatosejecucion.ambito.value=0; // Ambito de aplicación restringido
document.fdatosejecucion.idambito.value=idordenadores;
}
}
document.fdatosejecucion.atributos.value=atributos;
document.fdatosejecucion.submit();
break;
}
}
}
}
//________________________________________________________________________________________________________
function cancelar(){
alert(CTbMsg[0]);
location.href="../nada.php"
}
//________________________________________________________________________________________________________
function comprobar_datos()
{
tb_conf=document.getElementById("tabla_conf");
var ochecks=tb_conf.getElementsByTagName('INPUT')
var op=0
for(var i=0;i<ochecks.length;i++){
if(ochecks[i].checked){
op++;
var idradio=ochecks[i].id; // Toma idemtificador del desplegable de imagenes
despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable izda.
despleimagendcha=document.getElementById("despleimagen_"+idradio+"_0"); // Desplegable derecha.
var p1=despleimagenizda.selectedIndex // Toma índice seleccionado
var p2=despleimagendcha.selectedIndex // Toma índice seleccionado
if (p1==0 && p2==0){
alert(TbMsg[0])
despleimagenizda.focus()
return(false)
}
if (p1==p2){
alert(TbMsg[6])
despleimagenizda.focus()
return(false)
}
}
}
if(op==0){
alert(TbMsg[1])
return(false);
}
return(comprobar_datosejecucion())
}

View File

@ -0,0 +1,190 @@
// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: comunescomandos.js
// Descripción :
// Este fichero implementa las funciones javascript comunes a todos los comandos
// *************************************************************************************************************************************************
function comprobar_datosejecucion(){
/* Comprobación de las opciones de ejecución */
var sw_ejya=document.fdatosejecucion.sw_ejya.checked;
var sw_ejprg=document.fdatosejecucion.sw_ejprg.checked;
var sw_seguimientocon=document.fdatosejecucion.sw_seguimiento[0].checked;
var sw_seguimientosin=document.fdatosejecucion.sw_seguimiento[1].checked;
var sw_mkprocedimiento=document.fdatosejecucion.sw_mkprocedimiento.checked;
var sw_nuevaprocedimiento=document.fdatosejecucion.sw_procedimiento[0].checked;
var descripcion_nuevaprocedimiento=document.fdatosejecucion.nombreprocedimiento.value;
var sw_procedimientoexistente=document.fdatosejecucion.sw_procedimiento[1].checked;
var sw_mktarea=document.fdatosejecucion.sw_mktarea.checked;
var sw_nuevatarea=document.fdatosejecucion.sw_tarea[0].checked;
var descripcion_nuevatarea=document.fdatosejecucion.nombretarea.value;
var sw_tareaexistente=document.fdatosejecucion.sw_tarea[1].checked;
var pprocedimiento=document.fdatosejecucion.idprocedimiento.selectedIndex
var ptarea=document.fdatosejecucion.idtarea.selectedIndex
if(!sw_ejya && !sw_ejprg && !sw_mkprocedimiento && !sw_mktarea ){
alert("ATENCIÓN.- Debe elegir al menos un modo de ejecución");
return(false);
}
// Cuestión procedimiento ---------------------------------------------------------------------
if(sw_ejya){
if(!sw_seguimientocon && !sw_seguimientosin){
alert("ATENCIÓN.- Debe elegir un modo de ejecución inmediata");
return(false);
}
}
// Cuestión procedimiento -----------------------------------------------------------------------
if(sw_mkprocedimiento){
if(!sw_nuevaprocedimiento && !sw_procedimientoexistente){
alert("ATENCIÓN.- Debe elegir un modo de inclusión en procedimiento de este comando");
return(false);
}
if(sw_nuevaprocedimiento && descripcion_nuevaprocedimiento==""){
alert("ATENCIÓN.- Debe especificar el nombre del nuevo procedimiento que se creará y al que se añadirá este comando");
document.fdatosejecucion.nombreprocedimiento.focus();
return(false);
}
if(sw_procedimientoexistente && pprocedimiento==0){
alert("ATENCIÓN.- Debe elegir el procedimiento al que se añadirá este comando");
document.fdatosejecucion.idprocedimiento.focus();
return(false);
}
}
// Cuestión tarea ------------------------------------------------------------------------------------------------------------------------------
if(sw_mktarea){
if(!sw_nuevatarea && !sw_tareaexistente){
alert("ATENCIÓN.- Debe elegir un modo de inclusión en tarea ejecutable, de este comando");
return(false);
}
if(sw_nuevatarea && descripcion_nuevatarea==""){
alert("ATENCIÓN.- Debe especificar el nombre de la nueva tarea ejecutable que se creará y a la que se añadirá este comando");
document.fdatosejecucion.nombretarea.focus();
return(false);
}
if(sw_tareaexistente && ptarea==0){
alert("ATENCIÓN.- Debe elegir la tarea a la que se añadirá este comando");
document.fdatosejecucion.idtarea.focus();
return(false);
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
return(true)
}
//____________________________________________________________________________
function clic_mktarea(o){
if(!o.checked){
document.fdatosejecucion.sw_tarea[0].checked=false;
document.fdatosejecucion.nombretarea.value="";
document.fdatosejecucion.sw_tarea[1].checked=false;
document.fdatosejecucion.idtarea.selectedIndex=0;
}
}
function clic_nwtarea(o){
if(o.checked){
document.fdatosejecucion.sw_mktarea.checked=true;
document.fdatosejecucion.sw_tarea[1].checked=false;
document.fdatosejecucion.idtarea.selectedIndex=0;
}
}
function clic_extarea(o){
if(o.checked){
document.fdatosejecucion.sw_mktarea.checked=true;
document.fdatosejecucion.sw_tarea[0].checked=false;
document.fdatosejecucion.nombretarea.value="";
}
}
function clic_nomtarea(o){
document.fdatosejecucion.sw_mktarea.checked=true;
document.fdatosejecucion.sw_tarea[0].checked=true;
document.fdatosejecucion.idtarea.selectedIndex=0;
}
function clic_mkprocedimiento(o){
if(!o.checked){
document.fdatosejecucion.sw_procedimiento[0].checked=false;
document.fdatosejecucion.nombreprocedimiento.value="";
document.fdatosejecucion.sw_procedimiento[1].checked=false;
document.fdatosejecucion.idprocedimiento.selectedIndex=0;
}
}
function clic_nwprocedimiento(o){
if(o.checked){
document.fdatosejecucion.sw_mkprocedimiento.checked=true;
document.fdatosejecucion.sw_procedimiento[1].checked=false;
document.fdatosejecucion.idprocedimiento.selectedIndex=0;
}
}
function clic_exprocedimiento(o){
if(o.checked){
document.fdatosejecucion.sw_mkprocedimiento.checked=true;
document.fdatosejecucion.sw_procedimiento[0].checked=false;
document.fdatosejecucion.nombreprocedimiento.value="";
}
}
function clic_nomprocedimiento(o){
document.fdatosejecucion.sw_mkprocedimiento.checked=true;
document.fdatosejecucion.sw_procedimiento[0].checked=true;
document.fdatosejecucion.idprocedimiento.selectedIndex=0;
}
function procedimientoexistente(o){
document.fdatosejecucion.sw_mkprocedimiento.checked=true;
document.fdatosejecucion.sw_procedimiento[1].checked=true;
document.fdatosejecucion.nombreprocedimiento.value="";
}
function tareaexistente(o){
document.fdatosejecucion.sw_mktarea.checked=true;
document.fdatosejecucion.sw_tarea[1].checked=true;
document.fdatosejecucion.nombretarea.value="";
}
//____________________________________________________________________________
function compone_urlejecucion(){
var wurl=""
var sw_ejya=document.fdatosejecucion.sw_ejya.checked;
var sw_seguimiento=document.fdatosejecucion.sw_seguimiento[0].checked;
var sw_ejprg=document.fdatosejecucion.sw_ejprg.checked;
var sw_mkprocedimiento=document.fdatosejecucion.sw_mkprocedimiento.checked;
if (document.fdatosejecucion.sw_procedimiento[0].checked){
var nwidprocedimiento=0
var nwdescriprocedimiento=document.fdatosejecucion.nombreprocedimiento.value;
}
else{
var p=document.fdatosejecucion.idprocedimiento.selectedIndex
var nwidprocedimiento=document.fdatosejecucion.idprocedimiento.options[p].value
var nwdescriprocedimiento=document.fdatosejecucion.idprocedimiento.options[p].text
}
var sw_mktarea=document.fdatosejecucion.sw_mktarea.checked;
if (document.fdatosejecucion.sw_tarea[0].checked){
var nwidtarea=0
var nwdescritarea=document.fdatosejecucion.nombretarea.value;
}
else{
var p=document.fdatosejecucion.idtarea.selectedIndex
var nwidtarea=document.fdatosejecucion.idtarea.options[p].value
var nwdescritarea=document.fdatosejecucion.idtarea.options[p].text
}
wurl+="sw_ejya="+sw_ejya +"&sw_seguimiento="+sw_seguimiento+"sw_ejprg="+sw_ejprg+"&sw_mktarea="+sw_mktarea+"&nwidtarea="+nwidtarea+"&nwdescritarea="+nwdescritarea
wurl+="&sw_mkprocedimiento="+sw_mkprocedimiento+"&nwidprocedimiento="+nwidprocedimiento+"&nwdescriprocedimiento="+nwdescriprocedimiento
return(wurl)
}
//________________________________________________________________________________________________________
//
// Resultado ejecución de un comando
//________________________________________________________________________________________________________
function resultado_comando(resul){
alert(CTbMsg[resul]);
}

View File

@ -0,0 +1,19 @@
<?
// *********************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Agosto-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: controlacceso.php
// Descripción :Este fichero aporta los datos de acceso a la aplicación
// *********************************************************************************
//========================================================================================================
// Variables de sessión de configuración de servidor y base de datos( Modificar aquípara cambio global)
$cnx="localhost;usuog;passusuog;ogAdmBD;mysql"; // Cadena de conexión a la base de datos
$wer="OPENGNSYSURL/pagerror.php"; // Página de redireccionamiento de errores
$wac="OPENGNSYSURL/acceso.php"; // Página de login de la aplicación
$idi="esp"; // Idioma por defecto
//========================================================================================================
?>

View File

@ -0,0 +1,185 @@
<?
// ********************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Diciembre-2003
// Fecha Última modificación: Febrero-2005
// Nombre del fichero: controlacceso.php
// Descripción :Este fichero implementa el control de acceso a la aplicación
// *********************************************************************
include_once("controlacceso.php");
include_once("./includes/CreaComando.php");
include_once("./clases/AdoPhp.php");
//________________________________________________________________________________________________________
$usu="";
$pss="";
$idc=0;
$iph=""; // Switch menu cliente
if (isset($_POST["usu"])) $usu=$_POST["usu"];
if (isset($_POST["pss"])) $pss=$_POST["pss"];
if (isset($_POST["idcentro"])) $idc=$_POST["idcentro"];
if (isset($_GET["iph"])) $iph=$_GET["iph"];
//________________________________________________________________________________________________________
$cmd=CreaComando($cnx); // Crea objeto comando
if (!$cmd)
die("Error de acceso");
//________________________________________________________________________________________________________
$nmc="";
$idi="";
if(!empty($iph)){ // LLamada del browser del cliente
list($wip,$wusu,$wpwd,$wbd,$tbd)=split(";",$cnx);
$usu=$wusu;
$pss=$wpwd;
}
$resul=toma_datos($cmd,$idc,&$nmc,&$idi,$usu,&$tsu,$pss);
if(!$resul)
Header("Location: ".$wac."?herror=4"); // Error de conexión con servidor B.D.
if(!empty($iph)){
$wurl="./varios/menucliente.php";
Header("Location:".$wurl); // Accede a la página de menus
}
session_start(); // Activa variables de sesión
$_SESSION["widcentro"]=$idc;
$_SESSION["wnombrecentro"]=$nmc;
$_SESSION["wusuario"]=$usu;
$_SESSION["widtipousuario"]=$tsu;
$_SESSION["widioma"]=$idi;
$_SESSION["wcadenaconexion"]=$cnx;
$_SESSION["wpagerror"]=$wer;
$_SESSION["wurlacceso"]=$wac;
// Variables de entorno
$resul=toma_entorno($cmd,&$ips,&$prt,&$pclo,&$rep);
if(!$resul)
Header("Location: ".$wac."?herror=4"); // Error de conexión con servidor B.D.
$_SESSION["wservidorhidra"]=$ips;
$_SESSION["whidraport"]=$prt;
$_SESSION["protclonacion"]=$pclo;
$_SESSION["repcentralizado"]=$rep;
/*
echo "<BR>Cadena=".$_SESSION["wcadenaconexion"];
echo "<BR>servidorhidra=".$_SESSION["wservidorhidra"];
echo "<BR>hidraport=".$_SESSION["whidraport"];
echo "<BR>usuario=".$_SESSION["wusuario"];
echo "<BR>idtipousuario=".$_SESSION["widtipousuario"];
*/
//________________________________________________________________________________________________________
// Busca datos del usuario que intenta acceder a la aplicación
// Parametros:
// - cmd:Una comando ya operativo (con conexión abierta)
// - usuario: Nombre del usuario
// - pasguor: Password del uuario
//
// Devuelve el identificador del centro, el nombre y el idioma utilizado por el usuario
//_______________________________________________________________________________________________________
function toma_datos($cmd,$idcentro,$nombrecentro,$idioma,$usuario,$idtipousuario,$pasguor){
$rs=new Recordset;
if(!empty($idcentro)){
$cmd->texto="SELECT usuarios.idtipousuario,centros.nombrecentro,idiomas.nemonico AS idioma FROM usuarios";
$cmd->texto.=" INNER JOIN administradores_centros ON administradores_centros.idusuario=usuarios.idusuario";
$cmd->texto.=" INNER JOIN centros ON centros.idcentro=administradores_centros.idcentro";
$cmd->texto.=" INNER JOIN idiomas ON usuarios.ididioma=idiomas.ididioma";
$cmd->texto.=" WHERE idtipousuario<>3
AND usuarios.usuario='".$usuario."'
AND usuarios.pasguor='".$pasguor."'
AND administradores_centros.idcentro=".$idcentro;
}
else{
$cmd->texto="SELECT usuarios.idtipousuario,idiomas.nemonico AS idioma FROM usuarios";
$cmd->texto.=" INNER JOIN idiomas ON usuarios.ididioma=idiomas.ididioma";
$cmd->texto.=" WHERE idtipousuario<>3
AND usuarios.usuario='".$usuario."'
AND usuarios.pasguor='".$pasguor."'";
}
$rs->Comando=&$cmd;
//echo $cmd->texto;
if (!$rs->Abrir()) return($false); // Error al abrir recordset
if(!$rs->EOF){
$idtipousuario=$rs->campos["idtipousuario"];
$idioma=$rs->campos["idioma"];
$usuario=$rs->campos["usuario"];
if(!empty($idcentro)){
$nombrecentro=$rs->campos["nombrecentro"];
$idtipousuario=2; // Fuerza al acceso como administrador de UNidad organizativa
return(true);
}
else{
$nombrecentro="";
if($idtipousuario<>1) // Si NO es superadminsitrador
return(false);
else
return(true);
}
}
return(false);
}
//________________________________________________________________________________________________________
// Busca datos de configuración del sistema
// Parametros:
// - cmd:Una comando ya operativo (con conexión abierta)
// - ips: Dirección IP del servidor de administración
// - prt: Puerto de comunicaciones
// - pclo: Protocolo de clonación
// - rep: Uso de repositorio centralizado
//
// Devuelve datos generales de configuración del sistema
//_______________________________________________________________________________________________________
function toma_entorno($cmd,$ips,$prt,$pclo,$rep){
$rs=new Recordset;
$cmd->texto="SELECT * FROM entornos";
$rs->Comando=&$cmd;
//echo $cmd->texto;
if (!$rs->Abrir()) return($false); // Error al abrir recordset
if(!$rs->EOF){
$ips=$rs->campos["ipserveradm"];
$prt=$rs->campos["portserveradm"];
$pclo=$rs->campos["protoclonacion"];
$rep=$rs->campos["repositorio"];
}
return(true);
}
//_______________________________________________________________________________________________________
?>
<HTML>
<TITLE> Administración web de aulas</TITLE>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="estilos.css">
</HEAD>
<BODY>
<DIV id="mensaje" style="Position:absolute;TOP:250;LEFT:330; visibility:visible">
<SPAN align=center class=subcabeceras>Acceso permitido. Espere por favor ...</SPAN></P>
<SCRIPT LANGUAGE="JAVASCRIPT">
var vez=0;
setTimeout("acceso();",300);
function acceso(){
o=document.getElementById("mensaje");
var s=o.style.visibility;
if(s=="hidden")
o.style.visibility="visible";
else
o.style.visibility="hidden";
if(vez>5){
var w=window.top;
w.location="frames.php";
}
vez++;
setTimeout("acceso();",300);
}
</SCRIPT>
</BODY>
</HTML>

View File

@ -0,0 +1,63 @@
<?php
listar_directorios_ruta("./");
function listar_directorios_ruta($ruta){
// abrir un directorio y listarlo recursivo
if (is_dir($ruta)) {
if ($dh = opendir($ruta)) {
while (($file = readdir($dh)) !== false) {
if($file !=".svn" && $file!="." && $file!=".."){
//esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio
//mostraría tanto archivos como directorios
//echo "<br>Nombre de archivo: $file : Es un: " . filetype($ruta . $file);
if (is_dir($ruta . $file) && $file!="." && $file!=".."){
//solo si el archivo es un directorio, distinto que "." y ".."
echo "<br>Directorio: $ruta$file";
listar_directorios_ruta($ruta . $file . "/");
}
else{
//echo "<br>Archivp:$file";
//if($file=="aulas.php")
procesaarchivo($ruta,$file);
}
}
}
closedir($dh);
}
}else
echo "<br>No es ruta valida";
}
function procesaarchivo($ruta,$file){
$meta='<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
$archivo=realpath($ruta.$file);
echo "<br>Procesando Archivo:".$file;
$tam=filesize($archivo);
$fp = fopen($archivo, "rb");
$buffer = fread($fp, $tam);
fclose($fp);
$pos = strpos($buffer,'<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">');
if($pos==0)
$pos = strpos($buffer,'<head>');
if($pos==0)
return;
$dpl=strlen('<HEAD>');
$prebuffer=substr($buffer,0,$pos+$dpl);
$posbuffer=substr($buffer,$pos+$dpl);
$buffer=$prebuffer."\n\t".$meta.$posbuffer;
/*
$buffer=ereg_replace( "<"," ",$buffer);
$buffer=ereg_replace( ">"," ",$buffer);
$buffer=ereg_replace( "[\n\r]","<BR>",$buffer);
echo $buffer;
*/
$fp = fopen($archivo,"w");
fwrite($fp, $buffer,strlen($buffer));
fclose($fp);
}
?>

View File

@ -0,0 +1,395 @@
.textos{
COLOR: #A53B2D;
FONT-FAMILY:MS Sans Serif;
FONT-SIZE: 8pt;
}
.texto_arbol{
COLOR: #000000;
FONT-FAMILY: sans-serif;
FONT-SIZE: 11px;
}
.menu_contextual TABLE{
BACKGROUND-COLOR: #d4d0c8;
}
.menu_contextual TD{
COLOR: #000000;
FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
LETTER-SPACING: -1px;
}
.menu_contextual SPAN{
COLOR: #000000;
FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
LETTER-SPACING: -1px;
}
.tabla_standar TD{
COLOR: #000000;
FONT-FAMILY: Verdana;
FONT-SIZE: 11px;
}
.tabla_lista TD{
COLOR: #000000;
FONT-FAMILY: Verdana;
FONT-SIZE: 11px;
LETTER-SPACING: -1px;
}
.input_nodo{
BORDER-BOTTOM: 1px solid;
BORDER-LEFT: 1px solid;
BORDER-RIGHT: 1px solid;
BORDER-TOP: 1px solid;
COLOR: #000000;
FONT-SIZE: 11px;
HEIGHT: 14px;
}
.marcorelieve{
BORDER-BOTTOM: #808080 1px solid;
BORDER-LEFT: #ffffff 1px solid;
BORDER-RIGHT: #808080 1px solid;
BORDER-TOP: #ffffff 1px solid;
}
.marco{
BORDER-BOTTOM: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-RIGHT: #999999 1px solid;
BORDER-TOP: #999999 1px solid;
COLOR: #000000;
FONT-FAMILY: Verdana,Arial, Helvetica, sans-serif;
FONT-SIZE: 13px;
}
.menupral{
BACKGROUND-COLOR: #d4d0c8;
FONT-FAMILY: sans-serif;
FONT-SIZE: 11px;
}
.menupral TD{
BORDER-BOTTOM: #d4d0c8 1px solid;
BORDER-LEFT: #d4d0c8 1px solid;
BORDER-RIGHT: #d4d0c8 1px solid;
BORDER-TOP: #d4d0c8 1px solid;
}
.menupral SPAN{
COLOR: #000000;
FONT-FAMILY: sans-serif;
FONT-SIZE: 11px;
}
.filtros{
BORDER-BOTTOM: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-RIGHT: #999999 1px solid;
BORDER-TOP: #999999 1px solid;
}
.filtros TD{
FONT-FAMILY: sans-serif;
FONT-SIZE: 11px;
COLOR:#999999;
}
.supercabeceras {
COLOR:#FE6C65;
FONT-FAMILY: Arial;
FONT-SIZE: 30px;
FONT-WEIGHT: 600;
}
.sobrecabeceras {
COLOR:#7575DD;
FONT-FAMILY: Arial;
FONT-SIZE: 24px;
FONT-WEIGHT: 400;
}
.cabeceras{
COLOR: #999999;
FONT-FAMILY: Verdana;
FONT-SIZE: 24px;
FONT-WEIGHT: 600;
}
.subcabeceras{
COLOR: #D6A621;
FONT-FAMILY: Verdana;
FONT-SIZE: 20px;
}
.presentaciones{
COLOR: #999999;
FONT-FAMILY: Verdana,Arial, Helvetica, sans-serif;
FONT-SIZE: 12px;
}
.notas{
COLOR: #999999;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 10px;
}
.tabla_datos{
}
.tabla_datos TH{
BACKGROUND-COLOR: #63676b;
COLOR: #ffffff;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px;
FONT-WEIGHT: 500;
BORDER-BOTTOM:#999999 1px solid ;
}
.tabla_datos TD{
BACKGROUND-COLOR: #d4d0c8;
COLOR: #003300;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px;
BORDER-BOTTOM:#999999 1px solid;
}
.formulariodatos{
COLOR: #000000;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px
}
.tabla_listados{
}
.tabla_listados TH{
BACKGROUND-COLOR: #63676b;
COLOR: #ffffff;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px;
FONT-WEIGHT: 500;
BORDER-BOTTOM:#999999 1px solid ;
}
.tabla_listados TD{
BACKGROUND-COLOR: #EEEECC;
COLOR: #003300;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
BORDER-BOTTOM:#999999 1px solid;
}
.tabla_listados_sin {
}
.tabla_listados_sin TH{
BACKGROUND-COLOR: #63676b;
COLOR: #ffffff;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px;
FONT-WEIGHT: 500;
BORDER-BOTTOM:#4f4f4f 1px solid;
BORDER-RIGHT:#4f4f4f 1px solid;
}
.tabla_listados_sin TD{
BACKGROUND-COLOR: #EEEECC;
COLOR: #000000;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11;
}
A.tabla_listados_sin:visited{
COLOR: #000000;
FONT-FAMILY: sans-serif;
FONT-SIZE: 11px;
}
A.tabla_listados_sin:link{
COLOR: #000000;
FONT-FAMILY: sans-serif;
FONT-SIZE: 11px;
}
.recuadros{
BACKGROUND-COLOR: lightseagreen;
BORDER-BOTTOM: teal solid;
BORDER-LEFT: #b4e0d2 solid;
BORDER-RIGHT: teal solid;
BORDER-TOP: #b4e0d2 solid;
COLOR: white;
FONT-STYLE: italic
}
.tabla_meses{
}
.tabla_meses TH{
BACKGROUND-COLOR: #b5daad;
COLOR: #000000;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
FONT-WEIGHT: 500;
BORDER-BOTTOM: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-RIGHT: #999999 1px solid;
BORDER-TOP: #999999 1px solid;
}
.tabla_meses TD{
BACKGROUND-COLOR: #EEEECC;
COLOR: #003300;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px;
BORDER-BOTTOM: #d4d4d4 1px solid;
BORDER-LEFT: #d4d4d4 1px solid;
}
.tabla_reservas{
}
.tabla_reservas TH{
BACKGROUND-COLOR: #B5DAAD;
COLOR: #000000;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 10px;
FONT-WEIGHT: 700;
}
.tabla_reservas TD{
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 10px;
}
.tabla_busquedas{
}
.tabla_busquedas TH{
BACKGROUND-COLOR: #5a86b5;
COLOR: #ffffff;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
FONT-WEIGHT: 500;
BORDER-BOTTOM:#000000 1px solid ;
}
.tabla_busquedas TD{
COLOR: #003300;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
}
.tablaipes{
BACKGROUND-COLOR: #b5daad;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 9px
}
.estilodesple{
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px
}
.cajatexto{
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px
}
.cajacomandos{
BACKGROUND-COLOR: #ffffff;
COLOR: #000000;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px
}
.salidacomandos{
BACKGROUND-COLOR: #000000;
COLOR: #ffffff;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px
}
.tabla_parametros{
}
.tabla_parametros TH{
BACKGROUND-COLOR: #D4D4D4;
COLOR: #000000;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 12px;
FONT-WEIGHT: 700;
BORDER-BOTTOM:#000000 1px solid ;
}
.tabla_parametros TD{
BACKGROUND-COLOR: #B5DAAD;
COLOR: #003300;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
BORDER-BOTTOM:#000000 1px solid;
}
.opciones_ejecucion{
BORDER-TOP: silver thin solid;
BORDER-BOTTOM: silver thin solid;
BORDER-LEFT: silver thin solid;
BORDER-RIGHT: silver thin solid;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
}
.tablaprogramacion TABLE{
}
.tablaprogramacion TH{
FONT-WEIGHT: bold;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
BORDER-LEFT: medium none;
COLOR: white;
BACKGROUND-COLOR: lightseagreen;
TEXT-ALIGN: left;
}
.tablaprogramacion TD{
FONT-SIZE: 9pt;
FONT-FAMILY: Arial, Helvetica, sans-serif;
COLOR: #000000;
}
.botonprogramacion{
BORDER-BOTTOM: #666666 1px solid;
BORDER-TOP: #ffffff 1px solid;
BORDER-LEFT: #ffffff 1px solid;
BORDER-RIGHT: #666666 1px solid;
BACKGROUND-COLOR: #EEEECC;
FONT-SIZE: 9pt;
COLOR: #000000;
FONT-FAMILY: Arial, Helvetica, sans-serif;
}
.tabla_accesos{
}
.tabla_accesos TH{
BACKGROUND-COLOR: lightseagreen;
COLOR: #ffffff;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
FONT-WEIGHT: 500;
BORDER-BOTTOM:#000000 1px solid ;
}
.tabla_accesos TD{
COLOR: #003300;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 11px;
}
.mensajebrowser{
BORDER-BOTTOM: #999999 1px solid;
BORDER-LEFT: #999999 1px solid;
BORDER-RIGHT: #999999 1px solid;
BORDER-TOP: #999999 1px solid;
BACKGROUND-COLOR: #FFFFFF;
COLOR: #999999;
FONT-FAMILY: Arial, Helvetica, sans-serif;
FONT-SIZE: 14px;
FONT-WEIGHT: 300;
}

View File

@ -0,0 +1,34 @@
<?
// *******************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Agosto-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: frames.php
// Descripción :Este fichero implementa la distribución en frames de la aplicación
// *******************************************************************************************************
include_once("./includes/ctrlacc.php");
include_once("./includes/constantes.php");
//________________________________________________________________________________________________________
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<TITLE> Administración web de aulas</TITLE>
</HEAD>
<FRAMESET rows="25,*">
<FRAME SRC="barramenu.php" frameborder=0 scrolling=no NAME="frame_menus" >
<FRAMESET cols="30%,*">
<?
if($idtipousuario!=$SUPERADMINISTRADOR)
echo '<FRAME SRC="./principal/aulas.php" frameborder=1 scrolling=auto NAME="frame_arbol" >';
else{
if($idtipousuario==$SUPERADMINISTRADOR)
echo '<FRAME SRC="./principal/administracion.php" frameborder=1 scrolling=auto NAME="frame_arbol" >';
}
?>
<FRAME SRC="nada.php" frameborder=1 NAME="frame_contenidos">
</FRAMESET>
</FRAMESET>
</FRAMESET>
</HTML>

View File

@ -0,0 +1,145 @@
<?
// *************************************************************************************************************************************************
// Aplicaci<63>n WEB: ogAdmWebCon
// Autor: Jos<6F> Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_accionmenu.php
// Descripción :
// Gestiona el mantenimiento de la tabla de acciones_menus
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/CreaComando.php");
include_once("../includes/opciones.php");
//________________________________________________________________________________________________________
$altas="";
$bajas="";
$modificaciones="";
if (isset($_POST["altas"])) $altas=$_POST["altas"]; // Recoge parametros
if (isset($_POST["bajas"])) $bajas=$_POST["bajas"];
if (isset($_POST["modificaciones"])) $modificaciones=$_POST["modificaciones"];
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
$literal="resultado_gestion_accionmenu";
if ($resul)
echo $literal."(1,'".$cmd->DescripUltimoError()."');";
else
echo $literal."(0,'".$cmd->DescripUltimoError()."');";
// *************************************************************************************************************************************************
function Gestiona()
{
global $cmd;
global $altas;
global $bajas;
global $modificaciones;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
$cmd->CreaParametro("@idtipoaccion",0,1);
$cmd->CreaParametro("@idmenu",0,1);
$cmd->CreaParametro("@tipoaccion",0,1);
$cmd->CreaParametro("@tipoitem",0,1);
$cmd->CreaParametro("@idurlimg","",1);
$cmd->CreaParametro("@descripitem","",0);
$cmd->CreaParametro("@orden",0,1);
/* Altas */
if(!empty($altas)){
$altas=substr($altas,0,strlen($altas)-1); // Quita el último ";"
$tbAltas=split(";",$altas);
for($i=0;$i<sizeof($tbAltas);$i++){
$tbAlta=split(",",$tbAltas[$i]);
/* Toma datos altas */
$idmenu=$tbAlta[0];
$idtipoaccion=$tbAlta[1];
$tipoaccion=$tbAlta[2];
$tipoitem=$tbAlta[3];
$idurlimg=$tbAlta[4];
$descripitem=$tbAlta[5];
$orden=$tbAlta[6];
$cmd->ParamSetValor("@idtipoaccion",$idtipoaccion);
$cmd->ParamSetValor("@idmenu",$idmenu);
$cmd->ParamSetValor("@tipoaccion",$tipoaccion);
$cmd->ParamSetValor("@tipoitem",$tipoitem);
$cmd->ParamSetValor("@idurlimg",$idurlimg);
$cmd->ParamSetValor("@descripitem",$descripitem);
$cmd->ParamSetValor("@orden",$orden);
$cmd->texto="INSERT INTO acciones_menus (idmenu,idtipoaccion,tipoaccion,tipoitem,idurlimg,descripitem,orden)
VALUES (@idmenu,@idtipoaccion,@tipoaccion,@tipoitem,@idurlimg,@descripitem,@orden)";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if(!$resul)
return(false);
}
}
/* Bajas */
if(!empty($bajas)){
$bajas=substr($bajas,0,strlen($bajas)-1); // Quita el último ";"
$tbBajas=split(";",$bajas);
for($i=0;$i<sizeof($tbBajas);$i++){
$tbBaja=split(",",$tbBajas[$i]);
/* Toma datos bajas */
$idmenu=$tbBaja[0];
$idtipoaccion=$tbBaja[1];
$tipoaccion=$tbBaja[2];
$cmd->ParamSetValor("@idtipoaccion",$idtipoaccion);
$cmd->ParamSetValor("@idmenu",$idmenu);
$cmd->ParamSetValor("@tipoaccion",$tipoaccion);
$cmd->texto="DELETE FROM acciones_menus
WHERE idmenu=@idmenu AND idtipoaccion=@idtipoaccion AND tipoaccion=@tipoaccion";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if(!$resul)
return(false);
}
}
/* Modificaciones */
if(!empty($modificaciones)){
$modificaciones=substr($modificaciones,0,strlen($modificaciones)-1); // Quita el último ";"
$tbModificaciones=split(";",$modificaciones);
for($i=0;$i<sizeof($tbModificaciones);$i++){
$tbtbModificacion=split(",",$tbModificaciones[$i]);
/* Toma datos modificaciones */
$idmenu=$tbtbModificacion[0];
$idtipoaccion=$tbtbModificacion[1];
$tipoaccion=$tbtbModificacion[2];
$tipoitem=$tbtbModificacion[3];
$idurlimg=$tbtbModificacion[4];
$descripitem=$tbtbModificacion[5];
$orden=$tbtbModificacion[6];
$cmd->ParamSetValor("@idtipoaccion",$idtipoaccion);
$cmd->ParamSetValor("@idmenu",$idmenu);
$cmd->ParamSetValor("@tipoaccion",$tipoaccion);
$cmd->ParamSetValor("@tipoitem",$tipoitem);
$cmd->ParamSetValor("@idurlimg",$idurlimg);
$cmd->ParamSetValor("@descripitem",$descripitem);
$cmd->ParamSetValor("@orden",$orden);
$cmd->texto="UPDATE acciones_menus set tipoitem=@tipoitem,idurlimg=@idurlimg,descripitem=@descripitem,orden=@orden
WHERE idmenu=@idmenu AND idtipoaccion=@idtipoaccion AND tipoaccion=@tipoaccion";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if(!$resul)
return(false);
}
}
return(true);
}
?>

View File

@ -0,0 +1,77 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_dministradores_centros.php
// Descripción :
// Gestiona la asignación de administradores a las Unidades organizativas
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/CreaComando.php");
include_once("../includes/opciones.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idcentro=0;
$idusuario=0;
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["idcentro"])) $idcentro=$_POST["idcentro"];
if (isset($_POST["idusuario"])) $idusuario=$_POST["idusuario"];
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_administradores_centros";
break;
case $op_eliminacion :
$literal="resultado_eliminar_administradores_centros";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idusuario.");".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idusuario.");".chr(13);
}
else{
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idusuario.")";
}
// *************************************************************************************************************************************************
function Gestiona(){
global $cmd;
global $opcion;
global $idusuario;
global $idcentro;
global $urlimgth;
global $op_alta;
global $op_eliminacion;
$cmd->CreaParametro("@idusuario",$idusuario,1);
$cmd->CreaParametro("@idcentro",$idcentro,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO administradores_centros(idusuario,idcentro) VALUES (@idusuario,@idcentro)";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$cmd->texto='DELETE FROM administradores_centros WHERE idusuario='.$idusuario.' AND idcentro='.$idcentro;
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
?>

View File

@ -0,0 +1,80 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_dministradores_centros.php
// Descripción :
// Gestiona la asignación de administradores a las Unidades organizativas
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/CreaComando.php");
include_once("../includes/opciones.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idcentro=0;
$idusuario=0;
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["idusuario"])) $idusuario=$_POST["idusuario"];
if (isset($_POST["idcentro"])) $idcentro=$_POST["idcentro"];
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_centros_administradores";
break;
case $op_eliminacion :
$literal="resultado_eliminar_centros_administradores";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idcentro.");".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idcentro.");".chr(13);
}
else{
echo " window.parent.".$literal."(0,'".$cmd->DescripUltimoError()."',".$idcentro.")";
}
// *************************************************************************************************************************************************
function Gestiona(){
global $cmd;
global $opcion;
global $idusuario;
global $idcentro;
global $urlimgth;
global $op_alta;
global $op_eliminacion;
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@idusuario",$idusuario,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO administradores_centros(idusuario,idcentro) VALUES (@idusuario,@idcentro)";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$cmd->texto='DELETE FROM administradores_centros WHERE idusuario='.$idusuario.' AND idcentro='.$idcentro;
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
?>

View File

@ -0,0 +1,264 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_aulas.php
// Descripción :
// Gestiona el mantenimiento de la tabla de aulas
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("./relaciones/aulas_eliminacion.php");
include_once("./relaciones/ordenadores_eliminacion.php");
include_once("../includes/opciones.php");
include_once("./relaciones/gruposordenadores_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idaula=0;
$nombreaula="";
$grupoid=0;
$urlfoto="";
$cagnon=false;
$pizarra=false;
$ubicacion="";
$comentarios="";
$puestos=0;
$horaresevini=0;
$horaresevfin=0;
$idmenu=0;
$idproautoexec=0;
$idrepositorio=0;
$idperfilhard=0;
$cache=0;
$modomul=0;
$ipmul="";
$pormul=0;
$velmul=0;
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["idaula"])) $idaula=$_POST["idaula"];
if (isset($_POST["identificador"])) $idaula=$_POST["identificador"];
if (isset($_POST["nombreaula"])) $nombreaula=$_POST["nombreaula"];
if (isset($_POST["urlfoto"])) $urlfoto=$_POST["urlfoto"];
if (isset($_POST["cagnon"])) $cagnon=$_POST["cagnon"];
if (isset($_POST["pizarra"])) $pizarra=$_POST["pizarra"];
if (isset($_POST["ubicacion"])) $ubicacion=$_POST["ubicacion"];
if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"];
if (isset($_POST["puestos"])) $puestos=$_POST["puestos"];
if (isset($_POST["horaresevini"])) $horaresevini=$_POST["horaresevini"];
if (isset($_POST["horaresevfin"])) $horaresevfin=$_POST["horaresevfin"];
if (isset($_POST["idmenu"])) $idmenu=$_POST["idmenu"];
if (isset($_POST["idprocedimiento"])) $idproautoexec=$_POST["idprocedimiento"];
if (isset($_POST["idrepositorio"])) $idrepositorio=$_POST["idrepositorio"];
if (isset($_POST["idperfilhard"])) $idperfilhard=$_POST["idperfilhard"];
if (isset($_POST["cache"])) $cache=$_POST["cache"];
if (isset($_POST["modomul"])) $modomul=$_POST["modomul"];
if (isset($_POST["ipmul"])) $ipmul=$_POST["ipmul"];
if (isset($_POST["pormul"])) $pormul=$_POST["pormul"];
if (isset($_POST["velmul"])) $velmul=$_POST["velmul"];
$gidmenu=0;
$gidproautoexec=0;
$gidrepositorio=0;
$gidperfilhard=0;
$gcache=0;
if (isset($_POST["gidmenu"])) $gidmenu=$_POST["gidmenu"];
if (isset($_POST["gidprocedimiento"])) $gidproautoexec=$_POST["gidprocedimiento"];
if (isset($_POST["gidrepositorio"])) $gidrepositorio=$_POST["gidrepositorio"];
if (isset($_POST["gidperfilhard"])) $gidperfilhard=$_POST["gidperfilhard"];
if (isset($_POST["gcache"])) $gcache=$_POST["gcache"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
// *************************************************************************************************************************************************
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<BODY>
<SCRIPT language="javascript" src="../jscripts/propiedades_aulas.js"></SCRIPT>
<?
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_aulas";
break;
case $op_modificacion:
$literal="resultado_modificar_aulas";
break;
case $op_eliminacion :
$literal="resultado_eliminar_aulas";
break;
default:
break;
}
echo '<p><span style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</span></p>';
if ($resul){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idaula.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreaula."');".chr(13);
echo '</SCRIPT>';
}
else{
echo '<SCRIPT language="javascript">';
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idaula.")";
echo '</SCRIPT>';
}
?>
</BODY>
</HTML>
<?
/**************************************************************************************************************************************************
Inserta, modifica o elimina datos en la tabla aulas
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idcentro;
global $grupoid;
global $idaula;
global $nombreaula;
global $urlfoto;
global $cagnon;
global $pizarra;
global $ubicacion;
global $comentarios;
global $puestos;
global $horaresevini;
global $horaresevfin;
global $idmenu;
global $idproautoexec;
global $idrepositorio;
global $idperfilhard;
global $cache;
global $gidmenu;
global $gidproautoexec;
global $gidrepositorio;
global $gidperfilhard;
global $gcache;
global $modomul;
global $ipmul;
global $pormul;
global $velmul;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $tablanodo;
$cmd->CreaParametro("@grupoid",$grupoid,1);
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@idaula",$idaula,1);
$cmd->CreaParametro("@nombreaula",$nombreaula,0);
$cmd->CreaParametro("@urlfoto",$urlfoto,0);
$cmd->CreaParametro("@cagnon",$cagnon,1);
$cmd->CreaParametro("@pizarra",$pizarra,1);
$cmd->CreaParametro("@ubicacion",$ubicacion,0);
$cmd->CreaParametro("@comentarios",$comentarios,0);
$cmd->CreaParametro("@puestos",$puestos,1);
$cmd->CreaParametro("@horaresevini",$horaresevini,1);
$cmd->CreaParametro("@horaresevfin",$horaresevfin,1);
$cmd->CreaParametro("@idmenu",$idmenu,1);
$cmd->CreaParametro("@idproautoexec",$idproautoexec,1);
$cmd->CreaParametro("@idrepositorio",$idrepositorio,1);
$cmd->CreaParametro("@idperfilhard",$idperfilhard,1);
$cmd->CreaParametro("@cache",$cache,1);
$cmd->CreaParametro("@modomul",$modomul,1);
$cmd->CreaParametro("@ipmul",$ipmul,0);
$cmd->CreaParametro("@pormul",$pormul,1);
$cmd->CreaParametro("@velmul",$velmul,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO aulas(idcentro,grupoid,nombreaula,urlfoto,cagnon,pizarra,ubicacion,comentarios,
puestos,horaresevini,horaresevfin,modomul,ipmul,pormul,velmul)
VALUES (@idcentro,@grupoid,@nombreaula,@urlfoto,@cagnon,@pizarra,@ubicacion,@comentarios,
@puestos,@horaresevini,@horaresevfin,@modomul,@ipmul,@pormul,@velmul)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idaula=$cmd->Autonumerico();
$arbolXML=SubarbolXML_aulas($idaula,$nombreaula);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE aulas SET nombreaula=@nombreaula,urlfoto=@urlfoto,cagnon=@cagnon,pizarra=@pizarra,
ubicacion=@ubicacion,comentarios=@comentarios,puestos=@puestos,horaresevini=@horaresevini,
horaresevfin=@horaresevfin,modomul=@modomul,ipmul=@ipmul,pormul=@pormul,velmul=@velmul WHERE idaula=@idaula";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$clsUpdate="";
if($idmenu>0 || $gidmenu>0)
$clsUpdate.="idmenu=@idmenu,";
if($idproautoexec>0 || $gidproautoexec>0)
$clsUpdate.="idproautoexec=@idproautoexec,";
if($idrepositorio>0 || $gidrepositorio>0)
$clsUpdate.="idrepositorio=@idrepositorio,";
if($idperfilhard>0 || $gidperfilhard>0)
$clsUpdate.="idperfilhard=@idperfilhard,";
if($cache!=0 || $gcache>0)
$clsUpdate.="cache=@cache,";
if(!empty($clsUpdate)){
$clsUpdate=substr($clsUpdate,0,strlen($clsUpdate)-1); // Quita última coma
$cmd->texto="UPDATE ordenadores SET ".$clsUpdate." WHERE idaula=@idaula";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
}
}
break;
case $op_eliminacion :
$resul=EliminaAulas($cmd,$idaula,"idaula");// Eliminación en cascada
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_aulas($idaula,$nombreaula){
global $LITAMBITO_AULAS;
$cadenaXML='<AULAS ';
// Atributos
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_AULAS."'" .')"';
$cadenaXML.=' imagenodo="../images/iconos/aula.gif"';
$cadenaXML.=' infonodo="'.$nombreaula.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_AULAS.'-'.$idaula;
$cadenaXML.='>';
$cadenaXML.='</AULAS>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,160 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_centros.php
// Descripción :
// Gestiona el mantenimiento de la tabla de centros
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("./relaciones/centros_eliminacion.php");
include_once("../includes/opciones.php");
include_once("./relaciones/centros_eliminacion.php");
include_once("./relaciones/aulas_eliminacion.php");
include_once("./relaciones/ordenadores_eliminacion.php");
include_once("./relaciones/gruposordenadores_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$identidad=0;
$idcentro=0;
$nombrecentro="";
$comentarios="";
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["identidad"])) $identidad=$_POST["identidad"];
if (isset($_POST["idcentro"])) $idcentro=$_POST["idcentro"];
if (isset($_POST["identificador"])) $idcentro=$_POST["identificador"];
if (isset($_POST["nombrecentro"])) $nombrecentro=$_POST["nombrecentro"];
if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
// *************************************************************************************************************************************************
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<BODY>
<SCRIPT language="javascript" src="../jscripts/propiedades_centros.js"></SCRIPT>
<?
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_centros";
break;
case $op_modificacion:
$literal="resultado_modificar_centros";
break;
case $op_eliminacion :
$literal="resultado_eliminar_centros";
break;
case $op_movida :
$literal="resultado_cambiar_centros";
break;
default:
break;
}
echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
if ($resul){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idcentro.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombrecentro."');".chr(13);
echo '</SCRIPT>';
}
else{
echo '<SCRIPT language="javascript">';
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idcentro.")";
echo '</SCRIPT>';
}
?>
</BODY>
</HTML>
<?
/*________________________________________________________________________________________________________
Inserta, modifica o elimina datos en la tabla centros
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idcentro;
global $nombrecentro;
global $comentarios;
global $identidad;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $op_movida;
global $tablanodo;
$cmd->CreaParametro("@identidad",$identidad,1);
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@nombrecentro",$nombrecentro,0);
$cmd->CreaParametro("@comentarios",$comentarios,0);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO centros(nombrecentro,comentarios,identidad) VALUES (@nombrecentro,@comentarios,@identidad)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idcentro=$cmd->Autonumerico();
$arbolXML=SubarbolXML_centros($idcentro,$nombrecentro);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE centros SET nombrecentro=@nombrecentro,comentarios=@comentarios WHERE idcentro=@idcentro";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$resul=EliminaCentros($cmd,$idcentro,"idcentro");// Eliminación en cascada
break;
case $op_movida :
$cmd->texto="UPDATE centros SET identidad=@identidad WHERE idcentro=@idcentro";
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_centros($idcentro,$nombrecentro){
global $LITAMBITO_CENTROS;
$cadenaXML='<CENTRO';
// Atributos
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_CENTROS."'" .')"';
$cadenaXML.=' imagenodo="../images/iconos/centros.gif"';
$cadenaXML.=' infonodo="'.$nombrecentro.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_CENTROS.'-'.$idcentro;
$cadenaXML.='></CENTRO>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,178 @@
<?php
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: colasacciones.php
// Descripción :
// Gestiona las operaciones realizadas sobre las acciones registradas
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../includes/TomanDatos.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/constantes.php");
include_once("../includes/comunes.php");
include_once("../includes/CreaComando.php");
include_once("../clases/SockHidra.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$acciones="";
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"];
if (isset($_POST["acciones"])) $acciones=$_POST["acciones"];
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=gestiona($cmd,$opcion,$acciones);
$cmd->Conexion->Cerrar();
}
if($resul)
echo $opcion; // Proceso con éxito, devuelve la opción
else
echo 0; // Proceso con algún error, devuelve cero
//
// *****************************************************************************************************************
//
function gestiona($cmd,$opcion,$acciones){
global $ACCION_EXITOSA;
global $ACCION_FALLIDA;
global $ACCION_SINRESULTADO;
global $LITACCION_EXITOSA;
global $LITACCION_FALLIDA;
global $ACCION_DETENIDA;
global $ACCION_INICIADA;
global $ACCION_FINALIZADA;
$tbAcciones=split(";",$acciones);
for($i=0;$i<sizeof($tbAcciones)-1;$i++){
list($tipoaccion,$idtipoaccion,$sesion,$idaccion)=split(",",$tbAcciones[$i]);
switch($opcion){
case 1: // Eliminar ============================================================
$cmd->texto="DELETE FROM acciones ";
if(!empty($idaccion))
$cmd->texto.=" WHERE idaccion=".$idaccion;
else
$cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion;
$resul=$cmd->Ejecutar();
break;
case 2: // Reiniciar ============================================================
/* Recordset para envío de comando actualizar */
$cmd->texto="SELECT count(*) as con,
group_concat(cast(ordenadores.idordenador AS char( 11 ) ) SEPARATOR ',' ) AS cadenaid,
group_concat(ordenadores.ip SEPARATOR ';' ) AS cadenaip
FROM acciones
INNER JOIN ordenadores ON ordenadores.idordenador=acciones.idordenador";
if(!empty($idaccion))
$cmd->texto.=" WHERE idaccion=".$idaccion;
else
$cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion."
AND sesion=".$sesion;
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return(false); // Error al abrir recordset
if ($rs->EOF) return(true); // No existen registros
$aplicacion="ido=".$rs->campos["cadenaid"].chr(13)."iph=".$rs->campos["cadenaip"].chr(13);
/* Update de la tabla */
$cmd->texto="UPDATE acciones
SET estado=".$ACCION_INICIADA.",resultado=".$ACCION_SINRESULTADO.",descrinotificacion='',fechahorafin=''";
if(!empty($idaccion))
$cmd->texto.=" WHERE idaccion=".$idaccion;
else
$cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion;
$resul=$cmd->Ejecutar();
if($resul)
$resul=enviaComandoActualizar($aplicacion);
break;
case 3: // Para acciones ============================================================
$cmd->texto="UPDATE acciones SET estado=".$ACCION_DETENIDA;
if(!empty($idaccion))
$cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_INICIADA;
else
$cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_INICIADA;
$resul=$cmd->Ejecutar();
break;
case 4: // Reanuda acciones ============================================================
$cmd->texto="UPDATE acciones SET estado=".$ACCION_INICIADA;
if(!empty($idaccion))
$cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_DETENIDA;
else
$cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_DETENIDA;
$resul=$cmd->Ejecutar();
break;
case 5: // Finalizar sin errores ============================================================
$ahora=date("y/m/d H:i:s");
$cmd->texto="UPDATE acciones SET estado=".$ACCION_FINALIZADA.",resultado=".$ACCION_EXITOSA.",
fechahorafin='".$ahora."'".",descrinotificacion='".$LITACCION_EXITOSA."'";
if(!empty($idaccion))
$cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_INICIADA;
else
$cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_INICIADA;
$resul=$cmd->Ejecutar();
break;
case 6: // Finalizar con errores ============================================================
$ahora=date("y/m/d H:i:s");
$cmd->texto="UPDATE acciones SET estado=".$ACCION_FINALIZADA.",resultado=".$ACCION_FALLIDA.",
fechahorafin='".$ahora."'".",descrinotificacion='".$LITACCION_FALLIDA."'";
if(!empty($idaccion))
$cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_INICIADA;
else
$cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_INICIADA;
$resul=$cmd->Ejecutar();
break;
}
//echo $cmd->texto;
}
return($resul);
}
// _________________________________________________________________________
//
// Envía un comando de actualizar a los ordenadores tras reinicio de acción
// _________________________________________________________________________
function enviaComandoActualizar($aplicacion)
{
global $servidorhidra;
global $hidraport;
global $LONCABECERA;
global $LONHEXPRM;
$funcion="Actualizar"; // Nombre de la función que procesa la petición
//________________________________________________________________________________________________________
//
// Envio al servidor de la petición
//________________________________________________________________________________________________________
$trama="";
$shidra=new SockHidra($servidorhidra,$hidraport);
if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
$parametros="nfn=".$funcion.chr(13);
$parametros.=$aplicacion;
$shidra->envia_comando($parametros);
$trama=$shidra->recibe_respuesta();
$shidra->desconectar();
}
else
return(false); // Error de actualización
$hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM));
$parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm);
$ValorParametros=extrae_parametros($parametros,chr(13),'=');
$trama_notificacion=$ValorParametros["res"];
if($trama_notificacion==1) return(true); // Devuelve respuesta
return(false); // Error de actualización
}
?>

View File

@ -0,0 +1,169 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_componentehardwares.php
// Descripción :
// Gestiona el mantenimiento de la tabla de hardwares
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/TomaDato.php");
include_once("../includes/constantes.php");
include_once("../includes/opciones.php");
include_once("./relaciones/hardwares_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idhardware=0;
$descripcion="";
$idtipohardware=0;
$grupoid=0;
$urlimgth=""; // Url de la imagen del tipo de hardware al que pertenece el componente
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["idhardware"])) $idhardware=$_POST["idhardware"];
if (isset($_POST["descripcion"])) $descripcion=$_POST["descripcion"];
if (isset($_POST["idtipohardware"])) $idtipohardware=$_POST["idtipohardware"];
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["identificador"])) $idhardware=$_POST["identificador"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
if($opcion!=$op_movida){
echo '<HTML>';
echo '<HEAD>';
echo ' <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
echo '<BODY>';
echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
echo ' <SCRIPT language="javascript" src="../jscripts/propiedades_componentehardwares.js"></SCRIPT>';
echo '<SCRIPT language="javascript">'.chr(13);
if ($resul){
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
}
}
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_componentehardwares";
break;
case $op_modificacion:
$literal="resultado_modificar_componentehardwares";
break;
case $op_eliminacion :
$literal="resultado_eliminar_componentehardwares";
break;
case $op_movida :
$literal="resultado_mover";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idhardware.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$descripcion."');".chr(13);
}
else
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idhardware.")";
if($opcion!=$op_movida){
echo ' </SCRIPT>';
echo '</BODY> ';
echo '</HTML>';
}
/**************************************************************************************************************************************************
Inserta, modifica o elimina datos en la tabla hardwares
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idcentro;
global $idhardware;
global $descripcion;
global $idtipohardware;
global $grupoid;
global $urlimgth;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $op_movida;
global $tablanodo;
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@idhardware",$idhardware,1);
$cmd->CreaParametro("@descripcion",$descripcion,0);
$cmd->CreaParametro("@idtipohardware",$idtipohardware,1);
$cmd->CreaParametro("@grupoid",$grupoid,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO hardwares (descripcion,idtipohardware,idcentro,grupoid) VALUES (@descripcion,@idtipohardware,@idcentro,@grupoid)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idhardware=$cmd->Autonumerico();
$arbolXML=SubarbolXML_ComponenteHardwares($cmd,$idhardware,$descripcion,$idtipohardware);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE hardwares SET descripcion=@descripcion,idtipohardware=@idtipohardware WHERE idhardware=@idhardware";
$resul=$cmd->Ejecutar();
if ($resul) // Toma la imagen del tipo de componente hardware
$urlimgth=TomaDato($cmd,0,'tipohardwares',$idtipohardware,'idtipohardware','urlimg');
break;
case $op_eliminacion :
$resul=EliminaHardwares($cmd,$idhardware,"idhardware");
break;
case $op_movida :
$cmd->texto="UPDATE hardwares SET grupoid=@grupoid WHERE idhardware=@idhardware";
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_ComponenteHardwares($cmd,$idhardware,$descripcion,$idtipohardware){
global $LITAMBITO_COMPONENTESHARD;
$urlimg=TomaDato($cmd,0,'tipohardwares',$idtipohardware,'idtipohardware','urlimg');
$cadenaXML='<COMPONENTEHARDWARES';
// Atributos
if (!empty($urlimg))
$cadenaXML.=' imagenodo="'.$urlimg.'"';
else
$cadenaXML.=' imagenodo="../images/iconos/confihard.gif"';
$cadenaXML.=' infonodo="'.$descripcion.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_COMPONENTESHARD.'-'.$idhardware;
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_COMPONENTESHARD."'" .')"';
$cadenaXML.='>';
$cadenaXML.='</COMPONENTEHARDWARES>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,173 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_componentesoftwares.php
// Descripción :
// Gestiona el mantenimiento de la tabla de softwares
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/TomaDato.php");
include_once("../includes/constantes.php");
include_once("../includes/opciones.php");
include_once("./relaciones/softwares_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idsoftware=0;
$descripcion="";
$idtiposoftware=0;
$idtiposo=0;
$grupoid=0;
$urlimgth=""; // Url de la imagen del tipo de software al que pertenece el componente
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["idsoftware"])) $idsoftware=$_POST["idsoftware"];
if (isset($_POST["descripcion"])) $descripcion=$_POST["descripcion"];
if (isset($_POST["idtiposoftware"])) $idtiposoftware=$_POST["idtiposoftware"];
if (isset($_POST["idtiposo"])) $idtiposo=$_POST["idtiposo"];
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["identificador"])) $idsoftware=$_POST["identificador"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
if($opcion!=$op_movida){
echo '<HTML>';
echo '<HEAD>';
echo ' <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
echo '<BODY>';
echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
echo ' <SCRIPT language="javascript" src="../jscripts/propiedades_componentesoftwares.js"></SCRIPT>';
echo '<SCRIPT language="javascript">'.chr(13);
if ($resul){
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
}
}
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_componentesoftwares";
break;
case $op_modificacion:
$literal="resultado_modificar_componentesoftwares";
break;
case $op_eliminacion :
$literal="resultado_eliminar_componentesoftwares";
break;
case $op_movida :
$literal="resultado_mover";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idsoftware.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$descripcion."');".chr(13);
}
else
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idsoftware.")";
if($opcion!=$op_movida){
echo ' </SCRIPT>';
echo '</BODY> ';
echo '</HTML>';
}
/**************************************************************************************************************************************************
Inserta, modifica o elimina datos en la tabla softwares
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idcentro;
global $idsoftware;
global $descripcion;
global $idtiposoftware;
global $idtiposo;
global $grupoid;
global $urlimgth;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $op_movida;
global $tablanodo;
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@idsoftware",$idsoftware,1);
$cmd->CreaParametro("@descripcion",$descripcion,0);
$cmd->CreaParametro("@idtiposoftware",$idtiposoftware,1);
$cmd->CreaParametro("@idtiposo",$idtiposo,1);
$cmd->CreaParametro("@grupoid",$grupoid,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO softwares (descripcion,idtiposoftware,idtiposo,idcentro,grupoid) VALUES (@descripcion,@idtiposoftware,@idtiposo,@idcentro,@grupoid)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idsoftware=$cmd->Autonumerico();
$arbolXML=SubarbolXML_Componentesoftwares($cmd,$idsoftware,$descripcion,$idtiposoftware);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE softwares SET descripcion=@descripcion,idtiposoftware=@idtiposoftware,idtiposo=@idtiposo WHERE idsoftware=@idsoftware";
$resul=$cmd->Ejecutar();
if ($resul) // Toma la imagen del tipo de componente software
$urlimgth=TomaDato($cmd,0,'tiposoftwares',$idtiposoftware,'idtiposoftware','urlimg');
break;
case $op_eliminacion :
$resul=EliminaSoftwares($cmd,$idsoftware,"idsoftware");
break;
case $op_movida :
$cmd->texto="UPDATE softwares SET grupoid=@grupoid WHERE idsoftware=@idsoftware";
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_Componentesoftwares($cmd,$idsoftware,$descripcion,$idtiposoftware){
global $LITAMBITO_COMPONENTESSOFT;
$urlimg=TomaDato($cmd,0,'tiposoftwares',$idtiposoftware,'idtiposoftware','urlimg');
$cadenaXML='<COMPONENTESOFTWARES';
// Atributos
if (!empty($urlimg))
$cadenaXML.=' imagenodo="'.$urlimg.'"';
else
$cadenaXML.=' imagenodo="../images/iconos/confisoft.gif"';
$cadenaXML.=' infonodo="'.$descripcion.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_COMPONENTESSOFT.'-'.$idsoftware;
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_COMPONENTESSOFT."'" .')"';
$cadenaXML.='>';
$cadenaXML.='</COMPONENTESOFTWARES>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,300 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Mayo-2005
// Nombre del fichero: gestor_procedimientos.php
// Descripción :
// Gestiona la ejecución de procedimientos
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../clases/SockHidra.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("../includes/comunes.php");
include_once("../includes/RecopilaIpesMacs.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idprocedimiento=0;
$idtarea=0;
$ambito=0;
$idambito=0;
$swc=0; // switch de cliente, esta pagina la llama el cliente a través del browser
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"];
if (isset($_POST["idprocedimiento"])) $idprocedimiento=$_POST["idprocedimiento"];
if (isset($_POST["descriprocedimiento"])) $descriprocedimiento=$_POST["descriprocedimiento"];
if (isset($_POST["ambito"])) $ambito=$_POST["ambito"];
if (isset($_POST["idambito"])) $idambito=$_POST["idambito"];
if (isset($_POST["idtarea"])) $idtarea=$_POST["idtarea"];
if (isset($_POST["descritarea"])) $descritarea=$_POST["descritarea"];
if (isset($_GET["opcion"])) $opcion=$_GET["opcion"];
if (isset($_GET["idprocedimiento"])) $idprocedimiento=$_GET["idprocedimiento"];
if (isset($_GET["descriprocedimiento"]))$descriprocedimiento=$_GET["descriprocedimiento"];
if (isset($_GET["ambito"])) $ambito=$_GET["ambito"];
if (isset($_GET["idambito"])) $idambito=$_GET["idambito"];
if (isset($_GET["idtarea"])) $idtarea=$_GET["idtarea"];
if (isset($_GET["descritarea"])) $descritarea=$_GET["descritarea"];
if (isset($_GET["swc"])) $swc=$_GET["swc"]; // Switch que indica que la página la solicita un cliente a través del browser
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$shidra=new SockHidra($servidorhidra,$hidraport);
$cadenaid="";
$cadenaip="";
$cadenamac="";
$sesion=0;
$vez=0;
if(opcion!=$EJECUCION_TAREA)
RecopilaIpesMacs($cmd,$ambito,$idambito); // Recopila Ipes del ámbito
if(opcion!=$EJECUCION_AUTOEXEC){
//Creación parametros para inserción en tabla acciones
$sesion=time();
$cmd->CreaParametro("@tipoaccion",$opcion,1);
$cmd->CreaParametro("@idtipoaccion",0,1);
$cmd->CreaParametro("@descriaccion","",0);
$cmd->CreaParametro("@idordenador",0,1);
$cmd->CreaParametro("@ip","",0);
$cmd->CreaParametro("@sesion",$sesion,1);
$cmd->CreaParametro("@idcomando",0,1);
$cmd->CreaParametro("@parametros","",0);
$cmd->CreaParametro("@fechahorareg","",0);
$cmd->CreaParametro("@fechahorafin","",0);
$cmd->CreaParametro("@estado",$ACCION_INICIADA,1);
$cmd->CreaParametro("@resultado",$ACCION_SINRESULTADO,1);
$cmd->CreaParametro("@descrinotificacion","",0);
$cmd->CreaParametro("@idprocedimiento",0,1);
$cmd->CreaParametro("@idtarea",0,1);
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@ambito",0,1);
$cmd->CreaParametro("@idambito",0,1);
$cmd->CreaParametro("@restrambito","",0);
}
switch($opcion){
case $EJECUCION_AUTOEXEC:
$resul=actualizaAutoexec($idprocedimiento);
$literal="resultado_gestion_procedimiento";
break;
case $EJECUCION_PROCEDIMIENTO:
$cmd->ParamSetValor("@idtipoaccion",$idprocedimiento);
$cmd->ParamSetValor("@descriaccion",$descriprocedimiento);
$resul=ejecucionProcedimiento($idprocedimiento,$ambito,$idambito);
$literal="resultado_gestion_procedimiento";
break;
case $EJECUCION_TAREA:
$cmd->ParamSetValor("@idtipoaccion",$idtarea);
$cmd->ParamSetValor("@descriaccion",$descritarea);
$cmd->ParamSetValor("@idtarea",$idtarea);
$resul=ejecucionTarea($idtarea);
$literal="resultado_ejecutar_tareas";
break;
}
$cmd->Conexion->Cerrar();
}
if ($resul){
if(empty($swc)){
echo $literal."(1,'".$cmd->DescripUltimoError()."');".chr(13);
}
else{
echo '<SCRIPT language="javascript">'.chr(13);
echo 'alert("El item se ha ejecutado correctamente");'.chr(13);
echo 'var wurl="../varios/menucliente.php?iph='.trim($_SESSION["ogCliente"]).'";';
echo 'history.back();';
echo '</SCRIPT>';
}
}
else{
if(empty($swc)){
echo $literal."(0,'".$cmd->DescripUltimoError()."')";
}
else{
echo '<SCRIPT language="javascript">'.chr(13);
echo 'alert("***ATENCIÓN:El item NO se ha podido ejecutar");'.chr(13);
echo 'var wurl="../varios/menucliente.php?iph='.trim($_SESSION["ogCliente"]).'";';
echo 'location.href=wurl;';
echo '</SCRIPT>';
}
}
//********************************************************************************************************
//
// Incorpora un procedimiento como autoexec
//________________________________________________________________________________________________________
function actualizaAutoexec($idprocedimiento)
{
global $cadenaid;
global $cmd;
$cmd->texto="UPDATE ordenadores SET idproautoexec=".$idprocedimiento." WHERE idordenador IN (".$cadenaid.")";
$resul=$cmd->Ejecutar();
return(resul);
}
//________________________________________________________________________________________________________
//
// Ejecuta un procedimiento: lo registra en acciones y lo envía por la red
//________________________________________________________________________________________________________
function ejecucionProcedimiento($idprocedimiento,$ambito,$idambito)
{
return(recorreProcedimientos($idprocedimiento,$ambito,$idambito));
}
//________________________________________________________________________________________________________
//
// Ejecuta una tarea: la registra en acciones y la envía por la red
//________________________________________________________________________________________________________
function ejecucionTarea($idtarea)
{
return(recorreTareas($idtarea));
}
//________________________________________________________________________________________________________
function recorreProcedimientos($idprocedimiento,$ambito,$idambito)
{
global $cmd;
$cmd->texto="SELECT idcomando,procedimientoid,parametros
FROM procedimientos_acciones
WHERE idprocedimiento=".$idprocedimiento."
ORDER BY orden";
//echo $cmd->texto;
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return(false); // Error al abrir recordset
while (!$rs->EOF){
$procedimientoid=$rs->campos["procedimientoid"];
if($procedimientoid>0){ // Procedimiento recursivo
if(!recorreProcedimientos($procedimientoid,$ambito,$idambito)){
return(false);
}
}
else{
$parametros=$rs->campos["parametros"];
$idcomando=$rs->campos["idcomando"];
if(!insertaComando($idcomando,$parametros,$idprocedimiento,$ambito,$idambito))
return(false);
}
$rs->Siguiente();
}
return(true);
}
//________________________________________________________________________________________________________
function recorreTareas($idtarea)
{
global $cadenaid;
global $cadenaip;
global $cadenamac;
global $cmd;
$cmd->texto="SELECT tareas_acciones.orden,tareas_acciones.idprocedimiento,tareas_acciones.tareaid,
tareas.ambito,tareas.idambito,tareas.restrambito
FROM tareas
INNER JOIN tareas_acciones ON tareas_acciones.idtarea=tareas.idtarea
WHERE tareas_acciones.idtarea=".$idtarea."
ORDER BY tareas_acciones.orden";
//echo $cmd->texto;
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return(false); // Error al abrir recordset
while (!$rs->EOF){
$tareaid=$rs->campos["tareaid"];
if($tareaid>0){ // Tarea recursiva
if(!recorreTareas($tareaid)){
return(false);
}
}
else{
$ambito=$rs->campos["ambito"];
$idambito=$rs->campos["idambito"];
if($ambito==0 && $idambito==0){ // Ámbito restringido
$idambito=$rs->campos["restrambito"];
}
RecopilaIpesMacs($cmd,$ambito,$idambito); // Recopila Ipes del ámbito
$idprocedimiento=$rs->campos["idprocedimiento"];
if(!recorreProcedimientos($idprocedimiento,$ambito,$idambito))
return(false);
}
$rs->Siguiente();
}
return(true);
}
//________________________________________________________________________________________________________
//
// Registra un procedimiento para un ambito concreto
//________________________________________________________________________________________________________
function insertaComando($idcomando,$parametros,$idprocedimiento,$ambito,$idambito)
{
global $cadenaid;
global $cadenaip;
global $cmd;
global $vez;
if($ambito==0){ // Ambito restringido a un subconjuto de ordenadores con formato (idordenador1,idordenador2,etc)
$cmd->ParamSetValor("@restrambito",$idambito);
$idambito=0;
}
$cmd->ParamSetValor("@idcomando",$idcomando);
$cmd->ParamSetValor("@idprocedimiento",$idprocedimiento);
$cmd->ParamSetValor("@parametros",$parametros);
$cmd->ParamSetValor("@fechahorareg",date("y/m/d H:i:s"));
$cmd->ParamSetValor("@ambito",$ambito);
$cmd->ParamSetValor("@idambito",$idambito);
if(strlen($cadenaip)==0) return(true);
$auxID=split(",",$cadenaid);
$auxIP=split(";",$cadenaip);
for ($i=0;$i<sizeof($auxID);$i++){
$cmd->ParamSetValor("@idordenador",$auxID[$i]);
$cmd->ParamSetValor("@ip",$auxIP[$i]);
$cmd->texto="INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,restrambito,idprocedimiento,idtarea,idcentro)
VALUES (@idordenador,@tipoaccion,@idtipoaccion,@descriaccion,@ip,@sesion,@idcomando,@parametros,@fechahorareg,@estado,@resultado,@ambito,@idambito,@restrambito,@idprocedimiento,@idtarea,@idcentro)";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if(!$resul) return(false);
/* Sólo envía por la red el primer comando, el resto, si hubiera,
lo encontrará el cliente a través de los comandos pendientes */
if(empty($vez))
if(!enviaComando($parametros)) return(false);
$vez++;
}
return(true);
}
//________________________________________________________________________________________________________
//
// Envia un procedimiento a un grupo de ordenadores a través de la red
//________________________________________________________________________________________________________
function enviaComando($parametros)
{
global $cadenaid;
global $cadenaip;
global $cadenamac;
global $sesion;
global $servidorhidra;
global $hidraport;
global $LONCABECERA;
global $shidra;
// Envio al servidor
$aplicacion=chr(13)."ido=".$cadenaid.chr(13)."mac=".$cadenamac.chr(13)."iph=".$cadenaip.chr(13);
$acciones=chr(13)."ids=".$sesion.chr(13); // Para seguimiento
if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
$parametros.=$aplicacion;
$parametros.=$acciones;
$shidra->envia_comando($parametros);
$trama=$shidra->recibe_respuesta();
$shidra->desconectar();
}
return(true);
}
?>

View File

@ -0,0 +1,163 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_entidades.php
// Descripción :
// Gestiona el mantenimiento de la tabla de entidades
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("./relaciones/entidades_eliminacion.php");
include_once("../includes/opciones.php");
include_once("./relaciones/centros_eliminacion.php");
include_once("./relaciones/aulas_eliminacion.php");
include_once("./relaciones/ordenadores_eliminacion.php");
include_once("./relaciones/gruposordenadores_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$grupoid=0;
$iduniversidad=0;
$identidad=0;
$nombreentidad="";
$comentarios="";
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["iduniversidad"])) $iduniversidad=$_POST["iduniversidad"];
if (isset($_POST["identidad"])) $identidad=$_POST["identidad"];
if (isset($_POST["identificador"])) $identidad=$_POST["identificador"];
if (isset($_POST["nombreentidad"])) $nombreentidad=$_POST["nombreentidad"];
if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
if($opcion!=$op_movida){
echo '<HTML>';
echo '<HEAD>';
echo ' <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
echo '<BODY>';
echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
echo ' <SCRIPT language="javascript" src="../jscripts/propiedades_entidades.js"></SCRIPT>';
echo '<SCRIPT language="javascript">'.chr(13);
if ($resul){
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
}
}
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_entidades";
break;
case $op_modificacion:
$literal="resultado_modificar_entidades";
break;
case $op_eliminacion :
$literal="resultado_eliminar_entidades";
break;
case $op_movida :
$literal="resultado_cambiar_entidades";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$identidad.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreentidad."');".chr(13);
}
else
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$identidad.")";
if($opcion!=$op_movida){
echo ' </SCRIPT>';
echo '</BODY> ';
echo '</HTML>';
}
/*________________________________________________________________________________________________________
Inserta, modifica o elimina datos en la tabla entidades
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $identidad;
global $nombreentidad;
global $comentarios;
global $grupoid;
global $iduniversidad;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $op_movida;
global $tablanodo;
$cmd->CreaParametro("@grupoid",$grupoid,1);
$cmd->CreaParametro("@iduniversidad",$iduniversidad,1);
$cmd->CreaParametro("@identidad",$identidad,1);
$cmd->CreaParametro("@nombreentidad",$nombreentidad,0);
$cmd->CreaParametro("@comentarios",$comentarios,0);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO entidades(nombreentidad,comentarios,iduniversidad,grupoid) VALUES (@nombreentidad,@comentarios,@iduniversidad,@grupoid)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$identidad=$cmd->Autonumerico();
$arbolXML=SubarbolXML_entidades($identidad,$nombreentidad);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE entidades SET nombreentidad=@nombreentidad,comentarios=@comentarios WHERE identidad=@identidad";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$resul=EliminaEntidad($cmd,$identidad,"identidad");// Eliminación en cascada
break;
case $op_movida :
$cmd->texto="UPDATE entidades SET iduniversidad=@iduniversidad, grupoid=@grupoid WHERE identidad=@identidad";
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_entidades($identidad,$nombreentidad){
global $LITAMBITO_ENTIDADES;
$cadenaXML='<ENTIDAD';
// Atributos
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_ENTIDADES."'" .')"';
$cadenaXML.=' imagenodo="../images/iconos/entidades.gif"';
$cadenaXML.=' infonodo="'.$nombreentidad.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_ENTIDADES.'-'.$identidad;
$cadenaXML.='></ENTIDAD>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,86 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_entornos.php
// Descripción :
// Gestiona el mantenimiento de la tabla de entornos
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/CreaComando.php");
include_once("../includes/opciones.php");
//________________________________________________________________________________________________________
$identorno=0;
$ipserveradm="";
$portserveradm=0;
$protoclonacion="";
if (isset($_POST["ipserveradm"])) $ipserveradm=$_POST["ipserveradm"];
if (isset($_POST["portserveradm"])) $portserveradm=$_POST["portserveradm"];
if (isset($_POST["protoclonacion"])) $protoclonacion=$_POST["protoclonacion"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
// *************************************************************************************************************************************************
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<BODY>
<SCRIPT language="javascript" src="../jscripts/propiedades_entornos.js"></SCRIPT>
<? echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/comunes_'.$idioma.'.js"></SCRIPT>'?>
<?
$literal="resultado_modificar_entornos";
if ($resul){
echo '<SCRIPT language="javascript">'.chr(13);
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$identorno.");".chr(13);
echo '</SCRIPT>';
}
else{
echo '<SCRIPT language="javascript">';
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$identorno.")";
echo '</SCRIPT>';
}
?>
</BODY>
</HTML>
<?
/**************************************************************************************************************************************************
Inserta, modifica o elimina datos en la tabla entornos
________________________________________________________________________________________________________*/
function Gestiona()
{
global $cmd;
global $identorno;
global $ipserveradm;
global $portserveradm;
global $protoclonacion;
$cmd->CreaParametro("@identorno",$identorno,1);
$cmd->CreaParametro("@ipserveradm",$ipserveradm,0);
$cmd->CreaParametro("@portserveradm",$portserveradm,1);
$cmd->CreaParametro("@protoclonacion",$protoclonacion,0);
$cmd->texto="UPDATE entornos SET ipserveradm=@ipserveradm,portserveradm=@portserveradm,protoclonacion=@protoclonacion";
$resul=$cmd->Ejecutar();
return($resul);
}
?>

View File

@ -0,0 +1,273 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_grupos.php
// Descripción :
// Gestiona el mantenimiento de la tabla de grupos
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("./relaciones/aulas_eliminacion.php");
include_once("./relaciones/ordenadores_eliminacion.php");
include_once("./relaciones/gruposordenadores_eliminacion.php");
include_once("./relaciones/procedimientos_eliminacion.php");
include_once("./relaciones/tareas_eliminacion.php");
include_once("./relaciones/trabajos_eliminacion.php");
include_once("./relaciones/imagenes_eliminacion.php");
include_once("./relaciones/hardwares_eliminacion.php");
include_once("./relaciones/perfileshard_eliminacion.php");
include_once("./relaciones/softwares_eliminacion.php");
include_once("./relaciones/perfilessoft_eliminacion.php");
include_once("./relaciones/incrementales_eliminacion.php");
include_once("./relaciones/repositorios_eliminacion.php");
include_once("./relaciones/menus_eliminacion.php");
include_once("./relaciones/reservas_eliminacion.php");
include_once("./relaciones/entidades_eliminacion.php");
include_once("./relaciones/centros_eliminacion.php");
include_once("../includes/opciones.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$nombregrupo="";
$grupoid=0;
$idgrupo=0;
$tipo=0;
$literaltipo="";
$iduniversidad=0;
$comentarios="";
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["nombregrupo"])) $nombregrupo=$_POST["nombregrupo"];
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["idgrupo"])) $idgrupo=$_POST["idgrupo"];
if (isset($_POST["tipo"])) $tipo=$_POST["tipo"];
if (isset($_POST["literaltipo"])) $literaltipo=$_POST["literaltipo"];
if (isset($_POST["iduniversidad"])) $iduniversidad=$_POST["iduniversidad"];
if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
// *************************************************************************************************************************************************
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<BODY>
<SCRIPT language="javascript" src="../jscripts/propiedades_grupos.js"></SCRIPT>
<?
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_grupos";
break;
case $op_modificacion:
$literal="resultado_modificar_grupos";
break;
case $op_eliminacion :
$literal="resultado_eliminar_grupos";
break;
default:
break;
}
echo '<p><span id="arbol_nodo">'.$tablanodo.'</span></p>';
if ($resul){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'var o=document.getElementById("arbol_nodo");'.chr(13);
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idgrupo.",o.innerHTML);";
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombregrupo."');";
echo '</SCRIPT>';
}
else{
echo '<SCRIPT language="javascript">';
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idgrupo.")";
echo '</SCRIPT>';
}
?>
</BODY>
</HTML>
<?
/**************************************************************************************************************************************************
Inserta, modifica o elimina datos en la tabla grupos
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idcentro;
global $nombregrupo;
global $grupoid;
global $idgrupo;
global $tipo;
global $literaltipo;
global $iduniversidad;
global $comentarios;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $tablanodo;
if($iduniversidad) $idcentro=0; // Administración
$cmd->CreaParametro("@nombregrupo",$nombregrupo,0);
$cmd->CreaParametro("@grupoid",$grupoid,1);
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@idgrupo",$idgrupo,1);
$cmd->CreaParametro("@tipo",$tipo,1);
$cmd->CreaParametro("@iduniversidad",$iduniversidad,1);
$cmd->CreaParametro("@comentarios",$comentarios,0);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO grupos(nombregrupo,idcentro,grupoid,tipo,iduniversidad,comentarios) VALUES (@nombregrupo,@idcentro,@grupoid,@tipo,@iduniversidad,@comentarios)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idgrupo=$cmd->Autonumerico();
$arbolXML=SubarbolXML_grupos($idgrupo,$nombregrupo,$literaltipo);
$baseurlimg="../images/signos";
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaNodo(0);
}
break;
case $op_modificacion:
$cmd->texto="UPDATE grupos SET nombregrupo=@nombregrupo,comentarios=@comentarios WHERE idgrupo=@idgrupo";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$resul=EliminaGrupos($cmd,$idgrupo,"idgrupo",$literaltipo);// Eliminación en cascada
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_grupos($idgrupo,$nombregrupo,$literaltipo){
$cadenaXML='<GRUPOS';
// Atributos
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$literaltipo."'" .')"';
$cadenaXML.=' imagenodo="../images/iconos/carpeta.gif"';
$cadenaXML.=' infonodo="'.$nombregrupo.'"';
$cadenaXML.=' nodoid='.$literaltipo.'-'.$idgrupo;
$cadenaXML.='>';
$cadenaXML.='</GRUPOS>';
return($cadenaXML);
}
/*________________________________________________________________________________________________________
Elimina en cascada grupos
Parametros:
- cmd: Un comando ya operativo (con conexión abierta)
- idgrupo: El identificador del grupo
- literaltipo: El literal del grupo
- literaltipo: El literal del grupo
- swid: Indica 0= El identificador es tipo alfanumérico 1= EI identificador es tipo numérico ( valor por defecto)
________________________________________________________________________________________________________*/
function EliminaGrupos($cmd,$identificador,$nombreid,$literaltipo,$swid=1){
if (empty($identificador)) return(true);
global $LITAMBITO_GRUPOSAULAS ;
global $LITAMBITO_GRUPOSIMAGENES ;
global $LITAMBITO_GRUPOSPROCEDIMIENTOS ;
global $LITAMBITO_GRUPOSTAREAS ;
global $LITAMBITO_GRUPOSTRABAJOS ;
global $LITAMBITO_GRUPOSCOMPONENTESHARD ;
global $LITAMBITO_GRUPOSCOMPONENTESSOFT ;
global $LITAMBITO_GRUPOSPERFILESHARD ;
global $LITAMBITO_GRUPOSPERFILESSOFT ;
global $LITAMBITO_GRUPOSSOFTINCREMENTAL ;
global $LITAMBITO_GRUPOSMENUS ;
global $LITAMBITO_GRUPOSREPOSITORIOS ;
global $LITAMBITO_GRUPOSRESERVAS ;
global $LITAMBITO_GRUPOSENTIDADES ;
if($swid==0)
$cmd->texto="SELECT idgrupo FROM grupos WHERE ".$nombreid."='".$identificador."'";
else
$cmd->texto='SELECT idgrupo FROM grupos WHERE '.$nombreid.'='.$identificador;
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return(false); // Error al abrir recordset
if ($rs->numeroderegistros==0) return(true);
$rs->Primero();
while (!$rs->EOF){
$resul=EliminaGrupos($cmd,$rs->campos["idgrupo"],"grupoid",$literaltipo);
if ($resul){
switch($literaltipo){
case $LITAMBITO_GRUPOSAULAS :
$resul=EliminaAulas($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSPROCEDIMIENTOS :
$resul=EliminaProcedimientos($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSTAREAS :
$resul=EliminaTareas($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSTRABAJOS :
$resul=EliminaTrabajos($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSIMAGENES :
$resul=EliminaImagenes($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSCOMPONENTESHARD :
$resul=EliminaHardwares($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSCOMPONENTESSOFT :
$resul=EliminaSoftwares($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSPERFILESHARD :
$resul=EliminaPerfileshard($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSPERFILESSOFT :
$resul=EliminaPerfilessoft($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSSOFTINCREMENTAL :
$resul=EliminaSoftincremental($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSREPOSITORIOS :
$resul=Eliminarepositorios($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSMENUS :
$resul=EliminaMenus($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSRESERVAS :
$resul=EliminaReservas($cmd,$rs->campos["idgrupo"],"grupoid");
break;
case $LITAMBITO_GRUPOSENTIDADES :
$resul=EliminaEntidad($cmd,$rs->campos["idgrupo"],"grupoid");
break;
default:
$resul=false;
}
}
if (!$resul){
$rs->Cerrar();
return(false);
}
$rs->Siguiente();
}
if($swid==0)
$cmd->texto="DELETE FROM grupos WHERE ".$nombreid."='".$identificador."'";
else
$cmd->texto='DELETE FROM grupos WHERE '.$nombreid.'='.$identificador;
$resul=$cmd->Ejecutar();
return($resul);
}
?>

View File

@ -0,0 +1,165 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_gruposordenadores.php
// Descripción :
// Gestiona el mantenimiento de la tabla de gruposordenadores
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("./relaciones/ordenadores_eliminacion.php");
include_once("../includes/opciones.php");
include_once("./relaciones/gruposordenadores_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$nombregrupoordenador="";
$grupoid=0;
$idgrupo=0;
$idaula=0;
$comentarios="";
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["nombregrupo"])) $nombregrupoordenador=$_POST["nombregrupo"];
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["idgrupo"])) $idgrupo=$_POST["idgrupo"];
if (isset($_POST["idaula"])) $idaula=$_POST["idaula"];
if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
if ($idaula==0)
$idaula=toma_aula($cmd,$grupoid);
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
// *************************************************************************************************************************************************
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<BODY>
<SCRIPT language="javascript" src="../jscripts/propiedades_grupos.js"></SCRIPT>
<?
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_grupos";
break;
case $op_modificacion:
$literal="resultado_modificar_grupos";
break;
case $op_eliminacion :
$literal="resultado_eliminar_grupos";
break;
default:
break;
}
echo '<p><span id="arbol_nodo">'.$tablanodo.'</span></p>';
if ($resul){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idgrupo.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombregrupoordenador."');".chr(13);
echo '</SCRIPT>';
}
else{
echo '<SCRIPT language="javascript">';
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idgrupo.")";
echo '</SCRIPT>';
}
?>
</BODY>
</HTML>
<?
/**************************************************************************************************************************************************
Busca identificador del aula cuando el grupo a crear está pertenece a otro grupo
________________________________________________________________________________________________________*/
function toma_aula($cmd,$idgrupo){
$rs=new Recordset;
$cmd->texto="SELECT idaula FROM gruposordenadores WHERE idgrupo=".$idgrupo;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return(0); // Error al abrir recordset
$rs->Primero();
if (!$rs->EOF)
return($rs->campos["idaula"]);
else
return(0);
}
/*________________________________________________________________________________________________________
Inserta, modifica o elimina datos en la tabla gruposordenadores
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idaula;
global $nombregrupoordenador;
global $grupoid;
global $idgrupo;
global $comentarios;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $tablanodo;
$cmd->CreaParametro("@nombregrupoordenador",$nombregrupoordenador,0);
$cmd->CreaParametro("@grupoid",$grupoid,1);
$cmd->CreaParametro("@idaula",$idaula,1);
$cmd->CreaParametro("@idgrupo",$idgrupo,1);
$cmd->CreaParametro("@comentarios",$comentarios,0);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO gruposordenadores(nombregrupoordenador,idaula,grupoid,comentarios) VALUES (@nombregrupoordenador,@idaula,@grupoid,@comentarios)";
$resul=$cmd->Ejecutar();
echo $cmd->texto;
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idgrupo=$cmd->Autonumerico();
$arbolXML=SubarbolXML_grupos_ordenadores($idgrupo,$nombregrupoordenador);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE gruposordenadores SET nombregrupoordenador=@nombregrupoordenador,comentarios=@comentarios WHERE idgrupo=@idgrupo";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$resul=EliminaGruposOrdenadores($cmd,$idgrupo,"idgrupo");
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo grupo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_grupos_ordenadores($idgrupo,$nombregrupoordenador){
global $LITAMBITO_GRUPOSORDENADORES;
$cadenaXML='<GRUPOSORDENADORES ';
// Atributos
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_GRUPOSORDENADORES."'" .')"';
$cadenaXML.=' imagenodo="../images/iconos/carpeta.gif"';
$cadenaXML.=' infonodo="'.$nombregrupoordenador.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_GRUPOSORDENADORES.'-'.$idgrupo;
$cadenaXML.='>';
$cadenaXML.='</GRUPOSORDENADORES>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,182 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_imagenes.php
// Descripción :
// Gestiona el mantenimiento de la tabla de imagenes
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("../includes/opciones.php");
include_once("./relaciones/imagenes_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idimagen=0;
$nombreca="";
$descripcion="";
$grupoid=0;
$idperfilsoft=0;
$comentarios="";
$numpar=0;
$codpar=0;
$idrepositorio=0;
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["idimagen"])) $idimagen=$_POST["idimagen"];
if (isset($_POST["nombreca"])) $nombreca=$_POST["nombreca"];
if (isset($_POST["descripcion"])) $descripcion=$_POST["descripcion"];
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["idperfilsoft"])) $idperfilsoft=$_POST["idperfilsoft"];
if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"];
if (isset($_POST["identificador"])) $idimagen=$_POST["identificador"];
if (isset($_POST["numpar"])) $numpar=$_POST["numpar"];
if (isset($_POST["codpar"])) $codpar=$_POST["codpar"];
if (isset($_POST["idrepositorio"])) $idrepositorio=$_POST["idrepositorio"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
if($opcion!=$op_movida){
echo '<HTML>';
echo '<HEAD>';
echo ' <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
echo '<BODY>';
echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
echo ' <SCRIPT language="javascript" src="../jscripts/propiedades_imagenes.js"></SCRIPT>';
echo '<SCRIPT language="javascript">'.chr(13);
if ($resul){
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
}
}
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_imagenes";
break;
case $op_modificacion:
$literal="resultado_modificar_imagenes";
break;
case $op_eliminacion :
$literal="resultado_eliminar_imagenes";
break;
case $op_movida :
$literal="resultado_mover";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idimagen.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$descripcion."');".chr(13);
}
else
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idimagen.")";
if($opcion!=$op_movida){
echo ' </SCRIPT>';
echo '</BODY> ';
echo '</HTML>';
}
/**************************************************************************************************************************************************
Inserta, modifica o elimina datos en la tabla imagenes
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idcentro;
global $idimagen;
global $nombreca;
global $descripcion;
global $grupoid;
global $comentarios;
global $numpar;
global $codpar;
global $idrepositorio;
global $idperfilsoft;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $op_movida;
global $tablanodo;
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@idimagen",$idimagen,1);
$cmd->CreaParametro("@nombreca",$nombreca,0);
$cmd->CreaParametro("@descripcion",$descripcion,0);
$cmd->CreaParametro("@grupoid",$grupoid,1);
$cmd->CreaParametro("@idperfilsoft",$idperfilsoft,1);
$cmd->CreaParametro("@comentarios",$comentarios,0);
$cmd->CreaParametro("@numpar",$numpar,1);
$cmd->CreaParametro("@codpar",$codpar,1);
$cmd->CreaParametro("@idrepositorio",$idrepositorio,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO imagenes (nombreca,descripcion,idperfilsoft,comentarios,numpar,codpar,idrepositorio,idcentro,grupoid)
VALUES (@nombreca,@descripcion,@idperfilsoft,@comentarios,@numpar,@codpar,@idrepositorio,@idcentro,@grupoid)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idimagen=$cmd->Autonumerico();
$arbolXML=SubarbolXML_imagenes($idimagen,$descripcion);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE imagenes SET nombreca=@nombreca,descripcion=@descripcion,idperfilsoft=@idperfilsoft,
comentarios=@comentarios,numpar=@numpar,codpar=@codpar,idrepositorio=@idrepositorio
WHERE idimagen=@idimagen";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$resul=EliminaImagenes($cmd,$idimagen,"idimagen");// Eliminación en cascada
break;
case $op_movida :
$cmd->texto="UPDATE imagenes SET grupoid=@grupoid WHERE idimagen=@idimagen";
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_imagenes($idimagen,$descripcion){
global $LITAMBITO_IMAGENES;
$cadenaXML='<IMAGEN';
// Atributos
$cadenaXML.=' imagenodo="../images/iconos/imagen.gif"';
$cadenaXML.=' infonodo="'.$descripcion.'"';
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_IMAGENES."'" .')"';
$cadenaXML.=' nodoid='.$LITAMBITO_IMAGENES.'-'.$idimagen;
$cadenaXML.='>';
$cadenaXML.='</IMAGEN>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,175 @@
<?
// *********************************************************************************************************
// Aplicaci<63>n WEB: ogAdmWebCon
// Autor: Jos<6F> Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_inclusionacciones.php
// Descripción :
// Gestiona el mantenimiento de la tabla de procedimientos_acciones y tareas_acciones
// ********************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
//________________________________________________________________________________________________________
$tipoaccion=0;
$idtipoaccion=0;
$altas="";
$bajas="";
$modificaciones="";
if (isset($_POST["tipoaccion"])) $tipoaccion=$_POST["tipoaccion"];
if (isset($_POST["idtipoaccion"])) $idtipoaccion=$_POST["idtipoaccion"];
if (isset($_POST["altas"])) $altas=$_POST["altas"]; // Recoge parametros
if (isset($_POST["bajas"])) $bajas=$_POST["bajas"];
if (isset($_POST["modificaciones"])) $modificaciones=$_POST["modificaciones"];
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
$literal="resultado_gestion_inclusionacciones";
if ($resul)
echo $literal."(1,'".$cmd->DescripUltimoError()."');";
else
echo $literal."(0,'".$cmd->DescripUltimoError()."');";
// *************************************************************************************************************************************************
function Gestiona()
{
global $cmd;
global $tipoaccion;
global $idtipoaccion;
global $altas;
global $bajas;
global $modificaciones;
global $AMBITO_PROCEDIMIENTOS;
global $AMBITO_TAREAS;
switch($tipoaccion){
case $AMBITO_PROCEDIMIENTOS:
$cmd->CreaParametro("@idprocedimientoaccion",0,1);
$cmd->CreaParametro("@idprocedimiento",0,1);
$cmd->CreaParametro("@orden",0,1);
$cmd->CreaParametro("@idcomando",0,1);
$cmd->CreaParametro("@parametros","",0);
$cmd->CreaParametro("@procedimientoid",0,1);
break;
case $AMBITO_TAREAS:
$cmd->CreaParametro("@idtareaaccion",0,1);
$cmd->CreaParametro("@idtarea",0,1);
$cmd->CreaParametro("@orden",0,1);
$cmd->CreaParametro("@idprocedimiento",0,1);
$cmd->CreaParametro("@tareaid",0,1);
break;
}
/* Altas */
if(!empty($altas)){
$altas=substr($altas,0,strlen($altas)-1); // Quita el último ";"
$tbAltas=split(";",$altas);
for($i=0;$i<sizeof($tbAltas);$i++){
/* Toma datos altas */
list($identificador,$orden,$ambito)=split(",",$tbAltas[$i]);
switch($tipoaccion){
case $AMBITO_PROCEDIMIENTOS:
$cmd->ParamSetValor("@idprocedimiento",$idtipoaccion);
$cmd->ParamSetValor("@orden",$orden);
$cmd->ParamSetValor("@procedimientoid",$identificador);
$cmd->texto="INSERT INTO procedimientos_acciones
(idprocedimiento,orden,idcomando,parametros,procedimientoid)
VALUES (@idprocedimiento,@orden,@idcomando,@parametros,@procedimientoid)";
break;
case $AMBITO_TAREAS:
switch($ambito){
case $AMBITO_TAREAS:
$cmd->ParamSetValor("@idtarea",$idtipoaccion);
$cmd->ParamSetValor("@orden",$orden);
$cmd->ParamSetValor("@tareaid",$identificador);
$cmd->ParamSetValor("@idprocedimiento",0);
$cmd->texto="INSERT INTO tareas_acciones
(idtarea,orden,idprocedimiento,tareaid)
VALUES (@idtarea,@orden,@idprocedimiento,@tareaid)";
break;
case $AMBITO_PROCEDIMIENTOS:
$cmd->ParamSetValor("@idtarea",$idtipoaccion);
$cmd->ParamSetValor("@orden",$orden);
$cmd->ParamSetValor("@tareaid",0);
$cmd->ParamSetValor("@idprocedimiento",$identificador);
$cmd->texto="INSERT INTO tareas_acciones
(idtarea,orden,idprocedimiento,tareaid)
VALUES (@idtarea,@orden,@idprocedimiento,@tareaid)";
break;
}
break;
}
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if(!$resul)
return(false);
}
}
/* Bajas */
if(!empty($bajas)){
$bajas=substr($bajas,0,strlen($bajas)-1); // Quita el último ";"
$tbBajas=split(";",$bajas);
for($i=0;$i<sizeof($tbBajas);$i++){
switch($tipoaccion){
case $AMBITO_PROCEDIMIENTOS:
list($idprocedimientoaccion)=split(",",$tbBajas[$i]);
$cmd->ParamSetValor("@idprocedimientoaccion",$idprocedimientoaccion);
$cmd->texto="DELETE FROM procedimientos_acciones
WHERE idprocedimientoaccion=@idprocedimientoaccion";
break;
case $AMBITO_TAREAS:
list($idtareaaccion)=split(",",$tbBajas[$i]);
$cmd->ParamSetValor("@idtareaaccion",$idtareaaccion);
$cmd->texto="DELETE FROM tareas_acciones
WHERE idtareaaccion=@idtareaaccion";
break;
}
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if(!$resul)
return(false);
}
}
/* Modificaciones */
if(!empty($modificaciones)){
$modificaciones=substr($modificaciones,0,strlen($modificaciones)-1); // Quita el último ";"
$tbModificaciones=split(";",$modificaciones);
for($i=0;$i<sizeof($tbModificaciones);$i++){
switch($tipoaccion){
case $AMBITO_PROCEDIMIENTOS:
list($idprocedimientoaccion,$orden)=split(",",$tbModificaciones[$i]);
$cmd->ParamSetValor("@idprocedimientoaccion",$idprocedimientoaccion);
$cmd->ParamSetValor("@orden",$orden);
$cmd->texto="UPDATE procedimientos_acciones SET orden=@orden
WHERE idprocedimientoaccion=@idprocedimientoaccion";
break;
case $AMBITO_TAREAS:
list($idtareaaccion,$orden)=split(",",$tbModificaciones[$i]);
$cmd->ParamSetValor("@idtareaaccion",$idtareaaccion);
$cmd->ParamSetValor("@orden",$orden);
$cmd->texto="UPDATE tareas_acciones SET orden=@orden
WHERE idtareaaccion=@idtareaaccion";
break;
}
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if(!$resul)
return(false);
}
}
return(true);
}
?>

View File

@ -0,0 +1,209 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_menus.php
// Descripción :
// Gestiona el mantenimiento de la tabla de menus
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("../includes/opciones.php");
include_once("./relaciones/menus_eliminacion.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$idmenu=0;
$descripcion="";
$titulo="";
$coorx=0;
$coory=0;
$modalidad=0;
$scoorx=0;
$scoory=0;
$smodalidad=0;
$comentarios="";
$grupoid=0;
$htmlmenupub="";
$htmlmenupri="";
$resolucion=0;
$idurlimg=0;
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["idmenu"])) $idmenu=$_POST["idmenu"];
if (isset($_POST["identificador"])) $idmenu=$_POST["identificador"];
if (isset($_POST["descripcion"])) $descripcion=$_POST["descripcion"];
if (isset($_POST["titulo"])) $titulo=$_POST["titulo"];
if (isset($_POST["coorx"])) $coorx=$_POST["coorx"];
if (isset($_POST["coory"])) $coory=$_POST["coory"];
if (isset($_POST["modalidad"])) $modalidad=$_POST["modalidad"];
if (isset($_POST["scoorx"])) $scoorx=$_POST["scoorx"];
if (isset($_POST["scoory"])) $scoory=$_POST["scoory"];
if (isset($_POST["smodalidad"])) $smodalidad=$_POST["smodalidad"];
if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"];
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["htmlmenupub"])) $htmlmenupub=$_POST["htmlmenupub"];
if (isset($_POST["htmlmenupri"])) $htmlmenupri=$_POST["htmlmenupri"];
if (isset($_POST["resolucion"])) $resolucion=$_POST["resolucion"];
if (isset($_POST["idicono"])) $idurlimg=$_POST["idicono"];
$tablanodo=""; // Arbol para nodos insertados
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
if($opcion!=$op_movida){
echo '<HTML>';
echo '<HEAD>';
echo ' <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
echo '<BODY>';
echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
echo ' <SCRIPT language="javascript" src="../jscripts/propiedades_menus.js"></SCRIPT>';
echo '<SCRIPT language="javascript">'.chr(13);
if ($resul){
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
}
}
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_menus";
break;
case $op_modificacion:
$literal="resultado_modificar_menus";
break;
case $op_eliminacion :
$literal="resultado_eliminar_menus";
break;
case $op_movida :
$literal="resultado_mover";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idmenu.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$descripcion."');".chr(13);
}
else
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idmenu.")";
if($opcion!=$op_movida){
echo ' </SCRIPT>';
echo '</BODY> ';
echo '</HTML>';
}
/**************************************************************************************************************************************************
Inserta, modifica o elimina datos en la tabla menus
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $idcentro;
global $idmenu;
global $descripcion;
global $titulo;
global $coorx;
global $coory;
global $modalidad;
global $scoorx;
global $scoory;
global $smodalidad;
global $comentarios;
global $grupoid;
global $htmlmenupub;
global $htmlmenupri;
global $resolucion;
global $idurlimg;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $op_movida;
global $tablanodo;
$cmd->CreaParametro("@idcentro",$idcentro,1);
$cmd->CreaParametro("@idmenu",$idmenu,1);
$cmd->CreaParametro("@descripcion",$descripcion,0);
$cmd->CreaParametro("@titulo",$titulo,0);
$cmd->CreaParametro("@coorx",$coorx,1);
$cmd->CreaParametro("@coory",$coory,1);
$cmd->CreaParametro("@modalidad",$modalidad,1);
$cmd->CreaParametro("@scoorx",$scoorx,1);
$cmd->CreaParametro("@scoory",$scoory,1);
$cmd->CreaParametro("@smodalidad",$smodalidad,1);
$cmd->CreaParametro("@comentarios",$comentarios,0);
$cmd->CreaParametro("@grupoid",$grupoid,1);
$cmd->CreaParametro("@htmlmenupub",$htmlmenupub,0);
$cmd->CreaParametro("@htmlmenupri",$htmlmenupri,0);
$cmd->CreaParametro("@resolucion",$resolucion,1);
$cmd->CreaParametro("@idurlimg",$idurlimg,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO menus (descripcion,titulo,coorx,coory,modalidad,scoorx,scoory,smodalidad,
comentarios,idcentro,grupoid,htmlmenupub,htmlmenupri,resolucion,idurlimg)
VALUES (@descripcion,@titulo,@coorx,@coory,@modalidad,@scoorx,@scoory,@smodalidad,
@comentarios,@idcentro,@grupoid,@htmlmenupub,@htmlmenupri,@resolucion,@idurlimg)";
$resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idmenu=$cmd->Autonumerico();
$arbolXML=SubarbolXML_menus($idmenu,$descripcion);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE menus SET descripcion=@descripcion,titulo=@titulo,coorx=@coorx,coory=@coory,modalidad=@modalidad,scoorx=@scoorx,scoory=@scoory,smodalidad=@smodalidad,
comentarios=@comentarios,htmlmenupub=@htmlmenupub ,htmlmenupri=@htmlmenupri,resolucion=@resolucion,idurlimg=@idurlimg
WHERE idmenu=@idmenu";
$resul=$cmd->Ejecutar();
break;
case $op_eliminacion :
$resul=EliminaMenus($cmd,$idmenu,"idmenu");
break;
case $op_movida :
$cmd->texto="UPDATE menus SET grupoid=@grupoid WHERE idmenu=@idmenu";
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_menus($idmenu,$descripcion){
global $LITAMBITO_MENUS;
$cadenaXML.='<MENU';
// Atributos
$cadenaXML.=' imagenodo="../images/iconos/menu.gif"';
$cadenaXML.=' infonodo="' .$descripcion.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_MENUS.'-'.$idmenu;
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_MENUS."'" .')"';
$cadenaXML.='>';
$cadenaXML.='</MENU>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,210 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_ordenadores.php
// Descripción :
// Gestiona el mantenimiento de la tabla de ordenadores
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
include_once("../clases/ArbolVistaXML.php");
include_once("../includes/CreaComando.php");
include_once("../includes/constantes.php");
include_once("./relaciones/ordenadores_eliminacion.php");
include_once("../includes/opciones.php");
//________________________________________________________________________________________________________
$opcion=0; // Inicializa parametros
$grupoid=0;
$idaula=0;
$idordenador=0;
$nombreordenador="";
$ip="";
$mac="";
$idperfilhard=0;
$idrepositorio=0;
$idmenu=0;
$idprocedimiento=0;
$idimagen=0;
$cache=0;
if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
if (isset($_POST["idaula"])) $idaula=$_POST["idaula"];
if (isset($_POST["idordenador"])) $idordenador=$_POST["idordenador"];
if (isset($_POST["identificador"])) $idordenador=$_POST["identificador"];
if (isset($_POST["nombreordenador"])) $nombreordenador=$_POST["nombreordenador"];
if (isset($_POST["ip"])) $ip=$_POST["ip"];
if (isset($_POST["mac"])) $mac=$_POST["mac"];
if (isset($_POST["idperfilhard"])) $idperfilhard=$_POST["idperfilhard"];
if (isset($_POST["idrepositorio"])) $idrepositorio=$_POST["idrepositorio"];
if (isset($_POST["idmenu"])) $idmenu=$_POST["idmenu"];
if (isset($_POST["idprocedimiento"])) $idprocedimiento=$_POST["idprocedimiento"];
if (isset($_POST["cache"])) $cache=$_POST["cache"];
if(empty($cache)) $cache=0;
$tablanodo=""; // Arbol para nodos insertados
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
if ($idaula==0)
$idaula=toma_aula($cmd,$grupoid);
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
if($opcion!=$op_movida){
echo '<HTML>';
echo '<HEAD>';
echo ' <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
echo '<BODY>';
echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
echo ' <SCRIPT language="javascript" src="../jscripts/propiedades_ordenadores.js"></SCRIPT>';
echo '<SCRIPT language="javascript">'.chr(13);
if ($resul){
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
}
}
//________________________________________________________________________________________________________
$literal="";
switch($opcion){
case $op_alta :
$literal="resultado_insertar_ordenadores";
break;
case $op_modificacion:
$literal="resultado_modificar_ordenadores";
break;
case $op_eliminacion :
$literal="resultado_eliminar_ordenadores";
break;
case $op_movida :
$literal="resultado_cambiar_ordenadores";
break;
default:
break;
}
if ($resul){
if ($opcion==$op_alta )
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idordenador.",o.innerHTML);".chr(13);
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
}
else
echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idordenador.")";
if($opcion!=$op_movida){
echo ' </SCRIPT>';
echo '</BODY> ';
echo '</HTML>';
}
/**************************************************************************************************************************************************
Busca identificador del aula de un grupo de ordenador .Devuelve el identificador del aula a la que pertenece el grupo
Parametros:
- cmd:Una comando ya operativo (con conexión abierta)
________________________________________________________________________________________________________*/
function toma_aula($cmd,$idgrupo){
$rs=new Recordset;
$cmd->texto="SELECT idaula FROM gruposordenadores WHERE idgrupo=".$idgrupo;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return(0); // Error al abrir recordset
$rs->Primero();
if (!$rs->EOF)
return($rs->campos["idaula"]);
else
return(0);
}
/*________________________________________________________________________________________________________
Inserta, modifica o elimina datos en la tabla ordenadores
________________________________________________________________________________________________________*/
function Gestiona(){
global $cmd;
global $opcion;
global $grupoid;
global $idordenador;
global $nombreordenador;
global $ip;
global $mac;
global $idaula;
global $idperfilhard;
global $idrepositorio;
global $idmenu;
global $idprocedimiento;
global $cache;
global $op_alta;
global $op_modificacion;
global $op_eliminacion;
global $op_movida;
global $tablanodo;
$cmd->CreaParametro("@grupoid",$grupoid,1);
$cmd->CreaParametro("@idaula",$idaula,1);
$cmd->CreaParametro("@idordenador",$idordenador,1);
$cmd->CreaParametro("@nombreordenador",$nombreordenador,0);
$cmd->CreaParametro("@ip",$ip,0);
$cmd->CreaParametro("@mac",$mac,0);
$cmd->CreaParametro("@idperfilhard",$idperfilhard,1);
$cmd->CreaParametro("@idrepositorio",$idrepositorio,1);
$cmd->CreaParametro("@idmenu",$idmenu,1);
$cmd->CreaParametro("@idprocedimiento",$idprocedimiento,1);
$cmd->CreaParametro("@cache",$cache,1);
switch($opcion){
case $op_alta :
$cmd->texto="INSERT INTO ordenadores(nombreordenador,ip,mac,idperfilhard,idrepositorio,
idmenu,idproautoexec,idaula,grupoid,cache) VALUES (@nombreordenador,@ip,@mac,@idperfilhard,@idrepositorio,
@idmenu,@idprocedimiento,@idaula,@grupoid,@cache)";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idordenador=$cmd->Autonumerico();
$arbolXML=SubarbolXML_ordenadores($idordenador,$nombreordenador);
$baseurlimg="../images/signos"; // Url de las imagenes de signo
$clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
$arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
case $op_modificacion:
$cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,ip=@ip,mac=@mac,idperfilhard=@idperfilhard,
idrepositorio=@idrepositorio,idmenu=@idmenu,idproautoexec=@idprocedimiento,cache=@cache
WHERE idordenador=@idordenador";
$resul=$cmd->Ejecutar();
//echo $cmd->texto;
break;
case $op_eliminacion :
$resul=EliminaOrdenadores($cmd,$idordenador,"idordenador");// Eliminación en cascada
break;
case $op_movida :
$cmd->texto="UPDATE ordenadores SET idaula=@idaula, grupoid=@grupoid WHERE idordenador=@idordenador";
$resul=$cmd->Ejecutar();
break;
default:
break;
}
return($resul);
}
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/
function SubarbolXML_ordenadores($idordenador,$nombreordenador){
global $LITAMBITO_ORDENADORES;
$cadenaXML='<ORDENADOR';
// Atributos
$cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_ORDENADORES."'" .')"';
$cadenaXML.=' imagenodo="../images/iconos/ordenador.gif"';
$cadenaXML.=' infonodo="'.$nombreordenador.'"';
$cadenaXML.=' nodoid='.$LITAMBITO_ORDENADORES.'-'.$idordenador;
$cadenaXML.='></ORDENADOR>';
return($cadenaXML);
}
?>

View File

@ -0,0 +1,136 @@
<?
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: gestor_ordenadorestandar.php
// Descripción :
// Gestiona la actualización de los ordenadores de un aula a través de la plantilla
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/comunes.php");
include_once("../includes/CreaComando.php");
//________________________________________________________________________________________________________
$idaula=0;
$nombreordenador="";
$ip="";
$mac="";
$cache=0;
$idperfilhard=0;
$idservidordhcp=0;
$idservidorrembo=0;
$numorde=0;
if (isset($_GET["idaula"])) $idaula=$_GET["idaula"];
if (isset($_GET["nombreordenador"])) $nombreordenador=$_GET["nombreordenador"];
if (isset($_GET["ip"])) $ip=$_GET["ip"];
if (isset($_GET["mac"])) $mac=$_GET["mac"];
if (isset($_GET["cache"])) $cache=$_GET["cache"];
if (isset($_GET["idperfilhard"])) $idperfilhard=$_GET["idperfilhard"];
if (isset($_GET["idservidordhcp"])) $idservidordhcp=$_GET["idservidordhcp"];
if (isset($_GET["idservidorrembo"])) $idservidorrembo=$_GET["idservidorrembo"];
if (isset($_GET["numorde"])) $numorde=$_GET["numorde"];
if(empty($cache)) $cache=0;
$cmd=CreaComando($cadenaconexion); // Crea objeto comando
$resul=false;
if ($cmd){
$resul=Gestiona();
$cmd->Conexion->Cerrar();
}
//________________________________________________________________________________________________________
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<BODY>
<?
$literal="resultado_ordenadorestandar";
if ($resul){
echo '<SCRIPT language="javascript">'.chr(13);
echo 'var oHTML'.chr(13);
echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
echo 'o=cTBODY.item(1);'.chr(13);
echo 'window.parent.'.$literal."(1,'".$cmd->DescripUltimoError()."');".chr(13);
echo '</SCRIPT>';
}
else{
echo '<SCRIPT language="javascript">';
echo " window.parent.".$literal."(0,'".$cmd->DescripUltimoError()."')";
echo '</SCRIPT>';
}
?>
</BODY>
</HTML>
<?
// *************************************************************************************************************************************************
function Gestiona(){
global $cmd;
global $idaula;
global $nombreordenador;
global $ip;
global $mac;
global $cache;
global $idaula;
global $idperfilhard;
global $idservidordhcp;
global $idservidorrembo;
global $numorde;
if($numorde>0){
$auxIP=split("[.]",$ip);
$swip=false;
$litnwip="";
$nwip=0;
if(isset($auxIP[3])){
$nwip=$auxIP[3];
if(empty($nwip)) $nwip=0;
$litnwip=$auxIP[0].".".$auxIP[1].".".$auxIP[2].".";
$swip=true;
}
$swnom=false;
if(substr($nombreordenador,strlen($nombreordenador)-1,1)=="$"){
$swnom=true;
$nombreordenador=substr($nombreordenador,0,strlen($nombreordenador)-1);
}
$cmd->CreaParametro("@grupoid",0,1);
$cmd->CreaParametro("@idaula",$idaula,1);
$cmd->CreaParametro("@nombreordenador",$nombreordenador,0);
$cmd->CreaParametro("@ip",$ip,0);
$cmd->CreaParametro("@mac",$mac,0);
$cmd->CreaParametro("@cache",$cache,1);
$cmd->CreaParametro("@idperfilhard",$idperfilhard,1);
$cmd->CreaParametro("@idservidordhcp",$idservidordhcp,1);
$cmd->CreaParametro("@idservidorrembo",$idservidorrembo,1);
for($i=0;$i<$numorde;$i++){
if($swip)
$cmd->ParamSetValor("@ip",$litnwip.$nwip);
if($swnom && $swip)
$cmd->ParamSetValor("@nombreordenador",$nombreordenador.$nwip);
$cmd->texto="INSERT INTO ordenadores(nombreordenador,ip,mac,cache,idperfilhard,idservidordhcp,idservidorrembo,idaula,grupoid,idconfiguracion) VALUES (@nombreordenador,@ip,@mac,@cache,@idperfilhard,@idservidordhcp,@idservidorrembo,@idaula,@grupoid,0)";
if($swip) $nwip++;
$resul=$cmd->Ejecutar();
if (!$resul) return(false);
}
}
else{
$strsql="UPDATE ordenadores SET ";
if (!empty($nombreordenador)) $strsql.=" nombreordenador='".$nombreordenador."',";
if (!empty($ip)) $strsql.=" ip='".$ip."',";
if (!empty($mac)) $strsql.=" mac='".$mac."',";
$strsql.=" cache='".$cache."',";
if ($idperfilhard>0) $strsql.=" idperfilhard=".$idperfilhard.",";
if ($idservidordhcp>0) $strsql.=" idservidordhcp=".$idservidordhcp.",";
if ($idservidorrembo>0) $strsql.=" idservidorrembo=".$idservidorrembo.",";
$strsql=substr($strsql,0,strlen($strsql)-1); // Quita la coma final
$strsql.=" WHERE idaula=".$idaula;
$cmd->texto=$strsql;
$resul=$cmd->Ejecutar();
}
return($resul);
}
?>z

Some files were not shown because too many files have changed in this diff Show More