#!/bin/bash

LIVECD=ubuntu.iso
PRIMTUX=primtux6.iso
EOLE_MINIMAL=eole-minimal.img

download_image(){
    local url
    local name
    url="${1}"
    name="${2}"

    if [ ! -z "$url" ] || [ ! -z "$name" ];then
        if [ $(CreoleGet activer_proxy_client) = "oui" ]; then
            export http_proxy=http://$(CreoleGet proxy_client_adresse):$(CreoleGet proxy_client_port)
            export https_proxy=https://$(CreoleGet proxy_client_adresse):$(CreoleGet proxy_client_port)
        fi
        echo "${name} downloading ..."
        cd /home
        wget -c "${url}" -O "${name}"
        if [ $? != 0 ];then
            rm "${name}"
            exit 1
        fi
        unset http_proxy https_proxy
        echo "${name} downloaded"
    fi
}

extract_files_from_iso(){
    local filename
    local name
    cd /home
    filename=$1
    name="${1%.iso}"
    if  [ -f "/srv/tftp/ltsp/${name}/vmlinuz" ] || [ -f "/srv/tftp/ltsp/${name}/initrd.img" ];then
            echo "kernel and initrd.img for ${name} already there"
            return 0
    else
        echo "Extracting kernel and initrd from ${name} ..."
        if [ -f "/home/${filename}" ];then
            mkdir -p /srv/ltsp/images
            mkdir -p "/srv/tftp/ltsp/${name}"
            temp=$(mktemp -d)
            mount -o ro /home/${filename} $temp
            cp -a $temp/casper/filesystem.squashfs /srv/ltsp/images/${name}.img
            cp -a $temp/casper/vmlinuz /srv/tftp/ltsp/${name}
            if [ "${name}" == "primtux6" ];then
                cp -a $temp/casper/initrd.gz /srv/tftp/ltsp/${name}/initrd.img
            else
                cp -a $temp/casper/initrd /srv/tftp/ltsp/${name}/initrd.img
            fi
            umount $temp
            rmdir $temp
        fi
    fi
}

image_ready(){
    local name
    cd /home
    mkdir -p /srv/ltsp/images
    name="${1}"
    cp /home/${name} /srv/ltsp/images
    ltsp kernel ${name%.img}
}

if [ $(CreoleGet ltsp_eole_minimal) = "oui" ]; then
    if [ ! -f "/home/${EOLE_MINIMAL}" ];then
        DOWNLOAD="http://eole.ac-dijon.fr/images/eclair/$EOLE_MINIMAL"
        download_image "${DOWNLOAD}" "${EOLE_MINIMAL}"
    fi
    image_ready "${EOLE_MINIMAL}"
fi

if [ $(CreoleGet ltsp_primtux) = "oui" ]; then
    echo "primtux"
    if [ ! -f "/home/${PRIMTUX}" ];then
        DOWNLOAD="http://eole.ac-dijon.fr/images/eclair/$PRIMTUX"
        download_image "${DOWNLOAD}" "${PRIMTUX}"
    fi
    extract_files_from_iso "${PRIMTUX}"
fi

if [ $(CreoleGet ltsp_livecd_ubuntu) = "oui" ] ; then
    if [ ! -f "/home/${LIVECD}" ];then
        DOWNLOAD="https://releases.ubuntu.com/focal/ubuntu-20.04.2.0-desktop-amd64.iso"
        download_image "${DOWNLOAD}" "${LIVECD}"
    fi
    extract_files_from_iso "${LIVECD}"
fi


#Deactivat pamltsp #31662
mkdir -p /etc/ltsp/client/init/
touch /etc/ltsp/client/init/54-pam.sh
ltsp initrd
ltsp nfs
ltsp ipxe

exit 0
