1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
11 \paperpackage widemarginsa4
15 \use_numerical_citations 0
16 \paperorientation portrait
19 \paragraph_separation indent
21 \quotes_language english
25 \paperpagestyle default
29 Sistemas Operativos (75.08)
50 Leandro Lucarella (77891)
52 Ricardo Markiewicz (78226)
55 Primera Entrega, 28 de Junio del 2004
59 \begin_inset LatexCommand \tableofcontents{}
66 Desarollo e Implementación
69 Hipotesis y Aclaraciones
72 El programa en su totalidad va a ser ejecutado por un único usuario, una
73 configuración diferente es posible pero queda en manos del administrador.
76 En los archivos de llamada se valida que sean numeros, y para validar la
77 fecha no se tiene en cuenta casos particulares como el 29, 30, 31 de febrero.
80 Todos los meses pueden tener 31 dias.
83 Aficonf utiliza números para describir las acciones Nuevo y Buscar.
84 La opción Borrar es ofrecida requiriendo un número de ID a borrar dependiendo
85 de los resultados de la búsqueda, y dando una opción (-1) para cancelar
92 Dado que los distintos componentes del sistema se pueden instalar en diferentes
93 paths dentro del OS, creamos el directorio
97 donde se almacenará información acerca de los paths en donde reside cada
98 uno de ellos y otros archivos de intercambio.
101 Así mismo, como los programas pueden ser instalados en directorios distintos,
102 toda la información compartida es guardada en
106 , para ser mas consistentes con la manera de trabajar en Unix.
107 Lo ideal ubiera sido utilizar
111 , pero como no podríamos suponer root access preferimos directamente trabajar
112 en el home del usuario.
118 Copiar del README cuando este terminado y extenderlo un poco si se considera
122 Comandos Desarollados
133 \layout Subsubsection
140 Procesa los archivos que se encuentran en el directorio
142 $PATH_ANTIFRAUDE/$DATADIR/aprocesar
146 $PATH_ANTIFRAUDE/$DATADIR/enproce
158 \layout Subsubsection
163 Afimonio.log: (Nico explicar aca que logea)
164 \layout Subsubsection
166 Ejemplos de invocación
169 :afimonio/bin$> ./afimonio
172 :afimonio/bin$> nohup ./afimonio &
175 :afimonio/bin$> ./afimonio_daemon.sh
178 afimonio_daemon.sh (start|stop|status)
179 \layout Subsubsection
184 Copy Paste cuando este cerrado.
195 \layout Subsubsection
200 Procesa los archivos de llamadas que encuentre en el momento de invocacion
203 $PATH_ANTIFRAUDE/$DATADIR/enproceso
210 será quien alimentará al
214 con dichos archivos, no obstante se lo puede alimentar con archivos de
215 llamdas en forma manual, situándolos en el directorio anteriormente descripto.
216 \layout Subsubsection
225 Se loguea en este archivo el procesamiento de los registros, warnings provocado
226 s por registros no validos y alarmas emitidas por registros que matchean
234 Se loguean en este archivo las alarmas provocadas por registros en los
235 archivos de llamadas, que hayan matcheado un umbral determinado del archivo
237 \layout Subsubsection
239 Ejemplos de invocación
242 :antifraude/bin$> perl antifraude.pl
245 :antifraude/bin$> perl antifraude.pl &
246 \layout Subsubsection
251 Copy Paste cuando este cerrado.
262 \layout Subsubsection
267 El comando utiliza los archivos umbrales.param y oridesti.txt situados en
271 \layout Subsubsection
276 Solo escribe en umbrales.param de ser solicitado por el usuario, ya sea por
277 la alta o baja de un umbral.
278 \layout Subsubsection
280 Ejemplos de invocación
283 :aficonf/bin$> ./aficonf
284 \layout Subsubsection
289 Copy Paste cuando este cerrado.
299 Auxiliar, escrito en PERL
300 \layout Subsubsection
302 Justificación de su uso
305 Sirve para realizar lotes de prueba con gran cantidad de entradas y variaciones
306 de forma rápida y cómoda.
307 \layout Subsubsection
312 Ninguno, toma los datos necesarios por la entrada estándar, aunque es común
313 redireccionarle el archivo
318 De la entrada estándar toma los códigos de origen y destino.
319 Cada código debe encontrarse en una línea y al comienzo de ésta.
320 Sólo toma los 2 primeros caracteres, e ignora el resto de la línea (para
321 compatibilidad con el archivo oridesti.txt).
322 \layout Subsubsection
327 Crea una cantidad N (especificada por el usuario) de archivos con nombre
328 y formato de Archivo de Llamadas en el directorio actual.
329 Tanto el nombre como la cantidad de líneas y su contenido es generado aleatoria
330 mente (respetando el formato mencionado y con valores racionales).
331 \layout Subsubsection
336 El comando toma 3 parámetros
343 ./callgen [cant_archivos [min_lineas [max_lineas]]]
347 \begin_inset Float table
355 Parámetros del comando CALLGEN
360 <lyxtabular version="3" rows="4" columns="3">
362 <column alignment="center" valignment="top" leftline="true" width="0">
363 <column alignment="center" valignment="top" leftline="true" width="0">
364 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
365 <row topline="true" bottomline="true">
366 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
376 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
386 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
398 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
406 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
411 Cantidad de archivos a generar
414 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
424 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
432 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
437 Mínima cantidad de lineas en un archivo
440 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
449 <row topline="true" bottomline="true">
450 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
458 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
463 Máxima cantidad de lineas en un archivo
466 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
491 Pueden cambiarse los valores por defecto editando el código fuente del
492 comando, en la sección de configuración que se encuentra al comienzo del
494 También puede cambiarse el mínimo y máximo año (por defecto 1999 y 2004)
495 y el mínimo y máximo código de central (por defecto 0000 y 9999).
496 \layout Subsubsection
498 Ejemplos de invocación
506 Se escriben por entrada estándar los códigos de origen/destino, se presiona
507 Ctrl-D para cerrar el descriptor de archivo de la entrada estándar y se
508 generan 10 archivos con entre 1000 y 5000 líneas cada uno.
511 ./callgen 2 < oridesti.txt
516 Genera 2 archivos con entre 1000 y 5000 líneas cada uno tomando los códigos
517 de origen/destino del archivo origesti.txt.
520 ./callgen 5 10 < oridesti.txt
525 Genera 5 archivos con entre 10 y 5000 líneas cada uno tomando los códigos
526 de origen/destino del archivo origesti.txt.
529 ./callgen 50 10 50 < oridesti.txt
534 Genera 50 archivos con entre 10 y 50 líneas cada uno tomando los códigos
535 de origen/destino del archivo origesti.txt.
537 \layout Subsubsection
542 Copy Paste cuando este cerrado.
548 Archivos del Enunciado
551 [ Por cada uno se debe poner nombre y detallar su estructura interna ]
557 [ Por cada uno se debe poner nombre y detallar su estructura interna ]
560 Set de Prueba (testcalls.tar.gz)
563 Para probar el comportamiento del sistema, se preparo un set de prueba distribui
568 , situado en el directorio /INST, del paquete de instalación.
569 El set de prueba se copia automáticamente en el momento en que se instale
574 , dejando el escenario listo para procesarlos en el momento en que sea arrancado
586 Este set de prueba consta de
590 , que se detallan a continuación:
593 14 archivos de llamadas generados con el
597 , con entre 1000 y 5000 registros cada uno, y fecha en el rango año 1999
601 1 archivo de llamadas con registros validos y otros no validos.
604 1 archivo con nombre válido según el formato YYYYMMDDhhmm.nnnn, pero con
605 texto dentro suyo, el cual es rechazado por Antifraude.
608 1 archivo con nombre nó válido rechazado en instancia previa por el Afimonio.
611 Se describen en la siguiente tabla, los archivos y registros que disparan
612 alarmas o tienen close matches contra los 25 umbrales distribuidos en el
613 paquete de instalacion, via el umbrales.param:
617 \begin_inset Float table
625 Archivos y Registros que disparan alarmas
630 <lyxtabular version="3" rows="24" columns="3">
632 <column alignment="center" valignment="top" leftline="true" width="0">
633 <column alignment="center" valignment="top" leftline="true" width="0">
634 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
635 <row topline="true" bottomline="true">
636 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
646 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
656 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
668 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
676 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
684 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
694 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
702 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
710 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
720 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
728 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
736 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
746 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
754 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
762 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
772 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
780 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
788 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
798 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
806 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
814 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
824 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
832 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
840 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
850 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
858 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
866 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
876 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
884 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
892 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
902 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
910 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
918 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
928 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
936 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
944 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
954 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
962 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
970 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
980 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
988 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
996 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1005 <row topline="true">
1006 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1014 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1022 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1031 <row topline="true">
1032 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1040 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1048 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1057 <row topline="true">
1058 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1066 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1074 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1083 <row topline="true">
1084 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1092 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1100 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1109 <row topline="true">
1110 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1118 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1126 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1135 <row topline="true">
1136 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1144 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1152 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1161 <row topline="true">
1162 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1170 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1178 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1183 21 (umbral inactivo => no emite alarma)
1187 <row topline="true">
1188 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1196 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1204 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1209 Close match umbral 22, difiere tipo de llamada
1213 <row topline="true">
1214 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1222 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1230 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1239 <row topline="true" bottomline="true">
1240 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1248 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1256 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1261 25 (umbral inactivo => no emite alarma)
1275 Archivo 199908220733.4515
1280 Posee registros no validos detallados a continuacion.
1281 Los registros se contabilizan de 0 a N (Linea 1 = Reg 0)
1288 -> Posee un 9no campo 'Bogus'
1295 -> Posee un 9no campo 'Bogus'
1302 -> Posee un tipo de llamada 'W' no valida
1309 -> El numero de linea (campo1) no es numerico, es un string 'ABCD'
1316 -> Tiene insuficiente cantidad de campos (siete)
1319 Estos registros emitirán errores plasmados en el antifraude.log.
1320 Para verificar esto, realizar un search en el logfile, sobre el nombre
1321 del archivo, y ubicarse en el sector donde se indica el comienzo del procesamie
1324 Inicio proceso de: 199908220733.4515
1329 Archivo 200412010000.6666
1334 Es un archivo de texto el cual pasa el control de Afimonio, pero luego sus
1335 lineas son descartadas por antifraude y dicho error emitido en el antifraude.log
1343 El nombre del archivo no es conforme al formato de nombre estipulado en
1344 el TP y el mismo es rechazado de antemano por Afimonio.
1350 (Esto deberia ser una hoja aparte que solo diga 1.6 Apéndice A) y las hojas
1351 posteriores son las páginas 3 en adelante del PDF oficial de la catedra,
1352 sacando al parte de archivos.
1353 3-15 más precisamente es lo que iria).