2017-02-22 02:47:42 +00:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
2017-04-27 18:20:09 +00:00
|
|
|
const debug = require("debug");
|
2017-02-22 02:47:42 +00:00
|
|
|
const fs = require("fs");
|
|
|
|
const path = require("path");
|
2017-03-04 19:35:26 +00:00
|
|
|
const Sequelize = require("sequelize");
|
|
|
|
const Promise = require("bluebird");
|
2017-04-27 18:20:09 +00:00
|
|
|
const request = require("request-promise");
|
|
|
|
const requestDebug = require("request-debug");
|
2017-02-22 02:47:42 +00:00
|
|
|
|
2017-02-22 15:25:46 +00:00
|
|
|
|
|
|
|
const configPath = path.resolve(process.argv[2] || `${__dirname}/../config.js`);
|
2017-02-22 02:47:42 +00:00
|
|
|
|
2017-02-22 15:25:46 +00:00
|
|
|
if(!fs.existsSync(configPath)) {
|
2017-02-22 02:47:42 +00:00
|
|
|
console.error(`Usage: ${process.argv[0]} ${process.argv[1]} <config.js>`);
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
|
2017-02-22 15:25:46 +00:00
|
|
|
const config = require(configPath);
|
|
|
|
|
|
|
|
process.env.fmUserAgent = config.userAgent;
|
2014-04-07 00:33:49 +00:00
|
|
|
|
2017-02-26 15:51:37 +00:00
|
|
|
|
2017-04-27 18:20:09 +00:00
|
|
|
if(debug.enabled("request")) {
|
|
|
|
requestDebug(request);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-02-26 15:51:37 +00:00
|
|
|
var Database = require("./database/database");
|
|
|
|
var utils = require("./utils");
|
|
|
|
var Socket = require("./socket");
|
|
|
|
var webserver = require("./webserver");
|
|
|
|
|
2014-12-14 03:43:05 +00:00
|
|
|
Object.defineProperty(Error.prototype, "toJSON", {
|
|
|
|
value: function() {
|
2014-12-27 02:47:40 +00:00
|
|
|
var str = this.message;
|
|
|
|
if(this.errors) {
|
|
|
|
for(var i=0; i<this.errors.length; i++)
|
|
|
|
str += "\n"+this.errors[i].message;
|
|
|
|
}
|
|
|
|
|
|
|
|
return str;
|
2014-12-14 03:43:05 +00:00
|
|
|
},
|
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
|
2016-10-30 14:01:21 +00:00
|
|
|
process.on('unhandledRejection', (reason, promise) => {
|
|
|
|
console.trace("Unhandled rejection", reason);
|
2016-10-18 11:27:20 +00:00
|
|
|
});
|
|
|
|
|
2017-03-04 19:35:26 +00:00
|
|
|
|
|
|
|
let bluebirdConfig = {
|
|
|
|
longStackTraces: true
|
|
|
|
};
|
|
|
|
Promise.config(bluebirdConfig)
|
|
|
|
Sequelize.Promise.config(bluebirdConfig);
|
|
|
|
|
|
|
|
|
2017-02-22 15:25:46 +00:00
|
|
|
const database = new Database(config.db);
|
2017-02-09 19:13:45 +00:00
|
|
|
|
2017-02-09 22:55:56 +00:00
|
|
|
utils.promiseAuto({
|
|
|
|
databaseConnect: database.connect(),
|
2016-03-04 19:40:02 +00:00
|
|
|
|
2017-02-09 22:55:56 +00:00
|
|
|
server: (databaseConnect) => {
|
2017-02-22 15:25:46 +00:00
|
|
|
return webserver.init(database, config.port, config.host);
|
2016-10-30 14:01:21 +00:00
|
|
|
},
|
2014-04-07 00:33:49 +00:00
|
|
|
|
2017-02-09 22:55:56 +00:00
|
|
|
socket: (server) => {
|
2016-10-30 14:01:21 +00:00
|
|
|
return new Socket(server, database);
|
|
|
|
}
|
|
|
|
}).then(res => {
|
2016-10-11 20:28:36 +00:00
|
|
|
console.log("Server started on " + (config.host || "*" ) + ":" + config.port);
|
2016-10-30 14:01:21 +00:00
|
|
|
}).catch(err => {
|
2016-10-11 20:28:36 +00:00
|
|
|
console.error(err);
|
|
|
|
process.exit(1);
|
2016-10-30 14:01:21 +00:00
|
|
|
});
|