summaryrefslogtreecommitdiff
path: root/src/node/server.js
diff options
context:
space:
mode:
authorMatthias Bartelmeß <mba@fourplusone.de>2012-03-13 19:40:33 +0100
committerMatthias Bartelmeß <mba@fourplusone.de>2012-03-13 19:40:33 +0100
commit70940521f2cdc3cdb3361bd148e141f43505ee4d (patch)
tree96eb9974ee057b9fc3c8947d33bdd1601de8cd30 /src/node/server.js
parentcfb58a80a30486156a15515164c9c0f4647f165b (diff)
parentcccd8a923cfa21c7e248a2a5fcffa54caf512e0b (diff)
downloadetherpad-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.js97
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);
+ }
+]);