#!/bin/bash
#
#---------------------------------------------------------------------------------
#-- Copyright frogdev Project (http://www.frogdev.info)                 	
#-- Copyleft :) frogdev Project							
#--	Contact : bouleetbil@frogdev.info                                         
#--         					                         
#-- Created by Gaëtan Gourdin                   			
#--										                                                          
#-- Date: 16 oct 2007							              
#-- Version: 0.94j								                                       
#--Licence:GPL2						                                                
#--										                                                          
#-- Purpose: This script configure and install Gentoo.	                     
#---------------------------------------------------------------------------------


#GNU General Public License Version  
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#version 2 as published by the Free Software Foundation.
#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.

function getBoxWidth ()
{
let boxWidth=$(echo $message | awk '{len=length($0)+4} {rem=len%10} \
{len=len-(rem)+(rem > 0)*10} {if(len > 70) {print 70} else {print len}}')
return
}
##############################################################################
# Apparition d'une boite d'information
##############################################################################
function showInfoBox ()
{
getBoxWidth
dialog --backtitle "$BACK_TITLE" \
--sleep 3 \
--title "$title" \
--infobox "\n$message" \
5 $boxWidth
return
}

##############################################################################
# Apparition d'une boite de saisie
##############################################################################
function showInputBox()
{
userInput=
getBoxWidth
dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--trim \
--max-input $maxInput \
--inputbox "$message" \
$boxHeight $boxWidth 2> $TEMP_FILE

if [ $? -eq 0 ]; then
 userInput=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE
fi
return
}


##############################################################################
# Information
##############################################################################
function showMessageBox()
{
getBoxWidth
dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--msgbox "\n$message" \
$boxHeight $boxWidth
return
}

##############################################################################
# A Propos
##############################################################################
function showAbout()
{
title="A propos"
message="FrogDev OS Linux Distribution\n\
Il s'agit d'une version BETA qui peut contenir des bugs \n\
Rendez-vous sur le forum http://www.frogdev.info\n\
bouleetbil@frogdev.info.fr\n\n\
FrogDev OS Installeur Version $VERSION \n\n\
Copyright (C) 2007 FrogDev"
let boxHeight=13
showMessageBox

return
}

##############################################################################
# Quitte si l'utilisateur n'est pas root
##############################################################################
function checkUser()
{
local user="$(whoami)"

if [ $user != "root" ]; then
 title="Accées refusé"
 message="Vous devez être root pour lancer le programme d'installation"
 let boxHeight=7
 showMessageBox

 exit 1
fi
return
}

##############################################################################
#Boite de dialogue textboxfile
############################################################################## 
function showTextBox()
{
dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--textbox $textBoxFile \
19 70
return
}
##############################################################################
# Affiche la licence et quitte si elle est refusée
##############################################################################
function showLicense()
{
dialog --backtitle "$BACK_TITLE" \
--title "GNU General Public License Version 2" \
--yesno "\nThis program is free software; you can redistribute it and/or\n\
modify it under the terms of the GNU General Public License\n\
version 2 as published by the Free Software Foundation.\n\
\n\
This program is distributed in the hope that it will be useful,\n\
but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n\
GNU General Public License for more details.\n\
\n\
Do you accept the software license agreement?" \
16 70

if [ $? -eq 1 ]; then

 exit 1
fi
return
}

##############################################################################
#Menu principal
##############################################################################
function showMainMenu()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Bienvenu sur FrogDev" \
--menu "Choix" \
18 60 6 \
"VerifMAJ" "Vérifier la version de frogdev.sh" \
"installOs" "Installation de Frogdev" \
"MenuOutils" "Outils Frogdev" \
"MenuConfiguration" "Configurer FrogDev " \
"MenuMeteriel" "Matériel" \
"MenuBoot" "Gestionnaire de boot" \
"Aide"   "Aide" \
"Quitter" "Quitter" 2> $TEMP_FILE

#desactive tant que gnash pas stable
#"MenuDivers" "Divers" \

if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "installOs" )  installOS;showMainMenu
     ;;
   "VerifMAJ" ) checkfrogdevVersion;showMainMenu
     ;;
   "installOsGentoo" )  installer-dialog
     ;;
   "MenuConfiguration" ) MenuConfiguration
     ;;
   "MenuOutils" ) MenuOutils
     ;;
   "MenuMeteriel" ) MenuMeteriel
     ;;
   "MenuBoot" ) MenuReparation
     ;;
   "MenuDivers" ) MenuDivers
     ;;
   "Aide") aide;showMainMenu
     ;;
   "Quitter" ) exitLoop="t"
     ;;
 esac

elif [ $? -eq 1 ]; then
 exitInstaller
fi
exitInstaller
}
##############################################################################
#Menu matériel
##############################################################################
function MenuMeteriel()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Matériel" \
--menu "Choix" \
18 60 6 \
"Processeur" "Votre processeur" \
"Memoire" "Etat de la mémoire" \
"CartePci" "Carte PCI" \
"CarteGraph" "Test carte graphique" \
"CarteSon" "Carte son détectée" \
"Ctrlusb" "Controleur USB" \
"IRQ" "IRQ utilisé" \
"ModKernel" "Modules chargés" \
"Retour" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "Processeur" )  cat /proc/cpuinfo
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "Memoire" ) cat /proc/meminfo
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "CarteSon" ) cat /proc/asound/cards
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "Ctrlusb" ) lsusb
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "CarteGraph" ) glxinfo
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "IRQ" ) cat /proc/interrupts
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "CartePci" ) lspci
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "ModKernel" ) lsmod
		echo -n "Appuyer sur entrée pour continuer : "
		read Touche
		MenuMeteriel
     ;;
   "Retour" ) showMainMenu
     ;;
 esac
elif [ $? -eq 1 ]; then
 showMainMenu
fi
return


}
##############################################################################
#Menu configurations système
##############################################################################
function MenuConfiguration()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Configuration de FrogDev" \
--menu "Choix" \
18 60 6 \
"MakeConf" "Editer make.conf" \
"GestionUSE" "Gestion de USE (Xorg actif)" \
"SetSystemInfo" "Information système " \
"SetTimeZone"   "Fuseau horaire" \
"SetHostName"   "Nom d'hôte" \
"AlsaConf"   "Configuration carte son" \
"ReseauConf"   "Configuration du réseau" \
"ImpConf"   "Configuration des impressions" \
"Env"	"Langue" \
"Retour" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "MakeConf" )  nano /etc/make.conf
     ;;
   "GestionUSE" ) profuse;MenuConfiguration
     ;;
   "SetSystemInfo" ) setSystemInfo;MenuConfiguration
     ;;
   "SetTimeZone") setTimeZone;MenuConfiguration
     ;;
   "SetHostName") setHostName;MenuConfiguration
     ;;
   "AlsaConf") alsaconf;MenuConfiguration
     ;;
   "ReseauConf") MenuReseau;MenuConfiguration
     ;;
   "ImpConf") MenuImpressions;MenuConfiguration
     ;;
   "EmiConf") EmiConf;MenuConfiguration
     ;;
   "Env") GereEnv;MenuConfiguration
     ;;
   "Retour" ) showMainMenu
     ;;
 esac
elif [ $? -eq 1 ]; then
 showMainMenu
fi
return


}
##############################################################################
#Outils en regle general
##############################################################################
function MenuOutils()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Outils FrogDev" \
--menu "Choix" \
18 60 6 \
"PartitionnementConsole" "Partionnement disque dur" \
"Formatage" "Formatage d'une partition" \
"NewMontage" "Nouveau point de montage" \
"Unionfs" "Installation de logiciel" \
"MAJ" "Mise à jour du sytème" \
"HistoMsgEmerge" "Messages lors d'un emerge " \
"Services" "Gestion des services " \
"SauvegardeSys" "Sauvegarde du système " \
"RestaureSys"   "Restauration du système" \
"SauvegardeRoot"   "Sauvegarde Configuration Mode LIVECD" \
"CreateLive"   "Création LiveCD" \
"CreateUSB"   "Création LiveCD USB" \
"GentooMove"  "Création GentooMove" \
"Retour" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "PartitionnementConsole" )  NewPartitionHardDisk;MenuOutils
     ;;
   "MAJ" ) MajSys;MenuOutils
     ;;
   "MenuPatch" ) MenuXdelta;MenuOutils
     ;;
   "HistoMsgEmerge" ) HistoEmergeLog;MenuOutils
     ;;
   "NewMontage" ) NewMontage;MenuOutils
     ;;
   "Unionfs" ) pg_unionPart;MenuOutils
     ;;
   "Formatage" ) FormatePartition;MenuOutils
     ;;
   "Services" )AffichelstService;MenuOutils
     ;;
   "SauvegardeSys" )  SauvegardeComplete;MenuOutils
     ;;
   "RestaureSys") RestoreSauve;MenuOutils
     ;;
   "SauvegardeRoot") showChoixSauve;MenuOutils
     ;;
   "RestaureRoot") showChoixRep;MenuOutils
     ;;
   "HibernationSys") hiber
     ;;
   "CreateLive") CreateLive;MenuOutils
     ;;
   "CreateUSB") CreateUSB;MenuOutils
     ;;
   "GentooMove") pg_CreateGentooMove;MenuOutils
     ;;
   "Retour" ) showMainMenu
     ;;
 esac
elif [ $? -eq 1 ]; then
 showMainMenu
fi
}
##############################################################################
#Historique lors d'un emerge garde enotice pour rester compatible avec ancien LiveCD
##############################################################################
function HistoEmergeLog()
{
if [ -s /usr/local/sbin/enotice ]; then
  /usr/local/sbin/enotice
else
  elogv
fi
return
}
##############################################################################
#OBSOLETE Menu paramètres emission
##############################################################################
function EmiConf()
{
if [ -s "/sbin/emission-tunables" ]; then

installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Outils FrogDev" \
--menu "Choix" \
18 60 6 \
"compute-server" "compute-server" \
"desktop" "desktop" \
"file-server"   "file-server" \
"gaming"	"gaming" \
"ll-desktop"	"ll-desktop" \
"server"	"server" \
"custom" "custom" \
"Retour" "Retour" 2> $TEMP_FILE

    if [ $? -eq 0 ]; then
 	installMethod=$(cat $TEMP_FILE)
 	rm -f $TEMP_FILE

 	case "$installMethod" in
 	  "compute-server" ) emission-tunables compute-server;MenuConfiguration
 	    ;;
 	  "desktop" ) emission-tunables desktop;MenuConfiguration
 	    ;;
 	  "file-server" ) emission-tunables file-server;MenuConfiguration
 	    ;;
  	   "gaming" ) emission-tunables gaming;MenuConfiguration
     	     ;;
	   "ll-desktop" ) emission-tunables ll-desktop;MenuConfiguration
	     ;;
	   "server") emission-tunables server;MenuConfiguration
	     ;;
	   "custom") emission-tunables custom;MenuConfiguration
	     ;;
	   "Retour" ) MenuConfiguration
	     ;;
	 esac
    elif [ $? -eq 1 ]; then
	 MenuConfiguration
     fi
else
	echo "Emission-tunables non trouvé"
	sleep 2
fi

}
##############################################################################
#Menu paramètres reseau
##############################################################################
function MenuReseau()
{

installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Outils FrogDev" \
--menu "Choix" \
18 60 6 \
"MirroirGentoo" "Sélection mirroir" \
"ADSL" "Configuration ADSL" \
"PROXYconf" "Configurer un proxy " \
"InterfaceConf"   "Configuration carte réseau" \
"MadWifi"	"Démarrer carte wifi(madwifi)" \
"netconfig"	"Démarrer net-setup (Outil Gentoo)" \
"DNS"	"Gestion des DNS" \
"Parefeu" "Gestion du firewall" \
"Retour" "Retour" 2> $TEMP_FILE




if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "MirroirGentoo" )  DefMirror;MenuReseau
     ;;
  "Parefeu" )  MenuFirewall;MenuReseau
     ;;
   "DNS" )  GestionDNS;MenuReseau
     ;;
   "ADSL" ) DefADSL;MenuReseau
     ;;
   "PROXYconf" ) DefProxy;MenuReseau
     ;;
   "InterfaceConf") reseaufilaire;MenuReseau
     ;;
   "MadWifi") reseauMadWifi;MenuReseau
     ;;
   "netconfig") reseauConf;MenuReseau
     ;;
   "Retour" ) MenuConfiguration
     ;;
 esac
elif [ $? -eq 1 ]; then
 MenuConfiguration
fi

}
##############################################################################
#Menu Divers
##############################################################################
function MenuDivers()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Divers " \
--menu "Choix" \
18 60 6 \
"MenuFlash" "Jouer une animation FLASH" \
"Retour" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "MenuFlash" )  AnimGnash;showMainMenu
     ;;
   "Retour") showMainMenu
     ;;
 esac
elif [ $? -eq 1 ]; then
 showMainMenu
fi
return
}
##############################################################################
#OBSOLETE Menu Xdelta
##############################################################################
function MenuXdelta()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Xdelta " \
--menu "Choix" \
18 60 6 \
"PatchCreation" "Création patch" \
"PatchRestaure" "Reconstitution du fichier" \
"Retour" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "PatchCreation" )  PatchCreation
     ;;
   "PatchRestaure" )  PatchRestaure
     ;;
   "Retour") MenuOutils
     ;;
 esac
elif [ $? -eq 1 ]; then
 MenuOutils
fi
return
}
##############################################################################
#OBSOLETE PatchCreation
##############################################################################
function PatchCreation()
{
title=$BACK_TITLE
let maxInput=40
let boxHeight=9
message="Fichier avant Patch : "
showInputBox
FichierAvant=$userInput
message="Fichier Patché : "
showInputBox
FichierApres=$userInput
message="Emplacement du Patch à créer : "
showInputBox
FichierPatch=$userInput
xdelta delta $FichierAvant $FichierApres $FichierPatch
echo -n "Appuyer sur entrée pour continuer : "
read Touche

}
##############################################################################
#OBSOLETE PatchRestaure
##############################################################################
function PatchRestaure()
{
title=$BACK_TITLE
let maxInput=40
let boxHeight=9
message="Où trouver le Patch : "
showInputBox
FichierPatch=$userInput
message="Fichier à Patcher : "
showInputBox
FichierAvant=$userInput
message="Emplacement du fichier à créer : "
showInputBox
FichierApres=$userInput
xdelta patch $FichierPatch $FichierAvant $FichierApres
echo -n "Appuyer sur entrée pour continuer : "
read Touche
}
##############################################################################
#Menu des impressions
##############################################################################
function MenuImpressions()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Configuration des impressions" \
--menu "Choix" \
18 60 6 \
"hpoj" "Imprimantes HP tout en Un" \
"CupsConf" "Configuartion de CUPS (Xorg actif)" \
"Retour" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "hpoj" )  /etc/init.d/cupsd start;hp-probe;/etc/init.d/hplip start;MenuImpressions
     ;;
   "CupsConf" ) /etc/init.d/cupsd start;firefox http://localhost:631;MenuImpressions
     ;;
   "Retour") MenuConfiguration
     ;;
 esac
elif [ $? -eq 1 ]; then
 MenuConfiguration
fi
}
##############################################################################
#Menu Boot
##############################################################################
function MenuReparation()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Gestionnaire de boot" \
--menu "Choix" \
18 60 6 \
"InstallGRUB" "Installer GRUB" \
"InstallLILO" "Installer LILO" \
"Retour" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "InstallGRUB" )  installGRUB;MenuReparation
     ;;
   "InstallLILO" ) installLILO;MenuReparation
     ;;
   "Retour") showMainMenu
     ;;
 esac
elif [ $? -eq 1 ]; then
 showMainMenu
fi
}
##############################################################################
#Création d'un LiveUSB
##############################################################################
function CreateUSB()
{
if [ $LiveCD == 1 ]; then
	SelChoixPartition
	PartDD=$PartDDChoix
	BLOCK=${PartDDChoix:0:8}
	PART=${PartDDChoix:8:1}
	#Indiquer l'image iso que vous avez téléchargé
	ISO=LiveCD-version.iso
	MBR=/usr/lib/syslinux/mbr.bin

	ISOMNT=$CDROM_MOUNT_POINT
	USBMNT=/mnt/usb

	echo "==> Création du système de fichier ${BLOCK}${PART}..."
	umount $BLOCK$PART
	mkdosfs -F 32 $BLOCK$PART

	echo "==> Installaion du MBR sur ${BLOCK}..."
	dd if=$MBR of=$BLOCK


	echo "==> Montage de la clé ${BLOCK}${PART} sur ${USBMNT}..."
	if [ ! -d $USBMNT ]; then
	    mkdir $USBMNT
	fi
	mount -t vfat $BLOCK$PART $USBMNT

	echo "==> Copie des fichiers de ${ISOMNT} sur ${USBMNT}..."
	cp -r /mnt/cdrom/* $USBMNT/
	mv $USBMNT/isolinux/* $USBMNT/
	mv $USBMNT/isolinux.cfg $USBMNT/syslinux.cfg
	rm -rf $USBMNT/isolinux*
	mv $USBMNT/memtest86 $USBMNT/memtest

	echo "==> Ajustement des parmètres de boot..."
	sed -i \
    -e "s:cdroot:cdroot rootdelay=10 docache:" \
    -e "s:kernel memtest86:kernel memtest:" \
	$USBMNT/syslinux.cfg

	echo "==> Démontage ${ISOMNT}..."
	umount /mnt/cdrom

	echo "==> Démontage ${USBMNT}..."
	umount $USBMNT

	echo "==> Installation du chargeur ${BLOCK}${PART}..."
	syslinux $BLOCK$PART
	echo -n "Le LiveUSB est prêt appuyer sur entrée pour continuer : "
	read Touche

else
   title="Warning"
   let boxHeight=7
   message="Le LiveCd FrogDev n'a pas été trouvé"
   showMessageBox
fi
return
}
##############################################################################
#Aide
##############################################################################
function aide()
{

title="Aide: "
message="Ce mini centre de contrôle permet d'installer Gentoo facilement et de configurer un système.\
 La majorité des scripts ne nécéssite pas Xorg. Pour plus de renseignement, consulter la FAQ."
showMessageBox
return
}
##############################################################################
#Mise à jour
##############################################################################
function MajSys()
{
if [ $LiveCD == 0 ]; then
	emerge sync
	fixpackages
	emerge --newuse -uDa world
	etc-update
else
	message="Une mise à jour ne peux s'effectuer que sur un LiveCD Installé"
	showMessageBox
fi

}

##############################################################################
#Choix systeme de fichier
##############################################################################
function showSysFile()
{

dialog --backtitle "$BACK_TITLE" \
--title "Systeme de fichier disponible" \
--menu "Selection :" \
18 60 6 \
"reiserfs" "Reiser fs" \
"reiser4" "Reiser 4 NON CONSEILLE" \
"ext3" "ext3" \
"ext2" "ext2" \
"xfs" "xfs" \
"jfs"  "jfs"  2> $TEMP_FILE

if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE
 SysFichier=$installMethod

elif [ $? -eq 1 ]; then
 SysFichier="ext3"
 #Il faut un systeme de fichiers par defaut ext3!!	
fi

echo $SysFichier choisi
}
##############################################################################
#Choix profil
##############################################################################
function showProfil()
{
dialog --backtitle "$BACK_TITLE" \
--title "Choix du profile pour grub" \
--menu "Selection :" \
18 60 6 \
"0" "defaut" \
"1" "verbose" \
"2" "nofb" \
"3" "noacpi"  \
"4" "Lancement mode console"  2> $TEMP_FILE

if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE
 profil=$installMethod

elif [ $? -eq 1 ]; then
 profil="0"	
fi

echo $profil choisi
return
}
##############################################################################
#Installation GRUB
##############################################################################
function installGRUB()
{
if [ "$LiveCD" == 1 ]; then
	echo "Réparation GRUB" > $LOG_FILE
	RepInstall="/mnt/gentoo"
	dialog --backtitle "$BACK_TITLE" \
	--title "Installation" \
	--yesno "Cela va installer GRUB sur le mbr.\
  	Désirez-vous continuer ? " \
	16 70
	if [ $? -eq 1 ]; then
		#On quitte
		return
	fi
  umount $RepInstall/boot > /dev/null 2>&1
  umount $RepInstall > /dev/null 2>&1
  title="Choix de la partition Root"
  message="Sélectionner la partition root."
  SelChoixPartition
  PartDD=$PartDDChoix
  if [ "$PartDD" == "" ]; then 
	 #On retourne au debut!!
	 title="Erreur"
	 message="Il faut une partition."
	 echo "Aucune partition choisie" >> $LOG_FILE
	 showMessageBox
	 return
  fi
  umount $PartDD
  mount $PartDD $RepInstall
  LigneMtab=""
  #traitement de LigneMtab
  LigneMtab=$(grep $RepInstall /etc/mtab)
  if [ "$LigneMtab" == "" ]; then 
	 #il y a pb
	 title="Erreur"
	 message="Aucune partition root trouvée pour $PartDD ."
	 echo "Pas de partition Root " >> $LOG_FILE
	 showMessageBox
	 return
  fi

  #partition de boot
  title="Choix de la partition boot"
  message="Sélectionner la partition de boot. Si c'est la même que root ne rien choisir"
  SelChoixPartition
  PartDDBoot=$PartDDChoix
  if [ "$PartDDBoot" != "" ]; then 
	 umount $PartDDBoot
	 mount $PartDDBoot $RepInstall/boot
	 LigneMtab=""
	 #traitement de LigneMtab
	 LigneMtab=$(grep $RepInstall/boot /etc/mtab)
	 if [ "$LigneMtab" == "" ]; then 
		#il y a pb
		title="Erreur"
		message="Aucune partition boot trouvée pour $PartDDBoot ."
		echo "Pas de partition boot " >> $LOG_FILE
		showMessageBox
		return
	 fi
  fi


  #swap pour suspend2
  title="Choix de la partition Swap"
  message="Sélectionner la partition Swap pour la prise en charge de suspend2"
  SelChoixPartition
  SwapMont=$PartDDChoix
  echo "Partion swap : $SwapMont " >> $LOG_FILE

  disk=${LigneMtab:0:9}
  mkdir -p $RepInstall/proc
  mount -t proc none $RepInstall/proc
  mkdir -p $RepInstall/dev
  mount -o bind /dev $RepInstall/dev
  mkdir -p $RepInstall/tmp
  rm -rf $RepInstall/boot/grub
  mkdir -p $RepInstall/boot/grub	    
  cp -v /boot/grub/gentoo.xpm.gz $RepInstall/boot/grub/gentoo.xpm.gz
  cp -v /boot/grub/splash.xpm.gz $RepInstall/boot/grub/splash.xpm.gz
  cp -vpf /boot/grub/menu.lst.dd $RepInstall/boot/grub/grub.conf
  chroot $RepInstall ln -s /boot/grub/grub.conf  /boot/grub/menu.lst
  diskGrub=""   
  OptionGrub=""
  case $disk in
                   "/dev/hda1" ) diskGrub='(hd0,0)'
                    ;;
                   "/dev/hda2" ) diskGrub='(hd0,1)'
                    ;;
                   "/dev/hda3" ) diskGrub='(hd0,2)'
                    ;;
                   "/dev/hda4" ) diskGrub='(hd0,3)'
                    ;;
                   "/dev/hda5" ) diskGrub='(hd0,4)'
                    ;;
                   "/dev/hda6" ) diskGrub='(hd0,5)'
                    ;;
                   "/dev/hda7" ) diskGrub='(hd0,6)'
                    ;;
                   "/dev/hda8" ) diskGrub='(hd0,7)'
                    ;;
                   "/dev/hdb1" ) diskGrub='(hd1,0)'
                   ;;
                   "/dev/hdb2" ) diskGrub='(hd1,1)'
                    ;;
                   "/dev/hdb3" ) diskGrub='(hd1,2)'
                    ;;
                   "/dev/hdb4" ) diskGrub='(hd1,3)'
                   ;;
                   "/dev/hdb5" ) diskGrub='(hd1,4)'
                    ;;
                   "/dev/hdb6" ) diskGrub='(hd1,5)'
                   ;;
                   "/dev/hdb7" ) diskGrub='(hd1,6)'
                    ;;
                   "/dev/hdb8" ) diskGrub='(hd1,7)'
                    ;;
                   "/dev/hdc1" ) diskGrub='(hd2,0)'
                    ;;
                   "/dev/hdc2" ) diskGrub='(hd2,1)'
                    ;;
                   "/dev/hdc3" ) diskGrub='(hd2,2)'
                    ;;
                   "/dev/hdc4" ) diskGrub='(hd2,3)'
                    ;;
                   "/dev/hdc5" ) diskGrub='(hd2,4)'
                    ;;
                   "/dev/hdc6" ) diskGrub='(hd2,5)'
                    ;;                           
                   "/dev/hdc7" ) diskGrub='(hd2,6)'
                    ;;
                   "/dev/hdc8" ) diskGrub='(hd2,7)'
                    ;;
                   "/dev/hdd1" ) diskGrub='(hd3,0)'
                    ;;
                   "/dev/hdd2" ) diskGrub='(hd3,1)'
                    ;;
                   "/dev/hdd3" ) diskGrub='(hd3,2)'
                    ;;
                   "/dev/hdd4" ) diskGrub='(hd3,3)'
                    ;;
                   "/dev/hdd5" ) diskGrub='(hd3,4)'
                    ;;
                   "/dev/hdd6" ) diskGrub='(hd3,5)'
                    ;;
                   "/dev/hdd7" ) diskGrub='(hd3,6)'
                    ;;
                   "/dev/hdd8" ) diskGrub='(hd3,7)'
                    ;;
		               "/dev/sda1" ) diskGrub='(hd0,0)'
                    OptionGrub="doscsi"
                    ;;
                    * )
                    title="Erreur"
                    message="La partition racine n'a pas été trouvé\n\n\
                    Vous devez éditer menu.lst manuellement"
                    let boxHeight=7
                    showMessageBox
                    diskGrub="erreur"

              esac
  if [ "$diskGrub" == "erreur" ]; then
	 nano $RepInstall/boot/grub/grub.conf
	 echo "Pas trouve de partition racine pour Grub " >> $LOG_FILE
  else
	 showProfil
	 echo "profil de demarrage selectionne" >> $LOG_FILE
	 #selection du profil par defaut dans grub
	 sed -i "s:default 0:default $profil:" $RepInstall/boot/grub/grub.conf
	 #modification menu.lst   
   	 sed -i 's:(cd):'$diskGrub':' $RepInstall/boot/grub/grub.conf
	 sed -i 's:cdroot:'real_root=$PartDD':' $RepInstall/boot/grub/grub.conf
	 sed -i 's:looptype=squashfs:'':' $RepInstall/boot/grub/grub.conf
	 sed -i "s:loop=/livecd.squashfs:resume2=swap\:$SwapMont $OptionGrub:" $RepInstall/boot/grub/grub.conf
	
	 #partition de boot ?
	 if [ "$PartDDBoot" != "" ]; then 
		sed -i 's:/boot:'':' $RepInstall/boot/grub/grub.conf
	 fi
	 echo "menu.lst mis a jour " >> $LOG_FILE
   	 #fin modification menu.lst 
  fi	
  
  #mbrDD=${LigneMtab:0:9}
  #grep $mbrDD /etc/mtab > $RepInstall/etc/mtab

  #15/10/2007 pour une raison que j'ignore la copie ne fonctionne pas alors je crée un lien
  chroot $RepInstall rm /etc/mtab
  chroot $RepInstall ln -s /proc/mounts /etc/mtab	
  #cp -vf $RepInstall/proc/mounts $RepInstall/etc/mtab
  

  if [ "$PartDDBoot" != "" ]; then
   	 #utilisation du script de arch pour l'installation. J'ai rencontré des problèmes avec celui de Gentoo
	 chroot $RepInstall install-grub ${LigneMtab:0:8} $PartDDBoot
  else 
	 chroot $RepInstall grub-install --no-floppy ${LigneMtab:0:8}
  fi
  umount $RepInstall/proc > /dev/null 2>&1
  umount $RepInstall/dev > /dev/null 2>&1
  umount $Repinstall/boot > /dev/null 2>&1
  umount $RepInstall > /dev/null 2>&1
  echo -n "Installation terminée. Appuyer sur entrée pour continuer : "
  #echo "$RepInstall/boot/grub/grub.conf"
  read Touche
else
	let boxHeight=7
	message="Vous devez démarrer sur le LiveCD pour installer GRUB."
	showMessageBox
	return
fi
return
}
##############################################################################
#installation LILO
##############################################################################
function installLILO()
{
if [ "$LiveCD" == 1 ]; then
	RepInstall="/mnt/gentoo"
	dialog --backtitle "$BACK_TITLE" \
	--title "Installation" \
	--yesno "Cela va installer LILO.\
	Désirez-vous continuer ? " \
		16 70
	if [ $? -eq 1 ]; then
		#On quitte
		return
	fi

	umount $RepInstall/boot > /dev/null 2>&1
	umount $RepInstall > /dev/null 2>&1

	title="Choix de la partition Root"
	message="Sélectionner la partition Root."
	SelChoixPartition
	PartDD=$PartDDChoix
	if [ "$PartDD" == "" ]; then 
		#On retourne au debut!!
		title="Erreur"
		message="Il faut une partition."
		echo "Aucune partition choisie" >> $LOG_FILE
		showMessageBox
		return
	fi
	mount $PartDD $RepInstall
	LigneMtab=""
	#traitement de LigneMtab
	LigneMtab=$(grep $RepInstall /etc/mtab)
	if [ "$LigneMtab" == "" ]; then 
		#il y a pb
		title="Erreur"
		message="Aucune partition root trouvée pour $PartDD ."
		echo "Pas de partition Root " >> $LOG_FILE
		showMessageBox
		return
	fi

	#partition de boot
	title="Choix de la partition boot"
	message="Sélectionner la partition de boot. Si c'est la même que root ne rien choisir"
	SelChoixPartition
	PartDDBoot=$PartDDChoix
	if [ "$PartDDBoot" != "" ]; then 
		mount $PartDDBoot $RepInstall/boot
		LigneMtab=""
		#traitement de LigneMtab
		LigneMtab=$(grep $RepInstall/boot /etc/mtab)
		if [ "$LigneMtab" == "" ]; then 
			#il y a pb
			title="Erreur"
			message="Aucune partition boot trouvée pour $PartDDBoot ."
			echo "Pas de partition boot " >> $LOG_FILE
			showMessageBox
			return
		fi
	fi

	title="Choix de la partition Swap"
	message="Sélectionner la partition Swap pour la prise en charge de suspend2"
	SelChoixPartition
	SwapMont=$PartDDChoix
	echo "Partion swap : $SwapMont " >> $LOG_FILE
	

	#Mise à jour de lilo.conf	
	rm $RepInstall/etc/lilo.conf
	cp /etc/lilo.conf $RepInstall/etc/lilo.conf
	sed -i "s:boot = (cd):boot = ${LigneMtab:0:8}:" $RepInstall/etc/lilo.conf
	sed -i "s:real_root=(cd):real_root=$PartDD:" $RepInstall/etc/lilo.conf
	sed -i "s:resume2=swap\:(cd):resume2=swap\:$SwapMont:" $RepInstall/etc/lilo.conf


	#finalisation installation
	mkdir -p $RepInstall/dev
	mkdir -p $RepInstall/proc
	mount -o bind /dev $RepInstall/dev
	mount -t proc none $RepInstall/proc
	mkdir -p $RepInstall/tmp
	chroot $RepInstall /sbin/lilo
	umount $RepInstall/proc > /dev/null 2>&1
	umount $RepInstall/dev > /dev/null 2>&1
	umount $Repinstall/boot > /dev/null 2>&1
	umount $RepInstall > /dev/null 2>&1
	echo -n "Appuyer sur entrée pour continuer : "
	read Touche
else
	let boxHeight=7
	message="Vous devez démarrer sur le LiveCD pour installer LILO."
	showMessageBox
	return
fi
return
}
##############################################################################
#L'installation
##############################################################################
function installOS()
{
let boxHeight=7
if [ $LiveCD == 1 ]; then
	echo "Installation de frogdev" > $LOG_FILE
	RepInstall="/mnt/gentoo"
	dialog --backtitle "$BACK_TITLE" \
	--title "Installation" \
	--yesno "Cela va installer Gentoo sur votre ordinateur.\
  	Désirez-vous continuer ? \n \
  	Pensez à créer les partitions si besoin dans le menu configuration."\
	16 70
	if [ $? -eq 1 ]; then
		#On quitte
		title="Installation"
		let boxHeight=7
		message="Reportez-vous à la FAQ pour une installation manuelle."
		showMessageBox
		return
	fi
	
	# choix de la la partition
	PartDD=""
	umount $RepInstall

	title="Choix de la partition Root"
	message="Sélectionner la partition Root. Le minimum requis est 4Go"
	SelChoixPartition
	PartDD=$PartDDChoix
	if [ "${PartDD}" == "" ]; then 
		#On retourne au debut!!
		title="Erreur"
		message="Il faut une partition."
		echo "Aucune partition choisie" >> $LOG_FILE
		showMessageBox
		return
	fi

	showSysFile
	TypePartition=$SysFichier
	echo "Systeme de fichier : $TypePartition " >> $LOG_FILE
	diskRoot=$PartDD

	title="Choix de la partition Swap"
	message="Sélectionner la partition Swap."
	SelChoixPartition
	SwapMont=$PartDDChoix
	echo "Partion swap : $SwapMont " >> $LOG_FILE
	# Formater la partition oui/non 
	dialog --backtitle "$BACK_TITLE" \
	--title "Installation LiveCd" \
	--yesno "\n Désirez-vous formater $PartDD ?" \
	16 70
	if [ $? -eq 1 ]; then
		echo "Pas de formatage "
	else
		umount $PartDD
		# si xfs ajout option -f car si partition existante ne formate pas
		if [ "${TypePartition}" == "xfs" ]; then
			mkfs.$TypePartition -f $PartDD
		else
			mkfs.$TypePartition $PartDD
		fi
		echo "Formatage de $PartDD " >> $LOG_FILE
		sleep 5
	fi
	mount -t $TypePartition $PartDD $RepInstall
	LigneMtab=""
	#traitement de LigneMtab
	LigneMtab=$(grep $RepInstall /etc/mtab)
	if [ "${LigneMtab}" == "" ]; then 
		#il y a pb
		title="Erreur"
		message="Aucune partition root trouvée pour $PartDD ."
		echo "Pas de partition Root " >> $LOG_FILE
		showMessageBox
		return
	fi
        
	executeOK="f"
	if [ "${SwapMont}" != "" ] ; then
		# Formater la partition  swap oui/non
		dialog --backtitle "$BACK_TITLE" \
		--title "Installation LiveCd" \
		--yesno "\n Désirez-vous formater et activer votre partition swap ?" \
		16 70
		if [ $? -eq 1 ]; then
		  	echo "Pas de formatage "
		else
			swapoff -a
			mkswap $SwapMont  
			swapon $SwapMont 
			echo "Activation et formatage de la partition swap " >> $LOG_FILE			
			sleep 5
		fi
	fi
   #lance le menu des points de montage facultatif et affiche le rappel des partitions
   pg_MenuMontPoint
   pg_RappelPointMont
   if [ -d $RepInstall ]; then
          #creation du point de montage pour le fichier squash
          mkdir -p $sourceSquash >> $LOG_FILE
          mount $FileSquash $sourceSquash -t squashfs -o loop 2>> $LOG_FILE
          dialog --backtitle "$BACK_TITLE" \
          --title "Installation LiveCd" \
          --yesno "\n FrogDev va être installé  " \
          16 70

          if [ $? -eq 1 ]; then
            exit  2>> $LOG_FILE #/dev/null
          fi
	        title="Installation"
	        message="Copie des fichiers en cours..."
          showInfoBox
	        echo "Debut de la copie des fichiers " >> $LOG_FILE
          cp -Rvap $sourceSquash/* $RepInstall  && executeOK="t"
          cp -vp /etc/resolv.conf $RepInstall/etc/resolv.conf
	        #40987
          cp -Ra /dev $RepInstall
	        mount -o bind /dev $RepInstall/dev
	        mkdir $RepInstall/proc
	        mount -t proc none $RepInstall/proc

        	echo "Copie des fichiers terminées " >> $LOG_FILE
   fi

  if [ $executeOK = "t" ]; then
         
    cd $RepInstall
    mkdir dev
    mkdir mnt
    mkdir sys
    mkdir -p tmp
	
    cp $FileTar/vardb.tar.bz2 vardb.tar.bz2
    tar -xjpf vardb.tar.bz2 
    rm vardb.tar.bz2
    echo "vardb recupere " >> $LOG_FILE

    cp $FileTar/varcache.tar.bz2 varcache.tar.bz2
    tar -xjpf varcache.tar.bz2
    rm varcache.tar.bz2
    echo "var cache recupere " >> $LOG_FILE


    echo "" > $RepInstall/etc/portage/profile/package.provided
    #permet de reinitialiser les logiciels à installer	
		
   	

    #maintenant on peut pointer directement sur les fichiers

    #15/10/2007 utilisateur plus actif
    #sup utilisateur froggy mon utilisateur de test
    #chroot $RepInstall userdel -r froggy 2> /dev/null
	  #echo "User froggy supprime " >> $LOG_FILE
	  
    #proposer de changer le mot de passe de root
    setRootPassword
	  echo "Definition mot de passe root " >> $LOG_FILE

    #Creation utilisateur
    addUserAccount
    echo "Ajout d'un utilisateur " >> $LOG_FILE


    #devient diskRoot
    #disk=${LigneMtab:0:9}
	 
    #Mettre a  jour fstab
    echo "Mise à jour de /etc/fstab " >> $LOG_FILE
    mv $RepInstall/etc/fstab $RepInstall/etc/fstablive
    #ce fichier pourra servir pour recreer un livecd


   echo "# This file is edited by fstab-sync - see 'man fstab-sync' for details	    ">  $RepInstall/fstab 
   echo "# /etc/fstab: static file system information.                                  " >> $RepInstall/etc/fstab
   echo "# $Header: /home/cvsroot/gentoo-src/rc-scripts/etc/fstab,v 1.14 2003/10/1320 :03:38 azarah Exp $  ">> $RepInstall/etc/fstab
   echo "#    									     " >> $RepInstall/etc/fstab
   echo "# noatime turns off atimes for increased performance (atimes normally aren't   " >> $RepInstall/etc/fstab
   echo "# needed; notail increases performance of ReiserFS (at the expense ofs torage  " >> $RepInstall/etc/fstab
   echo "# efficiency).  It's safe to drop the noatime options if you want and to       " >> $RepInstall/etc/fstab
   echo "# switch between notail and tail freely.                                       " >> $RepInstall/etc/fstab
   echo "# <fs>             <mountpoint>    <type>     <opts> <dump/pass>               " >> $RepInstall/etc/fstab
   echo "# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.     " >> $RepInstall/etc/fstab
   echo "#/dev/BOOT      /boot      ext2      noauto,noatime      1 1                   " >> $RepInstall/etc/fstab
   echo "#/dev/cdroms/cdrom0   /mnt/cdrom   iso9660      noauto,ro      0 0             " >> $RepInstall/etc/fstab
   echo "/dev/fd0      /mnt/floppy   auto      noauto         0 0                       " >> $RepInstall/etc/fstab
   echo "# NOTE: The next line is critical for boot!                                    " >> $RepInstall/etc/fstab
   echo "none         /proc      proc      defaults      0 0                            " >> $RepInstall/etc/fstab
   echo "# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for              " >> $RepInstall/etc/fstab
   echo "# POSIX shared memory (shm_open, shm_unlink).                                  " >> $RepInstall/etc/fstab
   echo "# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will              " >> $RepInstall/etc/fstab
   echo "#  use almost no memory if not populated with files)                           " >> $RepInstall/etc/fstab
   echo "# Adding the following line to /etc/fstab should take care of this:            " >> $RepInstall/etc/fstab
   echo "none         /dev/shm   tmpfs      defaults      0 0                           " >> $RepInstall/etc/fstab

   #Mise a jour partition Root
   echo "$diskRoot               /                $TypePartition     defaults        1 1    " >> $RepInstall/etc/fstab
   if [ $SwapMont != '' ] ; then
        #Mise a jour du swap avec SwapPartitionLigne
       	echo "$SwapMont            none                    swap    sw           0 0    ">> $RepInstall/etc/fstab
   fi
   #klik
   echo "/tmp/app/1/image /tmp/app/1 cramfs,iso9660 user,noauto,ro,loop,exec 0 0">> $RepInstall/etc/fstab
   echo "/tmp/app/2/image /tmp/app/2 cramfs,iso9660 user,noauto,ro,loop,exec 0 0">> $RepInstall/etc/fstab
   echo "/tmp/app/3/image /tmp/app/3 cramfs,iso9660 user,noauto,ro,loop,exec 0 0">> $RepInstall/etc/fstab
   echo "/tmp/app/4/image /tmp/app/4 cramfs,iso9660 user,noauto,ro,loop,exec 0 0">> $RepInstall/etc/fstab
   echo "/tmp/app/5/image /tmp/app/5 cramfs,iso9660 user,noauto,ro,loop,exec 0 0">> $RepInstall/etc/fstab
   echo "/tmp/app/6/image /tmp/app/6 cramfs,iso9660 user,noauto,ro,loop,exec 0 0">> $RepInstall/etc/fstab
   echo "/tmp/app/7/image /tmp/app/7 cramfs,iso9660 user,noauto,ro,loop,exec 0 0">> $RepInstall/etc/fstab
	
   #met en arch x86
   cp $FileTar/paquets.sh "$RepInstall"/root/paquets.sh
   chroot "$RepInstall" chmod +x /root/paquets.sh
   chroot "$RepInstall" /root/paquets.sh
   chroot "$RepInstall" rm /root/paquets.sh
   echo "Marque les paquets installés " >> $LOG_FILE
   #Suite à des retours du forum ajout de la possibilité de désactiver certaines fonctions 
   pg_PostInstall
   #Si d'autres opérations doivent être ajoutés le faire dans pg_PostInstall
   #Quitter l'installeur
   message="Gentoo a été copié sur votre Disque dur \n\n\
   L'historique de l'installation est disponible dans $LOG_FILE\n\n\
   N'oubliez pas de synchroniser votre arbre de portage : \n\n\
   Pour installer un gestionnaire de boot rendez-vous dans le menu gestionnaire de boot."
   umount "$RepInstall"/proc
   umount "$RepInstall"/dev
   umount "$RepInstall"
   echo "Installation terminee. Pour installer un gestionnaire de boot rendez-vous dans le menu gestionnaire de boot." >> $LOG_FILE
   showMessageBox
   return
       
  else
    eerror "Un problème est survenu durant la copie des fichiers :-(,consulter $LOG_FILE "
    echo "Probleme de copie :-(" >> $LOG_FILE
    #showMessageBox
    echo -n "Appuyer sur entrée pour continuer : "
    read Touche
    return
  fi
else
   title="Warning"
   let boxHeight=7
   message="Le LiveCd FrogDev n'a pas été trouvé"
   showMessageBox
   return
fi
return
}

##############################################################################
# creation liveCD Grub est obligatoire ainsi que les outils squashfs
##############################################################################
function CreateLive()
{
let boxHeight=7
if [ $LiveCD == 1 ]; then
	
	title="Choix de la partition"
	message="Sélectionner la partition ou vous avez installé frogdev. Lors de la création d'un LiveCD le répertoire home n'est pas sauvegardé :"
	SelChoixPartition
	PartDD=$PartDDChoix

	if [ $PartDD == "" ]; then 
		#on quitte
		title="Erreur"
		message="Aucun emplacement choisi."
		echo "Aucune partition pour la création du LiveCD" >> $LOG_FILE
		showMessageBox
		return
	fi
	umount $RepInstall
	mount $PartDD $RepInstall
	#emplacement ou est installé frogdev
	livecd_root=$RepInstall

	#emplacement fichier temporaire
	livecd_target="$livecd_root"/root/target
	livecd_source="$livecd_root"/

	#ou creer le .iso
	livecd_output="$livecd_root/root/live/livecd.iso"
	mkdir "$livecd_root"/root/target
	mkdir /root/live

	# Exclusion des fichiers et dossiers :
	exclude_dir="/root/live /root/target /usr/portage2 /usr/src /mnt/initrd /usr/share/doc /usr/doc/usr/share/man /usr/man /tmp2 /tmp3 /lock2 /usr/share/bootsplash /usr/share/bmp/Skins /usr/share/gtk-doc /usr/share/lilo /usr/share/pwlib /home2 /etc/make.profile /usr/lib/openoffice/help /lost+found /usr/portage2 /home2 /etc/splash2 /var/log2 /mnt /media /proc /selinux /sys  /lost+found /var/cache/samba /var/cache/setup-tool-backends /var/db /var/db/pkg /var/cache/edb/dep/usr/local /var/cache/edb/dep/usr/portage /dev /etc/gconf /usr/LocalRoot/temp /root/.gimp-2.2 /usr/local/portage2 /usr/share/genkernel "


	# Delete old ISO image
	rm  -f "$livecd_output"

	# Remove old target directory
	rm -rf "$livecd_target"
	mkdir  "$livecd_target"
	mkdir  "$livecd_target"/files

	mv "$livecd_source"/var/log "$livecd_source"/var/log2
	mv "$livecd_source"/usr/local/portage "$livecd_source"/usr/local/portage2
	mv "$livecd_source"/usr/portage "$livecd_source"/usr/portage2
	mv "$livecd_source"/home "$livecd_source"/home2
	mv "$livecd_source"/tmp "$livecd_source"/tmp2
	mv "$livecd_source"/var/tmp "$livecd_source"/tmp3
	mv "$livecd_source"/var/lock "$livecd_source"/lock2
	mv "$livecd_source"/etc/X11/xorg.conf "$livecd_source"/etc/X11/xorg.confdd


	mkdir "$livecd_source"/home
	ln -sf /tmp "$livecd_source"/var/tmp
	mkdir "$livecd_source"/var/log
	mkdir "$livecd_source"/var/lock
	mv "$livecd_source"/etc/fstab "$livecd_source"/etc/fstabdd

	# récuperation du fstab du LiveCD
	cp /etc/fstab "$livecd_source"/etc/fstab
	
	#recupération config GRUB du LiveCD
	cp -a  /boot "$livecd_target"
	

	rm -f  "$livecd_source"/etc/mtab
	touch  "$livecd_source"/etc/mtab
	

	echo -e "\nCreation squashfs...\n"

	for i in $exclude_dir; do
       		exclude_sqfs="$exclude_sqfs $livecd_source$i"
	done

	mksquashfs "$livecd_source" "$livecd_target"/livecd.squashfs -e $exclude_sqfs

	echo -e "\nCreation image ISO dans $livecd_root/root/live ...\n"

	cd $livecd_target/
	mkisofs -J -R -l -V "Frogdev" -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4  -c livecd -o $livecd_output $livecd_target/
	
	#remet les dossiers en place
	rm -rf "$livecd_source"/home
	rm -rf "$livecd_source"/tmp
	rm -rf "$livecd_source"/var/tmp
	rm -rf "$livecd_source"/var/log
	rm -rf "$livecd_source"/var/lock
	mv "$livecd_source"/tmp2 "$livecd_source"/tmp
	mv "$livecd_source"/tmp3 "$livecd_source"/var/tmp
	mv "$livecd_source"/lock2 "$livecd_source"/var/lock
	mv "$livecd_source"/home2 "$livecd_source"/home
	rm "$livecd_source"/etc/fstab 
	mv "$livecd_source"/etc/fstabdd "$livecd_source"/etc/fstab
	mv "$livecd_source"/etc/X11/xorg.confdd "$livecd_source"/etc/X11/xorg.conf
	mv "$livecd_source"/var/log2 "$livecd_source"/var/log

	rm -rf "$livecd_source"/usr/local/portage
	rm -rf "$livecd_source"/usr/portage
	mv "$livecd_source"/usr/local/portage2 "$livecd_source"/usr/local/portage
	mv "$livecd_source"/usr/portage2 "$livecd_source"/usr/portage
	
	rm -Rf "$livecd_root"/root/target
	title="Frogdev"
	message="Image iso créée dans $livecd_root/root/live"
	showMessageBox
else
   title="Warning"
   let boxHeight=7
   message="Le LiveCd FrogDev n'a pas été trouvé. Pour créer un nouveau LiveCD, il faut installer frogdev sur une partition. Puis, redémarrer sur le LiveCD vous pouvez lancer la création de votre image."
   showMessageBox
   return
fi
return
}

##############################################################################
#OBSOLETE creation liveCD Grub est obligatoire
##############################################################################
function CreateLiveOLD()
{

dialog --backtitle "$BACK_TITLE" \
--title "Creation LiveCd" \
--yesno "\nFrogDev ou  Gentoo doit être installé et monté sur $RepInstall, grub est obligatoire et seul le répertoire root est sauvé. Voulez-vous continuer ?" \
16 70

if [ $? -eq 1 ]; then
return
fi

#emplacement ou est installer frogdev
livecd_root=$RepInstall

#emplacement fichier temporaire
livecd_target="/root/target"
livecd_source="$livecd_root/"

#ou creer le .iso
livecd_output="/root/live/livecd.iso"
mkdir /root/target
mkdir /root/live

# Excluded directories from squashfs:
exclude_dir="/usr/portage2 /usr/src /mnt/initrd /usr/share/doc /usr/doc/usr/share/man /usr/man /tmp2 /tmp3 /lock2 /usr/share/bootsplash /usr/share/bmp/Skins /usr/share/gtk-doc /usr/share/lilo /usr/share/pwlib /home2 /etc/make.profile /usr/lib/openoffice/help /lost+found /usr/portage2 /home2 /etc/splash2 /var/log2 /mnt /media /proc /selinux /sys  /lost+found /var/cache/samba /var/cache/setup-tool-backends /var/db /var/db/pkg /var/cache/edb/dep/usr/local /var/cache/edb/dep/usr/portage /dev /etc/gconf /usr/LocalRoot/temp /root/.gimp-2.2 /usr/local/portage2 /usr/share/genkernel"

# unmount proc: /usr/lib/gcc-lib /root/.nautilus /root/.gconf /root/.gconfd
/root/.gnome root/.gnome2 /root/.metacity/
umount $livecd_source/proc > /dev/null 2>&1

# Delete old ISO image
rm  -f "$livecd_output"

# Remove old target directory
rm -rf "$livecd_target"
mkdir  "$livecd_target"
mkdir  "$livecd_target"/files

mv "$livecd_source"/var/log "$livecd_source"/var/log2
mv "$livecd_source"/usr/local/portage "$livecd_source"/usr/local/portage2
mv "$livecd_source"/usr/portage "$livecd_source"/usr/portage2
mv "$livecd_source"/home "$livecd_source"/home2
mv "$livecd_source"/tmp "$livecd_source"/tmp2
mv "$livecd_source"/var/tmp "$livecd_source"/tmp3
mv "$livecd_source"/var/lock "$livecd_source"/lock2
mv "$livecd_source"/etc/X11/xorg.conf "$livecd_source"/etc/X11/xorg.confdd


mkdir "$livecd_source"/home
ln -sf /tmp "$livecd_source"/var/tmp
mkdir "$livecd_source"/var/log
mkdir "$livecd_source"/var/lock
mv "$livecd_source"/etc/fstab "$livecd_source"/etc/fstabdd
mv "$livecd_source"/etc/fstablive "$livecd_source"/etc/fstab
cp -a  "$livecd_source"/boot "$livecd_target"
rm -f  "$livecd_source"/etc/mtab
touch  "$livecd_source"/etc/mtab

rm "$livecd_source"/root/Desktop/hd*

echo -e "\nCreation squashfs...\n"

for i in $exclude_dir; do
       exclude_sqfs="$exclude_sqfs $livecd_source$i"
done

mksquashfs "$livecd_source" "$livecd_target"/livecd.squashfs -e $exclude_sqfs


echo -e "\nCreation image ISO dans /root/live ...\n"

cd /
mkisofs -J -R -l -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4-boot-info-table -z -iso-level 4  -c livecd -o $livecd_output $livecd_target/ > /dev/null 2>&1



rm -rf "$livecd_source"/home
rm -rf "$livecd_source"/tmp
rm -rf "$livecd_source"/var/tmp
rm -rf "$livecd_source"/var/log
rm -rf "$livecd_source"/var/lock
mv "$livecd_source"/tmp2 "$livecd_source"/tmp
mv "$livecd_source"/tmp3 "$livecd_source"/var/tmp
mv "$livecd_source"/lock2 "$livecd_source"/var/lock

mv "$livecd_source"/home2 "$livecd_source"/home
mv "$livecd_source"/etc/fstab "$livecd_source"/etc/fstablive
mv "$livecd_source"/etc/fstabdd "$livecd_source"/etc/fstab
mv "$livecd_source"/etc/X11/xorg.confdd "$livecd_source"/etc/X11/xorg.conf
mv "$livecd_source"/var/log2 "$livecd_source"/var/log

rm -rf "$livecd_source"/usr/local/portage
rm -rf "$livecd_source"/usr/portage
mv "$livecd_source"/usr/local/portage2 "$livecd_source"/usr/local/portage
mv "$livecd_source"/usr/portage2 "$livecd_source"/usr/portage

rm -Rf /root/target
message="Image iso créé dans /root/live"
sleep 5
showMessageBox

}

###########################################################
#Suavegarde systeme
###########################################################
function SauvegardeComplete()
{
let maxInput=40
let boxHeight=9
message="Emplacement ou sauvegarder le systeme : \n"
showInputBox
stage4Location=$userInput
#ici on mettra notre stage4
if [ ! $Location ]; then
	return
fi

echo Configuration :
echo Sauvegarde du stage4 dans $stage4Location
echo
echo


# options pour l'archive
tarOptions="--exclude=$(hostname)-stage4.tar.bz2 --exclude=/dev/*--exclude=/proc/* \
--exclude=/sys/* --exclude=/tmp/* --exclude=/usr/portage/* --exclude=/mnt/* --create \
--absolute-names --preserve-permissions --bzip2 --file"

echo Options de tar : $tarOptions

# nom de l'archive
archive=$stage4Location/stage4.tar.bz2

echo Nom du stage 4 : $archive



echo
echo Création de l'archive tar
echo
# Créer l'archive
echo tar ${tarOptions} ${archive} /
tar ${tarOptions} ${archive} /;
echo archive finie

# Décommentez cette ligne si vous voulez découper votre archive tar en
#morceaux de la
# taille d'un CD
# Découpe l'archive tar en morceaux de la taille d'un CD (utiliser :
# "cat ${archive}.* >> ${archive}" pour rejoindre les morceaux entre eux)
#split --bytes=700000000 ${archive} ${archive}.
#echo découpage fini

message="Sauvegarde du système terminée"
showMessageBox
showMainMenu
}

###########################################################
#Restauration systeme
###########################################################
function RestoreSauve()
{

let maxInput=40
let boxHeight=9
message="Repertoire ou se trouve la sauvegarde : \n"
showInputBox
stage4Location=$userInput
if [ ! $stage4Location ]; then
	return
fi
#on suppose que vous avez déjà  partitionné et formaté votre disque dur
#et que vous avez démarré sur votre LiveCD frogdev


#emplacement ou monter les partitions du disque
let maxInput=40
let boxHeight=9
message="Point de montage ou restorer : \n"
showInputBox
mntRootPartition=$userInput
if [ ! $mntRootPartition ]; then
	return
fi
stage4=$stage4Location/stage4.tar.bz2
cd $mntRootPartition
#désarchiver le stage4
echo désarchiver le stage4
tar -xjpf $stage4
sleep 5
#enlever le fichier stage4
rm -rf $stage4


message="Restauration terminée.Vous devrez éditer votre fstab ainsi qu'installer lilo ou grub"
showMessageBox
return
}


##############################################################################
#OBSOLETE Installe enotice si besoin et le lance
##############################################################################
function HistoMsgEmerge()
{
#verifier si enotice est installe
if [ -s /usr/local/sbin/enotice ]; then
 /usr/local/sbin/enotice
else
 cd /root
 wget http://dev.gentoo.org/~eldad/enotice/install-enotice.sh
 chmod +x install-enotice.sh
 ./install-enotice.sh
 rm /root/install-enotice.sh
 HistoMsgEmerge
fi

}
##############################################################################
#Verifie si le cd frogdev est present
##############################################################################
function checkFrogDev()
{
cd /root
if [ -s $FileSquash ]; then
 echo "LiveCD detecte"
 LiveCD=1
else
 echo "LiveCD non trouvé"
fi
sleep 2
}

##############################################################################
#Recherche du runlevel en cours
##############################################################################
function RechRunlevel
{
   local copt=
   local newbootlevel=
   local newsoftlevel=
   if [[ -r /proc/cmdline ]] ; then
       for copt in $(</proc/cmdline) ; do
           case "${copt%=*}" in
               bootlevel)
                   newbootlevel=${copt##*=}
                   ;;
               softlevel)
                   newsoftlevel=${copt##*=}
                   ;;
           esac
       done
   fi
   if [[ -n ${newbootlevel} ]] ; then
       BOOTLEVEL=${newbootlevel}
   fi
   if [[ -n ${newsoftlevel} ]] ; then
       DEFAULTLEVEL=${newsoftlevel}
   fi
   return 0 
}
##############################################################################
#Sauvegarde d'un repertoire personnel pour utiliser un profil lors d'une
#prochaine connexion
##############################################################################
function showChoixSauve()
{
if [ $LiveCD = 1 ]
then
	#quelle partition
	SelChoixPartition
	if [ $PartDDChoix == "" ]; then 
		#On retourne au debut!!
		title="Erreur"
		message="Il faut une partition."
		echo "Aucune partition choisie" >> $LOG_FILE
		showMessageBox
		return
	fi
	#Une fois que la partition est connue 
	#on la monte 
	rm -Rfv /mnt/sauveFrog/sauvegardeFROG
	mkdir /mnt/sauveFrog
	mount $PartDDChoix /mnt/sauveFrog
	LigneMtab=$(grep /mnt/sauveFrog /etc/mtab)
	if [$LigneMtab == ""]; then 
		#il y a pb
		message="Impossible de monter $PartDD ."
		showMessageBox
		return
	fi
	mkdir /mnt/sauveFrog/sauvegardeFROG
	cp -apRv /etc /mnt/sauveFrog/sauvegardeFROG && cp -aRv /root /mnt/sauveFrog/sauvegardeFROG && executeOK="t"
	if [ $executeOK == "t" ];then
		#recopie du runlevel en cours
		RechRunlevel	
		rm /mnt/sauveFrog/sauvegardeFROG/etc/runlevel/restaure/*	
		cp -aRv /etc/runlevels/$DEFAULTLEVEL/*   /mnt/sauveFrog/sauvegardeFROG/etc/runlevels/restaure 
		#sup des service initulés :
		#configuartion auto xorg
		rm /mnt/sauveFrog/sauvegardeFROG/etc/runlevels/restaure/mkxf86config
		#configuration dns
		rm /mnt/sauveFrog/sauvegardeFROG/etc/runlevels/restaure/dns
		#knoppix
		rm /mnt/sauveFrog/sauvegardeFROG/etc/runlevels/restaure/autoconfig
		#ajout du script de lancement de restauration de la config frogdev
		ln -s /mnt/sauveFrog/sauvegardeFROG/etc/runlevels/restaure/froggyrestaure /etc/init.d/froggyrestaure
		message="La configuration à été sauvegardée"
		showMessageBox
	else
		message="Un problème est survenu durrant la copie"
		showMessageBox
	fi
	umount -f /mnt/sauveFrog
else
	message="Le LiveCD n'a pas été trouvé"
	showMessageBox
fi
return
}


##############################################################################
#Choisir un repertoire contenant un repertoire personnel pour un home perso
##############################################################################
function showChoixRep()
{
let boxHeight=7
dialog --backtitle "$BACK_TITLE" \
	--title "Frogdev" \
	--yesno "Cela va restaurer votre repertoire.\
Desirez-vous continuer ? "\
		16 70
	if [ $? -eq 1 ]; then
		#On quitte
		return
	fi
if [ $LiveCD = 1 ]
then
	#quelle partition
	SelChoixPartition
	PartDD=$PartDDChoix
	if [ $PartDD == "" ]; then 
		#On retourne au debut!!
		title="Erreur"
		message="Il faut une partition."
		echo "Aucune partition choisie" >> $LOG_FILE
		showMessageBox
		return
	fi
	#Une fois que la partition est connue 
	#on la monte 
	mkdir /mnt/sauveFrog
	umount $PartDD
	mount $PartDD /mnt/sauveFrog
	#on fait un lien plutot qu'une copie comme cela pas la peine de réenregistrer la configuration
	echo "Mise en place du repertoire"
	rm -Rf /etc
	rm -Rf /root
	ln -sf /mnt/sauveFrog/sauvegardeFROG/etc /etc && \
	ln -sf /mnt/sauveFrog/sauvegardeFROG/root /root && \ 
	CopieOk="t"
	rm /etc/init.d/functions.sh
	rm /etc/init.d/depscan.sh
	cp /sbin/functions.sh /etc/init.d/functions.sh
	cp /sbin/depscan.sh /etc/init.d/depscan.sh
	if [ $CopieOk == "t" ];then
		message="La configuration du répertoire itinérrant est en place.\n\
Dorénavant, toute modification des répertoires /etc et /root est enregistrée sur votre disque dur."
		showMessageBox
	else
		message="Une erreur est survenu redémarrage de l'ordinateur"
		showMessageBox
		shutdown -h now
	fi
	
else
	message="Le LiveCD n'a pas été trouvé"
	showMessageBox
fi
return
}



##############################################################################
#Definir les mirroirs
##############################################################################
function DefMirror()
{
	if grep -q "^GENTOO_MIRRORS" /etc/make.conf; then
		grep -v "^GENTOO_MIRRORS" /etc/make.conf > /etc/make.conf.new
		mv -f /etc/make.conf.new /etc/make.conf
	fi
  mirrorselect -s3 -b10 -o  | grep 'GENTOO_MIRRORS=' >> /etc/make.conf 
}
##############################################################################
#Definir un proxy
##############################################################################
function DefProxy()
{
userInput=""
message="Définir un proxy http si besoin : (i.e. http://proxy.gentoo.org:8080)\n"
showInputBox
if [ $userInput != "" ]; then
	#suppression ancienne valeur
	if grep -q "^http_proxy" /etc/make.conf; then
		grep -v "^http_proxy" /etc/make.conf > /etc/make.conf.new
		mv -f /etc/make.conf.new /etc/make.conf
	fi
	export http_proxy=$userInput
	echo "http_proxy=$userInput"  >> /etc/make.conf 
fi
userInput=""
message="Définir un proxy ftp si besoin : (i.e. ftp://proxy.gentoo.org:8080)\n"
showInputBox
if [ $userInput != "" ]; then
	#suppression ancienne valeur
	if grep -q "^ftp_proxy" /etc/make.conf; then
		grep -v "^ftp_proxy" /etc/make.conf > /etc/make.conf.new
		mv -f /etc/make.conf.new /etc/make.conf
	fi
	export ftp_proxy=$userInput
	echo "ftp_proxy=$userInput"  >> /etc/make.conf 
fi
userInput=""
message="Définir un proxy rsync si besoin : (i.e. proxy.gentoo.org:8080)\n"
showInputBox
if [ $userInput != "" ]; then
	#suppression ancienne valeur
	if grep -q "^RSYNC_PROXY" /etc/make.conf; then
		grep -v "^RSYNC_PROXY" /etc/make.conf > /etc/make.conf.new
		mv -f /etc/make.conf.new /etc/make.conf
	fi
	export RSYNC_PROXY=$userInput
	echo "RSYNC_PROXY=$userInput"  >> /etc/make.conf 
fi
userInput=""
}

##############################################################################
# Parametrage ADSL
##############################################################################
function DefADSL()
{
adsl-setup
adsl-start
}

##############################################################################
# Definir le nom d'hote
##############################################################################

function setHostName()
{

message="Définir le nom de la machine : "
showInputBox
if [ $userInput != "" ]; then
	echo $userInput > /etc/hostname
	mv -f /etc/hosts $mountPoint/etc/hosts.old 
	echo "127.0.0.1    localhost     $userInput" > /etc/hosts
	echo "::1 ip6-localhost ip6-loopback"  >> /etc/hosts
fi


message="Définir le domaine de la machine : (i.e frogdev.info ) "
showInputBox
if [ $userInput != "" ]; then
	echo $userInput > /etc/dnsdomainname
fi

}

##############################################################################
# Definir le fuseau horraire
##############################################################################

function setTimeZone()
{
message="Dans la prochaine fenêtre vous trouverez une liste de différents \
fuseaux horraires disponible.\n\
ATTENTION : La casse est réspectée!"
showMessageBox

# La liste
ls -RX /usr/share/zoneinfo/ > $TEMP_FILE
textBoxFile=$TEMP_FILE
showTextBox
rm -f $TEMP_FILE

let maxInput=40
let boxHeight=9
message="Entrer une Zone (i.e. /US/Eastern pour U.S. Eastern time)\n"
showInputBox
timezone=$userInput

if [ $timezone ]; then

  if [ -s /usr/share/zoneinfo/$timezone ]; then
    message="Définition de $timezone pour fuseau horraire..."
    showInfoBox

    ln -sf /usr/share/zoneinfo/$timezone /etc/localtime

  else
    message="La zone $timezone ne peut être utilisée"
    let boxHeight=7
    showMessageBox
  fi
fi
return
}


##############################################################################
#Information système
##############################################################################
function setSystemInfo()
{
message="La liste des options emerge va apparaitre dans la prochaine fenêtre"
showMessageBox
emerge info > $TEMP_FILE
textBoxFile=$TEMP_FILE
showTextBox
return
}

##############################################################################
#Affiche changelog de nouveau script
##############################################################################
function GetNews()
{
if [ -s $FileChangeLog ]; then
	title="Nouveautés"
 	message=`cat $FileChangeLog`
	let boxHeight=13
	showMessageBox
	rm $FileChangeLog
	
fi
return
}

##############################################################################
# OBSOLETE Hibernation mode veille 
##############################################################################
function hiber()
{
swap=1
title="Configuration de hibernate"
message="Indiquer l'emplacement d'une partition swap (ie:/dev/hda5) Ne pas oublier d'ajouter à grub resume2=swap:Emplacement de la partion swap"
let maxInput=40
let boxHeight=9
showInputBox
swap=$userInput
if [ $swap == 1 ]; then
	showMainMenu
else
#	rm /etc/hibernate/hibernate.conf
#	cp -vp /etc/hibernate/hibernate.conf.org /etc/hibernate/hibernate.conf # Ne pas oublier de faire une copie de hibernate.conf
#	echo "SuspendDevice swap:$swap " >> /etc/hibernate/hibernate.conf
	
	#Suppression ancienne valeur de la partition swap
	if grep -q "^SuspendDevice" /etc/hibernate/suspend2.conf; then
		grep -v "^SuspendDevice" /etc/hibernate/suspend2.conf >	/etc/hibernate/suspend2.conf.new
		mv -f /etc/hibernate/suspend2.conf.new /etc/hibernate/suspend2.conf
	fi
	echo "SuspendDevice swap:$swap " >> /etc/hibernate/suspend2.conf
	hibernate
	exit 0
fi
}
##############################################################################
# Configuration du reseau par net-setup
##############################################################################
function reseauConf()
{
#net-setup se debrouille tout seul
#title="Configuration des cartes réseaux"
#message="Entrer l'interface à configurer (ie: eth0, wlan0...). Le pamétrage ne sera valide que le temps de la session."
#let maxInput=40
#let boxHeight=9
#showInputBox
#Interface=$userInput
#net-setup $Interface
net-setup
return


}


##############################################################################
# Configuration du reseau par madwifi
##############################################################################
function reseauMadWifi()
{
#suppression ancienne valeur
if grep -q "^essid_AP" /etc/conf.d/net; then
	grep -v "^essid_AP" /etc/conf.d/net > /etc/conf.d/net.new
	mv -f /etc/conf.d/net.new /etc/conf.d/net
fi
if grep -q "^key_AP" /etc/conf.d/net; then
	grep -v "^key_AP" /etc/conf.d/net > /etc/conf.d/net.new
	mv -f /etc/conf.d/net.new /etc/conf.d/net
fi	
if grep -q "^iface_ath0" /etc/conf.d/net; then
	grep -v "^iface_ath0" /etc/conf.d/net > /etc/conf.d/net.new
	mv -f /etc/conf.d/net.new /etc/conf.d/net
fi
if grep -q "^gateway_ath0" /etc/conf.d/net; then
	grep -v "^gateway_ath0" /etc/conf.d/net > /etc/conf.d/net.new
	mv -f /etc/conf.d/net.new /etc/conf.d/net
fi


Interface="1"
title="Configuration des cartes réseaux wifi "
message="Configuration du wifi avec les pilotes madwifi : \nNom du réseau "
let maxInput=40
let boxHeight=9
showInputBox
Interface=$userInput
echo essid_AP=\""$Interface\""  >> /etc/conf.d/net 

Interface="1"
message="Configuration du wifi avec les pilotes madwifi : \nClé WEP "
let maxInput=40
let boxHeight=9
showInputBox
Interface=$userInput
echo key_AP=\""$Interface\""  >> /etc/conf.d/net 

Interface="1"
message="Configuration du wifi avec les pilotes madwifi : \nPasserelle "
let maxInput=40
let boxHeight=9
showInputBox
Interface=$userInput
echo gateway_ath0=\""$Interface\""  >> /etc/conf.d/net 
echo iface_ath0=\"dhcp\" >> /etc/conf.d/net

echo "Démarrage du réseau"
#demarrer la carte
/etc/init.d/net.ath0 stop
/etc/init.d/net.ath0 start

sleep 2


}
##############################################################################
# Changer le mot de passe root
##############################################################################
function setRootPassword()
{
title="Changer le mot de passe root"

echo "Entrer le mot de passe"
chroot $RepInstall passwd root && executeOK="t" || executeOK="f" 2> $LOG_FILE


if [ $executeOK = "t" ]; then
 message="Mot de passe changé"
 showInfoBox

else
 message="Impossible de changer le mot de passe root. Celui-ci est frogdev"
 let boxHeight=7
 showMessageBox
fi
return
}

##############################################################################
# Obtenir nom utilisateur
##############################################################################
function getUserName()
{
username=
executeOK="f"

let maxInput=40
let boxHeight=9
message="Entrer un nom d'utilisateur\n"
showInputBox
username=$userInput

if [ $username ]; then
 grep -q $username /etc/passwd && executeOK="t"
fi
return
}

##############################################################################
# creation utilisateur
##############################################################################

function addUserAccount()
{
title="Add User Account"
getUserName
let boxHeight=7

if [ $username ]; then
	
	# ajout
	executeOK="f"
	if [ $LiveCD == 1 ]; then
		chroot $RepInstall useradd $username -m -G users,wheel,audio,tty -s /bin/bash && executeOK="t" 
	else
		useradd $username -m -G users,wheel,audio,tty -s /bin/bash && executeOK="t" 
	fi
	if [ $executeOK = "t" ]; then
	message="Utilisateur $username ajouté"
	showInfoBox
	
	else
	message="$username ne peut être ajouté"
	let boxHeight=7
	showMessageBox
	fi
fi
return
}
##############################################################################
#OBSOLETE Lancement animation flash
##############################################################################
function AnimGnash()
{

title="GNASH"
message="Saisir l'emplacement de l'animation à jouer "
let maxInput=40
let boxHeight=9
showInputBox
Interface=$userInput
gnash $Interface
return


}
##############################################################################
# quitter installeur
##############################################################################
function exitInstaller()
{
title="Quitter"
message="Merci d'avoir utiliser FrogDev"
let boxHeight=7
showMessageBox
exit 0
}

############################################################################## 
#Verifier si une mise à jour est dispo
##############################################################################
function checkfrogdevVersion()
{
cd /root
rm -f frogdevversion 2> /dev/null
wget http://www.frogdev.info/live-cd/frogdevversion  > /dev/null 2>&1
if [ ! -e frogdevversion ] ; then
message="Impossible de vérifier la dernière mise à jour disponible "
   showInfoBox
   return
fi
NEWVERSION=`cat frogdevversion`
if [ $VERSION != $NEWVERSION ] ; then
   message="Une nouvelle version du script frogdev: $NEWVERSION pour la version $VERSION"
   showInfoBox
   rm /root/frogdev.sh
   rm /root/frogdevversion
   wget "http://www.frogdev.info/live-cd/frogdev.sh"
   chmod +x /root/frogdev.sh
   rm $FileChangeLog
   wget "http://www.frogdev.info/live-cd/FrogNews.txt"
   message="Le script frogdev a été mis à jour, vous devez le relancer."
   showInfoBox
   exit 0
fi
}

############################################################################## 
#OBSOLETE partitionnement sans assistant
##############################################################################
function partitionHardDisk()
{
let maxInput=40
let boxHeight=9
message="Quel Disque souhaitez-vous partitionner ? (ie /dev/hda /dev/sda)"
showInputBox
HardDD=$userInput
cfdisk $HardDD
}

############################################################################## 
#Recherche des partitions connues
##############################################################################
function SelChoixPartition()
{
title="Séléction d'une partition"
rm -f $TEMP_FILE
find /dev/hd??  >> $TEMP_FILE
find /dev/sd??  >> $TEMP_FILE
userInput=""
rm $TEMP_FILE.2nd 2> /dev/null
echo "Debut analyse partition"
tmp=""
cat $TEMP_FILE |
while read line
do 
	tmp=$(grep ${line:5:9} /proc/partitions)
	if [ ${tmp:1:1} !="" ] ; then
		#Trouver dans /proc/partitions
		grep ${line:5:9} /proc/partitions |awk '{print "/dev/"$4 "     /dev/"$4":Taille:" int($3/1000000)"GB  \n"}' >> $TEMP_FILE.2nd
	fi

done
#toutes les partitions possible
local radioList=$(cat $TEMP_FILE.2nd)
rm $TEMP_FILE.2nd
echo $radioList

let boxHeight=12
dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--menu "$message" \
18 60 6  \
$radioList 2> $TEMP_FILE

if [ $? -eq 0 ]; then
userInput=$(cat $TEMP_FILE)
rm -f $TEMP_FILE
fi
PartDDChoix=$userInput
echo "$PartDDChoix a ete choisi"


return 

}

############################################################################
# Partitionnement NCURSE              
############################################################################
function NewPartitionHardDisk()
{
# Recherche de toutes les partitions disponible

cat /proc/partitions | sed -n '/[a-z]$/p' |awk '{print "/dev/"$4 "     /dev/"$4 int($3/1000000)"GB  \n"}'| grep -v "name" > $TEMP_FILE

harddisk=
title="Partitionnement"
message="FrogDev a besoin d'une partition swap et au moins\n\
une partition principale. Indiquer le disque a partionner \n\
(i.e. /dev/hda pour le premier disque IDE)\n"
let boxHeight=12
#deb
#getPartitionHardDisk
local lines=$(wc -l $TEMP_FILE | awk '{print $1}')
local count=-1
let boxHeight=$boxHeight+$lines
rm -f $TEMP_FILE.2nd


while [ $count -lt $lines ]
do
let "count+=1"
awk 'NR == '$count' {print $0}' $TEMP_FILE >> $TEMP_FILE.2nd
done


local radioList=$(cat $TEMP_FILE.2nd)

userInput=

# Demande a l'utilisateur la partition


dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--menu "$message" \
$boxHeight 70 $lines \
$radioList 2> $TEMP_FILE


if [ $? -eq 0 ]; then
userInput=$(cat $TEMP_FILE)
rm -f $TEMP_FILE
fi
harddisk=$userInput
if [ $harddisk ]; then

	# Fenetre d'avertissement

	title="Partition Hard Disk"
	message="Outil de manipulation des tables \n\
	Il vous faut une partition de type 83 Linux partition d'au moins 4Go\n\
	et une partition d'au moins 512 MB de type 82 swap partition"
	let boxHeight=9
	showMessageBox

	# Partitionnement du disque selectionne
	umount $harddisk
	cfdisk $harddisk 2> /dev/null && executeOK="t" || executeOK="f"

	if [ $executeOK = "f" ]; then
	  	message="Le disk $harddisk ne peut être partitionné."
  		let boxHeight=7
  		showMessageBox
	fi
fi
return
}

############################################################################
# Formatage d'une partition
############################################################################
function FormatePartition()
{
#choix de la partition
title="Choix de la partition"
message="Selection de la partition à formater, selectionnez cancel pour sortir"

SelChoixPartition
PartDD=$PartDDChoix
#type de systeme de fichier
if [ $PartDD != "" ]; then 
	title="Information"
	
	#choix système de fichier
	showSysFile
	TypePartition=$SysFichier
	#formatage
	umount $PartDD 
	#si encore monté on sort
	LigneMtab=$(grep $PartDD /etc/mtab)
	if [ $LigneMtab != "" ]; then 
		message="La partition ne peut être démontée."
		let boxHeight=7
	  	showMessageBox
		return	
	fi
	#demande confirmation
	dialog --backtitle "$BACK_TITLE" \
	--title "Information" \
	--yesno "Cela va éffacer le contenu de $PartDD.\
Désirez-vous continuer ?"\
	16 70
	if [ $? -eq 1 ]; then
		#On quitte
		return
	fi
	#mkfs.$TypePartition $PartDD
	# si xfs ajout option -f car si partition existante ne formate pas
	if [ "${TypePartition}" == "xfs" ]; then
		mkfs.$TypePartition -f $PartDD
	else
		mkfs.$TypePartition $PartDD
	fi
	message="Formatage terminé."
	let boxHeight=7
	showMessageBox
fi

return

}
############################################################################
# Definir un nouveau point de montage              
############################################################################
function NewMontage()
{
#Demande le nouveau point de montage
let maxInput=40
let boxHeight=9
message="Définir le nouveau point de montage\n"
showInputBox
MontPoint=$userInput

#création du repertoire s'il existe deja pas créé
mkdir $MontPoint 

#Demande la partition
title="Choix de la partition"
message="Selection de la partition, pour sortir sélectionnez cancel."
PartDD=""
SelChoixPartition
PartDD=$PartDDChoix
#type de systeme de fichier
if [ $PartDD == "" ]; then 
	return
fi
#Selection du systeme de fichier
showSysFile
TypePartition=$SysFichier

#question déplacer le contenu actuel vers le nouveau point de montage
dialog --backtitle "$BACK_TITLE" \
--title "Information" \
--yesno "Recopier le contenu actuel de $MontPoint ?" \
16 70
if [ $? -eq 1 ]; then
	echo "Pas de copie"
else
	#On récupère le contenu vers la nouvelle partition
	mkdir /mnt/newDD
	mount $PartDD /mnt/newDD && cp -Rpgv $MontPoint/* /mnt/newDD 
	umount /mnt/newDD
	#16/10/2007 Correction du rm
	rm /mnt/newDD
fi
mount $PartDD $MontPoint 
#question mettre à jour fstab
dialog --backtitle "$BACK_TITLE" \
--title "Information" \
--yesno "Mettre à jour fstab ?" \
16 70
if [ $? -eq 1 ]; then
	echo "fstab pas mis à jour"
else
	
	#suppression ancien point de montage de la nouvelle partition si besoin 
	if grep -q "^$PartDD" /etc/fstab; then
		grep -v "^$PartDD" /etc/fstab > /etc/.fstab.new
		mv -f /etc/.fstab.new /etc/fstab
	fi
	#suppression du même point de montage s'il été deja défini
	if grep -q "^$MontPoint " /etc/fstab; then
		grep -v "^$MontPoint " /etc/fstab > /etc/.fstab.new
		mv -f /etc/.fstab.new /etc/fstab
	fi

	echo "$PartDD               $MontPoint                $TypePartition     defaults        1 1    " >> /etc/fstab

fi

}
############################################################################
# Definir les dns              (Dans MenuReseau)
############################################################################
function GestionDNS()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Gestion DNS" \
--menu "Choix" \
18 60 6 \
"DNSnow" "Visualiser les DNS actuels" \
"free"   "Ajouter DNS Free" \
"wanadoo" "Ajouter DNS Wanadoo" \
"libertysurf" "Ajouter DNS Libertysurf" \
"clubinternet"   "Ajouter DNS Club-Internet" \
"DNSManuel"   "Ajouter les DNS manuellement" \
"Quitter" "Retour" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "DNSnow" )  
	echo "DNS actuels"
 	cat /etc/resolv.conf
	echo -n "Appuyer sur entrée pour continuer : "
	read Touche
	GestionDNS
     ;;
   "wanadoo" ) 
	echo "nameserver 193.252.19.3 " > /etc/resolv.conf
	echo "nameserver 193.252.19.4 " >> /etc/resolv.conf
	title="DNS"
 	message="DNS Wanadoo ajoutés"
	let boxHeight=13
	showMessageBox
	GestionDNS
     ;;
   "free" )
	echo "nameserver 212.27.32.5 " > /etc/resolv.conf
	echo "nameserver 212.27.32.6 " >> /etc/resolv.conf
	title="DNS"
 	message="DNS FREE ajoutés"
	let boxHeight=13
	showMessageBox
	GestionDNS 
     ;;
   "clubinternet" )
	echo "nameserver 194.117.200.10 " > /etc/resolv.conf
	title="DNS"
 	message="DNS Club-Internet ajoutés"
	let boxHeight=13
	showMessageBox
	GestionDNS 
     ;;
    "libertysurf" )
	echo "nameserver 194.149.160.9 " > /etc/resolv.conf
	title="DNS"
 	message="DNS Libertysurf ajoutés"
	let boxHeight=13
	showMessageBox
	GestionDNS 
     ;;
   "DNSManuel") 
	message="DNS Primaire :"
	let maxInput=40
	let boxHeight=9
	showInputBox
	Interface=$userInput
	echo "nameserver $Interface" > /etc/resolv.conf
	message="DNS Secondaire :"
	let maxInput=40
	let boxHeight=9
	showInputBox
	Interface=$userInput
	echo "nameserver $Interface" >> /etc/resolv.conf
	GestionDNS 
     ;;
   "Quitter" ) MenuReseau
     ;;
 esac

elif [ $? -eq 1 ]; then
 MenuReseau
fi
	
}
############################################################################
# configuration reseau             (Dans MenuReseau) 
############################################################################
function reseaufilaire()
{
title="Configuration réseau filaire"
message="Entrer l'interface à  configurer (ie: eth0 pour la 1ere carte, eth1 la 2e...)"
let maxInput=40
let boxHeight=9
showInputBox
InterfaceCarte=$userInput
if [ $InterfaceCarte != "" ]; then 


	#suppression ancienne valeur
	if grep -q "^config_$InterfaceCarte" /etc/conf.d/net; then
		grep -v "^config_$InterfaceCarte" /etc/conf.d/net > /etc/conf.d/net.new
		mv -f /etc/conf.d/net.new /etc/conf.d/net
	fi
	if grep -q "^routes_$InterfaceCarte=" /etc/conf.d/net; then
		grep -v "^routes_$InterfaceCarte=" /etc/conf.d/net > /etc/conf.d/net.new
		mv -f /etc/conf.d/net.new /etc/conf.d/net
	fi

	Interface="1"
	title="Configuration réseau "
	message="Configuration adresse réseau saisir une adresse IP ou saisir dhcp "
	let maxInput=40
	let boxHeight=9
	showInputBox
	Interface=$userInput
	if [ $Interface != "dhcp" ]; then 
		echo "config_$InterfaceCarte=(\"$Interface broadcast 192.168.0.255 netmask 255.255.255.0\") " >> /etc/conf.d/net 
	else
		echo "config_$InterfaceCarte=(\"dhcp\")" >> /etc/conf.d/net 
	fi
	#Devrait convenir à maximum de personne au moins pour le réseau local

	Interface="1"
	message="Adresse de la passerelle :"
	let maxInput=40
	let boxHeight=9
	showInputBox
	Interface=$userInput
	echo "routes_$InterfaceCarte=(\" default via $Interface\") " >> /etc/conf.d/net 

	
	echo "Démarrage du réseau"
	#demarrer la carte
	/etc/init.d/net.$InterfaceCarte stop
	/etc/init.d/net.$InterfaceCarte start
	sleep 2
	
fi

return
}


############################################################################
# Gestion du menu firewall
############################################################################
function MenuFirewall()
{
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "Gestion du pare feu" \
--menu "Choix" \
18 60 6 \
"Etat" "Etat du firewall" \
"Arret" "Arret du firewall" \
"Demarrer" "Démarrer le firewall" \
"Redemarrer"   "Redémarrer le firewall" \
"refus"   "Connexion refusée" \
"Quitter" "Quitter" 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "Etat" ) 
	${IPTABLES} -L
    	${IPTABLES} -t nat -L
	${IPTABLES} -t mangle -L
	sleep 5
	MenuFirewall
     ;;
   "Arret" )/etc/init.d/parefeu stop;MenuFirewall     
	;;
   "Demarrer" )/etc.init.d/parefeu start;MenuFirewall  
	;;
   "refus" )grep $TEXTE_LOG /var/log/messages;read -p "Appuyer sur une touche ";MenuFirewall  
	;;
   "Redemarrer" )/etc/init.d/parefeu restart;MenuFirewall
     ;;
   "Quitter" ) MenuReseau
     ;;
 esac

elif [ $? -eq 1 ]; then
 MenuReseau
fi
}
############################################################################
# OBSOLETE Arret du firewall
############################################################################
firewall_stop() {


	${IPTABLES} -F
	${IPTABLES} -X
	${IPTABLES} -P INPUT ACCEPT
	${IPTABLES} -P FORWARD ACCEPT
	${IPTABLES} -P OUTPUT ACCEPT

	${IPTABLES} -t nat -F
	${IPTABLES} -t nat -X
	${IPTABLES} -t nat -P PREROUTING ACCEPT
	${IPTABLES} -t nat -P POSTROUTING ACCEPT
	${IPTABLES} -t nat -P OUTPUT ACCEPT
	
	${IPTABLES} -t mangle -F
	${IPTABLES} -t mangle -X
	${IPTABLES} -t mangle -P PREROUTING ACCEPT
	${IPTABLES} -t mangle -P OUTPUT ACCEPT
	
	sleep 5
	echo " [firewall descativé! ]"
}
############################################################################
# OBSOLETE Démarrage du firewall
############################################################################
firewall_start() {
title="Configuration firewall"
message="Entrer l'interface à  configurer (ie: ppp0(modem), eth0 pour la 1ere carte, eth1 la 2e...)"
let maxInput=40
let boxHeight=9
showInputBox
InterfaceCarte=$userInput
if [ $InterfaceCarte != "" ]; then 
	checkkernel || return 1
	IF_CARTE=${InterfaceCarte}
	einfo "[Démarrage du firewall]"

	############################### REGLES PAR DEFAUT ###########################

	einfo "[Initialisation de la table filter]"
	${IPTABLES} -F
	${IPTABLES} -X

	einfo "[Politique par défaut de la table filter]"

	# On ignore tout ce qui entre ou transite 
	#refus de tout
	$IPTABLES -P INPUT DROP
	$IPTABLES -P OUTPUT DROP
	$IPTABLES -P FORWARD DROP
	einfo "Refus de toutes les connexions"
	
	
	#regles reseau local on accepte tous
	# "On accepte le traffic sur 'lo'"
	$IPTABLES -A INPUT -i lo -j ACCEPT
	$IPTABLES -A OUTPUT -o lo -j ACCEPT
	$IPTABLES -A FORWARD -i lo -j ACCEPT
	$IPTABLES -A FORWARD -o lo -j ACCEPT
	einfo "Toutes les connexions internes sont actives" 

	############################### INTERNET ###########################

	einfo "[On autorise les clients à accéder au reseau local ]"

	# Autorise les connexions avec le réseau 192.168.0.0/24 connecté à l'interface eth0
	${IPTABLES} -t filter -A OUTPUT -o $IF_CARTE -s $RESEAU_LOCAL -d $RESEAU_LOCAL -j ACCEPT
	${IPTABLES} -t filter -A INPUT  -i $IF_CARTE -s $RESEAU_LOCAL -d $RESEAU_LOCAL -j ACCEPT


	# Refus des paquets invalides
  # Drop any packet that is not in the state table.
  $IPTABLES -A INPUT -m state --state INVALID -j DROP
	einfo "[Rejet des paquets associés avec aucune connexion connue. ]"	

  # On accepte les paquets que l'on a initialisé.
  $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT 

	################################# PREPARATION DES LOGS #########################
	if [ ${DEBUG} == "1" ]
	then
		einfo "Prépare les log pour mise en place du firewall "
		#Logguer les packets DROPés
		#Logguer les packets au début afin de vérifier que tous fonctionne
		$IPTABLES -N LOG_DROP
		$IPTABLES -A LOG_DROP -j LOG --log-prefix "$TEXTE_LOG"
		$IPTABLES -A LOG_DROP -j DROP
		einfo "Toutes les entrées sont prefixées de :"
		einfo "[FIREWALL refus] "
		ewarn "Cela prend beaucoup de place "
		ewarn "Une fois les règles mises en place, désactivé cette option"
	fi

	############################### LES TABLES NAT ET MANGLE #############################

	einfo "[Initialisation des tables nat et mangle]"

	$IPTABLES -t nat -F
	$IPTABLES -t nat -X
	$IPTABLES -t nat -P PREROUTING ACCEPT
	$IPTABLES -t nat -P POSTROUTING ACCEPT
	$IPTABLES -t nat -P OUTPUT ACCEPT

	$IPTABLES -t mangle -F
	$IPTABLES -t mangle -X
	$IPTABLES -t mangle -P PREROUTING ACCEPT
	$IPTABLES -t mangle -P OUTPUT ACCEPT

	#################################### LE MASQUERADING ########################################

	# Commentez ces 2 lignes, si vous ne faîtes pas du masquerading (nat)
	einfo "[Mise en place du masquerading]"
	$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o ${InterfaceCarte} -j MASQUERADE

	############################## Les acces clients vers internet #####################
	einfo "[On autorise les clients à accéder à internet ]"

	einfo "[Autorise la résolution des noms de domaines ]"
	#accepte la résolution de domaine en sortie
	$IPTABLES -A OUTPUT -p tcp --dport 53 -j ACCEPT
	$IPTABLES -A OUTPUT -p udp --dport 53 -j ACCEPT

	einfo "[Autorise l'acces NTP ]"
	#Protocole de temps réseau (NTP)
	$IPTABLES -A OUTPUT -p udp --dport 123 -j ACCEPT

	einfo "[Autorise la navigation sur internet ]"
	#Acces (http)
	$IPTABLES -A OUTPUT -p tcp --dport 80 -j ACCEPT

	einfo "[Autorise le https ]"
	#Acces (https)
	$IPTABLES -A OUTPUT -p tcp --dport 443 -j ACCEPT

	einfo "[Autorise SSH ]"
	#Acces (ssh)
	$IPTABLES -A OUTPUT -p tcp --dport 22 -j ACCEPT

	einfo "[Autorise l'envoi de mail ]"
	$IPTABLES -A OUTPUT -p tcp --dport 110 -j ACCEPT

	einfo "[Autorise la reception de mail ]"
	$IPTABLES -A OUTPUT -p tcp --dport 25 -j ACCEPT

	einfo "[Autorise la connexion vers serveur FTP ]"
	$IPTABLES -A OUTPUT -p tcp --dport 21 -j ACCEPT
	$IPTABLES -A OUTPUT -p tcp --dport 20 -j ACCEPT

	einfo "[Autorise les listes de diffusion ]"
	$IPTABLES -A OUTPUT -p tcp --dport nntp -j ACCEPT

	einfo "[Autorise Jabber]"
	$IPTABLES -A OUTPUT -p tcp --dport 5222 -j ACCEPT

	einfo "[Autorise l'attribution d'adresse IP via DHCP]"
	$IPTABLES  -A OUTPUT -p udp --sport 68 --dport 67 -j ACCEPT	

	#Une liste de ports est disponible : http://www.frogdev.info/reseaux.php
	#ajouter ici les protocoles autorisé en sortie
	#Il suffit de lancer le script avec "reject" afin de consulter les connexions rejete
	#einfo "[Autorise la sortie de XXX ]"
	#$IPTABLES -A OUTPUT -p tcp --dport N° du port -j ACCEPT


	################################# ACTIVATION DE LA PASSERELLE ##################
	if [ ${PASSERELLE} == "1" ]
	then
		einfo "[Activation de la passerelle]"
		echo 1 > /proc/sys/net/ipv4/ip_forward
	else
		einfo "[Désactivation de la passerelle]"
		echo 0 > /proc/sys/net/ipv4/ip_forward
	fi
	################################# PAS DE SPOOFING ############################

	einfo "[Pas de spoofing]"
	if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then
	for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
	do
	echo 1 > $filtre
	done
	fi 

	########################## PAS DE SYNFLOOD ####################

	einfo "[Pas de synflood]"
	if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then
		echo 1 > /proc/sys/net/ipv4/tcp_syncookies
	fi

	################################## PAS DE PING ###############################

	# commentez ces 6 lignes, si vous autorisez les pings
	einfo "[Pas ping]"
	echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
	echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
	if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ] ; then
		echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
	fi

	############################ Fonctionnalités serveurs #####################################

	einfo "[Fonctionalités serveurs, visibles depuis internet ]"

	# A ce stade, tous vos clients du réseau local et de la passerelle ont accès à internet. Mieux,
	# vos clients du réseau local, ont accès à vos serveurs apache, proftp ... localement. Mais personne
	# depuis internet ne peux accéder à l'un des serveurs que vous hébergés.

	# Il est bien-sûr possible de dévérrouiller pontuellement l'accès à un serveur depuis internet,
	# en décommentant les 2 ou 3 lignes correspondantes.
	
	if [ ${SERV_SSH} == "1" ]
	then
		einfo "[autorisation du serveur ssh(22) ...]"
		$IPTABLES -A INPUT -p tcp --dport ssh -j ACCEPT
	fi

	if [ ${SERV_SMTP} == "1" ]
	then
		einfo "[autorisation du serveur smtp(25) ...]"
		$IPTABLES -A INPUT -p tcp --dport smtp -j ACCEPT
	fi

	if [ ${SERV_HTTP} == "1" ]
	then
		einfo "[autorisation du serveur http(80) ...]"
		$IPTABLES -A INPUT -p tcp --dport www -j ACCEPT
	fi

	if [ ${SERV_HTTPS} == "1" ]
	then
		einfo "[autorisation du serveur https(443) ...]"
		$IPTABLES -A INPUT -p tcp --dport https -j ACCEPT
	fi

	if [ ${SERV_DNS} == "1" ]
	then
		einfo "[autorisation du serveur DNS(53) ...]"
		$IPTABLES -A INPUT -p udp --dport domain -j ACCEPT
		$IPTABLES -A INPUT -p tcp --dport domain -j ACCEPT
	fi


	if [ ${SERV_IRC} == "1" ]
	then
		einfo "[autorisation du serveur irc(6667) ...]"
		iptables -A INPUT -p tcp --dport ircd -j ACCEPT
	fi

	if [ ${SERV_CVS} == "1" ]
	then
		einfo "[autorisation du serveur cvs (2401) ...]"
		$IPTABLES -A INPUT -p tcp --dport cvspserver -j ACCEPT
	fi

	if [ ${SERV_FTP} == "1" ]
	then
		einfo "[autorisation du serveur FTP(21 et 20) ...]"
		$IPTABLES -A INPUT -p tcp --dport 20 -j ACCEPT
		$IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT
	fi
	
	if [ ${SERV_MSN} == "1" ]
	then
		#msn transfert de fichier
		$IPTABLES -A INPUT -p TCP --sport 6891:6900 -j ACCEPT
		$IPTABLES -A OUTPUT -p tcp --dport 6891:6900 -j ACCEPT
		#msn communication
		$IPTABLES -A INPUT  --protocol tcp --sport 1863 -m state --state ESTABLISHED,RELATED -j ACCEPT
		$IPTABLES -A OUTPUT  --protocol tcp --dport 1863 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
		einfo "[autorisation MSN(6891:6900 et 1863 ) ...]"
	fi

	if [ ${SERV_DONKEY} == "1" ]
	then
		#reseau donkey udp:4672 tcp:4662
		#on accept sur les port entrants par défault d'eMULE
		$IPTABLES -A INPUT -p tcp --dport 4662 -j ACCEPT
		$IPTABLES -A INPUT -p tcp --dport 34037 -j ACCEPT
		$IPTABLES -A INPUT -p tcp --dport 34038 -j ACCEPT
		einfo "Emule ouverture du port entrant 4662 "
		$IPTABLES -A INPUT -p udp --dport 4672 -j ACCEPT
		einfo "[Emule ouverture du port entrant 4672 ]"
		# on accepte les sorties pour emule
		$IPTABLES -A INPUT -p tcp --sport 4662 -j ACCEPT
		einfo "[Emule ouverture du port sortant 4662 ]"
		$IPTABLES -A INPUT -p udp --sport 4672 -j ACCEPT
		einfo "[Emule ouverture du port sortant 4672 ]"
	fi

	if [ ${SERV_VIDEOLAN} == "1" ]
	then
		$IPTABLES -A INPUT -p udp --dport 1234 -j ACCEPT
		einfo "[Ouverture flux VideaoLAN (1234) ]"
	fi

	if [ ${SERV_SAP} == "1" ]
	then
		$IPTABLES -A INPUT -p udp -d 224.2.127.254 --dport 9875 -j ACCEPT
		einfo "[Ouverture des annonces SAP ]"
	fi


	if [ ${SERV_GNOMEMETING} == "1" ]
	then
		$IPTABLES -A INPUT -p tcp --dport 30000:33000 -j ACCEPT
		$IPTABLES -A INPUT -p tcp --dport 1720 -j ACCEPT
		$IPTABLES -A INPUT -p udp --dport 5000:5006 -j ACCEPT
		einfo "[Ouverture de GnomeMeeting ]"
	fi


	# Ne pas décommenter les 3 lignes qui suivent.
	# Plus généralement :
	#echo "[autorisation du serveur Mon_truc(10584) ...]"
	#$IPTABLES -A INPUT -p tcp --dport 10584 -j ACCEPT

	#redirection d'une interface vers une autre
	#$IPTABLES -A FORWARD -i $IF_PRV -o $IF_PUB -j ACCEPT

	if [ ${ACTIVE_LOG} == "1" ]
	then
		#on log tout
		einfo "[Activation des logs]"
		$IPTABLES -A FORWARD -j LOG_DROP
		$IPTABLES -A INPUT -j LOG_DROP
		$IPTABLES -A OUTPUT -j LOG_DROP
	fi

	einfo "[firewall activé !]"
	sleep 5
fi
}

##############################################################################
#Monte une partition pour utiliser des modules
############################################################################## 
function _pl_MountRepModules()
{ 
#verifier si pas deja monte
PartDD=$(cat /root/unionDev)
if [ "$PartDD" == "" ]
then
	title="Installation de module" 
	let boxHeight=7 
	message="Sélectionner la partition à utiliser" 
	showMessageBox
	SelChoixPartition 
	PartDD=$PartDDChoix
	if [ "$PartDD" != "" ]; then 
		mkdir -p /modules
		umount "$PartDD"
		mount "$PartDD" /modules 
	fi 
	echo ${PartDD} > /root/unionDev
else
	echo "${PartDD} déjà monté"
fi
}
##############################################################################
#Monte une partition pour créer des modules
############################################################################## 
function _pl_PrepareMo()
{ 
PartDD=$(cat /root/unionDev)
touch /root/unionmonte
if [ "$PartDD" == "" ]
then
	_pl_MountRepModules
fi
if [ "$PartDD" != "" ]; then 
	
	echo ${PartDD} > /root/unionDev
	cd /modules 
	if [ -s $FileSquash ]; then
		wget http://www.frogdev.info/modules/portage_e17.mo 
		wget http://www.frogdev.info/modules/portagedb_e17.mo 
		mv portage_e17.mo portage.mo
		mv portagedb_e17.mo portagedb.mo 
	else
		wget http://www.frogdev.info/modules/portage.mo 
		wget http://www.frogdev.info/modules/portagedb.mo 
	fi

	sleep 2
	#le temps de monter la partition
	_pl_MountMo 
	ln -s /usr/portage/distfiles /modules
	mkdir /tmp/rootfs-mo
fi
} 
function _pl_MakeMo()
{
mkdir -p /modules
mkdir -p /modules/pkg
mkdir -p /modules/log
mkdir -p /tmp
TMPDIR="/tmp/rootfs-mo"
# MONITORTMP="$TMPFILE-monitor"

# PKG=$2

DEPS=`emerge -pv ${paquet}`
PKG=`emerge -pv ${paquet} | grep -e ".*/.*" | sed -e 's/.*] //g' -e 's/ .*//g'`

einfo "Les dépendences de ${paquet} :"
emerge -pv ${paquet}

read -p "Emerger ? [y]/n " ASK

if [ "${ASK}" == "n" ]; then
	exit 0
fi

einfo "Préparation de l'installation"
for x in $PKG
do
	emerge -b ="${x}"
	mkdir -p "${TMPDIR}"
	tar -jxf /modules/pkg/"${x}".tbz2 -C "${TMPDIR}"
	#tar -jxf /usr/portage/packages/"${x}".tbz2 -C "${TMPDIR}"
	#mkdir -p "${TMPDIR}"/var/db/pkg/"${x}"
	#cp -a /var/db/pkg/"${x}"/* "${TMPDIR}"/var/db/pkg/"${x}"/
	MOFILE=`echo $x | sed -e 's/.*\///g'`
	einfo "Création de module pour $MOFILE"
	rm -rf /modules/$MOFILE.mo
	mksquashfs "${TMPDIR}" /modules/"${MOFILE}".mo
	#einfo "Monte ${MOFILE}"
	#mount -o loop -t squashfs /modules/"${MOFILE}".mo /tmp/"${MOFILE}".mo 
	#echo "${MOFILE}".mo: >> /root/unionmonte
	#FileDejaMonteUnion=$(cat /root/unionmonte)
 	#mount -n -t unionfs -o dirs=${FileDejaMonteUnion}/mnt/livecd none /
	#mount -o loop -t squashfs /modules/"${MOFILE}".mo /
	einfo "Module disponible dans /modules/$MOFILE.mo"
	rm -rf "${TMPDIR}"
done

einfo "Modules créés."
einfo "Vous pouvez copier les modules /modules/*.mo "
einfo "sur votre clé USB ou un autre support."


}
############################################################################## 
#Monte tous les modules présents dans /modules
############################################################################## 
function _pl_MountMo() 
{ 
echo -n "Ajouter les modules de /modules y/n: "
read reponse
if [ ${reponse} != "y" ]
then
	exit 0
fi
if [ -s /root/frogdevdemonte.sh ]; then
	echo "Des modules sont déjà montés."
else
	echo "#!/bin/sh" > /root/frogdevdemonte.sh
	chmod +x /root/frogdevdemonte.sh
fi
echo ${sourceSquash} > /root/unionmonte
echo "Recherche de modules..."

for line in `find /modules/ -name *.mo`  
do
	echo -n "Ajouter $line y/n: "
	read reponsemo
	echo ${reponsemo}
	if [ ${reponsemo} != "y" ]
	then
		echo "${line} ignoré."
	else
		mkdir -p /tmp/modules
		mkdir /tmp${line}
		mount -o loop -t squashfs ${line} /tmp${line} 
		FileDejaMonteUnion=$(cat /root/unionmonte)
#Pour le moment demande à l'utilisateur de saisir la commande sion freeze ordi???
		einfo "Pour que ce module soit disponible taper cette commande :"
		einfo "unionctl ${FileCDROM} --add --after ${FileDejaMonteUnion} --mode ro /tmp${line}"
		einfo "Pour enlever un module saisir ces commandes :"
		einfo "unionctl ${FileCDROM} --remove /tmp${line}"
		einfo "umount /tmp${line}"
		echo "unionctl ${FileCDROM} --remove /tmp${line}" >> /root/frogdevdemonte.sh
		echo "umount /tmp${line} " >> /root/frogdevdemonte.sh
		echo /tmp${line} > /root/unionmonte
		#cas particulier pour /var/db
		if [ ${line} == "/modules/portagedb.mo" ]
		then
			ln -s /tmp/modules/portagedb.mo/var/db /var/db
		fi
		sleep 2
	fi
done
chmod +x /root/frogdevdemonte.sh
}


#les différents point de montage apres le démarrage
#/dev/loop/0 on / type squashfs (ro)
#/dev/hdc on /mnt/cdrom type iso9660 (ro)
#/dev/loop/0 on /mnt/livecd type squashfs (ro)
#proc on /proc type proc (rw)
#sysfs on /sys type sysfs (rw)
#udev on /dev type tmpfs (rw,nosuid)
#devpts on /dev/pts type devpts (rw)
#cachedir on /mnt/livecd/lib/splash/cache type tmpfs (rw)
#tmpfs on /mnt/livecd/lib/windrivers type tmpfs (rw)
#tmpfs on /var/lib/init.d type tmpfs (rw)
#tmpfs on /var/run type tmpfs (rw)
#tmpfs on /mnt/livecd/var/lib/xkb type tmpfs (rw)
#usbfs on /proc/bus/usb type usbfs (rw,devmode=0664,devgid=85)
#nfsd on /proc/fs/nfs type nfsd (rw)
#rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)


##############################################################################
#Gestion des services
##############################################################################
function AffichelstService()
{
title="Services"
RepService=/etc/init.d/  
TailleNomRep=${#RepService}
#message="La liste des services disponible va apparaitre dans la prochaine fenêtre"
#showMessageBox
rm -f $TEMP_FILE
rm -f $TEMP_FILE.new
find ${RepService}*  >> $TEMP_FILE
einfo 'Analyse des services'
FichierEnCours=""
cat $TEMP_FILE | 
while read FichierEnCours
do 
    #echo "Traitement de ${FichierEnCours}"
    TailleCompletNomFichier=${#FichierEnCours}
    TailleNomFichier=${TailleCompletNomFichier}-${TailleNomRep}
    NomService=${FichierEnCours:${TailleNomRep}:${TailleNomFichier}} 
    if [ "$NomService" == "halt.sh" ] || [ "$NomService" == "runscript.sh" ] || [ "$NomService" == "reboot.sh" ] || [ "$NomService" == "shutdown.sh" ] || [ "$NomService" == "functions.sh" ] || [ "$NomService" == "depscan.sh" ]
    then
        echo "${NomService} non traité"
   else
	if [ -s /var/lib/init.d/started/${NomService} ]; then
		StatutService="Demarrer"
	else
		StatutService="Arreter"
	fi

	
	echo ${NomService} ${StatutService}
        echo "${NomService}   ${StatutService}" >> $TEMP_FILE.new
         

    fi

done
einfo 'analyse finie'
cat $TEMP_FILE.new

local radioList=$(cat $TEMP_FILE.new)
 
rm $TEMP_FILE.new
message="Sélection du service :"
let boxHeight=12
dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--menu "$message" \
18 60 6  \
$radioList 2> $TEMP_FILE

if [ $? -eq 0 ]; then
   userInput=$(cat $TEMP_FILE)
   rm -f $TEMP_FILE
else
   return
fi
ServiceEnCours=$userInput

rcServiceEnCours=""
dialog --backtitle "$BACK_TITLE" \
--title "Gestion de $ServiceEnCours" \
--menu "Choix" \
18 60 6 \
"stop" "Arret" \
"start" "Démarrer" \
"restart" "Redémarrer " \
"rc" "Gestion des runlevels" 2> $TEMP_FILE

if [ $? -eq 0 ]; then
   rcServiceEnCours=$(cat $TEMP_FILE)
   rm -f $TEMP_FILE
else
   return
fi

if [ "$rcServiceEnCours" != "rc" ]; then
   ${RepService}${ServiceEnCours} ${rcServiceEnCours}
   echo -n "Appuyer sur entrée pour continuer : "
   read Touche
   return
else
   #gestion des runlevels
   RepRunlevel=/etc/runlevels/ 
   TailleRunlevel=${#RepRunlevel}
   rm -f $TEMP_FILE
   rm -f $TEMP_FILE.new
   find ${RepRunlevel}*  -maxdepth 0 >> $TEMP_FILE
   echo "Analyse des runlevels"
   FichierEnCours=""
   cat $TEMP_FILE | while read FichierEnCours; do 
     TailleCompletNomFichier=${#FichierEnCours}
     TailleNomFichier=${TailleCompletNomFichier}-${TailleRunlevel}
     NomRunlevel=${FichierEnCours:${TailleRunlevel}:${TailleNomFichier}} 
     #Vérification si présent
     echo ${RepRunlevel}${NomRunlevel}/${ServiceEnCours}
     if [ -e  ${RepRunlevel}${NomRunlevel}/${ServiceEnCours} ]
     then
        echo "${NomRunlevel} Disponible" >> $TEMP_FILE.new
     else
        echo "${NomRunlevel}   Non_disponible" >> $TEMP_FILE.new
     fi
   done
   #fin analyse Runlevel
   Selection du runlevel à traiter
   local radioList=$(cat $TEMP_FILE.new)
   rm $TEMP_FILE.new
   message="Sélection du runlevel :"
   let boxHeight=12
   dialog --backtitle "$BACK_TITLE" \
   --title "$title" \
   --menu "$message" \
   18 60 6  \
   $radioList 2> $TEMP_FILE

   if [ $? -eq 0 ]; then
     userInput=$(cat $TEMP_FILE)
     rm -f $TEMP_FILE
   else
     return
   fi
   RunLevelChoix=$userInput
   echo ${RunLevelChoix}

   ChoixRun=""
   dialog --backtitle "$BACK_TITLE" \
   --title "Gestion de $ServiceEnCours" \
   --menu "Choix" \
   18 60 6 \
   "add" "Ajouter" \
   "del" "Supprimer" 2> $TEMP_FILE

   if [ $? -eq 0 ]; then
     ChoixRun=$(cat $TEMP_FILE)
     rm -f $TEMP_FILE
   else
     return
   fi
   #si on arrive ici on ajoute ou supprime du runlevel courrant
   rc-update ${ChoixRun} ${ServiceEnCours} ${RunLevelChoix}
   echo -n "Appuyer sur entrée pour continuer : "
   read Touche
   return

fi



}
##############################################################################
#Gestion des variables environnements
##############################################################################
function GereEnv()
{
einfo "Choix de l'environnement :"
einfo "Possibilité :"
einfo "fr_FR.UTF-8 pour france"
einfo "fr_BE.UTF-8 pour belge"
einfo "fr_CA.UTF-8 pour canada"
einfo "Si votre langue n'est pas disponible vous pouvez me contacter bouleetbil@frogdev.info"

read -p "Saisir une valeur ou taper entrée pour continuer :" ASK

if [ "${ASK}" == "" ]; then
	return
fi
echo "LC_ALL=\"${ASK}\" "> /etc/env.d/O2locales
echo "LANG=\"${ASK}\" ">> /etc/env.d/02locales
env-update
}

##############################################################################
#Gestion du clavier
##############################################################################
function fg_RechClavier()
{
dialog --backtitle "$BACK_TITLE" \
--title "Clavier" \
--yesno "Définir un clavier autre que français ?" \
16 70
if [ $? -eq 1 ]; then
 return
fi

local copt=
local newclavier=
local fichierxorg="${RepInstall}/etc/X11/xorg.conf.in"
local fichierxorgconf="${RepInstall}/etc/X11/xorg.conf"
local fichierkeymap="${RepInstall}/etc/conf.d/keymaps"
echo "renseignement du clavier ..."
#Modif keymap
echo "Clavier a utiliser ie : france : 'fr', belge 'be'"
read CLAVIER
sed -i "s:KEYMAP=\"fr-latin9\":KEYMAP=\"$CLAVIER\":" $fichierkeymap
/etc/init.d/keymap restart
#modif xorg
echo "Clavier a utiliser sous xorg ie : france : 'fr', belge 'be'"
read CLAVIER
sed -i "s:   	Option 	\"XkbLayout\"	\"fr\":   	Option \"XkbLayout\"	\"$CLAVIER\" :" $fichierxorg
sed -i "s:   	Option 	\"XkbLayout\"	\"fr\":   	Option \"XkbLayout\"	\"$CLAVIER\" :" $fichierxorgconf

return
}
##############################################################################
#desactiver mkxf86config if z
##############################################################################
function pg_Desactivemkxf86config()
{
dialog --backtitle "$BACK_TITLE" \
--title "Xorg" \
--yesno "Désactiver la détection automatique de Xorg ?" \
16 70
if [ $? -eq 1 ]; then
 return
fi
chroot $RepInstall rc-update del autoconfig
mv $RepInstall/etc/init.d/mkxf86config $RepInstall/etc/init.d/mkxf86configold
#on récupere le xorg.conf du CD
cp /etc/X11/xorg.conf $RepInstall/etc/X11/xorg.conf
return
}
##############################################################################
#postinstall 
##############################################################################
function pg_PostInstall()
{
#desactive startx et active entrance
chroot $RepInstall rc-update del xuser
chroot $RepInstall rc-update add xdm default nofb
#desactive mise en place des répertoires livecd
rm $RepInstall/etc/init.d/frog_init 

fg_RechClavier
pg_Desactivemkxf86config
pg_MajFstab
mkdir -p $RepInstall/var/run/clamav 2> /dev/null
mkdir -p $RepInstall/var/run/console 2> /dev/null
mkdir -p $RepInstall/var/run/dbus 2> /dev/null
mkdir -p $RepInstall/var/run/hald 2> /dev/null
mkdir -p $RepInstall/var/run/openldap 2> /dev/null
mkdir -p $RepInstall/var/run/ptal-mlcd 2> /dev/null
mkdir -p $RepInstall/var/run/samba 2> /dev/null
mkdir -p $RepInstall/var/cache 2> /dev/null
mkdir -p $RepInstall/var/cache/samba 2> /dev/null
mkdir -p $RepInstall/media 2> /dev/null
#Suppression ancienne valeur de la partition swap
if grep -q "^SuspendDevice" $RepInstall/etc/hibernate/suspend2.conf; then
	grep -v "^SuspendDevice" $RepInstall/etc/hibernate/suspend2.conf >	$RepInstall/etc/hibernate/suspend2.conf.new
	mv -f $RepInstall/etc/hibernate/suspend2.conf.new $RepInstall/etc/hibernate/suspend2.conf
fi
echo "SuspendDevice swap:$SwapMont" >> $RepInstall/etc/hibernate/suspend2.conf
return
}

##############################################################################
#Gestion des points de montage facultatif
##############################################################################
##############################################################################
#Gestion du menu pour les points de montage /home /var /tmp
##############################################################################
function pg_MenuMontPoint()
{
echo "Menu pour point de montage facultatif" >> $LOG_FILE
installMethod=
dialog --backtitle "$BACK_TITLE" \
--title "FrogDev" \
--menu "Ajouter un point de montage facultatif" \
18 60 6 \
"boot" "Ajouter une partition /boot" \
"home" "Ajouter une partition /home" \
"var" "Ajouter une partition /var" \
"tmp" "Ajouter une partition /tmp" \
"rappel" "Rappel des partitions utilisées" \
"Quitter" "Retour " 2> $TEMP_FILE


if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE

 case "$installMethod" in
   "home" )  pg_AjoutPointMontHome;pg_MenuMontPoint
     ;;
   "var" )  pg_AjoutPointMontVar;pg_MenuMontPoint
     ;;
   "tmp" ) pg_AjoutPointMontTmp;pg_MenuMontPoint
     ;;
   "boot" ) pg_AjoutPointMontBoot;pg_MenuMontPoint
     ;;
   "rappel" ) pg_RappelPointMont;pg_MenuMontPoint
     ;;
   "Quitter" ) return
     ;;
 esac
fi
return
}
##############################################################################
#Affichage des partitions choisies
##############################################################################
function pg_RappelPointMont()
{

echo "Rappel des partitions choisies :"
einfo "Systeme root : ${diskRoot} systeme de fichier : ${TypePartition}"
if [ "${MntHome}" != "" ]; then 
	einfo "home : ${MntHome} systeme de fichier : ${SysFichierMntHome}"
fi
if [ "${MntVar}" != "" ]; then 
	einfo "var : ${MntVar} systeme de fichier : ${SysFichierMntVar}"
fi
if [ "${MntTmp}" != "" ]; then 
	einfo "home : ${MntTmp} systeme de fichier : ${SysFichierMntTmp}"
fi
if [ "${MntBoot}" != "" ]; then 
	einfo "boot : ${MntBoot} systeme de fichier : ${SysFichierMntBoot}"
fi
einfo "Swap : ${SwapMont}"
echo -n "Appuyer sur entrée pour continuer ou ctrl+C pour quitter : "
read Touche
return
}
##############################################################################
#Gestion du point de montage /home
##############################################################################
function pg_AjoutPointMontHome()
{
echo "Recherche des partitions pour point de montage facultatif" >> $LOG_FILE
#traitement de home
title="Choix de la partition home"
message="Sélectionner la partition home."
SelChoixPartition
PartDD=$PartDDChoix
if [ "${PartDD}" == "" ]; then 
	title="Information"
	message="Aucune partition choisie."
	MntHome=""
	SysFichierMntHome=""
	echo "Aucune partition choisie" >> $LOG_FILE
	showMessageBox
	return
fi
#verifie si cette partition n'est pas déjà attribuée
PartEnCours=${PartDD}
PointMontageEnCours="home"
fgbo_PartitionAttribue
if [ ${bo_Travail} == 1 ]; then
	bo_Travail=0
	return
fi
#on peux continuer partition libre
MntHome=${PartDD}
showSysFile
SysFichierMntHome=$SysFichier
#Formate et monte partition ?
# Formater la partition oui/non 
dialog --backtitle "$BACK_TITLE" \
--title "Installation LiveCd" \
--yesno "\n Désirez-vous formater $MntHome?" \
16 70
if [ $? -eq 1 ]; then
	echo "Pas de formatage "
else
	umount $MntHome > /dev/null 2>&1
	# si xfs ajout option -f car si partition existante ne formate pas
	if [ "${SysFichierMntHome}" == "xfs" ]; then
		mkfs.$SysFichierMntHome -f $MntHome
	else
		mkfs.$SysFichierMntHome $MntHome
	fi
	echo "Formatage de $MntHome" >> $LOG_FILE
fi
# creation point de montage
umount $MntHome > /dev/null 2>&1
mkdir -p $RepInstall/home
mount -t $SysFichierMntHome $MntHome $RepInstall/home
LigneMtab=""
#traitement de LigneMtab
LigneMtab=$(grep $RepInstall/home /etc/mtab)
if ["$LigneMtab" == "" ]; then 
	#il y a pb
	title="Erreur"
	message="Aucune partition /home trouvé pour $MntHome."
	echo "Pas de partition /home " >> $LOG_FILE
	MntHome=""
	showMessageBox
	return
fi
#fin formatage et montage
#historique
echo "Partition pour home : $MntHome" >> $LOG_FILE
echo "Systeme de fichier pour home : $SysFichierMntHome" >> $LOG_FILE

#dans le post installation mise à jour de fstab 
return
}
##############################################################################
#Gestion du point de montage /Var
##############################################################################
function pg_AjoutPointMontVar()
{
echo "Recherche des partitions pour point de montage facultatif" >> $LOG_FILE
#traitement de var
title="Choix de la partition var"
message="Sélectionner la partition var."
SelChoixPartition
PartDD=$PartDDChoix
if [ "${PartDD}" == "" ]; then 
	title="Information"
	message="Aucune partition choisie."
	MntVar=""
	SysFichierMntVar=""
	echo "Aucune partition choisie" >> $LOG_FILE
	showMessageBox
	return
fi
#verifie si cette partition n'est pas déjà attribuée
PartEnCours=${PartDD}
PointMontageEnCours="var"
fgbo_PartitionAttribue
if [ ${bo_Travail} == 1 ]; then
	bo_Travail=0
	return
fi
#on peux continuer partition libre
MntVar=${PartDD}
showSysFile
SysFichierMntVar=$SysFichier
#Formate et monte partition ?
# Formater la partition oui/non 
dialog --backtitle "$BACK_TITLE" \
--title "Installation LiveCd" \
--yesno "\n Désirez-vous formater $MntHome?" \
16 70
if [ $? -eq 1 ]; then
	echo "Pas de formatage "
else
	umount $MntVar > /dev/null 2>&1
	# si xfs ajout option -f car si partition existante ne formate pas
	if [ "${SysFichierMntVar}" == "xfs" ]; then
		mkfs.$SysFichierMntVar -f $MntVar
	else
		mkfs.$SysFichierMntVar $MntVar
	fi
	echo "Formatage de $MntVar" >> $LOG_FILE
fi
# creation point de montage
umount $MntVar > /dev/null 2>&1
mkdir -p $RepInstall/var
mount -t $SysFichierMntVar $MntVar $RepInstall/var
LigneMtab=""
#traitement de LigneMtab
LigneMtab=$(grep $RepInstall/var /etc/mtab)
if [ "${LigneMtab}" == "" ]; then 
	#il y a pb
	title="Erreur"
	message="Aucune partition /var trouvé pour $MntVar."
	echo "Pas de partition /var " >> $LOG_FILE
	MntVar=""
	showMessageBox
	return
fi
#fin formatage et montage
#historique
echo "Partition pour var : $MntVar" >> $LOG_FILE
echo "Systeme de fichier pour var : $SysFichierMntVar" >> $LOG_FILE

#dans le post installation mise à jour de fstab 
}
##############################################################################
#Gestion du point de montage /tmp
##############################################################################
function pg_AjoutPointMontTmp()
{
echo "Recherche des partitions pour point de montage facultatif" >> $LOG_FILE
#traitement de home
title="Choix de la partition tmp"
message="Sélectionner la partition tmp."
SelChoixPartition
PartDD=$PartDDChoix
if [ "{$PartDD}" == "" ]; then 
	title="Information"
	message="Aucune partition choisie."
	MntTmp=""
	SysFichierMntTmp=""
	echo "Aucune partition choisie" >> $LOG_FILE
	showMessageBox
	return
fi
#verifie si cette partition n'est pas déjà attribuée
PartEnCours=${PartDD}
PointMontageEnCours="tmp"
fgbo_PartitionAttribue
if [ ${bo_Travail} == 1 ]; then
	bo_Travail=0
	return
fi
#on peux continuer partition libre
MntTmp=${PartDD}
showSysFile
SysFichierMntTmp=$SysFichier
#Formate et monte partition ?
# Formater la partition oui/non 
dialog --backtitle "$BACK_TITLE" \
--title "Installation LiveCd" \
--yesno "\n Désirez-vous formater $MntTmp?" \
16 70
if [ $? -eq 1 ]; then
	echo "Pas de formatage "
else
	umount $MntTmp > /dev/null 2>&1
	# si xfs ajout option -f car si partition existante ne formate pas
	if [ "${SysFichierMntTmp}" == "xfs" ]; then
		mkfs.$SysFichierMntTmp -f $MntTmp
	else
		mkfs.$SysFichierMntTmp $MntTmp
	fi
	echo "Formatage de $MntTmp" >> $LOG_FILE
fi
# creation point de montage
umount $MntTmp > /dev/null 2>&1
mkdir -p $RepInstall/tmp
mount -t $SysFichierMntTmp $MntTmp $RepInstall/tmp
LigneMtab=""
#traitement de LigneMtab
LigneMtab=$(grep $RepInstall/tmp /etc/mtab)
if [ "${LigneMtab}" == "" ]; then 
	#il y a pb
	title="Erreur"
	message="Aucune partition /tmp trouvé pour $MntTmp."
	echo "Pas de partition /tmp " >> $LOG_FILE
	MntTmp=""
	showMessageBox
	return
fi
#fin formatage et montage
#historique
echo "Partition pour tmp : $MntTmp" >> $LOG_FILE
echo "Systeme de fichier pour tmp : $SysFichierMntTmp" >> $LOG_FILE

#dans le post installation mise à jour de fstab 
}
##############################################################################
#Gestion du point de montage /boot
##############################################################################
function pg_AjoutPointMontBoot()
{
echo "Recherche des partitions pour point de montage facultatif" >> $LOG_FILE
#traitement de boot
title="Choix de la partition boot"
message="Sélectionner la partition boot."
SelChoixPartition
PartDD=$PartDDChoix
if [ "{$PartDD}" == "" ]; then 
	title="Information"
	message="Aucune partition choisie."
	MntBoot=""
	SysFichierMntBoot=""
	echo "Aucune partition choisie" >> $LOG_FILE
	showMessageBox
	return
fi
#verifie si cette partition n'est pas déjà attribuée
PartEnCours=${PartDD}
PointMontageEnCours="boot"
fgbo_PartitionAttribue
if [ ${bo_Travail} == 1 ]; then
	bo_Travail=0
	return
fi
#on peux continuer partition libre
MntBoot=${PartDD}
showSysFile
SysFichierMntBoot=$SysFichier
#Formate et monte partition ?
# Formater la partition oui/non 
dialog --backtitle "$BACK_TITLE" \
--title "Installation LiveCd" \
--yesno "\n Désirez-vous formater $MntBoot?" \
16 70
if [ $? -eq 1 ]; then
	echo "Pas de formatage "
else
	umount $MntBoot > /dev/null 2>&1
	# si xfs ajout option -f car si partition existante ne formate pas
	if [ "${SysFichierMntBoot}" == "xfs" ]; then
		mkfs.$SysFichierMntBoot -f $MntBoot
	else
		mkfs.$SysFichierMntBoot $MntBoot
	fi
	echo "Formatage de $MntBoot" >> $LOG_FILE
fi
# creation point de montage
umount $MntBoot > /dev/null 2>&1
mkdir -p $RepInstall/boot
mount -t $SysFichierMntBoot $MntBoot $RepInstall/boot
LigneMtab=""
#traitement de LigneMtab
LigneMtab=$(grep $RepInstall/boot /etc/mtab)
if [ "${LigneMtab}" == "" ]; then 
	#il y a pb
	title="Erreur"
	message="Aucune partition /boot trouvé pour $MntTmp."
	echo "Pas de partition /boot " >> $LOG_FILE
	MntBoot=""
	showMessageBox
	return
fi
#fin formatage et montage
#historique
echo "Partition pour boot : $MntBoot" >> $LOG_FILE
echo "Systeme de fichier pour boot : $SysFichierMntBoot" >> $LOG_FILE

#dans le posinstall pour fstab
}
##############################################################################
#Mise à jour de /etc/fstab appelé dans le post installation
#dans le cas ou l'on ajoute /home /var /tmp ...
##############################################################################
function pg_MajFstab()
{
echo "Mise à jour de $RepInstall/etc/fstab" >> $LOG_FILE
if [ "${MntTmp}" != "" ]; then 
	echo "$MntTmp               /tmp                $SysFichierMntTmp     defaults        1 1    " >> $RepInstall/etc/fstab
	umount $MntTmp
fi
if [ "${MntVar}" != "" ]; then 
	echo "$MntVar               /var                $SysFichierMntVar     defaults        1 1    " >> $RepInstall/etc/fstab
	umount $MntVar
fi
if [ "${MntHome}" != "" ]; then 
	echo "$MntHome               /home                $SysFichierMntHome     defaults        1 1    " >> $RepInstall/etc/fstab
	umount $MntHome
fi
if [ "${MntBoot}" != "" ]; then 
	echo "$MntBoot               /boot                $SysFichierMntBoot     defaults        1 1    " >> $RepInstall/etc/fstab
	umount $MntBoot
fi
}
##############################################################################
#Vérifie si cette partition est déjà utilisé
##############################################################################
function fgbo_PartitionAttribue()
{
if [ "${MntHome}" == "${PartEnCours}" ] &&  [ "${PointMontageEnCours}" != "home" ]; then
	message="Partition déjà attribué à home."
	showMessageBox
	bo_Travail=1
	return
fi	
if [ "${MntVar}" == "${PartEnCours}" ] && [ "${PointMontageEnCours}" != "var" ]; then
	message="Partition déjà attribué à var."
	showMessageBox
	bo_Travail=1
	return
fi
if [ "${MntTmp}" == "{$PartEnCours}" ] && [ "${PointMontageEnCours}" != "tmp" ]; then
	message="Partition déjà attribué à tmp."
	showMessageBox
	bo_Travail=1
	return
fi	
if [ "${MntBoot}" == "{$PartEnCours}" ] && [ "${PointMontageEnCours}" != "boot" ]; then
	message="Partition déjà attribué à boot."
	showMessageBox
	bo_Travail=1
	return
fi
if [ "${diskRoot}" == "${PartEnCours}" ]; then
	message="Partition déjà attribué à root."
	showMessageBox
	bo_Travail=1
	return
fi	
if [ "${SwapMont}" == "${PartEnCours}" ]; then
	message="Partition déjà attribué au swap."
	bo_Travail=1
	showMessageBox
	return
fi 	
return
}
##############################################################################
#fonction unioné une partition qui permet d'ajouter des programmes an mode 
#LiveCD principalement 
##############################################################################
function pg_unionPart()
{
#test si mode LiveCD
if [ $LiveCD == 1 ]; then

#Ne peux fonctionner si xorg actif
if [ -s /var/lib/init.d/started/xdm ]
then
	title="Information"
	message="Il vous faut quitter Xorg. Pour cela soit redémarrer en mode console \
	soit arréter xorg avec la commande : /etc/init.d/xdm stop \
	puis relancer le script avec la commande frogdev.sh"
	showMessageBox
	return 
fi


#demande partition
title="Choix de la partition"
message="Sélectionner la partition qui permettra d'installer les programmes."
SelChoixPartition
PartDD="${PartDDChoix}"
if [ "$PartDD" == "" ]; then 
	title="Information"
	message="Aucune partition choisie."
	echo "Aucune partition choisie pg_unionPart" >> $LOG_FILE
	showMessageBox
	return
fi


# creation point de montage
mkdir  ${MntUnionfs}

#monte partition
umount ${PartDD} > /dev/null 2>&1
mount ${PartDD} ${MntUnionfs}

#prepare les points de montage pour unionfs
mkdir -p ${MntUnionfs}

#prepare le demontage lors de l'arret du PC 
if [ -s /root/frogdevdemonte.sh ]; then
	echo "Le fichier existe."
else
	echo "#!/bin/sh" > /root/frogdevdemonte.sh
	chmod +x /root/frogdevdemonte.sh
fi

#supprime ancien unionfs
unionctl ${FileCDROM} --remove ${MntUnionfs} > /dev/null 2>&1
#unionise
unionctl ${FileCDROM} --mode /mnt/squash ro
unionctl ${FileCDROM} --add  --mode rw ${MntUnionfs}
echo "unionctl ${FileCDROM} --remove ${MntUnionfs}" >> /root/frogdevdemonte.sh


#unionise /tmp
mount -t unionfs -o dirs=/tmp none /tmp
unionctl /tmp --add   --before /tmp --mode rw ${MntUnionfs}
echo "unionctl /tmp --remove ${MntUnionfs}" >> /root/frogdevdemonte.sh
echo "umount /tmp" >> /root/frogdevdemonte.sh

#creation des liens et des répertoires pour portage
#et unionise certains repertoires de var
rm -R /var/tmp > /dev/null 2>&1
mkdir -p ${MntUnionfs}/vartmp
ln ${MntUnionfs}/vartmp /var/tmp -s 
mkdir -p /var/log
mkdir -p /var/log/portage
mkdir -p /var/tmp/portage
mkdir -p /var/tmp/confcache
mkdir -p /var/db
mkdir -p /var/cache
#unionise base de données des logiciels installés via portage
mkdir -p ${MntUnionfs}/dbfrog
mount -t unionfs -o dirs=${MntUnionfs}/dbfrog none /var/db
echo "umount /var/db" >> /root/frogdevdemonte.sh
mkdir -p ${MntUnionfs}/cachefrog
mount -t unionfs -o dirs=${MntUnionfs}/cachefrog none /var/cache
echo "umount /var/cache" >> /root/frogdevdemonte.sh

#création des liens
mkdir -p ${MntUnionfs}/modules
ln -s ${MntUnionfs}/modules /modules 
mkdir -p /modules/cvs-src
mkdir -p /modules/pkg

#verifie si base portage installé est déjà présente
if [ -s ${FilePortage} ]; then
	#session deja presente
	#demande si on ecrase
	dialog --backtitle "$BACK_TITLE" \
	--title "Frogdev " \
	--yesno "\n Une session précèdente a été trouvé. Ecrasé la base de données logiciel installée?" \
	16 70
	if [ $? -eq 1 ]; then
		echo "Garde la session courrante " >> $LOG_FILE
	else	
		echo "Ecrase la base existante de portage " >> $LOG_FILE
		pg_decompPortage
	fi
	
else
	pg_decompPortage
fi



#télécharge le dernier arbre de portage ?
#Le systeme est unione et pret pour installation de nouveau logiciel
dialog --backtitle "$BACK_TITLE" \
--title "Frogdev " \
--yesno "\n Télécharger la derniere version des logiciels disponible ?" \
16 70
if [ $? -eq 1 ]; then
	echo "Pas de synchonisation " >> $LOG_FILE
else	
	echo "Synchronise portage portage " >> $LOG_FILE
	emerge --sync
fi
einfo "Le système est pret pour installer de nouveau logiciel. "
einfo "Pour installer un logiciel, utilisez porthole"
einfo "dans la section outils système sous Gnome."
einfo "Pour installer un logiciel en ligne de commande,"
einfo "utilisez la commande emerge"
echo -n "Appuyer sur entrée pour continuer : "
read Touche

#relance xorg
dialog --backtitle "$BACK_TITLE" \
--title "Frogdev " \
--yesno "\n Relancer Xorg ?" \
16 70
if [ $? -eq 1 ]; then
	echo "Pas de relance " >> $LOG_FILE
else	
	/etc/init.d/xdm start
fi

else
	#Le LiveCD n'a pas été trouvé
	title="Information"
	message="Le LiveCD n'a pas été trouvé. Reportez vous à la FAQ"
	showMessageBox
fi
return
}
##############################################################################
#fonction dadvsi (en cours)
##############################################################################
function pg_dadvsi
{
#Installe logiciel pour pays francophone non francais
pg_unionPart
return
}
##############################################################################
#fonction decompresse base portage installé 
##############################################################################
function pg_decompPortage
{
echo "Décompression base portage" >> $LOG_FILE	
#cd ${FileCDROM}
cd /
#suppression ancienne base
rm -R /var/db > /dev/null 2>&1
rm -R /var/cache > /dev/null 2>&1
einfo "Mise en place de portage"
rm -R /var/db/* > /dev/null 2>&1
rm -R /var/cache/* > /dev/null 2>&1
rm vardb.tar.bz2 > /dev/null 2>&1
cp $FileTar/vardb.tar.bz2 vardb.tar.bz2
einfo "copie de vardb finie"
tar -xjpf vardb.tar.bz2 
einfo "decompression de vardb finie"
rm vardb.tar.bz2 > /dev/null 2>&1
echo "vardb recupere " >> $LOG_FILE
rm varcache.tar.bz2 > /dev/null 2>&1
cp $FileTar/varcache.tar.bz2 varcache.tar.bz2
einfo "copie de varcache finie"
tar -xjpf varcache.tar.bz2
einfo "decompression de varcache finie"
rm varcache.tar.bz2
#archive genere par script parfois dhcpd sur carte present
rm /var/cache/dhcpd*
echo "var cache recupere " >> $LOG_FILE

#marque la partition pour utilisation futur
echo date > ${FilePortage}
return
}
##############################################################################
#fonction de test 
##############################################################################
function pg_Test()
{
LiveCD=1
echo "Procedure de mise au point param TEST"
pg_MenuMontPoint
return
}

##############################################################################
#OBSOLETE pour iptables
##############################################################################
function checkkernel() {
	if [ ! -e ${IPTABLES_PROC} ] ; then
		eerror "Votre noyau ne supporte pas iptable"
		eerror "chargez les modules et recommencez."
		return 1
	fi
	return 0
}
##############################################################################
#OBSOLETE fonction pour wifi radar
##############################################################################
function pg_wifiRadar()
{
title=$BACK_TITLE
let maxInput=40
let boxHeight=9
message="Quelle interface utiliser eth0,eth1,ath0? : "
showInputBox
#suppression ancienne valeur
if grep -q "^interface = " /etc/wifi-radar/wifi-radar.conf ; then
	grep -v "^interface = " /etc/wifi-radar/wifi-radar.conf  > /etc/wifi-radar/wifi-radar.conf.new
	mv -f /etc/wifi-radar/wifi-radar.conf.new /etc/wifi-radar/wifi-radar.conf 
fi
echo "interface = $userInput"  >> /etc/wifi-radar/wifi-radar.conf
wifi-radar.sh
return
}

##############################################################################
#fonction pour creer gentoomove
##############################################################################
function pg_CreateGentooMove()
{
einfo "Attention toute les informations du disque serront supprimées!!!"
einfo "Il faut un disk de 4Go minimum "
read -p "Continuer ? [y]/n " ASK

if [ "${ASK}" == "n" ]; then
	return
fi

SelChoixPartition
repinstall=$PartDDChoix

mkfs.ext3 ${repinstall}
mount -t ext3 ${repinstall} /mnt/cle 
cp -aRv /bin /mnt/cle
cp -aRv /boot /mnt/cle
cp -aRv /etc /mnt/cle
cp -aRv /home /mnt/cle
cp -aRv /lib /mnt/cle
cp -aRv /opt /mnt/cle
cp -aRv /root /mnt/cle
cp -aRv /sbin /mnt/cle
cp -aRv /sys /mnt/cle
cp -aRv /usr /mnt/cle
cp -aRv /var /mnt/cle
mkdir /mnt/cle/tmp
mkdir /mnt/cle/proc
mkdir /mnt/cle/dev 
date > /mnt/cle/GentooMove 

#maj grub
echo "title=Gentoo Linux FrogDev" > /mnt/cle/boot/grub/menu.lst
echo "root (cd)" >> /mnt/cle/boot/grub/menu.lst
echo "kernel (cd)/boot/kernel-froggykernel acpi=on root=/dev/ram0 rw init=/linuxrc splash=silent,fadein,theme:Metal-Tosh quiet CONSOLE=/dev/tty1 scandelay bootusb" >> /mnt/cle/boot/grub/menu.lst
echo "initrd (cd)/boot/initramfs-froggykernel " >> /mnt/cle/boot/grub/menu.lst

#maj fstab A faire
rm /mnt/cle/etc/fstab
echo "/dev/fd0			/mnt/floppy	auto		noauto			0 0" > /mnt/cle/etc/fstab.new
echo "none			/proc		proc		defaults		0 0" >> /mnt/cle/etc/fstab.new
echo "none			/dev/shm	tmpfs		defaults		0 0" >> /mnt/cle/etc/fstab.new


#installation grub 
grub-install ${repinstall:0:8} 

read -p "Créer un lanceur (Image iso) ? y/[n] " ASK

if [ "${ASK}" == "y" ]; then
	#creation lanceur
	mkdir /mnt/cle/tmp/lanceur
	cp -aRv /mnt/cle/boot /mnt/cle/tmp/lanceur 
	cd /mnt/cle/tmp/lanceur 
	mkisofs -J -R -l -V "Lanceur" -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4  -c livecd -o /tmp/live.iso /tmp/lanceur 
	einfo "Lanceur créé /tmp/live.iso"
	echo -n "Appuyer sur entrée pour continuer : "
	read Touche

fi


}

#site bash
##http://www.bsdbooks.net/shells/scripting/fr/
##############################################################################
#################################
# Declaration des variables     #
#################################
#einfo et tous les scripts gentoo ne prennent pas en charge utf8 donc pas d'accent
#
BACK_TITLE="FrogDev"
VERSION=0.94j
TEMP_FILE=/var/log/temp
LOG_FILE=/var/log/frog.log
CDROM_MOUNT_POINT=/mnt/cdrom
RepInstall=/mnt/gentoo
FileSquash=/mnt/cdrom/livecd.squashfs
FileChangeLog=/root/FrogNews.txt
FileTar=/mnt/cdrom/files
FileCDROM=/mnt/livecd
Paquet=""
FileDejaMonteUnion=""
sourceSquash=/mnt/squash


profil="0"
SysFichier="ext3"
#Partition Root
diskRoot=""
#Partition swap
SwapMont=""
userInput=""
PartDDChoix=""
LiveCD=0
BOOTLEVEL="boot"
DEFAULTLEVEL="default"
source /sbin/functions.sh
############################################
#Ajout pour le partitionnement		         #
#Gestion de /boot /home /tmp et /var       #
#Le but étant de rester simple pour le     #
#moment ces 4points devraient suffire. Par #
#la suite on pourra utiliser un tableau    #
#si il y a des demandes d'autres point de  # 
#montages  (le but est d'etre simple)      #
############################################
#booleen de travail 
bo_Travail=0
#La partition en cours d'analyse
PartEnCours=""
PointMontageEnCours=""
MntHome=""
SysFichierMntHome=ext3
MntTmp=""
SysFichierMntTmp=ext3
MntVar=""
SysFichierMntVar=ext3
MntBoot=""
SysFichierMntBoot=ext3
#Par défaut en ext3 
#Pour unionfs installation
MntUnionfs=/unionfs
FilePortage=${MntUnionfs}/froggyPortage
#########################################
#OBSOLETE gestion du parefeu			      #
#########################################
#Déclaration des variables
IPTABLES="/sbin/iptables"
IPTABLES_PROC="/proc/net/ip_tables_names"

#POUR LA MISE EN PLACE
#1=oui 0=non
#permet de tout logger 
DEBUG=1
TEXTE_LOG="FIREWALL_refus"

#pour activer les logs
#1=oui
#2=non
ACTIVE_LOG=1


#IP du reseau local de 192.168.0.0 à 192.168.0.24
RESEAU_LOCAL="192.168.0.0/24"

#cette machine fait office de passerelle 1=oui 0=non
PASSERELLE=0

#SERVICE A OUVRIR 1=Oui 0=Non
SERV_SSH=0
SERV_SMTP=0
SERV_HTTP=0
SERV_HTTPS=0
SERV_DNS=0
SERV_IRC=0
SERV_CVS=0
SERV_FTP=0
SERV_MSN=1
SERV_DONKEY=0
SERV_VIDEOLAN=0
SERV_SAP=0
SERV_GNOMEMETING=0
#FIN OBSOLETE

##############################################################################
###############################
# Démarrage du script #
###############################
let boxHeight=7
if test -z "$1"  # pas de parametre
then
	checkUser
	GetNews
	#checkfrogdevVersion
	checkFrogDev
	showAbout
	showLicense
	showMainMenu
	exitInstaller
else
paramTest="TEST"
paramInstall="installation"
paramRestaure="restaure" 
paramMountPart="mountpart" 
paramPrepareMo="preparemo" 
paramMountMo="mountmo" 
paramMakeMo="makemo"
paramWifiRadar="wifiradar"
	if [ $1 == "$paramTest" ]; then 
		#Lancement de la fonction de test de fonction pour debug et mise au point
		pg_Test 
	fi
	if [ $1 == "$paramRestaure" ]; then 
		#Lancement de la fonction du repertoire itinérrant
		checkFrogDev 
		showChoixRep 
	fi
	if [ $1 == "$paramInstall" ]; then 
		#Lancement de l'installation 
		checkUser
		checkFrogDev 
		showAbout 
		showLicense 
		showMainMenu
		exitInstaller 
	fi 
	if [ $1 == "$paramMountPart" ]; then 
		#Lancement du montage d'une partition pour un module 
		checkFrogDev 
		_pl_MountRepModules 
	fi
	if [ $1 == "$paramPrepareMo" ]; then
		#Lancement du montage d'une partition pour création de modules 
		checkFrogDev
		_pl_PrepareMo 
	fi 
	if [ $1 == "$paramMountMo" ]; then  
		checkFrogDev
		_pl_MountMo 
	fi 
	if [ $1 == "$paramMakeMo" ]; then  
		checkFrogDev
		paquet=${2}
		_pl_MakeMo 
	fi 
	#OBSOLETE
	if [ $1 == "$paramWifiRadar" ]; then  
		 pg_wifiRadar
	fi 
fi
