You are on page 1of 376

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemticas y Fsicas

Carrera de Ingeniera en Sistemas

Computacionales

Webmail Corporativo

TESIS DE GRADO

Previo a la Obtencin del Ttulo de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Autores:

Erazo Crdova Luis Eduardo

Jaramillo Ordez Ral Andrs

Miranda Castro Zaida Yadira

GUAYAQUIL-ECUADOR

Ao: 2008
AGRADECIMIENTO

Quedaremos eternamente agradecidos

primeramente a Dios por la sabidura que nos

dio. Agradecemos a nuestros padres por su

apoyo incondicional y a todas las personas

que nos brindaron su respaldo durante la

elaboracin de nuestro proyecto y creyeron en

nuestra capacidad de lograr nuestros

objetivos.
DEDICATORIA

El desarrollo de este proyecto as como la

sustentacin del mismo lo dedicamos

primeramente a Dios que nos dio la sabidura

para poder afrontar todos lo problemas que se

nos presentaron. Tambin lo dedicamos a

nuestros padres que por su apoyo incondicional

hemos podido realizar la culminacin de nuestro

proyecto de tesis.
TRIBUNAL DE GRADUACIN

Presidente del Tribunal Primer Vocal

Segundo Vocal Secretario


DECLARACIN EXPRESA

La autora de la tesis de grado corresponde exclusivamente al suscrito(s),

perteneciendo a la Universidad de Guayaquil los derechos que generen la

aplicacin de la misma.

(Reglamento de Graduacin de la Carrera de Ingeniera en sistemas

Computacionales, Art. 26)

______________________ _________________________
Erazo Crdova Luis Eduardo Jaramillo Ordez Ral Andrs
C.I. 0920317161 C.I. 0923068852

_______________________
Miranda Castro Zaida Yadira
C.I. 0922663729
RESUMEN

El wizard que permite administrar el Web mail Horde (Syscomsa) fue

elaborado con la finalidad de reducir costos de operatividad a la persona u

organizacin que la adquiera. La herramienta utilizada de Webmail

Corporativo llamada Horde fue desarrollada para administrar mensajes

desde cualquier ordenador sin que los mensajes se descargan por lo que no

consume espacio en nuestro ordenador. Adems este sistema radica en que

no es necesario realizar ninguna configuracin en ningn cliente de correo.

Puede accederse al correo desde cualquier emplazamiento solo se necesita

que exista una mquina con acceso a un navegador. La aplicacin que

hemos desarrollado es para poder administrar esta herramienta de una forma

mas amigable al usuario accediendo al servidor desde cualquier ordenador

con acceso a Internet y desde ah poder efectuar las configuraciones del

mismo para la administracin de cuentas de correo y sus parmetros.


INDICE GENERAL

AGRADECIMIENTO II

DEDICATORIA III

TRIBUNAL DE GRADUACIN IV

DECLARACIN EXPRESA V

RESUMEN VI

INDICE GENERAL VII

CAPITULO 1

1. INTRODUCCIN 1

1.1. Resumen 1

1.2. Misin del proyecto 2

1.3. Visin Del Proyecto 2

1.4. Ventajas del Webmail Corporativo 3

1.5. Objetivos del Proyecto Webmail Corporativo 6


1.6. Alcances del Proyecto 8

1.7. Requerimientos Tecnolgicos 12

1.7.1. Requerimientos Hardware 12

1.7.2. Requerimientos Software 13

1.8. Requerimientos Humanos 13

1.9. Metodologa 14

Investigacin 14

Anlisis 15

Diseo 15

1.10. Modelo De Desarrollo 16

Determinar o Fijar Objetivos 16

Anlisis de Riesgos 17

Desarrollar Verificar y Validar (Probar) 17

Planificar 18

1.11. Cronograma 19

1.12. Funcionalidad General Del Proyecto 19

1.13. Anlisis FODA 19

1.13.1. Fortaleza 19

1.13.2. Oportunidad 20

1.13.3. Debilidades 20

1.14.4. Amenazas 21
CAPITULO 2 22

2. ANLISIS DEL PROYECTO 22

2.1. Anlisis Funcionamiento Del Webmail 22

Configuraciones Administrador 24

Nombre De Usuario 24

Nombre De Dominio 24

Nombre De La Persona Que Utiliza La Cuenta 24

Logotipo De La Empresa 25

Asignacin De Usuario Y Contrasea 25

Determinar El Umbral Del Uso Del Buzn 25

Permisos Para Cada Usuario 25

2.1.1. Esquema Bsico Del Funcionamiento Del Webmail 26

2.2. Anlisis Orientado A Objetos 27

2.2.1. Anlisis De La Estructura De Objetos (AEO) 27

2.2.2. Diagrama De Casos De Uso 28

2.2.3. Diagrama De Tipos De Objetos 28

2.2.4. Diagrama De Relacin Entre Objetos 30

2.2.5. Anlisis Del Comportamiento De Objetos (ACO) 30

2.2.6. Diagrama De Eventos 31

2.2.7. Diagrama De Flujo De Objetos 31


CAPITULO 3 33

3. DISEO DEL PROYECTO 33

3.1. Diseo de la Estructura y Comportamiento de objetos (DEO) 33

3.2. Diseo Orientado a Objetos 34

3.2.1. Diagrama de Clases 34

3.2.2. Diagrama de Objetos 34

3.2.3. Diagrama de Actividades 35

CAPITULO 4 37

4. DESARROLLO Y PRUEBAS DEL SISTEMA 37

4.1. Desarrollo del sistema 37

4.2. Creacin de los Componentes 38

4.3. Seguridades 38

4.3.1. Sistema Operativo 39

4.3.2. Base de Datos 40

4.3.3. Humano 41

4.4. Pruebas del sistema 42

4.4.1. Verificacin y validacin 42

4.4.2. Prueba envi y recepcin 43

4.4.3. Prueba de creacin y modificacin 44


4.4.4. Pruebas de respaldo 44

4.4.5. Pruebas de seguridad 45

4.5. Calidad del sistema 46

4.6. Modelo de datos 46

4.6.1. Modelo de datos orientado a objetos 47

CAPITULO 5 49

5. RECOMENDACIONES Y CONCLUSIONES DEL PROYECTO 49

5.1. Recomendaciones 49

5.1.1. Hardware 50

5.1.2. Software 51

5.1.3. Puesta en marcha 52

5.1.4. Seguridades 53

GLOSARIO DE TERMINOS 57

ANEXOS 61
ABREVIATURA

DER.- Diagrama de Entidad de Relacin.


Diagrama de Diagrama de Flujo de Datos.

Flujo de

Informacin.D

FD.-
Internet Hard Disk.

ProtocolHD.-

DFI.-
ICMP.-IP.- Internet Control Message Protocol
LAN.- Local Area Network.
OO.- Orientado a objetos
RAM.- Random Access Memory.
SQL.- Language Query Sentences.
TCP.- Transfer Control Protocol.
UDP.- User Datagrama Protocol
CAPITULO 1

1. INTRODUCCION

1.1. Resumen

El servicio de webmail es un sistema de correo electrnico para empresas

pensado para portales, colegios, agrupaciones, etc., en definitiva para

grandes organizaciones.

Los webmails como su nombre lo indica son aplicaciones basados en una

plataforma web, que te permite verificar tus mensajes de correo electrnico,

utilizando tu navegador de Internet. Estas herramientas te permiten acceder

a tu cuenta de correo alojado en un servidor gratuito, de pago o empresarial.


2

Estos utilizan los protocolos de comunicacin IMAP o POP3. Mediante la

utilizacin de los webmails, no es necesario instalar algn cliente de correo,

ni descargar tus mensajes a tu ordenador, solo basta con tener una conexin

a Internet. Los webmails son vinculados a un servidor de correo.

Los webmail facilitan a los usuarios hacer uso de su correo electrnico de

una forma fcil, utilizando un diseo amigable al usuario, brindndole la

posibilidad de no depender de un nico ordenador.

1.2. Misin del proyecto

Implementar un sistema de correo electrnico con una interfaz amigable para

el usuario, el cual permita al mismo crear y administrar las cuentas de correo,

as como tambin permisos y umbrales necesarios de los usuarios finales,

utilizando parmetros definidos en la aplicacin.

1.3. Visin del proyecto

La principal meta de nuestro producto webmail esta dirigido a convertirse en

una herramienta lder en el mercado nacional e internacional, la cual permita

a los usuarios que trabajen con ella, administrar sus cuentas de correo

electrnico de una manera fcil desde cualquier lugar del mundo mediante un
3

ordenador que tenga acceso al Internet usando un username y un password.

El administrador tendr opciones adicionales el cual le permita regular las

cuentas que se creen con dicha herramienta.

1.4. Ventajas del Webmail Corporativo

a) Permite administrar mensajes desde cualquier ordenador que tenga un

navegador y pertenezca a la red interna de la organizacin. En caso de

expandir a otras localidades solo necesita que exista una maquina con

acceso a Internet.

b) Los mensajes no se descargan, por este motivo es que no consume

espacio de nuestro ordenador, es decir los mensajes pueden permanecer

en el buzn de nuestra cuenta y no es necesidad de guardarlo en la

computadora que estamos utilizando.

c) Este sistema radica en que no es necesario realizar ninguna

configuracin en ningn cliente de correo. Es decir los clientes no podrn

realizarle cambios tan radicales a la visualizacin de su correo.

d) Facilitan a los usuarios hacer uso de su correo electrnico de una forma

fcil, utilizando un diseo amigable al usuario.


4

e) Nuestra herramienta facilita al usuario cliente que sus mensajes enviados

a cualquier destinatario, ser respaldado automticamente en la bandeja

de elementos enviados.

f) Se permitir realizar un perfil determinado del buzn de correo por cada

usuario o grupo de usuarios, de esta manera se podr asignar a cada

usuario su respectivo tamao de buzn, dependiendo de las necesidades

de los usuarios y de la organizacin en general.

g) Otra gran ventaja es que el usuario administrador es que tendr

facultades de regular el tipo de informacin que descarguen los usuarios

clientes en su buzn de correo, optando por esta poltica evitaremos el

congestionamiento del buzn y optimizaremos el uso del Internet el cual

este acorde a las necesidades de la organizacin que lo utilice.

h) La interfaz Horde permite realizar varias actividades como: redactar, listar,

ver, eliminar mensajes, as como administrar nuestros contactos, crear

filtros en los mensajes, crear carpetas., etc.

Las cuales se las detallara a continuacin:

. Puede guardar todos sus contactos en una amplia libreta de

direcciones.

. Organiza todas sus actividades en el calendario web.


5

. Guarda sus notas preferidas para recordatorios importantes.

. Organiza, clasifica por estado (pendiente o terminada) y hace

seguimiento de sus tareas.

. Puede cambiar su contrasea de usuario en forma privada cuantas

veces quiera.

. Se puede crear una lista de correo no deseado, ganando tiempo

con lecturas tiles.

. Puede reenviar una copia del correo que le llega a una o varias

cuentas.

. Puede redactar a gusto sus correos en formato de texto puro o

html, adjunte cuantos archivos quiera.

. Puede organizar sus correos en carpetas personales dentro de su

buzn principal, con la funcin de filtros.

. Esta herramienta le permite traer a su buzn el correo de otra

cuenta para as evitarse entrar y revisar otros buzones.

. Puede cerrar correctamente sus sesiones para evitar accesos no

autorizados.

1.5. Objetivos del Proyecto Webmail Corporativo


6

a) Acceso a travs de un frontal web alojado en un servidor, mediante el uso

del protocolo HTTP, el cual es uno de los protocolos mas amigables y

confiables que permitir un acceso libre y directo hacia sus cuentas de

correos.

b) Cuentas de correo bajo dominio propio como por ejemplo

usuario@nombredomino.ec, esto facilitar a las organizaciones tener

cuentas de correo para sus usuarios o abonados con el nombre del

dominio que mas les convengan a medidas de sus necesidades.

c) Nmero de buzones de correo limitado por el administrador, debido que

los recursos que se posee son limitados, por tanto debe de existir una

opcin que permitir regular el nmero de usuarios que cada organizacin

requiera o necesite, segn sus funciones laborales, es decir a medida de

que la organizacin lo demande este nmero de buzones se puede

expandir siempre y cuando tambin sus recursos tcnicos lo permitan.

d) Buzones de correo de limitado dependiendo de un anlisis del

administrador del webmail, que nos especifique que usuario en especial

deba de tener mayor capacidad de buzn de correo.


7

e) La interfaz ser personalizada para el cliente, segura y amigable, el

encargado de establecer dichas interfaces ser el administrador, segn

los requerimientos de la organizacin, es decir el tendr la

responsabilidad de asignarle o modificarle la interfaz que los usuarios

podrn observar.

f) Se efectuarn copias de seguridad de los buzones de cada usuario cada

cierto tiempo para evitar calamidades o inconvenientes en el servidor

Webmail y as tener un respaldo de todos los correos de los usuarios de

la organizacin.

1.6. Alcances del Proyecto

a) Instalacin y configuraciones de la plataforma Linux (Sistema

Operativo), cuya distribucin es Centos 5.

b) Nuestro proyecto estar enfocado a las pequeas y medianas

empresas (PYME) las cuales nuestro proyecto les de flexibilidad de

manejo de la comunicacin entre sus colaboradores.

c) Configuracin de una conexin bsica de red que permitir realizar las

pruebas necesarias para cada uno de los servicios que se instalarn y

configurarn.
8

d) Instalacin y configuracin de un servidor de base de datos (Mysql),

para decirle al Webmail Horde que utilice dicha base de datos como

preferencia de los usuarios de dicho Webmail.

e) Instalacin y configuracin del Apache que es un servidor de pginas

web.

f) Webmail Horde es un Software libre, escrito en PHP, para el

desarrollo de aplicaciones corporativas basadas en Web. El Horde se

compone de unas libreras que proporcionan funcionalidades bsicas

(autenticacin, gestin de preferencias, interfaz grfica, etc.) y que

funciona como nexo de unin entre distintas aplicaciones de usuario,

que son gestionadas como sub-proyectos independientes.

g) Configuraciones de los servicios que van a ser prerrequisitos para la

utilizacin del webmail. Los servicios son los siguientes:

Mysql

Mailscanner

Httpd

Named

Network
9

Sendmail

h) Desarrollar una aplicacin con una interfaz grafica que permita una

mejor administracin de las cuentas de correo para que sea esta

amigable al usuario final.

i) La aplicacin ser desarrollada en un lenguaje de programacin web

con cdigo Php utilizando scripts shell de Linux. PHP que es un

lenguaje interpretado de pginas web dinmicas incrustado en el

HTML. En esta instalacin estn ligados ntimamente ya que la

compilacin e instalacin que haremos de PHP ser de forma esttica

y no de forma dinmica.

j) Nuestro producto presentar un men de opciones segn el usuario

que acceda, en caso que ingrese como el administrador tendr

opciones privilegiadas como crear cuentas de usuario, cambiar

perfiles, asignar espacios, dar permisos, etc.

k) Para la asignacin de una cuenta de correo a un determinado usuario

se escogern las siguientes opciones como parmetros del webmail

corporativo:
10

Lenguaje o idioma.

Umbral del buzn de correo.

Colores del fondo de la ventana de navegacin.

Permisos que tendr para el acceso al correo.

Logotipo o titulo que lo identificar como propietario de esa

cuenta.

l) Implementar polticas de seguridad usando protocolos de red seguros,

los cuales nos permitirn tener un mejor manejo a la seguridad de las

cuentas de correo, las cuales podemos detallar las siguientes:

1. Para que un usuario acceda a su cuenta, deber ingresar un

username y password.

2. Establecer estndares en la asignacin de username a los

usuarios (ej: zmiranda) y en caso de existir coincidencias se lo

distinguir mediante la inicial de su segundo apellido al final de

cada username (ej: zmiranda, zmirandac).

3. Recomendar reglas y polticas de navegacin que pueden ser

usadas de manera que se combinen las caractersticas de

horarios de copias de seguridad y mantenimiento, bloqueo de

dominios no autorizados.
11

m) Se instalar en el servidor un antivirus y antispam Mail Scanner, el

cual podr filtrar el correo no deseado.

1.7. Requerimientos Tecnolgicos

Para la elaboracin, desarrollo e implementacin de nuestro proyecto

webmail se necesitarn algunos requerimientos tecnolgicos bsicos tanto

en hardware como en software para que funcione correctamente, a

continuacin sern descritos con mayor amplitud.

1.7.1. Requerimientos Hardware

1 PC como Servidor de correo Linux

o Pentium III de 800 Mhz

o 256 Mb. de memria RAM

o Disco Duro de 60 GB.

o Tarjeta de Red de 10/100 Mbps

o Dvd Room

2 Pc con Windows XP con Service Pack 2

o Pentium 4 de 2.8 Ghz

o 512 de Memoria Ram DDR


12

o Disco Duro de 60 GB.

o Tarjeta de Red de 10/100 Mbps

o Internet Explorer 6.0 o superior, o en su defecto el

Mozilla Firefox 1.5. o superior

1.7.2. Requerimientos Software

Linux Centos 5.0

Windows XP con Service Pack 2

Internet Explorer 6.0 o Superior

Aplicativo de correo Horde 2.2

Base de Datos MySQL

MailScanner

Antivirus Clamav

1.8. Requerimientos Humanos

Para el anlisis, diseo, desarrollo y pruebas del proyecto en cuanto a los

requerimientos humanos estar conformado por los integrantes del grupo # 7

del tpico Linux del seminario de Graduacin y los cuales forman parte del

grupo de desarrollo del proyecto y se los detallara a continuacin:


13

Ral Andrs Jaramillo Ordez

Zaida Yadira Miranda Castro

Lus Eduardo Erazo Crdova

Existe tambin el grupo de usuarios finales que estar conformado por los

usuarios que manejaran la aplicacin que sern alumnos, profesores de

la carrera o cualquier empresa que se interesen por utilizar el servicio de

webmail corporativo por medio de la Internet.

1.9. Metodologa

La metodologa utilizada para el desarrollo de nuestro proyecto webmail

corporativo es el Orientado a Objetos, el cual lo realizaremos de la siguiente

forma:

Investigacin

En esta etapa realizaremos la recoleccin de toda la informacin investigada

para con ella empezar a recopilar conocimientos que nos ayudara a un mejor

entendimiento de lo que se quiere alcanzar en el proyecto.


14

Anlisis

Luego de haber adquirido conocimiento del tema, procedimos a analizar cada

uno de nuestros objetivos para as realizar los diagramas de los cuales

vamos a hacer uso:

Anlisis de los estados que tienen los objetos.

Anlisis del comportamiento de los objetos.

Anlisis de las Interfaces.

Anlisis de los requerimientos de usuario.

Diseo

A base de nuestro anlisis efectuado anteriormente procederemos al diseo

de lo que ser nuestro proyecto

Diagrama bsico del Webmail Corporativo.

Diagrama de casos de uso.

Diseo de las interfaces.

Relacin de los objetos.

Diagrama de clases.

Diagrama de Secuencia.
15

1.10. Modelo de Desarrollo

Para la elaboracin de nuestro proyecto seleccionamos el modelo de

desarrollo del software Espiral ya que una de las propiedades esenciales

de este modelo es su flexibilidad la cual permite realizar modificaciones en

cualquier etapa del proyecto en que nos encontremos, tambin permite la

creacin de prototipos a medida que avanzamos en las diferentes fases del

desarrollo de nuestro proyecto.

Este modelo se caracteriza por ser evolutivo ya que se desarrolla en una

serie de versiones incrementales Durante las primeras interacciones, esto

puede ser un prototipo. El modelo en espiral nos permite realizar las

siguientes actividades:

Determinar o fijar objetivos

Fijar los requerimientos definidos a obtener, especificacin, manual de

usuario.

Fijar las restricciones.

Identificacin de riesgos del proyecto y estrategias alternativas para

evitarlos.
16

Hay una cosa que solo se hace una vez: planificacin inicial o previa.

Anlisis del riesgo

El anlisis del riesgo se hace de forma explcita. Debido a que cada

proyecto es nico, no existe un Modelo que se aplique al 100

%, pero en nuestro caso en particular el modelo que mas se adapta a

nuestros requerimientos es el modelo Espiral.

Desarrollar, verificar y validar (probar)

Tareas de la actividad propia y se prueba.

Anlisis de alternativas e identificaron de resoluciones de riesgos.

Planificar
17

Revisamos todo lo hecho, evalundolo, y con ello decidimos si

continuamos con las fases siguientes y planificamos la prxima

actividad.

En la figura 1.1 se muestra el modelo espiral donde se observa las fases

que se dieron a lo largo del proyecto.

Figura 1.1 Modelo en Espiral

1.11. Cronograma
18

Anexo 1.1

1.12. Funcionalidad General del Proyecto

En el Anexo 1.2 encontrar la descripcin de la informacin que requiere el

sistema antes de la ejecucin de los procesos.

1.13. Anlisis F.O.D.A.

Segn el anlisis de nuestro proyecto podemos resaltar las fortalezas,

oportunidades, debilidades y amenazas las cuales las detallaremos a

continuacin:

1.13.1. Fortaleza

Con el uso de nuestro producto lograremos reducir costos ya que no

necesitamos adquirir varios equipos para que los usuarios puedan

revisar sus correos.


19

No necesitamos estar fsicamente dentro de un lugar especfico para

poder acceder a nuestra herramienta, la movilidad en la actualidad es

muy vital y necesaria en todas las organizaciones por que tambin nos

ahorra espacio y tiempo en todo momento.

1.13.2. Oportunidad

Con esta herramienta podremos abrir mercados a nivel internacional

una vez que nos podamos consolidar en el mbito local.

Nuestro producto puede evolucionar dando ms servicios, que van de

la mano con los requerimientos nuevos que nuestros usuarios deseen

que se les implemente.

1.13.3. Debilidades

Un manejo indebido por parte del administrador, para esto se deben

definir parmetros y normas especficas para que el administrador

cumpla con sus funciones de manera correcta y adecuada.

El incumplimiento de las normas de seguridad que se debern

implementar en nuestro producto, para evitar futuros inconvenientes

por partes de los usuarios.


20

1.13.4. Amenazas

Probablemente podemos ser victimas de ataque por algn intruso,

para esto se deber regular normas de seguridad adecuadas, as

como tambin reglas de firewall en el servidor de correo y tambin en

la red de la organizacin.

Nuestro producto puede ser atacado por virus, debido a que los

usuarios tengan el acceso a diferentes sitios no seguros en la red de la

Internet, por lo tanto en las maquinas del servidor de correo as como

tambin de las dems maquinas se deber implementar un buen

programa de antispam como de antivirus.

CAPITULO 2
21

2. ANALISIS DEL PROYECTO

2.1. Anlisis Funcionamiento del Webmail

Webmail es un cliente de correo que permite leer el correo sin tener que

instalar ningn cliente y se puede acceder a el desde cualquier ordenador

con conexin a Internet

Para conectarse hemos de tener dos elementos indispensables:

. El nombre de usuario.

. La contrasea. Se puede acceder desde el navegador de la siguiente

forma:

http:\\nombre_usuario@dominio.com

En el nombre de usuario se pondr la inicial del primer nombre y luego el

apellido, despus va el arroba y el nombre del dominio.

El servidor webmail ser manejado por un administrador que designar una

cuenta de correo a cada usuario nuevo, dependiendo de este le dar


22

permisos, tambin determinar el uso del buzn y dems parmetros segn

tipo de usuario.

El usuario final podr acceder a su cuenta de correo por medio de su

username y contrasea establecida y podr realizar las siguientes acciones

segn permisos adquiridos:

. Enviar correos a cuentas de otros dominios

. Recibir correos a otras cuentas de correo

. Guardar todos sus contactos en una libreta de direcciones

. Reenviar una copia de correo que le llegue

. Cambiar su contrasea privada cuantas veces quiera

. Configurar sus preferencias a gusto

. Organizar sus correos es carpetas personales

. Cerrar la sesin

Configuraciones del Administrador


23

Para que el administrador configure una nueva cuenta de correo necesitara

de ciertos parmetros u/o datos:

Nombre de usuario

Es el nombre que se le asignar para activar la cuenta de correo.

Nombre de dominio

Este nombre depender de la empresa que vaya a brindar dicho servicio.

Nombre de la persona que utilizara la cuenta

Es el nombre completo junto con apellidos de la persona que utilizara la

cuenta asignada.

Logotipo de la empresa

Para este caso ser un logotipo que se disear para una empresa.

Asignacin de un usuario y contrasea


24

Se le asignar un nombre de usuario y la respectiva contrasea para que

este pueda acceder.

Determinar el umbral del uso del buzn

Dependiendo de los requerimientos del usuario para dicha cuenta se le

determinara un lmite para su buzn.

Permisos para cada usuario

Son los que se le permitir al usuario realizar en su cuenta de correo, ser

manejado por el administrador segn lo necesite.

2.1.1 Esquema Bsico del Funcionamiento del Webmail

En la figura 2.1 se mostrara una breve descripcin Bsica de cmo es

el funcionamiento del Webmail, donde el usuario se conecta a travs

del Internet mediante un username y password y entra en el servidor


25

de correo principal en los cuales tambin estar las copias de

seguridad y los filtros de correo no deseado e infectado.

Figura 2.1 Esquema Bsico del Webmail

2.2. Anlisis Orientado a Objetos

Con el anlisis orientado a objetos la forma de modelar la realidad difiere del

anlisis convencional. Modelando el mundo en trminos de tipos de objetos y

lo que ocurre a estos.

Los modelos O.O. que construimos en el anlisis reflejan la realidad de modo

ms natural que las del anlisis tradicional de sistemas. Despus de todo, la

realidad consta de objetos y eventos que cambian el estado de dichos


26

objetos. Mediante las tcnicas O.O. construimos software que modela ms

fielmente el mundo real.

Cuando el mundo real cambia, nuestro software es mas fcil de cambiar, lo

que es una ventaja real. Quisiramos capturar el punto de vista de los

usuarios con respecto al mundo y traducirlo en software de la manera mas

automtica cuando cambien las necesidades de los usuarios, el software

cambia con ellas.

2.2.1. Anlisis de la estructura de objetos (AEO)

En esta parte definiremos las categoras de los objetos que percibimos

y las formas en que los asociamos. Nuestro sistema de webmail lo

presentaremos dentro de los siguientes diagramas que definen su

estructura:

2.2.2. Diagrama de casos de uso

En el Anexo 2.1 se encuentra el diagrama modela el sistema desde el

punto de vista del usuario final, modelando una descripcin clara y sin

ambigedades de como l interacta con el sistema.


27

En el Anexo 2.2 observaremos de una manera general como el

administrador y el usuario interactan con el servidor para la

administracin del webmail.

2.2.3. Diagrama de Tipos de Objetos

Los tipos de objetos son importantes puesto que nos ayudaran a cesar

los bloques conceptuales que nos ayudara a la construccin del

diseo para poder realizar las respectivas configuraciones y desarrollo

del sistema webmail que ser manejado por el administrador.

Los esquemas de objetos nos ayudaran en la definicin de clases y

estructuras de datos. Tambin es importante modelar la forma como

los objetos se asocian entre si.

En este anlisis es til nombrara la cantidad de objetos de

determinado tipo que se debe asociar con los objetos de otro tipo, para

aumentar la comprensin de las asociaciones.

En el Anexo 2.3 se detalla el Diagrama de Tipos de Objetos

(Administrador), en la cual dicho grafico nos permite visualizar de una


28

manera mas detallada las diferentes opciones que el administrador del

webmail tendra al usar nuestro producto.

En el Anexo 2.4 se detalla el Diagrama de Tipos de Objetos (Usuario

Final) en el cual en este grafico podemos observar todas las

actividades que los usuarios tendrn al utilizar nuestra herramienta

que estamos desarrollando.

2.2.4. Diagrama de relacin entre los objetos

Se encuentra la relacin que existe entre tipos de objetos con otros

tipos de objetos.

En el Anexo 2.5 se puede apreciar el Diagrama de relacin entre los

objetos para el Administrador, en el cual nos describe las diferentes

relaciones que tiene el administrador con las diferentes actividades de

nuestra herramienta.

En el anexo 2.6 se describir el Diagrama de relacin entre los objetos

para el Usuario, la grafica nos detalla que informacin requiere nuestra

herramienta necesita del usuario para realizar los procesos que se le

tenga autorizado al usuario.


29

2.2.5. Anlisis del Comportamiento de Objetos (ACO)

En esta parte del anlisis mostraremos los eventos, las expresiones en

que estos ocurren y como los eventos cambian el estado de los

objetos. As los esquemas de eventos se deben expresar en trminos

de esquemas de objetos puesto que los eventos cambian el estado de

determinados tipos de objetos

En el anlisis del comportamiento de objetos de nuestro sistema

identificaremos los siguientes diagramas y esquemas:

2.2.6. Diagrama de eventos

Un evento es un cambio en el estado de un objeto. Es necesario saber

de los cambios de estado, notar que ocurren, para ello los eventos

sirven como indicadores de los instantes en que ocurren los cambios.

El analista no necesita conocer cada evento que ocurra, tan solo los

tipos de eventos y de las instancias de tipos de eventos.

Anexo 2.7
30

2.2.7. Diagrama de Flujo de Objetos

En este diagrama mostraremos como se forman los objetos y la

relacin entre ellos a medida que se presentan cambios en el

desarrollo del proyecto. Muestra la secuencia que va a seguir hasta

llegar a concluir con el objetivo final requerido.

En el Anexo 2.8 se detalla el diagrama el cual nos indica paso a paso

la administracin de las opciones y accesos que nuestro usuario

tendr al usar nuestra herramienta, todas estas opciones y permisos

ser proporcionada por el administrador.

En el Anexo 2.9 en esta ocasin detallaremos grficamente las

opciones que tendr el usuario final al momento de trabajar con

nuestro producto.
31

CAPITULO 3

3. DISEO DEL PROYECTO

3.1. Diseo de la Estructura y Comportamiento de Objetos (DEO)

Las clases.- Los tipos de objetos en el AEO sern la gua en esta decisin.

Las estructuras de datos.- Se puede hacer un diagrama para representar la

estructura de datos.

Las operaciones y los mtodos de cada clase.- Se enumeran las operaciones

y se especifiquen sus mtodos en determinado momento.

3.2. Diseo Orientado a Objetos


32

3.2.1. Diagrama de clases

Los diagramas de clases se utilizan para modelar la vista de diseo

esttica de un sistema.

Estos diagramas son los ms importantes del diseo orientado a

objetos, son la piedra angular de nuestro diseo.

Contienen toda la informacin de todas las clases y sus relaciones con

otras clases.

En el momento de hacer el primer diagrama de clases ya se tiene una

lista de clases con algunos de sus atributos y operaciones.

3.2.2. Diagrama de Objetos

Muestra un conjunto de objetos y sus relaciones, los diagramas de

objetos representan instancias de los elementos encontrados en los

diagramas de clases.
33

Estos diagramas cubren la vista de diseo esttica o la vista de

procesos esttica de un sistema como lo hacen los diagramas de

clases, pero desde la perspectiva de casos reales o prototipos

Muestran una especie de fotograma de un instante en tiempo de

ejecucin.

Anexo 3.1

3.2.3. Diagrama de actividades

Los diagramas de actividades muestran el flujo de actividades, una

actividad produce finalmente una accin.

Un diagrama de actividad contiene:

Estados de actividad

Transiciones

Objetos

Restricciones

Los diagramas que muestra los Anexos 3.2 y Anexo 3.3 describen lo

siguiente:
34

De una manera general las actividades que van a ser realizadas

por el administrador.

Tambin muestra las actividades a realizar del usuario que va a

utilizar la cuenta de correo creada primeramente por el

administrador.

CAPTULO 4

4. DESARROLLO Y PRUEBAS DEL SISTEMA

4.1. Desarrollo del sistema


35

En primera instancia se procedi con la creacin de la Base de Datos dicha

Base de Datos esta creada en Mysql.

La seleccin de esta base de datos se debi a que el uso de la misma es de

tipo Open Source, como todo el resto del proyecto. Pero se deja la puerta

abierta para que el posibilidad de uso de cualquier otra Base de Datos que se

desee.

4.2. Creacin de los componentes

Una vez culminada la etapa de levantamiento de datos y del anlisis de

factibilidad del proyecto se procedi a la creacin de los componentes para la

cual se utiliz la metodologa de mdulos, tomando como referencia el

modelo de desarrollo en espiral, ya que al culminar un mdulo se inicia otro,

o en el caso que se requiera tambin se los puede trabajar en paralelo.

El orden de desarrollo se detalla a continuacin:

Anlisis de datos.

Desarrollo

Implementacin
36

Pruebas

4.3. Seguridades

En lo que concierne a las seguridades del sistema estn enmarcadas en

polticas de uso, ya que se trata de un programa tipo invasivo, el cual si es

reprogramado con diferentes objetivos para los que fue creado, puede llegar

a causar mucho dao en mi entorno de red. Por lo tanto, se debe tener

presente el mantener la integridad y seguridad de la informacin, la cual es

una de las partes ms sensibles y delicadas que tiene toda organizacin.

Los aspectos de seguridad estn marcados bajo los siguientes parmetros:

Sistema operativo

Base de Datos

Ejecucin de polticas.

Respaldos de la informacin.

Humano
37

4.3.1. Sistema operativo

Uno de los graves problemas que se detecto es que corremos el

riesgo en que nuestra herramienta pueda ser manipulado por personal

no autorizado y empiece a causar dao. Por lo que su operacin

inicialmente esta limitada a sistemas operativos Linux CentOS 5, solo

personas con amplio conocimiento de dicho sistema operativo y de

diversas distribuciones de sistemas operativos Unix, tendrn la

capacidad de modificar el cdigo original para que pueda trabajar en

diversos ambientes. Adems, cada sistema operativo maneja sus

niveles de seguridad, y si no se cumplen las condiciones para que el

programa pueda trabajar, el ataque ser infructuoso.

Todos los equipos como medida imperativa de seguridad, debern

tener restringido el acceso a carpetas y archivos crticos del sistema.

Ya que el programa podra ser usado para extraer algo mas que los

archivos de los passwords. Hay que tener mucha precaucin con esto,

de esta manera podemos prevenir ataques dirigidos hacia la

informacin de nuestra organizacin.


38

4.3.2. Base de Datos

Los registros del anlisis, especialmente las claves descifradas, se

guardarn en la base de datos, a la cual solo tendr acceso el

encargado de manejar o administrar esta herramienta, la misma puede

ser acezada fsicamente por medio de un usuario y clave, definidos en

la creacin de la misma.

4.3.3. Humano

Uno de los aspectos mas importantes es el Humano, es

seguramente el mas difcil de controlar. Uno de los riesgos que

mas se les debe tener presente durante la elaboracin de un

sistema es que el programa caiga en posesin de personas no

autorizadas o que la contrasea del mismo sea divulgada, con

esto todo las polticas de seguridad no cumplirn el objetivo

para las cuales fueron creadas.

Se tendr especial cuidado con los puntos arriba mencionados,

ya que la herramienta puede ser modificado fcilmente por

personal que tengan los conocimientos suficientes, para alterar


39

el objetivo de la misma y causar perjuicios a la organizacin que

adquiera esta producto.

4.4. Pruebas del sistema

Las pruebas del sistema es un mecanismo que nos servir verificar el optimo

funcionamiento de nuestro producto, en este sistema se procedio ha realizar

mltiples tipos de pruebas entre las que podemos resaltar encontramos las

siguientes:

Verificacin y validacin

Pruebas de envo y recepcin.

Pruebas de creacin y modificacin.

Pruebas de respaldos.

Pruebas de seguridad.

Calidad del sistema.


40

4.4.1. Verificacin y validacin

Estos dos puntos van ligados, ya que el tipo de prueba y analiza que

no existan errores en la implementacin, y la validacin analiza que lo

que se define en las especificaciones iniciales guarde relacin con lo

desarrollado.

Se realizaron este tipo de pruebas, en especial con los datos que

ingresan al sistema, y se comprob todos los posibles errores de

ingreso que se pudieran dar, corrigiendo con codificacin extra en

todos los casos.

Se verific que el sistema realice las operaciones de auditoria para las

cuales fue diseado. El cdigo original entregado solo realiza este tipo

de operacin, y no va mas all de lo que se propuso inicialmente, por

motivos de seguridad, se anularon lneas peligrosas en los scripts de

auditoria, las cuales podan causar grandes problemas si el programa

cae en manos de personas ajenas al entorno de la empresa.


41

4.4.2. Pruebas de envo y recepcin

En este tipo de pruebas, se evala el desempeo de cada mdulo de

manera independiente, y forma parte del tipo de pruebas de la caja

blanca, es decir analizan procesos de cada modulo, para probar

coherencias.

Al momento de realizar esta prueba se la efectu enviando correos

hacia varios usuarios, tambin se le solicito una notificacin de la

entrega del correo, de esta manera observamos que un objetivo muy

importante estaba funcionando de manera optima.

4.4.3. Pruebas de creacin y modificacin

En lo que concierne a la creacin y modificacin de usuarios o grupos

llama la atencin la facilidad y eficiencia de esta herramienta al realizar

esta labor. Se comprob que el administrador de correo antes de crear

un usuario tendr que crear un grupo al que este usuario este ligado

caso contrario no podr efectuar la creacin de usuario.


42

4.4.4. Pruebas de respaldos

En nuestra herramienta que desarrollamos permite al usuario

administrador de correo realizar respaldos de todas las cuentas de

correo cada cierto espacio de tiempo, esto depende directamente de

las polticas de seguridad y de la capacidad del hardware que la

empresa disponga para este trabajo.

4.4.5. Pruebas de Seguridad

Una de las pruebas mas importantes fue la de seguridad, ya que se

verific que con facilidad, modificando los scripts del sistema, y

aadiendo archivos maliciosos, se puede lograr mucho ms que solo

extraer los archivos de los passwords de forma remota. Por lo que se

vuelve imperativo adiestrar a los usuarios con consejos de seguridad.

Revisar peridicamente los logs que genera el sistema operativo, para

comprobar que no se ha hecho algo aparte de extraer archivos con el

fin de auditarlos, ver si no se ha realizado algn tipo de ataque

adicional a lo que realiza el programa.


43

Otra forma de prevenir ataques de terceras personas es controlar el

acceso a los recursos y carpetas del sistema, bloquear accesos,

verificar el acceso a puertos, mantener reglas de firewall actualizadas,

es un buen comienzo para mantener un nivel de seguridad aceptable.

Concienciar a los usuarios sobre el uso y manejo del programa, ya que

siendo de uso limitado a personas de nivel superior, no est dems

aplicar normas de moral y tica con respecto a los administradores del

sistema, para que ellos no incurran en algn momento en un mal uso

del mismo.

4.5. Calidad del Sistema

La calidad puede ser medida en varios aspectos, se puede decir con certeza

que es de ptima calidad, cumple con todos los requerimientos establecidos

por los usuarios, pero nos vemos un poco limitados en poner solo lo

necesario y restringir algn cdigo malicioso, con el fin de no dar un mal uso

de la herramienta.

4.6. Modelo de datos


44

En el proceso de abstraccin que conduce a la creacin de una base de

datos desempea una funcin prioritaria el modelo de datos. El modelo de

datos como abstraccin del universo de discurso, es el enfoque utilizado para

la representacin de las entidades y sus caractersticas dentro de la base de

datos.

Los objetivos del modelo de datos son dos:

Formalizacin: definir formalmente las estructuras permitidas y las

restricciones a fin de representar los datos de un SI.

Diseo: el modelo resultante es un elemento bsico para el desarrollo de la

metodologa de diseo de la base de datos.

Los diferentes modelos de datos comparten aunque con diferentes nombres

y notaciones unos elementos comunes, componentes bsicos de la

representacin de la realidad que realizan. Estos componentes se identifican

gracias a la clasificacin y pueden identificarse conceptos estticos y

conceptos dinmicos.

4.6.1. Modelo de Datos Orientado a Objetos


45

La importancia de la orientacin a objeto recorta el tiempo que toma a

obtener resultados temporales. La orientacin a objetos permite la

forma ms simple en el manejo de los datos tanto para el diseo

relacional como la elaboracin de interfaz entre los diversos lenguajes

orientados a objetos de base de datos.


46

CAPITULO 5

RECOMENDACIONES Y CONCLUSIONES DEL

PROYECTO

5.1. Recomendaciones

Luego de que la herramienta que desarrollo nuestro grupo sea sometida a

estrictos controles de calidad se llego a la conclusin que el margen de error

es bajo y las probabilidades que nuestra herramienta tenga algn tipo de

inconveniente en los objetivos y alcances para el que fue creado es

aceptable.
47

Lo que se recomienda hacer en principio es leer detenidamente los manuales

de usuario, y para conocimientos avanzados, el manual tcnico suministrado

en este proyecto. Haremos entonces una revisin rpida de lo mnimo que

necesitamos para que nuestro software funcione de manera ptima.

5.1.1. Hardware

Los datos suministrados aqu son los requerimientos de hardware

mnimos que necesita el sistema para su funcionamiento. Se detallan

a continuacin:

1 PC como Servidor de correo Linux

o Pentium III de 800 Mhz

o 256 Mb. de memria RAM

o Disco Duro de 60 GB.

o Tarjeta de Red de 10/100 Mbps

o Dvd Room

2 Pc con Windows XP con Service Pack 2

o Pentium 4 de 2.8 Ghz

o 512 de Memoria Ram DDR


48

o Disco Duro de 60 GB.

o Tarjeta de Red de 10/100 Mbps

o Internet Explorer 6.0 o superior, o en su defecto

el Mozilla Firefox 1.5. o superior

5.1.2. Software

Se usar el siguiente software para el desarrollo y operacin del

proyecto:

Linux Centos 5.0

Windows XP con Service Pack 2

Internet Explorer 6.0 o Superior

Aplicativo de correo Horde 2.2

Base de Datos MySQL

MailScanner

Antivirus Clamav
49

5.1.3. Puesta en marcha

Nuestro producto fue desarrollado con la finalidad de facilitar la

administracin de correo en las empresas pequeas y medianas

(PYMES), una vez que nuestro producto se implemente en la empresa

que lo requiera se podr observar la flexibilidad del mismo, debido a

que con esta herramienta permite realizar un control eficiente de los

recursos de la organizacin.

En el desarrollo de nuestra herramienta tambin se pudo constatar

que el usuario final al usar nuestro producto le permite facilidad de

acceso lo cual la empresa que lo adquiera experimentara un ahorro

considerable sobre todo al personal que necesitaba que

constantemente este en movimiento y normalmente tena que adquirir

equipos sofisticados y costosos para que de esta manera tener la

movilidad que nuestro producto proporciona pero con la diferencia que

nuestro producto tiene un bajo costo de operatividad.

Tambin se llego a la conclusin que nuestro producto tiene

caractersticas muy importantes que debe tener toda herramienta y

esta es la estabilidad operativa la cual llena las expectativas de todo

aquel usuario que uso nuestro producto ya en el campo laboral.


50

Otro aspecto importante que cabe sealar en este breve resumen es

el comportamiento de nuestra herramienta a medida de que el nmero

de usuarios aumentaba y se comprob que su comportamiento

continuaba estable y no se observaba algn decaimiento en su

rendimiento.

Todas las pruebas a las que fue sometido nuestro aplicativo los paso

de una manera apropiada lo cual garantiza a la persona o empresa

que adquiera nuestro producto la confiabilidad necesaria para ponerlo

en produccin lo ms pronto posible.

5.1.4. Seguridades

Las diferentes funcionalidades de las cuales se caracteriza nuestro

proyecto hacen que nuestro producto sea realmente una herramienta

muy til proporcionando estabilidad y confiabilidad a sus usuarios

finales como al usuario que ingrese como administrador al observar

detalladamente los perfiles tanto del usuario final como del

administrador brinda una interfaz amigable fcil de aprender y

manipular.
51

La confidencialidad de la informacin es otra de las propiedades

importantes que podemos sealar de nuestro producto debido a que

se detecto de esta necesidad en el estudio que se realizo previamente

a la seccin de mercado a la que est dirigido esta herramienta, la

portabilidad y disponibilidad de la informacin son aspectos que toda

empresa o usuario final desea ya que le permite acceder desde

cualquier sitio geogrfico y con recursos mnimos como es un

ordenador que tenga acceso a internet, esta portabilidad de la

informacin va de la mano con la seguridad de la misma debido a que

los usuarios finales pueden acceder a la bandeja de entrada la cual

recepta toda la informacin que intercambia con sus contactos los

cuales pueden ser de la misma organizacin o contactos externos y la

informacin que reposa en la bandeja de entrada est segura ya que

el usuario final tiene la potestad debido a la necesidad que este tenga

en descargar o no en el computador en el que est utilizando en ese

momento la informacin que tenga almacenada en su buzn de

correo.

La seguridad es otro punto importante que vale la pena mencionar ya

que nuestro producto desde su inicio se considero la seguridad un

aspecto primordial para brindar a nuestros clientes la confianza


52

necesaria para que este a su vez adquiera nuestra herramienta y la

ponga en operatividad. Para lograr este objetivo se establecieron

ciertas polticas de seguridad como los que vamos a mencionar a

continuacin:

1. Respaldar el buzn de correo en un periodo de tiempo en que

el administrador de correo o la necesidad de la organizacin lo

crea conveniente en funcin de sus actividades regulares.

2. Cambio de contrasea en la cual el aplicativo le indicara al

usuario que cambie de clave segn la frecuencia la cual est

definida por el administrador de correo.

3. Para evitar el envo de archivos los cuales pueden contener

algn tipo de contenido peligroso o no permitido por la

organizacin que lo adquiera, el administrador tendr la

potestad de indicar que tipo de archivos se descargue en el

buzn de correo.

4. La implementacin de un antivirus el cual realizara una

inspeccin del contenido de la informacin o los datos que

estn dirigidos a los usuarios finales.


53

GLOSARIO DE TRMINOS
54

Esta seccin del documento ofrece un breve resumen de los significados de

ciertos trminos tcnicos en orden alfabtico.

Ataque.- Agresin al sistema por parte de un pirata informtico con algn

propsito especfico.

Auditoria.- Proceso de revisin del sistema para comprobar la seguridad de

las claves.

Abuso de privilegio.- Persona que tiene privilegios de acceso hace mal uso

de los mismos generando un ataque al sistema.

Autenticacin.- Verificacin de que el cliente sea quien dice ser para lograr

acceso al sistema.

Base de Datos.- Guarda los datos del sistema.

Backup.- Respaldo de informacin del sistema.

Cracker.- Pirata informtico que busca acceder al sistema para causar dao.

Cdigo Fuente.- Lenguaje mediante el cual fue programado el sistema.

Conexin.- Comunicacin entre varias maquinas.


55

Eth0.- Interfaz de red en Linux

Firewall.- Conjunto de polticas de seguridad de acceso a computadoras.

Freeware.- Software gratuito.

GUI.- Interfaces grficas de usuario.

Hackers.- Pirata informtico que busca acceder a sistemas por diversin sin

causar perjuicio.

Hardware.- Parte fsica de una PC.

Hub.- Elemento fsico de conexin en red.

ICMP.- ( Internet Control Message Protocol ) protocolo de control de

mensajes de internet

IP.- Identificador nico que distingue una computadora de otra.

Interfaz.- Medio grafico de comunicacin entre la PC y el usuario.


56

LAN.- Red de rea local.

Logs.- Archivos temporales, respaldo.

Maquina Virtual.- Software que permite la simulacin de un computador.

MYSQL.- Software para crear una base de dato.

Multiplataforma.- Se puede trabajar sobre diferentes sistemas operativos sin

que afecte su desempeo.

Open Source. - Tecnologa libre de distribucin por la cual no se necesita

licencia.

Passwords.- Contrasea de acceso al sistema.

Paquetes.- Segmento de datos que se transmite de un lugar a otro.

Parmetros.- Datos que se enva a una funcin para que cumpla con su

propsito.

Perifricos.- Medios fsicos del computador.

Polticas de Seguridad.- Conjunto de normas y reglas para mantener

seguro un sistema.
57

Protocolos. Implementacin de la lgica de una capa del modelo OSI.

Red.- Conjunto de maquinas que se comunican entre si.

Root.- Directorio raz.

Servidor.- Equipo de computo, el cual esta recibiendo constante peticiones

de clientes para proveerle de algn servicio.

Software.- Programas en ejecucin.

Sniffers.- Programa espa que lee todos los paquetes que viajan por la red.

Scripts. - Conjunto de lneas de cdigos que permiten la ejecucin de una

tarea en particular.

Switch.- Dispositivo de interconexin de redes de computadoras que opera

en la capa 2 del modelo OSI, este interconecta dos o ms segmentos de

red.

Telnet.- Servicio que permite abrir una interfaz de comunicacin.


ANEXOS
Anexo 1.1 Cronograma de actividades
Anexo 1.2 Funcionalidad general del proyecto
Anexo 2.1 Casos de uso del usuario final
Anexo 2.2 Casos de uso del usuario administrador
Anexo 2.3 Casos de uso del usuario administrador

Sas
Anexo 2.4 Casos de uso del usuario final
Anexo 2.5 Diagrama de relacin entre los objetos para el Administrador
Anexo 2.6 Diagrama de relacin entre los objetos para el Usuario
Anexo 2.7 Diagrama de Flujo de Objetos del Administrador
Anexo 2.8 Diagrama de Flujo de Objetos del Usuario
Anexo 3.1 Diagrama de Objetos

Anexo 3.2 Diagrama de Actividades del Administrador


Anexo 3.3 Diagrama de Actividades del Usuario
UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemticas y Fsicas

Carrera de Ingeniera en Sistemas

Computacionales

Webmail Corporativo

TESIS DE GRADO

Previo a la Obtencin del Ttulo de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Autores:
Erazo Crdova Luis Eduardo
Jaramillo Ordez Ral Andrs
Miranda Castro Zaida Yadira

GUAYAQUIL-ECUADOR
Ao: 2008
AGRADECIMIENTO

Quedaremos eternamente agradecidos primeramente a Dios por la sabidura que nos


dio. Agradecemos a nuestros padres por su apoyo incondicional y a todas las personas
que nos brindaron su respaldo durante la elaboracin de nuestro proyecto y creyeron
en nuestra capacidad de lograr nuestros objetivos.
DEDICATORIA

El desarrollo de este proyecto as como la sustentacin del mismo lo dedicamos


primeramente a Dios que nos dio la sabidura para poder afrontar todos lo problemas
que se nos presentaron. Tambin lo dedicamos a nuestros padres que por su apoyo
incondicional hemos podido realizar la culminacin de nuestro proyecto de tesis.
TRIBUNAL DE GRADUACIN

Presidente del Tribunal Primer Vocal

Segundo Vocal Secretario


DECLARACIN EXPRESA

La autora de la tesis de grado corresponde exclusivamente al suscrito(s),


perteneciendo a la Universidad de Guayaquil los derechos que generen la aplicacin
de la misma.

(Reglamento de Graduacin de la Carrera de Ingeniera en sistemas


Computacionales, Art. 26)

______________________ _________________________
Erazo Crdova Luis Eduardo Jaramillo Ordez Ral Andrs
C.I. 0920317161 C.I. 0923068852

_______________________
Miranda Castro Zaida Yadira
C.I. 0922663729
RESUMEN

El wizard que permite administrar el Web mail Horde (Syscomsa) fue elaborado con
la finalidad de reducir costos de operatividad a la persona u organizacin que la
adquiera. La herramienta utilizada de Webmail Corporativo llamada Horde fue
desarrollada para administrar mensajes desde cualquier ordenador sin que los
mensajes se descargan por lo que no consume espacio en nuestro ordenador. Adems
este sistema radica en que no es necesario realizar ninguna configuracin en ningn
cliente de correo. Puede accederse al correo desde cualquier emplazamiento solo se
necesita que exista una mquina con acceso a un navegador. La aplicacin que hemos
desarrollado es para poder administrar esta herramienta de una forma mas amigable al
usuario accediendo al servidor desde cualquier ordenador con acceso a Internet y
desde ah poder efectuar las configuraciones del mismo para la administracin de
cuentas de correo y sus parmetros.
INDICE GENERAL

AGRADECIMIENTO II
DEDICATORIA III
TRIBUNAL DE GRADUACIN IV
DECLARACIN EXPRESA
V
RESUMEN VI
INDICE GENERAL VII

CAPITULO 1

1.1. Introduccion. 1
1.2. Requerimientos. 2
1.2.1. Requerimientos Software. 2
1.2.2. Requerimientos Hardware. 2
1.3. Panel Web Dominio. 3
1.3.1. Configuraciones del Servidor. 3
1.3.1.1. Configuracin De La Interfaz De Red. 3
Configuracin De Dominio. 8
1.4. Panel Web Administracin. 9
1.4.1. Administracin De Usuarios. 10
1.4.2. Administracin De Cuentas. 18
1.4.3. Administracin De Interfaz. 23
Copias De Seguridad. 28
1.5. Mensajes De Error. 30
1.6. Sesin Del Webmail Horde. 33

CAPITULO 2

Introduccin. 37
Funcionamiento. 38
Servicios que deben de estar activos. 39
Configuraciones. 40
Configuraciones del dominio. 40
Configuraciones de parmetros de cuentas. 48
Direcciones. 52
Codificacin del proyecto. 54
Scripts del proyecto. 54
Seccin administracin interfaz. 54
Seccin administracin cuenta. 60
2.3.1.3. Seccin administracin de usuarios. 63
2.3.1.4. Seccin administracin de correos. 65
2.3.1.5. Seccin administracin de seguridades. 72
2.4. Cdigo PHP del proyecto. 74
2.4.1. Seccin administracin de interfaz. 74
2.4.2. Seccin administracin de cuenta. 92
2.4.3. Seccin administracin de usuarios. 110
2.4.4. Seccin administracin de seguridades. 145
2.4.5. Seccin administracin de correos. 156
CAPITULO 1

MANUAL DE USUARIO

Introduccin

Webmail es un sistema de correo basada en una plataforma web el cual permitir


verificar los mensajes de correo electrnico utilizando un navegador a su eleccin. La
aplicacin desarrollada ofrece excelentes opciones para administrar un sistema de
correo. Dentro de los servicios que podemos administrar con esta herramienta son los
DNS que es la de dominio, podemos crear un dominio propio de nuestra empresa.
Para esto la aplicacin consta de dos paneles, el primero es un wizard para crear un
dominio inicial. Dicho dominio va a ser el que utilice de ah en adelante la empresa
para la asignacin de cuotas a los usuarios. El segundo es para la creacin de las
cuentas de correo y la administracin de las mismas tales como modificacin de
contraseas, copias de seguridad, umbral de buzones de correo, capacidad de archivos
adjuntos. Para poder crear cuentas de correo a los usuarios se debe en primera
instancia configurar el dominio que va a utilizar la organizacin para la asignacin de
cuotas para que los usuarios puedan enviar y recibir correo a nivel organizacional.

1.2. Requerimientos

Requerimiento Software

La principal herramienta de software que necesitar la computadora en donde se vaya


a administrar la aplicacin es un navegador web a su eleccin.

Requerimiento Hardware

En lo que a hardware se refiere lo que necesitamos es una PC con caractersticas


bsicas, y con una tarjeta de red que les permitir navegar y acceder al servidor de
correo.

1.3. Panel Web Dominio

Para conectarse hemos de tener dos elementos indispensables:


El nombre de usuario.
La contrasea.

1.3.1. Configuraciones Del Servidor


2

1.3.1.1. Configuracin De La Interfaz De Red

Para poder ingresar y poder configurar el propio dominio de su empresa, realice los
siguientes pasos:

Incorpore la direccin en su browser. La direccin debe estar en la siguiente forma


https://www.syscomsa.com/sw_syscomsa/

Este es el dominio creado inicialmente por nuestra empresa, pero al utilizar la


herramienta usted podr configurar un nuevo dominio de la empresa en la que labore.

Aqu se realizarn las configuraciones necesarias para la creacin del dominio de su


organizacin.
Luego le aparecer un cuadro donde debe incorporar su nombre y contrasea del
usuario en los campos correspondientes. Se muestra en la figura 1.1

El usuario y la contrasea le sern asignados por el diseador del proyecto.

Haga clic en "Aceptar" y enseguida la aplicacin le dar la bienvenida mediante la


siguiente pantalla:

Figura 1.1

Luego haga clic en la opcin Administracin de Servidor de Correo le aparecer


una nueva opcin que dice Configuraciones de Red, seleccionar esa opcin y da
clic sobre la misma, como se lo muestra a continuacin:

Clic

Figura
Figura 1.2
1.3
3

Luego usted acceder al wizard que le ayudar en las configuraciones de la red.

Esta es la ventana que se mostrar en donde se debe ingresar los datos solicitados que
son la IP que se le asignar al servidor y la mascara por defecto. Se muestra en la
Figura 1.4

IP del Servidor ( Aqu debemos ingresar la IP que le ser asignada al servidor de


correo, esta debe ser una de la red que maneja la empresa y que no est asignada a
ninguna
estacin. Ej. Si la red de su empresa es 192.168.2.0, debe asignar una IP de dicha red
a su servidor (192.168.2.1).

Mascara de la Red (Figura


La mascara
1.4 recomendada para su red debe ser de Clase C, es la
por defecto 255.255.255.0.

Luego damos click en la opcion siguiente e ingresamos los datos que le piden:

Hasta ahora hemos ingresado los datos necesarios para la configuracion de la interfaz
de red que es aquella que nos permitir el acceso al servidor de correo por medio de
la red interna.

Figura 1.5
4

Para pasar a la siguiente ventana del navegador hay que dar clic en Siguiente.

Configuracin De Dominio

Las siguientes son las direcciones que le van a permitir tener a servidores de dominios
externos. Figura 1.5.

Una vez ingresado los datos solicitados damos clic en Siguiente para ir a la pantalla
de la configuracion del dominio la que se muestra en la figura 1.6.

Nombre de Dominio ( Debe escribir el nombre del dominio de la empresa, como


medida de seguridad no debe contener nmeros, debe ser un nombre corto sin
espacios.
Nombre del Equipo ( Tenemos que ingresar aqu el nombre que le va a asignar al
Figura
servidor de correo, este1.6
tambin debe ser un nombre corto sin espacios.

Permite actualizaciones ( Aqu se va a definir si desea que se actualice en una


determinada red, ej. 192.168.2.0, o en todas las redes, en el ultimo caso se escribira
la palabra none.

Luego damos clic en Finalizar de esta manera sistema guardar los datos que
ingresemos y realizar las configuraciones. Al final si todo esta correcto saldr un
mensaje que la red ha sido configurada satisfactoriamente.

1.4. Panel Web Administracin

Para poder ingresar a este segmento de la aplicacin debe realizar los siguientes
pasos:

Incorpore la direccin en su navegador. La direccin debe estar de la siguiente forma:


https://www.syscomsa.com/ sw_syscomsa
Luego le aparecer un cuadro donde debe incorporar su nombre y contrasea del
usuario en los campos correspondientes, este usuario y clave es diferente a la
configuracin de dominio y red.

Figura 1.7
5

Haga clic en "Enviar" y enseguida la aplicacin le dar la bienvenida.

1.4.1. Administracin de Usuarios

En esta seccin encontrar varias opciones para la administracin de los usuarios y


sus cuentas de correo.

La ventana a continuacin es la que se presentar en el navegador una vez que haya


ingresado su usuario y clave, aqu encontrar las opciones que permiten administrar
los usuarios.

Es un mensaje de bienvenida como se muestra en la figura 1.8.

Para acceder a este grupo de opciones debe de dar clic en la opcin que dice
Usuarios que se encuentra en la parte de arriba de la ventana.
Se presentarn las siguientes opciones presentadas en la figura 1.9.

Figura 1.8
Creacin de Usuarios

En la opcin de Creacin de Usuarios se le presentar la pantalla que se muestra en


la figura 1.10, en la cual se debe de ingresar los datos que estn descritos.

Figura 1.9
6

Recuerde que no puede dejar campos vacos ni tampoco ingresar caracteres


especiales, solo en la caja de texto del password puede ingresar nmeros, letras y
caracteres especiales.

Una vez que haya ingresado todos los campos hay que dar clic en el botn Crear. Si
el usuario fue creado saldr un mensaje que el usuario fue creado exitosamente, caso
contrario saldr un mensaje de error dependiendo de cual fue la falla que existi.

Tome en consideracin que al crear un usuario debe de darle acceso en la opcin de


Control de acceso que se redacta mas adelante.

Creacin de Grupos

En la opcin de Creacin de Grupos ingrese el nombre del nuevo departamento que


desee crear. Luego hay que dar un clic en el botn Crear. Si el departamento fue
creado saldr un mensaje que la operacin fue exitosa. A continuacin se muestra la
pantalla en la figura 1.11.
Figura 1.10

Figura 1.11
7

Creacin de Usuarios por Lista

En la opcin de Creacin de Usuarios por Lista se debe ingresar la ruta completa de


la ubicacin del archivo (Ej. C:\archivo\datos) donde se encuentran los datos de los
usuarios a crear. El archivo creado debe seguir el ejemplo que se muestra en la
siguiente pantalla. Una vez que se haya ingresado la ubicacin seleccionar botn
Enviar y automticamente se generara el archivo y se crearan los usuarios
exitosamente. En caso de error en la creacin saldr un mensaje del error que se
produjo.

En la opcin Modificacin de Usuarios se tiene que seleccionar el usuario al que


queremos modificar sus datos, seleccinandolo de la lista que se muestra. Damos clic
en el botn Buscar y luego saldr una pantalla igual a la de creacin de usuario pero
con los datos actuales para que lo podamos modificar. A continuacin se muestra la
pantalla.

Figura 1.12

En la opcin de Modificacin de Grupos lo primero que tenemos que hacer es


seleccionar en nombre del departamento que deseamos modificar y dar clic al botn
de Buscar entonces
Figura 1.13 buscar el departamento seleccionado. Una vez encontrado
mostrar una pantalla para que podamos cambiar el nombre del departamento. Todo
esto se muestra en las siguientes pantallas.

Figura 1.14
8

En la opcin de Cambio de Claves tambin seleccionamos de la lista el usuario al


cual le deseamos modificar su clave. Una vez que seleccionado damos clic en el
botn Buscar y mostrar otra pantalla donde debemos de ingresar la nueva
Figura
contrasea 1.15 al usuario seleccionado. A continuacin se muestra las pantallas
asignada
que se presentaran al momento en que necesitemos modificar la clave.

Administracin de Cuentas

Para acceder a este grupo de opciones debemos dar clic en la opcin Cuentas que se
encuentra en la parte de arriba de la ventana.
Se te presentarn las siguientes opciones:

Figura 1.16

En la opcin Parmetros de Cuentas se define cuales son los parmetros que se le


asigne a todas las cuentas de los usuarios que seFigura
cre. 1.17
Dentro de las opciones
mltiples tenemos las siguientes que se detallan una a una.

Figura 1.18
9

En la opcin Definicin de Cuotas Usuario asignaremos las cuotas a los usuarios.


Elegimos primero el nombre del usuario y luego le asignamos una cuota de gracia que
es el tamao antes de llegar al mximo que todava no sobrepasa lo absoluto de la
cuota y la cuota absoluta es el tamao mximo que puede llegar ya que una vez que
se llene ya no podr almacenar mas correo.

En la opcin Definicin de Cuotas Grupo asignaremos las cuotas a los grupos de


usuarios.

Elegimos primero el nombre del grupo y luego le asignamos una cuota de gracia que
es el tamao antes de llegar al mximo que todava no sobrepasa lo absoluto de la
cuota y la cuota absoluta es el tamao mximo que puede llegar ya que una vez que
se llene ya no podr almacenar mas correo.
Figura 1.19

En la opcin Control de Acceso de Usuarios, aqu se le dar acceso al nuevo


usuario que se cre, sino le da este acceso el usuario no podr enviar correos a sus
destinatarios y solo podr recibir correo.

Se debe elegir
Figurael1.20
nombre del usuario que ya esta creado previamente, luego se deber
elegir las opciones del combo Accin que pueden ser ACEPTA que es para que el
usuario pueda enviar correo a diferentes dominios o DENIEGA que deniega todo
envo y recepcin de correo.
10

En la opcin Control de Acceso de Dominio e IP Red, aqu se le dar acceso a


dominios o IPs que se encuentren dentro de la red de la organizacin.

Si la opcin que seleccionemos es IP o red entonces debemos ingresar una direccin


de IP Figura
de la red que necesitemos bloquear.
1.21
Si la opcin seleccionada es dominio de red entonces en la descripcin tenemos que
ingresar el nombre del dominio que deamos que no ingrese a los correos de los
usuarios creados.

En la seleccin de Accin tenemos que definir si queremos bloquear, permitir o


denegar el acceso de lo que eijamos en Opcin.

Se debe elegir el nombre del usuario que ya esta creado previamente, luego tenemos
que elegir las opciones del combo Accin que pueden ser ACEPTA que es para que
el usuario pueda enviar correo a diferentes dominios o DENIEGA que deniega todo
envo y recepcin de correo.

Administracin de Interfaz

Para acceder a este grupo de opciones tenemos que dar clic en la opcin que dice
Interfaz que se encuentra en la parte de arriba de la ventana.
Se te presentarn las siguientes opciones.

Figura 1.22

Figura 1.23
11

En la opcin de Idioma y Hora podemos seleccionar el idioma el cual queramos


que manejen todas las cuentas de correo. Tambin podemos elegir la zona horaria en
la que se encuentre la empresa para que automticamente se presente la hora actual.
EL formato de la hora y fecha lo podemos elegir en las opciones que creamos
conveniente.

Una vez que hemos seleccionado todos los campos requeridos damos clic en el botn
Grabar para que se efecten los cambios solicitados. A continuacin se presenta la
pantalla de muestra.

En la opcin de Opciones de Visualizacin encontraremos algunas opciones que


tenemos que seleccionar. Recuerda que no puedemos dejar campos vacos.
La opcin de aplicacin Inicial es para determinar que es lo que inicialmente
queremos que se aparezca al iniciar sesin los usuarios.
Podemos seleccionar si deseamos que se muestre la hora de la ltima sesin que tuvo
el usuario.
Figura 1.24
Tambin podemos seleccionar en que tiempo se actualiza la visualizacin de los
buzones en la opcin de actualizar vista del portal.

Existen tambin colores que podemos seleccionar de una lista para que lo tengan las
cuentas de correo.

Al escoger SI decidimos que el men de la interfaz del Horde se visualice a la


izquierda caso contrario NO se visualizar.

Para determinar el ancho del men que se muestra en la interfaz del Horde que es la
de las cuentas de correo.

En el formato del men seleccionamos que tipo de formato deseamos que aparezca a
todos los usuarios al iniciar sesin.
En la ruta de la imagen ingresa la ubicacin donde se encuentra la imagen que
desemos que se cargue en el momento de que el usuario se encuentre en el login.
12

En la opcin de Tareas de Inicio de Sesin en Correo (Parte I) tambin tenemos


que seleccionar varias opciones que se muestran en la pantalla.

En la vista o buzn mostrados al iniciar sesin podemos seleccionar que es lo que


deseamos que el usuario visualice cuando ingrese a su sesin. Podemos elegir la
Bandeja de Entrada, Elementos Enviados, Borradores, Papelera o Spam.

Para eliminar los correos enviados tenemos que elegir entre dos opciones que se
presentan y el servidor automticamente elimina los mensajes antiguos siempre y
Figura 1.25
cuando seleccionemos con que frecuencia necesitamos que se eliminen ya sea
anualmente, mensualmente, semanalmente, diariamente o cada inicio de sesin.
Tambin podemos eliminar los adjuntos vinculados cada inicio de mes y definir
cuantos meses deseas guardar los adjuntos vinculados.

En el mantenimiento de inicio de sesin si necesitamos realizar operaciones de


mantenimiento y si antes de hacerlo se solicita la confirmacin del mismo.

Una vez que completemos la seleccin damos clic en el botn Grabar y si no


existen campos vacos o no se presenta algn error se efectuaran los cambios
exitosamente.

En la opcin de tareas de inicio de sesin de correo del Horde Parte II encontraremos


que podemos eliminar los mensajes de la papelera y con que frecuencia la quieres
realizar.

Tambin eliminar la carpeta Spam y con que frecuencia.

Figura 1.26
Figura 1.27
13

1.4.4. Copias de Seguridad

En esta seccin podremos administrar las copias de seguridad de los buzones.

En la opcin de Copias Horarios Simples podemos crear copias de seguridad en


determinados horarios de los correos que tienen los usuarios existentes.

Seleccionamos el usuario al cual se le va a realizar copias de seguridad seleccionamos


hora y la fecha en que se va a crear la copia.

En la opcin de Copias Horarios Mltiples se puede realizar copias de seguridad de


una forma ms compleja ingresando los minutos, horas, da del mes, mes y el da de
la semana.

Figura 1.28

En la opcin de Restauracin de Copias de Seguridad se podr restaurar las


carpetas del correo de un usuario especifico o sino tambin de todos los usuarios que
previamente se les realizo el respectivo respaldo en los realizados en los pasos
anteriores.

Figura 1.29

Figura 1.30
14

1.5. Mensajes de error

Existen algunos mensajes de error que le aparecern a medida que usted utilice esta
herramienta.

Si los datos de IP que ingreso no son los correctos, le saldr un mensaje


Delede error
clic que
en Aceptar
se muestra a continuacin: y vuelva a ingresar
los datos.

Si se ingresa una letra mayscula en campos que solo sean de ingresar caracteres
minsculas entones aparecer el mensaje de error de la figura siguiente.
Figura 1.31

Si digitamos una letra mayscula en campos que solo sean de ingresar caracteres
minsculas entones aparecer el mensaje de error de la figura siguiente.

Figura 1.32

Si ingresamos la mascara de red errneamente aparecer un mensaje de error


avisndo que la mascara que ingresada es invalida.

Figura 1.33

Figura 1.34
15

1.6. Sesin del Webmail Horde

Para iniciar sesin en el Horde se tiene que ingresar en el URL la siguiente direccin:

http://www.syscomsa.com/horde

A continuacin de eso te saldr la siguiente pantalla en el navegador:

Luego digitar el usuario y contrasea asignada por el administrador y seleccionar


Iniciar sesin. Inmediatamente ingresamos al correo como lo muestra la siguiente
pantalla:

Figura 1.35

Podemos realizar varias actividades como revisar la bandeja de entrada dando clic en
el icono que se presenta en la siguiente figura.

Figura 1.36
Permite redactar correo para enviar a los usuarios que tengan tambin una cuenta de
correo.
Figura 1.37

Figura 1.38
16

En el icono de carpetas nos permite navegar en todos los buzones de correo ya sean
estos buzones de entrada, elementos enviado, borradores, papelera y Spam.

En el icono de buscar permite realizar una bsqueda de los mensajes de correo que se
necesite encontrar.

Figura 1.39
En caso de que necesitemos ayuda podemos dar clic en el icono que se presenta en la
siguiente figura.
Figura 1.40

En el caso que necesitemos salir de la sesin del usuario que se ingreso entonces
seleccionamos en el icono de la figura a continuacin.
Figura 1.41

Figura 1.42

CAPITULO 2
17

2. MANUAL TECNICO

Introduccin

El objeto de este manual es describir las funciones y configuracin de la aplicacin


desarrollada para administrar el webmail Horde y la creacin de un dominio propio
de la organizacin.

Esta aplicacin es una cmoda herramienta mediante la cual vamos a poder


configurar todo aquello que podramos configurar con un programa hecho para estos
menesteres, pero ayudados de nuestro navegador favorito y a golpe de ratn igual que
estuviramos navegando, con la seguridad de que solo nosotros vamos a poder usarlo
y de que todos los cambios que hagamos en el sistema mediante l van a ser tan
vlidos como si se hubieran hecho con otra herramienta.

Funcionamiento

Los puertos que configura esta herramienta son el IMAP el cual va a permitir a los
usuarios visualizar sus correos sin que estos ocupen espacio en el disco, y la
configuracin del SMTP que permite enviar mail a diferentes direcciones de correo.
Todo este funcionamiento lo podemos observar en el siguiente diagrama.

IMAP

IMAP
Para acceder a esta herramienta a la parte de administracin se requiere de un
username Figura 2.1
y un pasword, para la parte de configuracin inicial se necesita otro
usuario y contrasea de acceso, esto es porque la herramienta esta dividida en dos
18

secciones, la primera es para configurar el dominio y direcciones de red del servidor,


esta se la realizar una nica vez, la segunda seccin es para administrar los usuarios,
las cuentas de correo, interfaz y las copias de seguridad. El usuario y clave de acceso
se tiene que ingresar en la siguiente ventana.

Figura 2.2
2.2.1. Servicios
que deben estar
activos

Para que esta


herramienta funcione correctamente debemos tener instalado en el servidor Linux los
siguientes servicios:

Mysql

Mailscanner

Httpd
Named
Network
Sendmail

Ya que estos servicios estn activos en el servidor para el correcto funcionamiento de


la aplicacin podemos estar seguros que realizaremos las debidas configuraciones.

2.2.2. Configuraciones

2.2.2.1. Configuraciones del dominio

Para la configuracin del dominio y la interfaz, ingresamos a la primera seccin la


cual la utilizaremos solo por una vez, introducimos siguiente direccin en nuestro
navegador favorito.

http://www.syscomsa.com/sw_syscomsa
19

Observe que es https y no http, ya que al ser encriptada la comunicacin habr que
utilizar este protocolo. La primera vez que accedamos a esta direccin nos saldr un
mensaje advirtindonos de que se puede verificar el certificado de seguridad y
preguntando si deseamos aceptarlo. Dicho certificado es el que se configur para el
dominio syscomsa.

Los archivos que configuramos en el servidor para la creacin de dominio se


encuentran en algunos archivos dentro de directorios del servidor Linux y son los que
se presentan en la siguiente figura. Luego de ello detallamos los archivos.

Archivo sendmail.mc:
El archivo Sendmail
Parametros:
Localice la siguiente lnea:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,
Name=MTA')dnl

Elimine de dicho parmetro el valor Addr=127.0.0.1 y la coma


(,) que le antecede, del siguiente modo
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl

localice
Figura 2.3 la siguiente lnea:
comentar esta configuracin precediendo un dnl, del siguiente
modo:
dnl FEATURE(`accept_unresolvable_domains')dnl

Habilitar las siguientes lineas y adaptar valores para definir la


DAEMON_OPTIONS mscara que utilizar el servidor:
MASQUERADE_AS(`dominio.com')dnl
De modo predefinido Sendmail escucha peticiones a travs de la interfaz de retorno
del sistema a travs de IPv4 (127.0.0.1) y no a travs de otros dispositivos de red.
Solo se necesita eliminar la restriccin de la interfaz de retorno para poder recibir
correo desde Internet o la LAN.

FEATURE(`accept_unresolvable_domains')

De modo predefinido, como una forma de permitir el correo del propio sistema en
una computadora de escritorio o una computadora porttil, est se utiliza el parmetro
FEATURE(`accept_unresolvable_domains').
20

Sin embargo se recomienda desactivar esta funcin a fin de impedir aceptar correo de
dominios inexistentes (generalmente utilizado para el envo de correo masivo no
solicitado o Spam)

El archivo dovecot

Se encuentran los archivos para elegir los protocolos que permiten recibir correo.

DOVECOT
DNS Ruta /etc/dovecot.conf
Se modifica el parmetro:
Los Figura
archivos 2.4dominio
# Protocols
del webind
want to be serving:
Paquetes utilizados:
# imap imaps pop3 pop3s
bind-libs
bind-chroot
bind-utils
caching-nameserver

Figura
Ruta(2.5
/var/named/chroot/var/named (archivos de zona)
/var/named/chroot/etc (archivo named.conf)
Aqu se encuentran todos los archivos de zona del dominio creado. Recuerdemos que
tambien debe de existir una zona inversa para el dominio.

Archivo named.conf:

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
stadistics-file "/var/named/data/named_stats.txt"
forwarders {
Figura 2.6 200.93.192.148;
Configuracin De Apache
200.93.192.161;
};
Estn las configuraciones necesarias para que el servidor pueda efectuar las
};
operaciones por medio de un navegador.

Paquetes utilizados: httpd


Ruta( /var/www/html/mail/

Configure PHP
Primero
Figura 2.7configurar php en la ruta /etc/php.ini. Estas
lineas deben ser configuradas:
Los archivos adjuntos se los configura en Php en la ruta mencionada en la figura
/etc/php.ini
anterior.
file_uploads = On
// short_open_tag is not needed in newer versions of
21

Configurar el maximo tamao adjunto en


PHP(is is the value for POST and GET
methods in PHP):
/etc/httpd/conf.d/php.conf
<Files *.php>
Configurar el VirtualHost
SetOutputFilter PHP
Editar
Figura el archive
2.8 de configuracion
SetInputFilter PHP del apache y aadir los
VirtualHost :
# max attachment size: 512 kbytes
LimitRequestBody 524288
/etc/httpd/conf/httpd.conf
</Files>
# make .htpasswd work

Se le agrego:
<Directory /var/www/html/mail/horde>
Options FollowSymLinks
AllowOverride All
</Directory>
Figura 2.9
Creamos directorios en donde se almacena toda la informacin del webmail horde.
# One NameVirtualHost per IP address
NameVirtualHost 192.168.3.1:80
# NameVirtualHost 192.168.3.2:80
Creacin de directorios
Crear todos los directorios
<VirtualHost
Figura 2.10 192.168.3.1:80>
necesarios:
ServerAdmin
# mkdir
Para reiniciar los servicios mail@syscomsa.com
que-pguardan las configuraciones se utiliza los comandos
DocumentRoot /var/www/html/mail/horde/imp
citados en la figura. /var/www/html/mail/horde/imp/
ServerName mail. syscomsa.com

Test Apache
resetear apache para que surtan efecto
los cambios:
Figura
Creacin de los archivos#de la2.11
service httpd
figura configtest
para realizar las pruebas necesarias.

Creacin de un archivo temporal:


# touch
Figura 2.12
/var/www/html/mail/horde/imp/test
La Ip del servidor es la direccin de cuatro octetos separados cada uno por un punto,
esta direccin debe estar entre .html
los rangos de una Clase C que comprende del nmero
192 a 223 del primer octeto de izquierda a derecha. La Ip ingresada debe pertenecer a
la misma red de la empresa.

Para una mejor ilustracin de las clases de direccin a continuacin se muestra los
intervalos de la misma.
22

CLASE A ( Intervalo de primer octeto es de 0 a 127*.


CLASE B ( Intervalo de primer octeto es de 128 a 191.
CLASE C ( Intervalo de primer octeto es de 192 a 223.
CLASE D ( Intervalo de primer octeto es de 224 a 239.
Adems de indicar que el intervalo de direcciones 127.x.x.x est reservado como
direccin de loopback, con propsitos de prueba y diagnostico.
La mascara de red para una red de clase C es por defecto 255.255.255.0 es decir que
es el nico valor que podemos ingresar en ese campo.

Las cajas de texto donde se ingresar la informacin se encuentra con una validacin
para que solo acepte los valores requeridos especificados, no puede existir un campo
vaco, no es permitido los caracteres especiales ni valores que sobresalgan a los
intervalos detallados anteriormente.

2.2.2.2. Configuraciones de parmetros de las cuentas

Nombre( Nombre de la cuentaTipo( Tipo de la cuenta (Combo List)Direccion Ip( Ip


de la cuenta Tabla 2.1
Debido a la naturaleza del correo electrnico, es posible para un atacante inundar
fcilmente el servidor y desencadenar en una denegacin de servicio. Fenmenos
como el denominado correo masivo no solicitado o Spam no hacen las cosas ms
fciles y la administracin de un servidor de correo puede tornarse una pesadilla.
Aadir opciones avanzadas de seguridad se convierte en algo indispensable.

Mximo nmero Destinatario por correo

Este parmetro sirve para establecer un nmero mximo de destinatarios para un


mensaje de correo electrnico.
De modo predefinido Sendmail establece un mximo de 256 destinatarios.

Tiempo letargo destinatario excedido

Este parmetro sirve para establecer el tiempo de letargo que se utilizar por cada
destinatario que sobrepase el lmite establecido por el Mximo nmero Destinatario
por correo. De modo predefinido Sendmail no establece tiempo de letargo.

Habilitacin de banderas/seguridad

Este parmetro sirve para deshabilitar varios mandatos SMTP como EXPN y VRFY,
los cuales pudieran ser utilizados para revelar los nombres de usuarios locales a un
spammer. Tambin deshabilita las notificaciones de entrega, el cual es un mecanismo
comunmente utilizado por quienes envan correo masivo no solicitado para
verificar/confirmar la existencia de una cuenta activa, y hace que el sistema solicite
obligatoriamente HELO o EHLO antes de utilizar el mandato MAIL. Muchos
23

programas de utilizados para enviar correo masivo no solicitado ni siquiera se


molestan en utilizar HELO o EHLO.

Tamao Maximo cabecera (kb)


Est parmetro se utiliza para definir el tamao mximo permitido para la cabecera
de un mensaje en bytes. Algunos programas utilizados para enviar spam tratan de
impedir que los MTA puedan registrar transacciones generando cabeceras muy
grandes Limitar el tamao de las cabeceras hace ms difcil la ejecucin de guin que
explote vulnerabilidades recientes (desbordamientos de bfer) en UW IMAP, Outlook
y Outlook Express.
La mayor parte de los mensajes de correo electrnico tendrn cabeceras de menos de
2 Kb (2048 bytes). Un mensaje de correo electrnico ordinario, por muy exagerado
que resulte el tamao de la cabecera, rara vez utilizar una cabecera que sobrepase los
5 Kb o 6 Kb, es decir, de 5120 o 6144 bytes

Tamao Mxima mensajes (MB)


Este parmetro sirve para especificar el tamao mximo permitido para un mensaje
de correo electrnico en bytes. Puede especificarse lo que el administrador considera
apropiado.

Conexiones simultaneas permitidos


Este parmetro sirve para especificar cuantos procesos hijos se permitirn
simultneamente en el servidor de correo. De modo predefinido sendmail no
establece lmites para este parmetro. Si se sobre pasa el lmite de conexiones
simultneas, el resto sern demoradas hasta que se terminen las conexiones existentes
y dejen lugar para nuevas conexiones.

Conexiones mximas por segundo


Este parmetro sirve para establecer el nmero de conexiones mximas por segundo.
De modo predefinido sendmail no establece lmites para este parmetro.

2.2.3. Direcciones

Las direcciones donde estn las configuraciones, son las siguientes:

/var/www/html/sw_syscomsa/

En esta ruta se encuentra todo el cdigo html del diseo de la pgina web de la
aplicacin adems del cdigo php.

/var/www/html/sw_syscomsa/webpages/ ( se encuentran las subcarpetas que


contienen los cdigos php para cada una de las configuraciones, los subdirectorios
son los siguientes:
24

/var/www/html/sw_syscomsa/webpages/administracio_interfaz ( los archivos que


contienen los cdigos correspondientes a las configuraciones de la administracin de
la interfaz del webmail que utilizamos que es el Horde en el servidor Linux.

/var/www/html/sw_syscomsa/webpages/administracin_cuenta ( Los archivos que


contienen las configuraciones que realizan la administracin de la cuenta de los
usuarios, aqu estn los cdigos que nos ayudara a elegir los parmetros de las cuotas
de usuario.

/var/www/html/sw_syscomsa/webpages/administracin_usuario (

/var/www/html/sw_syscomsa/webpages/admin._servi_correo (

/var/www/html/sw_syscomsa/webpages/seguridades (

Servicios activados
Mysql
Mailscanner
Httpd
Named
Network
Sendmail

Herramientas y protocolos utilizados


Webmail horde
Antivirus Clamav
Protocolo ssl (certificacado de seguridad)
Protocolo Imap

Configuraciones del dominio

Interfaz de red ( como asignacin de Ip al servidor, Gateway o puerta de enlace, DNS


primario y DNS secundario que lo da el proveedor de Internet nombre del dominio de
la empresa, nombre de equipo.

Codificaciones del proyecto.


2.3.1. Scripts del proyecto.
2.3.1.1. Seccin administracin interfaz.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts en el cual se
encuentran los siguientes archivos.
25

Archivo: idiomahora_cmd.sh
#!/bin/bash
#\
ruta1="/var/www/html/horde/config/prefs.php"

#*********************LO ACTUAL DEL ARCHIVO***************


lenguaje1=`sed -n 265p $ruta1`
timezone1a=`sed -n 275p $ruta1 | sed "s/[/][/]*/:/g" | cut -f1 -d:`
timezone1b=`sed -n 275p $ruta1 | sed "s/[/][/]*/:/g" | cut -f2 -d:`
timezone1=$timezone1a"\\/"$timezone1b
timeformat1=`sed -n 284p $ruta1`
dateformat1=`sed -n 293p $ruta1`
firstweekday1=`sed -n 326p $ruta1`

echo "lo que tiene el prefs.php"


echo $lenguaje1
echo $timezone1a
echo $timezone1b
echo $timezone1
echo $timeformat1
echo $dateformat1
echo $firstweekday1

#*********************LO NUEVO Q SE ACTUALIZA***************


lenguaje2="array('value'=>'$1',"
timezone2="array('value'=>'$2',"
timeformat2="'value'=>$3,"
dateformat2="array('value'=>'$4',"
firstweekday2="array('value'=>'$5',"

echo ""
echo "lo nuevo a actualizar"
echo $lenguaje2
echo $timezone2
echo $timeformat2
echo $dateformat2

#*********************CAMBIO DE DATOS***************
lenguaje="s/$lenguaje1/$lenguaje2/g"
timezone="s/$timezone1/$timezone2/g"
timeformat="s/$timeformat1/$timeformat2/g"
dateformat="s/$dateformat1/$dateformat2/g"
firstweekday="s/$firstweekday1/$firstweekday2/g"
26

echo ""
echo "Cambio de datos"
echo $lenguaje
for i in $ruta1
do
sed $lenguaje $i > $i.n
done
mv $i.n $i

echo $timezone
for i in $ruta1
do
sed $timezone $i > $i.n
done
mv $i.n $i

#echo $timeformat
for i in $ruta1
do
sed $timeformat $i > $i.n
done
mv $i.n $i

#echo $dateformat
for i in $ruta1
do
sed $dateformat $i > $i.n
done
mv $i.n $i

#echo $firstweekday
for i in $ruta1
do
sed $firstweekday $i > $i.n
done
mv $i.n $i

chown apache $ruta1


chgrp apache $ruta1
27

Archivo: opciovisualiza_cmd.sh
#!/bin/bash
#\

ruta1="/var/www/html/horde/config/prefs.php"
rutaimg="/var/www/html/horde/themes/graphics/horde-power1.png"

#*********************LO ACTUAL DEL ARCHIVO***************


initialapl1=`sed -n 468p $ruta1`
showlastlo1=`sed -n 512p $ruta1`
summaryrefresh1=`sed -n 366p $ruta1`
uithemes1=`sed -n 337p $ruta1`
showsidebar1=`sed -n 380p $ruta1`
sidebarwidth1=`sed -n 388p $ruta1`
menuview1=`sed -n 406p $ruta1`
menurefresh1=`sed -n 417p $ruta1`

echo "lo que tiene el prefs.php"


echo $initialapl1
echo $showlastlo1
echo $summaryrefresh1
echo $uithemes1
echo $showsidebar1
echo $sidebarwidth1
echo $menuview1
echo $menurefresh1

#*********************LO NUEVO Q SE ACTUALIZA***************


initialapl2="array('value'=>'$1',"
showlastlo2="=array('value'=>$2,"
summaryrefresh2="array('value'=>$3,"
uithemes2="array('value'=>'$4',"
showsidebar2="array('value'=>$5,"
sidebarwidth2="('value'=>$6,"
menuview2="array('value'=>'$7',"
menurefresh2="=array('value'=>$8,"

echo ""
echo "lo nuevo a actualizar"
echo $initialapl2
echo $showlastlo2
echo $summaryrefresh2
28

echo $uithemes2
echo $showsidebar2
echo $sidebarwidth2
echo $menuview2
echo $menurefresh2

#********************CAMBIO DE DATOS***************
initialapl="s/$initialapl1/$initialapl2/g"
showlastlo="s/$showlastlo1/$showlastlo2/g"
summaryrefresh="s/$summaryrefresh1/$summaryrefresh2/g"
uithemes="s/$uithemes1/$uithemes2/g"
showsidebar="s/$showsidebar1/$showsidebar2/g"
sidebarwidth="s/$sidebarwidth1/$sidebarwidth2/g"
menuview="s/$menuview1/$menuview2/g"
menurefresh="s/$menurefresh1/$menurefresh2/g"

echo ""
echo "Cambio de datos"

echo $initialapl
for i in $ruta1
do
sed $initialapl $i > $i.n
done
mv $i.n $i

echo $showlastlo
for i in $ruta1
do
sed $showlastlo $i > $i.n
done
mv $i.n $i

echo $summaryrefresh
for i in $ruta1
do
sed $summaryrefresh $i > $i.n
done
mv $i.n $i

echo $uithemes
for i in $ruta1
do
sed $uithemes $i > $i.n
29

done
mv $i.n $i

echo $showsidebar
for i in $ruta1
do
sed $showsidebar $i > $i.n
done
mv $i.n $i

echo $sidebarwidth
for i in $ruta1
do
sed $sidebarwidth $i > $i.n
done
mv $i.n $i

echo $menuview
for i in $ruta1
do
sed $menuview $i > $i.n
done
mv $i.n $i

echo $menurefresh
for i in $ruta1
do
sed $menurefresh $i > $i.n
done
mv $i.n $i

mv -f $rutaimg $rutaimg".orig"
cp -f $9 $rutaimg

chown apache $ruta1


chgrp apache $ruta1
Archivo: opc_redaccion_cmd.sh
#!/bin/bash
#\

ruta1="/var/www/html/horde/imp/config/prefs.php"

#*********************LO ACTUAL DEL ARCHIVO***************


composepopup1=`sed -n 479p $ruta1`
30

composecursor1=`sed -n 573p $ruta1`


composecc1=`sed -n 585p $ruta1`
composebcc1=`sed -n 594p $ruta1`
composespellcheck1=`sed -n 614p $ruta1`
#dispositionrequestread1=`sed -n 753p $ruta1`

echo "lo que tiene el prefs.php"


echo $composepopup1
echo $composecursor1
echo $composecc1
echo $composebcc1
echo $composespellcheck1
#echo $dispositionrequestread1
#*********************LO NUEVO Q SE ACTUALIZA***************
composepopup2="=array('value'=>$1,"
composecursor2="array('value'=>'$2',"
composecc2="array('value'=>$3,'locked'=>false,"
composebcc2="array('value'=>$4,'locked'=>false,'shared'=>false,"
composespellcheck2="=array('value'=>$5,'locked'=>false,'shared'=>false,"
#dispositionrequestread2="array('value'=>'$6',"

echo ""
echo "lo nuevo a actualizar"
echo $composepopup2
echo $composecursor2
echo $composecc2
echo $composebcc2
echo $composespellcheck2
#echo $dispositionrequestread2

#********************CAMBIO DE DATOS***************
composepopup="s/$composepopup1/$composepopup2/g"
composecursor="s/$composecursor1/$composecursor2/g"
composecc="s/$composecc1/$composecc2/g"
composebcc="s/$composebcc1/$composebcc2/g"

composespellcheck="s/$composespellcheck1/$composespellcheck2/g"
#dispositionrequestread="s/$dispositionrequestread1/$dispositionrequestread2/g"

echo ""
echo "Cambio de datos"

echo $composepopup
for i in $ruta1
31

do
sed $composepopup $i > $i.n
done
mv $i.n $i

echo $composecursor
for i in $ruta1
do
sed $composecursor $i > $i.n
done
mv $i.n $i

echo $composecc
for i in $ruta1
do
sed $composecc $i > $i.n
done
mv $i.n $i

echo $composebcc
for i in $ruta1
do
sed $composebcc $i > $i.n
done
mv $i.n $i

echo $composespellcheck
for i in $ruta1
do
sed $composespellcheck $i > $i.n
done
mv $i.n $i

#echo $dispositionrequestread
#for i in $ruta1
#do
#sed $dispositionrequestread $i > $i.n
#done
#mv $i.n $i

chown apache $ruta1


chgrp apache $ruta1
Archivo: opc_visuali_cmd.sh
#!/bin/bash
32

#\

ruta1="/var/www/html/horde/imp/config/prefs.php"

#*********************LO ACTUAL DEL ARCHIVO***************


purgetrash1=`sed -n 431p $ruta1`
purgetrashinterval1=`sed -n 441p $ruta1`
#purgetrashkeep1=`sed -n 450p $ruta1`
purgespam1=`sed -n 403p $ruta1`
purgespaminterval1=`sed -n 413p $ruta1`

echo "lo que tiene el prefs.php"


echo $purgetrash1
echo $purgetrashinterval1
#echo $purgetrashkeep1
echo $purgespam1
echo $purgespaminterval1

#*********************LO NUEVO Q SE ACTUALIZA***************


purgetrash2="['purge_trash']=array('value'=>$1,"
purgetrashinterval2="=array('value'=>'$2',"
#purgetrashkeep2="'value'=>$3,"
purgespam2="=array('value'=>$3,"
purgespaminterval2="]=array('value'=>'$4',"

echo ""
echo "lo nuevo a actualizar"
echo $purgetrash2
echo $purgetrashinterval2
#echo $purgetrashkeep2
echo $purgespam2
echo $purgespaminterval2

#********************CAMBIO DE DATOS***************
purgetrash="s/$purgetrash1/$purgetrash2/g"
purgetrashinterval="s/$purgetrashinterval1/$purgetrashinterval2/g"
#purgetrashkeep="s/$purgetrashkeep1/$purgetrashkeep2/g"
purgespam="s/$purgespam1/$purgespam2/g"
purgespaminterval="s/$purgespaminterval1/$purgespaminterval2/g"

echo ""
echo "Cambio de datos"

echo $purgetrash
33

for i in $ruta1
do
sed $purgetrash $i > $i.n
done
mv $i.n $i

echo $purgetrashinterval
for i in $ruta1
do
sed $purgetrashinterval $i > $i.n
done
mv $i.n $i

#echo $purgetrashkeep
#for i in $ruta1
#do
#sed $purgetrashkeep $i > $i.n
#done
#mv $i.n $i

echo $purgespam
for i in $ruta1
do
sed $purgespam $i > $i.n
done
mv $i.n $i

echo $purgespaminterval
for i in $ruta1
do
sed $purgespaminterval $i > $i.n
done
mv $i.n $i

chown apache $ruta1


chgrp apache $ruta1
Archivo: tareainicioses_cmd.sh

#!/bin/bash
#\

ruta1="/var/www/html/horde/imp/config/prefs.php"
ruta2="/var/www/html/horde/config/prefs.php"
34

#*********************LO ACTUAL DEL ARCHIVO***************


initialapl1=`sed -n 323p $ruta1`
purgesentmail1=`sed -n 357p $ruta1`
purgesentmailinterval1=`sed -n 367p $ruta1`
deleattachmon1=`sed -n 385p $ruta1`
deleattachmonkeep1=`sed -n 394p $ruta1`

echo "lo que tiene el prefs.php"


echo $initialapl1
echo $purgesentmail1
echo $purgesentmailinterval1
echo $deleattachmon1
echo $deleattachmonkeep1

#*********************LO NUEVO Q SE ACTUALIZA***************


initialapl2="array('value'=>'$1',"
purgesentmail2="array('value'=>$2,"
purgesentmailinterval2="array('value'=>'$3',"
deleattachmon2="('value'=>$4,"
deleattachmonkeep2="]=array('value'=>$5,"

echo ""
echo "lo nuevo a actualizar"
echo $initialapl2
echo $purgesentmail2
echo $purgesentmailinterval2
echo $deleattachmon2
echo $deleattachmonkeep2

#********************CAMBIO DE DATOS***************
initialapl="s/$initialapl1/$initialapl2/g"
purgesentmail="s/$purgesentmail1/$purgesentmail2/g"
purgesentmailinterval="s/$purgesentmailinterval1/$purgesentmailinterval2/g"
deleattachmon="s/$deleattachmon1/$deleattachmon2/g"
deleattachmonkeep="s/$deleattachmonkeep1/$deleattachmonkeep2/g"

echo ""
echo "Cambio de datos"
echo $initialapl
for i in $ruta1
do
sed $initialapl $i > $i.n
done
mv $i.n $i
35

echo $purgesentmail
for i in $ruta1
do
sed $purgesentmail $i > $i.n
done
mv $i.n $i

echo $purgesentmailinterval
for i in $ruta1
do
sed $purgesentmailinterval $i > $i.n
done
mv $i.n $i

echo $deleattachmon
for i in $ruta1
do
sed $deleattachmon $i > $i.n
done
mv $i.n $i

echo $deleattachmonkeep
for i in $ruta1
do
sed $deleattachmonkeep $i > $i.n
done
mv $i.n $i

chown apache $ruta1


chgrp apache $ruta1
Archivo: tareainicioses2_cmd.sh
#!/bin/bash
#\

ruta1="/var/www/html/horde/imp/config/prefs.php"

#*********************LO ACTUAL DEL ARCHIVO***************


purgetrash1=`sed -n 431p $ruta1`
purgetrashinterval1=`sed -n 441p $ruta1`
purgespam1=`sed -n 403p $ruta1`
purgespaminterval1=`sed -n 413p $ruta1`
36

echo "lo que tiene el prefs.php"


echo $purgetrash1
echo $purgetrashinterval1
echo $purgespam1
echo $purgespaminterval1

#*********************LO NUEVO Q SE ACTUALIZA***************


purgetrash2="['purge_trash']=array('value'=>$1,"
purgetrashinterval2="=array('value'=>'$2',"
purgespam2="=array('value'=>$3,"
purgespaminterval2="]=array('value'=>'$4',"

echo ""
echo "lo nuevo a actualizar"
echo $purgetrash2
echo $purgetrashinterval2
echo $purgespam2
echo $purgespaminterval2

#********************CAMBIO DE DATOS***************
purgetrash="s/$purgetrash1/$purgetrash2/g"
purgetrashinterval="s/$purgetrashinterval1/$purgetrashinterval2/g"
purgespam="s/$purgespam1/$purgespam2/g"
purgespaminterval="s/$purgespaminterval1/$purgespaminterval2/g"

echo ""
echo "Cambio de datos"

echo $purgetrash
for i in $ruta1
do
sed $purgetrash $i > $i.n
done
mv $i.n $i

echo $purgetrashinterval
for i in $ruta1
do
sed $purgetrashinterval $i > $i.n
done
mv $i.n $i

echo $purgespam
37

for i in $ruta1
do
sed $purgespam $i > $i.n
done
mv $i.n $i

echo $purgespaminterval
for i in $ruta1
do
sed $purgespaminterval $i > $i.n
done
mv $i.n $i

chown apache $ruta1


chgrp apache $ruta1
Seccin administracin cuenta.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts, en el cual se
encuentran los siguientes archivos.

Archivo: controlaccess_cmd.sh
#!/bin/bash
#\

ruta1="/etc/mail/access"
ruta2="/etc/passwd"
ruta3='/etc/resolv.conf'

cuenta=$1
#if test $1 = "CU"
#then
# nombreusuario=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4}' $ruta2 | grep "$cuenta"
| sed "s/[ ][ ]*/:/g" | cut -f1 -d:`

#echo $nombreusuario
# if test -z $nombreusuario
# then
# echo "La Cuenta de Usuario no Existe"
# else

cuentausuario=`gawk -F: '{print $1,$2}' $ruta1 | grep "$cuenta" | sed "s/[ ][ ]*/:/g" |
cut -f1 -d:`
#cuentausuario=`gawk -F: '{print $1,$2}' $ruta1 | grep "$cuenta" | sed "s/[ ][ ]*/:/g" |
cut -f1 -d: | sed "s/[@][@]*/:/g" | cut -f1 -d:`
38

if test -z $cuentausuario
then
echo "La Cuenta en el access no Existe"
# dominio1=`sed -n 1p $ruta3 | cut -c8-100`

echo $1" "$2 >> $ruta1

#echo $nombreusuario"@"$dominio1" "$3 >> $ruta1


/etc/rc.d/init.d/sendmail restart
echo "Realizado Exitosamente el permiso para la cuenta de usuario"

else
cuentausu="s/$cuentausuario/#./g"
#echo $cuentausu
for i in $ruta1
do
sed $cuentausu $i > $i.n
done
mv $i.n $i

# dominio1=`sed -n 1p $ruta3 | cut -c8-100`


# echo $nombreusuario"@"$dominio1" "$3 >> $ruta1
echo $1" "$2 >> $ruta1
/etc/rc.d/init.d/sendmail restart
echo "Realizado Exitosamente el permiso para la cuenta de usuario"
fi

# fi
#else
# echo $2" "$3 >> $ruta1
# /etc/rc.d/init.d/sendmail restart
# echo "Realizado Exitosamente el permiso para el Dominio o la Direccion Ip"
#fi
Archivo: changequota_cmd.sh
#!/bin/bash
#\

ruta1="/etc/passwd"
ruta2="/etc/group"

usergroup=$1
letra=$2
39

us=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4,$5}' $ruta1 | grep "$usergroup"`


gr=`gawk -F: '$3>=500'\ '{print $1,$2,$3,$4,$5}' $ruta2 | grep "$usergroup"`
grupo=`gawk -F: '$3>=500'\ '{print $1,$2,$3,$4}' $ruta2 | grep "$usergroup" | sed "s/[
][ ]*/:/g" | cut -f3 -d:`
user=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4,$5}' $ruta1 | grep "$usergroup" | sed
"s/[ ][ ]*/:/g" | cut -f4 -d:`

nombreusuario=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4,$5}' $ruta1 | grep


"$usergroup" | sed "s/[ ][ ]*/:/g" | cut -f1 -d:`

nameusers=`gawk -F: '$4>=500'\ '{print $1,$2,$4}' $ruta1 | grep "$grupo" | sed "s/[ ]
[ ]*/:/g" | cut -f1 -d:`

i=0

nombusua=`gawk -F: '$4>=500'\ '{print $1,$4}' $ruta1 | grep "$grupo" | sed "s/[ ][ ]
*/:/g" | cut -f1 -d:`
echo $nombusua >
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/cuotasusuario.
txt
if test $letra = "u"
then
if test -z $user
then
echo "No Existe el usuario"
# break
else
setquota -$letra $nombreusuario $3 $4 0 0 -a
echo "El nombre del usuario"
echo $us
echo $user
echo "Definicion de cuotas realizado Exitosamente"
fi
else
if test -z $grupo
then
echo "No Existe el grupo"
# break
else
setquota -$letra $grupo $3 $4 0 0 -a

echo "El nombre del grupo"


echo $gr
40

echo $grupo

echo ""
echo "Los usuarios q pertenecen al grupo son: "$nameusers
echo ""

while [ $i -ne 100 ]


do
i=$[$i+1]

usuario=`gawk -F: \ '{print $1}'


/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/cuotasusuario.
txt | sed "s/[ ][ ]*/:/g" | cut -f$i -d:`
if test -z $usuario
then
echo "Definicion de cuotas realizado Exitosamente"
break
else
echo "Definicion de cuotas realizado Exitosamente"
setquota -u $usuario $3 $4 0 0 -a
fi
done
fi
fi
Archivo: controlaccusuario_cmd.sh
#!/bin/bash
#\
ruta1="/etc/mail/access"
ruta2="/etc/passwd"
ruta3='/etc/resolv.conf'

cuenta=$1
#if test $1 = "CU"
#then

nombreusuario=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4}' $ruta2 | grep "$cuenta" |


sed "s/[ ][ ]*/:/g" | cut -f1 -d:`

#echo $nombreusuario
if test -z $nombreusuario
then
echo "La Cuenta de Usuario no Existe"
else
41

cuentausuario=`gawk -F: '{print $1,$2}' $ruta1 | grep "$cuenta" | sed "s/[ ][ ]*/:/g" |
cut -f1 -d: | sed "s/[@][@]*/:/g" | cut -f1 -d:`

if test -z $cuentausuario
then
echo "La Cuenta en el access no Existe"
dominio1=`sed -n 1p $ruta3 | cut -c8-100`
echo $nombreusuario"@"$dominio1" "$2 >> $ruta1
/etc/rc.d/init.d/sendmail restart
echo "Realizado Exitosamente el permiso para la cuenta de usuario"

else
cuentausu="s/$cuentausuario/#./g"
#echo $cuentausu
for i in $ruta1
do
sed $cuentausu $i > $i.n
done
mv $i.n $i

dominio1=`sed -n 1p $ruta3 | cut -c8-100`


echo $nombreusuario"@"$dominio1" "$2 >> $ruta1
/etc/rc.d/init.d/sendmail restart
echo "Realizado Exitosamente el permiso para la cuenta de usuario"
fi
fi
Archivo: parametroscuenta_cmd.sh
#!/bin/bash
#\

ruta1="/var/www/html/horde/imp/config/conf.php"
ruta2="/var/www/html/horde/config/prefs.php"
ruta3="/var/www/html/horde/imp/config/prefs.php"

attachsizelimit1=`sed -n 46p $ruta1`


attachcountlimit1=`sed -n 48p $ruta1`
replylimit1=`sed -n 50p $ruta1`
dispositionrequestread1=`sed -n 751p $ruta3`
domantenaince1=`sed -n 437p $ruta2`
confirmantenaince1=`sed -n 456p $ruta2`

echo "lo que tiene el sendmail"


echo $attachsizelimit1
echo $attachcountlimit1
42

echo $replylimit1
echo $dispositionrequestread1
echo $domantenaince1
echo $confirmantenaince1

attachsizelimit2="]=$1;"
attachcountlimit2="=$2;"
replylimit2="['compose']['reply_limit']=$3;"
dispositionrequestread2="array('value'=>'$4',"
domantenaince2="['do_maintenance']=array('value'=>$5,"
confirmantenaince2="]=array('value'=>$6,"

echo ""
echo "lo nuevo a actualizar"
echo $attachsizelimit2
echo $attachcountlimit2
echo $replylimit2
echo $dispositionrequestread2
echo $domantenaince2
echo $confirmantenaince2

attachsizelimit="s/$attachsizelimit1/$attachsizelimit2/g"
attachcountlimit="s/$attachcountlimit1/$attachcountlimit2/g"
replylimit="s/$replylimit1/$replylimit2/g"
dispositionrequestread="s/$dispositionrequestread1/$dispositionrequestread2/g"
domantenaince="s/$domantenaince1/$domantenaince2/g"
confirmantenaince="s/$confirmantenaince1/$confirmantenaince2/g"

echo ""
echo "Cambio de datos"
echo $attachsizelimit
for i in $ruta1
do
sed $attachsizelimit $i > $i.n
done
mv $i.n $i

echo $attachcountlimit
for i in $ruta1
do
sed $attachcountlimit $i > $i.n
done
mv $i.n $i
43

echo $replylimit
for i in $ruta1
do
sed $replylimit $i > $i.n
done
mv $i.n $i

echo $dispositionrequestread
for i in $ruta3
do
sed $dispositionrequestread $i > $i.n
done
mv $i.n $i

echo $domantenaince
for i in $ruta2
do
sed $domantenaince $i > $i.n
done
mv $i.n $i

echo $confirmantenaince
for i in $ruta2
do
sed $confirmantenaince $i > $i.n
done
mv $i.n $i

chown apache $ruta1


chgrp apache $ruta1
chown apache $ruta2
chgrp apache $ruta2
chown apache $ruta3
chgrp apache $ruta3
Seccin administracin usuarios.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts, en el cual se
encuentran los siguientes archivos.

Archivo: changegroup_cmd.sh
#!/bin/bash

groupname=$1
groupnamenew=$2
44

ruta1='/etc/group'
ruta2='/etc/gshadow'

changgroup="s/$groupname/$groupnamenew/g"

echo $changgroup
for i in $ruta1
do
sed $changgroup $i > $i.n
done
mv $i.n $i

echo $changgroup
for i in $ruta2
do
sed $changgroup $i > $i.n
done
mv $i.n $i
Archivo: changeuser_cmd.sh
#!/bin/bash

username=$1
usernamenew=$2
nombreusua=$3
apellidousua=$4
apellidousua2=$5
departamento=$6
fecha=$7

if test $1 = $2
then
userdel $1
useradd -g $6 -e $7 $1 -c $3' '$4' '$5
chown -R $1 /home/$1
chgrp -R $6 /home/$1
chown -R $1 /var/spool/mail/$1
chgrp -R mail /var/spool/mail/$1
else
useradd -g $6 -e $7 $2 -c $3' '$4' '$5
userdel $1
cp -rp /home/$1/* /home/$2
rm -fr /home/$1
cp -rp /var/spool/mail/$1 /var/spool/mail/$2
45

rm -fr /var/spool/mail/$1
chown -R $2 /var/spool/mail/$2
chgrp -R mail /var/spool/mail/$2
chown -R $2 /home/$2
chgrp -R $6 /home/$2
fi
Archivo: chpasswd.sh
#!/bin/sh
#\
exec expect -f "$0" ${1+"$@"}
set password [lindex $argv 1]
set user [lindex $argv 0]
spawn passwd [lindex $argv 0]
sleep 1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof
Archivo: groupadd_cmd.sh
#!/bin/bash

groupadd $1
Archivo: useradd_cmd.sh
#!/bin/bash
#\

useradd -g $2 -e $3 $1 -c $4' '$5' '$6

mkdir /home/$1/mail
chmod go-rwx /home/$1/mail/

touch /home/$1/mail/Enviados
touch /home/$1/mail/Papelera
touch /home/$1/mail/Spam
touch /home/$1/mail/Borrador
touch /home/$1/mail/inbox
touch /var/spool/mail/$1

chown -R $1 /home/$1
chgrp -R $2 /home/$1

chown -R $1 /var/spool/mail/$1
chgrp -R mail /var/spool/mail/$1
46

chmod go-r /home/$1/mail/Enviados


chmod go-r /home/$1/mail/Papelera
chmod go-r /home/$1/mail/Spam
chmod go-r /home/$1/mail/Borrador
chmod go-r /home/$1/mail/inbox
chmod go-r /var/spool/mail/$1
Seccin administracin de servidor de correos.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/admin_servi_correo /scripts, en el cual se
encuentran los siguientes archivos.

Archivo: configdns_cmd.sh
#!/bin/sh

gatew=$1
dns1=$2
dns2=$3

ruta1="/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconf
ig.txt"

touch
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

echo "GATEWAY="$1 >> $ruta1


echo "DNS1="$2";" >> $ruta1
echo "DNS2="$3";" >> $ruta1

more
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

#a=`sed -n 10p
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/ifcfg-eth0 | cut
-c9-25`

#echo $a
Archivo: configdominio_cmd.sh
#!/bin/sh

dominio=$1
hostname=$2
47

actualiz=$3

touch
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

echo "DOMINIO="$1 >>


/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt
echo "HOSTNAME="$2 >>
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt
echo "ACTUALIZA="$3 >>
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

more
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

#a=`sed -n 10p
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/ifcfg-eth0 | cut
-c9-25`

#echo $a
Archivo: configred_cmd.sh
#!/bin/sh

ipser=$1
mask=$2

touch
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

echo "IPADDR="$1 >


/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt
echo "NETMASK="$2 >>
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

more
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfig.txt

#a=`sed -n 10p
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/ifcfg-eth0 | cut
-c9-25`

#echo $a
Archivo: changeallconfig_cmd.sh
#!/bin/sh
48

# rutas de los archivos a configurar


ruta1='/etc/sysconfig/network-scripts/ifcfg-eth0'
ruta2='/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/datosconfi
g.txt'
ruta3='/etc/resolv.conf'
ruta4='/etc/sysconfig/network'
ruta5='/var/named/chroot/etc/named.conf'
ruta8='/etc/hosts'
ruta9='/etc/mail/access'
ruta10='/etc/mail/local-host-names'
ruta11='/etc/aliases'
ruta12='/etc/mail/relay-domains'
ruta13='/etc/mail/sendmail.mc'
ruta14='/var/www/html/horde/imp/config/servers.php'
ruta15='/etc/httpd/conf/httpd.conf'
ruta16='/etc/httpd/conf.d/ssl.conf'
ruta17='/etc/dhcpd.conf'

# captura de datos de lo que actualmente tiene la tarjeta de red


netmask1=`sed -n 10p $ruta1`
ipaddr1=`sed -n 11p $ruta1`
gateway1=`sed -n 12p $ruta1`
ips1=`sed -n 11p $ruta1 | cut -c8-100 `
gate1=`sed -n 12p $ruta1 | cut -c9-100 `

# captura de datos de lo que actualmente el resolv.conf


dominio1=`sed -n 1p $ruta3 | cut -c8-100`
# captura de datos de lo que actualmente el /etc/sysconfig/network
hostname1=`sed -n 3p $ruta4`
hosts1=`sed -n 3p $ruta4 | cut -c10-100`

# captura de datos de lo que actualmente el /var/named/chroot/etc/named.conf


dnsextpri1=`sed -n 10p $ruta5 | cut -c17-100`
dnsextsec1=`sed -n 11p $ruta5 | cut -c17-100`

# visualizacion de los datos de lo que tiene la tarjeta de red actualmente


echo "lo q tiene la tarjeta"
echo $netmask1
echo $ipaddr1
echo $gateway1
echo $gate1
echo $ips1

# visualizacion de los datos de lo que tiene actualmente el resolv.conf


49

echo $dominio1
# visualizacion de los datos de lo que tiene actualmente el /etc/sysconfig/network
echo $hostname1
echo $hosts1

#visualizacion de los datos de lo que tiene actualmente


/var/named/chroot/etc/named.conf
echo $dnsextpri1
echo $dnsextsec1

# captura de datos del archivo de configuracion datosconfig.txt


netmask2=`sed -n 2p $ruta2`
ipaddr2=`sed -n 1p $ruta2`
gateway2=`sed -n 3p $ruta2`
dominio2=`sed -n 6p $ruta2 | cut -c9-100`
hostname2=`sed -n 7p $ruta2`
hosts2=`sed -n 7p $ruta2 | cut -c10-100`
ips2=`sed -n 1p $ruta2 | cut -c8-100`
gate2=`sed -n 3p $ruta2 | cut -c9-100`
dnsextpri2=`sed -n 4p $ruta2 | cut -c6-100`
dnsextsec2=`sed -n 5p $ruta2 | cut -c6-100`

# visualizacion de los datos del archivo de configuracion datosconfig.txt


echo " "
echo "lo nuevo a actualizar"
echo $netmask2
echo $ipaddr2
echo $gateway2
echo $gate2
echo $dominio2
echo $hostname2
echo $hosts2
echo $ips2

echo $dnsextpri2
echo $dnsextsec2

#asignacion de variables para el reemplazo de datos posteriormente


netmask="s/$netmask1/$netmask2/g"
ipaddr="s/$ipaddr1/$ipaddr2/g"
gateway="s/$gateway1/$gateway2/g"
gate="s/$gate1/$gate2/g"
dominio="s/$dominio1/$dominio2/g"
hostname="s/$hostname1/$hostname2/g"
50

hosts="s/$hosts1/$hosts2/g"
ips="s/$ips1/$ips2/g"
dnsextpri="s/$dnsextpri1/$dnsextpri2/g"
dnsextsec="s/$dnsextsec1/$dnsextsec2/g"

#busqueda y reemplazo del dato netmask en el archivo /etc/sysconfig/network-


scripts/ifcfg-eth0

echo " "


echo "archivo /etc/sysconfig/network-scripts/ifcfg-eth0"
echo $netmask
for i in $ruta1
do
sed $netmask $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato gateway en el archivo /etc/sysconfig/network-


scripts/ifcfg-eth0
echo " "
echo $gateway
for i in $ruta1
do
sed $gateway $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato ipaddr en el archivo /etc/sysconfig/network-


scripts/ifcfg-eth0
echo " "
echo $ipaddr
for i in $ruta1
do
sed $ipaddr $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato dominio en el archivo /etc/resolv.conf


echo " "
echo "archivo /etc/resolv.conf"
echo $dominio
for i in $ruta3
do
sed $dominio $i > $i.n
51

done
mv $i.n $i

#busqueda y reemplazo del dato hostname en el archivo /etc/resolv.conf


echo " "
echo $ips
for i in $ruta3
do
sed $ips $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato hostname en el archivo /etc/sysconfig/network


echo " "
echo "archivo /etc/sysconfig/network"
echo $hostname
for i in $ruta4
do
sed $hostname $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato dominio en el archivo /etc/hosts


echo "archivo /etc/hosts"
echo $dominio
for i in $ruta8
do
sed $dominio $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato hostname en el archivo /etc/hosts


echo $hosts
for i in $ruta8
do
sed $hosts $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato ipaddress en el archivo /etc/hosts


echo $ips
for i in $ruta8
do
sed $ips $i > $i.n
52

done
mv $i.n $i

#busqueda y reemplazo del dato dominio en el archivo /etc/mail/access


echo "archivo /etc/mail/access"
echo $dominio
for i in $ruta9
do
sed $dominio $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato hostname en el archivo /etc/mail/access


echo $hosts
for i in $ruta9
do
sed $hosts $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato ipaddress en el archivo /etc/mail/access


echo $ips
for i in $ruta9
do
sed $ips $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato dominio en el archivo /etc/mail/local-host-names


echo "archivo /etc/mail/local-host-names"
echo $dominio
for i in $ruta10
do
sed $dominio $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato hostname en el archivo /etc/mail/local-host-names


echo $hosts
for i in $ruta10
do
sed $hosts $i > $i.n
done
mv $i.n $i
53

#busqueda y reemplazo del dato hostname en el archivo /etc/aliases


echo "archivo /etc/aliases"
echo $hosts
for i in $ruta11
do
sed $hosts $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato dominio en el archivo /etc/mail/relay-domains

echo "archivo /etc/mail/relay-domains"


echo $dominio
for i in $ruta12
do
sed $dominio $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato hostname en el archivo /etc/mail/relay-domains


echo $hosts
for i in $ruta12
do
sed $hosts $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato dominio en el archivo /etc/mail/sendmail.mc


echo "archivo /etc/mail/sendmail.mc"
echo $dominio
for i in $ruta13
do
sed $dominio $i > $i.n
done
mv $i.n $i

#copia de lineas del named.conf


l1=`sed -n 35p $ruta5`
l2=`sed -n 36p $ruta5`
l3=`sed -n 37p $ruta5`
l4=`sed -n 38p $ruta5`
l5=`sed -n 39p $ruta5`
54

#busqueda y reemplazo del dato dominio en el archivo


/var/named/chroot/etc/named.conf
echo "archivo /var/named/chroot/etc/named.conf"
echo $dominio
for i in $ruta5
do
sed $dominio $i > $i.n
done
mv $i.n $i
chmod go+rx $i

#busqueda y reemplazo del dato dns externo primario en el archivo


/var/named/chroot/etc/named.conf
echo $dnsextpri
for i in $ruta5
do
sed $dnsextpri $i > $i.n
done
mv $i.n $i
chmod go+rx $i

#busqueda y reemplazo del dato dns externo secundario en el archivo


/var/named/chroot/etc/named.conf
echo $dnsextsec
for i in $ruta5
do
sed $dnsextsec $i > $i.n
done
mv $i.n $i
chmod go+rx $i

echo $l1 >> /var/named/chroot/etc/named.conf


echo $l2 >> /var/named/chroot/etc/named.conf
echo $l3 >> /var/named/chroot/etc/named.conf
echo $l4 >> /var/named/chroot/etc/named.conf
echo $l5 >> /var/named/chroot/etc/named.conf

echo "archivo /var/named/chroot/var/named/*.zone"


#copia del archivo de zona y creacion del nuevo archivo de zona con el nombre del
dominio nuevo
cp /var/named/chroot/var/named/$dominio1.zone /var/named/chroot/var/named/
$dominio2.zone

ruta6='/var/named/chroot/var/named/'$dominio2'.zone'
55

ruta6a='/var/named/chroot/var/named/'$dominio1'.zone'

#busqueda y reemplazo del dato dominio en el archivo de zona de reenvio en la


ruta /var/named/chroot/var/named/
echo $dominio
for i in $ruta6
do
sed $dominio $i > $i.n
done
mv $i.n $i
chmod go+rx $i

#busqueda y reemplazo del dato hostname en el archivo de zona de reenvio en la


ruta /var/named/chroot/var/named/
echo $hosts
for i in $ruta6
do
sed $hosts $i > $i.n
done
mv $i.n $i
chmod go+rx $i

#busqueda y reemplazo del dato ipaddress en el archivo de zona de reenvio en la


ruta /var/named/chroot/var/named/
echo $ips
for i in $ruta6
do
sed $ips $i > $i.n
done
mv $i.n $i
chmod go+rx $i

#busqueda y reemplazo del dato ipaddress en el archivo de zona de reenvio actual en


la ruta /var/named/chroot/var/named/
echo $ips
for i in $ruta6a
do
sed $ips $i > $i.n
done
mv $i.n $i
chmod go+rx $i

# captura de datos de lo que actualmente tiene la tarjeta de red


56

ips1=`sed -n 11p $ruta1 | cut -c8-100 `


echo "lo q tiene la tarjeta"
echo $ips1

ipocteto1a=`sed -n 11p $ruta1 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f1 -d:`
ipocteto1b=`sed -n 11p $ruta1 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f2 -d:`
ipocteto1c=`sed -n 11p $ruta1 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f3 -d:`
ipocteto1d=`sed -n 11p $ruta1 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f4 -d:`
ipinversa1=$ipocteto1c"."$ipocteto1b"."$ipocteto1a
ipnormal1=$ipocteto1a"."$ipocteto1b"."$ipocteto1c

echo $ipocteto1a
echo $ipocteto1b
echo $ipocteto1c
echo $ipinversa1
echo $ipnormal1

# visualizacion de los datos del archivo de configuracion datosconfig.txt


echo "lo nuevo a actualizar"

ips2=`sed -n 1p $ruta2 | cut -c8-100 `


echo $ips2

ipocteto2a=`sed -n 1p $ruta2 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f1 -d:`


ipocteto2b=`sed -n 1p $ruta2 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f2 -d:`
ipocteto2c=`sed -n 1p $ruta2 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f3 -d:`
ipocteto2d=`sed -n 1p $ruta2 | cut -c8-100 | sed "s/[.][.]*/:/g" | cut -f4 -d:`
ipinversa2=$ipocteto2c"."$ipocteto2b"."$ipocteto2a
ipnormal2=$ipocteto2a"."$ipocteto2b"."$ipocteto2c

echo $ipocteto2a
echo $ipocteto2b
echo $ipocteto2c
echo $ipinversa2
echo $ipnormal2

#asignacion de variables para el reemplazo de datos posteriormente


ipinversa="s/$ipinversa1/$ipinversa2/g"
#ipnormal="s/$ipnormal1/$ipnormal2/g"
ipoctetod="s/$ipocteto1d/$ipocteto2d/g"

#copia y creacion del archivo de zona inversa en /var/named/chroot/var/named


#cp -pfr /var/named/chroot/var/named/$ipinversa1.in-addr.arpa.zone
/var/named/chroot/var/named/$ipinversa2.in-addr.arpa.zone
57

#ruta7='/var/named/chroot/var/named/'$ipinversa2'.in-addr.arpa.zone'
ruta7a='/var/named/chroot/var/named/'$ipinversa1'.in-addr.arpa.zone'

#busqueda y reemplazo del dato dominio en el archivo de zona inversa en la ruta


/var/named/chroot/var/named/
echo $dominio
#for i in $ruta7
#do
#sed $dominio $i > $i.n
#done
#mv $i.n $i
#chmod go+rx $i

#busqueda y reemplazo del dato hostname en el archivo de zona inversa en la ruta


/var/named/chroot/var/named/
echo $hosts
#for i in $ruta7
#do
#sed $hosts $i > $i.n
#done
#mv $i.n $i
#chmod go+rx $i

#busqueda y reemplazo del 4to octeto en el archivo de zona inversa en la ruta


/var/named/chroot/var/named
echo $ipoctetod
#for i in $ruta7
#do
#sed $ipoctetod $i > $i.n
#done
#mv $i.n $i
#chmod go+rx $i

#busqueda y reemplazo del 4to octeto en el archivo de zona inversa en la ruta


/var/named/chroot/var/named
echo $ipoctetod
for i in $ruta7a
do
sed $ipoctetod $i > $i.n
done
mv $i.n $i
chmod go+rx $i
58

#busqueda y reemplazo del dato dominio en el archivo del servers.php en el hordeen


la ruta var/www/html/horde/imp/config/
echo $dominio
for i in $ruta14
do
sed $dominio $i > $i.n
done
mv $i.n $i
chmod go-x $i
chgrp apache $i
chown apache $i

#busqueda y reemplazo del dato dominio en el archivo del servers.php en el hordeen


la ruta /var/www/html/horde/imp/config/
echo $ips
for i in $ruta14
do
sed $ips $i > $i.n
done
mv $i.n $i
chmod go-x $i
chgrp apache $i
chown apache $i

#busqueda y reemplazo del dato dominio en el archivo del servers.php en el hordeen


la ruta /var/www/html/horde/imp/config/
#echo $hosts
#for i in $ruta14
#do
#sed $hosts $i > $i.n
#done
#mv $i.n $i
#chmod go-x $i
#chgrp apache $i
#chown apache $i

#busqueda y reemplazo del dato dominio en el archivo del httpd.conf en el httpd en la


ruta /etc/httpd/conf/
echo $dominio
for i in $ruta15
do
sed $dominio $i > $i.n
done
mv $i.n $i
59

chmod go-x $i

#busqueda y reemplazo del dato dominio en el archivo del httpd.conf en el httpd en la


ruta /etc/httpd/conf/
echo $ips
for i in $ruta15
do
sed $ips $i > $i.n
done
mv $i.n $i
chmod go-x $i

mkdir /etc/ssl/$dominio2/
cp -r -p /etc/ssl/$dominio1/* /etc/ssl/$dominio2/
chmod go-wrx /etc/ssl/$dominio2/
#rm -fr /etc/ssl/$dominio1/

#busqueda y reemplazo del dato dominio en el archivo del ssl.conf en el httpd (ls
certificados) en la ruta /etc/httpd/conf.d/
echo $dominio
for i in $ruta16
do
sed $dominio $i > $i.n
done
mv $i.n $i
chmod go-x $i

#busqueda y reemplazo del dato dominio en el archivo /etc/dhcpd.conf


echo "archivo /etc/dhcpd.conf"
echo $dominio
for i in $ruta17
do
sed $dominio $i > $i.n
done
mv $i.n $i

#busqueda y reemplazo del dato ips en el archivo /etc/dhcpd.conf


echo $ips
for i in $ruta17
do
sed $ips $i > $i.n
done
mv $i.n $i
60

#busqueda y reemplazo del dato gateway en el archivo /etc/dhcpd.conf


echo $gate
for i in $ruta17
do
sed $gate $i > $i.n
done
mv $i.n $i

ipoct3a=`sed -n 7p $ruta17 | cut -c8-20 | sed "s/[.][.]*/:/g" | cut -f1 -d:`


ipoct3b=`sed -n 7p $ruta17 | cut -c8-20 | sed "s/[.][.]*/:/g" | cut -f2 -d:`
ipoct3c=`sed -n 7p $ruta17 | cut -c8-20 | sed "s/[.][.]*/:/g" | cut -f3 -d:`
ipoct3d=`sed -n 7p $ruta17 | cut -c8-20 | sed "s/[.][.]*/:/g" | cut -f4 -d:`
ipinv3=$ipoct3c"."$ipoct3b"."$ipoct3a
ipnor3=$ipoct3a"."$ipoct3b"."$ipoct3c

echo $ipoct3a
echo $ipoct3b
echo $ipoct3c
echo $ipinv3
echo $ipnor3

ipnormal="s/$ipnor3/$ipnormal2/g"

#busqueda y reemplazo del dato subnet en el archivo /etc/dhcpd.conf


echo $ipnormal
for i in $ruta17
do
sed $ipnormal $i > $i.n
done
mv $i.n $i
Archivo: restartservices_cmd.sh
!/bin/sh
# rutas de los archivos a configurar

/etc/rc.d/init.d/network restart
echo "Servicio NETWORK reiniciado"

/etc/rc.d/init.d/sendmail restart
echo " "
echo "Servicio SENDMAIL reiniciado"

#/etc/rc.d/init.d/MailScanner restart
#echo " "
#echo "Servicio MAILSCANNER reiniciado"
61

/etc/rc.d/init.d/named restart
echo " "
echo "Servicio NAMED reiniciado"

/etc/rc.d/init.d/dhcpd restart
echo " "
echo "Servicio DHCPD reiniciado"

/etc/rc.d/init.d/httpd reload
echo " "
echo "Servicio HTTPD reiniciado"

echo " "


echo "Reinicio de servicios exitosos"
Seccin administracin de seguridades.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/seguridades/scripts, en el cual se encuentran
los siguientes archivos.

Archivo: copiaseguridadmultiple_cmd.sh
#!/bin/bash
#\

ruta1="/var/www/html/sw_syscomsa/webpages/seguridades/scripts/copiasmultiples.t
xt"
copiaar="/var/www/html/sw_syscomsa/webpages/seguridades/scripts/usuarioscopiad
os.txt"
ruta2="/home"
ruta3="/var/spool/mail"
ruta4="/etc/passwd"
ruta5="/etc/crontab"

touch /var/www/html/sw_syscomsa/webpages/seguridades/scripts/copiasmultiples.txt
touch
/var/www/html/sw_syscomsa/webpages/seguridades/scripts/usuarioscopiados.txt

if test $1 = "x"
then
todosusuarios=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4}' $ruta4 | sed "s/[ ][ ]*/:/g" |
cut -f1 -d:`

echo $todosusuarios > $ruta1


echo $todosusuarios >> $copiaar
62

echo $2 >> $ruta1


echo $3 >> $ruta1
echo $4 >> $ruta1
echo $5 >> $ruta1
echo $6 >> $ruta1

minuto=$2
hora=$3
dias=$4
mes=$5
diasem=$6

minuto=`sed -n 2p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`


hora=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
dias=`sed -n 4p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`
mes=`sed -n 5p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
diasem=`sed -n 6p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f3 -d-`

i=0

while [ $i -ne 1000 ]

i=$[$i+1]
xusu=`sed -n 1p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f$i -d-`
if test -z $xusu
then
echo "Definicion de Copias de Seguridad realizado Exitosamente"
break
else
echo "Definicion de Copias de Seguridad realizado Exitosamente"
tar="tar -zcvf /backupmails/$xusu""backupmail.tar.gz $ruta2/$xusu $ruta3/$xusu"
tar -zcvf /backupmails/$xusu""backupmail.tar.gz $ruta2/$xusu $ruta3/$xusu

echo $minuto" "$hora" "$dias" "$mes" "$diasem" root "$tar >> $ruta5
fi
done
#/etc/rc.d/init.d/crond restart
else
nombreusuario=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4}' $ruta4 | grep "$1" | sed
"s/[ ][ ]*/:/g" | cut -f1 -d:`
if test -z $nombreusuario
then
echo "La Cuenta de Usuario no Existe"
else
63

echo $1 > $ruta1


echo $1 >> $copiaar
echo $2 >> $ruta1
echo $3 >> $ruta1
echo $4 >> $ruta1
echo $5 >> $ruta1
echo $6 >> $ruta1

minuto=$2
hora=$3
dias=$4
mes=$5
diasem=$6

minuto=`sed -n 2p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`


hora=`sed -n 2p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
dias=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`
mes=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
diasem=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f3 -d-`

tar="tar -zcvf /backupmails/$1backupmail.tar.gz $ruta2/$1 $ruta3/$1"

tar -zcvf /backupmails/$1""backupmail.tar.gz $ruta2/$1 $ruta3/$1

echo "Realizado Exitosamente la copia de seguridad"


echo $minuto" "$hora" "$dias" "$mes" "$diasem" root "$tar >> $ruta5
# /etc/rc.d/init.d/crond restart
fi
fi
Archivo: copiaseguridadsimple_cmd.sh
#!/bin/bash
#\

ruta1="/var/www/html/sw_syscomsa/webpages/seguridades/scripts/copiassimples.txt
"
copiaar="/var/www/html/sw_syscomsa/webpages/seguridades/scripts/usuarioscopiad
os.txt"
ruta2="/home"
ruta3="/var/spool/mail"
ruta4="/etc/passwd"
ruta5="/etc/crontab"

touch /var/www/html/sw_syscomsa/webpages/seguridades/scripts/copiassimples.txt
64

touch
/var/www/html/sw_syscomsa/webpages/seguridades/scripts/usuarioscopiados.txt

if test $1 = "x"
then
todosusuarios=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4}' $ruta4 | sed "s/[ ][ ]*/:/g" |
cut -f1 -d:`

echo $todosusuarios > $ruta1


echo $todosusuarios >> $copiaar
# echo $2 >> $ruta1
# echo $3 >> $ruta1

# minuto=`sed -n 2p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`


# hora=`sed -n 2p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
# dias=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`
# mes=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
# diasem=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f3 -d-`

i=0
while [ $i -ne 1000 ]
do
i=$[$i+1]
xusu=`sed -n 1p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f$i -d-`
if test -z $xusu
then
echo "Definicion de Copias de Seguridad realizado Exitosamente"
break
else
echo "Definicion de Copias de Seguridad realizado Exitosamente"
tar="tar -zcvf /backupmails/$xusu""backupmail.tar.gz $ruta2/$xusu $ruta3/$xusu"
tar -zcvf /backupmails/$xusu""backupmail.tar.gz $ruta2/$xusu $ruta3/$xusu
# echo $minuto" "$hora" "$dias" "$mes" "$diasem" root "$tar >> $ruta5
fi
done
#/etc/rc.d/init.d/crond restart
else
nombreusuario=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4}' $ruta4 | grep "$1" | sed
"s/[ ][ ]*/:/g" | cut -f1 -d:`
if test -z $nombreusuario
then
echo "La Cuenta de Usuario no Existe"
else
echo $1 > $ruta1
65

echo $1 >> $copiaar


# echo $2 >> $ruta1
# echo $3 >> $ruta1

# minuto=`sed -n 2p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`


# hora=`sed -n 2p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
# dias=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f1 -d-`
# mes=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f2 -d-`
# diasem=`sed -n 3p $ruta1 | sed "s/[ ][ ]*/-/g" | cut -f3 -d-`

tar="tar -zcvf /backupmails/$1backupmail.tar.gz $ruta2/$1 $ruta3/$1"


tar -zcvf /backupmails/$1""backupmail.tar.gz $ruta2/$1 $ruta3/$1
echo "Realizado Exitosamente la copia de seguridad"
# echo $minuto" "$hora" "$dias" "$mes" "$diasem" root "$tar >> $ruta5
#/etc/rc.d/init.d/crond restart
fi
fi
Archivo: restaurarmail_cmd.sh
#!/bin/bash
#\
ruta1="/var/www/html/sw_syscomsa/webpages/seguridades/scripts/restaurar.txt"
ruta2="/home"
ruta3="/var/spool/mail"
ruta4="/etc/passwd"

touch /var/www/html/sw_syscomsa/webpages/seguridades/scripts/restaurar.txt

nombreusuario=`gawk -F: '$4>=500'\ '{print $1,$2,$3,$4}' $ruta4 | grep "$1" | sed "s/
[ ][ ]*/:/g" | cut -f1 -d:`
if test -z $nombreusuario
then
echo "La Cuenta de Usuario no Existe"
else
cd /backupmails/; tar -xzf /backupmails/$1""backupmail.tar.gz
if test $2 = "ALL"
then
echo "Se va a proceder a la restauracion"
# cd /backupmails/; tar -xvzf /backupmails/$1""backupmail.tar.gz
cp -frp /backupmails/home/$1/ /home/
cp -frp /backupmails/var/spool/mail/$1 /var/spool/mail/
echo "Se va a proceder a la restauracion"
echo "Realizado Exitosamente la restauracion TOTAL de seguridad"

else
66

if test $2 = "INB"
then
cp -frp /backupmails/home/$1/mail/inbox $ruta2/$1/mail/inbox
cp -frp /backupmails/var/spool/mail/$1 $ruta3/
echo "Realizado Exitosamente la restauracion de la carpeta INBOX"
else
if test $2 = "ENV"
then
cp -frp /backupmails/home/$1/mail/Enviados $ruta2/$1/mail/Enviados
cp -frp /backupmails/var/spool/mail/$1 $ruta3/
echo "Realizado Exitosamente la restauracion de la carpeta Enviados"
else
if test $2 = "BOR"
then
cp -frp /backupmails/home/$1/mail/Borrador $ruta2/$1/mail/Borrador
cp -frp /backupmails/var/spool/mail/$1 $ruta3/
echo "Realizado Exitosamente la restauracion de la carpeta Borrador"
else
if test $2 = "PAP"
then
cp -frp /backupmails/home/$1/mail/Papelera $ruta2/$1/mail/Papelera
cp -frp /backupmails/var/spool/mail/$1 $ruta3/
echo "Realizado Exitosamente la restauracion de la carpeta Papelera"
else
if test $2 = "SPA"
then
cp -frp /backupmails/home/$1/mail/Spam $ruta2/$1/mail/Spam
cp -frp /backupmails/var/spool/mail/$1 $ruta3/
echo "Realizado Exitosamente la restauracion de la carpeta Spam"
fi fi fi fi fi fi fi

2.4. Codigo Php del proyecto.


Seccin administracin interfaz.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/administracio_interfaz/ en el cual se
encuentran los siguientes archivos.

Archivo: pw_inicio_sesion_correo.php
<html>
<head>
<title>Tareas de Inicio de Sesion en Correo Parte I</title>
<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
67

{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{
if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(p)
{
if (p == "")
{alert("ERROR: No puede dejar este campo vacio")
return false
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validavacio(h)
{
if( vacio(h) == false )
68

{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if
(validarNumeroEntero(document.myform.deleteatttachamentsmonthlykeep.value) ==
false)
{ return false; }
if (validavacio(document.myform.initialpage.value) == false)
{return false; }

if (validavacio(document.myform.purgesentmailinterval.value) == false)
{ return false; }
return true;
}
</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}
69

a {font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav { font-family: Verdana, Arial, Helvetica, sans-serif;


font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}
.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
70

line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
71

line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}

.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}

input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder();
72

$iniapli = array ('INBOX'=>'Entrada',


'Borrador'=>'Borrador',
'Enviados'=>'Enviados',
'Papelera'=>'Papelera',
'Spam'=>'Spam');
$delfrec = array ('1'=>'Anualmente',
'2'=>'Mensualmente',
'3'=>'Semanalmente',
'4'=>'Diariamente',
'5'=>'Cada inicio de sesin');
$sino = array ('1' => 'SI', '0' => 'NO');
$sino2 = array ('true' => 'SI', 'false' => 'NO');
$form->addField(new LabelFieldtitulo('Tareas de Inicio de Sesin de Correo
del Horde PARTE I', 'inicisesion'));
$form->addField(new PopupField('Vista o buzon mostrados al iniciar Sesion:
', 'initialpage' , true, $iniapli));
$form->addField(new RadioButtonField('Eliminar de los correos enviados
los mensajes antiguos?', 'purgesentmail',true, $sino));
$form->addField(new PopupField('Frecuencia de eliminacion del correo
enviado: ', 'purgesentmailinterval' , true, $delfrec));
$form->addField(new RadioButtonField('Eliminar adjuntos vinculados
antiguos al inicio del mes?', 'deleteatttachamentsmonthly',true, $sino));
$form->addField(new TextField('Meses para guardar los adjuntos vinculados
antiguos', 'deleteatttachamentsmonthlykeep', 3,1,3));
$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',
'cancel' => 'Cancel')));
if ($form->isSubmitted('save'))
{
if($form->validate())
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/tareainicioses_
cmd.sh ".$form->getValue('initialpage')." ".$form->getValue('purgesentmail')." ".
$form->getValue('purgesentmailinterval')." ".$form-
>getValue('deleteatttachamentsmonthly')." ".$form-
>getValue('deleteatttachamentsmonthlykeep')." ".$form->getValue('mantenimiento')."
".$form->getValue('confmanteni');
$tmp = exec($cmd,$output,$status);
if ($status == 0)
{
echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('initialpage',"");
$form->setValue('purgesentmail',"");
73

$form->setValue('purgesentmailinterval',"");
$form->setValue('deleteatttachamentsmonthly',"");
$form->setValue('deleteatttachamentsmonthlykeep',"");
$form->setValue('mantenimiento',"");
$form->setValue('confmanteni',"");
}
else {
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_inicio_sesion_correo2.php
<html>
<head>
<title>Tareas de Inicio de Sesion en Correo Parte II</title>
<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
74

}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{

if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(p)
{
if (p == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validavacio(h)
{
if( vacio(h) == false )
{
return false
} else
{
return true
}
}
75

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validavacio(document.myform.initialpage.value) == false)
{
return false;
}

if (validavacio(document.myform.purgesentmailinterval.value) == false)
{
return false;
}
return true;
}
</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
76

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}
77

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}

.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}
78

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();

$delfrec = array ('1'=>'Anualmente',


'2'=>'Mensualmente',
'3'=>'Semanalmente',
79

'4'=>'Diariamente',
'5'=>'Cada inicio de sesin');

$sino = array ('1' => 'SI', '0' => 'NO');

$form->addField(new LabelFieldtitulo('Tareas de Inicio de Sesin de Correo


del Horde PARTE II', 'inicisesion'));
$form->addField(new RadioButtonField('Eliminar de la papelera los
mensajes antiguos?', 'purgetrash',true, $sino));
$form->addField(new PopupField('Frecuencia de eliminacion de la papelera: ',
'purgetrashinterval' , true, $delfrec));
$form->addField(new RadioButtonField('Eliminar de la carpeta Spam los
mensajes antiguos?', 'purgespam',true, $sino));
$form->addField(new PopupField('Frecuencia de eliminacion de la carpeta
Spam: ', 'purgespaminterval' , true, $delfrec));
$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',
'cancel' => 'Cancel')));
if ($form->isSubmitted('save'))
{
if($form->validate())
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/tareainicioses2
_cmd.sh ".$form->getValue('purgetrash')." ".$form->getValue('purgetrashinterval')."
".$form->getValue('purgespam')." ".$form->getValue('purgespaminterval');
#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";
if ($status == 0)
{
#echo "<br/>".$tmp."<br/>";
echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('purgetrash',false);
$form->setValue('purgetrashinterval',"");
//$form->setValue('purgetrashkeep',"");
$form->setValue('purgespam',false);
$form->setValue('purgespaminterval',"");
//$form->setValue('purgespamkeep',"");

}
else {
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
80

echo $line."<br/>";}
}
$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</form>
</body>
</html>
Archivo: pw_sele_idiomahora.php
<html>
<head>
<title>Definicion del Idioma y de la Hora</title>
<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
81

{
//alert("OK")
return true
}
}
//VALIDA TODOS LOS CAMPOS DEL FORMULARIO
function validarFormulario()
{
if (validatexto(document.myform.idioma.value) == false)
{
return false;
}
if (validatexto(document.myform.zonahoraria.value) == false)
{
return false;
}
if (validatexto(document.myform.fecha.value) == false)
{
return false;
}
if (validatexto(document.myform.diaweek.value) == false)
{
return false;
}
return true;
}
</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
82

color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
83

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
84

}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
85

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();

$diase = array ('0'=>'Domingo','1'=>'Lunes');

$idio = array ('ar_OM' => '&#x202d;Arabic (Oman) &#x202e;


(&#x0627;&#x0644;&#x0639;&#x0631;&#x0628;&#x064a;&#x0629;)',
'ar_SY' => '&#x202d;Arabic (Syria) &#x202e;
(&#x0627;&#x0644;&#x0639;&#x0631;&#x0628;&#x064a;&#x0629;)',
'id_ID' => 'Bahasa Indonesia','bs_BA' => 'Bosanski','bg_BG' => '&#x202d;Bulgarian
(&#x0411;&#x044a;&#x043b;&#x0433;&#x0430;&#x0440;&#x0441;&#x043a;&#x
0438;)',
'ca_ES' => 'Catal&#xe0;',
'zh_CN' => '&#x202d;Chinese (Simplified)
(&#x7b80;&#x4f53;&#x4e2d;&#x6587;)',
'zh_TW' => '&#x202d;Chinese (Traditional)
(&#x6b63;&#x9ad4;&#x4e2d;&#x6587;)',
'cs_CZ' => '&#x202d;Czech (&#x010c;esky)', 'da_DK' => 'Dansk', 'de_DE' =>
'Deutsch',
'en_US' => '&#x202d;English (American)', 'en_GB' => '&#x202d;English (British)',
'en_CA' => '&#x202d;English (Canadian)', 'es_ES' => 'Espa&#xf1;ol', 'et_EE' =>
'Eesti',
'fr_FR' => 'Fran&#xe7;ais', 'gl_ES' => 'Galego', 'el_GR' => '&#x202d;Greek
(&#x0395;&#x03bb;&#x03bb;&#x03b7;&#x03bd;&#x03b9;&#x03ba;&#x03ac;)',
'he_IL' => '&#x202d;Hebrew &#x202e;
(&#x05E2;&#x05D1;&#x05E8;&#x05D9;&#x05EA;)',
'is_IS' => '&#xcd;slenska', 'it_IT' => 'Italiano',
'ja_JP' => '&#x202d;Japanese (&#x65e5;&#x672c;&#x8a9e;)',
'km_KH' => '&#x202d;Khmer (&#x1781;&#x17d2;&#x1798;&#x17c2;&#x179a;)',
'ko_KR' => '&#x202d;Korean (&#xd55c;&#xad6d;&#xc5b4;)',
'lv_LV' => 'Latvie&#x0161;u', 'lt_LT' => 'Lietuvi&#x0173;', 'mk_MK' =>
'&#x202d;Macedonian
(&#x041c;&#x0430;&#x043a;&#x0435;&#x0434;&#x043e;&#x043d;&#x0441;&#x
043a;&#x0438;)',
'hu_HU' => 'Magyar', 'nl_NL' => 'Nederlands', 'nb_NO' => 'Norsk bokm&#xe5;l',
'nn_NO' => 'Norsk nynorsk',
'fa_IR' => '&#x202d;Persian &#x202e;
(&#x0641;&#x0627;&#x0631;&#x0633;&#x0649;)',
'pl_PL' => 'Polski', 'pt_PT' => 'Portugu&#xea;s', 'pt_BR' => 'Portugu&#xea;s
Brasileiro',
86

'ro_RO' => 'Rom&#xe2;n&#xe4;',


'ru_RU' => '&#x202d;Russian
(&#x0420;&#x0443;&#x0441;&#x0441;&#x043a;&#x0438;&#x0439;)',
'sk_SK' => '&#x202d;Slovak (Sloven&#x010d;ina)',
'sl_SI' => '&#x202d;Slovenian (Sloven&#x0161;&#x010d;ina)', 'fi_FI' => 'Suomi',
'sv_SE' => 'Svenska', 'th_TH' => '&#x202d;Thai (&#x0e44;&#x0e17;&#x0e22;)',
'tr_TR' => 'T&#xfc;rk&#xe7;e', 'uk_UA' => '&#x202d;Ukrainian
(&#x0423;&#x043a;&#x0440;&#x0430;&#x0457;&#x043d;&#x0441;&#x044c;&#x
043a;&#x0430;)',
);

$zona = array ( 'Africa'."\\"."\\".'/Abidjan' =>'Africa/Abidjan',


'Africa."\\"."\\"./Accra' => 'Africa/Accra',
'Africa."\\"."\\"./Algiers' => 'Africa/Algiers',
'Africa."\\"."\\"./Asmera' => 'Africa/Asmera',
'Africa."\\"."\\"./Bamako' => 'Africa/Bamako',
'Africa."\\"."\\"./Bangui' => 'Africa/Bangui',
'Africa."\\"."\\"./Banjul' => 'Africa/Banjul',
'Africa."\\"."\\"./Bissau' => 'Africa/Bissau',
'Africa."\\"."\\"./Blantyre' => 'Africa/Blantyre',
'Africa."\\"."\\"./Brazzaville' => 'Africa/Brazzaville',
'Africa."\\"."\\"./Bujumbura' => 'Africa/Bujumbura',
'Africa."\\"."\\"./Cairo' => 'Africa/Cairo',
'Africa."\\"."\\"./Casablanca' => 'Africa/Casablanca',
'America."\\"."\\"./Adak' => 'America/Adak',
'America."\\"."\\"./Aruba' => 'America/Aruba',
'America."\\"."\\"./Asuncion' => 'America/Asuncion',
'America.pw_opciones_visualizacion.php"\\"."\\"./Barbados' => 'America/Barbados',
'America."\\"."\\"./Belem' => 'America/Belem',
'America."\\"."\\"./Belize' => 'America/Belize',
'America."\\"."\\"./Bogota' => 'America/Bogota',
'America."\\"."\\"./Cancun' => 'America/Cancun',
'America."\\"."\\"./Caracas' => 'America/Caracas',
'America."\\"."\\"./Catamarca' => 'America/Catamarca',
'America."\\"."\\"./Cayman' => 'America/Cayman',
'America."\\"."\\"./Chicago' => 'America/Chicago',
'America."\\"."\\"./Chihuahua' => 'America/Chihuahua',
'America."\\"."\\"./Cordoba' => 'America/Cordoba',
'America."\\"."\\"./Guayaquil' => 'America/Guayaquil',
'America."\\"."\\"./Lima' => 'America/Lima',
'America."\\"."\\"./Managua' => 'America/Managua',
'America."\\"."\\"./Monterrey' => 'America/Monterrey',
'America."\\"."\\"./Panama' => 'America/Panama',
'America."\\"."\\"./Santiago' => 'America/Santiago',
87

'Asia."\\"."\\"./Bangkok' => 'Asia/Bangkok',


'Asia."\\"."\\"./Bahrain' => 'Asia/Bahrain',
'Asia."\\"."\\"./Dubai' => 'Asia/Dubai',
'Asia."\\"."\\"./Gaza' => 'Asia/Gaza',
'Asia."\\"."\\"./Jerusalem' => 'Asia/Jerusalem',
'Asia."\\"."\\"./Kabul' => 'Asia/Kabul',
'Asia."\\"."\\"./Kuwait' => 'Asia/Kuwait',
'Asia."\\"."\\"./Seoul' => 'Asia/Seoul',
'Asia."\\"."\\"./Shanghai' => 'Asia/Shanghai',
'Asia."\\"."\\"./Singapore' => 'Asia/Singapore',
'Asia."\\"."\\"./Tehran' => 'Asia/Tehran',
'Australia."\\"."\\"./Adelaide' => 'Australia/Adelaide',
'Australia."\\"."\\"./Brisbane' => 'Australia/Brisbane',
'Australia."\\"."\\"./Melbourne' => 'Australia/Melbourne',
'Australia."\\"."\\"./Sydney' => 'Australia/Sydney',
'Europe."\\"."\\"./Amsterdam' => 'Europe/Amsterdam',
'Europe."\\"."\\"./Athens' => 'Europe/Athens',
'Europe."\\"."\\"./Belgrade' => 'Europe/Belgrade',
'Europe."\\"."\\"./Berlin' => 'Europe/Berlin',
'Europe."\\"."\\"./Brussels' => 'Europe/Brussels',
'Europe."\\"."\\"./Budapest' => 'Europe/Budapest',
'Europe."\\"."\\"./Copenhagen' => 'Europe/Copenhagen',
'Europe."\\"."\\"./Dublin' => 'Europe/Dublin',
'Europe."\\"."\\"./Helsinki' => 'Europe/Helsinki',
'Europe."\\"."\\"./London' => 'Europe/London',
'Europe."\\"."\\"./Luxembourg' => 'Europe/Luxembourg',
'Europe."\\"."\\"./Madrid' => 'Europe/Madrid',
'Europe."\\"."\\"./Monaco' => 'Europe/Monaco',
'Europe."\\"."\\"./Moscow' => 'Europe/Moscow',
'Europe."\\"."\\"./Oslo' => 'Europe/Oslo',
'Europe."\\"."\\"./Paris' => 'Europe/Paris');

$fecha = array( '%x' => strftime('%x'),


'%Y-%m-%d' => strftime('%Y-%m-%d'),
'%d-%m-%Y' => strftime('%d-%m-%Y'),
'%A-%B-%d,%Y' => strftime('%A-%B-%d,%Y'),
'%A,%d-%B,%Y' => strftime('%A,%d-%B,%Y'),
'%a,%b-%e,%Y' => strftime('%a,%b-%e,%Y'),
'%a,%b-%e,%y' => strftime('%a,%b-%e,%y'),
'%a,%b-%e' => strftime('%a,%b-%e'),
'%a,%e-%b-%Y' => strftime('%a,-%e-%b-%Y'),
'%a,%e-%b-%y' => strftime('%a,%e-%b%y'),
'%a-%d-%b-%Y' => strftime ('%a-%d-%b-%Y'),
'%a-%x' => strftime ('%a-%x'),
88

'%a-%Y-%m-%d' => strftime ('%a-%Y-%m-%d'),


'%e-%b-%Y' => strftime('%e-%b-%Y'),
'%e.%b-%Y' => strftime('%e.%b-%Y'),
'%e.%m-%Y' => strftime('%e.%m-%Y'),
'%e.%m.' => strftime('%e.%m.'),
'%e.%B' => strftime('%e.%B'),
'%e.%B-%Y' => strftime('%e.%B-%Y'),
'%e.%B-%y' => strftime('%e.%B-%y'),
'%B-%e,%Y' => strftime('%B-%e,%Y'));

$sino = array ('true' => 'SI', 'false' => 'NO');

$form->addField(new LabelFieldtitulo('Definicin del Idioma y de la Hora',


'defidihora'));
$form->addField(new PopupField('Seleccione el Idioma Preferido:',
'idioma',true, $idio));
$form->addField(new PopupField('Zona Horaria actual:', 'zonahoraria',true,
$zona));
$form->addField(new RadioButtonField('Mostrar en formato de 24 Horas?',
'timeformat',true, $sino));
$form->addField(new PopupField('Elija como mostrar la fecha', 'fecha',true,
$fecha));
$form->addField(new PopupField('Primer dia de la Semana: ', 'diaweek' ,true,
$diase));

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


'cancel' => 'Cancel')));

if ($form->isSubmitted('save'))
{ //$form->validate();
if($form->validate())
/*if(($form->getValue('idioma') == true) and ($form-
>getValue('timeformat') == true) and ($form->getValue('zonahoraria') == true)and
($form->getValue('fecha') == true)and ($form->getValue('diaweek') == true))*/
{

/*$var= $form->getValue('rutaimagen');
echo $var;*/
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/idiomahora_c
md.sh ".$form->getValue('idioma')." ".$form->getValue('zonahoraria')." ".$form-
>getValue('timeformat')." ".$form->getValue('fecha')." ".$form->getValue('diaweek');
89

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
#echo "<br/>".$tmp."<br/>";
echo "Definicion de las opciones de Idioma y hora
realizado Exitosamente<br/>";
$form->setValue('idioma',"");
$form->setValue('timeformat',false);
$form->setValue('zonahoraria',"");
$form->setValue('fecha',"");
$form->setValue('diaweek',"");

}
else {
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();

}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_opciones_visualizacion.php
<html>
<head>
<title>Opciones de Visualizacion del HORDE</title>
90

<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{
if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(p)
{
if (p == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

return true
91

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validavacio(h)
{
if( vacio(h) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}
//busca caracteres que no sean espacio en blanco en una cadena
function vacio3(a)
{
var caract_extra=" "
var ubicacion
var enter = " "
var caracteres = " !|@#$~
%&{([)]=}?'~+]*`[^';,}" + String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < a.length; i++)
{
if ( a.charAt(i) != "" )
{
ubicacion = a.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


92

function validatexto(F)
{
if( vacio3(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}
//VALIDA TODOS LOS CAMPOS DEL FORMULARIO
function validarFormulario()
{
if (validarNumeroEntero(document.myform.anchomenu.value) == false)
{
return false;
}
if (validavacio(document.myform.aplicacion.value) == false)
{
return false;
}

if (validavacio(document.myform.themes.value) == false)
{
return false;
}
if (validavacio(document.myform.vistapor.value) == false)
{
return false;
}
if (validavacio(document.myform.formmenu.value) == false)
{
return false;
}
if (validavacio(document.myform.actdinmenu.value) == false)
{
return false;
}
if (validatexto(document.myform.rutaimagen.value) == false)
{
return false;
}
93

return true;
}
</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}
94

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
95

font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}

.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}

.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
96

input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();

$apli = array ('kronolith'=>'Agenda',


'imp'=>'Correo',
'turba'=>'Direcciones',
'ingo'=>'Filtros',
'horde'=>'Horde',
'mnemo'=>'Notas',
'nag'=>'Tareas');

$them = array ('hi-contrast'=>'Alto contraste',


'lucblue'=>'Azul Cielo',
'tango-blue'=>'Azul Tango',
'azur'=>'Azul celeste',
'lightblue'=>'Azul claro',
'bluewhite'=>'Azul y blanco',
'cornflower'=>'Azulina',
97

'barbie'=>'Barbie',
'camouflage'=>'Camuflaje',
'grey'=>'Gris',
'purple'=>'Horde Prpura',
'ideas'=>'Ideas',
'kolab'=>'Kolab',
'luc'=>'Cielo',
'lavander'=>'Lavanda',
'bluemoon'=>'Luna azul',
'brown'=>'Moreno',
'mozilla'=>'Mozilla',
'burntorange'=>'Naranja tostado',
'NeXTgrey'=>'NeXT',
'silver'=>'Silver Surfer',
'postnuke'=>'Postnuke',
'simplex'=>'Simplex',
'gennevilliers'=>'Teal',
'green'=>'Verde',
'fadetogreen'=>'Verde degradado');

$vista = array ('0'=>'Nunca',


'30'=>'Cada 30 segundos',
'60'=>'Cada minuto',
'300'=>'Cada 5 minutos',
'900'=>'Cada 15 minutos',
'1800'=>'Cada media hora');

$forme = array ('text'=>'Slo texto',


'icon'=>'Slo iconos',
'both'=>'Iconos con texto');

$actuadin = array ('0'=>'Nunca',


'30'=>'Cada 30 segundos',
'60'=>'Cada minuto',
'120'=>'Cada 2 minutos',
'300'=>'Cada 5 minutos');

$sino = array ('true' => 'SI', 'false' => 'NO');

$form->addField(new LabelFieldtitulo('Opciones de Visualizacin del Horde',


'opcvisua'));
$form->addField(new PopupField('Aplicacion Inicial: ', 'aplicacion' , true,
$apli));
98

$form->addField(new RadioButtonField('Mostrar hora de la ultima sesion al


Iniciar?', 'mostrarhora',true, $sino));
$form->addField(new PopupField('Seleccionar su Combinacion de Colores:',
'themes',true, $them));
$form->addField(new PopupField('Actualizar vista del portal', 'vistapor',true,
$vista));
$form->addField(new RadioButtonField('Mostrar el menu HORDE a la
izquierda?', 'menuizq',true, $sino));
$form->addField(new TextField('Anchura del Menu Horde a la izquierda',
'anchomenu', 3,1,3));
$form->addField(new PopupField('Formato del Menu', 'formmenu', true,
$forme));
$form->addField(new PopupField('Actualizar elementos de menu dinamicos',
'actdinmenu', true, $actuadin));
// $form->addField(new RadioButtonField('Definir claves de Accesos para los
Vinculos', 'claacce',true, $sino));
$form->addField(new LabelFieldsubtitulo('Carga de imagen del menu
principal', 'cargaimag'));
$form->addField(new TextField('Ruta de la imagen:', 'rutaimagen', 25,1,30000));
//$form->addField(new UploadField2('Ruta de la imagen:','rutaimagen',false,28,
30000,'/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/'));

///var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/fotozaida1.jp
g
//'/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/'

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


'cancel' => 'Cancel')));
if ($form->isSubmitted('save'))
{
if($form->validate())
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/opciovisualiza
_cmd.sh ".$form->getValue('aplicacion')." ".$form->getValue('mostrarhora')." ".
$form->getValue('vistapor')." ".$form->getValue('themes')." ".$form-
>getValue('menuizq')." ".$form->getValue('anchomenu')." ".$form-
>getValue('formmenu')." ".$form->getValue('actdinmenu')." ".$form-
>getValue('rutaimagen');

# echo $cmd;
$tmp = exec($cmd,$output,$status);
# echo "<br/>".$tmp."<br/>";
99

if ($status == 0)
{
#echo "<br/>".$tmp."<br/>";
echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('aplicacion',"");
$form->setValue('mostrarhora',false);
$form->setValue('themes',"");
$form->setValue('vistapor',"");
$form->setValue('menuizq',"");
$form->setValue('anchomenu',"");
$form->setValue('formmenu',"");
$form->setValue('actdinmenu',"");
//$form->setValue('claacce',"");
$form->setValue('rutaimagen',"");

}
else {
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();

}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</form>

</body>
</html>
Archivo: pw_opc_redaccion.php
<html>
100

<head>
<title>Opciones de Redaccin de Mensajes</title>
<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{

if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(p)
{
if (p == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}
101

return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validavacio(h)
{
if( vacio(h) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
// if (validarNumeroEntero(document.myform.purgesentmailkeep.value) ==
false)
// {
// return false;
// }
// if
(validarNumeroEntero(document.myform.deleteatttachamentsmonthlykeep.value) ==
false)
// {
// return false;
// }
if (validavacio(document.myform.initialpage.value) == false)
{
return false;
}

if (validavacio(document.myform.purgesentmailinterval.value) == false)
{
return false;
}
return true;
}
</script>
102

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
103

font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}
104

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}

.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}

input.big {
width: 100px;
}
105

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();

$redac = array ('top'=>'Arriba',


'bottom'=>'Abajo',
'sig'=>'Antes de la Firma');

$sino = array ('1' => 'SI', '0' => 'NO');

$form->addField(new LabelFieldtitulo('Opciones de Redaccin de mensajes',


'redamensa'));
$form->addField(new RadioButtonField('Redactar mensajes en una ventana
separada? ', 'composepopup',true, $sino));
$form->addField(new PopupField('Ubicacin por omisin del cursor en el
rea de texto de redaccin', 'composecursor' , true, $redac));
$form->addField(new RadioButtonField('Mostrar el campo de cabecera Cc:
al redactar mensajes?', 'composecc',true, $sino));
$form->addField(new RadioButtonField('Mostrar el campo de cabecera Bcc:
al redactar mensajes?', 'composebcc',true, $sino));
$form->addField(new RadioButtonField('Comprobar ortografa antes de
enviar un mensaje? ', 'composespellcheck',true, $sino));
106

// $form->addField(new PopupField('Solicitar acuses de recibo?',


'dispositionrequestread' , true, $acuse));

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


'cancel' => 'Cancel')));

if ($form->isSubmitted('save'))
{
if($form->validate())
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracio_interfaz/scripts/opc_redaccion
_cmd.sh ".$form->getValue('composepopup')." ".$form->getValue('composecursor')."
".$form->getValue('composecc')." ".$form->getValue('composebcc')." ".$form-
>getValue('composespellcheck');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
#echo "<br/>".$tmp."<br/>";
echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('composepopup',"");

$form->setValue('composecursor',false);
$form->setValue('composecc',"");
$form->setValue('composbcc',"");
$form->setValue('composespellcheck',"");
//$form->setValue('dispositionrequestread',false);
}
else {
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();

}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
107

else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</form>

</body>
</html>
Seccin administracin cuenta.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/ en el cual se
encuentran los siguientes archivos.

Archivo: pw_parametros_cuenta.php
<html>
<head>
<title>Definicion de los Parametros de Cuentas</title>
<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{
108

if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(p)
{
if (p == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validavacio(h)
{
if( vacio(h) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validavacio(document.myform.maxmens.value) == false)
{
return false;
}
109

if (validavacio(document.myform.replylimit.value) == false)
{
return false;
}
if (validavacio(document.myform.attachcountlimit.value) == false)
{
return false;
}
if (validavacio(document.myform.allowreceipts.value) == false)
{
return false;
}
return true;
}
</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}
110

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
111

font-family: Verdana, Arial, Helvetica, sans-serif;


font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}

.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
112

font-family: Arial, Helvetica, sans-serif;


background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}

.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}

input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$opc1 = array ('500' => '5', '1000' => '10','1500' => '15','2000' => '20','2500' =>
'25','3000' => '30');
$opc2 = array ('2' => '2','3' => '3','4' => '4','5' => '5','10' => '10','15' => '15','20'
=> '20','25' => '25','30' => '30','40' => '40','50' => '50','60' => '60');
113

$opc3 = array ('never' => 'Nunca', 'ask' => 'Consultar', 'always' => 'Siempre');
$opc4 = array ('16' => '16','17' => '17','18' => '18','19' => '19','20' => '20','25'
=> '25','30' => '30','35' => '35','40' => '40','45' => '45','50' => '50');
$opc5 = array ('1' => '1','2' => '2','4' => '4','6' => '6','8' => '8','10' => '10');
$opc6 = array ('2' => '2','4' => '4','6' => '6','8' => '8','10' => '10','20' => '20','25'
=> '25','50' => '50','100' => '100');
$opc7 = array ('2' => '2','3' => '3','4' => '4','5' => '5','25' => '25','30' => '30','40'
=> '40','50' => '50','60' => '60');

$sino = array ('1' => 'SI', '0' => 'NO');


$sino2 = array ('true' => 'SI', 'false' => 'NO');

$form = new FormBuilder();


$form->addField(new LabelFieldtitulo('Definicin de los Parametros de las
Cuentas', 'defparacta'));
$form->addField(new LabelFieldsubtitulo('Opciones de los Parametros de
Cuentas', 'defparacta'));

$form->addField(new PopupField('Tamao Maximo mensajes (MB):',


'maxmens', true, $opc1));
$form->addField(new LabelFieldmensaje('Define el tamao maximo de
mensaje de correo electrnico', 'msn5'));

$form->addField(new PopupField('Mximo numero de archivos adjuntos por


mensaje:', 'attachcountlimit',true, $opc5));
$form->addField(new LabelFieldmensaje('Define el numero maximo de datos
adjuntos por mensajes', 'msn5'));

$form->addField(new PopupField('Mximo Tamao de mensajes reenviados o


contestados:', 'replylimit',true, $opc1));
$form->addField(new LabelFieldmensaje('Define el tamao maximo de
mensajes que son respondidos o reenviados', 'msn6'));

$form->addField(new PopupField('Solicitar el Acuse de Recibo: ',


'allowreceipts',true, $opc3));
$form->addField(new LabelFieldmensaje('Solicitar el informe del mensaje
entrega al(los) destinatario(s)', 'msn2'));

$form->addField(new LabelFieldsubtitulo('Mantenimiento de las cuentas al


iniciar Sesin', 'inicisesion'));
$form->addField(new RadioButtonField('Realizar operaciones de
mantenimiento al iniciar sesin?', 'mantenimiento',true, $sino));
$form->addField(new RadioButtonField('Solicitar confirmacin antes de
realizar operaciones de mantenimiento?', 'confmanteni',true, $sino2));
114

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


'cancel'=> 'Cancel')));
if ($form->isSubmitted('save'))
{
if($form->validate())
{ $cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/parametroscue
nta_cmd.sh ".$form->getValue('maxmens')." ".$form->getValue('attachcountlimit')."
".$form->getValue('replylimit')." ".$form->getValue('allowreceipts')." ".$form-
>getValue('mantenimiento')." ".$form->getValue('confmanteni');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
echo "Proceso grabado exitosamente<br/>";
$form->setValue('maxmens','');
$form->setValue('attachcountlimit','');
$form->setValue('replylimit','');
$form->setValue('allowreceipts',false);
$form->setValue('mantenimiento',false);
$form->setValue('confmanteni',false);
}
else { echo "Proceso NO grabado exitosamente<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";

$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{ header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
115

</body>
</html>

Archivo: pw_definicionn_cuotas_usuario.php
<html>
<head>
<title>Definicion de Cuotas de Usuario</title>

<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{
if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

// FUNCION PARA VALIDAR IP


function validar(ip)
{
116

partes=ip.split('.');
if (partes.length!=4)
{
alert("ip no valida");
return false;
}
for (i=0;i<4;i++)
{
num=partes[i];
if (num>255 || num<0 || num.length==0 || isNaN(num))
{
alert("ip no valida");
return false;
}
}
return true;
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
117

{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validarNumeroEntero(document.myform.cuotagrac.value) == false)
{
return false;
}
if (validarNumeroEntero(document.myform.cuotaabso.value) == false)
{
return false;
}
if (validatexto(document.myform.nomusugru.value) == false)
{
return false;
}
return true;
}
</script>

<style type="text/css">
118

body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
119

color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
120

font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}

.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}

.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}

input.big {
width: 100px;
}
121

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

// $eleccion = array ('u' => 'Usuario', 'g' => 'Grupo');


$datos = array ('2048' => '2', '4096' => '4', '6144' => '6', '8192' => '8', '10240'
=> '10', '12288' => '12', '14336' => '14', '16384' => '16', '18432' => '18');
$datos2 = array ('2048' => '2', '4096' => '4', '6144' => '6', '8192' => '8', '10240'
=> '10', '12288' => '12', '14336' => '14', '16384' => '16', '18432' => '18', '20480' =>
'20');

$form = new FormBuilder();

$form->addField(new LabelFieldtitulo('Definicin de Cuotas Usuarios',


'defcuota'));
$form->addField(new LabelFieldsubtitulo('Descripcin de las Cuotas',
'defcuota'));
//$form->addField(new TextField('Nombre Usuario/Grupo:', 'nomusugru',
25,2,30));

$file_user = file ("/etc/passwd");

foreach ($file_user as $lin_user => $user)


{ $arr_user = explode (":",$user);

if ($arr_user[2]>=500 and $arr_user[2] <= 10000)


122

{
$mapeo_user[$arr_user[0]]= $arr_user[0];
}
}

$form->addField(new PopupField('Nombre de Usuario:', 'nomusugru', true,


$mapeo_user));

//$form->addField(new RadioButtonField('Usuario/Grupo:', 'usugrup',true,


$eleccion));

//$form->addField(new PopupField('Usuario/Grupo:', 'usugrup', false,


$eleccion,'[Usuario/Grupo]'));

$form->addField(new PopupField('Cuota de Gracia(MB) :', 'cuotagrac', false,


$datos));
$form->addField(new PopupField('Cuota de Absoluta(MB):', 'cuotaabso',
false, $datos2));
// $form->addField(new TextField('Cuota de Gracia:', 'cuotagrac', 25,1,20));
// $form->addField(new TextField('Cuota Absoluta', 'cuotaabso', 25,1,20));

$form->addField(new SubmitFieldGroup(array('submit' => 'Crear',


'cancel' => 'Cancel')));

if ($form->isSubmitted('submit'))
{
if($form->validate() and ($form->getValue('nomusugru', " ") ))
{

$cuota1=$form->getValue('cuotagrac');
$cuota2=$form->getValue('cuotaabso');

if ($cuota1 >=$cuota2)
{
echo "La cuota de gracia debe ser mayor a la absoluta";
}
else{

#echo $form->getValue('usugrup')."<br/>";
// $letra= $form->getValue('usugrup');
# echo $letra;

// $cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/changequotau
123

ser_cmd.sh ".$form->getValue('nomusugru')." ".$form->getValue('usugrup')." ".


$form->getValue('cuotagrac')." ".$form->getValue('cuotaabso');

$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/changequotau
ser_cmd.sh ".$form->getValue('nomusugru')." ".$form->getValue('cuotagrac')." ".
$form->getValue('cuotaabso');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
echo "<br/>".$tmp."<br/>";
//echo "entro al shell";
#echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('nomusugru',"");
//$form->setValue('usugrup',false);
$form->setValue('cuotagrac',"");
$form->setValue('cuotaabso',"");

}
else {
echo "no entro";
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
}$form->display();

}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
124

?>
</form>

</body>
</html>
Archivo: pw_definicion_cuotas_grupo.php
<html>
<head>
<title>Definicion de Cuotas de Grupo</title>

<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{
if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

// FUNCION PARA VALIDAR IP


125

function validar(ip)
{
partes=ip.split('.');
if (partes.length!=4)
{
alert("ip no valida");
return false;
}
for (i=0;i<4;i++)
{
num=partes[i];
if (num>255 || num<0 || num.length==0 || isNaN(num))
{
alert("ip no valida");
return false;
}
}
return true;
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
126

contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validarNumeroEntero(document.myform.cuotagrac.value) == false)
{
return false;
}
if (validarNumeroEntero(document.myform.cuotaabso.value) == false)
{
return false;
}
if (validatexto(document.myform.nomusugru.value) == false)
{
return false;
}
return true;
}
127

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
128

font-family: Verdana, Arial, Helvetica, sans-serif;


font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}
129

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
130

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

// $eleccion = array ('u' => 'Usuario', 'g' => 'Grupo');


$datos = array ('2048' => '2', '4096' => '4', '6144' => '6', '8192' => '8', '10240'
=> '10', '12288' => '12', '14336' => '14', '16384' => '16', '18432' => '18');
$datos2 = array ('2048' => '2', '4096' => '4', '6144' => '6', '8192' => '8', '10240'
=> '10', '12288' => '12', '14336' => '14', '16384' => '16', '18432' => '18', '20480' =>
'20');

$form = new FormBuilder();

$form->addField(new LabelFieldtitulo('Definicin de Cuotas Grupo',


'defcuota'));
$form->addField(new LabelFieldsubtitulo('Descripcin de las Cuotas',
'defcuota'));
//$form->addField(new TextField('Nombre Usuario/Grupo:', 'nomusugru',
25,2,30));

$file_group = file ("/etc/group");


131

foreach ($file_group as $lin_group => $group)


{ $arr_group = explode (":",$group);

if ($arr_group[2]>=500 and $arr_group[2] <= 10000)


{
$mapeo_group[$arr_group[0]]= $arr_group[0];
}
}

$form->addField(new PopupField('Nombre del Grupo:', 'nomusugru', true,


$mapeo_group));

//$form->addField(new RadioButtonField('Usuario/Grupo:', 'usugrup',true,


$eleccion));

//$form->addField(new PopupField('Usuario/Grupo:', 'usugrup', false,


$eleccion,'[Usuario/Grupo]'));

$form->addField(new PopupField('Cuota de Gracia(MB) :', 'cuotagrac', false,


$datos));
$form->addField(new PopupField('Cuota de Absoluta(MB):', 'cuotaabso',
false, $datos2));
// $form->addField(new TextField('Cuota de Gracia:', 'cuotagrac', 25,1,20));
// $form->addField(new TextField('Cuota Absoluta', 'cuotaabso', 25,1,20));

$form->addField(new SubmitFieldGroup(array('submit' => 'Crear',


'cancel' => 'Cancel')));

if ($form->isSubmitted('submit'))
{
if($form->validate() and ($form->getValue('nomusugru', " ") ))
{

$cuota1=$form->getValue('cuotagrac');
$cuota2=$form->getValue('cuotaabso');

if ($cuota1 >=$cuota2)
{
echo "La cuota de gracia debe ser mayor a la absoluta";
}
else{

#echo $form->getValue('usugrup')."<br/>";
132

// $letra= $form->getValue('usugrup');
# echo $letra;

// $cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/changequotau
ser_cmd.sh ".$form->getValue('nomusugru')." ".$form->getValue('usugrup')." ".
$form->getValue('cuotagrac')." ".$form->getValue('cuotaabso');

$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/changequotagr
oup_cmd.sh ".$form->getValue('nomusugru')." ".$form->getValue('cuotagrac')." ".
$form->getValue('cuotaabso');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
echo "<br/>".$tmp."<br/>";
//echo "entro al shell";
#echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('nomusugru',"");
//$form->setValue('usugrup',false);
$form->setValue('cuotagrac',"");
$form->setValue('cuotaabso',"");

}
else {
echo "no entro";
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
}$form->display();

}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
133

header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</form>

</body>
</html>
Archivo: pw_control_usuario.php
<html>
<head>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890 \!|@#$~%&/{/
([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
134

}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.user.value) == false)
{
return false;
}
if (validatexto(document.myform.accion.value) == false)
{
return false;
}
return true;
}

</script>

<title>Control acceso de los Usuarios</title>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
135

font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
136

font-family: Verdana, Arial, Helvetica, sans-serif;


font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}
137

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}

.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}

input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
138

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
# require_once('FormBuilder.php');

//$ac = array ('RELAY' => 'RELAY', 'OK' => 'OK', 'REJECT' => 'REJECT');
$ac = array ('RELAY' => 'ACEPTA', 'REJECT' => 'DENIEGA');
$op = array ('CU' => 'Cuenta de Usuario', 'IPR' => 'Ip/Red', 'DO' => 'Nombre
Dominio');

$form = new FormBuilder();


$form->addField(new LabelFieldtitulo('Control de Acceso de los Usuarios',
'controlacces'));
$form->addField(new LabelFieldsubtitulo('Detalle de las Opciones',
'controlacces'));
$form->addField(new LabelFieldmensaje('Usted podra darle o quitarle acceso
al envio o recepcion de correo desde una cuenta de correo', 'controlacces'));

$file_user = file ("/etc/passwd");

foreach ($file_user as $lin_user => $user)


{ $arr_user = explode (":",$user);

if ($arr_user[2]>=500 and $arr_user[2] <= 10000)


{
$mapeo_user[$arr_user[0]]= $arr_user[0];
}
}
139

$form->addField(new PopupField('Usuarios:', 'user', true, $mapeo_user));

//$form->addField(new RadioButtonField('Usuario/Grupo:', 'usugrup',false,


$eleccion));
//$form->addField(new PopupField('Opcin: ', 'opcion', true, $op));
$form->addField(new PopupField('Accin: ', 'accion', true, $ac));
$form->addField(new LabelFieldmensaje('El ACEPTA Permitira Enviar y
Recibir correos internos y externos del dominio actual', 'msn2'));
//$form->addField(new LabelFieldmensaje('El OK Permitira Enviar y Recibir
SOLO correos internos', 'msn3'));
$form->addField(new LabelFieldmensaje('El DENIEGA no me permitira el
Envio y Recepcion de correos internos y externos', 'msn4'));

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


'cancel' => 'Cancel')));

if ($form->isSubmitted('save'))
{
if ($form->validate())
#if(($form->getValue('nomusugru') == true) and ($form-
>getValue('usugrup') == true)and ($form->getValue('cuotagrac') == true)and ($form-
>getValue('cuotaabso') == true))
{
#echo $form->getValue('usugrup')."<br/>";
//$letra= $form->getValue('opcion');
#echo $letra;

$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/controlaccusu
ario_cmd.sh ".$form->getValue('user')." ".$form->getValue('accion');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
echo "<br/>".$tmp."<br/>";
# echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('user',"");
$form->setValue('accion',"");
140

}
else
{
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}

$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }

}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_control_correo.php
<html>
<head>

<script>
// FUNCION PARA VALIDAR IP
function validaip(ip)
{
partes=ip.split('.');
if (partes.length!=4)
{
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
for (i=0;i<4;i++)
{
num=partes[i];
141

if (num>255 || num<0 || num.length==0 || isNaN(num))


{
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
}
return true;
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,.}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}
142

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vaciovacio(P)
{
if (P == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function vaciotexto(G)
{
if( vaciovacio(G) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vaciodominio(p)
{
if (p == "")
143

{
alert("ERROR: No puede dejar este campo vacio")
return false
}

partes2=p.split('.');
if ((partes2.length!=2) && (partes2.length!=3))
{
alert("ERROR: El nombre del dominio esta erroneo");
alert("Debe de ingresarlo de la sgte manera, 'dominio.com' o
'dominio.com.ec");
return false;
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < p.length; i++)
{
if ( p.charAt(i) != "" )
{
ubicacion = p.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validadominio(g)
144

{
if( vaciodominio(g) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (vaciotexto(document.myform.opcion.value) == false)
{
return false;
}

if (vaciotexto(document.myform.accion.value) == false)
{
return false;
}

if ((document.myform.opcion.value)== "DO")
{
//alert("Dominio ")
if (validadominio(document.myform.descrip.value) == false)
{
return false;
}
}

if ((document.myform.opcion.value) == "IPR")
{
//alert("Ip red")
if (validaip(document.myform.descrip.value) == false)
{
return false;
}
}
return true;
}
145

</script>

<title>Control de Acceso de Correo</title>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}
146

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
147

font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
148

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
# require_once('FormBuilder.php');

//$ac = array ('RELAY' => 'RELAY', 'OK' => 'OK', 'REJECT' => 'REJECT');
$ac = array ('RELAY' => 'ACEPTA', 'REJECT' => 'DENIEGA');
$op = array ('IPR' => 'Ip/Red', 'DO' => 'Nombre Dominio');

$form = new FormBuilder();


$form->addField(new LabelFieldtitulo('Control de Acceso de Correo',
'controlacces'));
$form->addField(new LabelFieldsubtitulo('Detalle de las Opciones',
'controlacces'));
$form->addField(new LabelFieldmensaje('Usted podra darle o quitarle acceso
al envio o recepcion de correo ya sea de una ip o de una red', 'controlacces'));

$form->addField(new TextField('Descripcin: ', 'descrip', 25,2,30));


$form->addField(new HiddenField('Campo: ', 'campo'));
//$form->addField(new RadioButtonField('Usuario/Grupo:', 'usugrup',false,
$eleccion));
149

$form->addField(new PopupField('Opcin: ', 'opcion', true, $op));


$form->addField(new PopupField('Accin: ', 'accion', true, $ac));
$form->addField(new LabelFieldmensaje('El ACEPTA Permitira Enviar y
Recibir correos internos y externos del dominio actual', 'msn2'));
//$form->addField(new LabelFieldmensaje('El OK Permitira Enviar y Recibir
SOLO correos internos', 'msn3'));
$form->addField(new LabelFieldmensaje('El DENIEGA no me permitira el
Envio y Recepcion de correos internos y externos', 'msn4'));

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


'cancel' => 'Cancel')));

if ($form->isSubmitted('save'))
{
if ($form->validate())
#if(($form->getValue('nomusugru') == true) and ($form-
>getValue('usugrup') == true)and ($form->getValue('cuotagrac') == true)and ($form-
>getValue('cuotaabso') == true))
{
#echo $form->getValue('usugrup')."<br/>";
$letra= $form->getValue('opcion');
#echo $letra;

$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_cuenta/scripts/controlaccess_
cmd.sh ".$form->getValue('descrip')." ".$form->getValue('accion');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
echo "<br/>".$tmp."<br/>";
# echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('descrip',"");
$form->setValue('accion',"");
$form->setValue('opcion',"");

}
else
150

{
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}

$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }

}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</body>
</html>
Seccin administracin usuarios.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/ en el cual se
encuentran los siguientes archivos

Archivo: pw_crear_usuario.php
<html>
<head>
<title>Creacion de Usuarios</title>

<script>

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}
151

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena, caja de texto del
nombre, apellido paterno y materno
152

function vacio2(q)
{
if (q == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890 \!|@#$~%&/{/
([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < q.length; i++)
{
if ( q.charAt(i) != "" )
{
ubicacion = q.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto2(H)
{
if( vacio2(H) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
153

}
}

//busca caracteres que no sean espacio en blanco en una cadena, valida password
function vaciopass(p)
{
if (p == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = ".\!|#$~%&/{/([)]=}?\'~+]*`[^'_-
;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < p.length; i++)
{
if ( p.charAt(i) != "" )
{
ubicacion = p.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validapass(G)
{
if( vaciopass(G) == false )
{
154

//alert("Introduzca un cadena de texto correctamente.")


return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validapass(document.myform.password.value) == false)
{
return false;
}
if (validapass(document.myform.password2.value) == false)
{
return false;
}
if (validatexto(document.myform.usuario.value) == false)
{
return false;
}

if (validatexto2(document.myform.nombre.value) == false)
{
return false;
}

if (validatexto2(document.myform.apellido1.value) == false)
{
return false;
}

if (validatexto2(document.myform.apellido2.value) == false)
{
return false;
}

return true;
}

</script>
155

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
156

font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}
157

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}

.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}

input.big {
width: 100px;
}
158

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder();

$form->addField(new LabelFieldtitulo('Creacin de Usuarios', 'creausua'));


$form->addField(new LabelFieldsubtitulo('Detalle del Usuario',
'infoausua2'));
$form->addField(new TextField('Username:', 'usuario', 25,4,30,'','promo'));
$form->addField(new PasswordField('Password:', 'password', 25,6,20));
$form->addField(new PasswordField('Repita su Password:', 'password2',
25,6,20));
$form->addField(new LabelFieldmensaje('Recuerde que el username no debe
contener mayusculas y ni caracteres especiales', 'mensaje'));
$form->addField(new LabelFieldmensaje('El password debe tener minimo
seis caracteres y diferente al username', 'mensaje2'));
$form->addField(new LabelFieldsubtitulo('Informacin del Usuario',
'infoausua'));
$form->addField(new TextField('Nombre del Usuario:', 'nombre', 25,2,30));
$form->addField(new TextField('Apellido Paterno:', 'apellido1', 25,2,20));
$form->addField(new TextField('Apellido Materno:', 'apellido2', 25,2,20));
$form->addField(new LabelFieldsubtitulo('Asignacin de
rea/Departamento', 'asgdept'));

$file_group = file ( "/etc/group");


159

foreach ($file_group as $linea => $contenido)


{ $arr_grupo = explode (":",$contenido);

if ( $arr_grupo[2] >= 500 and $arr_grupo[2] <= 10000 )


{ $grupo[$arr_grupo[2]] = $arr_grupo[0];

$form->addField(new PopupField('Departamentos:', 'departamento',true,


$grupo));
}
}

$form->addField(new LabelFieldsubtitulo('Opciones de Usuario', 'opcusua'));


$form->addField(new DateField('Fecha que expira cuenta:', 'fecha', true, false,
array (-1,15)));

$form->addField(new SubmitFieldGroup(array('submit' => 'Crear',


'cancel' => 'Cancel')));
if ($form->isSubmitted('submit'))
{
if ($form->validate())
{
$pass = $form->getValue('password');
$pass2 = $form->getValue('password2');
$usuario_a_cre = $form->getValue('usuario');

$file_passwd = file ( "/etc/passwd");


$band=0;
foreach ($file_passwd as $linea => $contenido)
{
$arr_usuario = explode (":",$contenido);
$user = $arr_usuario[0];

if ( $arr_usuario[2] >= 500 and $usuario_a_cre == $user


)
{
$band=$band+1;
}
}
if ($band!=0)
{
echo "El usuario ya existe por favor escriba otro
username";
$form->setValue('usuario','');
160

$form->setValue('password','');
$form->setValue('password2','');
$form->display();
}
else
{
if ($usuario_a_cre==$pass or $pass!=$pass2 or
$pass=="abcdef" or $pass=="012345" or $pass=="0123456" or $pass=="123456" or
$pass=="01234567" or $pass=="012345678" or $pass=="0123456789" or
$pass=="000000" or $pass=="0000000" or $pass=="00000000" or
$pass=="000000000" or $pass=="0000000000" or $pass=="012abc" or
$pass=="abc012" or $pass=="333333" or $pass=="3333333" or $pass=="33333333"
or $pass=="333333333" or $pass=="3333333333" or $pass=="222222" or
$pass=="2222222" or $pass=="22222222" or $pass=="222222222" or
$pass=="2222222222" or $pass=="111111" or $pass=="1111111" or
$pass=="11111111" or $pass=="111111111" or $pass=="1111111111" or
$pass=="11111111" or $pass=="abc123456" or $pass=="abc123456" or
$pass=="abc123" or $pass=="abcdef" or $pass=="abcdefg")
{
echo "Corrija su Password por favor"."<br/>";
$form->setValue('password','');
$form->setValue('password2','');
}
else
{

$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/useradd_cm
d.sh ".$form->getValue('usuario')." ".$form->getValue('departamento')." ".$form-
>getValue('fecha')." ".$form->getValue('nombre')." ".$form->getValue('apellido1')." ".
$form->getValue('apellido2');

# echo $cmd;
$tmp = exec($cmd,$output,$status);
# echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/chpasswd.sh
".$form->getValue('usuario')." ".$form->getValue('password');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
161

#echo "<br/>".$tmp."<br/>";

echo "Usuario Creado


Exitosamente<br/>";
$form->setValue('usuario','');
$form->setValue('password','');
$form->setValue('password2','');
$form->setValue('nombre','');
$form->setValue('apellido1','');
$form->setValue('apellido2','');
$form->setValue('departamento','');
$form->setValue('fecha','');
}else
{
echo "Usuario no Creado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}

}
$form->display();
}
}else
{
echo "Ingrese los campos faltantes<br/>";
$form->display();
}
}else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_crear_grupo.php
<html>
<head>
<title>Creacion de Departamentos</title>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
162

function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
163

//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.departamento.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
164

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}
165

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}
166

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();


$form->addField(new LabelFieldtitulo('Creacin de rea/Departamento',
'asgdept'));
$form->addField(new LabelFieldsubtitulo('Datos del Departameto',
'datdept'));
167

$form->addField(new TextField('Departamento:', 'departamento', 25,4,30));


$form->addField(new LabelFieldmensaje('Recuerde que el nombre
departamento no debe contener mayusculas y ni caracteres especiales', 'mensaje'));

$form->addField(new SubmitFieldGroup(array('submit' => 'Crear',


'cancel' => 'Cancel')));
if ($form->isSubmitted('submit'))
{
if($form->validate())
{

$usuario_a_cre = $form->getValue('departamento');

$file_group = file ( "/etc/group");


$band=0;
foreach ($file_group as $linea => $contenido)
{
$arr_grupo = explode (":",$contenido);
$user = $arr_grupo[0];

if ( $arr_grupo[2] >= 500 and $usuario_a_cre == $user )


{
$band=$band+1;
}
}
if ($band!=0)
{
echo "El grupo ya existe por favor escriba otro";
$form->setValue('departamento','');
$form->display();
}
else
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/groupadd_c
md.sh ".$form->getValue('departamento');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
168

echo "Departamento Creado


Exitosamente<br/>";
$form->setValue('departamento',' ');
}
else
{
echo "Usuario no Creado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();
}
}else
{ echo "Ingrese los campos faltantes<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}

?>
</body>
</html>
Archivo: pw_crear_usua_lista.php
<html>
<head>
<title>Creacin de Usuarios por Lista</title>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=""
169

var ubicacion
var enter = ""
var caracteres = "!|@#$~
%&{([)]=}?'~+]*`[^';,}" + String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.exa.value) == false)
{
return false;
170

}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
171

line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
172

line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
173

background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder5();

$form->addField(new LabelFieldtitulo('Creacin de Usuarios desde Archivo',


'creausualista'));
$form->addField(new LabelFieldmensaje('Aqu podrs crear los usuarios de
inmediato mediante un archivo en donde se encontrara una serie de usuarios que
deseas crear.', 'mensaje1'));

// $form->addField(new UploadField('Ruta del Archivo a


ejecutar:','exa',true,28,150,'/var/www/html/sw_syscomsa/webpages/administracion_u
suarios'));

$form->addField(new TextField('Ruta del Archivo a


ejecutar:','exa',35,2,15000));
174

$form->addField(new LabelFieldmensaje('El formato de las lineas del archivo


para la creacion de usuarios por listas deben estar especificados de la sgte manera: ',
'mensaje3'));
$form->addField(new
LabelFieldmensaje2('Username:Password:Nombre:ApellidoPaterno:ApellidoMaterno
:Departamento:FechaExpiracion(Ao-Mes-Dia):', 'mensaje4'));

$form->addField(new SubmitFieldGroup(array('crear' => 'Enviar',


'cancel' => 'Cancel')));

if ($form->isSubmitted('crear'))
{

$form->display();
}else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</form>
</body>
</html>

Archivo: pw_mod_usuario.php
<html>
<head>
<title>Busqueda de Usuarios</title>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


175

var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.user.value) == false)
176

{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
177

font-family: Verdana, Arial, Helvetica, sans-serif;


font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
178

font-family: Verdana, Arial, Helvetica, sans-serif;


font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
179

font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder2();

$form->addField(new LabelFieldtitulo('Busqueda de Usuario', 'modusua'));


$form->addField(new LabelFieldmensaje('Seleccione el nombre del usuario a
Buscar', 'msn1'));

$file_user = file ("/etc/passwd");

foreach ($file_user as $lin_user => $user)


{ $arr_user = explode (":",$user);

if ($arr_user[2]>=500 and $arr_user[2] <= 10000)


{
$mapeo_user[$arr_user[0]]= $arr_user[0];
180

}
}

$form->addField(new PopupField('Usuarios:', 'user', true, $mapeo_user));


$form->addField(new SubmitField('search', 'Buscar', 25,2,30));

if ($form->isSubmitted('search'))
{
$form->display();
}else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_modif_usuario.php
<html>
<head>
<title>Modificacion de Usuarios</title>

<script>

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
181

ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena, caja de texto del
nombre, apellido paterno y materno
function vacio2(q)
{
if (q == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890 \!|@#$~%&/{/
([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter + caract_extra
182

var contador = 0
for (var i=0; i < q.length; i++)
{
if ( q.charAt(i) != "" )
{
ubicacion = q.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto2(H)
{
if( vacio2(H) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena, valida password
function vaciopass(p)
{
if (p == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}
183

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "\!|@#$~%&/{/
([)]=}?\'~+]*`[^'_-;,} " + String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < p.length; i++)
{
if ( p.charAt(i) != "" )
{
ubicacion = p.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validapass(G)
{
if( vaciopass(G) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validapass(document.myform.passw.value) == false)
{
184

return false;
}
if (validapass(document.myform.passw2.value) == false)
{
return false;
}

if (validatexto(document.myform.userna.value) == false)
{
return false;
}

if (validatexto2(document.myform.name.value) == false)
{
return false;
}

if (validatexto2(document.myform.apel1.value) == false)
{
return false;
}

if (validatexto2(document.myform.apel2.value) == false)
{
return false;
}

return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}
185

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
186

font-family: Arial, Helvetica, sans-serif;


font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}
187

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}
188

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder();

$usuario_a_mod = $_GET['user'];

$form = new FormBuilder();

$form->addField(new LabelFieldtitulo('Modificacin del Usuario: '.'"'.


$usuario_a_mod.'"', 'modusua'));
$form->addField(new LabelFieldsubtitulo('Detalle del Usuario', 'detusua'));
$form->addField(new HiddenField('userac','Username Actual'));
$form->addField(new TextField('UserName Nuevo:', 'userna', 25,4,30));
$form->addField(new PasswordField('Password:','passw',25,6,20 ));
$form->addField(new PasswordField('Repita su
Password:','passw2',25,6,20 ));
$form->addField(new LabelFieldmensaje('Recuerde que el username no debe
contener mayusculas y ni caracteres especiales', 'mensaje'));
$form->addField(new LabelFieldmensaje('El password debe tener minimo
seis caracteres y diferente al username', 'mensaje2'));
$form->addField(new LabelFieldsubtitulo('Informacion del Usuario',
'infoausua'));
$form->addField(new TextField('Nombre del Usuario:', 'name', 25,2,30));
$form->addField(new TextField('Apellido Paterno:', 'apel1', 25,5,20));
$form->addField(new TextField('Apellido Materno:', 'apel2', 25,5,20));
$form->addField(new LabelFieldsubtitulo('Asignacin de
rea/Departamento','asgdept'));

$file_group = file ("/etc/group");

foreach ($file_group as $lin_group => $group)


{ $arr_grupo = explode (":",$group);

if ($arr_grupo[2]>=500 and $arr_grupo[2] <= 10000)


189

{
$mapeo_grupo[$arr_grupo[2]]= $arr_grupo[0];
}
}

foreach ($mapeo_grupo as $indice => $contenido)


{
#echo "Num grupo:".$indice." - Nombre grupo:".$contenido."<br/>";
}

$file_passwd = file ( "/etc/passwd");

foreach ($file_passwd as $linea => $contenido)


{ $arr_usuario = explode (":",$contenido);
$usuario = $arr_usuario[0];

if ($arr_usuario[2] >= 500 and $arr_usuario[2] <= 1000 and $usuario_a_mod


== $usuario )
{
$nombre = $arr_usuario[4];
$arr_nombre = explode (" ",$nombre);
$primer_nombre = $arr_nombre[0];
$apellido_mat = $arr_nombre[2];
$apellido_pat = $arr_nombre[1];
$departamento = $arr_usuario[3];
}
}

$form->addField(new PopupField('Departamentos:', 'departamentos',true,


$mapeo_grupo));
$form->addField(new LabelFieldsubtitulo('Opciones de Usuario', 'opcusua'));
$form->addField(new DateField('Fecha que expira cuenta:', 'date', true, false,
array (-1,15)));

$form->setValue('userac',$_POST['user']);
$form->setValue('name',$primer_nombre);
$form->setValue('apel1',$apellido_pat);
$form->setValue('apel2',$apellido_mat);
$form->setValue('departamentos',$departamento);
$form->setValue('date','');

$form->addField(new SubmitFieldGroup(array('change' => 'Modificar',


'cancel' => 'Cancelar')));
190

if ($form->isSubmitted('change'))
{
if ($form->validate())
{
$pass = $form->getValue('passw');
$pass2 = $form->getValue('passw2');
$usuario_a_cre = $form->getValue('userna');

$file_passwd = file ( "/etc/passwd");


$band=0;
foreach ($file_passwd as $linea => $contenido)
{
$arr_usuario = explode (":",$contenido);
$user = $arr_usuario[0];

if ( $arr_usuario[2] >= 500 and $usuario_a_cre == $user and


$usuario_a_cre!= $usuario_a_mod )
{
$band=$band+1;
}
}
if ($band!=0)
{
echo "El usuario ya existe por favor escriba otro username";
$form->setValue('userna','');
$form->setValue('passw','');
$form->setValue('passw2','');
$form->display();
}
else
{
if ($usuario_a_cre==$pass or $pass!=$pass2 or
$pass=="abcdef" or $pass=="012345" or $pass=="0123456" or $pass=="01234567"
or $pass=="012345678" or $pass=="0123456789" or $pass=="000000" or
$pass=="0000000" or $pass=="00000000" or $pass=="000000000" or
$pass=="0000000000" or $pass=="012abc" or $pass=="abc012" or
$pass=="abc123456" or $pass=="abc123" or $pass=="abcdef" or $pass=="abcdefg")
{
echo "Corrija su Password por favor"."<br/>";
$form->setValue('passw','');
$form->setValue('passw2','');
$form->display();
}
191

else
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/changeuser_
cmd.sh ".$_GET['user']." ".$form->getValue('userna')." ".$form->getValue('name')."
".$form->getValue('apel1')." ".$form->getValue('apel2')." ".$form-
>getValue('departamentos')." ".$form->getValue('date');

# echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo $tmp;

if ($status == 0)
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/chpasswd.sh
".$form->getValue('userna')." ".$form->getValue('passw');
#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

#header ("Location: ./pw_mod_usuario.php");


echo "Usuario Modificado Exitosamente<br/>";
}else
{
echo "Usuario no Modificado<br/>";
foreach ($output as $line)
{
echo $line."<br/>";}
}
}
#$form->display();
}
}else
{ echo "Ingrese los campos faltantes<br/>";
$form->display();
}
}else if ($form->isSubmitted('cancel'))
{
header ("Location: ./pw_mod_usuario.php");
}
else
{
$form->display();
192

?>
</body>
</html>
Archivo: pw_mod_grupo.php
<html>
<head>
<title>Busqueda de Departamentos</title>
<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
193

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.group.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
194

color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
195

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
196

font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
197

</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder3();

$form->addField(new LabelFieldtitulo('Busqueda de Grupo', 'modgrupo'));


$form->addField(new LabelFieldmensaje('Seleccione el nombre del grupo a
buscar', 'modusua1'));

$file_group = file ("/etc/group");

foreach ($file_group as $lin_group => $group)


{ $arr_group = explode (":",$group);

if ($arr_group[2]>=500 and $arr_group[2] <= 10000)


{
$mapeo_group[$arr_group[0]]= $arr_group[0];
}
}

$form->addField(new PopupField('Nombre del Grupo:', 'group', true,


$mapeo_group));

$form->addField(new SubmitField('search', 'Buscar', 25,2,30));

if ($form->isSubmitted('search'))
{
$form->display();
}else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_modif_grupo.php
<html>
<head>
198

<title>Creacion de Departamentos</title>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
199

//alert("Introduzca un cadena de texto correctamente.")


return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.gruponue.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}
200

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
201

background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}<html>
<head>
<title>Creacion de Departamentos</title>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
202

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


203

function validarFormulario()
{
if (validatexto(document.myform.gruponue.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
204

background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
205

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
206

}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();

$group_a_mod = $_GET['group'];

$form->addField(new LabelFieldtitulo('Modificacin del Grupo: '.'"'.


$group_a_mod.'"', 'modgrupo'));
$form->addField(new LabelFieldmensaje('Escriba el nombre del grupo a
cambiar', 'modusua1'));
$form->addField(new HiddenField('grupoac','Nombre Grupo-Actual:'));
$form->addField(new TextField('Nombre del Nuevo Grupo:', 'gruponue',
15,4,30));
207

$form->setValue('grupoac',$_GET['group']);

$form->addField(new SubmitFieldGroup(array('change' => 'Modificar',


'cancel' => 'Cancelar')));

if ($form->isSubmitted('change'))
{
if ($form->validate())
{

$usuario_a_cre = $form->getValue('gruponue');

$file_group = file ( "/etc/group");


$band=0;
foreach ($file_group as $linea => $contenido)
{
$arr_grupo = explode (":",$contenido);
$user = $arr_grupo[0];

if ( $arr_grupo[2] >= 500 and $usuario_a_cre == $user


and $usuario_a_cre!= $grupo_a_mod )
{
$band=$band+1;
}
}
if ($band!=0)
{
echo "El grupo ya existe por favor escriba otro";
$form->setValue('gruponue','');
$form->display();
}
else
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/changegroup
_cmd.sh ".$_GET['group']." ".$form->getValue('gruponue');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
# echo $tmp;

if ($status == 0)
{
208

echo "Grupo Modificado Exitosamente<br/>";


# header ("Location:
./pw_mod_grupo.php");
}else
{
echo "Usuario no Modificado<br/>";
foreach ($output as $line)
{
echo $line."<br/>";
}
}

# $form->display();
}
}else
{

echo "Ingrese los campos faltantes<br/>";

$form->display();

}
}else if ($form->isSubmitted('cancel'))
{
header ("Location: ./pw_mod_grupo.php");
}
else
{
$form->display();
}

?>
</body>
</html>

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
209

font-family: Arial, Helvetica, sans-serif;


font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
210

require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();

$group_a_mod = $_GET['group'];

$form->addField(new LabelFieldtitulo('Modificacin del Grupo: '.'"'.


$group_a_mod.'"', 'modgrupo'));
$form->addField(new LabelFieldmensaje('Escriba el nombre del grupo a
cambiar', 'modusua1'));
$form->addField(new HiddenField('grupoac','Nombre Grupo-Actual:'));
$form->addField(new TextField('Nombre del Nuevo Grupo:', 'gruponue',
15,4,30));

$form->setValue('grupoac',$_GET['group']);

$form->addField(new SubmitFieldGroup(array('change' => 'Modificar',


'cancel' => 'Cancelar')));

if ($form->isSubmitted('change'))
{
if ($form->validate())
{

$usuario_a_cre = $form->getValue('gruponue');

$file_group = file ( "/etc/group");


$band=0;
foreach ($file_group as $linea => $contenido)
{
$arr_grupo = explode (":",$contenido);
$user = $arr_grupo[0];

if ( $arr_grupo[2] >= 500 and $usuario_a_cre == $user


and $usuario_a_cre!= $grupo_a_mod )
{
$band=$band+1;
}
}
if ($band!=0)
{
echo "El grupo ya existe por favor escriba otro";
$form->setValue('gruponue','');
$form->display();
211

}
else
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/changegroup
_cmd.sh ".$_GET['group']." ".$form->getValue('gruponue');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
# echo $tmp;

if ($status == 0)
{
echo "Grupo Modificado Exitosamente<br/>";
# header ("Location:
./pw_mod_grupo.php");
}else
{
echo "Usuario no Modificado<br/>";
foreach ($output as $line)
{
echo $line."<br/>";
}
}

# $form->display();
}
}else
{

echo "Ingrese los campos faltantes<br/>";

$form->display();

}
}else if ($form->isSubmitted('cancel'))
{
header ("Location: ./pw_mod_grupo.php");
}
else
{
$form->display();
}
212

?>
</body>
</html>
Archivo: pw_mod_contrase.php
<html>
<head>
<title>Busqueda de Usuarios para cambio de Contrasea</title>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}
213

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.user.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
214

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14p<html>
<head>
<title>Busqueda de Usuarios para cambio de Contrasea</title>
215

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
216

} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.user.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
217

background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
218

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
219

background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder4();
220

$form->addField(new LabelFieldtitulo('Modificacin de Contraseas',


'modusua'));

$form->addField(new LabelFieldmensaje('Seleccione el nombre del usuario a


buscar', 'modusua1'));
$file_user = file ("/etc/passwd");

foreach ($file_user as $lin_user => $user)


{ $arr_user = explode (":",$user);

if ($arr_user[2]>=500 and $arr_user[2] <= 10000)


{
$mapeo_user[$arr_user[0]]= $arr_user[0];
}
}

$form->addField(new PopupField('Usuarios:', 'user', true, $mapeo_user));


$form->addField(new SubmitField('search', 'Buscar', 25,2,30));

if ($form->isSubmitted('search'))
{

$form->display();
}else
{
$form->display();
}
?>
</form>
</body>
</html>x;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}
221

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
222

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder4();

$form->addField(new LabelFieldtitulo('Modificacin de Contraseas',


'modusua'));
223

$form->addField(new LabelFieldmensaje('Seleccione el nombre del usuario a


buscar', 'modusua1'));
$file_user = file ("/etc/passwd");

foreach ($file_user as $lin_user => $user)


{ $arr_user = explode (":",$user);

if ($arr_user[2]>=500 and $arr_user[2] <= 10000)


{
$mapeo_user[$arr_user[0]]= $arr_user[0];
}
}

$form->addField(new PopupField('Usuarios:', 'user', true, $mapeo_user));


$form->addField(new SubmitField('search', 'Buscar', 25,2,30));

if ($form->isSubmitted('search'))
{

$form->display();
}else
{
$form->display();
}
?>
</form>
</body>
</html>
Archivo: pw_modif_contrase.php
<html>
<head>
<title>Modificacion de Contrasea</title>

<script>
//busca caracteres que no sean espacio en blanco en una cadena
function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
224

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "\!|#$~%&/{/
([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
225

if (validatexto(document.myform.passw.value) == false)
{
return false;
}
if (validatexto(document.myform.passw2.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
226

font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 12px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
227

color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
228

background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder();

$usuario_a_mod = $_GET['user'];

$form = new FormBuilder();

$form->addField(new LabelFieldtitulo('Modificacin de Contraseas: '.'"'.


$usuario_a_mod.'"', 'modusua'));
229

$form->addField(new LabelFieldmensaje('Escriba la Contrasea a modificar',


'modusua1'));
$form->addField(new HiddenField('userac','Username Actual'));
$form->addField(new PasswordField('Password:','passw',25,6,20 ));
$form->addField(new PasswordField('Repita su Password:','passw2',25,6,20 ));
$form->addField(new LabelFieldmensaje('Recuerde que el username no debe
contener mayusculas y ni caracteres especiales', 'mensaje'));
$form->addField(new LabelFieldmensaje('El password debe tener minimo
seis caracteres y diferente al username', 'mensaje2'));

$form->setValue('userac',$_GET['user']);

$form->addField(new SubmitFieldGroup(array('change' => 'Modificar',


'cancel' => 'Cancelar')));

if ($form->isSubmitted('change'))
{
if ($form->validate())
{
$pass = $form->getValue('passw');
$pass2 = $form->getValue('passw2');

if ($usuario_a_mod==$pass or $pass!=$pass2 or
$pass=="abcdef" or $pass=="012345" or $pass=="0123456" or $pass=="01234567"
or $pass=="012345678" or $pass=="0123456789" or $pass=="000000" or
$pass=="0000000" or $pass=="00000000" or $pass=="000000000" or
$pass=="0000000000" or $pass=="012abc" or $pass=="abc012" or
$pass=="abc123456" or $pass=="abc123" or $pass=="abcdef" or $pass=="abcdefg")
{
echo "Corrija su Password por favor"."<br/>";
$form->setValue('passw','');
$form->setValue('passw2','');
$form->display();
}
else
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/administracion_usuarios/scripts/chpasswd.sh
".$_GET['user']." ".$form->getValue('passw');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo $tmp;
230

if ($status == 0)
{
echo "Contrasea Modificada
Exitosamente<br/>";
}else
{
echo "Contrasea no Modificado<br/>";
foreach ($output as $line){
echo $line."<br/>";}
}
}
#$form->display();
}else
{ echo "Ingrese los campos faltantes<br/>";
$form->display();
}
}else if ($form->isSubmitted('cancel'))
{
header ("Location: ./pw_mod_contrase.php");
}
else
{
$form->display();
}

?>
</body>
</html>
Seccin administracin seguridades.
Esta seccin se encuentra ubicada en la ruta:
/var/www/html/sw_syscomsa/webpages/seguridades/ en el cual se encuentran los
siguientes archivos.

Archivo: pw_copia_seguridadsimple.php
<html>
<head>
<title>Copias de Seguridades Horario Simple</title>

<script>

//busca caracteres que no sean espacio en blanco en una cadena


function vaciovacio(P)
{
if (P == "")
231

{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function vaciotexto(G)
{
if( vaciovacio(G) == false )
{
// alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (vaciotexto(document.myform.user.value) == false)
{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}
232

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}
233

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
234

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}
235

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder();

$form->addField(new LabelFieldtitulo('Creacin de Copias de Seguridad',


'copias'));

$tipohor = array ('SIM'=>'Simples', 'MUL'=> 'Multiples');

$file_user = file ("/etc/passwd");

foreach ($file_user as $lin_user => $user)


{
$arr_user = explode (":",$user);
if ($arr_user[2]>=500 and $arr_user[2] <= 10000)
{
$mapeo_user[$arr_user[0]]= $arr_user[0];
}
}
$mapeo_user[$arr_user[1]] = "ALL USER";

$form->addField(new PopupField('Nombre Usuario:', 'user', true,


$mapeo_user));

$form->addField(new LabelFieldsubtitulo('Planificaciones de las Copias de


Seguridad', 'plancop'));

$form->addField(new LabelFieldsubtitulo('Ingreso de Horario Simple',


'horasimp'));
$form->addField(new TimeField2('Hora / Minuto:', 'time', true));
$form->addField(new DateField2('Dia / Mes / Da-Semana:', 'date', true));
$form->addField(new LabelFieldmensaje('El asterisco (*) sirve para definir
todos los valores', 'men1'));

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


236

'cancel' => 'Cancel')));


if ($form->isSubmitted('save'))
{
if ($form->validate())
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/seguridades/scripts/copiaseguridadsimple_c
md.sh ".$form->getValue('user')." ".$form->getValue('time')." ".$form-
>getValue('date');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
# echo "<br/>".$tmp."<br/>";
echo "Definicion de copias realizado
Exitosamente<br/>";

$form->setValue('user',"");
$form->setValue('time',"");
$form->setValue('date',"");
}
else
{
echo "Definicion de copias NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display();
}
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
237

?>
</body>
</html>
Archivo: pw_copia_seguridadmultiple.php
<html>
<head>
<title>Copias de Seguridades Horario Multiple</title>

<script>

//busca caracteres que no sean espacio en blanco en una cadena


function vaciocampos(m)
{
if (m == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

partes2=m.split('-');
//alert ("hola -");
if (partes2.length>2)
{alert ("hola -");
alert("ERROR: Esta incorrecto el valor ingresado");
alert("Puede ingresarlo por rangos, de esta forma: '1-3'" );
return false;
}

for (i=0;i<2;i++)
{
num=partes2[i];
if (num>=60 || num<0 || num.length==0 || isNaN(num) ||
num.length>=3|| num.length<=1 || partes2[0]>=partes2[1])
{
alert("ERROR: El rango de numero esta mal ingresado");
return false;
}
}
var caract_extra=" "
var ubicacion
var enter = " "
238

var caracteres =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_;" + String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < m.length; i++)
{
if ( m.charAt(i) != "" )
{
ubicacion = m.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validacampos(w)
{
if( vaciocampos(w) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
239

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres = "123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_;}-," + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


240

function vaciovacio(P)
{
if (P == "")
{
alert("ERROR: No puede dejar el o los campos vacios")
return false
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function vaciotexto(G)
{
if( vaciovacio(G) == false )
{
// alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validatexto(document.myform.user.value) == false)
{
return false;
}

if (validacampos(document.myform.minuto.value) == false)
{
return false;
}
if (validacampos(document.myform.horas.value) == false)
{
return false;
}
if (validacampos(document.myform.diames.value) == false)
{
return false;
}
241

if (validacampos(document.myform.mes.value) == false)
{
return false;
}
if (validacampos(document.myform.diasema.value) == false)
{
return false;
}
return true;
}
</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
242

font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
243

color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
}

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
244

background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder();

$form->addField(new LabelFieldtitulo('Creacin de Copias de Seguridad',


'copias'));

$file_user = file ("/etc/passwd");

foreach ($file_user as $lin_user => $user)


{
245

$arr_user = explode (":",$user);


if ($arr_user[2]>=500 and $arr_user[2] <= 10000)
{
$mapeo_user[$arr_user[0]]= $arr_user[0];
}
}
$mapeo_user[$arr_user[1]] = "ALL USER";

$form->addField(new PopupField('Nombre Usuario:', 'user', true,


$mapeo_user));

$form->addField(new LabelFieldsubtitulo('Planificaciones de las Copias de


Seguridad', 'plancop'));

$form->addField(new LabelFieldsubtitulo('Ingreso de Horario Mltiple',


'horamult'));
$form->addField(new TextField('Minutos: ', 'minuto', 5,1,15));
$form->addField(new TextField('Horas: ', 'horas', 5,1,15));
$form->addField(new TextField('Dia del Mes: ', 'diames', 5,1,15));
$form->addField(new TextField('Mes: ', 'mes', 5,1,15));
$form->addField(new TextField('Dia de la Semana: ', 'diasema', 5,1,15));
$form->addField(new LabelFieldmensaje('Los valores son: Domingo=0,
Lunes=1, Martes=2, Mircoles=3, Jueves=4, Viernes=5, Sbado=6', 'h1'));
// $form->addField(new LabelFieldmensaje('Un conjunto de enteros, separados
por coma, para definir una lista (1,3,4,6)', 'h3'));
$form->addField(new LabelFieldmensaje('Un conjunto de enteros, separados por un
guin, para definir un rango (4-6)', 'h4'));

$form->addField(new SubmitFieldGroup(array('save' => 'Grabar',


'cancel' => 'Cancel')));
if ($form->isSubmitted('save'))
{
if ($form->validate())
{

$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/seguridades/scripts/copiaseguridadmultiple_
cmd.sh ".$form->getValue('user')." ".$form->getValue('minuto')." ".$form-
>getValue('horas')." ".$form->getValue('diames')." ".$form->getValue('mes')." ".
$form->getValue('diasema');

//echo $cmd;
$tmp = exec($cmd,$output,$status);
246

#echo "<br/>".$tmp."<br/>";

#$form->display();
if ($status == 0)
{
#echo "<br/>".$tmp."<br/>";
echo "Definicion de cuotas realizado
Exitosamente<br/>";
$form->setValue('user',"");
$form->setValue('minuto',"");
$form->setValue('horas',"");
$form->setValue('diames',"");
$form->setValue('mes',"");
$form->setValue('diasema',"");

// $form->display();
}
else
{
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display();
}

}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</form>
</body>
</html>
Archivo: pw_restauracion_copia.php
<html>
247

<head>
<title>Restauracion de copias de Segurirades</title>
<script>
//FUNCION PARA VALIDAR NUMEROS
function isNum(q)
{
for ( i = 0; i < q.length; i++ )
{
//con el for y la sentencia if( q.charAt(i) = " " ){... ..ya me queda lista
para validar los espacios en blanco, de lo contrario:
valor = parseInt(q.charAt(i)); // me permite convertir letra por letra en
numero y si no es un numero entonces no regresa nada
if (isNaN(valor))
{
return false
}
}
return true
}

//FUNCION QUE LLAMA A LA DE VALIDAR NUMEROS, TRABAJA CON LA


FUNCION isNum
function validarNumeroEntero(F)
{

if (isNum(F) == false)
{
alert("ES NECESARIO QUE EL VALOR INICIAL SEA UN
NUMERO ENTERO "+F);
return false;
}else
{
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(p)
{
if (p == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}
248

return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validavacio(h)
{
if( vacio(h) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validavacio(document.myform.user.value) == false)
{
return false;
}
if (validavacio(document.myform.carprest.value) == false)
{
return false;
}
return true;
}
</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}
249

td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}

a{
font-size: 12px;
color: #336600;
}

form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}

.title {
font-family: "Comic Sans MS", Courier;
font-size: 18px;
line-height: 20px;
background-color: #FFFFCC; color: #0000FF;}

.subtitle {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 30px;
color: #003300;}

.header {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #CCFFFF;
color: #FFFF33;
}

.nav {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: normal;
background-color: #CCFF99;
}
250

.navLink {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
background-color: #DEDECA;
}

.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}

.sidebarHeader {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #003300;
background-color: #FFFF66;
}

.sidebarFooter {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
background-color: #FFFF99;
font-style: italic;
}

.legal {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}

.box1 {
border-width: thin;
border-color: #99FF99 #003300 #003300 #99FF99;
border-style: double;
251

.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}

.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.titlebar {
font-family: "Times New Roman", Times, serif;
font-size: 9px;
color: #FFFFFF;
background-color: #336699;
}
input.big {
width: 100px;
}

input.small {
width: 50px;
}

.warning {
color: #ff0000;
}

.required {
color: #0000ff;
}
252

.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();

$tipohor = array ('SIM'=>'Simples', 'MUL'=> 'Multiples');

$sino = array ('1' => 'SI', '0' => 'NO');

$form->addField(new LabelFieldtitulo('Restauracion de Copias de


Seguridades', 'respcop'));

$carpetas = array ('ALL'=>'Todos', 'INB'=> 'Entrada', 'ENV'=> 'Enviados',


'BOR'=> 'Borradores', 'PAP'=> 'Papelera', 'SPA'=> 'Spam');

// $file_user = file ("/etc/passwd");


$file_user = file
("/var/www/html/sw_syscomsa/webpages/seguridades/scripts/usuarioscopiados.txt");

foreach ($file_user as $lin_user => $user)


{
$arr_user = explode (":",$user);
//if ($arr_user[2]>=500 and $arr_user[2] <= 10000)
//{
$mapeo_user[$arr_user[0]]= $arr_user[0];

// }
}
// $mapeo_user[$arr_user[1]] = "ALL USER";

$form->addField(new PopupField('Nombre Usuario:', 'user', true,


$mapeo_user));
$form->addField(new LabelFieldmensaje('Elija el nombre del usuario a
restaurar las copias de seguridad', 'copias'));
253

$form->addField(new PopupField('Carpeta a Restaurar:', 'carprest', true,


$carpetas));
$form->addField(new LabelFieldmensaje('Elija la carpeta a restaurar',
'carpeta'));

$form->addField(new SubmitFieldGroup(array('save' => 'Restaurar',


'cancel' => 'Cancel')));

if ($form->isSubmitted('save'))
{
if($form->validate())
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/seguridades/scripts/restaurarmail_cmd.sh ".
$form->getValue('user')." ".$form->getValue('carprest');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
echo "<br/>".$tmp."<br/>";
#echo "Restauracin de copias de seguridad<br/>";
$form->setValue('user',"");
$form->setValue('carprest',"");

}
else {
echo "<br/>".$tmp."<br/>";
#echo "Restauracion de copias NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();

}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
}
else if ($form->isSubmitted('cancel'))
{
header("Location: /sw_syscomsa/contenido.php");
254

}
else
{
$form->display();
}
?>
</form>

</body>
</html>
Seccin administracin de servidores de correo

Esta seccin se encuentra ubicada en la ruta:


/var/www/html/sw_syscomsa/webpages/admin_servi_correo/ en el cual se encuentran
los siguientes archivos.

Archivo: pw_config_red.php
<html>
<head>
<title>Configuracin de Red</title>
<script>
// FUNCION PARA VALIDAR IP
function validarip(ip)
{
if (ip == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

partes=ip.split('.');
if (partes.length!=4)
{
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
for (i=0;i<4;i++)
{
num=partes[i];
if ( partes[0]>224 || partes[0]<0 || partes[1]>224 || partes[1]<0 ||
partes[2]>224 || partes[2]<0 || num.length==0 || isNaN(num) || partes[3]>=255 ||
partes[3]<1)
{
alert("ERROR: La ip que usted ingreso no es valida");
255

return false;
}

}
return true;
}

function validarmask(mask)
{
if (mask == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

partes=mask.split('.');
if (partes.length!=4)
{
alert("ERROR: La mascara de red que usted ingreso no es valida");
return false;
}
for (i=0;i<4;i++)
{
num=partes[i];
if (partes[0]!=255 || partes[1]!=255 || partes[2]!=255 || num.length==0 ||
isNaN(num) || partes[3]!=0)
{
alert("ERROR: La mascara de red que usted ingreso no es valida");
return false;
}
}
return true;
}

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validarip(document.myform.ipservidor.value) == false)
{
return false;
}
if (validarmask(document.myform.maskred.value) == false)
256

{
return false;
}
return true;
}

</script>

<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}
td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}
a{
font-size: 12px;
color: #336600;
}
form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}
.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}
.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
257

font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}
.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.warning {
color: #ff0000;
}
.required {
color: #0000ff;
}
.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');
$form = new FormBuilder();
$form->addField(new LabelFieldtitulo('Configuracin Dominio de Red',
'confired'));
$form->addField(new LabelFieldsubtitulo('Detalle de Red', 'detared'));
$form->addField(new LabelFieldmensaje('Este asistente necesita saber la
direccion de la red','mensaje1'));
$form->addField(new TextField('IP del Servidor:', 'ipservidor',15,1,15));
$form->addField(new LabelFieldmensaje('La ip del servidor es la que
corresponder al servidor webmail.','mensaje2'));
$form->addField(new TextField('Mascara de la Red:', 'maskred', 15,1,15));

$form->addField(new SubmitFieldGroup(array('next' => 'Siguente',


'exit' => 'Salir')));
258

if ($form->isSubmitted('next'))
{ if ($form->validate())
//if(($form->getValue('ipservidor') == true) and ($form-
>getValue('maskred') == true))
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/configred_cmd.s
h ".$form->getValue('ipservidor')." ".$form->getValue('maskred');
#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{ //echo "Definicion de IP
realizado<br/>";
header ("Location:./pw_config_dns.php");
}
else
{
echo "Definicion de IP NO realizado<br/>";
foreach ($output as $line)
{
echo $line."<br/>";
}
}

}else
{
echo "Ingrese los campos correctamente<br/>";
$form->display();
}
}
else if ($form->isSubmitted('exit'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}

?>
</body>
259

</html>
Archivo: pw_config_dns.php
<html>
<head>
<title>Configuracion de DNS</title>

<script>

// FUNCION PARA VALIDAR IP


function validarip(ip)
{
if (ip == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

partes=ip.split('.');
if (partes.length!=4)
{
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
for (i=0;i<4;i++)
{
num=partes[i];
if (num>255 || num<0 || num.length==0 || isNaN(num))
{
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
}
return true;
}
// FUNCION PARA VALIDAR IP
function validarip2(ip2)
{
partes=ip2.split('.');
if (partes.length!=4)
{ // alert("KIERES CASARTE CONMIGO");
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
for (i=0;i<4;i++)
260

{
num=partes[i];
if (num>255 || num<0 ||num.length==0 || isNaN(num) )
{ //alert("si te KIERES CASARTE CONMIGO");
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
}
return true;
}
/*
function validarip3(ip3)
{
if (ip3 == "")
{
// alert("ERROR: No puede dejar este campo vacio")
return true;
}
}*/

//VALIDA TODOS LOS CAMPOS DEL FORMULARIO


function validarFormulario()
{
if (validarip(document.myform.gateway.value) == false)
{
return false;
}
if (validarip(document.myform.dnsexterno1.value) == false)
{
return false;
}

if (validarip(document.myform.dnsexterno2.value) == false)
{
return false;
}

/*
// if (validarip3(document.myform.dnsexterno2.value) == true)
if (validarip2(document.myform.dnsexterno2.value) == false)
{ alert("entro al vacio")
return false;
}
261

else
{
//if(validarip2(document.myform.dnsexterno2.value) == false)
// {
alert("si ta lleno")
return false;
// }
// return false;
}*/
return true;
}

</script>
<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}
td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}
a{
font-size: 12px;
color: #336600;
}
form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}
.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
line-height: normal;
padding: 3px;
background-color: #33CCFF;
262

color: #0000CC;
}
.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}
.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.warning {
color: #ff0000;
}
.required {
color: #0000ff;
}
.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();


$form->addField(new LabelFieldtitulo('Configuracin de Dominio',
'confidomin'));
$form->addField(new LabelFieldsubtitulo('Detalle IP Externas', 'detaipext'));
$form->addField(new LabelFieldmensaje('En caso de tener un dominio
registrado y un proveedor de internet deberiamos ingresar la Ip que nos haya asignado
263

gateway ademas de las Ip`s correspondientes a los dominios externos a la empresa


(Dns primario y secundario)..', 'msn1'));

$form->addField(new TextField('Gateway', 'gateway', 25,2,30));


$form->addField(new TextField('Dns Externo Primario', 'dnsexterno1',
25,2,30));
$form->addField(new TextField('Dns Externo Secundario', 'dnsexterno2',
25,2,30));

$form->addField(new SubmitFieldGroup(array('lastdns' => 'Atras',

'nextdns' => 'Siguente',


'exitdns' => 'Salir')));

if ($form->isSubmitted('nextdns'))
{ $form->validate();

if(($form->getValue('gateway') == true) and ($form-


>getValue('dnsexterno1') == true))
/* if(($form->getValue('gateway') == true) and ($form-
>getValue('dnsexterno1') == true) and ($form->getValue('dnsexterno2') == true))*/
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/configdns_cmd.s
h ".$form->getValue('gateway')." ".$form->getValue('dnsexterno1')." ".$form-
>getValue('dnsexterno2');

#echo $cmd;
$tmp = exec($cmd,$output,$status);
#echo "<br/>".$tmp."<br/>";

if ($status == 0)
{
header ("Location: ./pw_crear_dominio.php");
}
else {
echo "Definicion de cuotas NO realizado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
$form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display(); }
264

}
else if ($form->isSubmitted('lastdns'))
{
header ("Location: ./pw_config_red.php");

}
else if ($form->isSubmitted('exitdns'))
{

header("Location: /sw_syscomsa/contenido.php");

}
else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_crear_dominio.php
<html>
<head>
<title>Configuracion de Dominio</title>
<script>
// FUNCION PARA VALIDAR IP
function validarip(ip)
{
if (ip == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

partes=ip.split('.');
if (partes.length!=4)
{
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
for (i=0;i<4;i++)
{
num=partes[i];
if (num>255 || num<0 || num.length==0 || isNaN(num))
265

{
alert("ERROR: La ip que usted ingreso no es valida");
return false;
}
}
return true;
}

//busca caracteres que no sean espacio en blanco en una cadena


function vacio(o)
{
if (o == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

var caract_extra=" "


var ubicacion
var enter = " "
var caracteres =
".ABCDEFGHIJKLMNOPQRSTUVWXYZ\!|@#$~
%&/{/([)]=}?\'~+]*`[^'_-;,}" + String.fromCharCode(13) + enter +
caract_extra
var contador = 0
for (var i=0; i < o.length; i++)
{
if ( o.charAt(i) != "" )
{
ubicacion = o.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}
266

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validatexto(F)
{
if( vacio(F) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}

//busca caracteres que no sean espacio en blanco en una cadena


function vaciodominio(p)
{
if (p == "")
{
alert("ERROR: No puede dejar este campo vacio")
return false
}

partes2=p.split('.');
if ((partes2.length!=2) && (partes2.length!=3))
{
alert("ERROR: El nombre del dominio esta erroneo");
alert("Debe de ingresarlo de la sgte manera, 'dominio.com' o
'dominio.com.ec");
return false;
}
var caract_extra=" "
var ubicacion
var enter = " "
var caracteres =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
String.fromCharCode(13) + enter + caract_extra
var contador = 0
for (var i=0; i < p.length; i++)
{
if ( p.charAt(i) != "" )
{
267

ubicacion = p.substring(i, i + 1)
if (caracteres.indexOf(ubicacion) == -1)
{
contador++
} else
{
alert("ERROR: No se acepta el caracter '" + ubicacion +
"'.")
return false
}
}
}
return true
}

//valida que el campo no este vacio y no tenga solo espacios en blanco


function validadominio(g)
{
if( vaciodominio(g) == false )
{
//alert("Introduzca un cadena de texto correctamente.")
return false
} else
{
//alert("OK")
return true
}
}
//VALIDA TODOS LOS CAMPOS DEL FORMULARIO
function validarFormulario()
{
if (validarip(document.myform.actualiza.value) == false)
{
return false;
}
if (validatexto(document.myform.equipo.value) == false)
{
return false;
}
if (validadominio(document.myform.dominio.value) == false)
{
return false;
}
268

return true;
}
</script>
<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}
td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}
a{
font-size: 12px;
color: #336600;
}
form {
background-color: #FFFFFF;
}
.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}
.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
269

color: #660000; font-weight: bolder; font-size: 20px;


}
.warning {
color: #ff0000;
}
.required {
color: #0000ff;
}
</style>
</head>
<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$form = new FormBuilder();


$form->addField(new LabelFieldtitulo('Configuracin de Dominio',
'confidomin'));

$form->addField(new LabelFieldmensaje('A continuacion le asignaremos el


nombre correspondiente al dominio el cual va a ser utilizado para la asignacion de
cuotas (Nombre de dominio)..', 'msn1'));

$form->addField(new TextField('Nombre de dominio', 'dominio', 25,2,30));


$form->addField(new TextField('Nombre de equipo', 'equipo', 25,2,30));
$form->addField(new TextField('Permite actualizaciones','actualiza',
25,2,30));
$form->addField(new LabelFieldmensaje('(Direccion de Red o de IP)',
'msn5'));

$form->addField(new SubmitFieldGroup(array('lastdns' => 'Atras',


'enddns' => 'Finalizar',
'exitdns' => 'Salir')));
if ($form->isSubmitted('enddns'))
{

if ($form->validate())
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/configdominio_c
md.sh ".$form->getValue('dominio')." ".$form->getValue('equipo')." ".$form-
>getValue('actualiza');
//echo $cmd;
$tmp = exec($cmd,$output,$status);
//echo "<br/>".$tmp."<br/>";
270

if ($status == 0)
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/changeallconfig_
cmd.sh";
//echo $cmd;
$tmp = exec($cmd,$output,$status);
//echo "<br/>".$tmp."<br/>";
if ($status == 0)
{
$cmd = "sudo
/var/www/html/sw_syscomsa/webpages/admin_servi_correo/scripts/restartservices_c
md.sh";

$tmp = exec($cmd,$output,$status);
header("Location: ./pw_mensaje_dns.php");
echo "Creacion de Dominio Modificado
Exitosamente<br/>";
}
else {
echo "Creacion de Dominio NO
Modificado<br/>";
foreach ($output as $line) {
echo $line."<br/>";}
}
}
else
{
echo "Creacion de Dominio NO Modificado<br/>";
foreach ($output as $line)
{
echo $line."<br/>";
}
}

// $form->display();
}else
{ echo "Ingrese los campos correctamente<br/>";
$form->display();
}
}
else if ($form->isSubmitted('lastdns'))
{
header ("Location: ./pw_config_dns.php");
271

}
else if ($form->isSubmitted('exitdns'))
{
header("Location: /sw_syscomsa/contenido.php");
}
else
{
$form->display();
}
?>
</body>
</html>
Archivo: pw_mensaje_dns.php
<html>
<head>
<title>Configuracion Finalazada de Red y de Dominio</title>
<style type="text/css">
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
line-height: 24px;
color: #99FF99 #003300 #003300 #99FF99;
margin-bottom: 0px;
border-color: #0000CC;
}
td, th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 18px;
color: #3333FF;
}
a{
font-size: 12px;
color: #336600;
}
form {
background-color: #FFFFFF;
background-image: url(../imagenes/Fondos/a16.jpg);
}
.sidebar {
font-family: "Comic Sans MS", Courier;
font-size: 14px;
272

line-height: normal;
padding: 3px;
background-color: #33CCFF;
color: #0000CC;
}
.promo {
font-family: "Verdana", Times, serif;
color: #0000FF;
font-size: 14px;
font-weight: italic;
}
.footer {
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
line-height: normal;
color: #F3F2F9;
background-color: #3B4D61;
}
.dingbat {
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFFF;
color: #660000; font-weight: bolder; font-size: 20px;
}
.warning {
color: #ff0000;
}
.required {
color: #0000ff;
}
.fieldLabel {
text-align: right;
color: BLUE;
}
</style>
</head>

<body>
<?php
require_once('/var/www/html/sw_syscomsa/FormBuilder.php');

$eleccion = array ('-u' => 'Usuario', '-g' => 'Grupo');


273

$form = new FormBuilder();


$form->addField(new LabelFieldtitulo('Configuracin Dominio de Red',
'confired'));
$form->addField(new LabelFieldsubtitulo('La configuracin del dominio de
red ha finalizado exitosamente.', 'mensaje1'));
$form->addField(new LabelFieldmensaje('Ud puede ahora crear las cuotas
necesarias con su propio dominio'));
$form->addField(new LabelFieldmensaje('Por favor tenga la amabilidad de
salir del explorador y volver a ingresar con el dominio que ud acaba de modificar'));

/*$form->addField(new SubmitField('exit', 'Salir'));


if ($form->isSubmitted('exit'))
{
header ("Location: /sw_syscomsa/login_syscomsa.htm");
}
else
{
$form->display();
}*/
$form->display();
?>
</body>
</html>
Archivo: syscomsa.sql
# MySQL-Front Dump 2.5
#
# Host: localhost Database: syscomsa
# --------------------------------------------------------
# Server version 5.0.41-community-nt

USE syscomsa;
#
# Table structure for table 'opcion_vinculo'
#

DROP TABLE IF EXISTS opcion_vinculo;


CREATE TABLE IF NOT EXISTS opcion_vinculo (
codi_opvi int(4) NOT NULL ,
nomb_opvi varchar(100) NOT NULL ,
link_opvi varchar(254) NOT NULL ,
nivel_opvi int(4) ,
codi_usua int(4) unsigned ,
fcrea_opvi datetime ,
ai_opvi int(4) NOT NULL ,
274

PRIMARY KEY (codi_opvi)


);

#
# Dumping data for table 'opcion_vinculo'
#

INSERT INTO opcion_vinculo VALUES("1", "Usuarios", "0", "0", "1", "2008-05-18


00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("2", "Cuentas", "0", "0", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("3", "Interfaz Horde", "0", "0", "1", "2008-
05-18 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("4", "Seguridades", "0", "0", "1", "2008-05-
18 00:28:37", "1");

INSERT INTO opcion_vinculo VALUES("6", "Creaci&oacute;n de Usuarios",


"webpages/administracion_usuarios/pw_crear_usuario.php", "1", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("7", "Creaci&oacute;n de Grupos",
"webpages/administracion_usuarios/pw_crear_grupo.php", "1", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("8", "Creaci&oacute;n de Usuario por
Lista", "webpages/administracion_usuarios/pw_crear_usua_lista.php", "1", "1",
"2008-05-18 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("9", "Modificaci&oacute;n de Usuarios",
"webpages/administracion_usuarios/pw_mod_usuario.php", "1", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("10", "Modificaci&oacute;n de Grupos",
"webpages/administracion_usuarios/pw_mod_grupo.php", "1", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("11", "Cambio de Claves",
"webpages/administracion_usuarios/pw_mod_contrase.php", "1", "1", "2008-05-18
00:28:37", "1");

INSERT INTO opcion_vinculo VALUES("12", "Par&aacute;metros de Cuentas",


"webpages/administracion_cuenta/pw_parametros_cuenta.php", "2", "1", "2008-05-
18 00:28:37", "1");
#INSERT INTO opcion_vinculo VALUES("13", "Definici&oacute;n de Cuotas",
"webpages/administracion_cuenta/pw_definicion_cuotas.php", "2", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("14", "Definici&oacute;n de Cuotas
Usuario", "webpages/administracion_cuenta/pw_definicion_cuotas_usuario.php",
"2", "1", "2008-05-18 00:28:37", "1");
275

INSERT INTO opcion_vinculo VALUES("15", "Definici&oacute;n de Cuotas


Grupo", "webpages/administracion_cuenta/pw_definicion_cuotas_grupo.php", "2",
"1", "2008-05-18 00:28:37", "1");

INSERT INTO opcion_vinculo VALUES("16", "Control Acceso de Usuarios",


"webpages/administracion_cuenta/pw_control_usuario.php", "2", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("17", "Control Acceso de Dominio e Ip
Red", "webpages/administracion_cuenta/pw_control_correo.php", "2", "1", "2008-05-
18 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("18", "Idioma y Hora",
"webpages/administracio_interfaz/pw_sele_idiomahora.php", "3", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("19", "Opciones de Visualizaci&oacute;n",
"webpages/administracio_interfaz/pw_opciones_visualizacion.php", "3", "1", "2008-
05-18 00:28:37", "1");
#INSERT INTO opcion_vinculo VALUES("##", "Mantenimiento de Inicio de
Sesi&oacute;n", "webpages/administracio_interfaz/pw_mantenimiento_sesion.php",
"3", "1", "2008-05-18 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("21", "Tareas de Inicio de Sesi&oacute;n en
Correo (Parte I)", "webpages/administracio_interfaz/pw_inicio_sesion_correo.php",
"3", "1", "2008-05-18 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("22", "Tareas de Inicio de Sesi&oacute;n en
Correo (Parte II)", "webpages/administracio_interfaz/pw_inicio_sesion_correo2.php",
"3", "1", "2008-05-18 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("23", "Copias Horarios Simples",
"webpages/seguridades/pw_copia_seguridadsimple.php", "4", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("24", "Copias Horario Multiple",
"webpages/seguridades/pw_copia_seguridadmultiple.php", "4", "1", "2008-05-18
00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("25", "Administraci&oacute;n de Servidor
de Correo", "0", "0", "2", "2008-05-22 00:00:00", "1");
INSERT INTO opcion_vinculo VALUES("26", "Configuraci&oacute;n de Red",
"webpages/admin_servi_correo/pw_config_red.php", "25", "2", "2008-05-22
00:00:00", "1");

INSERT INTO opcion_vinculo VALUES("27", "Restauraci&oacute;n de copias de


seguridad", "webpages/seguridades/pw_restauracion_copias.php", "4", "1", "2008-05-
22 00:00:00", "1");

INSERT INTO opcion_vinculo VALUES("28", "Opciones de Redacci&oacute;n de


mensajes", "webpages/administracio_interfaz/pw_opc_redaccion.php", "3", "1",
"2008-05-22 00:00:00", "1");
276

#
# Table structure for table 'usuario'
#

DROP TABLE IF EXISTS usuario;


CREATE TABLE IF NOT EXISTS usuario (
codi_usua int(4) unsigned NOT NULL ,
nomb_usua varchar(100) NOT NULL ,
clave_usua varchar(100) NOT NULL ,
fcrea_usua datetime NOT NULL ,
ai_usua int(4) NOT NULL ,
PRIMARY KEY (codi_usua)
);
#
# Dumping data for table 'usuario'
#

INSERT INTO usuario VALUES("1", "webmaster",


"827ccb0eea8a706c4c34a16891f84e7b", "2008-05-17 19:16:56", "1");
INSERT INTO usuario VALUES("2", "admin",
"81dc9bdb52d04dc20036dbd8313ed055", "2008-05-22 22:13:02", "1");

#
# Table structure for table 'usuario_vinculo'
#

DROP TABLE IF EXISTS usuario_vinculo;


CREATE TABLE IF NOT EXISTS usuario_vinculo (
codi_usua int(4) unsigned ,
codi_opvi int(4) ,
codi_usua1 int(4) NOT NULL ,
fcrea_opvi datetime ,
ai_opvi int(4) NOT NULL ,
KEY codi_usua (codi_usua),
KEY codi_opvi (codi_opvi)
);

#
# Dumping data for table 'usuario_vinculo'
#
277

INSERT INTO usuario_vinculo VALUES("1", "1", "1", "2008-05-22 22:25:26", "1");


INSERT INTO usuario_vinculo VALUES("1", "2", "1", "2008-05-22 22:25:26", "1");
INSERT INTO usuario_vinculo VALUES("1", "3", "1", "2008-05-22 22:25:26", "1");
INSERT INTO usuario_vinculo VALUES("1", "4", "1", "2008-05-22 22:25:26", "1");

INSERT INTO usuario_vinculo VALUES("1", "6", "1", "2008-05-22 22:25:26", "1");


INSERT INTO usuario_vinculo VALUES("1", "7", "1", "2008-05-22 22:25:26", "1");
INSERT INTO usuario_vinculo VALUES("1", "8", "1", "2008-05-22 22:25:26", "1");
INSERT INTO usuario_vinculo VALUES("1", "9", "1", "2008-05-22 22:25:26", "1");
INSERT INTO usuario_vinculo VALUES("1", "10", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "11", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "12", "1", "2008-05-22 22:25:26",
"1");
#INSERT INTO usuario_vinculo VALUES("1", "13", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "14", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "15", "1", "2008-05-22 22:25:26",
"1");

INSERT INTO usuario_vinculo VALUES("1", "16", "1", "2008-05-22 22:25:26",


"1");
INSERT INTO usuario_vinculo VALUES("1", "17", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "18", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "19", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "20", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "21", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "22", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "23", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "24", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("2", "25", "2", "2008-05-22 22:25:26",
"1");
278

INSERT INTO usuario_vinculo VALUES("2", "26", "2", "2008-05-22 22:25:26",


"1");
INSERT INTO usuario_vinculo VALUES("1", "27", "1", "2008-05-22 22:25:26",
"1");
INSERT INTO usuario_vinculo VALUES("1", "28", "1", "2008-05-22 22:25:26",
"1");
Archivo: login_syscomsa.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Bienvenidos - LOGIN</title>
<style type="text/css">
<!--
.Estilo1 {
font-size: 24px;
color: #FFFFFF;
font-weight: bold;
}
.Estilo2 {
font-size: 18px;
color: #FFFFFF;
}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="pw_principal.php">

<table width="336" border="0" align="center" cellpadding="0" cellspacing="0">


<tr>
<td width="164"><img src="Imagenes/Images/cabecera_04.gif" width="164"
height="38" /></td>
<td width="172"><img src="Imagenes/Images/cabecera_05.gif" width="172"
height="38" /></td>
</tr>
<tr>
<td><img src="Imagenes/Images/cabecera_09.gif" width="164" height="33"
/></td>
<td><img src="Imagenes/Images/cabecera_10.gif" width="172" height="33"
/></td>
</tr>
279

<tr>
<td colspan="2" bgcolor="#3B4D61"><div align="center"
class="Estilo1">Bienvenidos ! </div></td>
</tr>
<tr>
<td bgcolor="#0099CC">&nbsp;</td>
<td bgcolor="#0099CC">&nbsp;</td>
</tr>
<tr>
<td bgcolor="#0099CC"><span class="Estilo2">Usuario:</span></td>
<td bgcolor="#0099CC"><input name="txt_usuario" type="text"
id="txt_usuario" /></td>
</tr>
<tr>
<td bgcolor="#0099CC" class="Estilo2">Clave:</td>
<td bgcolor="#0099CC"><input name="txt_clave" type="password"
id="txt_clave" /></td>
</tr>
<tr>
<td bgcolor="#0099CC" class="Estilo2">&nbsp;</td>
<td bgcolor="#0099CC">&nbsp;</td>
</tr>
<tr>
<td colspan="2" bgcolor="#3B4D61"><div align="center"><input type="submit"
name="Submit" value="Enviar" /></div></td>
</tr>
</table>
</form>
</body>
</html>
Archivo: contenido.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
.Estilo6 {
font-size: 30px;
color: #0000FF;
}
280

.Estilo8 {font-size: 18px; color: #000066; font-family: "Times New Roman", Times,
serif; }
-->
</style>
</head>

<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<table width="500" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td><div align="center"><span class="Estilo6">Bienvenidos al Administrador de
Servicios Webmail.</span></div></td>
</tr>
<tr>
<td><table cellspacing="0" cellpadding="0" hspace="0" vspace="0"
align="right">
<tr>
<td valign="top" align="left"><p class="Estilo8">&nbsp;</p>
<p align="justify" class="Estilo8">Syscomsa se complace en darle la
bienvenida a nuestro Wizard de configuraciones v&iacute;a Web. Mediante este
wizard web usted podr&aacute; efectuar modificaciones a su servidor de Webmail
Corporativo. Esta herramienta permitir&aacute; realizar modificaciones del
servidor de correo, cambiar las configuraciones de par&aacute;metros de correo. La
configuraci&oacute;n de usuarios as&iacute; como la configuraci&oacute;n de
interfaz gr&aacute;fica se lo podr&aacute; modifcar.</p>
<p class="Estilo8">&nbsp;</p></td>
</tr>
<tr>
<td valign="top" align="left"><align="justify" class="Estilo8">Esperando que
este producto permita satisfacer las necesidades de su organizaci&aacute;n.</td>
</tr>
<tr>
<td valign="top" align="left"><p align="justify" class="Estilo8">Atentamente
Grupo # 7.</p></td>
</tr>
<tr>
<td valign="top" align="left"><align="justify" class="Estilo8">Zaida Yadira
Miranda Castro</td>
</tr>
<tr>
<td valign="top" align="left"><align="justify" class="Estilo8">Luis Eduardo
Erazo Cordova</td>
281

</tr>
<tr>
<td valign="top" align="left"><align="justify" class="Estilo8">Ra&uacute;l
Andr&eacute;s Jaramillo Ord&oacute;ez</td>
</tr>
</table></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
Archivo: Index.html
<html>
<head>
<title>SysComsa</title>
<script language="JavaScript">
<!--
function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { //v3.0
var ok=false; document.MM_returnValue = false;
with (navigator) if (appName.indexOf('Microsoft')==-1) ok=(plugins &&
plugins[plgIn]);
else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1
if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null)
ok=window.MM_flash;
else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null)
ok=window.MM_dir;
else ok=autoGo; }
if (!ok) theURL=altURL; if (theURL) window.location=theURL;
}
//-->
</script>
</head>

<body bgcolor="#FFFFFF" onLoad="MM_checkPlugin('Shockwave


Flash','login_syscomsa.htm','login_syscomsa.htm',false);return
document.MM_returnValue">
</body>
<script name="Used by MM_checkPlugin" language="javascript">
<!--
with (navigator) if (appName.indexOf('Microsoft')!=-1 &&
appVersion.indexOf('Mac')==-1) document.write(''+
'<scr'+'ipt language="VBScript">\nOn error resume next\n'+
282

'MM_dir = (IsObject(CreateObject("SWCtl.SWCtl.1")) Or
IsObject(CreateObject("Macromedia.ActiveShockwave.1")))\n'+
'MM_flash = NOT
IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash"))\n</scr'+'ipt>');
//-->
</script>
</html>
RUTA: /var/www/html/sw_syscomsa/
Archivo: Index.html
<html>
<head>
<title>SysComsa</title>
<script language="JavaScript">
<!--
function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { //v3.0
var ok=false; document.MM_returnValue = false;
with (navigator) if (appName.indexOf('Microsoft')==-1) ok=(plugins &&
plugins[plgIn]);
else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1
if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null)
ok=window.MM_flash;
else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null)
ok=window.MM_dir;
else ok=autoGo; }
if (!ok) theURL=altURL; if (theURL) window.location=theURL;
}
//-->
</script>
</head>

<body bgcolor="#FFFFFF" onLoad="MM_checkPlugin('Shockwave


Flash','login_syscomsa.htm','login_syscomsa.htm',false);return
document.MM_returnValue">
</body>
<script name="Used by MM_checkPlugin" language="javascript">
<!--
with (navigator) if (appName.indexOf('Microsoft')!=-1 &&
appVersion.indexOf('Mac')==-1) document.write(''+
'<scr'+'ipt language="VBScript">\nOn error resume next\n'+
'MM_dir = (IsObject(CreateObject("SWCtl.SWCtl.1")) Or
IsObject(CreateObject("Macromedia.ActiveShockwave.1")))\n'+
'MM_flash = NOT
IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash"))\n</scr'+'ipt>');
//-->
283

</script>
</html>
Archivo: pw_principal.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Administrador Webmail</title>
<?php
require "syscomsa.php";
conectar($conec);
$usuario=$_POST['txt_usuario'];
$clave=$_POST['txt_clave'];
$sql="select * from usuario where nomb_usua='$usuario' and
clave_usua=md5('$clave');";
carga($sql,$conec,$r);
if(!mysql_affected_rows($conec))
{
mensaje("no existe el usuario",0);
die();
}
$fila=mysql_fetch_array($r);
?>
</head>

<frameset rows="100,*" cols="*" framespacing="0" frameborder="no" border="0">


<frame src="pw_cabecera.php?codi_usua=<?php echo $fila['codi_usua'];?>"
name="cabecera" scrolling="No" noresize="noresize" id="cabecera" />
<frameset rows="*,17" cols="*" framespacing="0" frameborder="no" border="0">
<frameset rows="*" cols="165,*" framespacing="0"
frameborder="no" border="0">
<frame src="pw_submenu.php" name="submenu" scrolling="no"
noresize="noresize" id="submenu" />
<frame src="contenido.php" name="contenido" id="contenido" />
</frameset>
<frame src="pw_pie.html" name="pie" scrolling="No"
noresize="noresize" id="pie" />
</frameset>
</frameset>
<noframes><body>
</body>
</noframes>
<?php
284

mysql_free_result($r);
?>
</html>
Archivo: syscomsa.php
<?PHP
define (DATASERVER, "localhost");
define (USUARIO, "root");
define (CLAVE, "centos");
define (BASE, "syscomsa");
define (SITIO, "http://localhost");
define (N_FILAS_CONSULTA,10);
define (COLOR_CONSULTA_N1,"#009966");
define (COLOR_CONSULTA_N2,"#99cc99");
function conectar(&$c)
{
$c=@ mysql_connect(DATASERVER,USUARIO,CLAVE) or $c=0;
if(!$c)
{
mensaje("no se puede realizar la conexion",0);
die();
}
else
{
$vefifica=@ mysql_select_db(BASE,$c) or $vefifica=0;
if(!$vefifica)
{
mensaje("no tiene permisos de acceder a los datos",0);
die();
}
}
}
function carga($sql,&$c,&$r)
{
$link=@mysql_query($sql,$c) or $link=0;
if(!$link)
{
mensaje("la consulta tiene error o se perdio conexion al servidor",0);
die();
}
$r=$link;
}
function mensaje($m,$tipo)
{
echo $m;
285

}
?>

You might also like