#!/bin/bash

#______________________________________
#
# PARAMETROS RECIBIDOS DESDE EL CLIENTE
# $1 modo  (admin, user)
#______________________________________

# Error si llamada no se realliza desde OpenGnSys Client.
PROG=$(basename $0)
CALLER=$(ogGetCaller)
if [ "$CALLER" != "CrearImagen" -a "$CALLER" != "ConsolaRemota" ]; then
    ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG"
    exit $?
fi

# Salir si el repositorio está bloquedo (tiene ficheros abiertos).
REPOIP=$(ogGetRepoIp)
if [ -z "$REPOIP" ]; then
	ogRaiseError $OG_ERR_NOTFOUND "repo no montado"
	exit $?
fi
if ogIsRepoLocked; then
	ogRaiseError $OG_ERR_LOCKED "repo $REPOIP"
	exit $?
fi

# Comprobar protocolo y modo de acceso.
PROTO=${ogprotocol:-"smb"}
case "$PROTO" in
	nfs|smb) ;;
	*)	ogRaiseError $OG_ERR_FORMAT "protocolo desconocido $PROTO"
		exit $? ;;
esac
case "$1" in
	admin)	MODE="rw,nolock" ;;
	user)	MODE="ro,nolock" ;;
	*)	ogRaiseError $OG_ERR_FORMAT "modo desconocido $1"
		exit $? ;;
esac

# Desmontar repositorio y volver a montarlo con el modo adecuado.
umount $OGIMG
ogEcho info "$PROG: Montar repositorio $REPO por $PROTO en modo $1"
case "$PROTO" in
	nfs)	mount -t nfs $REPOIP:$OGIMG $OGIMG -o $MODE ;;
	smb)	PASS=$(grep "^[	 ]*\(export \)\?OPTIONS=" /scripts/ogfunctions 2>&1 | \
			sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/')
		PASS=${PASS:-"og"}
		mount.cifs //$REPOIP/ogimages $OGIMG -o rw,serverino,acl,username=opengnsys,password=$PASS
esac

