11// external modules
22var path = require ( 'path' ) ;
3+ var fs = require ( 'fs' ) ;
34
45// configs
56var env = process . env . NODE_ENV || 'development' ;
67var config = require ( path . join ( __dirname , '..' , 'config.json' ) ) [ env ] ;
78var debug = process . env . DEBUG ? ( process . env . DEBUG === 'true' ) : ( ( typeof config . debug === 'boolean' ) ? config . debug : ( env === 'development' ) ) ;
89
10+ // Create function that reads docker secrets but fails fast in case of a non docker environment
11+ var handleDockerSecret = fs . existsSync ( '/run/secrets/' ) ? function ( secret ) { return fs . existsSync ( '/run/secrets/' + secret ) ? fs . readFileSync ( '/run/secrets/' + secret ) : null ; ) } : function ( ) { return null }
12+
913// url
1014var domain = process . env . DOMAIN || process . env . HMD_DOMAIN || config . domain || '' ;
1115var urlpath = process . env . URL_PATH || process . env . HMD_URL_PATH || config . urlpath || '' ;
@@ -28,10 +32,10 @@ var dburl = config.dburl || process.env.HMD_DB_URL || process.env.DATABASE_URL;
2832var db = config . db || { } ;
2933
3034// ssl path
31- var sslkeypath = config . sslkeypath || '' ;
32- var sslcertpath = config . sslcertpath || '' ;
33- var sslcapath = config . sslcapath || '' ;
34- var dhparampath = config . dhparampath || '' ;
35+ var sslkeypath = ( fs . existsSync ( '/run/secrets/key.pem' ) ? '/run/secrets/key.pem' : null ) || config . sslkeypath || '' ;
36+ var sslcertpath = ( fs . existsSync ( '/run/secrets/cert.pem' ) ? '/run/secrets/cert.pem' : null ) || config . sslcertpath || '' ;
37+ var sslcapath = ( fs . existsSync ( '/run/secrets/ca.pem' ) ? '/run/secrets/ca.pem' : null ) || config . sslcapath || '' ;
38+ var dhparampath = ( fs . existsSync ( '/run/secrets/dhparam.pem' ) ? '/run/secrets/dhparam.pem' : null ) || config . dhparampath || '' ;
3539
3640// other path
3741var tmppath = config . tmppath || './tmp' ;
@@ -45,7 +49,7 @@ var slidepath = config.slidepath || './public/views/slide.ejs';
4549
4650// session
4751var sessionname = config . sessionname || 'connect.sid' ;
48- var sessionsecret = config . sessionsecret || 'secret' ;
52+ var sessionsecret = handleDockerSecret ( 'sessionsecret' ) || config . sessionsecret || 'secret' ;
4953var sessionlife = config . sessionlife || 14 * 24 * 60 * 60 * 1000 ; //14 days
5054
5155// static files
@@ -63,35 +67,35 @@ var imageUploadType = process.env.HMD_IMAGE_UPLOAD_TYPE || config.imageUploadTyp
6367
6468config . s3 = config . s3 || { } ;
6569var s3 = {
66- accessKeyId : process . env . HMD_S3_ACCESS_KEY_ID || config . s3 . accessKeyId ,
67- secretAccessKey : process . env . HMD_S3_SECRET_ACCESS_KEY || config . s3 . secretAccessKey ,
70+ accessKeyId : handleDockerSecret ( 's3_acccessKeyId' ) || process . env . HMD_S3_ACCESS_KEY_ID || config . s3 . accessKeyId ,
71+ secretAccessKey : handleDockerSecret ( 's3_secretAccessKey' ) || process . env . HMD_S3_SECRET_ACCESS_KEY || config . s3 . secretAccessKey ,
6872 region : process . env . HMD_S3_REGION || config . s3 . region
6973}
7074var s3bucket = process . env . HMD_S3_BUCKET || config . s3 . bucket ;
7175
7276// auth
73- var facebook = ( process . env . HMD_FACEBOOK_CLIENTID && process . env . HMD_FACEBOOK_CLIENTSECRET ) ? {
74- clientID : process . env . HMD_FACEBOOK_CLIENTID ,
75- clientSecret : process . env . HMD_FACEBOOK_CLIENTSECRET
77+ var facebook = ( process . env . HMD_FACEBOOK_CLIENTID && process . env . HMD_FACEBOOK_CLIENTSECRET || fs . existsSync ( '/run/secrets/facebook_clientID' ) && fs . existsSync ( '/run/secrets/facebook_clientSecret' ) ) ? {
78+ clientID : handleDockerSecret ( 'facebook_clientID' ) || process . env . HMD_FACEBOOK_CLIENTID ,
79+ clientSecret : handleDockerSecret ( 'facebook_clientSecret' ) || process . env . HMD_FACEBOOK_CLIENTSECRET
7680} : config . facebook || false ;
77- var twitter = ( process . env . HMD_TWITTER_CONSUMERKEY && process . env . HMD_TWITTER_CONSUMERSECRET ) ? {
78- consumerKey : process . env . HMD_TWITTER_CONSUMERKEY ,
79- consumerSecret : process . env . HMD_TWITTER_CONSUMERSECRET
81+ var twitter = ( process . env . HMD_TWITTER_CONSUMERKEY && process . env . HMD_TWITTER_CONSUMERSECRET || fs . existsSync ( '/run/secrets/twitter_consumerKey' ) && fs . existsSync ( '/run/secrets/twitter_consumerSecret' ) ) ? {
82+ consumerKey : handleDockerSecret ( 'twitter_consumerKey' ) || process . env . HMD_TWITTER_CONSUMERKEY ,
83+ consumerSecret : handleDockerSecret ( 'twitter_consumerSecret' ) || process . env . HMD_TWITTER_CONSUMERSECRET
8084} : config . twitter || false ;
81- var github = ( process . env . HMD_GITHUB_CLIENTID && process . env . HMD_GITHUB_CLIENTSECRET ) ? {
82- clientID : process . env . HMD_GITHUB_CLIENTID ,
83- clientSecret : process . env . HMD_GITHUB_CLIENTSECRET
85+ var github = ( process . env . HMD_GITHUB_CLIENTID && process . env . HMD_GITHUB_CLIENTSECRET || fs . existsSync ( '/run/secrets/github_clientID' ) && fs . existsSync ( '/run/secrets/github_clientSecret' ) ) ? {
86+ clientID : handleDockerSecret ( 'github_clientID' ) || process . env . HMD_GITHUB_CLIENTID ,
87+ clientSecret : handleDockerSecret ( 'github_clientSecret' ) || process . env . HMD_GITHUB_CLIENTSECRET
8488} : config . github || false ;
85- var gitlab = ( process . env . HMD_GITLAB_CLIENTID && process . env . HMD_GITLAB_CLIENTSECRET ) ? {
89+ var gitlab = ( process . env . HMD_GITLAB_CLIENTID && process . env . HMD_GITLAB_CLIENTSECRET || fs . existsSync ( '/run/secrets/gitlab_clientID' ) && fs . existsSync ( '/run/secrets/gitlab_clientSecret' ) ) ? {
8690 baseURL : process . env . HMD_GITLAB_BASEURL ,
87- clientID : process . env . HMD_GITLAB_CLIENTID ,
88- clientSecret : process . env . HMD_GITLAB_CLIENTSECRET
91+ clientID : handleDockerSecret ( 'gitlab_clientID' ) || process . env . HMD_GITLAB_CLIENTID ,
92+ clientSecret : handleDockerSecret ( 'gitlab_clientSecret' ) || process . env . HMD_GITLAB_CLIENTSECRET
8993} : config . gitlab || false ;
90- var dropbox = ( process . env . HMD_DROPBOX_CLIENTID && process . env . HMD_DROPBOX_CLIENTSECRET ) ? {
91- clientID : process . env . HMD_DROPBOX_CLIENTID ,
92- clientSecret : process . env . HMD_DROPBOX_CLIENTSECRET
94+ var dropbox = ( process . env . HMD_DROPBOX_CLIENTID && process . env . HMD_DROPBOX_CLIENTSECRET || fs . existsSync ( '/run/secrets/dropbox_clientID' ) && fs . existsSync ( '/run/secrets/dropbox_clientSecret' ) ) ? {
95+ clientID : handleDockerSecret ( 'dropbox_clientID' ) || process . env . HMD_DROPBOX_CLIENTID ,
96+ clientSecret : handleDockerSecret ( 'dropbox_clientSecret' ) || process . env . HMD_DROPBOX_CLIENTSECRET
9397} : config . dropbox || false ;
94- var google = ( process . env . HMD_GOOGLE_CLIENTID && process . env . HMD_GOOGLE_CLIENTSECRET ) ? {
98+ var google = ( process . env . HMD_GOOGLE_CLIENTID && process . env . HMD_GOOGLE_CLIENTSECRET || fs . existsSync ( '/run/secrets/google_clientID' ) && fs . existsSync ( '/run/secrets/google_clientSecret' ) ) ? {
9599 clientID : process . env . HMD_GOOGLE_CLIENTID ,
96100 clientSecret : process . env . HMD_GOOGLE_CLIENTSECRET
97101} : config . google || false ;
@@ -130,7 +134,7 @@ if (process.env.HMD_LDAP_TLS_CA) {
130134if ( process . env . HMD_LDAP_PROVIDERNAME ) {
131135 ldap . providerName = process . env . HMD_LDAP_PROVIDERNAME ;
132136}
133- var imgur = process . env . HMD_IMGUR_CLIENTID || config . imgur || false ;
137+ var imgur = handleDockerSecret ( 'imgur_clientid' ) || process . env . HMD_IMGUR_CLIENTID || config . imgur || false ;
134138var email = process . env . HMD_EMAIL ? ( process . env . HMD_EMAIL === 'true' ) : ! ! config . email ;
135139var allowemailregister = process . env . HMD_ALLOW_EMAIL_REGISTER ? ( process . env . HMD_ALLOW_EMAIL_REGISTER === 'true' ) : ( ( typeof config . allowemailregister === 'boolean' ) ? config . allowemailregister : true ) ;
136140
0 commit comments