Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !



hubiC

hubiC (http://www.ovh.fr/hubiC/) est le service de stockage Cloud de OVH.

OVH met à la disposition des utilisateurs différents logiciels clients pour hubiC, dont un pour Linux.

Apparemment le client n'est plus disponible début 2013. L'établissement d'une connexion en webdav est possible, cf ci-dessous.

Pré-requis

Installation

Installation manuelle :

Télécharger, décompresser dans /opt l'archive disponible sur https://hubic.labs.ovh.com/hubic/hubiC-browser-LATEST.tar.gz :

cd /tmp

wget https://hubic.labs.ovh.com/hubic/hubiC-browser-LATEST.tar.gz

sudo tar xvfz hubiC-browser-LATEST.tar.gz -C /opt

Editer le fichier hubiC-browser :

gksudo gedit /opt/hubiC-browser/hubiC-browser

Et remplacer sont contenu par les instructions suivantes :

#!/bin/sh
readlinkOutput=`readlink $0`
if [ "${readlinkOutput}x" = "x"  ]; then
dirname=`dirname ${readlinkOutput}`
else
dirname=`dirname $readlinkOutput`
fi
appname=`basename $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname/.lib
export LD_LIBRARY_PATH
$dirname/.hubiC-browser-bin

Créer un lien symbolique sur le script dans /usr/bin :

sudo ln -s /opt/hubiC-browser/hubiC-browser /usr/bin/hubiC-browser

Créer et éditer le fichier lanceur :

gksudo gedit /usr/share/applications/hubiC-browser.desktop

Le contenu doit être le suivant :

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Categories=GNOME;GTK;
Exec=hubiC-browser
Name=hubiC
Comment=Le navigateur de Fichier hubiC
Icon=/usr/share/icons/hubiclogo.svg

Dernière étape, télécharger l'icône du lanceur :

cd /usr/share/icons

sudo wget http://www.le-libriste.fr/hubiclogo.svg

Installation automatique :

Utilisation

Lancez l'application via le dash (Ubuntu 11.04 et ultérieures) ou via le terminal (toutes versions d'Ubuntu) avec la commande suivante :

hubiC-browser

Désinstallation

Désinstallation manuelle :

Pour supprimer cette application, il suffit de procéder

* à la suppression de la directory /opt/hubiC-browser ;

* à la suppression du lien symbolique /usr/bin/hubiC-browser ;

* à la suppression du lanceur /usr/share/applications/hubiC-browser.desktop.

La connexion webdav est un peu plus complexe à mettre en œuvre mais fonctionne parfaitement avec Quantal à la date du 1er mai 2013.

Cette manipulation fonctionne parfaitement … tant que l'on ne se déconnecte pas trop longtemps (mise à jour quotidienne ?). II est donc nécessaire de récupérer manuellement des identifiants. Le tutoriel vous propose de passer par un lanceur qu'il faudra malheureusement activer à deux reprises.

Création d'un compte hubiC

Commencer par créer un compte hubiC sur le site du fournisseur. Bien noter ses identifiants (un identifiant et un mot de passe) qui seront dénommés "identifiants hubiC" dans la suite du tuto.

Récupération des identifiants webdav

Les identifiants de connexion web ne suffisent pas pour se connecter. Il est nécessaire de récupérer des identifiants spécifiques. Plusieurs scripts sont disponibles sur internet, qui fonctionnent plus ou moins bien selon les configurations. Le script suivant, en python, a bien fonctionné sur une configuration Quetzal .

La source de ce script, récupéré sur internet, a été perdue par le rédacteur de cette partie du tutoriel. Si le créateur du script reconnaît son œuvre, qu'il reçoive immédiatement toutes les excuses qui lui sont dues et soit convaincu qu'aucune mauvaise manière ne cherche à lui être faite. Si un lecteur reconnaît le script, merci à lui de bien vouloir modifier la page pour citer l'auteur.
Cette partie de la manipulation proposée est celle qui est la moins sécurisée puisqu'elle nécessite que soient saisis en clair (en lignes 79 et 80 du script python) les identifiants de connexion à Hubic. Pour un ordinateur personnel aux profils à usage unique (pas aux profils partagés) sur ordinateur personnel dont la partition /home/utilisateur est cryptée, protégé par mot de passe, le risque est limité d'autant qu'il est proposé un peu plus loin dans le tutoriel de crypter les données sauvegardées sur Hubic par encfs. Il faut mesurer le risque au regard de ses propres pratiques et savoir que toute personne malveillante ou imprudente qui entrerait en possession de ces identifiants pourrait donc accéder à l'espace Hubic, éventuellement copier ou effacer les données stockées … mais pas les lire si elles sont cryptées par encfs ainsi qu'il est proposé de le faire (à la condition que le mot de passe de cryptage soit différent du mot de passe Hubic, évidement).

Le texte du script webdav_hubic_credentials.py à copier/coller dans un fichier texte (par exemple avec gedit : copier-coller le texte intégral sans ajout puis sauvegarder par control-S) :

webdav_hubic_credentials.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Renvoie les identifiants de connexion au webdav Hubic à partir des identifiants web (saisis en dur !!!)
 
import httplib, urllib
 
class config:
    ovh_host = "ws.ovh.com"
 
def get_webdav_info(login, password):
 
    ws_info={}
    null = None
 
    # Log into CloudNAS with nasLogin and retrieve a session ID
    print 'Logging into CloudNAS to retrieve a session ID...'
    params = 'session=&params={"email":"%s","password":"%s"}' % (urllib.quote(login), urllib.quote(password))
    headers = {"Content-type": 'application/x-www-form-urlencoded',
               "User-Agent": 'hubiC/0.4.8 beta (Windows NT 6.1; fr_FR)'}
    conn = httplib.HTTPSConnection(config.ovh_host)
    conn.request("POST", "/cloudnas/r3/ws.dispatcher/nasLogin", params, headers)
    resp = conn.getresponse()
    s = resp.status
    r = resp.reason
    data = resp.read()
    try:
        d = eval(data)
        sid = d['answer']['id']
    except KeyError:
        return ws_info
    finally:
        conn.close()
    print '# SID:', sid
 
    # POST on getNas using session ID to get URL
    print 'Retrieving user-specific URL for WebDAV...'
    params = 'session=%s' % sid
    conn = httplib.HTTPSConnection(config.ovh_host)
    conn.request("POST", "/cloudnas/r3/ws.dispatcher/getNas", params, headers)
    resp = conn.getresponse()
    s = resp.status
    r = resp.reason
    data = resp.read()
    try:
        d = eval(data)
        ws_info['url'] = d['answer'][0]['url']
    except KeyError :
        return ws_info
    finally:
        conn.close()
    print '# URL:', ws_info['url']
 
    # POST on getCredentials using session ID to get credentials
    print 'Retrieving user-specific credentials for WebDAV...'
    params = 'session=%s' % sid
    conn = httplib.HTTPSConnection(config.ovh_host)
    conn.request("POST", "/cloudnas/r3/ws.dispatcher/getCredentials", params, headers)
    resp = conn.getresponse()
    s = resp.status
    r = resp.reason
    data = resp.read()
    try:
        d = eval(data)
        ws_info['login'] = d['answer']['username']
        ws_info['passwd'] = d['answer']['secret']
    except KeyError:
        return ws_info
    finally:
        conn.close()
    print '# Ok'
 
    return ws_info
 
if __name__ == '__main__':
    import sys
    import getpass
    import os.path
 
    login = 'identifiant_Hubic'
    password = 'mot_de_passe_Hubic'
 
    ws_info = get_webdav_info(login, password)
    print '''
 
        URL: %(url)s
      login: %(login)s
   password: %(passwd)s
 
''' % ws_info

Il est ensuite nécessaire de modifier les lignes 79 et 80 pour y insérer les identifiants Hubic (substituer les identifiants personnalisés en respectant les apostrophes) :

    login = 'identifiant_Hubic'
    password = 'mot_de_passe_Hubic'

Rendre le fichier exécutable et le lancer :

usr@machine:~$ chmod +x hubic-webdav-credentials.txt
usr@machine:~$ ./hubic-webdav-credentials.txt

Le programme python va se connecter au serveur OVH d'hubiC et renvoyer les éléments suivants :

Logging into CloudNAS to retrieve a session ID...
# SID: classic/xx0000-ovh.xxxxxx000000xxx0x00xxxx000xxxxx0x
Retrieving user-specific URL for WebDAV...
# URL: https://xx0000000x000000xxxxxx0000x0xx0x0.wd.hubic.ovh.net
                       
Retrieving user-specific credentials for WebDAV...
# Ok

        URL: https://xxxxxxxxx000000xxxxxxxxx000x00xx0x0.wd.hubic.ovh.net
        login: xXXXXxxxX000xXXxxXXXXXX000000xxxxXXXXXXX000xxxxxXXXXXXXXXXXXXXxxxxxxx000000xxxxxXXXxxxXX0xX
       password:  x000000xxxxxxxxxxxx000xxxxxxx000x                   

Il convient de relever les éléments suivants, appelés identifiants webdav dans la suite du tuto. Attention, la suite de lettre et de chiffres est assez indigeste et doit être reproduite avec précision :

Installation de davfs2

S'il n'est pas présent sur le système, installer davfs2

usr@machine:~$ sudo apt-get install davfs2

Installation du partage

Pour tester le système en "root":
  • créer un point de montage :
usr@machine:~$ mkdir /media/Montage_Hubic
  • monter le partage de fichier :
usr@machine:~$ mount.davfs https://xxxxxxxxx000000xxxxxxxxx000x00xx0x0.wd.hubic.ovh.net /media/Montage_Hubic

Et là tout devrait fonctionner en lançant nautilus en superutilisateur (gksudo nautilus) → apparition d'un nouveau répertoire etc.

Installation du partage en "userspace"

Cette installation sera ainsi accessible sans droits superutilisateurs ce qui est plus pratique et, semble-t-il, plus sûr :

Modification des options de davfs2
usr@machine:~$ sudo dpkg-reconfigure davfs2

et répondre "oui" à la question "Autoriser les utilisateurs non privilégiés à monter les ressources WebDAV ?" (en déplaçant la surbrillance rouge avec la flèche du clavier puis en cliquant sur entrée).

Création d'un point de montage

Il s'agit de créer un répertoire qui sera relié au partage, c'est à dire le répertoire dans lequel apparaîtrons les données sauvegardées dans le cloud, dans Nautilus ou en ligne de commande par exemple. Le choix de ce répertoire et de son positionnement dans l'arborescence est libre, sous réserve qu'il se trouve dan sle répertoire personnel de l'utilisateur (/home/utilisateur/). Dans le cas d'espèce ce sera /home/utilisateur/Documents/Hubic/Montage_Hubic

1. Création du répertoire

usr@machine:~$ mkdir $HOME/Documents/Hubic/Montage_Hubic

2. Création d'une copie de sauvegarde du fichier /etc/fstab

usr@machine:~$ sudo cp /etc/fstab /etc/fstab.anc

En cas de problème de montage des disques, il sera ainsi possible de restaurer la configuration d'origine.

3. Ajout de lignes dans /etc/fstab

Ajout des lignes suivantes dans fstab (idéalement en fin de fichier pour éviter des suppressions malencontreuses), par exemple avec gedit en mode superutilisateur :

fstab

# Montage WebDav Hubic
https://xxxxxxxxx000000xxxxxxxxx000x00xx0x0.wd.hubic.ovh.net /home/utilisateur/Hubic/Montage_Hubic davfs rw,user,noauto 0 0
Ajout de l'utilisateur courant au groupe davfs2
usr@machine:~$ sudo adduser $USER davfs2
Création du répertoire caché .davfs2 si nécessaire

Si le répertoire caché .davfs2 n'existe pas dans le répertoire personnel, le créer :

usr@machine:~$ mkdir $HOME/.davfs2

Ensuite, copier dans ce nouveau répertoire les fichiers secrets et dav2fs.conf" depuis le répertoire /etc/dav2fs et rendre l'utilisateur courant propriétaire de secrets. Si le répertoire .davfs2 est préexistant, vérifier que ces fichiers sont présents, sinon les copier également :

usr@machine:~$ cp /etc/davfs2/davfs2.conf ~/.davfs2
usr@machine:~$ sudo cp /etc/davfs2/secrets ~/.davfs2
usr@machine:~$ sudo chown $USER ~/.davfs2/secrets
Modification du fichier $HOME/.davfs2/secrets

Modifier le fichier $HOME/.davfs2/secrets en y ajoutant les lignes suivantes :

$HOME/.davfs2/secrets

# Accès Hubic
#————–
#
# mise à jour du : […]
/home/utilisateur/Hubic/Montage_Hubic identifiant_webdav mot_de_passe_webdav

Soit quelque chose qui ressemble à cela :

$HOME/.davfs2/secrets

# Accès Hubic
#————–
#
# mise à jour du : dimanche 16 juin 2013, 12:50:09 (UTC+0200)
/home/utilisateur/Hubic/Montage_Hubic xXXXXxxxX000xXXxxXXXXXX000000xxxxXXXXXXX000xxxxxXXXXXXXXXXXXXXxxxxxxx000000xxxxxXXXxxxXX0xX x000000xxxxxxxxxxxx000xxxxxxx000x
La présence des lignes de commentaire commençant par "#" n'est évidement pas nécessaire. Toutefois, dans la suite du tutoriel il est supposé qu'il existe une ligne commençant par "# mise à" qui sera mise à jour à chaque modification (traçabilité) et dont l'existence sera testée et cherchée.
Modification du fichier $HOME/.davfs2/davfs2.conf

Dans le tuto sur davfs2, il est conseillé de modifier également le fichier davfs2.conf en ajoutant (ou décommentant) la ligne suivante :

$HOME/.davfs2/davfs2.conf

use_locks 0

À la lecture du contenu de davfs2.conf, il est apparu une ligne commentée ainsi libellée

$HOME/.davfs2/davfs2.conf

#secrets ~/.davfs2/secrets # user config file only

Elle a donc été décommentée, ça semble logique :

$HOME/.davfs2/davfs2.conf

secrets ~/.davfs2/secrets # user config file only

Ça y est, ça fonctionne. Il est désormais possible de monter et démonter à volonté l'espace de stockage dans Nautilus ou bien naviguer en ligne de commande ou par tout autre moyen.

En cas de connexion directe à hubiC par internet, ne pas oublier de démonter la partition virtuelle (dans Nautilus, clic droit sur l'emplacement).

Mise à jour des identifiants webdav

À ce stade du tutoriel, une liaison directe webdav avec l'espace de stockage distant Hubic a été créée. Elle est accessible dans Nautilus, un nouveau périphérique apparaît dans la fenêtre de gauche de Nautilus. Dans l'exemple donné ce périphérique s'appelle Montage_Hubic et s'il n'est pas monté automatiquement à l'ouverture de Nautilus, il peut l'être par simple clic sur son nom. Malheureusement au bout de quelques temps (demain par exemple), ce bel édifice se lézardera : les identifiants webdav sont modifiés régulièrement par Hubic (une fois par jour ?) et le montage ne peut plus se faire. Comment résoudre cette difficulté ? Deux solutions sont proposées :

  1. Manuelle : lancement de webdav_hubic_credentials.py, récupération manuelle des identifiants webdav et modification manuelle du fichier secrets selon la méthode expliquée ci-dessus. Lors de la nouvelle tentative de connexion dans Nautilus, tout fonctionne bien à nouveau.
  2. Par simple clic : création d'un script bash appelé par un lanceur qui effectuera l'opération de mise à jour et de remplacement des identifiants webdav.

Création du script de mise à jour des identifiants webdav

Deux scripts seront nécessaires pour réaliser cette opération. Il est proposé de les stocker dans un nouveau répertoire à créer dans $HOME/.davfs2/montage_auto/. De nombreux ubunteros préfèrent utiliser un répertoire Scripts dédié, à chacun sa méthode.

Le nouveau répertoire est ainsi créé :

usr@machine:~$ mkdir $HOME/.davfs2/montage_auto
Opération préalable

Le script de mise à jour et les scripts de montage du répertoire crypté ont été conçus pour une machine disposant dans un répertoire dédié de scripts divers de conception personnelle dont l'un est destiné à éviter d'utiliser des noms de fichiers déjà existant. Les scripts utilisés pour la connexion en webdav font appel à ce script, il est donc proposé d'ajouter ce script dans le répertoire de webdav sauf à devoir revoir la conception des scripts proposés sur cette page. Ce script, dénommé fichier_unique.sh se contente d'indiquer si un nom de fichier est utilisé dans le répertoire courant. Il est à copier tel quel dans $HOME/.davfs2/montage_auto/ sous le nom fichier_unique.sh. Ne pas oublier de le rendre exécutable.

fichier_unique.sh
#!/bin/bash
#
# Création : 7 avril 2013
#	Version : 2.0 - 18 mai 2013
#
# 
# Test du nom du fichier de sortie, on incrémente le compteur si le nom est déjà utilisé
# Renvoie un nouveau nom incrémenté d'une valeur de compteur si le fichier existe déjà,
# nom inchangé sinon
# Options :
#		-e : extension du nom de fichier à tester (aucune en cas d'omission)
#		-d : chemin du répertoire de test (répertoire courant en cas d'omission)
#		-c : initialisation de la valeur du compteur, 0 si omis
#		-l : nombre minimal de chiffres utilisés pour le nom du compteur, 2 par défaut
#		-m : motif séparant le compteur du nom de fichier, "_" par défaut
#		-n : nom de fichier à tester
#		-r : le nom de fichier à tester est un chemin, ajouter / à la liste des caractères autorisés
#		-x : absence de recherche automatique de l'extension si omise
#		-z : aucun motif de séparation du nom de fichier et du compteur (annule l'option -m et permet d'éviter l'usage du motif par défaut)
#
#	Syntaxe :
#			fichier_unique.sh NOM_TESTE [option] [Option]...
#			fichier_unique.sh  [option] [Option]... NOM_TESTE
#			fichier_unique.sh  [option] [Option]...
#
 
	if [[ "$1" == "-h" ]] ||  [[ "$1" == "-H" ]] # 000
 
		#---------------------------------- Aide ------------------------------------------------
		then
			echo "# Création : 7 avril 2013"
			echo "# Version : 2.0 - 18 mai 2013"
			echo "# Nom : nom_de_fichier_unique.sh"
			echo "# Test du nom du fichier de sortie, on incrémente le compteur si le nom est déjà utilisé"
			echo "# Renvoie un nouveau nom incrémenté d'une valeur de compteur si le fichier existe déjà,"
			echo "# nom inchangé sinon"
			echo "# Options :"
			echo "#		-c : initialisation de la valeur du compteur, 0 si omis"
			echo "#		-d : chemin du répertoire de test (répertoire courant en cas d'omission)"
			echo "#		-e : extension du nom de fichier à tester (aucune en cas d'omission)"
			echo "#		-h, -H : affichage de l'aide (si passé en premier paramètre)"
			echo "#		-l : nombre minimal de chiffres utilisés pour le nom du compteur, 2 par défaut"
			echo "#		-m : motif séparant le compteur du nom de fichier, "_" par défaut"
			echo "#		-n : nom de fichier à tester"
			echo "#		-r : le nom de fichier à tester est un chemin, ajouter / à la liste des caractères autorisés"
			echo "#   -x : absence de test sur l'extension si omise"
			echo "#		-z : aucun motif de séparation du nom de fichier et du compteur (annule l'option -m et permet d'éviter l'usage du motif par défaut)"
 
		#---------------------------------- Corps du programme -----------------------------------
		else																			# 000
 
			if [[ -n "$1" ]] 		#		001
				#--------- En cas d'absence de paramètre, on ne fera pas tourner la procédure.
				then
 
					# -------- initialisation des valeurs par défaut
 					chemin=""
					compteur=-1
					le_motif="_"
					longueur_compteur=2
					extension=""
					repertoire=false
 
					if [[ "$#" > "1" ]]	# S'il n'y a qu'un seul paramètre, c'est forcément un nom de fichier
															# donc pas nécessaire de rechercher les options
 
						#--------- Il y a plusieurs paramètres, initialisation des paramètres
						then		# 0011  
 
							nb_var=$#
							i=1
							motif="^[-][a-zA-Z]$" # regex : un tiret suivi d'une lettre -> une option
 
							#-------- Recherche du nom de fichier
 
							if [[ !("$1" =~ $motif) ]] 
 
								then			#		00111		si le premier paramètre n'est pas une option, 
													#						c'est un nom de fichier	
									nom=$1
									let "i=$i + 1"  # On incrémente au deuxième paramètre qui doit être une option
								else 			#		00111		Vérification de la présence d'un nom de fichier
													#						en fin de saisie (On considère qu'un nom saisi en début
													#						de saisie a priorité sur une saisie en fin
									derniere_valeur=$(eval echo "\$$nb_var")
									let "j=$nb_var - 1"
									avant_derniere_valeur=$(eval echo "\$$j")
									motif="^[-][cdelmn]$"  	# Motif de regex pour tester la présence d'une option
																					# qui nécessite un paramètre
									motif2="^[-][xz]$"	# Motif de regex pour tester la présence d'une option qui 
																			# ne nécessite pas de paramètre
 
									if [[ !("$avant_derniere_valeur" =~ $motif) ]] || [[ !("$derniere_valeur" =~ $motif2) ]]
									# Si le dernier paramètre n'est ni -x, ni -z et que l'avant-dernier n'est 
									# pas une option nécessitant un paramètre (-c -d -e -l -m -n), alors le
									# dernier paramètre est un nom de fichier
										then		#		001111
											nom=$derniere_valeur
									fi				#		001111
								fi # 					00111
 
							#-------- Récupération des options
							while [[ "$i" < "$nb_var" ]]  #  On va incrémenter de 2 en 2 les couples 
																						#  option / valeur option
								do
									val="echo \"$*\" | cut -d\" \" -f$i" 
																# Attention à ne pas oublier les guillemets pour $*, sinon
																# même risque qu'avec les variables $1, $3, etc.
																# je n'utilise pas les variables $1, $3 etc car eval echo "$i"
																# quand $i vaut "-e" ou "-n" ne parvient pas à afficher la 
																# valeur de $i considérée comme un paramètre de echo
									option=$(eval $val)
 
									case $option in
													# ------------------------------------------------------------
										-c )	#	Compteur
												let "i=$i + 1"  # incrémentation d'une unité pour atteindre le 
																			#	paramètre de l'option
												val="echo \"$*\" | cut -d\" \" -f$i" 
												valeur_option=$(eval "$val")	
												motif="^[0-9]*$" # regex : un nombre entier positif
 
												if [[ "$valeur_option" =~ $motif ]]  # 004  # Paramètre numérique
													then
														let "compteur=$valeur_option - 1" 	# on enlève 1 pour retrouver la 
												fi															# valeur initiale à la 
																												# première incrémentation
												;;
 
													# ------------------------------------------------------------
										-d )	# Chemin
												let "i=$i + 1"  # incrémentation d'une unité pour atteindre le 
																				#	paramètre de l'option
												val="echo \"$*\" | cut -d\" \" -f$i" 
												valeur_option=$(eval "$val")
												motif="/$" # regex : chaine terminée par "/"										
 
												if [[ "$valeur_option" =~ $motif ]]  #   Le chemin se termine par "/"
													then				#		0021
														chemin="$valeur_option"
													else 	# Si non, on ajoute "/"  0021
														chemin="$valeur_option/"
												fi						#  	0021
 
												motif="^~*[a-zA-Z0-9/._\-]+$" 	# test de la conformité du format du
																												# chemin, espaces non acceptés
												if [[ !("$chemin" =~ $motif) ]]
													then
														chemin=""		# Si le chemin n'est pas conforme, on l'élimine
													fi
											;;
 
													# ------------------------------------------------------------
										"-e" )	#	extension
												let "i=$i + 1"  # incrémentation d'une unité pour atteindre le 
																				#	paramètre de l'option
												val="echo \"$*\" | cut -d\" \" -f$i" 
												valeur_option=$(eval "$val")
												motif="^[.]" # regex : un point
 
												if [[ "$valeur_option" =~ $motif ]]  #   L'extension commence par "."
													then				#		0022
														extension="$valeur_option"	
													else				#		0022
														extension=".$valeur_option"
												fi
											;;
 
													# ------------------------------------------------------------
										"-l" )  # Nb minimal de chiffres pour le compteur
												let "i=$i + 1"  # incrémentation d'une unité pour atteindre le 
																				#	paramètre de l'option
												val="echo \"$*\" | cut -d\" \" -f$i" 
												valeur_option=$(eval "$val")
												longueur_compteur=$valeur_option
											;;
 
													# ------------------------------------------------------------
										"-m" )   # Motif utilisé pour séparer le nom du fichier du compteur
												let "i=$i + 1"  # incrémentation d'une unité pour atteindre le 
																				#	paramètre de l'option
												val="echo \"$*\" | cut -d\" \" -f$i" 
												valeur_option=$(eval "$val")
												motif="^[a-zA-Z0-9._\-]+$"	# C'est le motif de la regex !
													#		On teste la conformité du nom de fichier aux normes Posix, soit
													#		26×2 lettres de l'alphabet, aux 10 chiffres et aux 3 caractères
													# 	 ".", "-" et "_". Si ce n'est pas le cas, motif par défaut maintenu
												if [[ ("$valeur_option" =~ $motif) ]]
													then
														le_motif=$valeur_option
												fi
 
											;;
 
													# ------------------------------------------------------------
										-n )	#	nom
												let "i=$i + 1"  # incrémentation d'une unité pour atteindre le 
																				#	paramètre de l'option
												val="echo \"$*\" | cut -d\" \" -f$i" 
												valeur_option=$(eval "$val")
												nom=$valeur_option
												;;
 
													# ------------------------------------------------------------
											"-r" ) 	# Le fichier à tester est un répertoire, inclure / dans les caractères autorisés pour le nom
															repertoire=true															
														;;
 
													# ------------------------------------------------------------
										-x )		# Blocage de la vérification automatique de l'extension
														# aucune action mais permet d'éviter de chercher un paramètre
														# qui n'a pas à être saisi avec cette option
												;;
 
													# ------------------------------------------------------------
										"-z" )	# Absence de motif de séparation nom fichier / compteur
														# aucune action mais permet d'éviter de chercher un paramètre
														# qui n'a pas à être saisi avec cette option
											;;
 
													# ------------------------------------------------------------
										* ) 		# sinon, on saute le parmètre & on passe au suivant
												let "i=$i + 1"  # incrémentation d'une unité pour atteindre le 
																				#	paramètre de l'option
 
									esac
									# ---------------------------------------------------------------------
 
									let "i=$i + 1"
								done
 
								# ---------- Si l'option -z est passée, aucun motif de séparation n'est retenu,   
								#							même s'il a été saisi (faut être cohérent)
								if [[ $(echo $* | grep "\-z") != "" ]] 
									then
										le_motif=""
								fi		
 
						# --------- S'il n'y a qu'un seul paramètre, il s'agit d'un nom de fichier ------
						else 	# 0011  
							nom=$1
 
					fi			# 0011
 
					# ------- Vérification de l'extension (quel que soit le nb d'options passées ou pas 
					if [[ $(echo $* | grep "\-x") == "" ]] && [[ $(echo $* | grep "\-e") == "" ]]
								# En l'absence d'extension -e saisie en option et de blocage par l'option -x
								#	je recherche la présence d'une extension en fin de nom de fichier
							then		#		0012
								motif="(\.[a-zA-Z0-9]{3}[a-zA-Z0-9]?)$" # se termine par un point suivi de 
																												# 3 ou 4 caractères
								if [[ ("$nom" =~ $motif) ]]
									then			# 00121		Le nom du fichier se termine par une extension
										longueur=$(echo ${#nom})
										let  "longueur=$longueur - 4"
 
										if [[ ${nom:$longueur:1} == "." ]] 
											then		# 	001211
												extension=${nom:$longueur:4}  # j'affecte l'extension à sa variable
												nom=${nom:0:$longueur}
 
											else		# 	001211
												let  "longueur=$longueur - 1"
												extension=${nom:$longueur:5}  # j'affecte l'extension à sa variable
												nom=${nom:0:$longueur}
										fi				# 	001211
 
								fi				# 00121
 
						fi			#		0012
 
				# ------ Conformité du nom de fichier ------------------------------------------------- 
				if $repertoire 
					then
						motif="^[a-zA-Z0-9._\/\-]+$"	# c'est un répertoire
					else
						motif="^[a-zA-Z0-9._\-]+$"
				fi
 
				nom_complet=$nom$extension
 
				if [[ ("$nom_complet" =~ $motif) ]]
				#		On teste tout de même la conformité du nom de fichier aux normes Posix, soit
				#		26×2 lettres de l'alphabet, aux 10 chiffres et aux 3 caractères . - et _ 
				# 	et si ce n'est pas le cas, aucun retour
					then 	# 		0013
								nom_final=$chemin$nom$extension		
 
								# ---------- Test du nom de fichier ----------------------------------------
								while [ -e "$nom_final" ]		#	005
									do		# On incrémente le compteur tant qu'un nom de fichier non utilisé 
												# n'est pas trouvé
										let "compteur=$compteur + 1"
										le_compteur=$(nombre_a_n_chiffres.sh $compteur -l $longueur_compteur)
											# Nom complet non utilisé du fichier 
										nom_final="$chemin$nom$le_motif$le_compteur$extension" 
									done										#	005
 
								# ----------- Restitution du nom de fichier - C'est fini --------------------
								echo "$nom_final"
 
					fi		#		0013
 
			fi				# 001
 
	fi					#	000
 
exit 0;
Le script de connexion au webdav

Déplacer webdav_hubic_credentials.py dans le nouveau répertoire $HOME/.davfs2/montage_auto/.

usr@machine:~$ mv  $HOME/repertoire/webdav_hubic_credentials.py $HOME/.davfs2/montage_auto/

Enregistrer ensuite le script bash suivant dans un fichier nommé webdav_modifs_fichier_secrets.sh et sauvegardé dans le répertoire $HOME/.davfs2/montage_auto/ (par exemple copie des lignes ci-dessous dans gedit puis enregistrement par ctrl+S dans $HOME/.davfs2/montage_auto/) :

Bien veiller à adapter le chemin de la ligne 10 repertoire_de_montage="$HOME/Documents/Hubic/Montage_Hubic" à la configuration retenue et remplacer /Documents/Hubic/Montage_Hubic par le point de montage de l'espace de stockage distant Hubic.
webdav_modifs_fichier_secrets.sh
#!/bin/bash
#
# Mise à jour des identifiants webdav de connexion automatique à Hubic
#
# Paramètres
#
	repertoire_du_fichier_du_webdav="$HOME/.davfs2/"
	fichier_des_cles=$($HOME/.davfs2/montage_auto/./fichier_unique.sh -d $repertoire_du_fichier_du_webdav -n fichier_des_cles.txt)
	fichier_du_webdav="secrets"
	repertoire_de_montage="$HOME/Documents/Hubic/Montage_Hubic"
	fichier_temporaire=$($HOME/.davfs2/montage_auto/./fichier_unique.sh -d $repertoire_du_fichier_du_webdav -n nouveau_secret.txt)
	fichier_du_webdav="secrets"
 
# Récupération des paramètres Hubic (changement régulier - Tous les jours ?)
 
	$HOME/.davfs2/montage_auto/webdav_hubic-credentials_2.py > $fichier_des_cles 
	tartempion=$(cat $fichier_des_cles) # Insertion du texte du fichier dans la variable tartempion
	i=1
	val="echo \"$tartempion\" | cut -d\" \" -f1" 
	mot=$(eval $val)
 
# Lecture mot à mot - Recherche du mot "login"
	while [[ "$mot" != "" ]] && [[ "$mot" != "login:" ]]  
		do		#	0000
			let "i=$i + 1"
			val="echo \"$tartempion\" | cut -d\" \" -f$i" 
			mot=$(eval $val)
		done	#	0000
 
# Récupération du login (qui est situé juste après le mot "login")
	if [[ $mot == "login:" ]]
		then	#	0001
			let "i=$i + 1"
			val="echo \"$tartempion\" | cut -d\" \" -f$i" 
			login=$(eval $val)	
	fi			#	0001
 
# Je continue la lecture mot à mot - Recherche du mot "password"
	let "i=$i + 1"
	val="echo \"$tartempion\" | cut -d\" \" -f$i" 
	mot=$(eval $val)
 
	while [[ "$mot" != "" ]] && [[ "$mot" != "password:" ]]
		do		#	0002
			let "i=$i + 1"
			val="echo \"$tartempion\" | cut -d\" \" -f$i" 
			mot=$(eval $val)
		done	#	0002
 
# Récupération du password (qui est situé juste après le mot "password")
	if [[ "$mot" == "password:" ]]
		then	#	0003
			let "i=$i + 1"
			val="echo \"$tartempion\" | cut -d\" \" -f$i" 
			password=$(eval $val)
	fi			#	0003
 
# Modification du fichier du webdav 
	cd $repertoire_du_fichier_du_webdav
 
	# Lecture ligne à ligne à la recherche de la ligne relative au montage du webdav
	trouve=false
 
	while read -r ligne_webdav # le -r permet d'éviter que les \ soient interprétés à la lecture
		do											#	0004
 
			if [[ $(echo $ligne_webdav | cut -d" " -f1) != "$repertoire_de_montage" ]]
				then	# 00040	Si la ligne courante n'est pas reconnue (ne concerne pas le webdav)
 
						if [[ $(echo $ligne_webdav | cut -d" " -f1) = "#" ]] && [[ $(echo $ligne_webdav | cut -d" " -f2) = "mise" ]] && [[ $(echo $ligne_webdav | cut -d" " -f3) = "à" ]]
							then	#  000400	Insertion de la date de mise à jour
								echo "# mise à jour du : "$(date) >> $fichier_temporaire
							else 	# 000400	Sinon copie à l'identique
								echo "$ligne_webdav" >> $fichier_temporaire
						fi			#	000400
 
				else	# 00040	Si la ligne courante est celle du webdav, insertion des nouveaux paramètres
 
					echo "$repertoire_de_montage $login $password" >> $fichier_temporaire
					trouve=true
				fi		#	00040
 
		done < $fichier_du_webdav	#	0004
 
	# Si le fichier de paramétrage du webdav ne contient aucune ligne relative au montage du webdav, création de la ligne
	if [[ "$trouve" != true ]] 
		then 	#	0005
			echo "" >> $fichier_temporaire
			echo "# Accès Hubic" >> $fichier_temporaire
			echo "#--------------" >> $fichier_temporaire
			echo "#" >> $fichier_temporaire
			echo "# mise à jour du : "$(date) >> $fichier_temporaire
			echo "$repertoire_de_montage $login $password" >> $fichier_temporaire
	fi			#	0005
 
	# Remplacement du fichier de paramétrage du webdav par le nouveau fichier
		mv "$fichier_du_webdav" "$fichier_du_webdav.anc"
		mv "$fichier_temporaire" "$fichier_du_webdav"
		chmod 600 "$fichier_du_webdav"
		rm "$fichier_des_cles" 
 
exit 0;

Rendre exécutable le fichier nouvellement créé :

usr@machine:~$ chmod +x $HOME/.davfs2/montage_auto/webdav_modifs_fichier_secrets.sh

Désormais tout appel à webdav_modifs_fichier_secrets.sh entraînera la mise à jour automatique du fichier $HOME/.davfs2/.secrets et permettra la connexion à l'espace de stockage distant Hubic dans Nautilus.

usr@machine:~$ $HOME/.davfs2/montage_auto/./webdav_modifs_fichier_secrets.sh
Ajouter un message

Pour rendre l'opération un peu plus conviviale, surtout si le script est appelé par un lanceur ainsi qu'on le verra ci-dessous, il peut être intéressant de confirmer l'exécution du script par un petit message. Il est proposé d'utiliser Zenity pour afficher une fenêtre d'information. pour ce faire il faut et il suffit d'insérer les lignes suivantes en fin de script bash (juste avant la ligne exit 0; qui termine le script :

zenity --info --title='Montage du dossier distant' --text="<span color=\"green\">Montage du dossier distant demandé</span>" --timeout=3

Désormais, à l’exécution du script une fenêtre surgissante indiquera que l'opération est lancée. Elle s'effacera d'elle même au bout de 3 secondes (timeout=3). En cas de problème avec Zenity, installer le paquet zenity si celui-ci n'est pas encore présent sur le système (normalement c'est le cas).

usr@machine:~$ sudo apt-get install zenity
L'affichage de la fenêtre d'information n'indique pas que le script s'est bien exécuté, elle se contente d'indiquer qu'il a été appelé.

Création du lanceur

L'étape suivante permet de créer un lanceur qui pourra être lancé d'un clic de souris dans la barre des lanceurs (Unity launcher) et assurera la mise à jour du fichier secrets.

Création du fichier du lanceur

La création d'un lanceur se fait par copie du fichier suivant dans $HOME/.local/share/applications :

connect_webdav.desktop
[Desktop Entry]
Name=Connexion webdav Hubic
GenericName=Connexion webdav Hubic
X-GNOME-FullName=Connexion webdav Hubic
Comment=Se connecter à un espace webdav Hubic
Exec=$HOME/.davfs2/montage_auto/webdav_modifs_fichier_secrets.sh
Icon=$HOME/repertoire_icones/Icone_cloud.png
Terminal=false
Type=Application
Categories=GNOME;GTK;Core;
StartupNotify=true
 
X-Ayatana-Desktop-Shortcuts=Se connecter à Hubic;
 
[Se connecter à Hubic]
Name=Se connecter à Hubic
Exec=$HOME/.davfs2/montage_auto/webdav_modifs_fichier_secrets.sh

Ce fichier doit être sauvegardé dans $HOME/.local/share/applications sous le nom connect_webdav.desktop. Le choix du nom du fichier est libre, sous la réserve qu'il se termine par .desktop (de façon à identifier le fichier comme lanceur). Le choix du nom doit être effectué avec soin car il sera utilisé par le moteur de recherche de Unity dans le Dash. Pour la suite du tutoriel on considère que le nom connect_webdav.desktop est utilisé.

Les éléments de personnalisation suivants peuvent être utilisés (pour davantage de précisions voir lanceur) :

  1. Nom qui apparaît en infobulle lors du survol de l'icône par la souris : ligne 2 (à dupliquer en lignes 3 et 4)
Name=Connexion webdav Hubic
  1. Script lancé par un clic sur l'icône : ligne 6
Exec=$HOME/.davfs2/montage_auto/webdav_modifs_fichier_secrets.sh
  1. Liste des options qui apparaissent après clic droit sur l'icône dans la barre des lanceurs : ligne 13
X-Ayatana-Desktop-Shortcuts=Se connecter à Hubic;

Dans le cas où plusieurs options sont proposées, il est nécessaire de placer le nom de chacune des options à la suite de la formule X-Ayatana-Desktop-Shortcuts=, les options étant séparées par des points-virgules ";" et la liste terminée de même. L'option est reprise ensuite selon la même orthographe entre crochets pour fixer ses paramètres.

Exemple :

X-Ayatana-Desktop-Shortcuts=Se connecter à Hubic;Faire autre chose;
[Se connecter à Hubic]
Name=Se connecter à Hubic
Exec=$HOME/.davfs2/montage_auto/webdav_modifs_fichier_secrets.sh
[Faire autre chose]
Name=Je décide de faire autre chose
Exec=$HOME/.davfs2/montage_auto/autre_chose.sh

Personnalisation du lanceur

Le fichier du lanceur est donc sauvegardé dans $HOME/.local/share/applications sous le nom connect_webdav.desktop.

Ajouter une icône

Ce lanceur ayant vocation à apparaître dans la barre de lanceur, il est plus esthétique de lui affecter une icône personnalisée. Totale liberté est laissée à l'ubuntero, il est conseillé une icône au format png, carrée, 128 x 128 px.

Une icône adaptée par coloration d'un original téléchargé ici est proposée Icône Nuage

Cette icône (ou une autre) doit être enregistrée sur le disque de l'utilisateur. Dans le tutoriel elle a été enregistrée dans le répertoire $HOME/repertoire_icones/ sous le nom Icone_cloud.png (ligne 7 du fichier de lanceur).

Il est ensuite possible d'ajouter ce lanceur personnalisé à la barre des lanceurs : saisie du mot "webdav" (ou autre selon le nom retenu pour le lanceur) puis, une fois l'icône apparue dans le Dash, de la faire glisser dans la barre des lanceurs.

Cryptage du partage

Les données stockées chez hubiC sont "en clair" pour l'hébergeur, elles ne sont pas non plus cryptées lorsqu'elle transitent entre l'utilisateur et le serveur. Il est possible, en utilisant la méthode indiquée à la page davfs2, d'utiliser EncFS pour chiffrer la partition.

Création du répertoire crypté

Si on considère que le partage Hubic a été créé dans le répertoire /home/utilisateur/Hubic/Montage_Hubic, un répertoire crypté pourrait être créé à l'intérieur du répertoire Hubic qui serait donc situé à l'emplacement /home/utilisateur/Hubic/Montage_Hubic/Répertoire_crypté. Le répertoire "en clair" pourrait être situé à l'emplacement suivant : /home/utilisateur/Hubic/Hubic_en_clair (c'est à dire sur le disque de l'utilisateur et non pas sur le réseau). L'utilisateur devra donc monter son répertoire distant (automatique avec la technique proposée ci-dessus) puis monter son répertoire crypté dans /home/utilisateur/Hubic/Hubic_en_clair. En sauvegardant les données dans /home/utilisateur/Hubic/Hubic_en_clair, celles-ci seront automatiquement cryptées et transférées dans le répertoire distant.

Inconvénient : Les données ne seront pas accessibles à partir d'un appareil (par ex. un smartphone) qui ne serait pas équipé de EncFS.
Ne pas oublier de créer une copie cryptée de la clé de cryptage EncFS avec ccrypt. Cf ici

Les instructions à passer en ligne de commande pour crypter ses données sont les suivantes :

usr@machine:~$ mkdir $HOME/Hubic/Hubic_en_clair/
usr@machine:~$ mkdir  $HOME/Hubic/Montage_Hubic/Répertoire_crypte/
usr@machine:~$ encfs $HOME/Hubic/Montage_Hubic/Répertoire_crypte/ $HOME/Hubic/Hubic_en_clair/

Les deux premières lignes ne sont à saisir qu'une seule fois, lors de la création du répertoire crypté. Ensuite il suffit de monter ou de démonter le répertoire crypté lorsque vous en avez besoin :

Accès et verrouillage au dossier crypté

Pour le montage du répertoire (déjà utilisé) :

usr@machine:~$ encfs /home/utilsateur/Hubic/Montage_Hubic/Répertoire_crypté/ /home/utilsateur/Hubic/Hubic_en_clair/

Et pour le démontage :

usr@machine:~$ fusermount -u  /home/utilsateur/Hubic/Hubic_en_clair/

Renforcement de la confidentialité : déplacement de la clé

Dans le schéma "classique" de encfs, le fichier permettant le déverrouillage du dossier crypté est palcé au même niveau que celui-ci, ce qui signifie, dans le cas d'un dossier distant, que ce fichier se trouve sur le serveur distant. C'est un peu ennuyeux si ce cryptage a été réalisé pour accroître la confidentialité des données vis à vis du fournisseur de stockage. Il convient donc de déplacer le fichier de déverrouillage dans un endroit sûr, d'en effectuer une copie elle-même sécurisée placée dans un autre endroit sûr (avec ccrypt) et d'indiquer à encfs à quel endroit se trouve ce fichier. Tout cela est clairement expliqué ici. Pour la suite du tutoriel on suppose que cette clé de déverrouillage est désormais sauvegardée sur votre disque dur, dans le répertoire $HOME/Documents/Hubic/, sous le nom .encfs6.xml. La commande de montage du dossier crypté devient donc :

usr@machine:~$ ENCFS6_CONFIG=$HOME/Documents/Hubic/.encfs6.xml encfs $HOME/Hubic/Montage_Hubic/Répertoire_crypté/ $HOME/Hubic/Hubic_en_clair/

La commande de démontage est sans changement.

Création d'un script pour monter et démonter le répertoire crypté

De façon à faciliter ces manipulations de montage et de démontage, il est proposé de confier ces missions à un script. Est utilisée dans ce cadre l'option –extpass de EncFS qui permet de récupérer le mot de passe de cryptage/décryptage en sortie d'un programme externe. Ce sont donc deux scripts qui vont être créés :

  1. Un script de récupération du mot de passe ;
  2. Un script de verrouillage / déverrouillage du répertoire crypté.
Le script de récupération du mot de passe

Le script de récupération du mot de passe utilise Zenity qu'il faudra peut être installer. Ce script sera sauvegardé dans le répertoire $HOME/.davfs2/montage_auto/ sous le nom webdav_recup_mdp_cryptage.sh. Le script :

webdav_recup_mdp_cryptage.sh
#!/bin/bash
#
# Récupération du mdp pour connection à l'espace sécurisé (cryptage encfs) installé sur Hubic
#
	# Se connecter à l'espace crypté
 
	if mot_de_passe=`zenity --password --title='Connection serveur distant' --text="Saisissez votre mot de passe pour déverouiller votre espace sécurisé dans le \"nuage\" : "`
		then		
 
				if [ "$mot_de_passe" = "" ]
					then
						`zenity --error --title="Pas de saisie" --text="Aucun mot de passe saisi, connexion au webdav impossible" --timeout=6`
						exit
				fi
 
		else
			`zenity --error --title="Annulation" --text="Annulation, connexion au webdav impossible" --timeout=6`
			exit
 
		fi
 
	echo $mot_de_passe
 
exit 0;

Ce script doit donc être téléchargé par l'utilisateur et sauvegardé dans le répertoire $HOME/.davfs2/montage_auto/ sous le nom webdav_recup_mdp_cryptage.sh.

Création du script de décryptage et de cryptage

La récupération du mot de passe étant organisée, il est maintenant possible de mettre en place le script qui permettra de monter et démonter les dossiers cryptés.

Le script proposé sera sauvegardé dans le répertoire $HOME/.davfs2/montage_auto/ sous le nom webdav_ouverture_dossier_crypte.sh.

webdav_ouverture_dossier_crypte.sh
#!/bin/bash
#
# Connexion et deconnexion à l'espace sécurisé (cryptage encfs) installé sur Hubic
#
# Paramètres (Attention il est impératif de saisir le "/" de fin de chemin)
 
	chemin_complet_cle_encfs="$HOME/Documents/Hubic/.encfs6.xml"
	repertoire_de_stockage_des_donnees_cryptees="$HOME/Documents/Hubic/Montage_Hubic/Répertoire_crypte/"
	repertoire_de_stockage_des_donnees_decryptees="$HOME/Documents/Hubic/Hubic_en_clair/"
	repertoire_hubic_webdav="$HOME/Documents/Hubic/Montage_Hubic/"
 
	# Vérifier si l'espace crypté n'est pas déjà monté
 
	encfs_deja_monte=$(mount | grep ${repertoire_de_stockage_des_donnees_decryptees%?})
 
	# Si déjà monté, on démonte
 
	if [[ "$encfs_deja_monte" != "" ]]
		then
			fusermount -u "$repertoire_de_stockage_des_donnees_decryptees"
			zenity --info --title='Dossier déjà monté' --text='<span color=\"blue\">Les données cryptées sont déjà montées, démontage en cours</span>' --timeout=3
			exit
 
		else	# N'est pas déjà monté, donc il faut se connecter
 
			# Se connecter à l'espace crypté
 
			webdav_monte=$(mount | grep ${repertoire_hubic_webdav%?})
 
			# Vérification du montage du dossier Hubic, s'il ne l'est pas il est illusoire de vouloir accéder à son contenu
 
			if [[ "$webdav_monte" == "" ]]
				then
					zenity --error --title='Webdav non monté' --text="<span color=\"red\">Le webdav n'est pas monté, impossible par conséquent de monter le dossier crypté</span>" --timeout=6
					exit
 
				#	Si le dossier distant Hubic est monté, montage du dossier crypté avec indication de localisation de la clé
				else
					ENCFS6_CONFIG=$chemin_complet_cle_encfs encfs --extpass=$HOME/.davfs2/montage_auto/webdav_recup_mdp_cryptage.sh $repertoire_de_stockage_des_donnees_cryptees $repertoire_de_stockage_des_donnees_decryptees
					zenity --info --title='Montage du dossier crypté' --text="<span color=\"green\">Montage du dossier crypté demandé</span>" --timeout=3
			fi
 
		fi
 
exit 0;
Attention à la syntaxe des lignes 7 à 10 qui doivent parfaitement correspondre à l'installation de chaque ubuntero.

Ce script doit donc être téléchargé par l'utilisateur, modifié si nécessaire (lignes 7 à 10) et sauvegardé dans le répertoire $HOME/.davfs2/montage_auto/ sous le nom webdav_ouverture_dossier_crypte.sh.

Le script permet de monter le répertoire crypté après avoir demandé le mot de passe ou, si le répertoire crypté est déjà présent, de le démonter.

Utilisation
  • L'utilisation du script suppose que le webdav soit actif et monté. Si le webdav n'est pas monté, zenity affichera un avertissement qui s'effacera au bout de 6 secondes et rien ne se passera.
  • L'usage du script suppose aussi que le répertoire crypté ait d'ores et déjà été créé (voir ci-dessus pour création en mode console) et que le répertoire de montage du fichier décrypté (Montage_en_clair) existe également.
  • Pour monter le webdav, se rendre dans Nautilus après avoir lancé webdav_modifs_fichier_secret et monter le répertoire distant par un clic sur le périphérique. Lorsque le périphérique est monté, il est possible de lancer le script webdav_ouverture_dossier_crypte.sh.
  • Lors de son lancement, le script vérifie si le dossier crypté est monté ou ne l'est pas (lignes 14 à 18).
  • Si le dossier crypté n'est pas encore monté, une première vérification est réalisée. Cette première vérification a pour objet de déterminer si le webdav Hubic est monté car s'il ne l'est pas, il n'est pas possible d'accéder aux fichiers qu'il contient. Ce contrôle est réalisé par les lignes 27 à 35.
  • Si l'espace distant est monté, alors le script de récupération du mot de passe webdav_recup_mdp_cryptage.sh est appelé par EncFS (ligne 39) via l'option –extpass. Ce dernier ouvre une fenêtre de saisie pour le mot de passe puis, une fois celui-ci renseigné par l'utilisateur, envoie le mot de passe à EncFS qui monte le répertoire. Zenity (ligne 40) informe alors l'utilisateur que cette partie du script a été appelée (mais pas qu'elle s'st déroulée avec succès) par une fenêtre surgissante qui disparaît au bout de 3 secondes (timeout=3).
  • Si, au contraire, le dossier crypté est déjà monté, celui-ci est alors démonté (lignes 18 à 21) et l'utilisateur est informé de la tentative (mais pas de son résultat, une fois encore).
Création du lanceur

Afin de rendre toutes ces manipulations le plus simple possible, il est proposé de créer un lanceur dans la barre des lanceurs, ou plus précisément d'étendre les fonctions du lanceur créé un peu plus haut pour permettre la connexion à Hubic. Deux options sont ajoutées au lanceur, Monter le répertoire crypté et Démonter le répertoire crypté. Compte tenu du mode de fonctionnement du script webdav_ouverture_dossier_crypte.sh une seule option est nécessaire puisque l'appel au script monte et démonte alternativement le dossier crypté, toutefois en terme d'ergonomie la distinction peut avoir son utilité. C'est ce qui est retenu. Le lanceur est donc ainsi modifié :

connect_webdav.desktop
[Desktop Entry]
Name=Connexion webdav Hubic
GenericName=Connexion webdav Hubic
X-GNOME-FullName=Connexion webdav Hubic
Comment=Se connecter à un espace webdav Hubic
Exec=$HOME/.davfs2/montage_auto/webdav_modifs_fichier_secrets.sh
Icon=$HOME/repertoire_icones/Icone_cloud.png
Terminal=false
Type=Application
Categories=GNOME;GTK;Core;
StartupNotify=true
 
X-Ayatana-Desktop-Shortcuts=Se connecter à Hubic;Monter le répertoire crypté;Démonter le répertoire crypté;
 
[Se connecter à Hubic]
Name=Se connecter à Hubic
Exec=$HOME/.davfs2/montage_auto/webdav_modifs_fichier_secrets.sh
 
[Monter le répertoire crypté]
Name=Monter le répertoire crypté situé dans le dossier distant Hubic
Exec=$HOME/.davfs2/montage_auto/webdav_ouverture_dossier_crypte.sh
 
[Démonter le répertoire crypté]
Name=Démonter le répertoire crypté situé dans le dossier distant Hubic
Exec=$HOME/.davfs2/montage_auto/webdav_ouverture_dossier_crypte.sh

Ce lanceur doit donc être sauvegardé dans $HOME/.local/share/applications sous le nom connect_webdav.desktop, il prendra la place du précédent. Sans surprise les lignes "Exec" des deux dernières options sont identiques mais c'est plus clair pour l'utilisateur.

Le lanceur doit être utilisé ainsi :

  1. On commence par mettre à jour le dossier secrets : clic sur l'icône Connexion webdav Hubic dans la barre des lanceurs avec le bouton gauche de la souris ou bien clic bouton droit puis sélection de l'option Se connecter à Hubic;
  2. Montage du dossier distant Hubic dans Nautilus (clic sur le nom dans la liste des périphériques);
  3. Montage du répertoire crypté par clic bouton droit sur l'icôneConnexion webdav Hubic dans la barre des lanceurs puis sur l'option Monter le répertoire crypté

Le répertoire distant crypté devient ainsi directement accessible dans Nautilus, sous la forme d'un périphérique autonome.

  • La fermeture du répertoire crypté est obtenue par un nouveau clic bouton droit sur l'icône Connexion webdav Hubic dans la barre des lanceurs puis sur l'option Démonter le répertoire crypté. Le dossier distant Hubic reste accessible mais pas le répertoire crypté.

Pour supprimer le compte hubiC, se référer aux conditions du fournisseur. Pour supprimer la connexion à la plate-forme distante, il suffit de supprimer les lignes insérées dans /etc/fstab ou, mieux, de restaurer l'ancienen version (attention à la gestion des droits). Pour parfaire les choses, vous pouvez aussi supprimer la ligne ajoutée au fichier $HOME/.davfs2/secrets.

  • hubic.1374221254.txt.gz
  • Dernière modification: Le 19/07/2013, 10:07
  • par 109.16.63.207