botserver/packages/core.gbapp/services/GBConfigService.ts

175 lines
5.7 KiB
TypeScript
Raw Normal View History

2018-04-21 02:59:30 -03:00
/*****************************************************************************\
| ( )_ _ |
| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ |
| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ |
| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__, \| (˅) |( (_) ) |
2018-04-21 02:59:30 -03:00
| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' |
| | | ( )_) | |
| (_) \___/' |
| |
| General Bots Copyright (c) Pragmatismo.io. All rights reserved. |
| Licensed under the AGPL-3.0. |
2018-11-11 19:09:18 -02:00
| |
2018-04-21 02:59:30 -03:00
| According to our dual licensing model, this program can be used either |
| under the terms of the GNU Affero General Public License, version 3, |
| or under a proprietary license. |
| |
| The texts of the GNU Affero General Public License with an additional |
| permission and of our proprietary license can be found at and |
| in the LICENSE file you have received along with this program. |
| |
| This program is distributed in the hope that it will be useful, |
2018-09-11 19:40:53 -03:00
| but WITHOUT ANY WARRANTY, without even the implied warranty of |
2018-04-21 02:59:30 -03:00
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU Affero General Public License for more details. |
| |
| "General Bots" is a registered trademark of Pragmatismo.io. |
| The licensing of the program under the AGPLv3 does not imply a |
| trademark license. Therefore any rights, title and interest in |
| our trademarks remain entirely with us. |
| |
\*****************************************************************************/
'use strict';
import { GBLog } from 'botlib';
2018-04-21 02:59:30 -03:00
2018-11-11 19:09:18 -02:00
/**
* @fileoverview General Bots server core.
*/
/**
* Base configuration for the server like storage.
*/
2018-04-21 02:59:30 -03:00
export class GBConfigService {
2020-12-31 15:36:19 -03:00
public static getBoolean(value: string): boolean {
return this.get(value) as unknown as boolean;
}
public static getServerPort(): string {
2019-05-16 12:36:11 -03:00
if (process.env.PORT) {
return process.env.PORT;
}
2019-05-16 12:36:11 -03:00
if (process.env.port) {
return process.env.port;
2019-05-16 11:54:43 -03:00
}
return '4242';
}
public static init(): any {
2018-04-21 02:59:30 -03:00
try {
require('dotenv-extended').load({
2019-12-30 12:51:11 -03:00
encoding: 'utf8',
silent: true,
path: '.env',
2019-12-30 12:51:11 -03:00
defaults: '.env.defaults',
schema: '.env.schema',
2018-04-21 02:59:30 -03:00
errorOnMissing: true,
errorOnExtra: false,
2019-12-30 12:51:11 -03:00
errorOnRegex: true,
includeProcessEnv: false,
assignToProcessEnv: true,
2018-04-21 02:59:30 -03:00
overrideProcessEnv: true
});
2018-04-21 02:59:30 -03:00
} catch (e) {
GBLog.error(e.message);
process.exit(3);
2018-04-21 02:59:30 -03:00
}
}
public static get(key: string): string | undefined {
let value = GBConfigService.tryGet(key);
2018-04-21 02:59:30 -03:00
if (value === undefined) {
2018-04-21 02:59:30 -03:00
switch (key) {
case 'CLOUD_USERNAME':
2018-10-24 12:06:47 -03:00
value = undefined;
break;
case 'BOT_ID':
value = undefined;
break;
case 'CLOUD_PASSWORD':
2018-10-24 12:06:47 -03:00
value = undefined;
break;
case 'CLOUD_SUBSCRIPTIONID':
2018-10-24 12:06:47 -03:00
value = undefined;
break;
case 'CLOUD_LOCATION':
2018-10-24 12:06:47 -03:00
value = undefined;
break;
2019-02-25 09:44:39 -03:00
case 'MARKETPLACE_ID':
value = undefined;
break;
case 'MARKETPLACE_SECRET':
value = undefined;
break;
case 'STORAGE_DIALECT':
2018-10-25 18:13:51 -03:00
value = undefined;
break;
case 'STORAGE_STORAGE':
value = './guaribas.sqlite';
break;
case 'GBKB_AUTO_DEPLOY':
value = false;
break;
case 'ADDITIONAL_DEPLOY_PATH':
value = undefined;
break;
case 'STORAGE_SYNC':
value = 'false';
2018-10-24 12:06:47 -03:00
break;
case 'STORAGE_SYNC_ALTER':
value = 'false';
2018-10-24 12:06:47 -03:00
break;
case 'STORAGE_SYNC_FORCE':
value = 'false';
break;
case 'STORAGE_LOGGING':
value = 'false';
break;
case 'STORAGE_ENCRYPT':
value = 'true';
break;
case 'REVERSE_PROXY':
value = undefined;
break;
case 'DISABLE_WEB':
value = 'false';
break;
case 'STORAGE_ACQUIRE_TIMEOUT':
value = 40000;
break;
case 'LOCALE':
value = 'en';
break;
case 'LANGUAGE_DETECTOR':
value = false;
break;
case 'DEFAULT_USER_LANGUAGE':
value = 'en';
break;
case 'DEFAULT_CONTENT_LANGUAGE':
value = 'en';
break;
case 'ENABLE_SPELLING_CHECKER':
value = false;
break;
default:
GBLog.warn(`Invalid key on .env file: '${key}'`);
break;
2018-04-21 02:59:30 -03:00
}
}
return value;
}
public static tryGet(key: string): any {
let value = process.env[`container:${key}`];
if (value === undefined) {
value = process.env[key];
}
return value;
2018-04-21 02:59:30 -03:00
}
}