Files
upstream-mirror c60cc7ca75
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
snapshot of https://github.com/ory/kratos.git (master, 2026-09-15; blobs > 131072B omitted)
2026-09-15 21:19:12 +05:00

55 lines
1.4 KiB
JavaScript

// Copyright © 2023 Ory Corp
// SPDX-License-Identifier: Apache-2.0
import request from "request"
import { resolve } from "path"
import urljoin from "url-join"
import express from "express"
import fs from "fs"
const app = express()
const proxy =
(base, prefix = null) =>
(req, res, next) => {
let url = urljoin(base, req.url)
// we need to tell Krato we are behind a reverse proxy
req.headers["x-forwarded-host"] = req.get("host")
if (prefix) {
url = urljoin(base, prefix, req.url)
}
req
.pipe(request(url, { followRedirect: false }).on("error", next))
.pipe(res)
}
app.use(
"/self-service/",
proxy(process.env.KRATOS_PUBLIC_URL, "/self-service/"),
)
app.use("/schemas/", proxy(process.env.KRATOS_PUBLIC_URL, "/schemas/"))
app.use("/.well-known/", proxy(process.env.KRATOS_PUBLIC_URL, "/.well-known/"))
app.use("/", (req, res, next) => {
const pc = JSON.parse(fs.readFileSync(resolve("../proxy.json")).toString())
switch (pc) {
case "react":
proxy(process.env.KRATOS_UI_REACT_URL)(req, res, next)
return
case "react-native":
proxy(process.env.KRATOS_UI_REACT_NATIVE_URL)(req, res, next)
return
}
proxy(process.env.KRATOS_UI_URL)(req, res, next)
})
const port = parseInt(process.env.PORT) || 4455
let listener = () => {
console.log(`Listening on http://0.0.0.0:${port}`)
}
app.listen(port, "0.0.0.0", listener)