rajout de --strict-recrypt-files
Autre manière de sélectionner les mots de passes à rechiffrer : on sélectionne les mots de passes dont la liste des rôle est inclue dans la liste souhaitée.
This commit is contained in:
parent
88c699e48d
commit
34aa2a6469
1 changed files with 28 additions and 12 deletions
38
client.py
38
client.py
|
@ -773,9 +773,11 @@ def my_update_keys(options):
|
||||||
"""Met à jour les clés existantes et affiche le résultat"""
|
"""Met à jour les clés existantes et affiche le résultat"""
|
||||||
print(update_keys(options).encode("utf-8"))
|
print(update_keys(options).encode("utf-8"))
|
||||||
|
|
||||||
def recrypt_files(options):
|
def recrypt_files(options, strict=False):
|
||||||
"""Rechiffre les fichiers.
|
"""Rechiffre les fichiers.
|
||||||
Ici, la signification de ``options.roles`` est : on ne veut rechiffrer que les fichiers qui ont au moins un de ces roles.
|
Ici, la signification de ``options.roles`` est :
|
||||||
|
strict => on chiffre les fichiers dont *tous* les rôles sont dans la liste
|
||||||
|
non strict => on ne veut rechiffrer que les fichiers qui ont au moins un de ces roles.
|
||||||
"""
|
"""
|
||||||
rechiffre_roles = options.roles
|
rechiffre_roles = options.roles
|
||||||
_, my_roles_w = get_my_roles(options)
|
_, my_roles_w = get_my_roles(options)
|
||||||
|
@ -785,11 +787,18 @@ def recrypt_files(options):
|
||||||
|
|
||||||
# La liste des fichiers
|
# La liste des fichiers
|
||||||
allfiles = all_files(options)
|
allfiles = all_files(options)
|
||||||
# On ne demande que les fichiers qui ont au moins un role dans ``options.roles``
|
|
||||||
# et dans lesquels on peut écrire
|
def is_wanted(fileroles):
|
||||||
|
# On drope ce qui ne peut être écrit
|
||||||
|
if not set(fileroles).intersection(my_roles_w):
|
||||||
|
return False
|
||||||
|
if strict:
|
||||||
|
return set(fileroles).issubset(rechiffre_roles)
|
||||||
|
else:
|
||||||
|
return bool(set(fileroles).intersection(rechiffre_roles))
|
||||||
|
|
||||||
askfiles = [filename for (filename, fileroles) in allfiles.iteritems()
|
askfiles = [filename for (filename, fileroles) in allfiles.iteritems()
|
||||||
if set(fileroles).intersection(options.roles) != set()
|
if is_wanted(fileroles) ]
|
||||||
and set(fileroles).intersection(my_roles_w) != set()]
|
|
||||||
files = get_files(options, askfiles)
|
files = get_files(options, askfiles)
|
||||||
# Au cas où on aurait échoué à récupérer ne serait-ce qu'un de ces fichiers,
|
# Au cas où on aurait échoué à récupérer ne serait-ce qu'un de ces fichiers,
|
||||||
# on affiche le message d'erreur correspondant et on abandonne.
|
# on affiche le message d'erreur correspondant et on abandonne.
|
||||||
|
@ -915,13 +924,20 @@ if __name__ == "__main__":
|
||||||
help="""Rechiffrer les mots de passe.
|
help="""Rechiffrer les mots de passe.
|
||||||
(Avec les mêmes rôles que ceux qu'ils avant.
|
(Avec les mêmes rôles que ceux qu'ils avant.
|
||||||
Cela sert à mettre à jour les recipients pour qui un password est chiffré)""")
|
Cela sert à mettre à jour les recipients pour qui un password est chiffré)""")
|
||||||
|
action_grp.add_argument('--strict-recrypt-files', action='store_const', dest='action',
|
||||||
|
default=show_file, const=lambda x:recrypt_files(x, strict=True),
|
||||||
|
help="""Rechiffrer les mots de passe (mode strict, voir --roles)""")
|
||||||
|
|
||||||
parser.add_argument('--roles', nargs='?', default=None,
|
parser.add_argument('--roles', nargs='?', default=None,
|
||||||
help="""Liste de roles (séparés par des virgules).
|
help="""Liste de roles (séparés par des virgules). Par défaut, tous les
|
||||||
Avec --edit, le fichier sera chiffré pour exactement ces roles
|
rôles en écriture (sauf pour l'édition, d'un fichier existant).
|
||||||
(par défaut, tous vos rôles en écriture seront utilisés).
|
Avec --edit: le fichier sera chiffré pour exactement ces roles
|
||||||
Avec --recrypt-files, tous les fichiers ayant au moins un de ces roles (et pour lesquels vous avez le droit d'écriture) seront rechiffrés
|
Avec --(strict-)recrypt-files :
|
||||||
(par défaut, tous les fichiers pour lesquels vous avez les droits en écriture sont rechiffrés).""")
|
sert à sélectionnenr les fichiers à rechiffrer
|
||||||
|
* non-strict: tout fichier possédant un des rôles listé
|
||||||
|
* strict: tout fichier dont *tous* les rôles sont dans la
|
||||||
|
liste
|
||||||
|
""")
|
||||||
parser.add_argument('fname', nargs='?', default=None,
|
parser.add_argument('fname', nargs='?', default=None,
|
||||||
help="Nom du fichier à afficher")
|
help="Nom du fichier à afficher")
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue