#!/usr/bin/env bash

. /usr/lib/eole/diagnose.sh

sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^AllowUsers/#AllowUsers/' /etc/ssh/sshd_config
sed -i 's/^AllowGroups/#AllowGroups/' /etc/ssh/sshd_config
sed -i 's/^AllowTcpForwarding no/AllowTcpForwarding yes/' /etc/ssh/sshd_config

systemctl restart ssh

spinner(){
    # to use it call a long task, background it and call spinner on it's pid
    # (long_long_task) &
    # spinner $!

    local pid=$1
    local delay=0.75
    local spinstr='|/-\'
    while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
        local temp=${spinstr#?}
        printf " [%c]  " "$spinstr"
        local spinstr=$temp${spinstr%"$temp"}
        sleep $delay
        printf "\b\b\b\b\b\b"
    done
    printf "    \b\b\b\b"
}
xdesktop=$(CreoleGet bureau_graphique_thin)

if [ $xdesktop = "mate" ];then
    apt-eole install mate-desktop mate-desktop-environment oem-config-slideshow-ubuntu-mate ubuntu-mate-icon-themes ubuntu-mate-welcome mate-themes ubuntu-mate-themes mate-applets 2>&1 >/dev/null
    update-alternatives --set x-session-manager /usr/bin/mate-session 2>&1 >/dev/null
else
    update-alternatives --set x-session-manager /usr/bin/startxfce4 2>&1 >/dev/null
fi

#Create /opt/nbd-swap with correct permissions
if ! [ -d /opt/nbd-swap ];then
    mkdir /opt/nbd-swap
fi
chown nbd: /opt/nbd-swap

if ! egrep -q nfs /etc/modules;then
    echo nfs4 >> /etc/modules
    #Si nfs pas dans /etc/modules alors il n'est pas chargé
    modprobe nfs4
fi
adresse_serveur_nfs=$(CreoleGet adresse_serveur_nfs)
nfs_fstab_line="${adresse_serveur_nfs}:/home /home nfs4 auto,nouser,rsize=8192,wsize=8192,timeo=14,intr,acl,nolock,async,clientaddr=$(CreoleGet adresse_ip_eth0) 0 0"

if ! egrep -q 'nfs' /etc/fstab ;then
    echo ${nfs_fstab_line} >> /etc/fstab
else
    #Attention / ne convient pas comme separateur sed
    sed  -i "s%^\d*.* /home nfs*.*$%${nfs_fstab_line}%" /etc/fstab
fi
TestService nfs ${adresse_serveur_nfs}:2049 >/dev/null 2>&1
if [ $? == 0 ];then
    if ! CreoleRun "mount |egrep -q '^${adresse_serveur_nfs}'"; then
        CreoleRun 'mount /home'
    fi
else
    EchoRouge "Le serveur NFS (${adresse_serveur_nfs}) ne semble pas joignable"
fi

#We need fuse group on the server... 
if ! egrep -q fuse /etc/group;then
        addgroup fuse > /dev/null 2>&1
    fi
# and /dev/fuse writebale by fuse group
chgrp fuse /dev/fuse > /dev/null 2>&1
chmod g+rw /dev/fuse > /dev/null 2>&1

TFTPBOOT_DIR=$(CreoleGet repertoire_tftp)
IMAGE_DEFAULT=$(CreoleGet ltsp_client_type)_$(CreoleGet ltsp_client_arch)

#admin devrait être membre du groupe lpadmin
# ref #20746
if ! [ -n "$(groups |grep lpadmin)" ];then
    addgroup admin lpadmin
fi

#Il faut un lien relatif pour le tftp
cd $TFTPBOOT_DIR
if [ -h default ];then
        rm -f default
fi
EchoVert "Création du lien symbolique pour l'image par défaut"
ln -s $IMAGE_DEFAULT default

if [ "$1" = "instance" ];then
    . /usr/lib/eole/ihm.sh
    if [ -d /opt/ltsp ]; then
        Question_ouinon "Voulez-vous re-générer l'image des clients légers" 'True' 'non' 'warn'
        [ $? -eq 1 ] && exit 0
        rm -rf /opt/ltsp/$IMAGE_DEFAULT
        if [ -f $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf.auto-bak ];then
            rm $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf.auto-bak
        fi
        if [ -f $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf ];then
            mv $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf.auto-bak
        fi
        if [ -d /etc/xdg/xfce4/kiosk ];then
            rm -rf /etc/xdg/xfce4/kiosk
        fi
    fi

    printf "Construction de l'image de démarrage en cours (patienter, log dans /var/log/ltsp_build_client.log):  "
    (ltsp-build-client --skipimage --config /etc/ltsp/ltsp-build-client.conf >/var/log/ltsp_build_client.log 2>&1) &
    spinner $!
    grep " terminée avec succès" /var/log/ltsp_build_client.log >/dev/null 2>&1
    if [ $? == 0 ];then
        cp /usr/share/doc/ltsp-server/examples/lts.conf $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf >/dev/null 2>&1
        ln -s $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf $TFTPBOOT_DIR/default/lts.conf >/dev/null 2>&1
        sed -i 's/LDM_DIRECTX=True/LDM_DIRECTX=False/' $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf
        sed -i 's/#LOCALDEV=False/LOCALDEV=False/'     $TFTPBOOT_DIR/$IMAGE_DEFAULT/lts.conf
        #On laisse les icones par défaut avec les bons paquets
        #sed -i 's/elementary-xfce-dark/Humanity/' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
        mkdir /etc/xdg/xfce4/kiosk
        cat << EOF > /etc/xdg/xfce4/kiosk/kioskrc
[xfce4-session]
CustomizeSplash=NONE
CustomizeChooser=NONE
CustomizeLogout=NONE
CustomizeCompatibility=NONE
Shutdown=NONE
CustomizeSecurity=NONE
EOF
        # Custom splash screen
        cp /usr/share/backgrounds/gnome/Mirror.jpg /opt/ltsp/$IMAGE_DEFAULT/usr/share/ldm/themes/ltsp/bg.png
        cp /usr/share/pixmaps/eole_logo.png /opt/ltsp/$IMAGE_DEFAULT/usr/share/ldm/themes/ltsp/logo.png
        ltsp-chroot -m update-alternatives --set ldm-theme /usr/share/ldm/themes/ltsp > /var/log/ltsp_build_client.log 2>&1

        # Set shortcuts for embeded apps
        /usr/share/eole/sbin/generate_shortcuts

        #Generate image file
        echo
        EchoVert "Génération de l'image du chroot (patienter)"
        ltsp-update-image

        # un redémarrage est nécessaire pour qu'Eclair soit fonctionnel
        touch /var/run/reboot-required
    else
        EchoRouge "Problème de construction de l'image embarquée"
        exit 1
    fi
    echo
fi
