Skip to content
Snippets Groups Projects
Commit 1c214f3e authored by Maxime Bombar's avatar Maxime Bombar
Browse files

Porting commit c17458fc to python3 version:...

Porting commit c17458fc to python3 version: Allows to display qrcode of the secret
parent 6deec238
No related branches found
No related tags found
No related merge requests found
Pipeline #9566 passed with warnings with stages
in 2 minutes and 42 seconds
...@@ -12,6 +12,10 @@ cranspasswords possède plusieurs branches. ...@@ -12,6 +12,10 @@ cranspasswords possède plusieurs branches.
* 0.1, 0.2,… : anciennes versions (si vieux serveur), * 0.1, 0.2,… : anciennes versions (si vieux serveur),
ça n'intègre plus de nouvelles fonctionnalités, seulement d'éventuels bugfix. ça n'intègre plus de nouvelles fonctionnalités, seulement d'éventuels bugfix.
=== 0.3.0 ===
Permet d'afficher le secret dans un qrcode.
=== 0.2.0 === === 0.2.0 ===
La configuration du client a changé de format, La configuration du client a changé de format,
......
...@@ -395,17 +395,20 @@ def show_file(options): ...@@ -395,17 +395,20 @@ def show_file(options):
old_clipboard = None old_clipboard = None
# Essaie de planquer le mot de passe # Essaie de planquer le mot de passe
secret = None
for line in texte.split('\n'): for line in texte.split('\n'):
catch_pass = None catch_pass = None
# On essaie de trouver le pass pour le cacher dans le clipboard # On essaie de trouver le pass pour le cacher dans le clipboard
# si ce n'est déjà fait et si c'est voulu # si ce n'est déjà fait et si c'est voulu
if not is_hidden and options.clipboard: if not is_hidden and (options.clipboard or options.qrencode):
catch_pass = pass_regexp.match(line) catch_pass = pass_regexp.match(line)
if catch_pass is not None: if catch_pass is not None:
is_hidden = True is_hidden = True
# On met le mdp dans le clipboard en mémorisant son ancien contenu secret = catch_pass.group(1)
old_clipboard = saveclipboard() if options.clipboard:
pyperclip.copy(catch_pass.group(1)) # On met le mdp dans le clipboard en mémorisant son ancien contenu
old_clipboard = saveclipboard()
pyperclip.copy(secret)
# Et donc on override l'affichage # Et donc on override l'affichage
line = "[Le mot de passe a été mis dans le presse papier]" line = "[Le mot de passe a été mis dans le presse papier]"
filtered += line + '\n' filtered += line + '\n'
...@@ -434,6 +437,8 @@ def show_file(options): ...@@ -434,6 +437,8 @@ def show_file(options):
pub_file.flush() pub_file.flush()
subprocess.check_call(['ssh-add', '-d', pub_file.name]) subprocess.check_call(['ssh-add', '-d', pub_file.name])
elif options.qrencode and secret is not None:
showqr(secret)
else: else:
# Le binaire à utiliser # Le binaire à utiliser
showbin = "cat" if is_hidden else "less" showbin = "cat" if is_hidden else "less"
...@@ -447,6 +452,15 @@ def show_file(options): ...@@ -447,6 +452,15 @@ def show_file(options):
if old_clipboard is not None: if old_clipboard is not None:
saveclipboard(restore=True, old_clipboard=old_clipboard) saveclipboard(restore=True, old_clipboard=old_clipboard)
def showqr(secret):
qrencode = subprocess.Popen(['/usr/bin/qrencode', '-o', '-'],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
feh = subprocess.Popen(['/usr/bin/feh', '--zoom', 'fill' '-'],
stdin=qrencode.stdout)
qrencode.stdin.write(secret.encode('utf-8'))
qrencode.stdin.flush()
qrencode.stdin.close()
feh.wait()
@need_filename @need_filename
def show_minimal(options): def show_minimal(options):
...@@ -760,6 +774,13 @@ def main(): ...@@ -760,6 +774,13 @@ def main():
dest='clipboard', dest='clipboard',
help=_("do not try to store password in clipboard"), help=_("do not try to store password in clipboard"),
) )
parser.add_argument(
'--qr',
action='store_true',
default=None,
dest='qrencode',
help=_("display a qrcode containing the secret"),
)
parser.add_argument( parser.add_argument(
'-f', '--force', '-f', '--force',
action='store_true', action='store_true',
......
...@@ -31,7 +31,7 @@ def compile_messages(): ...@@ -31,7 +31,7 @@ def compile_messages():
setup( setup(
name="cpasswords", name="cpasswords",
version="0.2.0", version="0.3.0",
description="Group password manager based on GPG", description="Group password manager based on GPG",
long_description=open('README.rst', encoding='utf-8').read(), long_description=open('README.rst', encoding='utf-8').read(),
author="CRANS", author="CRANS",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment