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 días.
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 hubiera 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 Desarrollados
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 El afimonio genera una salida al archivo afimonio.log la cual contiene informació
164 n sobre la ejecución del programa.
167 Si un archivo es válido, se añade una línea con el siguiente formato:
170 "$fecha $USER afimonio: "Se detecta archivo de llamadas $file"
173 Si el archivo tuviera un nombre inválido, la línea seria la siguiente:
176 "$fecha $USER afimonio:"Se rechaza el archivo $file".
183 $fecha: fecha actual con formato Día-Mes-Año-Hora:Minuto.
187 $USER: nombre de usuario que ejecuto el script.
191 $file: nombre del archivo que se procesó.
193 \layout Subsubsection
195 Ejemplos de invocación
198 :afimonio/bin$> ./afimonio
201 :afimonio/bin$> nohup ./afimonio &
204 :afimonio/bin$> ./afimonio_daemon.sh
207 afimonio_daemon.sh (start|stop|status)
208 \layout Subsubsection
213 Copy Paste cuando este cerrado.
224 \layout Subsubsection
229 Procesa los archivos de llamadas que encuentre en el momento de invocación
232 $PATH_ANTIFRAUDE/$DATADIR/enproceso
239 será quien alimentará al
243 con dichos archivos, no obstante se lo puede alimentar con archivos de
244 llamadas en forma manual, situándolos en el directorio anteriormente descripto.
245 \layout Subsubsection
254 Se loguea en este archivo el procesamiento de los registros, warnings provocado
255 s por registros no validos y alarmas emitidas por registros que matchean
263 Se loguean en este archivo las alarmas provocadas por registros en los
264 archivos de llamadas, que hayan matcheado un umbral determinado del archivo
266 \layout Subsubsection
268 Ejemplos de invocación
271 :antifraude/bin$> perl antifraude.pl
274 :antifraude/bin$> perl antifraude.pl &
275 \layout Subsubsection
280 Copy Paste cuando este cerrado.
291 \layout Subsubsection
296 El comando utiliza los archivos umbrales.param y oridesti.txt situados en
300 \layout Subsubsection
305 Solo escribe en umbrales.param de ser solicitado por el usuario, ya sea por
306 la alta o baja de un umbral.
307 \layout Subsubsection
309 Ejemplos de invocación
312 :aficonf/bin$> ./aficonf
313 \layout Subsubsection
318 Copy Paste cuando este cerrado.
328 Auxiliar, escrito en PERL
329 \layout Subsubsection
331 Justificación de su uso
334 Sirve para realizar lotes de prueba con gran cantidad de entradas y variaciones
335 de forma rápida y cómoda.
336 \layout Subsubsection
341 Ninguno, toma los datos necesarios por la entrada estándar, aunque es común
342 redireccionarle el archivo
347 De la entrada estándar toma los códigos de origen y destino.
348 Cada código debe encontrarse en una línea y al comienzo de ésta.
349 Sólo toma los 2 primeros caracteres, e ignora el resto de la línea (para
350 compatibilidad con el archivo oridesti.txt).
351 \layout Subsubsection
356 Crea una cantidad N (especificada por el usuario) de archivos con nombre
357 y formato de Archivo de Llamadas en el directorio actual.
358 Tanto el nombre como la cantidad de líneas y su contenido es generado aleatoria
359 mente (respetando el formato mencionado y con valores racionales).
360 \layout Subsubsection
365 El comando toma 3 parámetros
372 ./callgen [cant_archivos [min_lineas [max_lineas]]]
376 \begin_inset Float table
384 Parámetros del comando CALLGEN
389 <lyxtabular version="3" rows="4" columns="3">
391 <column alignment="center" valignment="top" leftline="true" width="0">
392 <column alignment="center" valignment="top" leftline="true" width="0">
393 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
394 <row topline="true" bottomline="true">
395 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
405 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
415 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
427 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
435 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
440 Cantidad de archivos a generar
443 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
453 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
461 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
466 Mínima cantidad de lineas en un archivo
469 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
478 <row topline="true" bottomline="true">
479 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
487 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
492 Máxima cantidad de lineas en un archivo
495 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
520 Pueden cambiarse los valores por defecto editando el código fuente del
521 comando, en la sección de configuración que se encuentra al comienzo del
523 También puede cambiarse el mínimo y máximo año (por defecto 1999 y 2004)
524 y el mínimo y máximo código de central (por defecto 0000 y 9999).
525 \layout Subsubsection
527 Ejemplos de invocación
535 Se escriben por entrada estándar los códigos de origen/destino, se presiona
536 Ctrl-D para cerrar el descriptor de archivo de la entrada estándar y se
537 generan 10 archivos con entre 1000 y 5000 líneas cada uno.
540 ./callgen 2 < oridesti.txt
545 Genera 2 archivos con entre 1000 y 5000 líneas cada uno tomando los códigos
546 de origen/destino del archivo origesti.txt.
549 ./callgen 5 10 < oridesti.txt
554 Genera 5 archivos con entre 10 y 5000 líneas cada uno tomando los códigos
555 de origen/destino del archivo origesti.txt.
558 ./callgen 50 10 50 < oridesti.txt
563 Genera 50 archivos con entre 10 y 50 líneas cada uno tomando los códigos
564 de origen/destino del archivo origesti.txt.
566 \layout Subsubsection
571 Copy Paste cuando este cerrado.
577 Archivos del Enunciado
580 [ Por cada uno se debe poner nombre y detallar su estructura interna ]
584 \layout Subsubsection
589 El archivo de configuración $~/.antifraude/conf/afimonio.conf almacena las
590 rutas a los directorios necesarios para la ejecución del script
594 y la ruta, nombre, y tamaño máximo del archivo de log.
596 \layout Subsubsection
601 El archivo de configuración $~/.antifraude/conf/antifraude.conf almacena las
602 rutas a los directorios necesarios para la ejecución del script
606 y la ruta, nombre, y tamaño máximo del archivo de log.
608 \layout Subsubsection
613 El archivo de configuración $~/.antifraude/conf/aficonf.conf almacena las
614 rutas a los directorios necesarios para la ejecución del script
618 y la ruta, nombre, y tamaño máximo del archivo de log.
622 Estos archivos fueron creados para que los diferentes scripts tengan un
623 lugar común donde buscar esa información para salvar el problema comentado
627 Set de Prueba (testcalls.tar.gz)
630 Para probar el comportamiento del sistema, se preparo un set de prueba distribui
635 , situado en el directorio /INST, del paquete de instalación.
636 El set de prueba se copia automáticamente en el momento en que se instale
641 , dejando el escenario listo para procesarlos en el momento en que sea arrancado
653 Este set de prueba consta de
657 , que se detallan a continuación:
660 14 archivos de llamadas generados con el
664 , con entre 1000 y 5000 registros cada uno, y fecha en el rango año 1999
668 1 archivo de llamadas con registros validos y otros no validos.
671 1 archivo con nombre válido según el formato YYYYMMDDhhmm.nnnn, pero con
672 texto dentro suyo, el cual es rechazado por Antifraude.
675 1 archivo con nombre no válido rechazado en instancia previa por el Afimonio.
678 Se describen en la siguiente tabla, los archivos y registros que disparan
679 alarmas o tienen close matches contra los 25 umbrales distribuidos en el
680 paquete de instalación, vía el umbrales.param:
684 \begin_inset Float table
692 Archivos y Registros que disparan alarmas
697 <lyxtabular version="3" rows="24" columns="3">
699 <column alignment="center" valignment="top" leftline="true" width="0">
700 <column alignment="center" valignment="top" leftline="true" width="0">
701 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
702 <row topline="true" bottomline="true">
703 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
713 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
723 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
735 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
743 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
751 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
761 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
769 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
777 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
787 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
795 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
803 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
813 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
821 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
829 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
839 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
847 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
855 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
865 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
873 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
881 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
891 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
899 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
907 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
917 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
925 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
933 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
943 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
951 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
959 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
969 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
977 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
985 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
995 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1003 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1011 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1020 <row topline="true">
1021 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1029 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1037 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1046 <row topline="true">
1047 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1055 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1063 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1072 <row topline="true">
1073 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1081 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1089 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1098 <row topline="true">
1099 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1107 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1115 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1124 <row topline="true">
1125 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1133 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1141 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1150 <row topline="true">
1151 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1159 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1167 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1176 <row topline="true">
1177 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1185 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1193 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1202 <row topline="true">
1203 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1211 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1219 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1228 <row topline="true">
1229 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1237 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1245 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1250 21 (umbral inactivo => no emite alarma)
1254 <row topline="true">
1255 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1263 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1271 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1276 Close match umbral 22, difiere tipo de llamada
1280 <row topline="true">
1281 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1289 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1297 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1306 <row topline="true" bottomline="true">
1307 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1315 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1323 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1328 25 (umbral inactivo => no emite alarma)
1342 Archivo 199908220733.4515
1347 Posee registros no validos detallados a continuación.
1348 Los registros se contabilizan de 0 a N (Linea 1 = Reg 0)
1355 -> Posee un 9no campo 'Bogus'
1362 -> Posee un 9no campo 'Bogus'
1369 -> Posee un tipo de llamada 'W' no valida
1376 -> El numero de linea (campo1) no es numerico, es un string 'ABCD'
1383 -> Tiene insuficiente cantidad de campos (siete)
1386 Estos registros emitirán errores plasmados en el antifraude.log.
1387 Para verificar esto, realizar un search en el logfile, sobre el nombre
1388 del archivo, y ubicarse en el sector donde se indica el comienzo del procesamie
1391 Inicio proceso de: 199908220733.4515
1396 Archivo 200412010000.6666
1401 Es un archivo de texto el cual pasa el control de Afimonio, pero luego sus
1402 lineas son descartadas por antifraude y dicho error emitido en el antifraude.log
1410 El nombre del archivo no es conforme al formato de nombre estipulado en
1411 el TP y el mismo es rechazado de antemano por Afimonio.
1417 (Esto deberia ser una hoja aparte que solo diga 1.6 Apéndice A) y las hojas
1418 posteriores son las páginas 3 en adelante del PDF oficial de la catedra,
1419 sacando la parte de archivos.
1420 3-15 más precisamente es lo que iria).