--- /dev/null
+#!/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