Skip to content

Commit 99fcc7b

Browse files
committed
Check whether value is a URL in checkEnvVar and clear credentials
Note also that we run this after `getCredentials` which already instructs Actions to mask credentials that we know about in logs
1 parent c1d6ee5 commit 99fcc7b

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

lib/start-proxy-action.js

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/start-proxy/environment.test.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,16 @@ function assertEnvVarLogMessages(
2929
t: ExecutionContext<any>,
3030
envVars: string[],
3131
messages: LoggedMessage[],
32-
expectSet: boolean,
32+
expectSet: boolean | string,
3333
) {
34-
const template = (envVar: string) =>
35-
expectSet
34+
const template = (envVar: string) => {
35+
if (typeof expectSet === "string") {
36+
return `Environment variable '${envVar}' is set to '${expectSet}'`;
37+
}
38+
return expectSet
3639
? `Environment variable '${envVar}' is set to '${envVar}'`
3740
: `Environment variable '${envVar}' is not set`;
41+
};
3842

3943
const expected: string[] = [];
4044

@@ -145,6 +149,23 @@ test("checkProxyEnvVars - logs values when variables are set", (t) => {
145149
assertEnvVarLogMessages(t, Object.values(ProxyEnvVars), messages, true);
146150
});
147151

152+
test("checkProxyEnvVars - credentials are removed from URLs", (t) => {
153+
const messages: LoggedMessage[] = [];
154+
const logger = getRecordingLogger(messages);
155+
156+
for (const envVar of Object.values(ProxyEnvVars)) {
157+
process.env[envVar] = "https://secret:password@proxy.local";
158+
}
159+
160+
checkProxyEnvVars(logger);
161+
assertEnvVarLogMessages(
162+
t,
163+
Object.values(ProxyEnvVars),
164+
messages,
165+
"https://proxy.local/",
166+
);
167+
});
168+
148169
test("checkProxyEnvironment - includes base checks for all known languages", (t) => {
149170
for (const language of Object.values(KnownLanguage)) {
150171
const messages: LoggedMessage[] = [];

src/start-proxy/environment.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,14 @@ import { getErrorMessage, isDefined } from "../util";
1616
function checkEnvVar(logger: Logger, name: string): boolean {
1717
const value = process.env[name];
1818
if (isDefined(value)) {
19-
logger.info(`Environment variable '${name}' is set to '${value}'.`);
19+
const url = URL.parse(value);
20+
if (isDefined(url)) {
21+
url.username = "";
22+
url.password = "";
23+
logger.info(`Environment variable '${name}' is set to '${url}'.`);
24+
} else {
25+
logger.info(`Environment variable '${name}' is set to '${value}'.`);
26+
}
2027
return true;
2128
} else {
2229
logger.debug(`Environment variable '${name}' is not set.`);

0 commit comments

Comments
 (0)