2024-07-18 21:37:45 +03:00
|
|
|
import ini from "ini";
|
|
|
|
import fs from "fs";
|
2024-07-18 21:35:17 +03:00
|
|
|
import dataDir from "./data_dir.js";
|
2024-07-18 21:37:45 +03:00
|
|
|
import path from "path";
|
2024-07-18 21:35:17 +03:00
|
|
|
import resourceDir from "./resource_dir.js";
|
2025-01-23 20:23:31 +01:00
|
|
|
import { envToBoolean } from "./utils.js";
|
2017-10-14 23:31:44 -04:00
|
|
|
|
2018-04-01 21:27:46 -04:00
|
|
|
const configSampleFilePath = path.resolve(resourceDir.RESOURCE_DIR, "config-sample.ini");
|
2017-12-24 15:12:18 -05:00
|
|
|
|
2022-10-01 15:32:30 +02:00
|
|
|
if (!fs.existsSync(dataDir.CONFIG_INI_PATH)) {
|
2025-01-09 18:07:02 +02:00
|
|
|
const configSample = fs.readFileSync(configSampleFilePath).toString("utf8");
|
2017-12-24 15:12:18 -05:00
|
|
|
|
2022-10-01 15:32:30 +02:00
|
|
|
fs.writeFileSync(dataDir.CONFIG_INI_PATH, configSample);
|
2017-12-24 15:12:18 -05:00
|
|
|
}
|
|
|
|
|
2025-01-23 20:23:31 +01:00
|
|
|
const iniConfig = ini.parse(fs.readFileSync(dataDir.CONFIG_INI_PATH, "utf-8"));
|
|
|
|
|
2025-01-23 23:50:16 +01:00
|
|
|
export interface TriliumConfig {
|
|
|
|
General: {
|
|
|
|
instanceName: string;
|
|
|
|
noAuthentication: boolean;
|
|
|
|
noBackup: boolean;
|
|
|
|
noDesktopIcon: boolean;
|
|
|
|
};
|
|
|
|
Network: {
|
|
|
|
host: string;
|
|
|
|
port: string;
|
|
|
|
https: boolean;
|
|
|
|
certPath: string;
|
|
|
|
keyPath: string;
|
|
|
|
trustedReverseProxy: boolean | string;
|
2025-04-15 23:13:34 +02:00
|
|
|
corsAllowOrigin: string;
|
|
|
|
corsAllowMethods: string;
|
|
|
|
corsAllowHeaders: string;
|
2025-01-23 23:50:16 +01:00
|
|
|
};
|
2025-02-10 19:07:21 +01:00
|
|
|
Session: {
|
2025-02-10 19:50:30 +01:00
|
|
|
cookieMaxAge: number;
|
2025-03-02 20:47:57 +01:00
|
|
|
};
|
2025-01-23 23:50:16 +01:00
|
|
|
Sync: {
|
|
|
|
syncServerHost: string;
|
|
|
|
syncServerTimeout: string;
|
|
|
|
syncProxy: string;
|
|
|
|
};
|
2025-03-25 22:30:14 +01:00
|
|
|
MultiFactorAuthentication: {
|
|
|
|
oauthBaseUrl: string;
|
|
|
|
oauthClientId: string;
|
|
|
|
oauthClientSecret: string;
|
|
|
|
};
|
2025-01-23 23:50:16 +01:00
|
|
|
}
|
2025-01-23 23:58:46 +01:00
|
|
|
|
|
|
|
//prettier-ignore
|
2025-01-23 23:50:16 +01:00
|
|
|
const config: TriliumConfig = {
|
2025-01-23 20:23:31 +01:00
|
|
|
|
|
|
|
General: {
|
2025-01-23 23:58:46 +01:00
|
|
|
instanceName:
|
|
|
|
process.env.TRILIUM_GENERAL_INSTANCENAME || iniConfig.General.instanceName || "",
|
|
|
|
|
2025-03-25 22:30:14 +01:00
|
|
|
noAuthentication:
|
2025-01-23 23:58:46 +01:00
|
|
|
envToBoolean(process.env.TRILIUM_GENERAL_NOAUTHENTICATION) || iniConfig.General.noAuthentication || false,
|
|
|
|
|
2025-03-25 22:30:14 +01:00
|
|
|
noBackup:
|
2025-01-23 23:58:46 +01:00
|
|
|
envToBoolean(process.env.TRILIUM_GENERAL_NOBACKUP) || iniConfig.General.noBackup || false,
|
|
|
|
|
2025-03-25 22:30:14 +01:00
|
|
|
noDesktopIcon:
|
2025-01-23 23:58:46 +01:00
|
|
|
envToBoolean(process.env.TRILIUM_GENERAL_NODESKTOPICON) || iniConfig.General.noDesktopIcon || false
|
2025-01-23 20:23:31 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
Network: {
|
2025-01-23 23:58:46 +01:00
|
|
|
host:
|
|
|
|
process.env.TRILIUM_NETWORK_HOST || iniConfig.Network.host || "0.0.0.0",
|
|
|
|
|
|
|
|
port:
|
|
|
|
process.env.TRILIUM_NETWORK_PORT || iniConfig.Network.port || "3000",
|
|
|
|
|
2025-03-25 22:30:14 +01:00
|
|
|
https:
|
2025-01-23 23:58:46 +01:00
|
|
|
envToBoolean(process.env.TRILIUM_NETWORK_HTTPS) || iniConfig.Network.https || false,
|
|
|
|
|
2025-03-25 22:30:14 +01:00
|
|
|
certPath:
|
2025-01-23 23:58:46 +01:00
|
|
|
process.env.TRILIUM_NETWORK_CERTPATH || iniConfig.Network.certPath || "",
|
|
|
|
|
2025-03-25 22:30:14 +01:00
|
|
|
keyPath:
|
|
|
|
process.env.TRILIUM_NETWORK_KEYPATH || iniConfig.Network.keyPath || "",
|
2025-01-23 23:58:46 +01:00
|
|
|
|
|
|
|
trustedReverseProxy:
|
2025-04-15 23:13:34 +02:00
|
|
|
process.env.TRILIUM_NETWORK_TRUSTEDREVERSEPROXY || iniConfig.Network.trustedReverseProxy || false,
|
|
|
|
|
|
|
|
corsAllowOrigin:
|
2025-04-16 01:01:11 +02:00
|
|
|
process.env.TRILIUM_NETWORK_CORS_ALLOW_ORIGIN || iniConfig.Network.corsAllowOrigin || "",
|
2025-04-15 23:13:34 +02:00
|
|
|
|
|
|
|
corsAllowMethods:
|
2025-04-16 01:01:11 +02:00
|
|
|
process.env.TRILIUM_NETWORK_CORS_ALLOW_METHODS || iniConfig.Network.corsAllowMethods || "",
|
2025-04-15 23:13:34 +02:00
|
|
|
|
|
|
|
corsAllowHeaders:
|
2025-04-16 01:01:11 +02:00
|
|
|
process.env.TRILIUM_NETWORK_CORS_ALLOW_HEADERS || iniConfig.Network.corsAllowHeaders || ""
|
2025-01-23 20:32:45 +01:00
|
|
|
},
|
2025-01-23 20:23:31 +01:00
|
|
|
|
2025-02-10 19:07:21 +01:00
|
|
|
Session: {
|
2025-02-10 19:50:30 +01:00
|
|
|
cookieMaxAge:
|
2025-02-13 09:46:49 +01:00
|
|
|
parseInt(String(process.env.TRILIUM_SESSION_COOKIEMAXAGE)) || parseInt(iniConfig?.Session?.cookieMaxAge) || 21 * 24 * 60 * 60 // 21 Days in Seconds
|
2025-02-10 08:33:31 +01:00
|
|
|
},
|
|
|
|
|
2025-01-23 23:58:46 +01:00
|
|
|
Sync: {
|
|
|
|
syncServerHost:
|
|
|
|
process.env.TRILIUM_SYNC_SERVER_HOST || iniConfig?.Sync?.syncServerHost || "",
|
2025-01-23 20:23:31 +01:00
|
|
|
|
2025-01-23 23:58:46 +01:00
|
|
|
syncServerTimeout:
|
|
|
|
process.env.TRILIUM_SYNC_SERVER_TIMEOUT || iniConfig?.Sync?.syncServerTimeout || "120000",
|
|
|
|
|
|
|
|
syncProxy:
|
2025-01-24 07:45:47 +01:00
|
|
|
// additionally checking in iniConfig for inconsistently named syncProxy for backwards compatibility
|
|
|
|
process.env.TRILIUM_SYNC_SERVER_PROXY || iniConfig?.Sync?.syncProxy || iniConfig?.Sync?.syncServerProxy || ""
|
2025-03-25 22:30:14 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
MultiFactorAuthentication: {
|
|
|
|
oauthBaseUrl:
|
2025-03-25 22:44:52 +01:00
|
|
|
process.env.TRILIUM_OAUTH_BASE_URL || iniConfig?.MultiFactorAuthentication?.oauthBaseUrl || "",
|
2025-03-25 22:30:14 +01:00
|
|
|
|
|
|
|
oauthClientId:
|
2025-03-25 22:44:52 +01:00
|
|
|
process.env.TRILIUM_OAUTH_CLIENT_ID || iniConfig?.MultiFactorAuthentication?.oauthClientId || "",
|
2025-03-25 22:30:14 +01:00
|
|
|
|
|
|
|
oauthClientSecret:
|
2025-03-25 22:44:52 +01:00
|
|
|
process.env.TRILIUM_OAUTH_CLIENT_SECRET || iniConfig?.MultiFactorAuthentication?.oauthClientSecret || ""
|
2025-03-25 22:30:14 +01:00
|
|
|
}
|
2025-01-23 23:58:46 +01:00
|
|
|
};
|
2017-10-14 23:31:44 -04:00
|
|
|
|
2024-07-18 21:50:12 +03:00
|
|
|
export default config;
|