UNPKG

2.77 kBPlain TextView Raw
1#!/usr/bin/env node
2
3/**
4 * Module dependencies.
5 */
6
7var log4js = require('log4js');
8var http = require('http');
9var validator = require('validator')
10var _ = require('lodash')
11var config = require('../core/config');
12log4js.configure(_.get(config, 'log4js', {
13 appenders: {console: { type: 'console'}},
14 categories : { default: { appenders: ['console'], level: 'info' }}
15}));
16var log = log4js.getLogger("startup")
17
18var app = require('../app');
19
20/**
21 * Get port from environment and store in Express.
22 */
23
24var port = normalizePort(process.env.PORT || '3000');
25log.debug('port '+ port);
26
27var host = null;
28if (process.env.HOST) {
29 log.debug('process.env.HOST '+ process.env.HOST);
30 if (validator.isIP(process.env.HOST)) {
31 log.trace(process.env.HOST + ' valid');
32 host = process.env.HOST;
33 } else {
34 log.warn('process.env.HOST '+ process.env.HOST + ' invalid, use 0.0.0.0 instead');
35 }
36}
37app.set('port', port);
38
39/**
40 * Create HTTP server.
41 */
42
43var server = http.createServer(app);
44
45/**
46 * Listen on provided port, on all network interfaces.
47 */
48var models = require('../models');
49models.Versions.findOne({where:{type:1}})
50.then(function(v){
51 if (!v || v.get('version') != '0.3.0') {
52 throw new Error(`Please upgrade your database. usage bin/db upgrade or code-push-server-db upgrade`);
53 }
54 server.listen(port, host);
55 server.on('error', onError);
56 server.on('listening', onListening);
57 return;
58})
59.catch(function(e){
60 if (_.startsWith(e.message, 'ER_NO_SUCH_TABLE')) {
61 log.error(new Error(`Please upgrade your database. usage bin/db upgrade or code-push-server-db upgrade`));
62 } else {
63 log.error(e);
64 }
65 process.exit(1);
66});
67
68/**
69 * Normalize a port into a number, string, or false.
70 */
71
72function normalizePort(val) {
73 var port = parseInt(val, 10);
74
75 if (isNaN(port)) {
76 // named pipe
77 return val;
78 }
79
80 if (port >= 0) {
81 // port number
82 return port;
83 }
84
85 return false;
86}
87
88/**
89 * Event listener for HTTP server "error" event.
90 */
91
92function onError(error) {
93 if (error.syscall !== 'listen') {
94 throw error;
95 }
96
97 var bind = typeof port === 'string'
98 ? 'Pipe ' + port
99 : 'Port ' + port;
100
101 // handle specific listen errors with friendly messages
102 switch (error.code) {
103 case 'EACCES':
104 log.error(bind + ' requires elevated privileges');
105 process.exit(1);
106 break;
107 case 'EADDRINUSE':
108 log.error(bind + ' is already in use');
109 process.exit(1);
110 break;
111 default:
112 throw error;
113 }
114}
115
116/**
117 * Event listener for HTTP server "listening" event.
118 */
119
120function onListening() {
121 var addr = server.address();
122 var bind = typeof addr === 'string'
123 ? 'pipe ' + addr
124 : 'port ' + addr.port;
125 log.info('Listening on ' + bind);
126}