Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
Cranspasswords
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
Cranspasswords
Commits
e8ea0074
Commit
e8ea0074
authored
Oct 24, 2014
by
Pierre-Elliott Bécue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Le texte retourné quand on édite peut être vide.
* Par exemple, si le fichier n'est pas chiffré pour ma clef.
parent
58b5bf90
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
19 deletions
+19
-19
client.py
client.py
+19
-19
No files found.
client.py
View file @
e8ea0074
...
...
@@ -298,7 +298,7 @@ def remote_command(options, command, arg=None, stdin_contents=None):
commande"""
detail
=
options
.
verbose
and
not
options
.
quiet
keep_alive
=
options
.
serverdata
.
get
(
'keep-alive'
,
False
)
if
keep_alive
:
conn
=
get_keep_alive_connection
(
options
)
args
=
filter
(
None
,
[
arg
,
stdin_contents
])
...
...
@@ -396,9 +396,9 @@ def gen_password():
def
update_keys
(
options
):
"""Met à jour les clés existantes"""
keys
=
all_keys
(
options
)
_
,
stdout
=
gpg
(
options
,
"receive-keys"
,
[
key
for
_
,
key
in
keys
.
values
()
if
key
])
return
stdout
.
read
()
.
decode
(
"utf-8"
)
...
...
@@ -427,7 +427,7 @@ def _check_encryptable(key):
def
check_keys
(
options
,
recipients
=
None
,
quiet
=
False
):
"""Vérifie les clés, c'est-à-dire, si le mail est présent dans les identités du fingerprint,
et que la clé est de confiance (et non expirée/révoquée).
* Si ``recipients`` est fourni, vérifie seulement ces recipients.
Renvoie la liste de ceux qu'on n'a pas droppés.
* Si ``options.force=False``, demandera confirmation pour dropper un recipient dont la clé est invalide.
...
...
@@ -510,7 +510,7 @@ def get_dest_of_roles(options, roles):
def
encrypt
(
options
,
roles
,
contents
):
"""Chiffre le contenu pour les roles donnés"""
allkeys
=
all_keys
(
options
)
recipients
=
get_recipients_of_roles
(
options
,
roles
)
recipients
=
check_keys
(
options
,
recipients
=
recipients
,
quiet
=
True
)
...
...
@@ -520,7 +520,7 @@ def encrypt(options, roles, contents):
if
fpr
:
fpr_recipients
.
append
(
"-r"
)
fpr_recipients
.
append
(
fpr
)
stdin
,
stdout
=
gpg
(
options
,
"encrypt"
,
fpr_recipients
)
stdin
.
write
(
contents
.
encode
(
"utf-8"
))
stdin
.
close
()
...
...
@@ -565,7 +565,7 @@ def editor(texte, annotations=u""):
""" Lance $EDITOR sur texte.
Renvoie le nouveau texte si des modifications ont été apportées, ou None
"""
# Avoid syntax hilight with ".txt". Would be nice to have some colorscheme
# for annotations ...
f
=
tempfile
.
NamedTemporaryFile
(
suffix
=
'.txt'
)
...
...
@@ -573,7 +573,7 @@ def editor(texte, annotations=u""):
if
annotations
:
annotations
=
"# "
+
annotations
.
replace
(
"
\n
"
,
"
\n
# "
)
# Usually, there is already an ending newline in a text document
if
texte
[
-
1
]
!=
'
\n
'
:
if
texte
and
texte
[
-
1
]
!=
'
\n
'
:
annotations
=
'
\n
'
+
annotations
else
:
annotations
+=
'
\n
'
...
...
@@ -599,7 +599,7 @@ def show_files(options):
access
=
set
(
my_roles
)
.
intersection
(
froles
)
!=
set
([])
print
((
u"
%
s
%
s (
%
s)"
%
((
access
and
'+'
or
'-'
),
fname
,
", "
.
join
(
froles
)))
.
encode
(
"utf-8"
))
print
((
u"""--Mes roles:
%
s"""
%
(
", "
.
join
(
my_roles
),))
.
encode
(
"utf-8"
))
def
show_roles
(
options
):
"""Affiche la liste des roles existants"""
print
(
u"Liste des roles disponibles"
.
encode
(
"utf-8"
))
...
...
@@ -746,15 +746,15 @@ Enregistrez le fichier vide pour annuler.\n"""
message
=
message
%
(
", "
.
join
(
r
[:
-
2
]
for
r
in
my_roles
if
'-w'
in
r
),)
if
not
confirm
(
options
,
message
):
return
annotations
+=
u"""Ce fichier sera chiffré pour les rôles suivants :
\n
%
s
\n
C'est-à-dire pour les utilisateurs suivants :
\n
%
s"""
%
(
', '
.
join
(
new_roles
),
'
\n
'
.
join
(
'
%
s'
%
rec
for
rec
in
get_dest_of_roles
(
options
,
new_roles
))
)
ntexte
=
editor
(
texte
,
annotations
)
if
((
not
nfile
and
ntexte
in
[
u''
,
texte
]
# pas nouveau, vidé ou pas modifié
and
set
(
new_roles
)
==
set
(
passfile
[
'roles'
]))
# et on n'a même pas touché à ses rôles,
or
(
nfile
and
ntexte
==
u''
)):
# ou alors on a créé un fichier vide.
...
...
@@ -809,7 +809,7 @@ def recrypt_files(options, strict=False):
if
rechiffre_roles
==
None
:
# Sans précisions, on prend tous les roles qu'on peut
rechiffre_roles
=
my_roles_w
# La liste des fichiers
allfiles
=
all_files
(
options
)
...
...
@@ -861,9 +861,9 @@ def parse_roles(options, cast=False):
vaut None, alors on considère cette valeur comme valide.
Cependant, si ``cast`` est vraie, cette valeur est remplacée par
tous les roles en écriture (*-w) de l'utilisateur.
Renvoie ``False`` si au moins un de ces rôles pose problème.
poser problème, c'est :
* être un role-w (il faut utiliser le role sans le w)
* ne pas exister dans la config du serveur
...
...
@@ -966,10 +966,10 @@ if __name__ == "__main__":
parser
.
add_argument
(
'fname'
,
nargs
=
'?'
,
default
=
None
,
type
=
lambda
x
:
x
.
decode
(
'utf-8'
),
help
=
"Nom du fichier à afficher"
)
# On parse les options fournies en commandline
options
=
parser
.
parse_args
(
sys
.
argv
[
1
:])
## On calcule les options qui dépendent des autres.
## C'est un peu un hack, peut-être que la méthode propre serait de surcharger argparse.ArgumentParser
## et argparse.Namespace, mais j'ai pas réussi à comprendre commenr m'en sortir.
...
...
@@ -991,11 +991,11 @@ if __name__ == "__main__":
# Il faudrait ptêtre faire ça plus proprement, en attendant, je ducktape.
if
options
.
action
!=
show_servers
:
options
.
roles
=
parse_roles
(
options
)
# Si l'utilisateur a demandé une action qui nécessite un nom de fichier,
# on vérifie qu'il a bien fourni un nom de fichier.
if
options
.
action
in
NEED_FILENAME
:
insult_on_nofilename
(
options
,
parser
)
# On exécute l'action demandée
options
.
action
(
options
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment