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() {
68 # Si no se puede crear archivos, muero
69 [ -w . ] || die "No se puede escribir en el directorio actual" 100
71 sed "${2}s%.*%$3%" > "$tmp" < "$1"
75 # Mensaje generico de abort
76 function abortMessage {
77 echo ">> Proceso de instalacion cancelado"
80 # Muestra los componentes instalados, usando vars ya definidas previamente
81 function showInstalled {
83 **********************************************************************
85 * Se encuentran instalados los siguientes componentes :
87 if [ "$havefraude" -eq 1 ]; then
88 echo "* Antifraude.pl instalado el $fechafraude por $userfraude"
90 if [ "$haveconf" -eq 1 ]; then
91 echo "* Aficonf instalado el $fechaconf por $userconf"
93 if [ "$havemonio" -eq 1 ]; then
94 echo "* Afimonio instalado el $fechamonio por $usermonio"
98 * Copyleft TPSistemasOp (c) 2004
99 **********************************************************************
103 # Permite seleccionar que componentes se instalaran
104 function selectModules() {
105 PS3="Seleccione un componente: "
108 while [ "$key" = "S" ] && [ -n "$choices" ]
113 ***********************************************************
114 * SELECCION de COMPONENTES *
115 * Por favor seleecione los componentes a ser instalados *
116 * de a uno por vez, a traves del siguiente menu: *
117 ***********************************************************
118 >> Se instalaran: $toinstall
121 select REPLY in $choices
124 "AFIMONIO" ) selected="afimonio";;
125 "AFICONF" ) selected="aficonf";;
126 "ANTIFRAUDE" ) selected="antifraude.pl";;
127 * ) selected="INVALID";;
132 if [ $selected != "INVALID" ]; then
133 choices=`echo $choices | sed s/$REPLY//`
134 if [ -z "$toinstall" ]; then toinstall=$selected
135 else toinstall="$toinstall,$selected"
138 if [ -n "$choices" ]; then
140 echo "Se instalará [$selected]"
142 preguntar "¿Desea agregar otro componente para instalar (S)?" SsNn key S
143 if [ "$key" = "s" ]; then
149 if [ -n "$key" ]; then echo
152 ***********************************************************
153 * La seleccion de componentes ha finalizado. Se procedera *
154 * con la instalacion. *
155 ***********************************************************
156 Componentes a instalar: [ $toinstall ]
158 < Presione una tecla para continuar >
163 # Ofrece arrancar el afimonio si es posible
165 if [ "$havemonio" -eq 1 ] && [ "$havefraude" -eq 1 ]; then
166 echo "Desea efectuar la activacion del demonio antifraude?"
167 echo "Si desea arrancar el proceso oprima solamente ENTER, de lo contrario oprima cualquier otra tecla y luego ENTER."
169 monbin=`grep -n "Comando" "$CONFFILE" | grep '^30' | sed s%.*Comando.%%`
170 mondir=`grep -n "BINDIR" "$CONFFILE" | grep '^31' | sed 's%.*= %%'`
171 if [ -z "$choice" ]; then
172 $mondir/afimonio_daemon.sh start
174 echo "Para realizar la activacion del demonio, tipee en linea de comando: '$mondir/afimonio_daemon.sh start'"
180 ################### MAIN SCRIPT CODE ###################
183 CURRDIR=`echo ${0%/*} | sed s%'\.'%$PWD%`
184 CONFDIR="${CURRDIR}/conf"
185 INSTDIR="${CURRDIR}/inst"
186 CONFFILE="${CONFDIR}/afinstal.conf"
188 OWNCONFDIR="$HOME/.antifraude"
193 # [STEP1] Verifico el OS vs SCRIPT y la presencia de PERL
194 echo -n ">> Verificando version del software contra el OS... "
196 if [ "$?" -ne 0 ]; then
201 echo ">> Proceso de instalacion para $SISOPTP iniciado."
202 echo ">> Presione ENTER para continuar"
205 # [STEP2] License Agreements
207 ***************************************************************
209 * Proceso de instalacion de "Antifraude" *
210 * Copyleft TPSistemasOp (c) 2004 *
212 ***************************************************************
213 A T E N C I O N: Al instalar Antifraude UD. expresa estar
214 en un todo de acuerdo con los terminos y condiciones del
215 ACUERDO DE LICENCIA DE SOFTWARE incluido en este paquete.
217 Si desea cancelar este proceso oprima 'F' y luego ENTER.
218 Para continuar oprima ENTER.
221 while [ "$key" != "" ]; do
223 if [ "$key" = "F" ]; then
229 # [STEP3] Chequeamos si hay componentes ya instalados
230 if [ -f "$CONFFILE" ] && [ -s "$CONFFILE" ]; then
231 #Busco los nombres de los binarios
232 binfraude=`grep -n "Comando" "$CONFFILE" | grep '^10' | sed s%.*Comando.%%`
233 binconf=`grep -n "Comando" "$CONFFILE" | grep '^20' | sed s%.*Comando.%%`
234 binmonio=`grep -n "Comando" "$CONFFILE" | grep '^30' | sed s%.*Comando.%%`
235 #Busco donde deberian estar instalados
236 dirfraude=`grep -n "BINDIR" "$CONFFILE" | grep '^11' | sed 's%.*= %%'`
237 dirconf=`grep -n "BINDIR" "$CONFFILE" | grep '^21' | sed 's%.*= %%'`
238 dirmonio=`grep -n "BINDIR" "$CONFFILE" | grep '^31' | sed 's%.*= %%'`
239 # Verifico finalmente si esta alli el archivo, en caso negativo, habilito
240 # la posibilidad de instalar ese componente
241 if [ ! -f "${dirmonio}/$binmonio" ]; then
245 usermonio=`grep -n "USERID" "$CONFFILE" | grep '^35' | sed 's%.*= %%'`
246 fechamonio=`grep -n "FECINS" "$CONFFILE" | grep '^36' | sed 's%.*= %%'`
248 if [ ! -f "${dirconf}/$binconf" ]; then
249 choices="${choices} AFICONF"
252 userconf=`grep -n "USERID" "$CONFFILE" | grep '^25' | sed 's%.*= %%'`
253 fechaconf=`grep -n "FECINS" "$CONFFILE" | grep '^26' | sed 's%.*= %%'`
255 if [ ! -f "${dirfraude}/$binfraude" ]; then
256 choices="${choices} ANTIFRAUDE"
259 userfraude=`grep -n "USERID" "$CONFFILE" | grep '^17' | sed 's%.*= %%'`
260 fechafraude=`grep -n "FECINS" "$CONFFILE" | grep '^18' | sed 's%.*= %%'`
265 choices="AFIMONIO AFICONF ANTIFRAUDE"
268 # [STEP4] Seleecion de los componentes a instalar
269 # TODO: tener en cuenta los que ya estan y no permitir elegirlos
270 if [ -z "$choices" ]; then
278 # [STEP5] Definir paths de cada componente e instalarlo guardando
279 # la informacion pertinente en el afinstal.conf
280 if [ ! -f "$CONFFILE" ] || [ ! -s "$CONFFILE" ]; then
282 echo "INSTDIR = $INSTDIR" >> $CONFFILE
283 echo "CONFDIR = $CONFDIR" >> $CONFFILE
284 for n in `seq 3 51`; do
288 if [ ! -f "$OWNCONFDIR" ]; then
289 mkdir -p "$OWNCONFDIR"
291 if [ ! -f "$OWNCONFDIR/lock" ]; then
292 mkdir -p "$OWNCONFDIR/lock"
294 if [ ! -f "$OWNCONFDIR/conf" ]; then
295 mkdir -p "$OWNCONFDIR/conf"
298 # Comienzo la instalacion de cada componente
299 comandos=`echo $toinstall | sed s%,%" "%g`
300 for comando in $comandos
303 while [ -n "$choice" ]; do
305 # Directorios FIJOS para todos los componentes
307 if [ "$comando" = "antifraude.pl" ]; then
308 echo -n ">> Verificando la existencia de PERL... "
310 if [ "$?" -ne 0 ]; then
319 ** Iniciando instalacion del componente <$comando>.
320 ** A continuacion se le permitira establecer la estructura de
321 ** directorios donde se instalara el mismo.
323 >> Nombre del directorio de instalacion: ($INSTDIR)
324 >> Nombre del directorio de configuracion: ($CONFDIR)
328 # Le pido un rootpath donde se instalara este comando en particular
330 while [ $is_writeable -eq 0 ]; do
331 leer ">> Ingrese la ruta de instalación" "$CURRDIR" userpath
332 if [ -n "$userpath" ]; then
334 if [ -w "${userpath%/*}/" ]; then is_writeable=1
335 else echo ">> ERROR: No es posible crear dicho directorio"
343 # preparlos los dirs que voy a sugerir
344 BINDIR="${ROOTPATH}/bin"
345 LOGDIR="${ROOTPATH}/log"
348 # Le muestro el directorio sugerido para los binarios
349 askDir "ejecutables" "bin" $BINDIR
350 if [ "$?" -ne 0 ]; then BINDIR="${ROOTPATH}/$DIRSELECTED"
353 # Si estoy con antifraude.pl muestro el sugerido para los datos
354 if [ "$comando" = "antifraude.pl" ]; then
355 DATADIR="${ROOTPATH}/llamadas"
356 askDir "datos" "llamadas" $DATADIR
357 if [ "$?" -ne 0 ]; then DATADIR="${ROOTPATH}/$DIRSELECTED"
361 # Le muestro el directorio para los logs
362 askDir "de datos" "log" $LOGDIR
363 if [ "$?" -ne 0 ]; then LOGDIR="${ROOTPATH}/$DIRSELECTED"
366 # Le sugiero el archivo de log
367 leer ">> Nombre del archivo de log" "${comando%.pl}.log" LOGFILE
368 if [ -z "$LOGFILE" ]; then
369 LOGFILE="${comando%.pl}.log"
372 # Le sugiero un size para el logfile
373 leer ">> Tamaño máximo para el archivo ($LOGFILE) en MB" "200" LOGSIZE
374 if [ -z "$LOGSIZE" ]; then
380 >> Parametros de instalacion de $comando
381 >> ===================================================================
382 >> Directorio de instalación: $INSTDIR
383 >> Directorio de configuración: $CONFDIR
384 >> Directorio de ejecutables: $BINDIR
385 >> Directorio de datos: $DATADIR
386 >> Archivo de log: $LOGDIR/$LOGFILE
387 >> Tamaño máximo para el archivo de log: $LOGSIZE
389 Si los datos ingresados son correctos oprima solamente ENTER, si desea
390 modificar alguno de ellos oprima cualquier otra tecla y luego ENTER.
396 Si desea iniciar la instalación de <$comando>, oprima ENTER, si desea
397 cancelar el proceso oprima cualquier otra tecla y luego ENTER.
400 if [ -n "$choice" ]; then
405 # Comienzo a crear la estructura de directorios definida (Check permisos!!)
406 echo ">> Creando Estructura de Directorio...."
410 touch "$LOGDIR/$LOGFILE"
411 if [ "$comando" = "antifraude.pl" ]; then
413 mkdir -p "$DATADIR"/{aprocesar,enproceso,rechazadas,procesadas}
414 mkdir -p "$DATADIR/alarmas"
415 # Aprovecho para copiar las llamadas en este bloque
416 if [ -f "$INSTDIR/testcalls.tar.gz" ]; then
417 tar -xzf "$INSTDIR/testcalls.tar.gz" -C "$DATADIR/aprocesar"
420 echo ">> Moviendo Archivos....."
421 cp "$INSTDIR/$comando" "$BINDIR"
422 chmod u+x "$BINDIR/$comando"
423 if [ "$comando" = "afimonio" ]; then
424 cp "$INSTDIR/afimonio_daemon.sh" "$BINDIR"
425 chmod u+x "$BINDIR/afimonio_daemon.sh"
428 # Copio umbrales, oridesti y utilities una sola vez
429 if [ ! -f "$OWNCONFDIR/oridesti.txt" ]; then
430 cp "$CONFDIR/oridesti.txt" "$OWNCONFDIR"
432 if [ ! -f "$OWNCONFDIR/umbrales.param" ]; then
433 cp "$CONFDIR/umbrales.param" "$OWNCONFDIR"
435 if [ ! -f "$OWNCONFDIR/umbrales.id" ]; then
436 cp "$CONFDIR/umbrales.id" "$OWNCONFDIR"
438 if [ ! -f "$OWNCONFDIR/util.sh" ]; then
439 cp "$INSTDIR/util.sh" "$OWNCONFDIR"
442 # Guardo los datos en el archivo de configuracion
443 ownconffile="$OWNCONFDIR/conf/${comando%.pl}.conf"
444 if [ -f "$ownconffile" ]; then
445 rm -rf "$ownconffile"
448 fecha=$(date +%d/%m/%Y)
450 "afimonio" ) numline=30;
455 "aficonf" ) numline=20;
460 "antifraude.pl" ) numline=10;
467 changeLine "$CONFFILE" "$numline" "Comando $comando"
468 numline=$(($numline+1))
469 changeLine "$CONFFILE" "$numline" "BINDIR = $BINDIR"
470 echo "${prefix}_BINDIR=\"$BINDIR\"" >> $ownconffile
471 numline=$(($numline+1))
472 changeLine "$CONFFILE" "$numline" "LOGDIR = $LOGDIR"
473 echo "${prefix}_LOGDIR=\"$LOGDIR\"" >> $ownconffile
474 numline=$(($numline+1))
475 changeLine "$CONFFILE" "$numline" "LOGFILE = $LOGFILE"
476 echo "${prefix}_LOGFILE=\"$LOGFILE\"" >> $ownconffile
477 numline=$(($numline+1))
478 changeLine "$CONFFILE" "$numline" "LOGSIZE = "$(($LOGSIZE*1024*1024))
479 echo "${prefix}_LOGSIZE=$(($LOGSIZE*1024*1024))" >> $ownconffile
480 numline=$(($numline+1))
481 if [ "$comando" = "antifraude.pl" ]; then
482 changeLine "$CONFFILE" "$numline" "DATADIR = $DATADIR"
483 echo "${prefix}_DATADIR=\"$DATADIR\"" >> $ownconffile
484 numline=$(($numline+1))
485 changeLine "$CONFFILE" "$numline" "DATASIZE = "
486 numline=$(($numline+1))
488 changeLine "$CONFFILE" "$numline" "USERID = $userid"
489 numline=$(($numline+1))
490 changeLine "$CONFFILE" "$numline" "FECINS = $fecha"
491 echo ">> Instalación del componente $comando completada"
492 echo ">> Presione ENTER para continuar"
496 # [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados
499 # [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema