ÍNDICE GENERAL AGRADECIMIENTO II...

238
I ÍNDICE GENERAL AGRADECIMIENTO II DEDICATORIA III TRIBUNAL DE GRADUACIÓN IV DECLARACIÓN EXPRESA V RESUMEN VI ÍNDICE DE CONTENIDO VIII ÍNDICE DE FIGURAS X

Transcript of ÍNDICE GENERAL AGRADECIMIENTO II...

Page 1: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

I

ÍNDICE GENERAL

AGRADECIMIENTO II

DEDICATORIA III

TRIBUNAL DE GRADUACIÓN IV

DECLARACIÓN EXPRESA V

RESUMEN VI

ÍNDICE DE CONTENIDO VIII

ÍNDICE DE FIGURAS X

Page 2: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

II

Agradecimiento

Le agradecemos a Dios por darnos la fuerza necesaria

para luchar día a día para alcanzar nuestras metas, y a

nuestras familias por el apoyo incondicional que nos dieron

desde los inicios de la carrera, solo con la ayuda de ellos

logramos llegar hasta esta etapa final, gracias por todo lo

que hicieron por nosotros.

Page 3: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

III

Dedicatoria

Este Proyecto esta dedicado a Dios, a nuestras familias, al esfuerzo de cada

uno de los integrantes de este proyecto, a la constante lucha por conseguir los

objetivos que cada uno de nosotros se fijo desde el principio de nuestros

estudios.

Dedicamos nuestro Proyecto a todos los que de una u otra forma hicieron

posible que culminemos esta etapa de nuestras vidas como lo es la obtención

del titulo de Ingenieros en Sistemas Computacionales.

Page 4: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

IV

Tribunal de Graduación

Presidente 1er Vocal

2do Vocal Secretario

Page 5: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

V

DECLARACIÓN EXPRESA

“La autoría de la tesis de grado corresponde exclusivamente a los suscritos,

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)

Carlos Plua

[email protected]

Carlos Ponce

[email protected]

Paul Baño

[email protected]

Page 6: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

VI

Resumen

Las grandes redes de computadoras ameritan estar controladas de una manera

eficaz y correcta para evitar su mal funcionamiento.

Esto conlleva a la utilización de herramientas de hardware y software que

permitan solucionar los problemas presentados en la administración de

grandes Redes Corporativas.

Por eso nuestro proyecto Servidor de Dominio Primario con integración a

Microsoft esta orientado a la administrar las cuentas y recursos del dominio en

cuestión, sean estos usuarios, grupos de trabajo y/o estaciones de trabajo.

Para la realización de este Proyecto se utilizaron herramientas informáticas de

código libre tales como Java, Postgresql, Openldap, Eclipse, Sistema Operativo

Linux en su distribución Fedora Core 7, en lo relacionado al hardware se

utilizaron computadoras de alto rendimiento tipo PC.

En el Sistema Operativo Linux en su distribución Fedora Core 7 fue necesario

configurar los servicios de DNS, DHCP, LDAP y Samba.

Page 7: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

VII

Summary

The big networks should be controlled in an effective and correct way to avoid

their inconrrect operation.

This produce the use of hardware and software tools that allow to solve the

problems showed in the administration of big networks

For that reason our project Primary Domain Controller with integration to

Microsoft is develope to administrate the resort of the network, these could be

users, work groups and/or work stations.

To develope this project we use tools of free code as example Java,

Postgresql, Openldap, Eclipse, Operating system Linux in their distribution

Fedora Core 7, in the related to the hardware we use computers of high

performance

In the Operating system Linux in their distribution Fedora Core 7 were

necessary to configure the services of DNS, DHCP, LDAP and Samba.

Page 8: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

VIII

Índice de Contenido

INTRODUCCIÓN ................................................... Error! Bookmark not defined.

CAPITULO 1 ........................................................... Error! Bookmark not defined.

ENTORNO PARA EL DESARROLLO DEL PROYECTO .Error! Bookmark not

defined.

1.- Problemática ................................................. Error! Bookmark not defined.

1.1.- El Problema...................................... Error! Bookmark not defined. 1.2.- La Solución ...................................... Error! Bookmark not defined. 1.3.- Visión ............................................... Error! Bookmark not defined. 1.4.- Misión ............................................... Error! Bookmark not defined. 1.6.- Alcances .......................................... Error! Bookmark not defined. 1.7.- Ventajas y Desventajas .................... Error! Bookmark not defined. 1.8.- Análisis FODA .................................. Error! Bookmark not defined. 1.9.- Arquitectura del Sistema .................. Error! Bookmark not defined. 1.10.- Recursos ........................................ Error! Bookmark not defined. 1.11- Cronograma de Actividades ............ Error! Bookmark not defined. 1.12- Estudio de Mercado ........................ Error! Bookmark not defined. 1.12.1.- Análisis de Mercado ................ Error! Bookmark not defined. 1.13.- Análisis de Riesgos e intangibles ... Error! Bookmark not defined. 1.13.1.- Interpretación de los riesgos ... Error! Bookmark not defined.

1.13.2.- Impacto Probabilidades y Plan de Contingencias de riesgos ................................................................. Error! Bookmark not defined. 1.13.3.- Tabla de riesgos ...................... Error! Bookmark not defined. 1.14.- CONCLUSION ............................... Error! Bookmark not defined.

CAPITULO 2 ........................................................... Error! Bookmark not defined.

Análisis ................................................................ Error! Bookmark not defined. 2.1.- ¿Que es Servidor de Dominio Corporativo? ... Error! Bookmark not defined. 2.2.- Componentes del Servidor de Dominio Corporativo.Error! Bookmark not defined. 2.3.- Samba .............................................. Error! Bookmark not defined. 2.4.- LDAP ................................................ Error! Bookmark not defined. 2.5.- Modelado del Análisis ...................... Error! Bookmark not defined. 2.6. - Diagrama de Flujo de Dato ............. Error! Bookmark not defined. 2.7.- Diseño de Componentes ................. Error! Bookmark not defined.

DISEÑO DEL SISTEMA ........................................ Error! Bookmark not defined.

3.- DISEÑO ............................................................. Error! Bookmark not defined.

3.1.- Diseño de Clases y Objetos ..................... Error! Bookmark not defined.

3.1.1.- Principales Objetos Dao ................ Error! Bookmark not defined. 3.1.2.- Principales Objetos Bo .................. Error! Bookmark not defined. 3.1.3.- Principales Servlets ....................... Error! Bookmark not defined. 3.3.- Diseño de la Interfaz ........................ Error! Bookmark not defined.

Capitulo 4 ................................................................ Error! Bookmark not defined.

Codificación ............................................................ Error! Bookmark not defined.

4.1. - Principales Componentes ........................ Error! Bookmark not defined.

4.1.2.- Servidor de Dominio ...................... Error! Bookmark not defined. 4.1.3.- Usuario Administrador ................... Error! Bookmark not defined. 4.2.- Procesos Principales ........................ Error! Bookmark not defined. 4.3.- Estándares ....................................... Error! Bookmark not defined.

Page 9: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

IX

4.3.2.- Definición de la estructura de datosError! Bookmark not defined.

Desarrollo, Pruebas e Implementación del Sistema ..........Error! Bookmark not

defined.

5.- Desarrollo ...................................................... Error! Bookmark not defined.

5.1.- Creación de la Base de Datos.......... Error! Bookmark not defined. 5.2.- Desarrollo de Aplicación .................. Error! Bookmark not defined. 5.3.- PRUEBAS DEL SISTEMA ............... Error! Bookmark not defined. 5.4.- Modelo de prueba ............................ Error! Bookmark not defined. 5.5.- IMPLEMENTACIÓN DEL SISTEMA Error! Bookmark not defined. 5.6.- Recursos de Hardware .................... Error! Bookmark not defined.

Capitulo 6 ................................................................ Error! Bookmark not defined.

Recomendaciones y Conclusiones ...................... Error! Bookmark not defined.

6.1.- Recomendaciones ..................................... Error! Bookmark not defined.

6.1.1.- Recomendaciones Software ......... Error! Bookmark not defined. 6.1.2.- Hardware....................................... Error! Bookmark not defined. 6.1.3.- Recomendaciones Finales: ........... Error! Bookmark not defined. 6.2.- Conclusiones:................................... Error! Bookmark not defined.

Glosario de Términos............................................. Error! Bookmark not defined.

Bibliografía .............................................................. Error! Bookmark not defined.

Page 10: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

X

INDICE DE FIGURAS

Figura 1 65

Figura 2 66

Figura 3 67

Figura 4 68

Figura 5 .69

Figura 6 70

Figura 7 71

Figura 8 72

Figura 9 76

Figura 10 80

Figura 11 80

Figura 12 81

Figura 13 81

Figura 14 82

Figura 15 82

Figura 16 83

Figura 17 83

Figura 18 84

Figura 19 84

Figura 20 85

Figura 21 85

Page 11: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

XI

Figura 22 86

Figura 23 86

Figura 24 87

Figura 25 87

Figura 26 88

Figura 27 89

Page 12: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

1

INTRODUCCIÓN

Las grandes redes de computadoras ameritan estar controladas de una

manera eficaz y correcta para evitar su mal funcionamiento.

Esto conlleva a la utilización de herramientas de hardware y software que

permitan solucionar los problemas presentados en la administración de

grandes Redes Corporativas.

Para los Administradores de Redes, sistemas como los que otorgan las

grandes empresas de Desarrollo (Microsoft, Linux, y otros) se adaptan a su

entorno de trabajo de acuerdo a sus necesidades.

Dependiendo de los requerimientos de la organización se adaptara una que

otra herramienta de software, si esta opción es la más conveniente o no

dependerá del tiempo de uso de la aplicación y de la buena preparación y el

control del Administrador de la Red Corporativa en dicha organización.

Para nuestro tema de proyecto “Servidor de Dominio Corporativo con

integración a Microsoft” vamos a utilizar la plataforma Linux porque

Page 13: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

2

consideramos que presenta muchas bondades en cuanto a la configuración y

parametrización de nuestra futura aplicación.

El mundo actual de las redes de computadoras amerita tener herramientas

sofisticadas que de una manera u otra satisfagan las necesidades de los

Administradores de Redes por motivos como ese y por muchos mas nos

hemos propuesto implementar una aplicación que brinde todas esas

bondades y que sea de igual o mayor magnitud de las que ya existen en el

mercado para de esta manera poder competir con las grandes empresas

proveedoras de sistemas.

Page 14: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

3

CAPITULO 1

ENTORNO PARA EL DESARROLLO DEL PROYECTO

1.- Problemática

1.1.- El Problema

En los actuales momentos las redes computacionales se conforman

de un gran número de estaciones de trabajo (PC’s), surgen problemas

al momento de no poder controlar de forma eficaz algo tan importante

como es el acceso a la información.

Desde el punto de vista de la seguridad, el manejo correcto de la

autenticación es vital para limitar el acceso a la información. Y al no

manejar este concepto, se está abriendo las puertas a los accesos no

permitidos.

La administración (mediante el uso de grupos de trabajo) también se

vuelve un dolor de cabeza para cualquier administrador. Ya que el

esquema de seguridad que aplicamos deberá ser configurado en cada

máquina, individualmente (es decir de forma no centralizada). Por

ejemplo: En el mejor de los casos podremos dar acceso a los usuarios

Page 15: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

4

que estén creados localmente en cada máquina. Mientras que por otro

lado, puede que todos los usuarios de la red tengan permiso para

acceder, modificar o eliminar información.

1.2.- La Solución

Por los problemas definidos anteriormente nuestra propuesta de

solución es realizar una implementación basada en el sistema

operativo Linux con las siguientes prestaciones:

Un servidor de dominio corporativo el cual controlará de una manera

eficaz el acceso de las diferentes estaciones de trabajo a los

diferentes recursos.

Con la implementación de este dominio corporativo se logrará

centralizar el control de acceso que tendrán los usuarios.

Posibilidad de configurar remotamente el servidor de dominio

corporativo, por medio de una interfaz web.

Aplicar las políticas referentes a los usuarios y contraseñas, los

métodos de acceso a los servidores y a los sistemas. Para así poder

Page 16: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

5

identificar a los usuarios que inician sesiones en el dominio,

proporcionando al usuario el acceso a la red de acuerdo a los

derechos de acceso que se le hayan asignado y que sirvan como

prueba de su autenticidad para el resto de los dispositivos de la red,

Definir la complejidad que debe reunir las contraseñas y su validación

dentro de la red, el tiempo de trabajo de las estaciones de trabajo,

áreas de acceso por cada usuario y ocultar los datos frente a accesos

no autorizados

1.3.- Visión

Implementar un modelo seguro de un servidor de dominio en el que

se garantice que todos los usuarios que acceden a nuestro dominio

obtengan los recursos a los que tengan derecho.

1.4.- Misión

Nuestra misión es darle al administrador de red corporativa una

implementación que logre un control eficaz sobre el acceso a los

recursos que presta dicha red y de esta manera evitar las anomalías

que se presentan día a día cuando no se tiene un control total de los

accesos a los servicios que presta dicha red.

Page 17: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

6

Facilitar la transferencia de archivos y la copia de respaldo de los

datos entre miembros del Dominio

1.5.-Objetivos

1.5.1.- General

Llevar a cabo la implementación de un Controlador de Dominio

Primario, es decir, un servidor único que llevará todo el control de la

red interna, obteniendo la información de los usuarios de un servidor

LDAP, para ofrecer la posibilidad a los clientes Windows que inicien

sesión en el dominio.

1.5.2.- Específicos

Compartir servicios y recursos entre los usuarios de un entorno de red

formado por equipos que tengan instalados sistemas operativos

Windows o Linux.

Implantar un esquema de directorios de tipo LDAP para almacenar los

datos de los diferentes usuarios del dominio.

Implantar un esquema de seguridad basado en usuario y contraseña

usando Openldap

Page 18: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

7

Transparentar el inicio de sesión de los diferentes usuarios en el

dominio, es decir que el servidor sea totalmente accesible a los

usuarios autenticados y sin importar que estén usando Linux o

Windows y puedan trabajar sin ningún tipo inconveniente.

Dar los accesos a los recursos permitidos en cualquier punto de la red

mediante un único proceso de inicio de sesión.

Crear un punto de administración único para los objetos de la red.

Implementar una interfaz Web que permita manejar las opciones del

controlador de dominio.

1.6.- Alcances

Configuración de Servidor Linux:

Configuración Samba para interactuar con Windows.

Configuración LDAP como esquema de directorio.

Integración Samba y LDAP

Configuración de los servicios DNS y DHCP

Autenticación y acceso a los recursos

Acceso a los recursos a usuarios autenticados.

Page 19: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

8

Denegación de acceso a usuarios no autenticados.

Ingreso a la página de configuración del Dominio Corporativo

Validación de usuario y contraseña.

Manejo de Grupos y Cuentas:

Grupos

Creación de grupos.

Modificación de grupos (Ingreso o eliminación de usuarios del

grupo).

Eliminación de grupos.

Cuentas de usuario

Recolección de datos para nueva cuenta de usuario.

Almacenamiento de los datos de las diferentes cuentas de

usuario registradas en el dominio (datos como: UID, GID,

nombre completo, e-mail).

Modificación de cuenta.

Eliminación de cuenta.

Page 20: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

9

Cuentas de máquina

Recolección de datos para nueva cuenta de máquina.

Almacenamiento de los datos de la máquina.

Modificación de cuenta.

Eliminación de cuenta.

Manejo de políticas:

Políticas de usuario

Asignación de horarios en que una cuenta puede trabajar

dentro del dominio.

Inhabilitación de cuentas.

Políticas de contraseña

Caducidad de contraseña.

Complejidad de contraseña.

Complejidad predeterminada (alta, media, ninguna).

Complejidad Personalizada

Page 21: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

10

1.7.- Ventajas y Desventajas

1.7.1.- Ventajas

Los servicios de redes más convencionales usan esquemas de

autenticación basados en contraseña. Tales esquemas requieren que

cuando un usuario necesita una autenticación un servidor de red, debe

proporcionar un nombre de usuario y una contraseña.

Lamentablemente, la información de autenticación para muchos

servicios se transmite sin estar encriptada. Para que un esquema de

este tipo sea seguro, la red tiene que estar inaccesible a usuarios

externos, y todos los usuarios de la red deben ser de confianza.

Así este caso, una vez que la red se conecte a la Internet, ya no

puede asumir que la red es segura. Cualquier intruso del sistema con

acceso a la red y un analizador de paquetes puede interceptar

cualquier contraseña enviada de este modo, comprometiendo las

cuentas de usuarios y la integridad de toda la infraestructura de

seguridad.

El principal beneficio de usar LDAP es que la información para una

organización entera puede ser consolidada en un repositorio central.

Por ejemplo, en lugar de manejar listas de usuario para cada grupo

Page 22: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

11

dentro de una organización, LDAP puede ser usado como un

directorio central accesible desde cualquier lugar en la red.

1.7.2.- Desventajas

Openldap presupone que cada usuario es de confianza pero que está

utilizando una máquina no fiable en una red no fiable. Su principal

objetivo es el de prevenir que las contraseñas no encriptadas sean

enviadas a través de la red. Sin embargo, si cualquier otro usuario

aparte del usuario adecuado, tiene acceso a la máquina que emite

tickets usados para la autenticación; llamado

Para que una aplicación use Openldap, el código debe ser modificado

para hacer las llamadas apropiadas a las librerías de Openldad.

Para algunas aplicaciones, esto puede suponer un esfuerzo excesivo

de programación debido al tamaño de la aplicación y su diseño. Para

otras aplicaciones incompatibles, los cambios se deben realizar en el

modo en que el servidor de red y sus clientes se comunican; de

nuevo, esto puede suponer bastante programación. En general, las

aplicaciones de código cerrado que no tienen soporte para Openldap

son usualmente las más problemáticas.

Page 23: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

12

Finalmente, si decide usar Openldap en su red, debe darse cuenta de

que es una elección de todo o nada. Si decide usar Openldap en su

red, debe recordar que si se transmite cualquier contraseña a un

servicio que no usa Openldap para autenticar, se corre el riesgo de

que el paquete pueda ser interceptado. Así, su red no obtendrá ningún

beneficio de usar Openldap.

Page 24: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

13

1.8.- Análisis FODA

1.8.1.- Fortalezas

Los usuarios solo van tener los privilegios necesarios para

acceder a los recursos que necesitan siendo usuarios.

Para identificar un equipo de la red se usaran nombres que es

más fácil de recordar que las respectivas direcciones IP del

equipo al que se a de acceder.

Las direcciones IP pueden cambiar pero los nombres

permanecen constantes.

Evitar que las claves de acceso se repitan entre los usuarios.

Autentificado el usuario en el dominio, de manera que el

usuario para que solo pueda acceder a los recursos que se le

hayan asignados

Administrar usuarios mediante el uso de grupos de usuarios, el

cual nos da la facilidad de aplicar las políticas de seguridad a

Page 25: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

14

grupos específicos los cuales heredaran estas a los miembros

de dicho grupo.

1.8.2.- Oportunidades

Los usuarios no necesitaran de aprenderse números

(direcciones IP) solo deberán de recordar un nombre para

encontrar los recursos ya sea en Internet o en una Intranet, lo

cual facilita el trabajo de el usuario al momento de solicitar un

recurso.

Los usuarios solo van tener los privilegios necesarios a los

recursos que necesitan para realizar sus actividades de

usuarios, es decir, solo accederán a los recursos que se hayan

previamente definido, evitando así cualquier intromisión en

alguna recurso que no se le haya asignado

La seguridad del sistema depende en gran medida de nuestras

políticas y de la configuración del sistema.

Revisar las claves de los usuarios para evitar claves fáciles.

Page 26: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

15

1.8.3.- Debilidades

En un exceso de seguridad, podemos cometer el error de limitar

demasiado los privilegios de los usuarios. Esto hace que el

usuario no pueda usar los recursos que normalmente

necesitaría para desempeñar su trabajo.

Si los usuarios tienen privilegios de los que más allá de sus

funciones requieran, estos por desconocimiento,

experimentación o maldad causen daño al sistema o

entorpezcan el trabajo de otros usuarios.

Al establecer las políticas de contraseña se obligue al usuario a

usar claves de acceso difíciles de recordar para el y tenga que

tener que escribirlas en un papel o dejar la clave en una parte

visible.

1.8.4.- Amenazas

A los usuarios del sistema no se les establezcan normas y

políticas sobre el uso de la máquina

Page 27: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

16

Establecer que haya varios administradores para uno o varios

recursos, es decir varias personas pueden controlar un recurso

al mismo tiempo.

Que el usuario al momento de solicitarle el cambio de una clave

de acceso solo le cambie una letra o un número.

1.9.- Arquitectura del Sistema

1.9.1. Modelo de desarrollo

El modelo de desarrollo que se planifico para la puesta en marcha

del proyecto es El Método de Ciclo de Vida en Espiral, para

empezar a implementar este modelo debemos establecer los

objetivos, alcances, visión y misión del proyecto, planificación de

las tareas requeridas para definir recursos, el tiempo y otras

informaciones relacionadas con el proyecto. Establecer el Análisis

de riesgos: las tareas requeridas para evaluar riesgos técnicos y

otras informaciones relacionadas con el proyecto.

El Método de Ciclo de Vida en Espiral se eligió por los siguientes

motivos:

Page 28: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

17

En cada giro que se realiza en este modelo se usa como nuevo

punto de partida en base a lo que anteriormente definido,

permitiendo corregir los errores sin mayor complicación

Permite aplicar el enfoque de construcción de prototipos en

cualquier etapa de evolución del proyecto.

Reduce los riesgos antes de que se conviertan en problemas.

1.9.2.- Arquitectura para el desarrollo WEB

En la implementación de nuestra aplicación vamos a utilizar la

arquitectura de tres capas para el desarrollo WEB:

La ventaja principal de este estilo, es que el desarrollo se puede llevar

a cabo en varios niveles y en caso de algún cambio sólo se lo realiza

al nivel requerido sin tener que revisar entre el código de los otros

componentes.

Además permite distribuir el trabajo de creación de una aplicación por

niveles, de este modo, cada grupo de trabajo está totalmente

Page 29: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

18

abstraído del resto de niveles, simplemente es necesario conocer la

API que existe entre niveles.

En el diseño de sistemas informáticos actual se suele usar las

arquitecturas multinivel o Programación por capas. En dichas

arquitecturas a cada nivel se le confía una misión simple, lo que

permite el diseño de arquitecturas escalables (que pueden ampliarse

con facilidad en caso de que las necesidades aumenten).

1.9.2.1.- Primera Capa:

La primera capa es diseñar la interfaz grafica para el usuario, de modo

que el sistema comunique la información y así capturar la información

interactuando con la aplicación externa, es decir, presenta el sistema

al usuario, le comunica la información y captura la información del

usuario dando un mínimo de proceso. Esta capa se comunica

únicamente con la capa de negocio.

1.9.2.2.- Segunda Capa:

Servidor de aplicaciones Tomcat el cuál servirá las páginas jsp, aquí

es donde residen los programas que se ejecutan, recibiendo las

peticiones del usuario y enviando las respuestas tras el proceso. Esta

capa se comunica con la capa de presentación, para recibir las

Page 30: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

19

solicitudes y presentar los resultados, y con la capa de datos, para

solicitar al gestor de base de datos para almacenar o recuperar datos

de él.

1.9.2.3.- Tercera Capa:

La tercera capa es un sistema de bases de datos para guardar las

configuraciones que el usuario realice al Servidor de Dominio. Está

formada por un de gestor de bases de datos que realiza todo el

almacenamiento de datos, reciben solicitudes de almacenamiento o

recuperación de información desde la capa de negocio.

Page 31: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

20

1.10.- Recursos

1.10.1.- Hardware

3 PC´s (PC_01 Servidor Linux, PC_02 Cliente Windows, PC_03

Cliente Windows y Virtual Machine para Linux)

Memoria RAM: 512 Mb en adelante c/u para los equipos Linux.

Disco duro: 40GB

1 Switch

3 Cables de red con conectores rj45

1.10.2.- Software

S.O. Windows XP.

Máquina Virtual para Linux.

S.O. Linux Fedora Core.

Java

Navegador FireFox Mozzilla.

Servidor de Aplicaciones Apache.

Base de datos PostGre

Open Ldap

Page 32: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

21

1.10.3.- Descripción del Hardware y Software

1.10.3.1.- Hardware

La primera PC se la utilizara como Servidor. Esta se encargará

de controlar el Dominio, receptara las solicitudes de ingreso de

los clientes, además de ser la puerta de enlace para acceder a

los recursos compartidos en el Dominio.

La segunda y tercera Pc se las utilizara como clientes, las

cuales realizaran la función de pedir acceso al servidor,

compartir recursos y solicitar recursos entre ellas y al servidor

Las Pc’s antes descritas deben poseer ciertas características

de Hardware como memoria RAM de 512 Mb y disco duro de

40 Gb, tarjeta de red,

El Switch de ocho puertos de 10/100 Mbps, los cables servirán

para interconectar las computadoras entre si.

1.10.3.2.- Descripción del Software

Lo que busca nuestra solución de software es realizar de forma

transparente la configuración del dominio corporativo, es decir,

que el administrador no tendrá que configurar directamente

Page 33: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

22

cada uno de los elementos que se emplean en la

implementación del dominio. Sea este LDAP o Samba.

El software, que será desarrollado mediante la arquitectura 3

capas, se encargará de recoger los cambios a realizar mediante

su interfaz web y así mismo será el encargado de realizar las

configuraciones correspondientes en cada elemento

implementado.

El software será desarrollado aplicando programación JSP, que

nos permite aprovechar las bondades del lenguaje Java.

La forma de acceder al software será mediante un navegador

web, que será el encargado de presentar nuestras páginas

JSP.

Las páginas JSP están compuestas de código HTML/XML

mezclado con etiquetas especiales para programar scripts

ejecutables en el servidor en sintaxis Java (que es en esencia

un lenguaje multiplataforma). Por lo tanto, las JSP podremos

escribirlas con nuestro editor HTML/XML habitual.

Page 34: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

23

Las razones para escoger estas herramientas son:

Plataforma e independencia del servidor.- JSP sigue la

filosofía de la arquitectura JAVA de "escribe una vez

ejecuta donde quieras"

Proceso de desarrollo abierto (open source).- El API JSP

se beneficia de la extendida comunidad JAVA existente.

Reusabilidad entre plataformas.- Los componentes JSP

son reusables en distintas plataformas (UNIX, Windows)

1.10.3.3.- Implementación

La implementación del dominio se la hará en la distribución

Linux Fedora 6 (kernel 2.6).

La autenticación será Single Sign On, lo que implica que el

usuario se logonea una sola vez en el dominio y no logonearse

por cada servicio de la red al que se quiere acceder.

La base del dominio estará en 3 componentes:

Samba (Para integración con equipos con plataforma Microsoft)

Page 35: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

24

LDAP (servicio de directorio)

A parte de estos componentes, serán configurados para este

proyecto los siguientes servicios:

DHCP (Administración de IPs dentro del dominio)

DNS (Para resolución de nombres)

1.10.3.3.1.- Samba

Se usará Samba 3 para lograr la interacción entre los equipos

con plataforma Linux y los que tienen plataforma Microsoft

Cabe recalcar que Samba 3 no es un equivalente de Windows

2003 Server.

Samba ofrece las siguientes características:

Administración de cuentas

Aprovisionamiento de recursos.

Soporte para roles de administración.

Administración de servicios.

Page 36: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

25

1.103.3.2.- LDAP (Lightweight Directory Access Protocol)

LDAP será el directorio del dominio corporativo y será usado

por Openldap para autenticar la información provista por los

usuarios que intentan logonearse en el dominio.

La ventaja principal de usar LDAP es la consolidación de cierto

tipo de información en el interior de su empresa. Por ejemplo,

todas las diferentes listas de usuarios en el interior de su

empresa pueden ser fusionadas en un solo directorio LDAP.

Este directorio, a continuación, podrá ser consultado desde

cualquier aplicación habilitada para LDAP a la que le sirva la

información.

En ambas Pc que servirán de cliente tendrán instalado el

sistema operativo Windows XP, las cuales se las configurara

como miembros del Dominio, además en una de las Pc clientes

se les instalara el Vmware para poder instalar un tercer cliente

que tendrá como sistema operativo una distribución de Linux

El VmWare es un software que permite crear una maquina

virtual dentro del sistema operativo XP, en esta maquina virtual

se puede instalar otro sistema operativo sin que afecte al que

Page 37: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

26

esta inicialmente instalado, y a su vez se puedan estar

ejecutando los dos sistemas operativos a la vez.

En el computador que se usara como servidor se instalara una

distribución del Sistema Operativo Linux

El lenguaje de programación que se utilizara en la creación de

la interfaz Web es Java.

Para levantar la aplicaron Web se utilizara el navegador FireFox

Mozilla nos permitirá levantar la aplicación a crear en el

ambiente web

Page 38: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

27

1.11- Cronograma de Actividades

Para el desarrollo e implementación se han considerado 184 días

Actividad Duración

Fecha

Comienzo Fecha Fin

Entrega del tema de proyecto 1 día lun 16/04/07 lun 16/04/07

Comprensión del tema 1 día mar 17/04/07 mar 17/04/07

Diálogo sobre el tema del

proyecto 1 día mar 17/04/07 mar 17/04/07

Entrevista con el ayudante de

proyecto 1 día mié 18/04/07 mié 18/04/07

Entendimiento general del

funcionamiento de Linux 2 días jue 19/04/07 vie 20/04/07

Investigar funcionamiento de

SAMBA 3 días lun 23/04/07 mié 25/04/07

Investigar funcionamiento de DNS

y DHCP 3 días lun 23/04/07 mié 25/04/07

Investigar funcionamiento de

LDAP 3 días lun 23/04/07 mié 25/04/07

Investigar sobre integración

SAMBA, y LDAP 3 días lun 23/04/07 mié 25/04/07

Misión 1 día jue 26/04/07 jue 26/04/07

Page 39: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

28

Visión 1 día jue 26/04/07 jue 26/04/07

Determinar el Problema 1 día vie 27/04/07 vie 27/04/07

Determinar nuestra Solución 1 día vie 27/04/07 vie 27/04/07

Definir de objetivos Generales 1 día lun 30/04/07 lun 30/04/07

Definir de objetivos Específicos 1 día mar 01/05/07 mar 01/05/07

Determinar Alcances 2 días mar 01/05/07 mié 02/05/07

Establecer Arquitectura del

sistema 1 día jue 03/05/07 jue 03/05/07

Establecer Modelo de desarrollo 1 día jue 03/05/07 jue 03/05/07

Establecer Metodología de diseño 1 día jue 03/05/07 jue 03/05/07

Establecer Recursos 1 día vie 04/05/07 vie 04/05/07

Estudio de Mercado 1 día lun 07/05/07 lun 07/05/07

Análisis del mercado 1 día mar 08/05/07 mar 08/05/07

Elaborar cuestionario de la

entrevista 1 día mié 09/05/07 mié 09/05/07

Entrevistas para los usuarios y

jefes de sistemas 3 días jue 10/05/07 lun 14/05/07

Establecer políticas de servicio 1 día mar 15/05/07 mar 15/05/07

Estudio Técnico 1 día mié 16/05/07 mié 16/05/07

Análisis FODA del sistema 1 día jue 17/05/07 jue 17/05/07

Establecer proceso de servicio 1 día lun 07/05/07 lun 07/05/07

Page 40: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

29

Establecer proceso de desarrollo

del software 1 día mar 08/05/07 mar 08/05/07

Definir requerimientos de

Hardware y Software 1 día mar 08/05/07 mar 08/05/07

Establecer descripción de

Hardware y Software 1 día mar 08/05/07 mar 08/05/07

Análisis del Proyecto 2 días mié 09/05/07 jue 10/05/07

Elaboración del Diagrama Entidad

Relación (DER) 1 día vie 11/05/07 vie 11/05/07

Diccionario de Datos 3 días lun 14/05/07 mié 16/05/07

Elaboración de Diagrama de Flujo

de datos (DFD) 2 días jue 17/05/07 vie 18/05/07

Elaboración de Diagrama de Flujo

de Información (DFI) 2 días jue 17/05/07 vie 18/05/07

Elaboración de Diagrama de

Transición de Estados (DTE) 2 días lun 21/05/07 mar 22/05/07

Elaboración de Diagrama de

Componente 2 días lun 21/05/07 mar 22/05/07

Diseño del Proyecto 2 días mié 23/05/07 jue 24/05/07

Instalación de herramientas de

diseño 2 días vie 25/05/07 lun 28/05/07

Instalación de JAVA 1 día mar 29/05/07 mar 29/05/07

Page 41: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

30

Instalación de Wmware

Workstation 1 día mié 30/05/07 mié 30/05/07

Instalación de Sistema Operativo

Linux distribución Fedora Core 7 1 día mié 30/05/07 mié 30/05/07

Instalación de Apache 1 día jue 31/05/07 jue 31/05/07

Instalación de Postgresql 1 día vie 01/06/07 vie 01/06/07

Diseño de Interfaces 20 días lun 04/06/07 vie 29/06/07

Diseño de interfaz de opción de

Usuario 15 días lun 02/07/07 vie 20/07/07

Configuración de el Servidor

(Crear el dominio) 1 día lun 23/07/07 lun 23/07/07

Configurar el Samba 2 días mar 24/07/07 mié 25/07/07

Configurar el OpenLdap 2 días jue 26/07/07 vie 27/07/07

Configurar los demás equipos del

dominio 2 días lun 30/07/07 mar 31/07/07

Establecer explicación de

Interfaces del sistema 3 días mié 01/08/07 vie 03/08/07

Revisión General de la primera

fase de presentación 3 días Mie 06/08/07 mar 08/08/07

Diseño de la base de datos 10 días mié 08/08/07 mar 21/08/07

Codificación 37 días mié 12/09/07 mie 31/10/07

Page 42: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

31

Plan de pruebas 10 días jue 1/11/07 vie 14/11/07

Corrección 20 dias Mar 6/11/07 lun 2/12/07

Implementación del Proyecto 15 días lun 19/11/07 Jue 29/11/07

Entrega del Proyecto 15 días Vie 30/11/07 Vie 14/12/07

1.12- Estudio de Mercado

Nuestro estudio de Mercado se lo realizó en base a las necesidades

de las grandes y pequeñas organizaciones que deben controlar de

una manera eficaz su red de computadoras, así mismo como la

configuración de lo recursos compartidos y la asignación de

privilegios a los diferentes usuarios en dicha red.

El objetivo principal es conseguir la aceptación de nuestro producto

en dicho mercado, conocer la opinión de nuestros clientes sobre

nuestro producto y así realizar nuevas modificaciones para que en

futuras versiones de nuestro sistema se pueda corregir estas

falencias y mostrar un producto que brinde mejores prestaciones.

El sistema a implementar será desarrollado con herramientas de

código abierto para poder competir con los productos ya existentes

en el mercado de las diferentes empresas desarrolladoras de

Page 43: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

32

software y ofrecer una herramienta que reúna en un solo paquete de

software tosa las aplicaciones relaciona con los Servidores de

Dominios Corporativos.

1.12.1.- Análisis de Mercado

Nuestro mercado meta son las pequeñas y grandes empresas que

necesitan tener una herramienta que les permita administrar (sus

falencias en la prestación de servicios y administración de) los

recursos compartidos en sus redes de computadoras.

En nuestro mercado meta son muy pocas las organizaciones que

tienen implantado una herramienta que les permita control total sobre

sus redes locales, nuestro servidor de domino corporativo esta

orientado a este tipo de clientes.

Se desarrollara una herramienta de fácil acceso y configuración para

que de esta manera se vaya ubicando en nuestro mercado meta

Page 44: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

33

1.13.- Análisis de Riesgos e intangibles

Que nuestro sistema no se adapte a nuestros clientes lo que

incurriría en un nuevo análisis de los requerimientos del

software a implementar

Si las aplicaciones existentes para cubrir la necesidad de un

Servidor de Dominio Corporativo ofrecen mejores beneficios

que nuestro sistema a implementar, nuestros clientes se

decidan por estas y dejen a un lado nuestra aplicación.

Que la metodología de desarrollo elegida no sea la correcta

Surgimiento de nuevas especificaciones del Software.

Estimación errónea del tiempo.

Problemas con el Personal de Desarrollo

No llegar a un consenso para las reuniones establecidas en

cuanto a la planificación de la entrega de avances de la

aplicación a implementar por parte del grupo de desarrollo.

Un grave problema es la preparación de los usuarios hacia la

nueva herramienta a utilizar esto se produce por el poco

conocimiento para manejar software

Debemos tener nuestro plan de contingencias en casos de

perdidas de información cuando no realicemos los respaldos

respectivos.

Page 45: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

34

Problemas con los equipos de hardware

1.13.1.- Interpretación de los riesgos

Que nuestro sistema no se adapte a nuestros clientes lo que

incurriría en un nuevo análisis de los requerimientos del software

a implementar.

Un mundo aparte son los clientes ellos siempre van a tener la razón, y

esto conlleva a nuestros programadores a tratar de una manera u otra

adaptarse a todo tipo de clientes porque se van a realizar severas

modificaciones si es el caso por ejemplo que se tenga que cambia la

GUI (Interfaz Grafica de Usuario) al estilo que prefiere el cliente, o

talvez la manera como nuestro sistema presenta los reportes no le

agrade, situaciones que para los diseñadores de software conllevan en

ciertos casos a tumbar todo un proceso largo de desarrollo y no queda

más que empezar otra vez con una nueva entrevista o un nuevo

análisis.

Page 46: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

35

Si las aplicaciones existentes para cubrir la necesidad de un

Servidor de Dominio Corporativo ofrecen mejores beneficios que

nuestro sistema a implementar, nuestros clientes se decidan por

estas y dejen a un lado nuestra aplicación.

Si bien es cierto tenemos que poner los pies sobre la tierra y saber

que vamos a competir con verdaderos gigantes del desarrollo de

software pero esto no conlleva a que nos amilanemos y no podamos

competir en ese gran mercado, por el contrario con una herramienta

optima podremos hacernos conocer en este medio y de esa forma ir

ganando terreno en el desarrollo de software.

Que la metodología de desarrollo elegida no sea la correcta

Este punto conlleva a perdidas de tiempo exageradas, no haber

establecido la metodología correcta de desarrollo seria como empezar

el proyecto desde cero al no tener una comunicación entre los

diferentes módulos no podríamos realizar las pruebas establecidas y

peor aun no lograríamos la integración final de los paquetes de código

algo que seria catastrófico para nuestro objetivo final.

Page 47: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

36

Surgimiento de nuevas especificaciones del Software

Siempre en todo proyecto de desarrollo de software va a pasar que de

último momento se ven reflejados nuevos requerimientos, que conlleva

esta situación lo primero el tiempo estimado del proyecto se alarga,

luego realizar nuevos módulos e integrarlos a ultima hora pero

debemos estar preparados para situaciones como esta.

Estimación errónea del tiempo

Todo proyecto debe cumplir con un tiempo estimado para su

finalización pero también es cierto que se da el caso que se alarga

nuestra proyección del tiempo que efectos conlleva esta situación, no

cumplir con nuestros objetivos definidos, la insatisfacción de nuestro

cliente y por ultimo puede darse el caso de cierre de proyecto.

Problemas con el Personal de Desarrollo

En el manejo de recursos para este proyecto se debe llegar a un

consenso para de una manera u otra apuntar a un solo objetivo que es

la finalización del proyecto pero es verdad que si falta esa

comunicación entre desarrolladores o que no se acepten criterios de

Page 48: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

37

los otros integrantes y se tenga una manera autoritaria de imponer sus

ideas y no se permita la democracia y aceptar que no siempre se tiene

la razón en todo y aprender a escuchar y mancomunadamente apuntar

a un objetivo común.

No llegar a un consenso para las reuniones establecidas en

cuanto a la planificación de la entrega de avances de la aplicación

a implementar por parte del grupo de desarrollo

Todos tenemos nuestro tiempo bien planificado para realizar nuestras

actividades, pero para conseguir que este proyecto llegue a su

culminación deberemos adaptarnos a los horarios establecidos en un

consenso previo sin que esto conlleve a quitarnos tiempo laboral, y no

poder reunirnos para revisar los avances del sistema, si bien es cierto

esto es lo que siempre ocurre la falta de tiempo para las reuniones

puede llevar a no terminar con el objetivo trazado.

Un grave problema es la preparación de los usuarios hacia la

nueva herramienta a utilizar esto se produce por el poco

conocimiento para manejar software

Page 49: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

38

En el momento de la implantación de nuestra aplicación en la empresa

XYZ que solicito nuestros servicios, debemos realizar la respectiva

capacitación a los usuarios sean esto los novatos o los avanzados

dependerá de las políticas de la empresa a quienes colocaran en el

manejo de la nueva herramienta por nuestra parte tenemos que

adaptarnos a los diferentes tipos de usuarios que se nos presenten en

dicha organización.

Debemos tener nuestro plan de contingencias en casos de

perdidas de información cuando no realicemos los respaldos

respectivos.

Es vital en todo proyecto realizar respaldos de la información que

estemos procesando y mas aun en un proyecto de desarrollo de

software en donde las líneas de código son fundamental para la

integración de los diferentes módulos a diseñar con un plan de

contingencias bien definido y cumpliendo con el procedimiento

establecido esto no debería ocurrir pero se debe tener en cuenta ante

cualquier anomalía que se presente como riesgos naturales por

ejemplo.

Page 50: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

39

Problemas con los equipos de hardware

Para poder implementar un sistema como el que vamos a desarrollar

debemos contar con tecnología que preste todas las bondades para

nuestro estudio investigativo pero debemos tener protegidos estos

equipos en todos los aspectos, seguridad corriente, etc., porque la

falla o desperfecto de unos de ellos conllevaría a retratos severos en

cuanto al tiempo establecido.

1.13.2.- Impacto Probabilidades y Plan de Contingencias de riesgos

Que nuestro sistema no se adapte a nuestros clientes lo que

incurriría en un nuevo análisis de los requerimientos del software

a implementar.

Impacto

Si el sistema a implementar no cumple con los requerimientos

del cliente este no aceptará el producto y pedirá que se realicen

modificaciones para adaptarlo a sus necesidades.

Page 51: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

40

Probabilidad

La vamos a calificar como una probabilidad baja porque si esto

ocurre entonces no tenemos bien definido los alcances del

sistema y esto se lo realiza en las fases iniciales donde se

establecen los requerimientos previos.

Plan de Contingencia

Para que el sistema se adapte a los requerimientos del cliente

deberemos realizar entrevistas periódicas con la parte

interesada y presentar prototipos para ir mejorando la entrega

final y también deberemos conocer los procesos que se

ejecutan en la empresa para comprobar si nuestro sistema va a

optimizar esos procesos.

Si las aplicaciones existentes para cubrir la necesidad de un

Servidor de Dominio Corporativo ofrecen mejores beneficios

que nuestro sistema a implementar, nuestros clientes se

decidan por estas y dejen a un lado nuestra aplicación.

Impacto

Para el grupo de desarrollo conllevaría a tener que recapitular el

proyecto y diseñar una herramienta con más prestaciones y

beneficios para poder satisfacer al cliente.

Page 52: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

41

Probabilidad

La probabilidad es media alta porque el cliente esta en su

derecho de escoger la herramienta que para el sea mas

conveniente indistintamente que esa elección sea la correcta

Plan de Contingencia

Si la aplicación no satisface a nuestro cliente debemos tener

implementados sistemas que ofrezcan muchas bondades

adicionales con el que estamos promocionando y de esta

manera brindarle al cliente varias alternativas.

Que la metodología de desarrollo elegida no sea la correcta

Impacto

Esto conlleva a que se debe escoger una nueva metodología

para rediseñar lo que ya se ha establecido y conlleva a la

perdida de tiempo.

Probabilidad

En este caso vamos a calificar la probabilidad como baja ya que

se debe realizar un análisis minucioso antes de seleccionar la

metodología adecuada

Page 53: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

42

Plan de Contingencia

La metodología a utilizar se la define en las entrevistas con el

cliente el es el que nos va a dar la pauta para la selección de un

tipo u otro a utilizar si se da el caso la clásica o la orientada a

objetos

Surgimiento de nuevas especificaciones del Software

Impacto

El tiempo de culminación del proyecto se verá afectado porque

se tiene que detallar los nuevos requerimientos del cliente y

adaptarlos a los ya definidos incrementando las actividades y el

tiempo de culminación del proyecto.

Probabilidad

La probabilidad para este riesgo es media porque es en la etapa

de análisis donde se establecen las políticas de desarrollo y de

cambio en caso de presentarse esta situación.

Plan de Contingencia

En el inicio de las actividades se establecen políticas de

desarrollo para que los cambios no afecten severamente al

tiempo de entrega del sistema

Page 54: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

43

Estimación errónea del tiempo

Impacto

Se va a alargar la entrega del sistema al cliente porque no se

cumplirán con los tiempos establecidos en el cronograma de

actividades.

Probabilidad

La probabilidad de este riesgo la vamos a calificar media alta

porque siempre se presentan acontecimientos que se escapan

de la planificación establecida en la etapa de desarrollo.

Plan de Contingencia

Es fundamental establecer el cronograma de actividades

estableciendo los tiempos fijos para la culminación de las

diferentes etapas de los módulos que serán integrados cabe

recalcar que en este cronograma también se debe determinar

holguras de tiempo para los imprevistos que se presenten.

Problemas con el Personal de Desarrollo

Impacto

Esto afectará a la estabilidad del grupo de desarrolladores

porque no se podrá llegar a un consenso en cuanto a la

Page 55: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

44

comunicación entre los involucrados en el desarrollo del

proyecto.

Probabilidad

Debemos de entender que una cosa es lo personal y otra lo

laboral porque cuando se juntan las dos partes y se transmite

esa inestabilidad al grupo se obtienen malos resultados esta

probabilidad la vamos a calificar como poco probable

Plan de Contingencia

Si bien es cierto cada persona es un mundo debemos buscar

manejar de buscar la conciliación y el dialogo con actividades

que involucren establecer canales de comunicación entre los

integrantes del grupo y de esta manera buscar la estabilidad

para alcanzar los objetivos específicos.

No llegar a un consenso para las reuniones establecidas en

cuanto a la planificación de la entrega de avances de la aplicación

a implementar por parte del grupo de desarrollo

Impacto

Si bien es cierto no significa que porque se reúna muy a

menudo el grupo esto conllevará a obtener un resultado

Page 56: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

45

satisfactorio pero también la falta de reunión producirá poco

entendimiento de la visión general de lo que el sistema debe

reflejar.

Probabilidad

Pues bien para suplir este inconveniente se estableció previo

consenso un cronograma de actividades en el cual todos

estuvimos de acuerdo por eso vamos a calificar esta

probabilidad como baja.

Un grave problema es la preparación de los usuarios hacia la

nueva herramienta a utilizar esto se produce por el poco

conocimiento para manejar software

Impacto

El usuario posee conocimientos básicos de herramientas de

software por tal motivo adaptarse a una nueva aplicación con un

entorno nuevo de interfaz podría provocar un impacto severo en

sus rutinas diarias por tal motivo podría poner resistencia para

usar el nuevos sistemas implantado en su organización.

Page 57: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

46

Probabilidad

Dependiendo de las políticas de la empresa XYZ que compre

nuestro sistema dependerá la capacitación del mismo, en

general nuestra aplicación va dirigida a usuarios avanzados

porque se trata de un sistema que va controlar procesos por tal

motivo se califica a esta probabilidad como baja porque el

usuario debe tener conocimientos previos en sistemas de este

tipo

Plan de Contingencia

El sistema se desarrollará para que los diferentes tipos de

usuario se adapten a la nueva herramienta para se entregará un

manual de usuario que indique todo lo relacionado con el

correcto funcionamiento del sistema con esto hasta los usuarios

novatos en aplicaciones de dominio podrán entender y

configurar los servidores de una manera muy fácil y rápida.

Problemas con los equipos de hardware

Impacto

Catastrófico si un equipo dejará de funcionar el riesgo seria

grave porque se tendría que adquirir un nuevo computador lo

Page 58: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

47

que conlleva aumento del presupuesto y peor aun afectaría al

cronograma de tiempo establecido.

Probabilidad

Esta probabilidad es alta porque este tipo de imprevistos son los

que muy a menudo suceden y en este caso se deberá contar un

plan de contingencias para corregir el problema.

Plan de Contingencia

Aunque esto incurre costo adicional debemos tener un equipo

extra para el caso de falla de hardware y con esto poder

reemplazarlo en el omento justo sin que altere la planificación

establecida.

1.13.3.- Tabla de riesgos

Para nuestro sistema vamos a considerar la siguiente

nomenclatura para identificar el nivel de impacto

1. Riesgo leve

2. Riesgo fuerte

3. Riesgo agresivo

Page 59: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

48

Riesgo Probabilidad Impacto

Que nuestro sistema no se adapte a nuestros

clientes lo que incurriría en un nuevo análisis de los

requerimientos del software a implementar

25% 1

Si las aplicaciones existentes para cubrir la

necesidad de un Servidor de Dominio Corporativo

ofrecen mejores beneficios que nuestro sistema a

implementar, nuestros clientes se decidan por estas

y dejen a un lado nuestra aplicación.

50% 2

Que la metodología de desarrollo elegida no sea la

correcta 50 % 2

Surgimiento de nuevas especificaciones del

Software 50 % 2

Estimación errónea del tiempo 40 % 2

Problemas con el Personal de Desarrollo 30 % 2

No llegar a un consenso para las reuniones

establecidas en cuanto a la planificación de la

entrega de avances de la aplicación a implementar

por parte del grupo de desarrollo

40 % 2

Un grave problema es la preparación de los usuarios

hacia la nueva herramienta a utilizar esto se produce 30 % 1

Page 60: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

49

por el poco conocimiento para manejar software

Debemos tener nuestro plan de contingencias en

casos de perdidas de información cuando no

realicemos los respaldos respectivos.

70 % 2

Problemas con los equipos de hardware 40 % 2

1.14.- CONCLUSION

Con este tipo de herramientas informáticas trataremos de que la

utilización de este sistema sea de lo mas amigable para el usuario y

que preste todas las bondades de los Servidores de Dominio

existentes en el mercado para poder competir en un futuro no muy

lejano con nuestra aplicación en los requerimientos de las

organizaciones de nuestro mercado ya establecido.

Page 61: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

50

CAPITULO 2

Análisis

2.1.- ¿Que es Servidor de Dominio Corporativo?

Un dominio es un conjunto de ordenadores conectados en una red

que confían a uno de los equipos de dicha red la administración de los

usuarios y los privilegios que cada uno de los usuarios tiene en dicha

red.

El Servidor de Dominio Corporativo es aquel que tiene la

responsabilidad de administrar las cuentas y recursos del dominio en

cuestión, y/o servidores y /o estaciones de trabajo.

Los usuarios de un mismo dominio tendrán un inicio de sesión único

(Single Sing-On) en el servidor del dominio para acceder a los

recursos de cualquier parte de la red, una cuenta única para acceder a

las máquinas del dominio

La característica de resolución de nombres se encarga de

comprender el nombre (un texto) que le envía, en una dirección IP

Page 62: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

51

(números). Si se encuentra el nombre que se esta indicando, dentro

del dominio, la resuelve dándole el acceso que se le haya previamente

establecido al usuario.

Las características más importantes de un Servidor de nombres de

dominio son:

Se podrá dividir la red en dominios y sub-dominios creando una

estructura jerárquica que esta identificada por caminos, por lo que un

departamento de una empresa podrá ser una región compuesta de

uno o más dominios y sub-dominios administradas por un único

administrador. Cada departamento se identificara por un nombre o

alias y cada nombre de dominio de un nodo del servicio de dominio

está formado por una agrupación de nombres, cada una de ellas

separada por un punto.

2.2.- Componentes del Servidor de Dominio Corporativo.

2.2.1.- Cuentas de usuarios

En las cuentas de los usuarios se establecen datos como el

propietario de la misma, contraseña de acceso, localización de su

directorio de inicio de sesión, grupo al que pertenece.

Page 63: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

52

Cuenta local de usuario: pertenecen a una única estación de trabajo.

El procedimiento de login de las mismas se valida en una base de

datos local de la estación. La herramienta administrativa de la estación

para crearlas, modificarlas, borrarlas y establecer políticas de

seguridad es el Administrador de usuarios o el Administrador de

usuarios para dominios.

Cuenta de dominio: pertenecen al dominio en cuestión. El

procedimiento de login requiere, además del nombre de usuario y

contraseña, el dominio al que se está haciendo login. La validación se

hace en una base de datos existente en el servidor de dominio. La

herramienta administrativa del servidor para crearlas, modificarlas,

borrarlas y establecer políticas de seguridad del dominio es el

Administrador de usuarios para dominios.

Tanto si se hace login en un tipo de cuenta u otro, para acceder al

menú de seguridad de la estación o el servidor

2.2.2.- Cuentas de grupos

Las cuentas de usuarios se organizan en grupos. Cuando se añade un

usuario a un grupo, el usuario tendrá los derechos y permisos

asignados a ese grupo.

Page 64: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

53

Grupo local: lo forman cuentas locales de usuarios y grupos globales

de otros dominios. Se usan para asignar a grupos de usuarios

permisos para acceder a un recurso.

Grupo global: lo forman únicamente cuentas de dominio. Aunque los

grupos globales pueden usarse para asignar permisos a los recursos,

su funcionalidad principal es agrupar las cuentas de un dominio. Para

lo primero es mejor añadir los grupos globales como locales.

Los usuarios se convierten en miembros de los grupos de sistema

automáticamente al acceder a la red.

Es conveniente revisar qué derechos tienen todos estos grupos por

defecto dentro del menú de políticas de derechos de usuarios

2.2.3.- Clientes (estaciones de trabajo)

El usuario en su estación de trabajo cuando intenta acceder a un

recurso (por ejemplo intenta acceder a una maquina que se llama

“Respaldos”) solicita una consulta para resolver el nombre del recurso

que el esta solicitando (en este caso “Respaldo”), básicamente

preguntan por la dirección IP que corresponde a un nombre

determinado. Este proceso de solicitud es transparente para el

Page 65: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

54

usuario, ya que en su equipo internamente ejecuta programas para

realizar la consulta.

2.2.4.- Servidores de Dominio.

Son servicios que se han configurado en el Servidor para que escuche

y conteste las solicitudes de consultas realizadas por los Clientes.

Este obtiene la información del dominio a partir de un archivo de

configuración ubicado en el mismo servidor.

2.3.- Samba

Empleado en sistemas Uni/Linux para lograr interactuar con sistemas

Microsoft.

Atributos de interés:

sambaLMPassword

sambaNTPassword

sambaSID (requerido)

sambaPrimaryGroupSID

Ítems que se pueden sobrecargar en configuraciones de smb.conf al

usar Samba como Controlador de Dominio Primario:

sambaHomePath

sambaLoginScript

sambaProfilePath

sambaHomeDrive

Page 66: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

55

2.4.- LDAP

LDAP significa Lightweight Directory Access Protocol (Protocolo

Liviano de Acceso a Directorio), es un protocolo que provee servicios

de directorio, organizando la información de forma muy similar a como

lo hace un sistema de archivos, o el servicio de nombres de dominio

(DNS) en Internet.

2.4.1.- Jerarquías en árbol de varios servicios

LDAP funciona como una base de datos, optimizada para las

operaciones de lectura y búsqueda. Por otro lado, no posee

soporte para ingreso de datos por transacciones ni rollback, que se

encuentran en los motores de base de datos relacionales.

Normalmente en LDAP las operaciones de ingreso de datos son a

todo o nada.

La arquitectura cliente-servidor y estructura en forma de árbol que

utiliza LDAP para almacenar su información, tiene algunas ventajas

muy interesantes, como ser:

Evita la duplicación de datos, la estructura de datos obliga a

que no exista el mismo dato en dos lugares diferentes del

esquema.

Page 67: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

56

Permite la distribución de la administración, al igual que el

servicio de DNS, la responsabilidad en la administración de los

datos de un árbol se puede separar entre distintos equipos si

es necesario.

Acepta niveles de acceso bien detallados, pudiendo definir

políticas de seguridad por cada nodo.

2.4.2.- Principales funciones del Ldap

Libretas de direcciones compartidas.

Autenticación de usuarios centralizada

Perfiles de usuarios centralizados, para permitir Roaming

En resumen, LDAP es un servicio muy flexible que permite a un

administrador centralizar variados servicios, y de esta manera facilitar

la tarea de mantenimiento sin que disminuya la confiabilidad del

sistema.

Page 68: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

57

2.5.- Modelado del Análisis

Tabla: USUARIO

nombre:

Atributos: clave primaria

Tipo: varchar

Descripción: identificador de la tabla USUARIO

nombre_completo:

Atributos: Ninguno

Tipo: varchar

Descripción: nombre y apellido del usuario

descripción:

Atributos: Ninguno

Tipo: varchar

estado_cuenta

Descripción: características de usuario

Atributos: Ninguno

Tipo: varchar

Descripción: Estado de la cuenta

cambiar_pass

Atributos: Ninguno

Tipo: varchar

Descripción: Si el usuario puede o no cambiar el password

Page 69: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

58

password

Atributos: Ninguno

Tipo: varchar

Descripción: la contraseña del usuario

Tabla: GRUPO

nombre:

Atributos: clave primaria

Tipo: varchar

Descripción: identificador de la tabla GRUPO

descripción:

Atributos: Ninguno

Tipo: varchar

Descripción: características del grupo

Tabla: GRUPO_USUARIO

nombre_grupo:

Atributos: clave primaria

Tipo: varchar

Descripción: identificador de la tabla GRUPO_USUARIO

descripción:

Atributos: Ninguno

Page 70: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

59

Tipo: varchar

Descripción: características del grupos de usuarios

gid:

Atributos: Ninguno

Tipo: varchar

Descripción: características de el código de grupo

Tabla: DOMINIO

nombre:

Atributos: clave primaria

Tipo: varchar

Descripción: identificador deL dominio

descripción:

Atributos: Ninguno

Tipo: varchar

Descripción: características del dominio

Tabla: PARAMETROS_DOMINIO

nombre:

Atributos: clave primaria

Tipo: varchar

Descripción: identificador de dominio

Page 71: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

60

archivo_dhcp:

Atributos: Ninguno

Tipo: varchar

Descripción: archivo de configuración

gid_actual:

Atributos: Ninguno

Tipo: varchar

Descripción: información del dominio

tiempo_bloqueo:

Atributos: Ninguno

Tipo: varchar

Descripción: características de dominio

longitud_min_password:

Atributos: Ninguno

Tipo: varchar

Descripción: longitud de la contraseña

lockout_attempt:

Atributos: Ninguno

Tipo: varchar

Descripción:

Page 72: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

61

complejidad_password:

Atributos: Ninguno

Tipo: varchar

Descripción: longitud de la contraseña

horario_actual:

Atributos: Ninguno

Tipo: varchar

Descripción: horario actual

Tabla: INFORMACION_DE_CONTACTO

nombre:

Atributos: clave primaria

Tipo: varchar

Descripción: identificador de dominio

email:

Atributos: Ninguno

Tipo: varchar

Descripción: correo del usuario

direccion:

Atributos: Ninguno

Tipo: varchar

Descripción: dirección del contacto

Page 73: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

62

cargo:

Atributos: Ninguno

Tipo: varchar

Descripción: cargo del contacto

ciudad:

Atributos: Ninguno

Tipo: varchar

Descripción: ciudad del contacto

provincia:

Atributos: Ninguno

Tipo: varchar

Descripción: provincia del contacto

telefono:

Atributos: Ninguno

Tipo: varchar

Descripción: teléfono del contacto

celular:

Atributos: Ninguno

Tipo: varchar

Descripción: celular del contacto

Page 74: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

63

fecha_nacimiento :

Atributos: Ninguno

Tipo: varchar

Descripción:

jefe:

Atributos: Ninguno

Tipo: varchar

Descripción: jefe delusuario

Tabla: COMPLEJIDAD_PASSWORD

nivel:

Atributos: clave primaria

Tipo: varchar

Descripción: nivel de complejidad

descripcion:

Atributos: Ninguno

Tipo: varchar

Descripción: correo del password

n_minuculas:

Atributos: Ninguno

Tipo: varchar

Descripción: clave en minúsculas

Page 75: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

64

n_mayusculas:

Atributos: Ninguno

Tipo: varchar

Descripción: clave en mayúsculas

n_digitos:

Atributos: Ninguno

Tipo: varchar

Descripción: cantidad de digitos

n_especiales:

Atributos: Ninguno

Tipo: varchar

Descripción: caracteres_especiales

Page 76: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

65

2.6. - Diagrama de Flujo de Dato

Serv

idor

de

Dom

inio

Cor

pora

tivo

Prim

ary

Dom

ain

Con

trole

r (PD

C)

USU

ARIO

AD

MIN

ISTR

ADO

R

DE

DO

MIN

IO

CO

RPO

RAT

IVO

Sist

ema

de

Adm

inis

traci

ón

de D

omin

io

Serv

icio

de

Dire

ctor

io

(LD

AP) Ke

rber

os

SAM

BA

Clie

nte

WEB

DH

CP

DN

SM

iem

bro

de

Dom

inio

Serv

icio

Figura 1

Page 77: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

66

Figura 2

Page 78: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

67

Figura 3

Page 79: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

68

Figura 4

Page 80: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

69

Figura 5

Page 81: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

70

Figura 6

Page 82: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

71

2.7.- Diseño de Componentes

Figura 7

Page 83: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

72

Figura 8

Page 84: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

73

Figura 9

Page 85: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

74

CAPITULO 3

DISEÑO DEL SISTEMA

3.- DISEÑO

3.1.- Diseño de Clases y Objetos

3.1.1.- Principales Objetos Dao

UsuarioDAO

GrupoDAO

GrupoUsuarioDAO

InformacionDeContactoDAO

ParametrosDominioDAO

ComplejidadPasswordDAO

3.1.2.- Principales Objetos Bo

UsuarioBO

GrupoBO

GrupoUsuarioBO

InformacionDeContactoBO

ParametrosDominioBO

ComplejidadPasswordBO

Page 86: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

75

3.1.3.- Principales Servlets

Actualizar Grupo

Actualizar Información de Contacto

Actualizar Usuario

Agregar Grupo Usuario

Buscar Configuración DHCP

Buscar Grupo

Buscar Horario Usuario

Buscar Información de Contacto

Buscar Maquina

Buscar Todas Maquinas

Buscar todos Grupos

Buscar Todos Usuarios

3.2.- Fase de Diseño de Contenido e Interfaz

Para el desarrollo de nuestra interfaz

Page 87: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

76

3.2.1.- Estructura del sitio

Figura 9

Page 88: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

77

3.2.2.- Descripción del sitio

3.2.2.1.- Pagina Principal

Inicio: en esta pantalla se podrá observar información correspondiente

del nombre del proyecto y los datos de los autores de este sistema.

Empresa: Explicación de la funcionalidad principal de Sistema

Acerca de: Información dell Hardware y Software utilizado en el

servidor

Login: el usuario al digitar su nombre y su password podrá acceder a

los diferentes módulos de la aplicación como usuarios y grupos.

3.2.2.2.- Módulos de Usuario:

Usuarios: Pagina principal del modulo usuario en el cual

muestra todos los usuarios creados y que pueden ser utilizados

para unirse al dominio.

Crear usuario: el administrador del sistema mediante una

pagina jsp podrá crear un nuevo usuario en nuestro dominio

para ser almacenado en la base de datos.

Contacto Usuario: para los respectivos usuarios se podrá

asignar nuevas características para el perfil de usuario

Page 89: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

78

Usuario Miembro de: en esta pantalla se da la facilidad el

administrador para que le asigne un usuario a un respectivo

grupo de esta manera ese usuario pertenecerá a un nuevo

grupo.

Horarios de Usuario: en esta pantalla permite añadir y ver los

horarios de acceso al dominio que tenga un usuario especifico

Cambiar Contraseña: en esta pantalla permitirá cambiar la

contraseña que tenga un usuario

3.2.2.3.- Módulos de Grupo:

Grupos: Pagina principal del modulo grupo el cual muestra

toda los grupos creados que pertenecen al dominio

Crear Grupo: en los servidores de dominio existen diversos

tipos de usuario con esta opción el administrador podrá crear un

nuevo tipo de grupo.

Eliminar y Actualizar la información del Grupo.- Al dar clic

sobre el nombre de un grupo se ira a otra pagina donde se

podrá modificar o eliminar el grupo.

Page 90: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

79

3.2.2.4.- Módulo de Servicio:

Servicios: Pagina principal del modulo la cual muestra las

opciones de servicio que se pueden configurar.

DHCP: en los servidores de dominio el demonio dhcpd se

encargará de asignar las direcciones IP correspondientes a los

diferentes equipos que forman parte de nuestra red. En esta

pantalla se podrá modificar parámetros de configuración del

archivo dhcpd.conf, también podremos pedir nueva IP para

refrescar la dirección de red actual que posee un equipo que

forma parte de nuestro Dominio.

Complejidad Contraseña: en esta página se modifica la

complejidad de la contraseña que se utiliza para unirse al

dominio.

DNS: en esta pagina muestra la configuración que tiene la zona

project12.com

Page 91: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

80

3.3.- Diseño de la Interfaz

Página Principal

Figura 10

Pagina de Ingreso de Usuario y Clave

Figura 11

Page 92: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

81

Pagina Principal de Usuarios

Figura 12

Pagina de Creación de Usuario

Figura 13

Page 93: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

82

Pagina de Modificación y Eliminación de Usuario

Figura 14

Pagina de Información De Usuario

Figura 15

Page 94: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

83

Pagina de Usuario Miembro de

Figura 16

Pagina de Cambiar Password

Figura 17

Page 95: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

84

Pagina Principal de Grupo

Figura 18

Pagina de Modificación de Grupo

Figura 19

Page 96: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

85

Pagina de Creación de Grupo

Figura 20

Pagina Principal de Maquina

Figura 21

Page 97: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

86

Pagina de Eliminar Maquina

Figura 22

Pagina De Servicios

Figura 23

Page 98: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

87

Pagina de Configuración de DHCP

Figura 24

Pagina de Reservación de IP

Figura 25

Page 99: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

88

Página de Configuración de DNS

Figura 26

Page 100: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

89

Capitulo 4

Codificación

4.1. - Principales Componentes

Page 101: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

90

Figura 26

4.1.2.- Servidor de Dominio

En este equipo se va a instalar el Sistema Operativo Linux en su

distribución Fedora Core 7, en el mismo se habilitarán los servicios

que conforman la estructura principal de un servidor de Dominio tales

como DNS, DHCP, SAMBA, LDAP entre los más importantes.

Servicio SMBLDAP_TOOLS

En este componente se configurarán los archivos en el

servidor Linux para integrar los servicios SAMBA y LDAP de

esta manera trabajan en conjunto dichos demonios, en

nuestro Servidor De Dominio.

Servidor DNS

En este componente se configurarán los servicios de DNS el

cual tendrá la responsabilidad de resolver nombres de

maquina a direcciones IP y viceversa este es nuestro

componente que hará las funciones de Servidor de DNS.

Servidor DHCP

Para poder asignar una dirección IP a un equipo debemos

configurar el servicio de DHCP el cual tendrá la función de

Page 102: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

91

asignar una dirección IP a los diferentes equipos que forman

parte del dominio, cabe recalcar que se establecerán límites

en cuanto a los rangos de direcciones IP .

Servidor Samba

Nuestro servidor de Dominio deberá integrar equipos que

usen Sistemas Operativos Windows y Linux.

Servidor Ldap

Para almacenar información correspondiente a los objetos

del Dominio tenemos nuestro servidor de directorios Ldap el

cual tiene la función de asignar características nuevas a los

diferentes usuarios y además será nuestra Base de Datos

para consultas y modificaciones cuando nuestra aplicación

haga uso de este servicio.

4.1.3.- Usuario Administrador

En este componente se dará la facilidad al usuario

administrador para que pueda ingresar a manipular los

diferentes servicios que forman parte del Servidor de Dominio

Corporativo,

Page 103: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

92

Servlets - Java Server Pages

Los servlets y Java Server Pages (JSPs) son dos métodos de

creación de páginas web dinámicas en servidor usando el

lenguaje Java.

Los JSPs y servlets se ejecutan en una máquina virtual Java, lo

cual permite que, en principio, se puedan usar en cualquier tipo

de ordenador, siempre que exista una máquina virtual Java para

ello, los JSPs son en realidad servlets: un JSP se compila a un

programa en Java la primera vez que se invoca, y del programa

en Java se crea una clase que se empieza a ejecutar en el

servidor como un servlet. La principal diferencia entre los

servlets y los JSPs es el enfoque de la programación: un JSP

es una página Web con etiquetas especiales y código Java

incrustado, mientras que un servlet es un programa que recibe

peticiones y genera a partir de ellas una página web.

Clases DAO - BO

Para implementar los accesos a nuestra base del dominio

mediante una aplicación web utilizaremos el modelo DAO, que

Page 104: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

93

es utilizado para separar las operaciones de los datos de bajo

nivel desde un nivel más alto de la lógica de negocio.

4.2.- Procesos Principales

4.2.1.-Proceso creación de usuario

Luego de que el jsp pasa los datos ingresados y validados de

forma general, estos son procesados de la siguiente forma:

primero se realiza una validación del password ingresado,

verificado de acuerdo a las políticas de contraseña que se

hayan establecido. Los datos de usuario luego son empleados

para:

1. Generar registros tanto en la tabla USUARIO como

INFORMACION_DE_CONTACTO, para guardar el nombre

de usuario y sus configuraciones (descripción y políticas

asignadas) en la base de datos,

2. Generar un archivo llamado usuario.ldif, que es usado para

generar una entrada de directorio que luego puede ser

modificada para contener datos personales del usuario, por

ejemplo: email, dirección, teléfono, etc.

3. Realizar la adición del usuario al directorio LDAP

Page 105: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

94

4.2.2.- Proceso propiedades de usuario.

En un servidor de dominio lo importante es tener bien definidos

las características de los diferentes usuarios creados en el

dominio con este proceso accedemos a configurar esos

parámetros y agregarles nuevos valores a los que se ingresan

por defecto.

4.2.3.- Asignar un usuario a un grupo respectivo

Todos los usuarios de nuestro dominio pueden pertenecer a

uno o varios de los grupos existentes en el dominio con este

proceso logramos que un usuario sea añadido al grupo que

seleccionemos.

4.2.4.- Proceso propiedades de grupo.

En nuestro servidor de dominio cada grupo tendrá funciones

distintas en este proceso controlamos que se añadan nuevas

características como son las de administración del dominio,

además podremos cambiar el nombre de grupo.

Page 106: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

95

4.2.5.- Proceso Grupos de dominio

Los diferentes grupos de nuestro dominio tendrán respectivas

funciones que le permitirán tener el control total del dominio o

solo acceder a ciertos recursos compartidos, en este proceso

podremos cambiar tipos de grupos y de esta forma asignarle

nuevos privilegios.

4.2.6.- Proceso Propiedades de DHCP

En este proceso el administrador del dominio podrá modificar

los parámetros del archivo de Configuración del demonio dhcpd

para de esta manera asignar nuevos valores en cuanto a la

parametrización del servidor DHCP.

4.3.- Estándares

4.3.1.- Estándar de los Datos

En esta parte se describe la sintaxis utilizada para la

estructura de campos y tablas utilizadas en la

implementación de nuestra aplicación.

Page 107: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

96

Para identificar las tablas se les asignará un nombre que esta compuesto por

letras mayúsculas y en el caso de contener dos palabras las separaremos

con un guión bajo, para los objetos utilizaremos letras minúsculas y si están

compuestos por mas de una palabra las separamos con un guión bajo, y

para los métodos la nomenclatura java seguido del nombre del objeto al que

pertenece dicho método.

NOMBRE DE LA TABLA

EJ: GRUPO_USUARIO

DESCRIPCIÓN DE LOS OBJETOS

EJ: nombre_grupo

DESCRIPCIÓN DE LOS MÉTODOS

EJ:public String getnombre( )

Page 108: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

97

4.3.2.- Definición de la estructura de datos

USUARIO

Descripción Campo Tipo Null

Identificador de Usuario Nombre varchar not null

Nombre del Usuario Nombre_completo varchar null

Características Descripción varchar null

Características Cambia_pass varchar null

Características estado_cuenta varchar null

Características Password varchar not null

Estructura de la Tabla USUARIO

Page 109: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

98

GRUPO

Descripción Campo Tipo Null

Identificador de grupo Nombre varchar not null

Características Descripción varchar not null

Estructura de la Tabla GRUPO

GRUPO_USUARIO

Descripción Campo Tipo Null

Identificador de grupo Nombre_grupo Varchar not null

Identificador de usuario Nombre_usuario varchar not null

Identificador de usuario Gid varchar not null

Estructura de la Tabla GRUPO_USUARIO

Page 110: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

99

COMPLEJIDAD_PASSWORD

Descripción Campo Tipo Null

Identificador de nivel de

contraseña

Nivel Varchar not null

Descripcion n_minusculas varchar not null

Descripción n_mayusculas varchar not null

Descripción n_digitos varchar not null

Descripcion n_especiales varchar not null

Estructura de la Tabla COMPLEJIDAD_PASSWORD

PARAMETROS_DOMINIO

Descripción Campo Tipo Null

Identificador del

nombre del dominio

Nombre Varchar not null

Identificador del archivo_dchp varchar not null

Page 111: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

100

Identificador de usuario gid_actual varchar not null

Identificador de usuario tiempo_bloqueo varchar not null

Identificador de usuario Longitud_min_password varchar not null

Identificador de usuario Lockout_attempt Varchar not null

Identificador de usuario complejidad_password Varchar not null

Identificador de usuario horario_actual Varchar Not null

Estructura de la Tabla PARAMETROS_DOMINIO

INFORMACION_DE_CONTACTO

Descripción Campo Tipo Null

Identificador de nombre Usuario Varchar Not null

Descripción Email varchar null

Descripción Direccion varchar null

Descripción Cargo varchar null

Page 112: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

101

Descripción Ciudad varchar null

Descripción Provincia varchar null

Descripción Telefono varchar null

Descripción Celular varchar null

Descripción Jefe varchar null

Estructura de la Tabla INFORMACION_DE_CONTACTO

Page 113: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

102

Capitulo 5

Desarrollo, Pruebas e Implementación del Sistema

5.- Desarrollo

5.1.- Creación de la Base de Datos

Para la elección de la base de datos verificamos las siguientes

características:

1. Seleccionamos el motor de base de datos PostgresQL 8.1.10

2. Los cambios incluyen ordenamientos mas rápidos en disco y en

memoria, mejor escalabilidad multi-procesador, mejores planes de

ejecución en consultas sobre datos particionados.

3. Los objetos de conexión y manipulación de datos de la base están

desarrollados en su totalidad en lenguaje java, un lenguaje que

interactúa de una manera optima con el motor de base de datos

definido.

5.2.- Desarrollo de Aplicación

En este proyecto como política de grupo se definió que nuestra

aplicación va a constar de dos partes para su desarrollo las

cuales detallamos a continuación:

Page 114: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

103

El front-end es la parte del software que interactúa con el

usuario y el back-end es la parte que procesa la entrada desde

el front-end. La separación del sistema en "front ends" y "back

ends" es un tipo de abstracción que ayuda a mantener las

diferentes partes del sistema separadas. La idea general es que

el front-end sea el responsable de recolectar los datos de

entrada del usuario, que pueden ser de muchas y variadas

formas, y procesarlas de una manera conforme a la

especificación que el back-end pueda usar. La conexión del

front-end y el back-end es un tipo de interfaz.

5.2.1.- Back-end (Interacción con el Servidor de Dominio

Linux)

Para la primera parte del proyecto se va a desarrollar todas la

clases necesarias en lenguaje Java que van a permitir

realizar la conexión con el servidor Linux para de esta manera

lograr que nuestra aplicación tenga total acceso a los archivos

de configuración del servidor.

5.2.2.- Front-end (Presentación visual del proyecto)

En lo relacionado a la parte de la interfaz tratamos de que

nuestro sistema presente pantallas amigables a los usuarios del

Page 115: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

104

sistema, para que le sea transparente al momento de

interactuar con las clases desarrolladas en Java en donde se

va a realizar todas las transacciones que el cliente solicite, a

excepción de los comandos de Linux que le envíe al servidor,

por lo que las páginas serán desarrolladas en JSP (Java

Server Pages).

Estas páginas se deben alojar en un servidor Web para que los

usuarios puedan acceder a ellas y poder obtener los servicios

planteados en este proyecto, por lo que se utiliza el servidor

Apache Tomcat el cual va a ser el encargado de gestionar las

peticiones de los clientes que se conecten al sistema.

5.3.- PRUEBAS DEL SISTEMA

5.3.1.- Pruebas de la aplicación ensamblada:

Con esta prueba lo que buscamos es descubrir errores en cuanto a la

funcionalidad del sistema, cada módulo que forma parte de nuestra

aplicación deberá ser ensamblada conforme a lo planificado en las

etapas anteriores del desarrollo de nuestra aplicación.

5.3.2.- Pruebas de la aplicación con varios usuarios:

Page 116: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

105

Nuestra aplicación brindara facilidad para configurar los diferentes

servicios de nuestro servidor hacen de esta herramienta una manera

sencilla de Administración de un Servidor de Dominio, para las

pruebas de aplicación se lo hará ingresando datos reales por parte de

los usuarios que van a ser uso de nuestra aplicación.

5.4.- Modelo de prueba

NAVEGACIÓN DE LOGIN:

TIPO OBJETO NAVEGACIÓN CONTENIDO OBSERVACIONES

CLIK Botón Login OK OK Resultados Esperados

CLIK Vínculos de

aceptar

contraseña

ERROR ERROR No se acepta la

contraseña ingresada

en el sistema

CLIK Vínculos de

aceptar

contraseña

ERROR ERROR No aparece el mensaje

de usuario y contraseña

aceptada

NAVEGACIÓN DE USUARIO:

TIPO OBJETO NAVEGACIÓN CONTENIDO OBSERVACIONES

CLIK Botón OK OK Resultados Esperados

Page 117: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

106

usuario

CLIK Vinculo

general

OK OK Resultados Esperados

CLIK Vinculo

contacto

ERROR ERROR No se mostraron los

datos de usuario

CLIK Vinculo

miembro de

ERROR ERROR La pagina no muestra

los resultados

esperados

CLIK Vinculo

cambiar

passw

ERROR ERROR No se mostraron los

datos de usuario

CLIK Vinculo

contacto

ERROR ERROR El campo del nombre

de usuario esta

habilitado

CLIK Vinculo

contacto

ERROR ERROR El botón de actualizar

esta desubicado

NAVEGACIÓN DE GRUPOS:

TIPO OBJETO NAVEGACIÓN CONTENIDO OBSERVACIONES

CLIK Botón grupo OK OK Resultados Esperados

CLIK Vinculo

nuevo grupo

OK OK Resultados Esperados

Page 118: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

107

CLIK Vinculo

grupo del

dominio

ERROR ERROR No se cargaron los

nombres de grupos

CLIK Vinculo

usuarios que

pertenecen

al grupo

ERROR ERROR No se muestran los

usuarios pertenecientes

al grupo seleccionado

CLIK Vinculo

usuarios que

se pueden

agregar al

grupo

ERROR ERROR Los usuarios no se

pueden agregar a los

diferentes grupos

NAVEGACIÓN DE MAQUINAS:

TIPO OBJETO NAVEGACIÓN CONTENIDO OBSERVACIONES

CLIK Botón

maquina

OK OK Resultados Esperados

CLIK Pagina

maquina

ERROR ERROR Los nombres de

maquinas no se

presentaron al instante

CLIK Vinculo

maquina

ERROR ERROR Los datos de las

maquinas no aparecen

en las cajas de texto

Page 119: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

108

NAVEGACIÓN DE SERVICIOS:

TIPO OBJETO NAVEGACIÓN CONTENIDO OBSERVACIONES

CLIK Botón

Servicios

OK OK Resultados Esperados

CLIK Vínculos

configuración

DNS

ERROR ERROR No se presentaron los

datos del archivo de

configuración del DNS

CLIK Vínculos

configuración

DHCP

ERROR ERROR No se presentaron los

datos del archivo de

configuración del DHCP

NAVEGACIÓN DE CERRAR SECCIÓN:

TIPO OBJETO NAVEGACIÓN CONTENIDO OBSERVACIONES

CLIK Botón cerrar

sesión

OK OK Resultados Esperados

CLIK Vínculos de

cerrar

sesión

ERROR ERROR El vinculo no regresa a

la pagina de login

Page 120: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

109

5.5.- IMPLEMENTACIÓN DEL SISTEMA

5.5.1.- Componentes de Software

La implementación del dominio se la hará en la distribución Linux

Fedora 7 (kernel 2.6).

A parte de estos componentes, serán configurados para este proyecto

los siguientes servicios:

DHCP (Administración de IPs dentro del dominio)

DNS (Para resolución de nombres)

Samba (Para integración con equipos con plataforma Microsoft)

LDAP (servicio de directorio)

5.5.2.- Samba

Se usará Samba 3 para lograr la interacción entre los equipos

con plataforma Linux y los que tienen plataforma Microsoft

Cabe recalcar que Samba 3 no es un equivalente de Windows

2003 Server.

Samba ofrece las siguientes características:

Administración de cuentas

Aprovisionamiento de recursos.

Page 121: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

110

Soporte para roles de administración.

Administración de servicios.

5.5.3.- LDAP (Lightweight Directory Access Protocol)

LDAP será el directorio del dominio corporativo y será usado

por samba para autenticar la información provista por los

usuarios que intentan logonearse en el dominio.

La ventaja principal de usar LDAP es la consolidación de cierto

tipo de información en el interior de su empresa. Por ejemplo,

todas las diferentes listas de usuarios en el interior de su

empresa pueden ser fusionadas en un solo directorio LDAP.

Este directorio, a continuación, podrá ser consultado desde

cualquier aplicación habilitada para LDAP a la que le sirva la

información.

5.6.- Recursos de Hardware

Se necesitarán 2 Pc que servirán de clientes, tendrán instalado

el sistema operativo Windows XP, las cuales se las configurará

como miembros del Dominio, además en una de las PC clientes

se les instalara el Vmware para poder instalar un tercer cliente

que tendrá como sistema operativo una distribución de Linux.

Page 122: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

111

El VmWare es un software que permite crear una maquina

virtual dentro del sistema operativo XP, en esta maquina virtual

se puede instalar otro sistema operativo sin que afecte al que

esta inicialmente instalado, y a su vez se puedan estar

ejecutando los dos sistemas operativos a la vez.

En el computador que se usara como servidor se instalará una

distribución del Sistema Operativo Linux .

Para levantar la aplicaron Web se utilizara el navegador FireFox

Mozzilla nos permitirá levantar la aplicación a crear en el

ambiente web.

Page 123: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

112

Capitulo 6

Recomendaciones y Conclusiones

6.1.- Recomendaciones

6.1.1.- Recomendaciones Software

Al empezar a configurar Linux para desarrollar la aplicación

utilizábamos el Sistema Operativo Fedora Core 6 pero no

soportaba adecuadamente el paquete Openldap y al reiniciar el

sistema operativo se dañaba la instalación del sistema.

Por ese motivo utilizamos el Sistema Operativo Fedora Core 7,

el cual demostró ser una distribución de Linux bastante

confiable, ofrece estabilidad a los servicios que implementamos

en nuestro servidor.

Para tener un mejor rendimiento y presentación del sistema

debe utilizar el navegador de Internet Firefox Mozilla ya que la

aplicación fue totalmente desarrollada en Fedora Core 7 y todo

su funcionalidad esta soportada adecuadamente en este

navegador.

Page 124: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

113

En este tipo de sistemas la integración de los distintos servicios

es de suma importancia puesto que si uno de ellos no esta

funcionando correctamente va a detener la aplicación y

provocara un funcionamiento inadecuado.

El uso de la herramienta GQ LDAP Client es recomendada para

una mejor administración y control del Openldap, en esta

herramienta se pueden administrar todos los datos que tiene

almacenada la base de datos que utiliza el Openldap.

Nos dimos cuenta que el lenguaje Java que se instala por

defecto en la Distrinucion de Fedora Core no se puede utilizar

adecuadamente por ese motivo es necesario instalarlo

independientemente.

El servicio tomcat que viene por defecto instalado en la

distribución no es el adecuado para trabajar se debe instalar el

Apache-Tomcat 5.5.25

Page 125: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

114

6.1.2.- Hardware

Nuestro tiene las siguientes características:

Disco Duro de 120 GB

Memoria RAM 512 MB

Procesador PIV de 3.0 GHZ

6.1.3.- Recomendaciones Finales:

En este tipo de proyectos de gran escala como son los

servidores de dominio corporativos se debe tener muy en

cuenta que cada componente que conforme el sistema como tal

deberá estar bien configurado porque de lo contrario cuando un

componente falle esto conllevará a que todo el sistema fallará

ocasionando así una perdida irremediable de información y de

tiempo valioso para la empresa.

La seguridad en este tipo de sistemas es de suma importancia

el acceso solo debe ser permitido a los Administradores para

evitar el uso indebido del mismo.

En un Servidor de Dominio Corporativo es de suma importancia

que los servicios que conforman este dominio siempre estén

Page 126: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

115

disponibles y activados porque si un servicio se encuentra

desactivado este implica que los demás servicios dejen de

funcionar, por tal motivo el seguimiento que se le debe dar al

sistema que controle el dominio de la red debe ser de forma

periódica y controlar el estado de cada recurso que forma parte

del dominio.

Para complementar una adecuada administración y control de

un dominio primario, este proyecto se debería complementar

con otros de seguridad como por ejemplo un firewall

programable, un Sistema de detección de intruso, servidor de

antivirus, etc.

Se recomienda que la navegación de nuestra aplicación se

deberá hacer en el Navegador de Mozilla FireFox , para que las

interfaces se muestren en su totalidad y sin errores en las

paginas esto se debe a que nuestra aplicación fue desarrollada

en el entorno Linux el cual es desarrollado en código libre,

motivo por el cual se recomienda FireFox que también es de

código libre.

Page 127: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

116

Para que nuestra aplicación pueda ser ejecutada se

recomienda que el Firewall de Windows este deshabilitado

porque al estar habilitado imposibilita el acceso a nuestra

aplicación, ya que nuestro sistema es controlado remotamente

al estar habilitado el Firewall no se podrá acceder remotamente

a la aplicación, y este provocara que la aplicación no esta

disponible.

Por el lado del Servidor Linux en su Distribución Fedora Core 7

los servicios de DNS DHCP LDAP deberán estar siempre

activos para que los diferentes objetos de nuestro Dominio sean

estos usuarios, grupos, maquinas se puedan administrar desde

la aplicación web.

En la administración del Servidor Linux en lo relacionado a la

configuración de los archivos de los distintos servicios que

forman parte del Servidor de Dominio, estos servicios deberán

estar detenidos para poder acceder a sus archivos y

configurarlos de acuerdo a los requerimientos solicitados por

los futuros usuarios del dominio.

Page 128: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

117

Es altamente recomendable que los administradores tengan

una lista de todas las mac address de todas las maquinas que

controlen.

Nuestra aplicación Servidor de Dominio Corporativo se

recomienda su uso para Centros de Cómputo, Laboratorios

Informáticos, y empresas que deseen administrar

adecuadamente todas las estaciones de trabajos.

6.2.- Conclusiones:

Nuestro servidor de dominio corporativo con integración a

Microsoft esta disponible para ser unir estaciones de trabajo

que utilicen SistemasOperativos Windows o Linux.

Nos hemos dado cuenta durante el transcurso del desarrollo de

este proyecto que las herramientas de código libre demostraron

ser igual o mejor en su funcionalidad y aplicación que las que

haya que pagar una licencia por su uso.

Page 129: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

118

Que el sistema operativo Microsoft en su versión de servidores

puede ser reemplazado tranquilamente por cualquier

distribución de Linux.

Samba 3 todavía no puede reemplazar totalmente al Active

Directory de Microsoft, pero si puede reemplazar a un servidor

NT, ya que su tecnología esta orientada en eso. Se espera que

cuando liberen la version 4 del Samba ya se pueda sustituir al

Active Directory.

En el mercado actual existen diversos tipos de aplicaciones que

controlan y administran Servidores de Dominio, en nuestra

aplicación, logramos configurar los archivos de varios servicios

que se utilizan para el normal funcionamiento de un Servidor de

Domino.

Las aplicaciones de administración de servicios remotos se

encuentran en gran número mercado actual, por tal motivo

como este nuestra aplicación fue desarrollada con esta

tecnología donde la aplicación reside en una maquina que

cumple las funciones de Servidor y es controlada desde un

equipo cliente, con lo que se cumple con el estándar de

Page 130: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

119

desarrollo Cliente – Servidor, una tecnología que a dado

buenos resultados a los administradores de Servidores.

Finalmente llegamos a la conclusión que no solo tenemos

herramientas del entorno Microsoft, sino que tenemos un sin

número de aplicaciones gratuitas que nos facilitan la

administración de los servidores, y que también podemos

desarrollar nuestras propias aplicaciones como fue nuestro

caso logramos obtener resultados esperados y de mucha

calidad.

Para realizar un proyecto de este tipo nos dimos cuenta que

gran parte del tiempo empleado en el desarrollo del mismo fue

de tipo investigativo.

Page 131: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

120

Glosario de Términos

DNS: Sistema de Nombres de Dominio

DHCP: Protocolo de configuración dinámica de host

SMB: Bloque de mensajes de servidor

LDAP: Protocolo de acceso a directorios ligero

USUARIO: Objeto del dominio, son usuarios que pueden administrar el

Servidor de dominio, compartir recursos y ejecutar aplicaciones.

GRUPO: Objeto del dominio, son grupos que permitirán definir y administrar

el acceso a los recursos en un dominio.

MAQUINA: Objeto del dominio, estaciones de trabajo.

IP: Protocolo de Internet, la IP es la dirección o código que identifica

exclusivamente a cada uno de los ordenadores existentes

MAC ADRESS : dirección de control de acceso al medio

Page 132: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

121

Bibliografía

SAMBA-3 BY EXAMPLE, Practical Exercises in Successful Samba

Deployment John H. Terpstra 7th August 2006.

THE OFICIAL SAMBA-3 HOWTO AND REFERENCE GUIDE by Jelmer R.

Vernooij, John H. Terpstra, and Gerald (Jerry) Carter 7th August 2006

LDAP SYSTEM ADMINISTRATION By Gerald Carter Publisher by O'Reilly

March 2003, pages 308

http://www.linuxparatodos.net Información variada de Linux

http://www.howtoforge.com/fedora_dynamic_dns Configuración de Dhcp

Dinámico

http://www.directoriox.com.ar/noticieros/instalando-java-tomcat-eclipse-en-

linux.html?Itemid=53 Configuración de Java Tomcat Eclipse

Page 133: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración
Page 134: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

2

Manual de Usuario

1.- Mapa de Sitio

Page 135: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

3

2.- Interfaz del Sistema Project12.com

En un navegador web de preferencia ingrese la dirección

https://project12.com:8443/project12 aparece la siguiente interfaz.

2.1.- Interfaz Principal

Esta es la interfaz principal que se carga al iniciar el Sistema de

Administración Web del Controlador de Dominio Primario.

A la izquierda se 4 botones: Inicio, Empresa, Acerca de y Login.

Inicio aparece el nombre del Sistema.

Empresa muestra los nombres de los integrantes del grupo.

Page 136: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

4

Acerca de muestra información del Hardware y Software utilizado en

el sistema.

2.2.- Ingreso de Usuario y Clave

En esta interfaz se debe ingresar el nombre de usuario y contraseña para

acceder a los demás componentes del sistema.

Solo los usuarios administradores podrán tener acceso completo al

sistema.

Al verificarse que el usuario y la contraseña son correctas se procede a la

interfaz de usuarios del dominio.

Page 137: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

5

2.3.- Interfaz Principal de Usuario

Esta es la pagina principal de Usuarios a esta pagina se accede

inmediatamente después de ingresar el usuario y la contraseña o

presionando el boton Usuarios desde cualquiera de las demas

intergaces del sistema.

Esta es la interfaz principal de usuario en la cual se muestra la información

general de los usuarios existentes en el Dominio.

.

En esta interfaz se tiene dos opciones ir a la opción de crear un nuevo

usuario o al dar clic en un nombre ir a la opción de modificar o eliminar el

usuario.

Page 138: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

6

2.4.- Interfaz de Creación de Usuario

Al presionar la opcion nuevo en la interfaz principal de Usuarios se

muestra la siguiente interfaz.

En esta interfaz se ingresan los datos para la creación de nuevos

usuarios.

Al presionar el botón guardar se confirma la información a guardar y se

va la interfaz principal de usuario.

En las interfaces de Administración de usuario contienen los siguientes

hipervínculos:

Page 139: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

7

General para modificar o eliminar los datos del usuario

Contacto para ingresar la información personal del usuario .

Miembro de podrán ver los grupos a los cuales pertenece un usuario.

Cambiar Password para cambiar el password a un usuario.

Horario para asignarle un horario de permiso ingresar al dominio.

Barra de hipervínculos

Page 140: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

8

2.5.- Interfaz General de Usuario

Estando en la interfaz principal de Usuarios al presionar el nombre de

un usuario que se encuentre registrado aparece la siguiente interfaz.

En esta interfaz se podrán los datos de nombre completo y descripción

del usuario seleccionado.

Al presionar el botón eliminar saldrá un mensaje de advertencia el cual

es para indicar que se procede a eliminar el usuario.

Page 141: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

9

Existen 2 opciones adicionales en esta interfaz .

1. El usuario no puede cambiar la contraseña, para evitar que el

usuario se asigne el mismo la contraseña.

2. Cuenta deshabilitada para bloquear la cuenta de acceso al

dominio.

Page 142: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

10

2.6.- Interfaz de Información de Usuario

Al presionar el hipervínculo Contacto aparece la siguiente interfaz.

En esta interfaz se ingresa la información personal del usuario.

La información pedida en esta interfaz es E-Mail, dirección personal,

cargo que ocupa en la empresa, ciudad, provincia, numero de teléfono

dela casa, numero de teléfono del celular, fecha de nacimiento y

Nombre del Jefe.

Page 143: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

11

2.7.- Interfaz de Usuario Miembro de

Al presionar el hipervínculo Usuario Miembro de aparece la siguiente

interfaz.

En esta interfaz se muestra los grupos a los que pertenece un usuario. En la

parte superior se muestra los grupos que pertenece y en la de abajo se

muestra los grupos que se puede agregar al usuario.

Para agregarlo o sacarlo de un grupo solo se le debe dar un clic en el grupo.

Nota: Los cambios son aplicados inmediatamente .

Page 144: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

12

2.8.- Interfaz de Cambiar Password

Al presionar el hipervínculo Cambiar Password de aparece la siguiente

interfaz.

En la cual se debe de ingresar el nuevo password a cambiar, se

procedera a realizar el cambio del password siempre y cuando cumpla las

condiciones establecidas en complejidad de password.

Page 145: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

13

2.9.- Interfaz Principal de Grupo

Al presionar el boton GRUPOS en cualquiera de las diferentes interfaces

del sistema aparece la siguiente Interfaz.

Esta es la interfaz principal de grupo en la que se muestra todos los

grupos existentes en el dominio primario.

Al presionar el botón de nuevo se va a la opción de crear un nuevo grupo.

Al presionar sobre un nombre de grupo se va a la opción de modificar o

eliminar el grupo.

Page 146: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

14

2.10.- Interfaz de Modificación de Grupo

Al seleccionar cualquiera de los nombres de los grupos registrados que

aparecen en la página principal aparece la siguiente pantalla:

En esta interfaz se puede modificar los datos del grupo o eliminar

según sea el caso.

Al presionar los botones de actualizar o eliminar se realiza la opción

deseada y se va a la interfaz principal de grupo.

Ademas muestra todos los usuarios que pertenecen al grupo y los

usuarios que se le pueden agregar al grupo.

Nota: Los cambios son aplicados inmediatamente.

Page 147: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

15

2.11.- Interfaz de Creación de Grupo

Estando en la página principal de de Grupo y al presionar el boton

nuevo aparece la siguiente interfaz:

En esta interfaz se ingresa los datos del nuevo grupo que se desea

crear.

Al presionar el botón crear se realiza la opción deseada y se va a la

interfaz principal de grupo.

Page 148: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

16

2.12.- Interfaz Principal de Maquina

Al presionar el boton MAQUINAS en cualquiera de las diferentes

interfaces del sistema aparece la siguiente Interfaz:

En esta interfaz se muestra la información de todas las maquinas que

pertenecen al dominio.

Al dar clic sobre el nombre de una máquina se va a la opción de eliminar

la máquina del dominio.

Nota: Al presionar el boton se debe esperar unos segundos antes de que

aparezca la interfaz.

Page 149: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

17

2.13.- Interfaz de Eliminar Maquina

Al presionar sobre una maquina en la paquina principal de maquinas

aparece la siguiente interfaz.

En esta opción se puede eliminar una máquina del dominio.

Al presionar el botón de eliminar se realiza la operación deseada y se va a

la interfaz principal de maquina.

Nota al presionar el boton eliminar se realiza la operación sin preguntar

Page 150: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

18

2.14.- Interfaz Principal de Servicios

Al presionar el boton SERVICIOS en cualquiera de las diferentes

interfaces del sistema aparece la siguiente Interfaz

La cual contiene los siguientes hipervínculos:

Configuración de DHCP: Para configuraciones basicas del DHCP y

reservar una ip para una maquina

Configuración de Complejidad de Password: Para la configuración de

la segurirdad del password de los usuarios del dominio.

Page 151: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

19

Configuración de DNS: Para revisar las maquinas que se encuentran

registradas en el DNS y modificar configuraciones basicas del mismo.

Usuarios Administradores del Sistema: Para crear un usuario que

pueda ingresar al sistema.

Page 152: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

20

2.15.- Interfaz de Configuración de DHCP

Al presionar sobre el hipervínculo Configuración DHCP aparecera la

siguiente pagina.

En esta opción se pude modificar el rango de Ip que puede usar el Dhcp y

si se desea se puede realizar una nueva reservación de ip es decir que

una maquina tenga siempre la misma Ip.

Page 153: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

21

2.16.- Interfaz de Reservación de IP

Al presionar el boton reservación de IP en la interfaz principal de DHCP

presenta la siguiente interfaz.

En esta interfaz se ingresa los datos de la maquina que se desea que

tenga Ip estática y no dinámica es decir que siempre tenga la misma Ip.

Nota al presionar el boton eliminar realiza la accion sin preguntar.

Page 154: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

22

2.17.- Interfaz de Configuración de DNS

Al presional la opcion de configuración de DNS en la pantalla principal de

Servicios aparecera la siguiente interfaz.

En esta página se puede realizar una configuración basica del DNS, ademas

muestra las paginas que se encuentran registradas al mismo.

Page 155: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

23

Page 156: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

24

Manual Tecnico

Para el desarrollo del sistema de Administración de Dominio Primario

usamos el modelo de programación de 3 capas, por ese motivo nuestro

sistema esta dividido en: Objetos BO (Bussiness Objetc), Objetos DAO (Data

Access Object), Servlet y Jsp

1.- Clases DAO

Hemos creado un DAO por cada tabla de la base de datos. Cada clase DAO

se encarga de la interacción con la base de datos

Los objetos Dao que usamos en la aplicación son:

UsuarioDAO

GrupoDAO

GrupoUsuarioDAO

InformacionDeContactoDAO

ParametrosDominioDAO

ComplejidadPasswordDAO

1.1.- Contenido de las Principales Clases DAO

1.1.1.- UsuarioDAO

/* Librerias que utliza el Objeto UsuarioDAO

package com.project12.classes;

import java.sql.*;

Page 157: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

25

import java.util.*;

Esta es la Clase UsuarioDAO en la cual se encarga de realizar todos los

procedimientos de insertar, eliminar, buscar, actualizar en la base con la

información proporcionada por el usuario administrador mediante la

interfaz

/*Inico de la Clase UsuarioDAO

public class UsuarioDAO {

Se define una función tipo conexión private Connection unCon = null;

public UsuarioDAO(Connection unaConexion) {

unCon = unaConexion;

}

La función guardar recibe como parámetro un objeto tipo usuario se

define un boolean que se lo usara como una bandera para indicar el

resultado de la sentencia sql, se define un string el cual se va a

asignar la sentencia sql insert que se va a ejecutar en la base Los

signos de interrogación del insert se los reemplaza por un valor que se

obtiene del objeto tipo usuario, se define una variable tipo entero en la

cual se le asigna el valor del resultado de ejecutar el insert Se cierra la

Page 158: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

26

conexión a la base y se retorna un boolean con el resultado de la

operación.

/*Inicio de la función Guardar

public boolean guardar (Usuario unUsuario) throws

SQLException, ClassNotFoundException {

boolean valorDevolver = false;

String sql = "Insert into usuario (nombre,nombre_completo,descripcion,

cambia_pass, estado_cuenta) values (?,?,?,?,?);";

PreparedStatement unPS= unCon.prepareStatement(sql);

unPS.setString(1,unUsuario.getNombre());

unPS.setString(2,unUsuario.getNombreCompleto());

unPS.setString(3, unUsuario.getDescripcion());

unPS.setString(4, unUsuario.getCambiaPass());

unPS.setString(5, unUsuario.getEstadoCuenta());

int i = unPS.executeUpdate();

unPS.close();

if (i == 0){

valorDevolver = true;

}

return valorDevolver;

}

Page 159: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

27

/*Fin de la función Guardar

La función actualizar recibe como parámetro un objeto tipo usuario se

define un boolean que se lo usara como una bandera para indicar el

resultado de la sentencia sql, se define un string el cual se va a

asignar la sentencia sql update que se va a ejecutar en la base.

Los signos de interrogación del update se los reemplaza por un valor

que se obtiene del objeto tipo usuario, se define una variable tipo

entero en la cual se le asigna el valor del resultado de ejecutar el

update.

Se cierra la conexión a la base y se retorna un boolean con el

resultado de la operación.

/*Inicio de la función Actualizar

public boolean actualizar (Usuario unUsuario) throws

SQLException, ClassNotFoundException {

boolean valorDevolver = false;

String sql = "Update usuario set nombre_completo=?, descripcion=?,

cambia_pass=?, estado_cuenta=? where nombre =?;";

PreparedStatement unPS= unCon.prepareStatement(sql);

unPS.setString(1,unUsuario.getNombreCompleto());

unPS.setString(2, unUsuario.getDescripcion());

Page 160: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

28

unPS.setString(3, unUsuario.getCambiaPass());

unPS.setString(4, unUsuario.getEstadoCuenta());

unPS.setString(5, unUsuario.getNombre());

int i = unPS.executeUpdate();

unPS.close();

if (i == 0){

valorDevolver = true;

}

return valorDevolver;

}

/*Fin de la función Actualizar

La función Eliminar recibe como parámetro un string que contiene el

nombre del usuario a eliminar, se define un boolean que se lo usara

como una bandera para indicar el resultado de la sentencia sql, se

define un string el cual se va a asignar la sentencia sql delete que se

va a ejecutar en la base.

Los signos de interrogación del insert se los reemplaza por un valor

que se obtiene del objeto tipo usuario, se define una variable tipo

entero en la cual se le asigna el valor del resultado de ejecutar el

delete.

Page 161: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

29

Se cierra la conexión a la base y se retorna un boolean con el resultado de la

operación

/* Inicio de la Función Eliminar

public boolean eliminar (String nombre) throws SQLException,

ClassNotFoundException {

boolean valorDevolver = false;

String sql = "Delete from usuario where nombre=?";

PreparedStatement unPS = unCon.prepareStatement(sql);

unPS.setString(1, nombre);

int i = unPS.executeUpdate();

unPS.close();

if (i == 0){

valorDevolver = true;

}

return valorDevolver;

}

/* Fin de la Función Eliminar

El Vector buscarTodos no recibe parámetros se define un objeto tipo

vector en el cual se guardara todos los resultados que genere la

Page 162: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

30

consulta, se define un string el cual se va a asignar la sentencia sql

select que se va a ejecutar en la base.

Se define un objeto tipo usuario el cual se va a usar en un ciclo de

repetición while el cual va a recorrer el objeto y asignándolo al vector.

Se cierra la conexión a la base y se retorna el vector con los

resultados de la operación

/* Inicio de la Función buscarTodos

public Vector buscarTodos() throws Throwable {

Vector valorDevolver = new Vector();

String sql = "Select * from usuario order by nombre;";

PreparedStatement unPS = unCon.prepareStatement(sql);

ResultSet unRS = unPS.executeQuery();

Usuario unUsuario = null;

while (unRS.next()){

unUsuario= new Usuario();

unUsuario.setNombre(unRS.getString("nombre"));

unUsuario.setNombreCompleto(unRS.getString

("nombre_completo"));

unUsuario.setDescripcion(unRS.getString("descripcion"));

valorDevolver.addElement(unUsuario);

}

unRS.close();

Page 163: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

31

unPS.close();

return valorDevolver;

}

/* Fin de la Función buscarTodos

El Vector buscarUsuario recibe como parámetro un string que contiene

el nombre del usuario a buscar, se define un string el cual se va a

asignar la sentencia sql delete que se va a ejecutar en la base.

El signo de interrogación del select se los reemplaza por un valor que

se obtiene del objeto tipo grupo, en un ciclo de repetición while el cual

va a recorrer el objeto y asignándolo al objeto tipo usuario.

Se cierra la conexión a la base y se retorna un boolean con el

resultado de la operacion

/* Inicio de la Función buscarUsuario

public Usuario buscarUsuario(String nombreUsuario) throws

Throwable{

Usuario unUsuario = new Usuario();

String sql = "Select nombre, nombre_completo, descripcion,

cambia_pass, estado_cuenta from usuario where nombre= ?;";

PreparedStatement unPS= unCon.prepareStatement(sql);

unPS.setString(1,nombreUsuario);

Page 164: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

32

ResultSet unRS= unPS.executeQuery();

while (unRS.next()) {

unUsuario.setNombre(unRS.getString("nombre"));

unUsuario.setNombreCompleto(unRS.getString

("nombre_completo"));

unUsuario.setDescripcion(unRS.getString("descripcion"));

unUsuario.setCambiaPass(unRS.getString("cambia_pass"));

unUsuario.setEstadoCuenta(unRS.getString("estado_cuenta"));

}

unRS.close();

unPS.close();

return unUsuario;

}

}

/* Fin de la Función buscarUsuario

/* Fin de la Clase Usuario

Page 165: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

33

1.1.2.- GRUPODAO

package com.project12.classes;

import java.sql.*;

import java.util.*;

Esta es la Clase GrupoDAO en la cual se encarga de realizar todoslos

procedimientos de insertar, eliminar, buscar, actualizar en la base con

la informacion proporcionada por el usuario administrador mediante la

interfaz */

public class GrupoDAO {

/* Se difine una funcion tipo conexion */

private Connection unCon = null;

/* La funcion antes definida se la recibe como parametro en esta

funcion para poder conectarse con la base */

public GrupoDAO(Connection unaConexion){

unCon = unaConexion;

}

La funcion guardar recibe como parametro un objeto tipo grupo se

define un boolean que se lo usara como una bandera para indicar el

Page 166: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

34

resultado de la sentencia sql, se define un string el cual se va a

asignar la sentencia sql insert que se va a ejecutar en la base

Los signos de interrogacion del insert se los reemplaza por un valor

que se obtiene del objeto tipo grupo, se define una variable tipo entero

en la cual se le asigna el valor del resultado de ejecutar el insert

Se cierra la conexion a la base y se retorna un boolean con el

resultado de la operacion

public boolean guardar (Grupo unGrupo) throws SQLException,

ClassNotFoundException{

boolean valorDevolver = false;

String sql = "Insert into grupo (gid, nombre, descripcion) values

(?,?,?);";

PreparedStatement unPS= unCon.prepareStatement(sql);

unPS.setString(1,unGrupo.getGID());

unPS.setString(2,unGrupo.getNombre());

unPS.setString(3, unGrupo.getDescripcion());

int i = unPS.executeUpdate();

unPS.close();

if (i == 0){

valorDevolver = true;

}

Page 167: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

35

return valorDevolver;

}

La funcion actualizar recibe como parametro un objeto tipo grupo se

define un boolean que se lo usara como una bandera para indicar el

resultado de la sentencia sql, se define un string el cual se va a

asignar la sentencia sql update que se va a ejecutar en la base.

Los signos de interrogacion del update se los reemplaza por un valor

que se obtiene del objeto tipo grupo, se define una variable tipo entero

en la cual se le asigna el valor del resultado de ejecutar el update.

Se cierra la conexion a la base y se retorna un boolean con el

resultado de la operación.

public boolean actualizar (Grupo unGrupo) throws SQLException,

ClassNotFoundException{

boolean valorDevolver = false;

String sql = "Update grupo set descripcion=? where nombre

=?;";

PreparedStatement unPS= unCon.prepareStatement(sql);

unPS.setString(1, unGrupo.getDescripcion());

unPS.setString(2, unGrupo.getNombre());

Page 168: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

36

int i = unPS.executeUpdate();

unPS.close();

if (i == 0){

valorDevolver = true;

}

return valorDevolver;

}

La funcion Eliminar recibe como parametro un string que contiene

el nombre del grupo a eliminar, se define un boolean que se lo usara

como una bandera para indicar el resultado de la sentencia sql, se

define un string el cual se va a asignar la sentencia sql delete que se

va a ejecutar en la base.

Los signos de interrogacion del insert se los reemplaza por un valor

que se obtiene del objeto tipo grupo, se define una variable tipo entero

en la cual se le asigna el valor del resultado de ejecutar el delete

Se cierra la conexion a la base y se retorna un boolean con el

resultado de la operación.

public boolean eliminar (String nombre) throws SQLException,

ClassNotFoundException {

boolean valorDevolver = false;

String sql = "Delete from grupo where nombre=?";

Page 169: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

37

PreparedStatement unPS = unCon.prepareStatement(sql);

unPS.setString(1, nombre);

int i = unPS.executeUpdate();

unPS.close();

if (i == 0){

valorDevolver = true;

}

return valorDevolver;

}

La funcion eliminar recibe como parametro un objeto tipo grupo se

define un boolean que se lo usara como una bandera para indicar el

resultado de la sentencia sql, se define un string el cual se va a

asignar la sentencia sql delete que se va a ejecutar en la base.

Los signos de interrogacion del insert se los reemplaza por un valor

que se obtiene del objeto tipo grupo, se define una variable tipo entero

en la cual se le asigna el valor del resultado de ejecutar el delete.

Se cierra la conexion a la base y se retorna un boolean con el

resultado de la operacion.

Page 170: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

38

public boolean eliminar (Grupo unGrupo) throws SQLException,

ClassNotFoundException {

boolean valorDevolver = false;

String sql = "Delete from grupo where nombre=?";

PreparedStatement unPS = unCon.prepareStatement(sql);

unPS.setString(1,unGrupo.getNombre());

int i = unPS.executeUpdate();

unPS.close();

if (i == 0){

valorDevolver = true;

}

return valorDevolver;

}

La funcion guardar recibe no recibe parámetros se define un objeto

tipo vector en el cual se guardara todos los resultados que genere la

consulta, se define un string el cual se va a asignar la sentencia sql

select que se va a ejecutar en la base.

Se define un objeto tipo grupo el cual se va a usar en un ciclo de

repetición while el cual va a recorrer el objeto y asignandolo al vector.

Se cierra la conexion a la base y se retorna el vector con los

resultados de la operacion

Page 171: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

39

public Vector buscarTodos() throws Throwable{

Vector valorDevolver = new Vector();

String sql = "Select * from grupo order by nombre;";

PreparedStatement unPS = unCon.prepareStatement(sql);

ResultSet unRS = unPS.executeQuery();

Grupo unGrupo = null;

while (unRS.next()){

unGrupo= new Grupo();

unGrupo.setNombre(unRS.getString("nombre"));

unGrupo.setDescripcion(unRS.getString("descripcion"));

valorDevolver.addElement(unGrupo);

}

unRS.close();

unPS.close();

return valorDevolver;

}

La funcion Buscar recibe como parametro un string que contiene el

nombre del grupo a buscar, se define un string el cual se va a asignar

la sentencia sql delete que se va a ejecutar en la base.

Page 172: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

40

El signo de interrogacion del select se los reemplaza por un valor que

se obtiene del objeto tipo grupo,en un ciclo de repetición while el cual

va a recorrer el objeto y asignandolo al objeto tipo grupo.

Se cierra la conexion a la base y se retorna un boolean con el

resultado de la operación.

public Grupo buscarGrupo(String nombreGrupo) throws Throwable{

Grupo unGrupo = new Grupo();

String sql = "Select nombre, descripcion, gid from grupo where

nombre= ?;";

PreparedStatement unPS= unCon.prepareStatement(sql);

unPS.setString(1,nombreGrupo);

ResultSet unRS= unPS.executeQuery();

while (unRS.next()){

unGrupo.setNombre(unRS.getString("nombre"));

unGrupo.setDescripcion(unRS.getString("descripcion"));

unGrupo.setGID(unRS.getString("gid"));

}

unRS.close();

unPS.close();

return unGrupo;

} }

Page 173: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

41

2..- Clases BO

Los objetos BO son aquellos que contienen las reglas de negocio. Son los

encargados de mantener las entidades del sistema, que, en nuestro caso,

son las tablas de la base de datos.

Los objetos BO hacen uso de los objetos DAO para obtener los datos que

necesiten. En nuestra aplicación, tenemos una clase BO por cada clase

DAO.

Los objetos BO que usamos son las siguientes

UsuarioBO

GrupoBO

GrupoUsuarioBO

InformacionDeContactoBO

ParametrosDominioBO

ComplejidadPasswordBO

Page 174: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

42

2.1.- Principales Clases de los Objetos BO

2.1.1.- UsuarioBO

/* Librerias que utliza el Objeto UsuarioBO

package com.project12.classes;

import java.sql.*;

import java.util.Vector;

/* Inicio de la Clase Usuario BO

public class UsuarioBO {

La función Guardar recibe un parámetro de tipo llama a la clase Base

para realizar la conexión a la base.

Define un objeto tipo UsuarioDAO para realizar el procedimiento de

guardar retorna un boolean en que se indica el resultado del proceso .

/*Inicio de la función Guardar

public boolean guardar (Usuario unUsuario) throws

SQLException, ClassNotFoundException {

Connection unCon = Base.getConexion();

UsuarioDAO unUsuarioDAO = new UsuarioDAO(unCon);

boolean valorDevolver = unUsuarioDAO.guardar(unUsuario);

unCon.commit();

Page 175: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

43

return valorDevolver;

}

/*Fin de la función Guardar

La función actualizar recibe un parámetro de tipo Usuario llama a la

clase Base para realizar la conexión a la base Define un objeto tipo

UsuarioDAO para realizar el procedimiento de actualizar retorna un

boolean en que se indica el resultado del proceso.

/*Inicio de la función Actualizar

public boolean actualizar (Usuario unUsuario) throws

SQLException, ClassNotFoundException {

Connection unCon = Base.getConexion();

UsuarioDAO unUsuarioDAO = new UsuarioDAO(unCon);

boolean valorDevolver = unUsuarioDAO.actualizar(unUsuario);

unCon.commit();

return valorDevolver;

}

/*Fin de la función Actualizar

La función Eliminar recibe un parámetro de tipo Usuario llama a la

clase Base para realizar la conexión a la base Define un objeto tipo

Page 176: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

44

UsuarioDAO para realizar el procedimiento de eliminar retorna un

boolean en que se indica el resultado del proceso.

/*Inicio de la función Eliminar

public boolean eliminar (Usuario unUsuario) throws

SQLException, ClassNotFoundException {

Connection unCon= Base.getConexion();

UsuarioDAO unUsuarioDAO=new UsuarioDAO(unCon);

BoleanvalorDevolver=unUsuarioDAO.eliminar(unUsuario.getNombre())

unCon.commit();

return valorDevolver;

}

/*Fin de la función Guardar

La función buscarUsuario recibe un parámetro de tipo string que

contiene el nombre del usuario a buscar llama a la clase Base para

realizar la conexión a la base se define un objeto tipo Usuario se

realiza un try el cual si existe un error en la búsqueda del nombre del

grupo manda ese error al catch y lo muestra por pantalla.

Define un objeto tipo UsuarioDAO para realizar el procedimiento de

buscar un Grupo al objeto tipo grupo se le asigna el resultado de la

búsqueda retorna un objeto tipo usuario con resultado del proceso.

Page 177: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

45

/*Inicio de la función buscarUsuario

public Usuario buscarUsuario(String nombre) throws

SQLException, ClassNotFoundException {

Connection unCon= Base.getConexion();

Usuario unUsuario = new Usuario();

try{

UsuarioDAO unUsuarioDAO=new UsuarioDAO(unCon);

unUsuario = unUsuarioDAO.buscarUsuario(nombre);

}catch (Throwable e){

System.out.println(e);

}

return unUsuario;

}

/*Fin de la función buscarUsuario

El Vector buscartodos no recibe parámetros define un objeto tipo

vector en el cual se almacenara los resultados de la búsqueda llama a

la clase Base para realizar la conexión a la base se realiza un try el

cual si existe un error en la búsqueda manda ese error al catch y lo

muestra por pantalla Define un objeto tipo UsuarioDAO para realizar el

procedimiento de buscar todos los Usuarios al objeto tipo vector se le

Page 178: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

46

asigna todos los resultados de la búsqueda return retorna un objeto

tipo vector con los resultados del proceso.

/*Inicio Vector buscarTodos

public Vector buscarTodos() throws Throwable {

Vector valorDevolver=null;

Connection unCon= Base.getConexion();

try{

UsuarioDAO unUsuarioDAO=new UsuarioDAO(unCon);

valorDevolver = unUsuarioDAO.buscarTodos();

}catch (Throwable e){

}

return valorDevolver;

}

}

/*Fin Vector buscarTodos

Page 179: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

47

2.1.2.-GrupoBO

/* Librerías que utiliza el Objeto GrupoBO

package com.project12.classes;

import java.sql.*;

import java.util.Vector;

/* Inicio de la Clase GrupoBO

public class GrupoBO {

La función Guardar recibe un parámetro de tipo Grupo llama a la clase

Base para realizar la conexión a la base.

Define un objeto tipo GrupoDAO para realizar el procedimiento de

guardar retorna un boolean en que se indica el resultado del proceso

/*Inicio de la función Guardar

public boolean guardar (Grupo unGrupo) throws SQLException,

ClassNotFoundException {

Connection unCon = Base.getConexion();

GrupoDAO unGrupoDAO = new GrupoDAO(unCon);

boolean valorDevolver = unGrupoDAO.guardar(unGrupo);

unCon.commit();

return valorDevolver;

}

Page 180: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

48

/*Fin Función Guardar

La función actualizar recibe un parámetro de tipo Grupo llama a la

clase Base para realizar la conexión a la base.

Define un objeto tipo GrupoDAO para realizar el procedimiento de

actualizar retorna un boolean en que se indica el resultado del

proceso.

/*Inicio Función Actualizar

public boolean actualizar (Grupo unGrupo) throws SQLException,

ClassNotFoundException {

Connection unCon = Base.getConexion();

GrupoDAO unGrupoDAO = new GrupoDAO(unCon);

boolean valorDevolver = unGrupoDAO.actualizar(unGrupo);

unCon.commit();

return valorDevolver;

}

/* Fin Función Actualizar

La función Eliminar recibe un parámetro de tipo Grupo llama a la clase

Base para realizar la conexión a la base.

Page 181: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

49

Define un objeto tipo GrupoDAO para realizar el procedimiento de

eliminar retorna un boolean en que se indica el resultado del proceso

/*Inicio Función Eliminar

public boolean eliminar (Grupo unGrupo) throws SQLException,

ClassNotFoundException {

Connection unCon= Base.getConexion();

GrupoDAO unGrupoDAO=new GrupoDAO(unCon);

Bolean valorDevolver = unGrupoDAO.eliminar(unGrupo.getNombre();

unCon.commit();

return valorDevolver;

}

/* Fin Función Eliminar

La función buscarGrupo recibe un parámetro de tipo string que

contiene el nombre del grupo a buscar llama a la clase Base para

realizar la conexión a la base. Se define un objeto tipo grupo se realiza

un try el cual si existe un error en la búsqueda del nombre del grupo

manda ese error al catch y lo muestra por pantalla.

Define un objeto tipo GrupoDAO para realizar el procedimiento de

buscar un Grupo al objeto tipo grupo se le asigna el resultado de la

búsqueda retorna un objeto tipo grupo con resultado del proceso.

Page 182: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

50

/* Inicio Función buscarGrupo

public Grupo buscarGrupo(String nombre) throws SQLException,

ClassNotFoundException {

Connection unCon= Base.getConexion();

Grupo unGrupo = new Grupo();

try{

GrupoDAO unGrupoDAO=new GrupoDAO(unCon);

unGrupo = unGrupoDAO.buscarGrupo(nombre);

}catch (Throwable e){

System.out.println(e);

}

return unGrupo;

}

/* Fin Función buscarGrupo

El Vector buscarTodos no recibe parámetros define un objeto tipo

vector en el cual se almacenara los resultados de la búsqueda llama

a la clase Base para realizar la conexión a la base se realiza un try el

cual si existe un error en la búsqueda manda ese error al catch y lo

muestra por pantalla.

Define un objeto tipo GrupoDAO para realizar el procedimiento de

buscar todos los Grupo al objeto tipo vector se le asigna todos los

Page 183: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

51

resultados de la búsqueda return retorna un objeto tipo vector con los

resultados del proceso

/* Inicio Vector buscarTodos

public Vector buscarTodos() throws Throwable {

Vector valorDevolver=null;

Connection unCon= Base.getConexion();

try{

GrupoDAO unGrupoDAO=new GrupoDAO(unCon);

valorDevolver = unGrupoDAO.buscarTodos();

}catch (Throwable e){

System.out.println(e);

}

return valorDevolver;

}

}

/* Fin Vector buscarTodos

/*Fin de la Clase UsuarioBO

Page 184: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

52

2.1.3.- GrupoUsuarioBO

/* Librerias que utliza el Objeto GrupoUsuarioBO

package com.project12.classes;

import java.sql.*;

import java.util.Vector;

/*Inicio de la Clase GrupoUsuario

public class GrupoUsuarioBO {

La función Guardar recibe un parámetro de tipo GrupoUsuario llama a

la clase Base para realizar la conexión a la base. Define un objeto tipo

GrupoUsuarioDAO para realizar el procedimiento de guardar retorna

un boolean en que se indica el resultado del proceso

/* Inicio Función guardar

public boolean guardar (GrupoUsuario unGrupoUsuario) throws

SQLException, ClassNotFoundException {

Connection unCon = Base.getConexion();

GrupoUsuarioDAO unGrupoUsuarioDAO = new

GrupoUsuarioDAO(unCon);

boolean valorDevolver = unGrupoUsuarioDAO.guardar

(unGrupoUsuario);

Page 185: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

53

unCon.commit();

return valorDevolver;

}

/* Fin Función guardar

La función Eliminar recibe un parámetro de tipo GrupoUsuario llama a

la clase Base para realizar la conexión a la base. Define un objeto tipo

GrupoUsuarioDAO para realizar el procedimiento de eliminar retorna

un boolean en que se indica el resultado del proceso.

/* Inicio Función eliminar

public boolean eliminar (GrupoUsuario unGrupoUsuario) throws

SQLException, ClassNotFoundException {

Connection unCon= Base.getConexion();

GrupoUsuarioDAOunGrupoUsuarioDAO=new

GrupoUsuarioDAO(unCon);

boolean valorDevolver = unGrupoUsuarioDAO.eliminar

(unGrupoUsuario);

unCon.commit();

return valorDevolver;

}

/* Fin Función eliminar

Page 186: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

54

La función BuscarGrupoUsuario recibe dos parámetro de tipo string

que contiene el nombreGrupo y nombreUsuario a buscar llama a la

clase Base para realizar la conexión a la base Se define un objeto tipo

GrupoUsuario Se realiza un try el cual si existe un error en la

búsqueda del nombre del GrupoUsuario manda ese error al catch y lo

muestra por pantalla Define un objeto tipo GrupoUsuarioDAO para

realizar el procedimiento de buscar un GrupoUsuario Al objeto tipo

GrupoUsuario se le asigna el resultado de la búsqueda retorna un

objeto tipo GrupoUsuario con resultado del proceso.

/* Inicio Función buscarGrupoUsuario

public GrupoUsuario buscarGrupoUsuario(String nombreGrupo,

String nombreUsuario) throws SQLException,

ClassNotFoundException {

Connection unCon= Base.getConexion();

GrupoUsuario unGrupoUsuario = new GrupoUsuario();

try{

GrupoUsuarioDAO unGrupoUsuarioDAO=new

GrupoUsuarioDAO(unCon);

unGrupoUsuario = unGrupoUsuarioDAO.buscarGrupoUsuario

(nombreGrupo, nombreUsuario);

}catch (Throwable e){

Page 187: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

55

System.out.println(e);

}

return unGrupoUsuario;

}

/* Fin Función buscarGrupoUsuario

El Vector buscarUsuariosGrupo recibe un parámetro de tipo String que

contiene el nombre del Grupo a buscar define un objeto tipo vector en

el cual se almacenara los resultados de la búsqueda llama a la clase

Base para realizar la conexión a la base Se realiza un try el cual si

existe un error en la búsqueda manda ese error al catch y lo muestra

por pantalla Define un objeto tipo GrupoUsuarioDAO para realizar el

procedimiento de buscar todos los UsuariosGrupo Al objeto tipo vector

se le asigna todos los resultados de la búsqueda retorna un objeto tipo

vector con los resultados del proceso

/* Inicio Vector buscarUsuariosGrupos

public Vector buscarUsuariosGrupo(String nombreGrupo) throws

Throwable {

Vector valorDevolver=null;

Connection unCon= Base.getConexion();

try{

Page 188: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

56

GrupoUsuarioDAO unGrupoUsuarioDAO=

new GrupoUsuarioDAO(unCon);

valorDevolver = unGrupoUsuarioDAO.buscarUsuariosGrupo

(nombreGrupo);

}catch (Throwable e){

System.out.println(e);

}

return valorDevolver;

}

/* Fin Vector buscarUsuariosGrupos

El Vector buscarGruposUsuario recibe un parámetro de tipo String que

contiene el nombre del Usuario a buscar define un objeto tipo vector

en el cual se almacenara los resultados de la búsqueda llama a la

clase Base para realizar la conexión a la base Se realiza un try el cual

si existe un error en la búsqueda manda ese error al catch y lo

muestra por pantalla Define un objeto tipo GrupoUsuarioDAO para

realizar el procedimiento de buscar todos los GruposUsuarios Al

objeto tipo vector se le asigna todos los resultados de la búsqueda

retorna un objeto tipo vector con los resultados del proceso.

Page 189: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

57

/* Inicio Clase buscarGruposUsuario

public Vector buscarGruposUsuario(String nombreUsuario)

throws Throwable {

Vector valorDevolver=null;

Connection unCon= Base.getConexion();

try{

GrupoUsuarioDAO unGrupoUsuarioDAO=

new GrupoUsuarioDAO(unCon);

valorDevolver= unGrupoUsuarioDAO.buscarGruposUsuario

(nombreUsuario);

}catch (Throwable e){

System.out.println(e);

}

return valorDevolver;

}/*Fin Clase buscarGruposUsuario

Page 190: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

58

/* Inicio Funcion getCadenaGID

public String getCadenaGID (String nombreUsuario) throws

Throwable {

Connection unCon= Base.getConexion();

String valorDevolver="";

try{

GrupoUsuarioDAO unGrupoUsuarioDAO =

new GrupoUsuarioDAO(unCon);

valorDevolver = unGrupoUsuarioDAO.getCadenaGID

(nombreUsuario);

}catch (Throwable e) {

System.out.println(e);

}

return valorDevolver;

}

}

/* Fin Funcion getCadenaGID

Page 191: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

59

3.- Varias Clases de Java

Las usamos para operar una serie de funciones propias de las clases que

hemos definido.

3.1.1.- Clase DHCP

Define objetos que contendrán información relacionada a la

configuración del archivo dhcpd.conf Nota: Para el funcionamiento

correcto de esta clase, el archivo dhcpd.conf debe tener la estructura

especificada por el grupo de desarrollo.

package com.project12.archivo;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Vector;

public class DHCP {

private String subNet="";

private String rango="";

private String tiempoLease="";

Page 192: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

60

private String tiempoLeaseMax="";

private String mascaraSubred="";

private String puertaEnlace="";

private String nombreDominio="";

private String ipDNS="";

Vector vectorReservacionDeIP = new Vector();

/*Inicio del Constructor

Constructor que no recibe parámetros Finalidad: Capturar información

del archivo dhcpd.conf.

Proceso: llama a funciones que asignan valores a los atributos

Uso: un objeto creado con este constructor será llenado

automáticamente y permite la presentación de la configuración del

servicio DHCP

public DHCP(){

try{

//infile contendra el archivo abierto para lectura

BufferedReader infile= new BufferedReader(new

FileReader("/etc/dhcpd.conf"));

leerConfiguracionDHCP(infile);

Page 193: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

61

//Se leen los parámetros generales

infile.close(); //cierre del BufferedReader

//infile contendrá el archivo abierto nuevamente para lectura

infile= new BufferedReader(new FileReader("/etc/dhcpd.conf"));

leerReservacionesDeIP(infile);

//Se leen las reservaciones de IP existentes

infile.close(); //cierre del BufferedReader

}catch(Throwable e){

System.out.println("Excepción constructor: " + e.getMessage());

}

}

/*Fin del Constructor

Constructor que no recibe parámetro entero

Finalidad: Simplemente crea un objeto de tipo DHCP

Uso: un objeto creado con este constructor será llenado de acuerdo a

las necesidades del programador (generalmente para cambiar las

configuraciones). Nota: el valor int recibido es indiferente, ya que es

usado simplemente para diferenciar del constructor anterior

Recibe un BufferedReader obtenido del archivo dhcpd.conf

Función para lectura de parámetros generales del archivo dhcpd.conf

Page 194: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

62

Realiza una lectura línea a línea del BufferedReader

public void leerConfiguracionDHCP(BufferedReader infile){

try

{

String linea; //contendrá el contenido de una línea leída

while ((linea = infile.readLine()) != null) //mientras hayan líneas por leer

{

if (linea.contains ("subnet") && linea.contains("netmask")) //si es la

línea que define la subnet y netmask

{

subNet = linea;

}

Cada if que sigue a continuación verifican el contenido de la línea leída

si contiene alguno de los identificadores buscados, borrarán estos

indicadores y el símbolo (;) presente en cada línea para obtener así el

valor de cada parámetro del archivo y asignarlo al atributo

correspondiente del objeto DHCP

if (linea.contains ("range"))

{

Page 195: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

63

linea = linea.replace("range ", "");

linea = linea.replace(";", "");

rango = linea;

}

if (linea.contains ("default-lease-time"))

{

linea = linea.replace("default-lease-time ", "");

linea = linea.replace(";", "");

tiempoLease=linea;

}

if (linea.contains ("max-lease-time"))

{

linea = linea.replace("max-lease-time ", "");

linea = linea.replace(";", "");

tiempoLeaseMax=linea;

}

if (linea.contains ("option subnet-mask"))

{

linea = linea.replace("option subnet-mask ", "");

linea = linea.replace(";", "");

mascaraSubred = linea;

}

Page 196: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

64

if (linea.contains ("option routers"))

{

linea = linea.replace("option routers ", "");

linea = linea.replace(";", "");

puertaEnlace = linea;

}

if (linea.contains ("option domain-name \""))

{

linea = linea.replace("option domain-name ", "");

linea = linea.replace(";", "");

nombreDominio= linea;

}

if (linea.contains ("option domain-name-servers"))

{

linea = linea.replace("option domain-name-servers ", "");

linea = linea.replace(";", "");

ipDNS= linea;

}

}

}catch(Throwable e){

}

}

Page 197: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

65

Recibe un parámetro de tipo BufferedReader para la lectura del

archivo dhcpd.conf

Proceso: leer las reservaciones existentes en el archivo dhcpd.conf

Finalidad: asignar valores de configuración del archivo a los atributos

del objeto DHCP.

public void leerReservacionesDeIP(BufferedReader infile){

ReservacionDeIP unaReservacionDeIP= null; //Contendrá los valores

de cada reservación El objeto será recreado (new) cada vez que se

encuentre una reservación

try

{

String linea;

while ((linea = infile.readLine()) != null) //mientras queden líneas por

leer

{

if (linea.contains ("reservacion"))

Al encontrar esta palabra en la línea, se habrá identificado que a

continuación empieza una definición para reservación de IP

{

Page 198: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

66

unaReservacionDeIP= new ReservacionDeIP();

Se recrea el objeto para que contenga los valores de la reservación de

IP identificada

Los siguientes bloques de código permiten el avance de línea

controlado para efectuar una eliminación del contenido no deseado de

cada línea y así obtener el valor de cada parámetro del archivo para

luego ser asignado a los atributos del objeto DHCP

linea = infile.readLine();

linea = linea.replace("host ", "");

linea = linea.replace(";", "");

unaReservacionDeIP.setMaquina(linea);

linea = infile.readLine();

//leer el presente en el archivo (según la estructura especificada)

linea = infile.readLine();

linea = linea.replace("ddns-hostname \"", "");

linea = linea.replace("\";", "");

unaReservacionDeIP.setFQDN(linea);

linea = infile.readLine();

linea = linea.replace("hardware ethernet ", "");

linea = linea.replace(";", "");

Page 199: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

67

unaReservacionDeIP.setMAC(linea);

linea = infile.readLine();

linea = linea.replace("fixed-address ", "");

linea = linea.replace(";", "");

unaReservacionDeIP.setIP(linea);

vectorReservacionDeIP.addElement(unaReservacionDeIP);

}

}

}

catch (IOException e)

{ System.out.println("Excepción getReservacion: " + e);

}

}

Los siguientes métodos, permiten obtención de valores contenidos en

los atributos del objeto DHCP

public Vector getVectorReservacionDeIP() {

return vectorReservacionDeIP;

}

public String getSubNet() {

Page 200: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

68

return subNet;

}

public String getRango() {

return rango;

}

public String getTiempoLease() {

return tiempoLease;

}

public String getTiempoLeaseMax(){

return tiempoLeaseMax;

}

public String getMascaraSubred(){

return mascaraSubred;

}

public String getPuertaEnlace(){

return puertaEnlace;

}

public String getNombreDominio(){

return nombreDominio;

}

public String getIpDNS(){

Page 201: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

69

return ipDNS;

}

Los siguientes métodos, permiten la asignación de valores a los

atributos del objeto DHCP

public void setSubNet(String nuevaSubNet){

subNet = nuevaSubNet;

}

public void setRango(String nuevoRango){

rango = nuevoRango;

}

public void setTiempoLease(String nuevoTiempoLease){

tiempoLease = nuevoTiempoLease;

}

public void setTiempoLeaseMax(String nuevoTiempoLeaseMax){

tiempoLeaseMax = nuevoTiempoLeaseMax;

}

public void setMascaraSubred(String nuevaMascaraSubred){

mascaraSubred = nuevaMascaraSubred;

}

public void setPuertaEnlace(String nuevaPuertaEnlace){

Page 202: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

70

puertaEnlace = nuevaPuertaEnlace;

}

public void setNombreDominio(String nuevoNombreDominio){

nombreDominio = nuevoNombreDominio;

}

public void setIpDNS(String nuevaIpDNS){

ipDNS = nuevaIpDNS;

}

}

Page 203: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

71

Clase que define objetos que realizan operaciones con el archivo dhcpd.conf

package com.project12.archivo;

3.1.2.- Clase OperacionDHCP

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class OperacionDHCP {

Método para crear un archivo intermedio que agrega las líneas

necesarias para agregar una reservación de IP. A partir del archivo

dhcpd.conf

Nota: Este método solo crea el archivo intermedio, no reemplaza el

archivo dhcpd.conf

Public void guardarReservacionDeIP(ReservacionDeIP

unaReservacionDeIP){

try

Page 204: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

72

{

Se crean los objetos requeridos para lectura del archivo dhcpd.conf

y la escritura del archivo intermedio dhcpdNuevo.conf

BufferedWriter outfile = new BufferedWriter(new

FileWriter("/respaldoConfig/dhcpdNuevo.conf"));

BufferedReader infile = new BufferedReader(new

FileReader("/etc/dhcpd.conf"));

String str; //contendrá cada línea leída del archivo dhcpd.conf

while ((str = infile.readLine()) != null) //mientras queden líneas por leer

{

Si encuentra el indicador para agregar reservaciones "nueva_reserva"

empezara la escritura de la información adicional

if (str.contains("nueva_reserva")){

outfile.write("#reservacion " + unaReservacionDeIP.getIP() + "\n");

outfile.write("host " + unaReservacionDeIP.getMaquina() + "\n");

outfile.write("{\n");

outfile.write("ddns-hostname \"" + unaReservacionDeIP.getFQDN() +

"\";\n");

outfile.write("hardware ethernet " + unaReservacionDeIP.getMAC() +

";\n");

Page 205: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

73

outfile.write("fixed-address " + unaReservacionDeIP.getIP() + ";\n");

outfile.write("}\n");

//agrega el nuevo indicador para ingreso de la próxima reservación

outfile.write("#nueva_reserva \n");

}else //agrega las líneas leídas de dhcpd.conf en el archivo intermedio

{

outfile.write(str + "\n");

}

}

infile.close();

outfile.close();

}

catch (IOException e)

{

System.out.println("Excepción: " + e.getMessage());

}

}

Método para buscar una reservación de IP especifica

Parámetros que recibe: una String que contiene una dirección IP

Devuelve: un booleano true si encuentra

Page 206: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

74

public boolean buscarReservacionDeIP(String ip){

boolean reservacionEncontrada= false;

try{

BufferedReader infile = new BufferedReader(new

FileReader("/etc/dhcpd.conf"));

String str;

while ((str = infile.readLine()) != null)

{

//System.out.println(str);

Si es encontrada la etiqueta requerida, se asigna true a la variable que

retornara

if (str.contains("#reservacion " + ip)){

reservacionEncontrada = true;

}

}

infile.close();

}catch(Throwable e){

}

return reservacionEncontrada;

}

Page 207: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

75

Parámetros: objeto del tipo ReservacionDeIP, que contiene la

información de la reservación a eliminar

Devuelve: un valor boolean true si fue eliminado

Nota: Este método no modifica el archivo dhcpd.conf, lo que hace es

crear un archivo intermedio /respaldoConfig/dhcpdNuevo.conf

public boolean eliminarReservacionDeIP(ReservacionDeIP

unaReservacionDeIP){

boolean flag = false;

try

{

//Se crean los objetos necesarios de lectura y escritura de archivo

BufferedWriter outfile = new BufferedWriter(new

FileWriter("/respaldoConfig/dhcpdNuevo.conf"));

BufferedReader infile = new BufferedReader(new

FileReader("/etc/dhcpd.conf"));

String str; //contendrá cada línea leída del archivo dhcpd.conf

String labelIP = "#reservacion " + unaReservacionDeIP.getIP();

{

Page 208: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

76

Si encuentra la etiqueta, se asigna un valor true al boolean que se

devolverá y no toma en cuenta las lineas que serán eliminadas

if (str.contains(labelIP)){

flag = true;

infile.readLine();

infile.readLine();

infile.readLine();

infile.readLine();

infile.readLine();

infile.readLine();

}

Si la línea no contiene la etiqueta, es escrita en el archivo intermedio

else

{

outfile.write(str + "\n");

}

}

infile.close();

outfile.close();

}

catch (IOException e)

Page 209: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

77

{

System.out.println("Excepción: " + e.getMessage());

}

return flag;

}

Parámetros: objeto de tipo DHCP que contiene los datos a modificar

Resultado: un boolean true si pudo actualizar

Crea un archivo intermedio que servirá para actualizar los parámetros

generales del archivo dhcpd.conf

public boolean actualizarConfiguracion(DHCP unDHCP){

boolean actualizacion = false;

try

{

//Se crean los objetos para lectura y escritura de archivos

BufferedWriter outfile = new BufferedWriter(new

FileWriter("/respaldoConfig/dhcpdNuevo.conf"));

BufferedReader infile = new BufferedReader(new

FileReader("/etc/dhcpd.conf"));

String linea; //contendrá la línea leída del archivo dhcpd.conf

while ((linea = infile.readLine()) != null)

Page 210: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

78

//mientras queden líneas por leer

{

Si encuentra la línea requerida, será reemplazada por los valores

del objeto DHCP

if (linea.contains("subnet") && linea.contains("netmask"))

outfile.write(unDHCP.getSubNet() + "\n");

else if (linea.contains("range"))

outfile.write("range " + unDHCP.getRango() + ";\n");

else if (linea.contains("default-lease-time"))

outfile.write("default-lease-time " + unDHCP.getTiempoLease() + ";\n");

else if (linea.contains("max-lease-time"))

outfile.write("max-lease-time " + unDHCP.getTiempoLeaseMax() +

";\n");

else if (linea.contains("option subnet-mask"))

outfile.write("option subnet-mask " + unDHCP.getMascaraSubred() +

";\n");

else if (linea.contains("option routers"))

outfile.write("option routers " + unDHCP.getPuertaEnlace() + ";\n");

else if (linea.contains("option domain-name") && !linea.contains("option

domain-name-servers"))

Page 211: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

79

outfile.write("option domain-name \"" + unDHCP.getNombreDominio()

+ "\";\n");

else if (linea.contains("option domain-name-servers"))

outfile.write("option domain-name-servers " + unDHCP.getIpDNS() +

";\n");

else

outfile.write(linea + "\n");

}

actualizacion = true;

infile.close();

outfile.close();

}

catch (IOException e)

{

System.out.println("Excepción: " + e.getMessage());

}

return actualizacion;

}

}

Page 212: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

80

2.1.3.- Operación Ldif

Clase que define objetos para realizar operaciones con el archivo

crontab para manejar horarios de los usuarios

package com.project12.archivo;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Vector;

/*Inicio de la Clase Operación Horario de Trabajo

public class OperacionHorarioDeTrabajo {

Parámetros: una String que contiene el nombre de usuario para buscar

si tiene signado horario

public Vector buscarHorariosTrabajo (String nombreUsuario){

Vector vectorHorarioDeTrabajo = new Vector();

contendrá los objetos de tipo HorarioDeTrabajo encontrados

(correspondientes al nombreUsuario)

BufferedReader infile = null;

Page 213: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

81

Contiene el número de horarios q tiene el usuario

try{

se define objeto para lectura del archivo /crontab

infile = new BufferedReader(new FileReader("/crontab"));

HorarioDeTrabajo unHorarioDeTrabajo = null;

String linea=""; //contendrá las líneas leídas del archivo

String parametro = ""; //contendrá cada parámetro del archivo

int nParametro = 0; //controlará el número de parámetros

obtenidos de la línea requerida

char caracter; //contendrá cada caracter de la línea requerida

while ((linea = infile.readLine()) != null) //mientras queden líneas

por leer

{

//si la línea contiene el nombre buscado

if (linea.contains (nombreUsuario))

{

//si la línea contiene la etiqueta que indica un horario en el

archivo crontab

if (linea.contains("horario_")){

unHorarioDeTrabajo = new HorarioDeTrabajo();

unHorarioDeTrabajo.setUsuario(nombreUsuario);

Page 214: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

82

linea = linea.replace("#", "");

unHorarioDeTrabajo.setIndice(linea);

linea = infile.readLine();

for (int i=0; i<linea.length(); i++){

caracter = linea.charAt(i);

if (caracter != ' ' ){

parametro= parametro + caracter;

}else{

//si contiene la etiqueta que indica la habilitación de la cuenta

if (linea.contains("inicio")){

if (nParametro==0)

unHorarioDeTrabajo.setInicioMinuto(parametro);

if (nParametro==1)

unHorarioDeTrabajo.setInicioHora(parametro);

if (nParametro==4){

if(parametro.contains("sun")) unHorarioDeTrabajo.setDom("sun");

if(parametro.contains("mon")) unHorarioDeTrabajo.setLun("mon");

if(parametro.contains("tue")) unHorarioDeTrabajo.setMar("tue");

if(parametro.contains("wed")) unHorarioDeTrabajo.setMie("wed");

if(parametro.contains("thu")) unHorarioDeTrabajo.setJue("thu");

if(parametro.contains("fri")) unHorarioDeTrabajo.setVie("fri");

if(parametro.contains("sat")) unHorarioDeTrabajo.setSab("sat");

Page 215: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

83

parametro = "";

nParametro=0;

break;

//sale del for, pues termió de procesar la línea

}

parametro = "";

}else{

//caso contrario, contiene la etiqueta que indica la deshabilitación de la

cuenta

if (nParametro==0) unHorarioDeTrabajo.setFinMinuto(parametro);

if (nParametro==1){

unHorarioDeTrabajo.setFinHora(parametro);

vectorHorarioDeTrabajo.addElement(unHorarioDeTrabajo);

parametro = "";

nParametro=0;

break; //sale del for, pues termió de procesar la línea

}

parametro = "";

}

nParametro++;

}

}

Page 216: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

84

}

}

infile.close();

}catch (Throwable e){

System.out.println ("Excepción Operacion Horario Trabajo: " +

e.getMessage());

}

return vectorHorarioDeTrabajo;

}

Parámetros: objeto HorarioDeTrabajo que contiene los datos para

agregar el nuevo horario.

Resultado: un booleano true si se realizó correctamente el proceso

Método que crea un archivo intermedio en el que se escriben las

líneas necesarias para asignación de horario (habilitación y

deshabilitación de cuenta)

public boolean guardarHorarioDeTrabajo (HorarioDeTrabajo

unHorarioDeTrabajo){

boolean valorDevolver = false;

try

{

Page 217: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

85

BufferedWriter outfile = new BufferedWriter

(new FileWriter("/root/Escritorio/crontab"));

BufferedReader infile = new BufferedReader

(new FileReader("/crontab"));

String str;

String lineaInicio;

String lineaFin;

String dias="";

while ((str = infile.readLine()) != null) {

System.out.println(str);

Si contiene la etiqueta donde se agregarán las 2 líneas

if (str.contains("nuevo_horario")){

Se escribe la etiqueta que identificará el horario

Nota: unHorarioDeTrabajo.getIndice() contiene un

indicador secuencial que servirá para hacer búsquedas o eliminación

del horario en lo posterior

outfile.write("#horario_" + unHorarioDeTrabajo.getIndice() + "_" +

unHorarioDeTrabajo.getUsuario() + "\n");

Se generan las líneas que serán escritas

lineaInicio = unHorarioDeTrabajo.getInicioMinuto() + " " +

unHorarioDeTrabajo.getInicioHora() + " * * ";

Page 218: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

86

lineaFin = unHorarioDeTrabajo.getFinMinuto() + " " +

unHorarioDeTrabajo.getFinHora() + " * * ";

if (unHorarioDeTrabajo.getDom().compareTo("sun") == 0){

dias = dias + "sun";

}

if (unHorarioDeTrabajo.getLun().compareTo("mon") == 0){

if (dias.compareTo("")!=0) dias = dias + ",";

dias = dias + "mon";

}

if (unHorarioDeTrabajo.getMar().compareTo("tue") == 0){

if (dias.compareTo("")!=0) dias = dias + ",";

dias = dias + "tue";

}

if (unHorarioDeTrabajo.getMie().compareTo("wed") == 0){

if (dias.compareTo("")!=0) dias = dias + ",";

dias = dias + "wed";

}

if (unHorarioDeTrabajo.getJue().compareTo("thu") == 0){

if (dias.compareTo("")!=0) dias = dias + ",";

dias = dias + "thu";

}

if (unHorarioDeTrabajo.getVie().compareTo("fri") == 0){

Page 219: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

87

if (dias.compareTo("")!=0) dias = dias + ",";

dias = dias + "fri";

}

if (unHorarioDeTrabajo.getSab().compareTo("sat") == 0){

if (dias.compareTo("")!=0) dias = dias + ",";

dias = dias + "sat";

}

lineaInicio = lineaInicio + dias;

lineaFin = lineaFin + dias;

lineaInicio = lineaInicio + " root smbldap-usermod -I " +

unHorarioDeTrabajo.getUsuario() + " #inicio\n";

lineaFin = lineaFin + " root smbldap-usermod -J " +

unHorarioDeTrabajo.getUsuario() + " #fin\n";

Se escriben las líneas en el archivo intermedio

outfile.write(lineaInicio);

outfile.write(lineaFin);

/*outfile.write("{\n");

outfile.write("ddnshostname\"+unaReservacionDeIP.getFQDN()+"\";\n")

outfile.write("hardwareethernet"+unaReservacionDeIP.getMAC() +"\n")

outfile.write("fixed-address " + unaReservacionDeIP.getIP() + ";\n");

outfile.write("}\n");*/

Page 220: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

88

outfile.write("#nuevo_horario \n");

}else {

outfile.write(str + "\n");

}

}

infile.close();

outfile.close();

}

catch (IOException e) {

System.out.println("Excepción: " + e.getMessage());

}

Resultado: un boolean true si se realizó la operación

return valorDevolver;

}

Parámetros: un String que contiene la etiqueta que indica el inicio del

horario a eliminar

Método para crear un archivo intermedio que servirá para eliminar las

referencias a un horario asignado en el archivo crontab

public boolean eliminar(String indice){

boolean valorDevolver = false;

System.out.println("eliminar" + indice);

Page 221: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

89

try {

Se crean los objetos para lectura y escritura de los archivos

BufferedWriter outfile =

new BufferedWriter(new FileWriter("/root/Escritorio/crontab"));

BufferedReader infile =

new BufferedReader(new FileReader("/crontab"));

String str;

Mientras queden líneas por leer

while ((str = infile.readLine()) != null) {

if (str.contains(indice)){

Si se encuentra la etiqueta se omiten las 2 líneas siguientes

infile.readLine();

infile.readLine();

}else{

caso contrario, se copia el contenido en el archivo intermedio

outfile.write(str + "\n");

}

}

infile.close();

outfile.close();

}catch (IOException e)

{

Page 222: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

90

System.out.println("Excepción: " + e.getMessage());

}

return valorDevolver;

}

}

Page 223: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

91

4.- Servlets

Un servlet es un objeto Java que implementa la interfaz javax.servlet.Servlet

o hereda alguna de las clases más convenientes para un protocolo específico

Al implementar esta interfaz el servlet es capaz de interpretar los objetos de

tipo HttpServletRequest y HttpServletResponse quienes contienen la

información de la interfaz que invocó al servlet.

Los nombres Servlet que utilizamos son:

Actualizar Configuración DHCP

Actualizar Grupo

Actualizar Información de Contacto

Actualizar Usuario

Agregar Grupo Usuario

Buscar Configuración DHCP

Buscar Grupo

Buscar Horario Usuario

Buscar Información de Contacto

Buscar Maquina

Buscar Todas Maquinas

Buscar todos Grupos

Buscar Todos Usuarios

Configuración DHCP

Eliminar grupo

Eliminar Maquina

Eliminar Reservación de Ip

Eliminar Usuario

Guardar Grupo

Guardar Horario de Trabajo

Guardar Horario

Guardar Reservación Ip

Guardar Usuario

Quitar Grupo Usuario

Reserva de Ip

Usuario Miembro de

Page 224: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

92

4.1.- Código de los principales servlets

4.1.1.- ActualizarUsuarioServlet

package com.project12.servlet;

//librerias que necesita el servlet

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.*;

import com.project12.classes.Usuario;

import com.project12.classes.UsuarioBO;

Servlet implementation class for Servlet: ActualizarUsuarioServlet

Servlet que se utiliza para actualizar los datos del usuario

/*Inicio de la clase Actualizar Usuario Servlet

public class ActualizarUsuarioServlet extends HttpServlet{

static final long serialVersionUID = 1L;

public void service (HttpServletRequest req, HttpServletResponse res)

throws IOException, ServletException{

Page 225: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

93

try{

Inicializacion de objetos para recoger los datos que envia el jsp

UsuarioBO unUsuarioBO = new UsuarioBO();

Usuario unUsuario = new Usuario();

unUsuario.setNombre(req.getParameter("nombre"));

unUsuario.setNombreCompleto

(req.getParameter("nombreCompleto"));

unUsuario.setDescripcion(req.getParameter("descripcion"));

Recoleccion de datos de los checkbox del jsp

try{

Variable tipo string que le se asigna el estado del Checkbox

String uno=req.getParameter("cambiaPass");

If para identifcar los datos de los checkbox Cambiar Password

if (uno.compareTo("on")==0){

unUsuario.setCambiaPass("checked");

}else{

unUsuario.setCambiaPass("");

}

}catch(java.lang.NullPointerException e){

unUsuario.setCambiaPass("");

Page 226: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

94

}

try{

Variable tipo string que le se asigna el estado del Checkbox

String uno=req.getParameter("estadoCuenta");

If para identifcar los datos de los checkbox Estado Cuenta

if (uno.compareTo("on")==0){

unUsuario.setEstadoCuenta("checked");

}else{

unUsuario.setEstadoCuenta("");

}

}catch(java.lang.NullPointerException e){

unUsuario.setEstadoCuenta("");

}

Boolean que recibe como parametro el resultado de la clase actualizar

boolean resultado = unUsuarioBO.actualizar(unUsuario);

if (resultado == false){

Bloque que llama al servlet BuscarUsuarioServlet y que se le envía un

parámetro

ServletContext unSC = getServletContext();

RequestDispatcher unRD = unSC.getRequestDispatcher

("/BuscarUsuarioServlet?nombre="+unUsuario.getNombre());

Page 227: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

95

unRD.forward(req, res);

}

}catch (Throwable e){

Bloque que se ejecuta al haber alguna excepción en el proceso de

actualizar y lo muestra

PrintWriter out=res.getWriter();

out.println ("<html><head><title> Guardar Usuario </title></head>");

out.println("<tr><td>" + e.getMessage() + "</td><td>" + "</td></tr>");

out.println("</table></body></html>");

out.flush();

out.close();

}

}

}

/* Fin de la Clase Actualizar Servlet

Page 228: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

96

4.1.2.- Buscar Grupo Servlet

package com.project12.servlet;

Clases que necesita el servlet

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Vector;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.project12.classes.Grupo;

import com.project12.classes.GrupoBO;

Servlet que se utiliza para buscar un grupo

/*Inicio de la Clase Buscar Grupo Servlet

public class BuscarGrupoServlet extends javax.servlet.http.HttpServlet

implements javax.servlet.Servlet {

static final long serialVersionUID = 1L;

Page 229: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

97

public void service (HttpServletRequest req, HttpServletResponse res)

throws IOException, ServletException{

try{

En este bloque se definen objetos tipo Grupo y GrupoBO manejar los

parámetros que se recibe del jsp

GrupoBO unGrupoBO = new GrupoBO();

Grupo unGrupo = unGrupoBO.buscarGrupo

(req.getParameter("nombre"));

Bloque que se utiliza para llamar a un jsp

req.setAttribute("unGrupo", unGrupo);

ServletContext unSC = getServletContext();

RequestDispatcher unRD = unSC.

getRequestDispatcher("/grupo.jsp");

unRD.forward(req, res);

}catch (Throwable e){

Bloque que se ejecuta al haber alguna excepción en el proceso de

actualizar y lo muestra

PrintWriter out=res.getWriter();

out.println ("<html><head><title> Buscar Todos </title></head>");

out.println ("<body><table><tr><td>Nombre</td><td>Mail</td></tr>");

out.println("<tr><td> Error:" + e.getMessage() + "</td><td></td></tr>");

out.println("</table></body></html>");

Page 230: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

98

out.flush();

out.close();

}

}

}

/*Fin del Servlet Buscar Grupo

Page 231: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

99

4.1.3.- Buscar Usuario Servlet

package com.project12.servlet;

Librerías que utiliza el servlet

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Vector;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.project12.classes.Usuario;

import com.project12.classes.UsuarioBO;

/*Inicio de la clase BuscarUsuarioServlet

public class BuscarUsuarioServlet extends

javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

static final long serialVersionUID = 1L;

public void service (HttpServletRequest req, HttpServletResponse res)

throws IOException, ServletException{

try{

Page 232: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

100

En este bloque se definen objetos tipo Usuario y UsuarioBO manejar

los parámetros que se recibe del jsp

UsuarioBO unUsuarioBO = new UsuarioBO();

Usuario unUsuario = unUsuarioBO.buscarUsuario

(req.getParameter("nombre"));

Bloque que se utiliza para llamar a un jsp

req.setAttribute("unUsuario", unUsuario);

ServletContext unSC = getServletContext();

RequestDispatcher unRD =

unSC.getRequestDispatcher("/usuario.jsp");

unRD.forward(req, res);

}catch (Throwable e){

Bloque que se ejecuta al haber alguna excepción en el proceso de

actualizar y lo muestra

PrintWriter out=res.getWriter();

out.println ("<html><head><title> Buscar Todos </title></head>");

out.println ("<body><table><tr><td>Nombre</td><td>Mail</td></tr>");

out.println("<tr><td>" + e.getMessage() + "</td><td></td></tr>");

out.println("</table></body></html>");

out.flush();

out.close(); } } }

/*Fin del Servlet Buscar Usuario

Page 233: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

101

4.1.4.- Servlet Guardar Usuario

package com.project12.servlet;

Librerias que utiliza el servlet

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Vector;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.project12.archivo.OperacionLDIF;

import com.project12.classes.InformacionDeContacto;

import com.project12.classes.InformacionDeContactoBO;

import com.project12.classes.Usuario;

import com.project12.classes.UsuarioBO;

import com.project12.javaetc.Comando;

/*Inicio de la Clase Guardar Usuario

public class GuardarUsuarioServlet extends

javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

Page 234: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

102

static final long serialVersionUID = 1L;

public void service (HttpServletRequest req, HttpServletResponse res)

throws IOException, ServletException{

try{

En este bloque se definen objetos tipo Usuario y UsuarioBO manejar

los parámetros que se recibe del jsp

UsuarioBO unUsuarioBO = new UsuarioBO();

Usuario unUsuario = new Usuario();

unUsuario.setNombre(req.getParameter("nombre"));

unUsuario.setNombreCompleto(req.getParameter

("nombreCompleto"));

unUsuario.setDescripcion(req.getParameter("descripcion"));

String password = req.getParameter("textfield232");

try{

Recolección de datos de los checkbox del jsp

Variable Tipo String que se le asigna el contenido del Checkbox

cambiar password

String uno=req.getParameter("cambiaPass");

if (uno.compareTo("on")==0){

unUsuario.setCambiaPass("checked");

}else{

Page 235: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

103

unUsuario.setCambiaPass("");

}

}catch(java.lang.NullPointerException e){

unUsuario.setCambiaPass("");

}

try{

Variable Tipo String que se le asigna el contenido del Checkbox

cambiar password

String uno=req.getParameter("estadoCuenta");

if (uno.compareTo("on")==0){

unUsuario.setEstadoCuenta("checked");

}else{

unUsuario.setEstadoCuenta("");

}

}catch(java.lang.NullPointerException e){

unUsuario.setEstadoCuenta("");

}

En este bloque se definen varios objetos que se necesitan inicializar al

crear un nuevo usuario

boolean resultado = unUsuarioBO.guardar(unUsuario);

InformacionDeContactoBO unaInformacionDeContactoBO =

Page 236: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

104

new InformacionDeContactoBO();

InformacionDeContacto unaInformacionDeContacto =

new InformacionDeContacto();

unaInformacionDeContacto.setUsuario(unUsuario.getNombre());

boolean resultado1 = unaInformacionDeContactoBO.guardar

(unaInformacionDeContacto);

OperacionLDIF unaOperacionLDIF = new OperacionLDIF();

unaOperacionLDIF.crear(unaInformacionDeContacto);

Se llama a la clase Comando para mandar a ejecutar un script en linux

Comando unComando = new Comando ();

unComando.ejecutar("creaUsuario "+

unUsuario.getNombre()+" "+password);

unComando.ejecutar("usuarioLdif");

Bloque que se utiliza para llamar a un jsp

ServletContext unSC = getServletContext();

RequestDispatcher unRD = unSC.getRequestDispatcher

("/BuscarTodosUsuariosServlet");

unRD.forward(req, res);

}catch (Throwable e){

Page 237: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

105

Bloque que se ejecuta al haber alguna excepción en el proceso de

actualizar y lo muestra

PrintWriter out=res.getWriter();

out.println ("<html><head><title> Guardar Usuario </title></head>");

out.println("<tr> <td>Excepción:" + e.getMessage() + "</td>" + "</tr>");

out.println("</table></body></html>");

out.flush();

out.close();

}

}

}

/* Fin de la Clase Guardar Usuario

Page 238: ÍNDICE GENERAL AGRADECIMIENTO II …repositorio.ug.edu.ec/bitstream/redug/18676/1/UG-FCMF-B-CISC-PTG... · Por eso nuestro proyecto Servidor de Dominio Primario con integración

106

Manual de Usuario ................................................................................................. 2

1.- Mapa de Sitio ................................................................................................ 2

2.- Interfaz del Sistema Project12.com ............................................................ 3

2.1.- Interfaz Principal .................................................................................... 3

2.2.- Ingreso de Usuario y Clave .................................................................. 4

2.3.- Interfaz Principal de Usuario ................................................................ 5

2.4.- Interfaz de Creación de Usuario .......................................................... 6

Barra de hipervínculos ....................................................................................... 7

2.5.- Interfaz General de Usuario ..................................................................... 8

2.6.- Interfaz de Información de Usuario .................................................... 10

2.7.- Interfaz de Usuario Miembro de ......................................................... 11

2.9.- Interfaz Principal de Grupo ................................................................. 13

2.10.- Interfaz de Modificación de Grupo ................................................... 14

2.11.- Interfaz de Creación de Grupo ......................................................... 15

2.12.- Interfaz Principal de Maquina ........................................................... 16

2.13.- Interfaz de Eliminar Maquina ............................................................ 17

2.14.- Interfaz Principal de Servicios .......................................................... 18

2.15.- Interfaz de Configuración de DHCP ................................................ 20

2.16.- Interfaz de Reservación de IP .......................................................... 21

2.17.- Interfaz de Configuración de DNS ................................................... 22

Manual Tecnico .................................................................................................... 24

1.- Clases DAO ................................................................................................. 24

1.1.- Contenido de las Principales Clases DAO ........................................ 24

1.1.1.- UsuarioDAO .................................................................................. 24

1.1.2.- GRUPODAO ................................................................................. 33

2..- Clases BO .................................................................................................. 41

2.1.- Principales Clases de los Objetos BO ............................................... 42

2.1.1.- UsuarioBO ..................................................................................... 42

2.1.2.-GrupoBO......................................................................................... 47

2.1.3.- GrupoUsuarioBO .......................................................................... 52

3.- Varias Clases de Java................................................................................ 59

3.1.1.- Clase DHCP .................................................................................. 59

4.- Servlets ........................................................................................................ 91

4.1.- Código de los principales servlets ..................................................... 92

4.1.2.- Buscar Grupo Servlet ................................................................... 96

4.1.4.- Servlet Guardar Usuario .............................................................101