DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN...

334
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

Transcript of DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN...

Page 1: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 2: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 3: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 4: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

IV

TRIBUNAL DE GRADUACIÓN

Presidente de Tribunal 1er. Vocal

2do. Vocal Secretario

Page 5: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

[email protected]

ALEX ADOLFO HOLGUIN ZAMBRANO [email protected]

Page 6: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 7: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 8: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 9: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 10: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 11: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 12: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 13: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 14: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 15: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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.

Page 16: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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.

Page 17: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 18: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 19: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.-

Page 20: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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:

Page 21: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 22: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 23: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 24: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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:

Page 25: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 26: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 27: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 28: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 29: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 30: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 31: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 32: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 33: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 34: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 35: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 36: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 37: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 38: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 39: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 40: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 41: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 42: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 43: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 44: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 45: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 46: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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

Page 47: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 48: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 49: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 50: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 51: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

LI

Ilustración 13: Diagrama asociación de clases

Page 52: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 53: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 54: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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

Page 55: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 56: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 57: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 58: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 59: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 60: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 61: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 62: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 63: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

LXIII

Ilustración 31: Diagrama asignación configuraciones maquinas

Page 64: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 65: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 66: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 67: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 68: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 69: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 "+

Page 70: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 71: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 72: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 = '" +

Page 73: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

);

}

Page 74: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 (

Page 75: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

}

}

Page 76: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 77: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 78: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.-

Page 79: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

}

Page 80: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 81: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 82: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 83: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 84: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 85: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 86: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 87: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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'";

Page 88: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

}

Page 89: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

}

}

Page 90: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.*;

Page 91: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 92: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

Page 93: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 94: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 95: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

{

Page 96: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 97: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

Page 98: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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" + "'," +

Page 99: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 100: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 101: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 102: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

}

Page 103: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 104: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

Page 105: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

}

//---------------

}

Page 106: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

}

Page 107: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 108: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 "+

Page 109: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

}

Page 110: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

Page 111: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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> ");

Page 112: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 113: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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));

Page 114: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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" );

Page 115: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

Page 116: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 117: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

{

Page 118: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

Page 119: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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> ");

Page 120: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

Page 121: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CXXI

dataDescargaUsuarios(

psSesionServlet,

pagina

);

}

catch (Exception e)

{

e.printStackTrace();

throw new Exception ("Error al realizar la exportacion del

reporte " + e.getMessage());

}

}

//----------------------------------------------------

}

Page 122: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 123: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 124: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 125: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 126: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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.

Page 127: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CXXVII

personas

ID_PERSONA

valor_identificacion

nombre

apellido

fecha_nacimiento

ciudad

direccion

telefono_casa

celular

email

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.

Page 128: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 129: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 130: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 131: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 132: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 133: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 134: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 135: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 136: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CXXXVI

Page 137: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 138: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 139: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 140: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 141: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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/

Page 142: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 143: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 144: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 145: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 146: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 147: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 148: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 149: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CXLIX

Ilustración 44: Ingreso

Configuración Máquina

Page 150: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 151: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 152: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 153: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

MAIL

Page 154: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 155: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 156: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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.

Page 157: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 158: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CLVIII

Ilustración 59: Asignación Maquina Usuario

Page 159: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 160: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 161: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 162: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 163: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 164: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 165: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 .

Page 166: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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:

Page 167: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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:

Page 168: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 169: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 170: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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.

Page 171: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creació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:

Page 172: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 173: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CLXXIII

DIAGRAMA GENERAL

Page 174: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 175: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 176: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

);

Page 177: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 178: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 179: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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),

Page 180: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 181: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 182: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 183: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 184: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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:

Page 185: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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">

Page 186: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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" />

Page 187: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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" />

Page 188: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 189: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 190: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 191: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 192: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 193: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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";

Page 194: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 195: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 =

Page 196: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

}

}

Page 197: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 198: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

{

Page 199: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 200: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 ()

{

Page 201: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 202: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

Page 203: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 =

Page 204: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

{

Page 205: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 =

Page 206: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 207: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 208: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

Page 209: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 = "";

Page 210: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 211: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 (

Page 212: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 213: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 214: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 +

"'";

Page 215: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 216: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

Page 217: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

}

Page 218: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 219: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 220: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 221: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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()));

Page 222: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 223: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

}

Page 224: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.*;

Page 225: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

/*

Page 226: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

}

Page 227: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 228: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

}

//---------------

}

Page 229: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 230: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 231: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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";

Page 232: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

}

//---------------------------------

Page 233: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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));

Page 234: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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(

Page 235: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.*;

Page 236: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 237: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 238: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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() )

Page 239: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 240: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 "+

Page 241: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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> ");

Page 242: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 243: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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\"

Page 244: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 245: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 246: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 247: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 )

{

Page 248: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

/*

*

Page 249: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 250: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

);

}

Page 251: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CCLI

catch (Exception e)

{

e.printStackTrace();

throw new Exception ("Error al realizar la

exportacion del reporte " + e.getMessage());

}

}

Page 252: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 253: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 254: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 255: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 256: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 257: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 258: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 259: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 260: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

);

Page 261: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 262: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

);

Page 263: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

);

Page 264: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 265: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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";

Page 266: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 267: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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:

Page 268: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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">

Page 269: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 270: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 271: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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' "+

Page 272: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 273: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 );

Page 274: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

}

}

}

Page 275: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 276: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 277: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 278: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 279: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 280: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

Page 281: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 282: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.*;

Page 283: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

Page 284: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

**/

Page 285: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 286: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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)

Page 287: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 288: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 289: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 290: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 291: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 292: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 + " " +

Page 293: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 294: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 295: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

Page 296: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 297: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 298: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 299: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 300: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 301: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 302: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 303: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 304: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

}

Page 305: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.*;

Page 306: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

Page 307: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 308: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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();

Page 309: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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.

Page 310: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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")) {

Page 311: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

Page 312: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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";

Page 313: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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);

Page 314: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

}

Page 315: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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");

}

}

Page 316: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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;

Page 317: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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> ");

Page 318: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 "+

Page 319: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

}

Page 320: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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,

Page 321: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 322: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 323: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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' ";

Page 324: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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> ");

Page 325: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

);

Page 326: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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' ";

Page 327: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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 )

Page 328: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

{

/*

*

Page 329: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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> ");

Page 330: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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());

}

}

Page 331: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 332: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 333: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

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

Page 334: DESARROLLO DE SERVIDOR CORPORATIVO DE ANTIVIRUS OPEN …repositorio.ug.edu.ec/bitstream/redug/6961/1/Tesis... · 2017-10-22 · Actualización de definiciones del antivirus. Creación

CCCXXXIV