165 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// external modules
 | 
						|
var path = require('path');
 | 
						|
 | 
						|
// configs
 | 
						|
var env = process.env.NODE_ENV || 'development';
 | 
						|
var config = require(path.join(__dirname, '..', 'config.json'))[env];
 | 
						|
var debug = process.env.DEBUG ? (process.env.DEBUG === 'true') : ((typeof config.debug === 'boolean') ? config.debug : (env === 'development'));
 | 
						|
 | 
						|
// url
 | 
						|
var domain = process.env.DOMAIN || process.env.HMD_DOMAIN || config.domain || '';
 | 
						|
var urlpath = process.env.URL_PATH || process.env.HMD_URL_PATH || config.urlpath || '';
 | 
						|
var port = process.env.PORT || process.env.HMD_PORT || config.port || 3000;
 | 
						|
var alloworigin = process.env.HMD_ALLOW_ORIGIN ? process.env.HMD_ALLOW_ORIGIN.split(',') : (config.alloworigin || ['localhost']);
 | 
						|
 | 
						|
var usessl = !!config.usessl;
 | 
						|
var protocolusessl = (usessl === true && typeof process.env.HMD_PROTOCOL_USESSL === 'undefined' && typeof config.protocolusessl === 'undefined')
 | 
						|
     ? true : (process.env.HMD_PROTOCOL_USESSL ? (process.env.HMD_PROTOCOL_USESSL === 'true') : !!config.protocolusessl);
 | 
						|
var urladdport = process.env.HMD_URL_ADDPORT ? (process.env.HMD_URL_ADDPORT === 'true') : !!config.urladdport;
 | 
						|
 | 
						|
var usecdn = process.env.HMD_USECDN ? (process.env.HMD_USECDN === 'true') : ((typeof config.usecdn === 'boolean') ? config.usecdn : true);
 | 
						|
 | 
						|
var allowanonymous = process.env.HMD_ALLOW_ANONYMOUS ? (process.env.HMD_ALLOW_ANONYMOUS === 'true') : ((typeof config.allowanonymous === 'boolean') ? config.allowanonymous : true);
 | 
						|
 | 
						|
var allowfreeurl = process.env.HMD_ALLOW_FREEURL ? (process.env.HMD_ALLOW_FREEURL === 'true') : !!config.allowfreeurl;
 | 
						|
 | 
						|
// db
 | 
						|
var dburl = config.dburl || process.env.HMD_DB_URL || process.env.DATABASE_URL;
 | 
						|
var db = config.db || {};
 | 
						|
 | 
						|
// ssl path
 | 
						|
var sslkeypath = config.sslkeypath || '';
 | 
						|
var sslcertpath = config.sslcertpath || '';
 | 
						|
var sslcapath = config.sslcapath || '';
 | 
						|
var dhparampath = config.dhparampath || '';
 | 
						|
 | 
						|
// other path
 | 
						|
var tmppath = config.tmppath || './tmp';
 | 
						|
var defaultnotepath = config.defaultnotepath || './public/default.md';
 | 
						|
var docspath = config.docspath || './public/docs';
 | 
						|
var indexpath = config.indexpath || './public/views/index.ejs';
 | 
						|
var hackmdpath = config.hackmdpath || './public/views/hackmd.ejs';
 | 
						|
var errorpath = config.errorpath || './public/views/error.ejs';
 | 
						|
var prettypath = config.prettypath || './public/views/pretty.ejs';
 | 
						|
var slidepath = config.slidepath || './public/views/slide.ejs';
 | 
						|
 | 
						|
// session
 | 
						|
var sessionname = config.sessionname || 'connect.sid';
 | 
						|
var sessionsecret = config.sessionsecret || 'secret';
 | 
						|
var sessionlife = config.sessionlife || 14 * 24 * 60 * 60 * 1000; //14 days
 | 
						|
 | 
						|
// static files
 | 
						|
var staticcachetime = config.staticcachetime || 1 * 24 * 60 * 60 * 1000; // 1 day
 | 
						|
 | 
						|
// socket.io
 | 
						|
var heartbeatinterval = config.heartbeatinterval || 5000;
 | 
						|
var heartbeattimeout = config.heartbeattimeout || 10000;
 | 
						|
 | 
						|
// document
 | 
						|
var documentmaxlength = config.documentmaxlength || 100000;
 | 
						|
 | 
						|
// image upload setting, available options are imgur/s3/filesystem
 | 
						|
var imageUploadType = process.env.HMD_IMAGE_UPLOAD_TYPE || config.imageUploadType || 'imgur';
 | 
						|
 | 
						|
config.s3 = config.s3 || {};
 | 
						|
var s3 = {
 | 
						|
    accessKeyId: process.env.HMD_S3_ACCESS_KEY_ID || config.s3.accessKeyId,
 | 
						|
    secretAccessKey: process.env.HMD_S3_SECRET_ACCESS_KEY || config.s3.secretAccessKey,
 | 
						|
    region: process.env.HMD_S3_REGION || config.s3.region
 | 
						|
}
 | 
						|
var s3bucket = process.env.HMD_S3_BUCKET || config.s3.bucket;
 | 
						|
 | 
						|
// auth
 | 
						|
var facebook = (process.env.HMD_FACEBOOK_CLIENTID && process.env.HMD_FACEBOOK_CLIENTSECRET) ? {
 | 
						|
    clientID: process.env.HMD_FACEBOOK_CLIENTID,
 | 
						|
    clientSecret: process.env.HMD_FACEBOOK_CLIENTSECRET
 | 
						|
} : config.facebook || false;
 | 
						|
var twitter = (process.env.HMD_TWITTER_CONSUMERKEY && process.env.HMD_TWITTER_CONSUMERSECRET) ? {
 | 
						|
    consumerKey: process.env.HMD_TWITTER_CONSUMERKEY,
 | 
						|
    consumerSecret: process.env.HMD_TWITTER_CONSUMERSECRET
 | 
						|
} : config.twitter || false;
 | 
						|
var github = (process.env.HMD_GITHUB_CLIENTID && process.env.HMD_GITHUB_CLIENTSECRET) ? {
 | 
						|
    clientID: process.env.HMD_GITHUB_CLIENTID,
 | 
						|
    clientSecret: process.env.HMD_GITHUB_CLIENTSECRET
 | 
						|
} : config.github || false;
 | 
						|
var gitlab = (process.env.HMD_GITLAB_CLIENTID && process.env.HMD_GITLAB_CLIENTSECRET) ? {
 | 
						|
    baseURL: process.env.HMD_GITLAB_BASEURL,
 | 
						|
    clientID: process.env.HMD_GITLAB_CLIENTID,
 | 
						|
    clientSecret: process.env.HMD_GITLAB_CLIENTSECRET
 | 
						|
} : config.gitlab || false;
 | 
						|
var dropbox = (process.env.HMD_DROPBOX_CLIENTID && process.env.HMD_DROPBOX_CLIENTSECRET) ? {
 | 
						|
    clientID: process.env.HMD_DROPBOX_CLIENTID,
 | 
						|
    clientSecret: process.env.HMD_DROPBOX_CLIENTSECRET
 | 
						|
} : config.dropbox || false;
 | 
						|
var google = (process.env.HMD_GOOGLE_CLIENTID && process.env.HMD_GOOGLE_CLIENTSECRET) ? {
 | 
						|
    clientID: process.env.HMD_GOOGLE_CLIENTID,
 | 
						|
    clientSecret: process.env.HMD_GOOGLE_CLIENTSECRET
 | 
						|
} : config.google || false;
 | 
						|
var imgur = process.env.HMD_IMGUR_CLIENTID || config.imgur || false;
 | 
						|
var email = process.env.HMD_EMAIL ? (process.env.HMD_EMAIL === 'true') : !!config.email;
 | 
						|
 | 
						|
function getserverurl() {
 | 
						|
    var url = '';
 | 
						|
    if (domain) {
 | 
						|
        var protocol = protocolusessl ? 'https://' : 'http://';
 | 
						|
        url = protocol + domain;
 | 
						|
        if (urladdport && ((usessl && port != 443) || (!usessl && port != 80)))
 | 
						|
            url += ':' + port;
 | 
						|
    }
 | 
						|
    if (urlpath)
 | 
						|
        url += '/' + urlpath;
 | 
						|
    return url;
 | 
						|
}
 | 
						|
 | 
						|
var version = '0.5.0';
 | 
						|
var minimumCompatibleVersion = '0.5.0';
 | 
						|
var maintenance = true;
 | 
						|
var cwd = path.join(__dirname, '..');
 | 
						|
 | 
						|
module.exports = {
 | 
						|
    version: version,
 | 
						|
    minimumCompatibleVersion: minimumCompatibleVersion,
 | 
						|
    maintenance: maintenance,
 | 
						|
    debug: debug,
 | 
						|
    urlpath: urlpath,
 | 
						|
    port: port,
 | 
						|
    alloworigin: alloworigin,
 | 
						|
    usessl: usessl,
 | 
						|
    serverurl: getserverurl(),
 | 
						|
    usecdn: usecdn,
 | 
						|
    allowanonymous: allowanonymous,
 | 
						|
    allowfreeurl: allowfreeurl,
 | 
						|
    dburl: dburl,
 | 
						|
    db: db,
 | 
						|
    sslkeypath: path.join(cwd, sslkeypath),
 | 
						|
    sslcertpath: path.join(cwd, sslcertpath),
 | 
						|
    sslcapath: path.join(cwd, sslcapath),
 | 
						|
    dhparampath: path.join(cwd, dhparampath),
 | 
						|
    tmppath: path.join(cwd, tmppath),
 | 
						|
    defaultnotepath: path.join(cwd, defaultnotepath),
 | 
						|
    docspath: path.join(cwd, docspath),
 | 
						|
    indexpath: path.join(cwd, indexpath),
 | 
						|
    hackmdpath: path.join(cwd, hackmdpath),
 | 
						|
    errorpath: path.join(cwd, errorpath),
 | 
						|
    prettypath: path.join(cwd, prettypath),
 | 
						|
    slidepath: path.join(cwd, slidepath),
 | 
						|
    sessionname: sessionname,
 | 
						|
    sessionsecret: sessionsecret,
 | 
						|
    sessionlife: sessionlife,
 | 
						|
    staticcachetime: staticcachetime,
 | 
						|
    heartbeatinterval: heartbeatinterval,
 | 
						|
    heartbeattimeout: heartbeattimeout,
 | 
						|
    documentmaxlength: documentmaxlength,
 | 
						|
    facebook: facebook,
 | 
						|
    twitter: twitter,
 | 
						|
    github: github,
 | 
						|
    gitlab: gitlab,
 | 
						|
    dropbox: dropbox,
 | 
						|
    google: google,
 | 
						|
    imgur: imgur,
 | 
						|
    email: email,
 | 
						|
    imageUploadType: imageUploadType,
 | 
						|
    s3: s3,
 | 
						|
    s3bucket: s3bucket
 | 
						|
};
 |