#!/usr/bin/perl

# toute la première partie du script ne sert qu'en cas d'utilisation 'manuelle' du script
# ce qui ne se fait normalement que juste après une nouvelle installation d'une distribution

$id=`whoami`;
chomp $id;
if ($id ne "root") {
	print "Il faut être 'root' pour pouvoir installer la configuration standard\n";
	exit;
}



# vérifier que wget est installé
#	wget est un programme qui permet de télécharger des fichiers,
#	avec les protocoles http et ftp,
#	en ligne de commande
# sinon terminer le script avec un message d'erreur

$nom_programme = "wget";
# trouver l'exécutable
$chemin_executable = `which $nom_programme 2>/dev/null`;
# supprimer la sortie erreur (2) 
# (en la redirigeant vers le fichier "trou noir" /dev/null)
# car elle n'est pas redirigée par la syntaxe ``
# et serait affichée pendant l'exécution de ce script
# ce qui serait désagréable
# voir script sortie_erreur2
chomp $chemin_executable;
# vérifier qu'il existe
if ($chemin_executable eq "") {
	print "\n$nom_programme n'est pas un exécutable dans un des répertoires du \$PATH\n\n";
	print "\nSTADARDISATION NON EFFECTUEE !\n\n";
	exit;
}



$serveur_local30 = "192.168.30.130";
$serveur_internet = "nooware.net";

$ping_local30 = `ping -c 1 $serveur_local30`;
$ping_internet = `ping -c 1 $serveur_internet`;

if ($ping_local30 ne "") {
# si le serveur du local 30 est accessible
	$serveur = $serveur_local30;
	$option = "l";

	$hdnb = shift;
	# pour installation initiale dans le local 30 : paramètre = numéro du disque dur
	chomp $hdnb;

	$nom_du_script = $0;
	$nom_du_script =~ s/\.\///;
	if ($nom_du_script eq "csv.txt") {
	# si le script a été exécuté sous le nom 'csv.txt'
	# c'est une installation initiale
	# et il faut donner le numéro du disque
#	if ($hdnb ne "") {
		if ($hdnb !~ /^\d+$/) {
			print "$hdnb n'est pas un nombre ";
			print "l'argument doit être un nombre de 100 à 200";
			exit;
		}
		
		if ($hdnb > 200) {
			print "$hdnb est supérieur à 200";
			print "l'argument doit être un nombre de 100 à 200";
			exit;
		}
		
		if ($hdnb < 100) {
			print "$hdnb est inférieur à 100";
			print "l'argument doit être un nombre de 100 à 200";
			exit;
		}
	
		system("echo -n $hdnb > /etc/hd.nb");
	
	}

} elsif ($ping_internet ne "") {
# si le serveur internet est accessible
	$serveur = "$serveur_internet";
#	$serveur = "$serveur_internet/epfc";
	$option = "i";
} else {
	print "\nPas de serveur accessible !\n\n";
	print "\nSTADARDISATION NON EFFECTUEE !\n\n";
	exit;

}


# partie commune, la seule à être exécutée en mode 'automatique'
# c'est à dire à partir du fichier /etc/rc.local


$installed_version = `/bin/cat /etc/cs.version`;
# version de cs actuellement installée

if ( -f "/etc/cs.version.server" ) {
	system("/bin/rm -f /etc/cs.version.server");
}
# télécharger le fichier et le mettre dans le répertoire
system("/usr/bin/wget --directory-prefix=/etc http://$serveur/cs.version.server");

$server_version = `/bin/cat /etc/cs.version.server`;
# version de cs actuellement sur le serveur

if ( "$server_version" eq "") {
	print "\nPas de version serveur accessible !\n\n";
	print "\nSTADARDISATION NON EFFECTUEE !\n\n";
	exit;
}


if ( "$installed_version" ne "$server_version") {
# si les versions de cs ne sont pas identiques
	if ( -f "/usr/local/bin/cs" ) {
		system("/bin/rm -f /usr/local/bin/cs");
		# supprimer la version installée
	}
	system("/usr/bin/wget --directory-prefix=/usr/local/bin http://$serveur/cs");
	# télécharger la version du serveur
	system("/bin/chmod +x /usr/local/bin/cs");
	# la rendre exécutable

	system("/usr/local/bin/cs $option");
	# exécuter cs, avec l'option $option

	if ($hdnb ne "") {
	# si c'est un disque tiroir dans le local 30
		system("/usr/local/bin/net.sh");
		# réinitialiser la configuration réseau
	}

}


$hdnb = `cat /etc/hd.nb`;
if ($hdnb ne "") {
# si c'est un disque tiroir dans le local 30
	system("/usr/local/bin/resetuser");
	# exécuter le script qui vérifie s'il faut
	# installer un environnement 'user' "standard"
}

