2 # vim: set softtabstop=4 tabstop=4
6 ################# Funciones ###########################
8 # Devuelve 0 si la ruta fue cambiada y 1 si quedo por defecto
10 leer ">> Ingrese la ruta para los archivos $1" "$2" DIRSELECTED
11 if [ -n "$DIRSELECTED" ]; then return 1
16 # Devuelve 0 si el script y el OS matchean, 1 otherwise
19 SCRIPTOS="un sistema desconocido"
31 if [ "$CURSIS" != "$SCRIPTOS" ]; then
35 Este proceso de instalacion es para $SCRIPTOS
36 y su sistema operativo es $CURSIS
37 Solicite a su proveedor la version adecuada
38 e inicie nuevamente el proceso de instalacion.
46 # Devuelve 0 si se encuentra Perl instalado, 1 otherwise
47 function checkPerl() {
48 if [ "perl" = "`type perl | sed s/\"perl is .*\"/\"perl\"/`" ]; then
54 Este proceso de instalación solo puede ser
55 ejecutado si Perl 5 o superior ya esta instalado
57 Efectúe a instalación de Perl
58 Inicie nuevamente el procedimiento de instalación.
65 # Modifica una linea dada de un archivo dado
66 # Uso: nombre_archivo nro_linea nueva_linea
67 function changeLine() {
69 sed "${2}s%.*%$3%" > "$tmp" < "$1"
73 # Mensaje generico de abort
74 function abortMessage {
75 echo ">> Proceso de instalacion cancelado"
78 # Muestra los componentes instalados, usando vars ya definidas previamente
79 function showInstalled {
81 **********************************************************************
83 * Se encuentran instalados los siguientes componentes :
85 if [ "$havefraude" -eq 1 ]; then
86 echo "* Antifraude.pl instalado el $fechafraude por $userfraude"
88 if [ "$haveconf" -eq 1 ]; then
89 echo "* Aficonf instalado el $fechaconf por $userconf"
91 if [ "$havemonio" -eq 1 ]; then
92 echo "* Afimonio instalado el $fechamonio por $usermonio"
96 * Copyleft TPSistemasOp (c) 2004
97 **********************************************************************
101 # Permite seleccionar que componentes se instalaran
102 function selectModules() {
103 PS3="Seleccione un componente: "
106 while [ "$key" = "S" ] && [ -n "$choices" ]
111 ***********************************************************
112 * SELECCION de COMPONENTES *
113 * Por favor seleecione los componentes a ser instalados *
114 * de a uno por vez, a traves del siguiente menu: *
115 ***********************************************************
116 >> Se instalaran: $toinstall
119 select REPLY in $choices
122 "AFIMONIO" ) selected="afimonio";;
123 "AFICONF" ) selected="aficonf";;
124 "ANTIFRAUDE" ) selected="antifraude.pl";;
125 * ) selected="INVALID";;
130 if [ $selected != "INVALID" ]; then
131 choices=`echo $choices | sed s/$REPLY//`
132 if [ -z "$toinstall" ]; then toinstall=$selected
133 else toinstall="$toinstall,$selected"
136 if [ -n "$choices" ]; then
138 echo "Se instalará [$selected]"
140 preguntar "¿Desea agregar otro componente para instalar (S)?" SsNn key S
141 if [ "$key" = "s" ]; then
147 if [ -n "$key" ]; then echo
150 ***********************************************************
151 * La seleccion de componentes ha finalizado. Se procedera *
152 * con la instalacion. *
153 ***********************************************************
154 Componentes a instalar: [ $toinstall ]
156 < Presione una tecla para continuar >
161 # Ofrece arrancar el afimonio si es posible
163 if [ "$havemonio" -eq 1 ] && [ "$havefraude" -eq 1 ]; then
164 echo "Desea efectuar la activacion del demonio antifraude?"
165 echo "Si desea arrancar el proceso oprima solamente ENTER, de lo contrario oprima cualquier otra tecla y luego ENTER."
167 monbin=`grep -n "Comando" "$CONFFILE" | grep '^30' | sed s%.*Comando.%%`
168 mondir=`grep -n "BINDIR" "$CONFFILE" | grep '^31' | sed 's%.*= %%'`
169 if [ -z "$choice" ]; then
170 $mondir/afimonio_daemon.sh start
172 echo "Para realizar la activacion del demonio, tipee en linea de comando: $mondir/afimonio_daemon.sh start"
178 ################### MAIN SCRIPT CODE ###################
181 CURRDIR=`echo ${0%/*} | sed s%'\.'%$PWD%`
182 CONFDIR="${CURRDIR}/conf"
183 INSTDIR="${CURRDIR}/inst"
184 CONFFILE="${CONFDIR}/afinstal.conf"
186 OWNCONFDIR="$HOME/.antifraude"
191 # [STEP1] Verifico el OS vs SCRIPT y la presencia de PERL
192 echo -n ">> Verificando version del software contra el OS... "
194 if [ "$?" -ne 0 ]; then
199 echo ">> Proceso de instalacion para $SISOPTP iniciado."
200 echo ">> Presione ENTER para continuar"
203 # [STEP2] License Agreements
205 ***************************************************************
207 * Proceso de instalacion de "Antifraude" *
208 * Copyleft TPSistemasOp (c) 2004 *
210 ***************************************************************
211 A T E N C I O N: Al instalar Antifraude UD. expresa estar
212 en un todo de acuerdo con los terminos y condiciones del
213 ACUERDO DE LICENCIA DE SOFTWARE incluido en este paquete.
215 Si desea cancelar este proceso oprima 'F' y luego ENTER.
216 Para continuar oprima ENTER.
219 while [ "$key" != "" ]; do
221 if [ "$key" = "F" ]; then
227 # [STEP3] Chequeamos si hay componentes ya instalados
228 if [ -f "$CONFFILE" ] && [ -s "$CONFFILE" ]; then
229 #Busco los nombres de los binarios
230 binfraude=`grep -n "Comando" "$CONFFILE" | grep '^10' | sed s%.*Comando.%%`
231 binconf=`grep -n "Comando" "$CONFFILE" | grep '^20' | sed s%.*Comando.%%`
232 binmonio=`grep -n "Comando" "$CONFFILE" | grep '^30' | sed s%.*Comando.%%`
233 #Busco donde deberian estar instalados
234 dirfraude=`grep -n "BINDIR" "$CONFFILE" | grep '^11' | sed 's%.*= %%'`
235 dirconf=`grep -n "BINDIR" "$CONFFILE" | grep '^21' | sed 's%.*= %%'`
236 dirmonio=`grep -n "BINDIR" "$CONFFILE" | grep '^31' | sed 's%.*= %%'`
237 # Verifico finalmente si esta alli el archivo, en caso negativo, habilito
238 # la posibilidad de instalar ese componente
239 if [ ! -f "${dirmonio}/$binmonio" ]; then
243 usermonio=`grep -n "USERID" "$CONFFILE" | grep '^35' | sed 's%.*= %%'`
244 fechamonio=`grep -n "FECINS" "$CONFFILE" | grep '^36' | sed 's%.*= %%'`
246 if [ ! -f "${dirconf}/$binconf" ]; then
247 choices="${choices} AFICONF"
250 userconf=`grep -n "USERID" "$CONFFILE" | grep '^25' | sed 's%.*= %%'`
251 fechaconf=`grep -n "FECINS" "$CONFFILE" | grep '^26' | sed 's%.*= %%'`
253 if [ ! -f "${dirfraude}/$binfraude" ]; then
254 choices="${choices} ANTIFRAUDE"
257 userfraude=`grep -n "USERID" "$CONFFILE" | grep '^17' | sed 's%.*= %%'`
258 fechafraude=`grep -n "FECINS" "$CONFFILE" | grep '^18' | sed 's%.*= %%'`
263 choices="AFIMONIO AFICONF ANTIFRAUDE"
266 # [STEP4] Seleecion de los componentes a instalar
267 # TODO: tener en cuenta los que ya estan y no permitir elegirlos
268 if [ -z "$choices" ]; then
276 # [STEP5] Definir paths de cada componente e instalarlo guardando
277 # la informacion pertinente en el afinstal.conf
278 if [ ! -f "$CONFFILE" ] || [ ! -s "$CONFFILE" ]; then
280 echo "INSTDIR = $INSTDIR" >> $CONFFILE
281 echo "CONFDIR = $CONFDIR" >> $CONFFILE
282 for n in `seq 3 51`; do
286 if [ ! -f "$OWNCONFDIR" ]; then
287 mkdir -p "$OWNCONFDIR"
289 if [ ! -f "$OWNCONFDIR/lock" ]; then
290 mkdir -p "$OWNCONFDIR/lock"
292 if [ ! -f "$OWNCONFDIR/conf" ]; then
293 mkdir -p "$OWNCONFDIR/conf"
296 # Comienzo la instalacion de cada componente
297 comandos=`echo $toinstall | sed s%,%" "%g`
298 for comando in $comandos
301 while [ -n "$choice" ]; do
303 # Directorios FIJOS para todos los componentes
305 if [ "$comando" = "antifraude.pl" ]; then
306 echo -n ">> Verificando la existencia de PERL... "
308 if [ "$?" -ne 0 ]; then
317 ** Iniciando instalacion del componente <$comando>.
318 ** A continuacion se le permitira establecer la estructura de
319 ** directorios donde se instalara el mismo.
321 >> Nombre del directorio de instalacion: ($INSTDIR)
322 >> Nombre del directorio de configuracion: ($CONFDIR)
326 # Le pido un rootpath donde se instalara este comando en particular
328 while [ $is_writeable -eq 0 ]; do
329 leer ">> Ingrese la ruta de instalación" "$CURRDIR" userpath
330 if [ -n "$userpath" ]; then
332 if [ -w "${userpath%/*}" ]; then is_writeable=1
333 else echo ">> ERROR: No es posible crear dicho directorio"
341 # preparlos los dirs que voy a sugerir
342 BINDIR="${ROOTPATH}/bin"
343 LOGDIR="${ROOTPATH}/log"
346 # Le muestro el directorio sugerido para los binarios
347 askDir "ejecutables" "bin" $BINDIR
348 if [ "$?" -ne 0 ]; then BINDIR="${ROOTPATH}/$DIRSELECTED"
351 # Si estoy con antifraude.pl muestro el sugerido para los datos
352 if [ "$comando" = "antifraude.pl" ]; then
353 DATADIR="${ROOTPATH}/llamadas"
354 askDir "datos" "llamadas" $DATADIR
355 if [ "$?" -ne 0 ]; then DATADIR="${ROOTPATH}/$DIRSELECTED"
359 # Le muestro el directorio para los logs
360 askDir "de datos" "log" $LOGDIR
361 if [ "$?" -ne 0 ]; then LOGDIR="${ROOTPATH}/$DIRSELECTED"
364 # Le sugiero el archivo de log
365 leer ">> Nombre del archivo de log" "${comando%.pl}.log" LOGFILE
366 if [ -z "$LOGFILE" ]; then
367 LOGFILE="${comando%.pl}.log"
370 # Le sugiero un size para el logfile
371 leer ">> Tamaño máximo para el archivo ($LOGFILE) en MB" "200" LOGSIZE
372 if [ -z "$LOGSIZE" ]; then
378 >> Parametros de instalacion de $comando
379 >> ===================================================================
380 >> Directorio de instalación: $INSTDIR
381 >> Directorio de configuración: $CONFDIR
382 >> Directorio de ejecutables: $BINDIR
383 >> Directorio de datos: $DATADIR
384 >> Archivo de log: $LOGDIR/$LOGFILE
385 >> Tamaño máximo para el archivo de log: $LOGSIZE
387 Si los datos ingresados son correctos oprima solamente ENTER, si desea
388 modificar alguno de ellos oprima cualquier otra tecla y luego ENTER.
394 Si desea iniciar la instalación de <$comando>, oprima ENTER, si desea
395 cancelar el proceso oprima cualquier otra tecla y luego ENTER.
398 if [ -n "$choice" ]; then
403 # Comienzo a crear la estructura de directorios definida (Check permisos!!)
404 echo ">> Creando Estructura de Directorio...."
408 touch "$LOGDIR/$LOGFILE"
409 if [ "$comando" = "antifraude.pl" ]; then
411 mkdir -p "$DATADIR"/{aprocesar,enproceso,rechazadas,procesadas}
412 mkdir -p "$DATADIR/alarmas"
414 echo ">> Moviendo Archivos....."
415 cp "$INSTDIR/$comando" "$BINDIR"
416 chmod u+x "$BINDIR/$comando"
417 if [ "$comando" = "afimonio" ]; then
418 cp "$INSTDIR/afimonio_daemon.sh" "$BINDIR"
419 chmod u+x "$BINDIR/afimonio_daemon.sh"
422 # Copio umbrales, oridesti y utilities una sola vez
423 if [ ! -f "$OWNCONFDIR/oridesti.txt" ]; then
424 cp "$INSTDIR/oridesti.txt" "$OWNCONFDIR"
426 if [ ! -f "$OWNCONFDIR/umbrales.param" ]; then
427 cp "$INSTDIR/umbrales.param" "$OWNCONFDIR"
429 if [ ! -f "$OWNCONFDIR/umbrales.id" ]; then
430 echo 0 >> "$OWNCONFDIR/umbrales.id"
432 if [ ! -f "$OWNCONFDIR/util.sh" ]; then
433 cp "$INSTDIR/util.sh" "$OWNCONFDIR"
436 # Guardo los datos en el archivo de configuracion
437 ownconffile="$OWNCONFDIR/conf/${comando%.pl}.conf"
438 if [ -f "$ownconffile" ]; then
439 rm -rf "$ownconffile"
442 fecha=$(date +%d/%m/%Y)
444 "afimonio" ) numline=30;
449 "aficonf" ) numline=20;
454 "antifraude.pl" ) numline=10;
461 changeLine "$CONFFILE" "$numline" "Comando $comando"
462 numline=$(($numline+1))
463 changeLine "$CONFFILE" "$numline" "BINDIR = $BINDIR"
464 echo "${prefix}_BINDIR=\"$BINDIR\"" >> $ownconffile
465 numline=$(($numline+1))
466 changeLine "$CONFFILE" "$numline" "LOGDIR = $LOGDIR"
467 echo "${prefix}_LOGDIR=\"$LOGDIR\"" >> $ownconffile
468 numline=$(($numline+1))
469 changeLine "$CONFFILE" "$numline" "LOGFILE = $LOGFILE"
470 echo "${prefix}_LOGFILE=\"$LOGFILE\"" >> $ownconffile
471 numline=$(($numline+1))
472 changeLine "$CONFFILE" "$numline" "LOGSIZE = $LOGSIZE"
473 echo "${prefix}_LOGSIZE=$LOGSIZE" >> $ownconffile
474 numline=$(($numline+1))
475 if [ "$comando" = "antifraude.pl" ]; then
476 changeLine "$CONFFILE" "$numline" "DATADIR = $DATADIR"
477 echo "${prefix}_DATADIR=\"$DATADIR\"" >> $ownconffile
478 numline=$(($numline+1))
479 changeLine "$CONFFILE" "$numline" "DATASIZE = "
480 numline=$(($numline+1))
482 changeLine "$CONFFILE" "$numline" "USERID = $userid"
483 numline=$(($numline+1))
484 changeLine "$CONFFILE" "$numline" "FECINS = $fecha"
485 echo ">> Instalación del componente $comando completada"
486 echo ">> Presione ENTER para continuar"
490 # [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados
493 # [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema