secrez 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +503 -444
- package/bin/secrez.js +50 -47
- package/coverage.report +91 -85
- package/package.json +10 -12
- package/src/Command.js +78 -57
- package/src/PreCommand.js +75 -70
- package/src/Welcome.js +144 -134
- package/src/cliConfig.js +14 -14
- package/src/commands/Alias.js +123 -100
- package/src/commands/Bash.js +10 -12
- package/src/commands/Cat.js +117 -107
- package/src/commands/Cd.js +39 -42
- package/src/commands/Chat.js +75 -63
- package/src/commands/Conf.js +123 -99
- package/src/commands/Contacts.js +189 -171
- package/src/commands/Copy.js +132 -113
- package/src/commands/Courier.js +123 -105
- package/src/commands/Ds.js +88 -76
- package/src/commands/Edit.js +122 -103
- package/src/commands/Export.js +201 -116
- package/src/commands/Find.js +115 -110
- package/src/commands/Help.js +20 -23
- package/src/commands/Import.js +296 -225
- package/src/commands/Lcat.js +36 -39
- package/src/commands/Lcd.js +38 -39
- package/src/commands/Lls.js +58 -55
- package/src/commands/Lpwd.js +20 -24
- package/src/commands/Ls.js +107 -97
- package/src/commands/Mkdir.js +35 -38
- package/src/commands/Mv.js +147 -114
- package/src/commands/Paste.js +68 -65
- package/src/commands/Pwd.js +18 -23
- package/src/commands/Quit.js +22 -24
- package/src/commands/Rm.js +78 -70
- package/src/commands/Shell.js +31 -32
- package/src/commands/Ssh.js +77 -63
- package/src/commands/Tag.js +133 -112
- package/src/commands/Totp.js +166 -136
- package/src/commands/Touch.js +169 -56
- package/src/commands/Use.js +44 -41
- package/src/commands/Ver.js +16 -18
- package/src/commands/Whoami.js +34 -37
- package/src/commands/chat/Contacts.js +41 -44
- package/src/commands/chat/Help.js +20 -23
- package/src/commands/chat/Join.js +59 -55
- package/src/commands/chat/Leave.js +16 -22
- package/src/commands/chat/Quit.js +19 -24
- package/src/commands/chat/Send.js +58 -57
- package/src/commands/chat/Show.js +60 -51
- package/src/commands/chat/Whoami.js +18 -22
- package/src/commands/index.js +20 -22
- package/src/index.js +3 -3
- package/src/prompts/ChatPrompt.js +87 -82
- package/src/prompts/ChatPromptMock.js +11 -17
- package/src/prompts/CommandPrompt.js +146 -138
- package/src/prompts/Completion.js +64 -69
- package/src/prompts/MainPrompt.js +84 -77
- package/src/prompts/MainPromptMock.js +19 -30
- package/src/prompts/MultiEditorPrompt.js +21 -22
- package/src/prompts/SigintManager.js +21 -24
- package/src/utils/AliasManager.js +16 -18
- package/src/utils/ContactManager.js +15 -17
- package/src/utils/Fido2Client.js +59 -49
- package/src/utils/HelpProto.js +130 -117
- package/src/utils/Logger.js +48 -50
- package/.eslintignore +0 -0
- package/.eslintrc +0 -33
- package/.jshintrc +0 -3
package/README.md
CHANGED
@@ -5,10 +5,6 @@
|
|
5
5
|
</h1>
|
6
6
|
|
7
7
|
<p align="center">
|
8
|
-
<a href="https://discord.gg/whsgXj">
|
9
|
-
<img src="https://img.shields.io/badge/chat-on%20discord-brightgreen.svg">
|
10
|
-
</a>
|
11
|
-
|
12
8
|
<a href="https://github.com/secrez/secrez/issues">
|
13
9
|
<img src="https://img.shields.io/github/issues/secrez/secrez.svg">
|
14
10
|
</a>
|
@@ -24,92 +20,66 @@
|
|
24
20
|
<a href="LICENSE">
|
25
21
|
<img src="https://img.shields.io/github/license/secrez/secrez.svg">
|
26
22
|
</a>
|
27
|
-
</p>
|
28
|
-
|
29
|
-
Secrez is:
|
30
|
-
* a CLI secret manager working as an encrypted file system;
|
31
|
-
* a decentralized surveillance-resistant end-to-end encrypted messaging system.
|
32
|
-
|
33
|
-
## Intro
|
34
|
-
|
35
|
-
At the very basic, Secrez is a CLI application that manages a particular encrypted file system, with commands working similarly to Unix commands like `cd`, `mkdir`, `ls`, `mv`, etc.
|
36
|
-
|
37
|
-
The idea is to interact with encrypted virtual files as if they are just files in a standard file system.
|
38
23
|
|
24
|
+
<a href="https://discord.gg/whsgXj">
|
25
|
+
<img src="https://img.shields.io/badge/chat-on%20discord-brightgreen.svg">
|
26
|
+
</a>
|
39
27
|
|
40
|
-
|
28
|
+
<a href="https://gitter.im/secrez/secrez?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge" alt="Join the chat at https://gitter.im/secrez/secrez">
|
29
|
+
<img src="https://badges.gitter.im/secrez/secrez.svg">
|
30
|
+
</a>
|
41
31
|
|
42
|
-
|
32
|
+
</p>
|
43
33
|
|
44
|
-
|
45
|
-
2. Desktop tools who keep data in the computer (like KeyPass)
|
34
|
+
Secrez is a CLI secret manager that functions as an encrypted file system, as well as a decentralized, surveillance-resistant, end-to-end encrypted messaging system.
|
46
35
|
|
47
|
-
|
48
|
-
I founded Passpack in 2006, and I know very well how, at any moment, you can add a backdoor —— even only for a specific user —— and most likely nobody will notice it.
|
36
|
+
## Intro
|
49
37
|
|
50
|
-
|
51
|
-
The standard solution is to backup the database on Dropbox or Google Drive and —— before using it —— download it locally, which is prone to produce unfixable problems and cause data loss.
|
38
|
+
At its core, Secrez is a command-line interface that manages an encrypted file system, with commands that work similarly to Unix commands like `cd`, `mkdir`, `ls`, `mv`, etc. The idea is to interact with encrypted virtual files as if they are just files in a standard file system.
|
52
39
|
|
53
|
-
|
40
|
+
## Why Secrez?
|
54
41
|
|
55
|
-
To
|
42
|
+
Secrez aims to provide a secure password management solution that is available everywhere. While online password managers like LastPass require you to trust a remote server, desktop tools like KeyPass are more secure but difficult to use on multiple computers. To address this, Secrez combines the security of KeyPass with the accessibility of LastPass.
|
56
43
|
|
57
|
-
|
58
|
-
- Any file — besides if it is a tree version, a directory, a text file, or a binary file — is immutable
|
59
|
-
- Any change can be pulled/pushed to a remote private repo
|
44
|
+
To achieve its goal, Secrez uses several strategies. First, any secret is a local file. Second, any file, whether it's a tree version, a directory, a text file, or a binary file, is immutable. Finally, any change can be pulled/pushed to a remote private repository. You can either create a private repository on GitHub, BitBucket, etc. or set up your own self-hosted Git server.
|
60
45
|
|
61
|
-
|
46
|
+
In addition to functioning as a password manager, Secrez also includes an optional decentralized, surveillance-resistant, end-to-end encrypted messaging system. This provides an extra layer of security for your communications, ensuring that your messages cannot be intercepted or read by anyone other than the intended recipient.
|
62
47
|
|
63
|
-
|
48
|
+
Overall, Secrez offers a powerful and secure solution for managing your passwords and secrets, all from the command line.
|
64
49
|
|
65
50
|
## The structure
|
66
51
|
|
67
|
-
Secrez simulates an operating system
|
68
|
-
|
69
|
-
Starting from version `0.6.0`, the data are organized in datasets. Think of them like separate disks, something like `/dev/disk1` and `/dev/disk2`.
|
70
|
-
|
71
|
-
By default, Secrez generates two datasets: `main` and `trash`. You can create more with, for example, `use -c archive`. The advantage of multiple datasets is mostly for people who have a lot of secrets to manage. If you have 2,000, if they are all in the primary dataset, the system will probably become quite slow. The solution is to move data to separate datasets (`archive`, `backup`, `twitter`, `cryptos`, etc.)
|
72
|
-
|
73
|
-
|
74
|
-
## Secrez never lose secrets
|
75
|
-
|
76
|
-
One of the primary goal of a secrets manager is that you will never lose any data.
|
52
|
+
Secrez simulates an operating system, allowing you to execute commands like ls and mv when you load the environment, similar to what you would normally do in a Unix terminal.
|
77
53
|
|
78
|
-
|
54
|
+
Starting from version 0.6.0, Secrez organizes data into datasets, which act like separate disks, such as /dev/disk1 and /dev/disk2. By default, Secrez generates two datasets: main and trash. You can create more using the use -c command, such as use -c archive.
|
55
|
+
One of the primary goals of a secrets manager is to ensure that no data is ever lost. However, in some cases, secrets may exist in a folder but not be loaded if only the most recent index is read.
|
79
56
|
|
80
|
-
|
57
|
+
Here's an example: Alice uses Secrez on both computer A and B, and the two data sets are aligned. Suddenly, GitHub goes down, and she makes some changes on both computers. When GitHub comes back online, she pushes the master branch on computer A, and everything goes fine. However, when she pulls on computer B and pushes, the data online become inconsistent because the most recent tree (from B) does not contain the new changes that were previously saved on A. This means that some secrets are in one index, while others are in the other.
|
81
58
|
|
82
|
-
When
|
59
|
+
No problem. When Alice restarts Secrez, the system finds the extra secrets, reads their positions from the previous indexes, and puts them back in the tree. Since files are immutable, the recovery strategy is not always obvious. Here's what happens in different cases:
|
83
60
|
|
84
|
-
|
85
|
-
|
61
|
+
If the recovered secret is in a folder that does not exist in the "official" index, the entire path is added using the encrypted data of the recovered secret.
|
62
|
+
If the secret is a file in a folder that already exists, the file is added as is, but the folders with existing paths are trashed.
|
63
|
+
If the secret is a file and a file with the same name already exists in the same position, the system checks the content of the file. If it is the same, the secret is ignored. If it's different, it is added as a version.
|
64
|
+
Any unused or rewritten secrets (as versions) are trashed (you can check them in the trash dataset). In any case, all the contents are kept.
|
86
65
|
|
87
|
-
|
66
|
+
To avoid repeating the same process on the other computer (which will generate files with different IDs and more deleted items), Alice should align the repo on computer A before doing anything there. But if she doesn't, nothing will be lost anyway.
|
88
67
|
|
89
|
-
|
90
|
-
|
91
|
-
1. The recovered secret is in a folder that does not exists in the "official" index. In this case, the entire path is added using the encrypted data of the recovered secret
|
92
|
-
2. The secret is a file in a folder that actually exists. The file is added as is, but the folders with existent paths are trashed.
|
93
|
-
3. The secret is a file but a file with the same name exists in the same position. The system checks the content of the file. If it is the same, the secret is ignored, if not it is added as a version.
|
94
|
-
|
95
|
-
Either any unused secret or secret that is rewritten (as a version) is trashed (you can check them in the `trash` dataset).
|
96
|
-
|
97
|
-
In any case, all the contents are kept.
|
98
|
-
|
99
|
-
To avoid to repeat the same process on the other computer (which will generate files with different IDs and more deleted items), Alice should align the repo on A before doing anything there. But, if she does not, nothing will be lost anyway.
|
68
|
+
Thus said, **it is a good practice to align the repo before doing anything. You never know.**
|
100
69
|
|
101
70
|
## The name convention
|
102
71
|
|
103
|
-
|
72
|
+
In Secrez, file names follow a specific convention:
|
73
|
+
|
104
74
|
```
|
105
75
|
1VAnGLojzCDWhfZRK8PCYK203WBzJkAA28FhKHdS7DM5SkJaTgYdGfN1MAjTdfUYSzvtDVsMJvGodoHWzMuK6zr
|
106
76
|
```
|
107
|
-
where `1` is the type (DIR, other types are TEXT and BINARY), and the rest is a encrypted message with nonce, in Base58 format.
|
108
77
|
|
109
|
-
The
|
110
|
-
|
78
|
+
The first character, 1, indicates the type of file. The remaining characters represent an encrypted message with a nonce, in Base58 format. The encrypted part consists of an ID, timestamp, and the actual filename.
|
79
|
+
|
80
|
+
During initialization, Secrez reads all file names and builds a tree of the entire file system. This is done using special files called trees. Once all data has been read, Secrez can determine the tree and add any missing secrets. Since everything is encrypted, it is not possible to deduce information from the files on disk, except for versioning and timestamps, which can be obtained from the Git repo.
|
111
81
|
|
112
|
-
To mitigate this risk, you can create a new Git repo, save everything as the first commit, and delete the previously used repo. This
|
82
|
+
To mitigate this risk, you can create a new Git repo, save everything as the first commit, and delete the previously used repo. This will result in losing the repo's history, but it will also prevent someone from accessing information about timestamps and versions.
|
113
83
|
|
114
84
|
## The tree
|
115
85
|
|
@@ -117,95 +87,73 @@ Secrez manages trees as single immutable files. During a session, temporary file
|
|
117
87
|
|
118
88
|
## The cryptographic foundation
|
119
89
|
|
120
|
-
|
121
|
-
|
90
|
+
Secrez uses [NaCl](https://github.com/dchest/tweetnacl-js) as its primary cryptographic library. NaCl is a widely respected library that provides many algorithms for both synchronous and asynchronous encryption, and its design has been rigorously reviewed by experts in the field. By using NaCl, Secrez is able to provide strong security guarantees for its users.
|
122
91
|
|
123
92
|
## How to install it
|
124
93
|
|
125
|
-
|
94
|
+
Secrez requires at least Node 10. If you have installed a previous version, it may generate unclear errors and refuse to install or work properly. We recommend installing Node using nvm if possible. For more information, refer to [https://github.com/nvm-sh/nvm](https://github.com/nvm-sh/nvm).
|
126
95
|
|
127
|
-
|
96
|
+
Since this monorepo uses [Pnpm](https://pnpm.io/), it is better to install secrez using pnpm because the lock file will be used to avoid unexpected conflicts among modules. To install pnpm, run:
|
128
97
|
|
129
98
|
```
|
130
|
-
npm
|
99
|
+
npm i -g pnpm
|
131
100
|
```
|
132
101
|
|
133
|
-
|
134
|
-
To install pnpm run
|
102
|
+
and then run:
|
135
103
|
|
136
|
-
```
|
137
|
-
npm i -g pnpm
|
138
|
-
```
|
139
|
-
and later
|
140
104
|
```
|
141
105
|
pnpm i -g secrez
|
142
106
|
```
|
143
107
|
|
144
108
|
## How to use it
|
145
109
|
|
146
|
-
|
110
|
+
To get started with Secrez, simply run the command:
|
111
|
+
|
147
112
|
```
|
148
113
|
secrez
|
149
114
|
```
|
150
115
|
|
151
|
-
|
152
|
-
|
153
|
-
Since Secrez derives a master key from your password using `crypto.pbkdf2`, the number of iterations is a significant addition to the general security because the number of iterations is part of the salt used for the derivation. Even if you use a not-very-hard-to-guess password, if the attacker does not know the number of iterations, he has to try all the possible ones. Considering that 2,000,000 iterations require a second or so, customizable iterations increases enormously the overall security.
|
116
|
+
Upon first launch, Secrez will prompt you to enter a master password and the number of iterations. The number of iterations is used to derive a master key from your password, so the higher the number, the more secure your data will be. It's recommended to use between 500,000 and 1,000,000 iterations, but you can customize this based on your needs. For example, you can set the number of iterations explicitly by running:
|
154
117
|
|
155
|
-
At first launch, you can also explicitly set up the number of iterations:
|
156
118
|
```
|
157
119
|
secrez -i 1023896
|
158
120
|
```
|
159
|
-
or
|
160
|
-
```
|
161
|
-
secrez -si 876352
|
162
|
-
```
|
163
|
-
where the `-s` option saves the number locally in a git-ignored `env.json` file. This way you don't have to retype it all the time to launch Secrez (typing a wrong number of iterations, of course, will produce an error).
|
164
121
|
|
165
|
-
You can save
|
122
|
+
You can also save the number of iterations locally by adding the -s option:
|
123
|
+
|
166
124
|
```
|
167
125
|
secrez -s
|
168
126
|
```
|
169
127
|
|
170
|
-
|
171
|
-
|
172
|
-
Other options at launch are:
|
128
|
+
This will save the number of iterations in a git-ignored env.json file, so you don't have to enter it every time you launch Secrez. If you mistype the number of iterations, Secrez will produce an error.
|
173
129
|
|
174
|
-
|
175
|
-
- `-c` to set up the container (i.e, the folder) where the encrypted data are located
|
130
|
+
In addition to the master password and number of iterations, you can also specify other options at launch, such as the initial "external" folder on your computer (-l option) and the container (i.e., the folder) where the encrypted data is located (-c option). By default, both folders are set to your home directory (~). For example, if you want to set up a separate encrypted database in a different folder, you can run:
|
176
131
|
|
177
|
-
By default, both folders are your homedir (`~`).
|
178
|
-
|
179
|
-
Running Secrez in different containers (with the `-c` option), you can set up multiple independent encrypted databases. For example:
|
180
132
|
```
|
181
133
|
secrez -c ~/data/secrez
|
182
134
|
```
|
183
135
|
|
136
|
+
If the number of iterations you chose makes the initial decryption too slow, you can change it inside the Secrez CLI with the conf command.
|
137
|
+
|
184
138
|
## The commands
|
185
139
|
|
140
|
+
Launching `help` you can list all available commands.
|
141
|
+
|
186
142
|
```
|
143
|
+
Available commands:
|
187
144
|
alias Create aliases of other commands.
|
145
|
+
bash << deprecated - use "shell" instead
|
188
146
|
cat Shows the content of a file.
|
189
147
|
cd Changes the working directory.
|
190
148
|
chat Enters the Secrez chat
|
191
|
-
|
192
|
-
help This help.
|
193
|
-
join Joins conversation.
|
194
|
-
leave Leaves a room
|
195
|
-
quit Quit the chat environment
|
196
|
-
send Sends either a room or the chat
|
197
|
-
show Show chat history in a room
|
198
|
-
whoami Show data that other users need to chat with you
|
199
|
-
conf Configure security data (2FA, password, number of iterations).
|
149
|
+
conf Shows current configuration and allow to change password and number of iterations).
|
200
150
|
contacts Manages your contacts
|
201
151
|
copy Copy a text file to the clipboard.
|
202
152
|
courier Configure the connection to a local courier
|
203
153
|
ds Manages datasets
|
204
154
|
edit Edits a file containing a secret.
|
205
|
-
exit << deprecated - use "quit" instead
|
206
155
|
export Export encrypted data to the OS in the current local folder
|
207
156
|
find Find a secret.
|
208
|
-
git Pushes to a repo and pulls from a repo.
|
209
157
|
help This help.
|
210
158
|
import Import files from the OS into the current folder
|
211
159
|
lcat Similar to a standard cat in the external fs.
|
@@ -219,7 +167,7 @@ secrez -c ~/data/secrez
|
|
219
167
|
pwd Shows the path of the working directory.
|
220
168
|
quit Quits Secrez.
|
221
169
|
rm Removes one or more files and folders.
|
222
|
-
shell Execute a
|
170
|
+
shell Execute a shell command in the current disk folder.
|
223
171
|
ssh Opens a new tab and run ssh to connect to a remote server via SSH
|
224
172
|
tag Tags a file and shows existent tags.
|
225
173
|
totp Generate a TOTP code if a totp field exists in the card.
|
@@ -227,82 +175,92 @@ secrez -c ~/data/secrez
|
|
227
175
|
use Uses a specific dataset.
|
228
176
|
ver Shows the version of Secrez.
|
229
177
|
whoami Show data that other users need to chat with you
|
230
|
-
|
178
|
+
|
231
179
|
```
|
232
180
|
|
233
181
|
## Some example
|
234
182
|
|
183
|
+
To display the content of an encrypted file called myPrivateKey, run the following command:
|
184
|
+
|
235
185
|
```
|
236
186
|
cat myPrivateKey
|
237
187
|
```
|
238
188
|
|
239
|
-
|
189
|
+
By default, the latest version of the file will be displayed. However, you can use additional options to view a specific version or list all versions.
|
240
190
|
|
241
|
-
|
191
|
+
Secrez uses versioning to ensure data integrity and avoid conflicts when backing up and distributing data through Git. Each time a file is modified, a new encrypted file is created with metadata about its ID and timestamp. The timestamp is used to assign a version to the file, which is a 4-letter hash of the timestamp.
|
242
192
|
|
243
|
-
|
244
|
-
|
245
|
-
The timestamp is used to assign a version to the file. A version is a 4-letters hash of the timestamp.
|
246
|
-
|
247
|
-
Another example:
|
193
|
+
Another useful command is the import command. For example:
|
248
194
|
|
249
195
|
```
|
250
196
|
import ~/Desktop/myWallet.json -m
|
251
197
|
```
|
252
198
|
|
253
|
-
This command
|
199
|
+
This command will encrypt the file myWallet.json located on your Desktop, save it in the encrypted file system, and then delete the original file using the -m option.
|
200
|
+
|
201
|
+
This is particularly useful if you have just downloaded a private key to access your crypto wallet and want to encrypt it as soon as possible. With Secrez, you can import the file and delete the cleartext version in one command.
|
254
202
|
|
255
|
-
|
203
|
+
## Aliases — where the fun begins :-)
|
256
204
|
|
257
|
-
|
205
|
+
Suppose you have a bank card and want to log in to your online account. You could copy the email and password to the clipboard to paste them in the browser. If you expect to be able to move from the terminal to the browser in 4 seconds, you could run the command:
|
258
206
|
|
259
|
-
Suppose that you have a card for your bank and want to log into it. You could copy email and password to the clipboard to paste them in the browser. Suppose that you expect to be able in 4 seconds to move from the terminal to the browser, you could run the command:
|
260
207
|
```
|
261
208
|
copy bank.yml -f email password -d 4 2
|
262
209
|
```
|
263
|
-
This will copy the email field and give you 4 seconds to paste it in the browser. Then, it will emit a beep and you have 2 seconds to paste the password. It sounds quite useful, but it can be better.
|
264
210
|
|
265
|
-
|
211
|
+
This will copy the email field and give you 4 seconds to paste it in the browser. Then, it will emit a beep, and you have 2 seconds to paste the password. It sounds quite useful, but it can be even better.
|
212
|
+
|
213
|
+
If you use that login often, you could create an alias for it with:
|
214
|
+
|
266
215
|
```
|
267
|
-
alias b -c "copy bank.yml -f email password -d 4 2
|
216
|
+
alias b -c "copy bank.yml -f email password -d 4 2"
|
268
217
|
```
|
269
|
-
|
218
|
+
|
219
|
+
Next time, you can just type:
|
220
|
+
|
270
221
|
```
|
271
222
|
b
|
272
223
|
```
|
224
|
+
|
273
225
|
It looks great, right? Well, it can be even better.
|
274
226
|
|
275
|
-
Let’s say
|
227
|
+
Let’s say you're using a 2FA app like Google Authenticator to connect to a website, for example, GitHub. Suppose you have a file called github.yml with a field called totp, which is the secret that GitHub gave you when you activated 2FA. You could execute:
|
228
|
+
|
276
229
|
```
|
277
230
|
totp github.yml
|
278
231
|
```
|
279
|
-
|
232
|
+
|
233
|
+
to generate a TOTP token for GitHub. The token will be shown and copied to the clipboard. Now, you can create an alias like this:
|
234
|
+
|
280
235
|
```
|
281
236
|
alias G -c "copy github.yml -f username password -d 4 2 --wait && totp github.yml"
|
282
237
|
```
|
238
|
+
|
283
239
|
Can you guess what this will do?
|
284
240
|
|
285
|
-
|
286
|
-
|
287
|
-
|
241
|
+
It copies the username to the clipboard;
|
242
|
+
It waits 5 seconds, emits a beep, and copies the password;
|
243
|
+
It waits 3 seconds, emits a beep, and copies the TOTP token, keeping it in the clipboard.
|
244
|
+
You can also use parameters in aliases and create a macro like this:
|
288
245
|
|
289
|
-
You can also use parameters in aliases and create a macro like
|
290
246
|
```
|
291
247
|
alias M -c "copy $1 -f username password -d 4 2 --wait && totp $1"
|
292
248
|
```
|
293
|
-
|
249
|
+
|
250
|
+
and call it with:
|
251
|
+
|
294
252
|
```
|
295
253
|
M github.yml
|
296
254
|
```
|
297
|
-
It is fantastic, isn’t it?
|
298
255
|
|
299
|
-
|
256
|
+
It's fantastic, isn't it?
|
257
|
+
|
258
|
+
_Btw, using a TOTP factor in Secrez is a bit of a contradiction because you are converting a second factor (something that you have) into a first factor (something that you know). So, use this feature only when it makes sense._
|
300
259
|
|
301
260
|
## Importing from other password/secret managers
|
302
261
|
|
303
|
-
|
262
|
+
Secrez supports importing backups from other software. Suppose you have exported your passwords in a CSV file named export.csv like this:
|
304
263
|
|
305
|
-
Suppose you have exported your password in a CSV file name export.csv like this:
|
306
264
|
```
|
307
265
|
Path,Username,Password,Web Site,Notes
|
308
266
|
twitter/nick1,nick1@example.com,938eyehddu373,"http://cssasasa.com"
|
@@ -311,15 +269,19 @@ somePath,,s83832jedjdj,"http://262626626.com","Multi
|
|
311
269
|
line
|
312
270
|
notes"
|
313
271
|
```
|
314
|
-
It is necessary a field named `path` because if not Secrez does not know where to put the new data. The path is supposed to be relative, allowing you to import it in your favorite folder.
|
315
272
|
|
316
|
-
|
273
|
+
A field named path is necessary because Secrez needs to know where to place the new data. The path should be relative, allowing you to import it into your favorite folder.
|
274
|
+
|
275
|
+
To import the CSV file into the 1PasswordData folder, for example, you can run:
|
276
|
+
|
317
277
|
```
|
318
278
|
import export.csv -e 1PasswordData -t
|
319
279
|
```
|
320
|
-
The parameter `-e, --expand` is necessary. If missed, Secrez will import the file as a single file.
|
321
280
|
|
322
|
-
|
281
|
+
The parameter -e or --expand is necessary. If it's not provided, Secrez will import the file as a single file.
|
282
|
+
|
283
|
+
Internally, Secrez converts the CSV file to a JSON file like this:
|
284
|
+
|
323
285
|
```
|
324
286
|
[
|
325
287
|
{
|
@@ -341,12 +303,15 @@ Internally, Secrez converts the CSV in a JSON file like this:
|
|
341
303
|
}
|
342
304
|
]
|
343
305
|
```
|
344
|
-
|
306
|
+
|
307
|
+
This means that you can also format your data as a JSON and import it directly using:
|
308
|
+
|
345
309
|
```
|
346
310
|
import export.json -e 1PasswordData
|
347
311
|
```
|
348
312
|
|
349
|
-
|
313
|
+
Each item in the JSON will generate a single YAML file. For example, the last element in the JSON will generate the file /1PasswordDate/somePath.yml with the following content:
|
314
|
+
|
350
315
|
```
|
351
316
|
password: s83832jedjdj
|
352
317
|
web_site: http://262626626.com
|
@@ -356,41 +321,43 @@ notes: |-
|
|
356
321
|
notes
|
357
322
|
```
|
358
323
|
|
359
|
-
When you edit the new file, Secrez
|
324
|
+
When you edit the new file, Secrez recognizes it as a card and asks you which field you want to edit (unless you explicitly specify it with, for example, -f password) and edits just that field.
|
360
325
|
|
361
|
-
At the end of the process, you can remove the original backup
|
362
|
-
You can also simulate the process to see which files will be created with the option `-s`.
|
326
|
+
At the end of the process, you can remove the original backup using the -m option. You can also simulate the process to see which files will be created using the -s option.
|
363
327
|
|
364
|
-
If
|
328
|
+
If the CSV file also contains a tags field, you can automatically tag any entries using the -t or --tags option. If you don't use this option, the tags will be saved in the YAML file like any other field.
|
365
329
|
|
366
330
|
### What if there is no path field?
|
367
331
|
|
368
|
-
Let's say
|
332
|
+
Let's say you want to import a CSV file exported by LastPass, which doesn't have a path field. In this case, you can use other fields, such as grouping and name, to build the path instead. Starting from version 0.8.8, you can do this by running:
|
333
|
+
|
369
334
|
```
|
370
335
|
import ~/Downloads/lastpass_export.csv -e lastpass -P grouping name
|
371
336
|
```
|
372
|
-
|
337
|
+
|
338
|
+
Or, if you want to put everything in the folder `lastpass` without generating any subfolders, you can run:
|
339
|
+
|
373
340
|
```
|
374
341
|
import ~/Downloads/lastpass_export.csv -e lastpass -P name -m
|
375
342
|
```
|
376
|
-
using only the `name` field. Still, if in the name there is any slash, a subfolder will be created. The `-m` option will remove the csv file from the OS.
|
377
343
|
|
378
|
-
|
344
|
+
By using only the name field, any entries with a slash in the name will create a subfolder. The -m option will remove the CSV file from the operating system after importing.
|
379
345
|
|
380
|
-
|
346
|
+
In both examples, make sure that all entries in the LastPass CSV file have a name. If not, the import will fail because Secrez won't know how to name the file.
|
381
347
|
|
382
|
-
|
348
|
+
### Best practices
|
383
349
|
|
384
|
-
|
350
|
+
For security reasons, it is better to export from your password manager and import into Secrez as quickly as possible, removing the exported file from your OS using -m.
|
385
351
|
|
386
|
-
|
352
|
+
However, if you need to edit the exported file to fix paths and names, it is more convenient to do it before importing the data, as it can take a lot more time to do so after the data is imported.
|
387
353
|
|
388
|
-
|
354
|
+
## FIDO2 second factor authentication?
|
389
355
|
|
356
|
+
It has been removed in version 0.11.0 due to potential critical issues with Python and the required libraries on MacOS (2FA may be restored if a pure Javascript library becomes available).
|
390
357
|
|
391
358
|
## (experimental) End-to-end encrypted communication with other accounts
|
392
359
|
|
393
|
-
Starting from version 0.8.0, Secrez allows to exchange encrypted messages with other users. To do
|
360
|
+
Starting from version 0.8.0, Secrez allows you to exchange encrypted messages with other users. To do so, you must set up a local Courier ([look here for more info](https://github.com/secrez/secrez/tree/master/packages/courier)).
|
394
361
|
|
395
362
|
## Blog posts
|
396
363
|
|
@@ -400,281 +367,362 @@ Starting from version 0.8.0, Secrez allows to exchange encrypted messages with o
|
|
400
367
|
|
401
368
|
## Some thoughts
|
402
369
|
|
403
|
-
Secrez
|
370
|
+
Secrez is not intended to compete with password managers, so do not expect it to have features like "form filling." The idea behind Secrez originated in 2017 when I was participating in many ICOs, and I had so many files to save, but any password manager I used was not very effective. Secrez is file-oriented and will likely remain so. However, it is open source, and someone is welcome to build a GUI or mobile app built on it.
|
404
371
|
|
405
|
-
##
|
372
|
+
## History
|
406
373
|
|
407
|
-
|
408
|
-
- Plugin architecture to allow others to add their own commands
|
374
|
+
**1.1.3**
|
409
375
|
|
410
|
-
|
376
|
+
- add new option `--keystore, -k` to `export`. If a file contains a private key field (i.e., a field with a name containing `private_key`), it can be exported in the keystore format. The file will have the same name with the extension replaced with `.keystore.json`.
|
377
|
+
- this README has been redacted by ChatGPT to make it more clear and concise.
|
378
|
+
|
379
|
+
**1.1.2**
|
380
|
+
|
381
|
+
- New options for `touch`:
|
382
|
+
- `--wait-for-content` to prompt the user to add the content, instead of expecting it as a parameter. The content will be trimmed at the first newline, if there is any.
|
383
|
+
- `--generate-wallet` to generate an Ethereum-compatible wallet in a new card or in an existing one. It generates the fields `private_key` and `address`, with private key and address.
|
384
|
+
- `--prefix` in combination with `--generate-wallet` specifies the prefix of the field, calling the fields, for example `my_private_key` and `my_address` if the prefix is `my`.
|
385
|
+
- `--amount` in combination with `--generate-wallet` specifies the amount of wallets to generate. The default is 1.
|
386
|
+
|
387
|
+
**1.1.1** (unpublished)
|
388
|
+
|
389
|
+
- using prettier for consistent formatting
|
390
|
+
|
391
|
+
**1.1.0**
|
392
|
+
|
393
|
+
- Remove `git`. If used carefully, the command was helpful, but still it is at risk of creating conflicts. After long thoughts, I disapproved my own proposal at: https://github.com/secrez/secrez/pull/163
|
394
|
+
|
395
|
+
**1.0.4**
|
396
|
+
|
397
|
+
- Fix wrong example in `import`
|
398
|
+
|
399
|
+
**1.0.3**
|
400
|
+
|
401
|
+
- `git` asks to quit Secrez and merge manually if there are remote changes
|
402
|
+
- `totp` allows to add a totp code to an existing yaml file using the option `--set` (see the examples)
|
403
|
+
- Default duration before clipboard reverse for `totp` is now 8 seconds
|
404
|
+
|
405
|
+
**1.0.2**
|
406
|
+
|
407
|
+
- Export and Import can encrypt/decrypt files using shared keys generated from a specified public key
|
408
|
+
- Can export ecrypted file for the user itself, files that can be decrypted only from inside the secrez account that exported them
|
409
|
+
|
410
|
+
**1.0.1**
|
411
|
+
|
412
|
+
- Export and Import can handle encryption. Files can be exported encrypted using a specified password or a key shared with contacts
|
413
|
+
- Contacts can add a contact also using contact's public key (previously you need a hub url)
|
414
|
+
- Import specifies the file that have been skipped (because binary, encrypted or both)
|
415
|
+
|
416
|
+
**1.0.0**
|
417
|
+
|
418
|
+
- Requires `@secrez/utils@1.0.1` which fixes a yaml parsing error with ETH-like addresses
|
411
419
|
|
412
|
-
|
413
|
-
* Remove `git`. If used carefully, the command was helpful, but still it is at risk of creating conflicts. After long thoughts, I disapproved my own proposal at: https://github.com/secrez/secrez/pull/163
|
420
|
+
**1.0.0-beta.3**
|
414
421
|
|
415
|
-
|
416
|
-
* Fix wrong example in `import`
|
422
|
+
- Rm allows to delete specific versions of a file
|
417
423
|
|
418
|
-
|
419
|
-
* `git` asks to quit Secrez and merge manually if there are remote changes
|
420
|
-
* `totp` allows to add a totp code to an existing yaml file using the option `--set` (see the examples)
|
421
|
-
* Default duration before clipboard reverse for `totp` is now 8 seconds
|
424
|
+
**1.0.0-beta.2**
|
422
425
|
|
423
|
-
|
424
|
-
* Export and Import can encrypt/decrypt files using shared keys generated from a specified public key
|
425
|
-
* Can export ecrypted file for the user itself, files that can be decrypted only from inside the secrez account that exported them
|
426
|
-
|
427
|
-
__1.0.1__
|
428
|
-
* Export and Import can handle encryption. Files can be exported encrypted using a specified password or a key shared with contacts
|
429
|
-
* Contacts can add a contact also using contact's public key (previously you need a hub url)
|
430
|
-
* Import specifies the file that have been skipped (because binary, encrypted or both)
|
426
|
+
- Git has new options `--init`, `--remote-url` and `--main-branch` to initiate a repo from inside Secrez
|
431
427
|
|
432
|
-
|
433
|
-
* Requires `@secrez/utils@1.0.1` which fixes a yaml parsing error with ETH-like addresses
|
428
|
+
**1.0.0-beta.1**
|
434
429
|
|
435
|
-
|
436
|
-
|
430
|
+
- use @secrez/core@1.0.0, which changes the encoding from base58 to base64, making the encoding much faster
|
431
|
+
- remove second factor authentication due to potentially critical issues with Python and the required libraries on macOS (2FA will be restored as soon as either a pure Javascript library is available or using external Python libraries is reliable again)
|
432
|
+
- `Bash` has been renamed `Shell`
|
437
433
|
|
438
|
-
|
439
|
-
* Git has new options `--init`, `--remote-url` and `--main-branch` to initiate a repo from inside Secrez
|
434
|
+
**0.10.8**
|
440
435
|
|
441
|
-
|
442
|
-
|
443
|
-
* remove second factor authentication due to potentially critical issues with Python and the required libraries on macOS (2FA will be restored as soon as either a pure Javascript library is available or using external Python libraries is reliable again)
|
444
|
-
* `Bash` has been renamed `Shell`
|
436
|
+
- expose a prompt mock to allow other software to run commands programmatically
|
437
|
+
- fix bug in totp when the command is called but no totp is set
|
445
438
|
|
446
|
-
|
447
|
-
* expose a prompt mock to allow other software to run commands programmatically
|
448
|
-
* fix bug in totp when the command is called but no totp is set
|
439
|
+
**0.10.7**
|
449
440
|
|
450
|
-
|
451
|
-
* fix bug in `git -i` showing less changed that expected
|
441
|
+
- fix bug in `git -i` showing less changed that expected
|
452
442
|
|
453
|
-
|
454
|
-
* use `£` as an alternative to `#` when getting find results (whoops, I made this for myself, because I use both English and Italian keyboards)
|
455
|
-
* add `leave` to leave a room
|
443
|
+
**0.10.6**
|
456
444
|
|
457
|
-
|
458
|
-
|
459
|
-
* fix `git`'s help
|
445
|
+
- use `£` as an alternative to `#` when getting find results (whoops, I made this for myself, because I use both English and Italian keyboards)
|
446
|
+
- add `leave` to leave a room
|
460
447
|
|
461
|
-
|
462
|
-
* remove spaces in secret when launching `totp`
|
463
|
-
* add a `--test` option, to test a secret
|
464
|
-
* remove deprecated `exit`
|
465
|
-
|
466
|
-
__0.10.3__
|
467
|
-
* since it's not possible to clear the entire terminal, the clear screen process creates a false sense of security and has been removed
|
468
|
-
* fix bug in `ls -l` when there are empty files
|
469
|
-
* add message to suggest user to clear or close the terminal after quitting
|
448
|
+
**10.0.5**
|
470
449
|
|
471
|
-
|
472
|
-
|
473
|
-
* allow to run `bash` without parameters, asking later for the shell command
|
450
|
+
- fix bug in `git` wrongly returning `already up to date`
|
451
|
+
- fix `git`'s help
|
474
452
|
|
475
|
-
|
476
|
-
* encrypts binary files as is, without converting them to `base64` strings, like before
|
453
|
+
**0.10.4**
|
477
454
|
|
478
|
-
|
479
|
-
|
480
|
-
|
455
|
+
- remove spaces in secret when launching `totp`
|
456
|
+
- add a `--test` option, to test a secret
|
457
|
+
- remove deprecated `exit`
|
481
458
|
|
482
|
-
|
483
|
-
* fix bug during import, if a `path` contains `:`; now, they are replaced with `_`
|
459
|
+
**0.10.3**
|
484
460
|
|
485
|
-
|
486
|
-
|
461
|
+
- since it's not possible to clear the entire terminal, the clear screen process creates a false sense of security and has been removed
|
462
|
+
- fix bug in `ls -l` when there are empty files
|
463
|
+
- add message to suggest user to clear or close the terminal after quitting
|
487
464
|
|
488
|
-
|
489
|
-
* fix issue in `ls -l` that was working only in the current dataset
|
490
|
-
* fix dates in `ls -l` in UTC time, instead than in local time
|
465
|
+
**0.10.2**
|
491
466
|
|
492
|
-
|
493
|
-
|
467
|
+
- add a `git` command to push changes to the repo and pull changes
|
468
|
+
- allow to run `bash` without parameters, asking later for the shell command
|
494
469
|
|
495
|
-
|
496
|
-
* Add `ds` to manage datasets
|
497
|
-
* `ds` is also able to delete a dataset (moving its content to the `trash` dataset)
|
498
|
-
* Remove feature `--rename` from `use`, since now `ds` manages the datasets
|
470
|
+
**0.10.1**
|
499
471
|
|
500
|
-
|
501
|
-
* If the default editor is not defined (env variable EDITOR) try to use nano or vim
|
472
|
+
- encrypts binary files as is, without converting them to `base64` strings, like before
|
502
473
|
|
503
|
-
|
504
|
-
* Pause clearScreen during editing
|
474
|
+
**0.10.0**
|
505
475
|
|
506
|
-
|
507
|
-
|
476
|
+
- use @secrez/hub 0.2.0 and @secrez/courier 0.2.0 (which are incompatible with the previous versions)
|
477
|
+
- duplicate `whoami` and `contacts` to make them working inside the `chat` environment
|
508
478
|
|
509
|
-
|
510
|
-
* Importing from a CSV file generates `.yaml` file instead of `.yml`
|
479
|
+
**0.9.4**
|
511
480
|
|
512
|
-
|
513
|
-
* Uses new onBeforeRewrite in [inquirer-command-prompt](https://github.com/sullof/inquirer-command-prompt) to remove the `#\d` when autocompleting the result of a search
|
481
|
+
- fix bug during import, if a `path` contains `:`; now, they are replaced with `_`
|
514
482
|
|
515
|
-
|
516
|
-
* Fix issue with find results when they include datasets.
|
517
|
-
* Improve scripts (getting coverage only for modified packages)
|
518
|
-
* Add a secrez.png as a generic asset
|
483
|
+
**0.9.3**
|
519
484
|
|
520
|
-
|
521
|
-
* fix issue if a file starts with #\d, like `#2something`
|
485
|
+
- fix bug with `ds -l` not working
|
522
486
|
|
523
|
-
|
524
|
-
* add autocomplete based on `find` results; for example `cat #2` and press `tab` will complete with the second result in the search
|
525
|
-
|
526
|
-
__0.8.2__
|
527
|
-
* fix bug in `show` which listed all the messages
|
528
|
-
|
529
|
-
__0.8.1__
|
530
|
-
* fix bug in `conf` setting a 2FA
|
531
|
-
* improve encapsulation of the `_Secrez` class
|
532
|
-
|
533
|
-
__0.8.0__
|
534
|
-
* add `contacts` to manage trusted users, i.e, trusted public keys
|
535
|
-
* add `whoami` to get info about the account
|
536
|
-
* add @secrez/courier to allow communication between local accounts
|
537
|
-
* add @secrez/hub for the remote hub
|
538
|
-
* add @secrez/tunnel to manage the tunneling for the Courier
|
539
|
-
* add `chat` to enter the chat environemnt, and send/receive messages and data to any trusted user
|
540
|
-
* add `chat`'s subcommands `join`, `send` and `show`.
|
541
|
-
* return `find` results as a numbered list, to be used as variable (like `$1`) in following commands
|
542
|
-
* deprecate `exit` in favor of `quit` to leave rooms, chat and app
|
543
|
-
* add `ssh` to connect via ssh to a remote server from inside Secrez, to protect private keys without password
|
487
|
+
**0.9.2**
|
544
488
|
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
__0.7.13__
|
549
|
-
* fix autocomplete when single command
|
550
|
-
|
551
|
-
__0.7.12__
|
552
|
-
* adds support for Linux to `totp --from-clipboard`, using `xclip`
|
553
|
-
|
554
|
-
__0.7.11__
|
555
|
-
* returns an alert if `clipboardy` does not find the required libraries
|
489
|
+
- fix issue in `ls -l` that was working only in the current dataset
|
490
|
+
- fix dates in `ls -l` in UTC time, instead than in local time
|
556
491
|
|
557
|
-
|
558
|
-
* fixes the autocomplete loading the data only when needed
|
492
|
+
**0.9.1**
|
559
493
|
|
560
|
-
|
561
|
-
* fix bug in MainPrompt.js which caused an exit if command not found
|
562
|
-
|
563
|
-
__0.7.8__
|
564
|
-
* upgrade `@secrez/core` to `0.7.1` which fixes an error if `env.json` does not exists
|
494
|
+
- `ls -l` returns details: size, creation date, last update date, number of versions and name
|
565
495
|
|
566
|
-
|
567
|
-
* aliases now accept params (ex. `alias x -c 'copy $1 && ls $2 $1')
|
496
|
+
**0.9.0**
|
568
497
|
|
569
|
-
|
570
|
-
|
571
|
-
|
498
|
+
- Add `ds` to manage datasets
|
499
|
+
- `ds` is also able to delete a dataset (moving its content to the `trash` dataset)
|
500
|
+
- Remove feature `--rename` from `use`, since now `ds` manages the datasets
|
572
501
|
|
573
|
-
|
574
|
-
* `totp` can read an image to scan a qrcode and recover its secret
|
575
|
-
* on MacOs, `totp` can also read the image from the clipboard to recover its secret; it requires `pngpaste`
|
502
|
+
**0.8.10**
|
576
503
|
|
577
|
-
|
578
|
-
* fix bug in autocomplete showing the error stack
|
579
|
-
* add script to upgrade the versions of any changed packages
|
504
|
+
- If the default editor is not defined (env variable EDITOR) try to use nano or vim
|
580
505
|
|
581
|
-
|
582
|
-
* `find` ignores `trash` during global searches if not using `--trash-too`
|
583
|
-
* update to `@secrez/fs 0.7.2`, which fixes a bug in the `DataCache` class
|
506
|
+
**0.8.9**
|
584
507
|
|
585
|
-
|
586
|
-
* `totp` allows to generate TOTP codes (like Google Authenticator)
|
587
|
-
* add option `--wait` to `copy` to force it to wait the end of the execution
|
588
|
-
* `alias` handles chains of commands, like `copy coinbase.yml -f email password -d 3 2 --wait && totp coinbase.yml`
|
508
|
+
- Pause clearScreen during editing
|
589
509
|
|
590
|
-
|
591
|
-
* Calling a command with unknown options will generate an error
|
592
|
-
* Fix issue moving duplicates
|
593
|
-
* Adds to `mv` an explicit destination field
|
510
|
+
**0.8.8**
|
594
511
|
|
595
|
-
|
596
|
-
* Introduce a more secure derivation process, using the iterations number in the salt. During the upgrade existing second factors of authentication will be removed
|
597
|
-
* Allow to change password and number of iterations in `conf`. BE CAREFUl, any change in `conf` can cause conflicts in a remote repo. Don't do the same changes parallelly
|
512
|
+
- Add the option `pathFrom` in `import` to build the `path` field using other fields
|
598
513
|
|
599
|
-
|
600
|
-
* Add `duration` to `export` to delete the exported file after the duration (in seconds)
|
514
|
+
**0.8.7**
|
601
515
|
|
602
|
-
|
603
|
-
* Add `alias` to generate alias of any command
|
516
|
+
- Importing from a CSV file generates `.yaml` file instead of `.yml`
|
604
517
|
|
605
|
-
|
606
|
-
* Minor bug fix
|
518
|
+
**0.8.6**
|
607
519
|
|
608
|
-
|
609
|
-
* `copy` can put many fields in the clipboard, scheduling them
|
520
|
+
- Uses new onBeforeRewrite in [inquirer-command-prompt](https://github.com/sullof/inquirer-command-prompt) to remove the `#\d` when autocompleting the result of a search
|
610
521
|
|
611
|
-
|
612
|
-
* Add support for U2F keys (Yubikey, Solokeys, etc.)
|
613
|
-
* `ls` now returns sorted results
|
614
|
-
* Fixed bug with `mv` and `rm` when using wildcards
|
615
|
-
* Dynamic format for help, managing large examples
|
522
|
+
**0.8.5**
|
616
523
|
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
* `use` allows to use and create new dataset
|
621
|
-
* `mv` supports `-d, --destination` for the destination
|
622
|
-
* `mv` allows to move files among datasets with a syntax like `mv somefile archive:/` or `mv archive:somefile main:/some/`
|
623
|
-
* `mv` adds `--find` and `--content-too` to use the result of a search as input
|
624
|
-
* `mv`, if no destination set, asks if like to use the active directory in the target dataset
|
625
|
-
* `ls -o d` and `ls -o f` to limit the listing only to folders or files
|
626
|
-
* `copy` allows to select the field to copy in yaml files
|
627
|
-
* Improve autocomplete to handle datasets
|
628
|
-
* Fix autocomplete in `lcat`, which was wrongly using the internal files
|
629
|
-
* `tag` is able to list and show tags along all the datasets, anche can use `--find` like `mv`
|
524
|
+
- Fix issue with find results when they include datasets.
|
525
|
+
- Improve scripts (getting coverage only for modified packages)
|
526
|
+
- Add a secrez.png as a generic asset
|
630
527
|
|
631
|
-
|
632
|
-
* Find in content excludes binary contents
|
528
|
+
**0.8.4**
|
633
529
|
|
634
|
-
|
635
|
-
* Optimize find inside contents caching the data
|
636
|
-
* Fix an error returning wrong cases in the results
|
637
|
-
* Remove an unnecessary message when nothing is recovered
|
530
|
+
- fix issue if a file starts with #\d, like `#2something`
|
638
531
|
|
639
|
-
|
640
|
-
* Use tags to prefix the path during import
|
532
|
+
**0.8.3**
|
641
533
|
|
642
|
-
|
643
|
-
* Fix the README that was not aligned
|
534
|
+
- add autocomplete based on `find` results; for example `cat #2` and press `tab` will complete with the second result in the search
|
644
535
|
|
645
|
-
|
646
|
-
* Add Paste to paste the clipboard content in either a new or existent file, emptying the clipboard
|
647
|
-
* Fix bug with Copy that was preventing the command from working
|
536
|
+
**0.8.2**
|
648
537
|
|
649
|
-
|
650
|
-
* Allow Import, with the options `-t`, to recognize tags during the import from CSV
|
651
|
-
* Split Export in Export and Copy. The first only exports to the FS, the second copies to the clipboard
|
538
|
+
- fix bug in `show` which listed all the messages
|
652
539
|
|
653
|
-
|
654
|
-
* Add wildcard support for Import, Mv, Rm and Tag
|
655
|
-
* Add support for recursion during import
|
540
|
+
**0.8.1**
|
656
541
|
|
657
|
-
|
658
|
-
|
542
|
+
- fix bug in `conf` setting a 2FA
|
543
|
+
- improve encapsulation of the `_Secrez` class
|
659
544
|
|
660
|
-
|
661
|
-
* Optimize Import avoiding intermediate saves of the tree
|
662
|
-
* Fix an issue with iterations at launch
|
545
|
+
**0.8.0**
|
663
546
|
|
664
|
-
|
665
|
-
|
547
|
+
- add `contacts` to manage trusted users, i.e, trusted public keys
|
548
|
+
- add `whoami` to get info about the account
|
549
|
+
- add @secrez/courier to allow communication between local accounts
|
550
|
+
- add @secrez/hub for the remote hub
|
551
|
+
- add @secrez/tunnel to manage the tunneling for the Courier
|
552
|
+
- add `chat` to enter the chat environemnt, and send/receive messages and data to any trusted user
|
553
|
+
- add `chat`'s subcommands `join`, `send` and `show`.
|
554
|
+
- return `find` results as a numbered list, to be used as variable (like `$1`) in following commands
|
555
|
+
- deprecate `exit` in favor of `quit` to leave rooms, chat and app
|
556
|
+
- add `ssh` to connect via ssh to a remote server from inside Secrez, to protect private keys without password
|
666
557
|
|
667
|
-
|
668
|
-
* Use Yaml files as cards, being able to read and edit single fields
|
558
|
+
**0.7.14**
|
669
559
|
|
670
|
-
|
671
|
-
* Remove obfuscation of the tree before saving (it was an overkill)
|
560
|
+
- fix chained aliases generating prompt duplications
|
672
561
|
|
673
|
-
|
674
|
-
* Add Find to search in files and folders
|
562
|
+
**0.7.13**
|
675
563
|
|
676
|
-
|
677
|
-
|
564
|
+
- fix autocomplete when single command
|
565
|
+
|
566
|
+
**0.7.12**
|
567
|
+
|
568
|
+
- adds support for Linux to `totp --from-clipboard`, using `xclip`
|
569
|
+
|
570
|
+
**0.7.11**
|
571
|
+
|
572
|
+
- returns an alert if `clipboardy` does not find the required libraries
|
573
|
+
|
574
|
+
**0.7.10**
|
575
|
+
|
576
|
+
- fixes the autocomplete loading the data only when needed
|
577
|
+
|
578
|
+
**0.7.9**
|
579
|
+
|
580
|
+
- fix bug in MainPrompt.js which caused an exit if command not found
|
581
|
+
|
582
|
+
**0.7.8**
|
583
|
+
|
584
|
+
- upgrade `@secrez/core` to `0.7.1` which fixes an error if `env.json` does not exists
|
585
|
+
|
586
|
+
**0.7.7**
|
587
|
+
|
588
|
+
- aliases now accept params (ex. `alias x -c 'copy $1 && ls $2 $1')
|
589
|
+
|
590
|
+
**0.7.6**
|
591
|
+
|
592
|
+
- `rm` ask confirmation before delete forever from the `trash` dataset
|
593
|
+
- `edit` does not crash if no path is passed
|
594
|
+
|
595
|
+
**0.7.5**
|
596
|
+
|
597
|
+
- `totp` can read an image to scan a qrcode and recover its secret
|
598
|
+
- on MacOs, `totp` can also read the image from the clipboard to recover its secret; it requires `pngpaste`
|
599
|
+
|
600
|
+
**0.7.4**
|
601
|
+
|
602
|
+
- fix bug in autocomplete showing the error stack
|
603
|
+
- add script to upgrade the versions of any changed packages
|
604
|
+
|
605
|
+
**0.7.3**
|
606
|
+
|
607
|
+
- `find` ignores `trash` during global searches if not using `--trash-too`
|
608
|
+
- update to `@secrez/fs 0.7.2`, which fixes a bug in the `DataCache` class
|
609
|
+
|
610
|
+
**0.7.2**
|
611
|
+
|
612
|
+
- `totp` allows to generate TOTP codes (like Google Authenticator)
|
613
|
+
- add option `--wait` to `copy` to force it to wait the end of the execution
|
614
|
+
- `alias` handles chains of commands, like `copy coinbase.yml -f email password -d 3 2 --wait && totp coinbase.yml`
|
615
|
+
|
616
|
+
**0.7.1**
|
617
|
+
|
618
|
+
- Calling a command with unknown options will generate an error
|
619
|
+
- Fix issue moving duplicates
|
620
|
+
- Adds to `mv` an explicit destination field
|
621
|
+
|
622
|
+
**0.7.0**
|
623
|
+
|
624
|
+
- Introduce a more secure derivation process, using the iterations number in the salt. During the upgrade existing second factors of authentication will be removed
|
625
|
+
- Allow to change password and number of iterations in `conf`. BE CAREFUl, any change in `conf` can cause conflicts in a remote repo. Don't do the same changes parallelly
|
626
|
+
|
627
|
+
**0.6.5**
|
628
|
+
|
629
|
+
- Add `duration` to `export` to delete the exported file after the duration (in seconds)
|
630
|
+
|
631
|
+
**0.6.4**
|
632
|
+
|
633
|
+
- Add `alias` to generate alias of any command
|
634
|
+
|
635
|
+
**0.6.3**
|
636
|
+
|
637
|
+
- Minor bug fix
|
638
|
+
|
639
|
+
**0.6.2**
|
640
|
+
|
641
|
+
- `copy` can put many fields in the clipboard, scheduling them
|
642
|
+
|
643
|
+
**0.6.1**
|
644
|
+
|
645
|
+
- Add support for U2F keys (Yubikey, Solokeys, etc.)
|
646
|
+
- `ls` now returns sorted results
|
647
|
+
- Fixed bug with `mv` and `rm` when using wildcards
|
648
|
+
- Dynamic format for help, managing large examples
|
649
|
+
|
650
|
+
**0.6.0**
|
651
|
+
|
652
|
+
- Allow multiple datasets; `main` and `trash` exists by default
|
653
|
+
- At start, purges old trees after successfully loading a dataset
|
654
|
+
- `use` allows to use and create new dataset
|
655
|
+
- `mv` supports `-d, --destination` for the destination
|
656
|
+
- `mv` allows to move files among datasets with a syntax like `mv somefile archive:/` or `mv archive:somefile main:/some/`
|
657
|
+
- `mv` adds `--find` and `--content-too` to use the result of a search as input
|
658
|
+
- `mv`, if no destination set, asks if like to use the active directory in the target dataset
|
659
|
+
- `ls -o d` and `ls -o f` to limit the listing only to folders or files
|
660
|
+
- `copy` allows to select the field to copy in yaml files
|
661
|
+
- Improve autocomplete to handle datasets
|
662
|
+
- Fix autocomplete in `lcat`, which was wrongly using the internal files
|
663
|
+
- `tag` is able to list and show tags along all the datasets, anche can use `--find` like `mv`
|
664
|
+
|
665
|
+
**0.5.13**
|
666
|
+
|
667
|
+
- Find in content excludes binary contents
|
668
|
+
|
669
|
+
**0.5.12**
|
670
|
+
|
671
|
+
- Optimize find inside contents caching the data
|
672
|
+
- Fix an error returning wrong cases in the results
|
673
|
+
- Remove an unnecessary message when nothing is recovered
|
674
|
+
|
675
|
+
**0.5.11**
|
676
|
+
|
677
|
+
- Use tags to prefix the path during import
|
678
|
+
|
679
|
+
**0.5.10**
|
680
|
+
|
681
|
+
- Fix the README that was not aligned
|
682
|
+
|
683
|
+
**0.5.9**
|
684
|
+
|
685
|
+
- Add Paste to paste the clipboard content in either a new or existent file, emptying the clipboard
|
686
|
+
- Fix bug with Copy that was preventing the command from working
|
687
|
+
|
688
|
+
**0.5.8**
|
689
|
+
|
690
|
+
- Allow Import, with the options `-t`, to recognize tags during the import from CSV
|
691
|
+
- Split Export in Export and Copy. The first only exports to the FS, the second copies to the clipboard
|
692
|
+
|
693
|
+
**0.5.7**
|
694
|
+
|
695
|
+
- Add wildcard support for Import, Mv, Rm and Tag
|
696
|
+
- Add support for recursion during import
|
697
|
+
|
698
|
+
**0.5.6**
|
699
|
+
|
700
|
+
- Add Tag command to tag files and folders
|
701
|
+
|
702
|
+
**0.5.5**
|
703
|
+
|
704
|
+
- Optimize Import avoiding intermediate saves of the tree
|
705
|
+
- Fix an issue with iterations at launch
|
706
|
+
|
707
|
+
**0.5.4**
|
708
|
+
|
709
|
+
- Add Import of many entries from CSV and JSON files
|
710
|
+
|
711
|
+
**0.5.3**
|
712
|
+
|
713
|
+
- Use Yaml files as cards, being able to read and edit single fields
|
714
|
+
|
715
|
+
**0.5.2**
|
716
|
+
|
717
|
+
- Remove obfuscation of the tree before saving (it was an overkill)
|
718
|
+
|
719
|
+
**0.5.1**
|
720
|
+
|
721
|
+
- Add Find to search in files and folders
|
722
|
+
|
723
|
+
**0.5.0**
|
724
|
+
|
725
|
+
- First stable version
|
678
726
|
|
679
727
|
Versions < 0.5.0 are deprecated because the format was sligtly different and they are incompatible.
|
680
728
|
|
@@ -701,145 +749,157 @@ npm i -g pnpm
|
|
701
749
|
```
|
702
750
|
|
703
751
|
#### Bootstrap the monorepo
|
752
|
+
|
704
753
|
```
|
705
754
|
npm run reset
|
706
755
|
```
|
756
|
+
|
707
757
|
#### Install OS requirements
|
708
|
-
To complete the tests, you must install some tool, depending on you operating system.
|
709
758
|
|
710
|
-
|
759
|
+
To complete the tests, you must install some tools depending on your operating system.
|
760
|
+
|
761
|
+
The `copy` command does not work on Linux if `xsel` is not installed. So, if you are working on Ubuntu, install it with:
|
762
|
+
|
711
763
|
```
|
712
764
|
sudo apt install xsel
|
713
765
|
```
|
714
|
-
|
766
|
+
|
767
|
+
The `totp` command requires `pngpaste` on macOS. You can install it with:
|
768
|
+
|
715
769
|
```
|
716
770
|
brew install pngpaste
|
717
771
|
```
|
718
|
-
|
719
|
-
|
720
|
-
pip install fido2
|
721
|
-
```
|
722
|
-
Notice that during the execution of Secrez, an error is generated if those tools have not been found. But, nothing happens, during testing. So, please, install them.
|
772
|
+
|
773
|
+
Please note that during the execution of Secrez, an error is generated if those tools have not been found. Please make sure to install them.
|
723
774
|
|
724
775
|
#### Testing
|
725
|
-
|
776
|
+
|
777
|
+
To run all the tests, navigate to the root directory of the project and run:
|
778
|
+
|
726
779
|
```
|
727
780
|
npm run test
|
728
781
|
```
|
729
|
-
|
730
|
-
You can also
|
782
|
+
|
783
|
+
If you are inside a package directory, running this command will only execute the package-specific tests. You can also skip coverage by running:
|
784
|
+
|
731
785
|
```
|
732
786
|
npm run test-only
|
733
787
|
```
|
734
|
-
|
788
|
+
|
789
|
+
This is useful during development.
|
735
790
|
|
736
791
|
#### Debugging
|
737
792
|
|
738
|
-
To see if
|
793
|
+
To see if Secrez works properly, you can execute your version of Secrez by running the following command from inside the `packages/secrez` directory:
|
794
|
+
|
739
795
|
```
|
740
796
|
npm run dev
|
741
797
|
```
|
742
|
-
|
798
|
+
|
799
|
+
You will create a dev account to play with it.
|
743
800
|
|
744
801
|
#### Pull Requests
|
745
802
|
|
746
|
-
|
803
|
+
Before submitting a pull request, you should realign the versions. You can do this by running the following command from the root directory:
|
804
|
+
|
747
805
|
```
|
748
806
|
npm run patch-versions
|
749
807
|
```
|
750
|
-
|
808
|
+
|
809
|
+
Then, you can prepare the README file by inserting the coverage. To do this, run:
|
810
|
+
|
751
811
|
```
|
752
812
|
npm run pre-push
|
753
813
|
```
|
754
|
-
Finally, you can push to GitHub.
|
755
814
|
|
756
|
-
|
815
|
+
Finally, you can push to GitHub.
|
757
816
|
|
817
|
+
Thank you for any contributions! 😉
|
758
818
|
|
759
819
|
## Test coverage
|
760
820
|
|
761
821
|
```
|
762
|
-
|
822
|
+
166 passing (25s)
|
763
823
|
1 pending
|
764
824
|
|
765
825
|
-----------------------|---------|----------|---------|---------|-----------------------------------
|
766
826
|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
|
767
827
|
-----------------------|---------|----------|---------|---------|-----------------------------------
|
768
|
-
All files | 71.
|
769
|
-
src | 59.63 | 54.79 | 55 |
|
770
|
-
Command.js | 79.66 | 78.72 | 76.92 |
|
771
|
-
PreCommand.js | 21.95 | 11.54 | 14.29 | 21.95 |
|
828
|
+
All files | 71.47 | 58.49 | 71.98 | 71.36 |
|
829
|
+
src | 59.63 | 54.79 | 55 | 60.19 |
|
830
|
+
Command.js | 79.66 | 78.72 | 76.92 | 81.03 | 32,55-62,73,80,119
|
831
|
+
PreCommand.js | 21.95 | 11.54 | 14.29 | 21.95 | 8-98,115
|
772
832
|
cliConfig.js | 100 | 100 | 100 | 100 |
|
773
|
-
src/commands | 81.
|
774
|
-
Alias.js | 90.54 | 77.36 | 100 | 90.41 |
|
775
|
-
Bash.js | 75 | 0 | 66.67 | 75 |
|
776
|
-
Cat.js | 98.9 | 88.89 | 100 | 98.9 |
|
777
|
-
Cd.js | 96.43 | 86.67 | 100 | 96.43 |
|
778
|
-
Chat.js | 19.51 | 0 | 16.67 | 19.51 |
|
779
|
-
Conf.js | 10.45 | 0 | 25 | 10.45 |
|
780
|
-
Contacts.js | 74.67 | 65.98 | 92.86 | 74.5 | ...
|
781
|
-
Copy.js | 94.87 | 74.51 | 100 | 94.81 |
|
782
|
-
Courier.js | 63.54 | 41.86 | 85.71 | 63.83 | ...
|
783
|
-
Ds.js | 92.54 | 82.05 | 100 | 92.42 |
|
784
|
-
Edit.js | 13.58 | 0 | 40 | 13.58 |
|
785
|
-
Export.js |
|
786
|
-
Find.js | 93.59 | 86.67 | 100 | 93.42 |
|
787
|
-
Help.js | 100 | 80 | 100 | 100 |
|
788
|
-
Import.js | 93.2 | 85.48 | 100 |
|
789
|
-
Lcat.js | 100 | 85.71 | 100 | 100 |
|
790
|
-
Lcd.js | 95.65 | 81.82 | 100 | 95.65 |
|
791
|
-
Lls.js | 95.45 | 72.73 | 100 | 95.45 |
|
792
|
-
Lpwd.js | 92.31 | 100 | 100 | 92.31 |
|
793
|
-
Ls.js | 91.3 | 75 | 100 | 90.77 |
|
794
|
-
Mkdir.js | 100 | 66.67 | 100 | 100 |
|
795
|
-
Mv.js |
|
796
|
-
Paste.js | 87.23 | 75 | 100 | 87.23 |
|
797
|
-
Pwd.js | 92.31 | 100 | 100 | 92.31 |
|
798
|
-
Quit.js | 90 | 50 | 100 | 90 |
|
799
|
-
Rm.js | 94 | 80.95 | 100 | 93.88 |
|
800
|
-
Shell.js | 88.24 | 60 | 100 | 88.24 |
|
801
|
-
Ssh.js | 25 | 0 | 40 | 25 |
|
802
|
-
Tag.js | 98.04 | 92.31 | 100 |
|
803
|
-
Totp.js | 96.47 | 74.47 | 100 | 96.47 |
|
804
|
-
Touch.js |
|
805
|
-
Use.js | 96.77 | 89.47 | 100 | 96.77 |
|
806
|
-
Ver.js | 90 | 66.67 | 100 | 90 |
|
807
|
-
Whoami.js | 93.1 | 63.64 | 80 | 93.1 |
|
808
|
-
chat.js | 85.37 | 53.85 | 100 | 85.37 |
|
809
|
-
index.js | 91.67 | 60 | 100 | 91.3 |
|
833
|
+
src/commands | 81.53 | 67 | 89.95 | 81.4 |
|
834
|
+
Alias.js | 90.54 | 77.36 | 100 | 90.41 | 101,112,139,169,173,180,190
|
835
|
+
Bash.js | 75 | 0 | 66.67 | 75 | 18-19
|
836
|
+
Cat.js | 98.9 | 88.89 | 100 | 98.9 | 152
|
837
|
+
Cd.js | 96.43 | 86.67 | 100 | 96.43 | 44
|
838
|
+
Chat.js | 19.51 | 0 | 16.67 | 19.51 | 23-144
|
839
|
+
Conf.js | 10.45 | 0 | 25 | 10.45 | 134-499
|
840
|
+
Contacts.js | 74.67 | 65.98 | 92.86 | 74.5 | ...90-214,240,247,259,315,328,338
|
841
|
+
Copy.js | 94.87 | 74.51 | 100 | 94.81 | 111,162,179,204
|
842
|
+
Courier.js | 63.54 | 41.86 | 85.71 | 63.83 | ...37,152-171,188,200-203,215-221
|
843
|
+
Ds.js | 92.54 | 82.05 | 100 | 92.42 | 99,108-113,125
|
844
|
+
Edit.js | 13.58 | 0 | 40 | 13.58 | 88-214
|
845
|
+
Export.js | 87.63 | 67.74 | 100 | 87.63 | ...66,175,182-186,191,203,212,215
|
846
|
+
Find.js | 93.59 | 86.67 | 100 | 93.42 | 101,164,200-203,209
|
847
|
+
Help.js | 100 | 80 | 100 | 100 | 29
|
848
|
+
Import.js | 93.2 | 85.48 | 100 | 93.14 | ...65,367,387,393,441,456-463,490
|
849
|
+
Lcat.js | 100 | 85.71 | 100 | 100 | 54
|
850
|
+
Lcd.js | 95.65 | 81.82 | 100 | 95.65 | 50
|
851
|
+
Lls.js | 95.45 | 72.73 | 100 | 95.45 | 97
|
852
|
+
Lpwd.js | 92.31 | 100 | 100 | 92.31 | 36
|
853
|
+
Ls.js | 91.3 | 75 | 100 | 90.77 | 103,114-116,130,181
|
854
|
+
Mkdir.js | 100 | 66.67 | 100 | 100 | 38-44
|
855
|
+
Mv.js | 88.04 | 73.21 | 100 | 87.78 | 93-99,133,155,165-172
|
856
|
+
Paste.js | 87.23 | 75 | 100 | 87.23 | 72,78,81,89,113,129
|
857
|
+
Pwd.js | 92.31 | 100 | 100 | 92.31 | 33
|
858
|
+
Quit.js | 90 | 50 | 100 | 90 | 27
|
859
|
+
Rm.js | 94 | 80.95 | 100 | 93.88 | 63,126,134
|
860
|
+
Shell.js | 88.24 | 60 | 100 | 88.24 | 38,55
|
861
|
+
Ssh.js | 25 | 0 | 40 | 25 | 72-120
|
862
|
+
Tag.js | 98.04 | 92.31 | 100 | 98.02 | 122,171
|
863
|
+
Totp.js | 96.47 | 74.47 | 100 | 96.47 | 188-189,235
|
864
|
+
Touch.js | 95.92 | 81.48 | 100 | 95.83 | 152,202
|
865
|
+
Use.js | 96.77 | 89.47 | 100 | 96.77 | 68
|
866
|
+
Ver.js | 90 | 66.67 | 100 | 90 | 25
|
867
|
+
Whoami.js | 93.1 | 63.64 | 80 | 93.1 | 29,64
|
868
|
+
chat.js | 85.37 | 53.85 | 100 | 85.37 | 105,117-130,136,142
|
869
|
+
index.js | 91.67 | 60 | 100 | 91.3 | 22,31
|
810
870
|
src/commands/chat | 79.44 | 63.29 | 92.31 | 79.33 |
|
811
|
-
Contacts.js | 80 | 42.86 | 80 | 80 |
|
812
|
-
Help.js | 86.67 | 60 | 100 | 86.67 | 38
|
813
|
-
Join.js | 95.65 | 82.61 | 100 | 95.56 |
|
814
|
-
Leave.js | 100 | 60 | 100 | 100 | 28
|
815
|
-
Quit.js | 100 | 75 | 100 | 100 |
|
816
|
-
Send.js | 67.65 | 46.67 | 100 | 67.65 |
|
817
|
-
Show.js | 68.75 | 70.59 | 100 | 68.75 |
|
818
|
-
Whoami.js | 42.86 | 0 | 60 | 42.86 |
|
819
|
-
src/prompts | 15.14 | 0 | 14.29 | 15.
|
820
|
-
ChatPrompt.js | 6.17 | 0 | 0 | 6.17 |
|
871
|
+
Contacts.js | 80 | 42.86 | 80 | 80 | 54,65,69,81
|
872
|
+
Help.js | 86.67 | 60 | 100 | 86.67 | 37-38
|
873
|
+
Join.js | 95.65 | 82.61 | 100 | 95.56 | 43,110
|
874
|
+
Leave.js | 100 | 60 | 100 | 100 | 24,28
|
875
|
+
Quit.js | 100 | 75 | 100 | 100 | 24
|
876
|
+
Send.js | 67.65 | 46.67 | 100 | 67.65 | 37,41,44,77,86-95
|
877
|
+
Show.js | 68.75 | 70.59 | 100 | 68.75 | 74-78,87,102-108
|
878
|
+
Whoami.js | 42.86 | 0 | 60 | 42.86 | 22,30-39
|
879
|
+
src/prompts | 15.14 | 0 | 14.29 | 15.27 |
|
880
|
+
ChatPrompt.js | 6.17 | 0 | 0 | 6.17 | 8-163
|
821
881
|
ChatPromptMock.js | 100 | 100 | 66.67 | 100 |
|
822
|
-
CommandPrompt.js | 10.42 | 0 | 0 | 10.56 |
|
823
|
-
Completion.js | 4.41 | 0 | 0 | 4.
|
882
|
+
CommandPrompt.js | 10.42 | 0 | 0 | 10.56 | 24-296
|
883
|
+
Completion.js | 4.41 | 0 | 0 | 4.48 | 6-103
|
824
884
|
MainPromptMock.js | 100 | 100 | 66.67 | 100 |
|
825
|
-
MultiEditorPrompt.js | 25 | 0 | 0 | 25 |
|
826
|
-
SigintManager.js | 25 | 0 | 20 | 25 |
|
885
|
+
MultiEditorPrompt.js | 25 | 0 | 0 | 25 | 7-36
|
886
|
+
SigintManager.js | 25 | 0 | 20 | 25 | 10-36
|
827
887
|
src/utils | 69.92 | 63.28 | 56.25 | 69.55 |
|
828
|
-
AliasManager.js | 100 | 91.67 | 100 | 100 |
|
829
|
-
ContactManager.js | 71.43 | 60 | 85.71 | 71.43 |
|
830
|
-
Fido2Client.js | 15.38 | 0 | 11.11 | 15.38 |
|
831
|
-
HelpProto.js | 91.6 | 84.06 | 100 | 91.45 |
|
832
|
-
Logger.js | 63.64 | 56.25 | 36.84 | 62.79 | ...
|
888
|
+
AliasManager.js | 100 | 91.67 | 100 | 100 | 47
|
889
|
+
ContactManager.js | 71.43 | 60 | 85.71 | 71.43 | 12,35-37
|
890
|
+
Fido2Client.js | 15.38 | 0 | 11.11 | 15.38 | 14-108
|
891
|
+
HelpProto.js | 91.6 | 84.06 | 100 | 91.45 | 49,153-154,171-176,195
|
892
|
+
Logger.js | 63.64 | 56.25 | 36.84 | 62.79 | ...37-49,57,65-69,74,84,88,93,105
|
833
893
|
-----------------------|---------|----------|---------|---------|-----------------------------------
|
834
894
|
|
835
895
|
```
|
836
896
|
|
837
|
-
|
838
897
|
## Copyright
|
839
898
|
|
840
899
|
Secrez has been created by [Francesco Sullo](https://francesco.sullo.co) (<francesco@sullo.co>). Any opinion, help, suggestion, critic is very welcome.
|
841
900
|
|
842
901
|
## Licence
|
902
|
+
|
843
903
|
```
|
844
904
|
MIT License
|
845
905
|
|
@@ -863,4 +923,3 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
863
923
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
864
924
|
SOFTWARE.
|
865
925
|
```
|
866
|
-
|