From 88c699e48d635d7d63d071098801e039c1370b90 Mon Sep 17 00:00:00 2001 From: Daniel STAN <daniel.stan@crans.org> Date: Sun, 12 Jan 2014 18:57:38 +0100 Subject: [PATCH] [bugfix] recrypt-files: encrypt(...)[1] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit encrypt ne renvoie plus une chaîne chiffrée mais une liste (sic) [success, chaîne] depuis 0bdf2035. On corrige ici pour éviter de defacer tous les mdps. --- TODO | 22 ++++++++++++++++++++++ client.py | 11 +++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index e3207d1..0b368a5 100644 --- a/TODO +++ b/TODO @@ -10,3 +10,25 @@ * retirer le binaire serveur de /usr/local/bin/ * Modulariser le code (client.py devient gros) * renommer en "cpasswords" ? (aka common passwords :p) +diff --git a/client.py b/client.py +index 6ba2a6e..6486e11 100755 +--- a/client.py ++++ b/client.py +@@ -805,6 +805,9 @@ def recrypt_files(options): + if to_put: + if not options.quiet: + print((u"Rechiffrement de %s" % (", ".join([f['filename'] for f in to_put]))).encode("utf-8")) ++ if options.simulate: ++ print((u"Did nothing").encode('utf-8')) ++ return + results = put_files(options, to_put) + # On affiche les messages de retour + if not options.quiet: +@@ -915,6 +918,7 @@ if __name__ == "__main__": + (par défaut, tous vos rôles en écriture seront utilisés). + 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 + (par défaut, tous les fichiers pour lesquels vous avez les droits en écriture sont rechiffrés).""") ++ parser.add_argument('--simulate', action='store_true', default=False) + parser.add_argument('fname', nargs='?', default=None, + help="Nom du fichier à afficher") + diff --git a/client.py b/client.py index 6ba2a6e..ea25b74 100755 --- a/client.py +++ b/client.py @@ -520,6 +520,9 @@ def encrypt(options, roles, contents): def decrypt(options, contents): """Déchiffre le contenu""" stdin, stdout = gpg(options, "decrypt") + if type(contents) != unicode: # Kludge (broken db ?) + print("Eau dans le gaz (decrypt)" + repr(contents)) + contents = contents[-1] stdin.write(contents.encode("utf-8")) stdin.close() return stdout.read().decode("utf-8") @@ -629,7 +632,11 @@ def show_file(options): return passfile = value (sin, sout) = gpg(options, 'decrypt') - sin.write(passfile['contents'].encode("utf-8")) + content = passfile['contents'] # Kludge (broken db ?) + if type(content) == list: + print("Eau dans le gaz") + content = content[-1] + sin.write(content.encode("utf-8")) sin.close() texte = sout.read().decode("utf-8") ntexte = u"" @@ -800,7 +807,7 @@ def recrypt_files(options): # On rechiffre to_put = [{'filename' : f['filename'], 'roles' : f['roles'], - 'contents' : encrypt(options, f['roles'], decrypt(options, f['contents']))} + 'contents' : encrypt(options, f['roles'], decrypt(options, f['contents']))[-1]} for [success, f] in files] if to_put: if not options.quiet: -- GitLab