diff --git a/TODO b/TODO index e3207d1fa5cccb78aa5ac290c130172577f71a97..0b368a592c3493064d5d0820cfcd9487b225f4b2 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 6ba2a6e368e3632eff3e9d6892829f873adc4489..ea25b74878208011f0d1e9d0ef6a62790a67d1b1 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: