#!/usr/bin/perl -w
# Written by Mathieu Cron (mathieu.cron@univ-rennes1.fr)
# Last modified: 11-15-2007

use warnings;

sub AjoutMach;
sub AjoutNiveau;
sub AjoutMachines;
##### PARAMETER GET AND CHECK #####
my $fichier="";
my $deca="  ";
my $decam=" ";
my $sys=`gconftool-2 --get /apps/gnome-terminal/global/profile_list`;
my ($opt);
while ( $opt=shift (@ARGV)) {
       if ($opt eq "-f"){$fichier = shift (@ARGV);
       }
       elsif ($opt eq "-h" or $opt eq "--help") {
               print <<EOF;
usage: sshmenu_conf [-f] fichier [-h]
       -f              Fichier contenant une liste de machines
       -h --help       Display this help
EOF
               exit 0;
       }
}
if ($fichier eq ""){print "Bad usage, try sshmenu_conf -h\n";exit 0;}

#####      MAIN PROGRAM       #####
$systeme=`echo "--- " > sshconfig`;
$systeme=`echo "items: " >> sshconfig`;
$systeme=`cp $fichier T$fichier`;
AjoutNiveau("","racine");
$systeme=`echo "classes: {}" >> sshconfig`;
$systeme=`echo "" >> sshconfig`;
$systeme=`echo "global: " >> sshconfig`;
$systeme=`echo "  menus_open_tabs: 1" >> sshconfig`;
$systeme=`echo "  menus_tearoff: 0" >> sshconfig`;
$systeme=`echo "  menus_open_all: 1" >> sshconfig`;
$systeme=`echo "  tooltip: Administration des serveurs" >> sshconfig`;
$systeme=`echo "  height: 360" >> sshconfig`;
$systeme=`echo "  back_up_config: 0" >> sshconfig`;
$systeme=`echo "  width: 375" >> sshconfig`;
exit;
#####        FUNCTIONS        #####

# Ajout d'une machine
sub AjoutMach{
   my ($machine,$profile,$decalage) = @_;
   $systeme=`echo "$decalage- profile: $profile" >> sshconfig`;
   $systeme=`echo "$decalage  title: $machine" >> sshconfig`;
   $systeme=`echo "$decalage  sshparams: -AX $machine" >> sshconfig`;
   $systeme=`echo "$decalage  type: host" >> sshconfig`;
   $systeme=`echo "$decalage  geometry: " >> sshconfig`;
}

# Ajout des machines
sub AjoutMachines{
  my ($decal,$cat) = @_;
  print "Voulez-vous Ajouter des machines dans $cat ? (o/n) ";
  chomp ($_=<>);	
  if ($_ eq "o"){
	  print "Liste des profiles Gnome-terminal : $sys\n";
	  print "Entrez un profile pour $cat : ";
	  chomp($_=<>);
	  $PROF=$_;
	  print "Ajout des machines dans $cat : \n";
	  open FICH, "T".$fichier;
	  @filec= <FICH>;
	  close FICH;
	  $systeme = `rm -f T$fichier`;
	  foreach $fich(@filec){
 	    $fich =~ /(.*)$/;
	    $fichi = $1;
	    print "Ajouter $fichi ? (o/n) : ";
 	    chomp($_=<>);
  	    if ($_ eq "o"){
 	       AjoutMach($fichi,$PROF,$decal);
 	    }
	    else {
	    	$systeme=`echo "$fichi" >> T$fichier`;
      	    }
  	  }
  }
}

# Arborescence
sub AjoutNiveau{
  my ($decal,$cat) = @_;
  print "Voulez-vous creer des categories dans $cat ? (o/n) ";
  chomp ($_=<>);	
  if ($_ eq "o"){
    while (1){
      print "Entrer le nom de la categorie a ajouter dans $cat (ou FIN pour terminer) : ";
      chomp($_=<>);
      my $CAT=$_;
      if ($CAT eq "FIN"){
         last;
      }
      else{
      	$systeme=`echo "$decal- items: " >> sshconfig`;
    	AjoutNiveau($decal.$deca,$cat."/".$CAT);
      	$systeme=`echo "$decal$decam title: $CAT" >> sshconfig`;
      	$systeme=`echo "$decal$decam type: menu" >> sshconfig`;
      }
    }
  }
  AjoutMachines($decal,$cat);
}
