1 | 'use strict';
|
2 |
|
3 | var
|
4 | connect = require('connect'),
|
5 | http = require('http'),
|
6 | path = require('path'),
|
7 | fs = require('fs'),
|
8 | mkdir = require('../util/mkdir'),
|
9 | methodOverride = require('method-override'),
|
10 | logger = require('morgan'),
|
11 | favicon = require('serve-favicon'),
|
12 | compress = require('compression'),
|
13 | bodyParser = require('body-parser'),
|
14 | cookieParser = require('cookie-parser'),
|
15 | cookieSession = require('cookie-session'),
|
16 | express = require('express'),
|
17 | serveStatic = require('serve-static'),
|
18 | errorHandler = require('errorhandler'),
|
19 | minimist = require('minimist'),
|
20 |
|
21 | config = require('config-file'),
|
22 |
|
23 | app = express();
|
24 |
|
25 | global.settings = {
|
26 | deploy: {
|
27 | local: {},
|
28 | test: {},
|
29 | fat: {},
|
30 | uat: {},
|
31 | prod: {}
|
32 | }
|
33 | };
|
34 |
|
35 | var cwd = process.cwd();
|
36 | var rootPath = path.join(path.dirname(__filename), "../../../");
|
37 | var pomyConfig = path.join(rootPath, "pomy.json");
|
38 |
|
39 | if (fs.existsSync(pomyConfig)) {
|
40 | global.settings = config(path.relative(cwd, pomyConfig));
|
41 | } else {
|
42 | rootPath = path.join(path.dirname(__filename), "../");
|
43 | pomyConfig = path.join(rootPath, "pomy.json");
|
44 | global.settings = config(path.relative(cwd, pomyConfig));
|
45 | }
|
46 |
|
47 | global.settings.paths = {
|
48 | cwd: cwd,
|
49 | root: rootPath
|
50 | };
|
51 |
|
52 | var argvs = minimist(process.argv.slice(2));
|
53 |
|
54 | var name = global.settings.name;
|
55 | var target = argvs.target || global.settings.target || 'local';
|
56 | var debug = !!(argvs.debug || global.settings.debug);
|
57 |
|
58 | var dSite = global.settings.deploy[target];
|
59 | var ips = dSite.ips;
|
60 | var ip = argvs.ip || (ips.length > 0 ? ips[0] : null) || '127.0.0.1';
|
61 | var domain = argvs.domain || dSite.domain || ip || "localhost";
|
62 | var sitePort = argvs.sitePort || dSite.sitePort || 8421;
|
63 |
|
64 | var configs = require('../package.json');
|
65 | var version = configs.version;
|
66 |
|
67 | var author = configs.author;
|
68 | var keywords = configs.keywords;
|
69 | var googleWebmasterMeta = configs.googleWebmasterMeta;
|
70 | var title = configs.title;
|
71 | var description = configs.description;
|
72 |
|
73 | app.set('domain', ip)
|
74 | app.set('port', sitePort)
|
75 |
|
76 | app.set('views', [path.join(__dirname, './views'),
|
77 | path.join(__dirname, './plugins/markdown/views'),
|
78 | path.join(__dirname, './plugins/docs/views'),
|
79 | path.join(__dirname, './plugins/changelog/views')
|
80 | ])
|
81 | app.set('view engine', 'ejs')
|
82 |
|
83 |
|
84 |
|
85 | app.use(favicon(path.join(__dirname, './public/favicon.ico')))
|
86 |
|
87 | if (debug) {
|
88 | app.use(logger('dev'))
|
89 | } else {
|
90 | app.use(logger('short'))
|
91 | }
|
92 |
|
93 | app.use(compress())
|
94 | app.use(bodyParser.urlencoded({
|
95 | extended: false
|
96 | }))
|
97 | app.use(bodyParser.json())
|
98 | app.use(methodOverride())
|
99 | app.use(cookieParser('your secret here'))
|
100 | app.use(cookieSession({
|
101 | name: 'surface-session',
|
102 | keys: ['open', 'source']
|
103 | }))
|
104 |
|
105 |
|
106 |
|
107 | app.use(serveStatic(path.join(__dirname, './public')))
|
108 | app.use(serveStatic(path.join(__dirname, './plugins/markdown/public')))
|
109 | app.use(serveStatic(path.join(__dirname, './plugins/docs/public')))
|
110 | app.use(serveStatic(path.join(__dirname, './plugins/changelog/public')))
|
111 |
|
112 |
|
113 | app.locals.title = title;
|
114 |
|
115 | app.locals.description = description;
|
116 |
|
117 | app.locals.googleWebmasterMeta = googleWebmasterMeta;
|
118 |
|
119 | app.locals.keywords = keywords;
|
120 |
|
121 | app.locals.author = author;
|
122 |
|
123 | app.locals.node_version = process.version.replace('v', '')
|
124 | app.locals.app_version = version
|
125 | app.locals.env = target
|
126 |
|
127 |
|
128 | app.locals.readme = fs.readFileSync(path.resolve(__dirname, './README.md'), 'utf-8')
|
129 |
|
130 | if (debug) {
|
131 | app.use(errorHandler())
|
132 | }
|
133 |
|
134 | global.settings.target = target;
|
135 | global.settings.debug = debug;
|
136 |
|
137 | global.settings.deploy[target].ips[0] = ip;
|
138 | global.settings.deploy[target].sitePort = sitePort;
|
139 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/api");
|
140 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/docs");
|
141 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/backlogs");
|
142 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/site");
|
143 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/sprints");
|
144 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/test reports");
|
145 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/ui");
|
146 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/deployments");
|
147 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/changelogs");
|
148 | mkdir(process.env.HOME, "var/" + domain + "/documents/" + name + "/" + target + "/other");
|
149 |
|
150 | var
|
151 | routes = require('./routes'),
|
152 | markdownRoutes = require('./plugins/markdown/routes'),
|
153 | docsRoutes = require('./plugins/docs/routes'),
|
154 | changelogRoutes = require('./plugins/changelog/routes'),
|
155 |
|
156 | core = require('./plugins/markdown/plugins/core/server.js'),
|
157 | dropbox = require('./plugins/markdown/plugins/dropbox/server.js'),
|
158 | github = require('./plugins/markdown/plugins/github/server.js'),
|
159 | googledrive = require('./plugins/markdown/plugins/googledrive/server.js'),
|
160 | onedrive = require('./plugins/markdown/plugins/onedrive/server.js');
|
161 |
|
162 | app.get('/', routes.index)
|
163 | app.get('/not-implemented', routes.not_implemented)
|
164 |
|
165 | app.post('/deploy', routes.deploy)
|
166 | app.get('/deployments', routes.getDeployments)
|
167 | app.get('/authors', routes.getAuthors)
|
168 |
|
169 | app.get('/cl', changelogRoutes.index)
|
170 | app.get('/changelogs', changelogRoutes.getChangelogs)
|
171 |
|
172 | app.get('/markdown', markdownRoutes.index)
|
173 | app.get('/markdown/documents', markdownRoutes.getDocuments)
|
174 | app.get('/markdown/documents/:id', markdownRoutes.getDocument)
|
175 | app.post('/markdown/documents/:id', markdownRoutes.updateDocument)
|
176 | app.put('/markdown/documents', markdownRoutes.saveDocument)
|
177 | app.post('/markdown/documents/:id/del', markdownRoutes.delDocument)
|
178 | app.delete('/markdown/documents/:id', markdownRoutes.delDocument)
|
179 | app.put('/markdown/documents/:id/rename', markdownRoutes.renameDocument)
|
180 |
|
181 | app.get('/api', docsRoutes.index)
|
182 |
|
183 | app.use(core)
|
184 | app.use(dropbox)
|
185 | app.use(github)
|
186 | app.use(googledrive)
|
187 | app.use(onedrive)
|
188 |
|
189 | app.use(function(req, res, next) {
|
190 | res.header('Access-Control-Allow-Origin', '*');
|
191 | res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
|
192 | res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
|
193 | next();
|
194 | });
|
195 |
|
196 | http.createServer(app).listen(app.get('port'), function createServerCb() {
|
197 | console.log('Express server listening on port ' + app.get('port'));
|
198 | console.log('\nhttp://' + app.get('domain') + ':' + app.get('port') + '\n');
|
199 | }) |
\ | No newline at end of file |