Skip to content
Snippets Groups Projects
Commit 0a5af7ec authored by Vincent Le gallic's avatar Vincent Le gallic
Browse files

--check-keys fonctionne. On signale si on n'arrive pas à importer gnupg, mais on ne crashe pas.

parent 0786b909
No related branches found
No related tags found
No related merge requests found
...@@ -23,7 +23,7 @@ _cranspasswords_completion(){ ...@@ -23,7 +23,7 @@ _cranspasswords_completion(){
cur="${COMP_WORDS[argc]}" cur="${COMP_WORDS[argc]}"
cur_first_char=${cur:0:1} cur_first_char=${cur:0:1}
opts_short="-h -v -c -f -l" opts_short="-h -v -c -f -l"
opts="--help --server --verbose --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-files --roles --list-servers" opts="--help --server --verbose --quiet --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-files --roles --list-servers"
mkdir -p -m 700 "$role_dir" mkdir -p -m 700 "$role_dir"
mkdir -p -m 700 "$pass_dir" mkdir -p -m 700 "$pass_dir"
...@@ -48,14 +48,14 @@ _cranspasswords_completion(){ ...@@ -48,14 +48,14 @@ _cranspasswords_completion(){
fi fi
if [[ "$last" = "--server" ]]; then if [[ "$last" = "--server" ]]; then
server_list="`$cmd_name --list-servers | grep -- "*" | awk '{print $2}'`" server_list="`$cmd_name --quiet --list-servers | grep -- "*" | awk '{print $2}'`"
COMPREPLY=( $(compgen -W "$server_list" -- $cur ) ) COMPREPLY=( $(compgen -W "$server_list" -- $cur ) )
return 0 return 0
fi fi
if [[ "$last" = "--roles" ]]; then if [[ "$last" = "--roles" ]]; then
if [ ! -f "${role_dir}$server" ]; then if [ ! -f "${role_dir}$server" ]; then
echo "`$cmd_name --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server" echo "`$cmd_name --quiet --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server"
fi fi
role_list="`cat "${role_dir}$server"`" role_list="`cat "${role_dir}$server"`"
COMPREPLY=( $(compgen -W "$role_list" -- $cur ) ) COMPREPLY=( $(compgen -W "$role_list" -- $cur ) )
...@@ -64,7 +64,7 @@ _cranspasswords_completion(){ ...@@ -64,7 +64,7 @@ _cranspasswords_completion(){
if [[ "$last" = "--edit" ]]; then if [[ "$last" = "--edit" ]]; then
if [ ! -f "${pass_dir}${server}-w" ]; then if [ ! -f "${pass_dir}${server}-w" ]; then
echo "`$cmd_name --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}${server}-w" echo "`$cmd_name --quiet --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}${server}-w"
fi fi
pass_list="`cat "${pass_dir}${server}-w"`" pass_list="`cat "${pass_dir}${server}-w"`"
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) ) COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
...@@ -73,7 +73,7 @@ _cranspasswords_completion(){ ...@@ -73,7 +73,7 @@ _cranspasswords_completion(){
if true; then if true; then
if [ ! -f "${pass_dir}$server" ]; then if [ ! -f "${pass_dir}$server" ]; then
echo "`$cmd_name --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server" echo "`$cmd_name --quiet --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server"
fi fi
pass_list="`cat "${pass_dir}$server"`" pass_list="`cat "${pass_dir}$server"`"
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) ) COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
......
...@@ -19,11 +19,16 @@ import re ...@@ -19,11 +19,16 @@ import re
import random import random
import string import string
import datetime import datetime
#import gnupg #disponible seulement sous wheezy try:
import gnupg #disponible seulement sous wheezy
except ImportError:
if sys.stderr.isatty() and not any([opt in sys.argv for opt in ["-q", "--quiet"]]):
sys.stderr.write(u"Package python-gnupg introuvable, vous ne pourrez pas vérifiez les clés.\n".encode("utf-8"))
try: try:
import clientconfig as config import clientconfig as config
except ImportError: except ImportError:
print "Read the README" if sys.stderr.isatty() and not any([opt in sys.argv for opt in ["-q", "--quiet"]]):
sys.stderr.write(u"Va lire le fichier README.\n".encode("utf-8"))
sys.exit(1) sys.exit(1)
#: pattern utilisé pour détecter la ligne contenant le mot de passe dans les fichiers #: pattern utilisé pour détecter la ligne contenant le mot de passe dans les fichiers
...@@ -184,7 +189,8 @@ def check_keys(): ...@@ -184,7 +189,8 @@ def check_keys():
failed = False failed = False
for (mail, fpr) in keys.values(): for (mail, fpr) in keys.values():
if fpr: if fpr:
if VERB: print (u"Checking %s" % (mail)).encode("utf-8") if VERB:
print (u"Checking %s" % (mail)).encode("utf-8")
corresponds = [key for key in localkeys if key["fingerprint"] == fpr] corresponds = [key for key in localkeys if key["fingerprint"] == fpr]
# On vérifie qu'on possède la clé… # On vérifie qu'on possède la clé…
if len(corresponds) == 1: if len(corresponds) == 1:
...@@ -237,7 +243,8 @@ def encrypt(roles, contents): ...@@ -237,7 +243,8 @@ def encrypt(roles, contents):
stdin.close() stdin.close()
out = stdout.read().decode("utf-8") out = stdout.read().decode("utf-8")
if out == '': if out == '':
if VERB: print u"Échec de chiffrement".encode("utf-8") if VERB:
print u"Échec de chiffrement".encode("utf-8")
return None return None
else: else:
return out return out
...@@ -442,6 +449,7 @@ def remove_file(fname): ...@@ -442,6 +449,7 @@ def remove_file(fname):
def my_check_keys(): def my_check_keys():
"""Vérifie les clés et affiche un message en fonction du résultat""" """Vérifie les clés et affiche un message en fonction du résultat"""
print u"Vérification que les clés sont valides (uid correspondant au login) et de confiance."
print (check_keys() and u"Base de clés ok" or u"Erreurs dans la base").encode("utf-8") print (check_keys() and u"Base de clés ok" or u"Erreurs dans la base").encode("utf-8")
def my_update_keys(): def my_update_keys():
...@@ -496,6 +504,8 @@ if __name__ == "__main__": ...@@ -496,6 +504,8 @@ if __name__ == "__main__":
help="Utilisation d'un serveur alternatif (test, backup, etc)") help="Utilisation d'un serveur alternatif (test, backup, etc)")
parser.add_argument('-v', '--verbose', action='store_true', default=False, parser.add_argument('-v', '--verbose', action='store_true', default=False,
help="Mode verbeux") help="Mode verbeux")
parser.add_argument('-q', '--quiet', action='store_true', default=False,
help="Mode silencieux. Cache les message d'erreurs (override --verbose).")
parser.add_argument('-c', '--clipboard', action='store_true', default=None, parser.add_argument('-c', '--clipboard', action='store_true', default=None,
help="Stocker le mot de passe dans le presse papier") help="Stocker le mot de passe dans le presse papier")
parser.add_argument('--no-clip', '--noclip', '--noclipboard', action='store_false', default=None, parser.add_argument('--no-clip', '--noclip', '--noclipboard', action='store_false', default=None,
...@@ -541,7 +551,8 @@ if __name__ == "__main__": ...@@ -541,7 +551,8 @@ if __name__ == "__main__":
parsed = parser.parse_args(sys.argv[1:]) parsed = parser.parse_args(sys.argv[1:])
SERVER = config.servers[parsed.server] SERVER = config.servers[parsed.server]
VERB = parsed.verbose QUIET = parsed.quiet
VERB = parsed.verbose and not QUIET
if parsed.clipboard != None: if parsed.clipboard != None:
CLIPBOARD = parsed.clipboard CLIPBOARD = parsed.clipboard
FORCED = parsed.force FORCED = parsed.force
...@@ -551,8 +562,10 @@ if __name__ == "__main__": ...@@ -551,8 +562,10 @@ if __name__ == "__main__":
if parsed.action.func_code.co_argcount == 0: if parsed.action.func_code.co_argcount == 0:
parsed.action() parsed.action()
elif parsed.fname == None: elif parsed.fname == None:
print u"Vous devez fournir un nom de fichier avec cette commande".encode("utf-8") if not QUIET:
parser.print_help() print u"Vous devez fournir un nom de fichier avec cette commande".encode("utf-8")
parser.print_help()
sys.exit(1)
else: else:
parsed.action(parsed.fname) parsed.action(parsed.fname)
......
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