#!/bin/bash
#.
# ------------------------------------------------------
# This program install the intranet on your system.
# Copyright (C) 2007 Jean-paul GIGO <jpg chez popaul77 dot org>
# This program 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. 
# 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., 
# 675 Mass Ave, Cambridge, MA 02139, USA.
# ---------------------------------------
# Mise a jour du script le 01/04/2013
# Version 04 du 12/05/2013
# Ajout du groupe machine necessaire a samba si on utilise le fichier samba.pdc
# A tester en réel pour voir les erreurs restantes.
# Jean-Paul Gigo


SOURCES='/etc/ecole'	; export SOURCES
DEST='/etc'	; export DEST
APACHE='/etc/apache2'	; export APACHE
HOST="$HOSTNAME"
DOMAIN="ecole.lan"
SRVNAME=$HOST
POSTFIX='/etc/postfix'	; export POSTFIX
LOG="/tmp/popaul77.log"	; export LOG

#Creation du dossier ecole
if [ ! -d /etc/ecole ]; then mkdir -p /etc/ecole; fi

cd $SOURCES

#telechargement et mise en place de la config serveur
wget -c http://download.tuxfamily.org/popaul77/edubuntu-popaul77/Edubuntu-popaul77.tar.gz
tar -xvzf Edubuntu-popaul77.tar.gz
rm Edubuntu-popaul77.tar.gz

cp $SOURCES/Admin/comptix /usr/sbin/comptix
chmod +x /usr/sbin/comptix

cp $SOURCES/Admin/majifir /usr/sbin/majifir
chmod +x /usr/sbin/majifir

cp $SOURCES/Admin/terminix /usr/sbin/terminix
chmod +x /usr/sbin/terminix

cp $SOURCES/Admin/updatechrootltsp.sh /usr/sbin/updatechrootltsp.sh
chmod +x /usr/sbin/updatechrootltsp.sh

#Modification du fichier de configuration de apport
# pour ne plus avoir de message d'erreur intempestifs
sed -i '/enabled=*/d' /etc/default/apport
echo "enabled=0" >> /etc/default/apport


#mise  à jour des sources et de la distribution
mv $DEST/apt/sources.list $DEST/apt/sources.list.origine
touch $DEST/apt/sources.list
echo "# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://fr.archive.ubuntu.com/ubuntu/ precise main restricted
#deb-src http://fr.archive.ubuntu.com/ubuntu/ precise main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://fr.archive.ubuntu.com/ubuntu/ precise-updates main restricted
#deb-src http://fr.archive.ubuntu.com/ubuntu/ precise-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://fr.archive.ubuntu.com/ubuntu/ precise universe
#deb-src http://fr.archive.ubuntu.com/ubuntu/ precise universe
deb http://fr.archive.ubuntu.com/ubuntu/ precise-updates universe
#deb-src http://fr.archive.ubuntu.com/ubuntu/ precise-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://fr.archive.ubuntu.com/ubuntu/ precise multiverse
#deb-src http://fr.archive.ubuntu.com/ubuntu/ precise multiverse
deb http://fr.archive.ubuntu.com/ubuntu/ precise-updates multiverse
#deb-src http://fr.archive.ubuntu.com/ubuntu/ precise-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://fr.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
#deb-src http://fr.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu precise-security main restricted
#deb-src http://security.ubuntu.com/ubuntu precise-security main restricted
deb http://security.ubuntu.com/ubuntu precise-security universe
#deb-src http://security.ubuntu.com/ubuntu precise-security universe
deb http://security.ubuntu.com/ubuntu precise-security multiverse
#deb-src http://security.ubuntu.com/ubuntu precise-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
deb http://archive.canonical.com/ubuntu precise partner
#deb-src http://archive.canonical.com/ubuntu precise partner

## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb http://extras.ubuntu.com/ubuntu precise main
#deb-src http://extras.ubuntu.com/ubuntu precise main" >> $DEST/apt/sources.list

########### ici les dépots complementaires.
# Dropbox
touch $SOURCES/Admin/dropbox.list
echo "## sources des paquets dropbox
deb http://linux.dropbox.com/ubuntu precise main" >> $SOURCES/Admin/dropbox.list
mv $SOURCES/Admin/dropbox.list /etc/apt/sources.list.d/
apt-key adv --keyserver pgp.mit.edu --recv-keys 5044912E

# Medibuntu
wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update

# Mise a jour totale
apt-get dist-upgrade

# installation de dialog squid dansguardian et tout l'intranet
# suppression de --force-yes dans la commande apt (old = -y --force-yes)
apt-get install --yes gdebi synaptic gnome-system-tools samba squid dansguardian dialog mysql-server php5 php5-gd phpmyadmin postfix dovecot-common dovecot-imapd dovecot-pop3d squirrelmail squirrelmail-locales courier-base dropbox 2>> $LOG

apt-get autoremove

# Dansguardian Modification de la Block Page
mv $DEST/dansguardian/languages/french/template.html $DEST/languages/french/template.html.origine
cp $SOURCES/Admin/template.html $DEST/dansguardian/languages/french/template.html

#Mot de passe root mysql
PASSROOT=$(zenity --entry \
	--title="Mot de passe MySql" \
	--text="Saisir le mot de passe root de MySql" \
	--entry-text="passwd_MySql" \
	--height="80" \
	--width="100" \
	--timeout="60" \
	--hide-text)

zenity --info \
--title="Mot de passe MySql" \
--text="Le mot de passe de l'administrateur des bases de données MySql est sauvegardé dans un fichier texte disponible dans le dossier: 
/etc/ecole/" \
--height="100" \
--width="200" \
--timeout="60"

# creation du fichier password
echo "Le mot de passe de l'admin MySql =  $PASSROOT" > $SOURCES/PasswdMySql.txt

########## Installation de open-sankoré pour tableau numerique interactif ################
# A surveiller si evolution de version.

MACH=`uname -m`
if [ "$MACH" == "x86_64" ]; then
## Version 64 bits
	apt-get install lib32z1 libc6-i386 lib32stdc++6 lib32gcc1
	wget -c http://ftp.open-sankore.org/current/Open-Sankore_Ubuntu_12.04_2.00.00_amd64.zip
	unzip Open-Sankore_Ubuntu_12.04_2.00.00_amd64.zip
	cd Open-Sankore_Ubuntu_12.04_2.00.00_amd64\ Folder
	dpkg -i dpkg -i Open-Sankore_2.00.00_amd64.deb

else
# version 32 bits
	wget -c http://ftp.open-sankore.org/current/Open-Sankore_Ubuntu_12.04_2.00.00_i386.zip
	unzip Open-Sankore_Ubuntu_12.04_2.00.00_i386.zip
	cd Open-Sankore_Ubuntu_12.04_2.00.00_i386\ Folder
	dpkg -i Open-Sankore_2.00.00_i386.deb

fi

###################   Configuration de samba   ####################
GROUP=profs
# création du groupe et du répertoire 'profs'
if  ! grep "^$GROUP" /etc/group ; then
   addgroup $GROUP
fi

mv $DEST/samba/smb.conf /$DEST/samba/smb.conf.origine
cp $SOURCES/Samba/smb.conf /$DEST/samba/smb.conf

mkdir /home/netlogon

mkdir /home/Photos
chown root:profs /home/Photos
chmod 775 /home/Photos


mkdir /home/multimedia
chmod 775 /home/multimedia
chown root:profs /home/multimedia

mkdir /home/multimedia/musiques
chmod 775 /home/multimedia/musiques
chown root:profs /home/multimedia/musiques

mkdir /home/multimedia/videos
chmod 775 /home/multimedia/videos
chown root:profs /home/multimedia:videos

groupadd machines

#redemarrage de samba
service smbd restart
service nmdb restart

# il faut creer les dossier netlogon et profile
# a finaliser quand le smb.conf sera completement fonctionnel
#
###############################################################

# Modification de la configuration de lightdm pour
# ne pas avopir la liste des utilisateurs
# et que l'utilisateur saisisse son login pour ce connecter
echo "greeter-hide-users=true
allow-guest=false" >> $DEST/lightdm/lightdm.conf

#service lightdm restart a faire par reboot du serveur par script ça plante l'interface c'est normal

########## Modification de la configuration de ltsp ############
#modification du lts.conf pour avoir 
# le clavier en français
echo "  XKBLAYOUT=fr" >> /var/lib/tftpboot/ltsp/i386/lts.conf
# Desactivation du SSH tunneling du traffic X11
echo "  LDM_DIRECTX = True" >> /var/lib/tftpboot/ltsp/i386/lts.conf
# la swap active
echo "  NBD_SWAP=True" >> /var/lib/tftpboot/ltsp/i386/lts.conf
echo "  NBD_SWAP_SERVER=192.168.0.254" >> /var/lib/tftpboot/ltsp/i386/lts.conf

echo "nbdswapd: ALL: keepalive" >> /etc/hosts.allow

touch /etc/ltsp/nbdswapd.conf
echo "SIZE=256" >> /etc/ltsp/nbdswapd.conf

#### Preparation du lts.conf pour l'utilisation des Applications locales #####################"
echo "# Applications locales, a decommenter si besoin.
# LOCAL_APPS=True
# LOCAL_APPS_MENU=True
# LOCAL_APPS_MENU_ITEMS=ri-li,firefox,gcompris" >> /var/lib/tftpboot/ltsp/i386/lts.conf
# a besoin d'etre teser en reel (jpg)

################### Modification de la page de démarrage de Firefox ##########"
touch /etc/xul-ext/homepage.properties
echo "browser.startup.homepage=http://$HOSTNAME.ecole.lan/" >> /etc/xul-ext/homepage.properties
echo "pref(\"browser.startup.homepage\", \"file:/etc/xul-ext/homepage.properties\");" >> /etc/xul-ext/ubufox.js



##mise en place de la configuration d'apache2 #################
#création de la ligne ServerName dans apache2.conf

echo "
ServerRoot $APACHE
ServerName $SRVNAME" > tmp-apache
sed '/^#ServerRoot*/r tmp-apache' $APACHE/apache2.conf > $APACHE/apache2.conf.back
mv $APACHE/apache2.conf.back $APACHE/apache2.conf
rm tmp-apache

#Creation des lignes de serveur virtuel dans le fichier hosts

if  ! grep "^#Lignes rajoutées" /etc/hosts ; then
echo "
#Lignes rajoutées par le script d'installation popaul77
#
192.168.0.254	$HOST $HOST.$DOMAIN localhost
192.168.0.254	courrier
192.168.0.254	courrier.$DOMAIN
192.168.0.254	photo
192.168.0.254	photo.$DOMAIN
192.168.0.254	tchat
192.168.0.254	tchat.$DOMAIN" > tmp-hosts
sed '/^127.0.1.1*/r tmp-hosts' $DEST/hosts > $DEST/hosts.back
mv $DEST/hosts.back $DEST/hosts
rm tmp-hosts
fi

#Creation des serveurs virtuel
#
## la machine
echo "<VirtualHost 192.168.0.254:80>
        DocumentRoot        /var/www/
        ServerName      $HOST
        ServerAlias     $HOST.$DOMAIN
</VirtualHost>" >$APACHE/sites-available/$HOST.conf
chmod 644 $APACHE/sites-available/$HOST.conf
#
## le courrier
echo "<VirtualHost 192.168.0.254:80>
        DocumentRoot        /var/www/courrier
        ServerName      courrier
        ServerAlias     courrier.$DOMAIN
</VirtualHost>" >/$APACHE/sites-available/courrier.conf
chmod 644 /$APACHE/sites-available/courrier.conf
#
## Les photos
echo "<VirtualHost 192.168.0.254:80>
        DocumentRoot        /var/www/zenphoto
        ServerName       photo
        ServerAlias    	 photo.$DOMAIN
</VirtualHost>" >$APACHE/sites-available/photo.conf
chmod 644 $APACHE/sites-available/photo.conf
#
###Le tchat
echo "<VirtualHost 192.168.0.254:80>
        DocumentRoot        /var/www/le_chat
        ServerName      tchat
        ServerAlias     tchat.$DOMAIN
</VirtualHost>" >$APACHE/sites-available/tchat.conf
chmod 644 $APACHE/sites-available/tchat.conf
#
echo "NameVirtualHost 192.168.0.254:80" | tee $APACHE/conf.d/virtual-host.conf

####################  Installation de owncloud sur le serveur  ##############################
# Voir dans téléchargement ou sur le web la doc pour configurer apache2 pour faire du https
# ça ça fonctionne pas bien
# echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/ /'
#
# http://www.patdef.fr/Configurer-apache2-pour-faire-du.html
#
#il faut mettre ça dans le script si owncloud est installé par default  
# a voir si c'est bien necessaire, pas si sur que ça
# Le sources liste doit etre modifier, la clé gpg doit etre importé dans le systeme.
# N° de clé 977C43A8BA684223
#
# la doc est là: http://doc.ubuntu-fr.org/apt-key
#
# gpg --keyserver keyserver.ubuntu.com --recv-keys  votre_n°_de_clé
# gpg -a --export votre_n°_de_clé | sudo apt-key add -
#
# A mettre en dur dans le sourceliste: 
# deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/ /
#
#############################################################################################


#Telechargement de l'intranet puis mise en place
## a modifier suite changement d'arborescence de site web -------------------------------------------
mv /var/www/index.html /var/www/index.html.origine
tar -xvzf $SOURCES/intranet/intranet-0.7.tar.gz -C /var/www/

#pour zenphoto
ln -s /home/Photos/ /var/www/zenphoto/albums

#Je donne les droit a apache2
chown www-data:www-data /var/www/ -R

#Configuration du serveur de courrier
#modifier le fichier main.cf de postfix
cp $POSTFIX/main.cf $POSTFIX/main.cf.origine

#Suppression des lignes dans le fichire main.cf
#pour les remplacer par celle que j'ai besoin
sed -i '/mynetworks*/d' $POSTFIX/main.cf
sed -i '/relayhost*/d' $POSTFIX/main.cf
sed -i '/mailbox_size_limit*/d' $POSTFIX/main.cf
sed -i '/recipient_delimiter*/d' $POSTFIX/main.cf
sed -i '/inet_interfaces*/d' $POSTFIX/main.cf

echo "
# modification par popaul77
## A activer si on désire recevoir du courrier externe au reseau local
relayhost = 	#exemple: [smtp.free.fr]
mynetworks = 127.0.0.0/8, 192.168.0.254/24
#mailbox_command = procmail -a "$EXTENSION"
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#
# Modification JpG pour majilux securite anti spameurs a activer pour l'acces au courrier externe.
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_uknown_hostname
#
# Reecriture d'adresse pour l'envoi de mail a l'exterieur du localhost
#sender_canonical_maps = hash:/etc/postfix/canonical" > tmp-postfix

sed '/^mydestination*/r tmp-postfix' $POSTFIX/main.cf > $POSTFIX/main.cf.back
mv $POSTFIX/main.cf.back $POSTFIX/main.cf
rm tmp-postfix

#configuration de squirrelmail (config sale a refaire)
mv $DEST/squirrelmail/config.php $DEST/squirrelmail/config.php.orig
cp $SOURCES/squirrelmail/config.php $DEST/squirrelmail/config.php
chmod 644 $DEST/squirrelmail/config.php

mv /usr/share/squirrelmail/functions/i18n.php /usr/share/squirrelmail/functions/i18n.php.origine
cp $SOURCES/squirrelmail/i18n.php /usr/share/squirrelmail/functions/i18n.php
chmod 644 /usr/share/squirrelmail/functions/i18n.php

############## Squirrelmail en francais   version plus propre a faire ############################################################
# Une petite précision ....
# En fait, il faut connaître la locale courante utilisée par squirrelmail. Pour cela il suffit de taper dans son environnement :
#
# locale

# de reporter cette information dans le fichier /usr/share/squirrelmail/functions/i18n.php
# puis de configurer squirrelmail avec ce paramètre.
##
# Par exemple, en ce qui me concerne j'utilise fr_FR.UTF-8.
# Dans /usr/share/squirrelmail/functions/i18n.php, j'ai donc remplacé la ligne
#
# $languages['fr_FR']['LOCALE']  = array('fr_FR.ISO8859-1','fr_FR.ISO-8859-1','fr_FR');
#
# par
#
# $languages['fr_FR']['LOCALE']  = array('fr_FR.UTF-8','fr_FR.UTF-8','fr_FR');
#
# puis j'ai relancé /usr/sbin/squirrelmail-configure pour renseigner dans l'option 10. Language comme suit :
#
#    1.  Default Language       : fr_FR
#    2.  Default Charset        : UTF-8
#    3.  Enable lossy encoding  : false
#
# Bien entendu, une fois connecté sur sa boîte aux lettres, l'utilisateur devra indiquer ses préférences d'affichage via le menu options
###################################################################################################################################

#il faut créer le lien symbolique entre /etc/apache2/conf.d/squirrelmail.conf et /etc/squirrelmail/apache.conf
ln -s /usr/share/squirrelmail/ /var/www/courrier

##mise en place des sites virtuel
cd $APACHE
a2ensite courrier.conf
a2ensite $HOST.conf
a2ensite photo.conf
a2ensite tchat.conf

# Installation de subsonic il faudra suivre les mises a jour du paquet
# inclure le paquet dans le tar.gz de l'intranet
cd $SOURCES
apt-get install openjdk-6-jre lame
wget http://sourceforge.net/projects/subsonic/files/subsonic/4.7/subsonic-4.7.deb
dpkg -i subsonic-4.7.deb


# redemarrage des serveurs
service apache2 restart
/etc/init.d/mysql restart
service postfix restart
service dovecot restart
service subsonic start

#il faut aussi créer le dossier Maildir pour l'administrateur du serveur

grep 1000 /etc/passwd | awk -F ":" '{print $1}' > $SOURCES/moi.txt
	cat $SOURCES/moi.txt | while  read ligne ; do
MOI=$ligne
		maildirmake.courier /home/$MOI/Maildir
		chown $MOI:$MOI /home/$MOI/Maildir -R
		chmod 700 /home/$MOI/Maildir -R
		cp -Rf $SOURCES/Admin/gnome-panel /home/$MOI/.config/gnome-panel
		chown $MOI:$MOI /home/$MOI/.config/gnome-panel -R
		chmod 700 /home/$MOI/.config/gnome-panel -R
		usermod -a -G profs $MOI
		usermod -a -G www-data $MOI
	done
rm $SOURCES/moi.txt
rm $SOURCES/Open-Sankore*
chown root:profs /etc/ecole -R
chmod 750 /etc/ecole -R

echo " Il est necessaire de redemarrer le serveur	        "
echo " pour que la configuration se mette en place		"
echo " N'oubliez pas de configurer les differents modules	"
echo " comme cela est décrit dans l'intranet.			"
echo " Le filtre web necessite que le parefeu soit configuré   "
echo " pour fonctionner, utiliser pour cela la commande          "
echo " sudo majifir dans une console.                           "
echo " Jean-Paul Gigo						"
