-#!/bin/bash
-# vim: set softtabstop=4 tabstop=4
-
-################# Funciones ###########################
-
-# Devuelve 0 si la ruta fue cambiada y 1 si quedo por defecto
-function askDir() {
- cat <<MARCA
->> Nombre del directorio de $1 es: ($3)
-Si desea modificarlo reemplaze "$2" por el deseado y presione ENTER,
-de lo contrario solo presione ENTER."
-MARCA
- read DIRSELECTED
- if [ -n "$DIRSELECTED" ]; then return 1
- else return 0
- fi
-}
-
-# Devuelve 0 si el script y el OS matchean, 1 otherwise
-function checkOS() {
- if echo $0 | egrep -q 'AFINSTAL$'; then
- SCRIPTOS="Linux"
- fi
- if echo $0 | egrep -q 'AFINSTAM$'; then
- SCRIPTOS="Mac"
- fi
- if echo $0 | egrep -q 'AFINSTAW$'; then
- SCRIPTOS="Windows"
- fi
-
- if [ "$SISOPTP" != "$SCRIPTOS" ]; then
- cat<<MARCA
-
-### ERROR ###
-Este proceso de instalacion es para $SISOPTP y su sistema operativo
-es $CURSIS. Solicite a su proveedor la version adecuada e inicie
-nuevamente el proceso de instalacion.
-
-MARCA
- return 1
- else return 0
- fi
-}
-
-# Devuelve 0 si se encuentra Perl instalado, 1 otherwise
-function checkPerl() {
- if [ "perl" = "`type perl | sed s/\"perl is .*\"/\"perl\"/`" ]; then
- return 0;
- else
- cat <<MARCA
-
-"ERROR!!!"
-"Este proceso de instalación solo puede ser"
-"ejecutado si Perl 5 o superior ya esta instalado"
-
-"Efectúe a instalación de Perl"
-i"e inicie nuevamente el procedimiento de instalación."
-MARCA
- return 1
- fi
-}
-
-# Modifica una linea dada de un archivo dado
-function changeLine() {
- cat $1 | sed "${2}s%.*%$3%" > $1
-}
-
-# Mensaje generico de abort
-function abortMessage {
- echo ">> Proceso de instalacion cancelado"
-}
-
-# Muestra los componentes instalados, usando vars ya definidas previamente
-function showInstalled {
-cat <<MARCA
-**********************************************************************
-* $1
-* Se encuentran instalados los siguientes componentes :
-MARCA
- if [ "$havefraude" -eq 1 ]; then
- echo "* Antifraude.pl instalado el $fechafraude por UID $userfraude"
- fi
- if [ "$haveconf" -eq 1 ]; then
- echo "* Aficonf instalado el $fechaconf por UID $userconf"
- fi
- if [ "$havemonio" -eq 1 ]; then
- echo "* Afimonio instalado el $fechaconf por UID $usermonio"
- fi
-cat <<MARCA
-*
-* Copyright TPSistemasOp (c)2004
-**********************************************************************
-MARCA
-}
-
-# Permite seleccionar que componentes se instalaran
-function selectModules() {
- PS3="Seleccione un componente:"
- key="S"
- toinstall=""
- while [ "$key" = "S" ] && [ -n "$choices" ]
- do
- clear
- cat <<MARCA
-
-***********************************************************
-* SELECCION de COMPONENTES *
-* Por favor seleecione los componentes a ser instalados *
-* de a uno por vez, a traves del siguiente menu: *
-***********************************************************
->> Se instalaran: $toinstall
-
-MARCA
- select REPLY in $choices
- do
- case $REPLY in
- "AFIMONIO" ) selected="afimonio";;
- "AFICONF" ) selected="aficonf";;
- "ANTIFRAUDE" ) selected="antifraude.pl";;
- * ) selected="INVALID";;
- esac
- break
- done
-
- if [ $selected != "INVALID" ]; then
- choices=`echo $choices | sed s/$REPLY//`
- if [ -z "$toinstall" ]; then toinstall=$selected
- else toinstall="$toinstall,$selected"
- fi
-
- if [ -n "$choices" ]; then
- echo
- echo "Se instalara [$selected], si desea seleccionar"
- echo "otro componente presione \"S\" y luego ENTER, de lo contrario"
- echo "presione solo ENTER para comenzar a instalar los componentes"
- read key
- if [ "$key" = "s" ]; then key="S"
- fi
- fi
- fi
- done
- if [ -n "$key" ]; then echo
- fi
-cat <<MARCA
-***********************************************************
-* La seleccion de componentes ha finalizado. Se procedera *
-* con la instalacion. *
-***********************************************************
-Componentes a instalar: [ $toinstall ]
-
-< Presione una tecla para continuar >
-MARCA
-read key
-}
-
-################### MAIN SCRIPT CODE ###################
-clear
-SISOPTP=$(uname)
-CURRDIR=`echo ${0%/*} | sed s%'\.'%$PWD%`
-CONFDIR="${CURRDIR}/conf"
-INSTDIR="${CURRDIR}/inst"
-CONFFILE="${CONFDIR}/afinstal.conf"
-DEFAULTDIR=$CURRDIR
-havemonio=0
-haveconf=0
-havefraude=0
-
-# [STEP1] Verifico el OS vs SCRIPT y la presencia de PERL
-echo ">> Verificando version del software contra el OS.."
-checkOS
-if [ "$?" -ne 0 ]; then
- abortMessage
- exit 1
-fi
-echo ">> Verificando la existencia de PERL.."
-checkPerl
-if [ "$?" -ne 0 ]; then
- abortMessage
- exit 1
-fi
-echo ">> Proceso de instalacion para $SISOPTP iniciado."
-echo ">> Presione ENTER para continuar"
-read key
-
-# [STEP2] License Agreements
-cat <<MARCA
-***************************************************************
-* *
-* Proceso de instalacion de "Antifraude" *
-* Copyright TPSistemasOp (c) 2004 *
-* *
-***************************************************************
- A T E N C I O N: Al instalar Antifraude UD. expresa estar
- en un todo de acuerdo con los terminos y condiciones del
- ACUERDO DE LICENCIA DE SOFTWARE incluido en este paquete.
-
- Si desea cancelar este proceso oprima 'F' y luego ENTER.
- Para continuar oprima ENTER.
-MARCA
-key="something"
-while [ "$key" != "" ]; do
-read key
-if [ "$key" = "F" ]; then
- abortMessage
- exit 0
-fi
-done
-
-# [STEP3] Chequeamos si hay componentes ya instalados
-if [ -f "$CONFFILE" ] && [ -s "$CONFFILE" ]; then
- #Busco los nombres de los binarios
- binfraude=`grep -n "Comando" "$CONFFILE" | grep 10 | sed s%.*Comando.%%`
- binconf=`grep -n "Comando" "$CONFFILE" | grep 20 | sed s%.*Comando.%%`
- binmonio=`grep -n "Comando" "$CONFFILE" | grep 30 | sed s%.*Comando.%%`
- #Busco donde deberian estar instalados
- dirfraude=`grep -n "BINDIR" "$CONFFILE" | grep 11 | sed 's%.*= %%'`
- dirconf=`grep -n "BINDIR" "$CONFFILE" | grep 21 | sed 's%.*= %%'`
- dirmonio=`grep -n "BINDIR" "$CONFFILE" | grep 31 | sed 's%.*= %%'`
- # Verifico finalmente si esta alli el archivo, en caso negativo, habilito
- # la posibilidad de instalar ese componente
- if [ ! -f "${dirmonio}/$binmonio" ]; then
- choices="AFIMONIO"
- else
- havemonio=1
- usermonio=`grep -n "USERID" "$CONFFILE" | grep 35 | sed 's%.*= %%'`
- fechamonio=`grep -n "FECINS" "$CONFFILE" | grep 36 | sed 's%.*= %%'`
- fi
- if [ ! -f "${dirconf}/$binconf" ]; then
- choices="${choices} AFICONF"
- else
- haveconf=1
- userconf=`grep -n "USERID" "$CONFFILE" | grep 25 | sed 's%.*= %%'`
- fechaconf=`grep -n "FECINS" "$CONFFILE" | grep 26 | sed 's%.*= %%'`
- fi
- if [ ! -f "${dirfraude}/$binfraude" ]; then
- choices="${choices} ANTIFRAUDE"
- else
- havefraude=1
- userfraude=`grep -n "USERID" "$CONFFILE" | grep 17 | sed 's%.*= %%'`
- fechafraude=`grep -n "FECINS" "$CONFFILE" | grep 18 | sed 's%.*= %%'`
- fi
- choices=${choices% }
- choices=${choices# }
-else
- choices="AFIMONIO AFICONF ANTIFRAUDE"
-fi
-
-# [STEP4] Seleecion de los componentes a instalar
-# TODO: tener en cuenta los que ya estan y no permitir elegirlos
-if [ -z "$choices" ]; then
- showInstalled
- abortMessage
- exit 0
-fi
-selectModules
-
-# [STEP5] Definir paths de cada componente e instalarlo guardando
-# la informacion pertinente en el afinstal.conf
-if [ ! -f "$CONFFILE" ] || [ ! -s "$CONFFILE" ]; then
- touch "$CONFFILE"
- echo "INSTDIR = $INSTDIR" >> $CONFFILE
- echo "CONFDIR = $CONFDIR" >> $CONFFILE
- for n in `seq 3 51`; do
- echo "" >> $CONFFILE
- done
-fi
-
-# Comienzo la instalacion de cada componente
-comandos=`echo $toinstall | sed s%,%" "%g`
-for comando in $comandos
-do
- choice='something'
- while [ -n "$choice" ]; do
-
- # Directorios FIJOS para todos los componentes
- clear
- cat <<MARCA
-
-** Iniciando instalacion del componente <$comando>.
-** A continuacion se le permitira establecer la estructura de
-** directorios donde se instalara el mismo.
-
->> Nombre del directorio de instalacion: ($INSTDIR)
->> Nombre del directorio de configuracion: ($CONFDIR)
-
-Por favor ingrese un path raiz en donde se crearan los directorios de
-ejecutables, datos y logs segun corresponda o bien presione ENTER para
-aceptar el siguiente sugerido: $CURRDIR
-MARCA
-
- # Le pido un rootpath donde se instalara este comando en particular
- read userpath
- if [ -n "$userpath" ]; then ROOTPATH=$userpath
- else ROOTPATH=$CURRDIR
- fi
-
- # preparlos los dirs que voy a sugerir
- BINDIR="${ROOTPATH}/bin"
- LOGDIR="${ROOTPATH}/log"
- DATADIR=""
-
- # Le muestro el directorio sugerido para los binarios
- askDir "ejecutables" "bin" $BINDIR
- if [ "$?" -ne 0 ]; then BINDIR="${ROOTPATH}/$DIRSELECTED"
- fi
-
- # Si estoy con antifraude.pl muestro el sugerido para los datos
- if [ "$comando" = "antifraude.pl" ]; then
- DATADIR="${ROOTPATH}/llamadas"
- askDir "datos" "llamadas" $DATADIR
- if [ "$?" -ne 0 ]; then DATADIR="${ROOTPATH}/$DIRSELECTED"
- fi
- fi
-
- # Le muestro el directorio para los logs
- askDir "de datos" "log" $LOGDIR
- if [ "$?" -ne 0 ]; then LOGDIR="${ROOTPATH}/$DIRSELECTED"
- fi
-
- # Le sugiero el archivo de log
- echo ">> Nombre del archivo de log: (${comando%.pl}.log)"
- echo "Si desea conservar este nombre presione ENTER, de lo contrario"
- echo "ingrese un nuevo nombre y luego presione ENTER"
- read LOGFILE
- if [ -z "$LOGFILE" ]; then
- LOGFILE="${comando%.pl}.log"
- fi
-
- # Le sugiero un size para el logfile
- echo ">> Tamaño máximo para el archivo ($LOGFILE) en MB: 200"
- echo "Si desea conservar este valor presione ENTER, de lo contrario ingrese"
- echo "un nuevo valor y luego presione ENTER"
- read LOGSIZE
- if [ -z "$LOGSIZE" ]; then
- LOGSIZE=200
- fi
-
- cat <<MARCA
->> Parametros de instalacion de $comando
->> ===================================================================
->> Directorio de instalación: $INSTDIR
->> Directorio de configuración: $CONFDIR
->> Directorio de ejecutables: $BINDIR
->> Directorio de datos: $DATADIR
->> Archivo de log: $LOGDIR/$LOGFILE
->> Tamaño máximo para el archivo de log: $LOGSIZE
-
-Si los datos ingresados son correctos oprima solamente ENTER, si desea
-modificar alguno de ellos oprima cualquier otra tecla y luego ENTER.
-MARCA
- read choice
- done
-
- cat <<MARCA
-Si desea iniciar la instalación de <$comando>, oprima ENTER, si desea
-cancelar el proceso oprima cualquier otra tecla y luego ENTER.
-MARCA
- read choice
- if [ -n "$choice" ]; then
- abortMessage
- exit 1
- fi
-
- # Comienzo a crear la estructura de directorios definida (Check permisos!!)
- echo ">> Creando Estructura de Directorio...."
- mkdir -p $BINDIR
- mkdir -p $LOGDIR
- touch $LOGDIR/$LOGFILE
- if [ $comando = "antifraude.pl" ]; then
- mkdir -p $DATADIR
- mkdir -p $DATADIR/{aprocesar,enproceso,rechazadas,procesadas}
- fi
- echo ">> Moviendo Archivos....."
- cp $INSTDIR/$comando $BINDIR
- cp $INSTDIR/umbrales.param $CONFDIR
- #cp $INSTDIR/*.data $DATADIR/aprocesar
-
- # Guardo los datos en el archivo de configuracion
- userid=`id | sed 's/(.*//;s/uid=//'`
- fecha=$(date)
- case $comando in
- "afimonio" ) numline=30;
- havemonio=1;
- usermonio=$userid;
- fechamonio=$fecha;;
- "aficonf" ) numline=20;
- haveconf=1;
- userconf=$userid;
- fechaconf=$fecha;;
- "antifraude.pl" ) numline=10;
- havefraude=1;
- userfraude=$userid;
- fechafraude=$fecha;;
- esac
-
- changeLine "$CONFFILE" "$numline" "Comando $comando"
- numline=$(($numline+1))
- changeLine "$CONFFILE" "$numline" "BINDIR = $BINDIR"
- numline=$(($numline+1))
- changeLine "$CONFFILE" "$numline" "LOGDIR = $LOGDIR"
- numline=$(($numline+1))
- changeLine "$CONFFILE" "$numline" "LOGFILE = $LOGFILE"
- numline=$(($numline+1))
- changeLine "$CONFFILE" "$numline" "LOGSIZE = $LOGSIZE"
- numline=$(($numline+1))
- if [ "$comando" = "antifraude.pl" ]; then
- changeLine "$CONFFILE" "$numline" "DATADIR = $DATADIR"
- numline=$(($numline+1))
- changeLine "$CONFFILE" "$numline" "DATASIZE = "
- numline=$(($numline+1))
- fi
- changeLine "$CONFFILE" "$numline" "USERID = $userid"
- numline=$(($numline+1))
- changeLine "$CONFFILE" "$numline" "FECINS = $fecha"
-done
-
-# [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados
-
-# [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema
-showInstalled