desarrollo de servidor corporativo de antivirus open...
TRANSCRIPT
I
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
“DESARROLLO DE SERVIDOR CORPORATIVO DE
ANTIVIRUS OPEN SOURCE”
PROYECTO DE TESIS DE GRADO
4TO. CURSO DE GRADUACIÓN
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
BAQUE SALTOS CHRISTIAN EMIR
HOLGUIN ZAMBRANO ALEX ADOLFO
RONQUILLO MANJARRES KETTY MARITZA
GUAYAQUIL-ECUADOR
Año: 2007
II
AGRADECIMIENTO
Agradecemos a todas las personas que han
contribuido de alguna manera a la realización de
nuestro proyecto y a nuestros padres por estar
siempre guiándonos en nuestra vida estudiantil.
III
DEDICATORIA
Dedicamos este trabajo a Dios por estar siempre
a nuestro lado en todo momento y a nuestros
padres porque siempre han creído en nosotros y
nos brindaron en todo este tiempo su apoyo y
amor.
IV
TRIBUNAL DE GRADUACIÓN
Presidente de Tribunal 1er. Vocal
2do. Vocal Secretario
V
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),
perteneciendo a la Universidad de Guayaquil los derechos que generen la
aplicación de la misma”
(Reglamento de Graduación de la Carrera de Ingeniería en Sistemas
Computacionales, Art. 26).
KETTY MARITZA RONQUILLO MANJARRES [email protected]
CHRISTIAN EMIR BAQUE SALTOS
ALEX ADOLFO HOLGUIN ZAMBRANO [email protected]
VI
RESUMEN
El aplicativo desarrollado se limita a proveer las tareas básicas de
administración que un antivirus debe proporcionar en una organización
reduciendo el impacto de la perdida o corrupción de la información a causa de
los ataques de virus a las redes informáticas.
El sistema de administración de antivirus SkyLinx, fue desarrollado usando la
arquitectura de tres capas, para dar facilidades en la gestión de un antivirus,
permitiendo una rápida y eficaz gestión de:
Ejecución del antivirus en forma remota en una estación de trabajo en
particular.
Actualización de definiciones del antivirus.
Creación de configuraciones en alarmas y descargas automáticas.
Elaboración de reportes
Se cuenta con una herramienta apropiada fácil de usar, intuitiva que permite
evaluar y manejar de forma centralizada los antivirus implantados en las
computadoras de una empresa.
VII
ABSTRACT
The application developed merely to provide the basic administrative tasks that
a virus must provide within an organization by reducing the impact of the loss or
corruption of information due to virus attacks on computer networks.
The system of administration of antivirus SkyLinx, was developed using the
three-tier architecture to provide facilities to the management of a virus, allowing
a rapid and effective management:
• Implementation of the virus in a remote workstation in particular.
• Updating antivirus definitions.
• Creation of configurations alarms and automatic downloads.
• Preparing reports
There is an appropriate tool easy to use, intuitive allowing assess and manage
a centralized antivirus implanted in the computers of a company.
VIII
INDICE GENERAL
AGRADECIMIENTO II
DEDICATORIA III
TRIBUNAL DE GRADUACIÓN IV
DECLARACIÓN EXPRESA V
RESUMEN VI
INDICE GENERAL VII
CAPITULO 1 .......................................................................................................... XIII
1. INTRODUCCION ........................................................................................... XIII
1.1. Antecedentes .............................................................................................. XIII
1.2. Análisis de la Problemática ...................................................................... XIII
1.3. Solución a la problemática ....................................................................... XIV
1.4. Visión ........................................................................................................... XIV
1.5. Misión ............................................................................................................ XV
1.6. Objetivos Generales ................................................................................... XV
1.7. Objetivos Específicos ................................................................................. XV
1.8. Alcances ...................................................................................................... XVI
1.9. Beneficios ................................................................................................. XVIII
1.10. FODA ....................................................................................................... XIX
1.10.1. Fortalezas.- ......................................................................................... XIX
1.10.3. Debilidades.- ....................................................................................... XIX
1.10.4. Amenaza.- ........................................................................................... XIX
1.11. Metodología en el Desarrollo ................................................................ XX
1.12. Arquitectura .............................................................................................. XX
1.13. Recursos Humano ................................................................................. XXI
1.14. Herramientas ........................................................................................ XXII
1.14.1. Hardware: .......................................................................................... XXII
1.14.2. Software: ........................................................................................... XXII
1.15. Estimación de Tiempo y Personal ..................................................... XXV
1.16. Cronograma ......................................................................................... XXVI
CAPITULO 2 .................................................................................................... XXVIII
2. Análisis Orientado a Objetos ............................................................. XXVIII
2.1. Definición ............................................................................................... XXVIII
2.2. Actores que intervienen ...................................................................... XXVIII
2.3. Rol de Administrador ........................................................................... XXVIII
2.4. Rol de Usuario con privilegios .............................................................. XXIX
2.5. Rol de Usuario sin privilegios ................................................................ XXIX
2.6. Lista de Casos de Uso ........................................................................... XXIX
2.7. Diagrama de casos de Uso ............................................................. XXX 2.7.1. Caso del administrador .................................................................... XXX 2.8. Sub casos de uso de Reportes ....................................................... XXXI
IX
2.9. Sub casos de configuraciones ........................................................ XXXI 2.10. Sub casos de uso de mantenimiento ............................................. XXXII 2.11. Tablas de casos de usos ............................................................... XXXII 2.11.1.Autenticación de Usuarios ............................................................. XXXII 2.11.2. Listar Virus (Top 10) .............................................................. XXXIII 2.11.3. Toda la Red (Lista de Pcs encendidas y PCs apagadas) ..... XXXIV 2.11.4. Reporte Scan Máquina ......................................................... XXXVI 2.11.5. Enviar definición a usuarios .................................................. XXXVI 2.11.6. Enviar e-mail a los usuarios ................................................ XXXVII 2.11.7. Ejecutar el antivirus en los usuarios ................................... XXXVIII 2.11.8. Creación tipo configuración .................................................. XXXIX 2.11.9. Ingreso configuración ..................................................................XL 2.11.10. Asignación configuración máquina .........................................XLI 2.11.11. Reporte de Descargas ...........................................................XLII 2.11.12. Reporte de resultado de SCAN ..............................................XLII 2.11.13. Ingreso de usuarios ..............................................................XLIII 2.11.14. Asignación de Rol ................................................................ XLIV 2.11.15. Inactivación de usuario ......................................................... XLV 2.11.16. Reseteo clave ...................................................................... XLVI 2.12. Diagrama de componentes .................................................... XLVII CAPITULO 3 .................................................................................................... XLVIII
3. Diseño orientado a objetos ........................................................... XLVIII 3.1. Diagrama de clases ...................................................................... XLVIII 3.1.1. Diagrama de clases de procedimientos .................................... XLVIII 3.1.2. Diagrama de clases persistentes ................................................ XLIX 3.1.3. Diagrama de clases de interfaz ................................................... XLIX 3.1.4. Diagrama de clases de servlet .......................................................... L 3.2. Diagrama de asociación de clases ....................................................... L 3.2.1. Diagrama de asociación del modelo ................................................. L 3.2.2. Diagrama de asociación del modelo SKYLINX ............................... LII 3.2.3. Diagrama de asociación de interfaz - servlet .................................. LII 3.3. Diagrama de Introducción al Sistema ................................................ LIII 3.4. Diagrama de Autenticación ................................................................ LIII 3.5. Diagrama de Interfaz Top 10 ..............................................................LV 3.6. Diagrama Toda la Red ........................................................................LV 3.7. Diagrama de Reporte descargas .......................................................LVI 3.8. Diagramas de reportes Scan Maquina .............................................LVII 3.9. Diagrama Ingreso de Usuario ..........................................................LVIII 3.10. Diagrama Asignación de Rol ..........................................................LIX 3.11. Diagrama inactivación de usuario ..................................................LIX 3.12. Diagrama reseteo de clave ............................................................LIX 3.13. Diagrama creación/eliminación tipo configuración ..........................LX 3.14. Diagrama ingreso configuración ....................................................LXI 3.15. Diagrama asignación configuraciones maquinas ...........................LXI 3.16. Diagrama usuarios de la red .........................................................LXII
CAPITULO 4 ............................................................................................. LXIV 4. Implementación ................................................................................ LXIV
X
4.1. Estándares del sistema .................................................................. LXIV 4.2. Componentes Principales ............................................................... LXVI 4.3. Diagrama entidad relación ............................................................. CXXII 4.4. Descripción de Tablas ................................................................... CXXII
CAPITULO 5 ........................................................................................... CXXX 5. PRUEBAS ........................................................................................ CXXX 5.1. Introducción .................................................................................. CXXX 5.1.1. Prueba de base de datos .......................................................... CXXX 5.1.2. Prueba de clases ...................................................................... CXXX 5.1.3. Prueba de integración de clases ............................................... CXXX 5.1.4. Prueba de integración del sistema ............................................ CXXX 5.1.5. Demostrar funcionamiento con el código ................................. CXXXI 5.1.6. Prueba de cambios .................................................................. CXXXI 5.1.7. Prueba de stress ...................................................................... CXXXI 5.1.8. Revisión técnica ....................................................................... CXXXI 5.2. Casos de prueba ......................................................................... CXXXI
CAPITULO 6 ........................................................................................ CXXXIII 6. CONCLUSIONES Y RECOMENDACIONES ................................ CXXXIII 6.1. CONCLUSIONES ...................................................................... CXXXIII 6.2. RECOMENDACIONES ............................................................... CXXXV ANEXO A ............................................................................................ CXXXVII BIBLIOGRAFIA ................................................................................ CXXXVII8
INDICE DE ILUSTRACIONES
Ilustración 1: Arquitectura 3 capas .............................................................. XXI Ilustración 2: Punto de Fusión ................................................................... XXVI Ilustración 3: Actores que intervienen ..................................................... XXVIII Ilustración 4: Casos de uso del administrador ........................................... XXXI Ilustración 5: Modulo reportes ................................................................... XXXI Ilustración 6: Modulo de configuraciones .................................................. XXXI Ilustración 7: Modulo de mantenimiento ................................................... XXXII Ilustración 8: Diagrama de componentes ................................................. XLVII Ilustración 9: Diagrama clases de procedimientos .................................... XLIX Ilustración 10: Diagrama de clases persistentes ....................................... XLIX Ilustración 11: Diagrama de clases de interfaz ................................................ L Ilustración 12: Diagrama de clases de servlet ................................................. L Ilustración 13: Diagrama asociación de clases............................................... LI
XI
Ilustración 14: Diagrama asociación del modelo SKYLINX ........................... LII Ilustración 15: Diagrama de asociación de interfaz - servlet ......................... LII Ilustración 16: Diagrama de introducción al sistema .................................... LIII Ilustración 17: Diagrama de autenticación ...................................................LIV Ilustración 18: Diagrama general ..................................................................LIV Ilustración 19: Diagrama de interfaz Top 10 ..................................................LV Ilustración 20: Diagrama de Mis PCs ...........................................................LVI Ilustración 21: Diagrama de Histórico de PCS .............................................LVI Ilustración 22: Reportes ..............................................................................LVII Ilustración 23: Reportes .............................................................................LVIII Ilustración 24: Diagrama ingreso usuario .....................................................LIX Ilustración 25: Diagrama asignación de Rol .................................................LIX Ilustración 26: Diagrama inactivación de usuario .........................................LIX Ilustración 27: Diagrama reseteo de clave ....................................................LX Ilustración 28: Diagrama creación/eliminación de tipo configuración ...........LXI Ilustración 29: Diagrama ingreso configuración ............................................LXI Ilustración 30: Diagrama asignación configuraciones maquinas .................LXII Ilustración 31: Diagrama asignación configuraciones maquinas ................LXIII Ilustración 32: Diagrama entidad relación ................................................ CXXII Ilustración 33: Punto de Fusión ........................................................... CXXXVII
INDICE DE TABLAS
Tabla 1: Cronograma de desarrollo de SkyLinx ....................................... XXVII Tabla 2: Casos de Uso del administrador .................................................. XXX Tabla 3: Autenticación de Usuarios ......................................................... XXXIII Tabla 4: Listar Virus (Top 10) ................................................................. XXXIV Tabla 5: Toda la Red ............................................................................... XXXV Tabla 6: Reporte Scan Máquina ............................................................. XXXVI Tabla 7: Enviar definición a usuarios ..................................................... XXXVII Tabla 8: Enviar e-mail a los usuarios ................................................... XXXVIII Tabla 9: Ejecutar el antivirus en los usuarios ......................................... XXXIX Tabla 10: Creación tipo configuración ...........................................................XL Tabla 11: Asignación configuración maquina ...............................................XLI Tabla 12: Asignación configuración maquina ...............................................XLI Tabla 13: Reporte de descargas .................................................................XLII Tabla 14: Reporte de resultado de SCAN ..................................................XLIII Tabla 15: Ingreso de usuarios ................................................................... XLIV Tabla 16: Asignación de rol ........................................................................ XLV Tabla 17: Inactivación usuario ................................................................... XLVI Tabla 18: Reseteo clave ........................................................................... XLVII Tabla 19: Acciones ................................................................................... CXXII Tabla 20: Archivos_Personas .................................................................. CXXIII Tabla 21:clase_proceso .......................................................................... CXXIII
XII
Tabla 22: Configuraciones....................................................................... CXXIII Tabla 23: Configuraciones_maquinas ..................................................... CXXIII Tabla 24: descargas ............................................................................... CXXIV Tabla 25: detalle_configicuracion ........................................................... CXXIV Tabla 26:detalle_scan ............................................................................ CXXIV Tabla 27: empresas ................................................................................. CXXV Tabla 28: maquina_usuario ..................................................................... CXXV Tabla 29: maquina ................................................................................... CXXV Tabla 30:marquesina_sucursal ............................................................... CXXV Tabla 31: marquesinas ........................................................................... CXXVI Tabla 32: método_clase_proceso .......................................................... CXXVI Tabla 33: opciones_aplicacion ............................................................... CXXVI Tabla 34: parametros_generales ........................................................... CXXVII Tabla 35: personas ................................................................................ CXXVII Tabla 36: roles_aplicacion ..................................................................... CXXVII Tabla 37: roles_usuarios_aplicacion ..................................................... CXXVII Tabla 38: scan ...................................................................................... CXXVIII Tabla 39: tipo_configuracion ................................................................ CXXVIII Tabla 40: tipo_maquina ........................................................................ CXXVIII Tabla 41: tipo_parametro ....................................................................... CXXIX Tabla 42: usuarios .................................................................................. CXXIX Tabla 43: virus ........................................................................................ CXXIX Tabla 44: Casos de prueba ................................................................... CXXXII Tabla 45: Casos de prueba continuación ............................................. CXXXIII Tabla 46: Complejidad de los puntos de fusión .................................... CXXXIX Tabla 47: Ponderación de puntos de función ............................................. CXL Tabla 48: Factores de complejidad ............................................................ CXL
XIII
CAPITULO 1
1. INTRODUCCION
1.1. Antecedentes
Hoy en día, la información es uno de los activos más importantes de toda
organización, dada la creciente información del mundo en que vivimos. Es
por ello, que la protección de esa información, así cómo los caminos que
necesita para fluir a través de la empresa, deben ser considerada como
alta prioridad. Además, problemas en las redes informáticas de una
empresa causan problemas relacionados con recursos asignados a la
resolución de estos, mal funcionamiento de equipos clave, daño de la
información, etc.; lo cual se traduce en pérdidas monetarias para la
compañía afectada. Existen en el mercado sistemas que realizan esta
labor, pero su precio se encarece por muchas razones, una de ellas son
las licencia es por eso que queremos implementar un administrador de
corporativo de antivirus Open Source que abarate los costos en la
elaboración de mencionado administrador.
1.2. Análisis de la Problemática
En una red corporativa, no solo es importante la protección individual de
cada equipo, sino su administración y actualización centralizada. Dado que
los antivirus necesitan descargar periódicamente nuevas firmas de virus
y/o componentes, para no sobrecargar el acceso a Internet de cada equipo
XIV
de la red, es importante contar con uno o varios servidores locales de
actualización que descarguen lo que el antivirus necesita y lo distribuyan a
través de los clientes de la red. A su vez, se debe contar con una
administración centralizada y remota, que permita conocer el estado de
cada antivirus de la red desde una sola consola, esto seria una
herramienta muy útil para los administradores de sistemas de una
empresa. Además, estas herramientas deberían:
Ejecutar tareas del antivirus en forma remota en una estación de trabajo
en particular o en grupos de ellas
Cambiar las configuraciones
Obtener reportes
1.3. Solución a la problemática
Contando con un antivirus que cumpla con lo antes mencionado, en cada
estación de trabajo y servidores de archivos, así como con buen software
que permita administrarlos y actualizarlos fácilmente, una red corporativa
podrá mantenerse protegida de la gran mayoría de las vías de entrada de
los virus, y así velar porque uno de los activos más importantes de la
empresa, la información, se mantenga segura e inalterable, además de no
desperdiciar recursos de la compañía por el mal funcionamiento de los
equipos o la pérdida de la información.
1.4. Visión
XV
Ser el mejor servicio de Administrador corporativo de antivirus que
contribuye a la competitividad de nuestros clientes, de tal manera que el
mismo se convierta en una herramienta para la empresa que lo requiere.
1.5. Misión
Ofrecer un administrador corporativo de antivirus de optima calidad y
diseño, que abarate costos en lo que incurren compañías que necesitan
esta herramienta.
Crear nuestro círculo de clientes entre las pequeñas y medianas empresas
con el fin de darnos a conocer.
1.6. Objetivos Generales
Diseñar un Sistema que nos permita administrar de manera sencilla y
práctica un servidor corporativo de antivirus Open Source que cumpla y
satisfaga las necesidades actuales del mercado.
1.7. Objetivos Específicos
Administración óptima de definiciones de antivirus para proporcionar
seguridad informática integra a nuestros usuarios.
Obtener una herramienta eficaz para el administrador, optimizando
tiempo y recursos que éste asigna a la labor de monitorear y controlar
el nivel de riesgo que tienen las diferentes PC de la organización, ante
la posibilidad de sufrir el ataque de Virus, con la ventaja de poder
conocer el estado individual de los computadores de la organización.
XVI
Minimizar la perdida de tiempo e información a causa de ataques de
virus, erradicándolos de forma inmediata
1.8. Alcances
1. El sistema contará con autenticación para usuario administrador, quien
será el único que podrá realizar cambios de configuración y
parametrización en la aplicación. Esto proporcionará estabilidad, y
seguridad a los usuarios del mismo.
2. Contará con un reporte actualizado de los virus que con más frecuencia
se han detectado en la red, para mejor control y prevenir futuros
ataques.
3. Contaremos con una consulta útil de las PCs (usuarios de la red) en el
que se presentará la lista completa de las PCs que componen la red, y
junto a esta la lista de las PCs que encuentran en ese momento
encendidas, de esta forma el administrador puede tomar acciones
sobra dicha PC, como por ejemplo ejecutar el antivirus, enviar mail de
notificación, realizar actualización de definición.
4. Contaremos con información consolidada, clara y completa de los
usuarios de la red tal como:
Última definición instalada en la PC
Fecha de última actualización
Último análisis efectuado en la PC
Resultado del scan realizado, es decir, si en la PC se encontró
virus en el último análisis.
XVII
5. Se contará con un reporte histórico de las PCs de la red, para poder
visualizar el resultado de los análisis efectuados y así tomar acciones,
como por ejemplo bloqueo de puertos vulnerables a ataques,
seguimiento de aplicativos o accesos hechos por los usuarios u otras
acciones.
6. Podremos manejar un sistema de políticas de seguridad, como por
ejemplo: El usuario no podrá cancelar la ejecución del antivirus ya que
este se ejecutara mediante líneas de comando siendo transparente su
ejecución para el usuario.
7. Tendremos la facilidad de parametrizar algunas variables importantes
del sistema, que serán de utilidad para el administrador ya que este las
podrá configurar tomando en consideración tiempos y beneficios:
Tiempo máximo estimado en que un PC puede estar sin la última
definición, siempre que esta exista en el servidor.
Hora y fecha en que se realice la descarga de la definición al
servidor desde Internet, de esta forma podremos hacer que estas
descargas no se realicen en horas pico.
Se podrá configurar una hora específica y global para que dichas
definiciones sean replicadas a los usuarios de forma transparente he
imperceptible.
8. El sistema de replicación de definiciones a los usuarios podrá ser
lanzado por el administrador del sistema de forma manual o por alguna
tarea programada.
XVIII
9. El administrador contará con un reporte de las PC cuya definición no
fue actualizada, por diferentes motivos: la PC esta apagada, no esta en
red, o simplemente fallo de conexión.
10. Se contará con un sistema de alertas al Administrador del sistema u
otros usuarios solicitantes, por medio de SMS o correo electrónico, con
información útil, como procesos críticos abajo:
Si la definición fue descargada con éxito o no.
Espacio disponible en directorios utilizados para el proceso.
Máquina sin definición actualizada y en peligro.
Maquinas encontradas con Virus.
1.9. Beneficios
Ahorro en el pago de licencias de SO Linux ya que es Open
Source.
Software económico con respecto a la oferta en el mercado.
Centralización de la administración de Antivirus, generando un
ahorro de tiempo, optimizando el recurso humano responsable de
esta labor.
Funcionamiento amigable para cualquier usuario experto y no
experto.
Fácil acceso, bastará con conocer la dirección URL de la página y
contar con un Explorador de Internet para acceder a la misma.
Confiable, fiable y seguro por estar basado en SO Linux.
Soporte oportuno.
Ahorro de dinero, con respecto a la perdida de información
causada por el ataque de los virus.
XIX
1.10. FODA
1.10.1. Fortalezas.-
El Software es Open Source.
Precio económico en el mercado.
Funcionamiento amigable para cualquier usuario.
Fácil acceso, bastará con conocer la dirección URL de la
página y contar con un Explorador de Internet para acceder a
la misma.
Confiable, fiable y seguro por estar basado en S.O. Linux.
Soporte oportuno.
1.10.2. Oportunidades.-
Nuestro producto será preferido por su bajo costo.
Capacidad para trabajar sobre servidores corporativos.
Alto rendimiento con mínimo hardware requerido.
Fácil y ágil adquisición del producto.
1.10.3. Debilidades.-
Niveles bajos de fiabilidad por parte del antivirus que se utilice.
Dependencia de la definición del antivirus que usemos.
1.10.4. Amenaza.-
XX
Existencia de otro Administrador corporativo de antivirus que
sea más eficiente.
1.11. Metodología en el Desarrollo
Para desarrollar nuestro sistema Administrador Corporativo de Antivirus
Open Source, se seguirá el modelo orientado a objetos porque es un
sistema que aplica los conceptos básicos como:
La herencia es uno de los mecanismos de la programación orientada a
objetos, por medio del cual una clase se deriva de otra de manera que
extiende su funcionalidad. Una de sus funciones más importantes es la de
proveer Polimorfismo. La idea es la de partir de las situaciones más
generales e ir derivando hacia las más particulares, creando categorías, de
la misma forma en que piensa el ser humano.
El polimorfismo en programación orientada a objetos se denomina
polimorfismo a la capacidad que tienen objetos de diferentes clases de
responder al mismo mensaje. Esto significa que puede haber muchos
mensajes con el mismo nombre, en diferentes clases. Cada Clase
responde al mensaje con su código propio (o método).Justamente de ahí el
nombre de polimorfismo, muchas formas de responder al mismo mensaje.
1.12. Arquitectura
Para la descripción de nuestra arquitectura debe quedar primero claro el
siguiente concepto:
XXI
Una solución de tres capas (presentación, lógica, datos) que residen en un
solo ordenador (Presentación+lógica+datos). Se dice, que la arquitectura
de la solución es de tres capas y un nivel, tal como se puede apreciar en la
siguiente ilustración
Ilustración 1: Arquitectura 3 capas
Nuestro proyecto será desarrollado en Arquitectura tres capas he aquí la
explicación:
Capa de presentación.- Contaremos con una página Web que usará
como servidor WEB Apache.
Capa de negocio.- Nuestras páginas estarán desarrolladas con la
tecnología JSP para crear aplicaciones Web, están residirán en la
estructura de directorios TOMCAT, donde estableceremos las
condiciones que deben cumplirse, recibiendo las peticiones del usuario
y enviando las respuestas tras el proceso.
Capa de datos.- Los datos residirán en un gestor de datos el que
recibirá las peticiones de la capa de negocio.
1.13. Recursos Humano
XXII
El personal que se requiere para la elaboración del proyecto SKYLINX
(Servidor Corporativo de Antivirus Open Source) son los mismos que
actuaran como analistas y desarrolladores del sistema, cuyos nombres
son:
Baque Christian.
Holguín Alex.
Ronquillo Ketty.
1.14. Herramientas
Los recursos que vamos a utilizar son los siguientes:
1.14.1. Hardware:
El sistema que se va a implantar manejara una red de área local en la
que habrá un servidor que administrara y almacenara una base de
datos open source (POSTGRE), el cual también poseerá el aplicativo
con la interfaz que se va a utilizar, y se podrá administrar desde una
cliente con Sistema Operativo Microsoft
1.14.2. Software:
El software con la cual trabajaremos lo detallaremos a continuación:
Servidor APACHE TOMCAT
DEFINICION: “Tomcat es un servidor web con soporte de servlets y
JSPs. Incluye el compilador Jasper, que compila JSPs convirtiéndolas
en servlets. El motor de servlets de Tomcat a menudo se presenta en
XXIII
combinación con el servidor web Apache.Tomcat puede funcionar
como servidor web por sí mismo. En sus inicios, existió la percepción
de que el uso de Tomcat de forma autónoma era sólo recomendable
para entornos de desarrollo y entornos con requisitos mínimos de
velocidad y gestión de transacciones. Hoy en día ya no existe esa
percepción, y Tomcat es usado como servidor web autónomo en
entornos con alto nivel de tráfico y alta disponibilidad. Dado que
Tomcat fue escrito en Java, funciona en cualquier sistema operativo
que disponga de la máquina virtual.”
www.wikipedia.com
Java Developer Kit JDK
DEFINICION: “Java (Sun), es una tecnología desarrollada por Sun
Microsystems para aplicaciones software independiente de la
plataforma, que engloba: Lenguaje de programación Java, un lenguaje
de programación de alto nivel, orientado a objetos. API Java provista
por los creadores del lenguaje Java, y que da a los programadores un
ambiente de desarrollo completo. Máquina Virtual de Java (JVM), la
máquina virtual que ejecuta bytecode de Java. También se refiere a la
parte de la plataforma Java que se ejecuta en el PC, el entorno en
tiempo de ejecución de Java (JRE, Java Runtime Environment). Applet
Java es un programa usado para editar y/o crear programas usados en
Internet.
XXIV
Java Runtime Environment proporciona únicamente un subconjunto del
lenguaje de programación Java sólo para ejecución. El usuario final
normalmente utiliza JRE en paquetes y añadidos. Plataforma Java, la
máquina virtual de Java, junto con las APIs.”
www.wikipedia.com
Sistema Operativo:
DEFINICION (LINUX FEDORA CORE 6):
“Es la denominación de un sistema operativo y el nombre de un núcleo.
Es uno de los paradigmas del desarrollo de software libre (código
abierto), donde el código fuente está disponible públicamente y
cualquier persona, con los conocimientos informáticos adecuados,
puede libremente estudiarlo, usarlo, modificarlo y redistribuirlo.
Software libre (en inglés free software) es el software que, una vez
obtenido, puede ser usado, copiado, estudiado, modificado y
redistribuido libremente.”
DEFINICION (WINDOWS XP):
“Es una línea de sistemas operativos desarrollado por Microsoft, esta
orientado a cualquier entorno informático, incluyendo computadoras
domesticas o negocios, computadoras portátiles y media center.
Windows XP es el sucesor de Windows 2000 y Windows ME, es el
primer sistema operativo de Microsoft orientado al consumidor que se
construye con un núcleo y arquitectura de Windows NT.”
ww.wikipedia.com
Base de Datos:
XXV
Servidor de Base de Datos PostgreSQL
DEFINICION: “PostgreSQL es un servidor de base de datos relacional
libre, liberado bajo la licencia BSD. Es una alternativa a otros sistemas
de bases de datos de código abierto (como MySQL, Firebird y MaxDB),
así como sistemas propietarios como Oracle o DB2.
La licencia BSD es la licencia de software otorgada principalmente para
los sistemas BSD (Berkeley Software Distribution). Pertenece al grupo
de licencias de software Libre. Esta licencia tiene menos restricciones en
comparación con otras como la GPL estando muy cercana al dominio
público. La licencia BSD al contrario que la GPL permite el uso del
código fuente en software no libre.
www.wikipedia.com
La licencia GPL (General Public License o licencia pública general) es
una licencia creada por la Free Software Foundation a mediados de los
80, y está orientada principalmente a proteger la libre distribución,
modificación y uso de software. Su propósito es declarar que el software
cubierto por esta licencia es software libre y protegerlo de intentos de
apropiación que restrinjan esas libertades a los usuarios.”
www.wikipedia.com
1.15. Estimación de Tiempo y Personal
Usuario SKYLIN
Consulta
Reporte
Archivos
internos (BD)
Archivos
externos
Entrada
Salida
XXVI
Ilustración 2: Punto de Fusión
Ver en Anexo A.- Estimacion de tiempo y personal
Conclusión
Empleando el modelo matemático COCOMO, no indica que el proyecto
podrá ser desarrollado con un mínimo de 2 personas en un tiempo
estimado de 6 meses. Ver en Anexos: El modelo matemático COCOMO
1.16. Cronograma
PROGRAMA DE DESARROLLO DE SKYLINX
FASE ACTIVIDADES TIEMPO ENCARGADOS
I
ANÁLISIS DE SKYLINX
Aprobación de la propuesta
Levantamiento de información
Análisis de requerimientos
Definición esquema de objetos, eventos y caso de uso
Hito documentado del análisis del proyecto
51 días Katty Ronquillo Christian Baque
Alex Holguin
Primer hito correspondiente al análisis: 8 – JUN – 07
II
DISEÑO DE SKYLINX
Diseño de la base de datos
Implantación de la base de datos
Diseño de la Interfaz del Sitio Web
Diseño de la infraestructura
45 días Katty Ronquillo Christian Baque
Alex Holguin
XXVII
Hito documentado del diseño del proyecto
Segundo hito correspondiente al diseño: 9 – JUL – 07
III
CODIFICACIÓN DE SKYLINX
Codificación de modulo 1.
Pruebas al módulo con su respectivo hito.
Correcciones al módulo modulo 1.
Pruebas a las correcciones.
Hito del módulo corregido y probado correctamente.
Hito y producto del módulo terminado.
Codificación de modulo 2.
Pruebas al módulo con su respectivo hito.
Correcciones al módulo modulo 2.
Pruebas a las correcciones.
Hito del módulo corregido y probado correctamente.
Hito y producto del módulo terminado.
Elaboración de la documentación.
55 días Katty Ronquillo Christian Baque
Alex Holguin
Tercer hito correspondiente codificación: 24 – OCT – 07
IV
PRESENTACIÓN Y SUSTENTACIÓN DE SKYLINX
Ultimas correcciones y pruebas a los módulos.
Documentación formal y final de SKYLINX.
Presentación y sustentación formal de SKYLINX ante el jurado.
61 días Katty Ronquillo Christian Baque
Alex Holguin
Sustentación final del proyecto: 19 – NOV – 07
TOTAL 212 días 3 personas
Tabla 1: Cronograma de desarrollo de SkyLinx
XXVIII
Usuario con
Privilegios
Sistema de
Administración de
Antivirus SkyLinx
Administrador
CAPITULO 2
2. Análisis Orientado a Objetos
2.1. Definición
Los diagramas de Casos de Uso sirven para especificar la funcionalidad y
el Comportamiento de un sistema mediante su interacción, con los
usuarios y/o otros sistemas.
2.2. Actores que intervienen
Ilustración 3: Actores que intervienen
2.3. Rol de Administrador
Crear y asignar configuraciones al sistema SkyLinx.
Gestionar funcionalidades como son: Ejecución el antivirus, Enviar la
ultima definición de la base de datos a los cliente, enviar e-mail,
monitorear el estado de las PC
Obtener reportes de PC así como la impresión de los mismos.
XXIX
Asignar a los Usuarios cualquiera de los roles predefinidos en el
sistema.
2.4. Rol de Usuario con privilegios
Gestionar funcionalidades como son: Ejecución el antivirus, Enviar la
ultima definición de la base de datos a los cliente, enviar e-mail,
monitorear el estado de las PC
Obtener reportes de PC así como la impresión de los mismos.
2.5. Rol de Usuario sin privilegios
Ingresar al sistema y podrá cambiar su contraseña de correo sin
posibilidad de escoger opciones del menú principal.
2.6. Lista de Casos de Uso
Actor primario Casos de uso
Administrador
Autenticación de Usuarios
Listar Virus (Top 10)
Lista de Pcs encendidas y miembros de red
Reporte Histórico
Enviar definición a usuarios
Enviar e-mail a los usuarios
XXX
Administrador
Administrar
Reportes
Ingresar al Sistema
Listar VirusTop 10
Toda la Red
Descargas
Bajar Definiciones
Configuraciones
Ejecucion Antivirus
Enviar
Definiciones_Usuarios
Enviar
Mail_Usuarios
«extends»
«extends»
«extends»
«extends»
«extends»
«extends»
«extends»
«extends»
Sistema
Mantenimiento
Ejecutar el antivirus en los usuarios
Información de Políticas
Establecer hora y fecha de descarga de la definición
Reporte de resultado de replicación de definición
Reporte de resultado de SCAN
Tabla 2: Casos de Uso del administrador
2.7. Diagrama de casos de Uso
2.7.1. Caso del administrador
XXXI
Reportes
Imprimir
e_mail
«uses»
«uses»
Exportar XLS«uses»
Configuraciones
Creacion tipo
configiracion
Ingreso
configuracion
Descarga_SERVER
(Dia/Hora)
Descargas_USERS
(Dia/Hora)
«extends»
«extends»
«extends»
«extends»
Asignacion
configuración máquina
«extends»
Ilustración 4: Casos de uso del administrador
2.8. Sub casos de uso de Reportes
Ilustración 5: Modulo reportes
2.9. Sub casos de configuraciones
Ilustración 6: Modulo de configuraciones
XXXII
Mantenimiento
Crear_Usuarios
Asignar_Rol_Usuarios
Inactivar_Usuarios
Reseteo_clave
Cambio de Clave
«extends»
«extends»
«extends»
«extends»
«extends»
Sub casos de uso de mantenimiento
Ilustración 7: Modulo de mantenimiento
2.10. Tablas de casos de usos
2.10.1. Autenticación de Usuarios
ID Caso de Uso: 001
Nombre del caso de uso:
Autenticación de Usuarios
Creado por: Ketty Ronquillo Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del Sistema
Descripción: Se tendrá que ingresar un usuario para que pueda ingresar al
XXXIII
sistema.
Inicio: 1. Ingresar usuario de clave de red. 2. Dar clic en el botón entrar
Precondiciones: 1. El sistema debe estar 100% operativo 2. Interfaz que permita el ingreso de usuarios. 3. Base de datos
Post Condiciones: 1. Usuario del sistema creado y listo para autentificarse
Flujo Normal:
1. Administrador ingresa a la interfaz del sistema para ingresar usuario.
2. Por primera vez ingresa nombre del usuario de red. 3. Por primera vez ingresa clave del usuario de red. 4. El sistema le pide cambiar la clave. 5. El usuario ingresa clave anterior, clave actual y ratifica
clave actual. 6. Guarda los cambios 7. El sistema emite mensaje “clave actualizada
correctamente” 8. Usuario ingresa al Sistema.
Flujo Alternativo:
Excepciones: 1. Usuario de red no existe. 2. Mal ingreso de usuario/clave de red. 3. Mal ratificación de clave nueva.
Casos de uso incluidos:
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio: Solo el Administrador del sistema puede ingresar al sistema.
Requerimientos Especiales:
El Administrador del sistema debe contar ya con un usuario de red, ya que solo con este podrá ingresar a la aplicación
Suposiciones: El Caso de uso existe por la necesidad de autenticación para el ingreso del sistema.
Notas: La contraseña del usuario se encuentra inicializada, por consiguiente
Tabla 3: Autenticación de Usuarios
2.10.2. Listar Virus (Top 10)
ID Caso de Uso: 002
Nombre del caso de uso:
Listar Virus (Top 10)
Creado por: Ketty Ronquillo Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del Sistema Usuario con privilegios
Descripción:
El Sistema podrá listar los diez virus más actuales del sistema, a través de una consulta a la tabla histórica que almacena los resultados del análisis de virus que se ha realizado en cada PC, a través de filtros y condiciones se podrá contar con la lista solicitada, la cual será muy útil para el administrador del sistema.
Inicio: Solicitar por medio del Menú Reporte opción “TOP 10”.
Precondiciones: 1. El sistema debe estar 100% operativo 2. Interfaz que permita visualizar lista de Virus. 3. Base de datos operativa
XXXIV
Post Condiciones: El usuario contará con reporte actualizado de los 10 últimos virus encontrados en la red
Flujo Normal:
1. E usuario solicita por medio menú Reporte opción “TOP 10”.
2. En el frame principal del sistema se listaran los 10 virus más actuales en encontrados en la red.
Flujo Alternativo:
Excepciones: 1. Puede existir con fallo de conexión con la BD. 2. Se mostrará un mensaje al usuario indicando que se
comunique con el administrador del sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
Para que exista un TOP 10 debe existir al menos una base de Virus que hayan atacado la red.
Suposiciones: El Caso de uso existe por la necesidad de conocer los virus que últimamente han atacado la red para llevar un control óptimo.
Notas:
Tabla 4: Listar Virus (Top 10)
2.10.3. Toda la Red (Lista de Pcs encendidas y PCs apagadas)
ID Caso de Uso: 003
Nombre del caso de uso:
Toda la Red
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del Sistema
Descripción:
El administrador del sistema a través de la interfaz de SKYLINX, podrá realizar una consulta que incluye el listado de las PCs que componen la red, y junto a esta lista las PCs que se encuentran encendidas
Inicio: Solicitar listado a través del botón “Mis PCS”
Precondiciones: 1. El sistema debe estar 100% operativo 2. Interfaz que permita visualizar listado 3. Base de datos operativa
Post Condiciones: El usuario contará con un reporte que le mostrará las PCS que componen la red y a su vez las que se encuentran encendidas
Flujo Normal: 1. El usuario ingresa al sistema 2. Ejecuta opción “Toda la Red” del menú Gestión Maquinas 3. El sistema muestra listado
Flujo Alternativo:
Excepciones: 1. Puede existir con fallo de conexión con la BD. Se
mostrará un mensaje al usuario indicando que se comunique con el administrador del sistema
XXXV
Casos de uso incluidos: 1. Autenticación de Usuarios
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
Para que esta lista se pueda presentar deben estar operativos el servidor DNS y DHCP.
Suposiciones: El caso de uso existe en base la necesidad del Administrador del sistema de saber que PCS es la que él puede administrar con respecto a Antivirus
Notas:
Tabla 5: Toda la Red
XXXVI
2.10.4. Reporte Scan Máquina
ID Caso de Uso: 004
Nombre del caso de uso:
Reporte Scan Máquina
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del Sistema, usuario de red
Descripción:
El Reporte Scan Máquina mostrará una lista detallada de los análisis en busca de virus que se han realizado a una máquina especifica, además se podrá visualizar el detalle de un análisis específico, esta información podrá ser enviada vía e-mail al usuario específico o impresa.
Inicio: Solicita entrando al menú “Gestión máquina” opción “Toda la Red”
dando clic en la columna “Reporte Scan Máquina”
Precondiciones: 1. El sistema debe estar 100% operativo 2. Base de datos operativa
Post Condiciones:
El administrador contará con información acerca de cada PCS de usuario sobre la cual realizo acciones en base a los logs generados por el antivirus de las PCS, además que mantendrá comunicación en línea con cada uno de los miembros de la red que cuente con correo electrónico.
Flujo Normal: 1. Usuario ingresa al sistema. 2. Se actualiza pagina “Toda de Red” automáticamente 3. Imprimir o enviar e-mail.
Flujo Alternativo: 1.
Excepciones:
1. Puede existir con fallo de conexión con la BD. Se mostrará un mensaje al usuario indicando que se comunique con el administrador del sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 003. Lista de Pcs encendidas y miembros de red
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio: Todas las acciones tomadas por el administrador del sistema deben ser con PCS de usuarios encendidas y transparente para los usuarios.
Requerimientos Especiales:
Es necesario que exista información de logs de cada antivirus instalado en la PCS de los usuarios, para poder hacer uso de dicha información.
Suposiciones: El caso de uso existe en base la necesidad del Administrador del sistema de saber que PCS es la que él puede administrar con respecto a Antivirus
Notas:
Tabla 6: Reporte Scan Máquina
2.10.5. Enviar definición a usuarios
ID Caso de Uso: 005
Nombre del caso de uso:
Enviar definición a usuarios
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
XXXVII
Actores: Administrador del Sistema
Descripción:
El Administrador del Sistema verifica cual es la última definición instalada en la PC del usuario, si éste observa que es una definición anterior ejecuta acción para que esta la última definición se replique al Usuario.
Inicio: Dar clic en el Botón “Enviar” incluido en la interfaz de Reporte Histórico
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
transferencia de archivos entre usuarios de la RED
Post Condiciones:
1. El usuario contará con la definición actualizada del antivirus en su PC de manera transparente y sin complicaciones.
2. El Administrador del Sistema, podrá replicar definición a los miembros de la RED, sin tener que ir de puesto en puesto, de la manera más cómoda y efectiva.
Flujo Normal:
1. El Administrador del Sistema observa que la fecha de última definición del servidor, es diferente a la del Usuario.
2. El Administrador replica la definición con una única acción de dar clic sobre botón enviar, a la PC seleccionada.
Flujo Alternativo:
Excepciones: 1. Puede existir con fallo de conexión con la BD o del medio de
comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 003. Lista de PCS encendidas y miembros de red
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
1. Todas las acciones tomadas por el Administrador del Sistema deben ser con PCS de usuarios encendidas y transparente para los usuarios.
2. Se preferirá que las definiciones sean enviadas en horas de lunch de los usuarios.
3. Solo se permitirá que el usuario deje PC encendida para replicación de definiciones cuando esto sea solicitado por el Administrador del Sistema con previo consentimiento del jefe del área de PCS
Requerimientos Especiales:
1. Se necesita que la actualización de antivirus haya sido descargada al servidor para ser replicada.
2. Es necesario que exista información de logs de cada antivirus instalado en la PCS de los usuarios para poder hacer uso de dicha información.
Suposiciones: El caso de uso existe en base la necesidad del Administrador del Sistema de mantener actualizadas a las PCs con ultima definición.
Notas:
Tabla 7: Enviar definición a usuarios
2.10.6. Enviar e-mail a los usuarios
ID Caso de Uso: 006
Nombre del caso de uso:
Enviar e-mail a los usuarios
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del Sistema
Descripción: El Administrador del Sistema de vez en cuando requerirá enviar, información a los usuarios de la RED, esto lo podrá realizar por medio de la opción “Enviar e-mail”.
Inicio: Dar clic en el Botón “Enviar e-mail” incluido en la interfaz de Reporte Histórico
XXXVIII
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
transferencia de archivos entre usuarios de la RED 4. Debe existir servicio de correo electrónico.
Post Condiciones: El Administrador del Sistema podrá mantener comunicación con el usuario a través de mensajes a su correo electrónico.
Flujo Normal:
1. El Administrador del Sistema, constata alguna novedad con respecto al un usuario en particular o desea comunicar alguna información de manera general.
2. Da clic sobre el botón “Enviar e-mail”. 3. Se despliega un espacio donde puede incluir texto. 4. Envía mail por medio de botón enviar.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 003. Lista de PCS encendidas y miembros de red
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
El usuario debe contar con una cuenta de correo del dominio de la RED.
Suposiciones: El caso de uso existe en base la necesidad del Administrador del Sistema de mantenerse comunicado con los miembros de la RED, para requerimientos generales.
Notas:
Tabla 8: Enviar e-mail a los usuarios
2.10.7. Ejecutar el antivirus en los usuarios
ID Caso de Uso: 007
Nombre del caso de uso:
Ejecutar el antivirus en los usuarios
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del Sistema
Descripción: El Administrador del Sistema podrá ejecutar de manera remota el antivirus en las PCS de los usuarios, en el caso de que éste no haya sido ejecutado el los últimos días.
Inicio: 1. El Administrador del Sistema inicia la acción seleccionando las
PCS en la que desea ejecutar el Antivirus de forma remota.
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED
Post Condiciones:
El Administrador del Sistema podrá observar en la interfaz del Sistema “Toda la Red” que la fecha de ejecución del Antivirus en los usuraos seleccionados se actualiza con la fecha de la ejecución realizada.
Flujo Normal: 1. El Administrador del Sistema observa en la interfaz “Toda la Red”
la fecha de ejecución del antivirus en la PC del usuario. 2. En el caso de no estar actualizada en uno o varios usuarios los
XXXIX
selecciona de la lista que muestra la interfaz. 3. Da clic en el botón “Ejecutar Antivirus”.
Flujo Alternativo: El usuario dueño de la PC en la que no se ha ejecuta en Antivirus podrá ejecutarlo en caso de tener necesidad.
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 003. Lista de PCS encendidas y miembros de red
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
1. De presencia el Antivirus deberá ser ejecutado el horas de la mañana, y de ser necesario en horas de la tarde.
2. El Administrador del Sistema puede solicitar que los usuarios dejen PCS encendidas al salir del trabajo para realizar ejecuciones de Antivirus, siempre que lo autorice jefe de PCS
Requerimientos Especiales: Las PCS deben estar encendidas para ejecutar Antivirus.
Suposiciones: El caso de uso existe en base a la necesidad del Administrador de poder ejecutar de manera remota el antivirus, sin necesidad de moverse de su puesto de trabajo
Notas:
Tabla 9: Ejecutar el antivirus en los usuarios
2.10.8. Creación tipo configuración
ID Caso de Uso: 008
Nombre del caso de uso:
Creación tipo configuración
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción: El Administrador del sistema podrá crear un tipo de configuración que sea requerida.
Inicio: Podrá iniciar la acción dando clic sobre el botón de la interfaz principal “Creación Tipo Configuración”
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la Red. 4. Deben existir tipos de configuración ingresadas 5. deben existir configuraciones ingresadas para poder ser
asignadas.
Post Condiciones: El Administrador del Sistema podrá consultar las máquinas con sus configuraciones respectivas.
Flujo Normal:
1. El Administrador del Sistema da clic sobre el botón “Creación Tipo Configuración”
2. Se mostrara una pantalla que permite ingresar un tipo de configuración requerida.
3. Guarda los cambios.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
XL
Casos de uso incluidos: 001. Autenticación de Usuarios.
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio: Se crearan tipos de configuraciones que el administrador requiera.
Requerimientos Especiales:
Suposiciones: El caso de uso existe para que el Administrador tenga la facilidad de crear tipos de configuraciones.
Notas:
Tabla 10: Creación tipo configuración
2.10.9. Ingreso configuración
ID Caso de Uso: 009
Nombre del caso de uso:
Ingreso configuración
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Ejecutar el antivirus en los usuarios
Descripción: Se podrá definir la hora y la fecha en que la definición deberá ser bajada tanto por parte del servidor desde Internet, y por parte del usuario de PCS desde el servidor.
Inicio: 1. Se dará inicio a esta acción dando clic sobre el botón
“parámetros/políticas”.
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED 4. definición correcta de los parámetros del sistema
operativo.
Post Condiciones: Actualización automática de parámetros de descarga
Flujo Normal:
1. El Administrador del Sistema selecciona la opción “Ingreso Configuración” que le brinda la interfaz principal.
2. Ingresar el día y hora en que será ejecutado una alarma, descarga o algún otro tipo de configuración previamente creada.
3. Dar clic sobre el botón guardar.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 008. Creación tipo configuración
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio: Todos los parámetros son definidos en base a las reglas del negocio de la compañía.
Requerimientos
XLI
Especiales:
Suposiciones: El caso de uso existe por la necesidad del Administrador del Sistema de poder configurar los parámetros de manera fácil y amigable.
Notas:
Tabla 11: Asignación configuración maquina
2.10.10. Asignación configuración máquina
ID Caso de Uso: 010
Nombre del caso de uso:
Asignación configuración maquina
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción: El Administrador del sistema podrá asignar una configuración previamente establecida a las máquinas que se encuentran en red.
Inicio: Podrá iniciar la acción dando clic sobre el botón de la interfaz principal “Asignación Configuraciones Máquinas”
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED 4. Deben existir tipos de configuración ingresadas 5. deben existir configuraciones ingresadas para poder ser
asignadas.
Post Condiciones: El Administrador del Sistema podrá consultar las máquinas con sus configuraciones respectivas.
Flujo Normal:
1. El Administrador del Sistema da clic sobre el botón “Asignación Configuraciones Máquinas”
2. Se presentarán dos grid en uno de ellos las máquinas que están en red. Se presentarán los diferentes tipos de configuraciones que han sido ingresadas.
3. El Administrador selecciona la máquina a la que desea asignar una configuración, a continuación elije la configuración.
4. Guarda los cambios.
Flujo Alternativo:
El Administrador del Sistema da clic sobre el botón “Asignación Configuraciones Máquinas”. Si no existen configuraciones previamente ingresadas el Administrador deber
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 008. Creación tipo configuración 009. Ingreso configuración
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio: Todas las políticas son definidas en base a las reglas del negocio de la compañía.
Requerimientos Especiales:
Suposiciones: El caso de uso existe para que el Administrador tenga conocimiento de las políticas que rigen el Sistema.
Notas:
Tabla 12: Asignación configuración maquina
XLII
2.10.11. Reporte de Descargas
ID Caso de Uso: 011
Nombre del caso de uso:
Reporte de descargas
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción:
Este reporte mostrará que tan satisfactorias fueron las acciones tomadas por el Administrador del sistema con respecto a la replicación de la definición a los usuarios de RED, indicando resultados para la toma de acciones.
Inicio: Se dará inicio a esta acción dando clic sobre el botón “Reportes”
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED 4. definición correcta de los parámetros del sistema
operativo. 5. debe existir comunicación efectiva entre el Sistema y el
Antivirus usado.
Post Condiciones: Reporte detallado de replicación de antivirus a miembros de RED
Flujo Normal: 1. El Administrador del Sistema selecciona la opción
“Reportes” que le brinda la interfaz principal. 2. Se mostrará reporte detallado.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 005. Enviar definición a usuarios
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
Suposiciones: El caso de uso existe por la necesidad del Administrador del Sistema de contar con un reporte detallado para poder ser extendido a los solicitantes.
Notas:
Tabla 13: Reporte de descargas
2.10.12. Reporte de resultado de SCAN
ID Caso de Uso: 012
XLIII
Nombre del caso de uso:
Reporte de resultado de SCAN
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción:
Este reporte mostrará que tan satisfactorias fueron las acciones tomadas por el Administrador del sistema o usuario con respecto a la ejecución del Antivirus en la PC, con el fin de tomar acciones inmediatas.
Inicio: Se dará inicio a esta acción dando clic sobre el botón “Reportes”
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED 4. definición correcta de los parámetros del sistema
operativo. 5. debe existir comunicación efectiva entre el Sistema y el
Antivirus usado.
Post Condiciones: Reporte detallado del resultado del scan de antivirus a miembros de RED
Flujo Normal: 1. El Administrador del Sistema selecciona la opción
“Reportes” que le brinda la interfaz principal. 2. Se mostrará reporte detallado.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios 007. Ejecutar el antivirus en los usuarios 004 Reporte scan maquina
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
Suposiciones: El caso de uso existe por la necesidad del Administrador del Sistema de contar con un reporte detallado para poder ser extendido a los solicitantes.
Notas:
Tabla 14: Reporte de resultado de SCAN
2.10.13. Ingreso de usuarios
ID Caso de Uso: 013
Nombre del caso de uso:
Ingreso de Usuarios
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción: Se podrá ingresar datos de un usuario nuevo de la red.
XLIV
Inicio: Se dará inicio a esta acción dando clic sobre la opción “Ingreso/Actualización Usuario”.
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED 4. Definición correcta de los parámetros del sistema
operativo. 5. Debe existir comunicación efectiva entre el Sistema y el
Antivirus usado.
Post Condiciones: Ingreso de usuario satisfactoriamente.
Flujo Normal: 1. El Administrador del Sistema selecciona la opción
“Gestión usuario” que le brinda la interfaz principal. 2. Seleccionar “Ingreso/Actualización de Usuario”.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
Suposiciones: El caso de uso existe para el ingreso u actualizaciones de usuarios de la Red.
Notas:
Tabla 15: Ingreso de usuarios
2.10.14. Asignación de Rol
ID Caso de Uso: 014
Nombre del caso de uso:
Asignación de Rol
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción: Se podrá asignar un rol predefinido aun usuario de la red.
Inicio: Se dará inicio a esta acción dando clic sobre la opción “Asignación Rol”.
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED
XLV
4. Definición correcta de los parámetros del sistema operativo.
5. Debe existir comunicación efectiva entre el Sistema y el Antivirus usado.
Post Condiciones: Asignación de rol satisfactoriamente.
Flujo Normal: 1. El Administrador del Sistema selecciona la opción
“Gestión usuario” que le brinda la interfaz principal. 2. Seleccionar “Asignación Rol”.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
Suposiciones: El caso de uso existe para relacionar un rol con un usuario de la Red.
Notas:
Tabla 16: Asignación de rol
2.10.15. Inactivación de usuario
ID Caso de Uso: 015
Nombre del caso de uso:
Inactivación de usuario
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción: Se podrá inactivar un usuario de la red.
Inicio: Se dará inicio a esta acción dando clic sobre la opción “Inactivación de Usuario”.
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED 4. Definición correcta de los parámetros del sistema
operativo. 5. Debe existir comunicación efectiva entre el Sistema y el
Antivirus usado.
Post Condiciones: Ingreso de usuario satisfactoriamente.
Flujo Normal: 1. El Administrador del Sistema selecciona la opción
XLVI
“Gestión usuario” que le brinda la interfaz principal. 2. Seleccionar “Inactivación Usuario”.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
Reglas de Negocio:
Requerimientos Especiales:
Suposiciones: El caso de uso existe para inactivar usuarios de la red.
Notas:
Tabla 17: Inactivación usuario
2.10.16. Reseteo clave
ID Caso de Uso: 016
Nombre del caso de uso:
Reseteo de clave
Creado por: Ketty Ronquillo. Actualizado por: Christian Baque
Fecha de creación: 09-07-2007 Fecha de la ultima actualización:
02-11-2007
Actores: Administrador del sistema.
Descripción: Se podrá resetear la clave de un usuario de la red.
Inicio: Se dará inicio a esta acción dando clic sobre la opción “Reseteo clave”.
Precondiciones:
1. El Sistema debe estar 100% operativo 2. Base de datos operativa. 3. Debe existir un canal de comunicación para lograr la
comunicación entre usuarios de la RED 4. Definición correcta de los parámetros del sistema
operativo. 5. Debe existir comunicación efectiva entre el Sistema y el
Antivirus usado.
Post Condiciones: Ingreso de usuario satisfactoriamente.
Flujo Normal: 1. El Administrador del Sistema selecciona la opción
“Gestión usuario” que le brinda la interfaz principal. 2. Seleccionar “Reseteo clave”.
Flujo Alternativo:
Excepciones: Puede existir con fallo de conexión con la BD o del medio de comunicación. Se mostrará un mensaje al usuario indicando que se comunique con el Administrador del Sistema.
Casos de uso incluidos: 001. Autenticación de Usuarios
Prioridad:
Frecuencia de Uso: Definido por el Administrador del Sistema
XLVII
Servidor BD
<<database>>Postgres
Postmaster
TCP/IP
TCP/IP
JVM - Java Virtual Machine
Servidor WEB
Java JDBC
Acceso a BD
Logica de Negocio
Interface Gráfica
Cliente
Browser
JVM
Servidor Web
PeticionProcesar
Paginas JSP
Responde
Reglas de Negocio:
Requerimientos Especiales:
Suposiciones: El caso de uso existe para resetear la clave de uno o varios usuarios de la Red.
Notas:
Tabla 18: Reseteo clave
2.11. Diagrama de componentes
Los componentes que se han utilizado, la base de Datos en la capa
inferior, los servicios web, lógica de negocio y componentes en la capa
intermedia y por ultimo el GUI que proporcionaran el acceso a nivel de
usuario a la aplicación. Ver ilustración 8.
Ilustración 8: Diagrama de componentes
XLVIII
CAPITULO 3
3. Diseño orientado a objetos
3.1. Diagrama de clases
3.1.1. Diagrama de clases de procedimientos
Las clases para la ejecución de procedimientos particulares del
sistema, es decir, representan las tareas que de manera especifica
realiza es sistema SKYLINX como: La Gestión del menú, Gestión de
Activación e inactivación de maquinas, cada uno de estos
procedimientos particulares heredan de una clase principal llamada
procedimiento que contiene los atributos comunes de los
procedimientos. Ver Ilustración 9
XLIX
Ilustración 9: Diagrama clases de procedimientos
Ilustración 10: Diagrama de clases persistentes
3.1.2. Diagrama de clases persistentes
Las clases persistentes representan las clases base o plantillas para
el proyecto SKYLINX. Ver Ilustración 10
3.1.3. Diagrama de clases de interfaz
Las clases que se muestran aquí son las que me van a permitir la
creación dinámica de clases, si se desea hacer uso de alguna
opción del sistema SKYLINX, las clases del sistema no se
instanciarán todas a la vez sin que éstas vayan a ser usadas, sino al
contrario, la clase InterfazControlAccesoDatosVista gestionara la
L
creación de instancias de las clases necesarios solo en las opciones
y momentos requeridas.Ver Ilustración 11
Ilustración 11: Diagrama de clases de interfaz
3.1.4. Diagrama de clases de servlet
Las clases que se muestran en la ilustración 12 nos indica la forma
en que se utilizan los servlet en el sistema SKYLINX.
Ilustración 12: Diagrama de clases de servlet
3.2. Diagrama de asociación de clases
3.2.1. Diagrama de asociación del modelo
Las clases del modelo SKYLINX, representan las entidades del modelo
de base de datos. Ver Ilustración 13
LI
Ilustración 13: Diagrama asociación de clases
LII
3.2.2. Diagrama de asociación del modelo SKYLINX
Estas clases representan las asociaciones de las entidades propias
del modelo SKYLINX. Ver Ilustración 14
Ilustración 14: Diagrama asociación del modelo SKYLINX
Ilustración 15: Diagrama de asociación de interfaz - servlet
3.2.3. Diagrama de asociación de interfaz - servlet
A continuación en la ilustración 15, se observa el diagrama de asociación de
interfaz del sistema SKYLINX
LIII
3.3. Diagrama de Introducción al Sistema
Ilustración 16: Diagrama de introducción al sistema
En el esquema que se presenta en la ilustración 16, representa la
“Introducción al Sistema” desarrollada a través de una animación Flash.
Adicional se observa un link que permite saltarse esta introducción e irse a una
pantalla con la siguiente interfaz.
3.4. Diagrama de Autenticación
LIV
Ilustración 17: Diagrama de autenticación
En la ilustración 17, podemos observar la existencia de una cabecera donde
constara el nombre y logotipo de la aplicación, una sección donde se realizara
el ingreso de Usuario y Password para acceder al sistema.
Después de la primera autentificación de Usuario y Password, se le pedirá
cambiar su Password, por seguridad. La identificación exitosa procederá a
mostrarse la ilustración 18, pantallas con características similares a las
siguientes.
Ilustración 18: Diagrama general
LV
3.5. Diagrama de Interfaz Top 10
Ilustración 19: Diagrama de interfaz Top 10
Se visualizara los 10 virus mas frecuentes, encontrados en la red el cual se
podrá imprimir, enviar por e-mail o exportar a la hoja de cálculo de Excel, como
se muestra en la ilustración 19.
3.6. Diagrama Toda la Red
LVI
Ilustración 20: Diagrama de Mis PCs
Esta pantalla se mostrará por medio de dos Grid las PCs que se encuentran
encendidas y apagadas, aquí podremos realizar acciones como enviar e-mail a
los usuarios, enviar las definiciones, ejecutar el antivirus a los usuarios en las
PCs activas y mostrar la información de los análisis efectuados en cada
maquina, como nos presenta la ilustración 20.
3.7. Diagrama de Reporte descargas
Ilustración 21: Diagrama de Histórico de PCS
El Reporte descargas constara de una lista detallada de las PCs, con datos
como la IP, nombre de la maquina, Fecha de definición actual, Fecha de último
LVII
Análisis, en esta interfaz: ilustración 21, el administrador podrá ejecutar
acciones tales como, envío del reporte por e-mail, exportación del reporte a
Excel e imprimir directamente.
3.8. Diagramas de reportes Scan Maquina
Ilustración 22: Reportes
La interfaz de Reportes de Scan Maquina ilustración 22, que se encuentra
como una opción del “Diagrama Toda la Red” el administrador podrá visualizar
información consolidada de todos los Scan realizados a la maquina que haya
seleccionado, el cual podrá ser exportado, imprimirlo o enviarlo por e-mail a
LVIII
quien lo solicite. Dentro de este diagrama podremos visualizar el detalle
especifico por cada scan realizado. Ver ilustración 23.
Ilustración 23: Reportes
3.9. Diagrama Ingreso de Usuario
Como se muestra en la ilustración 20 esta opción nos permite el ingreso de
datos de los usuarios que pueden o no estar relacionado con una o varias
maquinas de la Red.
LIX
Ilustración 24: Diagrama ingreso usuario
3.10. Diagrama Asignación de Rol
Como se muestra en la ilustración 21 esta opción nos permite relaciona un
usuario con un rol predefinido en el sistema.
Ilustración 25: Diagrama asignación de Rol
3.11. Diagrama inactivación de usuario
En la ilustración 26 podremos activar e inactiva usuarios de la red.
Ilustración 26: Diagrama inactivación de usuario
3.12. Diagrama reseteo de clave
LX
La interfaz reseteo de clave nos permitirá resetear la clave de un usuario que
haya sido ingresado respectivamente y que no haya iniciado sesión, como se
muestra en la ilustración 27.
Ilustración 27: Diagrama reseteo de clave
3.13. Diagrama creación/eliminación tipo configuración
En esta interfaz: ilustración 28; el administrador podrá crear o eliminar tipos de
configuraciones particulares que posee su organización tales como alarmas y
descargas.
LXI
Ilustración 28: Diagrama creación/eliminación de tipo configuración
3.14. Diagrama ingreso configuración
En esta interfaz: ilustración 29; el administrador podrá ingresar un tipo de
configuración previamente definida asignándole un día y hora que el usuario
administrador quiera establecer.
Ilustración 29: Diagrama ingreso configuración
3.15. Diagrama asignación configuraciones maquinas
LXII
En esta interfaz: ilustración 30, el administrador podrá relacionar una maquina
con una configuración previamente ingresada en el sistema.
Ilustración 30: Diagrama asignación configuraciones maquinas
3.16. Diagrama usuarios de la red
Esta interfaz: ilustración 31, nos presenta información referente a los usuarios
de la red como, nombres, usuario, nombre maquina, es decir a que maquina
esta relacionado.
LXIII
Ilustración 31: Diagrama asignación configuraciones maquinas
LXIV
CAPITULO 4
4. Implementación
4.1. Estándares del sistema
El sistema en su estructura esta ordenado de la siguiente forma; dentro del
directorio SkyLinx se muestran los directorios principales como:
Paginas
WEB-INF
Css
Imágenes
Js
Reportes
Páginas: Las páginas se encuentran dentro de este directorio, y fueron
diseñadas de la siguiente manera:
Páginas con iníciales “ppa”: Corresponden a las páginas principales de la
aplicación.
El patrón que se siguió para nombrar las paginas se detalle de la siguiente
forma; los dos caracteres iníciales del nombre corresponden al nombre de la
aplicación en este caso “SK”, dos caracteres siguientes correspondientes al
nombre del modulo, por ejemplo:
GE para general
LXV
GC para gestión configuración
GM gestión máquina
GU gestión usuario
A continuación unos caracteres que representa la funcionalidad de cada que
tenga el archivo que se esta nombrando, listamos algunos ejemplos:
E de ejecución
P de página
F arreglo de frame
Con este detalle que hemos expuesto, podríamos definir como prefijo del
nombre que se asigna a algún objeto de nuestra aplicación así; para el nombre
de un JSP del proyecto SKYLINX del modulo Gestión Maquina que ejecuta la
llamada a una clase seria.
SKGME_
Seguido del un nombre descriptivo de la pagina en si. Por otra parte podemos
detallar de manera general la estructura de nuestra aplicación de la siguiente
forma.
WEB-INF Encontraremos las clases y librerías propias del sistema SKYLINX
\SkyLinx\WEB-INF\lib
\SkyLinx\WEB-INF\classes
Siguiendo la estructura
\SkyLinx\WEB-INF\classes
LXVI
Modelo.- Encontramos las clases básicas de la aplicación las mismas que son
heredades por la capa procesos, constituyen la plantilla de clases de nuestro
sistema.
Capa Procesos.- Aquí encontraremos como su nombre lo indica los procesos
propios del sistema archivos .java y. clases correspondientes a las diferentes
funcionalidades de la aplicación.
Gestión Máquina
Configuración
Gestión Usuarios
Java Mails
Utilidades Generales
Controlador.- Se encuentran las clases que gestionan la conexión y creación
de las clases dinámicas necesarios al momento de utilizar la aplicación.
4.2. Componentes Principales
Los componentes principales de SKYLINX se detallan a continuación:
GeneraMenuDinamico.java
Twofish.java
LXVII
GestorConfiguraciones.java
GestorConfiguracionesValor.java
GestorActivacionInactivacionMaquina.java
GestorMaquinas.java
GestorUsuarios.java
GestorMantenimientoUsuario.java
SendMail.java
GestionExportacion.java
GeneraMenuDinamico.-
Este Componente nos permite generar de forma dinámica el menú que se
presenta al inicio de sesión de la aplicación, consulta de la base de datos,
específicamente de las tablas “Opciones aplicación” y ”opciones_ roles”, los
menús que están relacionados entre si, significa que mostrará tanto los menús
padres como los hijos de acuerdo a los parámetros que se hayan establecido,
de esta forma se evita quemar los menús y facilitar el crecimiento dinámico.
package capaProcesos.procedimientos.aplicacion;
import org.hibernate.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import javax.servlet.jsp.PageContext;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.opciones.Opcion;
import java.sql.*;
public class GeneraMenuDinamico extends Procedimiento
{
//String separador = "";
public GeneraMenuDinamico ()
{
super("Procesos de aplicacion");
}
/*
*Metodo que realiza el pintado
*de los menus padres
LXVIII
*de la aplicacion
**/
public void generarMenuDinamico (Session sesionHibernate,
PageContext contextoPagina)throws Exception //, PrintWriter out)
{
System.out.println(" hola mundo ");
HttpSession sessionServlet = contextoPagina.getSession();
RolAplicacion roll =
(RolAplicacion)sessionServlet.getAttribute("rollGlobal");
//Con este query obtengo todos los menus padres
//String lsQuery = " from
modelo.clasesPersistentes.opciones.Opcion opcion where opcion.estado = 'A' and
opcion.opcionesAplicacions = null and opcion.opcionesRoleses.id.idRol = " +
roll.getIdRol();
//System.out.println("paso el query " + lsQuery );
//Iterator lista =
sesionHibernate.createQuery(lsQuery).iterate();
//System.out.println("paso la ejecucion");
//sesionHibernate.flush();
PreparedStatement prepareStatementPadre = null;
ResultSet resultadoPadres = null;
String lsQuery = "select a.* from opciones_roles b, "+
" opciones_aplicacion a " +
" where b.id_rol = "+ roll.getIdRol()
+ " " +
" and b.estado = 'A' "+
" and a.id_opcion_aplicacion =
b.id_opcion "+
" and a.ID_MODULO_PADRE is null "+
" and a.estado = 'A' "+
" and a.tipo_opcion = 'MNU' "+
" order by a.orden";
Connection coneccion = sesionHibernate.connection();
prepareStatementPadre = coneccion.prepareStatement(lsQuery);
resultadoPadres = prepareStatementPadre.executeQuery();
try
{
/*Tener cuidado con la coneccion
**/
contextoPagina.getOut().println(" <script> ");
contextoPagina.getOut().println("var tmenuItems = [ ");
while (resultadoPadres.next() )
{
//Opcion loOpcion = (Opcion)lista.next();
Opcion loOpcion = new Opcion();
loOpcion.setDescripcion(resultadoPadres.getString(3));//String
loOpcion.setDireccionAplicacion(resultadoPadres.getString(8));//Stri
ng
loOpcion.setEstado(resultadoPadres.getString(11));//--String
loOpcion.setIdOpcion(resultadoPadres.getString(1));//--String
loOpcion.setIdOpcionAplicacion(new
Integer(resultadoPadres.getString(2)));//Integer
loOpcion.setNombreOpcion(resultadoPadres.getString(5));//String
loOpcion.setNombrePagina(resultadoPadres.getString(10));//String
loOpcion.setTarget(resultadoPadres.getString(6));//String
LXIX
loOpcion.setTitulo(resultadoPadres.getString(7));//String
String descripcion = loOpcion.getDescripcion();
contextoPagina.getOut().println("[\""+ descripcion
+"\",\"\", \"\", \"\", \"\", \""+descripcion+"\", \"_blank\", \"\", \"\",
],");
System.out.println("Opcion Padre " + descripcion);
//separador = "";
System.out.println("[\""+ descripcion.trim()
+"\",\"\", \"\", \"\", \"\", \""+descripcion.trim()+"\", \"_blank\", \"\",
\"\", ],");
//PREGUNTAR SI TIENE HIJOS
generaMenusHijos (loOpcion.getIdOpcion(), coneccion,
contextoPagina);
}
contextoPagina.getOut().println("]; ");
contextoPagina.getOut().println(" </script> ");
//Cerra la coneccion
coneccion.close();
//sesionHibernate.close();
}
catch (Exception h)
{
throw new Exception ("Error al generar el menu dinamico " +
h.getMessage());
}
finally
{
coneccion.close();
}
// String queryQue obtieneSoloLosPadre = "";
//contextoPagina.getOut().println("[\""+ descripcion +"\",\"\",
\"\", \"\", \"\", \""+descripcion+"\", \"_blank\", \"\", \"\", ],");
}
/*
*Metodo que genera el pintado de los menus hijos
*este metodo es llamado internamente por los menus padres
**/
public void generaMenusHijos (String opcionPadre, Connection
coneccion, PageContext contexto ) throws Exception
{
PreparedStatement prepareStatementHijo = null;
ResultSet resultado = null;
int primero = 0;
HttpSession sessionServlet = contexto.getSession();
RolAplicacion roll =
(RolAplicacion)sessionServlet.getAttribute("rollGlobal");
// System.out.println("este es el separador para " + opcionPadre + "
-- " + separador);
try
{
String lsQueryHijos = " select * "+
" from opciones_aplicacion t,
" +
" opciones_roles b "
+
" where t.ID_MODULO_PADRE = '"
+ opcionPadre +"'"+
" and t.id_opcion_aplicacion
= b.id_opcion "+
LXX
" and b.estado = 'A' "+
" and b.id_rol = "+
roll.getIdRol() + " " +
" and t.estado = 'A'" +
" and t.tipo_opcion = 'MNU'"
+
" order by t.orden";
System.out.println(lsQueryHijos);
prepareStatementHijo = coneccion.prepareStatement(lsQueryHijos);
resultado = prepareStatementHijo.executeQuery();
while ( resultado.next() )
{
primero++;
if (primero == 1 )
{
// separador = separador + "|";
}
System.out.println("Entro a buscar a los hijos");
String descripcion = resultado.getString(3);
String pagina = resultado.getString(10);
String target = resultado.getString(6);
String titulo = resultado.getString(7);
String rutaAplicacion = resultado.getString(8);
System.out.println("Pagina: " + pagina );
System.out.println("Descripcion: " + descripcion );
System.out.println("Target: " + target );
System.out.println("Titulo: " + titulo );
System.out.println("Ruta: " + rutaAplicacion );
if ( pagina==null)
{
pagina="";
rutaAplicacion = "";
}
//contexto.getOut().println("[\""+ separador+ descripcion
+"\",\""+rutaAplicacion+pagina+"\", \"\", \"\", \"\", \""+titulo+"\",
\""+target+"\", \"\", \"\", ],");
contexto.getOut().println("[\""+ descripcion.trim()
+"\",\""+rutaAplicacion.trim()+pagina.trim()+"\", \"\", \"\", \"\",
\""+titulo.trim()+"\", \""+target.trim()+"\", \"\", \"\", ],");
//System.out.println("[\""+ separador+ descripcion
+"\",\""+rutaAplicacion+pagina+"\", \"\", \"\", \"\", \""+titulo+"\",
\""+target+"\", \"\", \"\", ],");
generaMenusHijos( resultado.getString(1),coneccion, contexto);
}
// separador = separador.substring(separador.length()-1);
}
catch (Exception t)
{
throw new Exception ("Error al generar el menu dinamico " +
t.getMessage());
}
finally
{
prepareStatementHijo.close();
resultado.close();
}
}
/*
*Metodo invocado desde el controlador de procesos
*llama internamente a metodo que genera el menu dinamico
**/
public void dibujarMenuDinamico (HashMap parametros)throws Exception
LXXI
{
System.out.println("Voy a pintar --------------------------------
-------------");
PageContext out = (PageContext)parametros.get("contextoPagina");
// JspWriter out =
(JspWriter)parametros.get("contextoPagina");
System.out.println("Obtuve correctamente el objeto print");
Session sesionHibernate =
(Session)parametros.get("sessionHibernate");
//---------------------------------------------------------------
-
try
{
generarMenuDinamico(sesionHibernate, out);
//sesionHibernate.close();
}
catch (Exception e)
{
throw new Exception (e.toString());
}
finally
{
// sesionHibernate.close();
}
}
}
GestorConfiguraciones.-
Permite el ingreso de los diferentes tipos de configuraciones que será posible
parametrizar en el sistema. Tales como alarmas y descargas.
package capaProcesos.procedimientos.skylinx.configuracion;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
LXXII
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
public class GestorConfiguraciones extends Procedimiento
{
public GestorConfiguraciones ()
{
super ("Procesos de aplicacion");
}
public void registraConfiguracion ( Session psSesionServlet,
TipoConfiguracion
tipoConfiguracion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
psSesionServlet.save(tipoConfiguracion);
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
transaccion.rollback();
System.out.println( "Este es el mensaje " + j.getMessage()
);
throw new Exception ("Error al registrar la configuracion "
+ j.getMessage());
}
}
public void gestionRegistraConfiguracion (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
registraConfiguracion (psSesionServlet,tipoConf);
}
//Para realizar la ejecucion del antivirus
public void registraParametroEjecucion ( Session psSesionServlet,
String
ipMaquina
) throws
Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
ParametrosGenerales pm = null;
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.claveParametro = '" +
LXXIII
ipMaquina + "' and t.estado = 'A' and
t.tipoParametro.idParametro = 3";
pm =
(ParametrosGenerales)psSesionServlet.createQuery(hql).uniqueResult();
String hlq2 = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as d where d.estado =
'A' and d.idParametro = 3 ";
if ( pm == null )
{
pm = new ParametrosGenerales();
TipoParametro t =
(TipoParametro)psSesionServlet.createQuery(hlq2).uniqueResult();
pm.setClaveParametro(ipMaquina);
pm.setEstado("A");
pm.setFechaRegistro(new Date());
pm.setObervacion("Se inserta desde el aplicativo Skylinx");
pm.setTipoParametro(t);
}
pm.setValor("S");
psSesionServlet.save(pm);
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
//transaccion.rollback();
System.out.println( "Este es el mensaje " + j.getMessage() );
throw new Exception ("Error al registrar la configuracion " + j.getMessage());
}
}
public void ejecutarAntivirus (HashMap parametros ) throws Exception
{
Session psSesionServlet = (Session)parametros.get("sessionHibernate");
String lsIp = (String)parametros.get("ls_ip");
//-----------------
registraParametroEjecucion (psSesionServlet,lsIp);
}
public void gestionAsignacionMaquina (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String lsIdUsuario = (String)parametros.get("idUsuario");
String lsIdMaquina = (String)parametros.get("idMaquina");
String lsObservacion = (String)parametros.get("observacion");
//-----------------
//registraParametroEjecucion (psSesionServlet,lsIp);
asignaMaquinaUsuario (
psSesionServlet,
lsIdUsuario,
lsIdMaquina,
lsObservacion
);
}
LXXIV
public void asignaMaquinaUsuario (
Session
psSesionServlet,
String lsIdUsuario,
String lsIdMaquina,
String
lsObservacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
Usuario user = null;
String hql = "from modelo.clasesPersistentes.usuario.Usuario as u
where u.idUsuario = " +
lsIdUsuario + " and u.estado = 'A'";
user = (Usuario)psSesionServlet.createQuery(hql).uniqueResult();
Maquina maquina = null;
String hqlMaquina = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where m.idMaquina = " +
lsIdMaquina + " and m.estado = 'A'" ;
maquina =
(Maquina)psSesionServlet.createQuery(hqlMaquina).uniqueResult();
MaquinaUsuario maquinaUsuario = new MaquinaUsuario();
maquinaUsuario.setFecha(new Date());
maquinaUsuario.setMaquina(maquina);
maquinaUsuario.setObservacion(lsObservacion);
maquinaUsuario.setUsuario(user);
psSesionServlet.save(maquinaUsuario);
transaccion.commit();
}
catch (Exception e)
{
System.out.println( "Este es el mensaje " + e.getMessage() );
throw new Exception ("Error al realizar la asignacion del usuario
y la maquina " + e.getMessage());
}
}
public void gestionEliminaConfiguracion (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String lsIdConfiguracion =
(String)parametros.get("idConfiguracion");
//-----------------
//registraParametroEjecucion (psSesionServlet,lsIp);
try
{
eliminaConfiguracion (
LXXV
psSesionServlet,
lsIdConfiguracion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Mensaje " + e );
}
}
public void eliminaConfiguracion (
Session
psSesionServlet,
String
lsIdConfiguracion
)throws Exception
{
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.TipoConfiguracion as u where
u.idTipoConfiguracion = " + lsIdConfiguracion;
TipoConfiguracion resultado =
(TipoConfiguracion)psSesionServlet.createQuery(hql).uniqueResult();
Set config = resultado.getConfiguracioneses();
if (config.size() > 0)
{
throw new Exception ("Error, se han realizado " +
config.size() + " creaciones de configuraciones del tipo " +
resultado.getDescripcion() + ", imposible realizar la eliminacion");
}
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
psSesionServlet.delete(resultado);
transaccion.commit();
}
catch (Exception e)
{
System.out.println( "Este es el mensaje " + e.getMessage()
);
throw new Exception ("Error al realizar la asignacion del
usuario y la maquina " + e.getMessage());
}
}
}
LXXVI
GestorConfiguracionesValor.-
Este componente nos permite la creación de configuraciones específicas como
por ejemplo hora y fecha en la que el servidor puede descargar de Internet la
definición, así como las configuraciones correspondientes a los clientes.
package capaProcesos.procedimientos.skylinx.configuracion;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
public class GestorConfiguracionesValor extends Procedimiento
{
public GestorConfiguracionesValor ()
{
super ("Procesos de aplicacion");
}
//Para registrar la configuracion
public void gestionConfiguracion (HashMap parametros ) throws
Exception
{
System.out.println("Entro al registro de configuracion");
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
Configuraciones configuracion =
(Configuraciones)parametros.get("Configuracion");
System.out.println("Paso el get de parametros");
//-----------------
registraConfiguracionValor (psSesionServlet,configuracion);
}
public void registraConfiguracionValor ( Session psSesionServlet,
Configuraciones
configuracion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
System.out.println("------------En la clase tomo esto " +
configuracion.getTipoConfiguracion().getDescripcion());
try
{
psSesionServlet.save(configuracion);
LXXVII
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
transaccion.rollback();
System.out.println( "Este es el mensaje " + j.getMessage()
);
throw new Exception ("Error al registrar la configuracion
en valores " + j.getMessage());
}
}
public void gestionAsignacionConfiguracion (HashMap parametros )
throws Exception
{
System.out.println("Entro al registro de configuracion");
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
//---------------------------------
String ls_idConfig=(String)parametros.get("idConfiguracion");
String ls_ipMaquina=(String)parametros.get("ipMaquina");
String ls_ruta=(String)parametros.get("ruta");
String ls_observacion =(String)parametros.get("observacion");
System.out.println("Paso el get de parametros");
//-----------------
try
{
registraAsignacionConfiguracion (
psSesionServlet,
ls_idConfig,
ls_ipMaquina,
ls_ruta,
ls_observacion
);
}
catch (Exception e)
{
throw new Exception ("Error al registrar la asignacion " +
e);
}
}
public void registraAsignacionConfiguracion (
Session
psSesionServlet,
String ls_idConfig,
String
ls_ipMaquina,
String ls_ruta,
String
ls_observacion
) throws Exception
{
String hql = "from
LXXVIII
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where m.estado = 'A' and
m.ipMaquina = '" +ls_ipMaquina.trim() +"'";
Maquina maquina =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
String hql2 = "from
modelo.modeloSkylinx.clasesPersistentes.Configuraciones as m where m.estado =
'A' and m.idConfiguraciones = " +ls_idConfig.trim();
Configuraciones configuracion =
(Configuraciones)psSesionServlet.createQuery(hql2).uniqueResult();
String hql3 = "from
modelo.modeloSkylinx.clasesPersistentes.ConfiguracionesMaquinas as d where
d.estado = 'A' and d.maquina.ipMaquina='" + ls_ipMaquina.trim() + "' and
d.configuraciones.idConfiguraciones="+ls_idConfig.trim();
ConfiguracionesMaquinas confiMaquina =
(ConfiguracionesMaquinas)psSesionServlet.createQuery(hql3).uniqueResult();
Transaction transaccion = psSesionServlet.beginTransaction();
ConfiguracionesMaquinas confiMaquinaIngresar = new
ConfiguracionesMaquinas();
try
{
if (confiMaquina== null)
{//Ingresar
confiMaquinaIngresar.setConfiguraciones(configuracion);
confiMaquinaIngresar.setEstado("A");
confiMaquinaIngresar.setFechaRegistro(new Date());
confiMaquinaIngresar.setMaquina(maquina);
confiMaquinaIngresar.setObservacion(ls_observacion.toUpperCase().trim());
confiMaquinaIngresar.setRutaAccionConfiguracion(ls_ruta.toUpperCase().trim());
psSesionServlet.save(confiMaquinaIngresar);
transaccion.commit();
}
else
{//Caso contrario enviar error
transaccion.rollback();
throw new Exception ("Ya se realizo la asignacion de
la conifguracion " + configuracion.getDescripcion() + " a la maquina " +
maquina.getNombrePc() );
}
}
catch (Exception p)
{
transaccion.rollback();
throw new Exception ("Error " + p);
}
}
}
GestorActivacionInactivacionMaquina.-
LXXIX
Permite la activación e inactivación de las máquinas que ya no forman parte de
la red, para que de esta forma las máquinas que en el futuro sean ingresadas a
la red reciban una dirección IP que no cree conflicto con el resto de usuraos de
la red
package capaProcesos.procedimientos.skylinx.gestionMaquinas;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorActivacionInactivacionMaquina extends Procedimiento
{
public GestorActivacionInactivacionMaquina ()
{
super ("Procesos de aplicacion");
}
public void inactivaPc (
Session psSesionServlet,
String idMaquina,
String observacion
) throws Exception
{
System.out.println("Este es el id_maquina " + idMaquina);
System.out.println("Ingreso a la clase que inactiva la pc");
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where m.idMaquina = " +
idMaquina;
Maquina maquina =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
maquina.setEstado("I");
maquina.setObservacion(observacion);
Transaction transaccion = psSesionServlet.beginTransaction();
psSesionServlet.update(maquina);
transaccion.commit();
}
LXXX
public void gestionInactivaMaquinas (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String idMaquina = (String)parametros.get("id_maquina");
String observacion = (String)parametros.get("observacion");
//TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
try
{
inactivaPc (psSesionServlet, idMaquina, observacion);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar la maquina " +
e.getMessage());
}
}
GestorMaquinas.-
Este componente permite realizar el reinicio del servicio de named para
refrescar el archivo de Zonas del DNS además realiza la gestión de verificación
si una PC esta encendida o no; para, como ya hemos mencionado en capítulos
anteriores realizar tareas especificas sobre las PC encendidas.
package capaProcesos.procedimientos.skylinx.gestionMaquinas; import org.hibernate.*;
import capaProcesos.procedimientos.skylinx.ftp.FTPUtil;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
LXXXI
public class GestorMaquinas extends Procedimiento
{
public GestorMaquinas ()
{
super ("Procesos de aplicacion");
}
public void gestionarEstadosMaquinas (
Session psSesionServlet
) throws Exception
{
/*
*Para realizar el apagado de todas las maquinas
**/
try
{
Process resultadoRestar = Runtime.getRuntime().exec("
service named restart " );
//resultadoRestar.destroy();
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception ("Error resetar el servicio named " +
e.getMessage());
}
try
{
apagarMaquinas (psSesionServlet);
}
catch (Exception e1)
{
e1.printStackTrace();
throw new Exception ("Error al realizar el apagado de las
maquinas " + e1.getMessage());
}
String hqlTipoMaquina = " from
modelo.modeloSkylinx.clasesPersistentes.TipoMaquina as tipo where tipo.estado
= 'A' and tipo.idTipoMaquina = 1";
TipoMaquina tipoActual =
(TipoMaquina)psSesionServlet.createQuery(hqlTipoMaquina).uniqueResult();
psSesionServlet.flush();
String hqlTipoMaquinaServer = " from
modelo.modeloSkylinx.clasesPersistentes.TipoMaquina as tipo where tipo.estado
= 'A' and tipo.idTipoMaquina = 2";
TipoMaquina tipoActualServer =
(TipoMaquina)psSesionServlet.createQuery(hqlTipoMaquinaServer).uniqueResult();
psSesionServlet.flush();
System.out.println("descripcion " +
tipoActualServer.getDescripcion() );
TipoMaquina tipoActualInsertar = null;
String archivoLog =
"/var/named/chroot/var/named/grupo5.com.zone";
System.out.println(archivoLog);
LXXXII
DataInputStream flujoTeclado = null;
java.io.FileInputStream archivo= new FileInputStream(archivoLog);
String valorLinea = " ";
String nombrePc = " ";
String ipPc = " ";
int bandera = 0;
flujoTeclado = new DataInputStream(archivo);
//Para control del commit
//realizarPingMaquinas(psSesionServlet);
/*****************
*
*/
// Cargar los tres tipos de parametros
String hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 3";
TipoParametro tpEjcutaAntivirus =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueResult();
//--------
hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 4";
TipoParametro tpejecutaRutaEjecucion =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueResult();
//-------
hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 5";
TipoParametro tpejecutaRutaLog =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueResult();
ParametrosGenerales pEjcutaAntivirus = new ParametrosGenerales();
pEjcutaAntivirus.setEstado("A");
pEjcutaAntivirus.setFechaRegistro(new Date());
pEjcutaAntivirus.setObervacion("Registra si se debe ejecutar el
antivirus o no");
pEjcutaAntivirus.setTipoParametro(tpEjcutaAntivirus);
pEjcutaAntivirus.setValor("N");
ParametrosGenerales pRutaEjecucionAntivirus = new
ParametrosGenerales();
pRutaEjecucionAntivirus.setEstado("A");
pRutaEjecucionAntivirus.setFechaRegistro(new Date());
pRutaEjecucionAntivirus.setObervacion("Registra la ruta de
ejecucion del antivirus");
pRutaEjecucionAntivirus.setTipoParametro(tpejecutaRutaEjecucion);
pRutaEjecucionAntivirus.setValor("C:\\\\Archivos de
programa\\\\ClamWin\\\\bin\\\\clamscan.exe --database=\\\"C:\\\\Documents and
Settings\\\\All Users\\\\.clamwin\\\\db\\\" --recursive C:\\\\virus -l
\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\log\\\\ClamScanLog.txt\\\" --remove");
ParametrosGenerales pRutaLog = new ParametrosGenerales();
pRutaLog.setEstado("A");
pRutaLog.setFechaRegistro(new Date());
pRutaLog.setObervacion("Registra la ruta del log");
pRutaLog.setTipoParametro(tpejecutaRutaLog);
pRutaLog.setValor("C:\\\\ClamWin\\\\ClamWin\\\\log\\\\ClamScanLog.tx
t");
//Faltan las claves del paramatro
LXXXIII
ParametrosGenerales pVerificacion = new ParametrosGenerales();
String lsQueryVerificaParametro = "";//"from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 3 and t.claveParametro = ";
/*
*Fin
* */
/*********************
*
*/
do
{
valorLinea = flujoTeclado.readLine();
if ( valorLinea != null)
{
if ( valorLinea.indexOf("$TTL") != -1 )
{
//Si encuentra
bandera++;
}
if ( bandera == 2)
{
/*valorLinea = flujoTeclado.readLine();*/
valorLinea = flujoTeclado.readLine();
if (valorLinea != null)
{
if ( valorLinea.indexOf("$TTL") != -1)
{
//return;
//servidor
valorLinea = flujoTeclado.readLine();
tipoActualInsertar = tipoActualServer;
}
else
{
tipoActualInsertar = tipoActual;
}
if ( valorLinea.toUpperCase().indexOf("WWW")
!= -1)
{
return;
}
else
{
String [] valores =
valorLinea.split("A");
/*valorLinea =
valorLinea.replaceAll("\t", " ");
valorLinea = valorLinea.trim();*/
nombrePc = valores[0].replaceAll("\t",
" ") .trim();
ipPc = valores[1].replaceAll("\t",
" ") .trim();
System.out.println("Esta es la linea
del archivo " + valorLinea);
System.out.println("Nombre pc " +
nombrePc);
System.out.println("IP pc " + ipPc);
LXXXIV
if
(nombrePc.toUpperCase().trim().equals("SERVER"))
{
tipoActualInsertar =
tipoActualServer;
}
else
{
tipoActualInsertar = tipoActual;
}
if ( ipPc.trim().equals("192.168.1.1")
)
{
tipoActualInsertar =
tipoActualServer;
}
else
{
tipoActualInsertar = tipoActual;
}
Maquina maquinaActual = new Maquina();
maquinaActual.setDescripcionPc(nombrePc.toUpperCase());
maquinaActual.setEstado("A");
maquinaActual.setEstadoOperacion("AP");
maquinaActual.setFechaRegistro(new
Date());
maquinaActual.setIpMaquina(ipPc);
maquinaActual.setNombrePc(nombrePc.toUpperCase());
maquinaActual.setObservacion("REALIZACION DE ACTULIZACION O
INSERCION AUTOMATICA DESDE EL ARCHIVO DNS " + new Date() );
maquinaActual.setTipoMaquina(tipoActualInsertar);
System.out.println("Se hara la
insercion");
Transaction transaccion =
psSesionServlet.beginTransaction();
//Para verificar si la pc se encuentra
en la base
String hqlVerificaMaquina = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A' and maquina.nombrePc = '"+ nombrePc.toUpperCase() +"' and
maquina.ipMaquina = '"+ipPc+"'";
Maquina maquinaVerifica =
(Maquina)psSesionServlet.createQuery(hqlVerificaMaquina).uniqueResult();
if ( maquinaVerifica == null)
{
System.out.println("Se
inserto");
//maquinaVerifica.setFechaRegistro(new Date());
System.out.println("paso el
seteo de fecha");
psSesionServlet.save(maquinaActual);
System.out.println("paso el
.save");
LXXXV
}
else
{
System.out.println("Se
actualizo");
maquinaVerifica.setEstadoOperacion("AP");
//maquinaVerifica.setTipoMaquina(tipoMaquina)
maquinaVerifica.setFechaRegistro(new Date());
maquinaVerifica.setTipoMaquina(tipoActualInsertar);
psSesionServlet.update(maquinaVerifica);
//psSesionServlet.delete(maquinaVerifica);
System.out.println("Se actualizo
el estado operativo");
}
/*
* --------------------------------------
-------------------------------------
* */
// La ip no cambia, por eso los valores de
los paramtros deben ir aqui
//Listo
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 3 and t.claveParametro = '" +
ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).uniqueResul
t();
if (pVerificacion == null)
{
//inserta
pEjcutaAntivirus.setClaveParametro(ipPc.trim());
psSesionServlet.save(pEjcutaAntivirus);
}
else
{
//actualiza
pVerificacion.setValor("N");
psSesionServlet.update(pVerificacion);
}
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 4 and t.claveParametro = '" +
ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).uniqueResul
t();
if (pVerificacion == null)
{
//inserta
pRutaEjecucionAntivirus.setClaveParametro(ipPc.trim());
LXXXVI
psSesionServlet.save(pRutaEjecucionAntivirus);
}
else
{
//actualiza
pVerificacion.setValor("C:\\\\Archivos de
programa\\\\ClamWin\\\\bin\\\\clamscan.exe --database=\\\"C:\\\\Documents and
Settings\\\\All Users\\\\.clamwin\\\\db\\\" --recursive C:\\\\virus -l
\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\log\\\\ClamScanLog.txt\\\" --remove");
psSesionServlet.update(pVerificacion);
}
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 5 and t.claveParametro = '" +
ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).uniqueResul
t();
if (pVerificacion == null)
{
//inserta
pRutaLog.setClaveParametro(ipPc.trim());
psSesionServlet.save(pRutaLog);
}
else
{
//actualiza
pVerificacion.setValor("C:\\\\ClamWin\\\\ClamWin\\\\log\\\\ClamScanL
og.txt");
psSesionServlet.update(pVerificacion);
}
/*
* ------------------------------------
----------------------------------------
* */
System.out.println("Voy a realizar el
commit");
transaccion.commit();
System.out.println("Se realizo el
commit");
}
}
}
}
}while ( valorLinea !=null);
flujoTeclado.close();
archivo.close();
}
public void gestionRegistraMaquinas (HashMap parametros ) throws
Exception
LXXXVII
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
//TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
try
{
gestionarEstadosMaquinas (psSesionServlet);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception("Error " + e.getMessage());
}
System.out.println("Esto es para hacer el ping");
this.realizarPingMaquinas(psSesionServlet);
System.out.println("se termino el ping es para hacer el ping");
}
public void apagarMaquinas ( Session psSesionServlet ) throws
Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A'";
Iterator consultaMasiva=
psSesionServlet.createQuery(hql).iterate();
psSesionServlet.flush();
Transaction transaccion = psSesionServlet.beginTransaction();
while ( consultaMasiva.hasNext())
{
Maquina maquiaAApagar = (Maquina)consultaMasiva.next();
maquiaAApagar.setEstadoOperacion("AP");
maquiaAApagar.setObservacion("Se apaga la maquina desde el
aplicativo SkyLinx");
psSesionServlet.update(maquiaAApagar);
}
transaccion.commit();
}
public void realizarPingMaquinas ( Session psSesionServlet ) throws
Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A'";
LXXXVIII
int contadorLineas = 0;
Iterator consultaMasiva=
psSesionServlet.createQuery(hql).iterate();
psSesionServlet.flush();
//PingICMP ping = new PingICMP();
String respuesta = "";
DataInputStream flujoTeclado = null;
DataInputStream flujoTeclado2 = null;
String informacion = null;
String informacion2 = null;
String buscaPing = "";
Transaction transaccion = psSesionServlet.beginTransaction();
while ( consultaMasiva.hasNext())
{
buscaPing = "ps -edaf | grep ping | grep ";// 192.168.1.254
contadorLineas = 0;
respuesta = "";
informacion = "";
Maquina maquiaAApagar = (Maquina)consultaMasiva.next();
System.out.println("Se hara el ping de la maquina " +
maquiaAApagar.getIpMaquina().trim());
Process resultado = Runtime.getRuntime().exec(" ping " +
maquiaAApagar.getIpMaquina().trim() );
flujoTeclado = new DataInputStream
(resultado.getInputStream());
while ( contadorLineas < 3)
{
informacion = flujoTeclado.readLine();
respuesta = respuesta + informacion + " ";
contadorLineas ++;
}
//flujoTeclado.close();
System.out.println("************************************************
******");
System.out.println("informacion encontrada " + respuesta);
System.out.println("************************************************
******");
respuesta = respuesta.toUpperCase();
if ( respuesta.indexOf("UNREACHABLE")!=-1 ||
respuesta.indexOf("NULL")!=-1 )
{
maquiaAApagar.setObservacion(respuesta);
respuesta = "";
maquiaAApagar.setEstadoOperacion("AP");
}
LXXXIX
else
{
maquiaAApagar.setObservacion(respuesta);
respuesta = "";
maquiaAApagar.setEstadoOperacion("EN");
System.out.print("Encontro por lo menos una maquina
encendida");
}
psSesionServlet.update(maquiaAApagar);
//resultado.destroy();
Process resultado2 = Runtime.getRuntime().exec(buscaPing +
" " + maquiaAApagar.getIpMaquina().trim() + " | awk '{print $2}'" );
System.out.print(buscaPing + " " +
maquiaAApagar.getIpMaquina().trim() + "|awk '{print $2}'" );
//********************************************
System.out.println("AQUI ESTA RESCULTADO 2");
System.out.println(resultado2);
//********************************************
flujoTeclado2 = new DataInputStream
(resultado2.getInputStream());
informacion2 = flujoTeclado.readLine();
System.out.println("p id " + informacion2);
//resultado2.destroy();
Process resultado3 = Runtime.getRuntime().exec("kill -9 "
+informacion2);
System.out.println("kill -9 " +informacion2);
}
transaccion.commit();
}
public void gestionaRegistroDescargas(HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String ipCliente =
(String)parametros.get("ipCliente");
String ls_esServer =
(String)parametros.get("esServer");
try
{
FTPUtil.beginTransactionFtp(ipCliente, ls_esServer);
registraDescarga(
psSesionServlet,
ipCliente
);
}
catch(Exception e)
{ e.printStackTrace();
throw new Exception ("Error al enviar la actualizacion "
+ e);
}
}
XC
public void registraDescarga (
Session
psSesionServlet,
String ipCliente
)throws Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A' and maquina.ipMaquina= '" + ipCliente.trim()+"'";
Maquina maquina1 =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
Descargas decarga = new Descargas ();
decarga.setMaquina(maquina1);
decarga.setEstado("A");
decarga.setFechaDescarga(new Date());
decarga.setNombre("DAILY.CVD - MAIN.CVD");
decarga.setTamanio("INFEFINIDO");
decarga.setObservacion("Descarga Exitosa, realizada desde SkyLinx
- Usuario Administrador");
Transaction t = psSesionServlet.beginTransaction();
try
{
psSesionServlet.save(decarga);
t.commit();
}
catch (Exception e)
{
e.printStackTrace();
t.rollback();
throw new Exception ("Error al registrar la descarga " +
e);
}
}
}
GestorUsuarios .-
Este componente nos permite realizar el ingreso de los usuarios a la base de
datos, además permite la asignación de roles a los usuarios, este rol debe ser
asignado a cada usuario para poder hacer uso de su sesión.
package capaProcesos.procedimientos.skylinx.gestionUsuarios;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
XCI
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.Connection;
import java.sql.PreparedStatement;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorUsuarios extends Procedimiento
{
public GestorUsuarios ()
{
super ("Procesos de aplicacion");
}
//Para realizar el ingreso de usuarios
public void gestionIngresoUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_nombres=(String)parametros.get("nombres");
String ls_apellidos=(String)parametros.get("apellidos");
String ls_ci=(String)parametros.get("ci");
String ls_sexo=(String)parametros.get("sexo");
String ls_sucursal=(String)parametros.get("sucursal");
String ls_ciudad=(String)parametros.get("ciudad");
String ls_direccion=(String)parametros.get("direccion");
String
ls_telefonoConvencional=(String)parametros.get("telefonoCasa");
String ls_celular=(String)parametros.get("celular");
String ls_correo=(String)parametros.get("correo");
String ls_observacion=(String)parametros.get("observacion");
byte[] lbA_foto=(byte[])parametros.get("archivoFoto");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
ingresaUsuario(
psSesionServlet,
ls_idUser,
ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_sucursal,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_correo,
XCII
ls_observacion,
lbA_foto
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al registrar el usuario " +
e.getMessage());
}
}
public void ingresaUsuario (
Session psSesionServlet,
String ls_idUser,
String ls_nombres,
String ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_sucursal,
String ls_ciudad,
String ls_direccion,
String
ls_telefonoConvencional,
String ls_celular,
String ls_correo,
String ls_observacion,
byte[] lbA_foto
) throws Exception
{
System.out.println("Entro en el proceso de ingreso de usuario");
String hqlSucursal = " from
modelo.clasesPersistentes.sucursales.Suscursales as suc where suc.estado = 'A'
and suc.idNumericoSucursal = " + ls_sucursal;
Suscursales sucursal =
(Suscursales)psSesionServlet.createQuery(hqlSucursal).uniqueResult();
//Usuario
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.usuario ='" + ls_idUser.toUpperCase() + "'";
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
if (usuario != null)
{
throw new Exception ("Error al registrar el usuario, ya
existe un usuario con el nombre " + ls_idUser.toUpperCase());
}
String hqlPersona = " from
modelo.clasesPersistentes.personas.Persona as person where person.estado = 'A'
and person.valorIdentificacion ='" + ls_ci + "'";
Persona person =
(Persona)psSesionServlet.createQuery(hqlPersona).uniqueResult();
if (person != null)
{
throw new Exception ("Error al registrar el usuario, ya
existe una persona registrada con la cedula " + ls_ci);
}
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
XCIII
//Persona
Persona persona = new Persona();
persona.setApellido(ls_apellidos.toUpperCase());
if (lbA_foto !=null)
{
persona.setArchivoFoto(""+ls_idUser.toUpperCase() + ".jpg");
}
//persona.setArchivosPersonases(set);
persona.setCelular(ls_celular);
persona.setCiudad(ls_ciudad.toUpperCase());
//persona.setClienteses(set);
persona.setDireccion(ls_direccion.toUpperCase());
persona.setEmail(ls_correo.toUpperCase());
//persona.setEmpleadoses(set);
persona.setEstado("A");
//persona.setFechaNacimiento(date)
persona.setFechaRegistro(new Date());
//persona.setIdPersona(number)
persona.setNombre(ls_nombres.toUpperCase());
persona.setSexo(ls_sexo.toUpperCase());
persona.setTelefonoCasa(ls_telefonoConvencional);
persona.setTipoPersona("ADU");
//persona.setTipoSangre()
//persona.setUsuarioses()
persona.setValorIdentificacion(ls_ci);
Long idPersona =
(Long)psSesionServlet.save(persona);
persona.setIdPersona(idPersona);
//Usuario
Usuario user = new Usuario();
user.setClave(Encriptador.encriptar(ls_ci));
user.setEstado("A");
user.setFechaCreacion(new Date());
user.setObservacion(ls_observacion.toUpperCase());
user.setPersona(persona);
//user.setRolesUsuariosAplicacions(set);
user.setSuscursales(sucursal);
user.setUsuario(ls_idUser.toUpperCase());
psSesionServlet.save(user);
System.out.println("Se guardo la
persona y el usuario");
//Archivo
if (lbA_foto !=null)
{
System.out.println("Entro al proceso
de guardar archivo");
ArchivosPersonas archivo = new
ArchivosPersonas();
XCIV
archivo.setClaveArchivo("FOTO");
archivo.setEstado("A");
archivo.setFechaRegistro(new
Date());
archivo.setObservacion("REGISTRO
FOTO USUARIO " + ls_observacion.toUpperCase());
archivo.setPersonas(persona);
archivo.setValorArchivo(lbA_foto);
psSesionServlet.save(archivo);
//Debo de colocar la foto en una
ruta fisica
FileOutputStream fotoActual =
new FileOutputStream( new File ("/tomcat-
5.0.28/webapps/SkyLinx/imagenes/fotosUsuarios/" + ls_idUser.toUpperCase() +
".jpg"));
fotoActual.write(lbA_foto);
fotoActual.flush();
fotoActual.close();
}
/* else
{
throw new Exception ("Error,
debe ingresar la foto del usuario");
}*/
psSesionServlet.flush();
psSesionServlet.clear();
transaccion.commit();
}
catch (Exception e)
{
transaccion.rollback();
e.printStackTrace();
throw new Exception ("Error al realizar el ingreso de
usuario " + e.getMessage());
}
}
//Asignacion de rol
public void asignaRolUsuario(
Session psSesionServlet,
String ls_idUser,
String ls_idrol,
String ls_observacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario =" + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
System.out.println("Cargo el usuario");
String hqlRol = " from
modelo.clasesPersistentes.rolesAplicacion.RolAplicacion as rol where
XCV
rol.estado = 'A' and rol.idRol =" + ls_idrol;
RolAplicacion rol =
(RolAplicacion)psSesionServlet.createQuery(hqlRol).uniqueResult();
System.out.println("Cargo el rol");
RolesUsuariosAplicacion rolUsuario = new
RolesUsuariosAplicacion();
RolesUsuariosAplicacionId rolUsuarioId = new
RolesUsuariosAplicacionId();
rolUsuarioId.setIdRolAplicacion(rol.getIdRol());
rolUsuarioId.setIdUsuario(usuario.getIdUsuario());
rolUsuario.setEstado("A");
rolUsuario.setFechaCreacion(new Date());
rolUsuario.setObservacion(ls_observacion.toUpperCase());
rolUsuario.setRolesAplicacion(rol);
rolUsuario.setUsuarios(usuario);
rolUsuario.setId(rolUsuarioId);
psSesionServlet.save(rolUsuario);
transaccion.commit();
}
catch (Exception e)
{
transaccion.rollback();
e.printStackTrace();
throw new Exception ("Error al realizar la asignacion del
rol al usuario " + e.getMessage());
}
}
//Para realizar el ingreso de usuarios
public void gestionRolUsuario (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_idRol=(String)parametros.get("idRol");
String ls_observacion=(String)parametros.get("observacion");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de asignacion
*************************************");
asignaRolUsuario(
psSesionServlet,
ls_idUser,
ls_idRol,
ls_observacion
);
}
catch (Exception e)
{
XCVI
e.printStackTrace();
throw new Exception ("Error al asignar el rol al usuario "
+ e.getMessage());
}
}
//Actualizar usuario
public void gestionActualizaUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_nombres=(String)parametros.get("nombres");
String ls_apellidos=(String)parametros.get("apellidos");
String ls_ci=(String)parametros.get("ci");
String ls_sexo=(String)parametros.get("sexo");
String ls_sucursal=(String)parametros.get("sucursal");
String ls_ciudad=(String)parametros.get("ciudad");
String ls_direccion=(String)parametros.get("direccion");
String
ls_telefonoConvencional=(String)parametros.get("telefonoCasa");
String ls_celular=(String)parametros.get("celular");
//String ls_correo=(String)parametros.get("correo");
String ls_observacion=(String)parametros.get("observacion");
byte[] lbA_foto=(byte[])parametros.get("archivoFoto");
String
ls_numericoUsuario=(String)parametros.get("numericoUsuario");
String
ls_numericoPersona=(String)parametros.get("numericoPersona");
Transaction transaccion = null;
try
{
psSesionServlet.flush();
psSesionServlet.clear();
transaccion = psSesionServlet.beginTransaction();
//inactivaPc (psSesionServlet, idMaquina, observacion);
actualizaUsuario(
psSesionServlet,
ls_idUser,
ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_sucursal,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
XCVII
ls_observacion,
lbA_foto,
ls_numericoUsuario,
ls_numericoPersona
);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al actualizar el usuario " +
e.getMessage());
}
}
public void actualizaPersona ( String ls_nombres,
String
ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_ciudad,
String
ls_direccion,
String
ls_telefonoConvencional,
String ls_celular,
String
ls_observacion,
String
ls_numericoPersona,
Session
psSesionServlet,
byte[] lbA_foto,
String ls_idUser,
String
ls_sucursal,
String
ls_numericoUsuario
)throws Exception
{
System.out.println("Entro en el proceso de ingreso de usuario");
String hqlSucursal = " from
modelo.clasesPersistentes.sucursales.Suscursales as suc where suc.estado = 'A'
and suc.idNumericoSucursal = " + ls_sucursal;
Suscursales sucursal =
(Suscursales)psSesionServlet.createQuery(hqlSucursal).uniqueResult();
//----------------------
//Usuario
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario <>"+ls_numericoUsuario+" and user.usuario ='" +
ls_idUser.toUpperCase() + "'";
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
if (usuario != null)
XCVIII
{
throw new Exception ("Error al registrar el usuario, ya
existe un usuario con el nombre " + ls_idUser.toUpperCase());
}
///persona
String hqlPersona = " from
modelo.clasesPersistentes.personas.Persona as person where person.estado = 'A'
and person.idPersona <> " +ls_numericoPersona+ " and
person.valorIdentificacion ='" + ls_ci + "'";
Persona person =
(Persona)psSesionServlet.createQuery(hqlPersona).uniqueResult();
SimpleDateFormat lsdFormateador = new
SimpleDateFormat("yyyy/MM/dd");
if (person != null)
{
throw new Exception ("Error al registrar el usuario, ya
existe una persona registrada con la cedula " + ls_ci);
}
//----------------------
Persona persona = new Persona();
persona.setApellido(ls_apellidos.toUpperCase());
if (lbA_foto !=null)
{
persona.setArchivoFoto(""+ls_idUser.toUpperCase().trim() +
".jpg");
}
persona.setCelular(ls_celular);
persona.setCiudad(ls_ciudad.toUpperCase());
persona.setDireccion(ls_direccion.toUpperCase());
persona.setEstado("A");
persona.setFechaRegistro(new Date());
persona.setNombre(ls_nombres.toUpperCase());
persona.setSexo(ls_sexo.toUpperCase());
persona.setTelefonoCasa(ls_telefonoConvencional);
persona.setTipoPersona("ADU");
persona.setValorIdentificacion(ls_ci);
**/
System.out.println("Voya a ejecutar la sentencia de la
persona");
String lsUpdate = " update personas "+
" set valor_identificacion = '" +
ls_ci.trim() + "', " +
" nombre = '" +
ls_nombres.toUpperCase().trim() + "'," +
" apellido = '" +
ls_apellidos.toUpperCase().trim() + "'," +
" ciudad = '" +
ls_ciudad.toUpperCase().trim() + "'," +
" direccion = '" +
ls_direccion.toUpperCase().trim() + "'," +
" telefono_casa = '" +
ls_telefonoConvencional.trim() + "'," +
" celular = '" +
ls_celular.toUpperCase().trim() + "'," +
// " email = '" +
persona.getEmail().toUpperCase().trim() + "'," +
" estado = '" + "A" + "'," +
XCIX
" sexo = '" +
ls_sexo.toUpperCase().trim() + "'," +
" archivo_foto = '" +
ls_idUser.toUpperCase().trim() + ".jpg" + "'" +
" where id_persona = "+
ls_numericoPersona.trim() + " " +
" and estado = 'A' ";
Connection conexion = psSesionServlet.connection();
System.out.println("Esta es la sentencia slq " + lsUpdate);
PreparedStatement prepareStatementOpciones = null;
prepareStatementOpciones = conexion.prepareStatement(lsUpdate);
prepareStatementOpciones.execute();
Usuario user = new Usuario();
user.setClave(Encriptador.encriptar(persona.getValorIdentificacion()
.trim()));
user.setEstado("A");
user.setFechaCreacion(new Date());
user.setObservacion(ls_observacion.toUpperCase());
user.setPersona(persona);
user.setSuscursales(sucursal);
user.setUsuario(ls_idUser.toUpperCase());
String lsUpdate2 = " update usuarios "+
" set usuario = '" +
user.getUsuario().toUpperCase().trim() + "', " +
" clave = '" + user.getClave().trim() +
"'," +
" estado = '" +
user.getEstado().toUpperCase().trim() + "'," +
" observacion = '" + "Actualizacion De
Usuarios " + new Date() + "'," +
" id_sucursal = " +
sucursal.getIdNumericoSucursal() + "," +
" id_persona = "
+ls_numericoPersona.trim()+ "" +
" where id_usuario = "+
ls_numericoUsuario.trim() + " " +
" and estado = 'A' ";
System.out.println("Esta es la sentencia slq " + lsUpdate2);
PreparedStatement prepareStatementOpciones2 = null;
prepareStatementOpciones2 = conexion.prepareStatement(lsUpdate2);
prepareStatementOpciones2.execute();
conexion.commit();
conexion.close();
//return persona;
}
public void actualizaArchivoFoto (Persona persona,
Session psSesionServlet,
String ls_observacion,
byte[] lbA_foto,
String ls_idUser ) throws
Exception
C
{
if (lbA_foto !=null)
{
System.out.println("Entro al proceso de guardar archivo");
ArchivosPersonas archivo = new ArchivosPersonas();
archivo.setClaveArchivo("FOTO");
archivo.setEstado("A");
archivo.setFechaRegistro(new Date());
archivo.setObservacion("REGISTRO FOTO USUARIO " +
ls_observacion.toUpperCase());
archivo.setPersonas(persona);
archivo.setValorArchivo(lbA_foto);
// psSesionServlet.save(archivo);
FileOutputStream fotoActual = new FileOutputStream( new File
("/tomcat-5.0.28/webapps/SkyLinx/imagenes/fotosUsuarios/" +
ls_idUser.toUpperCase().trim() + ".jpg"));
fotoActual.write(lbA_foto);
fotoActual.flush();
fotoActual.close();
}
}
public void actualizaUsuario(
Session psSesionServlet,
String ls_idUser,
String ls_nombres,
String ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_sucursal,
String ls_ciudad,
String ls_direccion,
String ls_telefonoConvencional,
String ls_celular,
String ls_observacion,
byte[] lbA_foto,
String ls_numericoUsuario,
String ls_numericoPersona
) throws Exception
{
Persona persona = null;
try
{
actualizaPersona ( ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_observacion,
ls_numericoPersona,
psSesionServlet,
lbA_foto,
ls_idUser,
CI
ls_sucursal,
ls_numericoUsuario
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception("Error al actualizar la persona - " + e);
}
try
{
actualizaArchivoFoto ( persona,
psSesionServlet,
ls_observacion,
lbA_foto,
ls_idUser
) ;
}
catch (Exception g)
{
throw new Exception("Error al ingresa la foto de la persona - " +
g);
}
}
}
GestorMantenimientoUsuario.-
Este componente nos permite realizar tareas de mantenimiento a los usuarios
existentes en la base de datos, tareas como: Inactivación de Usuarios, reseteo
CII
de la clave de usuarios que no han ingresado sesión.
package capaProcesos.procedimientos.skylinx.gestionUsuarios;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorMantenimientoUsuario extends Procedimiento
{
public GestorMantenimientoUsuario ()
{
super ("Procesos de aplicacion");
}
public void inactivaUsuario (
Session psSesionServlet,
String ls_idUser,
String ls_observacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario = " + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
usuario.setEstado("I");
usuario.setObservacion(ls_observacion.toUpperCase());
psSesionServlet.update(usuario);
transaccion.commit();
}
CIII
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la inactivacion del
usuario " + e.getMessage());
}
}
public void gestionInactivaUsuario (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_observacion=(String)parametros.get("observacion");
System.out.println("Entro a llamar al proceso de inactivacion
*************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
inactivaUsuario(
psSesionServlet,
ls_idUser,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar al usuario " +
e.getMessage());
}
}
public void reseteaClaveUsuario (
Session psSesionServlet,
String ls_idUser,
String ls_observacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String nuevaClave = "12345678";
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario = " + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
CIV
usuario.setFechaPriSesion(null);
usuario.setObservacion(ls_observacion.toUpperCase());
usuario.setClave(Encriptador.encriptar(nuevaClave));
psSesionServlet.update(usuario);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la inactivacion del
usuario " + e.getMessage());
}
}
public void gestionResetaClaveUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_observacion=(String)parametros.get("observacion");
System.out.println("Entro a llamar al proceso de inactivacion
*************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
reseteaClaveUsuario(
psSesionServlet,
ls_idUser,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar al usuario " +
e.getMessage());
}
}
//---------------
public void eliminacionRolUsuario (
Session psSesionServlet,
String ls_idUser
) throws Exception
{
CV
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String hqlRolUsuario = " from
modelo.clasesPersistentes.rolesUsuariosAplicacion.RolesUsuariosAplicacion as
rolUser where rolUser.estado = 'A' and rolUser.usuarios.idUsuario = " +
ls_idUser;
RolesUsuariosAplicacion rolUser =
(RolesUsuariosAplicacion)psSesionServlet.createQuery(hqlRolUsuario).uniqueResu
lt();
psSesionServlet.delete(rolUser);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la inactivacion del
usuario " + e.getMessage());
}
}
public void gestionEliminaRolUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
System.out.println("Entro a llamar al proceso de inactivacion
*************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
eliminacionRolUsuario (
psSesionServlet,
ls_idUser
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar el rol del usuario
" + e.getMessage());
}
}
//---------------
}
CVI
GestionExportacion.-
Este componente nos permite la importación de los reportes hacia archivos de
extensión XLS, realiza la consulta de la información desde la base de datos y
realiza un mapeo de los campos resultantes de la consulta para trasladarlos al
formato descrito.
package capaProcesos.procedimientos.skylinx.utilidadesGenerales;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
import javax.servlet.jsp.*;
import java.sql.*;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import capaProcesos.procedimientos.skylinx.javaMailCls.*;
public class GestionExportacion extends Procedimiento
{
public static String rutaArchivo = "C:/Tomcat
5.0/webapps/SkyLinx/paginas/skylinx/dataXls/";
public static String smtp = "";
public GestionExportacion () throws IOException
{
super ("Procesos de aplicacion");
}
CVII
public void dataTop10( Session psSesionServlet,
PageContext pagina)throws
Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
String lsQuery = " select b.ip_maquina as maquina, "+
" b.nombre_pc as nombrePc, "+
" a.fecha_registro as fechaRegistro, "+
" a.accion_realizada as accion, "+
" a.ruta_virus_encontrado as ruta, "+
" ( "+
" select g.descripcion "+
" from virus g "+
" where g.id_virus = a.id_virus "+
" and g.estado = 'A' "+
" ) as virus " +
" from detalle_scan a, "+
" scan c, "+
" maquina b "+
" where a.id_virus is not null "+
" and c.id_scan = a.id_scan "+
" and c.id_maquina = b.id_maquina "+
" and a.estado = 'A' "+
" and b.estado = 'A' " +
" and c.estado = 'A' "+
" order by a.fecha_registro "+
" LIMIT (10) ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getOutputStream().println(" <div
class=\"titulosFormulario\" >REPORTE TOP 10 </div> ");
l_response.getOutputStream().println(" <table
width=\"100%\" border=\"1\" cellpadding=\"0\" style=\" border:NAVY; border-
bottom-style:solid; volume:medium\">");
l_response.getOutputStream().println(" <tr> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Maquina</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Virus</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Ruta</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Accion</th> ");
l_response.getOutputStream().println(" <th
CVIII
scope=\"col\">Fecha Registro</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getOutputStream().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getOutputStream().println(" <tr> ");
l_response.getOutputStream().println(" <td> " +
resultado.getString( "maquina" ) + "</td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "virus" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "ruta" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "accion" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getDate( "fechaRegistro" ).toString()+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "nombrePc" )+" </td> ");
l_response.getOutputStream().println(" </tr> ");
}
l_response.getOutputStream().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void generaArchivoDataTop10(
Session
psSesionServlet,
String
nombreArchivo
)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = " select b.ip_maquina as maquina, "+
" b.nombre_pc as nombrePc, "+
" a.fecha_registro as fechaRegistro, "+
" a.accion_realizada as accion, "+
" a.ruta_virus_encontrado as ruta, "+
" ( "+
" select g.descripcion "+
" from virus g "+
" where g.id_virus = a.id_virus "+
CIX
" and g.estado = 'A' "+
" ) as virus " +
" from detalle_scan a, "+
" scan c, "+
" maquina b "+
" where a.id_virus is not null "+
" and c.id_scan = a.id_scan "+
" and c.id_maquina = b.id_maquina "+
" and a.estado = 'A' "+
" and b.estado = 'A' " +
" and c.estado = 'A' "+
" order by a.fecha_registro "+
" LIMIT (10) ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
bWriter.write(" <div class=\"titulosFormulario\" >REPORTE
TOP 10 </div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Maquina</th> ");
bWriter.write(" <th scope=\"col\">Virus</th> ");
bWriter.write(" <th scope=\"col\">Ruta</th> ");
bWriter.write(" <th scope=\"col\">Accion</th> ");
bWriter.write(" <th scope=\"col\">Fecha Registro</th>
");
bWriter.write(" <th scope=\"col\">Nombre Pc</th> ");
bWriter.write(" </tr> " );
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " + resultado.getString( "maquina"
) + "</td> ");
bWriter.write(" <td> " +resultado.getString( "virus"
)+" </td> ");
bWriter.write(" <td> " +resultado.getString( "ruta" )+"
</td> ");
bWriter.write(" <td> " +resultado.getString( "accion"
)+" </td> ");
bWriter.write(" <td> " +resultado.getDate(
"fechaRegistro" ).toString()+" </td> ");
bWriter.write(" <td> " +resultado.getString( "nombrePc"
)+" </td> ");
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.flush();
bWriter.close();
coneccion.close();
}
CX
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoTop10 (
HashMap parametros
)
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "top10.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment = rutaArchivo+nombreArchivo;
try
{
generaArchivoDataTop10(
psSesionServlet,
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el archivo para
enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el archivo adjutno "
+ e2.toString());
}
CXI
}
//-----------------------------------------------------------------------
--
/*
*
*Envia mail de los usuarios
**/
public void generaArchivoUsuarios(
Session
psSesionServlet,
String
nombreArchivo
)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = "select b.nombre || ' ' ||b.apellido, "+
" t.usuario, "+
" fecha_creacion, "+
" ( "+
" select c.ip_maquina "+
"from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as Maquina_asignada, "+
"( "+
" select c.nombre_pc "+
" from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as nombre_Maquina_asignada "+
" from usuarios as t, "+
" personas as b " +
" where t.estado = 'A' "+
" and b.id_persona =
t.id_persona "+
" and b.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
bWriter.write(" <div class=\"titulosFormulario\" >REPORTE
TOP 10 </div> ");
CXII
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Nombre</th> ");
bWriter.write(" <th scope=\"col\">Usuario Sistema</th> ");
bWriter.write(" <th scope=\"col\">Fecha Ingreso</th>
");
bWriter.write(" <th scope=\"col\">Ip Maquina</th> ");
bWriter.write(" <th scope=\"col\">Nombre Maquina</th>
");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
bWriter.write(" </tr> " );
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " + resultado.getString( 1 ) +
"</td> ");
bWriter.write(" <td> " +resultado.getString( 2 )+"
</td> ");
bWriter.write(" <td> " +resultado.getString( 3
).toString()+ " </td> ");
bWriter.write(" <td> " +resultado.getString( 4 )+ "
</td> ");
bWriter.write(" <td> " +resultado.getString( 5 )+ "
</td> ");
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.close();
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoUsuarios (
HashMap parametros
)
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "usuarios.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
CXIII
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment = rutaArchivo+nombreArchivo;
try
{
generaArchivoUsuarios(
psSesionServlet,
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el archivo para
enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el archivo adjutno "
+ e2.toString());
}
}
/*
*
**/
/*
*
*Envia mail de las descargas
**/
public void generaArchivoDescargas(
Session
psSesionServlet,
String
nombreArchivo
)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
CXIV
String lsQuery = "select a.ip_maquina as maquina, "+
" a.nombre_pc as nombre_pc, "+
" a.estado_operacion as
estado_operacion, "+
" (select max(fecha_descarga) from
descargas where id_maquina = a.id_maquina) as fecha_descarga, "+
" (select observacion from descargas
where id_maquina = a.id_maquina and fecha_descarga = (select
max(fecha_descarga) from descargas where id_maquina = a.id_maquina)) as
observacion " +
" from maquina as a "+
" where a.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
/
bWriter.write(" <div class=\"titulosFormulario\" >DESCARGAS
</div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Maquina</th> ");
bWriter.write(" <th scope=\"col\">Nombre PC</th> ");
bWriter.write(" <th scope=\"col\">Estado Operacion</th>
");
bWriter.write(" <th scope=\"col\">Fecha Ultima
Definicion</th> ");
bWriter.write(" <th scope=\"col\">Observacion</th> ");
bWriter.write(" </tr> " );
java.util.Date fecha = null;
String observacion = null;
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " + resultado.getString( "maquina"
) + "</td> ");
bWriter.write(" <td> " +resultado.getString(
"nombre_pc" )+" </td> ");
bWriter.write(" <td> " +resultado.getString(
"estado_operacion" )+" </td> ");
fecha = resultado.getDate( "fecha_descarga" );
if (fecha!=null)
{
bWriter.write(" <td> " +fecha.toString()+" </td>
");
}
else
{
bWriter.write(" <td> " +"No Encontrado"+" </td>
");
}
observacion = resultado.getString( "observacion" );
CXV
if ( observacion != null )
{
bWriter.write(" <td> " +observacion+" </td> ");
}
else
{
bWriter.write(" <td> " +"No Encontrado"+" </td>
");
}
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.close();
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoDescargas (
HashMap parametros
)
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "descargas.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment = rutaArchivo+nombreArchivo;
try
{
generaArchivoDescargas(
psSesionServlet,
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el archivo para
enviarlo por mail " + e.toString());
}
CXVI
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el archivo adjutno "
+ e2.toString());
}
}
/*
*
**/
public void gestionExportaExcelTop10 (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataTop10(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la exportacion del
reporte " + e.getMessage());
}
}
public void dataDescargasXLS( Session psSesionServlet,
PageContext
pagina)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
CXVII
String lsQuery = "select a.ip_maquina as maquina, "+
" a.nombre_pc as nombre_pc, "+
" a.estado_operacion as
estado_operacion, "+
" (select max(fecha_descarga) from
descargas where id_maquina = a.id_maquina) as fecha_descarga, "+
" (select observacion from descargas
where id_maquina = a.id_maquina and fecha_descarga = (select
max(fecha_descarga) from descargas where id_maquina = a.id_maquina)) as
observacion " +
" from maquina as a "+
" where a.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
java.util.Date fecha = null;
String observacion = null;
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getWriter().println(" <div
class=\"titulosFormulario\" >DESCARGAS </div> ");
l_response.getWriter().println(" <table width=\"100%\"
border=\"1\" cellpadding=\"0\" style=\" border:NAVY; border-bottom-
style:solid; volume:medium\">");
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <th
scope=\"col\">Maquina</th> ");
l_response.getWriter().println(" <th scope=\"col\">Nombre
PC</th> ");
l_response.getWriter().println(" <th scope=\"col\">Estado
Operacion</th> ");
l_response.getWriter().println(" <th scope=\"col\">Fecha
Ultima Definicion</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Observacion</th> ");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getWriter().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <td> " +
resultado.getString( "maquina" ) + "</td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( "nombre_pc" )+" </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( "estado_operacion" )+" </td> ");
fecha = resultado.getDate( "fecha_descarga" );
if (fecha!=null)
{
CXVIII
l_response.getWriter().println(" <td> "
+fecha.toString()+" </td> ");
}
else
{
l_response.getWriter().println(" <td> " +"No
Encontrado"+" </td> ");
}
observacion = resultado.getString( "observacion" );
if ( observacion != null )
{
l_response.getWriter().println(" <td> "
+observacion+" </td> ");
}
else
{
l_response.getWriter().println(" <td> " +"No
Encontrado"+" </td> ");
}
l_response.getWriter().println(" </tr> ");
}
l_response.getWriter().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionDataDescargasXLS (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataDescargasXLS(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la exportacion del
reporte " + e.getMessage());
}
CXIX
}
///---------------------------------------------------
public void dataDescargaUsuarios( Session psSesionServlet,
PageContext
pagina)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
String lsQuery = "select b.nombre || ' ' ||b.apellido, "+
" t.usuario, "+
" fecha_creacion, "+
" ( "+
" select c.ip_maquina "+
"from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as Maquina_asignada, "+
"( "+
" select c.nombre_pc "+
" from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as nombre_Maquina_asignada "+
" from usuarios as t, "+
" personas as b " +
" where t.estado = 'A' "+
" and b.id_persona =
t.id_persona "+
" and b.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
java.util.Date fecha = null;
String observacion = null;
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getWriter().println(" <div
class=\"titulosFormulario\" >REPORTE TOP 10 </div> ");
CXX
l_response.getWriter().println(" <table width=\"100%\"
border=\"1\" cellpadding=\"0\" style=\" border:NAVY; border-bottom-
style:solid; volume:medium\">");
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <th
scope=\"col\">Nombre</th> ");
l_response.getWriter().println(" <th scope=\"col\">Usuario
Sistema</th> ");
l_response.getWriter().println(" <th scope=\"col\">Fecha
Ingreso</th> ");
l_response.getWriter().println(" <th scope=\"col\">Ip
Maquina</th> ");
l_response.getWriter().println(" <th scope=\"col\">Nombre
Maquina</th> ");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getWriter().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <td> " +
resultado.getString( 1 ) + "</td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 2 )+" </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 3 ).toString()+ " </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 4 )+ " </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 5 )+ " </td> ");
l_response.getWriter().println(" </tr> ");
}
l_response.getWriter().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionDataDescargaUsuarios (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
CXXI
dataDescargaUsuarios(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la exportacion del
reporte " + e.getMessage());
}
}
//----------------------------------------------------
}
CXXII
acciones
ID_ACCION
DESCRIPCION
OBSERVACION
FECHA_REGISTRO
ESTADO
archivos_personas
ID_ARCHIVO
ID_PERSONA (FK)
CLAVE_ARCHIVO
ESTADO
FECHA_REGISTRO
OBSERVACION
VALOR_ARCHIVO
virus
ID_VIRUS
DESCRIPCIONOBSERVACIONFECHA_RESGISTROESTADO
usuarios
ID_USUARIO
ID_PERSONA (FK)USUARIOCLAVEESTADOID_NUMERICO_SUCURSAL (FK)
tipos_empleados
ID_TIPO_EMPLEADO
DESCRIPCION_TIPOOBSERVACIONFECHA_REGISTROESTADO
tipo_parametro
id_parametro
DESCRIPCION_TIPOOBSERVACIONFECHA_REGISTROESTADO
tipo_maquina
ID_TIPO_MAQUINA
DESCRIPCIONFECHA_REGISTROESTADOOBSERVACION
tipo_configuracion
ID_TIPO_CONFIGURACION
DESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
suscursales
ID_NUMERICO_SUCURSAL
ID_NUMERICO_EMPRESA (FK)NOMBRE_SUCURSALDESCRIPCION_SUCURSALDIRECCIONTELEFONOCIUDADIDENTIFICACION_SUCURSALESTADO
scan
ID_SCAN
ID_MAQUINA (FK)DESCRIPCIONFECHA_SCANESTADORUTA_ARCHIVO_LOG
roles_usuarios_aplicacion
ID_ROL_APLICACION (FK)ID_USUARIO (FK)
FECHA_CREACIONOBSERVACIONESTADO
roles_aplicacion
IDROL
DESCROLOBSERVACIONFECHA_CREACIONESTADO
personas
ID_PERSONA
VALOR_IDENTIFICACIONNOMBREAPELLIDOSFECHA_NACIMIENTOCIUDADDIRECCIONTELEFONO_CASACELULAREMAILTIPO_SANGRETIPO_PERSONAESTADOFECHA_REGISTROSEXOARCHIVO_FOTO
parametros_generales
id_parametro (FK)
CLAVE_PARAMETROVALOROBERVACION
opciones_roles
ID_ROL (FK)ID_OPCION (FK)
FECHA_CREACIONOBSERVACIONESTADO
opciones_aplicacion
ID_OPCION_APLICACION
ID_OPCIONDESCRIPCIONNOMBRE_OPCIONTARGETTITULODIRECCION_APLICACIONORDENNOMBRE_PAGINAESTADO
metodo_clase_proceso
ID_METODO_CLASE_PROCESO
ID_CLASE_PROCESO (FK)DESCRIPCION_METODOOBSERVACIONFECHA_REGISTROESTADO
marquesinas
ID_NUMERICO_MARQUESINA
MENSAJEESTADOFECHA_REGISTROORDEN_MARQUESINA
marquesina_sucursal
ID_SUCURSAL (FK)ID_MARQUESINA (FK)DESCRIPCIONFECHA_REGISTROESTADO
maquina_usuario
ID_ASIGNACION_MAQUIINA_USER
ID_MAQUINA (FK)ID_USUARIO (FK)OBSERVACIONFECHA
maquina
ID_MAQUINA
ID_TIPO_MAQUINA (FK)ESTADO_OPERACIONNOMBRE_PC
empresas
ID_NUMERICO_EMPRESA
NOMBRERAZON_SOCIALDIRECCIONRUCNOMBRE_COMERCIALFECHA_REGISTROESTADO
empleados
ID_EMPLEADO
ID_PERSONA (FK)ID_TIPO_EMPLEADO (FK)AREASUELDOFECHA_INGRESOFECHA_SALIDAFECHA_REGISTROESTADOID_USUARIO_INGRESOID_JEFE (FK)
detalle_virus
ID_DETALLE_VIRUS
ID_VIRUS (FK)DESCRIPCION_DETALLEOBSERVACIONFECHA_REGISTROESTADO
detalle_scan
ID_DETALLE_SCAN
ID_SCAN (FK)ID_VIRUS (FK)DESCRIPCIONOBSERVACIONACCION_REALIZADARUTA_VIRUS_ENCONTRADOFECHA_REGISTROESTADO
detalle_configuracion
ID_DETALLE_CONFIGURACION
ID_CONFIGURACION_MAQUINA (FK)ID_ACCION (FK)DESCRIPCIONOBSERVACIONFECHA_REGISTRODATO_ACCIONESTADO
descargas
ID_DESCARGA
ID_MAQUINA (FK)FECHA_DESCARGAESTADONOMBRETAMANIO
configuraciones_maquinas
ID_CONFIMAQUINAS
ID_CONFIGURACION (FK)ID_MAQUINA (FK)OBSERVACIONFECHA_REGISTROESTADO
configuraciones
ID_CONFIGURACIONES
ID_TIPO_CONFIGURACION (FK)VALORDESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
clientes
ID_NUMERICO_CLIENTE
ID_PERSONA (FK)ESTADOFECHA_REGISTROID_USUARIO_INGRESO
clase_proceso
ID_PROCESO
FECHA_REGISTROESTADOOBSERVACIONarchivos_personas
ID_ARCHIVO
ID_PERSONA (FK)CLAVE_ARCHIVOESTADOFECHA_REGISTROOBSERVACIONVALOR_ARCHIVO
acciones
ID_ACCION
DESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
4.3. Diagrama entidad relación
Ilustración 32: Diagrama entidad relación
4.4. Descripción de Tablas
A continuación se realizará una breve descripción de las tablas del la Base del
Sistema.
Tabla 19: Acciones
Aquí se definen los tipos de acciones que se realizaran tales como envío de e mail o alarmas ver ilustración 19.
CXXIII
clase_proceso
ID_PROCESO
FECHA_REGISTRO
ESTADO
OBSERVACION
configuraciones
ID_CONFIGURACIONES
ID_TIPO_CONFIGURACION (FK)
VALOR
DESCRIPCION
OBSERVACION
FECHA_REGISTRO
ESTADO
configuraciones_maquinas
ID_CONFIMAQUINAS
ID_CONFIGURACION (FK)
ID_MAQUINA (FK)
OBSERVACION
FECHA_REGISTRO
ESTADO
descargas
ID_DESCARGA
ID_MAQUINA (FK)
FECHA_DESCARGA
ESTADO
NOMBRE
TAMANIO
Tabla 20: Archivos_Personas
Almacena la ruta donde se encuentra la foto de los usuarios del sistema ver
ilustración 20.
Tabla 21:clase_proceso
Almacena las clases que serán invocadas, dependiendo del proceso que se
vaya a realizar, ver ilustración 21.
Tabla 22: Configuraciones
Almacena todas las configuraciones que se realicen en el sistema, ver
ilustración 22 .
Tabla 23: Configuraciones_maquinas
Almacena las configuraciones especificas de cada maquina, ver ilustración 23.
CXXIV
detalle_configuracion
ID_DETALLE_CONFIGURACION
ID_CONFIGURACION_MAQUINA (FK)
ID_ACCION (FK)
DESCRIPCION
OBSERVACION
FECHA_REGISTRO
DATO_ACCION
ESTADO
detalle_scan
ID_DETALLE_SCAN
ID_SCAN (FK)
ID_VIRUS (FK)
DESCRIPCION
OBSERVACION
ACCION_REALIZADA
RUTA_VIRUS_ENCONTRADO
FECHA_REGISTRO
ESTADO
empresas
ID_NUMERICO_EMPRESA
NOMBRE
RAZON_SOCIAL
DIRECCION
RUC
NOMBRE_COMERCIAL
FECHA_REGISTRO
ESTADO
Tabla 24: descargas
Almacena información acerca de las descargas que se han realizado desde
internet hacia el servidor, ver ilustración 24.
Tabla 25: detalle_configicuracion
Almacena información acerca de los detalles de las configuraciones que se
tendrán disponibles, ver ilustración 25.
Tabla 26:detalle_scan
Almacena información detallada del scan realizado, ver ilustración 26.
CXXV
maquina
ID_MAQUINA
ID_TIPO_MAQUINA (FK)
ESTADO_OPERACION
NOMBRE_PC
maquina_usuario
ID_ASIGNACION_MAQUIINA_USER
ID_MAQUINA (FK)
ID_USUARIO (FK)
OBSERVACION
FECHA
marquesina_sucursal
ID_SUCURSAL (FK)
ID_MARQUESINA (FK)
DESCRIPCION
FECHA_REGISTRO
ESTADO
Tabla 27: empresas
Almacena información acerca de las empresas en nuestro caso serian las
facultades de la Universidad de Guayaquil, ver ilustración 27.
Tabla 28: maquina_usuario
Almacena información acerca de las maquinas y los usuarios a ellas asignadas,
ver ilustración 29.
Tabla 29: maquina
Almacena información acerca de las máquinas de la red, con su respectivo
estado, ver ilustración 29.
Tabla 30:marquesina_sucursal
Almacena la marquesina que identifica a la sucursal en la que se inicia sesión,
CXXVI
marquesinas
ID_NUMERICO_MARQUESINA
MENSAJE
ESTADO
FECHA_REGISTRO
ORDEN_MARQUESINA
metodo_clase_proceso
ID_METODO_CLASE_PROCESO
ID_CLASE_PROCESO (FK)
DESCRIPCION_METODO
OBSERVACION
FECHA_REGISTRO
ESTADO
opciones_aplicacion
ID_OPCION_APLICACION
ID_OPCION
DESCRIPCION
NOMBRE_OPCION
TARGET
TITULO
DIRECCION_APLICACION
ORDEN
NOMBRE_PAGINA
ESTADO
parametros_generales
id_parametro (FK)
CLAVE_PARAMETRO
VALOR
OBERVACION
ver ilustración 31.
Tabla 31: marquesinas
Almacena el texto informativo que muestra al inicio de cada sesión, ver
ilustración 31.
Tabla 32: método_clase_proceso
Almacena los métodos de clases que serán invocadas, ver ilustración 32.
Tabla 33: opciones_aplicacion
Almacena las parametrizaciones de las opciones que contendrá el menú, ver
ilustración 33.
CXXVII
personas
ID_PERSONA
valor_identificacion
nombre
apellido
fecha_nacimiento
ciudad
direccion
telefono_casa
celular
tipo_sangre
tipo_persona
estado
fecha_registro
roles_aplicacion
IDROL
DESCROL
OBSERVACION
FECHA_CREACION
ESTADO
roles_usuarios_aplicacion
ID_ROL_APLICACION (FK)
ID_USUARIO (FK)
FECHA_CREACION
OBSERVACION
ESTADO
Tabla 34: parametros_generales
Almacena los parámetros generales que se utilizan en toda aplicación
SKYLINX: Rutas, Dirección de correo, etc., ver ilustración 34.
Tabla 35: personas
Almacena los datos generales de las personales, ver ilustración 35.
Tabla 36: roles_aplicacion
Almacena los roles pre-establecido que posee sistema, ver ilustración 36.
Tabla 37: roles_usuarios_aplicacion
Almacena los usuarios con sus respectivo rol, ver ilustración 37.
CXXVIII
tipo_configuracion
ID_TIPO_CONFIGURACION
DESCRIPCION
OBSERVACION
FECHA_REGISTRO
ESTADO
tipo_maquina
ID_TIPO_MAQUINA
DESCRIPCION
FECHA_REGISTRO
ESTADO
OBSERVACION
scan
ID_SCAN
ID_MAQUINA (FK)
DESCRIPCION
FECHA_SCAN
ESTADO
RUTA_ARCHIVO_LOG
Tabla 38: scan
Almacena todos los scan realizados en cada maquina, ver ilustración 38.
Tabla 39: tipo_configuracion
Almacena todos los tipos configuración, ver ilustración 39.
Tabla 40: tipo_maquina
Almacena el tipo de maquina es decir; si es un Pc o un servidor, ver
ilustración 40.
CXXIX
tipo_parametro
id_parametro
DESCRIPCION_TIPO
OBSERVACION
FECHA_REGISTRO
ESTADO
usuarios
ID_USUARIO
ID_PERSONA (FK)
USUARIO
CLAVE
ESTADO
ID_NUMERICO_SUCURSAL (FK)
virus
ID_VIRUS
DESCRIPCION
OBSERVACION
FECHA_RESGISTRO
ESTADO
Tabla 41: tipo_parametro
Almacena las clases de parámetros del sistema, ver ilustración 41.
Tabla 42: usuarios
Almacena los datos de los usuarios, ver ilustración 42.
Tabla 43: virus
Almacena los virus encontrados en la red, ver ilustración 43.
CXXX
CAPITULO 5 5. PRUEBAS
5.1. Introducción
En el sistema SKYLINX, hemos realizado varias pruebas de funcionamiento y
control de todos los procesos incluidos en el sistema, pruebas como:
5.1.1. Prueba de base de datos
Verificamos que las tablas se encuentren debidamente relacionadas de
acuerdo al DER (Diagrama de Entidad-Relación), y verificamos que todos los
campos que se encuentre en su respectiva tabla este operativo.
5.1.2. Prueba de clases
Nos aseguramos que las clases que posee nuestro sistema estén bien
depuradas y sin ningún margen de error
5.1.3. Prueba de integración de clases
Nos aseguramos que las clases, y sus instancias, conforman un software que
cumpla con el comportamiento definido.
5.1.4. Prueba de integración del sistema
Realizamos pruebas para verificar que las partes del sistema funcionan juntas,
es decir probando las paginas con las conexiones realizadas, ya que todas las
pruebas fueron realizadas por módulos independientes.
CXXXI
5.1.5. Demostrar funcionamiento con el código
Si un modelo realmente refleja lo que se necesita, o lo que se debe construir,
es la forma que reflejara buen funcionamiento del código.
5.1.6. Prueba de cambios
Después de realizar algún cambio en la aplicación, nos aseguramos que la
aplicación funcione de forma normal.
5.1.7. Prueba de stress
Nos aseguramos que el sistema funcione como se espera y sin ningún
problema, al cerciorarnos que soporta gran manejo de información.
5.1.8. Revisión técnica
Cada integrante del grupo, reviso de forma exhaustiva, independientemente
con el objetivo de mostrar un sistema que se enfoque en la precisión, calidad,
facilidad de uso.
5.2. Casos de prueba
Se detalla todos los casos posibles de las pruebas del proyecto.
Escenario de Prueba Resultados Esperados Resultados Obtenidos
Comentarios
Descargar actualizaciones al servidor
Almacenar en el directorio /var/ftp/pub, las
definiciones descargadas desde Internet
OK
Este caso de prueba fue contemplado las descargas manuales y automáticas que tiene el sistema.
Replicación de definiciones del antivirus a los clientes
Almacenar en el directorio C:\Inetpub\ftproot, las
definiciones que posee el servidor
OK
Es necesario que se haya realizado la descarga de definición por parte del servidor
CXXXII
Ejecución del antivirus desde la consola del administrador
Escanear PC seleccionado y
almacenarlo en la base de datos
OK Podrá ser ejecutado solo a las maquinas que están encendidas
Enviar reporte mediante correo electrónico
Que el correo electrónico llegue al destinatario
seleccionado OK
Se podrá enviar el reporte requerido vía e-mail a cualquier usuario que pertenezca al dominio
Impresión de reportes Imprimir los reportes que
han sido seleccionado OK
Los reportes serán impresos con gran facilidad
Exportación de reportes
Exportar a Excel aquellos reportes que han sido
obtenidos OK
Los reportes serán exportados a Excel con gran facilidad
Obtener maquinas encendidas y apagadas
Mostrar en pantalla las maquinas que pertenecen
al grupo de trabajo OK
Esta opción nos ayuda a tener un dominio en la gestión de las Pcs encendidas
Creación tipo configuración
Crear una configuración predeterminada
OK Facilitar la creación de un tipo configuración
Ingreso tipo configuración
Relacionar una configuración con un día y
hora especifica OK OK
Asignación de configuración
Asociar una configuración con uno o varios Pcs
OK OK
Ingreso de usuario Crear usuarios
relacionados al sistema OK OK
Tabla 44: Casos de prueba
Escenario de Prueba Resultados Esperados Resultados Obtenidos
Comentarios
Asignación de rol Otorgar un rol predefinido a
un usuario especifico OK OK
Autenticación de usuario Restringir el ingreso al
sistema OK OK
Reseteo de clave Gestionar el reinicio rápido
de un usuario que ha olvidado su contraseña
OK No se podrá resetear la clave aquel usuario que ha iniciado una instancia
Bloqueo de sesión Dar seguridad al sistema
en el momento que el administrador lo vea
OK OK
CXXXIII
Tabla 45: Casos de prueba continuación
CAPITULO 6
6. CONCLUSIONES Y RECOMENDACIONES
6.1. CONCLUSIONES
El sistema SKYLINX tiene como finalidad, dar facilidades en la administración
de un antivirus, permitiendo una rápida y eficaz gestión de:
Ejecución del antivirus en forma remota en una estación de trabajo en
particular.
Actualización de definiciones del antivirus.
Creación de configuraciones en alarmas y descargas automáticas.
conveniente
Asignación maquina usuario
Relacionar una maquina con un usuario
OK OK
Inactivación de usuario Deshabilitar para que un
usuario no ingrese al sistema
OK OK
CXXXIV
Elaboración de reportes
A lo largo del desarrollo del Sistema SKYLINX hemos adquirido conocimientos
muy valiosos acerca de las herramientas Open Source, que no solo el software
Libre funciona bajo un ideal: el software propietario, al no poder compartirse, es
anti ético dado que prohibir compartir entre seres humanos va en contra las
leyes naturales.
Hoy en día la información es uno de los activos más importantes de la
organización, dada la creciente información del mundo en que vivimos. Es por
ello, que la protección de esa información, así cómo los caminos que necesita
para fluir a través de la empresa, deben ser considerada como alta prioridad.
Además, problemas en las redes informáticas de una empresa causan
problemas relacionados con recursos asignados a la resolución de estos, mal
funcionamiento de equipos clave, daño de la información, etc., que se traducen
en pérdidas monetarias para la compañía.
CXXXV
6.2. RECOMENDACIONES
El aplicativo desarrollado se limita a proveer las tareas básicas de
administración que un antivirus debe proporcionar en una organización
reduciendo el impacto de la perdida o corrupción de la información a causa de
los ataques de virus a las redes informáticas.
El aplicativo implementado esta diseñado para funcionar dentro de una intranet
corporativa.
Para mantener un respaldo de la información es necesario realizar los backup
correspondiente a fin de proveer información actualizable en caso de algún
percance que motive la perdida de la data.
Realizar una adecuada configuración de los servicios del servidor y los clientes,
necesarios para que el sistema tenga un óptimo rendimiento.
Es importante que en el momento de que se quiera cambiar de versión de
antivirus se realice un previo análisis de Logs, ya que forma parte importante
del sistema.
CXXXVI
CXXXVII
ANEXO A
Estimación de Tiempo y Personal
Ilustración 33: Punto de Fusión
Usuario SKYLINConsulta
Reporte
Archivos
internos (BD)
Archivos
externos
Entrada
Salida
CXXXVIII
Entradas Complejidad
Consulta/Reporte Complejidad
Autentificación de
usuario administrador Baja
Reporte actualizado de los 10 virus más actuales
Baja
Estados de PCs Baja
Consulta de información
consolidada Baja
Reporte histórico de las PCS Baja
Definición de políticas Media
Parametrización del sistema Baja
Sistema de replicación de
definiciones Alta
Sistema de alertas al
Administrador Media
Salidas Complejidad
Archivos Internos Complejidad
Administración de
Alta
Usuario Baja
Maquina Baja
CXXXIX
definición de antivirus
Virus Baja
Detalle Scan Baja
Interfaces externas Complejidad
Definición de antivirus Baja
Extracción de logs del antivirus clientes Alta
Tabla 46: Complejidad de los puntos de fusión
Conclusión
Empleando el modelo matemático COCOMO, no indica que el proyecto podrá
ser desarrollado con un mínimo de 2 personas en un tiempo estimado de 6
meses. Ver en Anexos: el modelo matemático COCOMO, ver la tabla 47
Ponderación de los puntos de función
PARÁMETROS COMPLEJIDAD
BAJA
COMPLEJIDAD
MEDIA
COMPLEJIDAD
ALTA TOTAL
Número de entradas
1 * 3 0 * 4 0 * 6 3
Número de salidas
0 * 4 0 * 5 1 * 7 7
Número de archivos Internos
4* 7 0 * 10 0 * 15 28
Número interfaces Externas
1* 5 0 * 7 1 *10 15
Número peticiones Usuarios
4 * 3 2 * 4 1 * 6 26
CXL
PUNTO DE FUNCION NO AJUSTADO 79
Tabla 47: Ponderación de puntos de función
Factores de complejidad De 0 - 5
Comunicación de datos 0 Actualización de datos en líneas 1
Procesamiento distribuido 0 Procesamiento complejo 1
Objetivos de rendimiento 4 Reusabilidad 2
Configuración de uso intensivo 0 Complejidad en la instalación 1
Tasa de transacción rápida (volumen alto)
1 Facilidad operacional 1
Entrada de datos en línea 1 Adaptabilidad 2
Amigabilidad en el diseño de las entradas
1 Versatilidad 2
Sum FC ==> 17
Tabla 48: Factores de complejidad
Calculo del Factor de Ajuste (FA)
FA = ( 0,01x SumFC)+0,65
FA = ( 0,01x 17)+0,65
FA = 0,82
PF = PFNA x FA
PF = 79x 0,82
PF = 64,78
Esfuerzo (LDC) = PFA x Promedio ( Lenguaje )
Esfuerzo (LDC) = 64.78 x ((30 BD + 53 jsp)/2)
Esfuerzo (LDC) = 2688,37 LDC Atributos
2,6884 KLDC LEXP 1.17 Baja
RELAY 1.00 Nominal
Cocomo PCAP 1.00 Nominal
INTERMEDIO - ORGANICO MODP 1.00 Nominal
Km = 3,2 x Sk 1,05
(persona mes)
Km = 3,2 x 2,6884 1,05
Km = 9,03897 = 10,57559
CXLI
10,57559 2
Td = 2,5 x Km 0,38
(meses) 6,12598
Td = 2,5 x 10,57559 ,38
Td = 6,12598 6 meses
BIBLIOGRAFIA
http://es.clamwin.com/
http://clamwin-antivirus.softonic.com/
http://es.wikipedia.org/wiki/ClamWin
http://www.todo-linux.com/modules.php?name=News&file=article&sid=5851
http://www.monografias.com
http://www.linuxparatodos.net/portal/
CXLII
INDICE GENERAL
ÌNDICE GENERAL I INDICE DE IMAGENES II MANUAL DE USUARIO .......................................................................... CXLV INGRESO AL SISTEMA ........................................................................... CXLV CAMBIO DE CLAVE ................................................................................ CXLV CONFIGURACIONES ............................................................................. CXLVI CREACION DE TIPOS DE CONFIGUARCION ..................................... CXLVI INGRESO DE CONFIGURACION ......................................................... CXLVII ASIGNACION CONFIGURACION MAQUINAS .................................... CXLVIII REPORTES PCS ......................................................................................... CL TOP 10 ......................................................................................................... CL DESCARGAS ............................................................................................... CL USUARIOS DEL SISTEMA ........................................................................ CLII GESTOR MAQUINAS ................................................................................ CLII TODA LA RED .......................................................................................... CLIII VERIFICACIÓN DE ESTADOS DE PCS................................................... CLIII EJECUCION DE ANTIVIRUS ..................................................................... CLV ENVIO ACTUALIZACION........................................................................... CLV REPORTE SCAN MAQUINA .................................................................... CLVI INACTIVACION DE MAQUINAS .............................................................. CLVII ASIGNACIÓN MAQUINA USUARIO ........................................................ CLVII GESTION USUARIOS .............................................................................. CLIX INGRESO USUARIO ................................................................................ CLIX ASIGNACION ROL ................................................................................... CLIX INACTIVACION USUARIO......................................................................... CLX RESETEO DE CLAVE .............................................................................. CLXI ACTUALIZACION DE USUARIO ............................................................. CLXII CAMBIO DE CLAVE MAIL ....................................................................... CLXII ELIMINAR ROL USUARIO ...................................................................... CLXIV MANUAL DE INSTALACIÓN ................................................................. CLXIV SERVIDOR .............................................................................................. CLXIV CLIENTES ................................................................................................ CLXV PROCESO DE INSTALACIÓN EN EL SISTEMA OPERATIVO LINUX ... CLXV Instalación de Java ................................................................................... CLXV Configuración: ......................................................................................... CLXVI Instalación de Apache Tomcat ................................................................ CLXVI Configuración ......................................................................................... CLXVII PROCESO DE INSTALACIÓN EN LOS CLIENTES .............................. CLXVII Instalación de Java ................................................................................. CLXVII
CXLIII
Instalación de Clamwin ........................................................................... CLXIX MANUAL TECNICO ............................................................................... CLXXII INTRODUCCION ................................................................................... CLXXII DIAGRAMA GENERAL ......................................................................... CLXXIII DIAGRAMA DE BASE DE DATOS ...................................................... CLXXIV SCRIPTS DE BASE DE DATOS ........................................................... CLXXV Configuraciones del Servidor ............................................................... CLXXXI Servidor Web ........................................................................................ CLXXXI Servidor DHCP ..................................................................................... CLXXXI Servidor DNS ...................................................................................... CLXXXII Servidor FTP ...................................................................................... CLXXXIV Servidor SENDMAIL ........................................................................... CLXXXIV Servidor de POSTGRES ..................................................................... CLXXXV SCRIPT DE CONEXIÓN ..................................................................... CLXXXV SCRIPTS DE CLASES RELEVANTES ............................................ CLXXXVIII
INDICE DE ILUSTRACIONES
Ilustración 1: Inicio .................................................................................... CXLV Ilustración 2 : Opción Cambio de clave ................................................... CXLVI Ilustración 3: Dialogo de confirmación de cambio de Clave .................... CXLVI Ilustración 4: Pantalla para el cambio de clave ....................................... CXLVI Ilustración 5: Opciones del Menú configuraciones .................................. CXLVI Ilustración 6: Ingreso de Tipo Configuración .......................................... CXLVII Ilustración 7: Opción Ingreso configuración ........................................... CXLVII Ilustración 8: Ingreso de Configuración .................................................. CXLVII Ilustración 9: Cuadro de dialogo de mensaje Exitoso ............................ CXLVIII Ilustración 10: Opción Asignación Configuraciones Maquinas .............. CXLVIII Ilustración 11: Ingreso Configuración Máquina ....................................... CXLIX Ilustración 12: Gestión Asignación Configuración Maquinas ........................ CL Ilustración 13: Dialogo de confirmación de Ingreso exitoso de configuración maquina ....................................................................................................... CL Ilustración 14: Reporte TOP 10 .................................................................... CL Ilustración 15: Reporte Descargas .............................................................. CLI Ilustración 16: Usuarios Máquinas ............................................................. CLII Ilustración 17: Opciones Menú Gestor Máquinas ....................................... CLII Ilustración 18: Gestión de Configuraciones de Maquinas Encendidas ...... CLIII Ilustración 19: Botón para la actualización de los sitios de red ................. CLIII Ilustración 20: Gestión Envío de E-Mail .................................................... CLIV
CXLIV
Ilustración 21: Dialogo informativo de ejecución del Antivirus ................... CLV Ilustración 22: Dialogo informativo de envío de definición .......................... CLV Ilustración 23: Reporte de SCAN por Maquina.......................................... CLVI Ilustración 24: Detalle SCAN .................................................................... CLVII Ilustración 25: Inactivación de Maquinas .................................................. CLVII Ilustración 26: Asignación Maquina Usuario............................................ CLVIII Ilustración 27: Menú Gestión Usuarios ...................................................... CLIX Ilustración 28: Ingreso Usuarios ................................................................ CLIX Ilustración 29: Asignación de rol a Usuarios............................................... CLX Ilustración 30: Diálogo Informativo de Asignación Exitosa ......................... CLX Ilustración 31: Inactivación de usuario ....................................................... CLX Ilustración 32: Dialogo Informativo de Inactivación de Usuario Exitosa ..... CLX Ilustración 33: Reseteo Clave Usuario ...................................................... CLXI Ilustración 34: Diálogo Informativo de Reseteo de Clave Exitosa ............. CLXI Ilustración 35: Actualización Usuarios ...................................................... CLXII Ilustración 36: Diálogo Informativo de Actualización de Usuario Exitosa . CLXII Ilustración 37: Cambio de Clave Mail Usuario ......................................... CLXIII Ilustración 38: Dialogo Informático de Actualización de Clave mail Exitosa ................................................................................................................ CLXIV Ilustración 39: Elimina Rol Usuario .......................................................... CLXIV Ilustración 40: Diálogo Informativo de Eliminación de Rol de Usuario Exitoso ................................................................................................................ CLXIV Ilustración 41: Instalación Java pantalla 1-5 ........................................... CLXVII Ilustración 42: Instalación Java pantalla 2-5 .......................................... CLXVIII Ilustración 43: Instalación Java pantalla 3-5 .......................................... CLXVIII Ilustración 44: Instalación Java pantalla 4-5 .......................................... CLXVIII Ilustración 45: Instalación Java pantalla 5-5 ............................................ CLXIX Ilustración 46: Instalación ClamWin 1-11 ................................................ CLXIX Ilustración 47: Instalación ClamWin 2-11 ................................................ CLXIX Ilustración 48: Instalación ClamWin 3-11 ................................................ CLXIX Ilustración 49: Instalación ClamWin 4-11 ................................................. CLXX Ilustración 50: Instalación ClamWin 5-11 ................................................. CLXX Ilustración 51: Instalación ClamWin 6-11 ................................................. CLXX Ilustración 52: Instalación ClamWin 7-11 ................................................ CLXXI Ilustración 53: Instalación ClamWin 8-11 ................................................ CLXXI Ilustración 54: Instalación ClamWin 9-11 ................................................ CLXXI Ilustración 55: Instalación ClamWin 10-11 .............................................. CLXXI Ilustración 56: Instalación ClamWin 11-11 ............................................. CLXXII Ilustración 57: Diagrama de base de datos ........................................... CLXXV
CXLV
MANUAL DE USUARIO
INGRESO AL SISTEMA Se detalla la pantalla de inicio del sistema, en la deberá ingresar el usuario y la
clave.
De clic en el botón OK para que inicie sesión. Ver ilustración 1
Ilustración 34: Inicio
CAMBIO DE CLAVE Para realizar el cambio de clave siga los siguientes pasos.
1.- En la parte izquierda de la interfaz del sistema se presenta la opción
“Cambio de Clave”, de clic aquí si desea realizar cambio de clave del usuario
con el que ingresó al sistema. Ver Ilustración 2
CXLVI
Ilustración 35 : Opción Cambio de clave
2.- Se presentará un mensaje para que confirme si desea o no cambiar la
clave. Ver Ilustración 3
Ilustración 36: Dialogo de confirmación de cambio de Clave
3.- Ingrese la clave actual, ingrese la nueva clave y confirme la misma, al
realizar estas acciones usted habrá finalizado con éxito en cambio de clave.
Ver Ilustraciones 4 y 5
Ilustración 37: Pantalla para el cambio de clave
CONFIGURACIONES El ingreso de configuraciones se realiza a través del menú de opciones
“Configuraciones”, las configuraciones, representan las diferentes acciones
predeterminadas que las maquinas de la red deberán de forma automática
realizar con una sencilla configuración de parámetros que se detallan a
continuación. Ver Ilustración 5
Ilustración 38: Opciones del Menú configuraciones
CREACION DE TIPOS DE CONFIGUARCION Para realizar el exitoso ingreso de tipos de configuraciones deberá realizar la
siguiente acción.
1.- De clic en la opción Creación Tipo Configuración, el la parte central de la
interfaz del sistema se presentará la pantalla en la que se deberá ingresar
información necesaria para la configuración. Ver Ilustración 6
CXLVII
Ilustración 39: Ingreso de Tipo Configuración
INGRESO DE
CONFIGURACION
Las configuraciones son las diferentes parametrizaciones que tendrá el
sistema, es decir, usted podrá describir con exactitud lo que desee que el
sistema realice previo en ingreso de la configuración, como por ejemplo el
envío de alarmas días y horas específicas. Para realizar el ingreso de las
configuraciones deberá seguir los siguientes pasos.
1.- Para el ingreso de configuraciones de clic en la opción “Ingreso
Configuración” del menú configuraciones. Ver Ilustración 7.
Ilustración 40: Opción Ingreso configuración
2.- Ingrese las configuraciones, llenando todos los campos que solicita la
pantalla, las configuraciones que ingrese se irán presentando en la parte
inferior. Ver Ilustración 8.
Ilustración 41: Ingreso de Configuración
3.- Al seguir los pasos que se detallaron, usted podrá realizar el ingreso exitoso
de las configuraciones. Ver Ilustración 9
CXLVIII
Ilustración 42: Cuadro de dialogo de mensaje Exitoso
ASIGNACION CONFIGURACION MAQUINAS Este proceso le permitirá asignar a cada máquina de la red la configuración o
configuraciones que usted necesita que alguna maquina posea, una maquina
de la red puede tener más de una configuración, de acuerdo a la necesidad.
Para realizar la asignación de las configuraciones a las maquinas se deberán
seguir los siguientes pasos.
1.- de clic sobre la opción “Asignación Configuración Máquinas” del menú
configuraciones. Ver Ilustración 10
Ilustración 43: Opción Asignación Configuraciones Maquinas
2.- En la parte central de la pantalla observara dos Grids, el Grid superior
contiene las maquinas disponibles de la red, en esta pantalla se podrá realizar
la asociación, maquina – configuración. De clic en el CheckBox que se
encuentra al lado derecho del Grid superior, se presentará la pantalla que
contiene las configuraciones disponibles que previamente se hayan ingresado
Ver Ilustración 11, en esta pantalla seleccione la configuración que desee
asignar a las maquina que requiera, volverá a la pantalla principal y podrá
guardar la asignación realizada, Ver Ilustración 12.
CXLIX
Ilustración 44: Ingreso
Configuración Máquina
CL
Ilustración 45: Gestión Asignación Configuración Maquinas
2.- Al Guardar la asignación se presentará el mensaje que le confirmará que la
tarea ha sido realizada con éxito. Ver ilustración 13
Ilustración 46: Dialogo de confirmación de Ingreso exitoso de
configuración maquina
REPORTES PCS
En este menú se muestran los reportes que están disponibles, se detallará
brevemente la forma de accederlos.
TOP 10
Muestra los Virus que con mayor frecuencia se han encontrado en la Red. Ver
Ilustración 14.
Ilustración 47: Reporte TOP 10
DESCARGAS
CLI
Mostrará un reporte de las descargas realizadas hacia las maquinas de la red,
se presentará de forma especifica si la tarea de descarga se realizó son éxito o
no. Ver Ilustración 15.
Ilustración 48: Reporte Descargas
CLII
USUARIOS DEL SISTEMA Presenta los usuarios del dominio. Ver Ilustración 16
Ilustración 49: Usuarios Máquinas
GESTOR MAQUINAS En
este
men
ú
pres
entar
emo
s las opciones necesarias para la gestión de las maquinas de la red y las
diversas actividades que con ellas requerirá efectuar. A continuación
realizaremos una amplia descripción de las opciones disponibles. Ver
Ilustración 17.
Ilustración 50: Opciones Menú Gestor Máquinas
CLIII
TODA LA RED
En esta pantalla usted podrá realizar varias acciones sobre las Maquinas que
conforman su red. En el Grid de la parte superior usted observará las acciones
que podrá realizar, entre estas: Envío de mail, Ejecución de antivirus, envío de
actualiización, reporte Scan de Máquina.Ver Ilustración 18.
Ilustración 51: Gestión de Configuraciones de Maquinas Encendidas
VERIFICACIÓN DE ESTADOS DE PCS.
Para que usted pueda tener una lista actualizada de las máquinas de la red que
están disponibles (en red), deberá dar clic cobre el botón que se encuentra en
la parte superior derecha de la pantalla. Ver Ilustración 19.
Ilustración 52: Botón para la actualización de los sitios de red
CLIV
Al dar clic en el checkBox Mail se presentará la pantalla en la que usted podrá
enviar un e-mail al usuario de la Máquina que ha seleccionado. Ver
Ilustración 20.
Ilustración 53: Gestión Envío de E-Mail
CLV
EJECUCION DE ANTIVIRUS
Si desea realizar de forma remota la ejecución del antivirus a cualquier
maquina de la red, bastará con dar clic sobre el CheckBox “Ejecución de
antivirus”. Se mostrará un mensaje que indica que la ejecución se realizar, de
clic en aceptar para seguir con el proceso de ejecución. Ver Ilustración 21
Ilustración 54: Dialogo informativo de ejecución del Antivirus
ENVIO ACTUALIZACION Para realizar de forma remota el envío de la definición del antivirus a cualquier
maquina de la red, de clic sobre le checkBox “Envío Actualización”, se
presentará una pantalla de dialogo que le indicará que la transferencia del
archivo hacia su destino fue exitosa. Ver Ilustración 22.
Ilustración 55: Dialogo informativo de envío de definición
CLVI
REPORTE SCAN MAQUINA Para obtener un reporte de los análisis efectuados a lo largo del tiempo en
cada una de las maquinas de la red deberá seguir las siguientes indicaciones.
1.- Al dar Clic sobre el checkBox “Reporte Scan” se presentará la pantalla que
le mostrará una lista de los análisis efectuados, se presentará información
general como, el tipo de ejecución, es decir, si esta fue manual o automática, la
fecha de ejecución. Ver Ilustración 23.
Ilustración
56: Reporte de SCAN por
Maquina
2.- Para
obtener
un reporte
detallado de algún análisis en especifico de clic sobre el checkBox “Detalle
Scan”, aquí se mostrará una pantalla con el detalle especifico, nombre de los
virus encontrados, acción que se llevo a acabo con los mismos y demás. Ver
Ilustración 24.
CLVII
Ilustración 57: Detalle SCAN
INACTIVACION DE MAQUINAS
Esta opción le permitirá inactivar maquinas que por algún motivo han sido
retiradas de la red local, esta opción le facilitará reciclar las direcciones IP que
ya han sido usadas por alguna PC a lo largo del tiempo dentro de la red. Ver
Ilustración 25.
Ilustración 58: Inactivación de Maquinas
ASIGNACIÓN MAQUINA USUARIO
Para realizar la asociación de una maquina con un usuario determinado podrá
utilizar la opción “Asignación Maquina Usuario”, esta opción le permitirá poder
tener un control especifico del usuario que se encuentra en cada maquina, y
poder realizar envió de e-mail de forma automática. Ver Ilustración 26.
CLVIII
Ilustración 59: Asignación Maquina Usuario
CLIX
GESTION USUARIOS
En este menú encontrará las opciones necesarias para la Gestión de los
usuarios, como se detalla a continuación. Ver Ilustracuón 27.
Ilustración 60: Menú Gestión Usuarios
INGRESO USUARIO Para el ingreso de usuarios hago uso de la pantalla “Ingreso de usuarios”. Ver Ilustración 28.
Ilustración 61: Ingreso Usuarios
ASIGNACION ROL
Para la asignación de roles a los usuarios del sistema, utilice la opción del
menú “Asignación Rol”, aquí podrá seleccionar un usuario, y a continuación el
tipo de rol que desea asignar. Los tipos de roles disponible se detallan a
continuación:
Administrador; tiene acceso total al aplicativo.
Usuario Privilegio; tiene acceso solamente a opciones de reporte
Usuario Mail; solo tiene acceso a ingresar y cambiar su clave de correo
Ver Ilustración 29.
CLX
Ilustración 62: Asignación de rol a Usuarios
Al Guardar la Asignación se presentará el dialogo indicando que su Asignación
fue exitosa. Ver Ilustración 30
Ilustración 63: Diálogo Informativo de Asignación Exitosa
INACTIVACION USUARIO
Para la inactivación de usuario utilice la opción “Inactivación Usuario”,
seleccione el usuario y la observación correspondiente. Ver Ilustración 31.
Ilustración 64: Inactivación de usuario
Al realizar la inactivación de un usuario se presentará el cuadro de dialogo que
le informará si la transacción correcta del usuario en cuestión. Ver Ilustración
32.
Ilustración 65: Dialogo Informativo de Inactivación de Usuario Exitosa
CLXI
RESETEO DE CLAVE
Para el reseteo de la clave de un usuario utilice la opción del menú “Reseteo de
Clave”, seleccione el usuario al que desea resetear la clave y la observación
correspondiente, el usuario con Rol de administrador puede hacer uso de esta
opción. Ver Ilustración 33.
Ilustración 66: Reseteo Clave Usuario
La clave es reseteada a un valor por defecto del 1 al 8 si esta acción se realiza
con éxito se presentará un cuadro de dialogo indicándolo. Ver Ilustración 34.
Ilustración 67: Diálogo Informativo de Reseteo de Clave Exitosa
CLXII
ACTUALIZACION DE USUARIO
Para la Actualización de los usuarios ingresados utilice la opción “Actualización
de Usuario” del menú, seleccione el usuario al que desea actualizar del combo,
y de clic sobre el botón de la lupa, automáticamente se presentarán los campos
correspondientes a dicho usuario para que usted los pueda editar.
Al Finalizar guarde los cambios dando clic en el botón “Guardar”. Ver
Ilustración 35.
Ilustración 68: Actualización Usuarios
Si la Actualización es
exitosa, se presentará el
dialogo indicando el éxito
de la transacción. Ver
Ilustración 36.
Ilustración 69: Diálogo Informativo de Actualización de Usuario Exitosa
CAMBIO DE CLAVE MAIL
Para realizar el cambio de clave del usuario de e-mail que ha ingresado al
sistema, haga uso de la opción “Cambio de Clave Mail”, ingrese la nueva
CLXIII
contraseña, y guarde los cambios efectuados con el botón guardar. Ver
Ilustración 37.
Ilustración 70: Cambio de Clave Mail Usuario
CLXIV
Si el cambio de clave se hace de forma exitosa, se presentará el dialogo
informativo indicando el éxito de la acción. Ver Ilustración 38.
Ilustración 71: Dialogo Informático de Actualización de Clave mail Exitosa
ELIMINAR ROL USUARIO
Para la eliminación del Rol que posee un usuario determinado, seleccione el
usuario y de clic en guardar. Ver Ilustración 39.
Ilustración 72: Elimina Rol Usuario
Ilustración 73: Diálogo Informativo de Eliminación de Rol de Usuario Exitoso
MANUAL DE INSTALACIÓN
El proceso de montaje del sistema de administración SkyLinx esta dividido en
dos etapas: Preparación del Servidor y clientes.
SERVIDOR
El servidor deberá contar con el sistema operativo LINUX: FEDORA Core 6,
además tener levantados los siguientes servicios:
Servidor DNS (named)
Servidor DHCP (dhcpd)
Servidor Web Apache (httpd)
Servidor Tomcat
CLXV
Servidos de Correo (sendmail)
Servidor FTP (vsftp)
Servidor de Base de Datos Postgres (postgresql)
Para la administración de todos estos servicios se instalo el Webmin
1.360. El software requerido en el servidor es JAVA (JDK 1.5)
CLIENTES
Los clientes contaran con el sistema operativo Windows XP, además tener
levantado los siguientes servicios y programas:
Servicios de Internet Information Server (IIS)
Servicio de Protocolo de transferencia de archivod (FTP)
JAVA (JDK 1.5)
Modulo cliente SkyLinx.
Archivo bak
PROCESO DE INSTALACIÓN EN EL SISTEMA OPERATIVO LINUX
Instalación de Java
El primer paso es descargar el JDK desde “java.sun.com”, seleccionando la
versión 1.5 o una superior, para la plataforma Linux.
1. Nos Colocamos en el directorio /usr/local/, y realizamos los siguientes
pasos para la instalación:
2. Para el archivo "Self-Extracting-Binary" cambiar los permisos del archivo
con el siguiente comando.
: chmod a+x j2sdk-1_4_2_<numero_version>-linux-i586.bin .
3. Ejecutar del directorio local:
./j2sdk-1_4_2_<numero_version>-linux-i586.bin .
CLXVI
4. Aceptar la Licencia de Usuario.
Una vez terminada la instalación se recomienda cambiar el nombre del
directorio a jdk; quedando instalado en una ruta absoluta: /usr/local/jdk .
5. Para la Documentación:
Cambiar los permisos del archivo con el siguiente comando:
chmod a+x j2sdk-1_4_2_doc.zip .
6. Descomprimir archivo con el siguiente comando:
unzip ./j2sdk-1_4_2_doc.zip .
Configuración: El JDK requiere configurarse con diversas variables ambientales para su
correcta operación:
1. JAVA_HOME : Indica el directorio raíz de instalación del JDK, de acuerdo a
las instrucciones anteriores esta ruta sería : /usr/local/jdk
2. PATH: Define la ruta de acceso para los binarios del sistema; la
modificación de esta variable permite acceder los ejecutables Java
(javac,javadoc,java) proporcionadas con el JDK de cualquier directorio.
3. CLASSPATH : Define las rutas de acceso para las diversas librerías
empleadas en ambientes Java
JAVA_HOME="/usr/local/jdk"
CLASSPATH="/usr/local/mislibrerias"
PATH="$PATH:/usr/local/jdk/bin"
export JAVA_HOME
export PATH
Instalación de Apache Tomcat
Colocarse en el directorio /usr/local/, realizar los siguientes pasos:
1. Descomprimir el archivo con el siguiente comando:
CLXVII
tar -xzvf jakarta-tomcat-5.x.x.tar.gz .
2. Una vez terminada la instalación se recomienda cambiar el nombre del
directorio jakarta-tomcat-5.x.x a simplemente tomcat; quedando instalado en
una ruta absoluta: /usr/local/tomcat.
Configuración Tomcat requiere configurarse con diversas variables ambientales para su
correcta operación:
1. CATALINA_HOME: Indica el directorio raíz de instalación de Tomcat
(Catalina), de acuerdo a las instrucciones anteriores esta ruta sería :
/usr/local/tomcat
PROCESO DE INSTALACIÓN EN LOS CLIENTES
Instalación de Java
El primer paso es descargar el JDK desde “java.sun.com”, seleccionando la
versión 1.5 o una superior.
Ejecutamos el instalador. Una vez que el instalador se ha auto-
desempaquetado, presenta la licencia para que digamos que la aceptamos.
Ilustración 74: Instalación Java
pantalla 1-5
A continuación se nos piden detalles de la instalación. Por defecto es:
CLXVIII
Ilustración 75: Instalación Java pantalla 2-5
Durante un rato se descomprimen y copian ficheros. En cierto momento, dentro
de la instalación del JDK se inicia la instalación del JRE. Nuevamente hay que
tomar nota del directorio donde se instala porque vamos a necesitarlo más
tarde para instalar otros programas. El que viene por defecto es: C:\Archivos de
programa\Java\jre1.5.0_06\
Ilustración 76: Instalación Java pantalla 3-5
La instalación del JRE pregunta si queremos asociarlo con los navegadores
que tenemos instalados para poder ejecutar en ellos applets.
Ilustración 77: Instalación Java pantalla 4-5
A partir de aquí, simplemente termina de desempaquetar ficheros y finalmente
nos informa de que la instalación ha terminado.
CLXIX
Ilustración 78: Instalación Java pantalla 5-5
Instalación de Clamwin Pulsamos en continuar
Ilustración 79: Instalación ClamWin 1-11
Aceptamos el acuerdo de licencia.
Ilustración 80: Instalación ClamWin 2-11
Seleccionamos la opción (all users) para que el programa esté disponible al
resto de usuarios de nuestro PC.
Ilustración 81: Instalación ClamWin 3-11
Seleccionamos un directorio para su instalación
CLXX
Ilustración 82: Instalación ClamWin 4-11
Y dejamos las opciones por defecto para permitir su integración con el
Explorador de Windows.
Ilustración 83: Instalación ClamWin 5-11
Seleccionamos una carpeta donde se crearán los accesos directos al
programa.
Ilustración 84: Instalación ClamWin 6-11
Seleccionamos la opción de descargar los archivos de la base de datos con las
definiciones de virus. De esta forma, además de instalar el antivirus, estamos
actualizándolo. Evidentemente necesitamos conexión a Internet. Si usamos
Proxy, habrá que dejar la actualización hasta configurar el acceso una vez
terminada la instalación.
CLXXI
Ilustración 85: Instalación ClamWin 7-11
Con todas las opciones que hemos seleccionado, pulsamos Install.
Ilustración 86: Instalación ClamWin 8-11
La instalación extrae y copia los ficheros a la carpeta anteriormente
seleccionada.
Ilustración 87: Instalación ClamWin 9-11
Y comienza a descargarse la actualización desde la Web.
Ilustración 88: Instalación ClamWin 10-11
Si todo ha ido bien, nos aparecerá una pantalla como ésta:
CLXXII
Ilustración 89: Instalación ClamWin 11-11
Podemos comprobar que se han creado los accesos directos en el menú Inicio
y que mientras está en ejecución, lo veremos abajo a la derecha, en la barra de
tareas.
MANUAL TECNICO
INTRODUCCION
Este manual técnico ha sido preparado por el grupo numero cinco del tópico
de graduación.
Agradecemos la colaboración de los profesores, ingenieros y compañeros que
nos han proporcionado orientación necesaria para su elaboración. Este manual
contiene información sobre el empleo del sistema SKYLINX, localización de
procedimientos principales, y la identificación rápida de funciones que
dependen de otros servicios del Sistema Operativo, este sistema ha sido
elaborado de acuerdo con la metodología de programación Orientada a
Objetos. Las operaciones que no se describen en este manual no han sido
incluidas por considerarse básicas y de conocimiento de las personas a quien
va dirigido este documento. Cabe señalar que es responsabilidad de este
grupo mantener dicho documento actualizado de acuerdo a los cambios que
sufra el sistema en el transcurso del tiempo.
CLXXIII
DIAGRAMA GENERAL
CLXXIV
Inicio
Verificar miembros
de la red
Verifica definición
en el servidor
Verifica red
Verifica
actualizaciones de
clientes
Envía
actualización
Verifica ultimo
scan
Envía scan
Envía mensaje
Actualizado
FinalizaActualizado
Scaneado
recientemente
Descarga
Actualización
internet
Verifica Definición
del Servidor
Verifica Definición
del Cliente
Verifica Scan del
Cliente
No
si
No
Si
No
Si
DIAGRAMA DE BASE DE DATOS
CLXXV
virus
ID_VIRUS
DESCRIPCIONOBSERVACIONFECHA_RESGISTROESTADO
usuarios
ID_USUARIO
ID_PERSONA (FK)USUARIOCLAVEESTADOID_NUMERICO_SUCURSAL (FK)
tipos_empleados
ID_TIPO_EMPLEADO
DESCRIPCION_TIPOOBSERVACIONFECHA_REGISTROESTADO
tipo_parametro
id_parametro
DESCRIPCION_TIPOOBSERVACIONFECHA_REGISTROESTADO
tipo_maquina
ID_TIPO_MAQUINA
DESCRIPCIONFECHA_REGISTROESTADOOBSERVACION
tipo_configuracion
ID_TIPO_CONFIGURACION
DESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
suscursales
ID_NUMERICO_SUCURSAL
ID_NUMERICO_EMPRESA (FK)NOMBRE_SUCURSALDESCRIPCION_SUCURSALDIRECCIONTELEFONOCIUDADIDENTIFICACION_SUCURSALESTADO
scan
ID_SCAN
ID_MAQUINA (FK)DESCRIPCIONFECHA_SCANESTADORUTA_ARCHIVO_LOG
roles_usuarios_aplicacion
ID_ROL_APLICACION (FK)ID_USUARIO (FK)
FECHA_CREACIONOBSERVACIONESTADO
roles_aplicacion
IDROL
DESCROLOBSERVACIONFECHA_CREACIONESTADO
personas
ID_PERSONA
VALOR_IDENTIFICACIONNOMBREAPELLIDOSFECHA_NACIMIENTOCIUDADDIRECCIONTELEFONO_CASACELULAREMAILTIPO_SANGRETIPO_PERSONAESTADOFECHA_REGISTROSEXOARCHIVO_FOTO
parametros_generales
id_parametro (FK)
CLAVE_PARAMETROVALOROBERVACION
opciones_roles
ID_ROL (FK)ID_OPCION (FK)
FECHA_CREACIONOBSERVACIONESTADO
opciones_aplicacion
ID_OPCION_APLICACION
ID_OPCIONDESCRIPCIONNOMBRE_OPCIONTARGETTITULODIRECCION_APLICACIONORDENNOMBRE_PAGINAESTADO
metodo_clase_proceso
ID_METODO_CLASE_PROCESO
ID_CLASE_PROCESO (FK)DESCRIPCION_METODOOBSERVACIONFECHA_REGISTROESTADO
marquesinas
ID_NUMERICO_MARQUESINA
MENSAJEESTADOFECHA_REGISTROORDEN_MARQUESINA
marquesina_sucursal
ID_SUCURSAL (FK)ID_MARQUESINA (FK)DESCRIPCIONFECHA_REGISTROESTADO
maquina_usuario
ID_ASIGNACION_MAQUIINA_USER
ID_MAQUINA (FK)ID_USUARIO (FK)OBSERVACIONFECHA
maquina
ID_MAQUINA
ID_TIPO_MAQUINA (FK)ESTADO_OPERACIONNOMBRE_PC
empresas
ID_NUMERICO_EMPRESA
NOMBRERAZON_SOCIALDIRECCIONRUCNOMBRE_COMERCIALFECHA_REGISTROESTADO
empleados
ID_EMPLEADO
ID_PERSONA (FK)ID_TIPO_EMPLEADO (FK)AREASUELDOFECHA_INGRESOFECHA_SALIDAFECHA_REGISTROESTADOID_USUARIO_INGRESOID_JEFE (FK)
detalle_virus
ID_DETALLE_VIRUS
ID_VIRUS (FK)DESCRIPCION_DETALLEOBSERVACIONFECHA_REGISTROESTADO
detalle_scan
ID_DETALLE_SCAN
ID_SCAN (FK)ID_VIRUS (FK)DESCRIPCIONOBSERVACIONACCION_REALIZADARUTA_VIRUS_ENCONTRADOFECHA_REGISTROESTADO
detalle_configuracion
ID_DETALLE_CONFIGURACION
ID_CONFIGURACION_MAQUINA (FK)ID_ACCION (FK)DESCRIPCIONOBSERVACIONFECHA_REGISTRODATO_ACCIONESTADO
descargas
ID_DESCARGA
ID_MAQUINA (FK)FECHA_DESCARGAESTADONOMBRETAMANIO
configuraciones_maquinas
ID_CONFIMAQUINAS
ID_CONFIGURACION (FK)ID_MAQUINA (FK)OBSERVACIONFECHA_REGISTROESTADO
configuraciones
ID_CONFIGURACIONES
ID_TIPO_CONFIGURACION (FK)VALORDESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
clientes
ID_NUMERICO_CLIENTE
ID_PERSONA (FK)ESTADOFECHA_REGISTROID_USUARIO_INGRESO
clase_proceso
ID_PROCESO
FECHA_REGISTROESTADOOBSERVACIONarchivos_personas
ID_ARCHIVO
ID_PERSONA (FK)CLAVE_ARCHIVOESTADOFECHA_REGISTROOBSERVACIONVALOR_ARCHIVO
acciones
ID_ACCION
DESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
Ilustración 90: Diagrama de base de datos
SCRIPTS DE BASE DE DATOS
Script para la creación de la base de datos:
CREATE DATABASE skylinx
WITH OWNER = skylinx
ENCODING = 'LATIN1'
TABLESPACE = pg_default;
CLXXVI
Script para la creación de la tabla “acciones” CREATE TABLE acciones (
id_accion numeric(50,0) NOT NULL,
descripcion character(300),
observacion character(200),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “archivos_personas” CREATE TABLE archivos_personas (
id_persona numeric(100,0) NOT NULL,
id_archivo numeric(100,0) NOT NULL,
clave_archivo character(400),
estado character(1),
fecha_registro date,
observacion character(500),
valor_archivo bytea
);
Script para la creación de la tabla “clase_proceso”
CREATE TABLE clase_proceso (
id_proceso numeric(50,0) DEFAULT 0 NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
observacion text,
clave_proceso character(200),
descripcion_clase_proceso character(200)
);
Script para la creación de la tabla “configuraciones”
CREATE TABLE configuraciones (
id_configuraciones numeric(50,0) NOT NULL,
id_tipo_configuracion numeric(50,0) NOT NULL,
valor character(300),
descripcion character(300),
observacion character(200),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “configuraciones_maquinas” CREATE TABLE configuraciones_maquinas (
id_confimaquinas numeric(50,0) NOT NULL,
id_configuracion numeric(50,0) NOT NULL,
id_maquina numeric(50,0) NOT NULL,
observacion character(300),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “descargas” CREATE TABLE descargas (
id_descarga numeric(50,0) NOT NULL,
id_maquina numeric(50,0) NOT NULL,
fecha_descarga date,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
nombre character(200),
tamanio character(200)
);
CLXXVII
Script para la creación de la tabla”detalle_configuracion” CREATE TABLE detalle_configuracion (
id_detalle_configuracion numeric(100,0) NOT NULL,
id_configuracion_maquina numeric(100,0) NOT NULL,
id_accion numeric(100,0) NOT NULL,
descripcion character(300),
observacion character(300),
fecha_registro date NOT NULL,
dato_accion character(300),
estado character(1) NOT NULL
);
Script para la creación de la tabla
CREATE TABLE detalle_scan (
id_detalle_scan numeric(100,0) NOT NULL,
id_scan numeric(100,0) NOT NULL,
id_virus numeric(100,0),
descripcion character(300),
observacion character(300),
accion_realizada character(200),
ruta_virus_encontrado text,
fecha_registro date,
estado character(1)
);
Script para la creación de la tabla “empresas” CREATE TABLE empresas (
id_numerico_empresa numeric(50,0) NOT NULL,
nombre character(100) NOT NULL,
razon_social character(100) NOT NULL,
direccion character(100),
ruc character(20) NOT NULL,
nombre_comercial character(100) NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
identificador character(4),
archivo_logo character(100)
);
Script para la creación de la tabla “maquina” CREATE TABLE maquina (
id_maquina numeric(50,0) DEFAULT 0 NOT NULL,
id_tipo_maquina numeric(50,0) DEFAULT 0 NOT NULL,
nombre_pc character(200) NOT NULL,
descripcion_pc character(300) NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
observacion character(200),
estado_operacion character(2),
ip_maquina character(300)
);
Script para la creación de la tabla “maquina_usuario”
CREATE TABLE maquina_usuario (
id_asignacion_maquiina_user numeric(100,0) NOT NULL,
id_maquina numeric(100,0),
id_usuario numeric(100,0),
observacion character(300),
fecha date
CLXXVIII
);
Script para la creación de la tabla “marquesina_sucursal” CREATE TABLE marquesina_sucursal (
id_sucursal numeric(50,0) NOT NULL,
id_marquesina numeric(50,0) NOT NULL,
descripcion character(100),
fecha_registro date,
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “maqrquesinas”
CREATE TABLE marquesinas (
id_numerico_marquesina numeric(50,0) NOT NULL,
mensaje character(200) NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
fecha_resgistro date,
orden_marquesina numeric(100,0)
);
Script para la creación de la tabla “metodo_clase_proceso” CREATE TABLE metodo_clase_proceso (
id_metodo_clase_proceso numeric(50,0) NOT NULL,
id_clase_proceso numeric(50,0) NOT NULL,
descripcion_metodo character(200) NOT NULL,
observacion character(200),
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “opciones_aplicacion” CREATE TABLE opciones_aplicacion (
id_opcion character(3) NOT NULL,
id_opcion_aplicacion numeric(50,0) NOT NULL,
descripcion character(100) NOT NULL,
id_modulo_padre character(3),
nombre_opcion character(40),
target character(100),
titulo character(100),
direccion_aplicacion character(30),
orden numeric(11,0),
nombre_pagina character(100),
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
tipo_opcion character(3),
imagen_principal character(200),
imagen_sustituta character(200),
funcion_java_script character(200)
);
Script para la creación de la tabla “opciones_roles” CREATE TABLE opciones_roles (
id_rol numeric(50,0) NOT NULL,
id_opcion numeric(50,0) NOT NULL,
fecha_creacion date NOT NULL,
observacion character(200),
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “parametros_generales”
CREATE TABLE parametros_generales (
id_parametro numeric(100,0) NOT NULL,
id_tipo_parametro numeric(100,0) NOT NULL,
clave_parametro character(300) NOT NULL,
CLXXIX
valor character(300) NOT NULL,
obervacion character(300),
fecha_registro date,
estado character(1)
);
Script para la creación de la tabla “personas” CREATE TABLE personas (
id_persona numeric(50,0) DEFAULT 0 NOT NULL,
valor_identificacion text NOT NULL,
nombre text NOT NULL,
apellido text NOT NULL,
fecha_nacimiento character(10),
ciudad character(100),
direccion character(100),
telefono_casa character(100),
celular character(10),
email character(100),
tipo_sangre character(100),
tipo_persona character(20),
estado character(1) NOT NULL,
fecha_registro date NOT NULL,
sexo character(1),
archivo_foto character(400)
);
Script para la creación de la tabla “opciones_aplicacion” CREATE TABLE roles_aplicacion (
idrol numeric(50,0) NOT NULL,
descrol character(20) NOT NULL,
observacion character(255) NOT NULL,
fecha_creacion date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “roles_usuarios_aplicacion”
CREATE TABLE roles_usuarios_aplicacion (
id_rol_aplicacion numeric(50,0) NOT NULL,
id_usuario numeric(50,0) NOT NULL,
fecha_creacion date NOT NULL,
observacion character(200),
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “scan” CREATE TABLE scan (
id_scan numeric(100,0) NOT NULL,
id_maquina numeric(100,0) NOT NULL,
descripcion character(300),
fecha_scan date,
estado character(1),
ruta_archivo_log character(300)
);
Script para la creación de la tabla “sucursales” CREATE TABLE suscursales (
id_numerico_sucursal numeric(50,0) NOT NULL,
nombre_sucursal character(100) NOT NULL,
descripcion_sucursal character(100) NOT NULL,
direccion character(100),
telefono character(20),
ciudad character(100),
CLXXX
identificacion_sucursal character(4),
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
id_empresa numeric(50,0) NOT NULL,
fecha_registro date
);
Script para la creación de la tabla “tipo_configuracion”
CREATE TABLE tipo_configuracion (
id_tipo_configuracion numeric(50,0) NOT NULL,
descripcion character(300),
observacion character(200),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “tipo_maquina” CREATE TABLE tipo_maquina (
id_tipo_maquina numeric(50,0) DEFAULT 0 NOT NULL,
descripcion character(200) NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
observacion character(200)
);
Script para la creación de la tabla “tipo_parametro” CREATE TABLE tipo_parametro (
id_parametro numeric(100,0) NOT NULL,
descripcion_tipo character(200) NOT NULL,
observacion character(300),
fecha_registro date,
estado character(1)
);
Script para la creación de la tabla “usuarios” CREATE TABLE usuarios (
id_usuario numeric(50,0) NOT NULL,
usuario character(100) NOT NULL,
clave character(100) NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
fecha_creacion date NOT NULL,
observacion character(200),
id_sucursal numeric(50,0) NOT NULL,
id_persona numeric(100,0) NOT NULL,
fecha_ini_pri_session date
);
Script para la creación de la tabla “virus” CREATE TABLE virus (
id_virus numeric(50,0) NOT NULL,
descripcion character(200),
observacion character(300),
fecha_resgistro date,
CLXXXI
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Configuraciones del Servidor
Cabe señalar que las configuraciones que se presenta a continuación fueron
realizadas en la distribución de Fedora Core 6.
Servidor Web
Para poder configurar el servidor web, debemos tener instalados los siguientes
paquetes:
httpd
openssl
El archivo de configuración httpd.conf del servicio httpd, que se encuentra en la
siguiente ruta: /etc/httpd/conf/ al final de archivo aumentamos nuestro host,
como se muestra a continuación.
#</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/
ServerName www.grupo5.com
</VirtualHost>
Servidor DHCP
CLXXXII
En la configuración del servidor de DHCP se requiere el paquete:
dhcpd
El archivo de configuración es dhcpd.conf ubicado en la ruta /etc/. Aquí
pondremos el rango de nuestras IPs de dominio las cuales serán otorgadas de
forma dinámica a cada PC de nuestra red por el servidor de DHCP. Como se
muestra a continuación.
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style interim;
ddns-updates on;
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.20 192.168.1.254;
default-lease-time 86400;
max-lease-time 604800;
ddns-domainname "grupo5.com";
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name "grupo5.com";
option domain-name-servers 192.168.1.1;
Servidor DNS
Para la configuracion del servidor de DNS require los siguientes paquetes:
Bind
Bind_chroot
Bind_utils
Caching_nameserver
En el archivo named.conf ubicado en la ruta /var/named/chroot/etc se
modifica el nombre de las zonas propias del dominio de la organización. A
continuación se muestra el archivo.
// named.conf for Red Hat caching-nameserver
CLXXXIII
//
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
};
zone "grupo5.com" IN {
type master;
file "grupo5.com.zone";
allow-update { 192.168.1.0/24; };
};
zone "1.168.192.in-addr.arpa.zone" IN {
type master;
file "1.168.192.in-addr.arpa.zone";
allow-update {192.168.1.0/24; };
};
En la ruta /var/named/chroot/var/named, vamos a crear dos archivos
referentes a las zonas propias de nuestro dominio.
Grupo5.com.zone.- Archivo de zona para búsquedas directa. A
continuacion se muestra el archivo.
$TTL 86400
grupo5.com. IN SOA server.grupo5.com. root.grupo5.com.(
2007062702
3H
15M
1W
1D)
IN NS server
IN A 192.168.1.1
server IN A 192.168.1.1
www IN CNAME server
1.168.192.in-addr.arpa.zone.- Archivo de zona de búsqueda inversa. A
continuacion se muestra el archivo.
$TTL 86399
@ IN SOA server.grupo5.com. root.grupo5.com.(
2007062401
3H
15M
1W
1D )
IN NS server.
1 IN PTR server.grupo5.com.
Estos arhivos contendrán todas las maquinas de nuestro dominio. Cabe
señalar, que este servicio named, trabaja en conjunto con el servidor de
CLXXXIV
DHCP.
Servidor FTP
En la configuración del servidor de FTP necesitamos el paquete.
vsftpd
En el archivo de configuración llamado vsftp.conf ubicado en la ruta
/etc/vsftpd/ tenemos que habilitar las siguientes pciones:
Anonymous_enable = yes
Write_a local_enable=yes
Anon_upload_enable=yes
Anon_mkdir_write_enable=yes
Servidor SENDMAIL
El servidor de correo electronico require los siguientes paquetes:
sendmail
sendmail_cf
dovecot
El archivo de configuracion es sendmail.mc ubicado en la direccion
/etc/mail/vsftd/, se modificara los siguientes campos:
DAEMON_OPTIONS(‘port=smtp,name=MTA’)dnl
MASQUERADE AS(‘GRUPO5.COM’)dnl
Antes de subir el servicio se ejecuta el commando:
CLXXXV
# sendmail.mc > sendmail.cf
Servidor de POSTGRES
El servidor de base de datos requiere del siguiente paquete:
postgresql
Los archivos de configutracion son postgresql.conf y pg_hba.conf que se
encuentra en la siguiente ruta /var/lib/pgsql/data
En el archivo postgresql.conf se debe escribir la IP del servidor.
Acontinuacion se muestra un fragmento del archivo.
# - Connection Settings -
listen_addresses = '192.168.1.1' # what IP address(es) to
listen on;
En el archivo pg_hba.conf se debe escribir la IP o dominio la cual va a tener
acceso a la base de datos y el metodo de encriptación. Acontinuacion se
muestra un fragmento del archivo.
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
# IPv6 local connections:
#host all all ::1/128 md5
SCRIPT DE CONEXIÓN
Script para la creación de la conexión “hibernate-configuration”:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-
3.0.dtd">
CLXXXVI
<hibernate-configuration>
<session-factory>
<!-- Base de Datos propiedades de la conexion con postgresql--
>
<property name="connection.driver_class"
org.postgresql.Driver
</property>
<property name="connection.url">
jdbc:postgresql://192.168.1.1:5432/skylinx
</property>
<property name="connection.username">skylinx</property>
<property name="connection.password">skylinx</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">-1</property>
<!-- SQL dialect -->
<property name="dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">
org.hibernate.cache.NoCacheProvider
</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<mapping
resource="modelo/clasesPersistentes/clasesProcesos/ClasesProcesos
.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/metodoClaseProceso/MetodoClas
eProceso.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/empresa/Empresas.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/sucursales/Suscursales.hbm.xm
l" />
<mapping
resource="modelo/clasesPersistentes/marquesina/Maquesina.hbm.xml"
/>
<mapping
resource="modelo/clasesPersistentes/marquesinaSucursal/Marquesina
Sucursal.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/personas/Persona.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/usuario/Usuario.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/rolesAplicacion/RolAplicacion
.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/rolesUsuariosAplicacion/Roles
UsuariosAplicacion.hbm.xml" />
CLXXXVII
<mapping
resource="modelo/clasesPersistentes/opciones/Opcion.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/opcionesRoles/OpcionesRoles.h
bm.xml" />
<!-- Esto es lo nuevo-->
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Acciones.hbm.xml"
/>
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Configuraciones.hb
m.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/ConfiguracionesMaq
uinas.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Descargas.hbm.x
ml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/DetalleConfigur
acion.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/DetalleScan.hbm
.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/DetalleVirus.hb
m.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Maquina.hbm.xml
" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Scan.hbm.xml"
/>
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/TipoConfiguraci
on.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/TipoMaquina.hbm
.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Virus.hbm.xml"
/>
<mapping
resource="modelo/clasesPersistentes/personas/ArchivosPersonas.hbm
.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/TipoParametro.h
bm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/ParametrosGener
ales.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/MaquinaUsuario.
hbm.xml" />
CLXXXVIII
</session-factory>
</hibernate-configuration>
SCRIPTS DE CLASES RELEVANTES
GeneraMenuDinamico.-
Este Componente nos permite generar de forma dinámica el menú que se
presenta al inicio de sesión de la aplicación, consulta de la base de datos,
específicamente de las tablas “Opciones aplicación” y ”opciones_ roles”, los
menús que están relacionados entre si, significa que mostrará tanto los menús
padres como los hijos de acuerdo a los parámetros que se hayan establecido,
de esta forma se evita quemar los menús y facilitar el crecimiento dinámico.
package capaProcesos.procedimientos.aplicacion;
import org.hibernate.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import javax.servlet.jsp.PageContext;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.opciones.Opcion;
import java.sql.*;
public class GeneraMenuDinamico extends Procedimiento
{
//String separador = "";
public GeneraMenuDinamico ()
{
super("Procesos de aplicacion");
}
/*
*Metodo que realiza el pintado
*de los menus padres
*de la aplicacion
**/
public void generarMenuDinamico (Session sesionHibernate,
PageContext contextoPagina)throws Exception //, PrintWriter out)
{
System.out.println(" hola mundo ");
HttpSession sessionServlet = contextoPagina.getSession();
RolAplicacion roll =
(RolAplicacion)sessionServlet.getAttribute("rollGlobal");
//Con este query obtengo todos los menus padres
//String lsQuery = " from
modelo.clasesPersistentes.opciones.Opcion opcion where opcion.estado
= 'A' and opcion.opcionesAplicacions = null and
opcion.opcionesRoleses.id.idRol = " + roll.getIdRol();
//System.out.println("paso el query " + lsQuery );
//Iterator lista =
sesionHibernate.createQuery(lsQuery).iterate();
//System.out.println("paso la ejecucion");
//sesionHibernate.flush();
PreparedStatement prepareStatementPadre = null;
CLXXXIX
ResultSet resultadoPadres = null;
String lsQuery = "select a.* from opciones_roles b, "+
" opciones_aplicacion a " +
" where b.id_rol = "+
roll.getIdRol() + " " +
" and b.estado = 'A' "+
" and a.id_opcion_aplicacion
= b.id_opcion "+
" and a.ID_MODULO_PADRE is
null "+
" and a.estado = 'A' "+
" and a.tipo_opcion = 'MNU'
"+
" order by a.orden";
Connection coneccion = sesionHibernate.connection();
prepareStatementPadre =
coneccion.prepareStatement(lsQuery);
resultadoPadres = prepareStatementPadre.executeQuery();
try
{
/*Tener cuidado con la coneccion
**/
contextoPagina.getOut().println(" <script> ");
contextoPagina.getOut().println("var tmenuItems = [
");
while (resultadoPadres.next() )
{
//Opcion loOpcion = (Opcion)lista.next();
Opcion loOpcion = new Opcion();
loOpcion.setDescripcion(resultadoPadres.getString(3));//String
loOpcion.setDireccionAplicacion(resultadoPadres.getString(8));//S
tring
loOpcion.setEstado(resultadoPadres.getString(11));//--String
loOpcion.setIdOpcion(resultadoPadres.getString(1));//--String
loOpcion.setIdOpcionAplicacion(new
Integer(resultadoPadres.getString(2)));//Integer
loOpcion.setNombreOpcion(resultadoPadres.getString(5));//String
loOpcion.setNombrePagina(resultadoPadres.getString(10));//String
loOpcion.setTarget(resultadoPadres.getString(6));//String
loOpcion.setTitulo(resultadoPadres.getString(7));//String
String descripcion =
loOpcion.getDescripcion();
contextoPagina.getOut().println("[\""+
descripcion +"\",\"\", \"\", \"\", \"\", \""+descripcion+"\",
\"_blank\", \"\", \"\", ],");
System.out.println("Opcion Padre " +
descripcion);
//separador = "";
System.out.println("[\""+ descripcion.trim()
+"\",\"\", \"\", \"\", \"\", \""+descripcion.trim()+"\", \"_blank\",
\"\", \"\", ],");
//PREGUNTAR SI TIENE HIJOS
CXC
generaMenusHijos (loOpcion.getIdOpcion(),
coneccion, contextoPagina);
}
contextoPagina.getOut().println("]; ");
contextoPagina.getOut().println(" </script> ");
//Cerra la coneccion
coneccion.close();
//sesionHibernate.close();
}
catch (Exception h)
{
throw new Exception ("Error al generar el menu
dinamico " + h.getMessage());
}
finally
{
coneccion.close();
}
// String queryQue obtieneSoloLosPadre = "";
//contextoPagina.getOut().println("[\""+ descripcion
+"\",\"\", \"\", \"\", \"\", \""+descripcion+"\", \"_blank\", \"\",
\"\", ],");
}
/*
*Metodo que genera el pintado de los menus hijos
*este metodo es llamado internamente por los menus padres
**/
public void generaMenusHijos (String opcionPadre, Connection
coneccion, PageContext contexto ) throws Exception
{
PreparedStatement prepareStatementHijo = null;
ResultSet resultado = null;
int primero = 0;
HttpSession sessionServlet = contexto.getSession();
RolAplicacion roll =
(RolAplicacion)sessionServlet.getAttribute("rollGlobal");
// System.out.println("este es el separador para " +
opcionPadre + " -- " + separador);
try
{
String lsQueryHijos = " select * "+
" from
opciones_aplicacion t, " +
" opciones_roles
b " +
" where
t.ID_MODULO_PADRE = '" + opcionPadre +"'"+
" and
t.id_opcion_aplicacion = b.id_opcion "+
" and b.estado = 'A'
"+
" and b.id_rol = "+
roll.getIdRol() + " " +
" and t.estado = 'A'"
+
" and t.tipo_opcion =
'MNU'" +
" order by t.orden";
System.out.println(lsQueryHijos);
prepareStatementHijo =
coneccion.prepareStatement(lsQueryHijos);
resultado = prepareStatementHijo.executeQuery();
CXCI
while ( resultado.next() )
{
primero++;
if (primero == 1 )
{
// separador = separador + "|";
}
System.out.println("Entro a buscar a los hijos");
String descripcion = resultado.getString(3);
String pagina = resultado.getString(10);
String target = resultado.getString(6);
String titulo = resultado.getString(7);
String rutaAplicacion = resultado.getString(8);
System.out.println("Pagina: " + pagina );
System.out.println("Descripcion: " + descripcion );
System.out.println("Target: " + target );
System.out.println("Titulo: " + titulo );
System.out.println("Ruta: " + rutaAplicacion );
if ( pagina==null)
{
pagina="";
rutaAplicacion = "";
}
//contexto.getOut().println("[\""+ separador+
descripcion +"\",\""+rutaAplicacion+pagina+"\", \"\", \"\", \"\",
\""+titulo+"\", \""+target+"\", \"\", \"\", ],");
contexto.getOut().println("[\""+ descripcion.trim()
+"\",\""+rutaAplicacion.trim()+pagina.trim()+"\", \"\", \"\", \"\",
\""+titulo.trim()+"\", \""+target.trim()+"\", \"\", \"\", ],");
//System.out.println("[\""+ separador+ descripcion
+"\",\""+rutaAplicacion+pagina+"\", \"\", \"\", \"\",
\""+titulo+"\", \""+target+"\", \"\", \"\", ],");
generaMenusHijos( resultado.getString(1),coneccion,
contexto);
}
// separador = separador.substring(separador.length()-
1);
}
catch (Exception t)
{
throw new Exception ("Error al generar el menu
dinamico " + t.getMessage());
}
finally
{
prepareStatementHijo.close();
resultado.close();
}
}
/*
*Metodo invocado desde el controlador de procesos
*llama internamente a metodo que genera el menu dinamico
**/
public void dibujarMenuDinamico (HashMap parametros)throws
Exception
{
System.out.println("Voy a pintar --------------------------
-------------------");
PageContext out =
(PageContext)parametros.get("contextoPagina");
// JspWriter out =
(JspWriter)parametros.get("contextoPagina");
System.out.println("Obtuve correctamente el objeto print");
CXCII
Session sesionHibernate =
(Session)parametros.get("sessionHibernate");
//---------------------------------------------------------
-------
try
{
generarMenuDinamico(sesionHibernate, out);
//sesionHibernate.close();
}
catch (Exception e)
{
throw new Exception (e.toString());
}
finally
{
// sesionHibernate.close();
}
}
}
GestorConfiguraciones.-
Permite el ingreso de los diferentes tipos de configuraciones que será posible
parametrizar en el sistema. Tales como alarmas y descargas.
package capaProcesos.procedimientos.skylinx.configuracion;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
public class GestorConfiguraciones extends Procedimiento
CXCIII
{
public GestorConfiguraciones ()
{
super ("Procesos de aplicacion");
}
public void registraConfiguracion ( Session psSesionServlet,
TipoConfiguracion
tipoConfiguracion
) throws Exception
{
Transaction transaccion =
psSesionServlet.beginTransaction();
try
{
psSesionServlet.save(tipoConfiguracion);
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
transaccion.rollback();
System.out.println( "Este es el mensaje " +
j.getMessage() );
throw new Exception ("Error al registrar la
configuracion " + j.getMessage());
}
}
public void gestionRegistraConfiguracion (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
registraConfiguracion (psSesionServlet,tipoConf);
}
//Para realizar la ejecucion del antivirus
public void registraParametroEjecucion ( Session
psSesionServlet,
String ipMaquina
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
ParametrosGenerales pm = null;
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t
where t.claveParametro = '" +
ipMaquina + "' and t.estado = 'A' and
t.tipoParametro.idParametro = 3";
CXCIV
pm =
(ParametrosGenerales)psSesionServlet.createQuery(hql).uniqueResult()
;
String hlq2 = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as d where
d.estado = 'A' and d.idParametro = 3 ";
if ( pm == null )
{
pm = new ParametrosGenerales();
TipoParametro t =
(TipoParametro)psSesionServlet.createQuery(hlq2).uniqueResult();
pm.setClaveParametro(ipMaquina);
pm.setEstado("A");
pm.setFechaRegistro(new Date());
pm.setObervacion("Se inserta desde el aplicativo Skylinx");
pm.setTipoParametro(t);
}
pm.setValor("S");
psSesionServlet.save(pm);
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
//transaccion.rollback();
System.out.println( "Este es el mensaje " + j.getMessage() );
throw new Exception ("Error al registrar la configuracion " +
j.getMessage());
}
}
public void ejecutarAntivirus (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String lsIp = (String)parametros.get("ls_ip");
//-----------------
registraParametroEjecucion (psSesionServlet,lsIp);
}
public void gestionAsignacionMaquina (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String lsIdUsuario = (String)parametros.get("idUsuario");
String lsIdMaquina = (String)parametros.get("idMaquina");
String lsObservacion = (String)parametros.get("observacion");
//-----------------
//registraParametroEjecucion (psSesionServlet,lsIp);
asignaMaquinaUsuario (
psSesionServlet,
lsIdUsuario,
lsIdMaquina,
lsObservacion
CXCV
);
}
public void asignaMaquinaUsuario (
Session
psSesionServlet,
String
lsIdUsuario,
String
lsIdMaquina,
String
lsObservacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
Usuario user = null;
String hql = "from
modelo.clasesPersistentes.usuario.Usuario as u where u.idUsuario = "
+
lsIdUsuario + " and u.estado = 'A'";
user =
(Usuario)psSesionServlet.createQuery(hql).uniqueResult();
Maquina maquina = null;
String hqlMaquina = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where
m.idMaquina = " + lsIdMaquina + " and m.estado = 'A'" ;
maquina =
(Maquina)psSesionServlet.createQuery(hqlMaquina).uniqueResult();
MaquinaUsuario maquinaUsuario = new MaquinaUsuario();
maquinaUsuario.setFecha(new Date());
maquinaUsuario.setMaquina(maquina);
maquinaUsuario.setObservacion(lsObservacion);
maquinaUsuario.setUsuario(user);
psSesionServlet.save(maquinaUsuario);
transaccion.commit();
}
catch (Exception e)
{
System.out.println( "Este es el mensaje " + e.getMessage()
);
throw new Exception ("Error al realizar la asignacion del
usuario y la maquina " + e.getMessage());
}
}
public void gestionEliminaConfiguracion (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
CXCVI
(Session)parametros.get("sessionHibernate");
String lsIdConfiguracion =
(String)parametros.get("idConfiguracion");
//-----------------
//registraParametroEjecucion (psSesionServlet,lsIp);
try
{
eliminaConfiguracion (
psSesionServlet,
lsIdConfiguracion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Mensaje " + e );
}
}
public void eliminaConfiguracion (
Session
psSesionServlet,
String
lsIdConfiguracion
)throws Exception
{
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.TipoConfiguracion as u where
u.idTipoConfiguracion = " + lsIdConfiguracion;
TipoConfiguracion resultado =
(TipoConfiguracion)psSesionServlet.createQuery(hql).uniqueResult();
Set config = resultado.getConfiguracioneses();
if (config.size() > 0)
{
throw new Exception ("Error, se han realizado " +
config.size() + " creaciones de configuraciones del tipo " +
resultado.getDescripcion() + ", imposible realizar la eliminacion");
}
Transaction transaccion =
psSesionServlet.beginTransaction();
try
{
psSesionServlet.delete(resultado);
transaccion.commit();
}
catch (Exception e)
{
System.out.println( "Este es el mensaje " +
e.getMessage() );
throw new Exception ("Error al realizar la
asignacion del usuario y la maquina " + e.getMessage());
}
}
}
CXCVII
GestorConfiguracionesValor.-
Este componente nos permite la creación de configuraciones específicas como
por ejemplo hora y fecha en la que el servidor puede descargar de Internet la
definición, así como las configuraciones correspondientes a los clientes.
package capaProcesos.procedimientos.skylinx.configuracion;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//Este componente nos permite la creación de configuraciones
//específicas como por ejemplo día y hora en la que el servidor
//puede descargar de Internet la definición, así como las
//configuraciones correspondientes a los clientes.
public class GestorConfiguracionesValor extends Procedimiento
{
public GestorConfiguracionesValor ()
{
super ("Procesos de aplicacion");
}
//Para registrar la configuracion
public void gestionConfiguracion (HashMap parametros ) throws
Exception
{
System.out.println("Entro al registro de configuracion");
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
Configuraciones configuracion =
(Configuraciones)parametros.get("Configuracion");
System.out.println("Paso el get de parametros");
//-----------------
registraConfiguracionValor (psSesionServlet,configuracion);
CXCVIII
}
public void registraConfiguracionValor ( Session
psSesionServlet,
Configuraciones
configuracion
) throws Exception
{
Transaction transaccion =
psSesionServlet.beginTransaction();
System.out.println("------------En la clase tomo esto " +
configuracion.getTipoConfiguracion().getDescripcion());
try
{
psSesionServlet.save(configuracion);
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
transaccion.rollback();
System.out.println( "Este es el mensaje " +
j.getMessage() );
throw new Exception ("Error al registrar la
configuracion en valores " + j.getMessage());
}
}
public void gestionAsignacionConfiguracion (HashMap parametros )
throws Exception
{
System.out.println("Entro al registro de configuracion");
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
//---------------------------------
String
ls_idConfig=(String)parametros.get("idConfiguracion");
String ls_ipMaquina=(String)parametros.get("ipMaquina");
String ls_ruta=(String)parametros.get("ruta");
String ls_observacion
=(String)parametros.get("observacion");
System.out.println("Paso el get de parametros");
//-----------------
try
{
registraAsignacionConfiguracion (
psSesionServlet,
ls_idConfig,
ls_ipMaquina,
ls_ruta,
ls_observacion
);
}
catch (Exception e)
{
CXCIX
throw new Exception ("Error al registrar la
asignacion " + e);
}
}
public void registraAsignacionConfiguracion (
Session
psSesionServlet,
String
ls_idConfig,
String
ls_ipMaquina,
String
ls_ruta,
String
ls_observacion
) throws Exception
{
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where m.estado
= 'A' and m.ipMaquina = '" +ls_ipMaquina.trim() +"'";
Maquina maquina =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
String hql2 = "from
modelo.modeloSkylinx.clasesPersistentes.Configuraciones as m where
m.estado = 'A' and m.idConfiguraciones = " +ls_idConfig.trim();
Configuraciones configuracion =
(Configuraciones)psSesionServlet.createQuery(hql2).uniqueResult();
String hql3 = "from
modelo.modeloSkylinx.clasesPersistentes.ConfiguracionesMaquinas as d
where d.estado = 'A' and d.maquina.ipMaquina='" +
ls_ipMaquina.trim() + "' and
d.configuraciones.idConfiguraciones="+ls_idConfig.trim();
ConfiguracionesMaquinas confiMaquina =
(ConfiguracionesMaquinas)psSesionServlet.createQuery(hql3).uniqueRes
ult();
Transaction transaccion =
psSesionServlet.beginTransaction();
ConfiguracionesMaquinas confiMaquinaIngresar = new
ConfiguracionesMaquinas();
try
{
if (confiMaquina== null)
{//Ingresar
confiMaquinaIngresar.setConfiguraciones(configuracion);
confiMaquinaIngresar.setEstado("A");
confiMaquinaIngresar.setFechaRegistro(new
Date());
confiMaquinaIngresar.setMaquina(maquina);
confiMaquinaIngresar.setObservacion(ls_observacion.toUpperCase().tri
m());
confiMaquinaIngresar.setRutaAccionConfiguracion(ls_ruta.toUpperCase(
).trim());
CC
psSesionServlet.save(confiMaquinaIngresar);
transaccion.commit();
}
else
{//Caso contrario enviar error
transaccion.rollback();
throw new Exception ("Ya se realizo la
asignacion de la conifguracion " + configuracion.getDescripcion() +
" a la maquina " + maquina.getNombrePc() );
}
}
catch (Exception p)
{
transaccion.rollback();
throw new Exception ("Error " + p);
}
}
}
GestorActivacionInactivacionMaquina.-
Permite la activación e inactivación de las máquinas que ya no forman parte de
la red, para que de esta forma las máquinas que en el futuro sean ingresadas a
la red reciban una dirección IP que no cree conflicto con el resto de usuraos de
la red
package capaProcesos.procedimientos.skylinx.gestionMaquinas;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorActivacionInactivacionMaquina extends
Procedimiento
{
public GestorActivacionInactivacionMaquina ()
{
CCI
super ("Procesos de aplicacion");
}
public void inactivaPc (
Session psSesionServlet,
String idMaquina,
String observacion
) throws Exception
{
System.out.println("Este es el id_maquina " + idMaquina);
System.out.println("Ingreso a la clase que inactiva la pc");
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where
m.idMaquina = " + idMaquina;
Maquina maquina =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
maquina.setEstado("I");
maquina.setObservacion(observacion);
Transaction transaccion = psSesionServlet.beginTransaction();
psSesionServlet.update(maquina);
transaccion.commit();
}
public void gestionInactivaMaquinas (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String idMaquina =
(String)parametros.get("id_maquina");
String observacion =
(String)parametros.get("observacion");
//TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
try
{
inactivaPc (psSesionServlet, idMaquina,
observacion);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar la maquina
" + e.getMessage());
}
}
GestorMaquinas.-
Este componente permite realizar el reinicio del servicio de named para
CCII
refrescar el archivo de Zonas del DNS además realiza la gestión de verificación
si una PC esta encendida o no; para, como ya hemos mencionado en capítulos
anteriores realizar tareas especificas sobre las PC encendidas.
package capaProcesos.procedimientos.skylinx.gestionMaquinas; import org.hibernate.*;
import capaProcesos.procedimientos.skylinx.ftp.FTPUtil;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorMaquinas extends Procedimiento
{
public GestorMaquinas ()
{
super ("Procesos de aplicacion");
}
public void gestionarEstadosMaquinas (
Session psSesionServlet
) throws Exception
{
/*
*Para realizar el apagado de todas las maquinas
**/
try
{
Process resultadoRestar =
Runtime.getRuntime().exec(" service named restart " );
//resultadoRestar.destroy();
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception ("Error resetar el servicio
named " + e.getMessage());
}
try
{
apagarMaquinas (psSesionServlet);
}
catch (Exception e1)
CCIII
{
e1.printStackTrace();
throw new Exception ("Error al realizar el apagado
de las maquinas " + e1.getMessage());
}
String hqlTipoMaquina = " from
modelo.modeloSkylinx.clasesPersistentes.TipoMaquina as tipo where
tipo.estado = 'A' and tipo.idTipoMaquina = 1";
TipoMaquina tipoActual =
(TipoMaquina)psSesionServlet.createQuery(hqlTipoMaquina).uniqueResul
t();
psSesionServlet.flush();
String hqlTipoMaquinaServer = " from
modelo.modeloSkylinx.clasesPersistentes.TipoMaquina as tipo where
tipo.estado = 'A' and tipo.idTipoMaquina = 2";
TipoMaquina tipoActualServer =
(TipoMaquina)psSesionServlet.createQuery(hqlTipoMaquinaServer).uniqu
eResult();
psSesionServlet.flush();
System.out.println("descripcion " +
tipoActualServer.getDescripcion() );
TipoMaquina tipoActualInsertar = null;
String archivoLog =
"/var/named/chroot/var/named/grupo5.com.zone";
System.out.println(archivoLog);
DataInputStream flujoTeclado = null;
java.io.FileInputStream archivo= new
FileInputStream(archivoLog);
String valorLinea = " ";
String nombrePc = " ";
String ipPc = " ";
int bandera = 0;
flujoTeclado = new DataInputStream(archivo);
//Para control del commit
//realizarPingMaquinas(psSesionServlet);
/*****************
*
*/
// Cargar los tres tipos de parametros
String hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 3";
TipoParametro tpEjcutaAntivirus =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueR
esult();
//--------
hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 4";
TipoParametro tpejecutaRutaEjecucion =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueR
esult();
//-------
hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 5";
TipoParametro tpejecutaRutaLog =
CCIV
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueR
esult();
ParametrosGenerales pEjcutaAntivirus = new
ParametrosGenerales();
pEjcutaAntivirus.setEstado("A");
pEjcutaAntivirus.setFechaRegistro(new Date());
pEjcutaAntivirus.setObervacion("Registra si se debe
ejecutar el antivirus o no");
pEjcutaAntivirus.setTipoParametro(tpEjcutaAntivirus);
pEjcutaAntivirus.setValor("N");
ParametrosGenerales pRutaEjecucionAntivirus = new
ParametrosGenerales();
pRutaEjecucionAntivirus.setEstado("A");
pRutaEjecucionAntivirus.setFechaRegistro(new Date());
pRutaEjecucionAntivirus.setObervacion("Registra la ruta de
ejecucion del antivirus");
pRutaEjecucionAntivirus.setTipoParametro(tpejecutaRutaEjecucion);
pRutaEjecucionAntivirus.setValor("C:\\\\Archivos de
programa\\\\ClamWin\\\\bin\\\\clamscan.exe --
database=\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\db\\\" --recursive C:\\\\virus -l
\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\log\\\\ClamScanLog.txt\\\" --remove");
ParametrosGenerales pRutaLog = new ParametrosGenerales();
pRutaLog.setEstado("A");
pRutaLog.setFechaRegistro(new Date());
pRutaLog.setObervacion("Registra la ruta del log");
pRutaLog.setTipoParametro(tpejecutaRutaLog);
pRutaLog.setValor("C:\\\\ClamWin\\\\ClamWin\\\\log\\\\ClamScanLog
.txt");
//Faltan las claves del paramatro
ParametrosGenerales pVerificacion = new
ParametrosGenerales();
String lsQueryVerificaParametro = "";//"from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t
where t.estado = 'A' and t.tipoParametro.idParametro = 3 and
t.claveParametro = ";
/*
*Fin
* */
/*********************
*
*/
do
{
valorLinea = flujoTeclado.readLine();
if ( valorLinea != null)
{
if ( valorLinea.indexOf("$TTL") != -1 )
{
//Si encuentra
bandera++;
}
if ( bandera == 2)
{
CCV
/*valorLinea =
flujoTeclado.readLine();*/
valorLinea = flujoTeclado.readLine();
if (valorLinea != null)
{
if ( valorLinea.indexOf("$TTL") != -1)
{
//return;
//servidor
valorLinea =
flujoTeclado.readLine();
tipoActualInsertar =
tipoActualServer;
}
else
{
tipoActualInsertar = tipoActual;
}
if (
valorLinea.toUpperCase().indexOf("WWW") != -1)
{
return;
}
else
{
String [] valores =
valorLinea.split("A");
/*valorLinea =
valorLinea.replaceAll("\t", " ");
valorLinea =
valorLinea.trim();*/
nombrePc =
valores[0].replaceAll("\t", " ") .trim();
ipPc =
valores[1].replaceAll("\t", " ") .trim();
System.out.println("Esta es la
linea del archivo " + valorLinea);
System.out.println("Nombre pc "
+ nombrePc);
System.out.println("IP pc " +
ipPc);
if
(nombrePc.toUpperCase().trim().equals("SERVER"))
{
tipoActualInsertar =
tipoActualServer;
}
else
{
tipoActualInsertar =
tipoActual;
}
if (
ipPc.trim().equals("192.168.1.1") )
{
tipoActualInsertar =
tipoActualServer;
}
else
{
tipoActualInsertar =
CCVI
tipoActual;
}
Maquina maquinaActual = new
Maquina();
maquinaActual.setDescripcionPc(nombrePc.toUpperCase());
maquinaActual.setEstado("A");
maquinaActual.setEstadoOperacion("AP");
maquinaActual.setFechaRegistro(new Date());
maquinaActual.setIpMaquina(ipPc);
maquinaActual.setNombrePc(nombrePc.toUpperCase());
maquinaActual.setObservacion("REALIZACION DE ACTULIZACION O
INSERCION AUTOMATICA DESDE EL ARCHIVO DNS " + new Date() );
maquinaActual.setTipoMaquina(tipoActualInsertar);
System.out.println("Se hara la
insercion");
Transaction transaccion =
psSesionServlet.beginTransaction();
//Para verificar si la pc se
encuentra en la base
String hqlVerificaMaquina = "
from modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina
where maquina.estado = 'A' and maquina.nombrePc = '"+
nombrePc.toUpperCase() +"' and maquina.ipMaquina = '"+ipPc+"'";
Maquina maquinaVerifica =
(Maquina)psSesionServlet.createQuery(hqlVerificaMaquina).uniqueResul
t();
if ( maquinaVerifica == null)
{
System.out.println("Se
inserto");
//maquinaVerifica.setFechaRegistro(new Date());
System.out.println("paso
el seteo de fecha");
psSesionServlet.save(maquinaActual);
System.out.println("paso
el .save");
}
else
{
System.out.println("Se
actualizo");
maquinaVerifica.setEstadoOperacion("AP");
//maquinaVerifica.setTipoMaquina(tipoMaquina)
maquinaVerifica.setFechaRegistro(new Date());
maquinaVerifica.setTipoMaquina(tipoActualInsertar);
psSesionServlet.update(maquinaVerifica);
CCVII
//psSesionServlet.delete(maquinaVerifica);
System.out.println("Se
actualizo el estado operativo");
}
/*
* --------------------------------
-------------------------------------------
* */
// La ip no cambia, por eso los
valores de los paramtros deben ir aqui
//Listo
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t
where t.estado = 'A' and t.tipoParametro.idParametro = 3 and
t.claveParametro = '" + ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).u
niqueResult();
if (pVerificacion == null)
{
//inserta
pEjcutaAntivirus.setClaveParametro(ipPc.trim());
psSesionServlet.save(pEjcutaAntivirus);
}
else
{
//actualiza
pVerificacion.setValor("N");
psSesionServlet.update(pVerificacion);
}
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t
where t.estado = 'A' and t.tipoParametro.idParametro = 4 and
t.claveParametro = '" + ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).u
niqueResult();
if (pVerificacion == null)
{
//inserta
pRutaEjecucionAntivirus.setClaveParametro(ipPc.trim());
psSesionServlet.save(pRutaEjecucionAntivirus);
}
else
{
//actualiza
pVerificacion.setValor("C:\\\\Archivos de
programa\\\\ClamWin\\\\bin\\\\clamscan.exe --
database=\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\db\\\" --recursive C:\\\\virus -l
\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\log\\\\ClamScanLog.txt\\\" --remove");
psSesionServlet.update(pVerificacion);
CCVIII
}
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t
where t.estado = 'A' and t.tipoParametro.idParametro = 5 and
t.claveParametro = '" + ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).u
niqueResult();
if (pVerificacion == null)
{
//inserta
pRutaLog.setClaveParametro(ipPc.trim());
psSesionServlet.save(pRutaLog);
}
else
{
//actualiza
pVerificacion.setValor("C:\\\\ClamWin\\\\ClamWin\\\\log\\\\ClamSc
anLog.txt");
psSesionServlet.update(pVerificacion);
}
/*
* -----------------------------
-----------------------------------------------
* */
System.out.println("Voy a
realizar el commit");
transaccion.commit();
System.out.println("Se realizo
el commit");
}
}
}
}
}while ( valorLinea !=null);
flujoTeclado.close();
archivo.close();
}
public void gestionRegistraMaquinas (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
//TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
try
{
CCIX
gestionarEstadosMaquinas (psSesionServlet);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception("Error " + e.getMessage());
}
System.out.println("Esto es para hacer el ping");
this.realizarPingMaquinas(psSesionServlet);
System.out.println("se termino el ping es para hacer el
ping");
}
public void apagarMaquinas ( Session psSesionServlet ) throws
Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A'";
Iterator consultaMasiva=
psSesionServlet.createQuery(hql).iterate();
psSesionServlet.flush();
Transaction transaccion =
psSesionServlet.beginTransaction();
while ( consultaMasiva.hasNext())
{
Maquina maquiaAApagar =
(Maquina)consultaMasiva.next();
maquiaAApagar.setEstadoOperacion("AP");
maquiaAApagar.setObservacion("Se apaga la maquina
desde el aplicativo SkyLinx");
psSesionServlet.update(maquiaAApagar);
}
transaccion.commit();
}
public void realizarPingMaquinas ( Session psSesionServlet )
throws Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A'";
int contadorLineas = 0;
Iterator consultaMasiva=
psSesionServlet.createQuery(hql).iterate();
psSesionServlet.flush();
//PingICMP ping = new PingICMP();
String respuesta = "";
CCX
DataInputStream flujoTeclado = null;
DataInputStream flujoTeclado2 = null;
String informacion = null;
String informacion2 = null;
String buscaPing = "";
Transaction transaccion =
psSesionServlet.beginTransaction();
while ( consultaMasiva.hasNext())
{
buscaPing = "ps -edaf | grep ping | grep ";//
192.168.1.254
contadorLineas = 0;
respuesta = "";
informacion = "";
Maquina maquiaAApagar =
(Maquina)consultaMasiva.next();
System.out.println("Se hara el ping de la maquina "
+ maquiaAApagar.getIpMaquina().trim());
Process resultado = Runtime.getRuntime().exec(" ping
" + maquiaAApagar.getIpMaquina().trim() );
flujoTeclado = new DataInputStream
(resultado.getInputStream());
while ( contadorLineas < 3)
{
informacion = flujoTeclado.readLine();
respuesta = respuesta + informacion + " ";
contadorLineas ++;
}
//flujoTeclado.close();
System.out.println("*********************************************
*********");
System.out.println("informacion encontrada " +
respuesta);
System.out.println("*********************************************
*********");
respuesta = respuesta.toUpperCase();
if ( respuesta.indexOf("UNREACHABLE")!=-1 ||
respuesta.indexOf("NULL")!=-1 )
{
maquiaAApagar.setObservacion(respuesta);
respuesta = "";
maquiaAApagar.setEstadoOperacion("AP");
}
else
{
maquiaAApagar.setObservacion(respuesta);
respuesta = "";
maquiaAApagar.setEstadoOperacion("EN");
CCXI
System.out.print("Encontro por lo menos una
maquina encendida");
}
psSesionServlet.update(maquiaAApagar);
//resultado.destroy();
Process resultado2 =
Runtime.getRuntime().exec(buscaPing + " " +
maquiaAApagar.getIpMaquina().trim() + " | awk '{print $2}'" );
System.out.print(buscaPing + " " +
maquiaAApagar.getIpMaquina().trim() + "|awk '{print $2}'" );
//********************************************
System.out.println("AQUI ESTA RESCULTADO 2");
System.out.println(resultado2);
//********************************************
flujoTeclado2 = new DataInputStream
(resultado2.getInputStream());
informacion2 = flujoTeclado.readLine();
System.out.println("p id " + informacion2);
//resultado2.destroy();
Process resultado3 = Runtime.getRuntime().exec("kill -9
" +informacion2);
System.out.println("kill -9 " +informacion2);
}
transaccion.commit();
}
public void gestionaRegistroDescargas(HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String ipCliente =
(String)parametros.get("ipCliente");
String ls_esServer =
(String)parametros.get("esServer");
try
{
FTPUtil.beginTransactionFtp(ipCliente,
ls_esServer);
registraDescarga(
psSesionServlet,
ipCliente
);
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception ("Error al enviar la
actualizacion " + e);
}
}
public void registraDescarga (
CCXII
Session
psSesionServlet,
String
ipCliente
)throws Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A' and maquina.ipMaquina= '" +
ipCliente.trim()+"'";
Maquina maquina1 =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
Descargas decarga = new Descargas ();
decarga.setMaquina(maquina1);
decarga.setEstado("A");
decarga.setFechaDescarga(new Date());
decarga.setNombre("DAILY.CVD - MAIN.CVD");
decarga.setTamanio("INFEFINIDO");
decarga.setObservacion("Descarga Exitosa, realizada desde
SkyLinx - Usuario Administrador");
Transaction t = psSesionServlet.beginTransaction();
try
{
psSesionServlet.save(decarga);
t.commit();
}
catch (Exception e)
{
e.printStackTrace();
t.rollback();
throw new Exception ("Error al registrar la descarga
" + e);
}
}
}
GestorUsuarios .-
Este componente nos permite realizar el ingreso de los usuarios a la base de
datos, además permite la asignación de roles a los usuarios, este rol debe ser
asignado a cada usuario para poder hacer uso de su sesión.
package capaProcesos.procedimientos.skylinx.gestionUsuarios;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
CCXIII
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.Connection;
import java.sql.PreparedStatement;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorUsuarios extends Procedimiento
{
public GestorUsuarios ()
{
super ("Procesos de aplicacion");
}
//Para realizar el ingreso de usuarios
public void gestionIngresoUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_nombres=(String)parametros.get("nombres");
String ls_apellidos=(String)parametros.get("apellidos");
String ls_ci=(String)parametros.get("ci");
String ls_sexo=(String)parametros.get("sexo");
String ls_sucursal=(String)parametros.get("sucursal");
String ls_ciudad=(String)parametros.get("ciudad");
String ls_direccion=(String)parametros.get("direccion");
String
ls_telefonoConvencional=(String)parametros.get("telefonoCasa");
String ls_celular=(String)parametros.get("celular");
String ls_correo=(String)parametros.get("correo");
String
ls_observacion=(String)parametros.get("observacion");
byte[] lbA_foto=(byte[])parametros.get("archivoFoto");
try
{
//inactivaPc (psSesionServlet, idMaquina,
observacion);
ingresaUsuario(
psSesionServlet,
ls_idUser,
ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
CCXIV
ls_sucursal,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_correo,
ls_observacion,
lbA_foto
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al registrar el usuario
" + e.getMessage());
}
}
public void ingresaUsuario (
Session
psSesionServlet,
String ls_idUser,
String ls_nombres,
String
ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_sucursal,
String ls_ciudad,
String
ls_direccion,
String
ls_telefonoConvencional,
String ls_celular,
String ls_correo,
String
ls_observacion,
byte[] lbA_foto
) throws Exception
{
System.out.println("Entro en el proceso de ingreso de
usuario");
String hqlSucursal = " from
modelo.clasesPersistentes.sucursales.Suscursales as suc where
suc.estado = 'A' and suc.idNumericoSucursal = " + ls_sucursal;
Suscursales sucursal =
(Suscursales)psSesionServlet.createQuery(hqlSucursal).uniqueResult()
;
//Usuario
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado
= 'A' and user.usuario ='" + ls_idUser.toUpperCase() + "'";
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
if (usuario != null)
{
throw new Exception ("Error al registrar el usuario,
ya existe un usuario con el nombre " + ls_idUser.toUpperCase());
}
String hqlPersona = " from
modelo.clasesPersistentes.personas.Persona as person where
person.estado = 'A' and person.valorIdentificacion ='" + ls_ci +
"'";
CCXV
Persona person =
(Persona)psSesionServlet.createQuery(hqlPersona).uniqueResult();
if (person != null)
{
throw new Exception ("Error al registrar el usuario,
ya existe una persona registrada con la cedula " + ls_ci);
}
Transaction transaccion =
psSesionServlet.beginTransaction();
try
{
//Persona
Persona persona = new Persona();
persona.setApellido(ls_apellidos.toUpperCase());
if (lbA_foto !=null)
{
persona.setArchivoFoto(""+ls_idUser.toUpperCase() + ".jpg");
}
//persona.setArchivosPersonases(set);
persona.setCelular(ls_celular);
persona.setCiudad(ls_ciudad.toUpperCase());
//persona.setClienteses(set);
persona.setDireccion(ls_direccion.toUpperCase());
persona.setEmail(ls_correo.toUpperCase());
//persona.setEmpleadoses(set);
persona.setEstado("A");
//persona.setFechaNacimiento(date)
persona.setFechaRegistro(new
Date());
//persona.setIdPersona(number)
persona.setNombre(ls_nombres.toUpperCase());
persona.setSexo(ls_sexo.toUpperCase());
persona.setTelefonoCasa(ls_telefonoConvencional);
persona.setTipoPersona("ADU");
//persona.setTipoSangre()
//persona.setUsuarioses()
persona.setValorIdentificacion(ls_ci);
Long idPersona =
(Long)psSesionServlet.save(persona);
persona.setIdPersona(idPersona);
//Usuario
Usuario user = new Usuario();
user.setClave(Encriptador.encriptar(ls_ci));
user.setEstado("A");
user.setFechaCreacion(new
Date());
CCXVI
user.setObservacion(ls_observacion.toUpperCase());
user.setPersona(persona);
//user.setRolesUsuariosAplicacions(set);
user.setSuscursales(sucursal);
user.setUsuario(ls_idUser.toUpperCase());
psSesionServlet.save(user);
System.out.println("Se guardo la
persona y el usuario");
//Archivo
if (lbA_foto !=null)
{
System.out.println("Entro al
proceso de guardar archivo");
ArchivosPersonas archivo =
new ArchivosPersonas();
archivo.setClaveArchivo("FOTO");
archivo.setEstado("A");
archivo.setFechaRegistro(new Date());
archivo.setObservacion("REGISTRO FOTO USUARIO " +
ls_observacion.toUpperCase());
archivo.setPersonas(persona);
archivo.setValorArchivo(lbA_foto);
psSesionServlet.save(archivo);
//Debo de colocar la foto
en una ruta fisica
FileOutputStream
fotoActual = new FileOutputStream( new File ("/tomcat-
5.0.28/webapps/SkyLinx/imagenes/fotosUsuarios/" +
ls_idUser.toUpperCase() + ".jpg"));
fotoActual.write(lbA_foto);
fotoActual.flush();
fotoActual.close();
}
/* else
{
throw new Exception
("Error, debe ingresar la foto del usuario");
}*/
psSesionServlet.flush();
psSesionServlet.clear();
transaccion.commit();
}
catch (Exception e)
{
transaccion.rollback();
e.printStackTrace();
throw new Exception ("Error al realizar el ingreso
de usuario " + e.getMessage());
}
CCXVII
}
//Asignacion de rol
public void asignaRolUsuario(
Session
psSesionServlet,
String ls_idUser,
String ls_idrol,
String
ls_observacion
) throws Exception
{
Transaction transaccion =
psSesionServlet.beginTransaction();
try
{
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado
= 'A' and user.idUsuario =" + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
System.out.println("Cargo el usuario");
String hqlRol = " from
modelo.clasesPersistentes.rolesAplicacion.RolAplicacion as rol where
rol.estado = 'A' and rol.idRol =" + ls_idrol;
RolAplicacion rol =
(RolAplicacion)psSesionServlet.createQuery(hqlRol).uniqueResult();
System.out.println("Cargo el rol");
RolesUsuariosAplicacion rolUsuario = new
RolesUsuariosAplicacion();
RolesUsuariosAplicacionId rolUsuarioId = new
RolesUsuariosAplicacionId();
rolUsuarioId.setIdRolAplicacion(rol.getIdRol());
rolUsuarioId.setIdUsuario(usuario.getIdUsuario());
rolUsuario.setEstado("A");
rolUsuario.setFechaCreacion(new Date());
rolUsuario.setObservacion(ls_observacion.toUpperCase());
rolUsuario.setRolesAplicacion(rol);
rolUsuario.setUsuarios(usuario);
rolUsuario.setId(rolUsuarioId);
psSesionServlet.save(rolUsuario);
transaccion.commit();
}
catch (Exception e)
{
transaccion.rollback();
e.printStackTrace();
throw new Exception ("Error al realizar la
asignacion del rol al usuario " + e.getMessage());
}
}
CCXVIII
//Para realizar el ingreso de usuarios
public void gestionRolUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_idRol=(String)parametros.get("idRol");
String
ls_observacion=(String)parametros.get("observacion");
try
{
//inactivaPc (psSesionServlet, idMaquina,
observacion);
System.out.println("Entro a llamar al proceso de
asignacion *************************************");
asignaRolUsuario(
psSesionServlet,
ls_idUser,
ls_idRol,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al asignar el rol al
usuario " + e.getMessage());
}
}
//Actualizar usuario
public void gestionActualizaUsuario (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_nombres=(String)parametros.get("nombres");
String ls_apellidos=(String)parametros.get("apellidos");
String ls_ci=(String)parametros.get("ci");
String ls_sexo=(String)parametros.get("sexo");
String ls_sucursal=(String)parametros.get("sucursal");
String ls_ciudad=(String)parametros.get("ciudad");
String ls_direccion=(String)parametros.get("direccion");
String
ls_telefonoConvencional=(String)parametros.get("telefonoCasa");
CCXIX
String ls_celular=(String)parametros.get("celular");
//String ls_correo=(String)parametros.get("correo");
String
ls_observacion=(String)parametros.get("observacion");
byte[] lbA_foto=(byte[])parametros.get("archivoFoto");
String
ls_numericoUsuario=(String)parametros.get("numericoUsuario");
String
ls_numericoPersona=(String)parametros.get("numericoPersona");
Transaction transaccion = null;
try
{
psSesionServlet.flush();
psSesionServlet.clear();
transaccion = psSesionServlet.beginTransaction();
//inactivaPc (psSesionServlet, idMaquina,
observacion);
actualizaUsuario(
psSesionServlet,
ls_idUser,
ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_sucursal,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_observacion,
lbA_foto,
ls_numericoUsuario,
ls_numericoPersona
);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al actualizar el usuario
" + e.getMessage());
}
}
public void actualizaPersona ( String ls_nombres,
String
ls_apellidos,
String
ls_ci,
String
ls_sexo,
String
ls_ciudad,
String
ls_direccion,
CCXX
String
ls_telefonoConvencional,
String
ls_celular,
String
ls_observacion,
String
ls_numericoPersona,
Session
psSesionServlet,
byte[]
lbA_foto,
String
ls_idUser,
String
ls_sucursal,
String
ls_numericoUsuario
)throws
Exception
{
System.out.println("Entro en el proceso de ingreso de
usuario");
String hqlSucursal = " from
modelo.clasesPersistentes.sucursales.Suscursales as suc where
suc.estado = 'A' and suc.idNumericoSucursal = " + ls_sucursal;
Suscursales sucursal =
(Suscursales)psSesionServlet.createQuery(hqlSucursal).uniqueResult()
;
//----------------------
//Usuario
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado
= 'A' and user.idUsuario <>"+ls_numericoUsuario+" and user.usuario
='" + ls_idUser.toUpperCase() + "'";
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
if (usuario != null)
{
throw new Exception ("Error al registrar el usuario,
ya existe un usuario con el nombre " + ls_idUser.toUpperCase());
}
///persona
String hqlPersona = " from
modelo.clasesPersistentes.personas.Persona as person where
person.estado = 'A' and person.idPersona <> " +ls_numericoPersona+ "
and person.valorIdentificacion ='" + ls_ci + "'";
Persona person =
(Persona)psSesionServlet.createQuery(hqlPersona).uniqueResult();
SimpleDateFormat lsdFormateador = new
SimpleDateFormat("yyyy/MM/dd");
if (person != null)
{
throw new Exception ("Error al registrar el usuario,
ya existe una persona registrada con la cedula " + ls_ci);
}
//----------------------
Persona persona = new Persona();
persona.setApellido(ls_apellidos.toUpperCase());
CCXXI
if (lbA_foto !=null)
{
persona.setArchivoFoto(""+ls_idUser.toUpperCase().trim() +
".jpg");
}
persona.setCelular(ls_celular);
persona.setCiudad(ls_ciudad.toUpperCase());
persona.setDireccion(ls_direccion.toUpperCase());
persona.setEstado("A");
persona.setFechaRegistro(new Date());
persona.setNombre(ls_nombres.toUpperCase());
persona.setSexo(ls_sexo.toUpperCase());
persona.setTelefonoCasa(ls_telefonoConvencional);
persona.setTipoPersona("ADU");
persona.setValorIdentificacion(ls_ci);
**/
System.out.println("Voya a ejecutar la sentencia de la
persona");
String lsUpdate = " update personas "+
" set valor_identificacion = '"
+ ls_ci.trim() + "', " +
" nombre = '" +
ls_nombres.toUpperCase().trim() + "'," +
" apellido = '" +
ls_apellidos.toUpperCase().trim() + "'," +
" ciudad = '" +
ls_ciudad.toUpperCase().trim() + "'," +
" direccion = '" +
ls_direccion.toUpperCase().trim() + "'," +
" telefono_casa = '" +
ls_telefonoConvencional.trim() + "'," +
" celular = '" +
ls_celular.toUpperCase().trim() + "'," +
// " email = '" +
persona.getEmail().toUpperCase().trim() + "'," +
" estado = '" +
"A" + "'," +
" sexo = '" +
ls_sexo.toUpperCase().trim() + "'," +
" archivo_foto =
'" + ls_idUser.toUpperCase().trim() + ".jpg" + "'" +
" where id_persona = "+
ls_numericoPersona.trim() + " " +
" and estado = 'A' ";
Connection conexion = psSesionServlet.connection();
System.out.println("Esta es la sentencia slq " + lsUpdate);
PreparedStatement prepareStatementOpciones = null;
prepareStatementOpciones =
conexion.prepareStatement(lsUpdate);
prepareStatementOpciones.execute();
Usuario user = new Usuario();
user.setClave(Encriptador.encriptar(persona.getValorIdentificacio
n().trim()));
CCXXII
user.setEstado("A");
user.setFechaCreacion(new Date());
user.setObservacion(ls_observacion.toUpperCase());
user.setPersona(persona);
user.setSuscursales(sucursal);
user.setUsuario(ls_idUser.toUpperCase());
String lsUpdate2 = " update usuarios "+
" set usuario = '" +
user.getUsuario().toUpperCase().trim() + "', " +
" clave = '" +
user.getClave().trim() + "'," +
" estado = '" +
user.getEstado().toUpperCase().trim() + "'," +
" observacion = '" +
"Actualizacion De Usuarios " + new Date() + "'," +
" id_sucursal = " +
sucursal.getIdNumericoSucursal() + "," +
" id_persona = "
+ls_numericoPersona.trim()+ "" +
" where id_usuario = "+
ls_numericoUsuario.trim() + " " +
" and estado = 'A' ";
System.out.println("Esta es la sentencia slq " +
lsUpdate2);
PreparedStatement prepareStatementOpciones2 = null;
prepareStatementOpciones2 =
conexion.prepareStatement(lsUpdate2);
prepareStatementOpciones2.execute();
conexion.commit();
conexion.close();
//return persona;
}
public void actualizaArchivoFoto (Persona persona,
Session psSesionServlet,
String ls_observacion,
byte[] lbA_foto,
String ls_idUser )
throws Exception
{
if (lbA_foto !=null)
{
System.out.println("Entro al proceso de guardar
archivo");
ArchivosPersonas archivo = new ArchivosPersonas();
archivo.setClaveArchivo("FOTO");
archivo.setEstado("A");
archivo.setFechaRegistro(new Date());
archivo.setObservacion("REGISTRO FOTO USUARIO " +
ls_observacion.toUpperCase());
archivo.setPersonas(persona);
archivo.setValorArchivo(lbA_foto);
// psSesionServlet.save(archivo);
FileOutputStream fotoActual = new FileOutputStream( new
File ("/tomcat-5.0.28/webapps/SkyLinx/imagenes/fotosUsuarios/" +
ls_idUser.toUpperCase().trim() + ".jpg"));
fotoActual.write(lbA_foto);
CCXXIII
fotoActual.flush();
fotoActual.close();
}
}
public void actualizaUsuario(
Session psSesionServlet,
String ls_idUser,
String ls_nombres,
String ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_sucursal,
String ls_ciudad,
String ls_direccion,
String
ls_telefonoConvencional,
String ls_celular,
String ls_observacion,
byte[] lbA_foto,
String ls_numericoUsuario,
String ls_numericoPersona
) throws Exception
{
Persona persona = null;
try
{
actualizaPersona ( ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_observacion,
ls_numericoPersona,
psSesionServlet,
lbA_foto,
ls_idUser,
ls_sucursal,
ls_numericoUsuario );
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception("Error al actualizar la persona
- " + e);
}
CCXXIV
try
{
actualizaArchivoFoto ( persona,
psSesionServlet,
ls_observacion,
lbA_foto,
ls_idUser
) ;
}
catch (Exception g)
{
throw new Exception("Error al ingresa la foto de la
persona - " + g);
}
}
}
GestorMantenimientoUsuario.-
Este componente nos permite realizar tareas de mantenimiento a los usuarios
existentes en la base de datos, tareas como: Inactivación de Usuarios, reseteo
de la clave de usuarios que no han ingresado sesión.
package capaProcesos.procedimientos.skylinx.gestionUsuarios;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
CCXXV
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorMantenimientoUsuario extends Procedimiento
{
public GestorMantenimientoUsuario ()
{
super ("Procesos de aplicacion");
}
public void inactivaUsuario (
Session
psSesionServlet,
String ls_idUser,
String
ls_observacion
) throws Exception
{
Transaction transaccion =
psSesionServlet.beginTransaction();
try
{
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado
= 'A' and user.idUsuario = " + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
usuario.setEstado("I");
usuario.setObservacion(ls_observacion.toUpperCase());
psSesionServlet.update(usuario);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la
inactivacion del usuario " + e.getMessage());
}
}
public void gestionInactivaUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
CCXXVI
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String
ls_observacion=(String)parametros.get("observacion");
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina,
observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
inactivaUsuario(
psSesionServlet,
ls_idUser,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar al usuario
" + e.getMessage());
}
}
public void reseteaClaveUsuario (
Session
psSesionServlet,
String ls_idUser,
String
ls_observacion
) throws Exception
{
Transaction transaccion =
psSesionServlet.beginTransaction();
try
{
String nuevaClave = "12345678";
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado
= 'A' and user.idUsuario = " + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
usuario.setFechaPriSesion(null);
usuario.setObservacion(ls_observacion.toUpperCase());
usuario.setClave(Encriptador.encriptar(nuevaClave));
psSesionServlet.update(usuario);
transaccion.commit();
}
CCXXVII
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la
inactivacion del usuario " + e.getMessage());
}
}
public void gestionResetaClaveUsuario (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String
ls_observacion=(String)parametros.get("observacion");
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina,
observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
reseteaClaveUsuario(
psSesionServlet,
ls_idUser,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar al usuario
" + e.getMessage());
}
}
//---------------
public void eliminacionRolUsuario (
Session
psSesionServlet,
String ls_idUser
) throws Exception
{
Transaction transaccion =
psSesionServlet.beginTransaction();
try
{
String hqlRolUsuario = " from
CCXXVIII
modelo.clasesPersistentes.rolesUsuariosAplicacion.RolesUsuariosAplic
acion as rolUser where rolUser.estado = 'A' and
rolUser.usuarios.idUsuario = " + ls_idUser;
RolesUsuariosAplicacion rolUser =
(RolesUsuariosAplicacion)psSesionServlet.createQuery(hqlRolUsuario).
uniqueResult();
psSesionServlet.delete(rolUser);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la
inactivacion del usuario " + e.getMessage());
}
}
public void gestionEliminaRolUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina,
observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
eliminacionRolUsuario (
psSesionServlet,
ls_idUser
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar el rol del
usuario " + e.getMessage());
}
}
//---------------
}
CCXXIX
SendMail.-
Componente que nos permite el envió de E-mail desde nuestra aplicación hacia
un destino especifico dentro de la red LAN.
package capaProcesos.procedimientos.skylinx.javaMailCls;
import java.io.*;
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date;
import java.util.Vector;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendMail {
public static String send(String arg) {
Vector varg=new Vector();
String ls_cadena="";
boolean space=false;
arg=arg.trim();
for(int i=0; i<arg.length(); i++) {
if(arg.charAt(i)=='"') { space=!space; continue; }
if(arg.charAt(i)=='\\') {
if(i+1<arg.length()) {
if(arg.charAt(i+1)=='"') i++;
}
}
if(arg.charAt(i)==' ') {
if(!space) {
varg.add(ls_cadena);
ls_cadena="";
continue;
}
}
ls_cadena+=String.valueOf(arg.charAt(i));
}
if(ls_cadena.length()>0) varg.add(ls_cadena);
String []sarg=new String[varg.size()];
for(int i=0; i<varg.size(); i++) {
sarg[i]=(String)varg.elementAt(i);
}
return send(sarg);
}
public static String send(String[] argv) {
String to, subject = null, from = null, cc = null, bcc = null,
url = null;
CCXXX
String mailhost = null;
String mailer = "WorkFlow";
String protocol = null, host = null, user = null, password = null;
String record = null; // name of folder in which to record mail
String texto=null;
String ls_error="";
boolean debug = false;
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
int optind;
to="";
for (optind = 0; optind < argv.length; optind++) {
if (argv[optind].equals("-T")) {
protocol = argv[++optind];
} else if (argv[optind].equals("-H")) {
host = argv[++optind];
} else if (argv[optind].equals("-U")) {
user = argv[++optind];
} else if (argv[optind].equals("-P")) {
password = argv[++optind];
} else if (argv[optind].equals("-M")) {
mailhost = argv[++optind];
} else if (argv[optind].equals("-r")) {
record = argv[++optind];
} else if (argv[optind].equals("-s")) {
subject = argv[++optind];
} else if (argv[optind].equals("-f")) { // originator
from = argv[++optind];
} else if (argv[optind].equals("-t")) { // originator
to = argv[++optind];
} else if (argv[optind].equals("-c")) {
cc = argv[++optind];
} else if (argv[optind].equals("-b")) {
bcc = argv[++optind];
} else if (argv[optind].equals("-L")) {
url = argv[++optind];
} else if (argv[optind].equals("-d")) {
debug = true;
} else if (argv[optind].equals("--")) {
optind++;
break;
} else if (argv[optind].startsWith("-")) {
ls_error="Usage: msgsend [[-L store-url] | [-T prot] [-H host]
[-U user] [-P passwd]]\t[-s subject] [-t to-address] [-f from-
address] [-c cc-addresses]\t[-b bcc-addresses] [-r record-mailbox]
[-M transport-host] [-d] [address]";
return ls_error;
} else {
break;
}
}
try {
if(optind < argv.length) texto = argv[optind];
if(texto==null) texto="no message";
if(subject == null) subject = "no subject";
Properties props = System.getProperties();
if (mailhost != null) props.put("mail.smtp.host", mailhost);
// Get a Session object
Session session = Session.getDefaultInstance(props, null);
// construct the message
Message msg = new MimeMessage(session);
if (from != null) msg.setFrom(new InternetAddress(from));
else msg.setFrom();
CCXXXI
if(to == null) {
ls_error="To";
return ls_error;
}
if(to != null) msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to, false));
if (cc != null) msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc, false));
if (bcc != null) msg.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(bcc, false));
msg.setSubject(subject);
// collect(in, msg);
msg.setText(texto);
msg.setHeader("X-Mailer", mailer);
msg.setSentDate(new Date());
Transport.send(msg);
// Keep a copy, if requested.
if (record != null) {
// Get a Store object
Store store = null;
if (url != null) {
URLName urln = new URLName(url);
store = session.getStore(urln);
store.connect();
} else {
if (protocol != null) store = session.getStore(protocol);
else store = session.getStore();
// Connect
if (host != null || user != null || password != null)
store.connect(host, user, password);
else store.connect();
}
// Get record Folder. Create if it does not exist.
Folder folder = store.getFolder(record);
if (folder == null) {
ls_error="Can't get record folder.";
return ls_error;
}
if (!folder.exists()) folder.create(Folder.HOLDS_MESSAGES);
Message[] msgs = new Message[1];
msgs[0] = msg;
folder.appendMessages(msgs);
}
} catch (Exception e) {
ls_error=e.toString();
StringWriter ss=new StringWriter();
e.printStackTrace(new PrintWriter(ss,true));
ls_error+=ss.toString();
}
return ls_error;
}
///----------------------------------------------------------
public static String send(String smtp, String from, String to,
String
cc, String bcc, String subject, String texto) {
String mailhost = smtp;
String mailer = "WorkFlow";
CCXXXII
String ls_error="";
boolean debug = false;
int optind;
try {
if(texto==null || texto.length()==0) texto="Sin Mensaje";
if(subject == null || subject.length()==0) subject = "Sin
Asunto";
Properties props = System.getProperties();
if (mailhost != null) props.put("mail.smtp.host", mailhost);
// Get a Session object
Session session = Session.getDefaultInstance(props, null);
// construct the message
Message msg = new MimeMessage(session);
if (from != null) msg.setFrom(new InternetAddress(from));
else {
return "Falta dirección del remitente";
}
if(to == null || to.length()==0) {
ls_error="Falta dirección del destinatario.";
return ls_error;
}
if(to != null) msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to, false));
if (cc != null) msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc, false));
if (bcc != null) msg.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(bcc, false));
msg.setSubject(subject);
msg.setText(texto);
msg.setHeader("X-Mailer", mailer);
msg.setSentDate(new Date());
Transport.send(msg);
}
// Get record Folder. Create if it does not exist.
Folder folder = store.getFolder(record);
if (folder == null) {
ls_error="Can't get record folder.";
return ls_error;
}
if (!folder.exists()) folder.create(Folder.HOLDS_MESSAGES);
Message[] msgs = new Message[1];
msgs[0] = msg;
folder.appendMessages(msgs);
}
*/
} catch (Exception e) {
StringWriter ss=new StringWriter();
e.printStackTrace(new PrintWriter(ss,true));
ls_error=ss.toString();
}
return ls_error;
}
//---------------------------------
CCXXXIII
/*
*Para enviar archivos adjuntos
**/
public static String send(String smtp,
String from,
String to,
String cc,
String bcc,
String subject,
String texto,
String fileAttachment)throws Exception
{
int contador = 0;
String y = "";
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", smtp);
props.put("mail.smtp.auth", "false");
Session mailSession = Session.getInstance(props,
null);
MimeMessage message = new MimeMessage(mailSession);
if ( from != null )
if (!from.trim().equals(""))
contador++;
if ( contador == 0 )
{
throw new Exception ("Error debe ingresar el e mail
de origen");
}
Address [] fromAddr = new Address [1];
fromAddr[0] =new
InternetAddress(from);//InternetAddress(conf.getParameter("usermail"
));
message.setFrom(fromAddr[0]);
message.setReplyTo(fromAddr);
contador =0;
if ( to != null )
if (!to.trim().equals(""))
contador++;
if ( contador == 0 )
{
throw new Exception ("Error debe ingresar el e mail
de destino");
}
message.addRecipient(Message.RecipientType.TO,new
InternetAddress(to));
if (cc!=null)
if (!cc.trim().equals(""))
message.addRecipient(Message.RecipientType.CC,new
InternetAddress(cc));
if(bcc!=null)
if(!bcc.trim().equals(""))
message.addRecipient(Message.RecipientType.BCC,new
InternetAddress(bcc));
CCXXXIV
message.setSubject(subject);
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(texto);
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource source = new
FileDataSource(fileAttachment);
messageBodyPart.setDataHandler(new
DataHandler(source));
messageBodyPart.setFileName(fileAttachment);
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
// Send the message
Transport.send( message );
return y;
}
public static String crearMail(
String usuario
)
throws Exception
{
System.out.println("------------------------
----------------------------------------");
Process resultado =
Runtime.getRuntime().exec(" useradd " + usuario.trim() );
String clave = usuario+"1234";
String sentencia = " passwd " + usuario.trim() +
"\n" + clave.trim() + "\n" +clave.trim() ;
System.out.println(sentencia);
Process resultado2 =
Runtime.getRuntime().exec(sentencia);
DataInputStream flujoTeclado = new DataInputStream
(resultado.getInputStream());
String informacion = null;
while ( (informacion =
flujoTeclado.readLine())!=null )
{
System.out.println("Linea " + informacion);
}
return (usuario+"@grupo5.com");
}
public static void cambiarClaveMail(
CCXXXV
String usuarioMail,
String clave
)
throws Exception
{
String [] datos = usuarioMail.split("@");
String user = datos[0];
String sentencia = " passwd " + user.trim() +
"\n" + clave.trim() + "\n" +clave.trim() ;
Process resultado =
Runtime.getRuntime().exec(sentencia);
System.out.println("Se Cambio la clave del
usuario");
}
}
GestionExportacion.-
Este componente nos permite la importación de los reportes hacia archivos de
extensión XLS, realiza la consulta de la información desde la base de datos y
realiza un mapeo de los campos resultantes de la consulta para trasladarlos al
formato descrito.
package capaProcesos.procedimientos.skylinx.utilidadesGenerales;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
import javax.servlet.jsp.*;
CCXXXVI
import java.sql.*;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import capaProcesos.procedimientos.skylinx.javaMailCls.*;
public class GestionExportacion extends Procedimiento
{
public static String rutaArchivo = "C:/Tomcat
5.0/webapps/SkyLinx/paginas/skylinx/dataXls/";
public static String smtp = "";
public GestionExportacion () throws IOException
{
super ("Procesos de aplicacion");
}
public void dataTop10( Session psSesionServlet,
PageContext pagina)throws
Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
String lsQuery = " select b.ip_maquina as maquina, "+
" b.nombre_pc as nombrePc, "+
" a.fecha_registro as fechaRegistro,
"+
" a.accion_realizada as accion, "+
" a.ruta_virus_encontrado as ruta, "+
" ( "+
" select g.descripcion "+
" from virus g "+
" where g.id_virus = a.id_virus "+
" and g.estado = 'A' "+
" ) as virus " +
" from detalle_scan a, "+
" scan c, "+
" maquina b "+
" where a.id_virus is not null "+
" and c.id_scan = a.id_scan "+
" and c.id_maquina = b.id_maquina "+
" and a.estado = 'A' "+
" and b.estado = 'A' " +
" and c.estado = 'A' "+
" order by a.fecha_registro "+
" LIMIT (10) ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
CCXXXVII
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getOutputStream().println(" <div
class=\"titulosFormulario\" >REPORTE TOP 10 </div> ");
l_response.getOutputStream().println(" <table
width=\"100%\" border=\"1\" cellpadding=\"0\" style=\" border:NAVY;
border-bottom-style:solid; volume:medium\">");
l_response.getOutputStream().println(" <tr> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Maquina</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Virus</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Ruta</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Accion</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Fecha Registro</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getOutputStream().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getOutputStream().println(" <tr>
");
l_response.getOutputStream().println(" <td> "
+ resultado.getString( "maquina" ) + "</td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "virus" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "ruta" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "accion" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getDate( "fechaRegistro" ).toString()+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "nombrePc" )+" </td> ");
l_response.getOutputStream().println(" </tr>
");
}
l_response.getOutputStream().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void generaArchivoDataTop10(
Session psSesionServlet,
String
CCXXXVIII
nombreArchivo
)throws
Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = " select b.ip_maquina as maquina, "+
" b.nombre_pc as nombrePc, "+
" a.fecha_registro as fechaRegistro,
"+
" a.accion_realizada as accion, "+
" a.ruta_virus_encontrado as ruta, "+
" ( "+
" select g.descripcion "+
" from virus g "+
" where g.id_virus = a.id_virus "+
" and g.estado = 'A' "+
" ) as virus " +
" from detalle_scan a, "+
" scan c, "+
" maquina b "+
" where a.id_virus is not null "+
" and c.id_scan = a.id_scan "+
" and c.id_maquina = b.id_maquina "+
" and a.estado = 'A' "+
" and b.estado = 'A' " +
" and c.estado = 'A' "+
" order by a.fecha_registro "+
" LIMIT (10) ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
bWriter.write(" <div class=\"titulosFormulario\"
>REPORTE TOP 10 </div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Maquina</th>
");
bWriter.write(" <th scope=\"col\">Virus</th> ");
bWriter.write(" <th scope=\"col\">Ruta</th> ");
bWriter.write(" <th scope=\"col\">Accion</th>
");
bWriter.write(" <th scope=\"col\">Fecha
Registro</th> ");
bWriter.write(" <th scope=\"col\">Nombre Pc</th>
");
bWriter.write(" </tr> " );
try
{
while (resultado.next() )
CCXXXIX
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " +
resultado.getString( "maquina" ) + "</td> ");
bWriter.write(" <td> "
+resultado.getString( "virus" )+" </td> ");
bWriter.write(" <td> "
+resultado.getString( "ruta" )+" </td> ");
bWriter.write(" <td> "
+resultado.getString( "accion" )+" </td> ");
bWriter.write(" <td> " +resultado.getDate(
"fechaRegistro" ).toString()+" </td> ");
bWriter.write(" <td> "
+resultado.getString( "nombrePc" )+" </td> ");
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.flush();
bWriter.close();
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoTop10 (
HashMap parametros
) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "top10.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment =
rutaArchivo+nombreArchivo;
try
{
generaArchivoDataTop10(
psSesionServlet,
CCXL
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el
archivo para enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el
archivo adjutno " + e2.toString());
}
}
//-------------------------------------------------------------
------------
/*
*
*Envia mail de los usuarios
**/
public void generaArchivoUsuarios(
Session psSesionServlet,
String
nombreArchivo
)throws
Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = "select b.nombre || ' ' ||b.apellido, "+
" t.usuario, "+
" fecha_creacion, "+
" ( "+
" select c.ip_maquina "+
"from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario =
t.id_usuario "+
CCXLI
" and a.id_maquina =
c.id_maquina "+
" ) as Maquina_asignada, "+
"( "+
" select c.nombre_pc "+
" from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario =
t.id_usuario "+
" and a.id_maquina =
c.id_maquina "+
" ) as nombre_Maquina_asignada "+
" from usuarios as t, "+
" personas as b " +
" where t.estado = 'A' "+
" and b.id_persona =
t.id_persona "+
" and b.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
bWriter.write(" <div class=\"titulosFormulario\"
>REPORTE TOP 10 </div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Nombre</th>
");
bWriter.write(" <th scope=\"col\">Usuario
Sistema</th> ");
bWriter.write(" <th scope=\"col\">Fecha
Ingreso</th> ");
bWriter.write(" <th scope=\"col\">Ip
Maquina</th> ");
bWriter.write(" <th scope=\"col\">Nombre
Maquina</th> ");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
bWriter.write(" </tr> " );
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " +
resultado.getString( 1 ) + "</td> ");
bWriter.write(" <td> "
+resultado.getString( 2 )+" </td> ");
bWriter.write(" <td> "
+resultado.getString( 3 ).toString()+ " </td> ");
bWriter.write(" <td> "
+resultado.getString( 4 )+ " </td> ");
CCXLII
bWriter.write(" <td> "
+resultado.getString( 5 )+ " </td> ");
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.close();
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoUsuarios (
HashMap parametros
) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "usuarios.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment =
rutaArchivo+nombreArchivo;
try
{
generaArchivoUsuarios(
psSesionServlet,
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el
archivo para enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
CCXLIII
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el
archivo adjutno " + e2.toString());
}
}
/*
*
**/
/*
*
*Envia mail de las descargas
**/
public void generaArchivoDescargas(
Session psSesionServlet,
String
nombreArchivo
)throws
Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = "select a.ip_maquina as maquina, "+
" a.nombre_pc as nombre_pc, "+
" a.estado_operacion as
estado_operacion, "+
" (select max(fecha_descarga)
from descargas where id_maquina = a.id_maquina) as fecha_descarga,
"+
" (select observacion from
descargas where id_maquina = a.id_maquina and fecha_descarga =
(select max(fecha_descarga) from descargas where id_maquina =
a.id_maquina)) as observacion " +
" from maquina as a "+
" where a.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
/
bWriter.write(" <div class=\"titulosFormulario\"
CCXLIV
>DESCARGAS </div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Maquina</th>
");
bWriter.write(" <th scope=\"col\">Nombre PC</th>
");
bWriter.write(" <th scope=\"col\">Estado
Operacion</th> ");
bWriter.write(" <th scope=\"col\">Fecha Ultima
Definicion</th> ");
bWriter.write(" <th
scope=\"col\">Observacion</th> ");
bWriter.write(" </tr> " );
java.util.Date fecha = null;
String observacion = null;
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " +
resultado.getString( "maquina" ) + "</td> ");
bWriter.write(" <td> "
+resultado.getString( "nombre_pc" )+" </td> ");
bWriter.write(" <td> "
+resultado.getString( "estado_operacion" )+" </td> ");
fecha = resultado.getDate( "fecha_descarga"
);
if (fecha!=null)
{
bWriter.write(" <td> "
+fecha.toString()+" </td> ");
}
else
{
bWriter.write(" <td> " +"No
Encontrado"+" </td> ");
}
observacion = resultado.getString(
"observacion" );
if ( observacion != null )
{
bWriter.write(" <td> "
+observacion+" </td> ");
}
else
{
bWriter.write(" <td> " +"No
Encontrado"+" </td> ");
}
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.close();
coneccion.close();
CCXLV
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoDescargas (
HashMap parametros
) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "descargas.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment =
rutaArchivo+nombreArchivo;
try
{
generaArchivoDescargas(
psSesionServlet,
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el
archivo para enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el
archivo adjutno " + e2.toString());
CCXLVI
}
}
/*
*
**/
public void gestionExportaExcelTop10 (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataTop10(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la
exportacion del reporte " + e.getMessage());
}
}
public void dataDescargasXLS( Session psSesionServlet,
PageContext pagina)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
String lsQuery = "select a.ip_maquina as maquina, "+
" a.nombre_pc as nombre_pc, "+
" a.estado_operacion as
estado_operacion, "+
" (select max(fecha_descarga)
from descargas where id_maquina = a.id_maquina) as fecha_descarga,
"+
" (select observacion from
descargas where id_maquina = a.id_maquina and fecha_descarga =
(select max(fecha_descarga) from descargas where id_maquina =
a.id_maquina)) as observacion " +
" from maquina as a "+
" where a.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
CCXLVII
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
java.util.Date fecha = null;
String observacion = null;
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getWriter().println(" <div
class=\"titulosFormulario\" >DESCARGAS </div> ");
l_response.getWriter().println(" <table
width=\"100%\" border=\"1\" cellpadding=\"0\" style=\" border:NAVY;
border-bottom-style:solid; volume:medium\">");
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <th
scope=\"col\">Maquina</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Nombre PC</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Estado Operacion</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Fecha Ultima Definicion</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Observacion</th> ");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getWriter().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <td> " +
resultado.getString( "maquina" ) + "</td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( "nombre_pc" )+" </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( "estado_operacion" )+" </td> ");
fecha = resultado.getDate( "fecha_descarga"
);
if (fecha!=null)
{
l_response.getWriter().println(" <td> "
+fecha.toString()+" </td> ");
}
else
{
l_response.getWriter().println(" <td> "
+"No Encontrado"+" </td> ");
}
observacion = resultado.getString(
"observacion" );
if ( observacion != null )
{
CCXLVIII
l_response.getWriter().println(" <td> "
+observacion+" </td> ");
}
else
{
l_response.getWriter().println(" <td> "
+"No Encontrado"+" </td> ");
}
l_response.getWriter().println(" </tr> ");
}
l_response.getWriter().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionDataDescargasXLS (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataDescargasXLS(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la
exportacion del reporte " + e.getMessage());
}
}
///---------------------------------------------------
public void dataDescargaUsuarios( Session psSesionServlet,
PageContext pagina)throws Exception
{
/*
*
CCXLIX
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
String lsQuery = "select b.nombre || ' '
||b.apellido, "+
" t.usuario, "+
" fecha_creacion, "+
" ( "+
" select c.ip_maquina "+
"from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario =
t.id_usuario "+
" and a.id_maquina =
c.id_maquina "+
" ) as Maquina_asignada, "+
"( "+
" select c.nombre_pc "+
" from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario =
t.id_usuario "+
" and a.id_maquina =
c.id_maquina "+
" ) as nombre_Maquina_asignada "+
" from usuarios as t, "+
" personas as b " +
" where t.estado = 'A' "+
" and b.id_persona =
t.id_persona "+
" and b.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
java.util.Date fecha = null;
String observacion = null;
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getWriter().println(" <div
class=\"titulosFormulario\" >REPORTE TOP 10 </div> ");
l_response.getWriter().println(" <table
width=\"100%\" border=\"1\" cellpadding=\"0\" style=\" border:NAVY;
border-bottom-style:solid; volume:medium\">");
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <th
scope=\"col\">Nombre</th> ");
l_response.getWriter().println(" <th
CCL
scope=\"col\">Usuario Sistema</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Fecha Ingreso</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Ip Maquina</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Nombre Maquina</th> ");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getWriter().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <td> " +
resultado.getString( 1 ) + "</td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 2 )+" </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 3 ).toString()+ " </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 4 )+ " </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 5 )+ " </td> ");
l_response.getWriter().println(" </tr> ");
}
l_response.getWriter().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionDataDescargaUsuarios (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataDescargaUsuarios(
psSesionServlet,
pagina
);
}
CCLI
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la
exportacion del reporte " + e.getMessage());
}
}
CCLII
INDICE GENERAL
ÌNDICE GENERAL I INDICE DE IMAGENES II MANUAL DE USUARIO .......................................................................... CXLV INGRESO AL SISTEMA ........................................................................... CXLV CAMBIO DE CLAVE ................................................................................ CXLV CONFIGURACIONES ............................................................................. CXLVI CREACION DE TIPOS DE CONFIGUARCION ..................................... CXLVI INGRESO DE CONFIGURACION ......................................................... CXLVII ASIGNACION CONFIGURACION MAQUINAS .................................... CXLVIII REPORTES PCS ......................................................................................... CL TOP 10 ......................................................................................................... CL DESCARGAS ............................................................................................... CL USUARIOS DEL SISTEMA ........................................................................ CLII GESTOR MAQUINAS ................................................................................ CLII TODA LA RED .......................................................................................... CLIII VERIFICACIÓN DE ESTADOS DE PCS................................................... CLIII EJECUCION DE ANTIVIRUS ..................................................................... CLV ENVIO ACTUALIZACION........................................................................... CLV REPORTE SCAN MAQUINA .................................................................... CLVI INACTIVACION DE MAQUINAS .............................................................. CLVII ASIGNACIÓN MAQUINA USUARIO ........................................................ CLVII GESTION USUARIOS .............................................................................. CLIX INGRESO USUARIO ................................................................................ CLIX ASIGNACION ROL ................................................................................... CLIX INACTIVACION USUARIO......................................................................... CLX RESETEO DE CLAVE .............................................................................. CLXI ACTUALIZACION DE USUARIO ............................................................. CLXII CAMBIO DE CLAVE MAIL ....................................................................... CLXII ELIMINAR ROL USUARIO ...................................................................... CLXIV MANUAL DE INSTALACIÓN ................................................................. CLXIV SERVIDOR .............................................................................................. CLXIV CLIENTES ................................................................................................ CLXV PROCESO DE INSTALACIÓN EN EL SISTEMA OPERATIVO LINUX ... CLXV Instalación de Java ................................................................................... CLXV Configuración: ......................................................................................... CLXVI Instalación de Apache Tomcat ................................................................ CLXVI Configuración ......................................................................................... CLXVII PROCESO DE INSTALACIÓN EN LOS CLIENTES .............................. CLXVII Instalación de Java ................................................................................. CLXVII Instalación de Clamwin ........................................................................... CLXIX MANUAL TECNICO ............................................................................... CLXXII INTRODUCCION ................................................................................... CLXXII DIAGRAMA GENERAL ......................................................................... CLXXIII DIAGRAMA DE BASE DE DATOS ...................................................... CLXXIV SCRIPTS DE BASE DE DATOS ........................................................... CLXXV
CCLIII
Configuraciones del Servidor ............................................................... CLXXXI Servidor Web ........................................................................................ CLXXXI Servidor DHCP ..................................................................................... CLXXXI Servidor DNS ...................................................................................... CLXXXII Servidor FTP ...................................................................................... CLXXXIV Servidor SENDMAIL ........................................................................... CLXXXIV Servidor de POSTGRES ..................................................................... CLXXXV SCRIPT DE CONEXIÓN ..................................................................... CLXXXV SCRIPTS DE CLASES RELEVANTES ............................................ CLXXXVIII
INDICE DE ILUSTRACIONES
Ilustración 1: Inicio .................................................................................... CXLV Ilustración 2 : Opción Cambio de clave ................................................... CXLVI Ilustración 3: Dialogo de confirmación de cambio de Clave .................... CXLVI Ilustración 4: Pantalla para el cambio de clave ....................................... CXLVI Ilustración 5: Opciones del Menú configuraciones .................................. CXLVI Ilustración 6: Ingreso de Tipo Configuración .......................................... CXLVII Ilustración 7: Opción Ingreso configuración ........................................... CXLVII Ilustración 8: Ingreso de Configuración .................................................. CXLVII Ilustración 9: Cuadro de dialogo de mensaje Exitoso ............................ CXLVIII Ilustración 10: Opción Asignación Configuraciones Maquinas .............. CXLVIII Ilustración 11: Ingreso Configuración Máquina ....................................... CXLIX Ilustración 12: Gestión Asignación Configuración Maquinas ........................ CL Ilustración 13: Dialogo de confirmación de Ingreso exitoso de configuración maquina ....................................................................................................... CL Ilustración 14: Reporte TOP 10 .................................................................... CL Ilustración 15: Reporte Descargas .............................................................. CLI Ilustración 16: Usuarios Máquinas ............................................................. CLII Ilustración 17: Opciones Menú Gestor Máquinas ....................................... CLII Ilustración 18: Gestión de Configuraciones de Maquinas Encendidas ...... CLIII Ilustración 19: Botón para la actualización de los sitios de red ................. CLIII Ilustración 20: Gestión Envío de E-Mail .................................................... CLIV Ilustración 21: Dialogo informativo de ejecución del Antivirus ................... CLV Ilustración 22: Dialogo informativo de envío de definición .......................... CLV Ilustración 23: Reporte de SCAN por Maquina.......................................... CLVI Ilustración 24: Detalle SCAN .................................................................... CLVII Ilustración 25: Inactivación de Maquinas .................................................. CLVII Ilustración 26: Asignación Maquina Usuario............................................ CLVIII Ilustración 27: Menú Gestión Usuarios ...................................................... CLIX
CCLIV
Ilustración 28: Ingreso Usuarios ................................................................ CLIX Ilustración 29: Asignación de rol a Usuarios............................................... CLX Ilustración 30: Diálogo Informativo de Asignación Exitosa ......................... CLX Ilustración 31: Inactivación de usuario ....................................................... CLX Ilustración 32: Dialogo Informativo de Inactivación de Usuario Exitosa ..... CLX Ilustración 33: Reseteo Clave Usuario ...................................................... CLXI Ilustración 34: Diálogo Informativo de Reseteo de Clave Exitosa ............. CLXI Ilustración 35: Actualización Usuarios ...................................................... CLXII Ilustración 36: Diálogo Informativo de Actualización de Usuario Exitosa . CLXII Ilustración 37: Cambio de Clave Mail Usuario ......................................... CLXIII Ilustración 38: Dialogo Informático de Actualización de Clave mail Exitosa ................................................................................................................ CLXIV Ilustración 39: Elimina Rol Usuario .......................................................... CLXIV Ilustración 40: Diálogo Informativo de Eliminación de Rol de Usuario Exitoso ................................................................................................................ CLXIV Ilustración 41: Instalación Java pantalla 1-5 ........................................... CLXVII Ilustración 42: Instalación Java pantalla 2-5 .......................................... CLXVIII Ilustración 43: Instalación Java pantalla 3-5 .......................................... CLXVIII Ilustración 44: Instalación Java pantalla 4-5 .......................................... CLXVIII Ilustración 45: Instalación Java pantalla 5-5 ............................................ CLXIX Ilustración 46: Instalación ClamWin 1-11 ................................................ CLXIX Ilustración 47: Instalación ClamWin 2-11 ................................................ CLXIX Ilustración 48: Instalación ClamWin 3-11 ................................................ CLXIX Ilustración 49: Instalación ClamWin 4-11 ................................................. CLXX Ilustración 50: Instalación ClamWin 5-11 ................................................. CLXX Ilustración 51: Instalación ClamWin 6-11 ................................................. CLXX Ilustración 52: Instalación ClamWin 7-11 ................................................ CLXXI Ilustración 53: Instalación ClamWin 8-11 ................................................ CLXXI Ilustración 54: Instalación ClamWin 9-11 ................................................ CLXXI Ilustración 55: Instalación ClamWin 10-11 .............................................. CLXXI Ilustración 56: Instalación ClamWin 11-11 ............................................. CLXXII Ilustración 57: Diagrama de base de datos ........................................... CLXXV
CCLV
MANUAL TECNICO
INTRODUCCION
Este manual técnico ha sido preparado por el grupo numero cinco del tópico
de graduación.
Agradecemos la colaboración de los profesores, ingenieros y compañeros que
nos han proporcionado orientación necesaria para su elaboración. Este manual
contiene información sobre el empleo del sistema SKYLINX, localización de
procedimientos principales, y la identificación rápida de funciones que
dependen de otros servicios del Sistema Operativo, este sistema ha sido
elaborado de acuerdo con la metodología de programación Orientada a
Objetos. Las operaciones que no se describen en este manual no han sido
incluidas por considerarse básicas y de conocimiento de las personas a quien
va dirigido este documento. Cabe señalar que es responsabilidad de este
grupo mantener dicho documento actualizado de acuerdo a los cambios que
sufra el sistema en el transcurso del tiempo.
CCLVI
DIAGRAMA GENERAL
Inicio
Verificar miembros
de la red
Verifica definición
en el servidor
Verifica red
Verifica
actualizaciones de
clientes
Envía
actualización
Verifica ultimo
scan
Envía scan
Envía mensaje
Actualizado
FinalizaActualizado
Scaneado
recientemente
Descarga
Actualización
internet
Verifica Definición
del Servidor
Verifica Definición
del Cliente
Verifica Scan del
Cliente
No
si
No
Si
No
Si
DIAGRAMA DE BASE DE DATOS
CCLVII
virus
ID_VIRUS
DESCRIPCIONOBSERVACIONFECHA_RESGISTROESTADO
usuarios
ID_USUARIO
ID_PERSONA (FK)USUARIOCLAVEESTADOID_NUMERICO_SUCURSAL (FK)
tipos_empleados
ID_TIPO_EMPLEADO
DESCRIPCION_TIPOOBSERVACIONFECHA_REGISTROESTADO
tipo_parametro
id_parametro
DESCRIPCION_TIPOOBSERVACIONFECHA_REGISTROESTADO
tipo_maquina
ID_TIPO_MAQUINA
DESCRIPCIONFECHA_REGISTROESTADOOBSERVACION
tipo_configuracion
ID_TIPO_CONFIGURACION
DESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
suscursales
ID_NUMERICO_SUCURSAL
ID_NUMERICO_EMPRESA (FK)NOMBRE_SUCURSALDESCRIPCION_SUCURSALDIRECCIONTELEFONOCIUDADIDENTIFICACION_SUCURSALESTADO
scan
ID_SCAN
ID_MAQUINA (FK)DESCRIPCIONFECHA_SCANESTADORUTA_ARCHIVO_LOG
roles_usuarios_aplicacion
ID_ROL_APLICACION (FK)ID_USUARIO (FK)
FECHA_CREACIONOBSERVACIONESTADO
roles_aplicacion
IDROL
DESCROLOBSERVACIONFECHA_CREACIONESTADO
personas
ID_PERSONA
VALOR_IDENTIFICACIONNOMBREAPELLIDOSFECHA_NACIMIENTOCIUDADDIRECCIONTELEFONO_CASACELULAREMAILTIPO_SANGRETIPO_PERSONAESTADOFECHA_REGISTROSEXOARCHIVO_FOTO
parametros_generales
id_parametro (FK)
CLAVE_PARAMETROVALOROBERVACION
opciones_roles
ID_ROL (FK)ID_OPCION (FK)
FECHA_CREACIONOBSERVACIONESTADO
opciones_aplicacion
ID_OPCION_APLICACION
ID_OPCIONDESCRIPCIONNOMBRE_OPCIONTARGETTITULODIRECCION_APLICACIONORDENNOMBRE_PAGINAESTADO
metodo_clase_proceso
ID_METODO_CLASE_PROCESO
ID_CLASE_PROCESO (FK)DESCRIPCION_METODOOBSERVACIONFECHA_REGISTROESTADO
marquesinas
ID_NUMERICO_MARQUESINA
MENSAJEESTADOFECHA_REGISTROORDEN_MARQUESINA
marquesina_sucursal
ID_SUCURSAL (FK)ID_MARQUESINA (FK)DESCRIPCIONFECHA_REGISTROESTADO
maquina_usuario
ID_ASIGNACION_MAQUIINA_USER
ID_MAQUINA (FK)ID_USUARIO (FK)OBSERVACIONFECHA
maquina
ID_MAQUINA
ID_TIPO_MAQUINA (FK)ESTADO_OPERACIONNOMBRE_PC
empresas
ID_NUMERICO_EMPRESA
NOMBRERAZON_SOCIALDIRECCIONRUCNOMBRE_COMERCIALFECHA_REGISTROESTADO
empleados
ID_EMPLEADO
ID_PERSONA (FK)ID_TIPO_EMPLEADO (FK)AREASUELDOFECHA_INGRESOFECHA_SALIDAFECHA_REGISTROESTADOID_USUARIO_INGRESOID_JEFE (FK)
detalle_virus
ID_DETALLE_VIRUS
ID_VIRUS (FK)DESCRIPCION_DETALLEOBSERVACIONFECHA_REGISTROESTADO
detalle_scan
ID_DETALLE_SCAN
ID_SCAN (FK)ID_VIRUS (FK)DESCRIPCIONOBSERVACIONACCION_REALIZADARUTA_VIRUS_ENCONTRADOFECHA_REGISTROESTADO
detalle_configuracion
ID_DETALLE_CONFIGURACION
ID_CONFIGURACION_MAQUINA (FK)ID_ACCION (FK)DESCRIPCIONOBSERVACIONFECHA_REGISTRODATO_ACCIONESTADO
descargas
ID_DESCARGA
ID_MAQUINA (FK)FECHA_DESCARGAESTADONOMBRETAMANIO
configuraciones_maquinas
ID_CONFIMAQUINAS
ID_CONFIGURACION (FK)ID_MAQUINA (FK)OBSERVACIONFECHA_REGISTROESTADO
configuraciones
ID_CONFIGURACIONES
ID_TIPO_CONFIGURACION (FK)VALORDESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
clientes
ID_NUMERICO_CLIENTE
ID_PERSONA (FK)ESTADOFECHA_REGISTROID_USUARIO_INGRESO
clase_proceso
ID_PROCESO
FECHA_REGISTROESTADOOBSERVACIONarchivos_personas
ID_ARCHIVO
ID_PERSONA (FK)CLAVE_ARCHIVOESTADOFECHA_REGISTROOBSERVACIONVALOR_ARCHIVO
acciones
ID_ACCION
DESCRIPCIONOBSERVACIONFECHA_REGISTROESTADO
SCRIPTS DE BASE DE DATOS
Script para la creación de la base de datos:
CREATE DATABASE skylinx
WITH OWNER = skylinx
ENCODING = 'LATIN1'
TABLESPACE = pg_default;
CCLVIII
Script para la creación de la tabla “acciones” CREATE TABLE acciones (
id_accion numeric(50,0) NOT NULL,
descripcion character(300),
observacion character(200),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “archivos_personas” CREATE TABLE archivos_personas (
id_persona numeric(100,0) NOT NULL,
id_archivo numeric(100,0) NOT NULL,
clave_archivo character(400),
estado character(1),
fecha_registro date,
observacion character(500),
valor_archivo bytea
);
Script para la creación de la tabla “clase_proceso” CREATE TABLE clase_proceso (
id_proceso numeric(50,0) DEFAULT 0 NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
observacion text,
clave_proceso character(200),
descripcion_clase_proceso character(200)
);
Script para la creación de la tabla “configuraciones” CREATE TABLE configuraciones (
id_configuraciones numeric(50,0) NOT NULL,
id_tipo_configuracion numeric(50,0) NOT NULL,
valor character(300),
descripcion character(300),
observacion character(200),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “configuraciones_maquinas” CREATE TABLE configuraciones_maquinas (
id_confimaquinas numeric(50,0) NOT NULL,
id_configuracion numeric(50,0) NOT NULL,
CCLIX
id_maquina numeric(50,0) NOT NULL,
observacion character(300),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “descargas” CREATE TABLE descargas (
id_descarga numeric(50,0) NOT NULL,
id_maquina numeric(50,0) NOT NULL,
fecha_descarga date,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
nombre character(200),
tamanio character(200)
);
Script para la creación de la tabla”detalle_configuracion” CREATE TABLE detalle_configuracion (
id_detalle_configuracion numeric(100,0) NOT NULL,
id_configuracion_maquina numeric(100,0) NOT NULL,
id_accion numeric(100,0) NOT NULL,
descripcion character(300),
observacion character(300),
fecha_registro date NOT NULL,
dato_accion character(300),
estado character(1) NOT NULL
);
Script para la creación de la tabla CREATE TABLE detalle_scan (
id_detalle_scan numeric(100,0) NOT NULL,
id_scan numeric(100,0) NOT NULL,
id_virus numeric(100,0),
descripcion character(300),
observacion character(300),
accion_realizada character(200),
ruta_virus_encontrado text,
fecha_registro date,
estado character(1)
);
Script para la creación de la tabla “empresas” CREATE TABLE empresas (
id_numerico_empresa numeric(50,0) NOT NULL,
nombre character(100) NOT NULL,
razon_social character(100) NOT NULL,
direccion character(100),
ruc character(20) NOT NULL,
nombre_comercial character(100) NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
CCLX
identificador character(4),
archivo_logo character(100)
);
Script para la creación de la tabla “maquina” CREATE TABLE maquina (
id_maquina numeric(50,0) DEFAULT 0 NOT NULL,
id_tipo_maquina numeric(50,0) DEFAULT 0 NOT NULL,
nombre_pc character(200) NOT NULL,
descripcion_pc character(300) NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
observacion character(200),
estado_operacion character(2),
ip_maquina character(300)
);
Script para la creación de la tabla “maquina_usuario” CREATE TABLE maquina_usuario (
id_asignacion_maquiina_user numeric(100,0) NOT NULL,
id_maquina numeric(100,0),
id_usuario numeric(100,0),
observacion character(300),
fecha date
);
Script para la creación de la tabla “marquesina_sucursal” CREATE TABLE marquesina_sucursal (
id_sucursal numeric(50,0) NOT NULL,
id_marquesina numeric(50,0) NOT NULL,
descripcion character(100),
fecha_registro date,
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “maqrquesinas” CREATE TABLE marquesinas (
id_numerico_marquesina numeric(50,0) NOT NULL,
mensaje character(200) NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
fecha_resgistro date,
orden_marquesina numeric(100,0)
);
CCLXI
Script para la creación de la tabla “metodo_clase_proceso” CREATE TABLE metodo_clase_proceso (
id_metodo_clase_proceso numeric(50,0) NOT NULL,
id_clase_proceso numeric(50,0) NOT NULL,
descripcion_metodo character(200) NOT NULL,
observacion character(200),
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “opciones_aplicacion” CREATE TABLE opciones_aplicacion (
id_opcion character(3) NOT NULL,
id_opcion_aplicacion numeric(50,0) NOT NULL,
descripcion character(100) NOT NULL,
id_modulo_padre character(3),
nombre_opcion character(40),
target character(100),
titulo character(100),
direccion_aplicacion character(30),
orden numeric(11,0),
nombre_pagina character(100),
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
tipo_opcion character(3),
imagen_principal character(200),
imagen_sustituta character(200),
funcion_java_script character(200)
);
Script para la creación de la tabla “opciones_roles” CREATE TABLE opciones_roles (
id_rol numeric(50,0) NOT NULL,
id_opcion numeric(50,0) NOT NULL,
fecha_creacion date NOT NULL,
observacion character(200),
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “parametros_generales” CREATE TABLE parametros_generales (
id_parametro numeric(100,0) NOT NULL,
id_tipo_parametro numeric(100,0) NOT NULL,
clave_parametro character(300) NOT NULL,
valor character(300) NOT NULL,
obervacion character(300),
fecha_registro date,
estado character(1)
);
Script para la creación de la tabla “personas” CREATE TABLE personas (
id_persona numeric(50,0) DEFAULT 0 NOT NULL,
valor_identificacion text NOT NULL,
nombre text NOT NULL,
apellido text NOT NULL,
CCLXII
fecha_nacimiento character(10),
ciudad character(100),
direccion character(100),
telefono_casa character(100),
celular character(10),
email character(100),
tipo_sangre character(100),
tipo_persona character(20),
estado character(1) NOT NULL,
fecha_registro date NOT NULL,
sexo character(1),
archivo_foto character(400)
);
Script para la creación de la tabla “opciones_aplicacion” CREATE TABLE roles_aplicacion (
idrol numeric(50,0) NOT NULL,
descrol character(20) NOT NULL,
observacion character(255) NOT NULL,
fecha_creacion date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “roles_usuarios_aplicacion” CREATE TABLE roles_usuarios_aplicacion (
id_rol_aplicacion numeric(50,0) NOT NULL,
id_usuario numeric(50,0) NOT NULL,
fecha_creacion date NOT NULL,
observacion character(200),
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
Script para la creación de la tabla “scan” CREATE TABLE scan (
id_scan numeric(100,0) NOT NULL,
id_maquina numeric(100,0) NOT NULL,
descripcion character(300),
fecha_scan date,
estado character(1),
ruta_archivo_log character(300)
);
Script para la creación de la tabla “sucursales” CREATE TABLE suscursales (
id_numerico_sucursal numeric(50,0) NOT NULL,
nombre_sucursal character(100) NOT NULL,
descripcion_sucursal character(100) NOT NULL,
direccion character(100),
telefono character(20),
ciudad character(100),
identificacion_sucursal character(4),
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
id_empresa numeric(50,0) NOT NULL,
fecha_registro date
);
CCLXIII
Script para la creación de la tabla “tipo_configuracion” CREATE TABLE tipo_configuracion (
id_tipo_configuracion numeric(50,0) NOT NULL,
descripcion character(300),
observacion character(200),
fecha_registro date,
estado character(1) NOT NULL
);
Script para la creación de la tabla “tipo_maquina” CREATE TABLE tipo_maquina (
id_tipo_maquina numeric(50,0) DEFAULT 0 NOT NULL,
descripcion character(200) NOT NULL,
fecha_registro date NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
observacion character(200)
);
Script para la creación de la tabla “tipo_parametro” CREATE TABLE tipo_parametro (
id_parametro numeric(100,0) NOT NULL,
descripcion_tipo character(200) NOT NULL,
observacion character(300),
fecha_registro date,
estado character(1)
);
Script para la creación de la tabla “usuarios” CREATE TABLE usuarios (
id_usuario numeric(50,0) NOT NULL,
usuario character(100) NOT NULL,
clave character(100) NOT NULL,
estado character(1) DEFAULT 'A'::bpchar NOT NULL,
fecha_creacion date NOT NULL,
observacion character(200),
id_sucursal numeric(50,0) NOT NULL,
id_persona numeric(100,0) NOT NULL,
fecha_ini_pri_session date
);
Script para la creación de la tabla “virus” CREATE TABLE virus (
id_virus numeric(50,0) NOT NULL,
descripcion character(200),
observacion character(300),
fecha_resgistro date,
estado character(1) DEFAULT 'A'::bpchar NOT NULL
);
CCLXIV
Configuraciones del Servidor
Cabe señalar que las configuraciones que se presenta a continuación fueron
realizadas en la distribución de Fedora Core 6.
Servidor Web
Para poder configurar el servidor web, debemos tener instalados los siguientes
paquetes:
httpd
openssl
El archivo de configuración httpd.conf del servicio httpd, que se encuentra en la
siguiente ruta: /etc/httpd/conf/ al final de archivo aumentamos nuestro host,
como se muestra a continuación.
#</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/
ServerName www.grupo5.com
</VirtualHost>
Servidor DHCP
En la configuración del servidor de DHCP se requiere el paquete:
dhcpd
CCLXV
El archivo de configuración es dhcpd.conf ubicado en la ruta /etc/. Aquí
pondremos el rango de nuestras IPs de dominio las cuales serán otorgadas de
forma dinámica a cada PC de nuestra red por el servidor de DHCP. Como se
muestra a continuación.
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style interim;
ddns-updates on;
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.20 192.168.1.254;
default-lease-time 86400;
max-lease-time 604800;
ddns-domainname "grupo5.com";
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name "grupo5.com";
option domain-name-servers 192.168.1.1;
Servidor DNS
Para la configuracion del servidor de DNS require los siguientes paquetes:
Bind
Bind_chroot
Bind_utils
Caching_nameserver
En el archivo named.conf ubicado en la ruta /var/named/chroot/etc se
modifica el nombre de las zonas propias del dominio de la organización. A
continuación se muestra el archivo.
// named.conf for Red Hat caching-nameserver
//
options {
directory "/var/named";
CCLXVI
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
};
zone "grupo5.com" IN {
type master;
file "grupo5.com.zone";
allow-update { 192.168.1.0/24; };
};
zone "1.168.192.in-addr.arpa.zone" IN {
type master;
file "1.168.192.in-addr.arpa.zone";
allow-update {192.168.1.0/24; };
};
En la ruta /var/named/chroot/var/named, vamos a crear dos archivos
referentes a las zonas propias de nuestro dominio.
Grupo5.com.zone.- Archivo de zona para búsquedas directa. A
continuacion se muestra el archivo.
$TTL 86400
grupo5.com. IN SOA server.grupo5.com. root.grupo5.com.(
2007062702
3H
15M
1W
1D)
IN NS server
IN A 192.168.1.1
server IN A 192.168.1.1
www IN CNAME server
1.168.192.in-addr.arpa.zone.- Archivo de zona de búsqueda inversa. A
continuacion se muestra el archivo.
$TTL 86399
@ IN SOA server.grupo5.com. root.grupo5.com.(
2007062401
3H
15M
1W
1D )
IN NS server.
1 IN PTR server.grupo5.com.
Estos arhivos contendrán todas las maquinas de nuestro dominio. Cabe
señalar, que este servicio named, trabaja en conjunto con el servidor de
CCLXVII
DHCP.
Servidor FTP
En la configuración del servidor de FTP necesitamos el paquete.
vsftpd
En el archivo de configuración llamado vsftp.conf ubicado en la ruta
/etc/vsftpd/ tenemos que habilitar las siguientes pciones:
Anonymous_enable = yes
Write_a local_enable=yes
Anon_upload_enable=yes
Anon_mkdir_write_enable=yes
Servidor SENDMAIL
El servidor de correo electronico require los siguientes paquetes:
sendmail
sendmail_cf
dovecot
El archivo de configuracion es sendmail.mc ubicado en la direccion
/etc/mail/vsftd/, se modificara los siguientes campos:
DAEMON_OPTIONS(‘port=smtp,name=MTA’)dnl
MASQUERADE AS(‘GRUPO5.COM’)dnl
Antes de subir el servicio se ejecuta el commando:
CCLXVIII
# sendmail.mc > sendmail.cf
Servidor de POSTGRES
El servidor de base de datos requiere del siguiente paquete:
postgresql
Los archivos de configutracion son postgresql.conf y pg_hba.conf que se
encuentra en la siguiente ruta /var/lib/pgsql/data
En el archivo postgresql.conf se debe escribir la IP del servidor.
Acontinuacion se muestra un fragmento del archivo.
# - Connection Settings -
listen_addresses = '192.168.1.1' # what IP address(es) to
listen on;
En el archivo pg_hba.conf se debe escribir la IP o dominio la cual va a tener
acceso a la base de datos y el metodo de encriptación. Acontinuacion se
muestra un fragmento del archivo.
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
# IPv6 local connections:
#host all all ::1/128 md5
SCRIPT DE CONEXIÓN
Script para la creación de la conexión “hibernate-configuration”:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
CCLXIX
<hibernate-configuration>
<session-factory>
<!-- Base de Datos propiedades de la conexion con postgresql-->
<property name="connection.driver_class"
org.postgresql.Driver
</property>
<property name="connection.url">
jdbc:postgresql://192.168.1.1:5432/skylinx
</property>
<property name="connection.username">skylinx</property>
<property name="connection.password">skylinx</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">-1</property>
<!-- SQL dialect -->
<property name="dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">
org.hibernate.cache.NoCacheProvider
</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<mapping
resource="modelo/clasesPersistentes/clasesProcesos/ClasesProcesos.hb
m.xml" />
<mapping
resource="modelo/clasesPersistentes/metodoClaseProceso/MetodoClasePr
oceso.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/empresa/Empresas.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/sucursales/Suscursales.hbm.xml"
/>
<mapping
resource="modelo/clasesPersistentes/marquesina/Maquesina.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/marquesinaSucursal/MarquesinaSuc
ursal.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/personas/Persona.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/usuario/Usuario.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/rolesAplicacion/RolAplicacion.hb
m.xml" />
<mapping
resource="modelo/clasesPersistentes/rolesUsuariosAplicacion/RolesUsu
ariosAplicacion.hbm.xml" />
<mapping
CCLXX
resource="modelo/clasesPersistentes/opciones/Opcion.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/opcionesRoles/OpcionesRoles.hbm.
xml" />
<!-- Esto es lo nuevo-->
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Acciones.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Configuraciones.hbm.xml"
/>
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/ConfiguracionesMaquinas.hbm.
xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Descargas.hbm.xml"
/>
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/DetalleConfiguraci
on.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/DetalleScan.hbm.xm
l" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/DetalleVirus.hbm.x
ml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Maquina.hbm.xml"
/>
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Scan.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/TipoConfiguracion.
hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/TipoMaquina.hbm.xm
l" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/Virus.hbm.xml" />
<mapping
resource="modelo/clasesPersistentes/personas/ArchivosPersonas.hbm.xm
l" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/TipoParametro.hbm.
xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/ParametrosGenerale
s.hbm.xml" />
<mapping
resource="modelo/modeloSkylinx/clasesPersistentes/MaquinaUsuario.hbm
.xml" />
</session-factory>
</hibernate-configuration>
SCRIPTS DE CLASES RELEVANTES
CCLXXI
GeneraMenuDinamico.-
Este Componente nos permite generar de forma dinámica el menú que se
presenta al inicio de sesión de la aplicación, consulta de la base de datos,
específicamente de las tablas “Opciones aplicación” y ”opciones_ roles”, los
menús que están relacionados entre si, significa que mostrará tanto los menús
padres como los hijos de acuerdo a los parámetros que se hayan establecido,
de esta forma se evita quemar los menús y facilitar el crecimiento dinámico.
package capaProcesos.procedimientos.aplicacion;
import org.hibernate.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import javax.servlet.jsp.PageContext;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.opciones.Opcion;
import java.sql.*;
public class GeneraMenuDinamico extends Procedimiento
{
//String separador = "";
public GeneraMenuDinamico ()
{
super("Procesos de aplicacion");
}
/*
*Metodo que realiza el pintado
*de los menus padres
*de la aplicacion
**/
public void generarMenuDinamico (Session sesionHibernate,
PageContext contextoPagina)throws Exception //, PrintWriter out)
{
System.out.println(" hola mundo ");
HttpSession sessionServlet = contextoPagina.getSession();
RolAplicacion roll =
(RolAplicacion)sessionServlet.getAttribute("rollGlobal");
//Con este query obtengo todos los menus padres
//String lsQuery = " from
modelo.clasesPersistentes.opciones.Opcion opcion where opcion.estado = 'A' and
opcion.opcionesAplicacions = null and opcion.opcionesRoleses.id.idRol = " +
roll.getIdRol();
//System.out.println("paso el query " + lsQuery );
//Iterator lista =
sesionHibernate.createQuery(lsQuery).iterate();
//System.out.println("paso la ejecucion");
//sesionHibernate.flush();
PreparedStatement prepareStatementPadre = null;
ResultSet resultadoPadres = null;
String lsQuery = "select a.* from opciones_roles b, "+
" opciones_aplicacion a " +
" where b.id_rol = "+ roll.getIdRol()
+ " " +
" and b.estado = 'A' "+
CCLXXII
" and a.id_opcion_aplicacion =
b.id_opcion "+
" and a.ID_MODULO_PADRE is null "+
" and a.estado = 'A' "+
" and a.tipo_opcion = 'MNU' "+
" order by a.orden";
Connection coneccion = sesionHibernate.connection();
prepareStatementPadre = coneccion.prepareStatement(lsQuery);
resultadoPadres = prepareStatementPadre.executeQuery();
try
{
/*Tener cuidado con la coneccion
**/
contextoPagina.getOut().println(" <script> ");
contextoPagina.getOut().println("var tmenuItems = [ ");
while (resultadoPadres.next() )
{
//Opcion loOpcion = (Opcion)lista.next();
Opcion loOpcion = new Opcion();
loOpcion.setDescripcion(resultadoPadres.getString(3));//String
loOpcion.setDireccionAplicacion(resultadoPadres.getString(8));//Stri
ng
loOpcion.setEstado(resultadoPadres.getString(11));//--String
loOpcion.setIdOpcion(resultadoPadres.getString(1));//--String
loOpcion.setIdOpcionAplicacion(new
Integer(resultadoPadres.getString(2)));//Integer
loOpcion.setNombreOpcion(resultadoPadres.getString(5));//String
loOpcion.setNombrePagina(resultadoPadres.getString(10));//String
loOpcion.setTarget(resultadoPadres.getString(6));//String
loOpcion.setTitulo(resultadoPadres.getString(7));//String
String descripcion = loOpcion.getDescripcion();
contextoPagina.getOut().println("[\""+ descripcion
+"\",\"\", \"\", \"\", \"\", \""+descripcion+"\", \"_blank\", \"\", \"\",
],");
System.out.println("Opcion Padre " + descripcion);
//separador = "";
System.out.println("[\""+ descripcion.trim()
+"\",\"\", \"\", \"\", \"\", \""+descripcion.trim()+"\", \"_blank\", \"\",
\"\", ],");
//PREGUNTAR SI TIENE HIJOS
generaMenusHijos (loOpcion.getIdOpcion(), coneccion,
contextoPagina);
}
contextoPagina.getOut().println("]; ");
contextoPagina.getOut().println(" </script> ");
//Cerra la coneccion
coneccion.close();
//sesionHibernate.close();
}
catch (Exception h)
{
throw new Exception ("Error al generar el menu dinamico " +
h.getMessage());
CCLXXIII
}
finally
{
coneccion.close();
}
// String queryQue obtieneSoloLosPadre = "";
//contextoPagina.getOut().println("[\""+ descripcion +"\",\"\",
\"\", \"\", \"\", \""+descripcion+"\", \"_blank\", \"\", \"\", ],");
}
/*
*Metodo que genera el pintado de los menus hijos
*este metodo es llamado internamente por los menus padres
**/
public void generaMenusHijos (String opcionPadre, Connection
coneccion, PageContext contexto ) throws Exception
{
PreparedStatement prepareStatementHijo = null;
ResultSet resultado = null;
int primero = 0;
HttpSession sessionServlet = contexto.getSession();
RolAplicacion roll =
(RolAplicacion)sessionServlet.getAttribute("rollGlobal");
// System.out.println("este es el separador para " + opcionPadre + "
-- " + separador);
try
{
String lsQueryHijos = " select * "+
" from opciones_aplicacion t,
" +
" opciones_roles b "
+
" where t.ID_MODULO_PADRE = '"
+ opcionPadre +"'"+
" and t.id_opcion_aplicacion
= b.id_opcion "+
" and b.estado = 'A' "+
" and b.id_rol = "+
roll.getIdRol() + " " +
" and t.estado = 'A'" +
" and t.tipo_opcion = 'MNU'"
+
" order by t.orden";
System.out.println(lsQueryHijos);
prepareStatementHijo = coneccion.prepareStatement(lsQueryHijos);
resultado = prepareStatementHijo.executeQuery();
while ( resultado.next() )
{
primero++;
if (primero == 1 )
{
// separador = separador + "|";
}
System.out.println("Entro a buscar a los hijos");
String descripcion = resultado.getString(3);
String pagina = resultado.getString(10);
String target = resultado.getString(6);
String titulo = resultado.getString(7);
String rutaAplicacion = resultado.getString(8);
System.out.println("Pagina: " + pagina );
System.out.println("Descripcion: " + descripcion );
CCLXXIV
System.out.println("Target: " + target );
System.out.println("Titulo: " + titulo );
System.out.println("Ruta: " + rutaAplicacion );
if ( pagina==null)
{
pagina="";
rutaAplicacion = "";
}
//contexto.getOut().println("[\""+ separador+ descripcion
+"\",\""+rutaAplicacion+pagina+"\", \"\", \"\", \"\", \""+titulo+"\",
\""+target+"\", \"\", \"\", ],");
contexto.getOut().println("[\""+ descripcion.trim()
+"\",\""+rutaAplicacion.trim()+pagina.trim()+"\", \"\", \"\", \"\",
\""+titulo.trim()+"\", \""+target.trim()+"\", \"\", \"\", ],");
//System.out.println("[\""+ separador+ descripcion
+"\",\""+rutaAplicacion+pagina+"\", \"\", \"\", \"\", \""+titulo+"\",
\""+target+"\", \"\", \"\", ],");
generaMenusHijos( resultado.getString(1),coneccion, contexto);
}
// separador = separador.substring(separador.length()-1);
}
catch (Exception t)
{
throw new Exception ("Error al generar el menu dinamico " +
t.getMessage());
}
finally
{
prepareStatementHijo.close();
resultado.close();
}
}
/*
*Metodo invocado desde el controlador de procesos
*llama internamente a metodo que genera el menu dinamico
**/
public void dibujarMenuDinamico (HashMap parametros)throws Exception
{
System.out.println("Voy a pintar --------------------------------
-------------");
PageContext out = (PageContext)parametros.get("contextoPagina");
// JspWriter out =
(JspWriter)parametros.get("contextoPagina");
System.out.println("Obtuve correctamente el objeto print");
Session sesionHibernate =
(Session)parametros.get("sessionHibernate");
//---------------------------------------------------------------
-
try
{
generarMenuDinamico(sesionHibernate, out);
//sesionHibernate.close();
}
catch (Exception e)
{
throw new Exception (e.toString());
}
finally
{
// sesionHibernate.close();
}
}
}
CCLXXV
GestorConfiguraciones.-
Permite el ingreso de los diferentes tipos de configuraciones que será posible
parametrizar en el sistema. Tales como alarmas y descargas.
package capaProcesos.procedimientos.skylinx.configuracion;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
public class GestorConfiguraciones extends Procedimiento
{
public GestorConfiguraciones ()
{
super ("Procesos de aplicacion");
}
public void registraConfiguracion ( Session psSesionServlet,
TipoConfiguracion
tipoConfiguracion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
psSesionServlet.save(tipoConfiguracion);
psSesionServlet.flush();
transaccion.commit();
CCLXXVI
}
catch (Exception j)
{
transaccion.rollback();
System.out.println( "Este es el mensaje " + j.getMessage()
);
throw new Exception ("Error al registrar la configuracion "
+ j.getMessage());
}
}
public void gestionRegistraConfiguracion (HashMap parametros )
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
registraConfiguracion (psSesionServlet,tipoConf);
}
//Para realizar la ejecucion del antivirus
public void registraParametroEjecucion ( Session psSesionServlet,
String
ipMaquina
) throws
Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
ParametrosGenerales pm = null;
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.claveParametro = '" +
ipMaquina + "' and t.estado = 'A' and
t.tipoParametro.idParametro = 3";
pm =
(ParametrosGenerales)psSesionServlet.createQuery(hql).uniqueResult();
String hlq2 = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as d where d.estado =
'A' and d.idParametro = 3 ";
if ( pm == null )
{
pm = new ParametrosGenerales();
TipoParametro t =
(TipoParametro)psSesionServlet.createQuery(hlq2).uniqueResult();
pm.setClaveParametro(ipMaquina);
pm.setEstado("A");
pm.setFechaRegistro(new Date());
pm.setObervacion("Se inserta desde el aplicativo Skylinx");
pm.setTipoParametro(t);
}
pm.setValor("S");
CCLXXVII
psSesionServlet.save(pm);
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
//transaccion.rollback();
System.out.println( "Este es el mensaje " + j.getMessage() );
throw new Exception ("Error al registrar la configuracion " + j.getMessage());
}
}
public void ejecutarAntivirus (HashMap parametros ) throws Exception
{
Session psSesionServlet = (Session)parametros.get("sessionHibernate");
String lsIp = (String)parametros.get("ls_ip");
//-----------------
registraParametroEjecucion (psSesionServlet,lsIp);
}
public void gestionAsignacionMaquina (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String lsIdUsuario = (String)parametros.get("idUsuario");
String lsIdMaquina = (String)parametros.get("idMaquina");
String lsObservacion = (String)parametros.get("observacion");
//-----------------
//registraParametroEjecucion (psSesionServlet,lsIp);
asignaMaquinaUsuario (
psSesionServlet,
lsIdUsuario,
lsIdMaquina,
lsObservacion
);
}
public void asignaMaquinaUsuario (
Session
psSesionServlet,
String lsIdUsuario,
String lsIdMaquina,
String
lsObservacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
Usuario user = null;
String hql = "from modelo.clasesPersistentes.usuario.Usuario as u
where u.idUsuario = " +
lsIdUsuario + " and u.estado = 'A'";
user = (Usuario)psSesionServlet.createQuery(hql).uniqueResult();
Maquina maquina = null;
CCLXXVIII
String hqlMaquina = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where m.idMaquina = " +
lsIdMaquina + " and m.estado = 'A'" ;
maquina =
(Maquina)psSesionServlet.createQuery(hqlMaquina).uniqueResult();
MaquinaUsuario maquinaUsuario = new MaquinaUsuario();
maquinaUsuario.setFecha(new Date());
maquinaUsuario.setMaquina(maquina);
maquinaUsuario.setObservacion(lsObservacion);
maquinaUsuario.setUsuario(user);
psSesionServlet.save(maquinaUsuario);
transaccion.commit();
}
catch (Exception e)
{
System.out.println( "Este es el mensaje " + e.getMessage() );
throw new Exception ("Error al realizar la asignacion del usuario
y la maquina " + e.getMessage());
}
}
public void gestionEliminaConfiguracion (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String lsIdConfiguracion =
(String)parametros.get("idConfiguracion");
//-----------------
//registraParametroEjecucion (psSesionServlet,lsIp);
try
{
eliminaConfiguracion (
psSesionServlet,
lsIdConfiguracion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Mensaje " + e );
}
}
public void eliminaConfiguracion (
Session
psSesionServlet,
String
lsIdConfiguracion
)throws Exception
{
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.TipoConfiguracion as u where
u.idTipoConfiguracion = " + lsIdConfiguracion;
CCLXXIX
TipoConfiguracion resultado =
(TipoConfiguracion)psSesionServlet.createQuery(hql).uniqueResult();
Set config = resultado.getConfiguracioneses();
if (config.size() > 0)
{
throw new Exception ("Error, se han realizado " +
config.size() + " creaciones de configuraciones del tipo " +
resultado.getDescripcion() + ", imposible realizar la eliminacion");
}
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
psSesionServlet.delete(resultado);
transaccion.commit();
}
catch (Exception e)
{
System.out.println( "Este es el mensaje " + e.getMessage()
);
throw new Exception ("Error al realizar la asignacion del
usuario y la maquina " + e.getMessage());
}
}
}
GestorConfiguracionesValor.-
Este componente nos permite la creación de configuraciones específicas como
por ejemplo hora y fecha en la que el servidor puede descargar de Internet la
definición, así como las configuraciones correspondientes a los clientes.
package capaProcesos.procedimientos.skylinx.configuracion;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
CCLXXX
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//Este componente nos permite la creación de configuraciones //específicas
como por ejemplo día y hora en la que el servidor //puede descargar de
Internet la definición, así como las //configuraciones correspondientes a los
clientes.
public class GestorConfiguracionesValor extends Procedimiento
{
public GestorConfiguracionesValor ()
{
super ("Procesos de aplicacion");
}
//Para registrar la configuracion
public void gestionConfiguracion (HashMap parametros ) throws
Exception
{
System.out.println("Entro al registro de configuracion");
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
Configuraciones configuracion =
(Configuraciones)parametros.get("Configuracion");
System.out.println("Paso el get de parametros");
//-----------------
registraConfiguracionValor (psSesionServlet,configuracion);
}
public void registraConfiguracionValor ( Session psSesionServlet,
Configuraciones
configuracion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
System.out.println("------------En la clase tomo esto " +
configuracion.getTipoConfiguracion().getDescripcion());
try
{
psSesionServlet.save(configuracion);
psSesionServlet.flush();
transaccion.commit();
}
catch (Exception j)
{
transaccion.rollback();
System.out.println( "Este es el mensaje " + j.getMessage()
);
throw new Exception ("Error al registrar la configuracion
en valores " + j.getMessage());
}
}
public void gestionAsignacionConfiguracion (HashMap parametros )
throws Exception
{
CCLXXXI
System.out.println("Entro al registro de configuracion");
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
//---------------------------------
String ls_idConfig=(String)parametros.get("idConfiguracion");
String ls_ipMaquina=(String)parametros.get("ipMaquina");
String ls_ruta=(String)parametros.get("ruta");
String ls_observacion =(String)parametros.get("observacion");
System.out.println("Paso el get de parametros");
//-----------------
try
{
registraAsignacionConfiguracion (
psSesionServlet,
ls_idConfig,
ls_ipMaquina,
ls_ruta,
ls_observacion
);
}
catch (Exception e)
{
throw new Exception ("Error al registrar la asignacion " +
e);
}
}
public void registraAsignacionConfiguracion (
Session
psSesionServlet,
String ls_idConfig,
String
ls_ipMaquina,
String ls_ruta,
String
ls_observacion
) throws Exception
{
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where m.estado = 'A' and
m.ipMaquina = '" +ls_ipMaquina.trim() +"'";
Maquina maquina =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
String hql2 = "from
modelo.modeloSkylinx.clasesPersistentes.Configuraciones as m where m.estado =
'A' and m.idConfiguraciones = " +ls_idConfig.trim();
Configuraciones configuracion =
(Configuraciones)psSesionServlet.createQuery(hql2).uniqueResult();
String hql3 = "from
modelo.modeloSkylinx.clasesPersistentes.ConfiguracionesMaquinas as d where
d.estado = 'A' and d.maquina.ipMaquina='" + ls_ipMaquina.trim() + "' and
d.configuraciones.idConfiguraciones="+ls_idConfig.trim();
CCLXXXII
ConfiguracionesMaquinas confiMaquina =
(ConfiguracionesMaquinas)psSesionServlet.createQuery(hql3).uniqueResult();
Transaction transaccion = psSesionServlet.beginTransaction();
ConfiguracionesMaquinas confiMaquinaIngresar = new
ConfiguracionesMaquinas();
try
{
if (confiMaquina== null)
{//Ingresar
confiMaquinaIngresar.setConfiguraciones(configuracion);
confiMaquinaIngresar.setEstado("A");
confiMaquinaIngresar.setFechaRegistro(new Date());
confiMaquinaIngresar.setMaquina(maquina);
confiMaquinaIngresar.setObservacion(ls_observacion.toUpperCase().trim());
confiMaquinaIngresar.setRutaAccionConfiguracion(ls_ruta.toUpperCase().trim());
psSesionServlet.save(confiMaquinaIngresar);
transaccion.commit();
}
else
{//Caso contrario enviar error
transaccion.rollback();
throw new Exception ("Ya se realizo la asignacion de
la conifguracion " + configuracion.getDescripcion() + " a la maquina " +
maquina.getNombrePc() );
}
}
catch (Exception p)
{
transaccion.rollback();
throw new Exception ("Error " + p);
}
}
}
GestorActivacionInactivacionMaquina.-
Permite la activación e inactivación de las máquinas que ya no forman parte de
la red, para que de esta forma las máquinas que en el futuro sean ingresadas a
la red reciban una dirección IP que no cree conflicto con el resto de usuraos de
la red
package capaProcesos.procedimientos.skylinx.gestionMaquinas;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
CCLXXXIII
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorActivacionInactivacionMaquina extends Procedimiento
{
public GestorActivacionInactivacionMaquina ()
{
super ("Procesos de aplicacion");
}
public void inactivaPc (
Session psSesionServlet,
String idMaquina,
String observacion
) throws Exception
{
System.out.println("Este es el id_maquina " + idMaquina);
System.out.println("Ingreso a la clase que inactiva la pc");
String hql = "from
modelo.modeloSkylinx.clasesPersistentes.Maquina as m where m.idMaquina = " +
idMaquina;
Maquina maquina =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
maquina.setEstado("I");
maquina.setObservacion(observacion);
Transaction transaccion = psSesionServlet.beginTransaction();
psSesionServlet.update(maquina);
transaccion.commit();
}
public void gestionInactivaMaquinas (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String idMaquina = (String)parametros.get("id_maquina");
String observacion = (String)parametros.get("observacion");
//TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
try
{
CCLXXXIV
inactivaPc (psSesionServlet, idMaquina, observacion);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar la maquina " +
e.getMessage());
}
}
GestorMaquinas.-
Este componente permite realizar el reinicio del servicio de named para
refrescar el archivo de Zonas del DNS además realiza la gestión de verificación
si una PC esta encendida o no; para, como ya hemos mencionado en capítulos
anteriores realizar tareas especificas sobre las PC encendidas.
package capaProcesos.procedimientos.skylinx.gestionMaquinas; import org.hibernate.*;
import capaProcesos.procedimientos.skylinx.ftp.FTPUtil;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorMaquinas extends Procedimiento
{
public GestorMaquinas ()
{
super ("Procesos de aplicacion");
}
public void gestionarEstadosMaquinas (
Session psSesionServlet
) throws Exception
{
/*
*Para realizar el apagado de todas las maquinas
**/
CCLXXXV
try
{
Process resultadoRestar = Runtime.getRuntime().exec("
service named restart " );
//resultadoRestar.destroy();
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception ("Error resetar el servicio named " +
e.getMessage());
}
try
{
apagarMaquinas (psSesionServlet);
}
catch (Exception e1)
{
e1.printStackTrace();
throw new Exception ("Error al realizar el apagado de las
maquinas " + e1.getMessage());
}
String hqlTipoMaquina = " from
modelo.modeloSkylinx.clasesPersistentes.TipoMaquina as tipo where tipo.estado
= 'A' and tipo.idTipoMaquina = 1";
TipoMaquina tipoActual =
(TipoMaquina)psSesionServlet.createQuery(hqlTipoMaquina).uniqueResult();
psSesionServlet.flush();
String hqlTipoMaquinaServer = " from
modelo.modeloSkylinx.clasesPersistentes.TipoMaquina as tipo where tipo.estado
= 'A' and tipo.idTipoMaquina = 2";
TipoMaquina tipoActualServer =
(TipoMaquina)psSesionServlet.createQuery(hqlTipoMaquinaServer).uniqueResult();
psSesionServlet.flush();
System.out.println("descripcion " +
tipoActualServer.getDescripcion() );
TipoMaquina tipoActualInsertar = null;
String archivoLog =
"/var/named/chroot/var/named/grupo5.com.zone";
System.out.println(archivoLog);
DataInputStream flujoTeclado = null;
java.io.FileInputStream archivo= new FileInputStream(archivoLog);
String valorLinea = " ";
String nombrePc = " ";
String ipPc = " ";
int bandera = 0;
flujoTeclado = new DataInputStream(archivo);
//Para control del commit
//realizarPingMaquinas(psSesionServlet);
/*****************
*
*/
// Cargar los tres tipos de parametros
String hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
CCLXXXVI
tipo.estado = 'A' and tipo.idParametro = 3";
TipoParametro tpEjcutaAntivirus =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueResult();
//--------
hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 4";
TipoParametro tpejecutaRutaEjecucion =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueResult();
//-------
hqlTipoParametro = " from
modelo.modeloSkylinx.clasesPersistentes.TipoParametro as tipo where
tipo.estado = 'A' and tipo.idParametro = 5";
TipoParametro tpejecutaRutaLog =
(TipoParametro)psSesionServlet.createQuery(hqlTipoParametro).uniqueResult();
ParametrosGenerales pEjcutaAntivirus = new ParametrosGenerales();
pEjcutaAntivirus.setEstado("A");
pEjcutaAntivirus.setFechaRegistro(new Date());
pEjcutaAntivirus.setObervacion("Registra si se debe ejecutar el
antivirus o no");
pEjcutaAntivirus.setTipoParametro(tpEjcutaAntivirus);
pEjcutaAntivirus.setValor("N");
ParametrosGenerales pRutaEjecucionAntivirus = new
ParametrosGenerales();
pRutaEjecucionAntivirus.setEstado("A");
pRutaEjecucionAntivirus.setFechaRegistro(new Date());
pRutaEjecucionAntivirus.setObervacion("Registra la ruta de
ejecucion del antivirus");
pRutaEjecucionAntivirus.setTipoParametro(tpejecutaRutaEjecucion);
pRutaEjecucionAntivirus.setValor("C:\\\\Archivos de
programa\\\\ClamWin\\\\bin\\\\clamscan.exe --database=\\\"C:\\\\Documents and
Settings\\\\All Users\\\\.clamwin\\\\db\\\" --recursive C:\\\\virus -l
\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\log\\\\ClamScanLog.txt\\\" --remove");
ParametrosGenerales pRutaLog = new ParametrosGenerales();
pRutaLog.setEstado("A");
pRutaLog.setFechaRegistro(new Date());
pRutaLog.setObervacion("Registra la ruta del log");
pRutaLog.setTipoParametro(tpejecutaRutaLog);
pRutaLog.setValor("C:\\\\ClamWin\\\\ClamWin\\\\log\\\\ClamScanLog.tx
t");
//Faltan las claves del paramatro
ParametrosGenerales pVerificacion = new ParametrosGenerales();
String lsQueryVerificaParametro = "";//"from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 3 and t.claveParametro = ";
/*
*Fin
* */
/*********************
*
*/
do
{
valorLinea = flujoTeclado.readLine();
if ( valorLinea != null)
CCLXXXVII
{
if ( valorLinea.indexOf("$TTL") != -1 )
{
//Si encuentra
bandera++;
}
if ( bandera == 2)
{
/*valorLinea = flujoTeclado.readLine();*/
valorLinea = flujoTeclado.readLine();
if (valorLinea != null)
{
if ( valorLinea.indexOf("$TTL") != -1)
{
//return;
//servidor
valorLinea = flujoTeclado.readLine();
tipoActualInsertar = tipoActualServer;
}
else
{
tipoActualInsertar = tipoActual;
}
if ( valorLinea.toUpperCase().indexOf("WWW")
!= -1)
{
return;
}
else
{
String [] valores =
valorLinea.split("A");
/*valorLinea =
valorLinea.replaceAll("\t", " ");
valorLinea = valorLinea.trim();*/
nombrePc = valores[0].replaceAll("\t",
" ") .trim();
ipPc = valores[1].replaceAll("\t",
" ") .trim();
System.out.println("Esta es la linea
del archivo " + valorLinea);
System.out.println("Nombre pc " +
nombrePc);
System.out.println("IP pc " + ipPc);
if
(nombrePc.toUpperCase().trim().equals("SERVER"))
{
tipoActualInsertar =
tipoActualServer;
}
else
{
tipoActualInsertar = tipoActual;
}
if ( ipPc.trim().equals("192.168.1.1")
)
{
tipoActualInsertar =
tipoActualServer;
CCLXXXVIII
}
else
{
tipoActualInsertar = tipoActual;
}
Maquina maquinaActual = new Maquina();
maquinaActual.setDescripcionPc(nombrePc.toUpperCase());
maquinaActual.setEstado("A");
maquinaActual.setEstadoOperacion("AP");
maquinaActual.setFechaRegistro(new
Date());
maquinaActual.setIpMaquina(ipPc);
maquinaActual.setNombrePc(nombrePc.toUpperCase());
maquinaActual.setObservacion("REALIZACION DE ACTULIZACION O
INSERCION AUTOMATICA DESDE EL ARCHIVO DNS " + new Date() );
maquinaActual.setTipoMaquina(tipoActualInsertar);
System.out.println("Se hara la
insercion");
Transaction transaccion =
psSesionServlet.beginTransaction();
//Para verificar si la pc se encuentra
en la base
String hqlVerificaMaquina = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A' and maquina.nombrePc = '"+ nombrePc.toUpperCase() +"' and
maquina.ipMaquina = '"+ipPc+"'";
Maquina maquinaVerifica =
(Maquina)psSesionServlet.createQuery(hqlVerificaMaquina).uniqueResult();
if ( maquinaVerifica == null)
{
System.out.println("Se
inserto");
//maquinaVerifica.setFechaRegistro(new Date());
System.out.println("paso el
seteo de fecha");
psSesionServlet.save(maquinaActual);
System.out.println("paso el
.save");
}
else
{
System.out.println("Se
actualizo");
maquinaVerifica.setEstadoOperacion("AP");
//maquinaVerifica.setTipoMaquina(tipoMaquina)
maquinaVerifica.setFechaRegistro(new Date());
maquinaVerifica.setTipoMaquina(tipoActualInsertar);
psSesionServlet.update(maquinaVerifica);
//psSesionServlet.delete(maquinaVerifica);
CCLXXXIX
System.out.println("Se actualizo
el estado operativo");
}
/*
* --------------------------------------
-------------------------------------
* */
// La ip no cambia, por eso los valores de
los paramtros deben ir aqui
//Listo
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 3 and t.claveParametro = '" +
ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).uniqueResul
t();
if (pVerificacion == null)
{
//inserta
pEjcutaAntivirus.setClaveParametro(ipPc.trim());
psSesionServlet.save(pEjcutaAntivirus);
}
else
{
//actualiza
pVerificacion.setValor("N");
psSesionServlet.update(pVerificacion);
}
hqlTipoParametro =
lsQueryVerificaParametro = "from
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 4 and t.claveParametro = '" +
ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).uniqueResul
t();
if (pVerificacion == null)
{
//inserta
pRutaEjecucionAntivirus.setClaveParametro(ipPc.trim());
psSesionServlet.save(pRutaEjecucionAntivirus);
}
else
{
//actualiza
pVerificacion.setValor("C:\\\\Archivos de
programa\\\\ClamWin\\\\bin\\\\clamscan.exe --database=\\\"C:\\\\Documents and
Settings\\\\All Users\\\\.clamwin\\\\db\\\" --recursive C:\\\\virus -l
\\\"C:\\\\Documents and Settings\\\\All
Users\\\\.clamwin\\\\log\\\\ClamScanLog.txt\\\" --remove");
psSesionServlet.update(pVerificacion);
}
hqlTipoParametro =
lsQueryVerificaParametro = "from
CCXC
modelo.modeloSkylinx.clasesPersistentes.ParametrosGenerales as t where
t.estado = 'A' and t.tipoParametro.idParametro = 5 and t.claveParametro = '" +
ipPc.trim()+ "'";
pVerificacion =
(ParametrosGenerales)psSesionServlet.createQuery(hqlTipoParametro).uniqueResul
t();
if (pVerificacion == null)
{
//inserta
pRutaLog.setClaveParametro(ipPc.trim());
psSesionServlet.save(pRutaLog);
}
else
{
//actualiza
pVerificacion.setValor("C:\\\\ClamWin\\\\ClamWin\\\\log\\\\ClamScanL
og.txt");
psSesionServlet.update(pVerificacion);
}
/*
* ------------------------------------
----------------------------------------
* */
System.out.println("Voy a realizar el
commit");
transaccion.commit();
System.out.println("Se realizo el
commit");
}
}
}
}
}while ( valorLinea !=null);
flujoTeclado.close();
archivo.close();
}
public void gestionRegistraMaquinas (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
//TipoConfiguracion tipoConf =
(TipoConfiguracion)parametros.get("tipoConfi");
//-----------------
try
{
gestionarEstadosMaquinas (psSesionServlet);
}
catch (Exception e)
{
e.printStackTrace();
CCXCI
throw new Exception("Error " + e.getMessage());
}
System.out.println("Esto es para hacer el ping");
this.realizarPingMaquinas(psSesionServlet);
System.out.println("se termino el ping es para hacer el ping");
}
public void apagarMaquinas ( Session psSesionServlet ) throws
Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A'";
Iterator consultaMasiva=
psSesionServlet.createQuery(hql).iterate();
psSesionServlet.flush();
Transaction transaccion = psSesionServlet.beginTransaction();
while ( consultaMasiva.hasNext())
{
Maquina maquiaAApagar = (Maquina)consultaMasiva.next();
maquiaAApagar.setEstadoOperacion("AP");
maquiaAApagar.setObservacion("Se apaga la maquina desde el
aplicativo SkyLinx");
psSesionServlet.update(maquiaAApagar);
}
transaccion.commit();
}
public void realizarPingMaquinas ( Session psSesionServlet ) throws
Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A'";
int contadorLineas = 0;
Iterator consultaMasiva=
psSesionServlet.createQuery(hql).iterate();
psSesionServlet.flush();
//PingICMP ping = new PingICMP();
String respuesta = "";
DataInputStream flujoTeclado = null;
DataInputStream flujoTeclado2 = null;
String informacion = null;
String informacion2 = null;
CCXCII
String buscaPing = "";
Transaction transaccion = psSesionServlet.beginTransaction();
while ( consultaMasiva.hasNext())
{
buscaPing = "ps -edaf | grep ping | grep ";// 192.168.1.254
contadorLineas = 0;
respuesta = "";
informacion = "";
Maquina maquiaAApagar = (Maquina)consultaMasiva.next();
System.out.println("Se hara el ping de la maquina " +
maquiaAApagar.getIpMaquina().trim());
Process resultado = Runtime.getRuntime().exec(" ping " +
maquiaAApagar.getIpMaquina().trim() );
flujoTeclado = new DataInputStream
(resultado.getInputStream());
while ( contadorLineas < 3)
{
informacion = flujoTeclado.readLine();
respuesta = respuesta + informacion + " ";
contadorLineas ++;
}
//flujoTeclado.close();
System.out.println("************************************************
******");
System.out.println("informacion encontrada " + respuesta);
System.out.println("************************************************
******");
respuesta = respuesta.toUpperCase();
if ( respuesta.indexOf("UNREACHABLE")!=-1 ||
respuesta.indexOf("NULL")!=-1 )
{
maquiaAApagar.setObservacion(respuesta);
respuesta = "";
maquiaAApagar.setEstadoOperacion("AP");
}
else
{
maquiaAApagar.setObservacion(respuesta);
respuesta = "";
maquiaAApagar.setEstadoOperacion("EN");
System.out.print("Encontro por lo menos una maquina
encendida");
}
psSesionServlet.update(maquiaAApagar);
//resultado.destroy();
Process resultado2 = Runtime.getRuntime().exec(buscaPing +
" " + maquiaAApagar.getIpMaquina().trim() + " | awk '{print $2}'" );
System.out.print(buscaPing + " " +
CCXCIII
maquiaAApagar.getIpMaquina().trim() + "|awk '{print $2}'" );
//********************************************
System.out.println("AQUI ESTA RESCULTADO 2");
System.out.println(resultado2);
//********************************************
flujoTeclado2 = new DataInputStream
(resultado2.getInputStream());
informacion2 = flujoTeclado.readLine();
System.out.println("p id " + informacion2);
//resultado2.destroy();
Process resultado3 = Runtime.getRuntime().exec("kill -9 "
+informacion2);
System.out.println("kill -9 " +informacion2);
}
transaccion.commit();
}
public void gestionaRegistroDescargas(HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String ipCliente =
(String)parametros.get("ipCliente");
String ls_esServer =
(String)parametros.get("esServer");
try
{
FTPUtil.beginTransactionFtp(ipCliente, ls_esServer);
registraDescarga(
psSesionServlet,
ipCliente
);
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception ("Error al enviar la actualizacion "
+ e);
}
}
public void registraDescarga (
Session
psSesionServlet,
String ipCliente
)throws Exception
{
String hql = " from
modelo.modeloSkylinx.clasesPersistentes.Maquina as maquina where
maquina.estado = 'A' and maquina.ipMaquina= '" + ipCliente.trim()+"'";
Maquina maquina1 =
(Maquina)psSesionServlet.createQuery(hql).uniqueResult();
Descargas decarga = new Descargas ();
decarga.setMaquina(maquina1);
CCXCIV
decarga.setEstado("A");
decarga.setFechaDescarga(new Date());
decarga.setNombre("DAILY.CVD - MAIN.CVD");
decarga.setTamanio("INFEFINIDO");
decarga.setObservacion("Descarga Exitosa, realizada desde SkyLinx
- Usuario Administrador");
Transaction t = psSesionServlet.beginTransaction();
try
{
psSesionServlet.save(decarga);
t.commit();
}
catch (Exception e)
{
e.printStackTrace();
t.rollback();
throw new Exception ("Error al registrar la descarga " +
e);
}
}
}
GestorUsuarios .-
Este componente nos permite realizar el ingreso de los usuarios a la base de
datos, además permite la asignación de roles a los usuarios, este rol debe ser
asignado a cada usuario para poder hacer uso de su sesión.
package capaProcesos.procedimientos.skylinx.gestionUsuarios;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.Connection;
import java.sql.PreparedStatement;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
CCXCV
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorUsuarios extends Procedimiento
{
public GestorUsuarios ()
{
super ("Procesos de aplicacion");
}
//Para realizar el ingreso de usuarios
public void gestionIngresoUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_nombres=(String)parametros.get("nombres");
String ls_apellidos=(String)parametros.get("apellidos");
String ls_ci=(String)parametros.get("ci");
String ls_sexo=(String)parametros.get("sexo");
String ls_sucursal=(String)parametros.get("sucursal");
String ls_ciudad=(String)parametros.get("ciudad");
String ls_direccion=(String)parametros.get("direccion");
String
ls_telefonoConvencional=(String)parametros.get("telefonoCasa");
String ls_celular=(String)parametros.get("celular");
String ls_correo=(String)parametros.get("correo");
String ls_observacion=(String)parametros.get("observacion");
byte[] lbA_foto=(byte[])parametros.get("archivoFoto");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
ingresaUsuario(
psSesionServlet,
ls_idUser,
ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_sucursal,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_correo,
ls_observacion,
lbA_foto
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al registrar el usuario " +
e.getMessage());
}
CCXCVI
}
public void ingresaUsuario (
Session psSesionServlet,
String ls_idUser,
String ls_nombres,
String ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_sucursal,
String ls_ciudad,
String ls_direccion,
String
ls_telefonoConvencional,
String ls_celular,
String ls_correo,
String ls_observacion,
byte[] lbA_foto
) throws Exception
{
System.out.println("Entro en el proceso de ingreso de usuario");
String hqlSucursal = " from
modelo.clasesPersistentes.sucursales.Suscursales as suc where suc.estado = 'A'
and suc.idNumericoSucursal = " + ls_sucursal;
Suscursales sucursal =
(Suscursales)psSesionServlet.createQuery(hqlSucursal).uniqueResult();
//Usuario
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.usuario ='" + ls_idUser.toUpperCase() + "'";
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
if (usuario != null)
{
throw new Exception ("Error al registrar el usuario, ya
existe un usuario con el nombre " + ls_idUser.toUpperCase());
}
String hqlPersona = " from
modelo.clasesPersistentes.personas.Persona as person where person.estado = 'A'
and person.valorIdentificacion ='" + ls_ci + "'";
Persona person =
(Persona)psSesionServlet.createQuery(hqlPersona).uniqueResult();
if (person != null)
{
throw new Exception ("Error al registrar el usuario, ya
existe una persona registrada con la cedula " + ls_ci);
}
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
//Persona
Persona persona = new Persona();
persona.setApellido(ls_apellidos.toUpperCase());
if (lbA_foto !=null)
{
persona.setArchivoFoto(""+ls_idUser.toUpperCase() + ".jpg");
}
//persona.setArchivosPersonases(set);
persona.setCelular(ls_celular);
CCXCVII
persona.setCiudad(ls_ciudad.toUpperCase());
//persona.setClienteses(set);
persona.setDireccion(ls_direccion.toUpperCase());
persona.setEmail(ls_correo.toUpperCase());
//persona.setEmpleadoses(set);
persona.setEstado("A");
//persona.setFechaNacimiento(date)
persona.setFechaRegistro(new Date());
//persona.setIdPersona(number)
persona.setNombre(ls_nombres.toUpperCase());
persona.setSexo(ls_sexo.toUpperCase());
persona.setTelefonoCasa(ls_telefonoConvencional);
persona.setTipoPersona("ADU");
//persona.setTipoSangre()
//persona.setUsuarioses()
persona.setValorIdentificacion(ls_ci);
Long idPersona =
(Long)psSesionServlet.save(persona);
persona.setIdPersona(idPersona);
//Usuario
Usuario user = new Usuario();
user.setClave(Encriptador.encriptar(ls_ci));
user.setEstado("A");
user.setFechaCreacion(new Date());
user.setObservacion(ls_observacion.toUpperCase());
user.setPersona(persona);
//user.setRolesUsuariosAplicacions(set);
user.setSuscursales(sucursal);
user.setUsuario(ls_idUser.toUpperCase());
psSesionServlet.save(user);
System.out.println("Se guardo la
persona y el usuario");
//Archivo
if (lbA_foto !=null)
{
System.out.println("Entro al proceso
de guardar archivo");
ArchivosPersonas archivo = new
ArchivosPersonas();
archivo.setClaveArchivo("FOTO");
archivo.setEstado("A");
archivo.setFechaRegistro(new
Date());
archivo.setObservacion("REGISTRO
FOTO USUARIO " + ls_observacion.toUpperCase());
archivo.setPersonas(persona);
archivo.setValorArchivo(lbA_foto);
psSesionServlet.save(archivo);
//Debo de colocar la foto en una
ruta fisica
CCXCVIII
FileOutputStream fotoActual =
new FileOutputStream( new File ("/tomcat-
5.0.28/webapps/SkyLinx/imagenes/fotosUsuarios/" + ls_idUser.toUpperCase() +
".jpg"));
fotoActual.write(lbA_foto);
fotoActual.flush();
fotoActual.close();
}
/* else
{
throw new Exception ("Error,
debe ingresar la foto del usuario");
}*/
psSesionServlet.flush();
psSesionServlet.clear();
transaccion.commit();
}
catch (Exception e)
{
transaccion.rollback();
e.printStackTrace();
throw new Exception ("Error al realizar el ingreso de
usuario " + e.getMessage());
}
}
//Asignacion de rol
public void asignaRolUsuario(
Session psSesionServlet,
String ls_idUser,
String ls_idrol,
String ls_observacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario =" + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
System.out.println("Cargo el usuario");
String hqlRol = " from
modelo.clasesPersistentes.rolesAplicacion.RolAplicacion as rol where
rol.estado = 'A' and rol.idRol =" + ls_idrol;
RolAplicacion rol =
(RolAplicacion)psSesionServlet.createQuery(hqlRol).uniqueResult();
System.out.println("Cargo el rol");
RolesUsuariosAplicacion rolUsuario = new
RolesUsuariosAplicacion();
RolesUsuariosAplicacionId rolUsuarioId = new
RolesUsuariosAplicacionId();
CCXCIX
rolUsuarioId.setIdRolAplicacion(rol.getIdRol());
rolUsuarioId.setIdUsuario(usuario.getIdUsuario());
rolUsuario.setEstado("A");
rolUsuario.setFechaCreacion(new Date());
rolUsuario.setObservacion(ls_observacion.toUpperCase());
rolUsuario.setRolesAplicacion(rol);
rolUsuario.setUsuarios(usuario);
rolUsuario.setId(rolUsuarioId);
psSesionServlet.save(rolUsuario);
transaccion.commit();
}
catch (Exception e)
{
transaccion.rollback();
e.printStackTrace();
throw new Exception ("Error al realizar la asignacion del
rol al usuario " + e.getMessage());
}
}
//Para realizar el ingreso de usuarios
public void gestionRolUsuario (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_idRol=(String)parametros.get("idRol");
String ls_observacion=(String)parametros.get("observacion");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de asignacion
*************************************");
asignaRolUsuario(
psSesionServlet,
ls_idUser,
ls_idRol,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al asignar el rol al usuario "
+ e.getMessage());
}
}
//Actualizar usuario
CCC
public void gestionActualizaUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_nombres=(String)parametros.get("nombres");
String ls_apellidos=(String)parametros.get("apellidos");
String ls_ci=(String)parametros.get("ci");
String ls_sexo=(String)parametros.get("sexo");
String ls_sucursal=(String)parametros.get("sucursal");
String ls_ciudad=(String)parametros.get("ciudad");
String ls_direccion=(String)parametros.get("direccion");
String
ls_telefonoConvencional=(String)parametros.get("telefonoCasa");
String ls_celular=(String)parametros.get("celular");
//String ls_correo=(String)parametros.get("correo");
String ls_observacion=(String)parametros.get("observacion");
byte[] lbA_foto=(byte[])parametros.get("archivoFoto");
String
ls_numericoUsuario=(String)parametros.get("numericoUsuario");
String
ls_numericoPersona=(String)parametros.get("numericoPersona");
Transaction transaccion = null;
try
{
psSesionServlet.flush();
psSesionServlet.clear();
transaccion = psSesionServlet.beginTransaction();
//inactivaPc (psSesionServlet, idMaquina, observacion);
actualizaUsuario(
psSesionServlet,
ls_idUser,
ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_sucursal,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_observacion,
lbA_foto,
ls_numericoUsuario,
ls_numericoPersona
);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
CCCI
throw new Exception ("Error al actualizar el usuario " +
e.getMessage());
}
}
public void actualizaPersona ( String ls_nombres,
String
ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_ciudad,
String
ls_direccion,
String
ls_telefonoConvencional,
String ls_celular,
String
ls_observacion,
String
ls_numericoPersona,
Session
psSesionServlet,
byte[] lbA_foto,
String ls_idUser,
String
ls_sucursal,
String
ls_numericoUsuario
)throws Exception
{
System.out.println("Entro en el proceso de ingreso de usuario");
String hqlSucursal = " from
modelo.clasesPersistentes.sucursales.Suscursales as suc where suc.estado = 'A'
and suc.idNumericoSucursal = " + ls_sucursal;
Suscursales sucursal =
(Suscursales)psSesionServlet.createQuery(hqlSucursal).uniqueResult();
//----------------------
//Usuario
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario <>"+ls_numericoUsuario+" and user.usuario ='" +
ls_idUser.toUpperCase() + "'";
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
if (usuario != null)
{
throw new Exception ("Error al registrar el usuario, ya
existe un usuario con el nombre " + ls_idUser.toUpperCase());
}
///persona
String hqlPersona = " from
modelo.clasesPersistentes.personas.Persona as person where person.estado = 'A'
and person.idPersona <> " +ls_numericoPersona+ " and
person.valorIdentificacion ='" + ls_ci + "'";
Persona person =
(Persona)psSesionServlet.createQuery(hqlPersona).uniqueResult();
SimpleDateFormat lsdFormateador = new
CCCII
SimpleDateFormat("yyyy/MM/dd");
if (person != null)
{
throw new Exception ("Error al registrar el usuario, ya
existe una persona registrada con la cedula " + ls_ci);
}
//----------------------
Persona persona = new Persona();
persona.setApellido(ls_apellidos.toUpperCase());
if (lbA_foto !=null)
{
persona.setArchivoFoto(""+ls_idUser.toUpperCase().trim() +
".jpg");
}
persona.setCelular(ls_celular);
persona.setCiudad(ls_ciudad.toUpperCase());
persona.setDireccion(ls_direccion.toUpperCase());
persona.setEstado("A");
persona.setFechaRegistro(new Date());
persona.setNombre(ls_nombres.toUpperCase());
persona.setSexo(ls_sexo.toUpperCase());
persona.setTelefonoCasa(ls_telefonoConvencional);
persona.setTipoPersona("ADU");
persona.setValorIdentificacion(ls_ci);
**/
System.out.println("Voya a ejecutar la sentencia de la
persona");
String lsUpdate = " update personas "+
" set valor_identificacion = '" +
ls_ci.trim() + "', " +
" nombre = '" +
ls_nombres.toUpperCase().trim() + "'," +
" apellido = '" +
ls_apellidos.toUpperCase().trim() + "'," +
" ciudad = '" +
ls_ciudad.toUpperCase().trim() + "'," +
" direccion = '" +
ls_direccion.toUpperCase().trim() + "'," +
" telefono_casa = '" +
ls_telefonoConvencional.trim() + "'," +
" celular = '" +
ls_celular.toUpperCase().trim() + "'," +
// " email = '" +
persona.getEmail().toUpperCase().trim() + "'," +
" estado = '" + "A" + "'," +
" sexo = '" +
ls_sexo.toUpperCase().trim() + "'," +
" archivo_foto = '" +
ls_idUser.toUpperCase().trim() + ".jpg" + "'" +
" where id_persona = "+
ls_numericoPersona.trim() + " " +
" and estado = 'A' ";
Connection conexion = psSesionServlet.connection();
System.out.println("Esta es la sentencia slq " + lsUpdate);
CCCIII
PreparedStatement prepareStatementOpciones = null;
prepareStatementOpciones = conexion.prepareStatement(lsUpdate);
prepareStatementOpciones.execute();
Usuario user = new Usuario();
user.setClave(Encriptador.encriptar(persona.getValorIdentificacion()
.trim()));
user.setEstado("A");
user.setFechaCreacion(new Date());
user.setObservacion(ls_observacion.toUpperCase());
user.setPersona(persona);
user.setSuscursales(sucursal);
user.setUsuario(ls_idUser.toUpperCase());
String lsUpdate2 = " update usuarios "+
" set usuario = '" +
user.getUsuario().toUpperCase().trim() + "', " +
" clave = '" + user.getClave().trim() +
"'," +
" estado = '" +
user.getEstado().toUpperCase().trim() + "'," +
" observacion = '" + "Actualizacion De
Usuarios " + new Date() + "'," +
" id_sucursal = " +
sucursal.getIdNumericoSucursal() + "," +
" id_persona = "
+ls_numericoPersona.trim()+ "" +
" where id_usuario = "+
ls_numericoUsuario.trim() + " " +
" and estado = 'A' ";
System.out.println("Esta es la sentencia slq " + lsUpdate2);
PreparedStatement prepareStatementOpciones2 = null;
prepareStatementOpciones2 = conexion.prepareStatement(lsUpdate2);
prepareStatementOpciones2.execute();
conexion.commit();
conexion.close();
//return persona;
}
public void actualizaArchivoFoto (Persona persona,
Session psSesionServlet,
String ls_observacion,
byte[] lbA_foto,
String ls_idUser ) throws
Exception
{
if (lbA_foto !=null)
{
System.out.println("Entro al proceso de guardar archivo");
ArchivosPersonas archivo = new ArchivosPersonas();
archivo.setClaveArchivo("FOTO");
archivo.setEstado("A");
archivo.setFechaRegistro(new Date());
archivo.setObservacion("REGISTRO FOTO USUARIO " +
ls_observacion.toUpperCase());
CCCIV
archivo.setPersonas(persona);
archivo.setValorArchivo(lbA_foto);
// psSesionServlet.save(archivo);
FileOutputStream fotoActual = new FileOutputStream( new File
("/tomcat-5.0.28/webapps/SkyLinx/imagenes/fotosUsuarios/" +
ls_idUser.toUpperCase().trim() + ".jpg"));
fotoActual.write(lbA_foto);
fotoActual.flush();
fotoActual.close();
}
}
public void actualizaUsuario(
Session psSesionServlet,
String ls_idUser,
String ls_nombres,
String ls_apellidos,
String ls_ci,
String ls_sexo,
String ls_sucursal,
String ls_ciudad,
String ls_direccion,
String ls_telefonoConvencional,
String ls_celular,
String ls_observacion,
byte[] lbA_foto,
String ls_numericoUsuario,
String ls_numericoPersona
) throws Exception
{
Persona persona = null;
try
{
actualizaPersona ( ls_nombres,
ls_apellidos,
ls_ci,
ls_sexo,
ls_ciudad,
ls_direccion,
ls_telefonoConvencional,
ls_celular,
ls_observacion,
ls_numericoPersona,
psSesionServlet,
lbA_foto,
ls_idUser,
ls_sucursal,
ls_numericoUsuario
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception("Error al actualizar la persona - " + e);
}
CCCV
try
{
actualizaArchivoFoto ( persona,
psSesionServlet,
ls_observacion,
lbA_foto,
ls_idUser
) ;
}
catch (Exception g)
{
throw new Exception("Error al ingresa la foto de la persona - " +
g);
}
}
}
GestorMantenimientoUsuario.-
Este componente nos permite realizar tareas de mantenimiento a los usuarios
existentes en la base de datos, tareas como: Inactivación de Usuarios, reseteo
de la clave de usuarios que no han ingresado sesión.
package capaProcesos.procedimientos.skylinx.gestionUsuarios;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
CCCVI
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
//import estadisticas.icmp.PingICMP;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import modelo.modeloSkylinx.clasesPersistentes.Maquina;
public class GestorMantenimientoUsuario extends Procedimiento
{
public GestorMantenimientoUsuario ()
{
super ("Procesos de aplicacion");
}
public void inactivaUsuario (
Session psSesionServlet,
String ls_idUser,
String ls_observacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario = " + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
usuario.setEstado("I");
usuario.setObservacion(ls_observacion.toUpperCase());
psSesionServlet.update(usuario);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la inactivacion del
usuario " + e.getMessage());
}
}
public void gestionInactivaUsuario (HashMap parametros ) throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_observacion=(String)parametros.get("observacion");
CCCVII
System.out.println("Entro a llamar al proceso de inactivacion
*************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
inactivaUsuario(
psSesionServlet,
ls_idUser,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar al usuario " +
e.getMessage());
}
}
public void reseteaClaveUsuario (
Session psSesionServlet,
String ls_idUser,
String ls_observacion
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String nuevaClave = "12345678";
String hqlUsuario = " from
modelo.clasesPersistentes.usuario.Usuario as user where user.estado = 'A' and
user.idUsuario = " + ls_idUser;
Usuario usuario =
(Usuario)psSesionServlet.createQuery(hqlUsuario).uniqueResult();
usuario.setFechaPriSesion(null);
usuario.setObservacion(ls_observacion.toUpperCase());
usuario.setClave(Encriptador.encriptar(nuevaClave));
psSesionServlet.update(usuario);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
transaccion.rollback();
throw new Exception ("Error al realizar la inactivacion del
usuario " + e.getMessage());
}
}
public void gestionResetaClaveUsuario (HashMap parametros ) throws
CCCVIII
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
String ls_observacion=(String)parametros.get("observacion");
System.out.println("Entro a llamar al proceso de inactivacion
*************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
reseteaClaveUsuario(
psSesionServlet,
ls_idUser,
ls_observacion
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar al usuario " +
e.getMessage());
}
}
//---------------
public void eliminacionRolUsuario (
Session psSesionServlet,
String ls_idUser
) throws Exception
{
Transaction transaccion = psSesionServlet.beginTransaction();
try
{
String hqlRolUsuario = " from
modelo.clasesPersistentes.rolesUsuariosAplicacion.RolesUsuariosAplicacion as
rolUser where rolUser.estado = 'A' and rolUser.usuarios.idUsuario = " +
ls_idUser;
RolesUsuariosAplicacion rolUser =
(RolesUsuariosAplicacion)psSesionServlet.createQuery(hqlRolUsuario).uniqueResu
lt();
psSesionServlet.delete(rolUser);
transaccion.commit();
}
catch (Exception e)
{
e.printStackTrace();
CCCIX
transaccion.rollback();
throw new Exception ("Error al realizar la inactivacion del
usuario " + e.getMessage());
}
}
public void gestionEliminaRolUsuario (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
String ls_idUser=(String)parametros.get("idUsuario");
System.out.println("Entro a llamar al proceso de inactivacion
*************************************");
try
{
//inactivaPc (psSesionServlet, idMaquina, observacion);
System.out.println("Entro a llamar al proceso de
inactivacion *************************************");
eliminacionRolUsuario (
psSesionServlet,
ls_idUser
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al inactivar el rol del usuario
" + e.getMessage());
}
}
//---------------
}
SendMail.-
Componente que nos permite el envió de E-mail desde nuestra aplicación hacia
un destino especifico dentro de la red LAN.
CCCX
package capaProcesos.procedimientos.skylinx.javaMailCls;
import java.io.*;
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date;
import java.util.Vector;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendMail {
public static String send(String arg) {
Vector varg=new Vector();
String ls_cadena="";
boolean space=false;
arg=arg.trim();
for(int i=0; i<arg.length(); i++) {
if(arg.charAt(i)=='"') { space=!space; continue; }
if(arg.charAt(i)=='\\') {
if(i+1<arg.length()) {
if(arg.charAt(i+1)=='"') i++;
}
}
if(arg.charAt(i)==' ') {
if(!space) {
varg.add(ls_cadena);
ls_cadena="";
continue;
}
}
ls_cadena+=String.valueOf(arg.charAt(i));
}
if(ls_cadena.length()>0) varg.add(ls_cadena);
String []sarg=new String[varg.size()];
for(int i=0; i<varg.size(); i++) {
sarg[i]=(String)varg.elementAt(i);
}
return send(sarg);
}
public static String send(String[] argv) {
String to, subject = null, from = null, cc = null, bcc = null, url = null;
String mailhost = null;
String mailer = "WorkFlow";
String protocol = null, host = null, user = null, password = null;
String record = null; // name of folder in which to record mail
String texto=null;
String ls_error="";
boolean debug = false;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int optind;
to="";
for (optind = 0; optind < argv.length; optind++) {
if (argv[optind].equals("-T")) {
protocol = argv[++optind];
} else if (argv[optind].equals("-H")) {
host = argv[++optind];
} else if (argv[optind].equals("-U")) {
user = argv[++optind];
} else if (argv[optind].equals("-P")) {
CCCXI
password = argv[++optind];
} else if (argv[optind].equals("-M")) {
mailhost = argv[++optind];
} else if (argv[optind].equals("-r")) {
record = argv[++optind];
} else if (argv[optind].equals("-s")) {
subject = argv[++optind];
} else if (argv[optind].equals("-f")) { // originator
from = argv[++optind];
} else if (argv[optind].equals("-t")) { // originator
to = argv[++optind];
} else if (argv[optind].equals("-c")) {
cc = argv[++optind];
} else if (argv[optind].equals("-b")) {
bcc = argv[++optind];
} else if (argv[optind].equals("-L")) {
url = argv[++optind];
} else if (argv[optind].equals("-d")) {
debug = true;
} else if (argv[optind].equals("--")) {
optind++;
break;
} else if (argv[optind].startsWith("-")) {
ls_error="Usage: msgsend [[-L store-url] | [-T prot] [-H host] [-U user]
[-P passwd]]\t[-s subject] [-t to-address] [-f from-address] [-c cc-
addresses]\t[-b bcc-addresses] [-r record-mailbox] [-M transport-host] [-d]
[address]";
return ls_error;
} else {
break;
}
}
try {
if(optind < argv.length) texto = argv[optind];
if(texto==null) texto="no message";
if(subject == null) subject = "no subject";
Properties props = System.getProperties();
if (mailhost != null) props.put("mail.smtp.host", mailhost);
// Get a Session object
Session session = Session.getDefaultInstance(props, null);
// construct the message
Message msg = new MimeMessage(session);
if (from != null) msg.setFrom(new InternetAddress(from));
else msg.setFrom();
if(to == null) {
ls_error="To";
return ls_error;
}
if(to != null) msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to, false));
if (cc != null) msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc, false));
if (bcc != null) msg.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(bcc, false));
msg.setSubject(subject);
// collect(in, msg);
msg.setText(texto);
msg.setHeader("X-Mailer", mailer);
msg.setSentDate(new Date());
CCCXII
Transport.send(msg);
// Keep a copy, if requested.
if (record != null) {
// Get a Store object
Store store = null;
if (url != null) {
URLName urln = new URLName(url);
store = session.getStore(urln);
store.connect();
} else {
if (protocol != null) store = session.getStore(protocol);
else store = session.getStore();
// Connect
if (host != null || user != null || password != null)
store.connect(host, user, password);
else store.connect();
}
// Get record Folder. Create if it does not exist.
Folder folder = store.getFolder(record);
if (folder == null) {
ls_error="Can't get record folder.";
return ls_error;
}
if (!folder.exists()) folder.create(Folder.HOLDS_MESSAGES);
Message[] msgs = new Message[1];
msgs[0] = msg;
folder.appendMessages(msgs);
}
} catch (Exception e) {
ls_error=e.toString();
StringWriter ss=new StringWriter();
e.printStackTrace(new PrintWriter(ss,true));
ls_error+=ss.toString();
}
return ls_error;
}
///----------------------------------------------------------
public static String send(String smtp, String from, String to, String
cc, String bcc, String subject, String texto) {
String mailhost = smtp;
String mailer = "WorkFlow";
String ls_error="";
boolean debug = false;
int optind;
try {
if(texto==null || texto.length()==0) texto="Sin Mensaje";
if(subject == null || subject.length()==0) subject = "Sin Asunto";
Properties props = System.getProperties();
if (mailhost != null) props.put("mail.smtp.host", mailhost);
// Get a Session object
Session session = Session.getDefaultInstance(props, null);
// construct the message
Message msg = new MimeMessage(session);
if (from != null) msg.setFrom(new InternetAddress(from));
else {
return "Falta dirección del remitente";
CCCXIII
}
if(to == null || to.length()==0) {
ls_error="Falta dirección del destinatario.";
return ls_error;
}
if(to != null) msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to, false));
if (cc != null) msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc, false));
if (bcc != null) msg.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(bcc, false));
msg.setSubject(subject);
msg.setText(texto);
msg.setHeader("X-Mailer", mailer);
msg.setSentDate(new Date());
Transport.send(msg);
}
// Get record Folder. Create if it does not exist.
Folder folder = store.getFolder(record);
if (folder == null) {
ls_error="Can't get record folder.";
return ls_error;
}
if (!folder.exists()) folder.create(Folder.HOLDS_MESSAGES);
Message[] msgs = new Message[1];
msgs[0] = msg;
folder.appendMessages(msgs);
}
*/
} catch (Exception e) {
StringWriter ss=new StringWriter();
e.printStackTrace(new PrintWriter(ss,true));
ls_error=ss.toString();
}
return ls_error;
}
//---------------------------------
/*
*Para enviar archivos adjuntos
**/
public static String send(String smtp,
String from,
String to,
String cc,
String bcc,
String subject,
String texto,
String fileAttachment)throws Exception
{
int contador = 0;
String y = "";
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", smtp);
props.put("mail.smtp.auth", "false");
Session mailSession = Session.getInstance(props, null);
CCCXIV
MimeMessage message = new MimeMessage(mailSession);
if ( from != null )
if (!from.trim().equals(""))
contador++;
if ( contador == 0 )
{
throw new Exception ("Error debe ingresar el e mail de
origen");
}
Address [] fromAddr = new Address [1];
fromAddr[0] =new
InternetAddress(from);//InternetAddress(conf.getParameter("usermail"));
message.setFrom(fromAddr[0]);
message.setReplyTo(fromAddr);
contador =0;
if ( to != null )
if (!to.trim().equals(""))
contador++;
if ( contador == 0 )
{
throw new Exception ("Error debe ingresar el e mail de
destino");
}
message.addRecipient(Message.RecipientType.TO,new
InternetAddress(to));
if (cc!=null)
if (!cc.trim().equals(""))
message.addRecipient(Message.RecipientType.CC,new
InternetAddress(cc));
if(bcc!=null)
if(!bcc.trim().equals(""))
message.addRecipient(Message.RecipientType.BCC,new
InternetAddress(bcc));
message.setSubject(subject);
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(texto);
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(fileAttachment);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(fileAttachment);
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
// Send the message
Transport.send( message );
return y;
}
CCCXV
public static String crearMail(
String
usuario
) throws
Exception
{
System.out.println("-------------------------------
---------------------------------");
Process resultado = Runtime.getRuntime().exec("
useradd " + usuario.trim() );
String clave = usuario+"1234";
String sentencia = " passwd " + usuario.trim() + "\n" +
clave.trim() + "\n" +clave.trim() ;
System.out.println(sentencia);
Process resultado2 = Runtime.getRuntime().exec(sentencia);
DataInputStream flujoTeclado = new DataInputStream
(resultado.getInputStream());
String informacion = null;
while ( (informacion = flujoTeclado.readLine())!=null )
{
System.out.println("Linea " + informacion);
}
return (usuario+"@grupo5.com");
}
public static void cambiarClaveMail(
String
usuarioMail,
String
clave
) throws
Exception
{
String [] datos = usuarioMail.split("@");
String user = datos[0];
String sentencia = " passwd " + user.trim() + "\n" +
clave.trim() + "\n" +clave.trim() ;
Process resultado = Runtime.getRuntime().exec(sentencia);
System.out.println("Se Cambio la clave del
usuario");
}
}
CCCXVI
GestionExportacion.-
Este componente nos permite la importación de los reportes hacia archivos de
extensión XLS, realiza la consulta de la información desde la base de datos y
realiza un mapeo de los campos resultantes de la consulta para trasladarlos al
formato descrito.
package capaProcesos.procedimientos.skylinx.utilidadesGenerales;
import org.hibernate.*;
import modelo.clasesPersistentes.usuario.*;
import javax.servlet.http.*;
import java.util.*;
import capaProcesos.procedimientos.*;
import java.io.*;
import controlador.interfaz.*;
import modelo.clasesPersistentes.rolesAplicacion.RolAplicacion;
import modelo.clasesPersistentes.sucursales.Suscursales;
import modelo.clasesPersistentes.empresa.Empresas;
import capaProcesos.procedimientos.Procedimiento;
import modelo.modeloSkylinx.clasesPersistentes.*;
import org.hibernate.Transaction;
import capaProcesos.procedimientos.aplicacion.*;
import modelo.clasesPersistentes.personas.*;
import java.io.*;
import java.net.*;
import modelo.clasesPersistentes.rolesUsuariosAplicacion.*;
import javax.servlet.jsp.*;
import java.sql.*;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import capaProcesos.procedimientos.skylinx.javaMailCls.*;
public class GestionExportacion extends Procedimiento
{
public static String rutaArchivo = "C:/Tomcat
5.0/webapps/SkyLinx/paginas/skylinx/dataXls/";
public static String smtp = "";
public GestionExportacion () throws IOException
{
super ("Procesos de aplicacion");
}
public void dataTop10( Session psSesionServlet,
PageContext pagina)throws
Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
CCCXVII
String lsQuery = " select b.ip_maquina as maquina, "+
" b.nombre_pc as nombrePc, "+
" a.fecha_registro as fechaRegistro, "+
" a.accion_realizada as accion, "+
" a.ruta_virus_encontrado as ruta, "+
" ( "+
" select g.descripcion "+
" from virus g "+
" where g.id_virus = a.id_virus "+
" and g.estado = 'A' "+
" ) as virus " +
" from detalle_scan a, "+
" scan c, "+
" maquina b "+
" where a.id_virus is not null "+
" and c.id_scan = a.id_scan "+
" and c.id_maquina = b.id_maquina "+
" and a.estado = 'A' "+
" and b.estado = 'A' " +
" and c.estado = 'A' "+
" order by a.fecha_registro "+
" LIMIT (10) ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getOutputStream().println(" <div
class=\"titulosFormulario\" >REPORTE TOP 10 </div> ");
l_response.getOutputStream().println(" <table
width=\"100%\" border=\"1\" cellpadding=\"0\" style=\" border:NAVY; border-
bottom-style:solid; volume:medium\">");
l_response.getOutputStream().println(" <tr> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Maquina</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Virus</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Ruta</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Accion</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Fecha Registro</th> ");
l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getOutputStream().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getOutputStream().println(" <tr> ");
CCCXVIII
l_response.getOutputStream().println(" <td> " +
resultado.getString( "maquina" ) + "</td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "virus" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "ruta" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "accion" )+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getDate( "fechaRegistro" ).toString()+" </td> ");
l_response.getOutputStream().println(" <td> "
+resultado.getString( "nombrePc" )+" </td> ");
l_response.getOutputStream().println(" </tr> ");
}
l_response.getOutputStream().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void generaArchivoDataTop10(
Session
psSesionServlet,
String
nombreArchivo
)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = " select b.ip_maquina as maquina, "+
" b.nombre_pc as nombrePc, "+
" a.fecha_registro as fechaRegistro, "+
" a.accion_realizada as accion, "+
" a.ruta_virus_encontrado as ruta, "+
" ( "+
" select g.descripcion "+
" from virus g "+
" where g.id_virus = a.id_virus "+
" and g.estado = 'A' "+
" ) as virus " +
" from detalle_scan a, "+
" scan c, "+
" maquina b "+
" where a.id_virus is not null "+
" and c.id_scan = a.id_scan "+
" and c.id_maquina = b.id_maquina "+
" and a.estado = 'A' "+
" and b.estado = 'A' " +
" and c.estado = 'A' "+
" order by a.fecha_registro "+
CCCXIX
" LIMIT (10) ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
bWriter.write(" <div class=\"titulosFormulario\" >REPORTE
TOP 10 </div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Maquina</th> ");
bWriter.write(" <th scope=\"col\">Virus</th> ");
bWriter.write(" <th scope=\"col\">Ruta</th> ");
bWriter.write(" <th scope=\"col\">Accion</th> ");
bWriter.write(" <th scope=\"col\">Fecha Registro</th>
");
bWriter.write(" <th scope=\"col\">Nombre Pc</th> ");
bWriter.write(" </tr> " );
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " + resultado.getString( "maquina"
) + "</td> ");
bWriter.write(" <td> " +resultado.getString( "virus"
)+" </td> ");
bWriter.write(" <td> " +resultado.getString( "ruta" )+"
</td> ");
bWriter.write(" <td> " +resultado.getString( "accion"
)+" </td> ");
bWriter.write(" <td> " +resultado.getDate(
"fechaRegistro" ).toString()+" </td> ");
bWriter.write(" <td> " +resultado.getString( "nombrePc"
)+" </td> ");
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.flush();
bWriter.close();
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
CCCXX
public void gestionaEnvioMailAdjuntoTop10 (
HashMap parametros
)
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "top10.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment = rutaArchivo+nombreArchivo;
try
{
generaArchivoDataTop10(
psSesionServlet,
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el archivo para
enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el archivo adjutno "
+ e2.toString());
}
}
//-----------------------------------------------------------------------
--
/*
*
*Envia mail de los usuarios
**/
public void generaArchivoUsuarios(
Session
psSesionServlet,
CCCXXI
String
nombreArchivo
)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = "select b.nombre || ' ' ||b.apellido, "+
" t.usuario, "+
" fecha_creacion, "+
" ( "+
" select c.ip_maquina "+
"from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as Maquina_asignada, "+
"( "+
" select c.nombre_pc "+
" from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as nombre_Maquina_asignada "+
" from usuarios as t, "+
" personas as b " +
" where t.estado = 'A' "+
" and b.id_persona =
t.id_persona "+
" and b.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
bWriter.write(" <div class=\"titulosFormulario\" >REPORTE
TOP 10 </div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Nombre</th> ");
bWriter.write(" <th scope=\"col\">Usuario Sistema</th> ");
bWriter.write(" <th scope=\"col\">Fecha Ingreso</th>
");
bWriter.write(" <th scope=\"col\">Ip Maquina</th> ");
bWriter.write(" <th scope=\"col\">Nombre Maquina</th>
");
//l_response.getOutputStream().println(" <th
CCCXXII
scope=\"col\">Nombre Pc</th> ");
bWriter.write(" </tr> " );
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " + resultado.getString( 1 ) +
"</td> ");
bWriter.write(" <td> " +resultado.getString( 2 )+"
</td> ");
bWriter.write(" <td> " +resultado.getString( 3
).toString()+ " </td> ");
bWriter.write(" <td> " +resultado.getString( 4 )+ "
</td> ");
bWriter.write(" <td> " +resultado.getString( 5 )+ "
</td> ");
bWriter.write(" </tr> ");
}
bWriter.write(" </table> ");
bWriter.close();
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoUsuarios (
HashMap parametros
)
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "usuarios.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment = rutaArchivo+nombreArchivo;
try
{
generaArchivoUsuarios(
psSesionServlet,
nombreArchivo
CCCXXIII
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el archivo para
enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el archivo adjutno "
+ e2.toString());
}
}
/*
*
**/
/*
*
*Envia mail de las descargas
**/
public void generaArchivoDescargas(
Session
psSesionServlet,
String
nombreArchivo
)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
BufferedWriter bWriter = new BufferedWriter(new
FileWriter(rutaArchivo+nombreArchivo));
String lsQuery = "select a.ip_maquina as maquina, "+
" a.nombre_pc as nombre_pc, "+
" a.estado_operacion as
estado_operacion, "+
" (select max(fecha_descarga) from
descargas where id_maquina = a.id_maquina) as fecha_descarga, "+
" (select observacion from descargas
where id_maquina = a.id_maquina and fecha_descarga = (select
max(fecha_descarga) from descargas where id_maquina = a.id_maquina)) as
observacion " +
" from maquina as a "+
" where a.estado = 'A' ";
CCCXXIV
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
/
bWriter.write(" <div class=\"titulosFormulario\" >DESCARGAS
</div> ");
bWriter.write(" <table width=\"100%\" border=\"1\"
cellpadding=\"0\" style=\" border:NAVY; border-bottom-style:solid;
volume:medium\">");
bWriter.write(" <tr> ");
bWriter.write(" <th scope=\"col\">Maquina</th> ");
bWriter.write(" <th scope=\"col\">Nombre PC</th> ");
bWriter.write(" <th scope=\"col\">Estado Operacion</th>
");
bWriter.write(" <th scope=\"col\">Fecha Ultima
Definicion</th> ");
bWriter.write(" <th scope=\"col\">Observacion</th> ");
bWriter.write(" </tr> " );
java.util.Date fecha = null;
String observacion = null;
try
{
while (resultado.next() )
{
bWriter.write(" <tr> ");
bWriter.write(" <td> " + resultado.getString( "maquina"
) + "</td> ");
bWriter.write(" <td> " +resultado.getString(
"nombre_pc" )+" </td> ");
bWriter.write(" <td> " +resultado.getString(
"estado_operacion" )+" </td> ");
fecha = resultado.getDate( "fecha_descarga" );
if (fecha!=null)
{
bWriter.write(" <td> " +fecha.toString()+" </td>
");
}
else
{
bWriter.write(" <td> " +"No Encontrado"+" </td>
");
}
observacion = resultado.getString( "observacion" );
if ( observacion != null )
{
bWriter.write(" <td> " +observacion+" </td> ");
}
else
{
bWriter.write(" <td> " +"No Encontrado"+" </td>
");
}
bWriter.write(" </tr> ");
CCCXXV
}
bWriter.write(" </table> ");
bWriter.close();
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionaEnvioMailAdjuntoDescargas (
HashMap parametros
)
throws Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
String nombreArchivo = "descargas.xls";
String from =
(String)parametros.get("de");
String to =
(String)parametros.get("para");
String bcc =
(String)parametros.get("copia");
String subject =
(String)parametros.get("asunto");
String texto =
(String)parametros.get("cuepor");
String fileAttachment = rutaArchivo+nombreArchivo;
try
{
generaArchivoDescargas(
psSesionServlet,
nombreArchivo
);
}
catch(Exception e)
{
throw new Exception ("Error al generar el archivo para
enviarlo por mail " + e.toString());
}
try
{
SendMail.send(
smtp,
from,
to,
bcc,
subject,
texto,
fileAttachment
);
CCCXXVI
}
catch (Exception e2)
{
throw new Exception ("Error al enviar el archivo adjutno "
+ e2.toString());
}
}
/*
*
**/
public void gestionExportaExcelTop10 (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataTop10(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la exportacion del
reporte " + e.getMessage());
}
}
public void dataDescargasXLS( Session psSesionServlet,
PageContext
pagina)throws Exception
{
/*
*
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
String lsQuery = "select a.ip_maquina as maquina, "+
" a.nombre_pc as nombre_pc, "+
" a.estado_operacion as
estado_operacion, "+
" (select max(fecha_descarga) from
descargas where id_maquina = a.id_maquina) as fecha_descarga, "+
" (select observacion from descargas
where id_maquina = a.id_maquina and fecha_descarga = (select
max(fecha_descarga) from descargas where id_maquina = a.id_maquina)) as
observacion " +
" from maquina as a "+
" where a.estado = 'A' ";
CCCXXVII
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
java.util.Date fecha = null;
String observacion = null;
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getWriter().println(" <div
class=\"titulosFormulario\" >DESCARGAS </div> ");
l_response.getWriter().println(" <table width=\"100%\"
border=\"1\" cellpadding=\"0\" style=\" border:NAVY; border-bottom-
style:solid; volume:medium\">");
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <th
scope=\"col\">Maquina</th> ");
l_response.getWriter().println(" <th scope=\"col\">Nombre
PC</th> ");
l_response.getWriter().println(" <th scope=\"col\">Estado
Operacion</th> ");
l_response.getWriter().println(" <th scope=\"col\">Fecha
Ultima Definicion</th> ");
l_response.getWriter().println(" <th
scope=\"col\">Observacion</th> ");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getWriter().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <td> " +
resultado.getString( "maquina" ) + "</td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( "nombre_pc" )+" </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( "estado_operacion" )+" </td> ");
fecha = resultado.getDate( "fecha_descarga" );
if (fecha!=null)
{
l_response.getWriter().println(" <td> "
+fecha.toString()+" </td> ");
}
else
{
l_response.getWriter().println(" <td> " +"No
Encontrado"+" </td> ");
}
observacion = resultado.getString( "observacion" );
if ( observacion != null )
CCCXXVIII
{
l_response.getWriter().println(" <td> "
+observacion+" </td> ");
}
else
{
l_response.getWriter().println(" <td> " +"No
Encontrado"+" </td> ");
}
l_response.getWriter().println(" </tr> ");
}
l_response.getWriter().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionDataDescargasXLS (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataDescargasXLS(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la exportacion del
reporte " + e.getMessage());
}
}
///---------------------------------------------------
public void dataDescargaUsuarios( Session psSesionServlet,
PageContext
pagina)throws Exception
{
/*
*
CCCXXIX
**/
PreparedStatement prepareStatementOpciones = null;
ResultSet resultado = null;
String lsQuery = "select b.nombre || ' ' ||b.apellido, "+
" t.usuario, "+
" fecha_creacion, "+
" ( "+
" select c.ip_maquina "+
"from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as Maquina_asignada, "+
"( "+
" select c.nombre_pc "+
" from "+
" maquina_usuario a, "+
" maquina c "+
" where c.estado = 'A' "+
" and a.id_usuario = t.id_usuario "+
" and a.id_maquina = c.id_maquina "+
" ) as nombre_Maquina_asignada "+
" from usuarios as t, "+
" personas as b " +
" where t.estado = 'A' "+
" and b.id_persona =
t.id_persona "+
" and b.estado = 'A' ";
System.out.println(lsQuery);
Connection coneccion = psSesionServlet.connection();
prepareStatementOpciones =
coneccion.prepareStatement(lsQuery);
resultado = prepareStatementOpciones.executeQuery();
ServletResponse l_response=pagina.getResponse();
ServletRequest l_request=pagina.getRequest();
l_response.setContentType("application/vnd.ms-excel");
java.util.Date fecha = null;
String observacion = null;
//BufferedWriter bw = new BufferedWriter(l_out);
l_response.getWriter().println(" <div
class=\"titulosFormulario\" >REPORTE TOP 10 </div> ");
l_response.getWriter().println(" <table width=\"100%\"
border=\"1\" cellpadding=\"0\" style=\" border:NAVY; border-bottom-
style:solid; volume:medium\">");
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <th
scope=\"col\">Nombre</th> ");
l_response.getWriter().println(" <th scope=\"col\">Usuario
Sistema</th> ");
l_response.getWriter().println(" <th scope=\"col\">Fecha
Ingreso</th> ");
l_response.getWriter().println(" <th scope=\"col\">Ip
Maquina</th> ");
CCCXXX
l_response.getWriter().println(" <th scope=\"col\">Nombre
Maquina</th> ");
//l_response.getOutputStream().println(" <th
scope=\"col\">Nombre Pc</th> ");
l_response.getWriter().println(" </tr> " );
try
{
while (resultado.next() )
{
l_response.getWriter().println(" <tr> ");
l_response.getWriter().println(" <td> " +
resultado.getString( 1 ) + "</td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 2 )+" </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 3 ).toString()+ " </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 4 )+ " </td> ");
l_response.getWriter().println(" <td> "
+resultado.getString( 5 )+ " </td> ");
l_response.getWriter().println(" </tr> ");
}
l_response.getWriter().println(" </table> ");
coneccion.close();
}
catch (Exception h)
{
coneccion.close();
throw new Exception (h.toString());
}
}
public void gestionDataDescargaUsuarios (HashMap parametros ) throws
Exception
{
Session psSesionServlet =
(Session)parametros.get("sessionHibernate");
/*
*Datos recibidos
**/
PageContext pagina=(PageContext)parametros.get("page");
try
{
dataDescargaUsuarios(
psSesionServlet,
pagina
);
}
catch (Exception e)
{
e.printStackTrace();
throw new Exception ("Error al realizar la exportacion del
reporte " + e.getMessage());
}
}
CCCXXXI
NDICE GENERAL
ÌNDICE GENERAL I INDICE DE IMAGENES II MANUAL DE USUARIO .......................................................................... CXLV INGRESO AL SISTEMA ........................................................................... CXLV CAMBIO DE CLAVE ................................................................................ CXLV CONFIGURACIONES ............................................................................. CXLVI CREACION DE TIPOS DE CONFIGUARCION ..................................... CXLVI INGRESO DE CONFIGURACION ......................................................... CXLVII ASIGNACION CONFIGURACION MAQUINAS .................................... CXLVIII REPORTES PCS ......................................................................................... CL TOP 10 ......................................................................................................... CL DESCARGAS ............................................................................................... CL USUARIOS DEL SISTEMA ........................................................................ CLII GESTOR MAQUINAS ................................................................................ CLII TODA LA RED .......................................................................................... CLIII VERIFICACIÓN DE ESTADOS DE PCS................................................... CLIII EJECUCION DE ANTIVIRUS ..................................................................... CLV ENVIO ACTUALIZACION........................................................................... CLV REPORTE SCAN MAQUINA .................................................................... CLVI INACTIVACION DE MAQUINAS .............................................................. CLVII ASIGNACIÓN MAQUINA USUARIO ........................................................ CLVII GESTION USUARIOS .............................................................................. CLIX INGRESO USUARIO ................................................................................ CLIX ASIGNACION ROL ................................................................................... CLIX INACTIVACION USUARIO......................................................................... CLX RESETEO DE CLAVE .............................................................................. CLXI ACTUALIZACION DE USUARIO ............................................................. CLXII CAMBIO DE CLAVE MAIL ....................................................................... CLXII ELIMINAR ROL USUARIO ...................................................................... CLXIV MANUAL DE INSTALACIÓN ................................................................. CLXIV SERVIDOR .............................................................................................. CLXIV CLIENTES ................................................................................................ CLXV PROCESO DE INSTALACIÓN EN EL SISTEMA OPERATIVO LINUX ... CLXV Instalación de Java ................................................................................... CLXV Configuración: ......................................................................................... CLXVI Instalación de Apache Tomcat ................................................................ CLXVI Configuración ......................................................................................... CLXVII PROCESO DE INSTALACIÓN EN LOS CLIENTES .............................. CLXVII Instalación de Java ................................................................................. CLXVII Instalación de Clamwin ........................................................................... CLXIX MANUAL TECNICO ............................................................................... CLXXII INTRODUCCION ................................................................................... CLXXII DIAGRAMA GENERAL ......................................................................... CLXXIII DIAGRAMA DE BASE DE DATOS ...................................................... CLXXIV
CCCXXXII
SCRIPTS DE BASE DE DATOS ........................................................... CLXXV Configuraciones del Servidor ............................................................... CLXXXI Servidor Web ........................................................................................ CLXXXI Servidor DHCP ..................................................................................... CLXXXI Servidor DNS ...................................................................................... CLXXXII Servidor FTP ...................................................................................... CLXXXIV Servidor SENDMAIL ........................................................................... CLXXXIV Servidor de POSTGRES ..................................................................... CLXXXV SCRIPT DE CONEXIÓN ..................................................................... CLXXXV SCRIPTS DE CLASES RELEVANTES ............................................ CLXXXVIII
INDICE DE ILUSTRACIONES
Ilustración 1: Inicio .................................................................................... CXLV Ilustración 2 : Opción Cambio de clave ................................................... CXLVI Ilustración 3: Dialogo de confirmación de cambio de Clave .................... CXLVI Ilustración 4: Pantalla para el cambio de clave ....................................... CXLVI Ilustración 5: Opciones del Menú configuraciones .................................. CXLVI Ilustración 6: Ingreso de Tipo Configuración .......................................... CXLVII Ilustración 7: Opción Ingreso configuración ........................................... CXLVII Ilustración 8: Ingreso de Configuración .................................................. CXLVII Ilustración 9: Cuadro de dialogo de mensaje Exitoso ............................ CXLVIII Ilustración 10: Opción Asignación Configuraciones Maquinas .............. CXLVIII Ilustración 11: Ingreso Configuración Máquina ....................................... CXLIX Ilustración 12: Gestión Asignación Configuración Maquinas ........................ CL Ilustración 13: Dialogo de confirmación de Ingreso exitoso de configuración maquina ....................................................................................................... CL Ilustración 14: Reporte TOP 10 .................................................................... CL Ilustración 15: Reporte Descargas .............................................................. CLI Ilustración 16: Usuarios Máquinas ............................................................. CLII Ilustración 17: Opciones Menú Gestor Máquinas ....................................... CLII Ilustración 18: Gestión de Configuraciones de Maquinas Encendidas ...... CLIII Ilustración 19: Botón para la actualización de los sitios de red ................. CLIII Ilustración 20: Gestión Envío de E-Mail .................................................... CLIV Ilustración 21: Dialogo informativo de ejecución del Antivirus ................... CLV Ilustración 22: Dialogo informativo de envío de definición .......................... CLV Ilustración 23: Reporte de SCAN por Maquina.......................................... CLVI Ilustración 24: Detalle SCAN .................................................................... CLVII Ilustración 25: Inactivación de Maquinas .................................................. CLVII Ilustración 26: Asignación Maquina Usuario............................................ CLVIII
CCCXXXIII
Ilustración 27: Menú Gestión Usuarios ...................................................... CLIX Ilustración 28: Ingreso Usuarios ................................................................ CLIX Ilustración 29: Asignación de rol a Usuarios............................................... CLX Ilustración 30: Diálogo Informativo de Asignación Exitosa ......................... CLX Ilustración 31: Inactivación de usuario ....................................................... CLX Ilustración 32: Dialogo Informativo de Inactivación de Usuario Exitosa ..... CLX Ilustración 33: Reseteo Clave Usuario ...................................................... CLXI Ilustración 34: Diálogo Informativo de Reseteo de Clave Exitosa ............. CLXI Ilustración 35: Actualización Usuarios ...................................................... CLXII Ilustración 36: Diálogo Informativo de Actualización de Usuario Exitosa . CLXII Ilustración 37: Cambio de Clave Mail Usuario ......................................... CLXIII Ilustración 38: Dialogo Informático de Actualización de Clave mail Exitosa ................................................................................................................ CLXIV Ilustración 39: Elimina Rol Usuario .......................................................... CLXIV Ilustración 40: Diálogo Informativo de Eliminación de Rol de Usuario Exitoso ................................................................................................................ CLXIV Ilustración 41: Instalación Java pantalla 1-5 ........................................... CLXVII Ilustración 42: Instalación Java pantalla 2-5 .......................................... CLXVIII Ilustración 43: Instalación Java pantalla 3-5 .......................................... CLXVIII Ilustración 44: Instalación Java pantalla 4-5 .......................................... CLXVIII Ilustración 45: Instalación Java pantalla 5-5 ............................................ CLXIX Ilustración 46: Instalación ClamWin 1-11 ................................................ CLXIX Ilustración 47: Instalación ClamWin 2-11 ................................................ CLXIX Ilustración 48: Instalación ClamWin 3-11 ................................................ CLXIX Ilustración 49: Instalación ClamWin 4-11 ................................................. CLXX Ilustración 50: Instalación ClamWin 5-11 ................................................. CLXX Ilustración 51: Instalación ClamWin 6-11 ................................................. CLXX Ilustración 52: Instalación ClamWin 7-11 ................................................ CLXXI Ilustración 53: Instalación ClamWin 8-11 ................................................ CLXXI Ilustración 54: Instalación ClamWin 9-11 ................................................ CLXXI Ilustración 55: Instalación ClamWin 10-11 .............................................. CLXXI Ilustración 56: Instalación ClamWin 11-11 ............................................. CLXXII Ilustración 57: Diagrama de base de datos ........................................... CLXXV
CCCXXXIV