Browse Source

misuse prevention mechanism added

master
Christian Müller 10 years ago
parent
commit
60bd77171a
  1. 0
      resources/misuse.js
  2. 0
      resources/misuses.txt
  3. 1
      resources/template.html
  4. 2
      server.js
  5. 9
      src/view.js

0
resources/misuse.js

0
resources/misuses.txt

1
resources/template.html

@ -1,6 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
%MISUSE%
<title>NoteHub &mdash; %TITLE%</title> <title>NoteHub &mdash; %TITLE%</title>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1.0" name="viewport" /> <meta content="width=device-width, initial-scale=1.0" name="viewport" />

2
server.js

@ -147,7 +147,7 @@ app.get(/\/([a-z0-9]+)/, function(req, res) {
var sendResponse = (res, code, message) => { var sendResponse = (res, code, message) => {
log("sending response", code, message); log("sending response", code, message);
res.status(code).send(view.renderPage(message, "<h1>" + message + "</h1>", "")); res.status(code).send(view.renderPage(null, message, "<h1>" + message + "</h1>", ""));
} }
var notFound = res => sendResponse(res, 404, "Not found"); var notFound = res => sendResponse(res, 404, "Not found");

9
src/view.js

@ -4,19 +4,22 @@ var fs = require("fs");
var pageTemplate = fs.readFileSync("resources/template.html", "utf-8"); var pageTemplate = fs.readFileSync("resources/template.html", "utf-8");
var footerTemplate = fs.readFileSync("resources/footer.html", "utf-8"); var footerTemplate = fs.readFileSync("resources/footer.html", "utf-8");
var editTemplate = fs.readFileSync("resources/edit.html", "utf-8"); var editTemplate = fs.readFileSync("resources/edit.html", "utf-8");
var misuseScript = fs.readFileSync("resources/misuse.js", "utf-8");
var misuses = new Set(fs.readFileSync("resources/misuses.txt", "utf-8").split(/\s+/));
var deriveTitle = text => text var deriveTitle = text => text
.split(/[\n\r]/)[0].slice(0,25) .split(/[\n\r]/)[0].slice(0,25)
.replace(/[^a-zA-Z0-9\s]/g, ""); .replace(/[^a-zA-Z0-9\s]/g, "");
var renderPage = (title, content, footer) => pageTemplate var renderPage = (id, title, content, footer) => pageTemplate
.replace("%MISUSE%", misuses.has(id) ? misuseScript : "")
.replace("%TITLE%", title) .replace("%TITLE%", title)
.replace("%CONTENT%", content) .replace("%CONTENT%", content)
.replace("%FOOTER%", footer); .replace("%FOOTER%", footer);
module.exports.renderPage = renderPage; module.exports.renderPage = renderPage;
module.exports.renderStats = note => renderPage(deriveTitle(note.text), module.exports.renderStats = note => renderPage(note.id, deriveTitle(note.text),
`<h2>Statistics</h2> `<h2>Statistics</h2>
<table> <table>
<tr><td>Published</td><td>${note.published}</td></tr> <tr><td>Published</td><td>${note.published}</td></tr>
@ -25,7 +28,7 @@ module.exports.renderStats = note => renderPage(deriveTitle(note.text),
</table>`, </table>`,
""); "");
module.exports.renderNote = note => renderPage(deriveTitle(note.text), module.exports.renderNote = note => renderPage(note.id, deriveTitle(note.text),
marked(note.text), marked(note.text),
footerTemplate.replace(/%LINK%/g, note.id)); footerTemplate.replace(/%LINK%/g, note.id));

Loading…
Cancel
Save