TesisCompleta-183-2008.pdf

Anuncio
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas
Computacionales
“Webmail Corporativo”
TESIS DE GRADO
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
Erazo Córdova Luis Eduardo
Jaramillo Ordóñez Raúl Andrés
Miranda Castro Zaida Yadira
GUAYAQUIL-ECUADOR
Año: 2008
AGRADECIMIENTO
Quedaremos
eternamente
agradecidos
primeramente a Dios por la sabiduría que nos
dio. Agradecemos a nuestros padres por su
apoyo incondicional y a todas las personas
que nos brindaron su respaldo durante la
elaboración de nuestro proyecto y creyeron en
nuestra
objetivos.
capacidad
de
lograr
nuestros
DEDICATORIA
El desarrollo de este proyecto así como la
sustentación
del
mismo
lo
dedicamos
primeramente a Dios que nos dio la sabiduría
para poder afrontar todos lo problemas que se
nos presentaron. También lo dedicamos a
nuestros padres que por su apoyo incondicional
hemos podido realizar la culminación de nuestro
proyecto de tesis.
TRIBUNAL DE GRADUACIÓN
Presidente del Tribunal
Primer Vocal
Segundo Vocal
Secretario
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),
perteneciendo a la Universidad de Guayaquil los derechos que generen la
aplicación de la misma”.
(Reglamento de Graduación de la Carrera de Ingeniería en sistemas
Computacionales, Art. 26)
______________________
_________________________
Erazo Córdova Luis Eduardo
Jaramillo Ordóñez Raúl Andrés
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
organización 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. Además este sistema radica en que
no es necesario realizar ninguna configuración en ningún cliente de correo.
Puede accederse al correo desde cualquier emplazamiento solo se necesita
que exista una máquina con acceso a un navegador. La aplicación 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 administración de cuentas de correo y sus parámetros.
INDICE GENERAL
AGRADECIMIENTO
II
DEDICATORIA
III
TRIBUNAL DE GRADUACIÓN
IV
DECLARACIÓN EXPRESA
V
RESUMEN
VI
INDICE GENERAL
VII
CAPITULO 1
1. INTRODUCCIÓN
1
1.1. Resumen
1
1.2. Misión del proyecto
2
1.3. Visión Del Proyecto
2
1.4. Ventajas del Webmail Corporativo
3
1.5. Objetivos del Proyecto Webmail Corporativo
6
1.6. Alcances del Proyecto
1.7. Requerimientos Tecnológicos
8
12
1.7.1. Requerimientos Hardware
12
1.7.2. Requerimientos Software
13
1.8. Requerimientos Humanos
13
1.9. Metodología
14
Investigación
14
Análisis
15
Diseño
15
1.10. Modelo De Desarrollo
16
Determinar o Fijar Objetivos
16
Análisis de Riesgos
17
Desarrollar Verificar y Validar (Probar)
17
Planificar
18
1.11. Cronograma
19
1.12. Funcionalidad General Del Proyecto
19
1.13. Análisis 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. ANÁLISIS DEL PROYECTO
22
2.1. Análisis 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
Asignación De Usuario Y Contraseña
25
Determinar El Umbral Del Uso Del Buzón
25
Permisos Para Cada Usuario
25
2.1.1. Esquema Básico Del Funcionamiento Del Webmail
26
2.2. Análisis Orientado A Objetos
27
2.2.1. Análisis 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 Relación Entre Objetos
30
2.2.5. Análisis 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. DISEÑO DEL PROYECTO
33
3.1. Diseño de la Estructura y Comportamiento de objetos (DEO)
33
3.2. Diseño 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. Creación 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. Verificación y validación
42
4.4.2. Prueba envió y recepción
43
4.4.3. Prueba de creación y modificación
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
Diagrama de Entidad de Relación.
Diagrama de Flujo de Datos.
Flujo de
Información.D
FD.Internet
Hard Disk.
ProtocolHD.DFI.ICMP.-IP.LAN.OO.RAM.SQL.TCP.UDP.-
Internet Control Message Protocol
Local Area Network.
Orientado a objetos
Random Access Memory.
Language Query Sentences.
Transfer Control Protocol.
User Datagrama Protocol
CAPITULO 1
1. INTRODUCCION
1.1.
Resumen
El servicio de webmail es un sistema de correo electrónico 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 electrónico,
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 comunicación IMAP o POP3. Mediante la
utilización de los webmails, no es necesario instalar algún cliente de correo,
ni descargar tus mensajes a tu ordenador, solo basta con tener una conexión
a Internet. Los webmails son vinculados a un servidor de correo.
Los webmail facilitan a los usuarios hacer uso de su correo electrónico de
una forma fácil, utilizando un diseño amigable al usuario, brindándole la
posibilidad de no depender de un único ordenador.
1.2.
Misión del proyecto
Implementar un sistema de correo electrónico con una interfaz amigable para
el usuario, el cual permita al mismo crear y administrar las cuentas de correo,
así como también permisos y umbrales necesarios de los usuarios finales,
utilizando parámetros definidos en la aplicación.
1.3.
Visión del proyecto
La principal meta de nuestro producto webmail esta dirigido a convertirse en
una herramienta líder en el mercado nacional e internacional, la cual permita
a los usuarios que trabajen con ella, administrar sus cuentas de correo
electrónico de una manera fácil 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 organización. 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 buzón 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
configuración en ningún cliente de correo. Es decir los clientes no podrán
realizarle cambios tan radicales a la visualización de su correo.
d) Facilitan a los usuarios hacer uso de su correo electrónico de una forma
fácil, utilizando un diseño amigable al usuario.
4
e) Nuestra herramienta facilita al usuario cliente que sus mensajes enviados
a cualquier destinatario, será respaldado automáticamente en la bandeja
de elementos enviados.
f) Se permitirá realizar un perfil determinado del buzón de correo por cada
usuario o grupo de usuarios, de esta manera se podrá asignar a cada
usuario su respectivo tamaño de buzón, dependiendo de las necesidades
de los usuarios y de la organización en general.
g) Otra gran ventaja es que el usuario administrador es que tendrá
facultades de regular el tipo de información que descarguen los usuarios
clientes en su buzón de correo, optando por esta política evitaremos el
congestionamiento del buzón y optimizaremos el uso del Internet el cual
este acorde a las necesidades de la organización 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 continuación:
.
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 contraseña 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
buzón principal, con la función de “filtros”.
.
Esta herramienta le permite traer a su buzón 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 través 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) Número de buzones de correo limitado por el administrador, debido que
los recursos que se posee son limitados, por tanto debe de existir una
opción que permitirá regular el número de usuarios que cada organización
requiera o necesite, según sus funciones laborales, es decir a medida de
que la organización lo demande este número de buzones se puede
expandir siempre y cuando también sus recursos técnicos lo permitan.
d) Buzones de correo de limitado dependiendo de un análisis del
administrador del webmail, que nos especifique que usuario en especial
deba de tener mayor capacidad de buzón de correo.
7
e) La interfaz será personalizada para el cliente, segura y amigable, el
encargado de establecer dichas interfaces será el administrador, según
los
requerimientos
de
la
organización,
es
decir
el
tendrá
la
responsabilidad de asignarle o modificarle la interfaz que los usuarios
podrán observar.
f) Se efectuarán 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 organización.
1.6.
Alcances del Proyecto
a) Instalación y configuraciones de la plataforma Linux (Sistema
Operativo), cuya distribución es Centos 5.
b) Nuestro proyecto estará enfocado a las pequeñas y medianas
empresas (PYME) las cuales nuestro proyecto les de flexibilidad de
manejo de la comunicación entre sus colaboradores.
c) Configuración de una conexión básica de red que permitirá realizar las
pruebas necesarias para cada uno de los servicios que se instalarán y
configurarán.
8
d) Instalación y configuración 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) Instalación y configuración del Apache que es un servidor de páginas
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 librerías que proporcionan funcionalidades básicas
(autenticación, gestión de preferencias, interfaz gráfica, etc.) y que
funciona como nexo de unión entre distintas aplicaciones de usuario,
que son gestionadas como sub-proyectos independientes.
g) Configuraciones de los servicios que van a ser prerrequisitos para la
utilización del webmail. Los servicios son los siguientes:

Mysql

Mailscanner

Httpd

Named

Network
9

Sendmail
h) Desarrollar una aplicación con una interfaz grafica que permita una
mejor administración de las cuentas de correo para que sea esta
amigable al usuario final.
i) La aplicación será desarrollada en un lenguaje de programación web
con código Php utilizando scripts shell de Linux. PHP que es un
lenguaje interpretado de páginas web dinámicas incrustado en el
HTML. En esta instalación están ligados íntimamente ya que la
compilación e instalación que haremos de PHP será de forma estática
y no de forma dinámica.
j) Nuestro producto presentará un menú de opciones según 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 asignación de una cuenta de correo a un determinado usuario
se escogerán las siguientes opciones como parámetros del webmail
corporativo:
10

Lenguaje o idioma.

Umbral del buzón de correo.

Colores del fondo de la ventana de navegación.

Permisos que tendrá para el acceso al correo.

Logotipo o titulo que lo identificará como propietario de esa
cuenta.
l) Implementar políticas de seguridad usando protocolos de red seguros,
los cuales nos permitirán 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 estándares en la asignación 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 políticas de navegación que pueden ser
usadas de manera que se combinen las características 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 Tecnológicos
Para la elaboración, desarrollo e implementación de nuestro proyecto
webmail se necesitarán algunos requerimientos tecnológicos básicos tanto
en hardware como en software para que funcione correctamente, a
continuación serán 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 memória 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
1.8.

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
Requerimientos Humanos
Para el análisis, diseño, desarrollo y pruebas del proyecto en cuanto a los
requerimientos humanos estará conformado por los integrantes del grupo # 7
del tópico Linux del seminario de Graduación y los cuales forman parte del
grupo de desarrollo del proyecto y se los detallara a continuación:
13

Raúl Andrés Jaramillo Ordóñez

Zaida Yadira Miranda Castro

Luís Eduardo Erazo Córdova
Existe también el grupo de usuarios finales que estará conformado por los
usuarios que manejaran la aplicación que serán 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.
Metodología
La metodología utilizada para el desarrollo de nuestro proyecto webmail
corporativo es el Orientado a Objetos, el cual lo realizaremos de la siguiente
forma:
Investigación
En esta etapa realizaremos la recolección de toda la información 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
Análisis
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:
Análisis de los estados que tienen los objetos.
Análisis del comportamiento de los objetos.
Análisis de las Interfaces.
Análisis de los requerimientos de usuario.
Diseño
A base de nuestro análisis efectuado anteriormente procederemos al diseño
de lo que será nuestro proyecto
Diagrama básico del Webmail Corporativo.
Diagrama de casos de uso.
Diseño de las interfaces.
Relación de los objetos.
Diagrama de clases.
Diagrama de Secuencia.
15
1.10. Modelo de Desarrollo
Para la elaboración 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, también permite la
creación 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, especificación, manual de
usuario.

Fijar las restricciones.

Identificación de riesgos del proyecto y estrategias alternativas para
evitarlos.
16

Hay una cosa que solo se hace una vez: planificación inicial o previa.
Análisis del riesgo

El análisis del riesgo se hace de forma explícita. 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.

Análisis de alternativas e identificaron de resoluciones de riesgos.
Planificar
17

Revisamos todo lo hecho, evaluándolo, y con ello decidimos si
continuamos con las fases siguientes y planificamos la próxima
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 descripción de la información que requiere el
sistema antes de la ejecución de los procesos.
1.13. Análisis F.O.D.A.
Según el análisis de nuestro proyecto podemos resaltar las fortalezas,
oportunidades, debilidades y amenazas las cuales las detallaremos a
continuación:
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 físicamente dentro de un lugar específico para
poder acceder a nuestra herramienta, la movilidad en la actualidad es
muy vital y necesaria en todas las organizaciones por que también 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 más 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 parámetros y normas específicas para que el administrador
cumpla con sus funciones de manera correcta y adecuada.
El incumplimiento de las normas de seguridad que se deberán
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 algún intruso,
para esto se deberá regular normas de seguridad adecuadas, así
como también reglas de firewall en el servidor de correo y también en
la red de la organización.
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
también de las demás maquinas se deberá implementar un buen
programa de antispam como de antivirus.
CAPITULO 2
21
2. ANALISIS DEL PROYECTO
2.1. Análisis Funcionamiento del Webmail
Webmail es un cliente de correo que permite leer el correo sin tener que
instalar ningún cliente y se puede acceder a el desde cualquier ordenador
con conexión a Internet
Para conectarse hemos de tener dos elementos indispensables:
.
El nombre de usuario.
.
La contraseña. 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, después 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, también determinará el uso del buzón y demás parámetros según
tipo de usuario.
El usuario final podrá acceder a su cuenta de correo por medio de su
username y contraseña establecida y podrá realizar las siguientes acciones
según 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 contraseña privada cuantas veces quiera
.
Configurar sus preferencias a gusto
.
Organizar sus correos es carpetas personales
.
Cerrar la sesión
Configuraciones del Administrador
23
Para que el administrador configure una nueva cuenta de correo necesitara
de ciertos parámetros 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 diseñará para una empresa.
Asignación de un usuario y contraseña
24
Se le asignará un nombre de usuario y la respectiva contraseña para que
este pueda acceder.
Determinar el umbral del uso del buzón
Dependiendo de los requerimientos del usuario para dicha cuenta se le
determinara un límite para su buzón.
Permisos para cada usuario
Son los que se le permitirá al usuario realizar en su cuenta de correo, será
manejado por el administrador según lo necesite.
2.1.1 Esquema Básico del Funcionamiento del Webmail
En la figura 2.1 se mostrara una breve descripción Básica de cómo es
el funcionamiento del Webmail, donde el usuario se conecta a través
del Internet mediante un username y password y entra en el servidor
25
de correo principal en los cuales también estará las copias de
seguridad y los filtros de correo no deseado e infectado.
Figura 2.1 Esquema Básico del Webmail
2.2. Análisis Orientado a Objetos
Con el análisis orientado a objetos la forma de modelar la realidad difiere del
análisis convencional. Modelando el mundo en términos de tipos de objetos y
lo que ocurre a estos.
Los modelos O.O. que construimos en el análisis reflejan la realidad de modo
más natural que las del análisis tradicional de sistemas. Después de todo, la
realidad consta de objetos y eventos que cambian el estado de dichos
26
objetos. Mediante las técnicas O.O. construimos software que modela más
fielmente el mundo real.
Cuando el mundo real cambia, nuestro software es mas fácil de cambiar, lo
que es una ventaja real. Quisiéramos capturar el punto de vista de los
usuarios con respecto al mundo y traducirlo en software de la manera mas
automática cuando cambien las necesidades de los usuarios, el software
cambia con ellas.
2.2.1. Análisis de la estructura de objetos (AEO)
En esta parte definiremos las categorías 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 descripción clara y sin
ambigüedades de como él interactúa con el sistema.
27
En el Anexo 2.2
observaremos de una manera general como el
administrador y el usuario interactúan con el servidor para la
administración 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 construcción del
diseño 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 definición de clases y
estructuras de datos. También es importante modelar la forma como
los objetos se asocian entre si.
En este análisis es útil nombrara la cantidad de objetos de
determinado tipo que se debe asociar con los objetos de otro tipo, para
aumentar la comprensión 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 tendría 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 tendrán al utilizar nuestra herramienta
que estamos desarrollando.
2.2.4. Diagrama de relación entre los objetos
Se encuentra la relación que existe entre tipos de objetos con otros
tipos de objetos.
En el Anexo 2.5 se puede apreciar el Diagrama de relación 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 relación entre los objetos
para el Usuario, la grafica nos detalla que información requiere nuestra
herramienta necesita del usuario para realizar los procesos que se le
tenga autorizado al usuario.
29
2.2.5. Análisis del Comportamiento de Objetos (ACO)
En esta parte del análisis 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 términos
de esquemas de objetos puesto que los eventos cambian el estado de
determinados tipos de objetos
En el análisis 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
relación 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 administración 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 ocasión detallaremos gráficamente las
opciones que tendrá el usuario final al momento de trabajar con
nuestro producto.
31
CAPITULO 3
3. DISEÑO DEL PROYECTO
3.1.
Diseño de la Estructura y Comportamiento de Objetos (DEO)
Las clases.- Los tipos de objetos en el AEO serán la guía en esta decisión.
Las estructuras de datos.- Se puede hacer un diagrama para representar la
estructura de datos.
Las operaciones y los métodos de cada clase.- Se enumeran las operaciones
y se especifiquen sus métodos en determinado momento.
3.2. Diseño Orientado a Objetos
32
3.2.1. Diagrama de clases
Los diagramas de clases se utilizan para modelar la vista de diseño
estática de un sistema.
Estos diagramas son los más importantes del diseño orientado a
objetos, son la piedra angular de nuestro diseño.
Contienen toda la información 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 diseño estática o la vista de
procesos estática 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
ejecución.
Anexo 3.1
3.2.3. Diagrama de actividades
Los diagramas de actividades muestran el flujo de actividades, una
actividad produce finalmente una acción.
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.
 También muestra las actividades a realizar del usuario que va a
utilizar la cuenta de correo creada primeramente por el
administrador.
CAPÍTULO 4
4. DESARROLLO Y PRUEBAS DEL SISTEMA
4.1.
Desarrollo del sistema
35
En primera instancia se procedió con la creación de la Base de Datos dicha
Base de Datos esta creada en Mysql.
La selección 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. Creación de los componentes
Una vez culminada la etapa de levantamiento de datos y del análisis de
factibilidad del proyecto se procedió a la creación de los componentes para la
cual se utilizó la metodología de módulos, tomando como referencia el
modelo de desarrollo en espiral, ya que al culminar un módulo se inicia otro,
o en el caso que se requiera también se los puede trabajar en paralelo.
El orden de desarrollo se detalla a continuación:
Análisis de datos.
Desarrollo
Implementación
36
Pruebas
4.3. Seguridades
En lo que concierne a las seguridades del sistema están enmarcadas en
políticas 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 daño en mi entorno de red. Por lo tanto, se debe tener
presente el mantener la integridad y seguridad de la información, la cual es
una de las partes más sensibles y delicadas que tiene toda organización.
Los aspectos de seguridad están marcados bajo los siguientes parámetros:

Sistema operativo

Base de Datos

Ejecución de políticas.

Respaldos de la información.

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 daño. Por lo que su operación
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, tendrán la
capacidad de modificar el código original para que pueda trabajar en
diversos ambientes. Además, 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, deberán
tener restringido el acceso a carpetas y archivos críticos del sistema.
Ya que el programa podría ser usado para extraer algo mas que los
archivos de los passwords. Hay que tener mucha precaución con esto,
de esta manera podemos prevenir ataques dirigidos hacia la
información de nuestra organización.
38
4.3.2. Base de Datos
Los registros del análisis, especialmente las claves descifradas, se
guardarán en la base de datos, a la cual solo tendrá acceso el
encargado de manejar o administrar esta herramienta, la misma puede
ser acezada físicamente por medio de un usuario y clave, definidos en
la creación de la misma.
4.3.3. Humano
Uno de los aspectos mas importantes es el Humano, es
seguramente el mas difícil de controlar. Uno de los riesgos que
mas se les debe tener presente durante la elaboración de un
sistema es que el programa caiga en posesión de personas no
autorizadas o que la contraseña del mismo sea divulgada, con
esto todo las políticas de seguridad no cumplirán el objetivo
para las cuales fueron creadas.
Se tendrá especial cuidado con los puntos arriba mencionados,
ya que la herramienta puede ser modificado fácilmente por
personal que tengan los conocimientos suficientes, para alterar
39
el objetivo de la misma y causar perjuicios a la organización 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
múltiples tipos de pruebas entre las que podemos resaltar encontramos las
siguientes:

Verificación y validación

Pruebas de envío y recepción.

Pruebas de creación y modificación.

Pruebas de respaldos.

Pruebas de seguridad.

Calidad del sistema.
40
4.4.1. Verificación y validación
Estos dos puntos van ligados, ya que el tipo de prueba y analiza que
no existan errores en la implementación, y la validación analiza que lo
que se define en las especificaciones iniciales guarde relación 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 codificación extra en
todos los casos.
Se verificó que el sistema realice las operaciones de auditoria para las
cuales fue diseñado. El código original entregado solo realiza este tipo
de operación, y no va mas allá de lo que se propuso inicialmente, por
motivos de seguridad, se anularon líneas “peligrosas” en los scripts de
auditoria, las cuales podían causar grandes problemas si el programa
cae en manos de personas ajenas al entorno de la empresa.
41
4.4.2. Pruebas de envío y recepción
En este tipo de pruebas, se evalúa el desempeño de cada módulo 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, también se le solicito una notificación de la
entrega del correo, de esta manera observamos que un objetivo muy
importante estaba funcionando de manera optima.
4.4.3. Pruebas de creación y modificación
En lo que concierne a la creación y modificación de usuarios o grupos
llama la atención 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 creación 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 políticas 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
añadiendo archivos maliciosos, se puede lograr mucho más 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 periódicamente 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 algún 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á demás
aplicar normas de moral y ética con respecto a los administradores del
sistema, para que ellos no incurran en algún 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 algún código malicioso, con el fin de no dar un mal uso
de la herramienta.
4.6. Modelo de datos
44
En el proceso de abstracción que conduce a la creación de una base de
datos desempeña una función prioritaria el modelo de datos. El modelo de
datos como abstracción del universo de discurso, es el enfoque utilizado para
la representación de las entidades y sus características dentro de la base de
datos.
Los objetivos del modelo de datos son dos:
Formalización: definir formalmente las estructuras permitidas y las
restricciones a fin de representar los datos de un SI.
Diseño: el modelo resultante es un elemento básico para el desarrollo de la
metodología de diseño de la base de datos.
Los diferentes modelos de datos comparten aunque con diferentes nombres
y notaciones unos elementos comunes, componentes básicos de la
representación de la realidad que realizan. Estos componentes se identifican
gracias a la clasificación y pueden identificarse conceptos estáticos y
conceptos dinámicos.
4.6.1. Modelo de Datos Orientado a Objetos
45
La importancia de la orientación a objeto recorta el tiempo que toma a
obtener resultados temporales. La orientación a objetos permite la
forma más simple en el manejo de los datos tanto para el diseño
relacional como la elaboración 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 conclusión que el margen de error
es bajo y las probabilidades que nuestra herramienta tenga algún 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 técnico suministrado
en este proyecto. Haremos entonces una revisión rápida de lo mínimo que
necesitamos para que nuestro software funcione de manera óptima.
5.1.1. Hardware
Los datos suministrados aquí son los requerimientos de hardware
mínimos que necesita el sistema para su funcionamiento. Se detallan
a continuación:

1 PC como Servidor de correo Linux
o Pentium III de 800 Mhz
o 256 Mb. de memória 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 operación 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
administración de correo en las empresas pequeñas 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 organización.
En el desarrollo de nuestra herramienta también 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 tenía 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.
También se llego a la conclusión que nuestro producto tiene
características 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 señalar en este breve resumen es
el comportamiento de nuestra herramienta a medida de que el número
de usuarios aumentaba y se comprobó que su comportamiento
continuaba estable y no se observaba algún 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 producción lo más 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 fácil de aprender y
manipular.
51
La confidencialidad de la información es otra de las propiedades
importantes que podemos señalar de nuestro producto debido a que
se detecto de esta necesidad en el estudio que se realizo previamente
a la sección de mercado a la que está dirigido esta herramienta, la
portabilidad y disponibilidad de la información son aspectos que toda
empresa o usuario final desea ya que le permite acceder desde
cualquier sitio geográfico y con recursos mínimos como es un
ordenador que tenga acceso a internet, esta portabilidad de la
información 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 información que intercambia con sus contactos los
cuales pueden ser de la misma organización o contactos externos y la
información 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 información que tenga almacenada en su buzón 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 políticas de seguridad como los que vamos a mencionar a
continuación:
1. Respaldar el buzón de correo en un periodo de tiempo en que
el administrador de correo o la necesidad de la organización lo
crea conveniente en función de sus actividades regulares.
2.
Cambio de contraseña en la cual el aplicativo le indicara al
usuario que cambie de clave según la frecuencia la cual está
definida por el administrador de correo.
3.
Para evitar el envío de archivos los cuales pueden contener
algún tipo de contenido peligroso o no permitido por la
organización que lo adquiera, el administrador tendrá la
potestad de indicar que tipo de archivos se descargue en el
buzón de correo.
4.
La implementación de un antivirus el cual realizara una
inspección del contenido de la información o los datos que
estén dirigidos a los usuarios finales.
53
GLOSARIO DE TÉRMINOS
54
Esta sección del documento ofrece un breve resumen de los significados de
ciertos términos técnicos en orden alfabético.
A
Ataque.- Agresión al sistema por parte de un pirata informático con algún
propósito específico.
Auditoria.- Proceso de revisión 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.
Autenticación.- Verificación de que el cliente sea quien dice ser para lograr
acceso al sistema.
B
Base de Datos.- Guarda los datos del sistema.
Backup.- Respaldo de información del sistema.
C
Cracker.- Pirata informático que busca acceder al sistema para causar daño.
Código Fuente.- Lenguaje mediante el cual fue programado el sistema.
Conexión.- Comunicación entre varias maquinas.
55
E
Eth0.- Interfaz de red en Linux
F
Firewall.- Conjunto de políticas de seguridad de acceso a computadoras.
Freeware.- Software gratuito.
G
GUI.- Interfaces gráficas de usuario.
H
Hackers.- Pirata informático que busca acceder a sistemas por diversión sin
causar perjuicio.
Hardware.- Parte física de una PC.
Hub.- Elemento físico de conexión en red.
I
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 comunicación entre la PC y el usuario.
56
L
LAN.- Red de área local.
Logs.- Archivos temporales, respaldo.
M
Maquina Virtual.- Software que permite la simulación de un computador.
MYSQL.- Software para crear una base de dato.
Multiplataforma.- Se puede trabajar sobre diferentes sistemas operativos sin
que afecte su desempeño.
O
Open Source. - Tecnología libre de distribución por la cual no se necesita
licencia.
P
Passwords.- Contraseña de acceso al sistema.
Paquetes.- Segmento de datos que se transmite de un lugar a otro.
Parámetros.- Datos que se envía a una función para que cumpla con su
propósito.
Periféricos.- Medios físicos del computador.
Políticas de Seguridad.- Conjunto de normas y reglas para mantener
seguro un sistema.
57
Protocolos. – Implementación de la lógica de una capa del modelo OSI.
R
Red.- Conjunto de maquinas que se comunican entre si.
Root.- Directorio raíz.
S
Servidor.- Equipo de computo, el cual esta recibiendo constante peticiones
de clientes para proveerle de algún servicio.
Software.- Programas en ejecución.
Sniffers.- Programa espía que lee todos los paquetes que viajan por la red.
Scripts. - Conjunto de líneas de códigos que permiten la ejecución de una
tarea en particular.
Switch.- Dispositivo de interconexión de redes de computadoras que opera
en la capa 2 del modelo OSI, este interconecta dos o más segmentos de
red.
T
Telnet.- Servicio que permite abrir una interfaz de comunicación.
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 relación entre los objetos para el Administrador
Anexo 2.6 Diagrama de relación 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 Matemáticas y Físicas
Carrera de Ingeniería en Sistemas
Computacionales
“Webmail Corporativo”
TESIS DE GRADO
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
Erazo Córdova Luis Eduardo
Jaramillo Ordóñez Raúl Andrés
Miranda Castro Zaida Yadira
GUAYAQUIL-ECUADOR
Año: 2008
AGRADECIMIENTO
Quedaremos eternamente agradecidos primeramente a Dios por la sabiduría que nos
dio. Agradecemos a nuestros padres por su apoyo incondicional y a todas las personas
que nos brindaron su respaldo durante la elaboración de nuestro proyecto y creyeron
en nuestra capacidad de lograr nuestros objetivos.
DEDICATORIA
El desarrollo de este proyecto así como la sustentación del mismo lo dedicamos
primeramente a Dios que nos dio la sabiduría para poder afrontar todos lo problemas
que se nos presentaron. También lo dedicamos a nuestros padres que por su apoyo
incondicional hemos podido realizar la culminación de nuestro proyecto de tesis.
TRIBUNAL DE GRADUACIÓN
Presidente del Tribunal
Segundo Vocal
Primer Vocal
Secretario
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),
perteneciendo a la Universidad de Guayaquil los derechos que generen la aplicación
de la misma”.
(Reglamento de Graduación de la Carrera de Ingeniería en sistemas
Computacionales, Art. 26)
______________________
Erazo Córdova Luis Eduardo
C.I. 0920317161
_______________________
Miranda Castro Zaida Yadira
C.I. 0922663729
_________________________
Jaramillo Ordóñez Raúl Andrés
C.I. 0923068852
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 organización 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. Además
este sistema radica en que no es necesario realizar ninguna configuración en ningún
cliente de correo. Puede accederse al correo desde cualquier emplazamiento solo se
necesita que exista una máquina con acceso a un navegador. La aplicación 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 administración de
cuentas de correo y sus parámetros.
INDICE GENERAL
AGRADECIMIENTO
DEDICATORIA
TRIBUNAL DE GRADUACIÓN
DECLARACIÓN EXPRESA
V
RESUMEN
INDICE GENERAL
II
III
IV
VI
VII
CAPITULO 1
1.1. Introduccion.
1.2. Requerimientos.
1.2.1. Requerimientos Software.
1.2.2. Requerimientos Hardware.
1.3. Panel Web Dominio.
1.3.1. Configuraciones del Servidor.
1
2
2
2
3
3
1.3.1.1. Configuración De La Interfaz De Red.
Configuración De Dominio.
1.4. Panel Web Administración.
1.4.1. Administración De Usuarios.
1.4.2. Administración De Cuentas.
1.4.3. Administración De Interfaz.
Copias De Seguridad.
1.5. Mensajes De Error.
1.6. Sesión Del Webmail Horde.
3
8
9
10
18
23
28
30
33
CAPITULO 2
Introducción.
Funcionamiento.
Servicios que deben de estar activos.
Configuraciones.
Configuraciones del dominio.
Configuraciones de parámetros de cuentas.
Direcciones.
Codificación del proyecto.
Scripts del proyecto.
37
38
39
40
40
48
52
54
54
Sección administración interfaz.
54
Sección administración cuenta.
60
2.3.1.3. Sección administración de usuarios.
2.3.1.4. Sección administración de correos.
2.3.1.5. Sección administración de seguridades.
2.4. Código PHP del proyecto.
2.4.1. Sección administración de interfaz.
2.4.2. Sección administración de cuenta.
2.4.3. Sección administración de usuarios.
2.4.4. Sección administración de seguridades.
2.4.5. Sección administración de correos.
63
65
72
74
74
92
110
145
156
CAPITULO 1
MANUAL DE USUARIO
Introducción
Webmail es un sistema de correo basada en una plataforma web el cual permitirá
verificar los mensajes de correo electrónico utilizando un navegador a su elección. La
aplicación 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 aplicación 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 asignación de cuotas a los usuarios. El segundo es para la creación de las
cuentas de correo y la administración de las mismas tales como modificación de
contraseñas, 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 organización para la asignación 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 aplicación es un navegador web a su elección.
Requerimiento Hardware
En lo que a hardware se refiere lo que necesitamos es una PC con características
básicas, 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 contraseña.
1.3.1. Configuraciones Del Servidor
2
1.3.1.1. Configuración De La Interfaz De Red
Para poder ingresar y poder configurar el propio dominio de su empresa, realice los
siguientes pasos:
Incorpore la dirección en su browser. La dirección 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 realizarán las configuraciones necesarias para la creación del dominio de su
organización.
Luego le aparecerá un cuadro donde debe incorporar su nombre y contraseña del
usuario en los campos correspondientes. Se muestra en la figura 1.1
El usuario y la contraseña le serán asignados por el diseñador del proyecto.
Haga clic en "Aceptar" y enseguida la aplicación le dará la bienvenida mediante la
siguiente pantalla:
Figura 1.1
Luego haga clic en la opción “Administración de Servidor de Correo” le aparecerá
una nueva opción que dice “Configuraciones de Red”, seleccionar esa opción y da
clic sobre la misma, como se lo muestra a continuación:
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
estación. 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”.
Configuración 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 números, 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
también 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 escribiría
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 Administración
Para poder ingresar a este segmento de la aplicación debe realizar los siguientes
pasos:
Incorpore la dirección en su navegador. La dirección debe estar de la siguiente forma:
ᄉ https://www.syscomsa.com/ᄉ sw_syscomsa
Luego le aparecerá un cuadro donde debe incorporar su nombre y contraseña del
usuario en los campos correspondientes, este usuario y clave es diferente a la
configuración de dominio y red.
Figura 1.7
5
Haga clic en "Enviar" y enseguida la aplicación le dará la bienvenida.
1.4.1. Administración de Usuarios
En esta sección encontrará varias opciones para la administración de los usuarios y
sus cuentas de correo.
La ventana a continuación 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 opción que dice
“Usuarios” que se encuentra en la parte de arriba de la ventana.
Se presentarán las siguientes opciones presentadas en la figura 1.9.
Figura 1.8
Creación de Usuarios
En la opción de “Creación 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 están descritos.
Figura 1.9
6
Recuerde que no puede dejar campos vacíos ni tampoco ingresar caracteres
especiales, solo en la caja de texto del password puede ingresar números, letras y
caracteres especiales.
Una vez que haya ingresado todos los campos hay que dar clic en el botón “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 consideración que al crear un usuario debe de darle acceso en la opción de
Control de acceso que se redacta mas adelante.
Creación de Grupos
En la opción de “Creación de Grupos” ingrese el nombre del nuevo departamento que
desee crear. Luego hay que dar un clic en el botón “Crear”. Si el departamento fue
creado saldrá un mensaje que la operación fue exitosa. A continuación se muestra la
pantalla en la figura 1.11.
Figura 1.10
Figura 1.11
7
Creación de Usuarios por Lista
En la opción de “Creación de Usuarios por Lista” se debe ingresar la ruta completa de
la ubicación 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 ubicación seleccionar botón
“Enviar” y automáticamente se generara el archivo y se crearan los usuarios
exitosamente. En caso de error en la creación saldrá un mensaje del error que se
produjo.
En la opción “Modificación de Usuarios” se tiene que seleccionar el usuario al que
queremos modificar sus datos, selecciónandolo de la lista que se muestra. Damos clic
en el botón “Buscar” y luego saldrá una pantalla igual a la de creación de usuario pero
con los datos actuales para que lo podamos modificar. A continuación se muestra la
pantalla.
Figura 1.12
En la opción de “Modificación de Grupos” lo primero que tenemos que hacer es
seleccionar en nombre del departamento que deseamos modificar y dar clic al botón
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 opción de “Cambio de Claves” también seleccionamos de la lista el usuario al
cual le deseamos modificar su clave. Una vez que seleccionado damos clic en el
botón “Buscar” y mostrará otra pantalla donde debemos de ingresar la nueva
Figura
1.15 al usuario seleccionado. A continuación se muestra las pantallas
contraseña
asignada
que se presentaran al momento en que necesitemos modificar la clave.
Administración de Cuentas
Para acceder a este grupo de opciones debemos dar clic en la opción “Cuentas” que se
encuentra en la parte de arriba de la ventana.
Se te presentarán las siguientes opciones:
Figura 1.16
En la opción “Parámetros de Cuentas” se define cuales son los parámetros que se le
asigne a todas las cuentas de los usuarios que seFigura
creó. 1.17
Dentro de las opciones
múltiples tenemos las siguientes que se detallan una a una.
Figura 1.18
9
En la opción “Definición 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 tamaño antes de llegar al máximo que todavía no sobrepasa lo absoluto de la
cuota y la cuota absoluta es el tamaño máximo que puede llegar ya que una vez que
se llene ya no podrá almacenar mas correo.
En la opción “Definición 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 tamaño antes de llegar al máximo que todavía no sobrepasa lo absoluto de la
cuota y la cuota absoluta es el tamaño máximo que puede llegar ya que una vez que
se llene ya no podrá almacenar mas correo.
Figura 1.19
En la opción “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
nombre del usuario que ya esta creado previamente, luego se deberá
Figurael1.20
elegir las opciones del combo “Acción” que pueden ser ACEPTA que es para que el
usuario pueda enviar correo a diferentes dominios o DENIEGA que deniega todo
envío y recepción de correo.
10
.
En la opción “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 organización.
Si la opción que seleccionemos es IP o red entonces debemos ingresar una dirección
de IP Figura
de la red
que necesitemos bloquear.
1.21
Si la opción seleccionada es dominio de red entonces en la descripción tenemos que
ingresar el nombre del dominio que deamos que no ingrese a los correos de los
usuarios creados.
En la selección de Acción tenemos que definir si queremos bloquear, permitir o
denegar el acceso de lo que eijamos en “Opción”.
Se debe elegir el nombre del usuario que ya esta creado previamente, luego tenemos
que elegir las opciones del combo “Acción” que pueden ser ACEPTA que es para que
el usuario pueda enviar correo a diferentes dominios o DENIEGA que deniega todo
envío y recepción de correo.
Administración de Interfaz
Para acceder a este grupo de opciones tenemos que dar clic en la opción que dice
“Interfaz” que se encuentra en la parte de arriba de la ventana.
Se te presentarán las siguientes opciones.
Figura 1.22
Figura 1.23
11
En la opción de “Idioma y Hora” podemos seleccionar el idioma el cual queramos
que manejen todas las cuentas de correo. También podemos elegir la zona horaria en
la que se encuentre la empresa para que automáticamente 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 botón
“Grabar” para que se efectúen los cambios solicitados. A continuación se presenta la
pantalla de muestra.
En la opción de “Opciones de Visualización” encontraremos algunas opciones que
tenemos que seleccionar. Recuerda que no puedemos dejar campos vacíos.
La opción de aplicación Inicial es para determinar que es lo que inicialmente
queremos que se aparezca al iniciar sesión los usuarios.
Podemos seleccionar si deseamos que se muestre la hora de la última sesión que tuvo
el usuario.
Figura 1.24
También podemos seleccionar en que tiempo se actualiza la visualización de los
buzones en la opción de “actualizar vista del portal”.
Existen también 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 sesión.
En la ruta de la imagen ingresa la ubicación 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 opción de “Tareas de Inicio de Sesión en Correo (Parte I)” también tenemos
que seleccionar varias opciones que se muestran en la pantalla.
En la vista o buzón mostrados al iniciar sesión podemos seleccionar que es lo que
deseamos que el usuario visualice cuando ingrese a su sesión. 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 automáticamente 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 sesión.
También podemos eliminar los adjuntos vinculados cada inicio de mes y definir
cuantos meses deseas guardar los adjuntos vinculados.
En el mantenimiento de inicio de sesión si necesitamos realizar operaciones de
mantenimiento y si antes de hacerlo se solicita la confirmación del mismo.
Una vez que completemos la selección damos clic en el botón “Grabar” y si no
existen campos vacíos o no se presenta algún error se efectuaran los cambios
exitosamente.
En la opción de tareas de inicio de sesión de correo del Horde Parte II encontraremos
que podemos eliminar los mensajes de la papelera y con que frecuencia la quieres
realizar.
También eliminar la carpeta Spam y con que frecuencia.
Figura 1.26
Figura 1.27
13
1.4.4. Copias de Seguridad
En esta sección podremos administrar las copias de seguridad de los buzones.
En la opción 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 opción de “Copias Horarios Múltiples” se puede realizar copias de seguridad de
una forma más compleja ingresando los minutos, horas, día del mes, mes y el día de
la semana.
Figura 1.28
En la opción de “Restauración de Copias de Seguridad” se podrá restaurar las
carpetas del correo de un usuario especifico o sino también 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 aparecerán a medida que usted utilice esta
herramienta.
Si los datos de IP que ingreso no son los correctos, le saldrá un mensaje
error
que
Delede
clic
en Aceptar
se muestra a continuación:
y vuelva a ingresar
los datos.
Si se ingresa una letra mayúscula en campos que solo sean de ingresar caracteres
minúsculas entones aparecerá el mensaje de error de la figura siguiente.
Figura 1.31
Si digitamos una letra mayúscula en campos que solo sean de ingresar caracteres
minúsculas entones aparecerá el mensaje de error de la figura siguiente.
Figura 1.32
Si ingresamos la mascara de red erróneamente aparecerá un mensaje de error
avisándo que la mascara que ingresada es invalida.
Figura 1.33
Figura 1.34
15
1.6. Sesión del Webmail Horde
Para iniciar sesión en el Horde se tiene que ingresar en el URL la siguiente dirección:
ᄉ http://www.syscomsa.com/horde ᄉ
A continuación de eso te saldrá la siguiente pantalla en el navegador:
Luego digitar el usuario y contraseña asignada por el administrador y seleccionar
“Iniciar sesión”. 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 también 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 búsqueda 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 sesión del usuario que se ingreso entonces
seleccionamos en el icono de la figura
a continuación.
Figura
1.41
Figura 1.42
CAPITULO 2
17
2. MANUAL TECNICO
Introducción
El objeto de este manual es describir las funciones y configuración de la aplicación
desarrollada para administrar el webmail Horde y la creación de un dominio propio
de la organización.
Esta aplicación es una cómoda herramienta mediante la cual vamos a poder
configurar todo aquello que podríamos configurar con un programa hecho para estos
menesteres, pero ayudados de nuestro navegador favorito y a golpe de ratón igual que
estuviéramos 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
válidos 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
configuración 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 administración se requiere de un
2.1
username Figura
y un pasword,
para la parte de configuración inicial se necesita otro
usuario y contraseña 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 sección 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.
que deben
activos
Servicios
estar
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 están activos en el servidor para el correcto funcionamiento de
la aplicación podemos estar seguros que realizaremos las debidas configuraciones.
2.2.2. Configuraciones
2.2.2.1. Configuraciones del dominio
Para la configuración del dominio y la interfaz, ingresamos a la primera sección la
cual la utilizaremos solo por una vez, introducimos siguiente dirección en nuestro
navegador favorito.
ᄉ http://www.syscomsa.com/sw_syscomsa ᄉ
19
Observe que es https y no http, ya que al ser encriptada la comunicación habrá que
utilizar este protocolo. La primera vez que accedamos a esta dirección nos saldrá un
mensaje advirtiéndonos 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 creación 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 línea:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,
Name=MTA')dnl
Elimine de dicho parámetro 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 línea:
comentar esta configuración precediendo un dnl, del siguiente
modo:
dnl FEATURE(`accept_unresolvable_domains')dnl
Habilitar las siguientes lineas y adaptar valores para definir la
DAEMON_OPTIONS
máscara que utilizará el servidor:
MASQUERADE_AS(`dominio.com')dnl
De modo predefinido Sendmail escucha peticiones a través de la interfaz de retorno
del sistema a través de IPv4 (127.0.0.1) y no a través de otros dispositivos de red.
Solo se necesita eliminar la restricción 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 portátil, está se utiliza el parámetro
FEATURE(`accept_unresolvable_domains').
20
Sin embargo se recomienda desactivar esta función a fin de impedir aceptar correo de
dominios inexistentes (generalmente utilizado para el envío 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 parámetro:
Figura
2.4dominio
# Protocols
webind
want to be serving:
Los
archivos
del
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;
Configuración De Apache
200.93.192.161;
};
Están 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 tamaño 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
el
archive
de
configuracion
del apache y añadir los
Figura
2.8
SetInputFilter PHP
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 información del webmail horde.
# One NameVirtualHost per IP address
NameVirtualHost 192.168.3.1:80
# NameVirtualHost
192.168.3.2:80
Creación de directorios
Crear todos los directorios
<VirtualHost
Figura
2.10 192.168.3.1:80>
necesarios:
ServerAdmin
mail@syscomsa.com
# mkdir
Para reiniciar los servicios
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
service
httpd
configtest
Creación de los archivos#de
la2.11
figura
para
realizar las pruebas necesarias.
Creación de un archivo temporal:
# touch
Figura
2.12
/var/www/html/mail/horde/imp/test
La Ip del servidor es la dirección
de cuatro octetos separados cada uno por un punto,
esta dirección debe estar entre .html
los rangos de una Clase C que comprende del número
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 ilustración de las clases de dirección a continuación 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.
Además de indicar que el intervalo de direcciones 127.x.x.x está reservado como
dirección de loopback, con propósitos 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 información se encuentra con una validación
para que solo acepte los valores requeridos especificados, no puede existir un campo
vacío, no es permitido los caracteres especiales ni valores que sobresalgan a los
intervalos detallados anteriormente.
2.2.2.2. Configuraciones de parámetros 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 electrónico, es posible para un atacante inundar
fácilmente el servidor y desencadenar en una denegación de servicio. Fenómenos
como el denominado correo masivo no solicitado o Spam no hacen las cosas más
fáciles y la administración de un servidor de correo puede tornarse una pesadilla.
Añadir opciones avanzadas de seguridad se convierte en algo indispensable.
Máximo número Destinatario por correo
Este parámetro sirve para establecer un número máximo de destinatarios para un
mensaje de correo electrónico.
De modo predefinido Sendmail establece un máximo de 256 destinatarios.
Tiempo letargo destinatario excedido
Este parámetro sirve para establecer el tiempo de letargo que se utilizará por cada
destinatario que sobrepase el límite establecido por el Máximo número Destinatario
por correo. De modo predefinido Sendmail no establece tiempo de letargo.
Habilitación de banderas/seguridad
Este parámetro 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. También deshabilita las notificaciones de entrega, el cual es un mecanismo
comunmente utilizado por quienes envían 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.
Tamaño Maximo cabecera (kb)
Esté parámetro se utiliza para definir el tamaño máximo 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 tamaño de las cabeceras hace más difícil la ejecución de guión que
explote vulnerabilidades recientes (desbordamientos de búfer) en UW IMAP, Outlook
y Outlook Express.
La mayor parte de los mensajes de correo electrónico tendrán cabeceras de menos de
2 Kb (2048 bytes). Un mensaje de correo electrónico ordinario, por muy exagerado
que resulte el tamaño de la cabecera, rara vez utilizará una cabecera que sobrepase los
5 Kb o 6 Kb, es decir, de 5120 o 6144 bytes
Tamaño Máxima mensajes (MB)
Este parámetro sirve para especificar el tamaño máximo permitido para un mensaje
de correo electrónico en bytes. Puede especificarse lo que el administrador considera
apropiado.
Conexiones simultaneas permitidos
Este parámetro sirve para especificar cuantos procesos hijos se permitirán
simultáneamente en el servidor de correo. De modo predefinido sendmail no
establece límites para este parámetro. Si se sobre pasa el límite de conexiones
simultáneas, el resto serán demoradas hasta que se terminen las conexiones existentes
y dejen lugar para nuevas conexiones.
Conexiones máximas por segundo
Este parámetro sirve para establecer el número de conexiones máximas por segundo.
De modo predefinido sendmail no establece límites para este parámetro.
2.2.3. Direcciones
Las direcciones donde están las configuraciones, son las siguientes:
/var/www/html/sw_syscomsa/
En esta ruta se encuentra todo el código html del diseño de la página web de la
aplicación además del código php.
/var/www/html/sw_syscomsa/webpages/ ( se encuentran las subcarpetas que
contienen los códigos 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 códigos correspondientes a las configuraciones de la administración de
la interfaz del webmail que utilizamos que es el “Horde” en el servidor Linux.
/var/www/html/sw_syscomsa/webpages/administración_cuenta ( Los archivos que
contienen las configuraciones que realizan la administración de la cuenta de los
usuarios, aquí están los códigos que nos ayudara a elegir los parámetros de las cuotas
de usuario.
/var/www/html/sw_syscomsa/webpages/administración_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 asignación 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. Sección administración interfaz.
Esta sección 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
Sección administración cuenta.
Esta sección 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
Sección administración usuarios.
Esta sección 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
Sección administración de servidor de correos.
Esta sección 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/networkscripts/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/networkscripts/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/networkscripts/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"
Sección administración de seguridades.
Esta sección 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.
Sección administración interfaz.
Esta sección 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 sesión');
$sino = array ('1' => 'SI', '0' => 'NO');
$sino2 = array ('true' => 'SI', 'false' => 'NO');
$form->addField(new LabelFieldtitulo('Tareas de Inicio de Sesión 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 sesión');
$sino = array ('1' => 'SI', '0' => 'NO');
$form->addField(new LabelFieldtitulo('Tareas de Inicio de Sesión 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' => '‭Arabic (Oman) ‮
(العربية)',
'ar_SY' => '‭Arabic (Syria) ‮
(العربية)',
'id_ID' => 'Bahasa Indonesia','bs_BA' => 'Bosanski','bg_BG' => '‭Bulgarian
(Българск&#x
0438;)',
'ca_ES' => 'Català',
'zh_CN' => '‭Chinese (Simplified)
(简体中文)',
'zh_TW' => '‭Chinese (Traditional)
(正體中文)',
'cs_CZ' => '‭Czech (Česky)', 'da_DK' => 'Dansk', 'de_DE' =>
'Deutsch',
'en_US' => '‭English (American)', 'en_GB' => '‭English (British)',
'en_CA' => '‭English (Canadian)', 'es_ES' => 'Español', 'et_EE' =>
'Eesti',
'fr_FR' => 'Français', 'gl_ES' => 'Galego', 'el_GR' => '‭Greek
(Ελληνικά)',
'he_IL' => '‭Hebrew ‮
(עברית)',
'is_IS' => 'Íslenska', 'it_IT' => 'Italiano',
'ja_JP' => '‭Japanese (日本語)',
'km_KH' => '‭Khmer (ខ្មែរ)',
'ko_KR' => '‭Korean (한국어)',
'lv_LV' => 'Latviešu', 'lt_LT' => 'Lietuvių', 'mk_MK' =>
'‭Macedonian
(Македонс&#x
043a;и)',
'hu_HU' => 'Magyar', 'nl_NL' => 'Nederlands', 'nb_NO' => 'Norsk bokmål',
'nn_NO' => 'Norsk nynorsk',
'fa_IR' => '‭Persian ‮
(فارسى)',
'pl_PL' => 'Polski', 'pt_PT' => 'Português', 'pt_BR' => 'Português
Brasileiro',
86
'ro_RO' => 'Românä',
'ru_RU' => '‭Russian
(Русский)',
'sk_SK' => '‭Slovak (Slovenčina)',
'sl_SI' => '‭Slovenian (Slovenščina)', 'fi_FI' => 'Suomi',
'sv_SE' => 'Svenska', 'th_TH' => '‭Thai (ไทย)',
'tr_TR' => 'Türkçe', 'uk_UA' => '‭Ukrainian
(Українсь&#x
043a;а)',
);
$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('Definición 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 Púrpura',
'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'=>'Sólo texto',
'icon'=>'Sólo 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 Visualización 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 Redacción 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 Redacción de mensajes',
'redamensa'));
$form->addField(new RadioButtonField('¿Redactar mensajes en una ventana
separada? ', 'composepopup',true, $sino));
$form->addField(new PopupField('Ubicación por omisión del cursor en el
área de texto de redacción', '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 ortografía 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>
Sección administración cuenta.
Esta sección 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('Definición de los Parametros de las
Cuentas', 'defparacta'));
$form->addField(new LabelFieldsubtitulo('Opciones de los Parametros de
Cuentas', 'defparacta'));
$form->addField(new PopupField('Tamaño Maximo mensajes (MB):',
'maxmens', true, $opc1));
$form->addField(new LabelFieldmensaje('Define el tamaño maximo de
mensaje de correo electrónico', 'msn5'));
$form->addField(new PopupField('Máximo 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('Máximo Tamaño de mensajes reenviados o
contestados:', 'replylimit',true, $opc1));
$form->addField(new LabelFieldmensaje('Define el tamaño 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 Sesión', 'inicisesion'));
$form->addField(new RadioButtonField('¿Realizar operaciones de
mantenimiento al iniciar sesión?', 'mantenimiento',true, $sino));
$form->addField(new RadioButtonField('¿Solicitar confirmación 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('Definición de Cuotas Usuarios',
'defcuota'));
$form->addField(new LabelFieldsubtitulo('Descripción 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('Definición de Cuotas Grupo',
'defcuota'));
$form->addField(new LabelFieldsubtitulo('Descripción 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('Opción: ', 'opcion', true, $op));
$form->addField(new PopupField('Acción: ', '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/>";
#
Exitosamente<br/>";
if ($status == 0)
{
echo "<br/>".$tmp."<br/>";
echo "Definicion de cuotas realizado
$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('Descripción: ', 'descrip', 25,2,30));
$form->addField(new HiddenField('Campo: ', 'campo'));
//$form->addField(new RadioButtonField('Usuario/Grupo:', 'usugrup',false,
$eleccion));
149
$form->addField(new PopupField('Opción: ', 'opcion', true, $op));
$form->addField(new PopupField('Acción: ', '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/>";
#
Exitosamente<br/>";
if ($status == 0)
{
echo "<br/>".$tmp."<br/>";
echo "Definicion de cuotas realizado
$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>
Sección administración usuarios.
Esta sección 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('Creación 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('Información 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('Asignación 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('Creación 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>Creación 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('Creación de Usuarios desde Archivo',
'creausualista'));
$form->addField(new LabelFieldmensaje('Aquí podrás 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(Año-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('Modificación 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('Asignación 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('Modificación 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('Modificación 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 Contraseña</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 Contraseña</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('Modificación de Contraseñas',
'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('Modificación de Contraseñas',
'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 Contraseña</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('Modificación de Contraseñas: '.'"'.
$usuario_a_mod.'"', 'modusua'));
229
$form->addField(new LabelFieldmensaje('Escriba la Contraseña 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 "Contraseña Modificada
Exitosamente<br/>";
}else
{
echo "Contraseña 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>
Sección administración seguridades.
Esta sección 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('Creación 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 / Día-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('Creación 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 Múltiple',
'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, Miércoles=3, Jueves=4, Viernes=5, Sábado=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
guión, 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 "Restauración 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>
Sección administración de servidores de correo
Esta sección 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>Configuración 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('Configuración 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('Configuración 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('Configuración 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('Configuración Dominio de Red',
'confired'));
$form->addField(new LabelFieldsubtitulo('La configuración 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", "200805-18 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("4", "Seguridades", "0", "0", "1", "2008-0518 00:28:37", "1");
INSERT INTO opcion_vinculo VALUES("6", "Creació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ó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ó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ó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ó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ámetros de Cuentas",
"webpages/administracion_cuenta/pw_parametros_cuenta.php", "2", "1", "2008-0518 00:28:37", "1");
#INSERT INTO opcion_vinculo VALUES("13", "Definició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ó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ó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-0518 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ón",
"webpages/administracio_interfaz/pw_opciones_visualizacion.php", "3", "1", "200805-18 00:28:37", "1");
#INSERT INTO opcion_vinculo VALUES("##", "Mantenimiento de Inicio de
Sesió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ó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ó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ón de Servidor
de Correo", "0", "0", "2", "2008-05-22 00:00:00", "1");
INSERT INTO opcion_vinculo VALUES("26", "Configuració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ón de copias de
seguridad", "webpages/seguridades/pw_restauracion_copias.php", "4", "1", "2008-0522 00:00:00", "1");
INSERT INTO opcion_vinculo VALUES("28", "Opciones de Redacció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"> </td>
<td bgcolor="#0099CC"> </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"> </td>
<td bgcolor="#0099CC"> </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í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"> </p>
<p align="justify" class="Estilo8">Syscomsa se complace en darle la
bienvenida a nuestro Wizard de configuraciones vía Web. Mediante este
wizard web usted podrá efectuar modificaciones a su servidor de Webmail
Corporativo. Esta herramienta permitirá realizar modificaciones del
servidor de correo, cambiar las configuraciones de parámetros de correo. La
configuración de usuarios así como la configuración de
interfaz gráfica se lo podrá modifcar.</p>
<p class="Estilo8"> </p></td>
</tr>
<tr>
<td valign="top" align="left"><align="justify" class="Estilo8">Esperando que
este producto permita satisfacer las necesidades de su organizaciá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úl
Andrés Jaramillo Ordóñ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
}
?>
Descargar