1 | var express = require('express');
|
2 | var path = require('path');
|
3 | var favicon = require('serve-favicon');
|
4 | var logger = require('morgan');
|
5 | var cookieParser = require('cookie-parser');
|
6 | var bodyParser = require('body-parser');
|
7 | var MongoClient = require('mongodb').MongoClient;
|
8 | var handlebars = require('express-handlebars');
|
9 | var nconf = require('nconf');
|
10 |
|
11 | var routes = require('./routes/index');
|
12 |
|
13 | var app = express();
|
14 |
|
15 |
|
16 | app.set('views', path.join(__dirname, 'views'));
|
17 | app.engine('hbs', handlebars({ extname: 'hbs', defaultLayout: 'layout.hbs' }));
|
18 | app.set('view engine', 'hbs');
|
19 |
|
20 |
|
21 | handlebars = handlebars.create({
|
22 | helpers: {
|
23 | toJSON : function(object) {
|
24 | return JSON.stringify(object);
|
25 | },
|
26 | niceBool : function(object) {
|
27 | if(object === undefined){
|
28 | return "No";
|
29 | }
|
30 | if(object === true){
|
31 | return "Yes";
|
32 | }else{
|
33 | return "No";
|
34 | }
|
35 | },
|
36 | formatBytes : function(bytes) {
|
37 | if(bytes == 0) return '0 Byte';
|
38 | var k = 1000;
|
39 | var decimals = 2;
|
40 | var dm = decimals + 1 || 3;
|
41 | var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
42 | var i = Math.floor(Math.log(bytes) / Math.log(k));
|
43 | return (bytes / Math.pow(k, i)).toPrecision(dm) + ' ' + sizes[i];
|
44 | }
|
45 | }
|
46 | });
|
47 |
|
48 | app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
|
49 | app.use(logger('dev'));
|
50 | app.use(bodyParser.json({limit: '16mb'}));
|
51 | app.use(bodyParser.urlencoded({extended: false }));
|
52 | app.use(cookieParser());
|
53 |
|
54 |
|
55 | app.use("/ace", express.static(path.join(__dirname, 'node_modules/ace-builds/src-min/')));
|
56 | app.use("/font-awesome", express.static(path.join(__dirname, 'node_modules/font-awesome/')));
|
57 | app.use("/jquery", express.static(path.join(__dirname, 'node_modules/jquery/dist/')));
|
58 | app.use("/bootstrap", express.static(path.join(__dirname, 'node_modules/bootstrap/dist/')));
|
59 | app.use(express.static(path.join(__dirname, 'public')));
|
60 |
|
61 |
|
62 |
|
63 |
|
64 | var fs = require('fs');
|
65 | if (!fs.existsSync("config")){
|
66 | fs.mkdirSync("config");
|
67 | }
|
68 | if (!fs.existsSync("config/config.json")){
|
69 | fs.writeFileSync("config/config.json", "{}");
|
70 | }
|
71 | if (!fs.existsSync("config/app.json")){
|
72 | fs.writeFileSync("config/app.json", "{}");
|
73 | }
|
74 |
|
75 | var connection_config = path.join(__dirname, 'config', 'config.json');
|
76 | var app_config = path.join(__dirname, 'config', 'app.json');
|
77 |
|
78 |
|
79 | if (fs.existsSync(app_config, "utf8")) {
|
80 | if(fs.readFileSync(app_config, "utf8") == ""){
|
81 | fs.writeFileSync(app_config, "{}", 'utf8');
|
82 | }
|
83 | }
|
84 | if (fs.existsSync(connection_config, "utf8")) {
|
85 | if(fs.readFileSync(connection_config, "utf8") == ""){
|
86 | fs.writeFileSync(connection_config, "{}", 'utf8');
|
87 | }
|
88 | }
|
89 |
|
90 |
|
91 |
|
92 | nconf.add('connections', { type: 'file', file: connection_config });
|
93 | nconf.add('app', { type: 'file', file: app_config });
|
94 |
|
95 |
|
96 | var app_host = '0.0.0.0';
|
97 | var app_port = 1234;
|
98 |
|
99 |
|
100 | if(nconf.stores.app.get('app:host') != undefined){
|
101 | app_host = nconf.stores.app.get('app:host');
|
102 | }
|
103 | if(nconf.stores.app.get('app:port') != undefined){
|
104 | app_port = nconf.stores.app.get('app:port');
|
105 | }
|
106 |
|
107 |
|
108 | app.use(function (req, res, next) {
|
109 | req.nconf = nconf.stores.connections;
|
110 | req.handlebars = handlebars;
|
111 | next();
|
112 | });
|
113 |
|
114 | app.use('/', routes);
|
115 |
|
116 |
|
117 | app.use(function (req, res, next) {
|
118 | var err = new Error('Not Found');
|
119 | err.status = 404;
|
120 | next(err);
|
121 | });
|
122 |
|
123 |
|
124 |
|
125 |
|
126 |
|
127 | if (app.get('env') === 'development') {
|
128 | app.use(function (err, req, res, next) {
|
129 | res.status(err.status || 500);
|
130 | res.render('error', {
|
131 | message: err.message,
|
132 | error: err
|
133 | });
|
134 | });
|
135 | }
|
136 |
|
137 |
|
138 |
|
139 | app.use(function (err, req, res, next) {
|
140 | res.status(err.status || 500);
|
141 | res.render('error', {
|
142 | message: err.message,
|
143 | error: {}
|
144 | });
|
145 | });
|
146 |
|
147 |
|
148 |
|
149 | app.listen(app_port, app_host, function () {
|
150 | console.log('adminMongo listening on host: http://' + app_host + ':' + app_port);
|
151 | });
|
152 |
|
153 | module.exports = app;
|