#!/bin/bash

# Copyright (C) 2004-2010 Centro de Computacao Cientifica e Software Livre
# Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
#
# This file is part of le-base
#
# le-base is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.


#------------------------------------------------------------------------------

DIR=$(readlink -f "$0")
. "`dirname "$(echo "$DIR")"`/common-functions.sh"

checkUser || exit 1
checkMountedFS || exit 2
loadConf "$PREFIX/conf/$1/create-iso.conf" $1

# Set the default session
if [ -f "$CHROOTDIR/etc/lightdm/lightdm.conf" ]; then
    sed -i 's@user-session=ubuntu@user-session=gnome@g' \
	    "$CHROOTDIR"/etc/lightdm/lightdm.conf
fi
if [ -f "$CHROOTDIR"/usr/share/xsessions/gnome.desktop ]; then
    sed -i 's@Exec=gnome-session --session=ubuntu@Exec=gnome-session --session=gnome@g' "$CHROOTDIR"/usr/share/xsessions/gnome.desktop
fi
if [ -f "$CHROOTDIR"/usr/share/xsessions/gnome-shell.desktop ]; then
    sed -i 's@Exec=gnome-session --session=ubuntu@Exec=gnome-session --session=gnome@g' "$CHROOTDIR"/usr/share/xsessions/gnome-shell.desktop
fi

# Set the release info
echo "LE 5.0 \"$1\" - Release i386 ($(date +"%Y%m%d"))" > "$CDDIR/.disk/info"
# Edits DEFINE
#sed -i "s@Ubuntu 12.04 LTS \"$1\"@Linux Educacional 5.0@g" \
#	$CDDIR/README.diskdefines

# Set release notes uri
echo "http://linuxeducacional.c3sl.ufpr.br/" > $CDDIR/.disk/release_notes_url

# Remove useless sessions from xsessions
if [ -f "$CHROOTDIR"/usr/share/xsessions/ubuntu.desktop ];
then
    rm "$CHROOTDIR"/usr/share/xsessions/ubuntu.desktop
fi

if [ -f "$CHROOTDIR"/usr/share/xsessions/ubuntu-2d.desktop ];
then
    rm "$CHROOTDIR"/usr/share/xsessions/ubuntu-2d.desktop
fi

# Change isolinux default language
#echo "pt_BR" > $CDDIR/isolinux/lang
rm -rf "$CDDIR"/isolinux
cp -a "$TEMPLATES"/isolinux "$CDDIR"/


# Set up /etc/le/data_iso.txt
INFO_ISO=$(echo "$1" | cut -d "/" -f 2)
INFO_ISO="$INFO_ISO:"$(date +"%d-%m-%y")
echo "$INFO_ISO" > "$CHROOTDIR"/etc/le/data_iso.txt

#Change live time zone
echo "America/Sao_Paulo" > "$CHROOTDIR"/etc/timezone
cp -f "$CHROOTDIR"/usr/share/zoneinfo/America/Sao_Paulo "$CHROOTDIR"/etc/localtime

# Re-enable update-grub on the kernel postinst
sed -i s/'# exec update-grub'/'exec update-grub'/g \
    "$CHROOTDIR"/etc/kernel/postinst.d/zz-update-grub

# Change the live user name
case "$1" in
    "minicom/client")
        sed -i 's@[Uu]buntu@monitor@g' "$CHROOTDIR"/etc/casper.conf
        sed -i 's@HOST="monitor"@HOST="le5-telecentro"@g' "$CHROOTDIR"/etc/casper.conf
        # Reconfigure le-greeter now that /etc/le/dat_iso.txt is in place
        chroot $CHROOTDIR dpkg-reconfigure le-greeter
        ;;
    "minicom/server")
        sed -i 's@[Uu]buntu@monitor@g' "$CHROOTDIR"/etc/casper.conf
        sed -i 's@HOST="monitor"@HOST="le5-servidor-telecentro"@g' $CHROOTDIR/etc/casper.conf
        ;;
    *)
        sed -i 's@[Uu]buntu@le5-live@g' $CHROOTDIR/etc/casper.conf
        rm -Rf $CHROOTDIR/etc/skel/*
        ;;
esac

echo "export \"FLAVOUR=le5\"" >> "$CHROOTDIR"/etc/casper.conf

# Sets deb-conf install command
sed -i 's@Ubuntu@LE@g' "$CDDIR"/preseed/ubuntu.seed
sed -i 's@ubuntu@le@g' "$CDDIR"/preseed/ubuntu.seed

# configures the DVD repository
for package in $(cat "$TEMPLATES"/le-packages/packgs_list); do
    if [ "${package:0:3}" = "lib" ]; then
        packageDir="pool/main/${package:0:4}/$package"
    elif [ "${package:0:5}" = "linux" ]; then
        packageDir="pool/main/${package:0:1}/${package:0:5}"
    else
        packageDir="pool/main/${package:0:1}/$package"
    fi

    packageList="$(rgrep "^Package: $package *$" "$CHROOTDIR/var/lib/apt/lists/" | grep "binary-i386" | head -n1 | cut -d ':' -f1)"

    mirror="$(basename "$(echo "$packageList" | cut -d '_' -f1)")/$(
        echo "$packageList" | cut -d '_' -f2)"

    linkDir="$(grep -A21 "^Package: $package *$" "$packageList" | grep "^Filename:.*$package.*" | cut -d ' ' -f2)"

    echo "mirror = $mirror"
    echo "linkDir = $linkDir"

    debFile="$(basename "$linkDir")"

    mkdir -p "$CDDIR/$packageDir"
    wget http://$mirror/$linkDir -O "$CDDIR/$packageDir/$debFile"
done
cd "$CDDIR"

for repository in main restricted; do
    dpkg-scanpackages "pool/$repository" \
        > "$CDDIR/dists/precise/$repository/binary-i386/Packages"
    gzip -c "$CDDIR/dists/precise/$repository/binary-i386/Packages" \
        > "$CDDIR/dists/precise/$repository/binary-i386/Packages.gz"
    # rm -f "$CDDIR/dists/precise/$repository/binary-i386/Packages"
done

act="$(pwd)"
cd $CDDIR/dists/precise

cat << EOF > ./Release
Origin: Linux Educacional
Label: Linux Ecucacional
Suite: precise
Version: 5.0
Codename: precise
EOF

echo "Date: $(date -u +"%a, %d %h %y %X UTC")" >> ./Release

cat << EOF >> ./Release
Architectures: i386
Components: main restricted
Description: Linux Educacional 5.0
EOF

for alg in MD5Sum SHA1 SHA256; do
    echo "$alg:"
    for dir in "main/binary-i386" "restricted/binary-i386"; do
        for file in $(ls ./$dir); do
            case $alg in
                MD5Sum)
                    result="$(md5sum $dir/$file)"
                    echo " $(echo $result | cut -d' ' -f1) $(ls -l $dir/$file | 
                        cut -d ' ' -f5) $(echo $result | cut -d' ' -f2)"
                ;;
                SHA1)
                    result="$(sha1sum $dir/$file)"
                    echo " $(echo $result | cut -d' ' -f1) $(ls -l $dir/$file | 
                        cut -d ' ' -f5) $(echo $result | cut -d' ' -f2)"
                ;;
                SHA256)
                    result="$(sha256sum $dir/$file)"
                    echo " $(echo $result | cut -d' ' -f1) $(ls -l $dir/$file | 
                        cut -d ' ' -f5) $(echo $result | cut -d' ' -f2)"
            esac
        done
    done
done >> ./Release

rm -f Release.gpg
gpg -bao ./Release.gpg ./Release
cp -a "$TEMPLATES/le-packages/public.key" "$CHROOTDIR/root/"
chroot "$CHROOTDIR" apt-key add /root/public.key
rm -f "$CHROOTDIR/root/public.key"
cd "$act"

if cat "$INSTLIST" | grep -v "^#" | grep -q "le-plymouth"; then
    touch "$TMP"/NEW_INITRD
fi

rm -rf "$CDDIR"/wubi.exe "$CDDIR"/autorun.inf

cat << EOF >> $CHROOTDIR/etc/skel/.profile
if [ -e "/var/lib/le-search/search.xml" ]; then
    gsettings set org.gnome.shell enabled-extensions "['le_search@le.c3sl.ufpr.br']"
fi
EOF

exit 0