@internxt/cli 1.1.2 → 1.2.1
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/.env +2 -4
- package/README.md +31 -13
- package/dist/commands/add-cert.d.ts +8 -0
- package/dist/commands/add-cert.js +78 -0
- package/dist/services/analytics.service.d.ts +1 -1
- package/dist/services/analytics.service.js +1 -24
- package/dist/utils/errors.utils.d.ts +4 -0
- package/dist/utils/errors.utils.js +10 -1
- package/dist/utils/network.utils.js +12 -1
- package/dist/webdav/handlers/MKCOL.handler.js +6 -4
- package/dist/webdav/handlers/PROPFIND.handler.js +9 -11
- package/dist/webdav/handlers/PUT.handler.js +1 -1
- package/oclif.manifest.json +24 -1
- package/package.json +1 -1
- package/scripts/add-cert.ps1 +17 -0
- package/scripts/add-cert.sh +10 -0
package/.env
CHANGED
|
@@ -3,11 +3,9 @@ DRIVE_API_URL=https://drive.internxt.com/api
|
|
|
3
3
|
DRIVE_NEW_API_URL=https://api.internxt.com/drive
|
|
4
4
|
PAYMENTS_API_URL=https://api.internxt.com/payments
|
|
5
5
|
PHOTOS_API_URL=https://photos.internxt.com/api
|
|
6
|
+
NETWORK_URL=https://api.internxt.com
|
|
6
7
|
APP_CRYPTO_SECRET=6KYQBP847D4ATSFA
|
|
7
8
|
APP_CRYPTO_SECRET2=8Q8VMUE3BJZV87GT
|
|
8
9
|
APP_MAGIC_IV=d139cb9a2cd17092e79e1861cf9d7023
|
|
9
10
|
APP_MAGIC_SALT=38dce0391b49efba88dbc8c39ebf868f0267eb110bb0012ab27dc52a528d61b1d1ed9d76f400ff58e3240028442b1eab9bb84e111d9dadd997982dbde9dbd25e
|
|
10
|
-
|
|
11
|
-
WEBDAV_SERVER_PORT=3005
|
|
12
|
-
RUDDERSTACK_WRITE_KEY=2gEQj6IAjlsh0a3LGyf7VA6hZsL
|
|
13
|
-
RUDDERSTACK_DATAPLANE_URL=https://cdp.internxt.com
|
|
11
|
+
WEBDAV_SERVER_PORT=3005
|
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ $ npm install -g @internxt/cli
|
|
|
31
31
|
$ internxt COMMAND
|
|
32
32
|
running command...
|
|
33
33
|
$ internxt (--version)
|
|
34
|
-
@internxt/cli/1.1
|
|
34
|
+
@internxt/cli/1.2.1 darwin-arm64 node-v20.14.0
|
|
35
35
|
$ internxt --help [COMMAND]
|
|
36
36
|
USAGE
|
|
37
37
|
$ internxt COMMAND
|
|
@@ -42,6 +42,7 @@ USAGE
|
|
|
42
42
|
# Commands
|
|
43
43
|
|
|
44
44
|
<!-- commands -->
|
|
45
|
+
* [`internxt add-cert`](#internxt-add-cert)
|
|
45
46
|
* [`internxt config`](#internxt-config)
|
|
46
47
|
* [`internxt create-folder`](#internxt-create-folder)
|
|
47
48
|
* [`internxt download`](#internxt-download)
|
|
@@ -55,6 +56,23 @@ USAGE
|
|
|
55
56
|
* [`internxt webdav ACTION`](#internxt-webdav-action)
|
|
56
57
|
* [`internxt whoami`](#internxt-whoami)
|
|
57
58
|
|
|
59
|
+
## `internxt add-cert`
|
|
60
|
+
|
|
61
|
+
Add a self-signed certificate to the trusted store for macOS, Linux, and Windows.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
USAGE
|
|
65
|
+
$ internxt add-cert
|
|
66
|
+
|
|
67
|
+
DESCRIPTION
|
|
68
|
+
Add a self-signed certificate to the trusted store for macOS, Linux, and Windows.
|
|
69
|
+
|
|
70
|
+
EXAMPLES
|
|
71
|
+
$ internxt add-cert
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
_See code: [src/commands/add-cert.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/add-cert.ts)_
|
|
75
|
+
|
|
58
76
|
## `internxt config`
|
|
59
77
|
|
|
60
78
|
Display useful information from the user logged into the Internxt CLI.
|
|
@@ -82,7 +100,7 @@ EXAMPLES
|
|
|
82
100
|
$ internxt config
|
|
83
101
|
```
|
|
84
102
|
|
|
85
|
-
_See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.1
|
|
103
|
+
_See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/config.ts)_
|
|
86
104
|
|
|
87
105
|
## `internxt create-folder`
|
|
88
106
|
|
|
@@ -103,7 +121,7 @@ EXAMPLES
|
|
|
103
121
|
$ internxt create-folder
|
|
104
122
|
```
|
|
105
123
|
|
|
106
|
-
_See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.1
|
|
124
|
+
_See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/create-folder.ts)_
|
|
107
125
|
|
|
108
126
|
## `internxt download`
|
|
109
127
|
|
|
@@ -126,7 +144,7 @@ EXAMPLES
|
|
|
126
144
|
$ internxt download
|
|
127
145
|
```
|
|
128
146
|
|
|
129
|
-
_See code: [src/commands/download.ts](https://github.com/internxt/cli/blob/v1.1
|
|
147
|
+
_See code: [src/commands/download.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/download.ts)_
|
|
130
148
|
|
|
131
149
|
## `internxt list`
|
|
132
150
|
|
|
@@ -160,7 +178,7 @@ EXAMPLES
|
|
|
160
178
|
$ internxt list
|
|
161
179
|
```
|
|
162
180
|
|
|
163
|
-
_See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.1
|
|
181
|
+
_See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/list.ts)_
|
|
164
182
|
|
|
165
183
|
## `internxt login`
|
|
166
184
|
|
|
@@ -186,7 +204,7 @@ EXAMPLES
|
|
|
186
204
|
$ internxt login
|
|
187
205
|
```
|
|
188
206
|
|
|
189
|
-
_See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.1
|
|
207
|
+
_See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/login.ts)_
|
|
190
208
|
|
|
191
209
|
## `internxt logout`
|
|
192
210
|
|
|
@@ -203,7 +221,7 @@ EXAMPLES
|
|
|
203
221
|
$ internxt logout
|
|
204
222
|
```
|
|
205
223
|
|
|
206
|
-
_See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.1
|
|
224
|
+
_See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/logout.ts)_
|
|
207
225
|
|
|
208
226
|
## `internxt logs`
|
|
209
227
|
|
|
@@ -220,7 +238,7 @@ EXAMPLES
|
|
|
220
238
|
$ internxt logs
|
|
221
239
|
```
|
|
222
240
|
|
|
223
|
-
_See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.1
|
|
241
|
+
_See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/logs.ts)_
|
|
224
242
|
|
|
225
243
|
## `internxt move`
|
|
226
244
|
|
|
@@ -245,7 +263,7 @@ EXAMPLES
|
|
|
245
263
|
$ internxt move
|
|
246
264
|
```
|
|
247
265
|
|
|
248
|
-
_See code: [src/commands/move.ts](https://github.com/internxt/cli/blob/v1.1
|
|
266
|
+
_See code: [src/commands/move.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/move.ts)_
|
|
249
267
|
|
|
250
268
|
## `internxt trash`
|
|
251
269
|
|
|
@@ -269,7 +287,7 @@ EXAMPLES
|
|
|
269
287
|
$ internxt trash
|
|
270
288
|
```
|
|
271
289
|
|
|
272
|
-
_See code: [src/commands/trash.ts](https://github.com/internxt/cli/blob/v1.1
|
|
290
|
+
_See code: [src/commands/trash.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/trash.ts)_
|
|
273
291
|
|
|
274
292
|
## `internxt upload`
|
|
275
293
|
|
|
@@ -293,7 +311,7 @@ EXAMPLES
|
|
|
293
311
|
$ internxt upload
|
|
294
312
|
```
|
|
295
313
|
|
|
296
|
-
_See code: [src/commands/upload.ts](https://github.com/internxt/cli/blob/v1.1
|
|
314
|
+
_See code: [src/commands/upload.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/upload.ts)_
|
|
297
315
|
|
|
298
316
|
## `internxt webdav ACTION`
|
|
299
317
|
|
|
@@ -316,7 +334,7 @@ EXAMPLES
|
|
|
316
334
|
$ internxt webdav status
|
|
317
335
|
```
|
|
318
336
|
|
|
319
|
-
_See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.1
|
|
337
|
+
_See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/webdav.ts)_
|
|
320
338
|
|
|
321
339
|
## `internxt whoami`
|
|
322
340
|
|
|
@@ -333,7 +351,7 @@ EXAMPLES
|
|
|
333
351
|
$ internxt whoami
|
|
334
352
|
```
|
|
335
353
|
|
|
336
|
-
_See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.1
|
|
354
|
+
_See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.2.1/src/commands/whoami.ts)_
|
|
337
355
|
<!-- commandsstop -->
|
|
338
356
|
|
|
339
357
|
# Current Limitations
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class AddCert extends Command {
|
|
3
|
+
static readonly description = "Add a self-signed certificate to the trusted store for macOS, Linux, and Windows.";
|
|
4
|
+
static examples: string[];
|
|
5
|
+
run(): Promise<void>;
|
|
6
|
+
catch(error: Error): Promise<void>;
|
|
7
|
+
private executeCommand;
|
|
8
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const core_1 = require("@oclif/core");
|
|
27
|
+
const child_process_1 = require("child_process");
|
|
28
|
+
const config_service_1 = require("../services/config.service");
|
|
29
|
+
const os = __importStar(require("os"));
|
|
30
|
+
const path = __importStar(require("path"));
|
|
31
|
+
const cli_utils_1 = require("../utils/cli.utils");
|
|
32
|
+
const errors_utils_1 = require("../utils/errors.utils");
|
|
33
|
+
class AddCert extends core_1.Command {
|
|
34
|
+
static description = 'Add a self-signed certificate to the trusted store for macOS, Linux, and Windows.';
|
|
35
|
+
static examples = ['<%= config.bin %> <%= command.id %>'];
|
|
36
|
+
async run() {
|
|
37
|
+
try {
|
|
38
|
+
const certPath = path.join(config_service_1.ConfigService.WEBDAV_SSL_CERTS_DIR, 'cert.crt');
|
|
39
|
+
const platform = os.platform();
|
|
40
|
+
const scriptBasePath = path.join(__dirname, '../../scripts');
|
|
41
|
+
let command = '';
|
|
42
|
+
if (platform === 'win32') {
|
|
43
|
+
command = `powershell -ExecutionPolicy Bypass -File "${path.join(scriptBasePath, 'add-cert.ps1')}" -certPath "${certPath}"`;
|
|
44
|
+
}
|
|
45
|
+
else if (platform === 'darwin' || platform === 'linux') {
|
|
46
|
+
command = `bash "${path.join(scriptBasePath, 'add-cert.sh')}" "${certPath}"`;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw new Error(`Unsupported OS: ${platform}`);
|
|
50
|
+
}
|
|
51
|
+
await this.executeCommand(command);
|
|
52
|
+
cli_utils_1.CLIUtils.success('Certificate successfully added to the trusted store.');
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
await this.catch(error);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async catch(error) {
|
|
59
|
+
errors_utils_1.ErrorUtils.report(error, { command: this.id });
|
|
60
|
+
cli_utils_1.CLIUtils.error(error.message);
|
|
61
|
+
this.exit(1);
|
|
62
|
+
}
|
|
63
|
+
executeCommand(command) {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
(0, child_process_1.exec)(command, (error, stdout, stderr) => {
|
|
66
|
+
if (error) {
|
|
67
|
+
this.log(stderr);
|
|
68
|
+
reject(error);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.log(stdout);
|
|
72
|
+
resolve();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.default = AddCert;
|
|
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.AnalyticsService = exports.AnalyticsEvents = void 0;
|
|
7
7
|
const rudder_sdk_node_1 = __importDefault(require("@rudderstack/rudder-sdk-node"));
|
|
8
8
|
const config_service_1 = require("./config.service");
|
|
9
|
-
const package_json_1 = __importDefault(require("../../package.json"));
|
|
10
|
-
const os_1 = __importDefault(require("os"));
|
|
11
9
|
exports.AnalyticsEvents = {
|
|
12
10
|
CLILogin: 'CLI Login',
|
|
13
11
|
WebDAVEnabled: 'WebDAV Enabled',
|
|
@@ -49,28 +47,7 @@ class AnalyticsService {
|
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
track(eventKey, options, params = {}) {
|
|
52
|
-
return
|
|
53
|
-
const rudderstack = this.getRudderstack();
|
|
54
|
-
rudderstack.track({
|
|
55
|
-
event: exports.AnalyticsEvents[eventKey],
|
|
56
|
-
userId: options.userId,
|
|
57
|
-
context: {
|
|
58
|
-
app: {
|
|
59
|
-
name: options.app,
|
|
60
|
-
version: package_json_1.default.version,
|
|
61
|
-
},
|
|
62
|
-
os: {
|
|
63
|
-
family: this.platformFamily(os_1.default.platform()),
|
|
64
|
-
name: os_1.default.type(),
|
|
65
|
-
short_name: this.platformShortName(process.platform),
|
|
66
|
-
version: os_1.default.release(),
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
properties: params,
|
|
70
|
-
}, () => {
|
|
71
|
-
resolve();
|
|
72
|
-
});
|
|
73
|
-
});
|
|
50
|
+
return;
|
|
74
51
|
}
|
|
75
52
|
}
|
|
76
53
|
exports.AnalyticsService = AnalyticsService;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export declare class ErrorUtils {
|
|
2
2
|
static report(error: unknown, props?: Record<string, unknown>): void;
|
|
3
3
|
}
|
|
4
|
+
export declare class ConflictError extends Error {
|
|
5
|
+
statusCode: number;
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
4
8
|
export declare class NotFoundError extends Error {
|
|
5
9
|
statusCode: number;
|
|
6
10
|
constructor(message: string);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NotImplementedError = exports.UnsupportedMediaTypeError = exports.BadRequestError = exports.NotFoundError = exports.ErrorUtils = void 0;
|
|
3
|
+
exports.NotImplementedError = exports.UnsupportedMediaTypeError = exports.BadRequestError = exports.NotFoundError = exports.ConflictError = exports.ErrorUtils = void 0;
|
|
4
4
|
class ErrorUtils {
|
|
5
5
|
static report(error, props = {}) {
|
|
6
6
|
if (error instanceof Error) {
|
|
@@ -12,6 +12,15 @@ class ErrorUtils {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.ErrorUtils = ErrorUtils;
|
|
15
|
+
class ConflictError extends Error {
|
|
16
|
+
statusCode = 409;
|
|
17
|
+
constructor(message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'ConflictError';
|
|
20
|
+
Object.setPrototypeOf(this, ConflictError.prototype);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.ConflictError = ConflictError;
|
|
15
24
|
class NotFoundError extends Error {
|
|
16
25
|
statusCode = 404;
|
|
17
26
|
constructor(message) {
|
|
@@ -42,7 +42,18 @@ class NetworkUtils {
|
|
|
42
42
|
}
|
|
43
43
|
static generateSelfSignedSSLCerts() {
|
|
44
44
|
const attrs = [{ name: 'commonName', value: config_service_1.ConfigService.WEBDAV_LOCAL_URL }];
|
|
45
|
-
const
|
|
45
|
+
const extensions = [
|
|
46
|
+
{
|
|
47
|
+
name: 'subjectAltName',
|
|
48
|
+
altNames: [
|
|
49
|
+
{
|
|
50
|
+
type: 2,
|
|
51
|
+
value: config_service_1.ConfigService.WEBDAV_LOCAL_URL,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
const pems = selfsigned_1.default.generate(attrs, { days: 365, algorithm: 'sha256', keySize: 2048, extensions });
|
|
46
57
|
return pems;
|
|
47
58
|
}
|
|
48
59
|
}
|
|
@@ -17,11 +17,13 @@ class MKCOLRequestHandler {
|
|
|
17
17
|
}
|
|
18
18
|
handle = async (req, res) => {
|
|
19
19
|
const { driveDatabaseManager, driveFolderService } = this.dependencies;
|
|
20
|
-
const
|
|
21
|
-
const
|
|
20
|
+
const decodedUrl = decodeURI(req.url);
|
|
21
|
+
const resourceParsedPath = path_1.default.parse(decodedUrl);
|
|
22
|
+
const parentPath = webdav_utils_1.WebDavUtils.getParentPath(decodedUrl);
|
|
22
23
|
const parentResource = await driveDatabaseManager.findByRelativePath(parentPath);
|
|
23
|
-
if (!parentResource)
|
|
24
|
-
throw new errors_utils_1.
|
|
24
|
+
if (!parentResource) {
|
|
25
|
+
throw new errors_utils_1.ConflictError(`Parent resource not found for parent path ${parentPath}`);
|
|
26
|
+
}
|
|
25
27
|
logger_utils_1.webdavLogger.info(`MKCOL request received for folder at ${req.url}`);
|
|
26
28
|
logger_utils_1.webdavLogger.info(`Parent path: ${parentResource.id}`);
|
|
27
29
|
const [createFolder] = driveFolderService.createFolder({
|
|
@@ -122,14 +122,12 @@ class PROPFINDRequestHandler {
|
|
|
122
122
|
parentId: null,
|
|
123
123
|
}, encodeURI(folderRelativePath));
|
|
124
124
|
});
|
|
125
|
-
folderContent.folders.map(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
});
|
|
132
|
-
});
|
|
125
|
+
await Promise.all(folderContent.folders.map((folder) => driveDatabaseManager.createFolder({
|
|
126
|
+
...folder,
|
|
127
|
+
name: folder.plainName,
|
|
128
|
+
encryptedName: folder.name,
|
|
129
|
+
status: folder.deleted || folder.removed ? 'TRASHED' : 'EXISTS',
|
|
130
|
+
})));
|
|
133
131
|
const filesXML = folderContent.files.map((file) => {
|
|
134
132
|
const fileRelativePath = webdav_utils_1.WebDavUtils.joinURL(relativePath, file.type ? `${file.plainName}.${file.type}` : file.plainName);
|
|
135
133
|
return this.driveFileItemToXMLNode({
|
|
@@ -147,15 +145,15 @@ class PROPFINDRequestHandler {
|
|
|
147
145
|
size: Number(file.size),
|
|
148
146
|
}, encodeURI(fileRelativePath));
|
|
149
147
|
});
|
|
150
|
-
folderContent.files.map(
|
|
151
|
-
|
|
148
|
+
await Promise.all(folderContent.files.map((file) => {
|
|
149
|
+
driveDatabaseManager.createFile({
|
|
152
150
|
...file,
|
|
153
151
|
name: file.plainName,
|
|
154
152
|
fileId: file.fileId,
|
|
155
153
|
size: Number(file.size),
|
|
156
154
|
encryptedName: file.name,
|
|
157
155
|
});
|
|
158
|
-
});
|
|
156
|
+
}));
|
|
159
157
|
return foldersXML.concat(filesXML);
|
|
160
158
|
}
|
|
161
159
|
async getFolderRootXMLNode(relativePath, folderUuid) {
|
|
@@ -19,7 +19,7 @@ class PUTRequestHandler {
|
|
|
19
19
|
const driveFolder = await this.getDriveFolderRealmObject(resource);
|
|
20
20
|
logger_utils_1.webdavLogger.info(`PUT request received for uploading file '${resource.name}' to '${resource.path.dir}'`);
|
|
21
21
|
if (!driveFolder) {
|
|
22
|
-
throw new errors_utils_1.
|
|
22
|
+
throw new errors_utils_1.ConflictError('Drive destination folder not found');
|
|
23
23
|
}
|
|
24
24
|
const { user, mnemonic } = await this.dependencies.authService.getAuthDetails();
|
|
25
25
|
const [uploadPromise] = await this.dependencies.networkFacade.uploadFromStream(user.bucket, mnemonic, contentLength, req, {
|
package/oclif.manifest.json
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"commands": {
|
|
3
|
+
"add-cert": {
|
|
4
|
+
"aliases": [],
|
|
5
|
+
"args": {},
|
|
6
|
+
"description": "Add a self-signed certificate to the trusted store for macOS, Linux, and Windows.",
|
|
7
|
+
"examples": [
|
|
8
|
+
"<%= config.bin %> <%= command.id %>"
|
|
9
|
+
],
|
|
10
|
+
"flags": {},
|
|
11
|
+
"hasDynamicHelp": false,
|
|
12
|
+
"hiddenAliases": [],
|
|
13
|
+
"id": "add-cert",
|
|
14
|
+
"pluginAlias": "@internxt/cli",
|
|
15
|
+
"pluginName": "@internxt/cli",
|
|
16
|
+
"pluginType": "core",
|
|
17
|
+
"strict": true,
|
|
18
|
+
"enableJsonFlag": false,
|
|
19
|
+
"isESM": false,
|
|
20
|
+
"relativePath": [
|
|
21
|
+
"dist",
|
|
22
|
+
"commands",
|
|
23
|
+
"add-cert.js"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
3
26
|
"config": {
|
|
4
27
|
"aliases": [],
|
|
5
28
|
"args": {},
|
|
@@ -634,5 +657,5 @@
|
|
|
634
657
|
]
|
|
635
658
|
}
|
|
636
659
|
},
|
|
637
|
-
"version": "1.1
|
|
660
|
+
"version": "1.2.1"
|
|
638
661
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
param (
|
|
2
|
+
[string]$certPath
|
|
3
|
+
)
|
|
4
|
+
|
|
5
|
+
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
|
|
6
|
+
{
|
|
7
|
+
Start-Process powershell "-ExecutionPolicy Bypass -File `"$PSCommandPath`" -certPath `"$certPath`"" -Verb RunAs
|
|
8
|
+
}else{
|
|
9
|
+
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
|
|
10
|
+
$cert.Import($certPath)
|
|
11
|
+
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store "Root", "LocalMachine"
|
|
12
|
+
$store.Open("ReadWrite")
|
|
13
|
+
$store.Add($cert)
|
|
14
|
+
$store.Close()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
Write-Host "Certificate added to Trusted Root Certification Authorities."
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
CERT_PATH=$1
|
|
4
|
+
|
|
5
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
6
|
+
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain $CERT_PATH
|
|
7
|
+
else
|
|
8
|
+
sudo cp $CERT_PATH /usr/local/share/ca-certificates/
|
|
9
|
+
sudo update-ca-certificates
|
|
10
|
+
fi
|