#!/usr/bin/perl

#use strict;
#use warnings;
#SCRIPT PERMETTANT DE METTRE LES INTERFACES APPROPRIEES POUR LA MACHINE ENTREE EN PARAMETRE ET DE LA DEMARRER
my %machines = (
             's-infra' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-proxy' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-spec' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-mon' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-mess' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-itil' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-proxy' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-backup' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             's-appli' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-infra'
             },
             'r-int' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-link',
		    netif3 => 'n-wifi',
		    netif4 => 'n-user',
		    netif5 => 'n-infra'
             },
             'r-ext' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-dmz',
		    netif3 => 'enp0s3',
                    netif4 => 'n-linkv',
                    netif5 => 'n-link'
             },
             'r-vp2' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-agence',
                    netif3 => 'enp0s3'
             },
             'r-vp1' => {
                    netif1 => 'n-adm',
                    netif2 => 'enp0s3',
                    netif3 => 'n-linkv' 
             },
             's-lb' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-dmz',
                    netif3 => 'n-dmz-lb'
             },
             's-lb-bd' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-dmz-db'
                    
             },
             's-lb-web1' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-dmz-lb',
                    netif3 => 'n-dmz-db'
             },
             's-lb-web2' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-dmz-lb',
                    netif3 => 'n-dmz-db'
             },
  	     's-nas' => {
                    netif1 => 'n-adm',
                    netif2 => 'n-dmz-db',
             }







);


my ($net1, $net2, $net3, $net4, $net5);

my $machine = shift;
die "usage : gsbstart <machine>" unless ( $machine);

#print $machines { $machine }  "\n";
if (%{$machines{$machine}}) { 
#	print $machines { $machine } {netif1}, "\n";
        $net1   =  $machines { $machine } {netif1};
        $net2   =  $machines { $machine } {netif2};
	$net3   =  $machines { $machine } {netif3};
        $net4   =  $machines { $machine } {netif4};
        $net5   =  $machines { $machine } {netif5};

	

} else {
	print "machine $machine inconnue\n";
}
#
  
my $ninfra = "VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\""; 

my $rint = "VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\"\nVBoxManage modifyvm ".$machine. " --nic3 intnet\nVBoxManage modifyvm ".$machine. " --intnet3 \"". $net3."\"\nVBoxManage modifyvm ".$machine. " --nic4 intnet\nVBoxManage modifyvm ".$machine. " --intnet4 \"". $net4."\"\nVBoxManage modifyvm ".$machine. " --nic5 intnet\nVBoxManage modifyvm ".$machine. " --intnet5 \"". $net5."\"";

my $rext = "VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\"\nVBoxManage modifyvm ".$machine. " --nic3 bridged\nVBoxManage modifyvm ".$machine. " --bridgeadapter1 ". $net3."\nVBoxManage modifyvm ".$machine. " --nic4 intnet\nVBoxManage modifyvm ".$machine. " --intnet4 \"". $net4."\"\nVBoxManage modifyvm ".$machine. " --nic5 intnet\nVBoxManage modifyvm ".$machine. " --intnet5 \"". $net5."\"";

my $rvp2 = "VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\"\nVBoxManage modifyvm ".$machine. " --nic3 bridged\nVBoxManage modifyvm ".$machine. " --bridgeadapter1 ". $net3."\n";

my $rvp1 = "VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 bridged\nVBoxManage modifyvm ".$machine. " --bridgeadapter1 ". $net2 ."\nVBoxManage modifyvm ".$machine. " --nic3 intnet\nVBoxManage modifyvm ".$machine. " --intnet3 \"". $net3."\"\n";

my $lb = "VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\"\nVBoxManage modifyvm ".$machine. " --nic3 intnet\nVBoxManage modifyvm ".$machine. " --intnet3 ". $net3."\n";

my $lbbd ="VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\"\n";

my $lbweb = "VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\"\nVBoxManage modifyvm ".$machine. " --nic3 intnet\nVBoxManage modifyvm ".$machine. " --intnet3 \"". $net3."\"\n"; 

my $snas ="VBoxManage modifyvm ".$machine. " --nic1 intnet\nVBoxManage modifyvm ".$machine. " --intnet1 \"". $net1."\"\nVBoxManage modifyvm ".$machine. " --nic2 intnet\nVBoxManage modifyvm ".$machine. " --intnet2 \"". $net2."\"\n";

#print $routeur;


if ($machine eq "r-int") {
		qx($rint);
		print "la création des interfaces du routeur $machine a fonctionné!\n";
}else{
	if ($machine eq "r-ext") {
		qx($rext);
	}else{
		qx($ninfra);
		print "la création des interfaces de $machine a fonctionné!\n";
	}	
}
if ($machine eq "r-vp2") {
	qx($rvp2);
}
if ($machine eq "r-vp1") {
        qx($rvp1);
}
if ($machine eq "s-lb"){
	qx($lb);
}
if ($machine eq "s-lb-web1"){
	qx($lbweb);
}
if ($machine eq "s-lb-web2"){
        qx($lbweb);
}
if ($machine eq "s-lb-bd"){
        qx($lbbd);
}
if ($machine eq "s-nas"){
        qx($snas);
}

qx(VBoxManage startvm $machine);