mpw 4.0.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +122 -0
- data/.travis.yml +2 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile +7 -9
- data/README.md +1 -7
- data/VERSION +1 -1
- data/bin/mpw +25 -25
- data/bin/mpw-add +54 -25
- data/bin/mpw-config +74 -62
- data/bin/mpw-copy +25 -30
- data/bin/mpw-delete +24 -29
- data/bin/mpw-export +27 -32
- data/bin/mpw-genpwd +22 -22
- data/bin/mpw-import +20 -25
- data/bin/mpw-list +24 -29
- data/bin/mpw-update +61 -32
- data/bin/mpw-wallet +48 -73
- data/i18n/en.yml +15 -26
- data/i18n/fr.yml +15 -26
- data/lib/mpw/cli.rb +554 -546
- data/lib/mpw/config.rb +168 -139
- data/lib/mpw/item.rb +75 -82
- data/lib/mpw/mpw.rb +328 -465
- data/mpw.gemspec +11 -10
- data/templates/add_form.erb +8 -8
- data/templates/update_form.erb +7 -7
- data/test/test_config.rb +70 -55
- data/test/test_item.rb +167 -167
- data/test/test_mpw.rb +132 -132
- data/test/test_translate.rb +23 -23
- data/test/tests.rb +1 -1
- metadata +4 -45
- data/lib/mpw/sync/ftp.rb +0 -68
- data/lib/mpw/sync/ssh.rb +0 -67
data/bin/mpw-update
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
# MPW is a software to crypt and manage your passwords
|
3
|
-
# Copyright (C)
|
4
|
-
#
|
3
|
+
# Copyright (C) 2017 Adrien Waksberg <mpw@yae.im>
|
4
|
+
#
|
5
5
|
# This program is free software; you can redistribute it and/or
|
6
6
|
# modify it under the terms of the GNU General Public License
|
7
7
|
# as published by the Free Software Foundation; either version 2
|
8
8
|
# of the License, or (at your option) any later version.
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# This program is distributed in the hope that it will be useful,
|
11
11
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
12
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
13
|
# GNU General Public License for more details.
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# You should have received a copy of the GNU General Public License
|
16
16
|
# along with this program; if not, write to the Free Software
|
17
17
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
@@ -24,47 +24,76 @@ require 'mpw/cli'
|
|
24
24
|
# Options
|
25
25
|
# --------------------------------------------------------- #
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
values = {}
|
28
|
+
search = {}
|
29
|
+
options = {}
|
30
|
+
options[:text_editor] = false
|
30
31
|
|
31
32
|
OptionParser.new do |opts|
|
32
|
-
|
33
|
+
opts.banner = "#{I18n.t('option.usage')}: mpw update [options]"
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
opts.on('-c', '--config PATH', I18n.t('option.config')) do |config|
|
36
|
+
options[:config] = config
|
37
|
+
end
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
opts.on('-C', '--comment COMMENT', I18n.t('option.comment')) do |comment|
|
40
|
+
values[:comment] = comment
|
41
|
+
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
43
|
+
opts.on('-g', '--group NAME', I18n.t('option.group')) do |group|
|
44
|
+
search[:group] = group
|
45
|
+
end
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
opts.on('-G', '--new-group NAME', I18n.t('option.new_group')) do |group|
|
48
|
+
values[:group] = group
|
49
|
+
end
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
opts.on('-h', '--help', I18n.t('option.help')) do
|
52
|
+
puts opts
|
53
|
+
exit 0
|
54
|
+
end
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
opts.on('-H', '--host HOST', I18n.t('option.host')) do |host|
|
57
|
+
values[:host] = host
|
58
|
+
end
|
58
59
|
|
59
|
-
|
60
|
-
|
61
|
-
|
60
|
+
opts.on('-o', '--otp-code CODE', I18n.t('option.otp_code')) do |otp|
|
61
|
+
values[:otp_key] = otp
|
62
|
+
end
|
63
|
+
|
64
|
+
opts.on('-O', '--protocol PROTOCOL', I18n.t('option.protocol')) do |protocol|
|
65
|
+
values[:protocol] = protocol
|
66
|
+
end
|
67
|
+
|
68
|
+
opts.on('-p', '--pattern PATTERN', I18n.t('option.pattern')) do |pattern|
|
69
|
+
search[:pattern] = pattern
|
70
|
+
end
|
71
|
+
|
72
|
+
opts.on('-P', '--port NUMBER', I18n.t('option.port')) do |port|
|
73
|
+
values[:port] = port
|
74
|
+
end
|
75
|
+
|
76
|
+
opts.on('-r', '--random', I18n.t('option.random_password')) do
|
77
|
+
options[:password] = true
|
78
|
+
end
|
79
|
+
|
80
|
+
opts.on('-t', '--text-editor', I18n.t('option.text_editor')) do
|
81
|
+
options[:text_editor] = true
|
82
|
+
end
|
83
|
+
|
84
|
+
opts.on('-u', '--user USER', I18n.t('option.user')) do |user|
|
85
|
+
values[:user] = user
|
86
|
+
end
|
87
|
+
|
88
|
+
opts.on('-w', '--wallet NAME', I18n.t('option.wallet')) do |wallet|
|
89
|
+
options[:wallet] = wallet
|
90
|
+
end
|
62
91
|
end.parse!
|
63
92
|
|
64
93
|
config = MPW::Config.new(options[:config])
|
65
|
-
cli = MPW::Cli.new(config
|
94
|
+
cli = MPW::Cli.new(config)
|
66
95
|
|
67
96
|
cli.load_config
|
68
97
|
cli.get_wallet(options[:wallet])
|
69
98
|
cli.decrypt
|
70
|
-
cli.update(options[:password], values)
|
99
|
+
cli.update(options[:password], options[:text_editor], search, values)
|
data/bin/mpw-wallet
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
# MPW is a software to crypt and manage your passwords
|
3
|
-
# Copyright (C)
|
4
|
-
#
|
3
|
+
# Copyright (C) 2017 Adrien Waksberg <mpw@yae.im>
|
4
|
+
#
|
5
5
|
# This program is free software; you can redistribute it and/or
|
6
6
|
# modify it under the terms of the GNU General Public License
|
7
7
|
# as published by the Free Software Foundation; either version 2
|
8
8
|
# of the License, or (at your option) any later version.
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# This program is distributed in the hope that it will be useful,
|
11
11
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
12
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
13
|
# GNU General Public License for more details.
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# You should have received a copy of the GNU General Public License
|
16
16
|
# along with this program; if not, write to the Free Software
|
17
17
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
@@ -25,92 +25,67 @@ require 'mpw/cli'
|
|
25
25
|
# --------------------------------------------------------- #
|
26
26
|
|
27
27
|
options = {}
|
28
|
-
options[:sync] = {}
|
29
28
|
options[:delete] = false
|
30
|
-
values = {}
|
31
29
|
|
32
30
|
OptionParser.new do |opts|
|
33
|
-
|
31
|
+
opts.banner = "#{I18n.t('option.usage')}: mpw wallet [options]"
|
34
32
|
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
opts.on('-a', '--add-gpg-key NAME', I18n.t('option.add_gpg_key')) do |gpg_key|
|
34
|
+
options[:gpg_key] = gpg_key
|
35
|
+
end
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
37
|
+
opts.on('-c', '--config PATH', I18n.t('option.config')) do |config|
|
38
|
+
options[:config] = config
|
39
|
+
end
|
42
40
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
opts.on('-d', '--delete-gpg-key NAME', I18n.t('option.delete_gpg_key')) do |gpg_key|
|
42
|
+
options[:gpg_key] = gpg_key
|
43
|
+
options[:delete] = true
|
44
|
+
end
|
47
45
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
opts.on('-h', '--help', I18n.t('option.help')) do
|
47
|
+
puts opts
|
48
|
+
exit 0
|
49
|
+
end
|
52
50
|
|
53
|
-
|
54
|
-
|
55
|
-
|
51
|
+
opts.on('-l', '--list', I18n.t('option.list')) do
|
52
|
+
options[:list] = true
|
53
|
+
end
|
56
54
|
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
opts.on('-L', '--list-keys', I18n.t('option.list_keys')) do
|
56
|
+
options[:list_keys] = true
|
57
|
+
end
|
60
58
|
|
61
|
-
|
62
|
-
|
63
|
-
|
59
|
+
opts.on('-p', '--path PATH', I18n.t('option.path')) do |path|
|
60
|
+
options[:path] = path
|
61
|
+
end
|
64
62
|
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
opts.on('-P', '--default-path', I18n.t('option.default_path')) do
|
64
|
+
options[:path] = 'default'
|
65
|
+
end
|
68
66
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
opts.on('--path PATH', I18n.t('option.path')) do |path|
|
74
|
-
values[:path] = path
|
75
|
-
end
|
76
|
-
|
77
|
-
opts.on('--port NUMBER', I18n.t('option.port')) do |port|
|
78
|
-
values[:port] = port
|
79
|
-
end
|
80
|
-
|
81
|
-
opts.on('--protocol NAME', I18n.t('option.protocol')) do |protocol|
|
82
|
-
values[:protocol] = protocol
|
83
|
-
end
|
84
|
-
|
85
|
-
opts.on('--user NAME', I18n.t('option.user')) do |user|
|
86
|
-
values[:user] = user
|
87
|
-
end
|
88
|
-
|
89
|
-
opts.on('-w', '--wallet NAME', I18n.t('option.wallet')) do |wallet|
|
90
|
-
options[:wallet] = wallet
|
91
|
-
end
|
67
|
+
opts.on('-w', '--wallet NAME', I18n.t('option.wallet')) do |wallet|
|
68
|
+
options[:wallet] = wallet
|
69
|
+
end
|
92
70
|
end.parse!
|
93
71
|
|
94
72
|
config = MPW::Config.new(options[:config])
|
95
|
-
cli = MPW::Cli.new(config
|
73
|
+
cli = MPW::Cli.new(config)
|
96
74
|
|
97
75
|
cli.load_config
|
98
76
|
|
99
|
-
if
|
100
|
-
|
77
|
+
if options.key?(:list)
|
78
|
+
cli.list_wallet
|
79
|
+
elsif options.key?(:path)
|
80
|
+
cli.get_wallet(options[:wallet])
|
81
|
+
cli.set_wallet_path(options[:path])
|
101
82
|
else
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
else
|
111
|
-
cli.add_key(options[:gpg_key])
|
112
|
-
end
|
113
|
-
elsif not values.empty?
|
114
|
-
cli.setup_wallet_config(values)
|
115
|
-
end
|
83
|
+
cli.get_wallet(options[:wallet])
|
84
|
+
cli.decrypt
|
85
|
+
|
86
|
+
if options.key?(:list_keys)
|
87
|
+
cli.list_keys
|
88
|
+
elsif options.key?(:gpg_key)
|
89
|
+
options[:delete] ? cli.delete_key(options[:gpg_key]) : cli.add_key(options[:gpg_key])
|
90
|
+
end
|
116
91
|
end
|
data/i18n/en.yml
CHANGED
@@ -23,15 +23,6 @@ en:
|
|
23
23
|
import: "Can't import, unable to read %{file}!"
|
24
24
|
update:
|
25
25
|
host_empty: "You must define a host!"
|
26
|
-
sync:
|
27
|
-
general: "An error has appeared during the sync"
|
28
|
-
connection: "Connection fail!"
|
29
|
-
communication: "A communication problem with the server is appeared!"
|
30
|
-
download: "Can't download the file!"
|
31
|
-
not_authorized: "You haven't the access to remote file!"
|
32
|
-
upload: "Can't upload the file on the server!"
|
33
|
-
unknown: "An unknown error is occured!"
|
34
|
-
unknown_type: "The sync type is unknown"
|
35
26
|
|
36
27
|
warning:
|
37
28
|
select: 'Your choice is not a valid element!'
|
@@ -52,12 +43,15 @@ en:
|
|
52
43
|
add: "Add an item or key"
|
53
44
|
add_gpg_key: "Share the wallet with an other GPG key"
|
54
45
|
alpha: "Use letter to generate a password"
|
46
|
+
comment: "Specify a comment"
|
55
47
|
config: "Specify the configuration file to use"
|
56
48
|
clipboard: "Disable the clipboard feature"
|
49
|
+
default_path: "Move the wallet in default directory"
|
57
50
|
default_wallet: "Specify the default wallet to use"
|
58
51
|
delete_gpg_key: "Delete the wallet's share with an other GPG key"
|
59
52
|
disable_alpha: "Don't use letter to generate a password"
|
60
53
|
disable_numeric: "Don't use number to generate a password"
|
54
|
+
disable_pinmode: "Disable the pinentry mode"
|
61
55
|
disable_special_chars: "Don't use special char to generate a password"
|
62
56
|
export: "Export a wallet in an yaml file"
|
63
57
|
file_export: "Specify the file where export data"
|
@@ -68,7 +62,7 @@ en:
|
|
68
62
|
gpg_key: "Specify a GPG key (ex: user@example.com)"
|
69
63
|
group: "Search the items with specified group"
|
70
64
|
help: "Show this help message"
|
71
|
-
host: "Specify
|
65
|
+
host: "Specify a host or ip"
|
72
66
|
init: "Initialize mpw"
|
73
67
|
import: "Import item since a yaml file"
|
74
68
|
key: "Specify the key name"
|
@@ -76,21 +70,23 @@ en:
|
|
76
70
|
length: "Size of the password"
|
77
71
|
list: "List the wallets"
|
78
72
|
list_keys: "List the GPG keys in wallet"
|
79
|
-
|
73
|
+
new_group: "Specify the group for the item"
|
80
74
|
numeric: "Use number to generate a password"
|
81
|
-
|
82
|
-
path: "
|
75
|
+
otp_code: "Set an otp key"
|
76
|
+
path: "Move the wallet in new specify directory"
|
83
77
|
pattern: "Given search pattern"
|
84
|
-
|
85
|
-
|
78
|
+
pinmode: "Enable pinentry mode (available with gpg >= 2.1)"
|
79
|
+
port: "Set a port of connexion"
|
80
|
+
protocol: "Set a protocol of connexion"
|
86
81
|
random_password: "Generate a random password"
|
87
82
|
setup: "Create a new configuration file"
|
88
83
|
setup_wallet: "Create a new configuration file for a wallet"
|
89
84
|
special_chars: "Use special char to generate a password"
|
90
85
|
show: "Search and show the items"
|
91
86
|
show_all: "List all items"
|
87
|
+
text_editor: "Use text editor to edit the item"
|
92
88
|
usage: "Usage"
|
93
|
-
user: "
|
89
|
+
user: "Set an user"
|
94
90
|
wallet: "Specify a wallet to use"
|
95
91
|
wallet_dir: "Set the wallets folder"
|
96
92
|
|
@@ -134,6 +130,8 @@ en:
|
|
134
130
|
not_valid: "No data to import!"
|
135
131
|
set_config:
|
136
132
|
valid: "The config file has been edited!"
|
133
|
+
set_wallet_path:
|
134
|
+
valid: "The wallet has well moved!"
|
137
135
|
setup_config:
|
138
136
|
title: "Setup a new config file"
|
139
137
|
lang: "Choose your language (en, fr, ...) [default=%{lang}]: "
|
@@ -141,16 +139,6 @@ en:
|
|
141
139
|
gpg_exe: "Enter the executable GPG path (optional): "
|
142
140
|
wallet_dir: "Enter the wallets's folder path [default=%{home}/wallets]: "
|
143
141
|
valid: "The config file has been created!"
|
144
|
-
setup_wallet:
|
145
|
-
password: "Sync password: "
|
146
|
-
title: "Wallet setup"
|
147
|
-
sync_type: "Synchronization type (ssh, ftp): "
|
148
|
-
sync_host: "Synchronization server: "
|
149
|
-
sync_port: "Port of the synchronization server: "
|
150
|
-
sync_user: "Username for the synchronization: "
|
151
|
-
sync_pwd: "Password for the synchronization: "
|
152
|
-
sync_path: "File path for the synchronization : "
|
153
|
-
valid: "The wallet config file has been created!"
|
154
142
|
setup_gpg_key:
|
155
143
|
title: "Setup a GPG key"
|
156
144
|
ask: "Do you want create your GPG key ? (Y/n)"
|
@@ -179,6 +167,7 @@ en:
|
|
179
167
|
|
180
168
|
display:
|
181
169
|
comment: "Comment"
|
170
|
+
config: "Configuration"
|
182
171
|
error: "ERROR"
|
183
172
|
keys: "GPG keys"
|
184
173
|
gpg_password: "GPG passphrase: "
|
data/i18n/fr.yml
CHANGED
@@ -23,15 +23,6 @@ fr:
|
|
23
23
|
import: "Impossible d'importer le fichier %{file}, car il n'est pas lisible!"
|
24
24
|
update:
|
25
25
|
host_empty: "Vous devez définir un host!"
|
26
|
-
sync:
|
27
|
-
general: "Une erreur est survenue durant la synchronisation"
|
28
|
-
connection: "La connexion n'a pu être établie!"
|
29
|
-
communication: "Un problème de communication avec le serveur est apparu!"
|
30
|
-
download: "Impossible de télécharger le fichier!"
|
31
|
-
not_authorized: "Vous n'avez pas les autorisations d'accès au fichier distant!"
|
32
|
-
upload: "Impossible d'envoyer le fichier sur le serveur!"
|
33
|
-
unknown: "Une erreur inconnue est survenue!"
|
34
|
-
unknown_type: "Le type de synchronisation est inconnu"
|
35
26
|
|
36
27
|
warning:
|
37
28
|
select: "Votre choix n'est pas un élément valide!"
|
@@ -53,11 +44,14 @@ fr:
|
|
53
44
|
add_gpg_key: "Partage le portefeuille avec une autre clé GPG"
|
54
45
|
alpha: "Utilise des lettres dans la génération d'un mot de passe"
|
55
46
|
config: "Spécifie le fichier de configuration à utiliser"
|
47
|
+
comment: "Spécifie un commentaire"
|
56
48
|
clipboard: "Désactive la fonction presse papier"
|
49
|
+
default_path: "Déplace le portefeuille dans le dossier par défaut"
|
57
50
|
default_wallet: "Spécifie le porte-feuille à utiliser par défaut"
|
58
51
|
delete_gpg_key: "Supprime le partage le portefeuille avec une autre clé GPG"
|
59
52
|
disable_alpha: "Désactive l'utilisation des lettres dans la génération d'un mot de passe"
|
60
53
|
disable_numeric: "Désactive l'utilisation des chiffre dans la génération d'un mot de passe"
|
54
|
+
disable_pinmode: "Désactive le mode pinentry"
|
61
55
|
disable_special_chars: "Désactive l'utilisation des charactères speciaux dans la génération d'un mot de passe"
|
62
56
|
export: "Exporte un portefeuille dans un fichier yaml"
|
63
57
|
file_export: "Spécifie le fichier où exporter les données"
|
@@ -68,7 +62,7 @@ fr:
|
|
68
62
|
gpg_key: "Spécifie une clé GPG (ex: user@example.com)"
|
69
63
|
group: "Recherche les éléments appartenant au groupe spécifié"
|
70
64
|
help: "Affiche ce message d'aide"
|
71
|
-
host: "Spécifie le serveur
|
65
|
+
host: "Spécifie le nom du serveur ou l'ip"
|
72
66
|
import: "Importe des éléments depuis un fichier yaml"
|
73
67
|
init: "Initialise mpw"
|
74
68
|
key: "Spécifie le nom d'une clé"
|
@@ -76,21 +70,23 @@ fr:
|
|
76
70
|
length: "Taille du mot de passe"
|
77
71
|
list: "Liste les portefeuilles"
|
78
72
|
list_keys: "Liste les clés GPG dans le portefeuille"
|
79
|
-
|
73
|
+
new_group: "Spécifie le groupe de l'item"
|
80
74
|
numeric: "Utilise des chiffre dans la génération d'un mot de passe"
|
81
|
-
|
82
|
-
path: "
|
75
|
+
otp_code: "Spécifie un code OTP"
|
76
|
+
path: "Déplace le portefeuille dans un nouveau dossier"
|
83
77
|
pattern: "Motif de donnée à chercher"
|
84
|
-
|
85
|
-
|
78
|
+
pinmode: "Active le mode pinentry (valable avec gpg >= 2.1)"
|
79
|
+
port: "Spécifie un port de connexion"
|
80
|
+
protocol: "Spécifie un protocol de connexion"
|
86
81
|
random_password: "Génére un mot de passe aléatoire"
|
87
82
|
setup: "Création d'un nouveau fichier de configuration"
|
88
83
|
setup_wallet: "Création d'un nouveau fichier de configuration pour un portefeuille"
|
89
84
|
special_chars: "Utilise des charactères speciaux dans la génération d'un mot de passe"
|
90
85
|
show: "Recherche et affiche les éléments"
|
91
86
|
show_all: "Liste tous les éléments"
|
87
|
+
text_editor: "Active l'édition avec un éditeur de texte"
|
92
88
|
usage: "Utilisation"
|
93
|
-
user: "Spécifie
|
89
|
+
user: "Spécifie un utilisateur"
|
94
90
|
wallet: "Spécifie le portefeuille à utiliser"
|
95
91
|
wallet_dir: "Spécifie le répertoire des portefeuilles"
|
96
92
|
|
@@ -134,6 +130,8 @@ fr:
|
|
134
130
|
not_valid: "Aucune donnée à importer!"
|
135
131
|
set_config:
|
136
132
|
valid: "Le fichier de configuration a bien été modifié!"
|
133
|
+
set_wallet_path:
|
134
|
+
valid: "Le portefeuille a bien été déplacé!"
|
137
135
|
setup_config:
|
138
136
|
title: "Création d'un nouveau fichier de configuration"
|
139
137
|
lang: "Choisissez votre langue (en, fr, ...) [défaut=%{lang}]: "
|
@@ -141,16 +139,6 @@ fr:
|
|
141
139
|
gpg_exe: "Entrez le chemin de l'exécutable GPG (optionnel): "
|
142
140
|
wallet_dir: "Entrez le chemin du répertoire qui contiendra les porte-feuilles de mot de passe [défaut=%{home}/wallets]: "
|
143
141
|
valid: "Le fichier de configuration a bien été créé!"
|
144
|
-
setup_wallet:
|
145
|
-
password: "Mot de passe de synchronisation: "
|
146
|
-
title: "Configuration du porte-feuille"
|
147
|
-
sync_type: "Type de synchronisation (ssh, ftp): "
|
148
|
-
sync_host: "Serveur: "
|
149
|
-
sync_port: "Port: "
|
150
|
-
sync_user: "Utilisateur: "
|
151
|
-
sync_pwd: "Mot de passe: "
|
152
|
-
sync_path: "Chemin du fichier: "
|
153
|
-
valid: "Le fichier de configuration du porte-feuille a bien été créé!"
|
154
142
|
setup_gpg_key:
|
155
143
|
title: "Configuration d'une nouvelle clé GPG"
|
156
144
|
ask: "Voulez vous créer votre clé GPG ? (O/n)"
|
@@ -179,6 +167,7 @@ fr:
|
|
179
167
|
|
180
168
|
display:
|
181
169
|
comment: "Commentaire"
|
170
|
+
config: "Configuration"
|
182
171
|
error: "ERREUR"
|
183
172
|
keys: "Clés GPG"
|
184
173
|
gpg_password: "Mot de passe GPG: "
|