diff --git a/client/index.html b/client/index.html index 83ac96ad..7d751664 100644 --- a/client/index.html +++ b/client/index.html @@ -9,7 +9,7 @@ - + The Lounge @@ -25,7 +25,7 @@ - "> +
@@ -122,12 +122,17 @@

- <%= public ? "The Lounge - " : "" %> + {{#if public}}The Lounge - {{/if}} Connect - <%= !displayNetwork && lockNetwork ? "to " + defaults.name : "" %> + {{#unless displayNetwork}} + {{#if lockNetwork}} + to {{defaults.name}} + {{/if}} + {{/unless}}

-
> + {{#unless displayNetwork}} +

Network settings

@@ -135,17 +140,17 @@
- +
- > +
- > +
@@ -153,16 +158,17 @@
- +
+ {{/unless}}

User preferences

@@ -170,27 +176,27 @@
- +
- <% if (!useHexIp) { %> + {{#unless useHexIp}}
- +
- <% } %> + {{/unless}}
- +
- +
@@ -261,14 +267,14 @@
- <% if (typeof prefetch === "undefined" || prefetch !== false) { %> + {{#unless prefetch}}

Links and URLs

@@ -284,7 +290,7 @@ Auto-expand links
- <% } %> + {{/unless}}

Notifications

@@ -328,7 +334,8 @@
- <% if (!public && !ldap.enable) { %> + {{#unless public}} + {{#unless ldap.enable}}
@@ -352,7 +359,8 @@
- <% } %> + {{/unless}} + {{/unless}}

Custom Stylesheet

@@ -809,13 +817,13 @@

About The Lounge

- <% if (gitCommit) { %> + {{#if gitCommit}} The Lounge is running from source - (<%= gitCommit %>).
- <% } else { %> - The Lounge is in version <%= version %> - (See release notes).
- <% } %> + ({{ gitCommit }}).
+ {{else}} + The Lounge is in version {{version}} + (See release notes).
+ {{/if}} Website
Documentation
diff --git a/package.json b/package.json index 15ed8db8..9c2edd45 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "commander": "2.9.0", "event-stream": "3.3.4", "express": "4.15.2", + "express-handlebars": "3.0.0", "fs-extra": "2.1.2", "irc-framework": "2.6.1", "ldapjs": "1.0.1", diff --git a/src/server.js b/src/server.js index 0ff97b76..db92efe7 100644 --- a/src/server.js +++ b/src/server.js @@ -5,7 +5,9 @@ var pkg = require("../package.json"); var Client = require("./client"); var ClientManager = require("./clientManager"); var express = require("express"); +var expressHandlebars = require("express-handlebars"); var fs = require("fs"); +var path = require("path"); var io = require("socket.io"); var dns = require("dns"); var Helper = require("./helper"); @@ -29,7 +31,10 @@ module.exports = function() { var app = express() .use(allRequests) .use(index) - .use(express.static("client")); + .use(express.static("client")) + .engine("html", expressHandlebars({extname: ".html"})) + .set("view engine", "html") + .set("views", path.join(__dirname, "..", "client")); var config = Helper.config; var server = null; @@ -125,28 +130,23 @@ function index(req, res, next) { return next(); } - return fs.readFile("client/index.html", "utf-8", function(err, file) { - if (err) { - throw err; - } - - var data = _.merge( - pkg, - Helper.config - ); - data.gitCommit = Helper.getGitCommit(); - data.themes = fs.readdirSync("client/themes/").filter(function(themeFile) { - return themeFile.endsWith(".css"); - }).map(function(css) { - return css.slice(0, -4); - }); - var template = _.template(file); - res.setHeader("Content-Security-Policy", "default-src *; connect-src 'self' ws: wss:; style-src * 'unsafe-inline'; script-src 'self'; child-src 'self'; object-src 'none'; form-action 'none';"); - res.setHeader("Referrer-Policy", "no-referrer"); - res.setHeader("Content-Type", "text/html"); - res.writeHead(200); - res.end(template(data)); + var data = _.merge( + pkg, + Helper.config + ); + data.gitCommit = Helper.getGitCommit(); + data.themes = fs.readdirSync("client/themes/").filter(function(themeFile) { + return themeFile.endsWith(".css"); + }).map(function(css) { + const filename = css.slice(0, -4); + return { + name: filename.charAt(0).toUpperCase() + filename.slice(1), + filename: filename + }; }); + res.setHeader("Content-Security-Policy", "default-src *; connect-src 'self' ws: wss:; style-src * 'unsafe-inline'; script-src 'self'; child-src 'self'; object-src 'none'; form-action 'none';"); + res.setHeader("Referrer-Policy", "no-referrer"); + res.render("index", data); } function init(socket, client) {