@p0security/cli 0.26.14 → 0.27.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/build/dist/commands/aws/rds.js +7 -5
- package/build/dist/commands/aws/rds.js.map +1 -1
- package/build/dist/commands/claude/index.d.ts +2 -0
- package/build/dist/commands/claude/index.js +24 -0
- package/build/dist/commands/claude/index.js.map +1 -0
- package/build/dist/commands/claude/mcp.d.ts +7 -0
- package/build/dist/commands/claude/mcp.js +187 -0
- package/build/dist/commands/claude/mcp.js.map +1 -0
- package/build/dist/commands/file-transfer.d.ts +8 -0
- package/build/dist/commands/file-transfer.js +130 -0
- package/build/dist/commands/file-transfer.js.map +1 -0
- package/build/dist/commands/index.js +4 -0
- package/build/dist/commands/index.js.map +1 -1
- package/build/dist/commands/kubeconfig.js +2 -1
- package/build/dist/commands/kubeconfig.js.map +1 -1
- package/build/dist/drivers/api.d.ts +8 -0
- package/build/dist/drivers/api.js +20 -18
- package/build/dist/drivers/api.js.map +1 -1
- package/build/dist/drivers/auth/path.d.ts +1 -0
- package/build/dist/drivers/auth/path.js +12 -10
- package/build/dist/drivers/auth/path.js.map +1 -1
- package/build/dist/drivers/stdio.d.ts +8 -0
- package/build/dist/drivers/stdio.js +12 -1
- package/build/dist/drivers/stdio.js.map +1 -1
- package/build/dist/plugins/aws/api.d.ts +6 -1
- package/build/dist/plugins/aws/api.js +16 -2
- package/build/dist/plugins/aws/api.js.map +1 -1
- package/build/dist/plugins/aws/assumeRole.d.ts +2 -0
- package/build/dist/plugins/aws/assumeRole.js +8 -6
- package/build/dist/plugins/aws/assumeRole.js.map +1 -1
- package/build/dist/plugins/aws/ssh.js +8 -3
- package/build/dist/plugins/aws/ssh.js.map +1 -1
- package/build/dist/plugins/db/types.d.ts +13 -10
- package/build/dist/plugins/file-transfer/index.d.ts +35 -0
- package/build/dist/plugins/file-transfer/index.js +74 -0
- package/build/dist/plugins/file-transfer/index.js.map +1 -0
- package/build/dist/plugins/file-transfer/types.d.ts +31 -0
- package/build/dist/plugins/file-transfer/types.js +3 -0
- package/build/dist/plugins/file-transfer/types.js.map +1 -0
- package/build/dist/plugins/kubeconfig/types.d.ts +3 -5
- package/build/dist/plugins/okta/aws.js +13 -6
- package/build/dist/plugins/okta/aws.js.map +1 -1
- package/build/dist/types/delegation.d.ts +39 -0
- package/build/dist/types/delegation.js +36 -0
- package/build/dist/types/delegation.js.map +1 -0
- package/build/dist/types/request.d.ts +5 -3
- package/build/dist/types/request.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -1
|
@@ -24,6 +24,7 @@ const api_1 = require("../../drivers/api");
|
|
|
24
24
|
const stdio_1 = require("../../drivers/stdio");
|
|
25
25
|
const auth_1 = require("../../plugins/aws/auth");
|
|
26
26
|
const utils_1 = require("../../plugins/aws/utils");
|
|
27
|
+
const delegation_1 = require("../../types/delegation");
|
|
27
28
|
const util_1 = require("../../util");
|
|
28
29
|
const shared_1 = require("../shared");
|
|
29
30
|
const request_1 = require("../shared/request");
|
|
@@ -97,21 +98,22 @@ const fetchConfig = (argv, access, authn) => __awaiter(void 0, void 0, void 0, f
|
|
|
97
98
|
return config;
|
|
98
99
|
});
|
|
99
100
|
const rdsGenerateDbAuthToken = (argv, authn) => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
-
var _b, _c
|
|
101
|
+
var _b, _c;
|
|
101
102
|
const access = yield requestRdsAccess(argv, authn);
|
|
102
|
-
const
|
|
103
|
+
const awsRdsDelegate = (0, delegation_1.getDelegate)(access.delegation, "aws-rds");
|
|
104
|
+
const awsDelegation = (0, delegation_1.getDelegate)(awsRdsDelegate === null || awsRdsDelegate === void 0 ? void 0 : awsRdsDelegate.delegation, "aws");
|
|
103
105
|
if (!awsDelegation) {
|
|
104
106
|
throw `P0 granted access, but ${access.permission.instanceId} is not a RDS instance.`;
|
|
105
107
|
}
|
|
106
108
|
const awsAuth = yield (0, auth_1.awsCloudAuth)(authn, awsDelegation, argv.debug);
|
|
107
109
|
const dbConfig = yield fetchConfig(argv, access, authn);
|
|
108
|
-
const port = (
|
|
110
|
+
const port = (_b = dbConfig.port) !== null && _b !== void 0 ? _b : (argv.arch === "mysql"
|
|
109
111
|
? 3306
|
|
110
112
|
: argv.arch === "postgres"
|
|
111
113
|
? 5432
|
|
112
114
|
: (0, util_1.throwAssertNever)(argv.arch));
|
|
113
|
-
const database = (
|
|
114
|
-
const dbResource =
|
|
115
|
+
const database = (_c = argv.database) !== null && _c !== void 0 ? _c : dbConfig.defaultDb;
|
|
116
|
+
const dbResource = awsDelegation.permission.arn;
|
|
115
117
|
const { region } = (0, utils_1.parseArn)(dbResource);
|
|
116
118
|
const profileName = `p0_${access.permission.instanceId}`;
|
|
117
119
|
const userEmailName = access.principal.split("@")[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rds.js","sourceRoot":"","sources":["../../../../src/commands/aws/rds.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,2CAA2D;AAC3D,+CAAqD;AACrD,iDAAsD;AACtD,mDAAmD;
|
|
1
|
+
{"version":3,"file":"rds.js","sourceRoot":"","sources":["../../../../src/commands/aws/rds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.claudeCommand = void 0;
|
|
4
|
+
/** Copyright © 2024-present P0 Security
|
|
5
|
+
|
|
6
|
+
This file is part of @p0security/cli
|
|
7
|
+
|
|
8
|
+
@p0security/cli is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
|
|
9
|
+
|
|
10
|
+
@p0security/cli is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
11
|
+
|
|
12
|
+
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
13
|
+
**/
|
|
14
|
+
const mcp_1 = require("./mcp");
|
|
15
|
+
const claudeCommand = (yargs) => yargs.command("claude", "Interact with Claude Code", (yargs) => yargs
|
|
16
|
+
.option("debug", {
|
|
17
|
+
type: "boolean",
|
|
18
|
+
default: false,
|
|
19
|
+
description: "Emit debug logs",
|
|
20
|
+
})
|
|
21
|
+
.demandCommand(1)
|
|
22
|
+
.command("mcp", "Configure Claude MCP servers", mcp_1.mcpCommand));
|
|
23
|
+
exports.claudeCommand = claudeCommand;
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/claude/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,+BAAmC;AAG5B,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,KAAK,EAAE,EAAE,CAC7D,KAAK;KACF,MAAM,CAAC,OAAO,EAAE;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,iBAAiB;CAC/B,CAAC;KACD,aAAa,CAAC,CAAC,CAAC;KAChB,OAAO,CAAC,KAAK,EAAE,8BAA8B,EAAE,gBAAU,CAAC,CAC9D,CAAC;AAVS,QAAA,aAAa,iBAUtB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.mcpCommand = void 0;
|
|
16
|
+
/** Copyright © 2024-present P0 Security
|
|
17
|
+
|
|
18
|
+
This file is part of @p0security/cli
|
|
19
|
+
|
|
20
|
+
@p0security/cli is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
|
|
21
|
+
|
|
22
|
+
@p0security/cli is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
23
|
+
|
|
24
|
+
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
25
|
+
**/
|
|
26
|
+
const api_1 = require("../../drivers/api");
|
|
27
|
+
const auth_1 = require("../../drivers/auth");
|
|
28
|
+
const path_1 = require("../../drivers/auth/path");
|
|
29
|
+
const stdio_1 = require("../../drivers/stdio");
|
|
30
|
+
const util_1 = require("../../util");
|
|
31
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
32
|
+
const node_child_process_1 = require("node:child_process");
|
|
33
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
34
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
35
|
+
const node_util_1 = require("node:util");
|
|
36
|
+
const CLIENT_PATH = (0, path_1.postfixPath)("claude/mcp-client.json");
|
|
37
|
+
// In dev use cases the default port (=8080) is likely to be consumed by another listening service.
|
|
38
|
+
// Avoid by defaulting to a random port valid for both Windows and *nix architectures.
|
|
39
|
+
const REDIRECT_PORT = 52566;
|
|
40
|
+
const mcpCommand = (yargs) => yargs
|
|
41
|
+
.command("add <server>", "Add an MCP server", (y) => y
|
|
42
|
+
.positional("server", {
|
|
43
|
+
type: "string",
|
|
44
|
+
describe: "MCP server key",
|
|
45
|
+
demand: true,
|
|
46
|
+
})
|
|
47
|
+
.option("callbackPort", {
|
|
48
|
+
describe: "Authentication callback port",
|
|
49
|
+
type: "number",
|
|
50
|
+
default: REDIRECT_PORT,
|
|
51
|
+
})
|
|
52
|
+
.option("scope", {
|
|
53
|
+
alias: "s",
|
|
54
|
+
describe: 'Configuration scope (local, user, or project) (default: "local")',
|
|
55
|
+
type: "string",
|
|
56
|
+
choices: ["local", "user", "project"],
|
|
57
|
+
}), (argv) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
(0, node_assert_1.default)(argv.server);
|
|
59
|
+
yield handleAddMcpServer(Object.assign(Object.assign({}, argv), { server: argv.server }));
|
|
60
|
+
}))
|
|
61
|
+
.command("list", "List available MCP servers", (y) => y, (argv) => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
yield handleListMcpServers(argv);
|
|
63
|
+
}));
|
|
64
|
+
exports.mcpCommand = mcpCommand;
|
|
65
|
+
const handleListMcpServers = (argv) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
const authn = yield (0, auth_1.authenticate)();
|
|
67
|
+
const result = yield (0, api_1.authFetch)(authn, {
|
|
68
|
+
url: `${(0, api_1.tenantUrl)(authn.identity.org.slug)}/mcp/servers`,
|
|
69
|
+
method: "GET",
|
|
70
|
+
debug: argv.debug,
|
|
71
|
+
});
|
|
72
|
+
(0, stdio_1.print2)(result);
|
|
73
|
+
});
|
|
74
|
+
const handleAddMcpServer = (argv) => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
|
+
const authn = yield (0, auth_1.authenticate)();
|
|
76
|
+
if (!argv.server) {
|
|
77
|
+
throw "'server' is required";
|
|
78
|
+
}
|
|
79
|
+
const client = yield ensureClient(authn, argv);
|
|
80
|
+
const server = yield getServer(authn, argv);
|
|
81
|
+
yield provisionServer(argv, client, server);
|
|
82
|
+
});
|
|
83
|
+
const getHostname = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
const os = (0, util_1.getOperatingSystem)();
|
|
85
|
+
switch (os) {
|
|
86
|
+
case "mac":
|
|
87
|
+
return (yield (0, node_util_1.promisify)(node_child_process_1.exec)("scutil --get LocalHostName")).stdout;
|
|
88
|
+
case "linux":
|
|
89
|
+
case "win":
|
|
90
|
+
return (yield (0, node_util_1.promisify)(node_child_process_1.exec)("hostname")).stdout;
|
|
91
|
+
case "unknown":
|
|
92
|
+
throw `Unsupported operating system: ${os}`;
|
|
93
|
+
default:
|
|
94
|
+
throw (0, util_1.assertNever)(os);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
const createClient = (authn, argv) => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
+
var _a;
|
|
99
|
+
const version = (yield (0, node_util_1.promisify)(node_child_process_1.exec)("claude --version")).stdout;
|
|
100
|
+
const hostname = yield getHostname();
|
|
101
|
+
const clientData = yield (0, api_1.authFetch)(authn, {
|
|
102
|
+
url: `${(0, api_1.tenantUrl)(authn.identity.org.slug)}/mcp/clients`,
|
|
103
|
+
method: "POST",
|
|
104
|
+
body: JSON.stringify({
|
|
105
|
+
hostname,
|
|
106
|
+
platform: "claude-code",
|
|
107
|
+
version,
|
|
108
|
+
redirectUri: `http://localhost:${(_a = argv.callbackPort) !== null && _a !== void 0 ? _a : REDIRECT_PORT}`,
|
|
109
|
+
}),
|
|
110
|
+
debug: argv.debug,
|
|
111
|
+
});
|
|
112
|
+
yield promises_1.default.mkdir(node_path_1.default.dirname(CLIENT_PATH), { recursive: true });
|
|
113
|
+
yield promises_1.default.writeFile(CLIENT_PATH, JSON.stringify(clientData, null, 2), {
|
|
114
|
+
mode: "400",
|
|
115
|
+
});
|
|
116
|
+
return clientData;
|
|
117
|
+
});
|
|
118
|
+
const ensureClient = (authn, argv) => __awaiter(void 0, void 0, void 0, function* () {
|
|
119
|
+
try {
|
|
120
|
+
const cachedClientData = yield promises_1.default.readFile(CLIENT_PATH, {
|
|
121
|
+
encoding: "utf-8",
|
|
122
|
+
});
|
|
123
|
+
if (cachedClientData) {
|
|
124
|
+
const client = JSON.parse(cachedClientData);
|
|
125
|
+
(0, stdio_1.debug)(argv, "Using cached client at", CLIENT_PATH, "(remove this file to use a new MCP client)");
|
|
126
|
+
return client;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
(0, stdio_1.debug)(argv, `Could not read client data file: String(error)`);
|
|
131
|
+
}
|
|
132
|
+
return yield createClient(authn, argv);
|
|
133
|
+
});
|
|
134
|
+
const getServer = (authn, argv) => __awaiter(void 0, void 0, void 0, function* () {
|
|
135
|
+
return yield (0, api_1.authFetch)(authn, {
|
|
136
|
+
url: `${(0, api_1.tenantUrl)(authn.identity.org.slug)}/mcp/servers/${encodeURIComponent(argv.server)}`,
|
|
137
|
+
method: "GET",
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
const getClaudeFile = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
141
|
+
var _b, _c;
|
|
142
|
+
const os = (0, util_1.getOperatingSystem)();
|
|
143
|
+
switch (os) {
|
|
144
|
+
case "linux":
|
|
145
|
+
case "mac":
|
|
146
|
+
return (yield (0, node_util_1.promisify)(node_child_process_1.exec)("which claude")).stdout.trim();
|
|
147
|
+
case "win": {
|
|
148
|
+
const lines = (yield (0, node_util_1.promisify)(node_child_process_1.exec)("where.exe claude")).stdout
|
|
149
|
+
.split("\r\n")
|
|
150
|
+
.map((l) => l.trim())
|
|
151
|
+
.filter(Boolean);
|
|
152
|
+
return (_c = (_b = lines.find((l) => l.endsWith(".cmd"))) !== null && _b !== void 0 ? _b : lines[0]) !== null && _c !== void 0 ? _c : "";
|
|
153
|
+
}
|
|
154
|
+
case "unknown":
|
|
155
|
+
throw `Unsupported operating system: ${os}`;
|
|
156
|
+
default:
|
|
157
|
+
throw (0, util_1.assertNever)(os);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
const provisionServer = (argv, { client }, { server }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
161
|
+
const claudeFile = yield getClaudeFile();
|
|
162
|
+
(0, node_assert_1.default)(client.secret, "No client secret");
|
|
163
|
+
(0, stdio_1.debug)(argv, "Server", server);
|
|
164
|
+
const args = [
|
|
165
|
+
"mcp",
|
|
166
|
+
"add-json",
|
|
167
|
+
server.id,
|
|
168
|
+
`'${JSON.stringify({
|
|
169
|
+
type: "http",
|
|
170
|
+
url: server.url,
|
|
171
|
+
oauth: {
|
|
172
|
+
clientId: client.id,
|
|
173
|
+
clientSecret: client.secret,
|
|
174
|
+
callbackPort: Number(client.redirectUri.split(":").at(-1)),
|
|
175
|
+
},
|
|
176
|
+
})}'`,
|
|
177
|
+
...(argv.scope ? ["--scope", argv.scope] : []),
|
|
178
|
+
"--client-secret",
|
|
179
|
+
];
|
|
180
|
+
(0, stdio_1.debug)(argv, "Client secret", client.secret);
|
|
181
|
+
(0, stdio_1.debug)(argv, ["claude", ...args].join(" "));
|
|
182
|
+
yield (0, node_util_1.promisify)(node_child_process_1.spawn)(claudeFile, args, {
|
|
183
|
+
env: { MCP_CLIENT_SECRET: client.secret },
|
|
184
|
+
stdio: "inherit",
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/commands/claude/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.fileTransferCommand = void 0;
|
|
13
|
+
/** Copyright © 2024-present P0 Security
|
|
14
|
+
|
|
15
|
+
This file is part of @p0security/cli
|
|
16
|
+
|
|
17
|
+
@p0security/cli is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
|
|
18
|
+
|
|
19
|
+
@p0security/cli is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
20
|
+
|
|
21
|
+
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
22
|
+
**/
|
|
23
|
+
const retry_1 = require("../common/retry");
|
|
24
|
+
const auth_1 = require("../drivers/auth");
|
|
25
|
+
const stdio_1 = require("../drivers/stdio");
|
|
26
|
+
const otel_helpers_1 = require("../opentelemetry/otel-helpers");
|
|
27
|
+
const file_transfer_1 = require("../plugins/file-transfer");
|
|
28
|
+
const lib_storage_1 = require("@aws-sdk/lib-storage");
|
|
29
|
+
const fs_1 = require("fs");
|
|
30
|
+
const node_path_1 = require("node:path");
|
|
31
|
+
const fileTransferCommand = (yargs) => yargs.command("file-transfer <source> <destination>", "Transfer a local file to a remote instance via a temporary S3 bucket.", (yargs) => yargs
|
|
32
|
+
.positional("source", {
|
|
33
|
+
type: "string",
|
|
34
|
+
demandOption: true,
|
|
35
|
+
description: "Local file path",
|
|
36
|
+
})
|
|
37
|
+
.positional("destination", {
|
|
38
|
+
type: "string",
|
|
39
|
+
demandOption: true,
|
|
40
|
+
description: "Instance ID of the transfer destination",
|
|
41
|
+
})
|
|
42
|
+
.option("reason", {
|
|
43
|
+
type: "string",
|
|
44
|
+
describe: "Reason access is needed",
|
|
45
|
+
})
|
|
46
|
+
.option("debug", {
|
|
47
|
+
type: "boolean",
|
|
48
|
+
describe: "Print debug information, including signed URLs.",
|
|
49
|
+
}), fileTransferAction);
|
|
50
|
+
exports.fileTransferCommand = fileTransferCommand;
|
|
51
|
+
const fileTransferAction = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
yield (0, otel_helpers_1.traceSpan)("file-transfer.command", (span) => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
span.setAttribute("source", args.source);
|
|
54
|
+
span.setAttribute("destination", args.destination);
|
|
55
|
+
// Fail before requesting backend approval if the source can't be uploaded —
|
|
56
|
+
// a missing path or directory would otherwise only surface mid-upload, after
|
|
57
|
+
// the user has already waited on the approval flow.
|
|
58
|
+
let sourceStats;
|
|
59
|
+
try {
|
|
60
|
+
sourceStats = (0, fs_1.statSync)(args.source);
|
|
61
|
+
}
|
|
62
|
+
catch (_a) {
|
|
63
|
+
throw `Source file not found: ${args.source}`;
|
|
64
|
+
}
|
|
65
|
+
if (!sourceStats.isFile()) {
|
|
66
|
+
throw `Source path is not a regular file: ${args.source}`;
|
|
67
|
+
}
|
|
68
|
+
const authn = yield (0, auth_1.authenticate)(args);
|
|
69
|
+
(0, stdio_1.print2)("Requesting file-transfer access...");
|
|
70
|
+
const target = yield (0, file_transfer_1.provisionTransferRequest)(authn, args);
|
|
71
|
+
(0, stdio_1.print2)(`Access approved for s3://${target.bucket}/${target.prefix}`);
|
|
72
|
+
// target.prefix is the backend-granted prefix (ends in `/`); append the
|
|
73
|
+
// local file's basename so the S3 object preserves the original filename.
|
|
74
|
+
const uploadKey = `${target.prefix}${(0, node_path_1.basename)(args.source)}`;
|
|
75
|
+
(0, stdio_1.print2)("Preparing upload credentials...");
|
|
76
|
+
const { s3, getUrl, deleteUrl, expirySeconds } = yield (0, file_transfer_1.generateTransferUrls)(authn, Object.assign(Object.assign({}, target), { key: uploadKey }), args.debug);
|
|
77
|
+
const renderDurationSec = (s) => s >= 3600 ? `${Math.round(s / 3600)}h` : `${Math.round(s / 60)}m`;
|
|
78
|
+
// TODO: remove logging when we remove the launchdarkly file-transfer flag
|
|
79
|
+
if (args.debug) {
|
|
80
|
+
(0, stdio_1.print2)(`GET (${renderDurationSec(expirySeconds.get)}): ${getUrl}`);
|
|
81
|
+
(0, stdio_1.print2)(`DELETE (${renderDurationSec(expirySeconds.delete)}): ${deleteUrl}`);
|
|
82
|
+
}
|
|
83
|
+
(0, stdio_1.print2)(`Uploading ${args.source}...`);
|
|
84
|
+
// The backend grants the AWS role permission to write to our prefix, but
|
|
85
|
+
// IAM has eventual consistency — the policy can take several seconds to
|
|
86
|
+
// propagate before S3 honors it. Retry AccessDenied so the first
|
|
87
|
+
// invocation just works instead of failing the user.
|
|
88
|
+
try {
|
|
89
|
+
yield (0, retry_1.retryWithSleep)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
+
const upload = new lib_storage_1.Upload({
|
|
91
|
+
client: s3,
|
|
92
|
+
params: {
|
|
93
|
+
Bucket: target.bucket,
|
|
94
|
+
Key: uploadKey,
|
|
95
|
+
Body: (0, fs_1.createReadStream)(args.source),
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
upload.on("httpUploadProgress", (progress) => {
|
|
99
|
+
var _a, _b;
|
|
100
|
+
const loaded = (_a = progress.loaded) !== null && _a !== void 0 ? _a : 0;
|
|
101
|
+
const total = (_b = progress.total) !== null && _b !== void 0 ? _b : 0;
|
|
102
|
+
const mb = (loaded / 1024 / 1024).toFixed(1);
|
|
103
|
+
const pct = total
|
|
104
|
+
? ` (${Math.round((loaded / total) * 100)}%)`
|
|
105
|
+
: "";
|
|
106
|
+
(0, stdio_1.print2)(` uploaded ${mb} MB${pct}`);
|
|
107
|
+
});
|
|
108
|
+
yield upload.done();
|
|
109
|
+
}), {
|
|
110
|
+
retries: 20,
|
|
111
|
+
delayMs: 2000,
|
|
112
|
+
maxDelayMs: 10000,
|
|
113
|
+
multiplier: 1.5,
|
|
114
|
+
jitterFactor: 0.3,
|
|
115
|
+
// AWS SDK v3 sets `name` to the AWS error code. Matching the typed
|
|
116
|
+
// field avoids breaking if a future SDK reworks the message text.
|
|
117
|
+
shouldRetry: (err) => err instanceof Error && err.name === "AccessDenied",
|
|
118
|
+
debug: args.debug,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
123
|
+
throw `Upload failed: ${message}`;
|
|
124
|
+
}
|
|
125
|
+
(0, stdio_1.print2)("Uploaded.");
|
|
126
|
+
}), {
|
|
127
|
+
command: "file-transfer",
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=file-transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-transfer.js","sourceRoot":"","sources":["../../../src/commands/file-transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,8 @@ const otel_helpers_1 = require("../opentelemetry/otel-helpers");
|
|
|
30
30
|
const version_2 = require("../version");
|
|
31
31
|
const allow_1 = require("./allow");
|
|
32
32
|
const aws_1 = require("./aws");
|
|
33
|
+
const claude_1 = require("./claude");
|
|
34
|
+
const file_transfer_1 = require("./file-transfer");
|
|
33
35
|
const grant_1 = require("./grant");
|
|
34
36
|
const kubeconfig_1 = require("./kubeconfig");
|
|
35
37
|
const login_1 = require("./login");
|
|
@@ -47,6 +49,7 @@ const yargs_1 = __importDefault(require("yargs"));
|
|
|
47
49
|
const helpers_1 = require("yargs/helpers");
|
|
48
50
|
const commands = [
|
|
49
51
|
aws_1.awsCommand,
|
|
52
|
+
claude_1.claudeCommand,
|
|
50
53
|
grant_1.grantCommand,
|
|
51
54
|
login_1.loginCommand,
|
|
52
55
|
logout_1.logoutCommand,
|
|
@@ -60,6 +63,7 @@ const commands = [
|
|
|
60
63
|
rdp_1.rdpCommand,
|
|
61
64
|
kubeconfig_1.kubeconfigCommand,
|
|
62
65
|
print_bearer_token_1.printBearerTokenCommand,
|
|
66
|
+
file_transfer_1.fileTransferCommand,
|
|
63
67
|
];
|
|
64
68
|
const buildArgv = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
69
|
const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)).version((0, version_2.stringifyVersionInfo)(version_2.p0VersionInfo));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,8CAAmD;AACnD,4CAAkD;AAClD,oDAAsD;AACtD,gEAA2E;AAC3E,wCAAiE;AACjE,mCAAuC;AACvC,+BAAmC;AACnC,mCAAuC;AACvC,6CAAiD;AACjD,mCAAuC;AACvC,qCAAyC;AACzC,6BAAiC;AACjC,6DAA+D;AAC/D,+BAAmC;AACnC,uCAA2C;AAC3C,+BAAmC;AACnC,+BAAmC;AACnC,2CAA8C;AAC9C,+CAAkD;AAClD,4CAA2C;AAC3C,kDAA0B;AAC1B,2CAAwC;AAExC,MAAM,QAAQ,GAAG;IACf,gBAAU;IACV,oBAAY;IACZ,oBAAY;IACZ,sBAAa;IACb,cAAS;IACT,wBAAc;IACd,oBAAY;IACZ,gBAAU;IACV,2BAAe;IACf,+BAAiB;IACjB,gBAAU;IACV,gBAAU;IACV,8BAAiB;IACjB,4CAAuB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ const auth_2 = require("../plugins/aws/auth");
|
|
|
28
28
|
const utils_1 = require("../plugins/aws/utils");
|
|
29
29
|
const kubeconfig_1 = require("../plugins/kubeconfig");
|
|
30
30
|
const install_1 = require("../plugins/kubeconfig/install");
|
|
31
|
+
const delegation_1 = require("../types/delegation");
|
|
31
32
|
const util_1 = require("../util");
|
|
32
33
|
const files_1 = require("./aws/files");
|
|
33
34
|
// The P0 backend must be updated if this CLI command changes!
|
|
@@ -74,7 +75,7 @@ const kubeconfigAction = (args) => __awaiter(void 0, void 0, void 0, function* (
|
|
|
74
75
|
}
|
|
75
76
|
// No spinUntil(); there is one inside requestAccessToCluster() if needed
|
|
76
77
|
const request = yield (0, kubeconfig_1.requestAccessToCluster)(authn, args, clusterId, role);
|
|
77
|
-
const awsDelegation = request.delegation
|
|
78
|
+
const awsDelegation = (0, delegation_1.getDelegate)(request.delegation, "aws");
|
|
78
79
|
if (!awsDelegation) {
|
|
79
80
|
throw "Backend granted k8s access, but this is not an EKS cluster.";
|
|
80
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubeconfig.js","sourceRoot":"","sources":["../../../src/commands/kubeconfig.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,2CAAiD;AACjD,0CAA0C;AAC1C,0CAA+C;AAC/C,4CAAqD;AACrD,8CAAmD;AACnD,gDAAgD;AAChD,sDAK+B;AAC/B,2DAAiE;AACjE,kCAAwD;AACxD,uCAA6E;AAY7E,8DAA8D;AAC9D,uEAAuE;AAChE,MAAM,iBAAiB,GAAG,CAAC,KAAiB,EAAE,EAAE,CACrD,KAAK,CAAC,OAAO,CACX,YAAY,EACZ,sIAAsI,EACtI,CAAC,KAAK,EAAE,EAAE,CACR,KAAK;KACF,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,qDAAqD;CAChE,CAAC;KACD,MAAM,CAAC,UAAU,EAAE;IAClB,IAAI,EAAE,QAAQ;IACd,QAAQ,EACN,kEAAkE;CACrE,CAAC;KACD,MAAM,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,IAAI;IAClB,QAAQ,EACN,8DAA8D;CACjE,CAAC;KACD,MAAM,CAAC,QAAQ,EAAE;IAChB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,yBAAyB;CACpC,CAAC;KACD,MAAM,CAAC,UAAU,EAAE;IAClB,IAAI,EAAE,QAAQ;IACd,6BAA6B;IAC7B,QAAQ,EACN,4FAA4F;CAC/F,CAAC;KACD,MAAM,CAAC,OAAO,EAAE;IACf,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,0BAA0B;CACrC,CAAC,EACN,gBAAgB,CACjB,CAAC;AArCS,QAAA,iBAAiB,qBAqC1B;AAEJ,MAAM,gBAAgB,GAAG,CACvB,IAAqD,EACrD,EAAE;IACF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAY,GAAE,CAAC;IAEnC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,yCAA4B,EAC1D,KAAK,EACL,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,CACX,CAAC;IACF,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC;IAEnD,IAAI,CAAC,CAAC,MAAM,IAAA,0BAAgB,GAAE,CAAC,EAAE;QAC/B,MAAM,0HAA0H,CAAC;KAClI;IAED,yEAAyE;IACzE,MAAM,OAAO,GAAG,MAAM,IAAA,mCAAsB,EAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAE3E,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"kubeconfig.js","sourceRoot":"","sources":["../../../src/commands/kubeconfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Authn } from "../types/identity";
|
|
2
2
|
import yargs from "yargs";
|
|
3
|
+
export declare const tenantUrl: (tenant: string) => string;
|
|
3
4
|
export declare const requestStatusUrl: (tenant: string, requestId: string) => string;
|
|
4
5
|
export declare const tracesUrl: (tenant: string) => string;
|
|
5
6
|
export declare const fetchOrgData: <T>(orgId: string) => Promise<T>;
|
|
@@ -42,3 +43,10 @@ export declare const auditSshSessionActivity: (args: {
|
|
|
42
43
|
action: `ssh.session.${"end" | "start"}`;
|
|
43
44
|
debug: boolean | undefined;
|
|
44
45
|
}) => Promise<void>;
|
|
46
|
+
export declare const authFetch: <T>(authn: Authn, args: {
|
|
47
|
+
url: string;
|
|
48
|
+
method: string;
|
|
49
|
+
body?: string;
|
|
50
|
+
maxTimeoutMs?: number;
|
|
51
|
+
debug?: boolean;
|
|
52
|
+
}) => Promise<T>;
|