@p0security/cli 0.11.1 → 0.11.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/dist/commands/__tests__/login.test.js +17 -0
- package/dist/commands/__tests__/login.test.js.map +1 -1
- package/dist/commands/__tests__/ls.test.js +4 -3
- package/dist/commands/__tests__/ls.test.js.map +1 -1
- package/dist/commands/__tests__/ssh.test.js +10 -5
- package/dist/commands/__tests__/ssh.test.js.map +1 -1
- package/dist/commands/kubeconfig.js +11 -15
- package/dist/commands/kubeconfig.js.map +1 -1
- package/dist/commands/login.js +11 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/ls.js +4 -6
- package/dist/commands/ls.js.map +1 -1
- package/dist/commands/shared/request.js +2 -2
- package/dist/commands/shared/request.js.map +1 -1
- package/dist/drivers/__mocks__/stdio.d.ts +14 -0
- package/dist/drivers/__mocks__/stdio.js +26 -0
- package/dist/drivers/__mocks__/stdio.js.map +1 -0
- package/dist/drivers/ansi.d.ts +8 -0
- package/dist/drivers/ansi.js +25 -0
- package/dist/drivers/ansi.js.map +1 -0
- package/dist/drivers/auth.d.ts +1 -0
- package/dist/drivers/auth.js +8 -4
- package/dist/drivers/auth.js.map +1 -1
- package/dist/drivers/stdio.d.ts +6 -5
- package/dist/drivers/stdio.js +50 -7
- package/dist/drivers/stdio.js.map +1 -1
- package/dist/plugins/aws/__tests__/utils.test.d.ts +1 -0
- package/dist/plugins/aws/__tests__/utils.test.js +82 -0
- package/dist/plugins/aws/__tests__/utils.test.js.map +1 -0
- package/dist/plugins/aws/ssh.js +45 -23
- package/dist/plugins/aws/ssh.js.map +1 -1
- package/dist/plugins/aws/types.d.ts +6 -4
- package/dist/plugins/aws/utils.d.ts +20 -0
- package/dist/plugins/aws/utils.js +54 -0
- package/dist/plugins/aws/utils.js.map +1 -0
- package/dist/plugins/google/ssh-key.js +9 -1
- package/dist/plugins/google/ssh-key.js.map +1 -1
- package/dist/plugins/google/ssh.js +61 -28
- package/dist/plugins/google/ssh.js.map +1 -1
- package/dist/plugins/kubeconfig/index.d.ts +2 -2
- package/dist/plugins/kubeconfig/index.js +17 -14
- package/dist/plugins/kubeconfig/index.js.map +1 -1
- package/dist/plugins/kubeconfig/types.d.ts +9 -8
- package/dist/plugins/ssh/index.js +55 -86
- package/dist/plugins/ssh/index.js.map +1 -1
- package/dist/types/ssh.d.ts +28 -13
- package/package.json +3 -3
|
@@ -29,6 +29,7 @@ jest.mock("fs/promises");
|
|
|
29
29
|
jest.mock("../../drivers/auth", () => (Object.assign(Object.assign({}, jest.requireActual("../../drivers/auth")), { IDENTITY_FILE_PATH: "/path/to/home/.p0" })));
|
|
30
30
|
jest.mock("../../drivers/stdio");
|
|
31
31
|
jest.mock("../../plugins/login");
|
|
32
|
+
const mockSignInWithCredential = auth_1.signInWithCredential;
|
|
32
33
|
const mockReadFile = promises_1.readFile;
|
|
33
34
|
const mockWriteFile = promises_1.writeFile;
|
|
34
35
|
describe("login", () => {
|
|
@@ -50,6 +51,13 @@ describe("login", () => {
|
|
|
50
51
|
mockWriteFile.mockImplementation((_path, data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
52
|
credentialData = data;
|
|
52
53
|
}));
|
|
54
|
+
mockSignInWithCredential.mockImplementation((_auth, _firebaseCredential) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
return Promise.resolve({
|
|
56
|
+
user: {
|
|
57
|
+
email: "user@p0.dev",
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}));
|
|
53
61
|
beforeEach(() => {
|
|
54
62
|
credentialData = "";
|
|
55
63
|
jest.clearAllMocks();
|
|
@@ -71,6 +79,15 @@ describe("login", () => {
|
|
|
71
79
|
yield (0, login_2.login)({ org: "test-org" });
|
|
72
80
|
expect(auth_1.signInWithCredential.mock.calls).toMatchSnapshot();
|
|
73
81
|
}));
|
|
82
|
+
it("returns an error message if firebase cannot determine the user's email", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
83
|
+
mockSignInWithCredential.mockResolvedValueOnce({
|
|
84
|
+
user: {},
|
|
85
|
+
});
|
|
86
|
+
yield expect((0, login_2.login)({ org: "test-org" })).rejects.toMatchInlineSnapshot(`
|
|
87
|
+
"Can not sign in: this user has previously signed in with a different identity provider.
|
|
88
|
+
Please contact support@p0.dev to enable this user."
|
|
89
|
+
`);
|
|
90
|
+
}));
|
|
74
91
|
});
|
|
75
92
|
});
|
|
76
93
|
//# sourceMappingURL=login.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/login.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/login.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ const yargs_2 = __importDefault(require("yargs"));
|
|
|
30
30
|
jest.mock("../../drivers/api");
|
|
31
31
|
jest.mock("../../drivers/auth");
|
|
32
32
|
jest.mock("../../drivers/stdio");
|
|
33
|
+
jest.spyOn(process, "exit");
|
|
33
34
|
const mockFetchCommand = api_1.fetchCommand;
|
|
34
35
|
const mockPrint1 = stdio_1.print1;
|
|
35
36
|
const mockPrint2 = stdio_1.print2;
|
|
@@ -48,13 +49,13 @@ describe("ls", () => {
|
|
|
48
49
|
{ key: "instance-1", group: "Group", value: "Resource 1" },
|
|
49
50
|
{ key: "instance-2", value: "Resource 2" },
|
|
50
51
|
]);
|
|
51
|
-
yield (0, ls_1.lsCommand)((0, yargs_2.default)()).parse(command);
|
|
52
|
+
yield (0, ls_1.lsCommand)((0, yargs_2.default)()).exitProcess(false).parse(command);
|
|
52
53
|
expect(mockPrint1.mock.calls).toMatchSnapshot("stdout");
|
|
53
54
|
expect(mockPrint2.mock.calls).toMatchSnapshot("stderr");
|
|
54
55
|
}));
|
|
55
56
|
it("should print friendly message if no items", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
57
|
mockItems([]);
|
|
57
|
-
yield (0, ls_1.lsCommand)((0, yargs_2.default)()).parse(command);
|
|
58
|
+
yield (0, ls_1.lsCommand)((0, yargs_2.default)()).exitProcess(false).parse(command);
|
|
58
59
|
expect(mockPrint1.mock.calls).toMatchSnapshot("stdout");
|
|
59
60
|
expect(mockPrint2.mock.calls).toMatchSnapshot("stderr");
|
|
60
61
|
}));
|
|
@@ -77,7 +78,7 @@ Unknown argument: foo`,
|
|
|
77
78
|
});
|
|
78
79
|
});
|
|
79
80
|
it("should print error message", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
-
const error = yield (0, yargs_1.failure)((0, ls_1.lsCommand)((0, yargs_2.default)()), command);
|
|
81
|
+
const error = yield (0, yargs_1.failure)((0, ls_1.lsCommand)((0, yargs_2.default)().exitProcess(false)), command);
|
|
81
82
|
expect(error).toMatchSnapshot();
|
|
82
83
|
}));
|
|
83
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/ls.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,2CAAiD;AACjD,+CAAqD;AACrD,+CAA8C;AAC9C,8BAAkC;AAClC,kDAA0B;AAE1B,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/B,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAChC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/ls.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,2CAAiD;AACjD,+CAAqD;AACrD,+CAA8C;AAC9C,8BAAkC;AAClC,kDAA0B;AAE1B,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/B,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAChC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACjC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAE5B,MAAM,gBAAgB,GAAG,kBAAyB,CAAC;AACnD,MAAM,UAAU,GAAG,cAAmB,CAAC;AACvC,MAAM,UAAU,GAAG,cAAmB,CAAC;AAEvC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAClB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAEvC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,MAAM,OAAO,GAAG,oBAAoB,CAAC;QAErC,MAAM,SAAS,GAAG,CAAC,KAAe,EAAE,EAAE,CACpC,gBAAgB,CAAC,iBAAiB,CAAC;YACjC,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,aAAa;YAClB,KAAK;SACN,CAAC,CAAC;QAEL,EAAE,CAAC,4BAA4B,EAAE,GAAS,EAAE;YAC1C,SAAS,CAAC;gBACR,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC1D,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;aAC3C,CAAC,CAAC;YACH,MAAM,IAAA,cAAS,EAAC,IAAA,eAAK,GAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;YACzD,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,MAAM,IAAA,cAAS,EAAC,IAAA,eAAK,GAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC;QAEzB,SAAS,CAAC,GAAG,EAAE;YACb,gBAAgB,CAAC,iBAAiB,CAAC;gBACjC,KAAK,EAAE;;;;;;;;;;sBAUO;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAS,EAAE;YAC1C,MAAM,KAAK,GAAG,MAAM,IAAA,eAAO,EACzB,IAAA,cAAS,EAAC,IAAA,eAAK,GAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EACrC,OAAO,CACR,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;QAClC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -51,6 +51,7 @@ const MOCK_REQUEST = {
|
|
|
51
51
|
},
|
|
52
52
|
permission: {
|
|
53
53
|
spec: {
|
|
54
|
+
awsResourcePermission: { permission: {} },
|
|
54
55
|
instanceId: "instanceId",
|
|
55
56
|
accountId: "accountId",
|
|
56
57
|
region: "region",
|
|
@@ -92,19 +93,21 @@ describe("ssh", () => {
|
|
|
92
93
|
});
|
|
93
94
|
});
|
|
94
95
|
it("should call p0 request with reason arg", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
-
void (0, ssh_2.sshCommand)((0, yargs_1.default)())
|
|
96
|
+
void (0, ssh_2.sshCommand)((0, yargs_1.default)())
|
|
97
|
+
.fail(lodash_1.noop)
|
|
98
|
+
.parse(`ssh some-instance --reason reason --provider aws`);
|
|
96
99
|
yield (0, util_1.sleep)(100);
|
|
97
100
|
const hiddenFilenameRequestArgs = (0, lodash_1.omit)(mockFetchCommand.mock.calls[0][1], "$0");
|
|
98
101
|
expect(hiddenFilenameRequestArgs).toMatchSnapshot("args");
|
|
99
102
|
}));
|
|
100
103
|
it("should wait for access grant", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
-
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).parse(`ssh some-instance`);
|
|
104
|
+
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).fail(lodash_1.noop).parse(`ssh some-instance`);
|
|
102
105
|
const wait = (0, util_1.sleep)(100);
|
|
103
106
|
yield Promise.race([wait, promise]);
|
|
104
107
|
yield expect(wait).resolves.toBeUndefined();
|
|
105
108
|
}));
|
|
106
109
|
it("should wait for provisioning", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
|
-
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).parse(`ssh some-instance`);
|
|
110
|
+
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).fail(lodash_1.noop).parse(`ssh some-instance`);
|
|
108
111
|
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
109
112
|
firestore_2.onSnapshot.trigger({
|
|
110
113
|
status: "APPROVED",
|
|
@@ -114,7 +117,9 @@ describe("ssh", () => {
|
|
|
114
117
|
yield expect(wait).resolves.toBeUndefined();
|
|
115
118
|
}));
|
|
116
119
|
it("should call sshOrScp with non-interactive command", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
117
|
-
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)())
|
|
120
|
+
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)())
|
|
121
|
+
.fail(lodash_1.noop)
|
|
122
|
+
.parse(`ssh some-instance do something`);
|
|
118
123
|
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
119
124
|
firestore_2.onSnapshot.trigger({
|
|
120
125
|
status: "APPROVED",
|
|
@@ -127,7 +132,7 @@ describe("ssh", () => {
|
|
|
127
132
|
expect(mockSshOrScp).toHaveBeenCalled();
|
|
128
133
|
}));
|
|
129
134
|
it("should call sshOrScp with interactive session", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
130
|
-
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).parse(`ssh some-instance`);
|
|
135
|
+
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).fail(lodash_1.noop).parse(`ssh some-instance`);
|
|
131
136
|
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
132
137
|
firestore_2.onSnapshot.trigger({
|
|
133
138
|
status: "APPROVED",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/ssh.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,sDAA8D;AAC9D,2CAAiD;AACjD,+CAAqD;AACrD,2CAA6C;AAC7C,uDAAqD;AACrD,qCAAmC;AACnC,gCAAoC;AACpC,kDAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"ssh.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/ssh.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,sDAA8D;AAC9D,2CAAiD;AACjD,+CAAqD;AACrD,2CAA6C;AAC7C,uDAAqD;AACrD,qCAAmC;AACnC,gCAAoC;AACpC,kDAAgD;AAChD,mCAAoC;AACpC,kDAA0B;AAE1B,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/B,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAChC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACjC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAE/B,MAAM,gBAAgB,GAAG,kBAAyB,CAAC;AACnD,MAAM,YAAY,GAAG,cAAqB,CAAC;AAC3C,MAAM,UAAU,GAAG,cAAmB,CAAC;AACvC,MAAM,UAAU,GAAG,cAAmB,CAAC;AAEvC,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE,MAAM;IACd,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE;YACH,aAAa,EAAE,eAAe;SAC/B;KACF;IACD,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,qBAAqB,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACzC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,sBAAe;YAC1B,IAAI,EAAE,KAAK;SACZ;KACF;CACF,CAAC;AAEF,IAAA,sBAAU,EAAC;IACT,WAAW,EAAE;QACX,CAAC,kBAAkB,CAAC,EAAE;YACpB,KAAK,EAAE,WAAW;SACnB;KACF;CACF,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,QAAQ,CAAC,IAAI,CAAC;QACZ,CAAC,YAAY,EAAE,IAAI,CAAC;QACpB,CAAC,WAAW,EAAE,KAAK,CAAC;KACrB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE;QAClC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,gBAAgB,CAAC,iBAAiB,CAAC;gBACjC,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,WAAW;gBACpB,EAAE,EAAE,QAAQ;gBACZ,aAAa,EAAE,KAAK;gBACpB,YAAY;gBACZ,KAAK,EAAE;oBACL,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE;4BACJ,QAAQ,EAAE;gCACR,GAAG,EAAE,iEAAiE;6BACvE;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;YACtD,KAAK,IAAA,gBAAU,EAAC,IAAA,eAAK,GAAE,CAAC;iBACrB,IAAI,CAAC,aAAI,CAAC;iBACV,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAC7D,MAAM,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC;YACjB,MAAM,yBAAyB,GAAG,IAAA,aAAI,EACpC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjC,IAAI,CACL,CAAC;YACF,MAAM,CAAC,yBAAyB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAA,gBAAU,EAAC,IAAA,eAAK,GAAE,CAAC,CAAC,IAAI,CAAC,aAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC;YACxB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACpC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC9C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAA,gBAAU,EAAC,IAAA,eAAK,GAAE,CAAC,CAAC,IAAI,CAAC,aAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1E,MAAM,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC,CAAC,kDAAkD;YACnE,sBAAkB,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC;YACxB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACpC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC9C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAS,EAAE;YACjE,MAAM,OAAO,GAAG,IAAA,gBAAU,EAAC,IAAA,eAAK,GAAE,CAAC;iBAChC,IAAI,CAAC,aAAI,CAAC;iBACV,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC3C,MAAM,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC,CAAC,kDAAkD;YACnE,sBAAkB,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,MAAM,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC,CAAC,kDAAkD;YACnE,sBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;YAC7D,MAAM,OAAO,GAAG,IAAA,gBAAU,EAAC,IAAA,eAAK,GAAE,CAAC,CAAC,IAAI,CAAC,aAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1E,MAAM,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC,CAAC,kDAAkD;YACnE,sBAAkB,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,MAAM,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC,CAAC,kDAAkD;YACnE,sBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -21,9 +21,11 @@ This file is part of @p0security/cli
|
|
|
21
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
22
|
**/
|
|
23
23
|
const retry_1 = require("../common/retry");
|
|
24
|
+
const ansi_1 = require("../drivers/ansi");
|
|
24
25
|
const auth_1 = require("../drivers/auth");
|
|
25
26
|
const firestore_1 = require("../drivers/firestore");
|
|
26
27
|
const stdio_1 = require("../drivers/stdio");
|
|
28
|
+
const utils_1 = require("../plugins/aws/utils");
|
|
27
29
|
const kubeconfig_1 = require("../plugins/kubeconfig");
|
|
28
30
|
const install_1 = require("../plugins/kubeconfig/install");
|
|
29
31
|
const util_1 = require("../util");
|
|
@@ -64,8 +66,9 @@ const kubeconfigAction = (args) => __awaiter(void 0, void 0, void 0, function* (
|
|
|
64
66
|
if (!(yield (0, install_1.ensureEksInstall)())) {
|
|
65
67
|
throw "Required dependencies are missing; please try again after installing them, or check that they are available on the PATH.";
|
|
66
68
|
}
|
|
69
|
+
// No spinUntil(); there is one inside requestAccessToCluster() if needed
|
|
67
70
|
const request = yield (0, kubeconfig_1.requestAccessToCluster)(authn, args, clusterId, role);
|
|
68
|
-
const awsAuth = yield (0, kubeconfig_1.awsCloudAuth)(authn, awsAccountId, request
|
|
71
|
+
const awsAuth = yield (0, kubeconfig_1.awsCloudAuth)(authn, awsAccountId, request, awsLoginType);
|
|
69
72
|
const profile = (0, kubeconfig_1.profileName)(clusterId);
|
|
70
73
|
// The `aws eks update-kubeconfig` command can't handle the ARN of the EKS cluster.
|
|
71
74
|
// So we must, with great annoyance, parse it to extract the cluster name and region.
|
|
@@ -86,7 +89,7 @@ const kubeconfigAction = (args) => __awaiter(void 0, void 0, void 0, function* (
|
|
|
86
89
|
try {
|
|
87
90
|
// Federated access especially sometimes takes some time to propagate, so
|
|
88
91
|
// retry for up to 20 seconds just in case it takes a while.
|
|
89
|
-
const awsResult = yield (0, retry_1.retryWithSleep)(() => __awaiter(void 0, void 0, void 0, function* () { return yield (0, util_1.exec)("aws", updateKubeconfigArgs, { check: true }); }), () => true, 8, 2500);
|
|
92
|
+
const awsResult = yield (0, stdio_1.spinUntil)("Waiting for AWS resources to be provisioned and updating kubeconfig for EKS", (0, retry_1.retryWithSleep)(() => __awaiter(void 0, void 0, void 0, function* () { return yield (0, util_1.exec)("aws", updateKubeconfigArgs, { check: true }); }), () => true, 8, 2500));
|
|
90
93
|
(0, stdio_1.print2)(awsResult.stdout);
|
|
91
94
|
}
|
|
92
95
|
catch (error) {
|
|
@@ -106,8 +109,8 @@ const kubeconfigAction = (args) => __awaiter(void 0, void 0, void 0, function* (
|
|
|
106
109
|
}
|
|
107
110
|
(0, stdio_1.print2)("Access granted and kubectl configured successfully. Re-run this command to refresh access if credentials expire.");
|
|
108
111
|
if (process.env.AWS_ACCESS_KEY_ID) {
|
|
109
|
-
(0, stdio_1.print2)(`${
|
|
110
|
-
`To avoid issues, unset with \`unset AWS_ACCESS_KEY_ID\`.${
|
|
112
|
+
(0, stdio_1.print2)(`${ansi_1.AnsiSgr.Yellow}Warning: AWS credentials were detected in your environment, which may cause kubectl errors. ` +
|
|
113
|
+
`To avoid issues, unset with \`unset AWS_ACCESS_KEY_ID\`.${ansi_1.AnsiSgr.Reset}`);
|
|
111
114
|
}
|
|
112
115
|
});
|
|
113
116
|
/**
|
|
@@ -173,17 +176,10 @@ const validateResourceArg = (resource) => {
|
|
|
173
176
|
const extractClusterNameAndRegion = (clusterArn) => {
|
|
174
177
|
const INVALID_ARN_MSG = `Invalid EKS cluster ARN: ${clusterArn}`;
|
|
175
178
|
// Example EKS cluster ARN: arn:aws:eks:us-west-2:123456789012:cluster/my-testing-cluster
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const clusterRegion = parts[3];
|
|
181
|
-
const resource = parts[5].split("/");
|
|
182
|
-
if (resource[0] !== "cluster") {
|
|
183
|
-
throw INVALID_ARN_MSG;
|
|
184
|
-
}
|
|
185
|
-
const clusterName = resource[1];
|
|
186
|
-
if (!clusterName) {
|
|
179
|
+
const arn = (0, utils_1.parseArn)(clusterArn);
|
|
180
|
+
const { region: clusterRegion, resource: resourceStr } = arn;
|
|
181
|
+
const [resourceType, clusterName] = resourceStr.split("/");
|
|
182
|
+
if (resourceType !== "cluster" || !clusterName || !clusterRegion) {
|
|
187
183
|
throw INVALID_ARN_MSG;
|
|
188
184
|
}
|
|
189
185
|
return { clusterRegion, clusterName };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubeconfig.js","sourceRoot":"","sources":["../../src/commands/kubeconfig.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,2CAAiD;AACjD,0CAA+C;AAC/C,oDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"kubeconfig.js","sourceRoot":"","sources":["../../src/commands/kubeconfig.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -66,6 +66,7 @@ const login = (args, options) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
66
66
|
if (!loginFn)
|
|
67
67
|
throw "Unsupported login for your organization";
|
|
68
68
|
const tokenResponse = yield loginFn(orgWithSlug);
|
|
69
|
+
yield clearIdentityCache();
|
|
69
70
|
yield writeIdentity(orgWithSlug, tokenResponse);
|
|
70
71
|
// validate auth
|
|
71
72
|
if (!(options === null || options === void 0 ? void 0 : options.skipAuthenticate))
|
|
@@ -85,6 +86,16 @@ const writeIdentity = (org, credential) => __awaiter(void 0, void 0, void 0, fun
|
|
|
85
86
|
mode: "600",
|
|
86
87
|
});
|
|
87
88
|
});
|
|
89
|
+
const clearIdentityCache = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
+
try {
|
|
91
|
+
// check to see if the directory exists before trying to remove it
|
|
92
|
+
yield fs.access(auth_1.IDENTITY_CACHE_PATH);
|
|
93
|
+
yield fs.rm(auth_1.IDENTITY_CACHE_PATH, { recursive: true });
|
|
94
|
+
}
|
|
95
|
+
catch (_a) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
88
99
|
const loginCommand = (yargs) => yargs.command("login <org>", "Log in to p0 using a web browser", (yargs) => yargs.positional("org", {
|
|
89
100
|
demandOption: true,
|
|
90
101
|
type: "string",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/ls.js
CHANGED
|
@@ -23,6 +23,7 @@ This file is part of @p0security/cli
|
|
|
23
23
|
|
|
24
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
25
|
**/
|
|
26
|
+
const ansi_1 = require("../drivers/ansi");
|
|
26
27
|
const api_1 = require("../drivers/api");
|
|
27
28
|
const auth_1 = require("../drivers/auth");
|
|
28
29
|
const firestore_1 = require("../drivers/firestore");
|
|
@@ -41,10 +42,7 @@ const lsCommand = (yargs) => yargs.command("ls [arguments..]", "List request-com
|
|
|
41
42
|
exports.lsCommand = lsCommand;
|
|
42
43
|
const ls = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
44
|
const authn = yield (0, auth_1.authenticate)();
|
|
44
|
-
const data = yield (0, api_1.fetchCommand)(authn, args, [
|
|
45
|
-
"ls",
|
|
46
|
-
...args.arguments,
|
|
47
|
-
]);
|
|
45
|
+
const data = yield (0, stdio_1.spinUntil)("Listing accessible resources", (0, api_1.fetchCommand)(authn, args, ["ls", ...args.arguments]));
|
|
48
46
|
const allArguments = [...args._, ...args.arguments];
|
|
49
47
|
if (data && "ok" in data && data.ok) {
|
|
50
48
|
const label = (0, pluralize_1.default)(data.arg);
|
|
@@ -71,8 +69,8 @@ const ls = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
71
69
|
(0, stdio_1.print1)(`${prefix}${isSameValue
|
|
72
70
|
? item.key
|
|
73
71
|
: maxLength > 30
|
|
74
|
-
? `${item.key}\n ${
|
|
75
|
-
: `${item.key.padEnd(maxLength)}${
|
|
72
|
+
? `${item.key}\n ${ansi_1.AnsiSgr.Dim}${tagPart}${ansi_1.AnsiSgr.Reset}`
|
|
73
|
+
: `${item.key.padEnd(maxLength)}${ansi_1.AnsiSgr.Dim} - ${tagPart}${ansi_1.AnsiSgr.Reset}`}`);
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
76
|
else {
|
package/dist/commands/ls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,wCAA8C;AAC9C,0CAA+C;AAC/C,oDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,10 +84,10 @@ const waitForRequest = (tenantId, requestId, logMessage) => __awaiter(void 0, vo
|
|
|
84
84
|
const request = (command) => (args, authn, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
85
|
const resolvedAuthn = authn !== null && authn !== void 0 ? authn : (yield (0, auth_1.authenticate)());
|
|
86
86
|
const { userCredential } = resolvedAuthn;
|
|
87
|
-
const data = yield (0, api_1.fetchCommand)(resolvedAuthn, args, [
|
|
87
|
+
const data = yield (0, stdio_1.spinUntil)("Requesting access", (0, api_1.fetchCommand)(resolvedAuthn, args, [
|
|
88
88
|
command,
|
|
89
89
|
...args.arguments,
|
|
90
|
-
]);
|
|
90
|
+
]));
|
|
91
91
|
if (data && "ok" in data && "message" in data && data.ok) {
|
|
92
92
|
const logMessage = !(options === null || options === void 0 ? void 0 : options.message) ||
|
|
93
93
|
(options === null || options === void 0 ? void 0 : options.message) === "all" ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/shared/request.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,2CAAiD;AACjD,6CAAkD;AAClD,uDAA8C;AAC9C,+
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/commands/shared/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Copyright © 2024-present P0 Security
|
|
2
|
+
|
|
3
|
+
This file is part of @p0security/cli
|
|
4
|
+
|
|
5
|
+
@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.
|
|
6
|
+
|
|
7
|
+
@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.
|
|
8
|
+
|
|
9
|
+
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
10
|
+
**/
|
|
11
|
+
/// <reference types="jest" />
|
|
12
|
+
export declare const print1: jest.Mock<any, any, any>;
|
|
13
|
+
export declare const print2: jest.Mock<any, any, any>;
|
|
14
|
+
export declare const spinUntil: jest.Mock<Promise<unknown>, [_message: string, promise: Promise<unknown>], any>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Copyright © 2024-present P0 Security
|
|
3
|
+
|
|
4
|
+
This file is part of @p0security/cli
|
|
5
|
+
|
|
6
|
+
@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.
|
|
7
|
+
|
|
8
|
+
@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.
|
|
9
|
+
|
|
10
|
+
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
11
|
+
**/
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.spinUntil = exports.print2 = exports.print1 = void 0;
|
|
23
|
+
exports.print1 = jest.fn();
|
|
24
|
+
exports.print2 = jest.fn();
|
|
25
|
+
exports.spinUntil = jest.fn((_message, promise) => __awaiter(void 0, void 0, void 0, function* () { return yield promise; }));
|
|
26
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../../src/drivers/__mocks__/stdio.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;AAEU,QAAA,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACnB,QAAA,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEnB,QAAA,SAAS,GAAG,IAAI,CAAC,EAAE,CAC9B,CAAU,QAAgB,EAAE,OAAmB,EAAE,EAAE,kDAAC,OAAA,MAAM,OAAO,CAAA,GAAA,CAClE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AnsiSgr = exports.Ansi = 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 lodash_1 = require("lodash");
|
|
15
|
+
const AnsiCodes = {
|
|
16
|
+
Reset: "00",
|
|
17
|
+
Dim: "02",
|
|
18
|
+
Green: "32",
|
|
19
|
+
Yellow: "33",
|
|
20
|
+
};
|
|
21
|
+
const Ansi = (value) => `\u001b[${value}`;
|
|
22
|
+
exports.Ansi = Ansi;
|
|
23
|
+
/** Creates an ANSI Select Graphic Rendition code */
|
|
24
|
+
exports.AnsiSgr = (0, lodash_1.mapValues)(AnsiCodes, (v) => (0, exports.Ansi)(v + "m"));
|
|
25
|
+
//# sourceMappingURL=ansi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.js","sourceRoot":"","sources":["../../src/drivers/ansi.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,mCAAmC;AAEnC,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;CACJ,CAAC;AAEJ,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC;AAA5C,QAAA,IAAI,QAAwC;AAEzD,oDAAoD;AACvC,QAAA,OAAO,GAAG,IAAA,kBAAS,EAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC"}
|
package/dist/drivers/auth.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Authn, Identity } from "../types/identity";
|
|
2
2
|
export declare const IDENTITY_FILE_PATH: string;
|
|
3
|
+
export declare const IDENTITY_CACHE_PATH: string;
|
|
3
4
|
export declare const cached: <T>(name: string, loader: () => Promise<T>, options: {
|
|
4
5
|
duration: number;
|
|
5
6
|
}, hasExpired?: ((data: T) => boolean) | undefined) => Promise<T>;
|
package/dist/drivers/auth.js
CHANGED
|
@@ -32,7 +32,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.authenticate = exports.loadCredentials = exports.cached = exports.IDENTITY_FILE_PATH = void 0;
|
|
35
|
+
exports.authenticate = exports.loadCredentials = exports.cached = exports.IDENTITY_CACHE_PATH = exports.IDENTITY_FILE_PATH = void 0;
|
|
36
36
|
/** Copyright © 2024-present P0 Security
|
|
37
37
|
|
|
38
38
|
This file is part of @p0security/cli
|
|
@@ -51,13 +51,13 @@ const auth_1 = require("firebase/auth");
|
|
|
51
51
|
const fs = __importStar(require("fs/promises"));
|
|
52
52
|
const path = __importStar(require("path"));
|
|
53
53
|
exports.IDENTITY_FILE_PATH = path.join(util_1.P0_PATH, "identity.json");
|
|
54
|
+
exports.IDENTITY_CACHE_PATH = path.join(path.dirname(exports.IDENTITY_FILE_PATH), "cache");
|
|
54
55
|
const cached = (name, loader, options, hasExpired) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
56
|
var _a;
|
|
56
|
-
const cachePath = path.join(path.dirname(exports.IDENTITY_FILE_PATH), "cache");
|
|
57
57
|
// Following lines sanitize input
|
|
58
58
|
// nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal
|
|
59
|
-
const loc = path.resolve(path.join(
|
|
60
|
-
if (!loc.startsWith(
|
|
59
|
+
const loc = path.resolve(path.join(exports.IDENTITY_CACHE_PATH, `${name}.json`));
|
|
60
|
+
if (!loc.startsWith(exports.IDENTITY_CACHE_PATH)) {
|
|
61
61
|
throw new Error("Illegal path traversal");
|
|
62
62
|
}
|
|
63
63
|
const loadCache = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -109,6 +109,7 @@ const loadCredentials = (options) => __awaiter(void 0, void 0, void 0, function*
|
|
|
109
109
|
});
|
|
110
110
|
exports.loadCredentials = loadCredentials;
|
|
111
111
|
const authenticate = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
112
|
+
var _b;
|
|
112
113
|
const identity = yield (0, exports.loadCredentials)(options);
|
|
113
114
|
const { credential } = identity;
|
|
114
115
|
// TODO: Move to map lookup
|
|
@@ -121,6 +122,9 @@ const authenticate = (options) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
121
122
|
});
|
|
122
123
|
firestore_1.auth.tenantId = identity.org.tenantId;
|
|
123
124
|
const userCredential = yield (0, auth_1.signInWithCredential)(firestore_1.auth, firebaseCredential);
|
|
125
|
+
if (!((_b = userCredential === null || userCredential === void 0 ? void 0 : userCredential.user) === null || _b === void 0 ? void 0 : _b.email)) {
|
|
126
|
+
throw "Can not sign in: this user has previously signed in with a different identity provider.\nPlease contact support@p0.dev to enable this user.";
|
|
127
|
+
}
|
|
124
128
|
return { userCredential, identity };
|
|
125
129
|
});
|
|
126
130
|
exports.authenticate = authenticate;
|
package/dist/drivers/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/drivers/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,6CAA0C;AAE1C,kCAAkC;AAClC,2CAAmC;AACnC,mCAAiC;AACjC,wCAIuB;AACvB,gDAAkC;AAClC,2CAA6B;AAEhB,QAAA,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAO,EAAE,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/drivers/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/drivers/stdio.d.ts
CHANGED
|
@@ -19,8 +19,9 @@ export declare function print1(message: any): void;
|
|
|
19
19
|
* In general this should not be used for machine-consumed text.
|
|
20
20
|
*/
|
|
21
21
|
export declare function print2(message: any): void;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
/** Resets the terminal cursor to the beginning of the line */
|
|
23
|
+
export declare function reset2(): void;
|
|
24
|
+
/** Clears the current terminal line */
|
|
25
|
+
export declare function clear2(): void;
|
|
26
|
+
/** Prints a Unicode spinner until a promise resolves */
|
|
27
|
+
export declare const spinUntil: <T>(message: string, promise: Promise<T>) => Promise<T>;
|