31 lines
1.4 KiB
JavaScript
31 lines
1.4 KiB
JavaScript
// Zentrale Konfiguration, per .env überschreibbar
|
|
export default {
|
|
port: parseInt(process.env.PORT || "8080", 10),
|
|
// Upstream (Epirent)
|
|
upstreamBase: process.env.UPSTREAM_BASE || "https://epirent.example.com", // <-- anpassen
|
|
epiNoSession: process.env.EPI_NO_SESSION || "true",
|
|
epiAccessToken: process.env.EPI_ACCESS_TOKEN || "xxxDerAccessTokenxxx",
|
|
// Cache
|
|
ttlSeconds: parseInt(process.env.TTL_SECONDS || "600", 10), // frisch
|
|
staleSeconds: parseInt(process.env.STALE_SECONDS || "600", 10), // zusätzlich stale
|
|
// Optional: Pfad-spezifische TTL-Regeln (Regex-Strings)
|
|
routeTtls: (process.env.ROUTE_TTLS || "")
|
|
.split("|")
|
|
.map(s => s.trim())
|
|
.filter(Boolean)
|
|
.map(rule => {
|
|
// Format: /regex/i=SECONDS (i optional)
|
|
const [pat, sec] = rule.split("=");
|
|
const flags = /\/[gimsuy]*$/.test(pat) ? pat.split("/").pop() : "";
|
|
const body = pat.replace(/^\/|\/[gimsuy]*$/g, "");
|
|
return { re: new RegExp(body, flags || "i"), seconds: parseInt(sec, 10) };
|
|
}),
|
|
// Redis (leer => In-Memory LRU)
|
|
redisUrl: process.env.REDIS_URL || "",
|
|
// Sicherheit / CORS
|
|
allowCors: (process.env.CORS || "false").toLowerCase() === "true",
|
|
corsOrigin: process.env.CORS_ORIGIN || "*",
|
|
// Rate limit (sehr simpel, optional)
|
|
rateLimitRps: parseInt(process.env.RATE_LIMIT_RPS || "0", 10), // 0 = aus
|
|
};
|