1717'use strict'
1818
1919const Joi = require ( 'joi' )
20- const fs = require ( 'fs' )
2120
2221function stringifyAndHideSensitive ( appConfig ) {
2322 function hideSecrets ( key , value ) {
@@ -40,22 +39,22 @@ const MB_AS_KB = 1024
4039
4140const configValidation = Joi . object ( ) . keys ( {
4241 LOG_LEVEL : Joi . string ( ) . valid ( 'silly' , 'debug' , 'info' , 'warn' , 'error' ) ,
43- LOG_ENABLE_INDYSDK : Joi . string ( ) . valid ( 'true' , ' false' ) ,
44- LOG_JSON_TO_CONSOLE : Joi . string ( ) . valid ( ' true' , 'false' ) ,
45- LOG_HEALTH_REQUESTS : Joi . string ( ) . valid ( 'true' , 'false' ) . default ( ' false' ) ,
46- DEV_MODE : Joi . string ( ) . valid ( 'true' , 'false' ) . default ( ' false' ) ,
42+ LOG_ENABLE_INDYSDK : Joi . boolean ( ) . default ( false ) ,
43+ LOG_JSON_TO_CONSOLE : Joi . boolean ( ) . default ( true ) ,
44+ LOG_HEALTH_REQUESTS : Joi . boolean ( ) . default ( false ) ,
45+ DEV_MODE : Joi . boolean ( ) . default ( false ) ,
4746
48- SERVER_PORT : Joi . number ( ) . integer ( ) . min ( 1025 ) . max ( 65535 ) . required ( ) ,
4947 SERVER_HOSTNAME : Joi . string ( ) . default ( '0.0.0.0' ) ,
48+ SERVER_PORT : Joi . number ( ) . integer ( ) . min ( 1025 ) . max ( 65535 ) . required ( ) ,
49+ SERVER_ENABLE_TLS : Joi . boolean ( ) . default ( true ) ,
5050 SERVER_MAX_REQUEST_SIZE_KB : Joi . number ( ) . integer ( ) . min ( 1 ) . max ( MB_AS_KB * 10 ) . default ( 512 ) ,
51- SERVER_ENABLE_TLS : Joi . string ( ) . valid ( 'true' , 'false' ) . default ( 'true' ) ,
5251 CERTIFICATE_PATH : Joi . string ( ) ,
5352 CERTIFICATE_KEY_PATH : Joi . string ( ) ,
5453
5554 AGENCY_WALLET_NAME : Joi . string ( ) . required ( ) ,
56- AGENCY_DID : Joi . string ( ) . required ( ) ,
57- AGENCY_SEED_SECRET : Joi . string ( ) . min ( 20 ) . required ( ) ,
5855 AGENCY_WALLET_KEY_SECRET : Joi . string ( ) . min ( 20 ) . required ( ) ,
56+ AGENCY_SEED_SECRET : Joi . string ( ) . min ( 20 ) . required ( ) ,
57+ AGENCY_DID : Joi . string ( ) . required ( ) ,
5958
6059 REDIS_URL : Joi . string ( ) ,
6160 AGENCY_TYPE : Joi . string ( ) . valid ( 'enterprise' , 'client' ) . required ( ) ,
@@ -70,47 +69,26 @@ const configValidation = Joi.object().keys({
7069
7170 AWS_S3_PATH_CERT : Joi . string ( ) ,
7271 AWS_S3_BUCKET_CERT : Joi . string ( ) ,
73- AWS_S3_PATH_CERT_KEY : Joi . string ( )
72+ AWS_S3_PATH_CERT_KEY : Joi . string ( ) ,
73+
74+ ECS_CONTAINER_METADATA_URI_V4 : Joi . string ( ) . uri ( ) ,
75+ WEBHOOK_RESPONSE_TIMEOUT_MS : Joi . number ( ) . default ( 1000 ) ,
76+ EXPLAIN_QUERIES : Joi . boolean ( ) . default ( false )
7477} )
7578
7679function validateFinalConfig ( appConfig ) {
77- function testConfigPathExist ( appConfig , key ) {
78- const path = appConfig [ key ]
79- if ( ! fs . existsSync ( path ) ) {
80- throw new Error ( `${ key } = ${ path } is not a valid path or the path does not exist` )
80+ if ( appConfig . AGENCY_TYPE === 'client' ) {
81+ if ( ! appConfig . REDIS_URL ) {
82+ throw new Error ( 'Configuration for agency of type \'client\' must have REDIS_URL specified.' )
8183 }
8284 }
83-
8485 function validateTls ( ) {
85- if ( appConfig . AGENCY_TYPE === 'client' ) {
86- if ( ! appConfig . REDIS_URL ) {
87- throw new Error ( 'Configuration for agency of type \'client\' must have REDIS_URL specified.' )
88- }
89- }
90- if ( appConfig . SERVER_ENABLE_TLS === 'true' ) {
86+ if ( appConfig . SERVER_ENABLE_TLS === true ) {
9187 if ( ! appConfig . CERTIFICATE_PATH || ! appConfig . CERTIFICATE_KEY_PATH ) {
9288 throw new Error ( 'Valid certificate and key paths must be specified when TLS enabled!' )
9389 }
94- testConfigPathExist ( appConfig , 'CERTIFICATE_PATH' )
95- testConfigPathExist ( appConfig , 'CERTIFICATE_KEY_PATH' )
96- }
97- }
98-
99- if ( appConfig . WALLET_TYPE === 'pgsql' ) {
100- throw new Error ( 'WALLET_TYPE "pgsql" is not supported anymore' )
101- }
102- if ( appConfig . WALLET_TYPE === 'mysql' ) {
103- if ( ! appConfig . MYSQL_WALLET_HOST ) {
104- throw new Error ( '"MYSQL_WALLET_HOST" is required' )
105- }
106- if ( ! appConfig . MYSQL_WALLET_ACCOUNT ) {
107- throw new Error ( '"MYSQL_WALLET_ACCOUNT" is required' )
108- }
109- if ( ! appConfig . MYSQL_WALLET_PASSWORD_SECRET ) {
110- throw new Error ( '"MYSQL_WALLET_PASSWORD_SECRET" is required' )
11190 }
11291 }
113-
11492 validateTls ( )
11593}
11694
0 commit comments