#!/bin/bash
#/**
#@file    mountrepo.sh
#@brief   Script para montar el repositorio de datos remoto.
#@warning License: GNU GPLv3+
#@version 1.0
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2011-03-17
#*/

OGIMG=${OGIMG:-/opt/opengnsys/images}
ROOTREPO=${ROOTREPO:-"$ROOTSERVER"}

# TODO Revisar proceso de arranque para no montar 2 veces el repositorio.
if [ "$ogactiveadmin" == "true" ]; then 
	export boot=admin	# ATENCIÓN: siempre en modo "admin".
	umount $OGIMG 2>/dev/null

	protocol=${ogprotocol:-"smb"}
	[ "$ogunit" != "" ] && OGUNIT="/$ogunit"
	printf "$MSG_MOUNTREPO\n" "$protocol" "$boot"
	case "$ogprotocol" in
		nfs)	mount.nfs ${ROOTREPO}:$OGIMG$OGUNIT $OGIMG -o rw,nolock ;;
		smb)	PASS=$(grep "^[ 	]*\(export \)\?OPTIONS=" /scripts/ogfunctions 2>&1 | \
				sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/')
			PASS=${PASS:-"og"}
			mount.cifs //${ROOTREPO}/ogimages$OGUNIT $OGIMG -o rw,serverino,acl,username=opengnsys,password=$PASS
			;;
		local)	# TODO: hacer funcion dentro de este script que monte smb
			# Comprobamos que estatus sea online.
			if [ "$ogstatus" == "offline" -o "$SERVER" == "" ]; then
			   # Si estatus es offline buscamos un dispositivo con etiqueta repo
			   # y si no existe montamos la cache como repo (si existe).
			   TYPE=$(blkid | grep REPO | awk -F"TYPE=" '{print $2}' | tr -d \")
			   if [ "$TYPE" == "" ]; then
				[ -d $OGCAC/$OGIMG ] && mount --bind  $OGCAC/$OGIMG $OGIMG
			   else
		           	mount -t $TYPE LABEL=REPO $OGIMG &>/dev/null
			   fi
			else
                           # Comprobamos que existe un servicio de samba.
                           smbclient -L $SERVER -N &>/dev/null
                           if [ $? -eq 0 ]; then
			   	PASS=$(grep "^[         ]*\(export \)\?OPTIONS=" /scripts/ogfunctions 2>&1 | \
			   	   sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/')
			   	PASS=${PASS:-"og"}
			   	mount.cifs //${ROOTREPO}/ogimages $OGIMG -o rw,serverino,acl,username=opengnsys,password=$PASS
			   fi
			   # TODO: buscar condicion para NFS
			fi
			;;
	esac
fi

