capÍtulo 1 -...
Post on 05-Oct-2018
233 Views
Preview:
TRANSCRIPT
1
CAPÍTULO 1
1. INTRODUCCIÓN
Este proyecto trata de implementar una
serie de aplicaciones que permitan
administrar el acceso a internet por
medio de un portal cautivo.
El proyecto se encargará de brindar
una solución para poder llevar un
control tipo HOSTPOST (Un hotspot
(en inglés ‘punto caliente’) es una zona
de cobertura Wi-Fi, en el que un punto
de acceso(access point) o varios
proveen servicios de red a través de un
Proveedor de Servicios de Internet
inalámbrico(wisp) dentro de una red
2
inalámbrica, teniendo que autenticarse contra un servidor Linux que se
encargará de validar el usuario y la clave con la mac addres del usuario, y
dándole permiso de navegación por un tiempo determinado ( tiempo
comprado 1 hora, 2 horas, etc. etc.), dependiendo del tiempo que desee.
Básicamente el control de acceso a la plataforma cumple con dos normas de
validación:
Validación por usuario y contraseña.
Se usarán herramientas de software y hardware para satisfacer los
requerimientos que el proyecto precisa, orientado al control de acceso y
distribución del internet.
Implementación
Hay varias formas de implementar un portal cautivo:
● Redirección por HTTP: Se intercepta la primera petición HTTP del cliente, y
se le envía un data grama de respuesta que contiene un “HTTP Status Code
302” para redirigir al cliente hacia el portal cautivo.
● Redirección por DNS: Ante una petición DNS de un cliente no autorizado,
en lugar de devolver la dirección IP correcta, se retorna la dirección IP del
portal cautivo.
3
1.1.- ANTECEDENTES
¿Qué es un cyber campus con portal cautivo?
Un cyber campus con portal cautivo es un servicio web para el acceso a
Internet. Con él se recoge todo el tráfico http y se re direccionan estas
peticiones a un conjunto de páginas especiales, previamente definidas, como
paso previo para permitir al usuario la navegación normal.
Es decir, antes de que el usuario pueda salir a Internet, está obligado a pasar
por determinadas páginas en donde, normalmente, deberá autenticarse y se
le muestra información importante de diversa índole, como puede ser
instrucciones de uso, recomendaciones o acuerdos de utilización del servicio
de acceso a Internet. Una vez que el usuario cumple con los requisitos
exigidos en estas páginas iníciales, se permite su navegación a Internet con
toda normalidad, siempre y cuando los sitios que quiera visitar estén
permitidos.
Los portales cautivos operan detrás del firewall, cuando estos están
presentes y pueden combinarse con el trabajo de Proxy.
1.2.-PROBLEMÁTICA
El problema radica cuando la entidad que contrata el servicio de internet no
controla el acceso a este. Esto puede provocar un derroche de recursos, algo
que se debe evitar. Además restringir el acceso a ciertos sitios web.
4
Sin contar con el hecho que podamos tener “infiltrados” en nuestra conexión
provocaría una disminución en el buen servicio a ofrecer a los usuarios
potenciales (Quienes si pagan por el servicio).
1.3.-SOLUCION DE LA PROBLEMATICA
El proyecto dará solución a la problemática establecida encargándose de
brindar una solución para llevar un control tipo HOSTPOST dentro de una red
inalámbrica, teniendo que autenticarse contra un servidor Linux que será el
responsable de validar el usuario y la clave con la mac addres del usuario, y
así dar permiso de navegación por un tiempo determinado (tiempo comprado
1 hora, 2 Horas, etc. etc.), dependiendo del tiempo que desee.
1.4.-MISION Y VISION DEL PROYECTO
Visión
Que nosotros como estudiantes y próximos Ingenieros podamos saber
manejar y dar mejor usos a las redes inalámbricas (Wi-FI) que es lo último
en tecnología y en constante expansión. Esta tecnología novedosa permite
abaratar costos, simplificar instalaciones e implantaciones. Sin embargo, la
seguridad en este tipo de redes suele dejarse en segundo plano, cuando
realmente las implicaciones y riesgos que generan son casi siempre críticos.
5
En este curso, con un enfoque muy práctico y basándose en la gran calidad
de muchas herramientas de software libre se analizaran las distintas formas
de implantación segura, realizando estudios de casos de integración muy
comunes.
Dirigido a:
Responsables informáticos y profesionales en el área de las nuevas
tecnologías interesados en el aprendizaje de las distintas técnicas existentes
para proteger activa y pasivamente las redes inalámbricas.
Misión
Este proyecto tiene como misión brindar una nueva opción en portal cautivo
para la gestión de acceso a internet. Permitir a los Administradores de la red
wi-fi poder asignar las tarifas disponibles para la venta del tiempo de
navegación en internet a través del portal, controlando el ancho de banda
para que sea más rápido la navegación a los usuarios que compren este
servicio.
1.5.-OBJETIVOS DEL PROYECTO
1.5.1.-Objetivo General
Investigar, estudiar e implementar el control de acceso a usuarios
para una red inalámbrica y así elevar la seguridad de la red Wi - Fi
6
a un nivel avanzado. Interactuando entre varias herramientas
mediante un sistema web para la fácil administración.
1.5.2.-Objetivos Específicos del Proyecto
• Montar un Cyber campus con portal cautivo para validación de
usuario-contraseña. Exigiéndole al usuario a logonearse primero
antes de ingresar a internet.
• Validar la autenticación por usuario-contraseña contra el
servidor.
• Integrar un servidor de bases de datos al sistema de validación,
para guardar registros de clientes, históricos, etc.
• Restringir el acceso a páginas que el administrador considere
inadecuadas.
• Evitar el uso excesivo de la conexión gratuita (mal uso del
ancho de banda)
• Generar reportes que ayudarán a la administración del sistema.
1.5.2.1.-Objetivos del Administrador
Es organizar y controlar las acciones que son realizadas por
los clientes de nuestro cyber campus, denegando el acceso a
ciertos sitios web en caso de ser requerida esta acción.
7
Además de llevar un control de los usuarios que ingresan y
salen del sistema.
1.5.2.2.-Objetivo del sistema
El sistema se encargará de guardar los registros en la base
de datos como la dirección IP (Asignada por el servidor), la
Mac, el tiempo comprado y utilizado por el cliente, la
fecha/hora de inicio y fin de la utilización del servicio de
internet.
1.5.2.3.-Objetivo del Usuario
El usuario final tendrá como objetivo recibir un excelente
servicio por parte del sistema y navegar con mayor
comodidad, cumpliendo las expectativas y necesidades que
tenga.
Beneficios
• Proporcionar un servicio de control de acceso web que está orientado
a redes abiertas, normalmente asociadas a enlaces inalámbricos,
pueden aplicarse en multitud de situaciones: eventos, aulas, puntos de
acceso tipo kiosco, puntos de venta-expositores, oficinas remotas, etc.
• Resolver de manera sencilla y limpia el acceso a Internet, facilitando la
conexión de usuarios externos y brindar la oportunidad de ofrecer
nuevas aplicaciones de conexión en entornos con pocos recursos
8
técnicos, no resultan viables. La facilidad de instalación, configuración
y uso, está propiciando su rápida difusión.
• Los administradores suelen hacerlo para que sean los propios
usuarios quienes se responsabilicen de sus acciones, y así evitar
problemas mayores.
• La aplicación nos permitirá administrar los usuarios, tiempo de
navegación, administrar usuario-tiempo.
• Podremos ver reportes
1.6.-ALCANCES DEL PROYECTO
• Se deberá ingresar una identificación y/o clave asignada antes de
acceder a Internet, con el objetivo de desalentar a quienes quieran usar estos
servicios sin ser autorizados.
• Guiar los usuarios Administradores para manipular el sistema
• Administrar los usuarios para clientes del sistema.
• Administrar tiempos de navegación.
• Administrar usuario-tiempo.
• Ver reportes sobre conexiones al servidor, usuarios y tiempos de
navegación.
• Revisar el consumo de los usuarios.
9
• Realizar bloqueo de ciertos sitios web que el administrador considere
no debería tener acceso.
• Reportes de ingresos al sistema
• Reportes de salidas del sistema
• Reportes Por usuario
• Reportes Por fecha.
• Creación de usuarios por lotes.
• Creación de usuarios de manera individual.
• Link de navegación gratuita. (http://www.cisc.ug.edu.ec)
1.7.-RECURSOS NECESARIOS PARA EL PROYECTO
Para la elaboración de nuestro Proyecto contamos con los siguientes
Recursos.
1.7.1.-Recurso Humano: El personal que está a cargo de este
Proyecto tendrá las siguientes funciones:
• Jessica Escobar, responsable de la parte de levantamiento de
información, Diseño y Desarrollo.
• Narcisa Orozco, responsable de Seguridades de la Base de
Datos (DBA), Diseño y Desarrollo.
10
• Annabel Castillo, responsable de desarrollo, diseño de redes y
control de calidad.
1.7.2.-Recurso de Software:
Estructuras de almacenamiento (base de datos: My SQL)
• Monitores de comunicaciones (redes)
• Lenguaje de programación (PHP, CGI), Linux Centos5, Apache,
MySQL, Squid, Madwifi, Bandwidth, Webmin, Dreamweaver 8,
Sarg.
• Metodologías de desarrollo (modelo en espiral)
• Control de seguridad y desarrollo (claves de acceso a usuarios)
• Licencia para Windows XP.
11
1.7.3.-Recurso de Hardware:
1.7.4.-Grupo de Trabajo: El grupo de trabajo está conformado
por tres personas. Todos cuentan con el conocimiento técnico
necesario para el desarrollo del proyecto. Entre las habilidades en
cada persona están:
• Que sean comunicativos
Equipo Características Valor Mínimo
Recomendado
Servidor
Procesador Pentium IV CPU 2.06 GHz
Memoria RAM 1 o 2 Gb
Disco Duro 250 o 300 Gb
Tarjeta de red
externa
10/100 D - Link
Tarjeta inalámbrica
para PC
TP – Link 54 Mbps
Cliente
Procesador Pentium IV cpu 2.8 Ghz
Memoria RAM 1Gb
Disco Duro 80Gb
Equipo para Pruebas
2 Portátiles
1 Ticketera o impresora
12
• Que sean creativos
• Facilidad de expresión
• Que tengan iniciativa
• Honradez y eficiencia en su trabajo
• Capacidad de trabajo en equipo y bajo presión
• Que sean responsables
1.7.5.-Entorno de Trabajo: Todos los integrantes del grupo
cuentan con la respectiva capacitación dictada los días lunes,
Miércoles y jueves así como también tutoría los días martes y
viernes.
Cada integrante cuenta con un computador asignado en un
laboratorio del seminario permitiendo desarrollar el proyecto sin
problemas.
El laboratorio cuenta con un buen suministro eléctrico para que en
caso de un fallo de electricidad se pueda guardar el trabajo
realizado y apagar los equipos. Se ha tratado en lo posible de
contar con un equipo de trabajo que tenga afinidad y empatía.
1.8.-METODOLOGÍA DEL PROYECTO
La estructura UML (lenguaje de modelamiento unificado) proporciona
modelar un esquema de 5 etapas distribuidas de la siguiente manera:
13
▪ Modelo de planificación.
▪ Modelo de análisis.
▪ Modelo de diseño.
▪ Modelo de implementación.
▪ Modelo de prueba.
▪ La metodología a usar es la Orientada a Objetos, considerando los
conceptos técnicos, métodos y medidas aplicables al análisis, diseño y
pruebas del software.
▪ Se realizará una codificación apegada a estándares, para promover la
usabilidad del proyecto y así poder explicar los beneficios del
desarrollo de nuestro portal.
▪ Siguiendo las reglas de los estándares Web, el objetivo primordial en
la codificación es separar el contenido de la apariencia definiendo la
estructura de la página mediante HTML y luego definiendo su
presentación mediante PHP y CGI.
De acuerdo con las investigaciones realizadas, optamos por seguir un
“MODELO EN ESPIRAL”.
Este es un modelo de proceso de software evolutivo para la ingeniería de
software, donde el software se desarrolla en una serie de versiones
incrementales, permitiendo al desarrollador y al cliente entender y
reaccionar a los riesgos en cada nivel evolutivo.
14
Utilizando la creación de prototipos como un mecanismo de reducción de
riesgo, pero, lo que es más importante permite a quien lo desarrolla
aplicar el enfoque de creación de prototipos en cualquier etapa de la
evolución de prototipos.
Con cada interacción alrededor de la espiral, se construyen sucesivas
versiones del software, cada vez más completa y, al final, al propio
sistema operacional que es el objetivo deseado.
Este modelo Consta de cuatro etapas o fases:
• Planificación: Se determinan los objetivos principales del
proyecto, las alternativas y los inconvenientes que pueda
presentar el proyecto.
• Análisis de Riesgo: Se determinan los riesgos que se
pueden presentar en la elaboración del proyecto, y se
analizan las posibles alternativas de solución de los mismos.
• Ingeniería: Se realiza el desarrollo del siguiente nivel.
• Evaluación del Cliente: Una vez se ha realizado el modelo
es revisado por el usuario final para determinar las fallas y se
continua con el ciclo hasta tener el producto final.
15
1.9.-POLĺTICAS DE SEGURIDAD
Encriptación de Claves: La clave será encriptada en el cliente y será
enviada así al servidor. De esta manera se protegerá la clave del cliente, nos
aseguraremos que cuando la clave este viajando hacia el servidor y si llegará
a ser interceptada no podría ser descifrada con facilidad.
Tamaño de la clave: Como la clave va a ser generada por el servidor el
tamaño va a variar.
Vigencia de la clave: La clave no va a tener vigencia de expiración debido a
que el usuario podrá hacer uso de ella y su tiempo comprado estará
disponible hasta que lo agote.
1.10.-APLICACIÓN DE FODA SOBRE EL PROYECTO “CYBER
CAMPUS CON PORTAL CAUTIVO”
El FODA es un instrumento estratégico de planificación utilizado en la
evaluación de Fortalezas, Oportunidades, Debilidades y Amenazas que
participan en un proyecto o en una empresa. Hecho correctamente, es una
poderosa herramienta que puede marcar una diferencia real en nuestro
proceso de planificación y útil para ayudarnos a buscar los objetivos.
1.10.1-Fortalezas:
El proyecto “Cyber campus con portal cautivo” entraría a
competir en el mercado con las diferentes empresas
16
desarrolladoras de software y administradoras de redes
inalámbricas.
▪ La aplicación le permitirá al usuario la accesibilidad a
internet, y la facilidad de movilidad que brinda una red
inalámbrica.
▪ Contamos con la tecnología adecuada que permite
desarrollar el proyecto.
▪ Los procesos de gestión del mantenimiento de la conexión
por medio del portal cautivo serán agilizados y operados
en tiempo real.
1.10.2.-Oportunidades:
▪ Saber escoger la tecnología adecuada referente al
hardware y software que sirvan para el eficiente desarrollo
del proyecto.
▪ Aprovechar la familiarización que tienen los usuarios con
respecto a la tecnología informática con el manejo de
páginas web, correo electrónico, etc.
▪ Utilizar la gran acogida que tiene el internet a nivel mundial
para favorecer la competencia en el mercado. Y mostrar la
utilidad de nuestro producto.
17
1.10.3.-Debilidades:
▪ Podrían existir usuarios no capacitados al utilizar y manejar
aplicaciones web.
▪ Existencia de clientes descuidados que olvidarán o
perdieran su usuario y contraseña.
▪ Desconocer con claridad la función del portal y sentirse
incomodo con este.
1.10.4.-Amenazas:
▪ Preferencias de algunos usuarios por el libre acceso a
páginas restringidas en nuestro portal.
▪ Haber escogido una tecnología poco apropiada provocando
que el funcionamiento del proyecto en general, no sea el
deseado.
18
CAPITULO 2
2.-ANÁLISIS
2.1.-Levantamiento de Información
Realizando un análisis del proceso
normal que se lleva en una relación,
Administrador–Cliente final.
Encontramos que para poder
satisfacer las necesidades de muchos
Clientes que están sujetos a enormes
Ocupaciones y limitaciones de tiempo
puedan tener un excelente servicio de
internet, esto quiere decir que sea
rápido de acuerdo a sus necesidades y
que tenga un nivel de protección y
seguridad mientras navega.
19
Para facilitar este proceso debe existir un mecanismo óptimo y oportuno que
le permita al cliente experimentar los beneficios ofrecidos por nuestro
servicio; se ha realizado una entrevista tanto a los Administradores de Cyber
y Clientes de Cyber con el fin de obtener criterios sobre la importancia de un
portal cautivo en la administración de internet por medios inalámbricos, los
resultados fueron favorables refiriéndonos a la seguridad del servicio, es
decir que se dieron opiniones donde la importancia de restringir la entrada a
la navegación por Internet en algunos lugares como: Hoteles, aeropuertos y
en nuestro caso un cyber campus donde son usados dispositivos
inalámbricos que brindan mayor comodidad al usuario, también
representarían un mayor riesgo, por la accesibilidad que genera para ciertos
“Intrusos”, considerando que se denominan así a los usuarios no
identificados como clientes.
2.2.-ANÁLISIS DE REQUERIMIENTOS
Dada la facilidad de conexión que proporciona el uso de dispositivos
inalámbricos al internet, la Carrera de Ingeniería en Sistemas
Computacionales ha propuesto realizar un Portal Web Cautivo aplicado a un
cyber campus demostrando así la efectividad de este portal no solo para la
administración de un cyber campus sino también para hoteles, aeropuertos,
etc.
20
2.3.-ANÁLISIS DE RIESGOS
Los posibles riesgos que se pueden presentar durante la realización del
proyecto son:
• No contar con los recursos físicos (Hardware) necesarios para
realizar las pruebas.
• Que se dañe el Servidor por motivos externos.
• No haber establecido planes de contingencia.
• Problemas en la manipulación de los comandos internos del
sistema vía WEB.
• Complicaciones en la búsqueda formas de ejecutar comandos
desde el PHP al Server.
2.4.-DIAGRAMA ENTIDAD RELACIÓN
El Diagrama Entidad Relación representa las relaciones entre los Objetos de
Datos, es la notación que se usa para realizar la actividad de Modelado de
Datos, los atributos de cada objeto de datos señalados en el DER se pueden
describir mediante una descripción de Objetos de Datos.
21
2.5.-DIAGRAMA DE FLUJO DE PROCESOS
Flujo de Procesos:
El Diagrama de Flujo de Procesos es una representación gráfica de la
secuencia de todas las operaciones, los almacenamientos que ocurren
durante el proceso de conexión, registro e impresión de datos al comprar un
tiempo de navegación y finalmente visitar nuestro Portal para lograr una
conexión.
2.6.-DIAGRAMA DE CASOS DE USOS
El Diagrama de Casos de Uso va a representar gráficamente la manera
como se va desarrollando nuestro proyecto.
2.6.1.-Caso de Uso 1:
Definir Procesos del cliente o usuario para la conexión a internet
1er. Nivel:
Cliente
Compra de tiempo
de navegación
Ingresar a Portal
Cautivo
Ingresar usuario y
contraseña
22
2do. Nivel:
Compra de
tiempo de
navegación
Acercarse a cancelar
el total del tiempo de
navegación a un
lugar autorizado
Ingresar a
portal cautivo
Conectarse al
navegador de internet
Ingresar
usuario y
contraseña
Dentro de la pantalla
que presenta nuestro
portal escribir el
usuario y contraseña.
23
Descripción de Casos de Uso 1:
Nombre: Compra de tiempo de navegación
Alias:
Actores: Usuarios
Función:
Acercarse a cancelar el total del tiempo de
navegación a un lugar autorizado
Para poder navegar el cliente deberá
previamente haber cancelado el costo del
tiempo de navegación a utilizar
Referencias:
Tabla 1.1 Compra de tiempo de Navegación
Nombre: Ingresar a portal cautivo
Alias:
Actores: Usuarios
Función: Conectarse al navegador de internet
Todo usuario o cliente deberá pasar primero
por el portal cautivo antes de tener acceso libre
a internet
Referencias:
Tabla 1.2 Ingresar a portal Cautivo
24
Nombre: Ingresar usuario y contraseña
Alias:
Actores: Usuarios
Función:
Dentro de la pantalla que presenta nuestro portal
escribir el usuario y contraseña.
Al ingresar el usuario y contraseña entregado en
un ticket se procederá a dar paso finalmente a la
conexión.
Referencias:
Tabla 1.3 Ingreso Usuario y Contraseña
2.6.2.- Caso de Uso 2:
1er. Nivel:
Sistema
Aquiles
Realizar cambio de
estatus
Guardar en la base
de datos la
información
necesaria.
Asignación de clave
y usuario
automáticamente
25
2do. Nivel:
Ingresar la
información de las
direcciones Ip’s y
demás
requerimientos del
sistema
Guardar en la base
de datos la
información
necesaria.
Realizar cambio de
estatus
Cambiar el estado
de inactivo a activo
y viceversa
Asignación de
clave y usuario
Generación
automática de clave
y usuario
26
Descripción de Casos de Uso 2:
Nombre:
Guardar en la base de datos la información
necesaria.
Alias:
Actor: Sistema
Función:
Ingresar la información de las direcciones Ip’s y
demás requerimientos del sistema
El sistema necesita almacenar las direcciones
ip’s, el tiempo comprado, el tiempo que lleva
utilizado el cliente y el tiempo restante del
mismo, la fecha y hora de inicio y fin de
conexión.
Referencias:
Tabla 2.1 Guarda en la Base de Datos Información
Nombre: Realizar cambio de estatus
Alias:
Actor: Sistema
Función:
Cambiar el estado de inactivo a activo y
viceversa
27
Cuando el usuario esta inactivo su estado es 2 y
cuando se encuentra conectado su estado
aparecerá reflejado en el sistema como 1. De
esta manera será importante para el control y el
cambio de estado del usuario.
Referencias:
Tabla 2.2 Realizar Cambios de Estatus
Nombre: Asignación de clave y usuarios
Alias:
Actor: Sistema
Función: Generación automática de clave y usuario
El sistema será el encargado de generar de
manera automática la clave y el usuario
evitando asi la filtración de estos datos. Referencias:
Tabla 2.3 Asignación de Claves y Usuarios
28
2.6.3.- Caso de Uso 3:
1er. Nivel:
Administrador
2do. Nivel:
Encargado de la
asignación de los
costos a las
diferentes
fracciones de
tiempo
Asignación de
Costos por tiempo
Asignación de
tiempo
Concede el tiempo
solicitado por el
usuario
Creación de
Usuarios y
administradores
Se procede a la
creación de nuevos
usuarios y
administradores
Asignación de Costos
por tiempo
Asignación de tiempo
Creación de Usuarios,
y administradores
29
Descripción de Casos de Uso 3:
Nombre: Asignación de Costos por tiempo
Alias:
Actor: Administrador
Función:
Encargado de la asignación de los costos a las
diferentes fracciones de tiempo
El administrador tiene la autoridad de asignar a
un determinado costo para las fracciones de
tiempo de navegación
Referencias:
Tabla 3.1 Asignación de Costos por Tiempo
Nombre: Asignación de tiempo
Alias:
Actor: Administrador
Función: Concede el tiempo solicitado por el usuario
Recibe la solicitud para la asignación de tiempo
al usuario.
Referencias:
Tabla 3.2 Asignación de Tiempo
30
Nombre: Creación de Usuarios y administradores
Alias:
Actor: Administrador
Función:
Se procede a la creación de nuevos usuarios, y
administradores
Crea nuevos usuarios, y administradores.
Referencias:
Tabla 3.3 Creación de Usuarios y Administradores
31
CAPITULO 3
3.1. DISEÑO DE ARQUITECTURA La interfaz será desarrollada bajo
PHP+CGI, como base de datos usaremos
MYSQL para almacenar los datos
importantes de los usuarios y llevar
control LOG de las conexiones al
servidor, el sistema será administrado vía
WEB.
El Servidor Linux Usara Centos 5
(Distribución Open source Especifico para
servidores) que está desarrollada para
funcionar en servidores, usaremos
comandos internos de Linux (ARP) para
sacar las IP que se conectan a la PC
32
(SERVER),y luego usaremos comandos de PHP para sacar las IP de los
clientes y así comparar mediante programación los datos que sacamos
anteriormente con los comandos de Linux, con las IPTABLES (reglas del
firewall) podremos dar los permisos a los usuarios para lo cual se realizara
un redireccionamiento de puertos, es decir si no esta en una lista de
permitidos dentro de la base de datos no se le dará permiso de navegación y
será bloqueado .
• Dentro de la manipulación del sistema se podrán Crear, editar y
eliminar usuarios, clientes y administradores
• Se administrará el tiempos de navegación (tiempos que se alquilarán
15 minutos 20 minutos 30 minutos, etc.).
• En cuanto a la administración de usuario-tiempo se refiere a la
concatenación de un tiempo de alquiler de navegación a un usuario.
• Se podrán ver los logs de las conexiones de los clientes, y cambios
realizados por el cliente en el sistema.
• Para Revisar el consumo de los usuarios se verificara cuanto tiene de
consumo en BW
La aplicación nos permitirá administrar los usuarios para manipular el
sistema, los usuarios para clientes del sistema, tiempos de navegación,
usuario-tiempo, podremos ver además reportes sobre conexiones al
33
servidor, usuarios y tiempos de navegación, también se revisar el consumo
de los usuarios.
Se mantendrá un registro de los usuarios creados para llevar un control de
Log sobre los movimientos realizados en el sistema.
3.2.-ARQUITECTURA DEL PROYECTO
Usaremos Arquitectura de 3-capas.
3.2.1.-Capa de presentación: Esta capa es la que mantiene la
relación el usuario, le comunica los requisitos necesarios para la
navegación, captura la información del usuario en un mínimo de
proceso. Esta capa se comunica únicamente con la capa de
negocio. También es conocida como interfaz gráfica y debe tener
la característica de ser "amigable" para el usuario.
3.2.2.-Capa de negocio: Es donde residen los programas que se
ejecutan, se reciben las peticiones del usuario y se envían las
respuestas tras el proceso.
Se denomina Capa de negocio porque es aquí donde se
establecen todas las reglas que deben cumplirse. Esta capa se
comunica con la capa de presentación, para recibir las solicitudes
y presentar los resultados, y con la capa de datos, para solicitar al
gestor de base de datos para almacenar o recuperar datos de él.
34
3.2.3.-Capa de datos: Es donde residen los datos y es la
encargada de acceder a los mismos. Está formada por uno o más
gestores de bases de datos que realizan todo el almacenamiento
de datos, reciben solicitudes de almacenamiento o recuperación
de información desde la capa de negocio.
35
3.3.-Interfaz Grafica
3.1-Pantalla usuario
Esta pantalla es la que vera el usuario al conectarse para navegar en
internet. En ella se encuentra un link para navegación gratuita a la página
de la Universidad Estatal. http://www.cisc.ug.edu.ec
36
Esta pantalla es la página de la universidad que será vista gratuitamente
donde podrá informarse de las actividades tales como:
Fechas de Inscripciones
Requisitos para inscribirse, etc.
37
Pantalla Usuario Conectado
Una vez conectado al sistema el cliente vera esta pantalla donde se muestra
el tiempo de conexión, tiempo restante, y mostrará el gráfico del consumo.
Descripción de los Iconos
No todos los iconos podrán ser vistos por el cajero
Home
Este icono muestra la página principal es decir la interfaz del
portal cautivo.
38
Restricción de sitios
Aquí se introducirán las direcciones de las páginas web a las
cuales se va a denegar el acceso a los usuarios.
Costos
Aquí se decidirán los costos de cada fracción de tiempo
Tiempos
Aquí se administrarán los tiempos de alquiler
Reglas
Aquí se administrarán las reglas del portal.
Usuarios
Aquí se Administrará todo lo relacionado con el usuario cambio
de datos claves etc.
Gráficos de consumo
Aquí se administran los gráficos de los usuarios (consumos
Internet y administración de los anchos de banda que se podrán usar para
crear los grupos de clientes asignados a un ancho de banda)
Reportes
Aquí se verán los reportes, como usuarios que se han conectado
al sistema, usuarios que han salido del sistema.
39
Botón Salir
Este botón permite salir del sistema
3.2.-Pantalla del Administrador
En esta pantalla se refleja la información de los usuarios que se
encuentran navegando. Dentro de la misma están las opciones de:
40
cuenta nueva
Con esta opción se crea un nuevo usuario que te conectara con la pantalla
Creación de usuarios, aquí se podrá definir el tiempo que tendrá este
usuario.
41
Se ha creado el usuario y el registro se guardo con éxito tal como muestra en
esta imagen.
42
Opción: Guardar e imprimir
Esta pantalla muestra cuando se va a imprimir el ticket para que los usuarios
puedan navegar.
43
Dando click en guardar e imprimir se generar un ticket indicando usuario y
contraseña, además de la opción de imprimir el mismo.
44
Cuenta nueva por lotes
Dando doble click en esta opción, se podrá determinar la cantidad de
usuarios que se desean crear, y se generarán automáticamente un archivo
en Excel los usuarios y contraseñas.
Además dando un click en el icono te conectara a la pantalla de
Consumo Cliente. Así mismo si das doble click a la ip se dará un ping a
dicha ip.
Finalmente si das un click en el icono te conectará con la pantalla
Administración de Reglas.Esta pantalla es vista solo por el administrador.
45
3.3.-Restricción de Sitios
En esta pantalla se escribirán las páginas a las que serán restringido el
acceso de los usuarios.
46
3.4.-Administración de Costos
En esta pantalla se asignarán los costos en relación a una fracción de
tiempo determinada por el administrador del sistema. Dando doble click en la
lupa se podrán ver todos los costos creados en el sistema.
47
Dando doble click en la lupa se podrán ver todos los costos creados en el
sistema.
3.5.- Administración de Tiempo de Alquiler
En esta pantalla se pondrá el tiempo de navegación que el usuario desea
alquilar.
48
Dando doble click en la lupa se podrán ver todos los tiempos creados en el
sistema.
49
3.6.-Administración de Políticas
En esta pantalla es donde introduciremos lo puertos que queremos bloquear
y solo serán vistas y alteradas las reglas generales por el administrador
mientras que el cajero solo podrá ver y altera las reglas por usuarios.
50
3.7.- Administración de usuarios
En esta pantalla se crearán los nuevos usuarios del sistema sean:
administradores, cajeros, y permite cambiar claves de los usuarios clientes
del sistema esta pantalla la usa el administrador (Cambia claves de
administrador, cajero o usuario) o el cajero (solo puede cambiar claves de
usuarios).
Dando un click en la lupa se conectará con la pantalla de Búsqueda de
Usuarios y los campos de la pantalla Administración de usuarios serán
llenados automáticamente con la información de Búsqueda de Usuarios
51
Búsqueda de Usuarios
En esta pantalla se realizarán las búsquedas de todos los usuarios existentes
en el sistema, la búsqueda dará como resultado: El código, el login, la
descripción, tipo de usuario y el estado del usuario.
Dando un click en el código me regresará a la pantalla de Administración
de usuarios.
52
En esta pantalla podremos hacer las modificaciones al usuario tanto en el
login, clave, descripción, cambiar el estado del usuario que puede ser activo
o inactivo y cambiar el tiempo.
53
3.8 Ancho de Banda
En esta pantalla se asigna un ancho de banda. Si se da click en el nombre
del archivo del listado de archivos creados te enviara a la pantalla Usuario -
Ancho de Banda.
54
Usuario - Ancho de Banda
En esta pantalla se impondrá el ancho de banda del usuario, aquí aparecerá
datos del usuario como: tipo de tarjeta (ETH0 o ETH1), ancho de banda,
prioridad, etc.
55
Consumo Cliente
Esta pantalla presenta un gráfico del consumo que lleva el cliente. Dando
doble click en este grafico que se encuentra en la Pantalla del
Administrador
56
3.9.-Administración de Reportes
En esta pantalla veremos todos los Reportes de los usuarios que han
ingresado al sistema pueden ser por usuario o por fecha.
57
Aquí se muestra el reporte de todos los registros, dando click en generar
58
En esta pantalla se muestra los usuarios ingresados al sistema dando doble
click en generar.
59
En esta pantalla se muestran los usuarios que ya salieron del sistema dando
doble click en generar, los reportes generados pueden ser visto por usuarios
o por fecha.
60
En esta pantalla se muestran los usuarios que ya salieron del sistema dando
doble click en generar, los reportes generados pueden ser vistos por usuarios
o por fecha.
En esta pantalla se ingresa a los reportes que son generados por el SARG
61
Entrando a la opción ONE-SHOT se encontrará con las siguientes opciones:
62
Si presiona el grafico estadístico este mostrará el gráfico de consumo de la
dirección ip remarcada.
63
Si presiona el reloj se encontrará con un reporte del tiempo de consumo por
la ip remarcada.
64
Si presiona la ip se presentará el siguiente reporte donde se muestra los
sitios permitidos por las ip
65
66
Si presiona sitios y usuario se mostrará la pantalla donde indica los sitios
que han visitado cada usuario del sistema
67
Si presiona TOP 100 se mostrará las 100 páginas más visitadas por los
usuarios
68
Si presiona Bajados se mostrará los sitios donde ha sido descargada la
información, el usuario que descargo, fecha y hora
69
Si presiona denegados se mostrará un reporte de sitios denegados para el
usuario
70
Aquí se muestra los sitios denegados
71
3.10.-Base de datos
72
Tabla Log
Atributo Tipo de Dato PK FK
id_tb_log int(8)
descripcion varchar(245)
fecha date
hora time
id_tb_usuario int(8) FK1
Tabla tb_usuario
Atributo Tipo de Dato PK FK
id_tb_usuario int(8)
73
login varchar(245)
clave varchar(245)
descripcion varchar(245)
id_tb_tipousuario
int(8) FK1
id_tb_estado int(8) FK2
Tabla tb_tipousuario
Atributo Tipo de Dato PK FK
id_tb_tipousuario int(8)
tipousuario varchar(10)
descripcion varchar(245)
74
Tabla tb_estado
Atributo Tipo de Dato PK FK
id_tb_estado int(8)
estado varchar(10) FK1
descripcion varchar(245) FK1
Tabla tb_tiempo_usuario
Atributo Tipo de Dato PK FK
id_tb_tiempo_usuario int(8)
75
id_tb_usuario int(8) FK2
id_tb_tiempo int(8) FK1
ip varchar(15)
mac varchar(245)
ini_conex Int(8) FK4
fin_conex varchar(8)
resta_conex varchar(8)
id_tb_bw varchar(8)
fecha int(8) FK3
id_tb_estado varchar(245)
int(8)
76
Tabla tb_regla
Atributo Tipo de Dato PK FK
id_tb_regla int(8)
tipo varchar(10)
puerto varchar(10)
Id_tb_tiempo_usuario int(8) FK1
id_tb_estado int(8) FK2
id_tb_tipousuario int(8) FK3
Tabla tb_costo
77
Atributo Tipo de Dato PK FK
id_tb_costo int(8)
valor float
descripcion varchar(245)
Tabla tb_tiempo
Atributo Tipo de Dato PK FK
id_tb_tiempo int(8)
numero varchar(8) FK1
id_tb_costo int(8) FK1
78
Capítulo 4
4.-DESARROLLO Y PRUEBA
DEL SISTEMA
4.1. -Desarrollo del sistema
Para el desarrollo del Sistema CYBER
CAMPUS CON PORTAL CAUTIVO este
proyecto esta desarrollado bajo Linux
Centos5, My SQL para la base de datos,
lenguaje de programación PHP,CGI.
4.1.1.-Creación de base de datos
El sistema CYBER CAMPUS CON
PORTAL CAUTIVO consta de una base
de datos creada bajo My SQL, que
contiene varias tablas para la
manipulación de datos la cual estará
79
relacionada directamente con la administración de los usuarios.
La estructura de las tablas son las siguientes:
4.1.2.-Creación de los Componentes
Para realizar la estructura de la base de datos se realizaron los
siguientes pasos:
• Análisis de la información
• Desarrollo de la base de Datos
• Prueba de la base de Datos
• Cambios sugeridos por el usuario.
Este proceso se repite hasta llegar al prototipo final que cumpla
con los alcances definidos en el proyecto.
4.1.3.-Seguridades
Para entrar al sistema CYBER CAMPUS CON PORTAL CAUTIVO
debemos ingresar al portal cautivo un usuario y una clave los
mismos que son comparados con los usuarios que han sido
creados por el sistema, estos se encuentran guardados en la tabla
tb_usuario en la base de datos. Cabe indicar que la clave que
ingresa el usuario es encriptada con el fin de que sea totalmente
confidencial y no sea copiada por usuarios maliciosos.
80
4.2. Pruebas del Sistema
Antes de implementar el sistema CYBER CAMPUS CON PORTAL
CAUTIVO, se realizaron las pruebas correspondientes con los usuarios
quienes navegaron en internet haciendo uso de nuestro servicio, de tal
manera que se pudo observar si las aplicaciones cumplen con los alcances
del proyecto.
Cada usuario realizo las pruebas necesarias, y añadió criterios sobre mejoras
que podrían aportar alguna ayuda al desempeño del sistema.
Adicionalmente se agregarán aplicaciones y controles generales que
sustenten los ingresos correctos de la información.
• Pantallas del Sistema
o Cambio en el fondo de las pantallas del Sistema (Logo de la
Universidad).
o Indicar que acción hace cada icono utilizado en el sistema.
o Mejorar la interfaz gráfica utilizada en el sistema.
o Incorporación de un link para navegación gratuita en el
portal cautivo.
Este sistema fue evaluado por nuestro Profesor de Seminario Ing. Eduardo
Alvarado quien aportó con su criterio y nos aconsejo algunas modificaciones.
81
Capítulo 5
5.1 IMPLEMENTACIÓN DEL
SISTEMA
Una vez llegado al prototipo final del
sistema CYBER CAMPUS CON
PORTAL CAUTIVO se procedió a la
instalación del software en el equipo
especificado en el siguiente punto, con el
fin de presentarlo y sustentarlo ante el
tribunal que revisó nuestro proyecto.
5.2 Recursos Físicos
Para la implementación del sistema
CYBER CAMPUS CON PORTAL
CAUTIVO se necesita contar con mínimo
82
un equipo (Laptop), un servidor y un cliente.
El servidor posee las siguientes características:
• Procesador Pentium IV CPU 2.06 GHz
• Mínimo 1 GB de memoria RAM
• Disco Duro de 250GB
• Tarjeta de red externa 10/100 D- Link
• Tarjeta inalámbrica para PC TP-Link 54 Mbps
El cliente puede tener las siguientes propiedades:
• Procesador Pentium IV CPU 2.8 GHz
• Mínimo 1 GB de memoria RAM
• Disco Duro de 80 GB
• Adaptador de red inalámbrico
5.3 Recursos Lógicos
El software utilizado en el servidor se detalla a continuación:
• Sistema Operativo Linux Centos5
• Base de datos My SQL
• lenguaje de programación PHP,CGI
En el cliente es necesario tener instalado como sistema Operativo Windows
XP, Vista.
83
5.4 Recursos Humanos
El personal que intervino en el desarrollo de la aplicación y en la
configuración tanto del cliente como del servidor son:
• Escobar Jessica
• Orozco Narcisa
• Castillo Annabel
84
CAPITULO 6
6. RECOMENDACIONES Y
CONCLUSIONES DE LA
TESIS
6.1. Recomendaciones
Las recomendaciones que hacemos a las
personas que deseen implementar y
utilizar nuestro sistema CYBER CAMPUS
CON PORTAL CAUTIVO, son referentes
al Hardware y Software que deben tener
en cuenta al momento de instalarlo.
6.1.1. Hardware
El equipo utilizado debe cumplir con los
requisitos mínimos especificados en el
manual técnico, ya que de otra manera el
85
funcionamiento de la autenticación de usuarios presentaría problemas.
6.1.2. Software
Nuestra aplicación se ha desarrollado bajo el sistema operativo Linux
Centos5 y los paquetes necesarios han sido instalados desde los discos
de instalación de Linux.
6.2. Conclusiones
La implementación del CYBER CAMPUS CON PORTAL CAUTIVO por parte
de los diferentes usuarios que la utilizarán les permitirá una fácil
configuración de una red inalámbrica para acceso de navegación, el diseño
esta basado con herramientas fáciles de utilizar y con una interfaz amigable,
esperamos proporcionarles a los usuarios una herramienta que cumpla con
sus exigencias.
86
Anexos
87
TIPOS DE MODELO PARA EL DESARROLLO DE UN PROYECTO
• Modelo en cascada o Clásico (modelo tradicional)
• Modelo en espiral (modelo evolutivo)
• Modelo de prototipos
• Desarrollo por etapas
• Desarrollo iterativo y creciente o Iterativo e Incremental
• RAD (Rapid Application Development)
MODELO DE CASCADA
En Ingeniería de software el 'desarrollo en cascada', también llamado
'modelo en cascada', es el enfoque metodológico que ordena rigurosamente
las etapas del '[[ciclo de vida del software]]', de forma tal que el inicio de cada
etapa debe esperar a la finalización de la inmediatamente anterior. Un
ejemplo de una metodología de desarrollo en cascada es:
• Análisis de requisitos
• Diseño del Sistema
• Diseño del Programa
• Codificación
• Pruebas
• Implantación
• Mantenimiento
88
De esta forma, cualquier error de diseño detectado en la etapa de prueba
conduce necesariamente al rediseño y nueva programación del código
afectado, aumentando los costes del desarrollo. La palabra cascada sugiere,
mediante la metáfora de la fuerza de la gravedad, el esfuerzo necesario para
introducir un cambio en las fases más avanzadas de un proyecto. Si bien ha
sido ampliamente criticado desde el ámbito académico y la industria, sigue
siendo el paradigma más seguido al día de hoy.
MODELO ESPIRAL
Es un modelo de proceso de software evolutivo donde se conjuga la naturaleza de
construcción de prototipos con los aspectos controlados y sistemáticos del
MODELO LINEAL y SECUENCIAL. Proporciona el potencial para el desarrollo
rápido de versiones incrementales del software que no se basa en fases claramente
definidas y separadas para crear un sistema.
En el modelo espiral, el software se desarrolla en una serie de versiones
incrementales. Durante las primeras iteraciones la versión incremental podría ser un
modelo en papel o un prototipo, durante las últimas iteraciones se producen
versiones cada vez mas completas del sistema diseñado.
EL modelo en espiral se divide en un número de actividades de marco de trabajo,
también llamadas regiones de tareas , Cada una de las regiones están compuestas
por un conjunto de tareas del trabajo llamado conjunto de tareas que se adaptan a
las características del proyecto que va a emprenderse en todos los casos se aplican
actividades de protección
Cada vuelta en la espiral se divide en sectores:
89
• Comunicación con el Cliente: Las tareas requeridas para establecer,
comunicación entre el desarrollador y el cliente
• Planificación o Planeación: Las tareas requeridas para definir recursos, el
tiempo, determinación de los objetivos, alternativas y restricciones y otra
información relacionadas con el proyecto.
• Análisis de Riesgos: Las tareas requeridas para evaluar riesgos técnicos y
de gestión, análisis de alternativas e identificación/resolución de riesgos
• Ingeniería: Las tareas requeridas para construir una o más representaciones
de la aplicación, desarrollo del producto hasta "el siguiente nivel".
• Construcción y Acción: Las tareas requeridas para construir, probar,
instalar y proporcionar soporte al usuario (por ejemplo, documentación y
práctica).
• Evaluación del cliente: Tareas requeridas para obtener la reacción del
cliente según la evaluación de las representaciones del software creadas
durante la etapa de ingeniería e implementada durante la etapa de
instalación. Valoración por parte del cliente de los resultados obtenidos.
Este método está basado en dos importantes principios:
1. la práctica de diseño profesional es caracterizar en términos de conocer,
actuar en situaciones, conversación con la situación y reflexión en acción.
Hay un distinto medio de proceso - orientación en esta aproximación al
diseño. Es raro que el diseñador tenga el diseño en su cabeza por
adelantado y que después lo transcriba. Gran parte del tiempo del diseñador
está inmiscuido en una progresiva relación con su entorno. Una buena
90
metáfora para describirlo es "la conversación con el material", como un
escultor, quien está ocupado en una conversación con el medio. El escultor
modela arcilla y luego mira y siente la escultura para ver lo que ha llegado a
ser.
2. la necesidad para diseñadores de tomar la práctica de trabajo seriamente, de
supervisar las formas en las que el trabajo se está haciendo, en el sentido
de una solución abierta y desplegada para aumentar la complejidad de una
situación que el diseñador solo entiende parcialmente. El hecho por el cual
se está tratando con "actores humanos". Los sistemas necesitan tratar o
estar en contacto con las preocupaciones del usuario. Es, definitiva, el
reconocimiento de que el trabajo es fundamentalmente social, envolviendo
cooperación y comunicación
MODELO DE PROTOTIPOS
En Ingeniería de software el desarrollo con prototipación, también llamado
modelo de prototipos que pertenece a los modelos de desarrollo evolutivo, se
inicia con la definición de los objetivos globales para el software, luego se identifican
los requisitos conocidos y las áreas del esquema en donde es necesaria más
definición. Entonces se plantea con rapidez una iteración de construcción de
prototipos y se presenta el modelado (en forma de un diseño rápido).
El diseño rápido se centra en una representación de aquellos aspectos del software
que serán visibles para el cliente o el usuario final (por ejemplo, la configuración de
la interfaz con el usuario y el formato de los despliegues de salida). El diseño rápido
conduce a la construcción de un prototipo, el cual es evaluado por el cliente o el
usuario para una retroalimentación; gracias a ésta se refinan los requisitos del
91
software que se desarrollará. La iteración ocurre cuando el prototipo se ajusta para
satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el
desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto
plazo.
El modelo de desarrollo de software por etapas es similar al Modelo de
prototipos ya que se muestra al cliente el software en diferentes estados
sucesivos de desarrollo, se diferencia en que las especificaciones no son
conocidas en detalle al inicio del proyecto y por tanto se van desarrollando
simultáneamente con las diferentes versiones del código.
Pueden distinguirse las siguientes fases:
• Especificación conceptual
• Análisis de requerimientos
• Diseño inicial
• Diseño detallado, codificación, depuración y liberación
Desarrollo interactivo y creciente
La idea principal detrás de mejoramiento interactivo es desarrollar un sistema de
programas de manera incremental, permitiéndole al desarrollador sacar ventaja de
lo que se ha aprendido a lo largo del desarrollo anterior, incrementando, versiones
entregables del sistema. El aprendizaje viene de dos vertientes: el desarrollo del
sistema, y su uso (mientras sea posible). Los pasos claves en el proceso son
comenzar con una implementación simple de los requerimientos del sistema, e
interactivamente mejorar la secuencia evolutiva de versiones hasta que el sistema
92
completo esté implementado. En cada iteración, se realizan cambios en el diseño y
se agregan nuevas funcionalidades y capacidades al sistema.
DESARROLLO
Rapid Application Development (RAD)
El Desarrollo rápido de aplicaciones o Rapid Application Development (RAD) es
un proceso de desarrollo de software (en inglés, software development process),
desarrollado inicialmente por James Martín en 1980. El método comprende el
desarrollo iterativo, la construcción de prototipos y el uso de utilidades CASE
(Computer Aided Software Engineering). Tradicionalmente, el desarrollo rápido de
aplicaciones tiende a englobar también la usabilidad, utilidad y la rapidez de
ejecución.
LA ENTREVISTA
Las entrevistas se utilizan para recabar información en forma verbal, a través
de preguntas que propone el analista. Quienes responden pueden ser
gerentes o empleados, los cuales son usuarios actuales del sistema
existente, usuarios potenciales del sistema propuesto o aquellos que
proporcionarán datos o serán afectados por la aplicación propuesta. El
analista puede entrevistar al personal en forma individual o en grupos
algunos analistas prefieren este método a las otras técnicas que se
estudiarán más adelante. Sin embargo, las entrevistas no siempre son la
mejor fuente de datos de aplicación.
93
Dentro de una organización, la entrevista es la técnica más significativa y
productiva de que dispone el analista para recabar datos. En otras palabras,
la entrevista es un intercambio de información que se efectúa cara a cara. Es
un canal de comunicación entre el analista y la organización; sirve para
obtener información acerca de las necesidades y la manera de satisfacerlas,
así como concejo y comprensión por parte del usuario para toda idea o
método nuevos. Por otra parte, la entrevista ofrece al analista una excelente
oportunidad para establecer una corriente de simpatía con el personal
usuario, lo cual es fundamental en transcurso del estudio.
Preparación de la Entrevista
1. Determinar la posición que ocupa de la organización el futuro
entrevistado, sus responsabilidades básicas, actividades, etc.
(Investigación).
2. Preparar las preguntas que van a plantearse, y los documentos
necesarios (Organización).
3. Fijar un límite de tiempo y preparar la agenda para la entrevista.
(Sicología).
94
4. Elegir un lugar donde se puede conducir la entrevista con la mayor
comodidad (Sicología).
5. Hacer la cita con la debida anticipación (Planeación).
Realización de Entrevista
A través de la entrevista, los analistas deben preguntarse a sí mismo las
siguientes preguntas:
o ¿Qué es lo que me está diciendo la persona?
o ¿Por qué me lo está diciendo a mí?
o ¿Qué está olvidando?
o ¿Qué espera está persona que haga yo?
Encuesta
Una encuesta es un conjunto de preguntas normalizadas dirigidas a una
muestra representativa de la población o instituciones, con el fin de conocer
estados de opinión o hechos específicos.
La encuesta está conformada de un grupo de preguntas que se dirigen a un
segmento de personas específicas que nos permitirán conocer sus
opiniones, inquietudes, gustos y preferencias entre otras cosas.
95
La encuesta por lo regular se encuentra conformada de preguntas cerradas
con respuesta de opción múltiples que nos permitirán contabilizar los
resultados de manera más oportunas.
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas
Computacionales
“Desarrollo de un Cyber Campus con portal cautivo”
Grupo #
10
96
PROYECTO DE GRADO
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
JESSICA PAOLA ESCOBAR ZUÑIGA
ANNABEL MARIUXI CASTILLO MITE
NARCISA PILAR OROZCO IGUASNIA
GUAYAQUIL-ECUADOR
Año: 2010
TRIBUNAL DE GRADUACION
_______________________ ______________________
Decano Director de Tesis
97
_______________________ ______________________
Vocal Vocal
______________________
Secretario
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente a los
suscritos, perteneciendo a la Universidad de Guayaquil los derechos
que genera la aplicación de la misma.”
(Reglamento de Graduación de la Carrera de Ingeniería en Sistemas
Computacionales, Art. 26).
98
_______________________ ______________________
Jessica Escobar Z. Narcisa Orozco I.
0922640180 0922677133
______________________
Annabel Castillo M.
0919148080
INDICE GENERAL
AGRADECIMIENTO II
DEDICATORIA III
TRIBUNAL DE GRADUACIÓN IV
DECLARACIÓN EXPRESA VI
INDICE GENERAL VI
INDICE GENERAL
99
Pág.:
CAPÍTULO 1
INTRODUCCIÓN 1
1.1 Antecedentes 3
1.2 Ámbito y Problemática 3
1.3 Solución a la Problemática 4
1.4 Visión y Misión del Proyecto 4
1.5 Objetivos del Proyecto 5
1.5.1 Objetivos Generales del Proyecto 5
1.5.2 Objetivos Específicos del Proyecto 6
1.5.2.1 Objetivos del Administrador 6
1.5.2.2 Objetivos del Sistema 7
1.5.2.3 Objetivos del Usuario 7
1.6 Alcance del Proyecto 8
1.7 Recursos necesarios para el Proyecto 9
1.7.1 Recursos Humanos 9
1.7.2 Recursos de Software 10
1.7.3 Recursos de Hardware 11
100
1.7.4 Grupo de Trabajo 11
1.7.5 Entorno de Trabajo 12
1.8 Metodología del Proyecto 12
1.9 Políticas de Seguridad 15
1.10 Aplicación FODA 15
CAPÍTULO 2
ANALISIS 18
2.1 Levantamiento de información 18
2.2 Análisis de Requerimiento 19
2.3 Análisis de Riesgos 20
2.4 Diagrama Entidad Relación 20
2.5 Diagrama de Flujo de Procesos 21
2.6 Diagrama de Casos de Uso 21
2.6.1 Caso de Uso 1 21
2.6.2 Caso de Uso 2 24
2.6.3 Caso de Uso 3 28
101
CAPÍTULO 3
DISEÑO 31
3.1 Diseño de Arquitectura 31
3.2 Arquitectura del Proyecto 33
3.3 Interfaz Gráfica 35
CAPÍTULO 4
Desarrollo y Prueba del Sistema 78
4.1 Desarrollo del sistema 78
4.1.1 Creación de la base de datos 78
4.1.2 Creación de los componentes 79
4.1.3 Seguridades 79
4.2 Pruebas del sistema 80
CAPÍTULO 5
5.1 Implantación del sistema 81
5.2 Recursos Físicos 81
5.3 Recursos Lógicos 82
102
5.4 Recursos Humano 83
CAPÍTULO 6
Recomendación y Conclusión de la tesis 84
6.1 Recomendaciones 84
6.1.1 Hardware 84
6.1.2 Software 85
6.2 Conclusiones 85
Anexos 86
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas
Computacionales
“Desarrollo de un Cyber Campus con portal cautivo”
PROYECTO DE GRADO
103
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
JESSICA PAOLA ESCOBAR ZUÑIGA
ANNABEL MARIUXI CASTILLO MITE
NARCISA PILAR OROZCO IGUASNIA
GUAYAQUIL-ECUADOR
Año: 2009
Estructura del Diagrama
Inicio: Este paso es cuando el usuario escoge nuestra red
ARP: Es cuando este comando entra en acción e identifica y asigna la ip a la
maquina del usuario o cliente
Login: es la pantalla que será mostrada al usuario y en la cual se ingresara el
usuario y contraseña y se verificaran las mismas
104
Validación Login: aquí se decidirá si tiene acceso o no, si es correcto pasara
al siguiente proceso, caso contrario regresara a la pantalla del Login
Acceso: aquí se hará todo lo necesario para accesar al Squid
Squid aquí se aplicaran las reglas del Squid y se dará acceso a internet o se
regresara al Login
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas
Computacionales
“Desarrollo de un Cyber Campus con portal cautivo”
Manual Usuario y Técnico
105
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
JESSICA PAOLA ESCOBAR ZUÑIGA
ANNABEL MARIUXI CASTILLO MITE
NARCISA PILAR OROZCO IGUASNIA
GUAYAQUIL-ECUADOR
Año: 2010
Descripción del proyecto
Este es un esquema que mostramos de nuestro proyecto donde se especifica lo que se aloja
en el servidor:
El servidor es el que va a permitir el acceso a la navegación.
El Administrador es el que puede tener acceso a ver reportes, restringir páginas, aplicar
reglas, crear usuarios, etc.
La impresora de ticket es para cuando desee imprimir código y usuario ya sea para un
usuario o usuarios por lotes.
Las máquinas representan a los usuarios que van a navegar inalámbricamente
106
S
S
N
N
1
INICIO
ARP
Ingreso
LOGIN
Verificación de
usuario y
contraseña
ACCESO
SQUID
1
1
1
107
108
MANUAL DE USUARIO
CYBER CAMPUS CON PORTAL
CAUTIVO
CAPITULO 1
Generalidades
1.1 Introducción
Este manual es una guía de consulta para los usuarios con conocimientos
básicos en el uso de Internet, ya que consta de capítulos que son claros y
explícitos acerca de cómo ingresar al Sistema Aquiles (CYBER CAMPUS
CON PORTAL CAUTIVO).
Es de gran importancia consultar este manual que mostrara paso a paso el
manejo del sistema.
El sistema Aquiles (CYBER CAMPUS CON PORTAL CAUTIVO), es una
herramienta basada en Linux que brinda acceso a internet por medio de un
portal cautivo.
El objetivo del sistema es que el usuario logre navegar por internet desde su
laptop de manera práctica sin necesidad de utilizar cables de red, para
conectarse.
1.2 Objetivo de este Manual
Este manual será de guía a todos los usuarios sobre el manejo de este
sistema.
1.3 A quien va Dirigido
Este va orientado a todos los usuarios finales involucrados en el Sistema
Aquiles. (CYBER CAMPUS CON PORTAL CAUTIVO).
Administrador, es la persona encargada de administrar toda la
información que llegue al sistema Aquiles, los usuarios, claves, y
reportes.
Usuario General, persona encargada de ingresar a la navegación por
medio del portal cautivo.
CAPITULO 2
2.1 Lo que debe tener
Lo principal es que el usuario o cliente deben tener los conocimiento básico
para el uso de Internet.
2.2 Acerca de este Manual
Este manual contiene diversas instrucciones que el usuario debe seguir paso
a paso para poder manejar correctamente el sistema Aquiles. Además
adiciona información de gran importancia que va a orientar a los usuarios
sobre el correcto uso del mismo.
2.3 Instalación del Sistema Cyber Campus con Portal Cautivo
Para que el Sistema Cyber Campus con Portal Cautivo este operativo,
necesitamos de la instalación y configuración de algunos programas, los
mismos que detallamos a continuación:
2.3.1 Sistema Operativo
El sistema operativo que utiliza el cliente puede ser cualquier
Windows, o Linux que le permita la navegación web.
2.3.2 Paquetes o Programas Adicionales
Debe contar con algún navegador como, Internet Explorer, Mozilla.
2.4 Explicación del Funcionamiento del Sistema Cyber
Campus con Portal Cautivo
Como primer paso el usuario deberá conectarse a nuestra red. Centos AP
Figura No. 1
Una vez Conectado a nuestra red deberá intentar navegar en internet
Al cumplir este paso se abrirá la página de nuestro portal cautivo.
Una vez dentro del portal cautivo, se deberá ingresar el usuario y la
contraseña. Dentro de esta página existe un link **VISITA NUESTRO SITIO
WEB GRATIS** Este link nos llevara a la página web de la Universidad
http://www.cisc.ug.edu.ec
Si el usuario y contraseña son validos aparecerá la siguiente pantalla:
Esta pantalla deberá permanecer abierta, durante el tiempo de navegación
del usuario.
Para salir del portal cautivo deberá presionar el botón rojo o la x de
la ventana.
Al presionar cualquiera de estas dos opciones saldrá la una pantalla de
dialogo preguntando si está seguro de querer salir del portal.
Finalmente el sistema mostrara de nuevo la página del portal esperando el
usuario y contraseña y un mensaje agradeciendo al usuario.
En caso de ser erróneos, será re direccionado al mismo portal cautivo donde
tendrá otra oportunidad de ingresar el usuario y contraseña.
MANUAL TÉCNICO
CYBER CAMPUS CON PORTAL
CAUTIVO
CAPITULO 1
1.1 Introducción
El presente manual se lo ha desarrollado para orientar al administrador que
vaya a utilizar el sistema y así pueda poner en funcionamiento el mismo, se
le detallará las configuraciones necesarias para poner en marcha el sistema
de una forma bien estructurada y así hacerle una tarea más fácil.
El Sistema de Aula Virtual Cyber Campus con Portal Cautivo
esta desarrollado bajo la plataforma Linux al cual se accede mediante un
servidor web, la base de datos que utilizamos es My SQL, que contiene
varias tablas para la manipulación de datos la cual estará relacionada
directamente con la administración de los usuarios.
1.2. Objetivo Generales
El objetivo de este manual se detalla a continuación.
Explican de forma específica y amplia los pasos previos para la
utilización del sistema.
Dar a conocer los recursos que se utilizaron para el respectivo diseño.
CAPITULO 2
2.1 Ambiente Operacional
La publicación del sistema Cyber Campus con Portal Cautivo
en el Servidor donde va a residir, requiere de las siguientes condiciones a
nivel de Hardware y software.
• El Sistema Cyber Campus con Portal Cautivo deberá estar
almacenado en un servidor.
2.1.1 Hardware
Para la implementación del sistema Cyber Campus con Portal
Cautivo
se necesita contar con mínimo dos equipos, un servidor y un
cliente.
El servidor posee las siguientes características:
• Procesador Pentium IV CPU 2.06 GHz
• Mínimo 1 GB de memoria RAM
• Disco Duro de 250GB
• Tarjeta de red externa 10/100 D- Link
• Tarjeta inalámbrica para PC TP-Link 54 Mbps
• Monitor
• Teclado y mouse
El cliente puede tener las siguientes propiedades:
• Procesador Pentium IV cpu 2.8 Ghz
• Mínimo 1 GB de memoria RAM
• Disco Duro de 80 GB
• Adaptador de red inalámbrico
2.1.2 Software
El software utilizado en el servidor se detalla a continuación:
My SQL (Base de Datos)
Apache, Php
Squid
Sarg
DHCP-SERVER
Iptables
Madwifi
Bandwidth
Webmin
CAPITULO 3
3.1 Identificación de escenarios o casos de uso
En la fase del análisis se identifico los posibles escenarios y actores que
interactúan con el sistema mediante el diagrama de casos de uso
representaremos la forma en como el Usuario - Administrador (Actor) opera
con el sistema en desarrollo.
Descripción de Casos de Uso 1:
Nombre: Ingreso al portal
Alias:
Actores: Administrador
Función:
Ingreso de usuario y contraseña del
administrador al sistema
Para poder manipular el sistema el
administrador deberá previamente haber
ingresado su usuario y contraseña.
Referencias:
Tabla 1.1 Ingreso al Portal
Nombre: Creación de usuarios por unidad
Alias:
Actores: Administrador
Función: Crear usuarios del sistema
Deberá escoger la opción cuenta nueva
Referencias:
Tabla 1.2 Creación de usuarios por unidad
Nombre: Creación de usuarios por lotes
Alias:
Actores: Administrador
Función: Crear una cantidad de usuarios al mismo tiempo
Deberá escoger la opción cuenta nueva por lotes
Referencias:
Tabla 1.3 Creación de Usuarios por Lotes
Nombre: Creacion de usuarios y claves
Alias:
Actor: Sistema
Función: El sistema crea usuarios y claves aleatorias
El sistema crea y almacena las claves y los
usuarios que tendrán acceso a internet.
Referencias:
Tabla 3.1 Creacion de Usuarios y Claves
Nombre: Realizar cambio de estatus
Alias:
Actor: Sistema
Función:
Cambiar el estado de inactivo a activo y
viceversa
Cuando el usuario esta inactivo su estado es 2 y
cuando se encuentra conectado su estado
aparecerá reflejado en el sistema como 1. De
esta manera será importante para el control y el
cambio de estado del usuario.
Referencias:
Tabla 3.2 Realizar cambio de Estatus
Nombre: Almacenamiento
Alias:
Actor: Sistema
Función: Alamacenamiento de información requerida
El sistema almacenara tiempo adquirido, tiempo
restante, ip asignada al cliente, etc.
Referencias:
Tabla 3.3 Almacenamiento
Nombre: Asignación de Costos por tiempo
Alias:
Actor: Administrador
Función:
Encargado de la asignación de los costos a las
diferentes fracciones de tiempo
El administrador tiene la autoridad de asignar a
un determinado costo para las fracciones de
tiempo de navegación
Referencias:
Tabla 4.1 Asignación de Costos por Tiempo
Nombre: Asignación de tiempo
Alias:
Actor: Administrador
Función: Concede el tiempo solicitado por el usuario
Recibe la solicitud para la asignación de tiempo
al usuario.
Referencias:
Tabla 4.2 Asignación de Tiempo
Nombre: Creación de Usuarios y administradores
Alias:
Actor: Administrador
Función:
Se procede a la creación de nuevos usuarios, y
administradores
Crea nuevos usuarios, y administradores.
Referencias:
Tabla 4.3 Creación de Usuarios y Administradores
Capitulo 4
4.1 Bloqueos del Sistema Cyber Campus con Portal Cautivo
Dentro del sistema existe el icono sitios Restringidos, esta opción permite
ingresar los sitios web que el administrador considere no deban ser
accesados por el usuario. Interactúa con un documento llamado deny.txt
ubicado en la siguiente ruta: var/www/html/Aquiles/squid/deny.txt
4.2 IP’s permitidas para la navegación
Una vez conectado el usuario al sistema la ip asignada por el servidor será
escrita en un archivo llamado permitidos.txt que se encuentra ubicado en al
siguiente ruta: var/www/html/aqulies/squid/permitidos.txt
Capitulo 5
5. Estándares y formatos
5.1 Los Estándares de El Sistema Cyber Campus con portal cautivo
Campos
Los campos de las tablas serán escritos en minúsculas, serán separados por
un sub guion, no se permitirán tildes, y deberán dar una clara idea de su
función.
Nombres de las tablas
Las tablas comenzaran con la siguiente nomenclatura tb_(nombre tabla), y
serán escritas en letra minúscula.
Claves primarias y secundarias
Las claves primarias y secundarias deben estar representadas por
id_(nombre tabla).
5.2 Portal Cautivo
Los Portales Cautivos más que todo son utilizados para controlar el acceso a
redes Wifi de acceso público; dicha software opera bajo un Portal Cautivo.
Un Portal Cautivo es como un cortafuego que bloquea el acceso a la red de
los usurarios no registrados en dicho portal, a través de su página de inicio.
Una vez registrado el usuario en el portal, puede tener acceso a internet u
otros servicios que tenga permiso. El portal cautivo se instala en la puerta de
enlace de la red (puede ser un servidor, o un hardware con estas
características).
Se caracteriza por diferentes aspectos uno de ellos es el ser capaz de
administrar múltiples Hotspots. Los Hotspots son lugares donde se
proporciona acceso público inalámbrico de banda ancha a Internet a través
de una red de área local inalámbrica (WLAN) compuesta por Puntos de acceso
(Access Point).
Los Hotspots están generalmente ubicados en áreas con alta concentración
de personas como hoteles, universidades, centros de convenciones,
shoppings, cafés y restaurantes, aeropuertos, estaciones de trenes y
autobuses, etc., brindándole así conveniencia y comodidad para conectarse
a Internet. Por lo que un acceso de esta clase requiere también de seguridad,
aquí es donde entra en juego El portal cautivo.
Nuestro Portal cautivo posee:
* Informes y estadística incluyendo: Gracias a una conexión con el programa
SARG.
* Validación de usuario: Gracias a la creación de usuarios y contraseñas, que
son encriptados y almacenados en una base de datos, para luego poder
hacer la validación.
Sarg (Squid Analysis Report Generator)
Es una muy buena herramienta desarrollada por un brasileño llamado Pedro
Orso, que permite saber dónde han estado navegando los usuarios en
Internet, a través del análisis del fichero de log “access.log” del famoso proxy
Squid. El poder de esta herramienta es increíble, pudiendo saber qué
usuarios accedieron a qué sitios, a qué horas, cuantos bytes han sido
descargados, relación de sitios denegados, errores
de autentificación...entre otros. La flexibilidad que puede obtener con Sarg es
muy alta, principalmente para las empresas que quieren tener un control de
accesos y ancho de banda de acceso a Internet.
5.6 INSTALACION DEL SARG
El SARG es el Squid Analisys Report Generatión. En otras palabras, genera
informes a partir de los log del Squid.
Esto es muy útil para saber donde se ha metido cada usuario y en que
momento. Aunque hay que instalarlo en modo texto (consola) y se puede
ejecutar perfectamente en consola. Hay que reconocer que es más dinámico
desde webmin. De todas formas vamos a ver las 2 maneras de utilizar SARG.
Lo primero que hay que hacer y tarea común a las dos formas, es descargar
los fuentes de http://sarg.sourceforge.net/ e instalar con el famoso:
./Configure
Make
Make install
Si queremos podemos modificar el archivo de configuración situado en
/usr/local/sarg/sarg.conf
Dentro de él básicamente tenemos 4 secciones:
1. Selección de idioma
2. Ubicación del archivo de log del squid (access.log)
3. Formato del reporte
4. Con cuanta frecuencia generará un reporte
Nosotros sólo tocaremos las siguientes líneas
Language Spanish (para que le reporte salga en español)
access_log /var/log/Squid/access.log (la ubicación del archivo de log del
Squid)
output_dir /var/www/html/squid-reports (donde guardará el reporte)
Antes de seguir sería conveniente mencionar que tenemos que tener
activado el servicio de apache. De lo contrario no podremos leer el mismo a
través de web. De hecho la salida del reporte deberá apuntar al directorio
raíz del apache (/var/www/html).
Solo nos resta lanzar el Squid para generar el reporte con el siguiente
comando
Sarg -l /var/log/Squid/access.log -o /var/www/html/squid-reports
Con este comando la decimos que coja el log (-l) de /var/log/Squid/access.log
y lo escriba (-o) en /var/www/html/squid-reports.
Fácil, no?
Si lo que queremos es tener un informe de un intervalo de tiempo la
sentencia sería la siguiente.
sarg -d dd/mm/yyyy-dd/mm/yyyy -l /var/log/squid/access.log -o
/var/www/html/squid-reports
Si esto te parece fácil ya verás en el Webmin.
Antes que nada hay que instalar el modulo SARG
Una vez lo tengamos instalado, la interface es muy fácil de seguir
Tenemos las mismas opciones que en el archivo de configuración en los 4
botones
El primero es para opciones generales (archivo de log, archivos de salida,
etc.)
El segundo para opciones de reporte (orden, formato de fecha, etc.)
El tercero para estilo (color, idioma, fuentes, etc.)
El cuarto para programar que se ejecute un reporte cada x tiempo, ideal para
organizar la información.
Si queremos generar un reporte le damos al botón GENERATE REPORT
NOW. Y si queremos ser más específicos seleccionamos 2 fechas.
Si ya tenemos un reporte generado podremos verlo con VIEW GENERATED
REPORT y tendrá el siguiente aspecto:
Primero te muestra una pantalla por días y cuando seleccionas el día te
saldrá la lista de usuarios:
Y cuando entras a usuario te pondrá los sitios y las horas que visitó ese
usuario. No está mal, eh?
Capitulo 6
6. Estructura Física del Modulo
6.1 Tablas del Sistema de Cyber Campus con Portal Cautivo
Tabla Tb_costo
CREATE TABLE `tb_costo`
(
`id_tb_costo` int(8) NOT NULL auto_increment,
`valor` float(8,2) NOT NULL,
`descripcion` varchar(245) NOT NULL, PRIMARY KEY (`id_tb_costo`)
)
Tabla tb_estado
CREATE TABLE `tb_estado`
(
`id_tb_estado` int(8) NOT NULL auto_increment,
`estado` varchar(10) NOT NULL,
`descripcion` varchar(245) NOT NULL, PRIMARY KEY (`id_tb_estado`)
)
Tabla tb_log
CREATE TABLE `tb_log`
(
`id_tb_log` int(8) NOT NULL auto_increment,
`descripcion` varchar(245) NOT NULL,
`fecha` date NOT NULL, `hora` time NOT NULL,
`id_tb_usuario` int(8) NOT NULL, PRIMARY KEY (`id_tb_log`)
)
Tabla tb_regla
CREATE TABLE `tb_regla`
(
`id_tb_regla` int(8) NOT NULL auto_increment,
`tipo` int(8) default NULL,
`puerto` varchar(5) default NULL,
`id_tb_tiempo_usuario` int(8) NOT NULL,
`id_tb_estado` int(8) NOT NULL,
`id_tb_tipousuario` int(8) NOT NULL,
PRIMARY KEY (`id_tb_regla`)
)
Tabla tb_tiempo
CREATE TABLE `tb_tiempo`
(
`id_tb_tiempo` int(8) NOT NULL auto_increment,
`numero` varchar(8) default '00:00:00',
`id_tb_costo` int(8) NOT NULL,
PRIMARY KEY (`id_tb_tiempo`)
)
Tabla tb_tiempo_usuario
CREATE TABLE `tb_tiempo_usuario`
(
`id_tb_tiempo_usuario` int(8) NOT NULL auto_increment,
`id_tb_usuario` int(8) NOT NULL,
`id_tb_tiempo` int(8) NOT NULL,
`ip` varchar(15) default NULL,
`mac` varchar(245) default NULL,
`ini_conex` varchar(8) default NULL,
`fin_conex` varchar(8) default NULL,
`resta_conex` varchar(8) default NULL,
`id_tb_bw` int(8) default '0',
`fecha` varchar(245) NOT NULL,
`id_tb_estado` int(8) NOT NULL,
PRIMARY KEY (`id_tb_tiempo_usuario`)
)
Creación de código
Index.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=windows-1252"
/>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<link href="css/estilos.css" rel="stylesheet" type="text/css">
<script src="js/md5.js" type="text/javascript"></script>
<style type="text/css">
<!--
body {
background-image: url(imagenes/logo_cisc_png.png);
}
-->
</style></head>
<?php
//verifica arreglo si es vacio caso contrario lo pone como null
$msg = isset($_GET['msg']) ? $_GET['msg'] : null ;
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])!=null)
{
$ip =
$_SERVER["HTTP_X_FORWARDED_FOR"] ;
}
else{
$ip = $_SERVER["REMOTE_ADDR"];
}
//$ip= $_SERVER['REMOTE_ADDR'];
//$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
//echo $ip;
//echo $ip2;
?>
<body OnLoad="document.f1.login.focus();">
<br />
<br />
<br />
<div align="center">
<form method="post" name="f1" action="conex/valida_login.php">
<input name="txtip" type="hidden" value="<? echo $ip ?>" />
<table width="391" border="0" cellpadding="0" cellspacing="0"
background="imagenes/login.gif">
<!--DWLayoutTable-->
<tr>
<td width="32" height="63"> </td>
<td width="141"> </td>
<td width="10"> </td>
<td width="180"> </td>
<td width="31"> </td>
</tr>
<tr>
<td height="22"> </td>
<td align="right" valign="middle" class="fuente_verde">LOGIN : </td>
<td></td>
<td valign="top"><input name="login" type="text" size="27" /></td>
<td></td>
</tr>
<tr>
<td height="11"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22"></td>
<td align="right" valign="middle" class="fuente_verde">CLAVE :</td>
<td></td>
<td valign="top"><input name="clave" type="password" size="27" /></td>
<td></td>
</tr>
<tr>
<td height="19"></td>
<td></td>
<td></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td height="24"></td>
<td></td>
<td></td>
<td align="right" valign="middle">
<input name="Submit" type="submit" class="boton_negro"
value="Aceptar"
onclick="javascript:document.f1.clave.value=hex_md5(clave.value);" />
</td>
<td> </td>
</tr>
<tr>
<td height="32"></td>
<td></td>
<td></td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
<p> </p>
</div>
<p align="center" class="text_error"><strong><? echo $msg ;
?></strong></p>
<p align="center" class="text_error"> </p>
<p align="center" class="text_error"> </p>
<p align="center" class="text_error"> </p>
<p align="center" class="text_error"><a
href="http://www.cisc.ug.edu.ec/">**VISITA NUESTRO SITIO WEB
GRATIS..**</a></p>
<p align="center" class="text_error"> </p>
<p align="center"><strong><? include("cabecera/foot.php"); ?></strong></p>
</body>
</html>
Admin(adminservices.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=windows-1252"
/>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
</head>
<?php
$msg= $_GET["msg"];
?>
<body>
<br />
<br />
<br />
<div align="center">
<form method="post" action="../conex/valida_login.php">
<table width="561" border="1">
<!--DWLayoutTable-->
<tr bgcolor="#336600">
<th height="20" scope="col">ID</th>
<th scope="col">Servicio</th>
<th scope="col">Estado </th>
<th scope="col">Accion</th>
</tr>
<tr bgcolor="#669900">
<th height="20" scope="col">1</th>
<th scope="col">http</th>
<th scope="col">ejecutandose</th>
<th scope="col">stop/start/restart</th>
</tr>
<tr bgcolor="#669900">
<th height="20" scope="col">2</th>
<th scope="col">dhcp</th>
<th scope="col">ejecutandose</th>
<th scope="col">stop/start/restart</th>
</tr>
<tr bgcolor="#669900">
<th height="20" scope="col">3</th>
<th scope="col">cbq</th>
<th scope="col">ejecutandose</th>
<th scope="col">stop/start/restart</th>
</tr>
</table>
</form>
<p> </p>
</div>
<p align="center" > </p>
<p align="center"><strong>Aquiles © 2010 Todos los derechos reservados
</strong></p>
</body>
</html>
Admin(adminuser.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=windows-1252"
/>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
</head>
<?php
$msg= $_GET["msg"];
?>
<body>
<br />
<br />
<br />
<div align="center">
<form method="post" action="../conex/valida_login.php">
<table width="391" border="0" cellpadding="0" cellspacing="0"
background="../imagenes/login.gif">
<!--DWLayoutTable-->
<tr>
<td width="33" height="63"> </td>
<td width="120"> </td>
<td width="13"> </td>
<td width="180"> </td>
<td width="45"> </td>
</tr>
<tr>
<td height="22"> </td>
<td align="right" valign="middle" class="fuente_verde">LOGIN : </td>
<td> </td>
<td valign="top"><label>
<input name="login" type="text" size="30" />
</label></td>
<td> </td>
</tr>
<tr>
<td height="11"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22"></td>
<td align="right" valign="middle" class="fuente_verde">CLAVE :</td>
<td></td>
<td valign="top"><input name="clave" type="password" size="30" /></td>
<td> </td>
</tr>
<tr>
<td height="19"></td>
<td></td>
<td></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td height="24"></td>
<td></td>
<td></td>
<td align="right" valign="middle">
<input type="submit" name="Submit" value="Aceptar" /> </td>
<td> </td>
</tr>
<tr>
<td height="32"></td>
<td></td>
<td></td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
<p> </p>
</div>
<p align="center" class="text_error"><strong><? echo $msg ;
?></strong></p>
<p align="center" class="text_error"> </p>
<p align="center"><strong>Aquiles © 2010 Todos los derechos reservados
</strong></p>
</body>
</html>
Cabecera(cabeceraadmin.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=windows-1252"
/>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function HoraActual(hora, minuto, segundo){
segundo = segundo + 1;
if(segundo == 60) {
minuto = minuto + 1;
segundo = 0;
if(minuto == 60) {
minuto = 0;
hora = hora + 1;
if(hora == 24) {
hora = 0;
}
}
}
if(hora < 10) hora = '0' + hora;
if(minuto < 10) minuto = '0' + minuto;
if(segundo < 10) segundo = '0' + segundo;
HoraCompleta= hora + " : " + minuto + " : " + segundo;
document.getElementById('contenedor_reloj').innerHTML =
HoraCompleta;
setTimeout("HoraActual("+hora+", "+minuto+", "+segundo+")",
1000);
}
</script>
<style type="text/css">
<!--
body {
margin-right: 0px;
margin-top: 0px;
background-image: url(../imagenes/logo_cisc_png.png);
}
#contenedor_reloj {
position:absolute;
left:18px;
top:6px;
width:141px;
height:42px;
z-index:1;
}
-->
</style></head>
<?php
//verifica arreglo si es vacio caso contrario lo pone como null
$msg = isset($_GET['msg']) ? $_GET['msg'] : null ;
session_start();
//incuyo la pag de las funciones
include("../funciones/funciones.php");
?>
<body onload="HoraActual(<?php echo date("H").", ".date("i").", ".date("s");
?>)">
<div id="contenedor_reloj" class="fuente_verde"></div>
<div align="center">
<table width="585" border="0" background="../imagenes/barramenu.jpg">
<!--DWLayoutTable-->
<tr>
<th width="84" height="20" scope="col"><a href="../main/main.php"><img
src="../imagenes/home.png" alt="Menu Principal" width="45" height="36"
border="0" /></a>
</br>
Home
</th>
<th width="55" scope="col"><a href="../general/squid.php"><img
src="../imagenes/lock.png" width="32" height="32" border="0" /></a>
</br>
Sitios Restringidos
</th>
<? if ( $_SESSION['idtipousuario'] =='1' ){?>
<th width="80" scope="col"><a href="../general/costo.php"><img
src="../imagenes/coins.png" width="32" height="32" border="0" /></a>
</br>
Costos
</th>
<? }?>
<? if ( $_SESSION['idtipousuario'] =='1' ){?>
<th width="80" scope="col"><a href="../general/tiempo.php"><img
src="../imagenes/date-32.png" width="32" height="32" border="0" /></a>
</br>
Tiempo
</th>
<? }?>
<? if ( $_SESSION['idtipousuario'] =='1' ){?>
<th width="65" scope="col"><a
href="../general/policy_admin.php"><img src="../imagenes/rules.png"
alt="Politicas Reglas" width="45" height="36" border="0" /></a>
</br>
Politica
</th>
<? }?>
<th width="64" scope="col"><a href="../usuarios/usuarios.php"><img
src="../imagenes/account.png" alt="Crear Nuevo Usuario del Sistema"
width="45" height="36" border="0" /></a>
</br>
Usuarios
</th>
<? if ( $_SESSION['idtipousuario'] =='1' ){?>
<th width="64" valign="top" scope="col"><a
href="../general/bw.php"><img src="../imagenes/consumo.png"
alt="Consumo" width="45" height="36" border="0" /></a>
</br>
Ancho/Banda
</th>
<? }?>
<th width="65" align="center" valign="middle" scope="col"><a
href="../general/reportes.php"><img src="../imagenes/report.png"
alt="Reportes" width="32" height="32" border="0" /></a>
</br>
Reportes
</th>
<th width="74" valign="top" scope="col"><a href="../index.php"><img
src="../imagenes/logout.png" alt="Salir" width="45" height="36" border="0"
/></a>
</br>
Salir
</th>
</tr>
</table>
<br />
</div>
<p class="fuente_verde">Bienvenido: <? echo
nombreusuario("{$_SESSION['cod']}") ?>
</body>
</html>
Cabecera(foot.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=windows-1252"
/>
<title>Documento sin título</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
</head>
<body>
<p> </p>
<p align="center"><strong>Aquiles © 2010 Todos los derechos
reservados </strong></p>
</body>
</html>
Clients(archivoxls)
<?PHP
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: filename=\"USUARIOSGENERADO.XLS\";");
session_start();
$vector = $_SESSION['vector'];
//print_r ($vector);
echo "<table border=1>" ;
echo "<tr><th> Usuario </th><th> Clave </th><th> Tiempo </th></tr>";
for($i=0;$i<count($vector);$i++)
{
echo
"<tr><td>".$vector[$i]['user']."</td><td>".$vector[$i]['clave']."</td>
<td>".$vector[$i]['tiempo']."</td></tr>";
}//fin for
echo "</table>";
unset($_SESSION['vector']);
?>
Clientes(clientes.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=windows-1252"
/>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
<script src="../js/md5.js" type="text/javascript"></script>
<script>
function abrir(){
window.open('../general/ticket.php','popup','width=300,height=400');
//document.f1.submit();
document.f1.clave.value=hex_md5(document.f1.clave.value);
}
</script>
</head>
<?php
$msg = isset($_GET['msg']) ? $_GET['msg'] : null ;
include("../cabecera/cabeceraadmin.php");
//GENERA CLAVE ALEATORIAMENTE PARA EL CLIENTE
//$str =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456
7890";
$str = "abcdefghijklmnopqrstuvwxyz1234567890";
$cad = "";
for($i=0;$i<12;$i++) {
$cad .= substr($str,rand(0,62),1);
}
//fingeneraclave
//SACER USUARIO PARA CREARUSUARIO SECUENCIAL para crear
usuario numerado luego asigna el valor al TXT LOGIN
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
$sql = "SELECT MAX(id_tb_usuario) FROM tb_usuario";
$result = mysql_query($sql, $link) or die ("No se pudo
ejecutar SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
$CodigoMaxUsuario=mysql_fetch_array($result);
$CodigoMaximoUsuario =
"user0".$CodigoMaxUsuario[0];
}//fin else
mysql_free_result($result);
mysql_close($link);
?>
<body >
<br />
<br />
<br />
<div align="center">
<form name="f1" method="post" action="../conex/insert_cliente.php">
<table width="561" border="0">
<!--DWLayoutTable-->
<tr>
<th height="20" colspan="3" background="../imagenes/cab_tabla.gif"
bgcolor="#336633" scope="col">Crea Cuentas Nuevas </th>
</tr>
<tr>
<td height="31" colspan="3" class="text_error"
align="center"><strong><? echo $msg ; ?></strong></td>
</tr>
<tr>
<td height="26" valign="top" bgcolor="#191718">Login</td>
<td colspan="2" valign="top" bgcolor="#232323"><input name="login"
type="text" size="40" value="<? echo $CodigoMaximoUsuario; ?>"/></td>
</tr>
<tr>
<td width="203" height="26" valign="top" bgcolor="#191718">Clave</td>
<td colspan="2" valign="top" bgcolor="#232323"><input name="clave1"
type="password" disabled="disabled" size="30" value="<? echo $cad;?>"
/><input type="hidden" value="<? echo $cad;?>" name="encript" /><input
name="clave" type="hidden" value="<? echo $cad;?>" /></td>
</tr>
<tr>
<td height="26" colspan="3" valign="top" bgcolor="#191718"
background="../imagenes/cab_tabla.gif"><div align="center">
<!--<input name="Submit" type="button" class="boton_negro"
value="Generar Clave" />-->
</div></td>
</tr>
<tr>
<td height="26" valign="top" bgcolor="#191718">Hora(s)</td>
<td colspan="2" valign="top" bgcolor="#232323"><label>
<?
$link = mysql_connect("localhost", "root","aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//$sql = "SELECT * FROM tb_tiempo, WHERE id_tb_tiponumero=$xtipo";
$sql_min = "SELECT time.numero , time.id_tb_tiempo FROM tb_tiempo as
time, tb_costo as cos WHERE cos.id_tb_costo=time.id_tb_costo ";
$result = mysql_query($sql_min, $link) ;//or die ("Favor Ingrese datos a
Buscar...!");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
if ($row = mysql_fetch_array($result)){
echo '<select name= "horas">';
//llena combo box
do {
echo '<option value=
"'.$row["id_tb_tiempo"].'">'.$row["numero"].'</option>';
} while ($row = mysql_fetch_array($result));
echo '</select>';
}//fin if
}//fin else
?>
</label></td>
</tr>
<tr>
<td height="26" valign="top" bgcolor="#191718"><!--
DWLayoutEmptyCell--> </td>
<td colspan="2" valign="top" bgcolor="#232323"><label></label></td>
</tr>
<tr>
<td height="13" colspan="3"></td>
</tr>
<tr align="center" valign="middle"
background="../imagenes/cab_tabla.gif">
<td height="29" colspan="3"><div align="center">
<?
$_SESSION['user']=$CodigoMaximoUsuario ;
$_SESSION['passw']=$cad ;
?>
<input name="Submit" type="submit" class="boton_negro"
value="Guardar e Imprimir" onclick="javascript:abrir();"/>
</div></td>
</tr>
</table>
</form>
<p> </p>
</div>
<p align="center" > </p>
<p align="center"><strong><? include("../cabecera/foot.php");
?></strong></p>
</body>
</html>
Clientes(clientes_batch.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=windows-1252"
/>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
<script src="../js/md5.js" type="text/javascript"></script>
</head>
<?php
include("../cabecera/cabeceraadmin.php");
$msg = isset($_GET['msg']) ? $_GET['msg'] : null ;
$vector= array();
$vector = isset($_SESSION['vector'])?$_SESSION['vector']:null;
//SACER USUARIO PARA CREARUSUARIO SECUENCIAL para crear
usuario numerado luego asigna el valor al TXT LOGIN
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
$sql = "SELECT MAX(id_tb_usuario) FROM tb_usuario";
$result = mysql_query($sql, $link) or die ("No se pudo ejecutar SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
$CodigoMaxUsuario=mysql_fetch_array($result);
$CodigoMaximoUsuario =
"user0".$CodigoMaxUsuario[0];
}//fin else
mysql_free_result($result);
mysql_close($link);
?>
<body >
<br />
<br />
<br />
<div align="center">
<form name="f1" method="post" action="../conex/insert_cliente_batch.php">
<table width="561" border="0">
<!--DWLayoutTable-->
<tr>
<th height="20" colspan="3" background="../imagenes/cab_tabla.gif"
bgcolor="#FFFFFF" scope="col">Crea Cuentas Nuevas Por Lotes </th>
</tr>
<tr>
<td height="31" colspan="3" class="text_error"
align="center"><strong><? echo $msg ; ?></strong></td>
</tr>
<?php
if (count($vector)!=0){
// echo count($vector);
//print_r ($vector);
?>
<tr>
<td height="31" colspan="3" class="text_error"
align="center"><strong><a href="archivoxls.php" target="_blank" >Abrir
Archivo Generado</a></strong></td>
</tr>
<?
}//fin if valida vector.
?>
<tr>
<td height="26" valign="top" bgcolor="#191718">Cantidad</td>
<td colspan="2" valign="top" bgcolor="#232323"><input
name="cantidad" type="text" size="10" /></td>
</tr>
<tr>
<td height="26" valign="top" bgcolor="#191718">Login Ultimo usuario
Creado </td>
<td colspan="2" valign="top" bgcolor="#232323" class="text_error"> <?
echo $CodigoMaximoUsuario; ?></td>
</tr>
<tr>
<td height="26" colspan="3" valign="top" bgcolor="#191718"
background="../imagenes/cab_tabla.gif"><div align="center">
<!--<input name="Submit" type="button" class="boton_negro"
value="Generar Clave" />-->
</div></td>
</tr>
<tr>
<td height="26" valign="top" bgcolor="#191718">Tiempo</td>
<td colspan="2" valign="top" bgcolor="#232323"><label>
<?
$link = mysql_connect("localhost", "root","aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//$sql = "SELECT * FROM tb_tiempo, WHERE
id_tb_tiponumero=$xtipo";
$sql_min = "SELECT time.numero , time.id_tb_tiempo
FROM tb_tiempo as time, tb_costo as cos WHERE
cos.id_tb_costo=time.id_tb_costo ";
$result = mysql_query($sql_min, $link) ;//or die ("Favor
Ingrese datos a Buscar...!");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
if ($row = mysql_fetch_array($result)){
echo '<select name= "horas">';
//llena combo box
do {
echo '<option value=
"'.$row["id_tb_tiempo"].'">'.$row["numero"].'</option>';
} while ($row = mysql_fetch_array($result));
echo '</select>';
}//fin if
}//fin else
?>
</label></td>
</tr>
<tr>
<td height="26" valign="top" bgcolor="#191718"><!--
DWLayoutEmptyCell--> </td>
<td colspan="2" valign="top" bgcolor="#232323"><label></label></td>
</tr>
<tr>
<td height="13" colspan="3"></td>
</tr>
<tr align="center" valign="middle"
background="../imagenes/cab_tabla.gif">
<td height="29" colspan="3"><div align="center">
<?
//$_SESSION['user']=$CodigoMaximoUsuario ;
//$_SESSION['passw']=$cad ;
?>
<input name="Submit" type="submit" class="boton_negro"
value="Generar Archivo" />
</div></td>
</tr>
</table>
</form>
<p> </p>
</div>
<p align="center" > </p>
<p align="center"><strong><? include("../cabecera/foot.php");
?></strong></p>
</body>
</html>
Clients(logout.php)
<?php
//inicializo la session para usar codigo de usuario
session_start();
//fincion LOG
include("../funciones/save_log.php");
include("../funciones/quita_ip.php");
include("../funciones/quita_ip_cbq.php");
include("../funciones/quita_regla.php");
//Trae variables para registrar usuario nuevo
$lip= $_SESSION['ip'];
$lmac= $_SESSION['mac'];
$lfin_conex= date("H:i:s",time());
$lresta_conex= $_SESSION['trestante'];
$fecha=date("y/m/d H:i:s");
$msg = isset($_GET['msg']) ? $_GET['msg'] : "Gracias Por Usar Nuestro
Sistema...!!!" ;
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No
se pudo establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
//SACO EL ULTIMO REGISTRO DEL USAURIO EN LA TABLA PARA
ACTUALIZAR EL ESTADO A INACTIVO
$sql_select="SELECT MAX(id_tb_tiempo_usuario),id_tb_tiempo
FROM tb_tiempo_usuario WHERE id_tb_usuario='{$_SESSION['cod']}'
GROUP BY (id_tb_usuario)";
$result_select = mysql_query($sql_select, $link) or die ("No se
pudo ejecutar SQL SELECT");
$row = mysql_fetch_array($result_select);
//saco el id de tb_tiempo_usuario
$lcod_txu=$row['0'];
$lcod_tiempo=$row['id_tb_tiempo'];
//SACA EL ULTIMO REGISTRO Y LO CAMBIA A ESTADO 2 ANADIENDO
LOS DATOS DE LAS FECHA DE CONEX, TIEMPO RESTANTE, TIEMPO
FIN DE CONEXION
$sql = "UPDATE tb_tiempo_usuario SET
id_tb_usuario='{$_SESSION['cod']}'
,id_tb_tiempo='$lcod_tiempo',ip='$lip',mac='$lmac',fin_conex='$lfin_conex',re
sta_conex='$lresta_conex',fecha='$fecha',id_tb_estado='2' WHERE
id_tb_tiempo_usuario='$lcod_txu' ";
$result = mysql_query($sql, $link) or die ("No se pudo ejecutar
SQL UPDATE");
//Eliminamos las reglas aplicadas al cliente.
//echo "1";
$sql_upd_reglas = "UPDATE tb_regla SET id_tb_estado='2'
WHERE id_tb_tiempo_usuario='$lcod_txu' ";
//$sql_upd_reglas = " DELETE FROM tb_regla WHERE
id_tb_tiempo_usuario='$lcod_txu' ";
$result = mysql_query($sql_upd_reglas, $link) or die ("No se
pudo ejecutar SQL UPDATE REGLAS");
//se elimina la ip de los archivps permitidos de squid ..... para evitar la
navegacion
quita_ip($lip);
//quita ip de los archivos del cbq
quita_ip_cbq($lip);
###### QUITA REGLA IPTABLES
$sql_regla = "SELECT reg.tipo, reg.puerto, tmus.ip FROM
tb_regla as reg , tb_tiempo_usuario AS tmus, tb_estado AS est,
tb_tipousuario AS tip WHERE
tmus.id_tb_tiempo_usuario=reg.id_tb_tiempo_usuario AND
reg.id_tb_estado=est.id_tb_estado AND
reg.id_tb_tipousuario=tip.id_tb_tipousuario AND
reg.id_tb_tiempo_usuario='$lcod_txu' ";
$result_regla = mysql_query($sql_regla, $link) or die ("No se pudo
ejecutar SQL saca datos de regla para eliminar");
$row_regla = mysql_fetch_array($result_regla);
//saco el id de saco los datos para eliminar regla de archivo
//echo "2";
$lipr=$row_regla['ip'];
$lpuertor=$row_regla['puerto'];
$ltipor=$row_regla['tipo'];
//echo "3";
quita_regla($lipr,$lpuertor,$ltipor);
#######
//GUARDO EN EL LOG CON LA FUNCION SAVE_LOG()
$descripcion="Salio del sistema el Usuario: {$_SESSION['cod']}
...!!";
save_log("{$_SESSION['cod']}",$descripcion);
header("location: ../index.php?msg=$msg");
mysql_close($link);
?>
Clientes(maincliente.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">
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
<script src="../js/funciones.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript"
src="../js/ajax_logout.js"></script>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<script type="text/javascript">
function HoraActual(hora, minuto, segundo){
segundo = segundo + 1;
if(segundo == 60) {
minuto = minuto + 1;
segundo = 0;
if(minuto == 60) {
minuto = 0;
hora = hora + 1;
if(hora == 24) {
hora = 0;
}
}
}
if(hora < 10) hora = '0' + hora;
if(minuto < 10) minuto = '0' + minuto;
if(segundo < 10) segundo = '0' + segundo;
HoraCompleta= hora + " : " + minuto + " : " + segundo;
document.getElementById('contenedor_reloj').innerHTML =
HoraCompleta;
setTimeout("HoraActual("+hora+", "+minuto+", "+segundo+")",
1000);
}
</script>
<?
session_start();
//incuyo la pag de las funciones, para que no se repita el logo background-
repeat: no-repeat;
include("../funciones/funciones.php");
?>
<style type="text/css">
<!--
body {
background-image: url(../imagenes/logo_cisc_png.png);
}
-->
</style></head>
<body onload="HoraActual(<?php echo date("H").", ".date("i").",".date("s");
?>)" onResize="parent.resizeTo(640,580)" onbeforeunload="logout(); return
false">
<div id="contenedor_reloj" class="fuente_verde"></div>
<p align="center" ><a href="logout.php"><img src="../imagenes/logout.png"
alt="Salir" width="45" height="36" border="0" /></a></p>
<p class="fuente_verde">Bienvenido: <? echo
nombreusuario("{$_SESSION['cod']}") ?></p>
<p align="center"><iframe src="maincliente_in.php" border="0" width=950
height=350 ></iframe></p>
<div id="resultado" align="center" class="text_error"></div>
</body>
</html>
Clients(mainclientes_in.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">
<meta HTTP-EQUIV="refresh" content="5">
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
<script src="../js/funciones.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript"
src="../js/ajax_logout.js"></script>
<title>Aquiles -- Sistema de Gestion Red Local</title>
</head>
<?
session_start();
//incuyo la pag de las funciones
include("../funciones/funciones.php");
include("../funciones/restahoras.php");
include("../funciones/get_mac.php");
//IP DEL SERVIDOR REMOTO
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])!=null)
{
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"] ;
}
else{
$ip = $_SERVER["REMOTE_ADDR"];
}
//$ip= $_SERVER['REMOTE_ADDR'];
$resta_conex_sess =$_SESSION['resta_conex_sess'];
//saca mac por ip
$mac=get_mac($ip);
//SACAMOS LOS DATOS PARA MOSTRARLOS EN EL MAIN DEL
CLIENTE
//SQL a la base
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//#############################################################
#################
$sql_max="SELECT
MAX(tmus.id_tb_tiempo_usuario),tmus.resta_conex FROM
tb_tiempo_usuario AS tmus, tb_usuario AS usu, tb_tiempo AS time WHERE
tmus.id_tb_usuario='{$_SESSION['cod']}' AND
tmus.id_tb_usuario=usu.id_tb_usuario AND
tmus.id_tb_tiempo=time.id_tb_tiempo GROUP BY (usu.id_tb_usuario)";
$result_max = mysql_query($sql_max, $link) or die ("No se pudo
ejecutar SQL");
if ($result_max ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
$reg2=mysql_fetch_array($result_max);
$id_tiempo_contratado=$reg2['0'];
}//fin else if sql_max
$sql="SELECT usu.login, time.numero, tmus.ini_conex,
tmus.resta_conex FROM tb_tiempo_usuario AS tmus, tb_usuario AS usu,
tb_tiempo AS time WHERE
tmus.id_tb_tiempo_usuario='$id_tiempo_contratado' AND
tmus.id_tb_usuario=usu.id_tb_usuario AND
tmus.id_tb_tiempo=time.id_tb_tiempo ";
//echo $sql;
$result = mysql_query($sql, $link) or die ("No se pudo ejecutar SQL");
if ($result == 0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
$reg=mysql_fetch_array($result);
$tiempo_inicio=$reg['ini_conex'];
$tiempo_contratado=$reg['numero'];
$lresta_conex=$reg['resta_conex'];
}//fin else
//##########################
//##########################
//VALIDANDO NUEVAMENTE TODO
//echo $lresta_conex;
$cero="00:00:00";
$str_cero=strtotime( $cero );
$str_resta_conex=strtotime( $lresta_conex );
//valido si tengo saldo
//echo $str_resta_conex;
//echo "--";
//echo $str_cero;
//echo "--";
if ($str_resta_conex>$str_cero){
//echo "si tengo saldo --";
$horaconex=date("H").":".date("i").":".date("s");
$tiempo_transcurrido=restahoras($tiempo_inicio,$horaconex);
//VALIDO SI ES LA PRIMERA VEZ QUE INGRESO
if (strtotime($lresta_conex)==strtotime(
$tiempo_contratado )){
$consumo=restahoras($tiempo_transcurrido,$tiempo_contratado);
//echo "si es la primera vez";
}//fin if
//es el saldo original sin recarga
if (strtotime( $tiempo_contratado )>
strtotime($lresta_conex)){
$consumo=restahoras($tiempo_transcurrido,$resta_conex_sess);
//echo $consumo;
//echo "if";
}
//ES RECARGA
else{
$consumo=restahoras($tiempo_transcurrido,$resta_conex_sess);
//echo $consumo;
//echo "else";
}
if
(strtotime($consumo)>strtotime($tiempo_contratado)){
//Pongo en 0 el contador de saldo
echo "no tiene saldo 1";
$consumo="00:00:00";
$_SESSION['trestante']=$consumo;
$msg="Sin saldo";
header("location:
logout.php?msg=$msg");
}
//FIN VALIDO SI ES LA PRIMERA VEZ QUE INGRESO
//SACO EL ULTIMO REGISTRO DEL USAURIO EN LA TABLA PARA
ACTUALIZAR LOS DATOS EN TIEMPO_USUARIO
$sql_select="SELECT MAX(id_tb_tiempo_usuario),id_tb_tiempo
FROM tb_tiempo_usuario WHERE id_tb_usuario='{$_SESSION['cod']}'
GROUP BY (id_tb_usuario)";
$result_select = mysql_query($sql_select, $link) or die ("No se
pudo ejecutar SQL SELECT");
$row = mysql_fetch_array($result_select);
//saco el id de tb_tiempo_usuario
$cod_txu=$row['0'];
$cod_tiempo=$row['id_tb_tiempo'];
//ultimo minuto de conexion
$fin_conex= date(" H:i:s",time());
//subo a la session el consumo del cliente
$_SESSION['trestante']=$consumo;
//SACA EL ULTIMO REGISTRO Y LO ACTUALIZA CON LOS DATOS DE
LA SESSION ACTUAL
$sql_update = "UPDATE tb_tiempo_usuario SET
id_tb_usuario='{$_SESSION['cod']}'
,id_tb_tiempo='$cod_tiempo',ip='$ip',mac='$mac',fin_conex='$fin_conex',rest
a_conex='$consumo' WHERE id_tb_tiempo_usuario='$cod_txu' ";
$result = mysql_query($sql_update, $link) or die ("No se pudo
ejecutar SQL UPDATE");
}
else {
//si no tiene saldo
//Pongo en 0 el contador de saldo
echo "no tiene saldo";
$consumo="00:00:00";
$_SESSION['trestante']=$consumo;
$msg="Sin saldo";
header("location: logout.php?msg=$msg");
} // fin else
?>
<body >
<!--<p align="center" ><a href="logout.php" onClick="cambiarvalor()"><img
src="../imagenes/logout.png" alt="Salir" width="45" height="36" border="0"
/></a></p>-->
<!--<p class="text_cliente">Bienvenido: <? //echo
nombreusuario("{$_SESSION['cod']}") ?></p>-->
<div align="left">
<table width="557" border="0">
<tr>
<td width="140" background="../imagenes/cab_tabla.gif">Hora de
Conexion:</td>
<td width="150" background="../imagenes/cab_tabla.gif"><? echo
$tiempo_inicio; ?></td>
<td width="35" colspan="2" rowspan="5"> </td>
</tr>
<tr>
<td background="../imagenes/cab_tabla.gif">Contratado:</td>
<td background="../imagenes/cab_tabla.gif"><? echo
$tiempo_contratado; ?></td>
</tr>
<tr>
<td background="../imagenes/cab_tabla.gif">Consumo Actual:</td>
<td background="../imagenes/cab_tabla.gif"><? echo
$tiempo_transcurrido; ?></td>
</tr>
<tr>
<td background="../imagenes/cab_tabla.gif">Saldo Restante:</td>
<td background="../imagenes/cab_tabla.gif"><? echo $consumo; ?></td>
</tr>
<tr>
<td background="../imagenes/cab_tabla.gif">IP Asignada:</td>
<td background="../imagenes/cab_tabla.gif"><? echo $ip; ?></td>
</tr>
</table>
</div>
<p class="text_cliente">Grafico de Consumo</p>
<?
$filename = '../imagenes/consumo/'.$ip.'-1-R.png';
if (file_exists($filename)) { ?>
<img src="../imagenes/consumo/<?=$ip?>-1-R.png"
width="601" height="168" />
<? } else { ?>
<p class="text_error">El Archivo se esta generando intente
nuevamente....!</p>
<? } //fin else ?>
<?
$_SESSION['ip']=$ip ;
$_SESSION['mac']=$mac ;
?>
</body>
</html>
Conex(edit_usuarios.php)
<?php
//funcion guarda log
include("../funciones/save_log.php");
//inicio session
session_start();
//Trae variables para registrar horas a alquilar nuevas
$lcod =$_GET['codigo'];
//Trae variables para registrar usuario nuevo
$llogin= $_POST["login"];
$lclave= $_POST["clave"];
$lclaverre= $_POST["claverre"];
$ldescripcion= $_POST["descripcion"];
$ltipousu= $_POST["tipousu"];
$lestado= $_POST["estado"];
$ltime_contratado= $_POST['tiempo'];
$ltime_real= $_POST['tiempo_real'];
$lsaldo= $_POST['saldo'];
//$idtipousuario=$_SESSION['idtipousuario'];
//comparo las claves para ver si son = correctas
if($lclave=='d41d8cd98f00b204e9800998ecf8427e'){$lclave=" ";}
if($lclaverre=='d41d8cd98f00b204e9800998ecf8427e'){$lclaverre=" ";}
if ($lclave==$lclaverre){
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No
se pudo establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
#################################
if($ltime_contratado!='no'){
//saco el tiempo actual selecionado
$sql_tiempo="SELECT numero FROM tb_tiempo WHERE
id_tb_tiempo='$ltime_contratado' ";
$result_tiempo = mysql_query($sql_tiempo, $link);
if ($result_tiempo ==0){echo
"Error".mysql_errno().":".mysql_error() ;}//fin if error
$contratado_tiempo=mysql_result($result_tiempo,0,'numero');
//saco el codigo del ultimo tienpo para asumarlo
$sql_max_id="SELECT MAX(id_tb_tiempo_usuario) FROM
tb_tiempo_usuario WHERE id_tb_usuario='$lcod' ";
$result_max_id = mysql_query($sql_max_id, $link);
if ($result_max_id ==0){echo
"Error".mysql_errno().":".mysql_error() ;}//fin if error
$reg_tmus=mysql_fetch_array($result_max_id);
$max_id_tmsu=$reg_tmus[0];
//SUMA LOS TIEMOS
$minuit = strtotime("00:00:00.00");
$contratado_tiempo=$contratado_tiempo.".0";
$lsaldo=$lsaldo.".0";
$timestamp1=strtotime($contratado_tiempo)-$minuit;
$timestamp2=strtotime($lsaldo)-$minuit;
$suma=$timestamp2+$timestamp1+$minuit;
//echo $suma;
$suma=date("H:i:s",$suma);
//saco el código ultimo tiempo registrado por usuario update
$sql_update_tmus="UPDATE tb_tiempo_usuario SET
resta_conex='$suma' WHERE id_tb_tiempo_usuario='$max_id_tmsu' ";
$result_update_tmus= mysql_query($sql_update_tmus, $link);
}//fin if verifica si cambio el tiempo contratado
else{$ltime_contratado=$ltime_real;}
//#################################
//SI ES CLIENTE
if ($ltipousu==3){
//SQL a la base si es cliente
if ($lclave!=" "){
//si la calve no esta vacia la actualizo caso contrario no hago nada en el
campo clave
$sql= "UPDATE tb_usuario AS usu, tb_tiempo AS time, tb_tiempo_usuario
AS tmus SET usu.login='$llogin',usu.clave='$lclave',
usu.descripcion='$ldescripcion', usu.id_tb_tipousuario='$ltipousu'
,usu.id_tb_estado='$lestado', tmus.id_tb_tiempo='$ltime_contratado' WHERE
usu.id_tb_usuario=$lcod AND usu.id_tb_usuario=tmus.id_tb_usuario AND
tmus.id_tb_tiempo=time.id_tb_tiempo";
}else{
$sql= "UPDATE tb_usuario AS usu, tb_tiempo AS time, tb_tiempo_usuario
AS tmus SET usu.login='$llogin', usu.descripcion='$ldescripcion',
usu.id_tb_tipousuario='$ltipousu' ,usu.id_tb_estado='$lestado',
tmus.id_tb_tiempo='$ltime_contratado' WHERE usu.id_tb_usuario=$lcod
AND usu.id_tb_usuario=tmus.id_tb_usuario AND
tmus.id_tb_tiempo=time.id_tb_tiempo";
}
//lleno variable para grabar log para regarga
$descripcion="Se realizo una recarga al usuario :$llogin Contratado:
$contratado_tiempo Saldo Actual: $suma Nuevo Saldo: $ltime_contratado ";
}//fin if valida tipo de usuario para guardar tiempo
else{
//SQL a la base si es adminsitrador o cajero
if ($lclave!=" "){
//si la calve no esta vacia la actualizo caso contrario no hago nada en el
campo clave
$sql = "UPDATE tb_usuario SET login='$llogin',clave='$lclave',
descripcion='$ldescripcion', id_tb_tipousuario='$ltipousu'
,id_tb_estado='$lestado' WHERE id_tb_usuario=$lcod";
}else{
$sql = "UPDATE tb_usuario SET login='$llogin',
descripcion='$ldescripcion', id_tb_tipousuario='$ltipousu'
,id_tb_estado='$lestado' WHERE id_tb_usuario=$lcod";
}
//lleno variable para grabar log para cambio de clave
$descripcion="Se realizo un cambio de clave al usuario :$llogin ";
}//fin else modifica tiempo usuario
$result = mysql_query($sql, $link);// or die ("No se pudo ejecutar
SQL");
if ($result ==0){echo "Error".mysql_errno().":".mysql_error()
;}//fin if error
else{
//GUARDO EN EL LOG CON LA FUNCION SAVE_LOG()
save_log("{$_SESSION['cod']}",$descripcion);
$msg="Registro guardado con exito...!!!";
header("location: ../usuarios/usuarios.php?msg=$msg");
}//fin else error
}//fin if compara clave
else{
$msg="Las Claves no son iguales favor intentar
nuevamente...!!!";
header("location: ../usuarios/usuarios.php?msg=$msg");
}//fin else valida claves iguales
mysql_close($link);
?>
Conex(genera_reporte.php)
<?php
//funcion guarda log
//error_reporting( );
$ebits = ini_get('error_reporting');
error_reporting($ebits ^ E_NOTICE);
//require_once('class.ezpdf.php');
include ("../clases/class.ezpdf.php");
//####
$tipo= $_POST["tipo"];
$cmb_usuario= $_POST["cmb_usuario"];
$fecha= $_POST["fecha"];
//#####CLASE PARA GENERAR EL PDF DE LOS REPORTES
$pdf =& new Cezpdf('a4');
$pdf->selectFont("../clases/fonts/Courier.afm");
$pdf->ezSetCmMargins(1,1,1.5,1.5);
//conex a la base
$link = mysql_connect("localhost", "root","aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
switch ($tipo){
//#############################################################
#############
//por todos los usuarios
case '0':
$sql="SELECT log.descripcion,log.fecha,log.hora,usu.login FROM tb_log AS
log, tb_usuario AS usu WHERE log.id_tb_usuario=usu.id_tb_usuario";
$result = mysql_query($sql, $link) or
die(mysql_error());//fin if error
$totEmp = mysql_num_rows($result);
$ixx = 0;
while($datatmp = mysql_fetch_assoc($result)) {
$ixx = $ixx+1;
$data[] = array_merge($datatmp, array('num'=>$ixx));
}//fin while cod indentificacion para cada fila
$titles = array(
'num'=>'<b>Num</b>',
'login'=>'<b>Codigo Usuarios</b>',
'descripcion'=>'<b>Descripcion</b>',
'fecha'=>'<b>Fecha</b>',
'hora'=>'<b>Hora</b>'
);
$options = array(
'shadeCol'=>array(0.9,0.9,0.9),
'xOrientation'=>'center',
'width'=>500
);
//#####TITULO DEL ARCHIVO
$txttit = "<b>Reportes Sistema AQUILES.</b>\n";
$txttit.= "Todos los Registros \n";
//####FIN DEL TITULO PARA GENERAR PDF
break;//fin case busca a todos
//#############################################################
###############
//#############################################################
###############
//1 por codigo de usuario
case '1':
$sql="SELECT log.descripcion,log.fecha,log.hora,usu.login FROM tb_log AS
log, tb_usuario AS usu WHERE log.id_tb_usuario=usu.id_tb_usuario AND
log.id_tb_usuario='$cmb_usuario' ";
$result = mysql_query($sql, $link) or
die(mysql_error());//fin if error
$totEmp = mysql_num_rows($result);
$ixx = 0;
while($datatmp = mysql_fetch_assoc($result)) {
$ixx = $ixx+1;
$data[] = array_merge($datatmp, array('num'=>$ixx));
}//fin while cod indentificacion para cada fila
$titles = array(
'num'=>'<b>Num</b>',
'login'=>'<b>Codigo Usuarios</b>',
'descripcion'=>'<b>Descripcion</b>',
'fecha'=>'<b>Fecha</b>',
'hora'=>'<b>Hora</b>'
);
$options = array(
'shadeCol'=>array(0.9,0.9,0.9),
'xOrientation'=>'center',
'width'=>500
);
//#####TITULO DEL ARCHIVO
$txttit = "<b>Reportes Sistema AQUILES.</b>\n";
$txttit.= "Reporte de Actividades por usuario \n";
//####FIN DEL TITULO PARA GENERAR PDF
break;//fin case busca a usuario por codigo
//#############################################################
###############
//#############################################################
###############
//2 si es por fecha del log general
case '2':
$sql="SELECT
log.descripcion,log.fecha,log.hora,usu.login FROM tb_log AS log, tb_usuario
AS usu WHERE log.fecha='$fecha' AND log.id_tb_usuario=usu.id_tb_usuario
";
$result = mysql_query($sql, $link) or
die(mysql_error());//fin if error
$totEmp = mysql_num_rows($result);
$ixx = 0;
while($datatmp = mysql_fetch_assoc($result)) {
$ixx = $ixx+1;
$data[] = array_merge($datatmp, array('num'=>$ixx));
}//fin while cod indentificacion para cada fila
$titles = array(
'num'=>'<b>Num</b>',
'login'=>'<b>Codigo Usuarios</b>',
'descripcion'=>'<b>Descripcion</b>',
'fecha'=>'<b>Fecha</b>',
'hora'=>'<b>Hora</b>'
);
$options = array(
'shadeCol'=>array(0.9,0.9,0.9),
'xOrientation'=>'center',
'width'=>500
);
//#####TITULO DEL ARCHIVO
$txttit = "<b>Reportes Sistema AQUILES.</b>\n";
$txttit.= "Reporte de Actividades por usuario \n";
//####FIN DEL TITULO PARA GENERAR PDF
break;//fin case busca a usuario por codigo
//#############################################################
###############
//#############################################################
###############
//3 Ingresos al sistema
case '3':
$sql="SELECT log.descripcion,log.fecha,log.hora, usu.login FROM tb_log
AS log, tb_usuario AS usu WHERE log.descripcion LIKE '%ingreso%' AND
log.id_tb_usuario=usu.id_tb_usuario ";
$result = mysql_query($sql, $link) or
die(mysql_error());//fin if error
$totEmp = mysql_num_rows($result);
$ixx = 0;
while($datatmp = mysql_fetch_assoc($result)) {
$ixx = $ixx+1;
$data[] = array_merge($datatmp, array('num'=>$ixx));
}//fin while cod indentificacion para cada fila
$titles = array(
'num'=>'<b>Num</b>',
'login'=>'<b>Codigo Usuarios</b>',
'descripcion'=>'<b>Descripcion</b>',
'fecha'=>'<b>Fecha</b>',
'hora'=>'<b>Hora</b>'
);
$options = array(
'shadeCol'=>array(0.9,0.9,0.9),
'xOrientation'=>'center',
'width'=>500
);
//#####TITULO DEL ARCHIVO
$txttit = "<b>Reportes Sistema AQUILES.</b>\n";
$txttit.= "Reporte de Actividades por usuario \n";
//####FIN DEL TITULO PARA GENERAR PDF
break;//fin case Busca ingresos al sistema
//#############################################################
###############
//#############################################################
###############
//4 Salida del sistema
case '4':
$sql="SELECT log.descripcion,log.fecha,log.hora,
usu.login FROM tb_log AS log, tb_usuario AS usu WHERE log.descripcion
LIKE '%salio%' AND log.id_tb_usuario=usu.id_tb_usuario ";
$result = mysql_query($sql, $link) or
die(mysql_error());//fin if error
$totEmp = mysql_num_rows($result);
$ixx = 0;
while($datatmp = mysql_fetch_assoc($result)) {
$ixx = $ixx+1;
$data[] = array_merge($datatmp, array('num'=>$ixx));
}//fin while cod indentificacion para cada fila
$titles = array(
'num'=>'<b>Num</b>',
'login'=>'<b>Codigo Usuarios</b>',
'descripcion'=>'<b>Descripcion</b>',
'fecha'=>'<b>Fecha</b>',
'hora'=>'<b>Hora</b>'
);
$options = array(
'shadeCol'=>array(0.9,0.9,0.9),
'xOrientation'=>'center',
'width'=>500
);
//#####TITULO DEL ARCHIVO
$txttit = "<b>Reportes Sistema AQUILES.</b>\n";
$txttit.= "Reporte de Actividades por usuario \n";
//####FIN DEL TITULO PARA GENERAR PDF
break;//fin case Busca ingresos al sistema
//#############################################################
###############
}//fin switch
//########GENERO EL ARCHIVO
$pdf->ezText($txttit, 12);
$pdf->ezTable($data, $titles, '', $options);
$pdf->ezText("\n\n\n", 10);
$pdf->ezText("<b>Fecha:</b> ".date("d/m/Y"), 10);
$pdf->ezText("<b>Hora:</b> ".date("H:i:s")."\n\n", 10);
$pdf->ezStream();
//########FIN DE GENERAR ARCHIVO
//$pdf = new Cezpdf();
//$pdf->selectFont('fonts/Helvetica.afm');
//$pdf->ezText('Mi primer pdf en PHP', 30);
//$pdf->ezStream();
?>
Conex(insert_bw.php)
<?php
//Trae variables para registrar horas a alquilar nuevas
$lbw = $_POST['bw'] ;
$lcmtipobw = $_POST['tipobw'] ;
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
//if guarda BW
$sql = "INSERT INTO tb_bw (valorbw,tipo) VALUES
('$lbw','$lcmtipobw')";
$result = mysql_query($sql, $link);// or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}
else{
$msg="Registros guardados con exito...!!!";
header("location: ../general/bw.php?msg=$msg");
}//fin else
mysql_close($link);
?>
Conex(insert_cliente.php)
<?php
session_start();
//Trae variables para registrar usuario nuevo
$llogin= $_POST["login"];
$lclave= $_POST['clave'];
$lcod_tiempo= $_POST["horas"];
$lencriptada= $_POST["encript"];
$ldescripcion= "Cliente Web";
//3 USUARIO DEL SISTEMA
$ltipousu= "3";
//1 ACTIVO
$lestado= "1";
$fecha= date ("y/m/d");
$hora= date(" H:i",time());
$fecha_hora=date("y/m/d H:i:s");
//funcion para grbar ticket del cliente
include("../funciones/crea_ticket.php");
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
$sql = "INSERT INTO tb_usuario
(login,clave,descripcion,id_tb_tipousuario,id_tb_estado) VALUES
('$llogin','$lclave','$ldescripcion','$ltipousu','$lestado')";
$result = mysql_query($sql, $link); //or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
//SACO EL CODIGO DEL USUARIO INGRESADO PARA AINSERTAR
TIEMPO_USUARIO
$sql_max= "SELECT MAX(id_tb_usuario) FROM
tb_usuario";
$result_max = mysql_query($sql_max, $link) or die
("No se pudo ejecutar SQL");
$row_max = mysql_fetch_array($result_max) ;
$lcodusr_max=$row_max[0];
//FIN SACO ULTIMO CODIGO INGRESADO
//saco el numero del tiempo para grabarlo en resta_conex de la tabla
tiempo_usuario
$sql_des_time= "SELECT numero FROM tb_tiempo WHERE
id_tb_tiempo='$lcod_tiempo' ";
$result_time = mysql_query($sql_des_time, $link) or die ("No se pudo
ejecutar SQL TIME");
$row_time = mysql_fetch_array($result_time) ;
$lnumero_time=$row_time[0];
//INSERO TIEMPO USUARIO
$sql_time_usu = "INSERT INTO tb_tiempo_usuario
(id_tb_usuario,id_tb_tiempo,ip,mac,ini_conex,fin_conex,resta_conex,id_tb_b
w,fecha,id_tb_estado) VALUES ('$lcodusr_max','$lcod_tiempo',' ',' ',' ','
','$lnumero_time',' ','$fecha_hora','2')";
$result_time_usu = mysql_query($sql_time_usu, $link);// or die ("No se pudo
ejecutar SQL");
//FIN DE INSERTO USUARIO
if ($result_time_usu ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
//graba log
$sql_cod = "SELECT id_tb_usuario, login FROM tb_usuario WHERE
id_tb_usuario={$_SESSION['cod']}";
$result2 = mysql_query($sql_cod, $link) or die ("No se pudo ejecutar SQL");
$row = mysql_fetch_array($result2) ;
$lcodusr=$row['id_tb_usuario'];
$login_admin=$row['login'];
$descrip= "Se creo un suario nuevo: $llogin desde la cuenta de:
".$row['login'];
$sql_log = "INSERT INTO tb_log (descripcion,fecha,hora,id_tb_usuario)
VALUES ('$descrip','$fecha','$hora','$lcodusr')";
$result3 = mysql_query($sql_log, $link) or die ("No se pudo ejecutar SQL");
//CREA TICKET
crea_ticket($lencriptada,$login_admin,$llogin);
//FIN DE CREA TICKET
$msg="Registro guardado con exito...!!!";
header("location: ../clientes/clientes.php?msg=$msg");
}//fin else error
mysql_close($link);
?>
Conex(insert_cliente_batch.php)
<?php
session_start();
//Trae variables para registrar usuario nuevo
//$llogin= $_POST["login"];
//$lclave= $_POST['clave'];
$lcantidad= $_POST['cantidad'];
$lcod_tiempo= $_POST["horas"];
//$lencriptada= $_POST["encript"];
$ldescripcion= "Cliente Web";
//3 USUARIO DEL SISTEMA
$ltipousu= "3";
//1 ACTIVO
$lestado= "1";
$fecha= date ("y/m/d");
$hora= date(" H:i",time());
$fecha_hora=date("y/m/d H:i:s");
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
########################################
$vector = array();
$id_vec=0;
//WHILE para repetir la cantidad de usuarios
while ($lcantidad>0){
//SQL SACAR ID MAXIMO
$sql = "SELECT MAX(id_tb_usuario) FROM tb_usuario";
$result = mysql_query($sql, $link) or die ("No se pudo ejecutar SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
$CodigoMaxUsuario=mysql_fetch_array($result);
$lcodusr_max=$CodigoMaxUsuario[0];
$llogin = "user0".$CodigoMaxUsuario[0];
}//fin else
//FIN SACA ID MAXIMO
//GENERO CLAVE PAR GUARDAR
$str = "abcdefghijklmnopqrstuvwxyz1234567890";
$cad = "";
for($i=0;$i<12;$i++) {
$cad .= substr($str,rand(0,62),1);
}
$cad2=$cad;
$lclave = md5 ( $cad );
//FIN GÉNERO CLAVE PARA GUARDAR
//inserto datos en la base
$sql = "INSERT INTO tb_usuario
(login,clave,descripcion,id_tb_tipousuario,id_tb_estado) VALUES
('$llogin','$lclave','$ldescripcion','$ltipousu','$lestado')";
$result = mysql_query($sql, $link); //or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
//saco el numero del tiempo para grabarlo en resta_conex de la
tabla tiempo_usuario
$sql_des_time= "SELECT numero FROM
tb_tiempo WHERE id_tb_tiempo='$lcod_tiempo' ";
$result_time = mysql_query($sql_des_time, $link)
or die ("No se pudo ejecutar SQL TIME");
$row_time = mysql_fetch_array($result_time) ;
$lnumero_time=$row_time[0];
//VECTOR PARA GENERAR EL XLS
$vector [$id_vec] ['user'] = $llogin;
$vector [$id_vec] ['clave'] =$cad2;
$vector [$id_vec] ['tiempo'] =$lnumero_time;
//FIN DE GENERAR XLS
//INSERO TIEMPO USUARIO
$sql_time_usu = "INSERT INTO tb_tiempo_usuario
(id_tb_usuario,id_tb_tiempo,ip,mac,ini_conex,fin_conex,resta_conex,id_tb_b
w,fecha,id_tb_estado) VALUES ('$lcodusr_max','$lcod_tiempo',' ',' ',' ','
','$lnumero_time',' ','$fecha_hora','2')";
$result_time_usu = mysql_query($sql_time_usu, $link);// or die ("No se pudo
ejecutar SQL");
//FIN DE INSERTO USUARIO
if ($result_time_usu ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
//graba log
$sql_cod = "SELECT id_tb_usuario, login FROM
tb_usuario WHERE id_tb_usuario={$_SESSION['cod']}";
$result2 = mysql_query($sql_cod, $link) or die ("No
se pudo ejecutar SQL");
$row = mysql_fetch_array($result2) ;
$lcodusr=$row['id_tb_usuario'];
$login_admin=$row['login'];
$descrip= "Se creo un usuario nuevo: $llogin
desde la cuenta de: ".$row['login'];
$sql_log = "INSERT INTO tb_log
(descripcion,fecha,hora,id_tb_usuario) VALUES
('$descrip','$fecha','$hora','$lcodusr')";
$result3 = mysql_query($sql_log, $link) or die ("No
se pudo ejecutar SQL");
$msg="Registro guardado con exito...!!!";
header("location:
../clientes/clientes_batch.php?msg=$msg");
}//fin else error
//}//fin else
//resto uno a cantidad
$id_vec=$id_vec+1;
$lcantidad=$lcantidad-1;
}//fin while
######################################################
$_SESSION['vector']=$vector ;
mysql_close($link);
?>
Conex(insert_costo.php)
<?php
//Trae variables para registrar horas a alquilar nuevas
$lcosto = $_POST['costo'];
$ldescri = $_POST['txtdescripcion'];
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
$sql = "INSERT INTO tb_costo (valor,descripcion) VALUES
('$lcosto','$ldescri')";
$result = mysql_query($sql, $link);// or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}
else{
$msg="Registros guardados con exito...!!!";
header("location: ../general/costo.php?msg=$msg");
}
mysql_close($link);
?>
Conex(insert_policy.php)
<?php
session_start();
//funcion LOG
include("../funciones/save_log.php");
include("../funciones/get_user_cod_policy.php");
include("../funciones/get_tip_user.php");
//Trae variables para registrar horas a alquilar nuevas
$ltipo_regla = $_POST['tipo_regla'] ;
$lip_regla = $_POST['ip_regla'] ;
$lpuerto_regla = $_POST['puerto_regla'] ;
$IPTABLES="/sbin/iptables";
//llamada a la funcion saca codigo
$cod_cli=get_user_cod_policy($lip_regla);
//llamoa funcion que saca tipo de usuario que registra la regla
$tipuser=get_tip_user();
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
//Saco el codigo de Tiempo Usuario
$sql_cod_tmus= " SELECT tmus.id_tb_tiempo_usuario FROM
tb_tiempo_usuario AS tmus WHERE tmus.id_tb_usuario='$cod_cli' AND
tmus.id_tb_estado='1' ";
$result_tmus = mysql_query($sql_cod_tmus, $link) or die ("No se pudo
ejecutar SQL CASA CODIFO CLIENTE");
$row = mysql_fetch_array($result_tmus);
$lcod_tmus=$row['0'];
$sql = "INSERT INTO tb_regla
(tipo,puerto,id_tb_tiempo_usuario,id_tb_estado,id_tb_tipousuario) VALUES
('$ltipo_regla','$lpuerto_regla','$lcod_tmus','1','$tipuser')";
$result = mysql_query($sql, $link);// or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}
else{
//GUARDO EN EL LOG CON LA FUNCION SAVE_LOG()
$descripcion="El Usuario: {$_SESSION['cod']} ...!! anadio la
regla $ltipo_regla - $lpuerto_regla - $lip_regla ";
save_log("{$_SESSION['cod']}",$descripcion);
#########Guardando regla para iptables
$regla_tcp="$IPTABLES -A $ltipo_regla -s $lip_regla -p tcp --dport
$lpuerto_regla -j DROP";
$regla_udp="$IPTABLES -A $ltipo_regla -s $lip_regla -p udp --dport
$lpuerto_regla -j DROP";
$fp = fopen("/var/www/html/aquiles/firewall/reglas","a");
fwrite($fp, $regla_tcp.PHP_EOL);
fwrite($fp, $regla_udp.PHP_EOL);
fclose($fp);
//reinicia el squid
//exec("sudo service squid reload",$respuesta);
exec("sudo
/var/www/html/aquiles/firewall/./rules.aquiles",$respuesta);
#########
$msg="Se anadio regla...!!!";
header("location:
../general/policy.php?msg=$msg&ip_cliente=$lip_regla");
}//fin else
mysql_close($link);
?>
Conex(insert_policy_admin.php)
<?php
//arranco la session para sacar codigo usuario
session_start();
//fincion LOG
include("../funciones/save_log.php");
include("../funciones/get_tmus_cod_policy.php");
include("../funciones/get_tip_user.php");
//Trae variables para registrar horas a alquilar nuevas
$ltipo_regla = $_POST['tipo_regla'] ;
$lip_regla = $_POST['ip_regla'] ;
$lpuerto_regla = $_POST['puerto_regla'] ;
$IPTABLES="/sbin/iptables";
if ($lip_regla!='0/0'){
//llamada a la funcion saca codigo
$cod_tmus=get_tmus_cod_policy($lip_regla);
}//fin saca codigo de time_usuario
else{
//para aplicarlo a todos los usurios
$cod_tmus='0';
}//fin esl saca codigo time usuario
//saca tipo de usuario
$tipuser=get_tip_user();
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
//if guarda regla para cliente
$sql = "INSERT INTO tb_regla
(tipo,puerto,id_tb_tiempo_usuario,id_tb_estado,id_tb_tipousuario) VALUES
('$ltipo_regla','$lpuerto_regla','$cod_tmus','1','$tipuser')";
$result = mysql_query($sql, $link);// or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}
else{
//GUARDO EN EL LOG CON LA FUNCION SAVE_LOG()
$descripcion="El Usuario: {$_SESSION['cod']} ...!! anadio la
regla $ltipo_regla - $lpuerto_regla - $lip_regla ";
save_log("{$_SESSION['cod']}",$descripcion);
//EXEC AL ARCHIVO DE LAS REGLAS
//system ('sudo /var/www/html/aquiles/firewall/firewall.sh');
#########Guardando regla para iptables
$regla_tcp="$IPTABLES -A $ltipo_regla -s $lip_regla -p tcp --dport
$lpuerto_regla -j DROP";
$regla_udp="$IPTABLES -A $ltipo_regla -s $lip_regla -p udp --dport
$lpuerto_regla -j DROP";
$fp = fopen("/var/www/html/aquiles/firewall/reglas","a");
fwrite($fp, $regla_tcp.PHP_EOL);
fwrite($fp, $regla_udp.PHP_EOL);
fclose($fp);
//reinicia el squid
//exec("sudo service squid reload",$respuesta);
exec("sudo
/var/www/html/aquiles/firewall/./rules.aquiles",$respuesta);
#########
$msg="Se anadio regla...!!!";
header("location: ../general/policy_admin.php?msg=$msg");
}//fin else
mysql_close($link);
?>
Conex(insert_tiempo.php)
<?php
//Trae variables para registrar horas a alquilar nuevas
$lhoras = isset($_POST['horas']) ? $_POST['horas'] : '00' ;
$lcmbcosto = $_POST['costo'] ;
//$lminutos = isset($_POST['minutos']) ? $_POST['minutos'] : '00' ;
//$segundos= "00";
//$cattime=$lhoras.":".$lminutos.":".$segundos;
$cattime=$lhoras;
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
//if guarda horas
$sql_h = "INSERT INTO tb_tiempo (numero,id_tb_costo) VALUES
('$cattime','$lcmbcosto')";
$result = mysql_query($sql_h, $link);// or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}
else{
$msg="Registros guardados con exito...!!!";
header("location: ../general/tiempo.php?msg=$msg");
}//fin else
mysql_close($link);
?>
Conex(insert_usuario.php)
<?php
//Trae variables para registrar usuario nuevo
$llogin= $_POST["login"];
$lclave= $_POST["clave"];
$lclaverre= $_POST["claverre"];
$ldescripcion= $_POST["descripcion"];
$ltipousu= $_POST["tipousu"];
//ACTIVO SIEMPRE
$lestado= "1";
//comparo las claves para ver si son = correctas
if ($lclave==$lclaverre){
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No
se pudo establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
$sql = "INSERT INTO tb_usuario
(login,clave,descripcion,id_tb_tipousuario,id_tb_estado) VALUES
('$llogin','$lclave','$ldescripcion','$ltipousu','$lestado')";
$result = mysql_query($sql, $link) or die ("No se pudo ejecutar
SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
$msg="Registro guardado con exito...!!!";
header("location: ../usuarios/usuarios.php?msg=$msg");
}//fin else error
}//fin if compara clave
else{
$msg="Las Claves no son iguales favor intentar
nuevamente...!!!";
header("location: ../usuarios/usuarios.php?msg=$msg");
}//fin else valida claves iguales
mysql_close($link);
?>
Conex(valida_login.php)
<?php
//Trae variables para validar login
$llogin= $_POST["login"];
$lclave= $_POST["clave"];
$lremoteip= $_POST["txtip"];
$fecha= date("y/m/d");
$hora= date(" H:i",time());
$fecha_hora=date("y/m/d H:i:s");
//arranca la session
session_start();
//include("../funciones/get_mac.php");
include("../funciones/save_log.php");
include("../funciones/guarda_iptables.php");
function get_mac($ip){
$lines = file('/var/www/html/aquiles/scripts/archive/resultado.txt');
foreach ($lines as $line_num => $line) {
$datos = explode(";", $line);
//ip
if ( $ip==$datos[0]){
$mac = $datos[2];
}//fin if
} //fin foreach
//sacamos datos del usuario para mostrarlos
return ($mac);
}
//conex a la base SQL
$link = mysql_connect("localhost", "root", "aquiles") or die("No se pudo
establecer la conexión con la base de datos...");
mysql_select_db("aquiles", $link);
//SQL a la base
$sql = "SELECT * FROM tb_usuario as usu WHERE usu.login='$llogin' and
usu.id_tb_estado='1' ";
$result = mysql_query($sql, $link) or die ("No se pudo ejecutar SQL");
if ($result ==0){
echo "Error".mysql_errno().":".mysql_error() ;
}//fin if error
else{
//reviso si hay resultados en las consultas
if(($filas = mysql_num_rows($result))!=0){
//pregunto por la clave si son iguales
if ($lclave == mysql_result($result, 0, "clave")){
//pido el codigodel usuario que ingreso
$lcodusr=mysql_result($result, 0, "id_tb_usuario") ;
$descrip= "Ingreso al Sistema del Usuario: $llogin desde
la ip: $lremoteip..!! ";
//graba en el log
save_log($lcodusr,$descrip);
//asigno el usuario a la sesion
$_SESSION['cod']=$lcodusr ;
$_SESSION['idtipousuario']=mysql_result($result, 0, "id_tb_tipousuario");
//Si es = a 1 es daministrador 2 es cajero 3 es cliente
//if ("1" == mysql_result($result, 0, "id_tb_tipousuario"))
//{
switch (mysql_result($result, 0, "id_tb_tipousuario")){
case '1':
//"ES ADMINISTRADOR";
header("location: ../main/main.php");
break;
//}//fin IF
//else
//{
case '2':
//"ES CAJERO";
header("location: ../main/main.php");
break;
case '3':
//VERIFICAR SI YA ESTA DENTRO DEL SISTEMA
//echo "es clientes";
$sql_verifica="SELECT id_tb_tiempo_usuario FROM tb_tiempo_usuario
WHERE id_tb_estado='1' AND id_tb_usuario='$lcodusr' ";
$result_verifica =
mysql_query($sql_verifica, $link) ;
if(($filas =
mysql_num_rows($result_verifica))!=0){
$msg="Usuario ya esta dentro, no intente burlar la sistema...!!!";
header("location: ../index.php?msg=$msg");
//exit();
}//fin if
//fin verificar si ya esta dentro del sistema
//SACA MAC DE ARCHIVO SERVER PARA GUARDARLA EN LA TABLA
DE TIEMPOUSUARIO
//mac del cliente
$mac=get_mac($lremoteip);
$horaconex=date("H").":".date("i").":".date("s");
//saca ultimo registro guardado de el usuario
$sql_select= "SELECT
id_tb_usuario,id_tb_tiempo,ip,mac,ini_conex,fin_conex,resta_conex,id_tb_bw
,fecha,id_tb_estado FROM tb_tiempo_usuario WHERE
id_tb_usuario='$lcodusr' AND id_tb_tiempo_usuario=(SELECT
MAX(id_tb_tiempo_usuario) FROM tb_tiempo_usuario WHERE
id_tb_usuario='$lcodusr')";
$result_select = mysql_query($sql_select, $link) or die ("No se pudo ejecutar
SQL SELECT");
//inserto el nuevo registro con los datos nuevos.
$tiempo_sql=mysql_result($result_select, 0, "id_tb_tiempo");
$tiempo_restante_servicio=mysql_result($result_select, 0, "resta_conex");
//cargo a la session el tiempo de conexion restante del cliente
$_SESSION['resta_conex_sess']=$tiempo_restante_servicio ;
//guardo el nuevo registro del tiempo nuevos
$sql_insert= "INSERT INTO tb_tiempo_usuario
(id_tb_usuario,id_tb_tiempo,ip,mac,ini_conex,fin_conex,resta_conex,id_tb_b
w,fecha,id_tb_estado) VALUES('$lcodusr','$tiempo_sql','$lremoteip','$mac',
'$horaconex',' ','$tiempo_restante_servicio',' ','$fecha_hora','1')";
$result_insert =
mysql_query($sql_insert, $link) or die ("No se pudo ejecutar SQL INSERT");
//grabo la ip en el archivo de ips allow
//graba_ip($lremoteip);
//Ejecutar reglas para poder dar permisos de navegacion
$path_squid="/var/www/html/aquiles/squid/permitidos.txt";
//########################
if(!file_exists($path_squid)){
touch($path_squid);
chmod($path_squid,0777);
$apache='apache';
chown($path_squid,$apache);
}//fin if
//########################
graba_permitidos($lremoteip);
#########################################
##############
//"ES CLIENTES";
header("location: ../clientes/maincliente.php");
//}//fin else
break;
}//fin case
}//fin if clave_
else
{
$msg="El usuario o la clave son incorrectos...!!!";
//grabo intentos fallidos de acceso
$descrip= "Intento de ingreso al Sistema del Usuario: $llogin desde la ip:
$lremoteip..!! ";
//graba en el log
save_log($lcodusr,$descrip);
header("location: ../index.php?msg=$msg");
}//fin else
}//fin if filas
else{
$msg="Datos Incorrectos...!!!";
//grabo intentos fallidos de acceso
$descrip= "Intento de ingreso al Sistema del Usuario: $llogin desde la ip:
$lremoteip..!! ";
//graba en el log
save_log($lcodusr,$descrip);
header("location: ../index.php?msg=$msg");
}//FIN ELSE FILAS
}//fin else error
mysql_close($link);
?>
General(consumo_graph)
<!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=windows-1252"
/>
<title>Documento sin título</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
</head>
<?
$ip_cliente= isset($_GET['ip']) ? $_GET['ip'] : null ;
?>
<body>
<table width="919" border="0">
<tr>
<td width="41" rowspan="3" valign="top"><a href="tablamain.php"><img
src="../imagenes/back.png" width="32" height="32" border="0" /></a> </td>
<td width="353" align="center" valign="middle"
background="../imagenes/cab_tabla.gif" ><strong>Consumo del cliente :
</strong></td>
<td width="511" align="left" valign="middle"
background="../imagenes/cab_tabla.gif" class="text_error"><?= $ip_cliente;
?></td>
</tr>
<tr>
<td colspan="2"><img src="../imagenes/consumo/legend.gif" width="877"
height="25" /></td>
</tr>
<tr>
<?
$filename = '../imagenes/consumo/'.$ip_cliente.'-1-R.png';
if (file_exists($filename)) { ?>
<td colspan="2"><img
src="../imagenes/consumo/<?=$ip_cliente?>-1-R.png" width="877"
height="210" /></td>
<? } else { ?>
<td colspan="2" align="center" valign="middle"
class="text_error">El Archivo se esta generando intente nuevamente....!</td>
<? } //fin else ?>
</tr>
</table>
</body>
</html>
General(ping.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>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>
<body>
<table width="665" border="0">
<?
//$lines = file('/var/www/html/aquiles/scripts/archive/resultado.txt');
//include("../funciones/get_user_tablamain.php");
//include("../funciones/get_user_consumo_tablamain.php");
$ip = isset($_GET['ip']) ? $_GET['ip'] : null ;
?>
<!--DWLayoutTable-->
<tr>
<td><a href="tablamain.php"><img
src="../imagenes/back.png" width="32" height="32" border="0" /></a> </td>
</tr>
<tr bgcolor="#242424" background="../imagenes/cab_tabla.gif">
<th width="176" height="20" scope="col" ><div align="center">Ping A la
IP --> </div></th>
<th width="479" scope="col"><div align="center"><?= $ip;
?></div></th>
</tr>
<tr>
<td colspan="2"> <? exec ("/bin/ping -c 5 ".$ip,
$respuesta); echo "<pre>" . join("\r\n", $respuesta)."</pre>"; ?> </td>
</tr>
</table>
</body>
</html>
General(tablamain.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" />
<meta HTTP-EQUIV="refresh" content="5">
<title>Documento sin título</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">
<link href="../css/tabla.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="920" border="0">
<?
$lines = file('/var/www/html/aquiles/scripts/archive/resultado.txt');
include("../funciones/get_user_tablamain.php");
include("../funciones/get_user_consumo_tablamain.php");
?>
<!--DWLayoutTable-->
<tr bgcolor="#242424" background="../imagenes/cab_tabla.gif">
<th width="19" height="20" scope="col" ><div
align="center">ID</div></th>
<th width="135" scope="col"><div align="center">USUARIO</div></th>
<th width="117" scope="col"><div align="center">IP </div></th>
<th width="129" scope="col"><div align="center">MACADDREESS
</div></th>
<th width="74" align="center" valign="middle" scope="col"><div
align="center">TIEMPO</div></th>
<th width="57" align="center" valign="top" scope="col"><div
align="center">REGLAS</div></th>
<th width="88" valign="top" scope="col"><div
align="center">CONSUMO</div></th>
<th width="84" valign="top" scope="col"><div
align="center">LOG</div></th>
</tr>
<?
$int=TRUE;
$capt=1;
//indice de cada linea
$cont=0;
foreach ($lines as $line_num => $line) {
$datos = explode(";", $line);
//cambio el color de la celda
if ($int==TRUE){
$colorfil="#333333";
$int=FALSE;
}
else{
$colorfil="#494949";
$int=TRUE;
}
if($capt!=1){
?>
<tr bgcolor="<? echo $colorfil ?>">
<td height="26" scope="col"><div align="center"><? echo
$cont?></div></td>
<? //SACA LA NOMBRE DE USUARIO ?>
<td scope="col"><div align="center"><? echo
get_user_tablamain($datos[0] );?></div></td>
<? //SACA LA IP ?>
<td scope="col"><div align="center"><a href="ping.php?ip=<?=
$datos[0]?>"><?= $datos[0] ?></a></div></td>
<? //SACA LA MAC ?>
<td scope="col"><div align="center"><?= $datos[2]
?></div></td>
<td scope="col"><div align="center"><? echo
get_user_consumo_tablamain($datos[0] );?></div></td>
<? //APARECE REGLAS O NO Y CONSUMO
$texto_user=get_user_tablamain($datos[0] );
if ($texto_user=="NOT LOGGED IN"){?>
<td width="57" align="center" valign="middle" scope="col"><div
align="center"><img src="../imagenes/favorite_remove.png" width="24"
height="24" /></div></td>
<td width="88" valign="top" scope="col"><div align="center"><img
src="../imagenes/chart_remove.png" width="24" height="24" /></div></td>
<? }else{?>
<td width="84" align="center" valign="middle" scope="col"><div
align="center"><a href="policy.php?ip_cliente=<?= $datos[0]?>"><img
src="../imagenes/favorite.png" width="24" height="24" /></a></div></td>
<td width="62" valign="top" scope="col"><div align="center"><a
href="consumo_graph.php?ip=<?= $datos[0]?>" ><img
src="../imagenes/chart.png" width="24" height="24" /></a></div></td>
<? } ?>
<? //fin para mostrar reglas o no y consumo?>
<td width="113" valign="top" scope="col"><div align="center"><img
src="../imagenes/view.png" width="16" height="16" /></div></td>
</tr>
<?
}//fin if
else {
$capt=0;
}
$cont+=1;
} //fin foreach
?>
</table>
</body>
</html>
General(ticket.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=windows-1252"
/>
<title>Aquiles -- Sistema de Gestion Red Local</title>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>
<?php
session_start();
$usuario=$_SESSION['user'];
$clave=$_SESSION['passw'];
?>
<body onload="javascript:window.print();">
<table width="261" border="0">
<!--DWLayoutTable-->
<tr>
<td height="20" colspan="2" scope="col"><div
align="center">Ticket</div></td>
</tr>
<tr>
<td height="20" colspan="2" scope="col"><div
align="center">**************************</div></td>
</tr>
<tr>
<td height="20" colspan="2" scope="col"><div
align="center"><?=date("y/m/d H:i:s");?></div></td>
</tr>
<tr>
<td height="20" colspan="2" scope="col"><div
align="center">**************************</div></td>
</tr>
<tr>
<td width="132" height="20" scope="col"><div align="center">Login
:</div></td>
<td width="119" height="20" colspan="-1"
scope="col"><?=$usuario;?></td>
</tr>
<tr>
<td height="20" scope="col"><div align="center">Clave :</div></td>
<td width="119" height="20" colspan="-1"
scope="col"><?=$clave;?></td>
<?
//elimino las variables de la session
unset($_SESSION['user']);
unset($_SESSION['passw']);
?>
</tr>
<tr>
<td height="20" colspan="2" scope="col"><div
align="center">**************************</div></td>
</tr>
</table>
</body>
</html>
Js(md5.js)
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded
strings
*/
function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }
function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }
function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }
function hex_hmac_md5(k, d)
{ return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function b64_hmac_md5(k, d)
{ return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function any_hmac_md5(k, d, e)
{ return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5("abc").toLowerCase() ==
"900150983cd24fb0d6963f7d28e17f72";
}
/*
* Calculate the MD5 of a raw string
*/
function rstr_md5(s)
{
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
}
/*
* Calculate the HMAC-MD5, of a key and some data (raw strings)
*/
function rstr_hmac_md5(key, data)
{
var bkey = rstr2binl(key);
if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
}
/*
* Convert a raw string to a hex string
*/
function rstr2hex(input)
{
try { hexcase } catch(e) { hexcase=0; }
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var output = "";
var x;
for(var i = 0; i < input.length; i++)
{
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F)
+ hex_tab.charAt( x & 0x0F);
}
return output;
}
/*
* Convert a raw string to a base-64 string
*/
function rstr2b64(input)
{
try { b64pad } catch(e) { b64pad=''; }
var tab =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345
6789+/";
var output = "";
var len = input.length;
for(var i = 0; i < len; i += 3)
{
var triplet = (input.charCodeAt(i) << 16)
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
| (i + 2 < len ? input.charCodeAt(i+2) : 0);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > input.length * 8) output += b64pad;
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
}
}
return output;
}
/*
* Convert a raw string to an arbitrary string encoding
*/
function rstr2any(input, encoding)
{
var divisor = encoding.length;
var i, j, q, x, quotient;
/* Convert to an array of 16-bit big-endian values, forming the dividend */
var dividend = Array(Math.ceil(input.length / 2));
for(i = 0; i < dividend.length; i++)
{
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
}
/*
* Repeatedly perform a long division. The binary array forms the dividend,
* the length of the encoding is the divisor. Once computed, the quotient
* forms the dividend for the next step. All remainders are stored for later
* use.
*/
var full_length = Math.ceil(input.length * 8 /
(Math.log(encoding.length) / Math.log(2)));
var remainders = Array(full_length);
for(j = 0; j < full_length; j++)
{
quotient = Array();
x = 0;
for(i = 0; i < dividend.length; i++)
{
x = (x << 16) + dividend[i];
q = Math.floor(x / divisor);
x -= q * divisor;
if(quotient.length > 0 || q > 0)
quotient[quotient.length] = q;
}
remainders[j] = x;
dividend = quotient;
}
/* Convert the remainders to the output string */
var output = "";
for(i = remainders.length - 1; i >= 0; i--)
output += encoding.charAt(remainders[i]);
return output;
}
/*
* Encode a string as utf-8.
* For efficiency, this assumes the input is valid utf-16.
*/
function str2rstr_utf8(input)
{
var output = "";
var i = -1;
var x, y;
while(++i < input.length)
{
/* Decode utf-16 surrogate pairs */
x = input.charCodeAt(i);
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
{
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++;
}
/* Encode output as utf-8 */
if(x <= 0x7F)
output += String.fromCharCode(x);
else if(x <= 0x7FF)
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
0x80 | ( x & 0x3F));
else if(x <= 0xFFFF)
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
else if(x <= 0x1FFFFF)
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
0x80 | ((x >>> 12) & 0x3F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
}
return output;
}
/*
* Encode a string as utf-16
*/
function str2rstr_utf16le(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
(input.charCodeAt(i) >>> 8) & 0xFF);
return output;
}
function str2rstr_utf16be(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
input.charCodeAt(i) & 0xFF);
return output;
}
/*
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*/
function rstr2binl(input)
{
var output = Array(input.length >> 2);
for(var i = 0; i < output.length; i++)
output[i] = 0;
for(var i = 0; i < input.length * 8; i += 8)
output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
return output;
}
/*
* Convert an array of little-endian words to a string
*/
function binl2rstr(input)
{
var output = "";
for(var i = 0; i < input.length * 32; i += 8)
output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
return output;
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length.
*/
function binl_md5(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
Js(funciones.js)
// JavaScript Document
//click derecho null
var message = "";
function clickIE(){
if (document.all){
(message);
return false;
}
}
function clickNS(e){
if (document.layers || (document.getElementById && !document.all)){
if (e.which == 2 || e.which == 3){
(message);
return false;
}
}
}
if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = clickNS;
} else {
document.onmouseup = clickNS;
document.oncontextmenu = clickIE;
}
document.oncontextmenu = new Function("return false")
//fin de click derecho
//valida si es numero
//function numero(e){
//tecla_codigo = (document.all) ? e.keyCode : e.which;
//if(tecla_codigo==8)return true;
//patron =/[0-9.]/;
//tecla_valor = String.fromCharCode(tecla_codigo);
//return patron.test(tecla_valor);
//}
function solonumeros(e)
{
var key;
if(window.event) // IE
{
key = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
key = e.which;
}
if (key < 48 || key > 57)
{
return false;
}
return true;
}
top related