UNPKG

imboard

Version:

Most convenient platform for webpage development.

177 lines (149 loc) 5.43 kB
global.useConsole = true; process.argv.forEach(function (val, index, array) { if(index == 2 && val == "-deploy") global.useConsole = false; }); global._path = { home : __dirname, content : __dirname + "/content", src : __dirname + "/src", resources : __dirname + "/resources", lib : __dirname + "/src/lib", log : __dirname + "/logs", userdata : __dirname + "/userdata" }; global._multipart = require('connect-multiparty'); global._config = require(__dirname + '/resources/properties/config'); global._aws = _config.aws; global._OAuth = _config.OAuth; global._code = _config.code; global._port = _config.server.port; global._modules = {}; /** * */ var fs = require('fs'); var express = require('express'); var methodOverride = require('method-override'); var mysql = require('mysql'); var session = require('express-session'); var bodyParser = require("body-parser"); var cookieParser = require("cookie-parser"); var favicon = require('serve-favicon'); var https = require("https"); var Immy = require(_path.lib + "/Immy"); var Logger = require(_path.lib + "/Logger"); var ModuleScanner = require(_path.lib + "/ModuleScanner"); var PropertyLoader = require(_path.lib + "/PropertyLoader"); var DataBindModuleLoader = require(_path.lib + "/DataBindModuleLoader"); var ServiceLoader = require(_path.lib + "/ServiceLoader"); var fs = require('fs'); if(!fs.existsSync(_path.log)) fs.mkdirSync(_path.log, 0777); if(!fs.existsSync(_path.userdata)) fs.mkdirSync(_path.userdata, 0777); /** * global 객체 생성 */ global.pool = mysql.createPool(_config.jdbc); global._log = new Logger(_path.log + "/debug.log", _config.log.level, _config.log.colorize, useConsole); global._loge = new Logger(_path.log + "/exception.log", _config.log.level, _config.log.colorize, useConsole); global.ParameterBinder = require(_path.lib + "/ParameterBinder.js"); global.Delegator = require(_path.lib + "/Delegator.js"); global.Render = require(_path.lib + "/Render.js"); global._async = require('async'); global._utils = require(_path.lib + "/Utils.js"); global._immy = new Immy(pool, _log, _loge); /** * 서버에 백그라운드로 올렸을때 오류 나는거때문에 콘솔 오버라이드 */ if(!global.useConsole) { console = {}; for(var key in _log) { console[key] = _log[key]; } console.log = function() { _log.debug(arguments); }; } /** * Express 설정 */ global.app = express(); var server = app.listen(_port, function() { _log.debug('Listening on port %d', server.address().port); }); app.use('/content', express.static(_path.content)); app.use('/resources', express.static(_path.userdata)); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); app.use(cookieParser()); app.use(session({ secret: 'imboard', resave: true, saveUninitialized: true})); app.use(methodOverride()); app.use(require('express-domain-middleware')); app.use(function(req, res, next) { var domain = require("domain"); var reqDomain = domain.create(); reqDomain.add(req); reqDomain.add(res); reqDomain.on('error', function (err) { _immy.releaseConnection(); _loge.error("\n\n"); _loge.error("================================================="); _loge.error("time : " + new Date().toString()); _loge.error("name : DomainException"); _loge.error("-------------------------------------------------"); _loge.error(err.stack); _loge.error("=================================================\n\n"); res.end(JSON.stringify({code : _code.EXCEPTION, message : err.stack})); }); reqDomain.run(next); }); app.use(function(err, req, res, next) { _loge.error("================================================="); _loge.error("time : " + new Date().toString()); _loge.error("name : Exception"); _loge.error("-------------------------------------------------"); _loge.error(err.stack); _loge.error("================================================="); res.statusCode = 500; res.end(); }); process.on('uncaughtException', function (err) { _loge.error("\n\n"); _loge.error("================================================="); _loge.error("time : " + new Date().toString()); _loge.error("name : UncaughtException"); _loge.error("-------------------------------------------------"); _loge.error(err.stack); _loge.error("=================================================\n\n"); }); var FacebookIP = require(_path.lib + "/IdentityProvider").facebook; var TwitterIP = require(_path.lib + "/IdentityProvider").twitter; var GoogleIP = require(_path.lib + "/IdentityProvider").google; FacebookIP(app); TwitterIP(app); GoogleIP(app); _immy.scanTypeHandler(_path.src + "/handler"); _immy.scanModel(_path.src + "/vo"); _immy.scanQuery(_path.resources + "/mybatis"); ModuleScanner.setLogger(_log); ModuleScanner.scanRouter(_path.src + "/router"); DataBindModuleLoader.load(_path.src + "/module"); if(fs.existsSync(_path.content + "/frame/" + _config.frame + "/src/module")) DataBindModuleLoader.load(_path.content + "/frame/" + _config.frame + "/src/module"); if(fs.existsSync(_path.content + "/frame/" + _config.frame + "/src/router")) ModuleScanner.scanRouter(_path.content + "/frame/" + _config.frame + "/src/router"); if(fs.existsSync(_path.content + "/frame/" + _config.frame + "/src/service")) ServiceLoader.load(_path.content + "/frame/" + _config.frame + "/src/service"); PropertyLoader.load(__dirname);