mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 00:52:50 +00:00
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import { registerAs } from '@nestjs/config';
|
|
|
|
export interface ChatConfig {
|
|
enabled: boolean;
|
|
/** Synapse base URL reachable from this container (client + admin APIs). */
|
|
baseUrl: string;
|
|
/** Synapse's public_baseurl — what Element itself is configured to call. Only
|
|
* used to seed the sso.html handoff; server-to-server calls use {@link baseUrl}. */
|
|
publicBaseUrl: string;
|
|
/** Public Element Web origin — the SSO handoff link points here. */
|
|
webUrl: string;
|
|
/** Matrix server_name — the `:domain` half of every MXID. */
|
|
serverName: string;
|
|
/** HS256 secret. Must exactly match Synapse's jwt_config.secret. */
|
|
jwtSecret: string;
|
|
/** Bearer token for a Synapse server admin account (room/user provisioning). */
|
|
adminToken: string;
|
|
}
|
|
|
|
const REQUIRED_VARS = [
|
|
'MATRIX_BASE_URL',
|
|
'MATRIX_PUBLIC_BASE_URL',
|
|
'MATRIX_CHAT_WEB_URL',
|
|
'MATRIX_SERVER_NAME',
|
|
'MATRIX_JWT_SECRET',
|
|
'MATRIX_ADMIN_TOKEN',
|
|
] as const;
|
|
|
|
export default registerAs('chat', (): ChatConfig => {
|
|
const enabled = (process.env.MATRIX_ENABLED ?? 'false').toLowerCase() === 'true';
|
|
if (!enabled) {
|
|
return {
|
|
enabled: false,
|
|
baseUrl: '',
|
|
publicBaseUrl: '',
|
|
webUrl: '',
|
|
serverName: '',
|
|
jwtSecret: '',
|
|
adminToken: '',
|
|
};
|
|
}
|
|
|
|
const missing = REQUIRED_VARS.filter((name) => !process.env[name]);
|
|
if (missing.length > 0) {
|
|
throw new Error(
|
|
`Internal chat is enabled (MATRIX_ENABLED=true) but the following env vars are missing: ${missing.join(', ')}`,
|
|
);
|
|
}
|
|
|
|
return {
|
|
enabled: true,
|
|
baseUrl: process.env.MATRIX_BASE_URL!.replace(/\/$/, ''),
|
|
publicBaseUrl: process.env.MATRIX_PUBLIC_BASE_URL!.replace(/\/$/, ''),
|
|
webUrl: process.env.MATRIX_CHAT_WEB_URL!.replace(/\/$/, ''),
|
|
serverName: process.env.MATRIX_SERVER_NAME!,
|
|
jwtSecret: process.env.MATRIX_JWT_SECRET!,
|
|
adminToken: process.env.MATRIX_ADMIN_TOKEN!,
|
|
};
|
|
});
|