diff --git a/src/common/http.ts b/src/common/http.ts index 5f94c2cd0..9172c770d 100644 --- a/src/common/http.ts +++ b/src/common/http.ts @@ -24,6 +24,6 @@ export class HttpError extends Error { } } -export enum CookieKeys { - Session = "code-server-session", +export const CookieKeys = { + Session: `code-server-session${process.env?.CODE_SERVER_COOKIE_SUFFIX ? "-" + process.env?.CODE_SERVER_COOKIE_SUFFIX : ""}`, } diff --git a/src/node/cli.ts b/src/node/cli.ts index 0fce9cfbf..7e4674eaa 100644 --- a/src/node/cli.ts +++ b/src/node/cli.ts @@ -53,6 +53,7 @@ export interface UserProvidedCodeArgs { "disable-getting-started-override"?: boolean "disable-proxy"?: boolean "session-socket"?: string + "cookie-suffix"?: string "link-protection-trusted-domains"?: string[] // locale is used by both VS Code and code-server. locale?: string @@ -172,6 +173,12 @@ export const options: Options> = { "session-socket": { type: "string", }, + "cookie-suffix": { + type: "string", + description: + "Adds a suffix to the cookie. This can prevent a collision of cookies for subdomains, making them explixit. \n" + + "Without this flag, no suffix is used. This can also be set with CODE_SERVER_COOKIE_SUFFIX set to any string.", + }, "disable-file-downloads": { type: "boolean", description: @@ -616,6 +623,10 @@ export async function setDefaults(cliArgs: UserProvidedArgs, configArgs?: Config usingEnvPassword = false } + if (process.env.CODE_SERVER_COOKIE_SUFFIX) { + args["cookie-suffix"] = process.env.CODE_SERVER_COOKIE_SUFFIX + } + if (process.env.GITHUB_TOKEN) { args["github-auth"] = process.env.GITHUB_TOKEN }