Commit 9360beae authored by David's avatar David

Implémentation champs keyssh et options

parent 0650e8ee
......@@ -534,6 +534,9 @@
<widget class="GtkFileChooserButton" id="keyssh">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip" translatable="yes">Votre clef SSH</property>
<property name="create_folders">False</property>
<property name="show_hidden">True</property>
</widget>
<packing>
<property name="expand">True</property>
......
......@@ -90,8 +90,6 @@ use vars qw($gladexml) ;
############
sub init {
$params->{fichierConfig} = "$ENV{HOME}/.xsshfs";
$params->{comboSetText} = "Slectionner";
# Dmarage de l'interface graphique
$gladexml = $X::gladexml ;
# Valeur d'environement par default pour les nouvelle connexion
......@@ -123,14 +121,16 @@ sub fermeture_nom_sav{
# Nouveau montage
sub on_bouton_monter_new_clicked {
debug("Nouveau montage");
# On rcupère les donnes du formulaire
# On rcuprer les donnes du formulaire
my $data_user = $gladexml->get_widget('user')->get_text();
my $data_host = $gladexml->get_widget('host')->get_text();
my $data_dir = $gladexml->get_widget('dir')->get_text();
my $data_mountpoint = $gladexml->get_widget('mountpoint')->get_text();
my $data_port = $gladexml->get_widget('port')->get_text();
my $data_keyssh = $gladexml->get_widget('keyssh')->get_filenames();
my $data_options = $gladexml->get_widget('options')->get_text();
my $check_sav = $gladexml->get_widget('Sauvegarde_Check_Bouton' ) ;
# Vrification si au moin le hosts à t renseign
# Vrification si au moin le hosts t renseign
if ($data_host eq "")
{
Erreur_Dialog("Erreur : \n\t- L'adresse du serveur est obligatoire")
......@@ -142,23 +142,27 @@ sub on_bouton_monter_new_clicked {
$gladexml->get_widget('Sav_Nom')->set_text("$data_user\@$data_host");
my $Nom_Sav_Dialog = $gladexml->get_widget('Nom_Sav_Dialog')->run;
}
mount_sshfs($data_user, $data_host, $data_dir, $data_mountpoint, $data_port);
mount_sshfs($data_user, $data_host, $data_dir, $data_mountpoint, $data_port, $data_keyssh, $data_options);
}
}
# Montage d'une connexion enregistre
sub on_bouton_monter_sav_clicked {
debug("Montage d'une connexion enregistre");
my $nom_connexion_enregistree = $gladexml->get_widget('connexion_sav_combo')->entry->get_text();
if ($nom_connexion_enregistree ne $params->{comboSetText} && $nom_connexion_enregistree ne "")
{
if ($nom_connexion_enregistree ne $params->{comboSetText} && $nom_connexion_enregistree ne "") {
# Exploration du fichiers de sauvegarde
open (FICSAV_R, "$params->{fichierConfig}");
while (<FICSAV_R>) {
my @data_sav = split ("#", $_);
#print "comparaison de $data_sav[0] eq $nom_connexion_enregistree \n";
if ($data_sav[0] eq $nom_connexion_enregistree)
{
mount_sshfs($data_sav[1], $data_sav[2], $data_sav[3], $data_sav[4], $data_sav[5]);
if ($data_sav[0] eq $nom_connexion_enregistree) {
# Eviter les warnings quand les champs optionnels sont vides
if (!defined $data_sav[6]) {
$data_sav[6] = '';
}
if (!defined $data_sav[7]) {
$data_sav[7] = '';
}
mount_sshfs($data_sav[1], $data_sav[2], $data_sav[3], $data_sav[4], $data_sav[5], $data_sav[6], $data_sav[7]);
}
}
close(FICSAV_R);
......@@ -176,25 +180,8 @@ sub on_bouton_demonter_clicked {
# Effacer une connexion enregistre
sub on_button_effacer_connexion_enregistree_clicked {
debug("Effacer connexion enregistre");
my $nom_connexion_enregistree = $gladexml->get_widget('connexion_sav_combo')->entry->get_text();
if ($nom_connexion_enregistree ne $params->{comboSetText})
{
rename $params->{fichierConfig}, "$params->{fichierConfig}.back";
# Lecture du fichier de sauvegarde back
open (FICSAV_R, "$params->{fichierConfig}.back");
open (FICSAV_W, ">> $params->{fichierConfig}");
while (<FICSAV_R>) {
my ($var_nom_sav) = split ("#", $_);
if ($var_nom_sav ne $nom_connexion_enregistree)
{
print FICSAV_W $_;
}
}
close(FICSAV_W);
close(FICSAV_R);
unlink "$params->{fichierConfig}.back";
&actualiser_connexion_sav_combo;
}
&effacer_connexio_enregistree($gladexml->get_widget('connexion_sav_combo')->entry->get_text());
&actualiser_connexion_sav_combo;
}
sub on_bouton_actualiser_deconnexion_clicked {
&actualiser_deconnexion_combo;
......@@ -218,10 +205,8 @@ sub on_bouton_ouvrir_clicked {
# Fonction debug pour la prog
sub debug {
# 1 = Activer / 0 = Dsactiv
my $msg_debug=shift;
if ($params->{debug} == 1)
{
if ($params->{debug} == 1) {
print "Debug : $msg_debug\n";
}
}
......@@ -242,13 +227,10 @@ sub actualiser_connexion_sav_combo{
}
close(FICSAV);
}
if ($nb_item eq 0)
{
if ($nb_item eq 0) {
$gladexml->get_widget("connexion_sav_combo")->set_popdown_strings("");
$gladexml->get_widget("connexion_sav_combo")->entry->set_text("");
}
else
{
} else {
$gladexml->get_widget("connexion_sav_combo")->set_popdown_strings(@liste_sav);
$gladexml->get_widget("connexion_sav_combo")->entry->set_text($params->{comboSetText});
}
......@@ -261,8 +243,7 @@ sub actualiser_deconnexion_combo {
open (FICMTAB, "/etc/mtab");
while (<FICMTAB>) {
# Slection des mount mont par l'utilisateur courant et tant du sshfs
if (index($_, "sshfs") && index($_, "$ENV{USER}") ne -1 && index($_, ".gvfs") eq -1)
{
if (index($_, "sshfs") && index($_, "$ENV{USER}") ne -1 && index($_, ".gvfs") eq -1) {
my @var_add_deco = split (" ", $_);
@liste_deco = (@liste_deco, $var_add_deco[1]);
$nb_item = ($nb_item + 1);
......@@ -270,13 +251,11 @@ sub actualiser_deconnexion_combo {
}
close(FICMTAB);
# Pour palier au BUG de l'actualisation quand il ne reste plus qu'une valeur on dsactive le combo si elle est vide
if ($nb_item eq 0)
{
if ($nb_item eq 0) {
$gladexml->get_widget("deconnexion_combo")->set_popdown_strings("");
$gladexml->get_widget("deconnexion_combo")->entry->set_text("");
}
else
{
else {
$gladexml->get_widget("deconnexion_combo")->set_popdown_strings(@liste_deco);
$gladexml->get_widget("deconnexion_combo")->entry->set_text($params->{comboSetText});
}
......@@ -285,15 +264,14 @@ sub actualiser_deconnexion_combo {
sub on_host_or_user_changed {
my $data_user = $gladexml->get_widget('user')->get_text();
my $data_host = $gladexml->get_widget('host')->get_text();
if ($data_user ne "" & $data_host ne "")
{
if ($data_user ne "" & $data_host ne "") {
my $mountpoint_complet = "$ENV{HOME}/$data_user\@$data_host";
$gladexml->get_widget('mountpoint')->set_text($mountpoint_complet);
} else {
$gladexml->get_widget('mountpoint')->set_text("");
}
}
# Enregistrement de la connexion
# Enregistrement de la connexion - suite popoup d'enregistrement
sub Enregistrer_connexion {
debug("Enregistrement de la connexion...");
my $data_nom_sav = $gladexml->get_widget('Sav_Nom')->get_text();
......@@ -302,54 +280,81 @@ sub Enregistrer_connexion {
my $data_dir = $gladexml->get_widget('dir')->get_text();
my $data_mountpoint = $gladexml->get_widget('mountpoint')->get_text();
my $data_port = $gladexml->get_widget('port')->get_text();
my $data_keyssh = $gladexml->get_widget('keyssh')->get_filenames();
my $data_options = $gladexml->get_widget('options')->get_text();
# Vrification de la non existance de la connexion
my $erreur_sav_existe = 0;
open (FICSAV, $params->{fichierConfig});
while (<FICSAV>) {
my ($var_nom_sav) = split ("#", $_);
if ($var_nom_sav eq $data_nom_sav)
{
if ($var_nom_sav eq $data_nom_sav){
$erreur_sav_existe = 1;
}
}
close(FICSAV);
if ($erreur_sav_existe == 1)
{
if ($erreur_sav_existe == 1) {
Erreur_Dialog("Impossible d'enregistrer : \n\t-Ce nom de sauvegarde existe!");
&fermeture_nom_sav;
my $Nom_Sav_Dialog = $gladexml->get_widget('Nom_Sav_Dialog')->run;
} else {
# Enregistrement de la connexion
open(FICSAV_W, ">> $params->{fichierConfig}");
print FICSAV_W "$data_nom_sav#$data_user#$data_host#$data_dir#$data_mountpoint#$data_port#\n";
print FICSAV_W "$data_nom_sav#$data_user#$data_host#$data_dir#$data_mountpoint#$data_port#$data_keyssh#$data_options#\n";
close(FICSAV_W);
&fermeture_nom_sav;
&actualiser_connexion_sav_combo;
}
}
sub effacer_connexio_enregistree{
my ($nom_connexion_enregistree) = @_;
debug("Effacement de $nom_connexion_enregistree");
if ($nom_connexion_enregistree ne $params->{comboSetText})
{
rename $params->{fichierConfig}, "$params->{fichierConfig}.back";
# Lecture du fichier de sauvegarde back
open (FICSAV_R, "$params->{fichierConfig}.back");
open (FICSAV_W, ">> $params->{fichierConfig}");
while (<FICSAV_R>) {
my ($var_nom_sav) = split ("#", $_);
if ($var_nom_sav ne $nom_connexion_enregistree)
{
print FICSAV_W $_;
}
}
close(FICSAV_W);
close(FICSAV_R);
unlink "$params->{fichierConfig}.back";
}
}
# Mount
sub mount_sshfs {
debug("Montage !");
my ($data_user, $data_host, $data_dir, $data_mountpoint, $data_port) = @_;
my ($data_user, $data_host, $data_dir, $data_mountpoint, $data_port, $data_keyssh, $data_options) = @_;
# Vrification des datas
if ($data_user eq "")
{
if ($data_user eq "") {
$data_user=$ENV{ USER};
}
if ($data_mountpoint eq "")
{
if ($data_mountpoint eq "") {
$data_mountpoint="$ENV{HOME}/$data_user\@$data_host";
}
if ($data_port eq "")
{
if ($data_port eq "") {
$data_port="22";
}
# Si le rpertoire n'existe pas on le cre
if (! -d $data_mountpoint)
{
if (! -d $data_mountpoint) {
mkdir $data_mountpoint;
}
system("sshfs $data_user\@$data_host:$data_dir $data_mountpoint -p $data_port 2> /tmp/xsshfs-sortie");
# Prparation de la commande
my $cmd="sshfs $data_user\@$data_host:$data_dir $data_mountpoint -p $data_port 2> /tmp/xsshfs-sortie";
if ($data_keyssh ne "" && $data_keyssh ne "\n") {
$cmd="$cmd -o IdentityFile=$data_keyssh";
}
if ($data_options ne "" && $data_options ne "\n") {
$cmd="$cmd $data_options";
}
# Excution de la commande :
debug($cmd);
system($cmd);
if ($? != 0) {
open (TMPSORTIE, "/tmp/xsshfs-sortie");
undef $/;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment