#!/bin/bash
# lastact: arturo@2023-02-27
# desc: Permite actualizar el fichero policies.json que configura el comportamiento del navegador Web Firefox

FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# Mostramos la ayuda si se pasa como parámetro -h o --help:
AYUDA="Script encargado de configurar el fichero policies.json que configura el comportamiento de Firefox."
AYUDA+="\nHay que pasar trios de parámetros de configuración: 1) Parámetro raíz, 2) Parámetro a añadir y 3) Valor"
AYUDA+="\nSi el valor debe asignarse con comillas dobles será necesario explicitarlas usando comillas simples: '\"Valor\"'"
EJEMPLOS=("${0} \"policies\" \"PromptForDownloadLocation\" \"true\" # Muestra diálogo para elegir directorio donde Descargar")
EJEMPLOS+=("${0} \"policies\" \"Cookies\" '{ \"Allow\": [\"https://example.com\", \"https://otro.com\" ] , \"AllowSession\": [\"http://example.edu/\"] }' # Configura las cookies")
EJEMPLOS+=("${0} \"policies.Cookies\" \"Block\" '[\"http://bloquear.edu/\"]' # Configura las opciones de bloqueo de las cookies")
vx-check_need_help "${1}" && \
vx-show_help "${0}" "${AYUDA}" "${EJEMPLOS[@]}" && \
exit 0

# 0) Comprobamos que es el usuario root quien ejecuta el script:
vx-check_user_root

# 1) Comprobamos que existe el archivo policies.json, sino lo generamos:
FICH_CONF="/usr/lib/firefox/distribution/policies.json"
[[ ! -f "${FICH_CONF}" ]] &&
    mkdir -p "$(dirname "${FICH_CONF}")" &&
    echo '{ "policies": {}}' | jq "." | sponge"${FICH_CONF}" &&
    echo "=> Creamos el fichero de configuración de Firefox, no existía: ${FICH_CONF}"

# 2) Configuramos los parámetros y valores pasados como parámetros:
until [[ -z "${1}" || -z "${2}" ]]; do
    jq '.policies += { "'"${1}"'": '"${2}"' }' "${FICH_CONF}" && \
    echo "=> Hemos configurado la policy en firefox: { \"${1}\": ${2} }"
    shift 2
done

exit 0