11// external modules
22var fs = require ( 'fs' ) ;
33var path = require ( 'path' ) ;
4+ var fs = require ( 'fs' ) ;
45
56// configs
67var env = process . env . NODE_ENV || 'development' ;
78var config = require ( path . join ( __dirname , '..' , 'config.json' ) ) [ env ] ;
89var debug = process . env . DEBUG ? ( process . env . DEBUG === 'true' ) : ( ( typeof config . debug === 'boolean' ) ? config . debug : ( env === 'development' ) ) ;
910
11+ // Create function that reads docker secrets but fails fast in case of a non docker environment
12+ var handleDockerSecret = fs . existsSync ( '/run/secrets/' ) ? function ( secret ) { return fs . existsSync ( '/run/secrets/' + secret ) ? fs . readFileSync ( '/run/secrets/' + secret ) : null ; ) } : function ( ) { return null }
13+
1014// url
1115var domain = process . env . DOMAIN || process . env . HMD_DOMAIN || config . domain || '' ;
1216var urlpath = process . env . URL_PATH || process . env . HMD_URL_PATH || config . urlpath || '' ;
@@ -37,10 +41,10 @@ var dburl = process.env.HMD_DB_URL || process.env.DATABASE_URL || config.dburl;
3741var db = config . db || { } ;
3842
3943// ssl path
40- var sslkeypath = config . sslkeypath || '' ;
41- var sslcertpath = config . sslcertpath || '' ;
42- var sslcapath = config . sslcapath || '' ;
43- var dhparampath = config . dhparampath || '' ;
44+ var sslkeypath = ( fs . existsSync ( '/run/secrets/key.pem' ) ? '/run/secrets/key.pem' : null ) || config . sslkeypath || '' ;
45+ var sslcertpath = ( fs . existsSync ( '/run/secrets/cert.pem' ) ? '/run/secrets/cert.pem' : null ) || config . sslcertpath || '' ;
46+ var sslcapath = ( fs . existsSync ( '/run/secrets/ca.pem' ) ? '/run/secrets/ca.pem' : null ) || config . sslcapath || '' ;
47+ var dhparampath = ( fs . existsSync ( '/run/secrets/dhparam.pem' ) ? '/run/secrets/dhparam.pem' : null ) || config . dhparampath || '' ;
4448
4549// other path
4650var tmppath = config . tmppath || './tmp' ;
@@ -54,7 +58,7 @@ var slidepath = config.slidepath || './public/views/slide.ejs';
5458
5559// session
5660var sessionname = config . sessionname || 'connect.sid' ;
57- var sessionsecret = config . sessionsecret || 'secret' ;
61+ var sessionsecret = handleDockerSecret ( 'sessionsecret' ) || config . sessionsecret || 'secret' ;
5862var sessionlife = config . sessionlife || 14 * 24 * 60 * 60 * 1000 ; //14 days
5963
6064// static files
@@ -72,37 +76,38 @@ var imageUploadType = process.env.HMD_IMAGE_UPLOAD_TYPE || config.imageUploadTyp
7276
7377config . s3 = config . s3 || { } ;
7478var s3 = {
75- accessKeyId : process . env . HMD_S3_ACCESS_KEY_ID || config . s3 . accessKeyId ,
76- secretAccessKey : process . env . HMD_S3_SECRET_ACCESS_KEY || config . s3 . secretAccessKey ,
79+ accessKeyId : handleDockerSecret ( 's3_acccessKeyId' ) || process . env . HMD_S3_ACCESS_KEY_ID || config . s3 . accessKeyId ,
80+ secretAccessKey : handleDockerSecret ( 's3_secretAccessKey' ) || process . env . HMD_S3_SECRET_ACCESS_KEY || config . s3 . secretAccessKey ,
7781 region : process . env . HMD_S3_REGION || config . s3 . region
7882}
7983var s3bucket = process . env . HMD_S3_BUCKET || config . s3 . bucket ;
8084
8185// auth
82- var facebook = ( process . env . HMD_FACEBOOK_CLIENTID && process . env . HMD_FACEBOOK_CLIENTSECRET ) ? {
83- clientID : process . env . HMD_FACEBOOK_CLIENTID ,
84- clientSecret : process . env . HMD_FACEBOOK_CLIENTSECRET
86+ var facebook = ( process . env . HMD_FACEBOOK_CLIENTID && process . env . HMD_FACEBOOK_CLIENTSECRET || fs . existsSync ( '/run/secrets/facebook_clientID' ) && fs . existsSync ( '/run/secrets/facebook_clientSecret' ) ) ? {
87+ clientID : handleDockerSecret ( 'facebook_clientID' ) || process . env . HMD_FACEBOOK_CLIENTID ,
88+ clientSecret : handleDockerSecret ( 'facebook_clientSecret' ) || process . env . HMD_FACEBOOK_CLIENTSECRET
8589} : config . facebook || false ;
86- var twitter = ( process . env . HMD_TWITTER_CONSUMERKEY && process . env . HMD_TWITTER_CONSUMERSECRET ) ? {
87- consumerKey : process . env . HMD_TWITTER_CONSUMERKEY ,
88- consumerSecret : process . env . HMD_TWITTER_CONSUMERSECRET
90+ var twitter = ( process . env . HMD_TWITTER_CONSUMERKEY && process . env . HMD_TWITTER_CONSUMERSECRET || fs . existsSync ( '/run/secrets/twitter_consumerKey' ) && fs . existsSync ( '/run/secrets/twitter_consumerSecret' ) ) ? {
91+ consumerKey : handleDockerSecret ( 'twitter_consumerKey' ) || process . env . HMD_TWITTER_CONSUMERKEY ,
92+ consumerSecret : handleDockerSecret ( 'twitter_consumerSecret' ) || process . env . HMD_TWITTER_CONSUMERSECRET
8993} : config . twitter || false ;
90- var github = ( process . env . HMD_GITHUB_CLIENTID && process . env . HMD_GITHUB_CLIENTSECRET ) ? {
91- clientID : process . env . HMD_GITHUB_CLIENTID ,
92- clientSecret : process . env . HMD_GITHUB_CLIENTSECRET
94+ var github = ( process . env . HMD_GITHUB_CLIENTID && process . env . HMD_GITHUB_CLIENTSECRET || fs . existsSync ( '/run/secrets/github_clientID' ) && fs . existsSync ( '/run/secrets/github_clientSecret' ) ) ? {
95+ clientID : handleDockerSecret ( 'github_clientID' ) || process . env . HMD_GITHUB_CLIENTID ,
96+ clientSecret : handleDockerSecret ( 'github_clientSecret' ) || process . env . HMD_GITHUB_CLIENTSECRET
9397} : config . github || false ;
94- var gitlab = ( process . env . HMD_GITLAB_CLIENTID && process . env . HMD_GITLAB_CLIENTSECRET ) ? {
98+ var gitlab = ( process . env . HMD_GITLAB_CLIENTID && process . env . HMD_GITLAB_CLIENTSECRET || fs . existsSync ( '/run/secrets/gitlab_clientID' ) && fs . existsSync ( '/run/secrets/gitlab_clientSecret' ) ) ? {
9599 baseURL : process . env . HMD_GITLAB_BASEURL ,
96- clientID : process . env . HMD_GITLAB_CLIENTID ,
97- clientSecret : process . env . HMD_GITLAB_CLIENTSECRET
100+ clientID : handleDockerSecret ( 'gitlab_clientID' ) || process . env . HMD_GITLAB_CLIENTID ,
101+ clientSecret : handleDockerSecret ( 'gitlab_clientSecret' ) || process . env . HMD_GITLAB_CLIENTSECRET
98102} : config . gitlab || false ;
99- var dropbox = ( process . env . HMD_DROPBOX_CLIENTID && process . env . HMD_DROPBOX_CLIENTSECRET ) ? {
100- clientID : process . env . HMD_DROPBOX_CLIENTID ,
101- clientSecret : process . env . HMD_DROPBOX_CLIENTSECRET
103+ var dropbox = ( ( process . env . HMD_DROPBOX_CLIENTID && process . env . HMD_DROPBOX_CLIENTSECRET ) || ( fs . existsSync ( '/run/secrets/dropbox_clientID' ) && fs . existsSync ( '/run/secrets/dropbox_clientSecret' ) ) ) ? {
104+ clientID : handleDockerSecret ( 'dropbox_clientID' ) || process . env . HMD_DROPBOX_CLIENTID ,
105+ clientSecret : handleDockerSecret ( 'dropbox_clientSecret' ) || process . env . HMD_DROPBOX_CLIENTSECRET
102106} : ( config . dropbox && config . dropbox . clientID && config . dropbox . clientSecret && config . dropbox ) || false ;
103- var google = ( process . env . HMD_GOOGLE_CLIENTID && process . env . HMD_GOOGLE_CLIENTSECRET ) ? {
104- clientID : process . env . HMD_GOOGLE_CLIENTID ,
105- clientSecret : process . env . HMD_GOOGLE_CLIENTSECRET
107+ var google = ( ( process . env . HMD_GOOGLE_CLIENTID && process . env . HMD_GOOGLE_CLIENTSECRET )
108+ || ( fs . existsSync ( '/run/secrets/google_clientID' ) && fs . existsSync ( '/run/secrets/google_clientSecret' ) ) ) ? {
109+ clientID : handleDockerSecret ( 'google_clientID' ) || process . env . HMD_GOOGLE_CLIENTID ,
110+ clientSecret : handleDockerSecret ( 'google_clientSecret' ) || process . env . HMD_GOOGLE_CLIENTSECRET
106111} : ( config . google && config . google . clientID && config . google . clientSecret && config . google ) || false ;
107112var ldap = config . ldap || ( (
108113 process . env . HMD_LDAP_URL ||
@@ -146,7 +151,7 @@ if (process.env.HMD_LDAP_TLS_CA) {
146151if ( process . env . HMD_LDAP_PROVIDERNAME ) {
147152 ldap . providerName = process . env . HMD_LDAP_PROVIDERNAME ;
148153}
149- var imgur = process . env . HMD_IMGUR_CLIENTID || config . imgur || false ;
154+ var imgur = handleDockerSecret ( 'imgur_clientid' ) || process . env . HMD_IMGUR_CLIENTID || config . imgur || false ;
150155var email = process . env . HMD_EMAIL ? ( process . env . HMD_EMAIL === 'true' ) : ! ! config . email ;
151156var allowemailregister = process . env . HMD_ALLOW_EMAIL_REGISTER ? ( process . env . HMD_ALLOW_EMAIL_REGISTER === 'true' ) : ( ( typeof config . allowemailregister === 'boolean' ) ? config . allowemailregister : true ) ;
152157
0 commit comments