use Win32::NetResource qw(GetUNCName AddConnection CancelConnection);

# Afficher le titre
print "[sys_NetUse.pl] : Script de connexion rapide aux volumes reseau\n";
print "                  Franck OBERLECHNER © 2005 www.oberlechner.net\n\n";

if (scalar @ARGV == 0) {
	ParametresManquants();
}
	
my $reg;

my $unite = '';
$unite = shift @ARGV;
$unite = uc($unite);
if ( $unite eq '' ) {
	ParametresManquants();
}

my $partage = '';
$partage = shift @ARGV;
if ( $partage eq '' ) {
	ParametresManquants();
}
print "\tConnexion de l'unite $unite du volume $partage demandee\n";


GetUNCName( $UNC_deja_connecte, $unite );
if ( length($UNC_deja_connecte)==0 ) {
	print "\t$unite n'est pas encore connecte\n";
	# puis reconnecter la bonne unite
	ConnecterLunite($unite,$partage);

} elsif ( uc($partage) eq uc($UNC_deja_connecte) ) {
	print "\t$unite est deja connecte a ce volume\n";
	# ON NE FAIT RIEN

} else {
	print "\t$unite est deja connecte mais pas au bon volume ($UNC_deja_connecte)\n";
	# Deconnecter l'unite incorrecte
	CancelConnection($unite,0,1) || die Win32::FormatMessage(Win32::GetLastError)."\n";
	print "\t$unite est deconnecte de ce volume\n";
	# puis reconnecter la bonne unite
	ConnecterLunite($unite,$partage);
}


sub ConnecterLunite {
	my $localname = shift;
	my $remotename = shift;

	my $username = '';
	my $password = '';
	my $persistent = 1; # 1 for yes

	my %NETRESOURCE=(
		Type => RESOURCETYPE_ANY,
		RemoteName => $remotename,
		LocalName => $localname,
	);

	# Map a remote share to the local drive letter 
	AddConnection(\%NETRESOURCE,$password,$username,$persistent) || die Win32::FormatMessage(Win32::GetLastError)."\n";
	print "\t$localname est maintenant connecte a $remotename\n";
}

sub ParametresManquants {
	print "\t2 PARAMETRES SONT OBLIGATOIRES :\n";
	print "\t. L'unite a connecter ( ex K: )\n";
	print "\t. Le nom du partage   ( ex \\\\JUPITER\\V_Informatique )\n";
	exit 1;
}