#!/bin/bash

. /usr/lib/eole/ihm.sh

USER="genconfig"
# Never rename ${USER_HOME} to ${HOME} or this script will fail ;-)
USER_HOME=$(getent passwd ${USER} | awk -F':' '{print $6}')
XFILE="${USER_HOME}/.Xauthority"
XLOCK="/tmp/.X0-lock"
BROWSER="chromium-browser"

#SSH_ENV="_X11_NO_MITSHM=1 _MITSHM=0 QT_X11_NO_MITSHM=1"
SSH_ENV="QT_X11_NO_MITSHM=1"
SERVER="127.0.0.1:5000"
APP_URL="http://$SERVER/genconfig/?application"
BASHRC="${USER_HOME}/.bashrc"
PREFS_DIR="${USER_HOME}/.local"

COMMON_BROWSER_OPT="--managed-policy-file=/etc/chromium-browser/policies/managed/genconfig.json \"${APP_URL}\""
SSH_BROWSER_OPT="$COMMON_BROWSER_OPT --disable-gpu --no-touch-pinch --window-size=\"1024,768\" --ipc=localhost "
APP_BROWSER_OPT="$COMMON_BROWSER_OPT --start-maximize"

if [ -f $BASHRC ]
then
    sed -i 's/^HISTSIZE/#HISTSIZE/g' $BASHRC
    sed -i 's/^HISTFILESIZE/#HISTFILESIZE/g' $BASHRC
fi

mkdir -p $PREFS_DIR
chown -R $USER: $PREFS_DIR

if [ -f $XFILE ];then
    if pgrep -f ${BROWSER} >/dev/null ;then
        EchoRouge "Quelqu'un utilise gen_config en ce moment, il est impossible de lancer gen_config plusieurs fois en même temps."
        exit 1
    fi
    echo "Suppression de l'ancien $XFILE"
    rm -f $XFILE
fi

tcpcheck 1 $SERVER >/dev/null 2>&1
if [ "$?" = "1" ]; then
    EchoRouge "gen_config n'est pas joignable, veuillez consulter les journaux d'eoleflask pour en savoir plus :"
    EchoRouge "/var/log/eoleflask/eolegenconfig.log"
    EchoRouge "et relancer le service avec la commande 'service eoleflask start'"
    exit 1
fi

function pre_x() {
    touch $XFILE
    chown $USER: $XFILE
}

rm -rf ${USER_HOME}/.config/chromium
if [ -n "$SSH_CLIENT" ];then
    # over SSH
    if [ ! -n "$DISPLAY" ];then
        EchoRouge "DISPLAY manquant. Activer l'option SSH: 'ForwardX11'"
        exit 1
    fi
    pre_x
    sux - $USER env ${SSH_ENV} ${BROWSER} ${SSH_BROWSER_OPT}
elif [ -n "$DISPLAY" ]
then
    # X is already stated
    pre_x
    if [[ $EUID -eq 0 ]]; then
        sux - $USER ${BROWSER} ${APP_BROWSER_OPT}
    else
        ${BROWSER} ${APP_BROWSER_OPT}
    fi
elif [ -e $XLOCK ]
then
    EchoRouge "Trop de serveur X demarre"
    exit 1
else
    # Console mode
    TMPF=$(mktemp -p /tmp)
    LOG_TMPF=$(mktemp -p /tmp)
    /bin/echo -e "/usr/bin/numlockx;\n/usr/bin/matchbox-window-manager -use_titlebar no -use_desktop_mode decorated &\nsu - $USER -c '${BROWSER} ${APP_BROWSER_OPT}' > $LOG_TMPF 2>&1 " > $TMPF
    chmod a+x $TMPF
    xinit $TMPF &> /dev/null
    cat $LOG_TMPF
    rm -f $TMPF $LOG_TMPF
fi
rm -rf ${USER_HOME}/.config/chromium
rm -f $XFILE
exit 0
