mirror of https://github.com/coder/code-server.git
parent
eae285cf93
commit
f169e3ac66
|
@ -50,6 +50,7 @@ export interface Args extends VsArgs {
|
|||
"show-versions"?: boolean
|
||||
"uninstall-extension"?: string[]
|
||||
"proxy-domain"?: string[]
|
||||
"proxy-path-passthrough"?: boolean
|
||||
locale?: string
|
||||
_: string[]
|
||||
"reuse-window"?: boolean
|
||||
|
@ -172,6 +173,10 @@ const options: Options<Required<Args>> = {
|
|||
"uninstall-extension": { type: "string[]", description: "Uninstall a VS Code extension by id." },
|
||||
"show-versions": { type: "boolean", description: "Show VS Code extension versions." },
|
||||
"proxy-domain": { type: "string[]", description: "Domain used for proxying ports." },
|
||||
"proxy-path-passthrough": {
|
||||
type: "boolean",
|
||||
description: "Whether the path proxy should leave the /proxy/<port> in the request path when proxying.",
|
||||
},
|
||||
"ignore-last-opened": {
|
||||
type: "boolean",
|
||||
short: "e",
|
||||
|
|
|
@ -8,12 +8,12 @@ import { Router as WsRouter } from "../wsRouter"
|
|||
|
||||
export const router = Router()
|
||||
|
||||
const getProxyTarget = (req: Request, rewrite: boolean): string => {
|
||||
if (rewrite) {
|
||||
const getProxyTarget = (req: Request, passthroughPath: boolean): string => {
|
||||
if (passthroughPath) {
|
||||
return `http://0.0.0.0:${req.params.port}/${req.originalUrl}`
|
||||
}
|
||||
const query = qs.stringify(req.query)
|
||||
return `http://0.0.0.0:${req.params.port}/${req.params[0] || ""}${query ? `?${query}` : ""}`
|
||||
}
|
||||
return `http://0.0.0.0:${req.params.port}/${req.originalUrl}`
|
||||
}
|
||||
|
||||
router.all("/(:port)(/*)?", (req, res) => {
|
||||
|
@ -33,7 +33,7 @@ router.all("/(:port)(/*)?", (req, res) => {
|
|||
|
||||
proxy.web(req, res, {
|
||||
ignorePath: true,
|
||||
target: getProxyTarget(req, true),
|
||||
target: getProxyTarget(req, req.args["proxy-path-passthrough"] || false),
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -42,6 +42,6 @@ export const wsRouter = WsRouter()
|
|||
wsRouter.ws("/(:port)(/*)?", ensureAuthenticated, (req) => {
|
||||
proxy.ws(req, req.ws, req.head, {
|
||||
ignorePath: true,
|
||||
target: getProxyTarget(req, true),
|
||||
target: getProxyTarget(req, req.args["proxy-path-passthrough"] || false),
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue