@p0security/cli 0.20.6 → 0.21.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/login.js +6 -6
- package/build/dist/commands/login.js.map +1 -1
- package/build/dist/opentelemetry/buffered-exporter.js +29 -4
- package/build/dist/opentelemetry/buffered-exporter.js.map +1 -1
- package/build/dist/plugins/azure/login.js +8 -7
- package/build/dist/plugins/azure/login.js.map +1 -1
- package/build/dist/plugins/azure/ssh.js +8 -1
- package/build/dist/plugins/azure/ssh.js.map +1 -1
- package/build/dist/plugins/azure/tunnel.js +60 -26
- package/build/dist/plugins/azure/tunnel.js.map +1 -1
- package/build/dist/plugins/google/login.js +9 -5
- package/build/dist/plugins/google/login.js.map +1 -1
- package/build/dist/plugins/oidc/login.js +8 -7
- package/build/dist/plugins/oidc/login.js.map +1 -1
- package/build/dist/plugins/self-hosted/ssh.js +5 -1
- package/build/dist/plugins/self-hosted/ssh.js.map +1 -1
- package/build/dist/util.d.ts +11 -0
- package/build/dist/util.js +52 -1
- package/build/dist/util.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -64,8 +64,6 @@ const login = (args, options) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
64
64
|
if (identity && loggedIn) {
|
|
65
65
|
// If no org is provided, and the user is logged in, use the one from the identity
|
|
66
66
|
orgSlug = identity.org.slug;
|
|
67
|
-
(0, stdio_1.print2)(`You are currently logged in to the ${orgSlug} organization.`);
|
|
68
|
-
(0, stdio_1.print2)(`The current session expires in ${formatTimeLeft(tokenTimeRemaining)}.`);
|
|
69
67
|
}
|
|
70
68
|
else {
|
|
71
69
|
throw "The organization ID is required. Please provide it as an argument or set the P0_ORG environment variable.";
|
|
@@ -77,10 +75,6 @@ const login = (args, options) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
77
75
|
// Force login if user is switching organizations or if --refresh argument is provided
|
|
78
76
|
loggedIn = false;
|
|
79
77
|
}
|
|
80
|
-
else {
|
|
81
|
-
(0, stdio_1.print2)(`You are already logged in to the ${orgSlug} organization.`);
|
|
82
|
-
(0, stdio_1.print2)(`The current session expires in ${formatTimeLeft(tokenTimeRemaining)}.`);
|
|
83
|
-
}
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
80
|
if (options === null || options === void 0 ? void 0 : options.debug) {
|
|
@@ -106,6 +100,12 @@ const login = (args, options) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
106
100
|
if (!loggedIn) {
|
|
107
101
|
(0, stdio_1.print2)(`You are now logged in to the ${orgSlug} organization, and can use the p0 CLI.`);
|
|
108
102
|
}
|
|
103
|
+
else {
|
|
104
|
+
(0, stdio_1.print2)(`You are currently logged in to the ${orgSlug} organization.`);
|
|
105
|
+
}
|
|
106
|
+
if (tokenTimeRemaining > 0) {
|
|
107
|
+
(0, stdio_1.print2)(`The current session expires in ${formatTimeLeft(tokenTimeRemaining)}.`);
|
|
108
|
+
}
|
|
109
109
|
});
|
|
110
110
|
exports.login = login;
|
|
111
111
|
const loginCommand = (yargs) => yargs.command("login [org]", "Log in using a web browser", (yargs) => yargs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/login.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,wCAAkD;AAClD,0CAMyB;AACzB,8CAA+C;AAC/C,oDAA0D;AAC1D,wCAA4C;AAC5C,4CAA0C;AAC1C,4CAAkD;AAKlD,MAAM,gCAAgC,GAAG,CAAC,GAAG,EAAE,CAAC;AAEhD,MAAM,aAAa,GAAG,CAAO,WAAoB,EAAE,KAAe,EAAE,EAAE;;IACpE,MAAM,MAAM,GACV,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,mCACxB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAErD,IAAI,KAAK,EAAE;QACT,IAAA,cAAM,EAAC,uBAAuB,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,SAAS,EAAE,CAAC,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,MAAM,IAAI,sBAAc,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,CAAC,OAAO;QAAE,MAAM,yCAAyC,CAAC;IAE9D,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjD,MAAM,IAAA,oBAAa,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kCAAkC;IACzF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,YAAY,GAAG,EAAE,CAAC;IAC5B,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;;;GAMG;AACI,MAAM,KAAK,GAAG,CACnB,IAAyC,EACzC,OAAyD,EACzD,EAAE;IACF,qDAAqD;IACrD,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAe,GAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEhE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,yBAAkB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,QAAQ,GAAG,kBAAkB,GAAG,gCAAgC,CAAC;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACxB,kFAAkF;YAClF,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,13 @@ class BufferedSpanExporter {
|
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
48
|
if (this.delegate) {
|
|
49
|
-
|
|
49
|
+
try {
|
|
50
|
+
this.delegate.export(spans, resultCallback);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// Silently ignore export errors - traces are best-effort telemetry
|
|
54
|
+
resultCallback({ code: core_1.ExportResultCode.FAILED });
|
|
55
|
+
}
|
|
50
56
|
}
|
|
51
57
|
else {
|
|
52
58
|
this.buffer.push(...spans);
|
|
@@ -57,7 +63,12 @@ class BufferedSpanExporter {
|
|
|
57
63
|
var _a, _b;
|
|
58
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
65
|
if (this.delegate) {
|
|
60
|
-
|
|
66
|
+
try {
|
|
67
|
+
yield ((_b = (_a = this.delegate).forceFlush) === null || _b === void 0 ? void 0 : _b.call(_a));
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Silently ignore flush errors
|
|
71
|
+
}
|
|
61
72
|
}
|
|
62
73
|
});
|
|
63
74
|
}
|
|
@@ -65,7 +76,12 @@ class BufferedSpanExporter {
|
|
|
65
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
66
77
|
this.isShutdown = true;
|
|
67
78
|
if (this.delegate) {
|
|
68
|
-
|
|
79
|
+
try {
|
|
80
|
+
yield this.delegate.shutdown();
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// Silently ignore shutdown errors
|
|
84
|
+
}
|
|
69
85
|
}
|
|
70
86
|
});
|
|
71
87
|
}
|
|
@@ -75,7 +91,16 @@ class BufferedSpanExporter {
|
|
|
75
91
|
this.delegate = exporter;
|
|
76
92
|
if (this.buffer.length > 0) {
|
|
77
93
|
const toFlush = this.buffer.splice(0);
|
|
78
|
-
|
|
94
|
+
try {
|
|
95
|
+
this.delegate.export(toFlush, (result) => {
|
|
96
|
+
if (result.code === core_1.ExportResultCode.FAILED) {
|
|
97
|
+
// Silently ignore export failures
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
// Silently ignore export errors
|
|
103
|
+
}
|
|
79
104
|
}
|
|
80
105
|
}
|
|
81
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffered-exporter.js","sourceRoot":"","sources":["../../../src/opentelemetry/buffered-exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,8CAAqE;AAGrE;;;;;;;;;;;;GAYG;AACH,MAAa,oBAAoB;IAAjC;QACU,WAAM,GAAmB,EAAE,CAAC;QAC5B,aAAQ,GAA6B,SAAS,CAAC;QAC/C,eAAU,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"buffered-exporter.js","sourceRoot":"","sources":["../../../src/opentelemetry/buffered-exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,8CAAqE;AAGrE;;;;;;;;;;;;GAYG;AACH,MAAa,oBAAoB;IAAjC;QACU,WAAM,GAAmB,EAAE,CAAC;QAC5B,aAAQ,GAA6B,SAAS,CAAC;QAC/C,eAAU,GAAG,KAAK,CAAC;IAgE7B,CAAC;IA9DC,MAAM,CACJ,KAAqB,EACrB,cAA8C;QAE9C,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO;SACR;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI;gBACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,mEAAmE;gBACnE,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;aACnD;SACF;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC3B,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;SACpD;IACH,CAAC;IAEK,UAAU;;;YACd,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI;oBACF,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,UAAU,kDAAI,CAAA,CAAC;iBACpC;gBAAC,OAAO,KAAK,EAAE;oBACd,+BAA+B;iBAChC;aACF;;KAEF;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI;oBACF,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;iBAChC;gBAAC,OAAO,KAAK,EAAE;oBACd,kCAAkC;iBACnC;aACF;QACH,CAAC;KAAA;IAED,oBAAoB,CAAC,QAAsB;QACzC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAE5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI;gBACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;oBACvC,IAAI,MAAM,CAAC,IAAI,KAAK,uBAAgB,CAAC,MAAM,EAAE;wBAC3C,kCAAkC;qBACnC;gBACH,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,gCAAgC;aACjC;SACF;IACH,CAAC;CACF;AAnED,oDAmEC"}
|
|
@@ -27,7 +27,7 @@ const oidc_1 = require("../../common/auth/oidc");
|
|
|
27
27
|
const server_1 = require("../../common/auth/server");
|
|
28
28
|
const fetch_1 = require("../../common/fetch");
|
|
29
29
|
const stdio_1 = require("../../drivers/stdio");
|
|
30
|
-
const
|
|
30
|
+
const util_1 = require("../../util");
|
|
31
31
|
const pkce_challenge_1 = __importDefault(require("pkce-challenge"));
|
|
32
32
|
const AZURE_SCOPE = "openid profile email offline_access";
|
|
33
33
|
const AZURE_REDIRECT_PORT = 52701;
|
|
@@ -49,14 +49,15 @@ const requestAuth = (org) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
49
49
|
state: "azure_login",
|
|
50
50
|
};
|
|
51
51
|
const url = `${baseUrl}?${(0, fetch_1.urlEncode)(authBody)}`;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
try {
|
|
53
|
+
yield (0, util_1.osSafeOpen)(url);
|
|
54
|
+
(0, stdio_1.print1)(`Please use the opened browser window to continue your P0 login.`);
|
|
55
|
+
}
|
|
56
|
+
catch (_a) {
|
|
57
|
+
(0, stdio_1.print1)(`Please visit the following URL to continue login:
|
|
57
58
|
|
|
58
59
|
${url}`);
|
|
59
|
-
}
|
|
60
|
+
}
|
|
60
61
|
return pkce;
|
|
61
62
|
});
|
|
62
63
|
const requestToken = (org, code, pkce) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/plugins/azure/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,iDAAsD;AACtD,qDAA8D;AAC9D,8CAAiE;AACjE,+CAA6C;AAG7C,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/plugins/azure/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,iDAAsD;AACtD,qDAA8D;AAC9D,8CAAiE;AACjE,+CAA6C;AAG7C,qCAAwC;AACxC,oEAA2C;AAE3C,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAC1D,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,kBAAkB,GAAG,oBAAoB,mBAAmB,EAAE,CAAC;AACrE,MAAM,WAAW,GAAG,GAAG,CAAC;AAOxB,MAAM,WAAW,GAAG,CAAO,GAAY,EAAE,EAAE;IACzC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;QACvB,MAAM,oDAAoD,CAAC;KAC5D;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAa,EAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,qCAAqC,GAAG,CAAC,cAAc,wBAAwB,CAAC;IAEhG,MAAM,QAAQ,GAAqB;QACjC,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,qBAAqB,EAAE,MAAM;QAC7B,YAAY,EAAE,kBAAkB;QAChC,aAAa,EAAE,MAAM;QACrB,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,aAAa;KACrB,CAAC;IAEF,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,IAAA,iBAAS,EAAC,QAAQ,CAAC,EAAE,CAAC;IAEhD,IAAI;QACF,MAAM,IAAA,iBAAU,EAAC,GAAG,CAAC,CAAC;QACtB,IAAA,cAAM,EAAC,iEAAiE,CAAC,CAAC;KAC3E;IAAC,WAAM;QACN,IAAA,cAAM,EAAC;;MAEL,GAAG,EAAE,CAAC,CAAC;KACV;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAA,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,GAAY,EACZ,IAAY,EACZ,IAAuD,EACvD,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;QACvB,MAAM,oDAAoD,CAAC;KAC5D;IAED,MAAM,QAAQ,GAAG,qCAAqC,GAAG,CAAC,cAAc,oBAAoB,CAAC;IAE7F,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,IAAI;QACJ,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,oBAAoB;QAChC,YAAY,EAAE,kBAAkB;KACjC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,OAAO,kCACF,mBAAY,KACf,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,kBAAkB,GAC3B;QACD,IAAI,EAAE,IAAA,iBAAS,EAAC,IAAI,CAAC;KACtB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAkB,CAAC;AAC/C,CAAC,CAAA,CAAC;AAEK,MAAM,UAAU,GAAG,CAAO,GAAY,EAA0B,EAAE;IACvE,OAAO,MAAM,IAAA,2BAAkB,EAC7B,GAAS,EAAE,kDAAC,OAAA,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA,GAAA,EAClC,CAAO,IAAI,EAAE,KAAK,EAAE,EAAE,kDAAC,OAAA,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,GAAA,EAChE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAC;AACJ,CAAC,CAAA,CAAC;AANW,QAAA,UAAU,cAMrB"}
|
|
@@ -24,6 +24,7 @@ This file is part of @p0security/cli
|
|
|
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
26
|
const ssh_1 = require("../../commands/shared/ssh");
|
|
27
|
+
const util_1 = require("../../util");
|
|
27
28
|
const shared_1 = require("../ssh/shared");
|
|
28
29
|
const auth_1 = require("./auth");
|
|
29
30
|
const install_1 = require("./install");
|
|
@@ -72,7 +73,13 @@ exports.azureSshProvider = {
|
|
|
72
73
|
}
|
|
73
74
|
return undefined;
|
|
74
75
|
},
|
|
75
|
-
proxyCommand: (_, port) =>
|
|
76
|
+
proxyCommand: (_, port) => {
|
|
77
|
+
const targetPort = port !== null && port !== void 0 ? port : "22";
|
|
78
|
+
// On Windows, use ncat (from nmap). On Unix/Mac, use nc.
|
|
79
|
+
// Both have the same command line syntax: command localhost port
|
|
80
|
+
const command = (0, util_1.getOperatingSystem)() === "win" ? "ncat" : "nc";
|
|
81
|
+
return [command, "localhost", targetPort];
|
|
82
|
+
},
|
|
76
83
|
reproCommands: (request, additionalData) => {
|
|
77
84
|
var _a;
|
|
78
85
|
const { command: azAccountClearExe, args: azAccountClearArgs } = (0, auth_1.azAccountClearCommand)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../../src/plugins/azure/ssh.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,mDAA0D;AAE1D,0CAA2D;AAC3D,iCAKgB;AAChB,uCAA4C;AAC5C,qCAKkB;AAClB,qCAAyE;AAMzE,0DAA6B;AAE7B,MAAM,2BAA2B,GAAG;IAClC;QACE,mEAAmE;QACnE,OAAO,EAAE,uCAAuC;KACjD;CACO,CAAC;AAEX,MAAM,yBAAyB,GAAG;IAChC;QACE,OAAO,EAAE,8BAA8B;KACxC;CACO,CAAC;AAEX,qFAAqF;AACrF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,yDAAyD;AACzD,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtC,QAAA,gBAAgB,GAIzB;IACF,+CAA+C;IAC/C,kBAAkB,EAAE,GAAS,EAAE;QAC7B,4CAA4C;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC,CAAA;IAED,aAAa,EAAE,GAAS,EAAE;QACxB,IAAI,CAAC,CAAC,MAAM,IAAA,yBAAe,GAAE,CAAC,EAAE;YAC9B,MAAM,uDAAuD,CAAC;SAC/D;IACH,CAAC,CAAA;IAED,YAAY,EAAE,iBAAiB;IAE/B,oBAAoB,EAAE,qDAAqD;IAE3E,wBAAwB;IACxB,oBAAoB,EAAE,SAAS;IAE/B,oBAAoB,EAAE,4BAA4B;IAElD,4BAA4B,EAAE,CAAC,OAAO,EAAE,EAAE;QACxC,IAAI,IAAA,mBAAa,EAAC,OAAO,CAAC,EAAE;YAC1B,uCACK,OAAO;gBACV,6GAA6G;gBAC7G,mEAAmE;gBACnE,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,CAAC,IAClB;SACH;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,YAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../../src/plugins/azure/ssh.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ const retry_1 = require("../../common/retry");
|
|
|
24
24
|
const stdio_1 = require("../../drivers/stdio");
|
|
25
25
|
const util_1 = require("../../util");
|
|
26
26
|
const auth_1 = require("./auth");
|
|
27
|
+
const node_child_process_1 = require("node:child_process");
|
|
27
28
|
const TUNNEL_READY_STRING = "Tunnel is ready";
|
|
28
29
|
// Ignore these debug messages from the tunnel process; they are far too noisy and spam the terminal with useless info
|
|
29
30
|
// anytime the SSH/SCP session has network activity.
|
|
@@ -67,11 +68,20 @@ const spawnBastionTunnelInBackground = (request, port, options) => {
|
|
|
67
68
|
const { command, args } = (0, exports.azBastionTunnelCommand)(request, port);
|
|
68
69
|
if (debug)
|
|
69
70
|
(0, stdio_1.print2)("Spawning Azure Bastion tunnel process...");
|
|
70
|
-
|
|
71
|
-
//
|
|
71
|
+
const isWindows = (0, util_1.getOperatingSystem)() === "win";
|
|
72
|
+
// Spawn the process:
|
|
73
|
+
// - On Unix: use detached mode so it's in its own process group for easy cleanup
|
|
74
|
+
// - On Windows: don't use detached mode as it doesn't work reliably with cmd.exe wrapper
|
|
75
|
+
// and process tree killing; instead rely on unref() and proper stdio handling
|
|
72
76
|
const child = (0, util_1.spawnWithCleanEnv)(command, args, {
|
|
73
|
-
detached:
|
|
77
|
+
detached: !isWindows,
|
|
78
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
79
|
+
windowsHide: true, // Prevent console window on Windows
|
|
74
80
|
});
|
|
81
|
+
// On Windows, unref immediately to prevent blocking, since we can't rely on detached mode
|
|
82
|
+
if (isWindows) {
|
|
83
|
+
child.unref();
|
|
84
|
+
}
|
|
75
85
|
child.on("exit", (code) => {
|
|
76
86
|
processExited = true;
|
|
77
87
|
if (code === 0) {
|
|
@@ -116,40 +126,64 @@ const spawnBastionTunnelInBackground = (request, port, options) => {
|
|
|
116
126
|
}
|
|
117
127
|
if (str.includes(TUNNEL_READY_STRING)) {
|
|
118
128
|
(0, stdio_1.print2)("Azure Bastion tunnel is ready.");
|
|
129
|
+
// On Unix, unref the child process so the parent can exit without waiting for it
|
|
130
|
+
// (On Windows, we already unref'd immediately after spawn)
|
|
131
|
+
if (!isWindows) {
|
|
132
|
+
child.unref();
|
|
133
|
+
}
|
|
119
134
|
resolve({
|
|
120
135
|
killTunnel: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
121
136
|
if (processSignalledToExit || processExited)
|
|
122
137
|
return;
|
|
123
138
|
processSignalledToExit = true;
|
|
124
139
|
if (child.pid) {
|
|
125
|
-
// Kill the process and all its descendents via killing the process group; this is only possible
|
|
126
|
-
// because we launched the process with `detached: true` above. This is necessary because `az` is
|
|
127
|
-
// actually a bash script that spawns a Python process, and we need to kill the Python process as well.
|
|
128
|
-
// SIGINT is equivalent to pressing Ctrl-C in the terminal; allows for the tunnel process to perform any
|
|
129
|
-
// necessary cleanup of its own before exiting. The negative PID is what indicates that we want to kill
|
|
130
|
-
// the whole process group.
|
|
131
140
|
try {
|
|
132
|
-
if (
|
|
133
|
-
|
|
141
|
+
if (isWindows) {
|
|
142
|
+
// On Windows, use taskkill to kill the process tree since negative PIDs don't work
|
|
143
|
+
// /F = force, /T = kill tree (all child processes), /PID = process ID
|
|
144
|
+
if (debug) {
|
|
145
|
+
(0, stdio_1.print2)(`Killing Azure Bastion tunnel process tree (${child.pid}) on Windows...`);
|
|
146
|
+
}
|
|
147
|
+
const killProcess = (0, node_child_process_1.spawn)("taskkill", [
|
|
148
|
+
"/F",
|
|
149
|
+
"/T",
|
|
150
|
+
"/PID",
|
|
151
|
+
child.pid.toString(),
|
|
152
|
+
]);
|
|
153
|
+
killProcess.on("exit", (code) => {
|
|
154
|
+
if (debug && code !== 0) {
|
|
155
|
+
(0, stdio_1.print2)(`taskkill exited with code ${code} (process may have already exited)`);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
134
158
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (
|
|
143
|
-
|
|
144
|
-
|
|
159
|
+
else {
|
|
160
|
+
// Kill the process and all its descendents via killing the process group; this is only possible
|
|
161
|
+
// because we launched the process with `detached: true` above. This is necessary because `az` is
|
|
162
|
+
// actually a bash script that spawns a Python process, and we need to kill the Python process as well.
|
|
163
|
+
// SIGINT is equivalent to pressing Ctrl-C in the terminal; allows for the tunnel process to perform any
|
|
164
|
+
// necessary cleanup of its own before exiting. The negative PID is what indicates that we want to kill
|
|
165
|
+
// the whole process group.
|
|
166
|
+
if (debug) {
|
|
167
|
+
(0, stdio_1.print2)(`Sending SIGINT to Azure Bastion tunnel process (${child.pid})...`);
|
|
168
|
+
}
|
|
169
|
+
process.kill(-child.pid, "SIGINT");
|
|
170
|
+
// Give the tunnel a chance to quit gracefully after the SIGINT
|
|
171
|
+
const SPIN_WAIT_MS = 250;
|
|
172
|
+
for (let spins = 0; spins < 20; spins++) {
|
|
173
|
+
yield (0, util_1.sleep)(SPIN_WAIT_MS);
|
|
174
|
+
if (processExited) {
|
|
175
|
+
if (debug) {
|
|
176
|
+
(0, stdio_1.print2)(`Azure Bastion tunnel process exited after SIGINT after ${spins * SPIN_WAIT_MS} ms.`);
|
|
177
|
+
}
|
|
178
|
+
return;
|
|
145
179
|
}
|
|
146
|
-
return;
|
|
147
180
|
}
|
|
181
|
+
// If still not exited, force kill
|
|
182
|
+
if (debug) {
|
|
183
|
+
(0, stdio_1.print2)(`Azure Bastion tunnel process (${child.pid}) not responding, sending SIGKILL...`);
|
|
184
|
+
}
|
|
185
|
+
process.kill(-child.pid, "SIGKILL");
|
|
148
186
|
}
|
|
149
|
-
if (debug) {
|
|
150
|
-
(0, stdio_1.print2)(`Azure Bastion tunnel process (${child.pid}) not responding, sending SIGKILL...`);
|
|
151
|
-
}
|
|
152
|
-
process.kill(-child.pid, "SIGKILL");
|
|
153
187
|
}
|
|
154
188
|
catch (error) {
|
|
155
189
|
// Ignore the error and move on; we might as well just exit without waiting since we can't control
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../../../src/plugins/azure/tunnel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,8CAAoD;AACpD,+CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../../../src/plugins/azure/tunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ const server_1 = require("../../common/auth/server");
|
|
|
28
28
|
const fetch_1 = require("../../common/fetch");
|
|
29
29
|
const config_1 = require("../../drivers/config");
|
|
30
30
|
const stdio_1 = require("../../drivers/stdio");
|
|
31
|
-
const
|
|
31
|
+
const util_1 = require("../../util");
|
|
32
32
|
const pkce_challenge_1 = __importDefault(require("pkce-challenge"));
|
|
33
33
|
const GOOGLE_OIDC_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
34
34
|
const GOOGLE_OIDC_EXCHANGE_URL = "https://oauth2.googleapis.com/token";
|
|
@@ -47,11 +47,15 @@ const requestAuth = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
47
47
|
scope: "openid email",
|
|
48
48
|
};
|
|
49
49
|
const url = `${GOOGLE_OIDC_URL}?${(0, fetch_1.urlEncode)(authBody)}`;
|
|
50
|
-
|
|
51
|
-
(0,
|
|
50
|
+
try {
|
|
51
|
+
yield (0, util_1.osSafeOpen)(url);
|
|
52
|
+
(0, stdio_1.print1)(`Please use the opened browser window to continue your P0 login.`);
|
|
53
|
+
}
|
|
54
|
+
catch (_a) {
|
|
55
|
+
(0, stdio_1.print1)(`Please visit the following URL to continue login:
|
|
52
56
|
|
|
53
|
-
${url}`);
|
|
54
|
-
}
|
|
57
|
+
${url}`);
|
|
58
|
+
}
|
|
55
59
|
return pkce;
|
|
56
60
|
});
|
|
57
61
|
const requestToken = (code, pkce) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/plugins/google/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,iDAAsD;AACtD,qDAA8D;AAC9D,8CAAiE;AACjE,iDAA6D;AAC7D,+CAA6C;AAE7C,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/plugins/google/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,iDAAsD;AACtD,qDAA8D;AAC9D,8CAAiE;AACjE,iDAA6D;AAC7D,+CAA6C;AAE7C,qCAAwC;AACxC,oEAA2C;AAO3C,MAAM,eAAe,GAAG,8CAA8C,CAAC;AACvE,MAAM,wBAAwB,GAAG,qCAAqC,CAAC;AACvE,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,MAAM,wBAAwB,GAAG,oBAAoB,yBAAyB,EAAE,CAAC;AACjF,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,WAAW,GAAG,GAAS,EAAE;IAC7B,MAAM,YAAY,GAAG,IAAA,8BAAqB,GAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAa,EAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAqB;QACjC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;QACvC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,qBAAqB,EAAE,MAAM;QAC7B,YAAY,EAAE,wBAAwB;QACtC,aAAa,EAAE,MAAM;QACrB,KAAK,EAAE,cAAc;KACtB,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,eAAe,IAAI,IAAA,iBAAS,EAAC,QAAQ,CAAC,EAAE,CAAC;IACxD,IAAI;QACF,MAAM,IAAA,iBAAU,EAAC,GAAG,CAAC,CAAC;QACtB,IAAA,cAAM,EAAC,iEAAiE,CAAC,CAAC;KAC3E;IAAC,WAAM;QACN,IAAA,cAAM,EAAC;;MAEL,GAAG,EAAE,CAAC,CAAC;KACV;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAA,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,IAAY,EACZ,IAAuD,EACvD,EAAE;IACF,MAAM,YAAY,GAAG,IAAA,8BAAqB,GAAE,CAAC;IAC7C,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;QACvC,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,yBAAyB;QAC5D,IAAI;QACJ,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,oBAAoB;QAChC,YAAY,EAAE,wBAAwB;KACvC,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wBAAwB,EAAE;QACrD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,mBAAY;QACrB,IAAI,EAAE,IAAA,iBAAS,EAAC,IAAI,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAkB,CAAC;AAC/C,CAAC,CAAA,CAAC;AAEK,MAAM,WAAW,GAAG,GAAS,EAAE;IACpC,OAAO,MAAM,IAAA,2BAAkB,EAC7B,GAAS,EAAE,kDAAC,OAAA,MAAM,WAAW,EAAE,CAAA,GAAA,EAC/B,CAAO,IAAI,EAAE,KAAK,EAAE,EAAE,kDAAC,OAAA,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,GAAA,EAC3D,EAAE,IAAI,EAAE,yBAAyB,EAAE,CACpC,CAAC;AACJ,CAAC,CAAA,CAAC;AANW,QAAA,WAAW,eAMtB"}
|
|
@@ -8,9 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.oidcLogin = exports.oidcLoginSteps = exports.waitForActivation = exports.fetchOidcToken = exports.authorize = exports.validateProviderDomain = exports.DEVICE_GRANT_TYPE = void 0;
|
|
16
13
|
/** Copyright © 2024-present P0 Security
|
|
@@ -27,7 +24,6 @@ const oidc_1 = require("../../common/auth/oidc");
|
|
|
27
24
|
const fetch_1 = require("../../common/fetch");
|
|
28
25
|
const stdio_1 = require("../../drivers/stdio");
|
|
29
26
|
const util_1 = require("../../util");
|
|
30
|
-
const open_1 = __importDefault(require("open"));
|
|
31
27
|
exports.DEVICE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
|
|
32
28
|
const validateProviderDomain = (org) => {
|
|
33
29
|
if (!org.providerDomain)
|
|
@@ -159,15 +155,20 @@ const oidcLogin = (steps) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
159
155
|
const { providerType, buildAuthorizeRequest, buildTokenRequest, processAuthzExpiry, processAuthzResponse, validateResponse, } = steps;
|
|
160
156
|
const deviceAuthorizationResponse = yield (0, exports.authorize)(buildAuthorizeRequest(), validateResponse);
|
|
161
157
|
const { user_code, verification_uri_complete } = processAuthzResponse(deviceAuthorizationResponse);
|
|
162
|
-
|
|
163
|
-
|
|
158
|
+
try {
|
|
159
|
+
yield (0, util_1.osSafeOpen)(verification_uri_complete);
|
|
160
|
+
(0, stdio_1.print1)(`Please use the opened browser window to continue your P0 login.`);
|
|
161
|
+
}
|
|
162
|
+
catch (_a) {
|
|
163
|
+
(0, stdio_1.print1)(`Could not open browser automatically. Please visit the following URL in your browser: ${verification_uri_complete}`);
|
|
164
|
+
}
|
|
165
|
+
(0, stdio_1.print2)(`
|
|
164
166
|
When prompted, confirm that ${oidcProviderLabels(providerType)} displays this code:
|
|
165
167
|
|
|
166
168
|
${user_code}
|
|
167
169
|
|
|
168
170
|
Waiting for authorization...
|
|
169
171
|
`);
|
|
170
|
-
void (0, open_1.default)(verification_uri_complete);
|
|
171
172
|
return yield (0, exports.waitForActivation)(deviceAuthorizationResponse, processAuthzExpiry, buildTokenRequest(deviceAuthorizationResponse));
|
|
172
173
|
});
|
|
173
174
|
exports.oidcLogin = oidcLogin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/plugins/oidc/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/plugins/oidc/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,7 +106,11 @@ exports.selfHostedSshProvider = {
|
|
|
106
106
|
};
|
|
107
107
|
}),
|
|
108
108
|
proxyCommand: (request, port) => {
|
|
109
|
-
|
|
109
|
+
const targetPort = port !== null && port !== void 0 ? port : "22";
|
|
110
|
+
// On Windows, use ncat (from nmap). On Unix/Mac, use nc.
|
|
111
|
+
// Both have the same command line syntax: command localhost port
|
|
112
|
+
const command = (0, util_1.getOperatingSystem)() === "win" ? "ncat" : "nc";
|
|
113
|
+
return [command, request.id, targetPort];
|
|
110
114
|
},
|
|
111
115
|
reproCommands: () => undefined,
|
|
112
116
|
requestToSsh: (request) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../../src/plugins/self-hosted/ssh.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,mDAA0D;AAC1D,4CAAkD;AAElD,
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../../src/plugins/self-hosted/ssh.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,mDAA0D;AAC1D,4CAAkD;AAElD,qCAA4D;AAC5D,0CAA2D;AAC3D,qCAAyD;AAEzD,gDAAkC;AAClC,0DAA6B;AAE7B,0DAA0D;AAC7C,QAAA,yBAAyB,GAAG,gCAAgC,CAAC;AAE1E,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD,MAAM,2BAA2B,GAAG;IAClC,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC9C;QACE,mEAAmE;QACnE,OAAO,EAAE,uCAAuC;KACjD;CACO,CAAC;AAEE,QAAA,qBAAqB,GAI9B;IACF,kBAAkB,EAAE,GAAS,EAAE,kDAAC,OAAA,SAAS,CAAA,GAAA;IACzC,aAAa,EAAE,GAAS,EAAE,kDAAE,CAAC,CAAA;IAE7B,YAAY,EAAE,aAAa;IAE3B,IAAI,oBAAoB;QACtB,OAAO,sBAAsB,IAAA,iBAAU,GAAE,SAAS,CAAC;IACrD,CAAC;IAED,oBAAoB,EAAE,4BAA4B;IAElD,4BAA4B,EAAE,CAAC,OAAO,EAAE,EAAE;QACxC,IAAI,IAAA,mBAAa,EAAC,OAAO,CAAC,EAAE;YAC1B,uCACK,OAAO;gBACV,6GAA6G;gBAC7G,6HAA6H;gBAC7H,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,IAAI,CAAC,IACjB;SACH;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,YAAY,EAAE,CAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC/C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,mCAA0B,GAAE,CAAC;QAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,oBAAa,GAAE,CAAC;QAE5C,MAAM,iBAAiB,GAAG,MAAM,IAAA,sCAA6B,EAAC,KAAK,kCAC9D,OAAO,KACV,SAAS,IACT,CAAC;QAEH,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAyB,CAAC,CAAC;QACtE,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QACvD,OAAO;YACL,eAAe;SAChB,CAAC;IACJ,CAAC,CAAA;IAED,KAAK,EAAE,CAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACxC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,GACjD,MAAM,IAAA,mCAA0B,GAAE,CAAC;QACrC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,oBAAa,GAAE,CAAC;QAE5C,MAAM,iBAAiB,GAAG,MAAM,IAAA,sCAA6B,EAAC,KAAK,EAAE;YACnE,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS;SACV,CAAC,CAAC;QACH,MAAM,qBAAqB,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAyB,CAAC,CAAC;QAC5E,MAAM,EAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;QAE7D,OAAO;YACL,UAAU,EAAE,CAAC,mBAAmB,qBAAqB,EAAE,CAAC;YACxD,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;IACJ,CAAC,CAAA;IAED,YAAY,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC;QAChC,yDAAyD;QACzD,iEAAiE;QACjE,MAAM,OAAO,GAAG,IAAA,yBAAkB,GAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;IAE9B,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;QACxB,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ;YACxC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa;YAC9C,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;IAED,2BAA2B;IAE3B,YAAY,EAAE,CAAO,OAAO,EAAE,EAAE,kDAAC,OAAA,iCAAM,OAAO,KAAE,YAAY,EAAE,SAAS,IAAG,CAAA,GAAA;CAC3E,CAAC"}
|
package/build/dist/util.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
/// <reference types="node" />
|
|
11
11
|
import { type ChildProcess, type ChildProcessByStdio, type ChildProcessWithoutNullStreams, type SpawnOptions, type SpawnOptionsWithoutStdio, type SpawnOptionsWithStdioTuple, type StdioNull, type StdioPipe } from "node:child_process";
|
|
12
12
|
import type { Readable } from "node:stream";
|
|
13
|
+
import open from "open";
|
|
13
14
|
/**
|
|
14
15
|
* Creates a clean environment for child processes by removing FIPS OpenSSL configuration
|
|
15
16
|
* variables that could interfere with external tools not designed for our custom setup.
|
|
@@ -85,4 +86,14 @@ export declare const osSafeCommand: (command: string, args: string[]) => {
|
|
|
85
86
|
command: string;
|
|
86
87
|
args: string[];
|
|
87
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* Wraps the 'open' function to provide a timeout and error handling. This is
|
|
91
|
+
* necessary because on some OSes, 'open' may fail depending on whether the machine
|
|
92
|
+
* has the required dependencies installed (e.g., 'xdg-open' on Linux). Without
|
|
93
|
+
* proper error handling, the promise may hang indefinitely or throw an unhandled exception,
|
|
94
|
+
* which would crash the application entirely.
|
|
95
|
+
* @param target the URL to open
|
|
96
|
+
* @param options options to be passed directly to the 'open' function
|
|
97
|
+
*/
|
|
98
|
+
export declare const osSafeOpen: (target: string, options?: open.Options) => Promise<void>;
|
|
88
99
|
export {};
|
package/build/dist/util.js
CHANGED
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.osSafeCommand = exports.getOperatingSystem = exports.delay = exports.ciEquals = exports.unexpectedValueError = exports.assertNever = exports.conditionalAbortBeforeThrow = exports.throwAssertNever = exports.exec = exports.timeout = exports.sleep = exports.P0_PATH = exports.getAppName = exports.getAppPath = exports.spawnWithCleanEnv = exports.createCleanChildEnv = void 0;
|
|
15
|
+
exports.osSafeOpen = exports.osSafeCommand = exports.getOperatingSystem = exports.delay = exports.ciEquals = exports.unexpectedValueError = exports.assertNever = exports.conditionalAbortBeforeThrow = exports.throwAssertNever = exports.exec = exports.timeout = exports.sleep = exports.P0_PATH = exports.getAppName = exports.getAppPath = exports.spawnWithCleanEnv = exports.createCleanChildEnv = void 0;
|
|
16
16
|
/** Copyright © 2024-present P0 Security
|
|
17
17
|
|
|
18
18
|
This file is part of @p0security/cli
|
|
@@ -28,6 +28,7 @@ const node_child_process_1 = require("node:child_process");
|
|
|
28
28
|
const node_os_1 = __importDefault(require("node:os"));
|
|
29
29
|
const node_path_1 = __importDefault(require("node:path"));
|
|
30
30
|
const node_process_1 = __importDefault(require("node:process"));
|
|
31
|
+
const open_1 = __importDefault(require("open"));
|
|
31
32
|
const typescript_1 = require("typescript");
|
|
32
33
|
/**
|
|
33
34
|
* Creates a clean environment for child processes by removing FIPS OpenSSL configuration
|
|
@@ -185,4 +186,54 @@ const osSafeCommand = (command, args) => {
|
|
|
185
186
|
: { command, args };
|
|
186
187
|
};
|
|
187
188
|
exports.osSafeCommand = osSafeCommand;
|
|
189
|
+
const OPEN_TIMEOUT_MS = 5000;
|
|
190
|
+
/**
|
|
191
|
+
* Wraps the 'open' function to provide a timeout and error handling. This is
|
|
192
|
+
* necessary because on some OSes, 'open' may fail depending on whether the machine
|
|
193
|
+
* has the required dependencies installed (e.g., 'xdg-open' on Linux). Without
|
|
194
|
+
* proper error handling, the promise may hang indefinitely or throw an unhandled exception,
|
|
195
|
+
* which would crash the application entirely.
|
|
196
|
+
* @param target the URL to open
|
|
197
|
+
* @param options options to be passed directly to the 'open' function
|
|
198
|
+
*/
|
|
199
|
+
const osSafeOpen = (target, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
200
|
+
const child = yield (0, open_1.default)(target, options);
|
|
201
|
+
return new Promise((resolve, reject) => {
|
|
202
|
+
let settled = false;
|
|
203
|
+
const settle = () => {
|
|
204
|
+
settled = true;
|
|
205
|
+
child.removeListener("error", errorHandler);
|
|
206
|
+
child.removeListener("spawn", spawnHandler);
|
|
207
|
+
};
|
|
208
|
+
// Timeout to avoid hanging indefinitely
|
|
209
|
+
const timeout = setTimeout(() => {
|
|
210
|
+
if (!settled) {
|
|
211
|
+
settle();
|
|
212
|
+
reject(new Error("Failed to open target: timeout exceeded"));
|
|
213
|
+
}
|
|
214
|
+
}, OPEN_TIMEOUT_MS);
|
|
215
|
+
const errorHandler = (err) => {
|
|
216
|
+
if (!settled) {
|
|
217
|
+
settle();
|
|
218
|
+
clearTimeout(timeout);
|
|
219
|
+
reject(err);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
const spawnHandler = () => {
|
|
223
|
+
if (!settled) {
|
|
224
|
+
settle();
|
|
225
|
+
clearTimeout(timeout);
|
|
226
|
+
resolve();
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
// Attach handlers synchronously to catch immediate errors
|
|
230
|
+
child.on("error", errorHandler);
|
|
231
|
+
child.on("spawn", spawnHandler);
|
|
232
|
+
// Handle already-spawned case (process started before handlers attached)
|
|
233
|
+
if (child.pid !== undefined) {
|
|
234
|
+
spawnHandler();
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
exports.osSafeOpen = osSafeOpen;
|
|
188
239
|
//# sourceMappingURL=util.js.map
|