X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/blobdiff_plain/38862030c933f7f675d443fc3c1d8092db9e0c0f..8924bf6b7d40b1b543706926d806e4104db61393:/afinstal diff --git a/afinstal b/afinstal index 0d70a05..9700577 100755 --- a/afinstal +++ b/afinstal @@ -1,16 +1,13 @@ #!/bin/bash # vim: set softtabstop=4 tabstop=4 +. inst/util.sh + ################# Funciones ########################### # Devuelve 0 si la ruta fue cambiada y 1 si quedo por defecto function askDir() { - cat <> 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 + leer ">> Ingrese la ruta para los archivos $1" "$2" DIRSELECTED if [ -n "$DIRSELECTED" ]; then return 1 else return 0 fi @@ -18,23 +15,27 @@ MARCA # 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 + CURSIS="$1" + SCRIPTOS="un sistema desconocido" + case "$0" in + *afinstal) + SCRIPTOS="Linux" + ;; + *afinsmac) + SCRIPTOS="Mac" + ;; + *afinstaw) + SCRIPTOS="Windows" + ;; + esac + if [ "$CURSIS" != "$SCRIPTOS" ]; then cat< $1 + # Si no se puede crear archivos, muero + [ -w . ] || die "No se puede escribir en el directorio actual" 100 + tmp="$0.$$.tmp" + sed "${2}s%.*%$3%" > "$tmp" < "$1" + mv "$tmp" "$1" } # Mensaje generico de abort @@ -78,24 +85,24 @@ cat <> Verificando version del software contra el OS.." -checkOS +echo -n ">> Verificando version del software contra el OS... " +checkOS "$SISOPTP" if [ "$?" -ne 0 ]; then abortMessage exit 1 fi -echo ">> Verificando la existencia de PERL.." -checkPerl -if [ "$?" -ne 0 ]; then - abortMessage - exit 1 -fi +echo 'OK!' echo ">> Proceso de instalacion para $SISOPTP iniciado." echo ">> Presione ENTER para continuar" read key @@ -187,7 +207,7 @@ cat <> $CONFFILE done fi +if [ ! -f "$OWNCONFDIR" ]; then + mkdir -p "$OWNCONFDIR" +fi +if [ ! -f "$OWNCONFDIR/lock" ]; then + mkdir -p "$OWNCONFDIR/lock" +fi +if [ ! -f "$OWNCONFDIR/conf" ]; then + mkdir -p "$OWNCONFDIR/conf" +fi # Comienzo la instalacion de cada componente comandos=`echo $toinstall | sed s%,%" "%g` @@ -274,6 +304,16 @@ do # Directorios FIJOS para todos los componentes clear + if [ "$comando" = "antifraude.pl" ]; then + echo -n ">> Verificando la existencia de PERL... " + checkPerl + if [ "$?" -ne 0 ]; then + abortMessage + exit 1 + fi + echo 'OK!' + fi + cat <. @@ -283,16 +323,22 @@ do >> 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 + is_writeable=0 + while [ $is_writeable -eq 0 ]; do + leer ">> Ingrese la ruta de instalación" "$CURRDIR" userpath + if [ -n "$userpath" ]; then + ROOTPATH=$userpath + if [ -w "${userpath%/*}/" ]; then is_writeable=1 + else echo ">> ERROR: No es posible crear dicho directorio" + fi + else + ROOTPATH="$CURRDIR" + is_writible=1 + fi + done # preparlos los dirs que voy a sugerir BINDIR="${ROOTPATH}/bin" @@ -318,24 +364,19 @@ MARCA 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 + leer ">> Nombre del archivo de log" "${comando%.pl}.log" 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 + leer ">> Tamaño máximo para el archivo ($LOGFILE) en MB" "200" LOGSIZE if [ -z "$LOGSIZE" ]; then LOGSIZE=200 fi cat <> Parametros de instalacion de $comando >> =================================================================== >> Directorio de instalación: $INSTDIR @@ -363,48 +404,81 @@ MARCA # 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} + mkdir -p "$BINDIR" + mkdir -p "$LOGDIR" + + touch "$LOGDIR/$LOGFILE" + if [ "$comando" = "antifraude.pl" ]; then + mkdir -p "$DATADIR" + mkdir -p "$DATADIR"/{aprocesar,enproceso,rechazadas,procesadas} + mkdir -p "$DATADIR/alarmas" + # Aprovecho para copiar las llamadas en este bloque + tar -xzf "$INSTDIR/testcalls.tar.gz" -C "$DATADIR/aprocesar" fi echo ">> Moviendo Archivos....." - cp $INSTDIR/$comando $BINDIR - cp $INSTDIR/umbrales.param $CONFDIR - #cp $INSTDIR/*.data $DATADIR/aprocesar + cp "$INSTDIR/$comando" "$BINDIR" + chmod u+x "$BINDIR/$comando" + if [ "$comando" = "afimonio" ]; then + cp "$INSTDIR/afimonio_daemon.sh" "$BINDIR" + chmod u+x "$BINDIR/afimonio_daemon.sh" + fi + + # Copio umbrales, oridesti y utilities una sola vez + if [ ! -f "$OWNCONFDIR/oridesti.txt" ]; then + cp "$CONFDIR/oridesti.txt" "$OWNCONFDIR" + fi + if [ ! -f "$OWNCONFDIR/umbrales.param" ]; then + cp "$CONFDIR/umbrales.param" "$OWNCONFDIR" + fi + if [ ! -f "$OWNCONFDIR/umbrales.id" ]; then + cp "$CONFDIR/umbrales.id" "$OWNCONFDIR" + fi + if [ ! -f "$OWNCONFDIR/util.sh" ]; then + cp "$INSTDIR/util.sh" "$OWNCONFDIR" + fi # Guardo los datos en el archivo de configuracion - userid=`id | sed 's/(.*//;s/uid=//'` - fecha=$(date) + ownconffile="$OWNCONFDIR/conf/${comando%.pl}.conf" + if [ -f "$ownconffile" ]; then + rm -rf "$ownconffile" + fi + userid=$LOGNAME + fecha=$(date +%d/%m/%Y) 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 + "afimonio" ) numline=30; + havemonio=1; + usermonio=$userid; + fechamonio=$fecha; + prefix="AFIM";; + "aficonf" ) numline=20; + haveconf=1; + userconf=$userid; + fechaconf=$fecha; + prefix="AFIC";; + "antifraude.pl" ) numline=10; + havefraude=1; + userfraude=$userid; + fechafraude=$fecha; + prefix="ANTI";; + esac changeLine "$CONFFILE" "$numline" "Comando $comando" numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "BINDIR = $BINDIR" + echo "${prefix}_BINDIR=\"$BINDIR\"" >> $ownconffile numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "LOGDIR = $LOGDIR" + echo "${prefix}_LOGDIR=\"$LOGDIR\"" >> $ownconffile numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "LOGFILE = $LOGFILE" + echo "${prefix}_LOGFILE=\"$LOGFILE\"" >> $ownconffile numline=$(($numline+1)) - changeLine "$CONFFILE" "$numline" "LOGSIZE = $LOGSIZE" + changeLine "$CONFFILE" "$numline" "LOGSIZE = "$(($LOGSIZE*1024*1024)) + echo "${prefix}_LOGSIZE=$(($LOGSIZE*1024*1024))" >> $ownconffile numline=$(($numline+1)) if [ "$comando" = "antifraude.pl" ]; then changeLine "$CONFFILE" "$numline" "DATADIR = $DATADIR" + echo "${prefix}_DATADIR=\"$DATADIR\"" >> $ownconffile numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "DATASIZE = " numline=$(($numline+1)) @@ -412,9 +486,13 @@ MARCA changeLine "$CONFFILE" "$numline" "USERID = $userid" numline=$(($numline+1)) changeLine "$CONFFILE" "$numline" "FECINS = $fecha" + echo ">> Instalación del componente $comando completada" + echo ">> Presione ENTER para continuar" + read done # [STEP6] Ofrecer arrancar el Afimonio si estan los tres paquetes instalados +askDaemon # [STEP7] Mostrar en un recuadro que se encuentra instalado en el sistema showInstalled