#!/bin/bash

# ======================================================================
# Archivo:       nfs-config
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Activar o desactivar las carpetas compartidas NFS
# Distribución:  Quirinux 2.x
# ======================================================================

#
# Copyright (c) 2019-2025 Charlie Martínez, derechos reservados.
# Licencia: https://www.gnu.org/licenses/gpl-2.0.txt
# Usos autorizados y no autorizados de la marca Quirinux:
# Ver https://www.quirinux.org/aviso-legal
#

SERVICIOS=(nfs-common rpcbind openbsd-inetd)

# =========================================================================================
# MENSAJES MULTI-IDIOMA
# =========================================================================================

function mostrar_mensaje() {
    local clave=$1
    declare -A mensajes=(
        [es_titulo]="¿Para qué sirve NFS?"
        [es_explicacion]="Las carpetas compartidas NFS permiten compartir archivos y carpetas
entre equipos Linux/Unix de tu misma red,
montando una carpeta remota como si fuera local."
        [es_nfs_on]="NFS está activado. ¿Desea desactivarlo?"
        [es_nfs_off]="NFS está desactivado. ¿Desea activarlo?"
        [es_no_permisos]="Debe ejecutar este script con permisos de superusuario."
        [es_nfs_activado]="NFS activado"
        [es_nfs_desactivado]="NFS desactivado"

        [en_titulo]="What is NFS for?"
        [en_explicacion]="NFS shared folders let you share files and folders
between Linux/Unix machines on your network,
mounting a remote folder as if it were local."
        [en_nfs_on]="NFS is enabled. Do you want to disable it?"
        [en_nfs_off]="NFS is disabled. Do you want to enable it?"
        [en_no_permisos]="You must run this script as a superuser."
        [en_nfs_activado]="NFS enabled"
        [en_nfs_desactivado]="NFS disabled"

        [gl_titulo]="Para que serve NFS?"
        [gl_explicacion]="Os cartafoles compartidos NFS permiten compartir ficheiros e cartafoles
entre equipos Linux/Unix da túa mesma rede,
montando un cartafol remoto coma se fose local."
        [gl_nfs_on]="NFS está activado. Desexa desactivalo?"
        [gl_nfs_off]="NFS está desactivado. Desexa activalo?"
        [gl_no_permisos]="Debe executar este script como superusuario."
        [gl_nfs_activado]="NFS activado"
        [gl_nfs_desactivado]="NFS desactivado"

        [de_titulo]="Wofür dient NFS?"
        [de_explicacion]="Über NFS-Freigabeordner können Sie Dateien und Ordner
zwischen Linux/Unix-Rechnern in Ihrem Netzwerk teilen,
indem Sie einen entfernten Ordner wie einen lokalen einbinden."
        [de_nfs_on]="NFS ist aktiviert. Möchten Sie es deaktivieren?"
        [de_nfs_off]="NFS ist deaktiviert. Möchten Sie es aktivieren?"
        [de_no_permisos]="Dieses Skript muss mit Superuser-Rechten ausgeführt werden."
        [de_nfs_activado]="NFS aktiviert"
        [de_nfs_desactivado]="NFS deaktiviert"

        [it_titulo]="A cosa serve NFS?"
        [it_explicacion]="Le cartelle condivise NFS permettono di condividere file e cartelle
tra computer Linux/Unix della stessa rete,
montando una cartella remota come se fosse locale."
        [it_nfs_on]="NFS è attivo. Vuoi disattivarlo?"
        [it_nfs_off]="NFS è disattivo. Vuoi attivarlo?"
        [it_no_permisos]="Devi eseguire questo script come superutente."
        [it_nfs_activado]="NFS attivato"
        [it_nfs_desactivado]="NFS disattivato"

        [fr_titulo]="À quoi sert NFS ?"
        [fr_explicacion]="Les dossiers partagés NFS permettent de partager des fichiers et des dossiers
entre machines Linux/Unix de votre réseau,
en montant un dossier distant comme s'il était local."
        [fr_nfs_on]="NFS est activé. Voulez-vous le désactiver ?"
        [fr_nfs_off]="NFS est désactivé. Voulez-vous l'activer ?"
        [fr_no_permisos]="Vous devez exécuter ce script en tant que superutilisateur."
        [fr_nfs_activado]="NFS activé"
        [fr_nfs_desactivado]="NFS désactivé"

        [pt_titulo]="Para que serve o NFS?"
        [pt_explicacion]="As pastas partilhadas NFS permitem partilhar ficheiros e pastas
entre máquinas Linux/Unix da sua rede,
montando uma pasta remota como se fosse local."
        [pt_nfs_on]="NFS está ativado. Deseja desativá-lo?"
        [pt_nfs_off]="NFS está desativado. Deseja ativá-lo?"
        [pt_no_permisos]="Você deve executar este script como superusuário."
        [pt_nfs_activado]="NFS ativado"
        [pt_nfs_desactivado]="NFS desativado"

        [hu_titulo]="Mire való az NFS?"
        [hu_explicacion]="Az NFS megosztott mappákkal fájlokat és mappákat oszthat meg
a hálózatában lévő Linux/Unix gépek között,
egy távoli mappát úgy csatolva, mintha helyi lenne."
        [hu_nfs_on]="Az NFS be van kapcsolva. Szeretné kikapcsolni?"
        [hu_nfs_off]="Az NFS ki van kapcsolva. Szeretné bekapcsolni?"
        [hu_no_permisos]="Ezt a szkriptet rendszergazdaként kell futtatni."
        [hu_nfs_activado]="NFS bekapcsolva"
        [hu_nfs_desactivado]="NFS kikapcsolva"

        [ru_titulo]="Для чего нужен NFS?"
        [ru_explicacion]="Общие папки NFS позволяют делиться файлами и папками
между машинами Linux/Unix в вашей сети,
подключая удалённую папку так, как если бы она была локальной."
        [ru_nfs_on]="NFS включён. Отключить его?"
        [ru_nfs_off]="NFS выключен. Включить его?"
        [ru_no_permisos]="Этот скрипт должен быть запущен от имени суперпользователя."
        [ru_nfs_activado]="NFS включён"
        [ru_nfs_desactivado]="NFS отключён"
    )

    local idioma=$(echo $LANG | cut -d_ -f1)
    local mensaje=${mensajes[${idioma}_$clave]:-${mensajes[en_$clave]}}
    echo "$mensaje"
}

# =========================================================================================
# FUNCIONES PARA GESTIÓN DE NFS
# =========================================================================================

function nfs_activo() {
    service nfs-common status >/dev/null 2>&1
}

function habilitar_nfs() {
    for servicio in "${SERVICIOS[@]}"; do
        update-rc.d "$servicio" enable >/dev/null 2>&1
        service "$servicio" start >/dev/null 2>&1
    done
    zenity --info --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="$(mostrar_mensaje nfs_activado)"
}

function deshabilitar_nfs() {
    for servicio in "${SERVICIOS[@]}"; do
        service "$servicio" stop >/dev/null 2>&1
        update-rc.d "$servicio" disable >/dev/null 2>&1
    done
    zenity --info --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="$(mostrar_mensaje nfs_desactivado)"
}

# =========================================================================================
# EJECUCIÓN DEL SCRIPT
# =========================================================================================

ICONO="/usr/share/icons/nfs-config.png"
NOMBRE_ICONO="nfs-config"

if [[ $EUID -ne 0 ]]; then
    zenity --error --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="$(mostrar_mensaje no_permisos)"
    exit 1
fi

if nfs_activo; then
    zenity --question --width=380 --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="<b>$(mostrar_mensaje titulo)</b>

$(mostrar_mensaje explicacion)

$(mostrar_mensaje nfs_on)" || exit 0
    deshabilitar_nfs
else
    zenity --question --width=380 --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="<b>$(mostrar_mensaje titulo)</b>

$(mostrar_mensaje explicacion)

$(mostrar_mensaje nfs_off)" || exit 0
    habilitar_nfs
fi
