\layout Chapter
-Desarollo e Implementación
-\layout Section
-
Hipotesis y Aclaraciones
\layout Itemize
Internamente, en base a la información de paths proporcionada por este
archivo, busca su los binarios realmente se encuentran en el OS, y en caso
contrario permite volver a reinstalarlo/s.
-\layout Section
+\layout Chapter
\begin_inset LatexCommand \label{sec:Problemas-relevantes}
root
\emph default
preferimos directamente trabajar en el directorio del usuario.
-\layout Section
+\layout Chapter
Instalación
\layout Standard
Esto creará la siguiente estructura de directorios:
\layout LyX-Code
-./
+ ./
\layout LyX-Code
- +- grupo12
+ +-- grupo12
\layout LyX-Code
- |
+ +-- antifraude
\layout LyX-Code
- +-- README
+ +-- README
\layout LyX-Code
- +-- COPYING
+ +-- COPYING
\layout LyX-Code
- +-- afinstal
+ +-- afinstal
\layout LyX-Code
- +-- conf
+ +-- conf
\layout LyX-Code
- +---- umbrales.param
+ +---- umbrales.param
\layout LyX-Code
- +---- umbrales.id
+ +---- umbrales.id
\layout LyX-Code
- +---- oridesti.txt
+ +---- oridesti.txt
\layout LyX-Code
- +-- inst
+ +-- inst
\layout LyX-Code
- +---- afimonio
+ +---- afimonio
\layout LyX-Code
- +---- antifraude.pl
+ +---- antifraude.pl
\layout LyX-Code
- +---- aficonf
+ +---- aficonf
\layout LyX-Code
- +---- afimonio_daemon.sh
+ +---- afimonio_daemon.sh
\layout LyX-Code
- +---- util.sh
+ +---- util.sh
\layout LyX-Code
- +---- callgen
+ +---- callgen
\layout LyX-Code
- +---- testcalls.tar.gz
+ +---- testcalls.tar.gz
\layout Standard
Para proceder a la instalación del sistema
:
\layout LyX-Code
+cd grupo12/antifraude
+\layout LyX-Code
+
./afinstal
\layout Standard
y seguir los pasos que se le indiquen a continuación.
De no ejecutar apropiadamente la instalación, no se garantiza el correcto
funcionamiento de los componentes.
-
\layout Section
+Utilización
+\layout Standard
+
+Antifraude es un sistema automatizado, que se vale de un script de bash
+ corriendo en background.
+\layout Standard
+
+Para iniciar el demonio existen varios métodos posibles, pero lo recomendado
+ es utilizar la utilidad
+\family typewriter
+\series bold
+afimonio_daemon.sh
+\family default
+\series default
+, que permite iniciar el demonio (si no esta corriendo ya), detener el demonio
+ (si actualmente esta corriendo o consultar el estado actual.
+\layout Section
+
+Modo de uso
+\layout Standard
+
+Desde el directorio donde se instalaron los ejecutables:
+\layout LyX-Code
+
+./afimonio_daemon.sh [start|stop|status]
+\layout Standard
+
+Ver sección
+\begin_inset LatexCommand \vref{sec:AFIMONIO_DAEMON.SH}
+
+\end_inset
+
+ para más información.
+\layout Section
+
+Licencia
+\layout Standard
+
+Este software se distribuye bajo licencia GNU GPL versión 2.0 o superior.
+ Para más detalles lea el archivo
+\family typewriter
+COPYING
+\family default
+.
+\layout Chapter
+
Comandos Desarrollados
-\layout Subsection
+\layout Section
AFIMONIO
-\layout Subsubsection
+\layout Subsection
Tipo de comando
\layout Standard
Solicitado.
-\layout Subsubsection
+\layout Subsection
Archivos de Input
\layout Standard
\family default
\series medium
según corresponda.
-\layout Subsubsection
+\layout Subsection
Archivos de Output
\layout Standard
$file
\family default
nombre del archivo que se procesó.
-\layout Subsubsection
+\layout Subsection
Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
\family typewriter
\layout Standard
Corre el programa en primer plano.
-\layout Paragraph
+\layout Subsubsection
\family typewriter
nohup.out
\family default
a menos que se redirija a otro archivo.
-\layout Subsubsection
+\layout Subsection
Código Fuente
\layout LyX-Code
\layout LyX-Code
done #while
-\layout Subsection
+\layout Section
-ANTIFRAUDE
-\layout Subsubsection
+ANTIFRAUDE.PL
+\layout Subsection
Tipo de comando
\layout Standard
Solicitado.
-\layout Subsubsection
+\layout Subsection
Archivos de Input
\layout Standard
\series default
corre, pero los mismos no serán tenidos en cuenta (esto es, procesados),
hasta la próxima invocación del comando.
-\layout Subsubsection
+\layout Subsection
Archivos de Output
\layout Description
umbrales.param
\family default
.
-\layout Subsubsection
+\layout Subsection
Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
\family typewriter
enproceso
\family default
como indica el enunciado en primer plano.
-\layout Paragraph
+\layout Subsubsection
\family typewriter
\layout Standard
Ídem anterior.
-\layout Paragraph
+\layout Subsubsection
\family typewriter
\layout Standard
Ídem anterior pero procesa en segundo plano.
-\layout Subsubsection
+\layout Subsection
Código Fuente
\layout LyX-Code
\layout LyX-Code
unlock();
-\layout Subsection
+\layout Section
AFICONF
-\layout Subsubsection
+\layout Subsection
Tipo de comando
\layout Standard
Solicitado.
-\layout Subsubsection
+\layout Subsection
Archivos de Input
\layout Standard
umbrales.param
\family default
de ser solicitado por el usuario, ya sea por la alta o baja de un umbral.
-\layout Subsubsection
+\layout Subsection
Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
\family typewriter
\layout Standard
Realiza lo pedido en el enunciado.
-\layout Subsubsection
+\layout Subsection
Código Fuente
\layout LyX-Code
\layout LyX-Code
unlock "aficonf"
-\layout Subsection
+\layout Section
-UTIL
-\layout Subsubsection
+UTIL.SH
+\layout Subsection
Tipo de comando
\layout Standard
Sería equivalente a una biblioteca compartida, no es exactamente un comando
que se pueda ejecutar directamente sino que se incluye desde otros comandos.
-\layout Subsubsection
+\layout Subsection
Justificación de su uso
\layout Standard
Es un archivo con varias funciones generales, sirve para no duplicar código
común entre los varios scripts de bash.
-\layout Subsubsection
+\layout Subsection
Archivos de Input
\layout Standard
Al ser de propósito general, no tiene ningún archivo de input específico,
aunque hay funciones que utilizan archivos, no se describen aquí sino en
los comandos que usan este archivo.
-\layout Subsubsection
+\layout Subsection
Archivos de Output
\layout Standard
Ídem anterior.
-\layout Subsubsection
+\layout Subsection
Parámetros
\layout Standard
Al no ser un comando ejecutable, no aplica.
-\layout Subsubsection
+\layout Subsection
Opciones
\layout Standard
Ídem anterior.
-\layout Subsubsection
+\layout Subsection
Ejemplos de invocación
\layout Standard
Ídem anterior.
-\layout Subsubsection
+\layout Subsection
Código fuente
\layout LyX-Code
\layout LyX-Code
}
+\layout Section
+
+
+\begin_inset LatexCommand \label{sec:AFIMONIO_DAEMON.SH}
+
+\end_inset
+
+AFIMONIO_DAEMON.SH
\layout Subsection
-CALLGEN
+Tipo de comando
+\layout Standard
+
+Auxiliar, escrito en
+\family typewriter
+bash
+\family default
+.
+\layout Subsection
+
+Justificación de su uso
+\layout Standard
+
+Sirve para correr
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ en segundo plano, desasociado de la terminal.
+\layout Subsection
+
+Archivos de Input
+\layout Standard
+
+Ninguno, toma los datos necesarios por la entrada estándar, aunque es común
+ redireccionarle el archivo
+\family typewriter
+oridesti.txt
+\family default
+.
+ De la entrada estándar toma los códigos de origen y destino.
+ Cada código debe encontrarse en una línea y al comienzo de ésta.
+ Sólo toma los 2 primeros caracteres, e ignora el resto de la línea (para
+ compatibilidad con el archivo oridesti.txt).
+\layout Subsection
+
+Archivos de Output
+\layout Standard
+
+Crea una cantidad
+\family typewriter
+N
+\family default
+ (especificada por el usuario) de archivos con nombre y formato de
+\emph on
+Archivo de Llamadas
+\emph default
+ en el directorio actual.
+ Tanto el nombre como la cantidad de líneas y su contenido es generado aleatoria
+mente (respetando el formato mencionado y con valores racionales).
+\layout Subsection
+
+Parámetros
+\layout Standard
+
+La invocación es al estilo SysV, tomando como parámetro la acción a realizar,
+ que puede ser:
+\layout Description
+
+start Arranca el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Description
+
+stop Detiene el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Description
+
+status Indica si
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ está corriendo o no.
+\layout Subsection
+
+Opciones
+\layout Standard
+
+Al comienzo del script, abajo de
+\family typewriter
+Configuración
+\family default
+, se pueden cambiar algunas variables:
+\layout Description
+
+WAIT Cantidad de segundos a esperar para que arranque o se detenga
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ antes de asumir un error.
+\layout Description
+
+DAEMON Nombre del programa a ejecutar.
+ Este programa es lo suficientemente genérico como para correr cualquier
+ comando en modo
+\emph on
+daemon
+\emph default
+, por eso se provee una variable de configuración para cambiar el comando
+ a ejecutar.
+\layout Subsection
+
+Ejemplos de invocación
+\layout Subsubsection
+
+
+\family typewriter
+./afimonio_daemon.sh start
+\layout Standard
+
+Arranca el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Subsubsection
+
+
+\family typewriter
+./afimonio_daemon.sh stop
+\layout Standard
+
+Detiene el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Subsubsection
+
+
+\family typewriter
+./afimonio_daemon.sh status
+\layout Standard
+
+Si
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ está corriendo lo indica con un mensaje y muestra su PID.
+ Si no está corriendo da otro mensaje indicándolo.
\layout Subsubsection
+
+\family typewriter
+./afimonio_daemon.sh
+\layout Standard
+
+Da un mensaje de ayuda.
+\layout Subsection
+
+Código Fuente
+\layout LyX-Code
+
+#!/bin/bash
+\layout LyX-Code
+
+\layout LyX-Code
+
+# Configuración
+\layout LyX-Code
+
+WAIT=10
+\layout LyX-Code
+
+DAEMON=afimonio
+\layout LyX-Code
+
+\layout LyX-Code
+
+# --------------- SCRIPT ---------------------
+\layout LyX-Code
+
+BASE_DIR="$HOME/.antifraude"
+\layout LyX-Code
+
+.
+ "$BASE_DIR/conf/$DAEMON.conf"
+\layout LyX-Code
+
+.
+ "$BASE_DIR/util.sh"
+\layout LyX-Code
+
+\layout LyX-Code
+
+ayuda () {
+\layout LyX-Code
+
+ perr "Parámetros válidos : start, stop, status"
+\layout LyX-Code
+
+}
+\layout LyX-Code
+
+\layout LyX-Code
+
+case "$1" in
+\layout LyX-Code
+
+ "start")
+\layout LyX-Code
+
+ echo -n "Iniciando demonio '$DAEMON' en modo daemon "
+\layout LyX-Code
+
+ if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON ya está corriendo"
+\backslash
+
+\layout LyX-Code
+
+ "(PID=`lock_pid $DAEMON`)."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ nohup "$AFIM_BINDIR/$DAEMON" > /dev/null &
+\layout LyX-Code
+
+ for i in `seq $WAIT`; do
+\layout LyX-Code
+
+ if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " OK! (PID=`lock_pid $DAEMON`)"
+\layout LyX-Code
+
+ exit 0
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ echo -n '.'
+\layout LyX-Code
+
+ sleep 1;
+\layout LyX-Code
+
+ done
+\layout LyX-Code
+
+ # Tardó más de 5 segundos en arrancar, algo anda mal...
+\layout LyX-Code
+
+ echo "ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON tardó más de $WAIT segundos en arrancar,"
+
+\backslash
+
+\layout LyX-Code
+
+ "probablemente haya algún problema."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ ;;
+\layout LyX-Code
+
+ "stop")
+\layout LyX-Code
+
+ echo -n "Parando el demonio '$DAEMON' "
+\layout LyX-Code
+
+ if ! is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON no esta corriendo."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ kill `lock_pid $DAEMON`
+\layout LyX-Code
+
+ for i in `seq $WAIT`; do
+\layout LyX-Code
+
+ if ! is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " OK!"
+\layout LyX-Code
+
+ exit 0
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ echo -n '.'
+\layout LyX-Code
+
+ sleep 1;
+\layout LyX-Code
+
+ done
+\layout LyX-Code
+
+ # Tardó más de 5 segundos en parar, algo anda mal...
+\layout LyX-Code
+
+ echo "ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON tardó más de $WAIT segundos en parar,"
+\backslash
+
+\layout LyX-Code
+
+ "probablemente haya algún problema."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ ;;
+\layout LyX-Code
+
+ "status")
+\layout LyX-Code
+
+ if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo "$DAEMON está corriendo actualmente"
+\backslash
+
+\layout LyX-Code
+
+ "(PID=`lock_pid $DAEMON`)."
+\layout LyX-Code
+
+ else
+\layout LyX-Code
+
+ echo "$DAEMON no está corriendo."
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ ;;
+\layout LyX-Code
+
+ *) ayuda ;;
+\layout LyX-Code
+
+esac
+\layout Section
+
+CALLGEN
+\layout Subsection
+
Tipo de comando
\layout Standard
perl
\family default
.
-\layout Subsubsection
+\layout Subsection
Justificación de su uso
\layout Standard
Sirve para realizar lotes de prueba con gran cantidad de entradas y variaciones
de forma rápida y cómoda.
-\layout Subsubsection
+\layout Subsection
Archivos de Input
\layout Standard
Cada código debe encontrarse en una línea y al comienzo de ésta.
Sólo toma los 2 primeros caracteres, e ignora el resto de la línea (para
compatibilidad con el archivo oridesti.txt).
-\layout Subsubsection
+\layout Subsection
Archivos de Output
\layout Standard
en el directorio actual.
Tanto el nombre como la cantidad de líneas y su contenido es generado aleatoria
mente (respetando el formato mencionado y con valores racionales).
-\layout Subsubsection
+\layout Subsection
Parámetros
\layout Standard
\end_inset
-\layout Subsubsection
+\layout Subsection
Opciones
\layout Standard
en la sección de configuración que se encuentra al comienzo del mismo.
También puede cambiarse el mínimo y máximo año (por defecto 1999 y 2004)
y el mínimo y máximo código de central (por defecto 0000 y 9999).
-\layout Subsubsection
+\layout Subsection
Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
\family typewriter
\series medium
para cerrar el descriptor de archivo de la entrada estándar y se generan
10 archivos con entre 1000 y 5000 líneas cada uno.
-\layout Paragraph
+\layout Subsubsection
\family typewriter
origesti.txt
\family default
.
-\layout Paragraph
+\layout Subsubsection
\family typewriter
origesti.txt
\family default
.
-\layout Paragraph
+\layout Subsubsection
\family typewriter
origesti.txt
\family default
.
-\layout Subsubsection
+\layout Subsection
Código Fuente
\layout LyX-Code
\layout LyX-Code
# vim: set fdm=marker ts=4 sw=4 :
-\layout Section
+\layout Chapter
Archivos
-\layout Subsection
+\layout Section
Archivos del Enunciado
-\layout Subsubsection
+\layout Subsection
\family typewriter
la misma estructura de registro que se detalla a continuación:
\family typewriter
YYYYMMDD-hhmm $usuario $comando: ¨$Mensaje¨
-\layout Subsubsection
+\layout Subsection
\family typewriter
\end_inset
-\layout Subsubsection
+\layout Subsection
\family typewriter
\end_inset
-\layout Subsubsection
+\layout Subsection
\family typewriter
\end_inset
-\layout Subsubsection
+\layout Subsection
\family typewriter
\end_inset
-\layout Subsection
+\layout Section
Archivos Auxiliares
-\layout Subsubsection
+\layout Subsection
\family typewriter
\family default
y la ruta, nombre, y tamaño máximo del archivo de log.
-\layout Subsubsection
+\layout Subsection
\family typewriter
\family default
y la ruta, nombre, y tamaño máximo del archivo de log.
-\layout Subsubsection
+\layout Subsection
\family typewriter
.
\layout Subsection
-Set de Prueba (testcalls.tar.gz)
+Set de Prueba (
+\family typewriter
+testcalls.tar.gz
+\family default
+)
\layout Standard
Para probar el comportamiento del sistema, se preparo un set de prueba distribui
\end_inset
-\layout Paragraph
+\layout Subsubsection
Archivo
\family typewriter
\series medium
Posee registros no válidos detallados a continuación.
Los registros se contabilizan de 0 a N (Línea 1 = Reg 0)
-\layout Itemize
+\layout Description
+Registro\SpecialChar ~
\series bold
-Registro 3
+3
\series default
- -> Posee un 9no campo
+ Posee un 9no campo
\emph on
bogus
-\layout Itemize
+\layout Description
+Registro\SpecialChar ~
\series bold
-Registro 27
+27
\series default
- -> Posee un 9no campo
+ Posee un 9no campo
\emph on
bogus
-\layout Itemize
+\layout Description
+Registro\SpecialChar ~
\series bold
-Registro 31
+31
\series default
- -> Posee un tipo de llamada
+ Posee un tipo de llamada
\family typewriter
W
\family default
no valida
-\layout Itemize
+\layout Description
+Registro\SpecialChar ~
\series bold
-Registro 41
+41
\series default
- -> El número de línea (campo1) no es numérico, es un string
+ El número de línea (campo1) no es numérico, es un string
\family typewriter
'ABCD'
-\layout Itemize
+\layout Description
+Registro\SpecialChar ~
\series bold
-Registro 52
+52
\series default
- -> Tiene cantidad de campos insuficiente (siete)
+ Tiene cantidad de campos insuficiente (siete)
\layout Standard
Estos registros emitirán errores plasmados en el
Inicio proceso de: 199908220733.4515
\family default
¨.
-\layout Paragraph
+\layout Subsubsection
Archivo
\family typewriter
\series medium
Es un archivo de texto el cual pasa el control de Afimonio, pero luego sus
lineas son descartadas por antifraude y dicho error emitido en el antifraude.log
-\layout Paragraph
+\layout Subsubsection
Archivo
\family typewriter
\family default
\series medium
.
-\layout Section
+\layout Chapter
Apéndice A
\layout Comment