#!/usr/bin/perl


#########################################################################################
#
# Script de creation du fichier: /etc/apt/sources.list
#
#########################################################################################
# Pour:
#	Debian
#	Debian Multimedia
#	VirtualBox
#	EKD
#	G'MIC
#	Xcfa
#	Cairo-Dock
#########################################################################################
#
#     Script cree par:
#       -b52      http://www.xcfa.tuxfamily.org/
#       -leonux   http://ubunteros.tuxfamily.org/
#
#########################################################################################
#
# Licence GPL 2
#
# GNU General Public License
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# OLD ADRESS:
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# NEW ADRESS:
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#########################################################################################


use strict;			# Toutes les variables doivent être déclarées
use warnings;			# Verification de la syntaxe
use File::Copy;			# Utilisation de la fonction copy
use Switch;			# Utilisation des switch


my $VERSION = '1.0.2';
my $PACKAGE = 'DebianSourcesList.pl';


#########################################################################################
# RAFFRACHIR LA CONSLE
#########################################################################################
system('clear');


#########################################################################################
# DETECTION SI MODE ADMINISTRATEUR
#########################################################################################
my $ModeAdministrateur = ($> != 0) ? "FALSE" : "TRUE";


#########################################################################################
# PRESENTAION DE LA BESTIOLLE
#########################################################################################
# http://www.bandedegeek.info/tmp/depot/depot.tar.gz
#########################################################################################
print " __________________________________________________________________
|                                                                  |
|       $PACKAGE                    $VERSION              |
|__________________________________________________________________|
|                                                                  |
|  SCRIPT DE REMPLACEMENT du fichier /etc/apt/sources.list pour:   |
|                                                                  |
|      Debian: testing, stable, sid                                |
|      VirtualBox                                                  |
|      EKD                                                         |
|      G'MIC                                                       |
|      Xcfa                                                        |
|      Cairo-Dock                                                  |
|                                                                  |
|     Idee de script depuis:                                       |
|     Adaptation par:                                              |
|        -b52         http://www.xcfa.tuxfamily.org/               |
|        -leonux      http://ubunteros.tuxfamily.org/              |
|                                                                  |
|     Licence GPL 2                                                |
|__________________________________________________________________|
|                                                                  |\n";

#########################################################################################
# ROOT ?
#########################################################################################
if ($ModeAdministrateur =~ "TRUE") {
	print "|     VOUS ETES ADMINISTRATEUR : ET L'INSTALLATION S'EFFECTUERA    |\n";
	print "|     Pour une simulation, connectez vous en simple utilisateur    |\n";

} else {
	print "|  VOUS N'ETES PAS ADMINISTRATEUR : UNE SIMULATION SERA EFFECTUEE  |\n";
	print "|  Pour une installation, connectez vous en administrateur         |\n";
}
print "|__________________________________________________________________|\n\n";


#########################################################################################
# DEPOTS DEBIAN LENNY
#########################################################################################
my $data = '
##############################################################
#
# /etc/apt/sources.list produit par: DebianLennySourcesList.pl
#
#     Script cree par:
#     -b52         http://www.xcfa.tuxfamily.org/
#     -leonux      http://ubunteros.tuxfamily.org/
#
#    Licence GPL 2
#
##############################################################
';

my $debian_stable = '
## STABLE
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

## STABLE multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
deb-src http://mirror.home-dn.net/debian-multimedia stable main

# STABLE security
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

# STABLE volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# STABLE debian-multimedia: Christian Marillat
# http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
# dpkg --install ./debian-multimedia-keyring_2008.10.16_all.deb
#
deb http://www.debian-multimedia.org stable main
deb-src http://www.debian-multimedia.org stable main

# STABLE-proposed
deb http://ftp.fr.debian.org/debian/ stable-proposed-updates contrib non-free main
deb-src http://ftp.fr.debian.org/debian/ stable-proposed-updates contrib non-free main
';

my $debian_testing = '
## TESTING
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

## TESTING multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
deb-src http://mirror.home-dn.net/debian-multimedia testing main

# TESTING security
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free

# TESTING volatile
deb http://volatile.debian.org/debian-volatile testing/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile testing/volatile main contrib non-free

# TESTING debian-multimedia: Christian Marillat
# http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
# dpkg --install ./debian-multimedia-keyring_2008.10.16_all.deb
#
deb http://www.debian-multimedia.org testing main
deb-src http://www.debian-multimedia.org testing main

# TESTING-proposed
deb http://ftp.fr.debian.org/debian/ testing-proposed-updates contrib non-free main
deb-src http://ftp.fr.debian.org/debian/ testing-proposed-updates contrib non-free main
';

my $debian_sid = '
## SID
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

## SID multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
deb-src http://mirror.home-dn.net/debian-multimedia sid main

# SID security
deb http://security.debian.org/ sid/updates main contrib non-free
deb-src http://security.debian.org/ sid/updates main contrib non-free

# SID volatile
deb http://volatile.debian.org/debian-volatile sid/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile sid/volatile main contrib non-free

# SID debian-multimedia: Christian Marillat
# http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
# dpkg --install ./debian-multimedia-keyring_2008.10.16_all.deb
#
deb http://www.debian-multimedia.org sid main
deb-src http://www.debian-multimedia.org sid main

# SID-proposed
deb http://ftp.fr.debian.org/debian/ sid-proposed-updates contrib non-free main
deb-src http://ftp.fr.debian.org/debian/ sid-proposed-updates contrib non-free main
';

#########################################################################################
# DEPOTS VIRTUALBOX
#########################################################################################
my $virtualbox = '
# VIRTUALBOX
# wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | apt-key add -
#
deb http://download.virtualbox.org/virtualbox/debian lenny non-free
';

#########################################################################################
# DEPOTS EKD
#########################################################################################
my $ekd = '
# EKD
# wget http://download.tuxfamily.org/ekdforum/ekd/cle-ekd.key.asc -O - | apt-key add -
#
deb http://download.tuxfamily.org/ekdforum/ekd lenny contrib
';

#########################################################################################
# DEPOTS XCFA
#########################################################################################
my $xcfa = '
# XCFA
# wget http://download.tuxfamily.org/xcfaudio/download/xcfaudio.key.asc -O - | apt-key add -
#
deb http://download.tuxfamily.org/xcfaudio/xcfa_beta/ dev contrib
deb-src http://download.tuxfamily.org/xcfaudio/xcfa_beta/ dev contrib
';

#########################################################################################
# DEPOTS GMIC
#########################################################################################
my $gmic = '
# GMIC
# wget http://download.tuxfamily.org/xcfaudio/download/xcfaudio.key.asc -O - | apt-key add -
#
deb http://download.tuxfamily.org/xcfaudio/gmic/ lenny contrib
deb-src http://download.tuxfamily.org/xcfaudio/gmic/ lenny contrib
';

#########################################################################################
# DEPOTS CAIRO-DOCK
#########################################################################################
my $cairo_dock = '
# CAIRO-DOCK
# wget -q http://repository.cairo-dock.org/cairo-dock.gpg -O- | apt-key add -
# http://www.cairo-dock.org/ww_page.php?p=Dépôt Debian&lang=fr
#
deb http://repository.cairo-dock.org/debian stable cairo-dock
';


#########################################################################################
# AFFICHAGE D'UN ENTETE
#########################################################################################
sub affiche_entete
{
	print "\n";
	print "+=============================================================================\n";
	print "|  $_[0]\n";
	print "+=============================================================================\n";
}


#########################################################################################
# LES DEPOTS TIERS
#########################################################################################
affiche_entete("Ajouter en complement le(s) depot(s) de :");

	my $tmp;

	#################################################################################
	# Debian STABLE | TESTING | SID
	#################################################################################
	my $active_debian = 'stable';
	print "  - debian stable      [ 1 par defaut ]\n";
	print "  - debian testing     [ 2 ]\n";
	print "  - debian sid         [ 3 ]\n";
	print "    Votre choix .......... >  ? ";
	chomp($tmp = <STDIN>);
	switch($tmp) {
		case "1" {
			print "STABLE\n";
			$active_debian = 'stable';
		}
		case "2" {
			print "STABLE\n";
			$active_debian = 'testing';
		}
		case "3" {
			print "STABLE\n";
			$active_debian = 'sid';
		}
		else {
			print "STABLE par defaut\n";
			$active_debian = 'stable';
		}
	}
	
	#################################################################################
	# VIRTUALBOX
	#################################################################################
	my $active_virtualbox = 'o';
	print '  - virtualbox         [O/n] ? ';
	chomp($tmp = <STDIN>);
	if (($tmp =~ /o/i) || ($tmp =~ /n/i)) {
		$active_virtualbox = $tmp;
	}

	#################################################################################
	# EKD
	#################################################################################
	my $active_ekd = 'o';
	print '  - ekd                [O/n] ? ';
	chomp($tmp = <STDIN>);
	if (($tmp =~ /o/i) || ($tmp =~ /n/i)) {
		$active_ekd = $tmp;
	}

	#################################################################################
	# XCFA
	#################################################################################
	my $active_xcfa = 'o';
	print '  - xcfa               [O/n] ? ';
	chomp($tmp = <STDIN>);
	if (($tmp =~ /o/i) || ($tmp =~ /n/i)) {
		$active_xcfa = $tmp;
	}

	#################################################################################
	# GMIC
	#################################################################################
	my $active_gmic = 'o';
	print '  - gmic               [O/n] ? ';
	chomp($tmp = <STDIN>);
	if (($tmp =~ /o/i) || ($tmp =~ /n/i)) {
		$active_gmic = $tmp;
	}
	
	#################################################################################
	# CAIRO-DOCK
	#################################################################################
	my $active_cairo_dock = 'o';
	print '  - Cairo-Dock         [O/n] ? ';
	chomp($tmp = <STDIN>);
	if (($tmp =~ /o/i) || ($tmp =~ /n/i)) {
		$active_cairo_dock = $tmp;
	}
	
	#################################################################################
	# AJOUT DES DEPOTS
	#################################################################################
	if ($active_debian =~ "stable") {
		$data .= $debian_stable;
	}
	elsif ($active_debian =~ "testing") {
		$data .= $debian_testing;
	}
	elsif ($active_debian =~ "sid") {
		$data .= $debian_sid;
	}
	
	if ($active_virtualbox =~ /o/i) {
		$data .= $virtualbox;
	}
	if ($active_ekd =~ /o/i) {
		$data .= $ekd;
	}
	if ($active_xcfa =~ /o/i) {
		$data .= $xcfa;
	}
	if ($active_gmic =~ /o/i) {
		$data .= $gmic;
	}
	if ($active_cairo_dock =~ /o/i) {
		$data .= $cairo_dock;
	}


#################################################################################
# PAHNAMES POUR LA REDIRECTION DES FICHIERS
#################################################################################
my $path_pwd = `pwd`;
chomp($path_pwd);
my $path_bak = "";
my $path_ori = "";

if ($ModeAdministrateur =~ "TRUE") {
	$path_bak = "/etc/apt/sources.list.bak";
	$path_ori = "/etc/apt/sources.list";
}
else {
	$path_bak = $path_pwd . "/sources.list.bak";
	$path_ori = $path_pwd . "/sources.list";
}


#########################################################################################
# SAUVEGARDE DU FICHIER EN BAK
#########################################################################################
print "\n$path_bak\n\tCONTIENT L'ANCIEN FICHIER sources.list\n";
copy('/etc/apt/sources.list', $path_bak) or die "File cannot be copied.";


#########################################################################################
# LE NOUVEAU SOURCES.LIST
#########################################################################################
print "$path_ori\n\tCONTIENT LE NOUVEAU FICHIER sources.list\n";
open SOURCE, "> $path_ori";
print SOURCE $data, "\n";
close SOURCE;


#########################################################################################
# ACTIVATION DES CLES GPG
#########################################################################################
if ($active_virtualbox =~ /o/i) {
	affiche_entete("Recuperation de la cle publique du depot de virtualbox...");
	if ($ModeAdministrateur =~ "TRUE") {
		system("wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | apt-key add -");
	}
}
if (($active_xcfa =~ /o/i) || ($active_gmic =~ /o/i)) {
	affiche_entete("Recuperation de la cle publique du depot de xcfa et/ou gmic...");
	if ($ModeAdministrateur =~ "TRUE") {
		system("wget -q http://download.tuxfamily.org/xcfaudio/download/xcfaudio.key.asc -O- | apt-key add -");
	}
}
if ($active_ekd =~ /o/i) {
	affiche_entete("Recuperation de la cle publique du depot de ekd...");
	if ($ModeAdministrateur =~ "TRUE") {
		system("wget -q http://download.tuxfamily.org/ekdforum/ekd/cle-ekd.key.asc -O- | apt-key add -");
	}
}
if ($active_cairo_dock =~ /o/i) {
	affiche_entete("Recuperation de la cle publique du depot de cairo-dock...");
	if ($ModeAdministrateur =~ "TRUE") {
		system("wget -q http://repository.cairo-dock.org/cairo-dock.gpg -O- | apt-key add -");
	}
}


#########################################################################################
# APT-GET UPDATE ou APTITUDE UPDATE
#########################################################################################
affiche_entete("Mise a jour de la liste des paquets par apt-get ou aptitude  ?");

print "\n\t",'Choix du programme de mise a jour de la base',"\n","\t",'[ 1 ] APT-GET  par defaut',"\n\t",'[ 2 ] APTITUDE          ? ';
my $apt_update = 'apt-get update';
chomp($tmp = <STDIN>);
if ($tmp =~ '2') {
	$apt_update = 'aptitude update';
}
affiche_entete("Mise a jour de la liste des paquets avec: $apt_update");

if ($ModeAdministrateur =~ "TRUE") {
	system($apt_update);
}

print "\n\n";


