Merge branch 'nconf'
commit
3c62b86096
@ -0,0 +1,89 @@
|
||||
var async = require('async'),
|
||||
utils = require('../public/src/utils.js'),
|
||||
fs = require('fs'),
|
||||
url = require('url'),
|
||||
path = require('path'),
|
||||
install = {
|
||||
questions: [
|
||||
'base_url|Publically accessible URL of this installation? (http://localhost)',
|
||||
'port|Port number of your install? (4567)',
|
||||
'use_port|Will you be using a port number to access NodeBB? (y)',
|
||||
'redis:host|Host IP or address of your Redis instance? (127.0.0.1)',
|
||||
'redis:port|Host port of your Redis instance? (6379)',
|
||||
'redis:password|Password of your Redis database? (no password)',
|
||||
'secret|Your NodeBB secret? (keyboard mash for a bit here)',
|
||||
'bcrypt_rounds|The number of rounds to use for bcrypt.genSalt? (10)'
|
||||
],
|
||||
defaults: {
|
||||
"base_url": 'http://localhost',
|
||||
"port": 4567,
|
||||
"use_port": true,
|
||||
"redis:host": '127.0.0.1',
|
||||
"redis:port": 6379,
|
||||
"redis:password": '',
|
||||
"secret": utils.generateUUID(),
|
||||
"bcrypt_rounds": 10,
|
||||
"upload_path": '/public/uploads'
|
||||
},
|
||||
ask: function(question, callback) {
|
||||
process.stdin.resume();
|
||||
process.stdout.write(question + ': ');
|
||||
|
||||
process.stdin.once('data', function(data) {
|
||||
callback(data.toString().trim());
|
||||
});
|
||||
},
|
||||
setup: function(callback) {
|
||||
var config = {};
|
||||
for(d in install.defaults) config[d] = install.defaults[d];
|
||||
|
||||
async.eachSeries(install.questions, function(question, next) {
|
||||
var question = question.split('|');
|
||||
install.ask(question[1], function(value) {
|
||||
if (value !== '') config[question[0]] = value;
|
||||
next();
|
||||
});
|
||||
}, function() {
|
||||
var urlObject = url.parse(config.base_url),
|
||||
relative_path = (urlObject.pathname && urlObject.pathname.length > 1) ? urlObject.pathname : '',
|
||||
host = urlObject.host,
|
||||
protocol = urlObject.protocol,
|
||||
server_conf = config,
|
||||
client_conf = {
|
||||
socket: {
|
||||
address: protocol + '//' + host,
|
||||
port: config.port
|
||||
},
|
||||
api_url: protocol + '//' + host + (config.use_port ? ':' + config.port : '') + relative_path + '/api/',
|
||||
relative_path: relative_path
|
||||
};
|
||||
|
||||
server_conf.relative_path = relative_path;
|
||||
|
||||
install.save(server_conf, client_conf, callback);
|
||||
});
|
||||
},
|
||||
save: function(server_conf, client_conf, callback) {
|
||||
// Server Config
|
||||
async.parallel([
|
||||
function(next) {
|
||||
fs.writeFile(path.join(__dirname, '../', 'config.json'), JSON.stringify(server_conf, null, 4), function(err) {
|
||||
next(err);
|
||||
});
|
||||
},
|
||||
function(next) {
|
||||
fs.writeFile(path.join(__dirname, '../', 'public', 'config.json'), JSON.stringify(client_conf, null, 4), function(err) {
|
||||
next(err);
|
||||
});
|
||||
}
|
||||
], function(err) {
|
||||
process.stdout.write(
|
||||
"\n\nConfiguration Saved OK\n\n"
|
||||
);
|
||||
|
||||
callback(err);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = install;
|
Loading…
Reference in New Issue