| 
					
				 | 
			
			
				@@ -159,6 +159,12 @@ comprobarError() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			type="WARNING" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			error="\n$type $codeNum:\tYa existe una copia configurada de Moodle en el dominio: '$extraInfo'." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		604) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			error="\n$type $codeNum:\tImposible configurar SELinux.\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		605) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			error="\n$type $codeNum:\tImposible instalar 'policycoreutils-python'.Detalles:\n$extraInfo\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		800) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			error="$type $codeNum:\tEs necesario ser root ('sudo $0').\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			;; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -484,8 +490,11 @@ inicializarVariables() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	phpFPMName="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	nombreMediaWiki="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dominioMediaWiki="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	passwdMediaWiki="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	nombreMoodle="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nombreCortoMoodle="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dominioMoodle="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	passwdMoodle="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 instalacionExpress() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -637,13 +646,11 @@ mostrarMediaWiki(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	while [ -z "$nombreMediaWiki" ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		nombreMediaWiki=$(whiptail --title "CONFIGURACION MEDIAWIKI" --inputbox "Introduzca el nombre de la Wiki:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		# Mejora: comprobar si el dominio ya está en uso 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	# Introducir dominio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	while [ -z "$dominioMediaWiki" ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		dominioMediaWiki=$(whiptail --title "CONFIGURACION MEDIAWIKI" --inputbox "Introduzca el dominio/subdominio de la Wiki.\nTenga en cuenta que debes apuntar este dominio a la dirección IP de esta máquina mediante un registro DNS de tipo CNAME.\nSi quiere introducir varios dominios sepárelos con espacios. El primero será el principal.\nPor ejemplo: 'www.$hostname $hostname wiki.$hostname'" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) wiki.$hostname --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		# Mejora: comprobar si el dominio ya está en uso 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cont=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	serverName="" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -665,7 +672,7 @@ mostrarMediaWiki(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	while [ $control = false ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		passwdMediaWiki=$(whiptail --title "CONFIGURACION MEDIAWIKI" --passwordbox "$error""Introduzca la contraseña para el usuario administrador 'admin':" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		passwdMediaWiki2=$(whiptail --title "CONTRASEÑA SQL" --passwordbox "Confirme la contraseña:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		passwdMediaWiki2=$(whiptail --title "CONFIGURACION MEDIAWIKI" --passwordbox "Confirme la contraseña:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if [ -z "$passwdMediaWiki" ] || [ -z "$passwdMediaWiki2" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			error="ERROR: LA CONTRASEÑA NO PUEDE ESTAR VACIA.\n" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -679,17 +686,20 @@ mostrarMediaWiki(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 mostrarMoodle() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	# Introducir nombre Moodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	# Introducir Nombre Moodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	while [ -z "$nombreMoodle" ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		nombreMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el nombre del campus virtual:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		nombreMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el NOMBRE COMPLETO del campus virtual.\nPor ejemplo: 'Campus Virtual Ejemplo:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	# Introducir Nombre Corto Moodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	while [ -z "$nombreCortoMoodle" ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		nombreCortoMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el NOMBRE CORTO del campus virtual.\nPor ejemplo: 'Ejemplo':" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		# Mejora: comprobar si el dominio ya está en uso 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	# Introducir dominio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	while [ -z "$dominioMoodle" ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		dominioMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el dominio/subdominio del campus virtual.\nMoodle SÓLO permite un ÚNICO DOMINIO." $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) moodle.$hostname --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		# Mejora: comprobar si el dominio ya está en uso 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cont=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	serverName="" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -705,7 +715,23 @@ mostrarMoodle() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		cont=$((cont + 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dominioMoodle=$serverName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	unset dominio cont serverName aliasMoodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	# Introducir contraseña 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	control=false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	error="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	while [ $control = false ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		passwdMoodle=$(whiptail --title "CONFIGURACION MOODLE" --passwordbox "$error""Introduzca la contraseña para el usuario administrador 'admin':" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		passwdMoodle2=$(whiptail --title "CONFIGURACION MOODLE" --passwordbox "Confirme la contraseña:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		comprobarError $? 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if [ -z "$passwdMoodle" ] || [ -z "$passwdMoodle2" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			error="ERROR: LA CONTRASEÑA NO PUEDE ESTAR VACIA.\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		elif [ $passwdMoodle != $passwdMoodle2 ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			error="ERROR: LAS CONTRASEÑAS NO COINCIDEN.\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			control=true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	unset control error passwdMoodle2 dominio cont serverName aliasMoodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 establecerFQDN() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1440,6 +1466,25 @@ configurarMoodle() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		nombreDBMo=$(echo $dominioMoodle | sed -e 's/\./_/g') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		userDBMo=$(echo $dominioMoodle | sed -e 's/\./_/g') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		crearDBMoodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		# Configurar SE-Linux (RHEL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if [ $rhelOS = true ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			configurarSELinux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		# Configuramos e instalamos Moodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if [ $sslOn = true ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wwwroot="https://$dominioMoodle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wwwroot="http://$dominioMoodle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if [ $mySQLOn = true ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			dbtype="mysqli" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		elif [ $mariaDBOn = true ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			dbtype="mariadb" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			comprobarError 1 602 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sudo -u $webServerUser php admin/cli/install.php --lang=es --wwwroot="$dominioMoodle" --dbtype="$dbtype" --dbname="$nombreDBMo" --dbuser="$userDBMo" --dbpass="$sqlPasswd" --fullname="$nombreMoodle" --shortname=$nombreCortoMoodle --adminuser=admin --adminpass=$passwdMoodle --adminemail="admin@$dominioMoodle" --agree-license --non-interactive >>$logFile 2>&1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		comprobarError $? 602 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		# Actualizamos permisos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		chown -R $webServerUser:$webServerGroup /var/www/$dominioMoodle /var/www/moodledata 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		# Configuramos VirtualHost 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1455,7 +1500,7 @@ configurarMoodle() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			comprobarError 1 602 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		instalarVirtualHost "/var/www/$dominioMoodle" $virtualHost $dominioMoodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		unset virtualHost 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		unset virtualHost wwwroot dbtype 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		comprobarError 1 603 $dominioMoodle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	fi 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1479,6 +1524,19 @@ crearDBMoodle() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	unset control dbFile dbDir 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+configurarSELinux() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	# Configura SELinux (Sólo para RHEL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	which semanage >/dev/null 2>&1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if [ $? -ne 0 ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		result=$(yum -y install policycoreutils-python 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		comprobarError $? 605 $result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/moodledata(/.*)?" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	comprobarError $? 604 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	restorecon -R /var/www/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	comprobarError $? 604 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Comprobación del sistema e inicialización 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 inicializarVariables 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 comprobarRoot 
			 |