#!/usr/bin/perl

$version = "16";

# sert à l'automatisation des updates du côté serveur
if ($#ARGV == 0) {
	if ($ARGV[0] eq "v") {
		print "$version";
		exit;
	}
}



$id=`whoami`;
chomp $id;
if ($id eq "root") {
	print "Il NE faut PAS être 'root' pour tester.\n";
	exit;
}



# tests d'accessibilité de serveurs

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


# si on donne 'f' comme argument il fait le test sur une 'fausse' adresse
# ce qui provoquera l'échec du test
if ($ARGV[0] eq "f") {
  $serveur_local30 = "192.168.30.139";
}



# /sbin/ifconfig = commande UNIX standard affichant l'état
# des interface réseau du système (if = InterFace)
# exécutez '/sbin/ifconfig' (ou mon alias 'ifc') 
# à la ligne de commande pour voir ce qu'elle affiche
@ifg=`/sbin/ifconfig`;
# récupéré dans un vecteur (@ifg): donc chaque ligne de l'affichage normal se retrouve
# dans un élément du vecteur @ifg
foreach (@ifg) {
	if (/^lo/) {
	# Si on arrive à la ligne qui commence par 'lo'
	# c'est qu'on n'a pas encore trouvé d'adresse IP,
	# car dès qu'on l'a trouvée, on sort de la boucle 
	# (par le 'last;' du 'elsif')
	# L'interface 'lo' a aussi une adresse IP
	# qui est toujours la m^eme : 127.0.0.1
	# mais ce n'est pas ça qui nous intéresse.
	# L'interface 'lo' est toujours affichée après 
	# les 'eth' par la commande /sbin/ifconfig .
	# En sortant tout de suite (par le 'last;)
	# on n'assigne pas de valeur à $ip 
	# qui, interprétée en contexte string, vaudra donc ""
		last;
	} elsif (/inet adr:/) {
	# si la ligne contient 'inet adr:'nv7
		s/.*inet adr:([^ ]*) .*/$1/;
		# on extrait l'adresse IP
		$ip = $1;
		last;
	}
}

if ( $ip =~ /^192.168.30./) {
  $server_version = `perl udpget6 $serveur_local30 0.5 cs.version.server`;
  if ($server_version eq "") {
    $serveur_local30_accessible = "false";
  } else {
    $serveur_local30_accessible = "true";
  }
} else {
  $serveur_local30_accessible = "false";
  # ce n'est pas une certitude absolue,
  # mais la probabilité est très faible
  # d'avoir une telle adresse IP en dehors du local 30
  # dans le cas d'une connexion internet 'privée'
  # c'est à dire où l'adresse IP est
  # attribuée par le modem par le protocole 'dhcp'
}



if ($serveur_local30_accessible eq "true") {
# si le serveur du local 30 est accessible
	$serveur = $serveur_local30;

	$nom_du_script = $0;
	$nom_du_script =~ s/\.\///;
	if (($nom_du_script eq "csv.init") and (! -f "/etc/hd.nb")) {
	  exit;
	} else {
	# cas normal d'utilisation du script
	# lorsqu'il est installé dans /usr/local/bin
	# la plupart du temps en mode 'automatique' à partir du fichier /etc/rc.local
		$hdnb = `/bin/cat /etc/hd.nb`;
		if ($hdnb eq "") {
			$option = "l";
			# option locale
		} else {
			$option = "c";
			# option complète
		}
	}

} else {
	$serveur_internet_accessible = `ping -w 1 $serveur_internet > /dev/null && echo -n true`;
	if ($serveur_internet_accessible eq "true") {
	# si le serveur internet est accessible
		$serveur = "$serveur_internet";
		$option = "i";
		# toujours partielle
	} else {
		print "\nPas de serveur accessible !\n\n";
		print "\nSTADARDISATION NON EFFECTUEE !\n\n";
		exit;
	
	}
}

print "\$serveur = $serveur\n\n";
print "\$server_version = $server_version\n\n";

exit;


# recherche des versions de 'cs'

$installed_version = `/bin/cat /etc/cs.version`;
# version de cs actuellement installée
system("/bin/cp /etc/cs.version cs.version.atboot");
# la sauvegarder dans le fichier '/etc/cs.version.atboot'

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

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

if ( "$server_version" eq "") {
	print "\ncsv\n";
	print "\nVersion serveur de cs pas accessible !\n\n";
	print "\nSTADARDISATION NON EFFECTUEE !\n\n";
	exit;
}


# comparaison des versions de 'cs'
# et éventuelle exécution de 'cs'


