#!/bin/bash
# Versiones: [arturo@2020-9-28] [arturo@2019-12-16]

uso() {
    echo "¡¡Importante!! Para configurar las paginas de inicio de navegadores:
    1) Debes ser usuario \"root\"
    2) Debes pasar como primer parámetro el navegador a personalizar: firefox|chrome
    3) Como segundo parámetro debe pasarse las páginas de inicio a personalizar
    Ej. vx-set-paginicio-navegadores firefox '\"https://www.google.es|https://aplicaciones.aragon.es/sigaddweb/login\"'
    Ej. vx-set-paginicio-navegadores chrome '\"https://www.google.es\",\"https://aplicaciones.aragon.es/sigaddweb/login\"'
    ¡¡Nota!! Pueden configurarse ambos pasandose parámetros por pares (4 parámetros)
    Ej. vx-set-paginicio-navegadores \\
        firefox '\"https://www.google.es|https://aplicaciones.aragon.es/sigaddweb/login\"' \\
        chrome '\"https://www.google.es\",\"https://aplicaciones.aragon.es/sigaddweb/login\"'
    "
    exit 1
}

[[ "$(whoami)" != "root" ]] && uso
# Deben pasarse al menos dos parámetros, por pares:
(( ${#} % 2 )) && uso

FICHCONF="/etc/default/vx-dga-variables/vx-dga-variables-general.conf"
[ -f "${FICHCONF}" ] && . "${FICHCONF}"

FICHCONFCHROME="/etc/opt/chrome/policies/managed/vx-paginicio-chrome.json"
FICHCONFCHROMIUM="/etc/chromium/policies/managed/vx-paginicio-chrome.json"
FICHCONFFIREFOX="/usr/lib/firefox/browser/defaults/preferences/vx-paginicio-firefox.js"

#NUEVAPAGINICIOG='"https://www.google.es","https://aplicaciones.aragon.es/sigaddweb/login"'
#NUEVAPAGINICIOF='"https://www.google.es|https://aplicaciones.aragon.es/sigaddweb/login"'

until [[ -z "${1}" || -z "${2}" ]] ; do
    NAV="${1}"
    case "${NAV}" in
        "firefox" )
            NUEVAPAGINICIOF="${2}"
            # Configuración de páginas de inicio de Firefox:
            echo "=> Configuración de páginas de inicio de Firefox: ${NUEVAPAGINICIOF}"
            if [ -f "${FICHCONFFIREFOX}" ] ; then
                # ¡¡Nota!! Al usar el caracter "|" firefox para separar paginas de inicio da
                # problemas con la opción "-E" del grep, al hacer incorrectamente la regex
                # Por tanto, el grep no lleva "-E":
                LINEA=$(grep '^pref("browser.startup.homepage"' "${FICHCONFFIREFOX}")
                [[ -z "${LINEA}" ]] && \
                echo "#> Problema: browser.startup.homepage => No existe configuración de páginas de inicio en Firefox" && \
                exit 2
                PAGS_CONFIGURADAS=$(echo "$LINEA" | sed -n 's/.*", "\(.*\)".*/\1/p')
                if [[ "${PAGS_CONFIGURADAS}" != "${NUEVAPAGINICIOF}" ]] ; then
                    sed --follow-symlinks -i "s#^pref(\"browser.startup.homepage\",.*#pref(\"browser.startup.homepage\", ${NUEVAPAGINICIOF}, locked);#g" "${FICHCONFFIREFOX}" && \
                    echo "=> ${FICHCONFFIREFOX}: Ok, ${NUEVAPAGINICIOF} Configuradas en Firefox!!" || \
                    {
                        echo "=> ${FICHCONFFIREFOX}: Error, ${NUEVAPAGINICIOF} Problemas para configurar en Firefox!!" && exit 1 ;
                    }
                    
                else
                    echo "=> ${FICHCONFFIREFOX}: ${PAGS_CONFIGURADAS}. Ya estaban configuradas las Pag Inicio en Firefox!!"
                fi
            else
                echo "=> Error!! ${FICHCONFFIREFOX}: No existe el fichero de configuración de Firefox"
                exit 1
            fi
        ;;
        "chrome" )
            NUEVAPAGINICIOG="${2}"
            # Configuración de páginas de inicio de Google Chrome y Chromium:
            EJECUTABLE="/usr/bin/vx-chrome-paginicio"
            if [ -x "${EJECUTABLE}" ]; then
                "${EJECUTABLE}" "${NUEVAPAGINICIOG}"
            else
                echo "=> Configuración de páginas de inicio de Chromium y Google Chrome: ${NUEVAPAGINICIOG}"
                for FICHCONF in "${FICHCONFCHROMIUM}" "${FICHCONFCHROME}" ; do
                    if [ -f "${FICHCONF}" ] ; then
                        if ! grep -qE "${NUEVAPAGINICIOG}" "${FICHCONF}" ; then
                            sed --follow-symlinks -i "s#\[.*\]#\[${NUEVAPAGINICIOG}\]#g" "${FICHCONF}" && \
                            echo "=> Ok!! Configuradas en Google Chrome y Chromium!!" || \
                            echo "=> Error!! Problemas para configurar Google Chrome y Chromium"
                        else
                            echo "=> Ya estaban configuradas las Pag Inicio en Chrome y Chromium!!"
                        fi
                    else
                        echo "=> Error!! No existe el fichero de configuración de Chrome y Chromium"
                        exit 1
                    fi
                done
            fi
        ;;
        * ) uso
        ;;
    esac
    shift 2
done

exit 0