You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-11-26 22:41:17 +02:00
Server: Disallow loading env file that contains duplicate keys
This commit is contained in:
@@ -99,7 +99,14 @@ async function main() {
|
|||||||
|
|
||||||
const envFilePath = await getEnvFilePath(env, argv);
|
const envFilePath = await getEnvFilePath(env, argv);
|
||||||
|
|
||||||
const envFromFile = envFilePath ? parseEnvFile(envFilePath) : {};
|
let envFromFile: Record<string, string> = {};
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (envFilePath) envFromFile = parseEnvFile(envFilePath);
|
||||||
|
} catch (error) {
|
||||||
|
error.message = `Could not parse env file at ${envFilePath}: ${error.message}`;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
const fullEnv = {
|
const fullEnv = {
|
||||||
...envFromFile,
|
...envFromFile,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export interface Options {
|
|||||||
overwrite?: boolean;
|
overwrite?: boolean;
|
||||||
raise?: boolean;
|
raise?: boolean;
|
||||||
logger?: typeof console;
|
logger?: typeof console;
|
||||||
|
allowDuplicateKeys?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const parseEnvFile = (env_file: string, options: Options = {}) => {
|
export const parseEnvFile = (env_file: string, options: Options = {}) => {
|
||||||
@@ -17,6 +18,7 @@ export const parseEnvFile = (env_file: string, options: Options = {}) => {
|
|||||||
overwrite: false,
|
overwrite: false,
|
||||||
raise: true,
|
raise: true,
|
||||||
verbose: false,
|
verbose: false,
|
||||||
|
allowDuplicateKeys: false,
|
||||||
...options,
|
...options,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -101,6 +103,8 @@ export const parseEnvFile = (env_file: string, options: Options = {}) => {
|
|||||||
// remove ' and " characters if right side of = is quoted
|
// remove ' and " characters if right side of = is quoted
|
||||||
const env_value = key_value[2].match(/^(['"]?)([^\n]*)\1$/m)[2];
|
const env_value = key_value[2].match(/^(['"]?)([^\n]*)\1$/m)[2];
|
||||||
|
|
||||||
|
if ((env_key in data[env_file]) && !options.allowDuplicateKeys) throw new Error(`Found duplicate key: ${env_key}`);
|
||||||
|
|
||||||
if (options.overwrite) {
|
if (options.overwrite) {
|
||||||
data[env_file][env_key] = env_value;
|
data[env_file][env_key] = env_value;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user