autho 0.0.13 → 0.1.0
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 +111 -6
- package/build/bin.js +118 -40
- package/package.json +6 -2
package/Readme.md
CHANGED
|
@@ -19,12 +19,6 @@ To install Autho globally, use npm:
|
|
|
19
19
|
npm install -g autho
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
## Usage
|
|
23
|
-
|
|
24
|
-
After installing Autho, you can run the `autho` command in your terminal to access its functionalities:
|
|
25
|
-
|
|
26
|
-
This will start the Autho CLI, where you can generate OTPs, manage passwords, and configure settings as needed.
|
|
27
|
-
|
|
28
22
|
## Getting Started
|
|
29
23
|
|
|
30
24
|
1. **Setting Up Autho**: After installation, run the `autho` command to set up Autho for the first time. Follow the on-screen instructions to configure your master password and other settings.
|
|
@@ -47,6 +41,117 @@ This will start the Autho CLI, where you can generate OTPs, manage passwords, an
|
|
|
47
41
|
|
|
48
42
|
- **Regular Updates**: Keep Autho and its dependencies up to date to ensure that security vulnerabilities are addressed promptly.
|
|
49
43
|
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
autho [options] [command]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Options:
|
|
51
|
+
|
|
52
|
+
- `--version`: Output the version number
|
|
53
|
+
- `-p, --password <password>`: Master password
|
|
54
|
+
- `-ph, --passwordHash <passwordHash>`: Master password hash
|
|
55
|
+
- `-n, --name <name>`: Collection name
|
|
56
|
+
- `--dataFolder <folderPath>`: Folder path to store secrets db
|
|
57
|
+
- `-h, --help`: Display help for command
|
|
58
|
+
|
|
59
|
+
### Commands:
|
|
60
|
+
|
|
61
|
+
#### 0. `prompt`
|
|
62
|
+
|
|
63
|
+
The main terminal ui, recommended most ot the time.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
autho
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### 1. `import`
|
|
70
|
+
|
|
71
|
+
Import secrets from a backup file.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
autho import --filePath <filePath>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### 2. `secret`
|
|
78
|
+
|
|
79
|
+
Perform secret operations like creating, listing, reading, and deleting secrets.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
autho secret [options]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Options:
|
|
86
|
+
- `--action <action>`: Secret action (create/list/read/delete)
|
|
87
|
+
- `--id <id>`: Secret id
|
|
88
|
+
- `--decrypt`: Decrypt secret
|
|
89
|
+
|
|
90
|
+
#### 3. `file`
|
|
91
|
+
|
|
92
|
+
Encrypt/Decrypt a file.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
autho file [options]
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Options:
|
|
99
|
+
- `-f, --filePath <filePath>`: File path
|
|
100
|
+
- `-en, --encrypt`: Encrypt file
|
|
101
|
+
- `-de, --decrypt`: Decrypt file
|
|
102
|
+
- `--override`: Override original file
|
|
103
|
+
|
|
104
|
+
#### 4. `files`
|
|
105
|
+
|
|
106
|
+
Encrypt/Decrypt files in a folder.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
autho files [options]
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Options:
|
|
113
|
+
- `--input <inputPath>`: Folder path
|
|
114
|
+
- `--output <outputPath>`: Folder path
|
|
115
|
+
- `-en, --encrypt`: Encrypt folder
|
|
116
|
+
- `-de, --decrypt`: Decrypt folder
|
|
117
|
+
|
|
118
|
+
## Examples
|
|
119
|
+
|
|
120
|
+
1. Import secrets from a backup file:
|
|
121
|
+
```bash
|
|
122
|
+
autho import --filePath backup.json
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
2. Create a new secret:
|
|
126
|
+
```bash
|
|
127
|
+
autho secret --action create
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
3. Read a secret:
|
|
131
|
+
```bash
|
|
132
|
+
autho secret --action read --id <secretId> --decrypt
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
4. Encrypt a file:
|
|
136
|
+
```bash
|
|
137
|
+
autho file --filePath secret.txt --encrypt
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
5. Decrypt a file:
|
|
141
|
+
```bash
|
|
142
|
+
autho file --filePath secret.txt.autho --decrypt
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
6. Encrypt files in a folder:
|
|
146
|
+
```bash
|
|
147
|
+
autho files --input /path/to/folder --encrypt
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
7. Decrypt files in a folder:
|
|
151
|
+
```bash
|
|
152
|
+
autho files --input /path/to/folder.autho --decrypt
|
|
153
|
+
```
|
|
154
|
+
|
|
50
155
|
## Contributing
|
|
51
156
|
|
|
52
157
|
Autho is an open-source project, and contributions are welcome! Feel free to report issues, suggest features, or submit pull requests on the project's GitHub repository.
|
package/build/bin.js
CHANGED
|
@@ -924,7 +924,7 @@ var require_command = __commonJS({
|
|
|
924
924
|
var EventEmitter = require("events").EventEmitter;
|
|
925
925
|
var childProcess = require("child_process");
|
|
926
926
|
var path5 = require("path");
|
|
927
|
-
var
|
|
927
|
+
var fs5 = require("fs");
|
|
928
928
|
var process9 = require("process");
|
|
929
929
|
var { Argument: Argument2, humanReadableArgName } = require_argument();
|
|
930
930
|
var { CommanderError: CommanderError2 } = require_error();
|
|
@@ -1820,11 +1820,11 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1820
1820
|
const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"];
|
|
1821
1821
|
function findFile(baseDir, baseName) {
|
|
1822
1822
|
const localBin = path5.resolve(baseDir, baseName);
|
|
1823
|
-
if (
|
|
1823
|
+
if (fs5.existsSync(localBin))
|
|
1824
1824
|
return localBin;
|
|
1825
1825
|
if (sourceExt.includes(path5.extname(baseName)))
|
|
1826
1826
|
return void 0;
|
|
1827
|
-
const foundExt = sourceExt.find((ext) =>
|
|
1827
|
+
const foundExt = sourceExt.find((ext) => fs5.existsSync(`${localBin}${ext}`));
|
|
1828
1828
|
if (foundExt)
|
|
1829
1829
|
return `${localBin}${foundExt}`;
|
|
1830
1830
|
return void 0;
|
|
@@ -1836,7 +1836,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1836
1836
|
if (this._scriptPath) {
|
|
1837
1837
|
let resolvedScriptPath;
|
|
1838
1838
|
try {
|
|
1839
|
-
resolvedScriptPath =
|
|
1839
|
+
resolvedScriptPath = fs5.realpathSync(this._scriptPath);
|
|
1840
1840
|
} catch (err) {
|
|
1841
1841
|
resolvedScriptPath = this._scriptPath;
|
|
1842
1842
|
}
|
|
@@ -28941,7 +28941,7 @@ var require_iso2022 = __commonJS({
|
|
|
28941
28941
|
// node_modules/.pnpm/chardet@0.7.0/node_modules/chardet/index.js
|
|
28942
28942
|
var require_chardet = __commonJS({
|
|
28943
28943
|
"node_modules/.pnpm/chardet@0.7.0/node_modules/chardet/index.js"(exports2, module2) {
|
|
28944
|
-
var
|
|
28944
|
+
var fs5 = require("fs");
|
|
28945
28945
|
var utf8 = require_utf8();
|
|
28946
28946
|
var unicode = require_unicode();
|
|
28947
28947
|
var mbcs = require_mbcs();
|
|
@@ -29015,29 +29015,29 @@ var require_chardet = __commonJS({
|
|
|
29015
29015
|
var fd;
|
|
29016
29016
|
var handler = function(err, buffer) {
|
|
29017
29017
|
if (fd) {
|
|
29018
|
-
|
|
29018
|
+
fs5.closeSync(fd);
|
|
29019
29019
|
}
|
|
29020
29020
|
if (err)
|
|
29021
29021
|
return cb(err, null);
|
|
29022
29022
|
cb(null, self2.detect(buffer, opts));
|
|
29023
29023
|
};
|
|
29024
29024
|
if (opts && opts.sampleSize) {
|
|
29025
|
-
fd =
|
|
29026
|
-
|
|
29025
|
+
fd = fs5.openSync(filepath, "r"), sample = Buffer.allocUnsafe(opts.sampleSize);
|
|
29026
|
+
fs5.read(fd, sample, 0, opts.sampleSize, null, function(err) {
|
|
29027
29027
|
handler(err, sample);
|
|
29028
29028
|
});
|
|
29029
29029
|
return;
|
|
29030
29030
|
}
|
|
29031
|
-
|
|
29031
|
+
fs5.readFile(filepath, handler);
|
|
29032
29032
|
};
|
|
29033
29033
|
module2.exports.detectFileSync = function(filepath, opts) {
|
|
29034
29034
|
if (opts && opts.sampleSize) {
|
|
29035
|
-
var fd =
|
|
29036
|
-
|
|
29037
|
-
|
|
29035
|
+
var fd = fs5.openSync(filepath, "r"), sample2 = Buffer.allocUnsafe(opts.sampleSize);
|
|
29036
|
+
fs5.readSync(fd, sample2, 0, opts.sampleSize);
|
|
29037
|
+
fs5.closeSync(fd);
|
|
29038
29038
|
return self2.detect(sample2, opts);
|
|
29039
29039
|
}
|
|
29040
|
-
return self2.detect(
|
|
29040
|
+
return self2.detect(fs5.readFileSync(filepath), opts);
|
|
29041
29041
|
};
|
|
29042
29042
|
module2.exports.detectAll = function(buffer, opts) {
|
|
29043
29043
|
if (typeof opts !== "object") {
|
|
@@ -32540,7 +32540,7 @@ var require_os_tmpdir = __commonJS({
|
|
|
32540
32540
|
// node_modules/.pnpm/tmp@0.0.33/node_modules/tmp/lib/tmp.js
|
|
32541
32541
|
var require_tmp = __commonJS({
|
|
32542
32542
|
"node_modules/.pnpm/tmp@0.0.33/node_modules/tmp/lib/tmp.js"(exports2, module2) {
|
|
32543
|
-
var
|
|
32543
|
+
var fs5 = require("fs");
|
|
32544
32544
|
var path5 = require("path");
|
|
32545
32545
|
var crypto4 = require("crypto");
|
|
32546
32546
|
var osTmpDir = require_os_tmpdir();
|
|
@@ -32604,7 +32604,7 @@ var require_tmp = __commonJS({
|
|
|
32604
32604
|
return cb(new Error("Invalid template provided"));
|
|
32605
32605
|
(function _getUniqueName() {
|
|
32606
32606
|
const name = _generateTmpName(opts);
|
|
32607
|
-
|
|
32607
|
+
fs5.stat(name, function(err) {
|
|
32608
32608
|
if (!err) {
|
|
32609
32609
|
if (tries-- > 0)
|
|
32610
32610
|
return _getUniqueName();
|
|
@@ -32623,7 +32623,7 @@ var require_tmp = __commonJS({
|
|
|
32623
32623
|
do {
|
|
32624
32624
|
const name = _generateTmpName(opts);
|
|
32625
32625
|
try {
|
|
32626
|
-
|
|
32626
|
+
fs5.statSync(name);
|
|
32627
32627
|
} catch (e) {
|
|
32628
32628
|
return name;
|
|
32629
32629
|
}
|
|
@@ -32636,14 +32636,14 @@ var require_tmp = __commonJS({
|
|
|
32636
32636
|
tmpName(opts, function _tmpNameCreated(err, name) {
|
|
32637
32637
|
if (err)
|
|
32638
32638
|
return cb(err);
|
|
32639
|
-
|
|
32639
|
+
fs5.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err2, fd) {
|
|
32640
32640
|
if (err2)
|
|
32641
32641
|
return cb(err2);
|
|
32642
32642
|
if (opts.discardDescriptor) {
|
|
32643
|
-
return
|
|
32643
|
+
return fs5.close(fd, function _discardCallback(err3) {
|
|
32644
32644
|
if (err3) {
|
|
32645
32645
|
try {
|
|
32646
|
-
|
|
32646
|
+
fs5.unlinkSync(name);
|
|
32647
32647
|
} catch (e) {
|
|
32648
32648
|
if (!isENOENT(e)) {
|
|
32649
32649
|
err3 = e;
|
|
@@ -32666,9 +32666,9 @@ var require_tmp = __commonJS({
|
|
|
32666
32666
|
opts.postfix = opts.postfix || ".tmp";
|
|
32667
32667
|
const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;
|
|
32668
32668
|
const name = tmpNameSync(opts);
|
|
32669
|
-
var fd =
|
|
32669
|
+
var fd = fs5.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);
|
|
32670
32670
|
if (opts.discardDescriptor) {
|
|
32671
|
-
|
|
32671
|
+
fs5.closeSync(fd);
|
|
32672
32672
|
fd = void 0;
|
|
32673
32673
|
}
|
|
32674
32674
|
return {
|
|
@@ -32680,9 +32680,9 @@ var require_tmp = __commonJS({
|
|
|
32680
32680
|
function _rmdirRecursiveSync(root) {
|
|
32681
32681
|
const dirs = [root];
|
|
32682
32682
|
do {
|
|
32683
|
-
var dir2 = dirs.pop(), deferred = false, files =
|
|
32683
|
+
var dir2 = dirs.pop(), deferred = false, files = fs5.readdirSync(dir2);
|
|
32684
32684
|
for (var i = 0, length = files.length; i < length; i++) {
|
|
32685
|
-
var file2 = path5.join(dir2, files[i]), stat =
|
|
32685
|
+
var file2 = path5.join(dir2, files[i]), stat = fs5.lstatSync(file2);
|
|
32686
32686
|
if (stat.isDirectory()) {
|
|
32687
32687
|
if (!deferred) {
|
|
32688
32688
|
deferred = true;
|
|
@@ -32690,11 +32690,11 @@ var require_tmp = __commonJS({
|
|
|
32690
32690
|
}
|
|
32691
32691
|
dirs.push(file2);
|
|
32692
32692
|
} else {
|
|
32693
|
-
|
|
32693
|
+
fs5.unlinkSync(file2);
|
|
32694
32694
|
}
|
|
32695
32695
|
}
|
|
32696
32696
|
if (!deferred) {
|
|
32697
|
-
|
|
32697
|
+
fs5.rmdirSync(dir2);
|
|
32698
32698
|
}
|
|
32699
32699
|
} while (dirs.length !== 0);
|
|
32700
32700
|
}
|
|
@@ -32703,7 +32703,7 @@ var require_tmp = __commonJS({
|
|
|
32703
32703
|
tmpName(opts, function _tmpNameCreated(err, name) {
|
|
32704
32704
|
if (err)
|
|
32705
32705
|
return cb(err);
|
|
32706
|
-
|
|
32706
|
+
fs5.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err2) {
|
|
32707
32707
|
if (err2)
|
|
32708
32708
|
return cb(err2);
|
|
32709
32709
|
cb(null, name, _prepareTmpDirRemoveCallback(name, opts));
|
|
@@ -32713,7 +32713,7 @@ var require_tmp = __commonJS({
|
|
|
32713
32713
|
function dirSync(options) {
|
|
32714
32714
|
var args = _parseArguments(options), opts = args[0];
|
|
32715
32715
|
const name = tmpNameSync(opts);
|
|
32716
|
-
|
|
32716
|
+
fs5.mkdirSync(name, opts.mode || DIR_MODE);
|
|
32717
32717
|
return {
|
|
32718
32718
|
name,
|
|
32719
32719
|
removeCallback: _prepareTmpDirRemoveCallback(name, opts)
|
|
@@ -32723,7 +32723,7 @@ var require_tmp = __commonJS({
|
|
|
32723
32723
|
const removeCallback = _prepareRemoveCallback(function _removeCallback(fdPath) {
|
|
32724
32724
|
try {
|
|
32725
32725
|
if (0 <= fdPath[0]) {
|
|
32726
|
-
|
|
32726
|
+
fs5.closeSync(fdPath[0]);
|
|
32727
32727
|
}
|
|
32728
32728
|
} catch (e) {
|
|
32729
32729
|
if (!isEBADF(e) && !isENOENT(e)) {
|
|
@@ -32731,7 +32731,7 @@ var require_tmp = __commonJS({
|
|
|
32731
32731
|
}
|
|
32732
32732
|
}
|
|
32733
32733
|
try {
|
|
32734
|
-
|
|
32734
|
+
fs5.unlinkSync(fdPath[1]);
|
|
32735
32735
|
} catch (e) {
|
|
32736
32736
|
if (!isENOENT(e)) {
|
|
32737
32737
|
throw e;
|
|
@@ -32744,7 +32744,7 @@ var require_tmp = __commonJS({
|
|
|
32744
32744
|
return removeCallback;
|
|
32745
32745
|
}
|
|
32746
32746
|
function _prepareTmpDirRemoveCallback(name, opts) {
|
|
32747
|
-
const removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync :
|
|
32747
|
+
const removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync : fs5.rmdirSync.bind(fs5);
|
|
32748
32748
|
const removeCallback = _prepareRemoveCallback(removeFunction, name);
|
|
32749
32749
|
if (!opts.keep) {
|
|
32750
32750
|
_removeObjects.unshift(removeCallback);
|
|
@@ -45046,7 +45046,7 @@ var require_package2 = __commonJS({
|
|
|
45046
45046
|
// node_modules/.pnpm/dotenv@16.4.5/node_modules/dotenv/lib/main.js
|
|
45047
45047
|
var require_main2 = __commonJS({
|
|
45048
45048
|
"node_modules/.pnpm/dotenv@16.4.5/node_modules/dotenv/lib/main.js"(exports2, module2) {
|
|
45049
|
-
var
|
|
45049
|
+
var fs5 = require("fs");
|
|
45050
45050
|
var path5 = require("path");
|
|
45051
45051
|
var os4 = require("os");
|
|
45052
45052
|
var crypto4 = require("crypto");
|
|
@@ -45153,7 +45153,7 @@ var require_main2 = __commonJS({
|
|
|
45153
45153
|
if (options && options.path && options.path.length > 0) {
|
|
45154
45154
|
if (Array.isArray(options.path)) {
|
|
45155
45155
|
for (const filepath of options.path) {
|
|
45156
|
-
if (
|
|
45156
|
+
if (fs5.existsSync(filepath)) {
|
|
45157
45157
|
possibleVaultPath = filepath.endsWith(".vault") ? filepath : `${filepath}.vault`;
|
|
45158
45158
|
}
|
|
45159
45159
|
}
|
|
@@ -45163,7 +45163,7 @@ var require_main2 = __commonJS({
|
|
|
45163
45163
|
} else {
|
|
45164
45164
|
possibleVaultPath = path5.resolve(process.cwd(), ".env.vault");
|
|
45165
45165
|
}
|
|
45166
|
-
if (
|
|
45166
|
+
if (fs5.existsSync(possibleVaultPath)) {
|
|
45167
45167
|
return possibleVaultPath;
|
|
45168
45168
|
}
|
|
45169
45169
|
return null;
|
|
@@ -45207,7 +45207,7 @@ var require_main2 = __commonJS({
|
|
|
45207
45207
|
const parsedAll = {};
|
|
45208
45208
|
for (const path6 of optionPaths) {
|
|
45209
45209
|
try {
|
|
45210
|
-
const parsed = DotenvModule.parse(
|
|
45210
|
+
const parsed = DotenvModule.parse(fs5.readFileSync(path6, { encoding }));
|
|
45211
45211
|
DotenvModule.populate(parsedAll, parsed, options);
|
|
45212
45212
|
} catch (e) {
|
|
45213
45213
|
if (debug) {
|
|
@@ -52331,12 +52331,12 @@ var require_dist = __commonJS({
|
|
|
52331
52331
|
throw new Error(`Unknown format "${name}"`);
|
|
52332
52332
|
return f;
|
|
52333
52333
|
};
|
|
52334
|
-
function addFormats(ajv, list,
|
|
52334
|
+
function addFormats(ajv, list, fs5, exportName) {
|
|
52335
52335
|
var _a;
|
|
52336
52336
|
var _b;
|
|
52337
52337
|
(_a = (_b = ajv.opts.code).formats) !== null && _a !== void 0 ? _a : _b.formats = codegen_1._`require("ajv-formats/dist/formats").${exportName}`;
|
|
52338
52338
|
for (const f of list)
|
|
52339
|
-
ajv.addFormat(f,
|
|
52339
|
+
ajv.addFormat(f, fs5[f]);
|
|
52340
52340
|
}
|
|
52341
52341
|
module2.exports = exports2 = formatsPlugin;
|
|
52342
52342
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
@@ -59641,6 +59641,72 @@ var import_baloga = __toESM(require_baloga(), 1);
|
|
|
59641
59641
|
var logger = new import_baloga.Logger();
|
|
59642
59642
|
var Logger = import_baloga.Logger;
|
|
59643
59643
|
|
|
59644
|
+
// packages/cli/import.js
|
|
59645
|
+
var import_fs2 = __toESM(require("fs"), 1);
|
|
59646
|
+
var createSecret = async (secret, app) => {
|
|
59647
|
+
let created = false;
|
|
59648
|
+
switch (secret.type) {
|
|
59649
|
+
case "otp":
|
|
59650
|
+
{
|
|
59651
|
+
const newSecret = {
|
|
59652
|
+
name: secret.name,
|
|
59653
|
+
type: secret.type,
|
|
59654
|
+
protected: false,
|
|
59655
|
+
value: secret.secret,
|
|
59656
|
+
typeOptions: {
|
|
59657
|
+
username: secret.username,
|
|
59658
|
+
digits: secret.digits,
|
|
59659
|
+
description: secret.description
|
|
59660
|
+
}
|
|
59661
|
+
};
|
|
59662
|
+
created = await app.secrets.add(newSecret, app.encryptionKey);
|
|
59663
|
+
}
|
|
59664
|
+
break;
|
|
59665
|
+
case "password":
|
|
59666
|
+
{
|
|
59667
|
+
const newSecret = {
|
|
59668
|
+
name: secret.name,
|
|
59669
|
+
type: secret.type,
|
|
59670
|
+
protected: false,
|
|
59671
|
+
value: secret.secret,
|
|
59672
|
+
typeOptions: {
|
|
59673
|
+
username: secret.username,
|
|
59674
|
+
url: secret.url,
|
|
59675
|
+
description: secret.description
|
|
59676
|
+
}
|
|
59677
|
+
};
|
|
59678
|
+
created = await app.secrets.add(newSecret, app.encryptionKey);
|
|
59679
|
+
}
|
|
59680
|
+
break;
|
|
59681
|
+
case "note":
|
|
59682
|
+
{
|
|
59683
|
+
const newSecret = {
|
|
59684
|
+
name: secret.name,
|
|
59685
|
+
type: secret.type,
|
|
59686
|
+
protected: false,
|
|
59687
|
+
value: secret.secret,
|
|
59688
|
+
typeOptions: {
|
|
59689
|
+
description: secret.description
|
|
59690
|
+
}
|
|
59691
|
+
};
|
|
59692
|
+
created = await app.secrets.add(newSecret, app.encryptionKey);
|
|
59693
|
+
}
|
|
59694
|
+
break;
|
|
59695
|
+
default:
|
|
59696
|
+
throw new Error(`Unknown type: ${secret.type}`);
|
|
59697
|
+
}
|
|
59698
|
+
if (created)
|
|
59699
|
+
console.log(`Secret created: ${created.id}`);
|
|
59700
|
+
};
|
|
59701
|
+
var importSecrets = async (app, backupFilePath) => {
|
|
59702
|
+
const backupSecrets = JSON.parse(import_fs2.default.readFileSync(backupFilePath).toString("utf-8"));
|
|
59703
|
+
for (let secret of backupSecrets) {
|
|
59704
|
+
if (!secret)
|
|
59705
|
+
continue;
|
|
59706
|
+
await createSecret(secret, app);
|
|
59707
|
+
}
|
|
59708
|
+
};
|
|
59709
|
+
|
|
59644
59710
|
// packages/cli/bin.js
|
|
59645
59711
|
var logger2 = new Logger();
|
|
59646
59712
|
var program2 = new Command();
|
|
@@ -59689,7 +59755,7 @@ var initApp = async (args, opts) => {
|
|
|
59689
59755
|
const app = new App(args);
|
|
59690
59756
|
return app;
|
|
59691
59757
|
};
|
|
59692
|
-
program2.name("autho").description("Secrets manager").version("0.0.
|
|
59758
|
+
program2.name("autho").description("Secrets manager").version("0.0.14").option("-p, --password <password>", "Master password").option("-ph, --passwordHash <passwordHash>", "Master password hash").option("-n, --name <name>", "Collection name").option(
|
|
59693
59759
|
"--dataFolder <folderPath>",
|
|
59694
59760
|
"Folder path to store secrets db",
|
|
59695
59761
|
getAuthoAbsolutePath
|
|
@@ -59760,6 +59826,18 @@ program2.name("autho").description("Secrets manager").version("0.0.11").option("
|
|
|
59760
59826
|
}
|
|
59761
59827
|
process.exit(0);
|
|
59762
59828
|
});
|
|
59829
|
+
program2.command("import").description("Import secrets from backup file").option("--filePath <filePath>", "backup file path (should be json)").action(async (args) => {
|
|
59830
|
+
try {
|
|
59831
|
+
logger2.debug(`input:`, args);
|
|
59832
|
+
const { filePath } = args;
|
|
59833
|
+
const app = await initApp(args, program2.opts());
|
|
59834
|
+
await importSecrets(app, toAbsolutePath(filePath));
|
|
59835
|
+
} catch (error) {
|
|
59836
|
+
logger2.error("Something went wrong, Error: ", error.message);
|
|
59837
|
+
logger2.debug(error.stack);
|
|
59838
|
+
process.exit(1);
|
|
59839
|
+
}
|
|
59840
|
+
});
|
|
59763
59841
|
program2.command("secret").description("Secret operations").option("--action <action>", "Secret action (create/list/read/delete)", "create").option("--id <id>", "Secret id").option("--decrypt", "Decrypt secret", false).action(async (args) => {
|
|
59764
59842
|
try {
|
|
59765
59843
|
logger2.debug(`input:`, args);
|
|
@@ -59795,7 +59873,7 @@ program2.command("secret").description("Secret operations").option("--action <ac
|
|
|
59795
59873
|
}
|
|
59796
59874
|
} catch (error) {
|
|
59797
59875
|
logger2.error("Something went wrong, Error: ", error.message);
|
|
59798
|
-
|
|
59876
|
+
logger2.debug(error.stack);
|
|
59799
59877
|
process.exit(1);
|
|
59800
59878
|
}
|
|
59801
59879
|
process.exit(0);
|
|
@@ -59824,7 +59902,7 @@ program2.command("file").description("Encrypt/Decrypt file").option("-f, --fileP
|
|
|
59824
59902
|
}
|
|
59825
59903
|
process.exit(0);
|
|
59826
59904
|
});
|
|
59827
|
-
program2.command("files").description("Encrypt/Decrypt
|
|
59905
|
+
program2.command("files").description("Encrypt/Decrypt files").option("--input <inputPath>", "Folder path").option("--output <outputPath>", "Folder path", process.cwd()).option("-en, --encrypt", "Encrypt folder", false).option("-de, --decrypt", "Decrypt folder", false).action(async (args) => {
|
|
59828
59906
|
try {
|
|
59829
59907
|
logger2.debug(`input:`, args);
|
|
59830
59908
|
const { encrypt, decrypt } = args;
|
|
@@ -59855,7 +59933,7 @@ program2.command("files").description("Encrypt/Decrypt file").option("--input <i
|
|
|
59855
59933
|
}
|
|
59856
59934
|
} catch (error) {
|
|
59857
59935
|
logger2.error("Something went wrong, Error: ", error.message);
|
|
59858
|
-
|
|
59936
|
+
logger2.debug(error.stack);
|
|
59859
59937
|
process.exit(1);
|
|
59860
59938
|
}
|
|
59861
59939
|
process.exit(0);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autho",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"main": "build/bin.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"bin": {
|
|
@@ -15,13 +15,16 @@
|
|
|
15
15
|
"description": "Open Source Authentication and Password Management Tool",
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@eslint/js": "^9.0.0",
|
|
18
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
19
|
+
"@semantic-release/git": "^10.0.1",
|
|
18
20
|
"esbuild": "0.20.2",
|
|
19
21
|
"eslint": "^9.0.0",
|
|
20
22
|
"eslint-config-prettier": "^9.1.0",
|
|
21
23
|
"globals": "^15.0.0",
|
|
22
24
|
"jest": "^29.7.0",
|
|
23
25
|
"pkg": "^5.8.1",
|
|
24
|
-
"prettier": "^3.2.5"
|
|
26
|
+
"prettier": "^3.2.5",
|
|
27
|
+
"semantic-release": "^23.0.8"
|
|
25
28
|
},
|
|
26
29
|
"files": [
|
|
27
30
|
"build/bin.js"
|
|
@@ -48,6 +51,7 @@
|
|
|
48
51
|
"pkg:macos": "pkg build/bin.js --output dist/autho-macos --target node18-macos-x64",
|
|
49
52
|
"pkg:linux": "pkg build/bin.js --output dist/autho-linux --target node18-linux-x64",
|
|
50
53
|
"pkg:win": "pkg build/bin.js --output dist/autho-win --target node18-win-x64 --win portable",
|
|
54
|
+
"semantic-release": "semantic-release",
|
|
51
55
|
"release": "gh release create v0.0.10 './dist/autho*' --title 'v0.0.10' --generate-notes --prerelease"
|
|
52
56
|
}
|
|
53
57
|
}
|