-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathconfig.ts
More file actions
46 lines (38 loc) · 1.29 KB
/
config.ts
File metadata and controls
46 lines (38 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import type { Config } from "@/types/config";
function buildAuthUsers(): Record<string, string> {
const users: Record<string, string> = {};
const authUser = process.env.AUTH_USER;
const authPass = process.env.AUTH_PASS;
if (authUser && authPass) {
users[authUser] = authPass;
}
const authUsersJson = process.env.AUTH_USERS;
if (authUsersJson) {
try {
const parsed = JSON.parse(authUsersJson);
Object.assign(users, parsed);
} catch {
console.error("Failed to parse AUTH_USERS environment variable as JSON");
}
}
return users;
}
const config: Config = {
server: {
port: Number(process.env.PORT) || 8080,
obfuscate: process.env.OBFUSCATE !== "false",
compress: process.env.COMPRESS !== "false",
},
auth: {
challenge: process.env.AUTH_CHALLENGE === "true",
users: buildAuthUsers(),
},
};
if (config.auth?.challenge && Object.keys(config.auth.users || {}).length === 0) {
console.error("\x1b[31mError: AUTH_CHALLENGE is enabled but no users configured.\x1b[0m");
console.error("Set AUTH_USER and AUTH_PASS environment variables, or AUTH_USERS as JSON.");
console.error("Example: AUTH_USER=admin AUTH_PASS=secretpassword");
console.error('Example: AUTH_USERS=\'{"admin":"password123"}\'');
process.exit(1);
}
export default config;