feat: add initial webserver setup with Express and proxy middleware

This commit is contained in:
2025-10-30 09:16:07 +00:00
parent 2025a0a71f
commit 50b6f4a6e5
2 changed files with 83 additions and 0 deletions

66
webserver/webserver.js Normal file
View File

@@ -0,0 +1,66 @@
var express = require("express")
var morgan = require("morgan")
var { createProxyMiddleware } = require("http-proxy-middleware")
var historyFallback = require("connect-history-api-fallback")
var app = express()
app.use(morgan("dev"))
var port = process.env.PORT || 3000
var host = process.env.HOST || "0.0.0.0"
var api = process.env.API
var index = process.env.INDEX
var ssr = process.env.SSR
var apiFrom = ""
var apiTo = ""
if (api) {
var _api = api.split(":")
apiFrom = _api[0]
for (var i = 1; i < _api.length; i++) {
if (apiTo) apiTo = apiTo + ":"
apiTo = apiTo + _api[i]
}
if (apiFrom && apiTo) {
console.log("using api: " + apiFrom + " -> " + apiTo)
var _pR = {}
_pR["^" + apiFrom] = ""
app.use(
apiFrom,
createProxyMiddleware({
target: apiTo,
changeOrigin: true,
pathRewrite: _pR,
})
)
}
}
app.use(express.static(process.env.WEBROOT || "/data"))
if (ssr) {
console.log("using ssr via: " + ssr)
app.use(
createProxyMiddleware({
target: ssr,
changeOrigin: true,
})
)
}
if (index) {
console.log("using default index: " + index)
app.use(historyFallback({ index: index, verbose: true, disableDotRule: true }))
app.get(index, function (req, res) {
res.sendFile(index, {
root: process.env.WEBROOT || "/data",
})
})
}
app.use(function (req, res, next) {
res.status(404).end()
})
var server = app.listen(port, host)