<commit_before>#!/bin/bash
#Instalador CIPAK - Grupo 7
#*************************** Variables ***************************
BASEDIR= "."
ACTUALDIR="./"

LOGFILEINS="install.log"
GRUPO="./GRUPO7"
CONFDIRINSTALL="./conf"

CONFDIR="$GRUPO/conf"
CONFIGFILE="$GRUPO/conf/CIPAK.cnf"
CONFIGFILETEMP="$CONFDIRINSTALL/CIPAK.temp"

pathResult=""
BINDIR="$GRUPO/binarios"
MAEDIR="$GRUPO/maestros"
ARRIDIR="$GRUPO/arribados"
#$GRUPO/datos #con los archivos de la catedra
BACKUPDIR="$GRUPO/respaldo"
OKDIR="$GRUPO/aceptados"
PROCDIR="$GRUPO/procesados"
INFODIR="$GRUPO/informes"
LOGDIR="$GRUPO/bitacoras"
NOKDIR="$GRUPO/rechazados"
#DATOSDIR="./datos"
DATASIZE=100 #100Mb  #DATASIZE=104857600 #100Mb
LOGEXT=".log"
LOGSIZE=400 #400Kb #LOGSIZE=409600 #400Kb
LOGCOMMAND="./GrabarBitacora.sh"
VERSIONPERL=5
#*************************** Funciones ***************************
function log() {
        command=$1
        message=$2
        type=$3
        if [ $# -ge 2 ] && [ $# -le 3 ]
        then
			$LOGCOMMAND "$command" "$message" "$type"
        fi
}

function initInstalation(){
	while [ -z $optSelect ]
	do
		clear
	#Verifico version de perl instalada
	log "Installer" "Verificando versión de perl instalada" "I"

	PERLVERSION=$(perl -v | grep 'v[0-9]\.[0-9]\+\.[0-9]*' -o) #obtengo la version de perl
	NUMPERLVERSION=$(echo $PERLVERSION | cut -d"." -f1 | sed 's/^v\([0-9]\)$/\1/') #obtengo el primer numero

	if [ -z "$NUMPERLVERSION" ] || [ $NUMPERLVERSION -lt $VERSIONPERL ]
	then
		echo "Para ejecutar el sistema CIPAK es necesario contar con Perl $VERSIONPERL o superior."
		echo "Efectúe su instalación e inténtelo nuevamente."
		echo "Proceso de Instalación Cancelado"
		log  "Installer" "Para ejecutar el sistema CIPAK es necesario contar con Perl $VERSIONPERL o superior." "E"
		log  "Installer"  "Efectúe su instalación e inténtelo nuevamente." "E"
		log  "Installer"  "Proceso de Instalación Cancelado" "E"
		exit 3;
	else
		echo ""
		echo "PERL Instalada, Version: $PERLVERSION"
		#echo "PERL Instalada, Version:" $(perl -v)
		echo ""
		log "Installer" "PERL instalado. Version:$PERLVERSION" "I"
	fi

		echo '
		*************************************************************
		*             Proceso de Instalación de "CIPAK"             *
		*   Tema K Copyright © Grupo 7 - Primer Cuatrimestre 2016   *
		*************************************************************
    A T E N C I O N: Al instalar UD. expresa aceptar los términos y condiciones
    del "ACUERDO DE LICENCIA DE SOFTWARE" incluido en este paquete.
    '

		read -p " Acepta?  Si – No: " optSelect
		optSelect=$(echo $optSelect | grep '^[Ss][Ii]$\|^[Nn][Oo]$' | tr '[:upper:]' '[:lower:]')
	done

	#si el usuario no acepta finalizo el script
	if [ $optSelect = "no" ]
	then
		log "Installer" "Usuario NO acepto ACUERDO DE LICENCIA DE SOFTWARE"
		exit 2
	fi

	#Usuario Acepto los terminos
	log "Installer" "Usuario acepto ACUERDO DE LICENCIA DE SOFTWARE" "I"

	echo "configuracion temporal"
	#Si existe vuelvo a generar el archivo de configuracion temporal
	if [ -a $CONFIGFILETEMP ]
	then
		log "Installer" "Genero archivo de configuracion temporal" "I"
		echo "Genero archivo de configuracion temporal"
		rm $CONFIGFILETEMP
		#touch $CONFIGFILETEMP
	fi

	echo "GRUPO=$GRUPO=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de instalación de los ejecutables ($BINDIR):" "$BINDIR"
	BINDIR=$pathTemp
	echo "BINDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina directorio para maestros ($MAEDIR):" "$MAEDIR"
	MAEDIR=$pathTemp
	echo "MAEDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el Directorio de recepción de los archivos de novedades ($ARRIDIR):" "$ARRIDIR"
	ARRIDIR=$pathTemp
	echo "ARRIDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	readNumber "Defina espacio mínimo libre para la recepción de archivos de novedades en Mbytes ($DATASIZE)" "$DATASIZE"
	DATASIZETEMP=$numberTemp
	DATASIZEDIR=$(df -B1024 "$ACTUALDIR" | tail -n1 | sed -e"s/\s\{1,\}/;/g" | cut -f4 -d';')
	DATASIZEDIR=$(echo "scale=0 ; $DATASIZEDIR/1024" | bc -l) #lo paso a Mb

	while [ $DATASIZEDIR -lt $DATASIZETEMP ]
	do
		echo "Insuficiente espacio en disco."
		echo "Espacio disponible: $DATASIZEDIR Mb."
		echo "Espacio requerido $DATASIZETEMP Mb"
		echo "Inténtelo nuevamente."
		echo ""
		readNumber "Defina espacio mínimo libre para la recepción de archivos de novedades en Mbytes ($DATASIZE)" "$DATASIZE"
		DATASIZETEMP=$numberTemp
	done
	DATASIZE=$DATASIZETEMP
	echo "DATASIZE=$DATASIZETEMP=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de grabación de los archivos aceptados ($OKDIR):" "$OKDIR"
	OKDIR=$pathTemp
	echo "OKDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	#llamadas sospechosas -> PROCDIR
	getDirectoryPath "Defina el directorio de grabación de los registros ofertas procesadas ($PROCDIR):" "$PROCDIR"
	PROCDIR=$pathTemp
	echo "PROCDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	#Directorio de grabacion de los reportes
	getDirectoryPath "Defina el directorio de grabación los reportes ($INFODIR):" "$INFODIR"
	INFODIR=$pathTemp
	echo "INFODIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de logs ($LOGDIR):" "$LOGDIR"
	LOGDIR=$pathTemp
	echo "LOGDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getExtension "Ingrese la extensión para los archivos de log ($LOGEXT): " "$LOGEXT"
	LOGEXT=$extDefault
	echo "LOGEXT=$extDefault=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	readNumber "Defina el tamaño máximo para los archivos $LOGEXT en Kbytes ($LOGSIZE)" "$LOGSIZE"
	LOGSIZETEMP=$numberTemp
	LOGSIZEDISP=$(df -B1024 "$ACTUALDIR" | tail -n1 | sed -e"s/\s\{1,\}/;/g" | cut -f4 -d';')

	while [ $LOGSIZEDISP -lt $LOGSIZETEMP ]
	do
		echo "Insuficiente espacio en disco."
		echo "Espacio disponible: $LOGSIZEDISP Kb."
		echo "Espacio requerido $LOGSIZETEMP Kb"
		echo "Cancele la instalación o inténtelo nuevamente."
		echo ""
		readNumber "Defina el tamaño máximo para los archivos $LOGEXT en Kbytes ($LOGSIZE)" "$LOGSIZE"
		LOGSIZETEMP=$numberTemp
	done
	LOGSIZE=$LOGSIZETEMP
	echo "LOGSIZE=$LOGSIZETEMP=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de grabación los archivos rechazados ($NOKDIR):" "$NOKDIR"
	NOKDIR=$pathTemp
	echo "NOKDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP
}

function getDirectoryPath(){
	msj=$1
	pathDefault=$2
	pathTemp=""

	while [ -z $pathTemp ]
	do
		read -p "$msj" pathTemp
		#echo "de nuevo: $pathTemp"
		if [ -z "$pathTemp" ]
		then
			pathTemp=$pathDefault
		else
			#pathTemp=$(echo $pathTemp | grep '^/.*$' )<commit_msg>Agrego variable de Backup a la configuracion<commit_after>#!/bin/bash
#Instalador CIPAK - Grupo 7
#*************************** Variables ***************************
BASEDIR= "."
ACTUALDIR="./"

LOGFILEINS="install.log"
GRUPO="./GRUPO7"
CONFDIRINSTALL="./conf"

CONFDIR="$GRUPO/conf"
CONFIGFILE="$GRUPO/conf/CIPAK.cnf"
CONFIGFILETEMP="$CONFDIRINSTALL/CIPAK.temp"

pathResult=""
BINDIR="$GRUPO/binarios"
MAEDIR="$GRUPO/maestros"
ARRIDIR="$GRUPO/arribados"
#$GRUPO/datos #con los archivos de la catedra
BACKUPDIR="$GRUPO/respaldo"
OKDIR="$GRUPO/aceptados"
PROCDIR="$GRUPO/procesados"
INFODIR="$GRUPO/informes"
LOGDIR="$GRUPO/bitacoras"
NOKDIR="$GRUPO/rechazados"
#DATOSDIR="./datos"
DATASIZE=100 #100Mb  #DATASIZE=104857600 #100Mb
LOGEXT=".log"
LOGSIZE=400 #400Kb #LOGSIZE=409600 #400Kb
LOGCOMMAND="./GrabarBitacora.sh"
VERSIONPERL=5
#*************************** Funciones ***************************
function log() {
        command=$1
        message=$2
        type=$3
        if [ $# -ge 2 ] && [ $# -le 3 ]
        then
			$LOGCOMMAND "$command" "$message" "$type"
        fi
}

function initInstalation(){
	while [ -z $optSelect ]
	do
		clear
	#Verifico version de perl instalada
	log "Installer" "Verificando versión de perl instalada" "I"

	PERLVERSION=$(perl -v | grep 'v[0-9]\.[0-9]\+\.[0-9]*' -o) #obtengo la version de perl
	NUMPERLVERSION=$(echo $PERLVERSION | cut -d"." -f1 | sed 's/^v\([0-9]\)$/\1/') #obtengo el primer numero

	if [ -z "$NUMPERLVERSION" ] || [ $NUMPERLVERSION -lt $VERSIONPERL ]
	then
		echo "Para ejecutar el sistema CIPAK es necesario contar con Perl $VERSIONPERL o superior."
		echo "Efectúe su instalación e inténtelo nuevamente."
		echo "Proceso de Instalación Cancelado"
		log  "Installer" "Para ejecutar el sistema CIPAK es necesario contar con Perl $VERSIONPERL o superior." "E"
		log  "Installer"  "Efectúe su instalación e inténtelo nuevamente." "E"
		log  "Installer"  "Proceso de Instalación Cancelado" "E"
		exit 3;
	else
		echo ""
		echo "PERL Instalada, Version: $PERLVERSION"
		#echo "PERL Instalada, Version:" $(perl -v)
		echo ""
		log "Installer" "PERL instalado. Version:$PERLVERSION" "I"
	fi

		echo '
		*************************************************************
		*             Proceso de Instalación de "CIPAK"             *
		*   Tema K Copyright © Grupo 7 - <NAME>rimestre 2016   *
		*************************************************************
    A T E N C I O N: Al instalar UD. expresa aceptar los términos y condiciones
    del "ACUERDO DE LICENCIA DE SOFTWARE" incluido en este paquete.
    '

		read -p " Acepta?  Si – No: " optSelect
		optSelect=$(echo $optSelect | grep '^[Ss][Ii]$\|^[Nn][Oo]$' | tr '[:upper:]' '[:lower:]')
	done

	#si el usuario no acepta finalizo el script
	if [ $optSelect = "no" ]
	then
		log "Installer" "Usuario NO acepto ACUERDO DE LICENCIA DE SOFTWARE"
		exit 2
	fi

	#Usuario Acepto los terminos
	log "Installer" "Usuario acepto ACUERDO DE LICENCIA DE SOFTWARE" "I"

	echo "configuracion temporal"
	#Si existe vuelvo a generar el archivo de configuracion temporal
	if [ -a $CONFIGFILETEMP ]
	then
		log "Installer" "Genero archivo de configuracion temporal" "I"
		echo "Genero archivo de configuracion temporal"
		rm $CONFIGFILETEMP
		#touch $CONFIGFILETEMP
	fi

	echo "GRUPO=$GRUPO=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de instalación de los ejecutables ($BINDIR):" "$BINDIR"
	BINDIR=$pathTemp
	echo "BINDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina directorio para maestros ($MAEDIR):" "$MAEDIR"
	MAEDIR=$pathTemp
	echo "MAEDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el Directorio de recepción de los archivos de novedades ($ARRIDIR):" "$ARRIDIR"
	ARRIDIR=$pathTemp
	echo "ARRIDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	readNumber "Defina espacio mínimo libre para la recepción de archivos de novedades en Mbytes ($DATASIZE)" "$DATASIZE"
	DATASIZETEMP=$numberTemp
	DATASIZEDIR=$(df -B1024 "$ACTUALDIR" | tail -n1 | sed -e"s/\s\{1,\}/;/g" | cut -f4 -d';')
	DATASIZEDIR=$(echo "scale=0 ; $DATASIZEDIR/1024" | bc -l) #lo paso a Mb

	while [ $DATASIZEDIR -lt $DATASIZETEMP ]
	do
		echo "Insuficiente espacio en disco."
		echo "Espacio disponible: $DATASIZEDIR Mb."
		echo "Espacio requerido $DATASIZETEMP Mb"
		echo "Inténtelo nuevamente."
		echo ""
		readNumber "Defina espacio mínimo libre para la recepción de archivos de novedades en Mbytes ($DATASIZE)" "$DATASIZE"
		DATASIZETEMP=$numberTemp
	done
	DATASIZE=$DATASIZETEMP
	echo "DATASIZE=$DATASIZETEMP=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de grabación de los archivos aceptados ($OKDIR):" "$OKDIR"
	OKDIR=$pathTemp
	echo "OKDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	#llamadas sospechosas -> PROCDIR
	getDirectoryPath "Defina el directorio de grabación de los registros ofertas procesadas ($PROCDIR):" "$PROCDIR"
	PROCDIR=$pathTemp
	echo "PROCDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	#Directorio de grabacion de los reportes
	getDirectoryPath "Defina el directorio de grabación los reportes ($INFODIR):" "$INFODIR"
	INFODIR=$pathTemp
	echo "INFODIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de logs ($LOGDIR):" "$LOGDIR"
	LOGDIR=$pathTemp
	echo "LOGDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getExtension "Ingrese la extensión para los archivos de log ($LOGEXT): " "$LOGEXT"
	LOGEXT=$extDefault
	echo "LOGEXT=$extDefault=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	readNumber "Defina el tamaño máximo para los archivos $LOGEXT en Kbytes ($LOGSIZE)" "$LOGSIZE"
	LOGSIZETEMP=$numberTemp
	LOGSIZEDISP=$(df -B1024 "$ACTUALDIR" | tail -n1 | sed -e"s/\s\{1,\}/;/g" | cut -f4 -d';')

	while [ $LOGSIZEDISP -lt $LOGSIZETEMP ]
	do
		echo "Insuficiente espacio en disco."
		echo "Espacio disponible: $LOGSIZEDISP Kb."
		echo "Espacio requerido $LOGSIZETEMP Kb"
		echo "Cancele la instalación o inténtelo nuevamente."
		echo ""
		readNumber "Defina el tamaño máximo para los archivos $LOGEXT en Kbytes ($LOGSIZE)" "$LOGSIZE"
		LOGSIZETEMP=$numberTemp
	done
	LOGSIZE=$LOGSIZETEMP
	echo "LOGSIZE=$LOGSIZETEMP=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

	getDirectoryPath "Defina el directorio de grabación los archivos rechazados ($NOKDIR):" "$NOKDIR"
	NOKDIR=$pathTemp
	echo "NOKDIR=$pathTemp=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP
	
	#Agrego directorio de Backup al archivo de configuracion
	echo "BACKUPDIR=$BACKUPDIR=$USER=`date +'%d-%m-%Y %H:%M:%S'`" >> $CONFIGFILETEMP

}

function getDirectoryPath(){
	msj=$1
	pathDefault=$2
	pathTemp=""

	while [ -z $pathTemp ]
	do
		read -p "$msj" pathTemp
		#echo "de nuevo: $pathTemp"
		if [ -z "$pathTemp" ]
		then
			pathTemp=$pathDefault
		else
			#pathTemp=$(echo $pathTemp | grep '^/.*$' )
{'fraction_non_alphanumeric': 0.18043808284536977, 'fraction_numerical': 0.011421961974987349, 'mean_word_length': 4.819941102229701, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 56, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7262595', 'n_tokens_mistral': 5622, 'n_tokens_neox': 5362, 'n_words': 1354}