mirror of
https://github.com/finos/SymphonyElectron.git
synced 2025-02-25 18:55:29 -06:00
84 lines
3.4 KiB
TypeScript
84 lines
3.4 KiB
TypeScript
import { app, session } from 'electron';
|
|
|
|
import { logger } from '../common/logger';
|
|
import { CloudConfigDataTypes, config, IConfig } from './config-handler';
|
|
|
|
// Set default flags
|
|
logger.info(`chrome-flags: Setting mandatory chrome flags`, { flag: { 'ssl-version-fallback-min': 'tls1.2' } });
|
|
app.commandLine.appendSwitch('ssl-version-fallback-min', 'tls1.2');
|
|
|
|
// Special args that need to be excluded as part of the chrome command line switch
|
|
const specialArgs = [ '--url', '--multiInstance', '--userDataPath=', 'symphony://', '--inspect-brk', '--inspect', '--logPath' ];
|
|
|
|
/**
|
|
* Sets chrome flags
|
|
*/
|
|
export const setChromeFlags = () => {
|
|
logger.info(`chrome-flags: Checking if we need to set chrome flags!`);
|
|
|
|
const flagsConfig = config.getConfigFields(['customFlags', 'disableGpu']) as IConfig;
|
|
const { disableThrottling } = config.getCloudConfigFields([ 'disableThrottling' ]) as any;
|
|
const configFlags: object = {
|
|
'auth-negotiate-delegate-whitelist': flagsConfig.customFlags.authServerWhitelist,
|
|
'auth-server-whitelist': flagsConfig.customFlags.authNegotiateDelegateWhitelist,
|
|
'disable-background-timer-throttling': 'true',
|
|
'disable-d3d11': flagsConfig.disableGpu || null,
|
|
'disable-gpu': flagsConfig.disableGpu || null,
|
|
'disable-gpu-compositing': flagsConfig.disableGpu || null,
|
|
};
|
|
if (flagsConfig.customFlags.disableThrottling === CloudConfigDataTypes.ENABLED || disableThrottling === CloudConfigDataTypes.ENABLED) {
|
|
configFlags['disable-renderer-backgrounding'] = 'true';
|
|
}
|
|
|
|
for (const key in configFlags) {
|
|
if (!Object.prototype.hasOwnProperty.call(configFlags, key)) {
|
|
continue;
|
|
}
|
|
const val = configFlags[key];
|
|
if (key && val) {
|
|
logger.info(`chrome-flags: Setting chrome flag for ${key} with value ${val}!`);
|
|
app.commandLine.appendSwitch(key, val);
|
|
}
|
|
}
|
|
|
|
const cmdArgs = process.argv;
|
|
cmdArgs.forEach((arg) => {
|
|
// We need to check if the argument key matches the one
|
|
// in the special args array and return if it does match
|
|
const argSplit = arg.split('=');
|
|
const argKey = argSplit[0];
|
|
const argValue = argSplit[1] && arg.substring(arg.indexOf('=') + 1);
|
|
if (arg.startsWith('--') && specialArgs.includes(argKey)) {
|
|
return;
|
|
}
|
|
|
|
// All the chrome flags starts with --
|
|
// So, any other arg (like 'electron' or '.')
|
|
// need to be skipped
|
|
if (arg.startsWith('--')) {
|
|
// Since chrome takes values after an equals
|
|
// We split the arg and set it either as
|
|
// just a key, or as a key-value pair
|
|
if (argKey && argValue) {
|
|
app.commandLine.appendSwitch(argKey.substr(2), argValue);
|
|
} else {
|
|
app.commandLine.appendSwitch(argKey);
|
|
}
|
|
logger.info( `Appended chrome command line switch ${argKey} with value ${argValue}`);
|
|
}
|
|
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Sets default session properties
|
|
*/
|
|
export const setSessionProperties = () => {
|
|
logger.info(`chrome-flags: Settings session properties`);
|
|
const { customFlags } = config.getConfigFields([ 'customFlags' ]) as IConfig;
|
|
|
|
if (session.defaultSession && customFlags && customFlags.authServerWhitelist && customFlags.authServerWhitelist !== '') {
|
|
session.defaultSession.allowNTLMCredentialsForDomains(customFlags.authServerWhitelist);
|
|
}
|
|
};
|