diff options
author | Matthias Bartelmeß <mba@fourplusone.de> | 2012-03-13 19:40:33 +0100 |
---|---|---|
committer | Matthias Bartelmeß <mba@fourplusone.de> | 2012-03-13 19:40:33 +0100 |
commit | 70940521f2cdc3cdb3361bd148e141f43505ee4d (patch) | |
tree | 96eb9974ee057b9fc3c8947d33bdd1601de8cd30 /src/node/server.js | |
parent | cfb58a80a30486156a15515164c9c0f4647f165b (diff) | |
parent | cccd8a923cfa21c7e248a2a5fcffa54caf512e0b (diff) | |
download | etherpad-lite-70940521f2cdc3cdb3361bd148e141f43505ee4d.zip |
Merge branch 'develop' of git://github.com/Pita/etherpad-lite
Diffstat (limited to 'src/node/server.js')
-rw-r--r-- | src/node/server.js | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/node/server.js b/src/node/server.js new file mode 100644 index 00000000..19df6e72 --- /dev/null +++ b/src/node/server.js @@ -0,0 +1,97 @@ +/** + * This module is started with bin/run.sh. It sets up a Express HTTP and a Socket.IO Server. + * Static file Requests are answered directly from this module, Socket.IO messages are passed + * to MessageHandler and minfied requests are passed to minified. + */ + +/* + * 2011 Peter 'Pita' Martischka (Primary Technology Ltd) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS-IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var log4js = require('log4js'); +var fs = require('fs'); +var settings = require('./utils/Settings'); +var db = require('./db/DB'); +var async = require('async'); +var express = require('express'); +var path = require('path'); +var plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins"); +var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks"); +var npm = require("npm/lib/npm.js"); + +//try to get the git version +var version = ""; +try +{ + var rootPath = path.resolve(npm.dir, '..'); + var ref = fs.readFileSync(rootPath + "/.git/HEAD", "utf-8"); + var refPath = rootPath + "/.git/" + ref.substring(5, ref.indexOf("\n")); + version = fs.readFileSync(refPath, "utf-8"); + version = version.substring(0, 7); + console.log("Your Etherpad Lite git version is " + version); +} +catch(e) +{ + console.warn("Can't get git version for server header\n" + e.message) +} + +console.log("Report bugs at https://github.com/Pita/etherpad-lite/issues") + +var serverName = "Etherpad-Lite " + version + " (http://j.mp/ep-lite)"; + +//cache 6 hours +exports.maxAge = 1000*60*60*6; + +//set loglevel +log4js.setGlobalLogLevel(settings.loglevel); + +async.waterfall([ + //initalize the database + function (callback) + { + db.init(callback); + }, + + plugins.update, + + function (callback) { + console.log("Installed plugins: " + plugins.formatPlugins()); + console.log("Installed parts:\n" + plugins.formatParts()); + console.log("Installed hooks:\n" + plugins.formatHooks()); + callback(); + }, + + //initalize the http server + function (callback) + { + //create server + var app = express.createServer(); + + app.use(function (req, res, next) { + res.header("Server", serverName); + next(); + }); + + app.configure(function() { hooks.callAll("expressConfigure", {"app": app}); }); + + hooks.callAll("expressCreateServer", {"app": app}); + + //let the server listen + app.listen(settings.port, settings.ip); + console.log("Server is listening at " + settings.ip + ":" + settings.port); + + callback(null); + } +]); |