]> git.llucax.com Git - z.facultad/75.08/llamadas.git/commitdiff
Proper version del AFINSTAL
authorAlan Kennedy <kennedya@3dgames.com.ar>
Tue, 12 Oct 2004 05:25:51 +0000 (05:25 +0000)
committerAlan Kennedy <kennedya@3dgames.com.ar>
Tue, 12 Oct 2004 05:25:51 +0000 (05:25 +0000)
afinstal [new file with mode: 0755]

diff --git a/afinstal b/afinstal
new file mode 100755 (executable)
index 0000000..0d70a05
--- /dev/null
+++ b/afinstal
@@ -0,0 +1,420 @@
+#!/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