From fce906ee4dc72a90fd76fae2997ae8c58ae0586a Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Thu, 26 Jul 2018 22:03:52 +0000 Subject: [PATCH 01/34] initial fork; --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 2c05944a..03bbe9c0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ node_modules/* config.yaml config.yml data/* +.idea +__pycache__/ +Dockerfile From 1d270f921d3a5e8c57c77e4b5cc908cf0e866124 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Thu, 26 Jul 2018 22:12:40 +0000 Subject: [PATCH 02/34] ignoring more local files; --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 03bbe9c0..7931343e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ data/* .idea __pycache__/ Dockerfile +.dockerignore +package-lock.json From 2076a5391ed8bec4776095b1a10110d8ca39d3f9 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Fri, 27 Jul 2018 16:46:58 +0000 Subject: [PATCH 03/34] added media folder, redirects map, redaction regexps and layout configuration fields to config.js; added validation of new configuration fields; --- lib/config.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/lib/config.js b/lib/config.js index 23a97061..0528a63e 100644 --- a/lib/config.js +++ b/lib/config.js @@ -5,7 +5,7 @@ var _ = require('lodash') module.exports = (function () { var config var error = '' - + return { load: function (filename) { @@ -29,11 +29,22 @@ module.exports = (function () { if (typeof config[keys[i]] === 'undefined') { continue } - aliens = _.difference(Object.keys(config[keys[i]]), Object.keys(this.defaults[keys[i]])) - if (aliens.length > 0) { - error = 'Unrecognized configuration option(s) ' + aliens.join(',') + ' in section ' + keys[i] - return false + // MOD Allow unlimited keys in redirects section as long as they have string values + if (keys[i] == 'redirects'){ + for (var k in config['redirects']) { + if (typeof config['redirects'][k] !== 'string'){ + error = 'Value for configuration field ' + k + ' in section redirects must be a string.' + return false + } + } + } else { + aliens = _.difference(Object.keys(config[keys[i]]), Object.keys(this.defaults[keys[i]])) + if (aliens.length > 0) { + error = 'Unrecognized configuration option(s) ' + aliens.join(',') + ' in section ' + keys[i] + return false + } } + } return true @@ -51,6 +62,7 @@ module.exports = (function () { favicon: '', repository: '', docSubdir: '', + mediaSubdir: '', // MOD name of sub-directory to use for additional public accessible media remote: '', pushInterval: 30, secret: 'change me', @@ -152,7 +164,29 @@ module.exports = (function () { footer: '_footer.md', style: '_style.css', script: '_script.js' + }, + + // MOD Map of terms and the article each redirects to + redirects: {}, + + // MOD Configuration of elements in pug layouts + layout: { + sidebarColumn: 3, + mainColumn: 9 + }, + + // MOD RegExp to use for redaction of content + redaction: { + hiddenPage: '/\\s?Hidden/i', + privateSection: '/\\s?Private/i', + earliestDate: '/\\s\\d{4}\\.\\d{2}\\.\\d{2}/, /\\s\\d{4}\\-\\d{2}\\-\\d{2}/', + endRedaction: '/\\sEnd\\s/i', + sequentialRollout: [{ + expression: '', + currentValue: 0 + }] } + }, // Ensure that all the key will have a sane default value @@ -242,6 +276,23 @@ module.exports = (function () { } config.customizations = _.extend({}, this.defaults.customizations, config.customizations) + + // MOD add validation of layout fields + config.layout = _.extend({}, this.defaults.layout, config.layout) + config.layout.sidebarColumn = (parseInt(config.layout.sidebarColumn, 10) | 3) + config.layout.sidebarColumn = config.layout.sidebarColumn < 11 ? config.layout.sidebarColumn : 3 + config.layout.sidebarColumn = config.layout.sidebarColumn >= 0 ? config.layout.sidebarColumn : 3 + config.layout.mainColumn = (parseInt(config.layout.mainColumn, 10) | 9) + config.layout.mainColumn = config.layout.mainColumn < 13 ? config.layout.mainColumn : 9 + config.layout.mainColumn = config.layout.mainColumn > 1 ? config.layout.mainColumn : 9 + if (config.layout.sidebarColumn + config.layout.mainColumn > 12){ + error = 'Total width of sidebarColumn + mainColumn must not exceed 12.' + return false + } + + // MOD extend redaction and redirection + config.redaction = _.extend({}, this.defaults.redaction, config.redaction) + config.redirects = _.extend({}, this.defaults.redirects, config.redirects) return true }, From e70b25a9663a9201c750b12b4685f6e47ae2db18 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Fri, 27 Jul 2018 18:39:34 +0000 Subject: [PATCH 04/34] added footer customization to layout configs; added layout customization of sidebar, footer and main columns to layout.pug; --- lib/app.js | 18 +++++++++++++++++- lib/config.js | 11 ++++++++--- views/layout.pug | 26 ++++++++++++++++++++------ 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/lib/app.js b/lib/app.js index f60304b0..576e41d0 100644 --- a/lib/app.js +++ b/lib/app.js @@ -84,7 +84,23 @@ module.exports.initialize = function (config) { } return config.get('application').favicon.trim() }, - + // MOD add layout configuration to locals + get sidebarColumn () { + return config.get('layout').sidebarColumn.toString() + }, + get mainColumn () { + return config.get('layout').mainColumn.toString() + }, + get footerColumn () { + return config.get('layout').footerColumn.toString() + }, + get footerSidebarColumn () { + return (12 - config.get('layout').footerColumn).toString() + }, + get sidebarMobile () { + return config.get('layout').sidebarMobile + }, + isAnonymous: function () { return !req.user }, diff --git a/lib/config.js b/lib/config.js index 0528a63e..d6490393 100644 --- a/lib/config.js +++ b/lib/config.js @@ -172,7 +172,9 @@ module.exports = (function () { // MOD Configuration of elements in pug layouts layout: { sidebarColumn: 3, - mainColumn: 9 + mainColumn: 9, + footerColumn: 9, + sidebarMobile: true }, // MOD RegExp to use for redaction of content @@ -279,16 +281,19 @@ module.exports = (function () { // MOD add validation of layout fields config.layout = _.extend({}, this.defaults.layout, config.layout) - config.layout.sidebarColumn = (parseInt(config.layout.sidebarColumn, 10) | 3) + config.layout.sidebarColumn = parseInt(config.layout.sidebarColumn, 10) config.layout.sidebarColumn = config.layout.sidebarColumn < 11 ? config.layout.sidebarColumn : 3 config.layout.sidebarColumn = config.layout.sidebarColumn >= 0 ? config.layout.sidebarColumn : 3 - config.layout.mainColumn = (parseInt(config.layout.mainColumn, 10) | 9) + config.layout.mainColumn = parseInt(config.layout.mainColumn, 10) config.layout.mainColumn = config.layout.mainColumn < 13 ? config.layout.mainColumn : 9 config.layout.mainColumn = config.layout.mainColumn > 1 ? config.layout.mainColumn : 9 if (config.layout.sidebarColumn + config.layout.mainColumn > 12){ error = 'Total width of sidebarColumn + mainColumn must not exceed 12.' return false } + config.layout.footerColumn = parseInt(config.layout.footerColumn, 10) + config.layout.footerColumn = config.layout.footerColumn < 13 ? config.layout.footerColumn : 9 + config.layout.footerColumn = config.layout.footerColumn > 0 ? config.layout.footerColumn : 9 // MOD extend redaction and redirection config.redaction = _.extend({}, this.defaults.redaction, config.redaction) diff --git a/views/layout.pug b/views/layout.pug index 05ca133c..4fe65620 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -48,20 +48,34 @@ include mixins/links .container + //- MOD customization of column width + -var sidebar_class = 'col-md-' + sidebarColumn + ' with-sidebar' + -var sidebar_mobile_class = sidebar_class + ' hidden-sm hidden-xs' + -var main_class = 'col-md-' + mainColumn + ' hide-tools' + -var footer_sidebar = 'col-md-' + footerSidebarColumn + -var footer_class = 'col-md-' + footerColumn + ' with-footer' + .row if hasSidebar() - .col-md-2.with-sidebar - .content !{_sidebar} + if sidebarMobile + div(id='sidebar' class=sidebar_class) + .content !{_sidebar} + else + div(id='sidebar' class=sidebar_mobile_class) + .content !{_sidebar} else - .col-md-2 + if sidebarMobile + div(id='sidebar' class=sidebar_class) + else + div(id='sidebar' class=sidebar_mobile_class) - #main.hide-tools.col-md-8 + div(id='main' class=main_class) block content if hasFooter() .row - .col-md-2 - .col-md-8.with-footer + div(class=footer_sidebar) + div(id='footer' class=footer_class) .content !{_footer} script(src=proxyPath + "/vendor/jquery.min.js") From 856bff79c0634954817b4999b2add75594a3fa5b Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Fri, 27 Jul 2018 22:32:26 +0000 Subject: [PATCH 05/34] clarified nomenclature in layout fields to use Width instead of Column; fixed bug in gitmech.gitExec when handling absolute paths with blank spaces; --- lib/app.js | 16 ++++++++-------- lib/config.js | 35 ++++++++++++++++++----------------- lib/gitmech.js | 28 +++++++++++++++++++++++++++- views/layout.pug | 8 ++++---- 4 files changed, 57 insertions(+), 30 deletions(-) diff --git a/lib/app.js b/lib/app.js index 576e41d0..cb1e9f5a 100644 --- a/lib/app.js +++ b/lib/app.js @@ -85,17 +85,17 @@ module.exports.initialize = function (config) { return config.get('application').favicon.trim() }, // MOD add layout configuration to locals - get sidebarColumn () { - return config.get('layout').sidebarColumn.toString() + get sidebarWidth () { + return config.get('layout').sidebarWidth.toString() }, - get mainColumn () { - return config.get('layout').mainColumn.toString() + get mainWidth () { + return config.get('layout').mainWidth.toString() }, - get footerColumn () { - return config.get('layout').footerColumn.toString() + get footerWidth () { + return config.get('layout').footerWidth.toString() }, - get footerSidebarColumn () { - return (12 - config.get('layout').footerColumn).toString() + get footerSidebarWidth () { + return (12 - config.get('layout').footerWidth).toString() }, get sidebarMobile () { return config.get('layout').sidebarMobile diff --git a/lib/config.js b/lib/config.js index d6490393..5184f869 100644 --- a/lib/config.js +++ b/lib/config.js @@ -166,19 +166,20 @@ module.exports = (function () { script: '_script.js' }, - // MOD Map of terms and the article each redirects to + // MOD map of terms and the page each redirects to redirects: {}, - // MOD Configuration of elements in pug layouts + // MOD configuration of columns in layout.pug layout: { - sidebarColumn: 3, - mainColumn: 9, - footerColumn: 9, + sidebarWidth: 3, + mainWidth: 9, + footerWidth: 9, sidebarMobile: true }, - // MOD RegExp to use for redaction of content + // MOD various types of RegExp to use for redaction of content redaction: { + enabled: true, hiddenPage: '/\\s?Hidden/i', privateSection: '/\\s?Private/i', earliestDate: '/\\s\\d{4}\\.\\d{2}\\.\\d{2}/, /\\s\\d{4}\\-\\d{2}\\-\\d{2}/', @@ -281,19 +282,19 @@ module.exports = (function () { // MOD add validation of layout fields config.layout = _.extend({}, this.defaults.layout, config.layout) - config.layout.sidebarColumn = parseInt(config.layout.sidebarColumn, 10) - config.layout.sidebarColumn = config.layout.sidebarColumn < 11 ? config.layout.sidebarColumn : 3 - config.layout.sidebarColumn = config.layout.sidebarColumn >= 0 ? config.layout.sidebarColumn : 3 - config.layout.mainColumn = parseInt(config.layout.mainColumn, 10) - config.layout.mainColumn = config.layout.mainColumn < 13 ? config.layout.mainColumn : 9 - config.layout.mainColumn = config.layout.mainColumn > 1 ? config.layout.mainColumn : 9 - if (config.layout.sidebarColumn + config.layout.mainColumn > 12){ - error = 'Total width of sidebarColumn + mainColumn must not exceed 12.' + config.layout.sidebarWidth = parseInt(config.layout.sidebarWidth, 10) + config.layout.sidebarWidth = config.layout.sidebarWidth < 11 ? config.layout.sidebarWidth : 3 + config.layout.sidebarWidth = config.layout.sidebarWidth >= 0 ? config.layout.sidebarWidth : 3 + config.layout.mainWidth = parseInt(config.layout.mainWidth, 10) + config.layout.mainWidth = config.layout.mainWidth < 13 ? config.layout.mainWidth : 9 + config.layout.mainWidth = config.layout.mainWidth > 1 ? config.layout.mainWidth : 9 + if (config.layout.sidebarWidth + config.layout.mainWidth > 12){ + error = 'Total width of sidebarWidth + mainWidth must not exceed 12.' return false } - config.layout.footerColumn = parseInt(config.layout.footerColumn, 10) - config.layout.footerColumn = config.layout.footerColumn < 13 ? config.layout.footerColumn : 9 - config.layout.footerColumn = config.layout.footerColumn > 0 ? config.layout.footerColumn : 9 + config.layout.footerWidth = parseInt(config.layout.footerWidth, 10) + config.layout.footerWidth = config.layout.footerWidth < 13 ? config.layout.footerWidth : 9 + config.layout.footerWidth = config.layout.footerWidth > 0 ? config.layout.footerWidth : 9 // MOD extend redaction and redirection config.redaction = _.extend({}, this.defaults.redaction, config.redaction) diff --git a/lib/gitmech.js b/lib/gitmech.js index 9c6606be..a2d1dea5 100644 --- a/lib/gitmech.js +++ b/lib/gitmech.js @@ -4,6 +4,7 @@ var semver = require('semver') var fs = require('fs') var gitCommands, workTree, docSubdir +var gitCommandsQuote // MOD add variable for quoting absolute paths var gitENOENT = /fatal: (Path "([^"]+)" does not exist in "([0-9a-f]{40})"|ambiguous argument "([^"]+)": unknown revision or path not in the working tree.)/ // Internal helper to talk to the git subprocess (spawn) @@ -51,6 +52,24 @@ function gitExec (commands, callback) { }) } +// MOD fixed gitExec function for concatenating paths with blank spaces +function gitExecFix (commands, callback) { + if (gitCommandsQuote){ + commands = gitMech.gitBin + ' ' + gitCommandsQuote.concat(commands).join(' ') + } else { + commands = gitMech.gitBin + ' ' + gitCommands.concat(commands).join(' ') + } + // There is a limit at 200KB (increase it with maxBuffer option) + childProcess.exec(commands, { cwd: workTree }, function (error, stdout, stderr) { + if (error || stderr.length > 0) { + error = new Error(commands + '\n' + stderr) + callback(error) + return + } + callback(null, stdout) + }) +} + function join (arr) { var result var index = 0 @@ -140,6 +159,12 @@ var gitMech = { var gitDir = path.join(repoDir, '.git') fs.statSync(gitDir) workTree = repoDir + // MOD construct alternate commands for paths with blank space + var quote_worktree = '"' + workTree + '"' + var quote_gitdir = '"' + gitDir + '"' + if (/\s/.test(gitDir)){ + gitCommandsQuote = ['--git-dir=' + quote_gitdir, '--work-tree=' + quote_worktree] + } gitCommands = ['--git-dir=' + gitDir, '--work-tree=' + workTree] } catch (e) { callback('Bad repository path (not initialized): ' + repoDir) @@ -393,7 +418,8 @@ var gitMech = { }, ls: function (pattern, callback) { - gitExec([ 'ls-tree', '--name-only', '-r', 'HEAD', '--', docSubdir + pattern ], function (err, data) { + // MOD fix function to use quoted paths + gitExecFix([ 'ls-tree', '--name-only', '-r', 'HEAD', '--', docSubdir + pattern ], function (err, data) { if (err) { data = '' } diff --git a/views/layout.pug b/views/layout.pug index 4fe65620..1a681c32 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -49,11 +49,11 @@ include mixins/links .container //- MOD customization of column width - -var sidebar_class = 'col-md-' + sidebarColumn + ' with-sidebar' + -var sidebar_class = 'col-md-' + sidebarWidth + ' with-sidebar' -var sidebar_mobile_class = sidebar_class + ' hidden-sm hidden-xs' - -var main_class = 'col-md-' + mainColumn + ' hide-tools' - -var footer_sidebar = 'col-md-' + footerSidebarColumn - -var footer_class = 'col-md-' + footerColumn + ' with-footer' + -var main_class = 'col-md-' + mainWidth + ' hide-tools' + -var footer_sidebar = 'col-md-' + footerSidebarWidth + -var footer_class = 'col-md-' + footerWidth + ' with-footer' .row if hasSidebar() From 6facbc8b8dd9311095b62f1defa72353d5946a42 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sat, 28 Jul 2018 00:49:12 +0000 Subject: [PATCH 06/34] created module in lib for redaction and redirection routines; added redirection functionality to wiki page and link interpolation; updated default redaction expressions in config; TODO: add validation of redaction expressions and validate date fields exist in earliestDate; --- lib/config.js | 12 +++--- lib/redactor.js | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/renderer.js | 7 +++- routes/misc.js | 11 ++++- routes/wiki.js | 38 ++++++++++++++--- 5 files changed, 159 insertions(+), 15 deletions(-) create mode 100644 lib/redactor.js diff --git a/lib/config.js b/lib/config.js index 5184f869..7be07542 100644 --- a/lib/config.js +++ b/lib/config.js @@ -180,14 +180,14 @@ module.exports = (function () { // MOD various types of RegExp to use for redaction of content redaction: { enabled: true, - hiddenPage: '/\\s?Hidden/i', - privateSection: '/\\s?Private/i', - earliestDate: '/\\s\\d{4}\\.\\d{2}\\.\\d{2}/, /\\s\\d{4}\\-\\d{2}\\-\\d{2}/', - endRedaction: '/\\sEnd\\s/i', - sequentialRollout: [{ + hiddenPage: '/^/i', + privateSection: '//i', + earliestDate: '//', + rolloutSections: [{ expression: '', currentValue: 0 - }] + }], + endRedaction: '//i' } }, diff --git a/lib/redactor.js b/lib/redactor.js new file mode 100644 index 00000000..e67561de --- /dev/null +++ b/lib/redactor.js @@ -0,0 +1,106 @@ +var isNumber = require('is-number') + +// MOD function to redact non-public content +function redactContent (text, res, config) { + + var wiki_configuration = config.getConfig() + var redact_config = wiki_config.redaction + if (redact_config.enabled){ + + +// var private_map = {} +// var current_date = new Date() +// var replacement, content_date, public_info +// var rollout_list = configuration.getConfig().rolloutSection +// +// // look for hidden page pattern +// if (redact_config.) +// var hidden_regex = new RegExp() +// var hidden = /^()/m.exec(text) +// if (private){ +// if (!res || !res.locals.user){ +// return '' +// } else { +// text = text.replace(private[0], '-- Private' + private[2] + '--') +// } +// } +// +// // look for design notes +// var matches = text.match(/[\s\S]*?/gm) +// if (matches) { +// matches.forEach(function (match){ +// note = /()([\s\S]*?)()/m.exec(match) +// replacement = '-- Design Notes' + note[2] + ' --' + note[4] + '-- End --' +// if (!res || !res.locals.user){ +// text = text.replace(note[0], '') +// } else { +// text = text.replace(note[0], replacement) +// } +// }) +// } +// +// // look for future material +// var matches = text.match(/[\s\S]*?/gm) +// if (matches){ +// matches.forEach(function (match){ +// future = /()([\s\S]*?)()/m.exec(match) +// replacement = '-- ' + future[2] + '.' + future[3] + '.' + future[4] + future[5] + ' --' + future[7] + '-- End --' +// if (!res || !res.locals.user){ +// content_date = new Date(future[2], future[3], future[4]) +// if (content_date.getTime() > current_date.getTime()){ +// text = text.replace(future[0], '') +// } else { +// text = text.replace(future[0], future[7]) +// } +// } else { +// text = text.replace(future[0], replacement) +// } +// }) +// } +// +// // look for story-chapter-number content +// var matches = text.match(/[\s\S]*?/gm) +// if (matches){ +// matches.forEach(function (match){ +// chapter = /()([\s\S]*?)()/m.exec(match) +// replacement = '-- ' + chapter[2] + '-chapter-' + chapter[4] + chapter[5] + ' --' + chapter[7] + '-- End --' +// public_info = false +// if (!res || !res.locals.user){ +// if (chapter[2] in public_map && isNumber(public_map[chapter[2]])){ +// if (parseInt(chapter[4]) <= public_map[chapter[2]]){ +// text = text.replace(chapter[0], chapter[7]) +// public_info = true +// } +// } +// if (!public_info){ +// text = text.replace(chapter[0], '') +// } +// } else { +// text = text.replace(chapter[0], replacement) +// } +// }) +// } + } + + return text.trim() + +} + +// MOD function to add a page redirect notice to the content +function redirectContent(html, requested_page, redirected_page) { + + var redirect_html = '

"' + requested_page.replace(/-/g, ' ') + '" redirects here.

' + var header_match = /(^)/m.exec(html) + if (header_match){ + html = html.replace(header_match[0], header_match[0] + redirect_html) + } + return html + +} + +var Redactor = { + redact: redactContent, + redirect: redirectContent +} + +module.exports = Redactor \ No newline at end of file diff --git a/lib/renderer.js b/lib/renderer.js index faaf75d6..533fec80 100644 --- a/lib/renderer.js +++ b/lib/renderer.js @@ -5,6 +5,7 @@ var namer = require('./namer') var Page = require('./models').Page var directives = require('./directives') var Configurable = require('./configurable') +var redactor = require('./redactor') // MOD added redactor module as dependency var Configuration = function () { Configurable.call(this) @@ -140,7 +141,11 @@ var Renderer = { text = evalTags(text) text = applyDirectives(text) return Marked(text) - } + }, + + // MOD add redaction methods to renderer + redact: redactor.redact, + redirect: redactor.redirect } diff --git a/routes/misc.js b/routes/misc.js index 2dcaa8d3..d1d5e345 100644 --- a/routes/misc.js +++ b/routes/misc.js @@ -3,6 +3,7 @@ var router = require('express').Router() var renderer = require('../lib/renderer') var fs = require('fs') var models = require('../lib/models') +var app = require('../lib/app').getInstance() // MOD required to retrieve app configuration models.use(Git) @@ -29,10 +30,16 @@ function _getExistence (req, res) { var result = [] var page var n = req.query.data.length - + const redirect_map = app.locals.config.get('redirects') // MOD import redirects + req.query.data.forEach(function (pageName, idx) { (function (name, index) { - page = new models.Page(name) + // MOD remap redirect key to its associated page + page_name = name + if (redirect_map && redirect_map[page_name.toLowerCase()]){ + page_name = redirect_map[page_name.toLowerCase()] + } + page = new models.Page(page_name) if (!fs.existsSync(page.pathname)) { result.push(name) } diff --git a/routes/wiki.js b/routes/wiki.js index 26485194..4e8b5d80 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -69,7 +69,15 @@ function _getWiki (req, res) { } function _getWikiPage (req, res) { - var page = new models.Page(req.params.page, req.params.version) + + // MOD check if page is listed as a redirect + var page_redirect = '' + var redirect_map = app.locals.config.get('redirects') + var page_name = req.params.page + if (redirect_map && redirect_map[page_name.toLowerCase()]){ + page_name = redirect_map[page_name.toLowerCase()] + } + var page = new models.Page(page_name, req.params.version) page.fetch().then(function () { if (!page.error) { @@ -82,11 +90,29 @@ function _getWikiPage (req, res) { res.locals.notice = req.session.notice delete req.session.notice - res.render('show', { - page: page, - title: app.locals.config.get('application').title + ' – ' + page.title, - content: renderer.render('# ' + page.title + '\n' + page.content) - }) + // MOD redact, render and redirect content + var page_content = page.content + // TODO var page_content = renderer.redact(page.content, res) + + if (page_content) { + var rendered_content = renderer.render('# ' + page.title + '\n' + page_content) + if (page_name != req.params.page){ + rendered_content = renderer.redirect(rendered_content, req.params.page, page_name) + } + + res.render('show', { + page: page, + title: app.locals.config.get('application').title + ' – ' + page.title, + content: rendered_content // MOD add rendered content + }) + } else { + // MOD remove existence of page if all content is redacted + res.locals.title = '404 - Not found' + res.statusCode = 404 + res.render('404.jade') + return + } + } else { if (req.user) { // Try sorting out redirect loops with case insentive fs From 9fb1db21455a14737c802ac770669989065a5928 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sat, 28 Jul 2018 20:58:45 +0000 Subject: [PATCH 07/34] added redaction routines to search, wiki and misc routes; added pageSummaries as option in config; TODO: add redactContent and pageSummaries to pug templates; add validation of redaction expressions and validate date fields exist in earliestDate; integrate redaction RegExp tests to redactor.redact; --- lib/app.js | 7 +++++ lib/config.js | 6 +++-- lib/redactor.js | 3 +-- routes/misc.js | 7 ++++- routes/search.js | 66 ++++++++++++++++++++++++++++++++++++++++-------- routes/wiki.js | 18 ++++++++----- 6 files changed, 84 insertions(+), 23 deletions(-) diff --git a/lib/app.js b/lib/app.js index cb1e9f5a..b88c32e2 100644 --- a/lib/app.js +++ b/lib/app.js @@ -100,6 +100,13 @@ module.exports.initialize = function (config) { get sidebarMobile () { return config.get('layout').sidebarMobile }, + // MOD add redaction and page summary toggles + get redactContent () { + return config.get('redaction').enabled && !req.user + }, + get pageSummaries () { + return config.get('features').pageSummaries + }, isAnonymous: function () { return !req.user diff --git a/lib/config.js b/lib/config.js index 7be07542..9c9db79b 100644 --- a/lib/config.js +++ b/lib/config.js @@ -117,7 +117,8 @@ module.exports = (function () { features: { markitup: false, codemirror: true, - gravatar: true + gravatar: true, + pageSummaries: true // MOD enable initial paragraph to be returned in list of documents }, server: { @@ -180,11 +181,12 @@ module.exports = (function () { // MOD various types of RegExp to use for redaction of content redaction: { enabled: true, + preserveComments: true, hiddenPage: '/^/i', privateSection: '//i', earliestDate: '//', rolloutSections: [{ - expression: '', + expression: '//', currentValue: 0 }], endRedaction: '//i' diff --git a/lib/redactor.js b/lib/redactor.js index e67561de..ff1d2f93 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -3,8 +3,7 @@ var isNumber = require('is-number') // MOD function to redact non-public content function redactContent (text, res, config) { - var wiki_configuration = config.getConfig() - var redact_config = wiki_config.redaction + var redact_config = wiki_config.get('redaction') if (redact_config.enabled){ diff --git a/routes/misc.js b/routes/misc.js index d1d5e345..22a82995 100644 --- a/routes/misc.js +++ b/routes/misc.js @@ -16,9 +16,14 @@ function _getSyntaxReference (req, res) { } function _postPreview (req, res) { + + // MOD redact content prior to rendering + var page_content = req.body.data + page_content = renderer.redact(page_content, res, app.locals.config) res.render('preview', { - content: renderer.render(req.body.data) + content: renderer.render(page_content) }) + } function _getExistence (req, res) { diff --git a/routes/search.js b/routes/search.js index 900d7dd3..551b19f0 100644 --- a/routes/search.js +++ b/routes/search.js @@ -4,12 +4,19 @@ var router = require('express').Router() var path = require('path') var corsEnabler = require('../lib/cors-enabler') var models = require('../lib/models') +var renderer = require('../lib/renderer') // MOD import renderer module +var app = require('../lib/app').getInstance() // MOD import app instance for config models.use(Git) router.options('/search', corsEnabler) router.get('/search', corsEnabler, _getSearch) +// MOD function for properly rendering content as a regular expression +function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); +} + function _getSearch (req, res) { var record @@ -39,18 +46,55 @@ function _getSearch (req, res) { } models.pages.findStringAsync(res.locals.term).then(function (items) { - items.forEach(function (item) { - if (item.trim() !== '') { - record = item.split(':') - res.locals.matches.push({ - pageName: path.basename(record[0].replace(/\.md$/, '')), - line: record[1] ? ', L' + record[1] : '', - text: record.slice(2).join('') + + // MOD run search results through redaction if enabled + if (app.locals.config.get('redaction').enabled){ + + var promise_list = [] + var term_regex, page_name, search_page, redacted_content + + items.forEach(function (item) { + if (item.trim() !== '') { + record = item.split(':') + // MOD retrieve page content and retest for search term after redaction + page_name = path.basename(record[0].replace(/\.md$/, '')) + search_page = new models.Page(page_name) + promise_list.push(search_page.fetch().then(function () { + redacted_content = renderer.redact(search_page.content, res, app.locals.config) + term_regex = new RegExp(escapeRegExp(res.locals.term), 'm') + if (term_regex.exec(redacted_content)){ + res.locals.matches.push({ + pageName: path.basename(record[0].replace(/\.md$/, '')), + line: record[1] ? ', L' + record[1] : '', + text: record.slice(2).join('') + }) + } + })) + } }) - } - }) - - renderResults() + + // MOD wait for all page fetches to return + Promise.all(promise_list).then(function(){ + renderResults() + }) + + } else { + + items.forEach(function (item) { + if (item.trim() !== '') { + record = item.split(':') + res.locals.matches.push({ + pageName: path.basename(record[0].replace(/\.md$/, '')), + line: record[1] ? ', L' + record[1] : '', + text: record.slice(2).join('') + }) + } + }) + + renderResults() + + } + }) } diff --git a/routes/wiki.js b/routes/wiki.js index 4e8b5d80..e2fee610 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -25,7 +25,8 @@ function _getHistory (req, res) { return page.fetchHistory() }).then(function (history) { // FIXME better manage an error here - if (!page.error) { + // MOD add test to hide history page for anonymous users + if (!page.error && (req.locals.user || !app.locals.config.get('redaction').enabled)) { res.render('history', { items: history, title: 'History of ' + page.name, @@ -47,10 +48,15 @@ function _getWiki (req, res) { pages.fetch(pagen).then(function () { pages.models.forEach(function (page) { - if (!page.error) { + + // MOD test to see if content is redacted + const page_content = renderer.redact(page.content, res, app.locals.config) + if (!page.error && page_content) { + const rendered_content = renderer.render(page_content) // MOD render content items.push({ page: page, - hashes: page.hashes.length === 2 ? page.hashes.join('..') : '' + hashes: page.hashes.length === 2 ? page.hashes.join('..') : '', + summary: rendered_content.match(/

[\s\S]*?<\/p>/m) // MOD add first paragraph summary to item }) } }) @@ -71,7 +77,6 @@ function _getWiki (req, res) { function _getWikiPage (req, res) { // MOD check if page is listed as a redirect - var page_redirect = '' var redirect_map = app.locals.config.get('redirects') var page_name = req.params.page if (redirect_map && redirect_map[page_name.toLowerCase()]){ @@ -91,8 +96,7 @@ function _getWikiPage (req, res) { delete req.session.notice // MOD redact, render and redirect content - var page_content = page.content - // TODO var page_content = renderer.redact(page.content, res) + var page_content = renderer.redact(page.content, res, app.locals.config) if (page_content) { var rendered_content = renderer.render('# ' + page.title + '\n' + page_content) @@ -146,7 +150,7 @@ function _getCompare (req, res) { page.fetch().then(function () { return page.fetchRevisionsDiff(revisions) }).then(function (diff) { - if (!page.error) { + if (!page.error && (req.locals.user || !app.locals.config.get('redaction').enabled)) { var lines = [] diff.split('\n').slice(4).forEach(function (line) { if (line.slice(0, 1) !== '\\') { From 39cf96a966703995a75cfcfa04b377413bc053ef Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sat, 28 Jul 2018 22:39:01 +0000 Subject: [PATCH 08/34] added redactContent and pageSummaries to pug templates; fixed bug with search result fetching; TODO: add validation of redaction expressions and validate date fields exist in earliestDate; integrate redaction RegExp tests to redactor.redact; --- lib/app.js | 3 ++ lib/redactor.js | 11 +++++-- routes/search.js | 15 +++++---- views/list.pug | 73 +++++++++++++++++++++++++++++++------------ views/mixins/form.pug | 9 +++--- views/show.pug | 15 ++++----- 6 files changed, 84 insertions(+), 42 deletions(-) diff --git a/lib/app.js b/lib/app.js index b88c32e2..433a6eba 100644 --- a/lib/app.js +++ b/lib/app.js @@ -101,6 +101,9 @@ module.exports.initialize = function (config) { return config.get('layout').sidebarMobile }, // MOD add redaction and page summary toggles + get redactEnabled() { + return config.get('redaction').enabled + }, get redactContent () { return config.get('redaction').enabled && !req.user }, diff --git a/lib/redactor.js b/lib/redactor.js index ff1d2f93..24b96d6e 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -3,7 +3,7 @@ var isNumber = require('is-number') // MOD function to redact non-public content function redactContent (text, res, config) { - var redact_config = wiki_config.get('redaction') + var redact_config = config.get('redaction') if (redact_config.enabled){ @@ -79,9 +79,14 @@ function redactContent (text, res, config) { // } // }) // } - } + + return text.trim() + + } else { - return text.trim() + return text + + } } diff --git a/routes/search.js b/routes/search.js index 551b19f0..28278d19 100644 --- a/routes/search.js +++ b/routes/search.js @@ -47,24 +47,23 @@ function _getSearch (req, res) { models.pages.findStringAsync(res.locals.term).then(function (items) { - // MOD run search results through redaction if enabled + // MOD run search results through redaction if enabled (slows response) if (app.locals.config.get('redaction').enabled){ var promise_list = [] - var term_regex, page_name, search_page, redacted_content items.forEach(function (item) { if (item.trim() !== '') { - record = item.split(':') // MOD retrieve page content and retest for search term after redaction - page_name = path.basename(record[0].replace(/\.md$/, '')) - search_page = new models.Page(page_name) + const record = item.split(':') + const page_name = path.basename(record[0].replace(/\.md$/, '')) + const search_page = new models.Page(page_name) promise_list.push(search_page.fetch().then(function () { - redacted_content = renderer.redact(search_page.content, res, app.locals.config) - term_regex = new RegExp(escapeRegExp(res.locals.term), 'm') + const redacted_content = renderer.redact(search_page.content, res, app.locals.config) + const term_regex = new RegExp(escapeRegExp(res.locals.term), 'i') if (term_regex.exec(redacted_content)){ res.locals.matches.push({ - pageName: path.basename(record[0].replace(/\.md$/, '')), + pageName: page_name, line: record[1] ? ', L' + record[1] : '', text: record.slice(2).join('') }) diff --git a/views/list.pug b/views/list.pug index e3e0d95e..3eed0efc 100644 --- a/views/list.pug +++ b/views/list.pug @@ -10,26 +10,59 @@ block content a(href=item.page.urlForShow()) #{item.page.title} div.content.clearfix .meta - |Last update by  - if hasGravatar() - img(src=gravatar().url(item.page.metadata.email, {s:16})) - b  #{item.page.metadata.author},  - b.date(title=item.page.metadata.date) #{item.page.metadata.relDate} - | – #{item.page.metadata.hash} - ul.page-actions - if !isAnonymous() - li - a(href=item.page.urlForEdit(), title="Edit this page").btn.btn-default - i.icon.ion-compose - li - a(href=item.page.urlForHistory(), title="Page history").btn.btn-default - i.icon.ion-clock - if item.hashes - li - a(href=`${item.page.urlForCompare()}/${item.hashes}`, title="Quick diff").btn.btn-default - i.icon.ion-shuffle - .message - |→ #{item.page.lastCommitMessage} + //- MOD reformat commit history if redact is enabled + if redactEnabled + |Last updated  + b.date(title="#{item.page.metadata.date}") #{item.page.metadata.relDate} + if !isAnonymous() + | by  + b #{item.page.metadata.author} + | –  #{item.page.metadata.hash} + else + |Last update by  + if hasGravatar() + img(src=gravatar().url(item.page.metadata.email, {s:16})) + b  #{item.page.metadata.author},  + b.date(title=item.page.metadata.date) #{item.page.metadata.relDate} + | – #{item.page.metadata.hash} + + if redactEnabled + if !isAnonymous() + ul.page-actions + li + a(href=item.page.urlForEdit(), title="Edit this page").btn.btn-default + i.icon.ion-compose + li + a(href=item.page.urlForHistory(), title="Page history").btn.btn-default + i.icon.ion-clock + if item.hashes + li + a(href=`${item.page.urlForCompare()}/${item.hashes}`, title="Quick diff").btn.btn-default + i.icon.ion-shuffle + if pageSummaries + .message + | #{item.summary} + .message.commit-font + |→ #{item.page.lastCommitMessage} + else + if pageSummaries + .message + | #{item.summary} + else + ul.page-actions + if !isAnonymous() + li + a(href=item.page.urlForEdit(), title="Edit this page").btn.btn-default + i.icon.ion-compose + li + a(href=item.page.urlForHistory(), title="Page history").btn.btn-default + i.icon.ion-clock + if item.hashes + li + a(href=`${item.page.urlForCompare()}/${item.hashes}`, title="Quick diff").btn.btn-default + i.icon.ion-shuffle + .message + |→ #{item.page.lastCommitMessage} ul.paginator each pageNumber in pageNumbers diff --git a/views/mixins/form.pug b/views/mixins/form.pug index afe79425..546c6887 100644 --- a/views/mixins/form.pug +++ b/views/mixins/form.pug @@ -19,10 +19,11 @@ mixin tools(action, pageName) li +anchor("/pages/" + pageName + "/edit")(title="Edit this page").btn.btn-sm.btn-default i.icon.ion-compose - - li - +anchor("/wiki/" + pageName + "/history")(title="Page history").btn.btn-sm.btn-default - i.icon.ion-clock + //- MOD add history option only if content is not redacted + if !redactContent + li + +anchor("/wiki/" + pageName + "/history")(title="Page history").btn.btn-sm.btn-default + i.icon.ion-clock li +anchor("/wiki")(title="All pages").btn.btn-sm.btn-default i.icon.ion-grid diff --git a/views/show.pug b/views/show.pug index 0a59fa65..56268f88 100644 --- a/views/show.pug +++ b/views/show.pug @@ -16,10 +16,11 @@ block content .jingo-content.jingo-show !=content - var klass = isAjax ? 'jingo-footer' : 'footer' - p(class=klass) Updated by  - if hasGravatar() - img(src=gravatar().url(page.metadata.email, {s:16})) - b #{page.metadata.author} - |,  - b(title=page.metadata.date) #{page.metadata.relDate}  - | – #{page.metadata.hash} + if !redactContent + p(class=klass) Updated by  + if hasGravatar() + img(src=gravatar().url(page.metadata.email, {s:16})) + b #{page.metadata.author} + |,  + b(title=page.metadata.date) #{page.metadata.relDate}  + | – #{page.metadata.hash} From bb5f1592885b29e41eeb5f9f502063aa855530c4 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sun, 29 Jul 2018 01:40:02 +0000 Subject: [PATCH 09/34] added case sensitive option to config for search and redirects; added hidden, private and date based redaction; TODO: finish rollout sections RegExp tests to redactor.redact; TODO: add media to routes served --- lib/config.js | 49 +++++++++++--- lib/redactor.js | 164 ++++++++++++++++++++++++++++++++--------------- routes/misc.js | 13 +++- routes/search.js | 14 ++-- routes/wiki.js | 13 +++- 5 files changed, 179 insertions(+), 74 deletions(-) diff --git a/lib/config.js b/lib/config.js index 9c9db79b..42d44888 100644 --- a/lib/config.js +++ b/lib/config.js @@ -118,7 +118,8 @@ module.exports = (function () { markitup: false, codemirror: true, gravatar: true, - pageSummaries: true // MOD enable initial paragraph to be returned in list of documents + pageSummaries: true, // MOD enable initial paragraph to be returned in list of documents + caseSensitive: false // MOD enable case sensitivity in search and redirection }, server: { @@ -181,15 +182,14 @@ module.exports = (function () { // MOD various types of RegExp to use for redaction of content redaction: { enabled: true, - preserveComments: true, - hiddenPage: '/^/i', - privateSection: '//i', - earliestDate: '//', + hiddenPage: '/^/i', + privateSection: '//i', + earliestDate: '//', rolloutSections: [{ - expression: '//', + expression: '//', currentValue: 0 }], - endRedaction: '//i' + endRedaction: '//i' } }, @@ -282,7 +282,7 @@ module.exports = (function () { config.customizations = _.extend({}, this.defaults.customizations, config.customizations) - // MOD add validation of layout fields + // MOD validate layout fields config.layout = _.extend({}, this.defaults.layout, config.layout) config.layout.sidebarWidth = parseInt(config.layout.sidebarWidth, 10) config.layout.sidebarWidth = config.layout.sidebarWidth < 11 ? config.layout.sidebarWidth : 3 @@ -298,9 +298,38 @@ module.exports = (function () { config.layout.footerWidth = config.layout.footerWidth < 13 ? config.layout.footerWidth : 9 config.layout.footerWidth = config.layout.footerWidth > 0 ? config.layout.footerWidth : 9 - // MOD extend redaction and redirection - config.redaction = _.extend({}, this.defaults.redaction, config.redaction) + // MOD extend redirection config.redirects = _.extend({}, this.defaults.redirects, config.redirects) + + // MOD validate redaction fields + config.redaction = _.extend({}, this.defaults.redaction, config.redaction) + var regex_fields = [ 'endRedaction', 'hiddenPage', 'privateSection', 'earliestDate' ] + for (var i = 0; i < regex_fields.length; i++){ + var regex_value = config.redaction[regex_fields[i]] + if (regex_value){ + try { + new RegExp(regex_value) + } catch(e) { + error = 'Value for configuration field ' + regex_fields[i] + ' in section redaction must be a valid RegExp string.' + return false + } + if (i > 1 && !config.redaction.endRedaction){ + error = 'Use of configuration field ' + regex_fields[i] + ' in section redaction requires specifying an endRedaction value.' + return false + } + } + } + for (var i = 0; i < config.redaction.rolloutSections.length; i++){ + const rollout_section = config.redaction.rolloutSections[i] + if (rollout_section.expression){ + try { + new RegExp(rollout_section.expression) + } catch(e) { + error = 'Value for configuration field rolloutSections item [' + i.toString() + '] expression in section redaction must be a valid RegExp string.' + return false + } + } + } return true }, diff --git a/lib/redactor.js b/lib/redactor.js index 24b96d6e..eb6c8072 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -4,60 +4,122 @@ var isNumber = require('is-number') function redactContent (text, res, config) { var redact_config = config.get('redaction') + if (redact_config.enabled){ + var result + var results + + // test for hidden page pattern + if (redact_config.hiddenPage){ + result = text.match(new RegExp(redact_config.hiddenPage), 'm') + if (result){ + if (!res || !res.locals.user){ + return '' + } else { + if (result.length > 1){ + return text.replace(result[0], result[1]) + } else { + return text + } + } + } + } + + // test for private excerpts pattern + if (redact_config.privateSection){ + var replacement, start_result, cropped_match, end_result + var private_pattern = redact_config.privateSection + '([\\s\\S]*?)' + redact_config.endRedaction + results = text.match(new RegExp(private_pattern, 'mg')) + if (results){ + results.forEach(function(result){ + if (!res || !res.locals.user){ + text = text.replace(result, '') + } else { + replacement = '' + start_result = result.match(new RegExp(redact_config.privateSection, 'm')) + if (start_result.length > 1){ + replacement += start_result[1] + } else { + replacement += start_result[0] + } + cropped_match = result.replace(start_result[0],'') + end_result = cropped_match.match(new RegExp(redact_config.endRedaction, 'm')) + replacement += cropped_match.replace(end_result[0],'') + if (end_result.length > 1){ + replacement += end_result[1] + } else { + replacement += end_result[0] + } + text = text.replace(result, replacement) + } + }) + } + } + + // test for date release patterns + if (redact_config.earliestDate){ + var replacement, start_result, cropped_match, end_result, dated_excerpt + var date_string, year_string, month_string, day_string, hour_string, content_date + var date_pattern = redact_config.earliestDate + '([\\s\\S]*?)' + redact_config.endRedaction + var current_date = new Date() + results = text.match(new RegExp(date_pattern, 'mg')) + if (results){ + results.forEach(function(result){ + // construct replacement string + replacement = '' + start_result = result.match(new RegExp(redact_config.earliestDate, 'm')) + if (start_result.length > 1){ + replacement += start_result[1] + } else { + replacement += start_result[0] + } + cropped_match = result.replace(start_result[0],'') + end_result = cropped_match.match(new RegExp(redact_config.endRedaction, 'm')) + dated_excerpt = cropped_match.replace(end_result[0],'') + replacement += dated_excerpt + if (end_result.length > 1){ + replacement += end_result[1] + } else { + replacement += end_result[0] + } + // test date of excerpt + if (!res || !res.locals.user){ + date_string = start_result[0].replace(/[^\d]/g, '') + if (date_string){ + if (date_string.length > 3){ + year_string = date_string.slice(0,4) + content_date = new Date(year_string) + } + if (date_string.length > 5){ + month_string = date_string.slice(4,6) + content_date = new Date(year_string, parseInt(month_string,10) - 1) + } + if (date_string.length > 7){ + day_string = date_string.slice(6,8) + content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string) + } + if (date_string.length > 9){ + hour_string = date_string.slice(8,10) + content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string, hour_string) + } + } + if (content_date.getTime() > current_date.getTime()){ + text = text.replace(result, '') + } else { + text = text.replace(result, dated_excerpt) + } + + } else { + text = text.replace(result, replacement) + } + + }) + } + } + + // TODO test for rollout section patterns -// var private_map = {} -// var current_date = new Date() -// var replacement, content_date, public_info -// var rollout_list = configuration.getConfig().rolloutSection -// -// // look for hidden page pattern -// if (redact_config.) -// var hidden_regex = new RegExp() -// var hidden = /^()/m.exec(text) -// if (private){ -// if (!res || !res.locals.user){ -// return '' -// } else { -// text = text.replace(private[0], '-- Private' + private[2] + '--') -// } -// } -// -// // look for design notes -// var matches = text.match(/[\s\S]*?/gm) -// if (matches) { -// matches.forEach(function (match){ -// note = /()([\s\S]*?)()/m.exec(match) -// replacement = '-- Design Notes' + note[2] + ' --' + note[4] + '-- End --' -// if (!res || !res.locals.user){ -// text = text.replace(note[0], '') -// } else { -// text = text.replace(note[0], replacement) -// } -// }) -// } -// -// // look for future material -// var matches = text.match(/[\s\S]*?/gm) -// if (matches){ -// matches.forEach(function (match){ -// future = /()([\s\S]*?)()/m.exec(match) -// replacement = '-- ' + future[2] + '.' + future[3] + '.' + future[4] + future[5] + ' --' + future[7] + '-- End --' -// if (!res || !res.locals.user){ -// content_date = new Date(future[2], future[3], future[4]) -// if (content_date.getTime() > current_date.getTime()){ -// text = text.replace(future[0], '') -// } else { -// text = text.replace(future[0], future[7]) -// } -// } else { -// text = text.replace(future[0], replacement) -// } -// }) -// } -// -// // look for story-chapter-number content // var matches = text.match(/[\s\S]*?/gm) // if (matches){ // matches.forEach(function (match){ diff --git a/routes/misc.js b/routes/misc.js index 22a82995..175bedf5 100644 --- a/routes/misc.js +++ b/routes/misc.js @@ -36,13 +36,20 @@ function _getExistence (req, res) { var page var n = req.query.data.length const redirect_map = app.locals.config.get('redirects') // MOD import redirects + var page_name req.query.data.forEach(function (pageName, idx) { (function (name, index) { - // MOD remap redirect key to its associated page + // MOD remap redirect key to its associated page before retrieving page model page_name = name - if (redirect_map && redirect_map[page_name.toLowerCase()]){ - page_name = redirect_map[page_name.toLowerCase()] + if (redirect_map){ + var redirect_name = page_name.toLowerCase() + if (app.locals.config.get('features').caseSensitive){ + redirect_name = page_name + } + if (redirect_map[redirect_name]){ + page_name = redirect_map[redirect_name] + } } page = new models.Page(page_name) if (!fs.existsSync(page.pathname)) { diff --git a/routes/search.js b/routes/search.js index 28278d19..7f5c89c0 100644 --- a/routes/search.js +++ b/routes/search.js @@ -12,11 +12,6 @@ models.use(Git) router.options('/search', corsEnabler) router.get('/search', corsEnabler, _getSearch) -// MOD function for properly rendering content as a regular expression -function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); -} - function _getSearch (req, res) { var record @@ -51,6 +46,7 @@ function _getSearch (req, res) { if (app.locals.config.get('redaction').enabled){ var promise_list = [] + var term_regex items.forEach(function (item) { if (item.trim() !== '') { @@ -60,8 +56,12 @@ function _getSearch (req, res) { const search_page = new models.Page(page_name) promise_list.push(search_page.fetch().then(function () { const redacted_content = renderer.redact(search_page.content, res, app.locals.config) - const term_regex = new RegExp(escapeRegExp(res.locals.term), 'i') - if (term_regex.exec(redacted_content)){ + if (app.locals.config.get('features').caseSensitive){ + term_regex = new RegExp(res.locals.term) + } else { + term_regex = new RegExp(res.locals.term, 'i') + } + if (term_regex && term_regex.exec(redacted_content)){ res.locals.matches.push({ pageName: page_name, line: record[1] ? ', L' + record[1] : '', diff --git a/routes/wiki.js b/routes/wiki.js index e2fee610..82267550 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -79,9 +79,16 @@ function _getWikiPage (req, res) { // MOD check if page is listed as a redirect var redirect_map = app.locals.config.get('redirects') var page_name = req.params.page - if (redirect_map && redirect_map[page_name.toLowerCase()]){ - page_name = redirect_map[page_name.toLowerCase()] + if (redirect_map){ + var redirect_name = page_name.toLowerCase() + if (app.locals.config.get('features').caseSensitive){ + redirect_name = page_name + } + if (redirect_map[redirect_name]){ + page_name = redirect_map[redirect_name] + } } + var page = new models.Page(page_name, req.params.version) page.fetch().then(function () { @@ -113,7 +120,7 @@ function _getWikiPage (req, res) { // MOD remove existence of page if all content is redacted res.locals.title = '404 - Not found' res.statusCode = 404 - res.render('404.jade') + res.render('404.pug') return } From f801016e34b71b6682363ec301ee50d6ac5983d7 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sun, 29 Jul 2018 19:40:40 +0000 Subject: [PATCH 10/34] added sequentialSections redaction option to config; TODO: add media to routes served; --- lib/config.js | 40 ++++++++++++++++++--------- lib/redactor.js | 72 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 74 insertions(+), 38 deletions(-) diff --git a/lib/config.js b/lib/config.js index 42d44888..959ae600 100644 --- a/lib/config.js +++ b/lib/config.js @@ -169,7 +169,9 @@ module.exports = (function () { }, // MOD map of terms and the page each redirects to - redirects: {}, + redirects: { + index: 'Home.md' + }, // MOD configuration of columns in layout.pug layout: { @@ -182,14 +184,14 @@ module.exports = (function () { // MOD various types of RegExp to use for redaction of content redaction: { enabled: true, - hiddenPage: '/^/i', - privateSection: '//i', - earliestDate: '//', - rolloutSections: [{ - expression: '//', - currentValue: 0 + hiddenPage: '^', + privateSection: '', + earliestDate: '', + sequentialSections: [{ + expression: '', + latestValue: 0 }], - endRedaction: '//i' + endRedaction: '' } }, @@ -319,17 +321,29 @@ module.exports = (function () { } } } - for (var i = 0; i < config.redaction.rolloutSections.length; i++){ - const rollout_section = config.redaction.rolloutSections[i] - if (rollout_section.expression){ + if (config.redaction.sequentialSections){ + for (var i = 0; i < config.redaction.sequentialSections.length; i++){ + var latest_section = config.redaction.sequentialSections[i] + var error_prefix = 'Value for configuration field sequentialSections item [' + i.toString() + '] key expression in section redaction' + if (latest_section.expression){ try { - new RegExp(rollout_section.expression) + new RegExp(latest_section.expression) } catch(e) { - error = 'Value for configuration field rolloutSections item [' + i.toString() + '] expression in section redaction must be a valid RegExp string.' + error = error_prefix + ' must be a valid RegExp string.' return false } + if (!(/\\d\+/.test(latest_section.expression))){ + error = error_prefix + ' must contain the term \\d+.' + return false + } + } + } + if (!config.redaction.endRedaction){ + error = 'Use of configuration field ' + regex_fields[i] + ' in section redaction requires specifying an endRedaction value.' + return false } } + return true }, diff --git a/lib/redactor.js b/lib/redactor.js index eb6c8072..a3fcde08 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -59,10 +59,12 @@ function redactContent (text, res, config) { // test for date release patterns if (redact_config.earliestDate){ + var replacement, start_result, cropped_match, end_result, dated_excerpt var date_string, year_string, month_string, day_string, hour_string, content_date var date_pattern = redact_config.earliestDate + '([\\s\\S]*?)' + redact_config.endRedaction var current_date = new Date() + results = text.match(new RegExp(date_pattern, 'mg')) if (results){ results.forEach(function(result){ @@ -83,7 +85,7 @@ function redactContent (text, res, config) { } else { replacement += end_result[0] } - // test date of excerpt + // test date of excerpt against current date and replace text if (!res || !res.locals.user){ date_string = start_result[0].replace(/[^\d]/g, '') if (date_string){ @@ -104,7 +106,7 @@ function redactContent (text, res, config) { content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string, hour_string) } } - if (content_date.getTime() > current_date.getTime()){ + if (date_string.length > 3 && content_date.getTime() > current_date.getTime()){ text = text.replace(result, '') } else { text = text.replace(result, dated_excerpt) @@ -116,31 +118,51 @@ function redactContent (text, res, config) { }) } + } - // TODO test for rollout section patterns - -// var matches = text.match(/[\s\S]*?/gm) -// if (matches){ -// matches.forEach(function (match){ -// chapter = /()([\s\S]*?)()/m.exec(match) -// replacement = '-- ' + chapter[2] + '-chapter-' + chapter[4] + chapter[5] + ' --' + chapter[7] + '-- End --' -// public_info = false -// if (!res || !res.locals.user){ -// if (chapter[2] in public_map && isNumber(public_map[chapter[2]])){ -// if (parseInt(chapter[4]) <= public_map[chapter[2]]){ -// text = text.replace(chapter[0], chapter[7]) -// public_info = true -// } -// } -// if (!public_info){ -// text = text.replace(chapter[0], '') -// } -// } else { -// text = text.replace(chapter[0], replacement) -// } -// }) -// } + // test for sequential section patterns + if (redact_config.sequentialSections){ + for (var i = 0; i < redact_config.sequentialSections.length; i++){ + var latest_section = redact_config.sequentialSections[i] + var replacement, start_result, cropped_match, end_result, section_excerpt, section_number + var section_pattern = latest_section.expression + '([\\s\\S]*?)' + redact_config.endRedaction + results = text.match(new RegExp(section_pattern, 'mg')) + if (results){ + results.forEach(function(result){ + // construct replacement string + replacement = '' + start_result = result.match(new RegExp(latest_section.expression, 'm')) + if (start_result.length > 1){ + replacement += start_result[1] + } else { + replacement += start_result[0] + } + cropped_match = result.replace(start_result[0],'') + end_result = cropped_match.match(new RegExp(redact_config.endRedaction, 'm')) + section_excerpt = cropped_match.replace(end_result[0],'') + replacement += section_excerpt + if (end_result.length > 1){ + replacement += end_result[1] + } else { + replacement += end_result[0] + } + // test numerical value of excerpt against latest value and replace text + if (!res || !res.locals.user){ + section_number = /\d+/.exec(start_result[0]) + if (section_number > latest_section.latestValue){ + text = text.replace(result, '') + } else { + text = text.replace(result, section_excerpt) + } + } else { + text = text.replace(result, replacement) + } + }) + } + + } + } return text.trim() From 8fedec1a511970e499036ce0320f66f2c742fbb1 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sun, 29 Jul 2018 20:30:52 +0000 Subject: [PATCH 11/34] added media folder to static path on folder; added mediaPath to gitmech.js; added override of standard favicon with favicon in media folder; --- jingo | 1 + lib/app.js | 9 ++++++++- lib/config.js | 4 ++-- lib/gitmech.js | 19 ++++++++++++++++++- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/jingo b/jingo index dc0f9589..600ac5e3 100755 --- a/jingo +++ b/jingo @@ -55,6 +55,7 @@ var refspec = config.get('application').remote.split(/\s+/) Git.setup(config.get('application').git, config.get('application').repository, config.get('application').docSubdir, + config.get('application').mediaSubdir, // MOD add media subdirectory in config refspec, function (err, version) { if (err) { console.log(err) diff --git a/lib/app.js b/lib/app.js index 433a6eba..3795a1ca 100644 --- a/lib/app.js +++ b/lib/app.js @@ -24,6 +24,7 @@ var gravatar = require('gravatar') var passport = require('passport') var methodOverride = require('method-override') var flash = require('express-flash') +var fs = require('fs') // MOD import dependency for media folder mapping var app @@ -159,7 +160,12 @@ module.exports.initialize = function (config) { if (config.get('application').loggingMode) { app.use(logger(config.get('application').loggingMode == 1 ? 'combined' : 'dev', {skip: function () { }})) // eslint-disable-line eqeqeq } - app.use(favicon(path.join(__dirname + '/../', 'public', 'favicon.ico'))) // eslint-disable-line no-path-concat + // MOD use favicon.ico in media folder + if (fs.existsSync(Git.mediaPath('favicon.ico'))){ + app.use(favicon(Git.mediaPath('favicon.ico'))) + } else { + app.use(favicon(path.join(__dirname + '/../', 'public', 'favicon.ico'))) // eslint-disable-line no-path-concat + } app.use(bodyParser.urlencoded({extended: true, limit: '500kb'})) app.use(methodOverride(function (req, res) { if (req.body && typeof req.body === 'object' && '_method' in req.body) { @@ -170,6 +176,7 @@ module.exports.initialize = function (config) { } })) + app.use(express.static(Git.mediaPath())) // MOD files in media path to static files app.use(express.static(path.join(__dirname + '/../', 'public'))) // eslint-disable-line no-path-concat app.use(cookieParser()) app.use(cookieSession({ diff --git a/lib/config.js b/lib/config.js index 959ae600..9a122cb8 100644 --- a/lib/config.js +++ b/lib/config.js @@ -168,9 +168,9 @@ module.exports = (function () { script: '_script.js' }, - // MOD map of terms and the page each redirects to + // MOD map of alias terms and the page each redirects to redirects: { - index: 'Home.md' + introduction: 'Home.md' }, // MOD configuration of columns in layout.pug diff --git a/lib/gitmech.js b/lib/gitmech.js index a2d1dea5..82426302 100644 --- a/lib/gitmech.js +++ b/lib/gitmech.js @@ -4,6 +4,7 @@ var semver = require('semver') var fs = require('fs') var gitCommands, workTree, docSubdir +var mediaSubdir // MOD add variable for media static content var gitCommandsQuote // MOD add variable for quoting absolute paths var gitENOENT = /fatal: (Path "([^"]+)" does not exist in "([0-9a-f]{40})"|ambiguous argument "([^"]+)": unknown revision or path not in the working tree.)/ @@ -104,7 +105,7 @@ var gitMech = { remote: '', - setup: function (gitBin, repoDir, repoDocSubdir, refspec, callback) { + setup: function (gitBin, repoDir, repoDocSubdir, repoMediaSubdir, refspec, callback) { // MOD add media arg this.gitBin = gitBin || 'git' childProcess.exec(this.gitBin + ' --version', function (err, stdout, stderr) { @@ -154,6 +155,17 @@ var gitMech = { callback('Bad document subdirectory (not exists): ' + repoDir + '/' + docSubdir) return } + + // MOD add validation of media subdirectory + mediaSubdir = repoMediaSubdir.trim().replace(/^\/|\/$/g, '') + if (mediaSubdir !== '') { + mediaSubdir = mediaSubdir + '/' + } + // MOD report usage of media subdirectory + try { + fs.statSync(repoDir + '/' + mediaSubdir) + console.log('Using media subdirectory at ' + repoDir + '/' + mediaSubdir) + } catch (e) {} try { var gitDir = path.join(repoDir, '.git') @@ -183,6 +195,11 @@ var gitMech = { absPath: function (path) { return workTree + '/' + docSubdir + path }, + + // MOD add media path to file + mediaPath: function (path='') { + return workTree + '/' + mediaSubdir + path + }, show: function (path, version, callback) { gitSpawn(['show', version + ':' + docSubdir + path], function (err, data) { From 6a86bad2b861017f6ee8bb9f1a8f74595de1417d Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sun, 29 Jul 2018 20:57:33 +0000 Subject: [PATCH 12/34] added glyphicons font set for bootstrap; added google font set for ubuntu; added option to serve files from local copies rather than CDNs to config; removed case sensitive toggle from search results - now case sensitivity applies only to redirect names; --- lib/app.js | 4 + lib/config.js | 3 +- public/css/google-fonts.css | 8 + public/fonts/Ubuntu UFL.txt | 96 ++++++ public/fonts/Ubuntu-Regular.ttf | Bin 0 -> 351884 bytes public/fonts/UbuntuCondensed-Regular.ttf | Bin 0 -> 350444 bytes public/fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes public/fonts/glyphicons-halflings-regular.svg | 288 ++++++++++++++++++ public/fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes routes/misc.js | 2 +- routes/search.js | 6 +- routes/wiki.js | 2 +- views/layout.pug | 6 +- 15 files changed, 406 insertions(+), 9 deletions(-) create mode 100644 public/css/google-fonts.css create mode 100644 public/fonts/Ubuntu UFL.txt create mode 100644 public/fonts/Ubuntu-Regular.ttf create mode 100644 public/fonts/UbuntuCondensed-Regular.ttf create mode 100644 public/fonts/glyphicons-halflings-regular.eot create mode 100644 public/fonts/glyphicons-halflings-regular.svg create mode 100644 public/fonts/glyphicons-halflings-regular.ttf create mode 100644 public/fonts/glyphicons-halflings-regular.woff create mode 100644 public/fonts/glyphicons-halflings-regular.woff2 diff --git a/lib/app.js b/lib/app.js index 3795a1ca..aedc8757 100644 --- a/lib/app.js +++ b/lib/app.js @@ -111,6 +111,10 @@ module.exports.initialize = function (config) { get pageSummaries () { return config.get('features').pageSummaries }, + // MOD add serve local toggle + get serveLocal() { + return config.get('application').serveLocal + }, isAnonymous: function () { return !req.user diff --git a/lib/config.js b/lib/config.js index 9a122cb8..7ef6cb51 100644 --- a/lib/config.js +++ b/lib/config.js @@ -63,6 +63,7 @@ module.exports = (function () { repository: '', docSubdir: '', mediaSubdir: '', // MOD name of sub-directory to use for additional public accessible media + serveLocal: false, // MOD enable serving of files from local server rather than CDN remote: '', pushInterval: 30, secret: 'change me', @@ -119,7 +120,7 @@ module.exports = (function () { codemirror: true, gravatar: true, pageSummaries: true, // MOD enable initial paragraph to be returned in list of documents - caseSensitive: false // MOD enable case sensitivity in search and redirection + caseSensitiveRedirects: false // MOD enable case sensitivity in redirection }, server: { diff --git a/public/css/google-fonts.css b/public/css/google-fonts.css new file mode 100644 index 00000000..a2b796d0 --- /dev/null +++ b/public/css/google-fonts.css @@ -0,0 +1,8 @@ +@font-face { + font-family: 'Ubuntu'; + src: url('/fonts/Ubuntu-Regular.ttf') format('truetype'); +} +@font-face { + font-family: 'Ubuntu Condensed'; + src: url('/fonts/UbuntuCondensed-Regular.ttf') format('truetype'); +} \ No newline at end of file diff --git a/public/fonts/Ubuntu UFL.txt b/public/fonts/Ubuntu UFL.txt new file mode 100644 index 00000000..ae78a8f9 --- /dev/null +++ b/public/fonts/Ubuntu UFL.txt @@ -0,0 +1,96 @@ +------------------------------- +UBUNTU FONT LICENCE Version 1.0 +------------------------------- + +PREAMBLE +This licence allows the licensed fonts to be used, studied, modified and +redistributed freely. The fonts, including any derivative works, can be +bundled, embedded, and redistributed provided the terms of this licence +are met. The fonts and derivatives, however, cannot be released under +any other licence. The requirement for fonts to remain under this +licence does not require any document created using the fonts or their +derivatives to be published under this licence, as long as the primary +purpose of the document is not to be a vehicle for the distribution of +the fonts. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this licence and clearly marked as such. This may +include source files, build scripts and documentation. + +"Original Version" refers to the collection of Font Software components +as received under this licence. + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to +a new environment. + +"Copyright Holder(s)" refers to all individuals and companies who have a +copyright ownership of the Font Software. + +"Substantially Changed" refers to Modified Versions which can be easily +identified as dissimilar to the Font Software by users of the Font +Software comparing the Original Version with the Modified Version. + +To "Propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification and with or without charging +a redistribution fee), making available to the public, and in some +countries other activities as well. + +PERMISSION & CONDITIONS +This licence does not grant any rights under trademark law and all such +rights are reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to propagate the Font Software, subject to +the below conditions: + +1) Each copy of the Font Software must contain the above copyright +notice and this licence. These can be included either as stand-alone +text files, human-readable headers or in the appropriate machine- +readable metadata fields within text or binary files as long as those +fields can be easily viewed by the user. + +2) The font name complies with the following: +(a) The Original Version must retain its name, unmodified. +(b) Modified Versions which are Substantially Changed must be renamed to +avoid use of the name of the Original Version or similar names entirely. +(c) Modified Versions which are not Substantially Changed must be +renamed to both (i) retain the name of the Original Version and (ii) add +additional naming elements to distinguish the Modified Version from the +Original Version. The name of such Modified Versions must be the name of +the Original Version, with "derivative X" where X represents the name of +the new work, appended to that name. + +3) The name(s) of the Copyright Holder(s) and any contributor to the +Font Software shall not be used to promote, endorse or advertise any +Modified Version, except (i) as required by this licence, (ii) to +acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with +their explicit written permission. + +4) The Font Software, modified or unmodified, in part or in whole, must +be distributed entirely under this licence, and must not be distributed +under any other licence. The requirement for fonts to remain under this +licence does not affect any document created using the Font Software, +except any version of the Font Software extracted from a document +created using the Font Software may only be distributed under this +licence. + +TERMINATION +This licence becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. diff --git a/public/fonts/Ubuntu-Regular.ttf b/public/fonts/Ubuntu-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2001d6ec68f3022580a87e7ca69b092ff1c520de GIT binary patch literal 351884 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 z z8G}PW3+VuhN7Do<%XlnkP%PC#s47n;cZhCDuNT+qEEaKYCHsvPR9pC-0&KVYv8T$c zhp;L?BQ$)r9woK5P?(Dx941pAlwRuY?C6hm z76N;=AWJ7II~{5{-(w3GBH5k>-?cl3*4UlO@bXwPRR~&xsh0H6TD?)0CS+$k=?r;Y zW_vhO&5n%u4HJeMK4lEPuRFj!?-#C89dWq42ZEA2ff=)k7-RS!Y=IG5a6HH)|Frjb zz{(Tof~5GHW^Ia05nzRanaWx}e4?Wec&`uwRx|M^#0v)kkgp}4oUY}!&0BL&3Lbs_ zd21jOC|1ob`*68^sOX#&H+=~{mcoR}B6&q+f77rDX8 z+|v$k9B3KuasRV^W}cRh`#htjQ8(!fs)N#2?Kon1Ua>@e4sOx&bw7W?5Hzl4kIYBr zIsuORHO|kzbrs)a-wH<};@3|)WLH|<+|Dv{?`~TsO315uhV}q1kNpzYx~gh-HVvQY;R z>$DbD@{p4rSvnx*60mZ0Cn@5oAnaZXAGuwl@~ClCHztkIH1L15aNOkipCI(PC>mFf z#gS|9)7bl5t6&t)sRwzaPWH?ERO^P;sr)W$GMjTcbJ?U-l)pUp-Zj@S>z7+^xNc9O zu;;oPT5;>|v`%g5IF*sza%=wna&nBWWhrX|562?OEru*i+quw(?pVYM-U zK{fK5Gm^4nq`vW{uzK9cdI7#uF_y*z#_@I|8#fZ8fMiTy42>|Krp-nVkhu`Je8jlm zHK9L4pl(8WeO$wS_mm5sA$ovpBmWb4eVwE8#L@fmKMG3 z#2)@J{@ZlkWf%7WleDc!xcoVq%4llEK*@s?s%KMyG zJmO`0y=;@0jq&$>?EOdYfA>nKi9|^8PD=)lWEhafrESu)DA@-i=CJgyh;XRNSw*~B zc^8@Vh)dMq)S;!p($Umh8XBQ%{pt7NVpZ+x8h}r|aQL4W&AG^hSrFyfAgSgcGk}l9u zt!I2v?+c;cQYr94Ei}2%pLRTHq5yyRDawUe9QM_6V#uC^oM0bD2123!$l9hY`CaBn zJmqjEV`1}ZQz({nI+BTq`Re?ZrjgUTcAXyC%j5@|ufKjzu6gR(z2)-WYp0rXd#=B} z`GL6)xX!A{&vTF;e&I1SGmPlE+pPEz{!{#;c7|B5L(pQq4nd3ck~d8CP@L0@;NWyU z#EZZJeb7Q5EJSywwdk%txDd)6bC0@4l~Kp2Wz4)VQ?4t)mF;K}!OKYTbow!g6(bd&@VbZo7Twv6kIwUq?4e({^`vcn80v{{HEw z|841?4ndHJ@cq4w`%VbIJ1qnu05tLUE3zJR0fyE7fjUe3(!q=*QjO%t0LP)8%q<~d z0xZhycPlQx+okvGF%W+Io^q>nI=fZ0am%pTfiK5{)#fleQ0vcRNaV0n6ZztZ!R#byxG(yH1J`AC zS>n0IK&~rzb!JP|Q)*k}V{`ih!>dQba~BXe{egeOo*S!c`WvqSaCQymw*Wh3 z2yxqjuvN8~63iq6TNZZmRE&ab8}UycDm+jScN9Kd5DNx^o+x-X)c~?}!Q-)nXQMWF z4=BvcbI`#@hRZ5VR*;5xzEpV?LkT>W8}`)_2J4}hc~kH{6OjhPlMilac+Bw;+>C`l z%5QNsj&|s}Thoa|y0u%^G1>?yMJm9?o#C|WRD)Xbk2dr?xNOAZ8CmvVPs6CMQEfQo zN{5l5jC(;GTzCfeg5%^F_DzX0ZxI1+=IOieZ&JR))tfi-fHiNAm^I7tdj~dWZ-N={ zKW;y4^DA_d%5;iqWQy0J=%y%~1gM|3t_z>&i^6Q7@E_bh?!LNk`;!du0NgI&Rog2a zxLqxm680x}Mq>04D0jdi_wfT@tPMb;@8SXQm*xk6q3+Q?h%);etm-Xl&m#e5@~{K) zAz6IP2>K%?Cr?fYHwyP43N3hq3`R*gX>tag4Nl4FObJQfNsCj7oYZ4B-#77eJr|Mksi{4un=KX1GbL}}*Pd-?fp0AnV?1kwh9h%Ir;mB|4-b5J7OUvPq9Fen{^QgDG! zd;_CV!9O4u@oy4LDnA9q3~vqv9p(g^E>8nFay_K;2E)JR^KfnH90U~L*7Sm>kpz~Cl?c0>H0 zm$HH(#D!B9Iorevc9Q9G;SsMFv|tvmxouCQzj15c?6&|%0zW*DSH*;FswGDDM2z%i zB;dVs3MR%X9>K{#XH>{|^LipWDPc7`rXz80VAkVWXFq7wobd=@QKINM&2#hC`N|tF zfW7Bs2ovtBKnG>@p3r5qhZRO`yM4H2s)XlpKPuZ6dUmms_~ zv1_}9d+NcBOkpl?8DN~)Zj4h-*oilcczl|_zvIGhr5SLPfe!&(&3VDeZsDIh!4XPw zCx77v_7t!yPGMLr3ifH)`mDn4Q0`I0ab=q#YRZ{nHJh!9-gCxL4&2L5w*iA7E=s7?uX-dSgD>)MSz$dT8PycKCuu+<-sGE^*wo%_VX_r^6bDwd8Zz!8at^ zT|Rv<;63OEtE>Z&Mbkl}L|1r@U*p16)~*wae^NPn2D79s_AEp?E*N}tRsN&#(^b9m z*G*Uc&_j2vy>t2UJJ+uM9$otP0DckL#9=ll0nP~~hQI`5tbQBdvS8gX)UiAudPf5M zo3DTg3}_yJcqReJ)*v#*{P$+_+qdT>cDQlNmPVR0aJT6mxQM%TGv@I*b$0oGj=xn` z^b|ATZ#4}D2O9>Z!Eavm4bzt3mWD0TmT%_Pu;?0QSi{!r{tww*ch%WlN3*wI+4=bP zCAY7?l;ITtra4;T_=oed&hq*eMiqRo=aJI?|1aIEi4NZy;{sqK7gNRlpHsoIdG^@L zxMIcsLzdX{@72j;>(4b3S-wAkgO|PrUXl(hdn0VwEvP6+ydMIq1!~lYPzVwsI^VoRqPH@8+V_#i* z1FB6%-c0}HU#4;N_gwf;`X2HRT!??)ppK;T`_1M+F4fR%ggGDzH{TjK8aNh^_JB#Y z$y_*4%pAz&62)bf)PclO*&eWOvG23%?6*aSj8K6$>-Xw)vi>$V;MX`!kU2(_MgSeu zDIJh1hLHUW^bTE7%>!HW!2*Yk*{jnx)Dwd7Y-eA~t=Kc*Pg<-dU!!ke&x#y#t-X79 zchBy-*ZRAH?BLu>%sqFGP0U>#>}FT0yN0sZXQBuy1{4&Y+tvuKg)2V4rBNrX{oC>1 zu7#4oWm_L~(;tCn)h4Vw4UixAbn@794$csxp$8e2hOnVzkYs}}V>3HcIF5|>7+AAm zz;FXdP;j2`0|oS3=PD3!bTR_Ogu@QFQk;K)rTF{ij}$<*FFsR*B%2dXf>b2s+)o4N?)AV^4IXzQDSQQjn+Fl< z6BH9!n=9EIi!~=*^=Gy{)RgjiQ%#{@Gd(xs+?-=N_8YbyOVari(_`cb5{Tqjg>aUb zTamzpY(3D0ysh+0-qw9t+gfYsSAPib)^xpoaWA`Cd>fhd8`aJ!;{oF#ql6TtxX?^I z)OJTqh(;f_e9LkMR3&YmL67J;8G1JK8rZ6lpKtHhkAixgk8f3ZbMlQzP=7ZQ&u!&p zC_*@n7b}D{qCAbL0hoxZ_0CY*>q#rlfW;Y=TXe3)zluM!Cc^Mh%W^~sEWD)HiJ$Eg zU%+{46k3EYKQ%}U%q_Hi*TebPB0p^Xmh}vf!uQ??Cf*wnbxW;8if1IJ;?rFAWb)bM zYe^}2ZwkxiS@AVd67SU+T3fEnUirr*_D5*$_e&9{{wO5HDe+#} zDi4EPL?>E8LBF9DR4INa0K0$T^`md7+CJ!By=?U;dWOXJ)phNh-UF+IU-RW1o( z-w6XKmrHW6pt>Z6wWUG`ih3jBrGj2uBn01jrSvAmAvlim_|HE@GVrSdBm&>W%0ygJ zx*ai;JhbyZ;bC>(E&hXkF_V?tkM^;?4Y6G@aTvDdOkq09t|&|u#B3p3uuQeFwwYUk z2f+q>qJLABySeVIhmlfqm)C+;To(tBB#P{) zI$Vn_3TM_~TjKY}r=p1+1NFe>z|MGbcgMa@5sqv9CJo0m_rv)}=ME0$N_r$~Pqm|~ z9`fw1c6EII3$jITn%KyJT}-J(K<}=@yD*0w7cYGVb4aXrM&V9KnXd|dRl)J(&g!fa zqArS9suNRLYHNe|!QNN_8}}8+AyYIM6{BO8QTr8k(LQT7>J74wF!6{)0f6Jf<_rQF#*GH zgARX~$*)%UD@^_Td-$~WE~kiYBl&}pC4OjQ8a+AS@UZZ5d1JowGM?fqBBMQH&Aq)% zD|^Q54u^fLXJt!ww8KBvGa6x?#BLiXCEWFAcIA>XT12C0?Q4%G+I(X@V-Y+4YP8%R zX-Ybs$)-rOOwVOnCy=&c274eTJf&VQ1eAanh{Uu6HMh^>_8EPCtovBv2KPhmlWxf! zjO`bYttLBUWUI-@R>J`Y@hy=K#ar;fdf8S_W9f~p29;pYZs@q z(3&9)iaRx5hkLDp@mv%wgA#kb@;W8BAVZ3$umy;L4LG{GNp^9v3#~5tIrry({^zqD z+e>>h8_JDqv%4F&cO1f7*R0sHV$0*})_iqjKbBsc`(v$-66DGckk8sHtYsGU$!rJfEInEh z3x0M?VVj3osFPVb+1K0HT~&6h!j3hw-6iG?F!-Avv$9z$8(Te7Hq5j~BV88OQDl~) z{p%IhSz(n;|QI1!8^Y$8codJ;${Z?K5(?cOcf?q#_lV!n~Qf9 z#cPXfQ<2RMu+I#z>jv2UW9$J7`;6soi#TOrTcKl&4HR`ppkf5qKhVp1yAY`*XbJg; zs*?+~7sw)ZR=I{t&Lboty@liGbrd_nw2_1(nn%Q0o~z(J5_6QZI{%NS8fv~~ay7UV+7fOa1JT0p44H3~2rw8M>FVn4P%}$gBTf+T2BX`zRJVk@ zfuXj1w>4CV&<9E&?ucft*|B_c=%mqRjAr}|T}i!3j~9hDW^*Mo>AcSxDRdP=9E%Vy~|yRhteTLiRs)* zi~HC{@h!muld0jf;DtKpvbjdQ4oSrmPOyN>it~^cMS`R4l@inu90iNemeobCC;jQP zA3u-Qp2dC1P$;?h2eE15Ar{YJoq_)W;pTr-|4Zk?Lu}|}a9_axO+lMgDEn9?r zC?{7ysZ``@ilVUc+5Xr1-|m+l>1X}79L9QjHuhTV?U-~V#`Z$Nxn;9?uUV{_|FU`P z#V*#>dwb`N6}BDg@8RILf@gx#AtVRhzSqG<99tY>5U0b?;L_WNrVH%)0xO(MKbw9n zE!_p)>)ZF~*$P;Mq7RM_*n?OO=O-x-7)$1&Ux+~;OA8;uHNa0yaAs`dza!7>a=XJ= z!|m3|dM_dK(xA&c9{_m~;<>J?ZW|oD?W(T&^Jrnk&feagD+=}JxeMS)i^SW8^Py70 ztMgmi)78QLzI@g0*87nIf91x5ldY|j2RGKAmtD7}SX^`6vfA^PB5kWHt*hE2vc)3x z8Qm)e`^TNeKFMM-Vr}HuD4W1pY!_OEBWiIZz9lY>gxO{nbGw+%#iVa#&t%VLrR=?% zJ$pT3&eP!;2FG=kqaD4#sWv}rea-qdY=ZknqgOJZpT%i0WAm;lV(&gE%W+C$_E0nr9aSO$Aw=E79?MeiAtp7;}nXT$-5_MZzh0 zQtGyNJpl)9(&v1QdP_=irX#NAR6|$V5m?ud>@4_0jXeo_%4={XLjF#V*}Vj5zv3=Y z)LFesEXaC2nQG!4y@@DtUxZJC{TRA@PWUADlo5|-@m#AV z!S05RA5pC^djPmVViT%^AoxM_uL6)7)PJAIu4?b5F*HJ zTfAqMpvuaS`s+=dti5xn6L&h)wy{n6p_Tp6$X*0TOdB9xg;UF(TlP9KeQ#<1hth}8 z;=8(*EV;j(UDM9;?VH=h_EVncJg-D>G_fn1 zrkWmTlGG;F078LaUG58Zwj-+LP?%vTw% zh?nlcpkvf=1)_yROAeLU^<@?;kCv|}OXW+pp-(@o-=vqcU3gxj(WE_ymvF{GqSG3I z>dH6b{F}s|jh%?!iFUJcdo!$*NsuC{Bx3npuH4sM0Lj(=a(8~Ayf$zI7zYFDQFS`3 znZ}mD*#IqeW@F+HAyH$hgWl9pkq=R55h-~QJ^_jo5oFK}ZMBI-=Ke|i z;Rrqt!K+b$mw~XXQ|buS1$i5t+~*+&!`pB%+-E-H0d@i8VX8$L@t8g4Wa2f5%LmW+ z*|482@iT+p=g*;b!@k#|Ec&2cF(LQ{7G^ljFy7dwwbfmMaKxzN|BsS|P?&LclDK0P zf36ydRCE6N^YT(GR-zyA_C#C8?as6%>d)zhhBSU?3`AsI!ucY866co#?8QAcJymQm zorHSexI=%BUgSmUK=iFQAx^EAklA+9{t2q&VpeICPL3n6coGF&wn552KY9KIDoz8Q zzq<1uH-nW!-hVP*7Z-RT-oJX07vdcLuP?nc{?bcx{}bLInwuEwWnDPql8CwVx)bR{ zH6gjby;rzJ5I5mt!6bhh#m^!p{FhFJeNV>aCr5D^Pwa`@9JwnZZG>Jk3|0SAxGbpU z?}6zAN~R_00{UbF z4AW(p+!@&$5#!3YZ^rzmOs1mrZJ;mTRpYW_B-QNmm%!#yY>Jzol;u!Kc(Ry(!smX{ zAHwZGL3>(&UAyTFwhuRT@GI>`&2UI3^pP$P)0~N%+fssBIK>-sF~U(!2GjLgAJIe%Epm1EOFb(k;g| zyaLj%TKr4F(!=g0p3OAy#`SZR|H6=HYglu`ZRHKOjuo$NSYt1WH!${xpR;Ez`}TCM z>xvl7fB34D77_fynbsxzLij5-CHl#F6W-3W| zw+#lXY*7H%E(b$i6?Yz?8g z&#|1{XTaE&K&x_ZEe5t#?Y~U!9tk}X5+Qu&HQ~oRqQT?ypaNPDtfZP8_CM&@2Z_5E zm%zmoDG}H)T+aR{1ns@ymSy?;vX*fDd91Tq>FTUjJ4HhYnYH1{aH+JSH5_hTQR-U0 zysL9?Q1fd-$N34@ac;#p8HHO($HAPUj;gc{5o(doTK& z96d(iOSR7v{O_N~-~UPN??1Ef_ZYJXa87@Wy_1CW*{=295OtB4@{<@slgC(EIBE=`0jlTVwG=GL_CmGhql#f5acnME6Jh9=wPU ztv?VWLOz$x7+Hqx7mXg^48=@FjI^umH?}|AE;-s+jo!75@-&`?!*nw=8Ug~BfgEy_ zS`)&7yqdftc~4UMa)#ZRVV}vcD>73VF_}qbA}H(Ix-_y(x|)4ABrR22=-QcTjLoAnJhRlP(=Y}J01~_>*SP^b(veQ zbVM~Eo0$f&tXF;{CF&akyR*v%mL%OiXC&+OW+P6YE7?D=EO!k^$Rir-_%m^zFHS$- z{`Q_H9=d0Ry%-5(!*+W(8wfYpSN!QiPwXvkDUWXk8Tp@YVef>Z(GY&H58(rlh>Mak z%I{Q%kzeQbI6O8>&}a8~0uy{Zh3LY?{3?%-O zeGJqq4&)2j4F|wBiL;KlIuL2C0d&Zph9JTVwMZ+*woZ(r93(RK1;TZxU)q1|h_Ui< zO6o}qlBVYVo|)!;&xYr=&i!kk*|)Fzx_!GV?62nbw|{!cKZ(02iu&!wE6SgI_V@!U zR*gJO4m9EsU(R{NRTfZJEh8TBT}^C#6I%vIRa3P|bTu)liES*hbg^1oUX)x#CKZ_s zvhfD78;;oK&otlNEIru7_80Fg-dmJ*6xmR5V^QQKX+DS5R_yPAebm<2(*xFBM=HI{ z7h*;@>u=ttKdKiu!_n~A($=p2hOyMv)HNwE*2Vqt&GEf)UHrDO^w#t>X(=u2%iWqg znv*u?SZ;Vo*@!BPk|KKp-YwpJUY+;0gO2+h;*evbV>j%oSu@*fW?OK8fzyqaDXHaz zoti{}Mtb$rH{XKVGDmL{nI6&zAq!u5`BjpHocNTCB!05+We(|&*g&Wz z9Z$+274##IW5&k%cdf|(2bARYYu6!ScG-cgvsvWMD{mkFIHGb(Tttn4%T9A^g3cwJ zGNO;m)Iv?Beo>RD?80wwNZ17P1Y@;wDIeATu<$ue_OUcL45+bfUiN8ylT6k6o)WIB z_x)QiLVQf$BrCP{ck=e3Cq$%m{1yZg3G^?rz&L6%Y2p&s@4%}3F~5GmXXs40@OSm^ z_?1f37gWNXn6{8yo8dW5WSi@LfYFcmlu zkOBZcQWcY%?-$r6VUHj>aK(@1h5U{AZ{?+QB1W;BV>wIwfH{dAs{jy%x7ju$O?D{l z2dwZmc}vY1R|`~O4MQ7*gg_qJtJU+b!c2P~D-}mM=ZLH6g~Vx8PaK@L+qsJ!r14*^ zk;YFS*cTz~F}Ws~ zIaMEbjrW$%5ws?L&Y#uhRKzJ{Dm4fuL>7w+b4s-h&Ms=O-%m)fSl4xX7;rC1+#brvgrjKJFR<3CxQ$Q zY+_cM;af600+U=ei(s)6gqMu$Y2yn<@d$Kp-3yGJW-l@E0RUvo6d|Ad)TbfL@Br)? z8N{FFWoNbbwYLczinqa*O))BjuLwxQzVYQRch&#jUVnjiVDqeoC9!14?l~DJk&}_27weM%{qd!{)op z;x#7rNtsCr{C)s#G;wR0ZEa+G8ra4H8%Z-buQx^6P?X&nVH-jW4BSToY`2eH<7HQP z*n?(+%wpj~A>ktIL#gqp4edF^YG0YjWV@$qNBxp$}MmOzxxbj zxka0rko3v_l0V}Q@%-*n=r?;C$Gb0~i}U*eM7|L4dR>&G>7v-LYq-pl^UASUf-W*a z33CYoxF&8h@l<`2jQRN0)A&QP(Ws}d!Qav|C5;nFGx80c)zS+naf0A377-_Sy7(QQ zf6d8AAYssoT0&h3HaF8#rF1(qljp!qiGKvT#2@1ysVn?V&9Kmp&_$1oj#x@%Soo(= z`qqQ1npulQ+r&COeg+SS9g!QN_RZy)kJCY4v#z&a&6kN0x_w&%_{IxOdm7n5=Qz

4$Wz$6Yjt$ohvp*|=AbRc_#1h@UIX$<#fzA@n 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

!5vY}CkL)aW5zqeg~}8X0J>jj%?I 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 OD1)Ot(ai{E`~Lvx`5jvT literal 0 HcmV?d00001 diff --git a/public/fonts/UbuntuCondensed-Regular.ttf b/public/fonts/UbuntuCondensed-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..602a3ee4ab20743037eee6daa1b304fa680967b6 GIT binary patch literal 350444 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±w{MjXmQ2~vg( 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 z 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/glyphicons-halflings-regular.ttf b/public/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/public/fonts/glyphicons-halflings-regular.woff2 b/public/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/routes/misc.js b/routes/misc.js index 175bedf5..2e91c3c7 100644 --- a/routes/misc.js +++ b/routes/misc.js @@ -44,7 +44,7 @@ function _getExistence (req, res) { page_name = name if (redirect_map){ var redirect_name = page_name.toLowerCase() - if (app.locals.config.get('features').caseSensitive){ + if (app.locals.config.get('features').caseSensitiveRedirects){ redirect_name = page_name } if (redirect_map[redirect_name]){ diff --git a/routes/search.js b/routes/search.js index 7f5c89c0..ee0bd3d2 100644 --- a/routes/search.js +++ b/routes/search.js @@ -56,11 +56,7 @@ function _getSearch (req, res) { const search_page = new models.Page(page_name) promise_list.push(search_page.fetch().then(function () { const redacted_content = renderer.redact(search_page.content, res, app.locals.config) - if (app.locals.config.get('features').caseSensitive){ - term_regex = new RegExp(res.locals.term) - } else { - term_regex = new RegExp(res.locals.term, 'i') - } + term_regex = new RegExp(res.locals.term, 'i') if (term_regex && term_regex.exec(redacted_content)){ res.locals.matches.push({ pageName: page_name, diff --git a/routes/wiki.js b/routes/wiki.js index 82267550..d1a9ec78 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -81,7 +81,7 @@ function _getWikiPage (req, res) { var page_name = req.params.page if (redirect_map){ var redirect_name = page_name.toLowerCase() - if (app.locals.config.get('features').caseSensitive){ + if (app.locals.config.get('features').caseSensitiveRedirects){ redirect_name = page_name } if (redirect_map[redirect_name]){ diff --git a/views/layout.pug b/views/layout.pug index 1a681c32..aabeab41 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -11,7 +11,11 @@ include mixins/links meta(name="viewport", content="width=device-width, initial-scale=1") title= title +asset("/vendor/bootstrap/css/bootstrap.min.css") - link(rel="stylesheet", href="https://fonts.googleapis.com/css?family=Ubuntu|Ubuntu+Condensed") + //- MOD serve fonts from local files + if serveLocal + +asset("/css/google-fonts.css") + else + link(rel="stylesheet", href="https://fonts.googleapis.com/css?family=Ubuntu|Ubuntu+Condensed") +asset("/css/style.css") +asset("/css/ionicons.min.css") +asset("/css/shCoreDefault.css") From f60be55b21f5a37a2261e5a380b05bc7292911d4 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 01:25:47 +0000 Subject: [PATCH 13/34] fixed bug with empty mediaSubdir; fixed bug with solitary RegExp redaction matches; added a privateComments redaction option to allow for inline (non-sandwich) redaction; added README_FORK documentation for changes; TODO: finish documentation of redaction options; --- README_FORK.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/app.js | 6 +++-- lib/config.js | 11 ++++---- lib/gitmech.js | 18 ++++++++----- lib/redactor.js | 51 +++++++++++++++++++++++++++++++++-- 5 files changed, 142 insertions(+), 15 deletions(-) create mode 100644 README_FORK.md diff --git a/README_FORK.md b/README_FORK.md new file mode 100644 index 00000000..69dbad67 --- /dev/null +++ b/README_FORK.md @@ -0,0 +1,71 @@ +Intro +----- +This is a fork of Jingo (at the time of v1.8.5). Modifications to the source code have been made in order to add a number of features to Jingo and fix a couple bugs. + +Merge Status: __pending__ + +ChangeLog +--------- +### List of Modifications +- fixed bug in gitExec when repo path contains one or more spaces +- added redirection of synonyms to official page toggled in config +- added sidebar, main and footer column width customization to config +- added options to use regexp to redact exerpts of information for anonymous users to config +- added option to redact commit messages for anonymous users to config +- added option to redact entire pages from search and list for anonymous users to config +- added option to include initial paragraph in page list +- added media folder to static routes on page +- added override of standard favicon with any favicon in root of media folder +- added option to serve files from local version rather than CDN + +### Mod Strategy +All changes and/or additions have been marked with comments which begin with "// MOD" so as to make it easier to hunt down changes. Existing code has been preserved whenever possible through the use of configuration flags to enable the additional/optional functionality of this fork. Also, additional methods and modules have been employed using naming conventions so as to least possibly conflict with future changes to the main branch. + +Additional Configuration Options +-------------------------------- + +#### application.mediaSubdir (string: "") + + If you have media files you would like to host locally, such as a favicon, logo, images or css or js dependencies, inside a directory of the repository, specify its name here. + +#### application.serveLocal (boolean: false) + + With this option, you can use a local copy of a resource instead of a CDN. Currently, this only applies to the Ubuntu font families requested in the head of each page. + +#### features.pageSummaries (boolean: true) + + With this option, the html rendered version of the first paragraph of each page will be included its listing when a user browses all the pages. + +#### features.caseSensitiveRedirects (boolean: false) + + With this option, you can force redirection to only match an alias if the cases match. For example, if you want to have any link to "Introduction" to redirect to Home.md, when this option is disabled, links to "introduction" would also redirect to Home.md. + +#### redirects (map) + + If you would like to setup one or more aliases for a wiki entry, which will redirect to that page, you can include each alias and its associated page as a key:value pair in this map. Whenever a page request to an alias value is made, the server will return the page it is associated with and also include a line underneath the title of the page that indicates that the requested term redirects to this page. Since URLs cannot contain a space, all aliases with a word break need to replace that word break with a '-'. + +#### layout.sidebarWidth (integer: 2) + + With this layout field, you can change the width of the sidebar content in desktop view between 0 and 10. The default width for Jingo is 2. The sidebarWidth + mainWidth (see below) cannot exceed 12. + +#### layout.mainWidth (integer: 8) + + With this layout field, you can change the width of the main page in desktop view between 2 and 12. The default width for Jingo is 8. The sidebarWidth (see above) + mainWidth cannot exceed 12. + +#### layout.footerWidth (integer: 8) + + With this layout field, you can change the width of the footer content in desktop view between 0 and 12. The default width for Jingo is 8. + +#### layout.sidebarMobile (boolean: true) + + With this layout field, you can disable the sidebar content (from appearing on top of the page) when viewed from mobile devices. + +#### redaction.enabled (boolean: true) + + When redaction is enabled, it is possible to remove certain content from the view generated for anonymous users. Redaction also removes the commit records and history pages from all content rendered for anonymous users. Various different techniques are possible for redacting content (see below) using regular expression syntax. When redaction is enabled, all pages and searches will look for content which matches the regular expressions provided and remove it from anonymous views. A multi-line search is the default option for all regular expression patterns. If any part of a redaction regular expression is grouped, then the first group will be included for authenticated users. Without a grouping, the entire match is included for authenticated users. In addition, a number of the techniques use a combination of start and end pattern matching in order to redact the content in between. Whatever content appears between the regular expression and the next match for the pattern specified in endRedaction will be redacted from anonymous users. Regular expression occurs before pages go through HTML rendering and so will match the markdown as it appears for each entry. + + + + + + diff --git a/lib/app.js b/lib/app.js index aedc8757..df9a1f46 100644 --- a/lib/app.js +++ b/lib/app.js @@ -165,7 +165,7 @@ module.exports.initialize = function (config) { app.use(logger(config.get('application').loggingMode == 1 ? 'combined' : 'dev', {skip: function () { }})) // eslint-disable-line eqeqeq } // MOD use favicon.ico in media folder - if (fs.existsSync(Git.mediaPath('favicon.ico'))){ + if (Git.mediaPath('favicon.ico') && fs.existsSync(Git.mediaPath('favicon.ico'))){ app.use(favicon(Git.mediaPath('favicon.ico'))) } else { app.use(favicon(path.join(__dirname + '/../', 'public', 'favicon.ico'))) // eslint-disable-line no-path-concat @@ -180,7 +180,9 @@ module.exports.initialize = function (config) { } })) - app.use(express.static(Git.mediaPath())) // MOD files in media path to static files + if (Git.mediaPath()){ + app.use(express.static(Git.mediaPath())) // MOD files in media path to static files + } app.use(express.static(path.join(__dirname + '/../', 'public'))) // eslint-disable-line no-path-concat app.use(cookieParser()) app.use(cookieSession({ diff --git a/lib/config.js b/lib/config.js index 7ef6cb51..e02c90ca 100644 --- a/lib/config.js +++ b/lib/config.js @@ -176,9 +176,9 @@ module.exports = (function () { // MOD configuration of columns in layout.pug layout: { - sidebarWidth: 3, - mainWidth: 9, - footerWidth: 9, + sidebarWidth: 2, + mainWidth: 8, + footerWidth: 8, sidebarMobile: true }, @@ -186,6 +186,7 @@ module.exports = (function () { redaction: { enabled: true, hiddenPage: '^', + privateComment: '', privateSection: '', earliestDate: '', sequentialSections: [{ @@ -306,7 +307,7 @@ module.exports = (function () { // MOD validate redaction fields config.redaction = _.extend({}, this.defaults.redaction, config.redaction) - var regex_fields = [ 'endRedaction', 'hiddenPage', 'privateSection', 'earliestDate' ] + var regex_fields = [ 'endRedaction', 'hiddenPage', 'privateComment', 'privateSection', 'earliestDate' ] for (var i = 0; i < regex_fields.length; i++){ var regex_value = config.redaction[regex_fields[i]] if (regex_value){ @@ -316,7 +317,7 @@ module.exports = (function () { error = 'Value for configuration field ' + regex_fields[i] + ' in section redaction must be a valid RegExp string.' return false } - if (i > 1 && !config.redaction.endRedaction){ + if (i > 2 && !config.redaction.endRedaction){ error = 'Use of configuration field ' + regex_fields[i] + ' in section redaction requires specifying an endRedaction value.' return false } diff --git a/lib/gitmech.js b/lib/gitmech.js index 82426302..db0d64b1 100644 --- a/lib/gitmech.js +++ b/lib/gitmech.js @@ -162,11 +162,13 @@ var gitMech = { mediaSubdir = mediaSubdir + '/' } // MOD report usage of media subdirectory - try { - fs.statSync(repoDir + '/' + mediaSubdir) - console.log('Using media subdirectory at ' + repoDir + '/' + mediaSubdir) - } catch (e) {} - + if (mediaSubdir){ + try { + fs.statSync(repoDir + '/' + mediaSubdir) + console.log('Using media subdirectory at ' + repoDir + '/' + mediaSubdir) + } catch (e) {} + } + try { var gitDir = path.join(repoDir, '.git') fs.statSync(gitDir) @@ -198,7 +200,11 @@ var gitMech = { // MOD add media path to file mediaPath: function (path='') { - return workTree + '/' + mediaSubdir + path + if (mediaSubdir){ + return workTree + '/' + mediaSubdir + path + } else { + return null + } }, show: function (path, version, callback) { diff --git a/lib/redactor.js b/lib/redactor.js index a3fcde08..b210a1da 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -1,3 +1,12 @@ +#!/usr/bin/env node + +/* + * Jingo redactor module + * + * Copyright 2018 rcj1492 + * Released under the MIT license + */ + var isNumber = require('is-number') // MOD function to redact non-public content @@ -7,8 +16,7 @@ function redactContent (text, res, config) { if (redact_config.enabled){ - var result - var results + var result, results, match, count // test for hidden page pattern if (redact_config.hiddenPage){ @@ -26,13 +34,42 @@ function redactContent (text, res, config) { } } + // test for private comment patterns + if (redact_config.privateComment){ + count = 0 + results = text.match(new RegExp(redact_config.privateComment), 'mg') + if (results){ + results.forEach(function(result){ + if (results.index !== undefined && count){ + return + } + count += 1 + if (!res || !res.locals.user){ + text = text.replace(result, '') + } else { + match = result.match(new RegExp(redact_config.privateComment, 'm')) + if (match.length > 1) { + text = text.replace(match[0], match[1]) + } + } + }) + } + } + // test for private excerpts pattern if (redact_config.privateSection){ + + count = 0 var replacement, start_result, cropped_match, end_result var private_pattern = redact_config.privateSection + '([\\s\\S]*?)' + redact_config.endRedaction + results = text.match(new RegExp(private_pattern, 'mg')) if (results){ results.forEach(function(result){ + if (results.index !== undefined && count){ + return + } + count += 1 if (!res || !res.locals.user){ text = text.replace(result, '') } else { @@ -60,6 +97,7 @@ function redactContent (text, res, config) { // test for date release patterns if (redact_config.earliestDate){ + count = 0 var replacement, start_result, cropped_match, end_result, dated_excerpt var date_string, year_string, month_string, day_string, hour_string, content_date var date_pattern = redact_config.earliestDate + '([\\s\\S]*?)' + redact_config.endRedaction @@ -68,6 +106,10 @@ function redactContent (text, res, config) { results = text.match(new RegExp(date_pattern, 'mg')) if (results){ results.forEach(function(result){ + if (results.index !== undefined && count){ + return + } + count += 1 // construct replacement string replacement = '' start_result = result.match(new RegExp(redact_config.earliestDate, 'm')) @@ -124,12 +166,17 @@ function redactContent (text, res, config) { // test for sequential section patterns if (redact_config.sequentialSections){ for (var i = 0; i < redact_config.sequentialSections.length; i++){ + count = 0 var latest_section = redact_config.sequentialSections[i] var replacement, start_result, cropped_match, end_result, section_excerpt, section_number var section_pattern = latest_section.expression + '([\\s\\S]*?)' + redact_config.endRedaction results = text.match(new RegExp(section_pattern, 'mg')) if (results){ results.forEach(function(result){ + if (results.index !== undefined && count){ + return + } + count += 1 // construct replacement string replacement = '' start_result = result.match(new RegExp(latest_section.expression, 'm')) From 156369972ef2f3a687f5e153b8eb8985f11caaf6 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 17:04:14 +0000 Subject: [PATCH 14/34] consolidated redaction fields; removed endRedaction from requirements; TODO: finish documentation of redaction options; --- README_FORK.md | 2 +- lib/config.js | 22 +++----- lib/redactor.js | 132 ++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 130 insertions(+), 26 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index 69dbad67..7bd79705 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -62,7 +62,7 @@ Additional Configuration Options #### redaction.enabled (boolean: true) - When redaction is enabled, it is possible to remove certain content from the view generated for anonymous users. Redaction also removes the commit records and history pages from all content rendered for anonymous users. Various different techniques are possible for redacting content (see below) using regular expression syntax. When redaction is enabled, all pages and searches will look for content which matches the regular expressions provided and remove it from anonymous views. A multi-line search is the default option for all regular expression patterns. If any part of a redaction regular expression is grouped, then the first group will be included for authenticated users. Without a grouping, the entire match is included for authenticated users. In addition, a number of the techniques use a combination of start and end pattern matching in order to redact the content in between. Whatever content appears between the regular expression and the next match for the pattern specified in endRedaction will be redacted from anonymous users. Regular expression occurs before pages go through HTML rendering and so will match the markdown as it appears for each entry. + When redaction is enabled, it is possible to remove certain content from the view generated for anonymous users. Redaction also removes the commit records and history pages from all content rendered for anonymous users. A number of different techniques are provided for redacting content (see below) using regular expression syntax. When redaction is enabled, all pages and searches will look for content which matches the regular expressions provided and remove it from anonymous views. A multi-line search is the default option for all regular expression patterns. If any part of a redaction regular expression is grouped, then the first group will be included for authenticated users. Without a grouping, the entire match is included for authenticated users. In addition, a number of the techniques use a combination of start and end pattern matching in order to redact the content in between. Whatever content appears between the regular expression and the next match for the pattern specified in endRedaction will be redacted from anonymous users. Regular expression occurs before pages go through HTML rendering and so will match the markdown as it appears for each entry. diff --git a/lib/config.js b/lib/config.js index e02c90ca..271e285b 100644 --- a/lib/config.js +++ b/lib/config.js @@ -186,14 +186,12 @@ module.exports = (function () { redaction: { enabled: true, hiddenPage: '^', - privateComment: '', - privateSection: '', - earliestDate: '', + privateComment: '', + earliestDate: '([\\s\\S]*?)', sequentialSections: [{ - expression: '', + expression: '([\\s\\S]*?)', latestValue: 0 - }], - endRedaction: '' + }] } }, @@ -307,7 +305,7 @@ module.exports = (function () { // MOD validate redaction fields config.redaction = _.extend({}, this.defaults.redaction, config.redaction) - var regex_fields = [ 'endRedaction', 'hiddenPage', 'privateComment', 'privateSection', 'earliestDate' ] + var regex_fields = [ 'hiddenPage', 'privateComment', 'earliestDate' ] for (var i = 0; i < regex_fields.length; i++){ var regex_value = config.redaction[regex_fields[i]] if (regex_value){ @@ -317,12 +315,9 @@ module.exports = (function () { error = 'Value for configuration field ' + regex_fields[i] + ' in section redaction must be a valid RegExp string.' return false } - if (i > 2 && !config.redaction.endRedaction){ - error = 'Use of configuration field ' + regex_fields[i] + ' in section redaction requires specifying an endRedaction value.' - return false - } } } + // MOD validate sequential section fields if (config.redaction.sequentialSections){ for (var i = 0; i < config.redaction.sequentialSections.length; i++){ var latest_section = config.redaction.sequentialSections[i] @@ -340,13 +335,8 @@ module.exports = (function () { } } } - if (!config.redaction.endRedaction){ - error = 'Use of configuration field ' + regex_fields[i] + ' in section redaction requires specifying an endRedaction value.' - return false - } } - return true }, diff --git a/lib/redactor.js b/lib/redactor.js index b210a1da..50e50820 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -16,7 +16,7 @@ function redactContent (text, res, config) { if (redact_config.enabled){ - var result, results, match, count + var result, results, match, count, replacement, anonymous // test for hidden page pattern if (redact_config.hiddenPage){ @@ -37,10 +37,11 @@ function redactContent (text, res, config) { // test for private comment patterns if (redact_config.privateComment){ count = 0 - results = text.match(new RegExp(redact_config.privateComment), 'mg') - if (results){ - results.forEach(function(result){ - if (results.index !== undefined && count){ + const private_regex = new RegExp(redact_config.privateComment, 'mg') + const private_results = text.match(private_regex) + if (private_results){ + private_results.forEach(function(result){ + if (private_results.index !== undefined && count){ return } count += 1 @@ -49,7 +50,11 @@ function redactContent (text, res, config) { } else { match = result.match(new RegExp(redact_config.privateComment, 'm')) if (match.length > 1) { - text = text.replace(match[0], match[1]) + replacement = '' + for (var j = 1; j < match.length; j++){ + replacement += match[j] + } + text = text.replace(match[0], replacement) } } }) @@ -57,13 +62,14 @@ function redactContent (text, res, config) { } // test for private excerpts pattern - if (redact_config.privateSection){ - + if (false){ + count = 0 var replacement, start_result, cropped_match, end_result var private_pattern = redact_config.privateSection + '([\\s\\S]*?)' + redact_config.endRedaction - + console.log(private_pattern) results = text.match(new RegExp(private_pattern, 'mg')) + console.log(results) if (results){ results.forEach(function(result){ if (results.index !== undefined && count){ @@ -96,6 +102,69 @@ function redactContent (text, res, config) { // test for date release patterns if (redact_config.earliestDate){ + count = 0 + const date_regex = new RegExp(redact_config.earliestDate, 'mg') + const date_results = text.match(date_regex) + var date_string, year_string, month_string, day_string, hour_string, content_date + var current_date = new Date() + if (date_results){ + date_results.forEach(function(result){ + if (date_results.index !== undefined && count){ + return + } + count += 1 + // construct replacement string + anonymous = '' + replacement = '' + match = result.match(new RegExp(redact_config.earliestDate, 'm')) + if (match.length < 2){ + return + } else if (match.length == 2){ + anonymous = match[1] + replacement = match[1] + } else { + anonymous = match[2] + for (var j = 1; j < match.length; j++){ + replacement += match[j] + } + } + // test date of excerpt against current date and replace text + if (!res || !res.locals.user){ + date_string = match[0].replace(/[^\d]/g, '') + if (date_string){ + if (date_string.length > 3){ + year_string = date_string.slice(0,4) + content_date = new Date(year_string) + } + if (date_string.length > 5){ + month_string = date_string.slice(4,6) + content_date = new Date(year_string, parseInt(month_string,10) - 1) + } + if (date_string.length > 7){ + day_string = date_string.slice(6,8) + content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string) + } + if (date_string.length > 9){ + hour_string = date_string.slice(8,10) + content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string, hour_string) + } + } + if (date_string.length > 3 && content_date.getTime() > current_date.getTime()){ + text = text.replace(result, '') + } else { + text = text.replace(result, anonymous) + } + + } else { + text = text.replace(result, replacement) + } + + }) + } + + } + + if (false){ count = 0 var replacement, start_result, cropped_match, end_result, dated_excerpt @@ -165,6 +234,51 @@ function redactContent (text, res, config) { // test for sequential section patterns if (redact_config.sequentialSections){ + for (var i = 0; i < redact_config.sequentialSections.length; i++){ + count = 0 + var section_excerpt, section_number + var latest_section = redact_config.sequentialSections[i] + var section_regex = new RegExp(latest_section.expression, 'mg') + var section_results = text.match(section_regex) + if (section_results){ + section_results.forEach(function(result){ + if (section_results.index !== undefined && count){ + return + } + count += 1 + // construct replacement string + anonymous = '' + replacement = '' + match = result.match(new RegExp(latest_section.expression, 'm')) + if (match.length < 2){ + return + } else if (match.length == 2){ + anonymous = match[1] + replacement = match[1] + } else { + anonymous = match[2] + for (var j = 1; j < match.length; j++){ + replacement += match[j] + } + } + // test numerical value of excerpt against latest value and replace text + if (!res || !res.locals.user){ + section_number = /\d+/.exec(match[0]) + if (section_number > latest_section.latestValue){ + text = text.replace(result, '') + } else { + text = text.replace(result, anonymous) + } + } else { + text = text.replace(result, replacement) + } + }) + } + + } + } + + if (false){ for (var i = 0; i < redact_config.sequentialSections.length; i++){ count = 0 var latest_section = redact_config.sequentialSections[i] From f03bcb8c07f1c989206591f2da831395e285f983 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 17:37:08 +0000 Subject: [PATCH 15/34] finished documentation of redaction options; --- README_FORK.md | 20 ++++++- lib/redactor.js | 154 ------------------------------------------------ 2 files changed, 19 insertions(+), 155 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index 7bd79705..f57c7639 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -62,7 +62,25 @@ Additional Configuration Options #### redaction.enabled (boolean: true) - When redaction is enabled, it is possible to remove certain content from the view generated for anonymous users. Redaction also removes the commit records and history pages from all content rendered for anonymous users. A number of different techniques are provided for redacting content (see below) using regular expression syntax. When redaction is enabled, all pages and searches will look for content which matches the regular expressions provided and remove it from anonymous views. A multi-line search is the default option for all regular expression patterns. If any part of a redaction regular expression is grouped, then the first group will be included for authenticated users. Without a grouping, the entire match is included for authenticated users. In addition, a number of the techniques use a combination of start and end pattern matching in order to redact the content in between. Whatever content appears between the regular expression and the next match for the pattern specified in endRedaction will be redacted from anonymous users. Regular expression occurs before pages go through HTML rendering and so will match the markdown as it appears for each entry. + When redaction is enabled, it is possible to remove certain content from the view generated for anonymous users. Redaction also removes the commit records and history pages from all content rendered for anonymous users. A number of different techniques are provided for redacting content (see below) using regular expression syntax. When redaction is enabled, all pages and searches will look for content which matches the regular expressions provided and remove it from anonymous views. A global, multi-line search is the default option for all regular expression patterns, so if matching new lines is important, they must be included in the regular expression. If any part of a redaction regular expression is grouped, then all parts that are not inside a grouping will be redacted for both anonymous and authenticated users. Regular expression occurs before pages go through HTML rendering and so will match the markdown as it appears for each entry. + +#### redaction.hiddenPage (string: "^") + + If any part of the document matches the regexp in hidden page, then the entire page will be removed from view from anonymous users and will return a 404 page error. In addition, the page will not show up in any search or list function. This is the only redaction expression that is not global, as it only requires one match to trigger. + +#### redaction.privateComment (string: "([\s\S]*?)") + + Any sections of the document which match a privateComment regexp will be redacted from the document. Content inside the redaction will not show up in any search result. If no grouping is found in the regexp, then the entire regexp will be returned for the authenticated user. Otherwise, only the content inside groupings will be returned to the authenticated user. + +#### redaction.earliestDate (string: "([\s\S]*?)") + + Any section of the document which matches an earliestDate regexp will be tested to see if it should be redacted from anonymous users. This technique will construct a date from the first (4 to 10)integers it finds inside the matched content using the following order: YYYYMMDDHH and then see if that date exists beyond the current date. If the date it finds is in the future, it will redact the content from anonymous users. So, for example, an excerpt such as Future stuff will be treated as content not to be revealed until on or after 20990909. If the date is in the past, it will reveal the content it finds in either the first group (if there is only one group in the regexp) or the second group (if there are two or more groupings). This technique requires at least one grouping to be specified in the regexp or it will have no effect. + +#### redaction.sequentialSections[0].expression (string: "([\s\S]*?)") + + Any section of the document which matches an expression in the list of sequentialSections will be tested to see if it should be redacted from anonymous users. This technique will look for the first group of integers it finds inside each match and compare that integer to the one provided in the associated latestValue. If the integer it finds is greater than the latestValue, the section will be redacted from anonymous users. So, for example, an excerpt such as A late chapter would be redacted if the current chapter (latestValue) is 9. Like the earliestDate technique, if the latestValue is equal to or greater than the integer found, it will reveal the content it finds in either the first group (if there is only one group in the regexp) or the second group (if there are two or more groupings). This technique requires at least one grouping to be specified in the regexp or it will have no effect. + +#### redaction.sequentialSection diff --git a/lib/redactor.js b/lib/redactor.js index 50e50820..4234f36c 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -61,45 +61,6 @@ function redactContent (text, res, config) { } } - // test for private excerpts pattern - if (false){ - - count = 0 - var replacement, start_result, cropped_match, end_result - var private_pattern = redact_config.privateSection + '([\\s\\S]*?)' + redact_config.endRedaction - console.log(private_pattern) - results = text.match(new RegExp(private_pattern, 'mg')) - console.log(results) - if (results){ - results.forEach(function(result){ - if (results.index !== undefined && count){ - return - } - count += 1 - if (!res || !res.locals.user){ - text = text.replace(result, '') - } else { - replacement = '' - start_result = result.match(new RegExp(redact_config.privateSection, 'm')) - if (start_result.length > 1){ - replacement += start_result[1] - } else { - replacement += start_result[0] - } - cropped_match = result.replace(start_result[0],'') - end_result = cropped_match.match(new RegExp(redact_config.endRedaction, 'm')) - replacement += cropped_match.replace(end_result[0],'') - if (end_result.length > 1){ - replacement += end_result[1] - } else { - replacement += end_result[0] - } - text = text.replace(result, replacement) - } - }) - } - } - // test for date release patterns if (redact_config.earliestDate){ count = 0 @@ -164,74 +125,6 @@ function redactContent (text, res, config) { } - if (false){ - - count = 0 - var replacement, start_result, cropped_match, end_result, dated_excerpt - var date_string, year_string, month_string, day_string, hour_string, content_date - var date_pattern = redact_config.earliestDate + '([\\s\\S]*?)' + redact_config.endRedaction - var current_date = new Date() - - results = text.match(new RegExp(date_pattern, 'mg')) - if (results){ - results.forEach(function(result){ - if (results.index !== undefined && count){ - return - } - count += 1 - // construct replacement string - replacement = '' - start_result = result.match(new RegExp(redact_config.earliestDate, 'm')) - if (start_result.length > 1){ - replacement += start_result[1] - } else { - replacement += start_result[0] - } - cropped_match = result.replace(start_result[0],'') - end_result = cropped_match.match(new RegExp(redact_config.endRedaction, 'm')) - dated_excerpt = cropped_match.replace(end_result[0],'') - replacement += dated_excerpt - if (end_result.length > 1){ - replacement += end_result[1] - } else { - replacement += end_result[0] - } - // test date of excerpt against current date and replace text - if (!res || !res.locals.user){ - date_string = start_result[0].replace(/[^\d]/g, '') - if (date_string){ - if (date_string.length > 3){ - year_string = date_string.slice(0,4) - content_date = new Date(year_string) - } - if (date_string.length > 5){ - month_string = date_string.slice(4,6) - content_date = new Date(year_string, parseInt(month_string,10) - 1) - } - if (date_string.length > 7){ - day_string = date_string.slice(6,8) - content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string) - } - if (date_string.length > 9){ - hour_string = date_string.slice(8,10) - content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string, hour_string) - } - } - if (date_string.length > 3 && content_date.getTime() > current_date.getTime()){ - text = text.replace(result, '') - } else { - text = text.replace(result, dated_excerpt) - } - - } else { - text = text.replace(result, replacement) - } - - }) - } - - } - // test for sequential section patterns if (redact_config.sequentialSections){ for (var i = 0; i < redact_config.sequentialSections.length; i++){ @@ -278,53 +171,6 @@ function redactContent (text, res, config) { } } - if (false){ - for (var i = 0; i < redact_config.sequentialSections.length; i++){ - count = 0 - var latest_section = redact_config.sequentialSections[i] - var replacement, start_result, cropped_match, end_result, section_excerpt, section_number - var section_pattern = latest_section.expression + '([\\s\\S]*?)' + redact_config.endRedaction - results = text.match(new RegExp(section_pattern, 'mg')) - if (results){ - results.forEach(function(result){ - if (results.index !== undefined && count){ - return - } - count += 1 - // construct replacement string - replacement = '' - start_result = result.match(new RegExp(latest_section.expression, 'm')) - if (start_result.length > 1){ - replacement += start_result[1] - } else { - replacement += start_result[0] - } - cropped_match = result.replace(start_result[0],'') - end_result = cropped_match.match(new RegExp(redact_config.endRedaction, 'm')) - section_excerpt = cropped_match.replace(end_result[0],'') - replacement += section_excerpt - if (end_result.length > 1){ - replacement += end_result[1] - } else { - replacement += end_result[0] - } - // test numerical value of excerpt against latest value and replace text - if (!res || !res.locals.user){ - section_number = /\d+/.exec(start_result[0]) - if (section_number > latest_section.latestValue){ - text = text.replace(result, '') - } else { - text = text.replace(result, section_excerpt) - } - } else { - text = text.replace(result, replacement) - } - }) - } - - } - } - return text.trim() } else { From 77e01dcaea60b30c3d4e928793920d33995d8d61 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 17:39:10 +0000 Subject: [PATCH 16/34] finished documentation of redaction options; --- README_FORK.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README_FORK.md b/README_FORK.md index f57c7639..9a443252 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -80,7 +80,9 @@ Additional Configuration Options Any section of the document which matches an expression in the list of sequentialSections will be tested to see if it should be redacted from anonymous users. This technique will look for the first group of integers it finds inside each match and compare that integer to the one provided in the associated latestValue. If the integer it finds is greater than the latestValue, the section will be redacted from anonymous users. So, for example, an excerpt such as A late chapter would be redacted if the current chapter (latestValue) is 9. Like the earliestDate technique, if the latestValue is equal to or greater than the integer found, it will reveal the content it finds in either the first group (if there is only one group in the regexp) or the second group (if there are two or more groupings). This technique requires at least one grouping to be specified in the regexp or it will have no effect. -#### redaction.sequentialSection +#### redaction.sequentialSections[0].latestValue (integer: 0) + + This field is included in order to evaluate the highest value in an associated sequentialSections expression which is public. Any value that is found to be higher than the latestValue will be redacted from anonymous users. From 072b2b4df89fdbfc8e2eebe70a54c0d04ae09d45 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 17:41:17 +0000 Subject: [PATCH 17/34] validated latestValue exists for sequentialSections expressions; --- lib/config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/config.js b/lib/config.js index 271e285b..f2411b1a 100644 --- a/lib/config.js +++ b/lib/config.js @@ -333,6 +333,10 @@ module.exports = (function () { error = error_prefix + ' must contain the term \\d+.' return false } + if (typeof(latest_section.latestValue) != 'number'){ + error = error_prefix + ' requires a latestValue be included.' + return false + } } } } From 6755d1239e5ac64d9033fca65e03d97e4689be6f Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 21:48:53 +0000 Subject: [PATCH 18/34] minor change to documentation; --- lib/redactor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/redactor.js b/lib/redactor.js index 4234f36c..4045f372 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -9,7 +9,7 @@ var isNumber = require('is-number') -// MOD function to redact non-public content +// function to redact non-public content function redactContent (text, res, config) { var redact_config = config.get('redaction') @@ -181,7 +181,7 @@ function redactContent (text, res, config) { } -// MOD function to add a page redirect notice to the content +// function to add a page redirect notice to the content function redirectContent(html, requested_page, redirected_page) { var redirect_html = '

"' + requested_page.replace(/-/g, ' ') + '" redirects here.

' From 1c1872544bf8cb32cbba9b95ae680c575c1c69c2 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 22:09:18 +0000 Subject: [PATCH 19/34] change redaction default to false; --- README_FORK.md | 2 +- lib/config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index 9a443252..b87a33fc 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -60,7 +60,7 @@ Additional Configuration Options With this layout field, you can disable the sidebar content (from appearing on top of the page) when viewed from mobile devices. -#### redaction.enabled (boolean: true) +#### redaction.enabled (boolean: false) When redaction is enabled, it is possible to remove certain content from the view generated for anonymous users. Redaction also removes the commit records and history pages from all content rendered for anonymous users. A number of different techniques are provided for redacting content (see below) using regular expression syntax. When redaction is enabled, all pages and searches will look for content which matches the regular expressions provided and remove it from anonymous views. A global, multi-line search is the default option for all regular expression patterns, so if matching new lines is important, they must be included in the regular expression. If any part of a redaction regular expression is grouped, then all parts that are not inside a grouping will be redacted for both anonymous and authenticated users. Regular expression occurs before pages go through HTML rendering and so will match the markdown as it appears for each entry. diff --git a/lib/config.js b/lib/config.js index f2411b1a..e131c658 100644 --- a/lib/config.js +++ b/lib/config.js @@ -184,7 +184,7 @@ module.exports = (function () { // MOD various types of RegExp to use for redaction of content redaction: { - enabled: true, + enabled: false, hiddenPage: '^', privateComment: '', earliestDate: '([\\s\\S]*?)', From 37008c5096fd5b96ee1bd344271154cfa254f4b1 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 22:28:07 +0000 Subject: [PATCH 20/34] renamed redirects option to aliases for additional clarity; --- README_FORK.md | 4 ++-- lib/config.js | 18 +++++++++--------- routes/misc.js | 16 ++++++++-------- routes/wiki.js | 19 ++++++++++--------- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index b87a33fc..61336921 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -40,9 +40,9 @@ Additional Configuration Options With this option, you can force redirection to only match an alias if the cases match. For example, if you want to have any link to "Introduction" to redirect to Home.md, when this option is disabled, links to "introduction" would also redirect to Home.md. -#### redirects (map) +#### aliases (map) - If you would like to setup one or more aliases for a wiki entry, which will redirect to that page, you can include each alias and its associated page as a key:value pair in this map. Whenever a page request to an alias value is made, the server will return the page it is associated with and also include a line underneath the title of the page that indicates that the requested term redirects to this page. Since URLs cannot contain a space, all aliases with a word break need to replace that word break with a '-'. + If you would like to setup one or more aliases for a wiki entry, which will redirect to that page, you can include each alias and its associated page as a key:value pair in this map. Whenever a page request to an alias value is made, the server will return the page it is associated with and also include a line underneath the title of the page that indicates that the requested term redirects to this page. Since URLs cannot contain a space, all aliases with a word break need to replace that word break with a '-'. Whereas the alias should not contain .md, the page it redirects to must include .md in its name. #### layout.sidebarWidth (integer: 2) diff --git a/lib/config.js b/lib/config.js index e131c658..721d27ec 100644 --- a/lib/config.js +++ b/lib/config.js @@ -29,11 +29,11 @@ module.exports = (function () { if (typeof config[keys[i]] === 'undefined') { continue } - // MOD Allow unlimited keys in redirects section as long as they have string values - if (keys[i] == 'redirects'){ - for (var k in config['redirects']) { - if (typeof config['redirects'][k] !== 'string'){ - error = 'Value for configuration field ' + k + ' in section redirects must be a string.' + // MOD Allow unlimited keys in aliases section as long as they have string values + if (keys[i] == 'aliases'){ + for (var k in config['aliases']) { + if (typeof config['aliases'][k] !== 'string'){ + error = 'Value for configuration field ' + k + ' in section aliases must be a string.' return false } } @@ -120,7 +120,7 @@ module.exports = (function () { codemirror: true, gravatar: true, pageSummaries: true, // MOD enable initial paragraph to be returned in list of documents - caseSensitiveRedirects: false // MOD enable case sensitivity in redirection + caseSensitiveAliases: false // MOD enable case sensitivity in redirection }, server: { @@ -170,7 +170,7 @@ module.exports = (function () { }, // MOD map of alias terms and the page each redirects to - redirects: { + aliases: { introduction: 'Home.md' }, @@ -300,8 +300,8 @@ module.exports = (function () { config.layout.footerWidth = config.layout.footerWidth < 13 ? config.layout.footerWidth : 9 config.layout.footerWidth = config.layout.footerWidth > 0 ? config.layout.footerWidth : 9 - // MOD extend redirection - config.redirects = _.extend({}, this.defaults.redirects, config.redirects) + // MOD extend aliases + config.aliases = _.extend({}, this.defaults.aliases, config.aliases) // MOD validate redaction fields config.redaction = _.extend({}, this.defaults.redaction, config.redaction) diff --git a/routes/misc.js b/routes/misc.js index 2e91c3c7..af927b08 100644 --- a/routes/misc.js +++ b/routes/misc.js @@ -35,20 +35,20 @@ function _getExistence (req, res) { var result = [] var page var n = req.query.data.length - const redirect_map = app.locals.config.get('redirects') // MOD import redirects + const alias_map = app.locals.config.get('aliases') // MOD import aliases var page_name req.query.data.forEach(function (pageName, idx) { (function (name, index) { - // MOD remap redirect key to its associated page before retrieving page model + // MOD remap alias key to its associated page before retrieving page model page_name = name - if (redirect_map){ - var redirect_name = page_name.toLowerCase() - if (app.locals.config.get('features').caseSensitiveRedirects){ - redirect_name = page_name + if (alias_map){ + var alias_name = page_name.toLowerCase() + if (app.locals.config.get('features').caseSensitiveAliases){ + alias_name = page_name } - if (redirect_map[redirect_name]){ - page_name = redirect_map[redirect_name] + if (alias_map[alias_name]){ + page_name = alias_map[alias_name] } } page = new models.Page(page_name) diff --git a/routes/wiki.js b/routes/wiki.js index d1a9ec78..e92215b5 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -76,16 +76,16 @@ function _getWiki (req, res) { function _getWikiPage (req, res) { - // MOD check if page is listed as a redirect - var redirect_map = app.locals.config.get('redirects') + // MOD check if page is listed as an alias + var alias_map = app.locals.config.get('aliases') var page_name = req.params.page - if (redirect_map){ - var redirect_name = page_name.toLowerCase() - if (app.locals.config.get('features').caseSensitiveRedirects){ - redirect_name = page_name + if (alias_map){ + var alias_name = page_name.toLowerCase() + if (app.locals.config.get('features').caseSensitiveAliases){ + alias_name = page_name } - if (redirect_map[redirect_name]){ - page_name = redirect_map[redirect_name] + if (alias_map[alias_name]){ + page_name = alias_map[alias_name] } } @@ -102,9 +102,10 @@ function _getWikiPage (req, res) { res.locals.notice = req.session.notice delete req.session.notice - // MOD redact, render and redirect content + // MOD redact content var page_content = renderer.redact(page.content, res, app.locals.config) + // MOD add redirection and render content if (page_content) { var rendered_content = renderer.render('# ' + page.title + '\n' + page_content) if (page_name != req.params.page){ From e28be0473c27e1ee646ddd39d0bad0c03ad9464b Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 30 Jul 2018 23:22:19 +0000 Subject: [PATCH 21/34] created unittest for redactor module; added additional config options to config unittests; --- test/spec/configSpec.js | 16 +++++++- test/spec/redactorSpec.js | 83 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 test/spec/redactorSpec.js diff --git a/test/spec/configSpec.js b/test/spec/configSpec.js index 2379c477..3d987394 100644 --- a/test/spec/configSpec.js +++ b/test/spec/configSpec.js @@ -3,7 +3,7 @@ var yaml = require('js-yaml') -var configKeys = ['application', 'authentication', 'features', 'server', 'authorization', 'pages', 'customizations'] +var configKeys = ['application', 'authentication', 'features', 'server', 'authorization', 'pages', 'customizations', 'aliases', 'layout', 'redaction'] var Config = require('../../lib/config') describe('Config', function () { @@ -22,6 +22,8 @@ describe('Config', function () { expect(def.application.title).to.equal('Jingo') expect(def.application.repository).to.equal('') expect(def.application.docSubdir).to.equal('') + expect(def.application.mediaSubdir).to.equal('') + expect(def.application.serveLocal).to.be.false expect(def.application.remote).to.equal('') expect(def.application.pushInterval).to.equal(30) expect(def.application.secret).to.equal('change me') @@ -35,6 +37,8 @@ describe('Config', function () { expect(def.features.codemirror).to.be.true expect(def.features.markitup).to.be.false + expect(def.features.pageSummaries).to.be.true + expect(def.features.caseSensitiveAliases).to.be.false expect(def.server.hostname).to.equal('localhost') expect(def.server.port).to.equal(6067) @@ -48,6 +52,16 @@ describe('Config', function () { expect(def.authentication.google.enabled).to.be.true expect(def.authentication.local.enabled).to.be.false expect(def.authentication.github.enabled).to.be.false + + expect(def.layout.sidebarWidth).to.equal(2) + expect(def.layout.mainWidth).to.equal(8) + expect(def.layout.footerWidth).to.equal(8) + expect(def.layout.sidebarMobile).to.be.true + + expect(def.redaction.enabled).to.be.false + expect(def.redaction.hiddenPage).to.equal('^') + expect(def.redaction.privateComment).to.equal('') + expect(def.redaction.earliestDate).to.equal('([\\s\\S]*?)') }) it('should get the config as a whole', function () { diff --git a/test/spec/redactorSpec.js b/test/spec/redactorSpec.js new file mode 100644 index 00000000..e31ad2c0 --- /dev/null +++ b/test/spec/redactorSpec.js @@ -0,0 +1,83 @@ +/* eslint-env mocha */ +/* global expect */ + +var Redactor = require('../../lib/redactor') + +var config = { + get: function(key){ + return this[key] + }, + redaction: { + enabled: true, + hiddenPage: '^', + privateComment: '', + earliestDate: '([\\s\\S]*?)', + sequentialSections: [{ + expression: '([\\s\\S]*?)', + latestValue: 0 + }] + } +} + +var authRes = { + get: function(key){ + return this[key] + }, + locals: { user: true } +} +var anonRes = { + get: function(key){ + return this[key] + }, + locals: { user: false } +} + + +describe('Redactor', function () { + it('should add redirection paragraph', function () { + var html = '

Heading 1

This is some text

' + var requested_page = 'foo' + var redirected_page = 'Bar.md' + expect(Redactor.redirect(html, requested_page, redirected_page)).to.be.equal('

Heading 1

"foo" redirects here.

This is some text

') + }) + + it('should redact all hidden content from anonymous', function () { + var text = 'Some hidden foo.' + expect(Redactor.redact(text, anonRes, config)).to.be.equal('') + }) + + it('should reformat hidden content for authenticated', function () { + var text = 'Some hidden foo.' + expect(Redactor.redact(text, authRes, config)).to.be.equal('-- Hidden --Some hidden foo.') + }) + + it('should redact private content from anonymous', function () { + var text = 'Some visible foo' + expect(Redactor.redact(text, anonRes, config)).to.be.equal('Some visible foo') + }) + + it('should reformat private content for authenticated', function () { + var text = 'Some visible foo' + expect(Redactor.redact(text, authRes, config)).to.be.equal('Some visible foo Some hidden bar') + }) + + it('should redact future content from anonymous', function () { + var text = 'Some visible fooSome hidden bar' + expect(Redactor.redact(text, anonRes, config)).to.be.equal('Some visible foo') + }) + + it('should reformat future content for authenticated', function () { + var text = 'Some visible fooSome hidden bar' + expect(Redactor.redact(text, authRes, config)).to.be.equal('Some visible foo-- 2099.09.09 --Some hidden bar-- End --') + }) + + it('should redact section content from anonymous', function () { + var text = 'Some visible fooSome hidden bar' + expect(Redactor.redact(text, anonRes, config)).to.be.equal('Some visible foo') + }) + + it('should reformat section content for authenticated', function () { + var text = 'Some visible fooSome hidden bar' + expect(Redactor.redact(text, authRes, config)).to.be.equal('Some visible foo-- chapter-1 --Some hidden bar-- End --') + }) +}) \ No newline at end of file From 8975058c0457344046f7145f0ba2aff3381df449 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Tue, 31 Jul 2018 16:09:37 +0000 Subject: [PATCH 22/34] fixed syntax using standardjs; renamed variables using camelCase; updated name of redaction fields; --- README_FORK.md | 16 +- lib/app.js | 30 ++-- lib/config.js | 96 ++++++----- lib/gitmech.js | 26 +-- lib/models.js | 35 ++-- lib/namer.js | 2 +- lib/redactor.js | 338 ++++++++++++++++++-------------------- lib/renderer.js | 2 +- routes/auth.js | 50 +++--- routes/misc.js | 30 ++-- routes/pages.js | 19 +-- routes/search.js | 86 +++++----- routes/wiki.js | 58 +++---- test/spec/configSpec.js | 4 +- test/spec/redactorSpec.js | 8 +- 15 files changed, 384 insertions(+), 416 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index 61336921..63b996df 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -68,21 +68,21 @@ Additional Configuration Options If any part of the document matches the regexp in hidden page, then the entire page will be removed from view from anonymous users and will return a 404 page error. In addition, the page will not show up in any search or list function. This is the only redaction expression that is not global, as it only requires one match to trigger. -#### redaction.privateComment (string: "([\s\S]*?)") +#### redaction.privateContent (string: "([\s\S]*?)") - Any sections of the document which match a privateComment regexp will be redacted from the document. Content inside the redaction will not show up in any search result. If no grouping is found in the regexp, then the entire regexp will be returned for the authenticated user. Otherwise, only the content inside groupings will be returned to the authenticated user. + Any sections of the document which match a privateContent regexp will be redacted from the document. Content inside the redaction will not show up in any search result. If no grouping is found in the regexp, then the entire regexp will be returned for the authenticated user. Otherwise, only the content inside groupings will be returned to the authenticated user. -#### redaction.earliestDate (string: "([\s\S]*?)") +#### redaction.futureContent (string: "([\s\S]*?)") - Any section of the document which matches an earliestDate regexp will be tested to see if it should be redacted from anonymous users. This technique will construct a date from the first (4 to 10)integers it finds inside the matched content using the following order: YYYYMMDDHH and then see if that date exists beyond the current date. If the date it finds is in the future, it will redact the content from anonymous users. So, for example, an excerpt such as Future stuff will be treated as content not to be revealed until on or after 20990909. If the date is in the past, it will reveal the content it finds in either the first group (if there is only one group in the regexp) or the second group (if there are two or more groupings). This technique requires at least one grouping to be specified in the regexp or it will have no effect. + Any section of the document which matches an futureContent regexp will be tested to see if it should be redacted from anonymous users. This technique will construct a date from the first (4 to 10)integers it finds inside the matched content using the following order: YYYYMMDDHH and then see if that date exists beyond the current date. If the date it finds is in the future, it will redact the content from anonymous users. So, for example, an excerpt such as Future stuff will be treated as content not to be revealed until on or after 20990909. If the date is in the past, it will reveal the content it finds in either the first group (if there is only one group in the regexp) or the second group (if there are two or more groupings). This technique requires at least one grouping to be specified in the regexp or it will have no effect. -#### redaction.sequentialSections[0].expression (string: "([\s\S]*?)") +#### redaction.sectionContent[0].expression (string: "([\s\S]*?)") - Any section of the document which matches an expression in the list of sequentialSections will be tested to see if it should be redacted from anonymous users. This technique will look for the first group of integers it finds inside each match and compare that integer to the one provided in the associated latestValue. If the integer it finds is greater than the latestValue, the section will be redacted from anonymous users. So, for example, an excerpt such as A late chapter would be redacted if the current chapter (latestValue) is 9. Like the earliestDate technique, if the latestValue is equal to or greater than the integer found, it will reveal the content it finds in either the first group (if there is only one group in the regexp) or the second group (if there are two or more groupings). This technique requires at least one grouping to be specified in the regexp or it will have no effect. + Any section of the document which matches an expression in the list of sectionContent will be tested to see if it should be redacted from anonymous users. This technique will look for the first group of integers it finds inside each match and compare that integer to the one provided in the associated current value. If the integer it finds is greater than the current value, the section will be redacted from anonymous users. So, for example, an excerpt such as A late chapter would be redacted if the current chapter (current) is 9. Like the futureContent technique, if the current value is equal to or greater than the integer found, it will reveal the content it finds in either the first group (if there is only one group in the regexp) or the second group (if there are two or more groupings). This technique requires at least one grouping to be specified in the regexp or it will have no effect. -#### redaction.sequentialSections[0].latestValue (integer: 0) +#### redaction.sectionContent[0].current (integer: 0) - This field is included in order to evaluate the highest value in an associated sequentialSections expression which is public. Any value that is found to be higher than the latestValue will be redacted from anonymous users. + This field is included in order to evaluate the highest value in an associated sectionContent expression which is public. Any value that is found to be higher than the current value will be redacted from anonymous users. diff --git a/lib/app.js b/lib/app.js index df9a1f46..8a712386 100644 --- a/lib/app.js +++ b/lib/app.js @@ -102,7 +102,7 @@ module.exports.initialize = function (config) { return config.get('layout').sidebarMobile }, // MOD add redaction and page summary toggles - get redactEnabled() { + get redactEnabled () { return config.get('redaction').enabled }, get redactContent () { @@ -112,10 +112,10 @@ module.exports.initialize = function (config) { return config.get('features').pageSummaries }, // MOD add serve local toggle - get serveLocal() { + get serveLocal () { return config.get('application').serveLocal }, - + isAnonymous: function () { return !req.user }, @@ -165,7 +165,7 @@ module.exports.initialize = function (config) { app.use(logger(config.get('application').loggingMode == 1 ? 'combined' : 'dev', {skip: function () { }})) // eslint-disable-line eqeqeq } // MOD use favicon.ico in media folder - if (Git.mediaPath('favicon.ico') && fs.existsSync(Git.mediaPath('favicon.ico'))){ + if (Git.mediaPath('favicon.ico') && fs.existsSync(Git.mediaPath('favicon.ico'))) { app.use(favicon(Git.mediaPath('favicon.ico'))) } else { app.use(favicon(path.join(__dirname + '/../', 'public', 'favicon.ico'))) // eslint-disable-line no-path-concat @@ -180,7 +180,7 @@ module.exports.initialize = function (config) { } })) - if (Git.mediaPath()){ + if (Git.mediaPath()) { app.use(express.static(Git.mediaPath())) // MOD files in media path to static files } app.use(express.static(path.join(__dirname + '/../', 'public'))) // eslint-disable-line no-path-concat @@ -191,11 +191,11 @@ module.exports.initialize = function (config) { cookie: { maxAge: 30 * 24 * 60 * 60 * 1000 } })) app.use(session({ name: 'jingosid', - secret: config.get('application').secret, - cookie: { httpOnly: true }, - saveUninitialized: true, - resave: true - })) + secret: config.get('application').secret, + cookie: { httpOnly: true }, + saveUninitialized: true, + resave: true + })) app.use(flash()) app.use(expValidator()) @@ -212,7 +212,7 @@ module.exports.initialize = function (config) { if (/^\/auth\//.test(req.url) || /^\/misc\//.test(req.url) || (/^\/login/.test(req.url) && !config.get('authorization').anonRead) - ) { + ) { return next() } @@ -251,10 +251,10 @@ module.exports.initialize = function (config) { app.use('/wiki', wikiStatic.configure()) app.use(require('../routes/wiki')) - .use(require('../routes/pages')) - .use(require('../routes/search')) - .use(require('../routes/auth')) - .use(require('../routes/misc')) + .use(require('../routes/pages')) + .use(require('../routes/search')) + .use(require('../routes/auth')) + .use(require('../routes/misc')) // Server error app.use(function (err, req, res, next) { diff --git a/lib/config.js b/lib/config.js index 721d27ec..14e0179f 100644 --- a/lib/config.js +++ b/lib/config.js @@ -5,7 +5,7 @@ var _ = require('lodash') module.exports = (function () { var config var error = '' - + return { load: function (filename) { @@ -30,21 +30,20 @@ module.exports = (function () { continue } // MOD Allow unlimited keys in aliases section as long as they have string values - if (keys[i] == 'aliases'){ - for (var k in config['aliases']) { - if (typeof config['aliases'][k] !== 'string'){ - error = 'Value for configuration field ' + k + ' in section aliases must be a string.' - return false - } - } - } else { - aliens = _.difference(Object.keys(config[keys[i]]), Object.keys(this.defaults[keys[i]])) - if (aliens.length > 0) { - error = 'Unrecognized configuration option(s) ' + aliens.join(',') + ' in section ' + keys[i] + if (keys[i] === 'aliases') { + for (var k in config['aliases']) { + if (typeof config['aliases'][k] !== 'string') { + error = 'Value for configuration field ' + k + ' in section aliases must be a string.' return false } + } + } else { + aliens = _.difference(Object.keys(config[keys[i]]), Object.keys(this.defaults[keys[i]])) + if (aliens.length > 0) { + error = 'Unrecognized configuration option(s) ' + aliens.join(',') + ' in section ' + keys[i] + return false + } } - } return true @@ -63,7 +62,7 @@ module.exports = (function () { repository: '', docSubdir: '', mediaSubdir: '', // MOD name of sub-directory to use for additional public accessible media - serveLocal: false, // MOD enable serving of files from local server rather than CDN + serveLocal: false, // MOD enable serving of files from local server rather than CDN remote: '', pushInterval: 30, secret: 'change me', @@ -168,12 +167,12 @@ module.exports = (function () { style: '_style.css', script: '_script.js' }, - + // MOD map of alias terms and the page each redirects to aliases: { introduction: 'Home.md' }, - + // MOD configuration of columns in layout.pug layout: { sidebarWidth: 2, @@ -181,24 +180,23 @@ module.exports = (function () { footerWidth: 8, sidebarMobile: true }, - + // MOD various types of RegExp to use for redaction of content redaction: { enabled: false, hiddenPage: '^', - privateComment: '', - earliestDate: '([\\s\\S]*?)', - sequentialSections: [{ + privateContent: '', + futureContent: '([\\s\\S]*?)', + sectionContent: [{ expression: '([\\s\\S]*?)', - latestValue: 0 + current: 0 }] } - + }, // Ensure that all the key will have a sane default value validate: function () { - config.application = _.extend({}, this.defaults.application, config.application) config.application.pushInterval = (parseInt(config.application.pushInterval, 10) | 0) @@ -283,7 +281,7 @@ module.exports = (function () { } config.customizations = _.extend({}, this.defaults.customizations, config.customizations) - + // MOD validate layout fields config.layout = _.extend({}, this.defaults.layout, config.layout) config.layout.sidebarWidth = parseInt(config.layout.sidebarWidth, 10) @@ -292,55 +290,55 @@ module.exports = (function () { config.layout.mainWidth = parseInt(config.layout.mainWidth, 10) config.layout.mainWidth = config.layout.mainWidth < 13 ? config.layout.mainWidth : 9 config.layout.mainWidth = config.layout.mainWidth > 1 ? config.layout.mainWidth : 9 - if (config.layout.sidebarWidth + config.layout.mainWidth > 12){ + if (config.layout.sidebarWidth + config.layout.mainWidth > 12) { error = 'Total width of sidebarWidth + mainWidth must not exceed 12.' return false } config.layout.footerWidth = parseInt(config.layout.footerWidth, 10) config.layout.footerWidth = config.layout.footerWidth < 13 ? config.layout.footerWidth : 9 config.layout.footerWidth = config.layout.footerWidth > 0 ? config.layout.footerWidth : 9 - + // MOD extend aliases config.aliases = _.extend({}, this.defaults.aliases, config.aliases) - + // MOD validate redaction fields config.redaction = _.extend({}, this.defaults.redaction, config.redaction) - var regex_fields = [ 'hiddenPage', 'privateComment', 'earliestDate' ] - for (var i = 0; i < regex_fields.length; i++){ - var regex_value = config.redaction[regex_fields[i]] - if (regex_value){ + var regexFields = [ 'hiddenPage', 'privateContent', 'futureContent' ] + for (var i = 0; i < regexFields.length; i++) { + var regexValue = config.redaction[regexFields[i]] + if (regexValue) { try { - new RegExp(regex_value) - } catch(e) { - error = 'Value for configuration field ' + regex_fields[i] + ' in section redaction must be a valid RegExp string.' + var testRegex = RegExp(regexValue) + } catch (e) { + error = 'Value for configuration field ' + regexFields[i] + ' in section redaction must be a valid RegExp string.' return false } } } // MOD validate sequential section fields - if (config.redaction.sequentialSections){ - for (var i = 0; i < config.redaction.sequentialSections.length; i++){ - var latest_section = config.redaction.sequentialSections[i] - var error_prefix = 'Value for configuration field sequentialSections item [' + i.toString() + '] key expression in section redaction' - if (latest_section.expression){ + if (config.redaction.sectionContent) { + for (var i = 0; i < config.redaction.sectionContent.length; i++) { + var latestSection = config.redaction.sectionContent[i] + var errorPrefix = 'Value for configuration field sectionContent item [' + i.toString() + '] key expression in section redaction' + if (latestSection.expression) { try { - new RegExp(latest_section.expression) - } catch(e) { - error = error_prefix + ' must be a valid RegExp string.' + var testRegex = RegExp(latestSection.expression) + } catch (e) { + error = errorPrefix + ' must be a valid RegExp string.' return false } - if (!(/\\d\+/.test(latest_section.expression))){ - error = error_prefix + ' must contain the term \\d+.' - return false + if (!(/\\d\+/.test(latestSection.expression))) { + error = errorPrefix + ' must contain the term \\d+.' + return false } - if (typeof(latest_section.latestValue) != 'number'){ - error = error_prefix + ' requires a latestValue be included.' - return false + if (typeof (latestSection.current) !== 'number') { + error = errorPrefix + ' requires a current be included.' + return false } } } } - + return true }, diff --git a/lib/gitmech.js b/lib/gitmech.js index db0d64b1..76f6e7d7 100644 --- a/lib/gitmech.js +++ b/lib/gitmech.js @@ -55,7 +55,7 @@ function gitExec (commands, callback) { // MOD fixed gitExec function for concatenating paths with blank spaces function gitExecFix (commands, callback) { - if (gitCommandsQuote){ + if (gitCommandsQuote) { commands = gitMech.gitBin + ' ' + gitCommandsQuote.concat(commands).join(' ') } else { commands = gitMech.gitBin + ' ' + gitCommands.concat(commands).join(' ') @@ -155,29 +155,29 @@ var gitMech = { callback('Bad document subdirectory (not exists): ' + repoDir + '/' + docSubdir) return } - + // MOD add validation of media subdirectory mediaSubdir = repoMediaSubdir.trim().replace(/^\/|\/$/g, '') if (mediaSubdir !== '') { mediaSubdir = mediaSubdir + '/' } // MOD report usage of media subdirectory - if (mediaSubdir){ + if (mediaSubdir) { try { fs.statSync(repoDir + '/' + mediaSubdir) console.log('Using media subdirectory at ' + repoDir + '/' + mediaSubdir) } catch (e) {} } - + try { var gitDir = path.join(repoDir, '.git') fs.statSync(gitDir) workTree = repoDir // MOD construct alternate commands for paths with blank space - var quote_worktree = '"' + workTree + '"' - var quote_gitdir = '"' + gitDir + '"' - if (/\s/.test(gitDir)){ - gitCommandsQuote = ['--git-dir=' + quote_gitdir, '--work-tree=' + quote_worktree] + var quoteWorktree = '"' + workTree + '"' + var quoteGitdir = '"' + gitDir + '"' + if (/\s/.test(gitDir)) { + gitCommandsQuote = ['--git-dir=' + quoteGitdir, '--work-tree=' + quoteWorktree] } gitCommands = ['--git-dir=' + gitDir, '--work-tree=' + workTree] } catch (e) { @@ -197,13 +197,13 @@ var gitMech = { absPath: function (path) { return workTree + '/' + docSubdir + path }, - + // MOD add media path to file - mediaPath: function (path='') { - if (mediaSubdir){ - return workTree + '/' + mediaSubdir + path + mediaPath: function (path = '') { + if (mediaSubdir) { + return workTree + '/' + mediaSubdir + path } else { - return null + return null } }, diff --git a/lib/models.js b/lib/models.js index 7907ddc3..9924d962 100644 --- a/lib/models.js +++ b/lib/models.js @@ -67,17 +67,17 @@ Page.prototype.renameTo = function (newName) { } gitmech.mv(this.filename, - newFilename, - 'Page renamed (' + this.filename + ' => ' + newFilename + ')', - this.author, - function (err) { - if (err) { - reject() - } else { - this.setNames(newName) - resolve() - } - }.bind(this)) + newFilename, + 'Page renamed (' + this.filename + ' => ' + newFilename + ')', + this.author, + function (err) { + if (err) { + reject() + } else { + this.setNames(newName) + resolve() + } + }.bind(this)) }.bind(this)) } @@ -135,7 +135,6 @@ Page.urlFor = function (name, action, proxyPath) { var url = '' switch (true) { - case action === 'show': url = '/wiki/' + wname break @@ -245,14 +244,14 @@ Page.prototype.unlock = function (user) { Page.prototype.fetch = function (extended) { if (!extended) { return Promiserr.all([this.fetchContent(), - this.fetchMetadata(), - this.fetchHashes(1) - ]) + this.fetchMetadata(), + this.fetchHashes(1) + ]) } else { return Promiserr.all([this.fetchContent(), - this.fetchMetadata(), - this.fetchHashes(), - this.fetchLastCommitMessage()]) + this.fetchMetadata(), + this.fetchHashes(), + this.fetchLastCommitMessage()]) } } diff --git a/lib/namer.js b/lib/namer.js index 04d3bc90..5dc1b6c2 100644 --- a/lib/namer.js +++ b/lib/namer.js @@ -45,7 +45,7 @@ Namer.prototype.wikify = function (str) { return ret } - // Not symmetric by any chance, but still better than nothing +// Not symmetric by any chance, but still better than nothing Namer.prototype.unwikify = function (str) { var ret = str diff --git a/lib/redactor.js b/lib/redactor.js index 4045f372..ee63f84c 100644 --- a/lib/redactor.js +++ b/lib/redactor.js @@ -7,195 +7,181 @@ * Released under the MIT license */ -var isNumber = require('is-number') - // function to redact non-public content function redactContent (text, res, config) { - - var redact_config = config.get('redaction') - - if (redact_config.enabled){ - - var result, results, match, count, replacement, anonymous - - // test for hidden page pattern - if (redact_config.hiddenPage){ - result = text.match(new RegExp(redact_config.hiddenPage), 'm') - if (result){ - if (!res || !res.locals.user){ - return '' - } else { - if (result.length > 1){ - return text.replace(result[0], result[1]) - } else { - return text - } - } - } + var redactConfig = config.get('redaction') + + if (redactConfig.enabled) { + var result, match, count, replacement, anonymous + + // test for hidden page pattern + if (redactConfig.hiddenPage) { + result = text.match(new RegExp(redactConfig.hiddenPage), 'm') + if (result) { + if (!res || !res.locals.user) { + return '' + } else { + if (result.length > 1) { + return text.replace(result[0], result[1]) + } else { + return text + } } - - // test for private comment patterns - if (redact_config.privateComment){ - count = 0 - const private_regex = new RegExp(redact_config.privateComment, 'mg') - const private_results = text.match(private_regex) - if (private_results){ - private_results.forEach(function(result){ - if (private_results.index !== undefined && count){ - return - } - count += 1 - if (!res || !res.locals.user){ - text = text.replace(result, '') - } else { - match = result.match(new RegExp(redact_config.privateComment, 'm')) - if (match.length > 1) { - replacement = '' - for (var j = 1; j < match.length; j++){ - replacement += match[j] - } - text = text.replace(match[0], replacement) - } - } - }) + } + } + + // test for private comment patterns + if (redactConfig.privateContent) { + count = 0 + const privateRegex = new RegExp(redactConfig.privateContent, 'mg') + const privateResults = text.match(privateRegex) + if (privateResults) { + privateResults.forEach(function (result) { + if (privateResults.index !== undefined && count) { + return + } + count += 1 + if (!res || !res.locals.user) { + text = text.replace(result, '') + } else { + match = result.match(new RegExp(redactConfig.privateContent, 'm')) + if (match.length > 1) { + replacement = '' + for (var j = 1; j < match.length; j++) { + replacement += match[j] + } + text = text.replace(match[0], replacement) } - } - - // test for date release patterns - if (redact_config.earliestDate){ - count = 0 - const date_regex = new RegExp(redact_config.earliestDate, 'mg') - const date_results = text.match(date_regex) - var date_string, year_string, month_string, day_string, hour_string, content_date - var current_date = new Date() - if (date_results){ - date_results.forEach(function(result){ - if (date_results.index !== undefined && count){ - return - } - count += 1 - // construct replacement string - anonymous = '' - replacement = '' - match = result.match(new RegExp(redact_config.earliestDate, 'm')) - if (match.length < 2){ - return - } else if (match.length == 2){ - anonymous = match[1] - replacement = match[1] - } else { - anonymous = match[2] - for (var j = 1; j < match.length; j++){ - replacement += match[j] - } - } - // test date of excerpt against current date and replace text - if (!res || !res.locals.user){ - date_string = match[0].replace(/[^\d]/g, '') - if (date_string){ - if (date_string.length > 3){ - year_string = date_string.slice(0,4) - content_date = new Date(year_string) - } - if (date_string.length > 5){ - month_string = date_string.slice(4,6) - content_date = new Date(year_string, parseInt(month_string,10) - 1) - } - if (date_string.length > 7){ - day_string = date_string.slice(6,8) - content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string) - } - if (date_string.length > 9){ - hour_string = date_string.slice(8,10) - content_date = new Date(year_string, parseInt(month_string,10) - 1, day_string, hour_string) - } - } - if (date_string.length > 3 && content_date.getTime() > current_date.getTime()){ - text = text.replace(result, '') - } else { - text = text.replace(result, anonymous) - } - - } else { - text = text.replace(result, replacement) - } - - }) + } + }) + } + } + + // test for date release patterns + if (redactConfig.futureContent) { + count = 0 + const dateRegex = new RegExp(redactConfig.futureContent, 'mg') + const dateResults = text.match(dateRegex) + var dateString, yearString, monthString, dayString, hourString, contentDate + var currentDate = new Date() + if (dateResults) { + dateResults.forEach(function (result) { + if (dateResults.index !== undefined && count) { + return + } + count += 1 + // construct replacement string + anonymous = '' + replacement = '' + match = result.match(new RegExp(redactConfig.futureContent, 'm')) + if (match.length < 2) { + return + } else if (match.length === 2) { + anonymous = match[1] + replacement = match[1] + } else { + anonymous = match[2] + for (var j = 1; j < match.length; j++) { + replacement += match[j] + } + } + // test date of excerpt against current date and replace text + if (!res || !res.locals.user) { + dateString = match[0].replace(/[^\d]/g, '') + if (dateString) { + if (dateString.length > 3) { + yearString = dateString.slice(0, 4) + contentDate = new Date(yearString) + } + if (dateString.length > 5) { + monthString = dateString.slice(4, 6) + contentDate = new Date(yearString, parseInt(monthString, 10) - 1) + } + if (dateString.length > 7) { + dayString = dateString.slice(6, 8) + contentDate = new Date(yearString, parseInt(monthString, 10) - 1, dayString) + } + if (dateString.length > 9) { + hourString = dateString.slice(8, 10) + contentDate = new Date(yearString, parseInt(monthString, 10) - 1, dayString, hourString) + } } - - } + if (dateString.length > 3 && contentDate.getTime() > currentDate.getTime()) { + text = text.replace(result, '') + } else { + text = text.replace(result, anonymous) + } + } else { + text = text.replace(result, replacement) + } + }) + } + } - // test for sequential section patterns - if (redact_config.sequentialSections){ - for (var i = 0; i < redact_config.sequentialSections.length; i++){ - count = 0 - var section_excerpt, section_number - var latest_section = redact_config.sequentialSections[i] - var section_regex = new RegExp(latest_section.expression, 'mg') - var section_results = text.match(section_regex) - if (section_results){ - section_results.forEach(function(result){ - if (section_results.index !== undefined && count){ - return - } - count += 1 - // construct replacement string - anonymous = '' - replacement = '' - match = result.match(new RegExp(latest_section.expression, 'm')) - if (match.length < 2){ - return - } else if (match.length == 2){ - anonymous = match[1] - replacement = match[1] - } else { - anonymous = match[2] - for (var j = 1; j < match.length; j++){ - replacement += match[j] - } - } - // test numerical value of excerpt against latest value and replace text - if (!res || !res.locals.user){ - section_number = /\d+/.exec(match[0]) - if (section_number > latest_section.latestValue){ - text = text.replace(result, '') - } else { - text = text.replace(result, anonymous) - } - } else { - text = text.replace(result, replacement) - } - }) - } - + // test for sequential section patterns + if (redactConfig.sectionContent) { + for (var i = 0; i < redactConfig.sectionContent.length; i++) { + count = 0 + var sectionNumber + var latestSection = redactConfig.sectionContent[i] + var sectionRegex = new RegExp(latestSection.expression, 'mg') + var sectionResults = text.match(sectionRegex) + if (sectionResults) { + sectionResults.forEach(function (result) { + if (sectionResults.index !== undefined && count) { + return + } + count += 1 + // construct replacement string + anonymous = '' + replacement = '' + match = result.match(new RegExp(latestSection.expression, 'm')) + if (match.length < 2) { + return + } else if (match.length === 2) { + anonymous = match[1] + replacement = match[1] + } else { + anonymous = match[2] + for (var j = 1; j < match.length; j++) { + replacement += match[j] + } } - } - - return text.trim() - - } else { - - return text - + // test numerical value of excerpt against latest value and replace text + if (!res || !res.locals.user) { + sectionNumber = /\d+/.exec(match[0]) + if (sectionNumber > latestSection.current) { + text = text.replace(result, '') + } else { + text = text.replace(result, anonymous) + } + } else { + text = text.replace(result, replacement) + } + }) + } + } } - + + return text.trim() + } else { + return text + } } // function to add a page redirect notice to the content -function redirectContent(html, requested_page, redirected_page) { - - var redirect_html = '

"' + requested_page.replace(/-/g, ' ') + '" redirects here.

' - var header_match = /(^)/m.exec(html) - if (header_match){ - html = html.replace(header_match[0], header_match[0] + redirect_html) - } - return html - +function redirectContent (html, requested, redirected) { + var redirectHtml = '

"' + requested.replace(/-/g, ' ') + '" redirects here.

' + var headerMatch = /(^)/m.exec(html) + if (headerMatch) { + html = html.replace(headerMatch[0], headerMatch[0] + redirectHtml) + } + return html } var Redactor = { - redact: redactContent, - redirect: redirectContent + redact: redactContent, + redirect: redirectContent } -module.exports = Redactor \ No newline at end of file +module.exports = Redactor diff --git a/lib/renderer.js b/lib/renderer.js index 533fec80..3ae7e707 100644 --- a/lib/renderer.js +++ b/lib/renderer.js @@ -142,7 +142,7 @@ var Renderer = { text = applyDirectives(text) return Marked(text) }, - + // MOD add redaction methods to renderer redact: redactor.redact, redirect: redactor.redirect diff --git a/routes/auth.js b/routes/auth.js index 7863f910..57d880cb 100644 --- a/routes/auth.js +++ b/routes/auth.js @@ -60,10 +60,10 @@ if (auth.google.enabled) { callbackURL: redirectURL }, - function (accessToken, refreshToken, profile, done) { - usedAuthentication('google') - done(null, profile) - } + function (accessToken, refreshToken, profile, done) { + usedAuthentication('google') + done(null, profile) + } )) } @@ -77,37 +77,37 @@ if (auth.github.enabled) { clientSecret: auth.github.clientSecret, callbackURL: redirectURL }, - function (accessToken, refreshToken, profile, done) { - usedAuthentication('github') - done(null, profile) - } + function (accessToken, refreshToken, profile, done) { + usedAuthentication('github') + done(null, profile) + } )) } if (auth.ldap.enabled) { - passport.use(new passportLDAP(function(req, callback) { - process.nextTick(function() { + passport.use(new passportLDAP(function (req, callback) { + process.nextTick(function () { var bindDn = auth.ldap.bindDn.replace(/{{username}}/g, req.body.username) var bindCredentials = auth.ldap.bindCredentials.replace(/{{password}}/g, req.body.password) var opts = { - server: { - url: auth.ldap.url, - bindDn: bindDn, - bindCredentials: bindCredentials, - searchBase: auth.ldap.searchBase, - searchFilter: auth.ldap.searchFilter, - searchAttributes: auth.ldap.searchAttributes - } + server: { + url: auth.ldap.url, + bindDn: bindDn, + bindCredentials: bindCredentials, + searchBase: auth.ldap.searchBase, + searchFilter: auth.ldap.searchFilter, + searchAttributes: auth.ldap.searchAttributes + } } - callback(null, opts); + callback(null, opts) }) }, - function (profile, done) { - usedAuthentication('ldap') - done(null, profile) - } + function (profile, done) { + usedAuthentication('ldap') + done(null, profile) + } )) } @@ -213,8 +213,8 @@ function _getAuthDone (req, res) { !auth.local.used && !auth.ldap.used && !tools.isAuthorized(res.locals.user.email, - app.locals.config.get('authorization').validMatches, - app.locals.config.get('authorization').emptyEmailMatches)) { + app.locals.config.get('authorization').validMatches, + app.locals.config.get('authorization').emptyEmailMatches)) { req.logout() req.session = null res.statusCode = 403 diff --git a/routes/misc.js b/routes/misc.js index af927b08..6bf5e468 100644 --- a/routes/misc.js +++ b/routes/misc.js @@ -16,14 +16,12 @@ function _getSyntaxReference (req, res) { } function _postPreview (req, res) { - // MOD redact content prior to rendering - var page_content = req.body.data - page_content = renderer.redact(page_content, res, app.locals.config) + var pageContent = req.body.data + pageContent = renderer.redact(pageContent, res, app.locals.config) res.render('preview', { - content: renderer.render(page_content) + content: renderer.render(pageContent) }) - } function _getExistence (req, res) { @@ -35,23 +33,23 @@ function _getExistence (req, res) { var result = [] var page var n = req.query.data.length - const alias_map = app.locals.config.get('aliases') // MOD import aliases - var page_name - + const aliasMap = app.locals.config.get('aliases') // MOD import aliases + var nameOfPage + req.query.data.forEach(function (pageName, idx) { (function (name, index) { // MOD remap alias key to its associated page before retrieving page model - page_name = name - if (alias_map){ - var alias_name = page_name.toLowerCase() - if (app.locals.config.get('features').caseSensitiveAliases){ - alias_name = page_name + nameOfPage = name + if (aliasMap) { + var aliasName = nameOfPage.toLowerCase() + if (app.locals.config.get('features').caseSensitiveAliases) { + aliasName = nameOfPage } - if (alias_map[alias_name]){ - page_name = alias_map[alias_name] + if (aliasMap[aliasName]) { + nameOfPage = aliasMap[aliasName] } } - page = new models.Page(page_name) + page = new models.Page(nameOfPage) if (!fs.existsSync(page.pathname)) { result.push(name) } diff --git a/routes/pages.js b/routes/pages.js index bf3a2bc3..e6662f4e 100644 --- a/routes/pages.js +++ b/routes/pages.js @@ -166,15 +166,15 @@ function _putPages (req, res) { if (app.locals.config.get('pages').title.fromFilename && page.name.toLowerCase() !== req.body.pageTitle.toLowerCase()) { page.renameTo(req.body.pageTitle) - .then(savePage) - .catch(function (ex) { - errors = [{ - param: 'pageTitle', - msg: 'A page with this name already exists.', - value: '' - }] - fixErrors() - }) + .then(savePage) + .catch(function (ex) { + errors = [{ + param: 'pageTitle', + msg: 'A page with this name already exists.', + value: '' + }] + fixErrors() + }) } else { savePage() } @@ -270,7 +270,6 @@ function _getRevert (req, res) { res.locals.title = '500 – Internal Server Error' res.statusCode = 500 res.render('500.pug') - return } }) } diff --git a/routes/search.js b/routes/search.js index ee0bd3d2..39787bad 100644 --- a/routes/search.js +++ b/routes/search.js @@ -41,55 +41,49 @@ function _getSearch (req, res) { } models.pages.findStringAsync(res.locals.term).then(function (items) { - // MOD run search results through redaction if enabled (slows response) - if (app.locals.config.get('redaction').enabled){ - - var promise_list = [] - var term_regex - - items.forEach(function (item) { - if (item.trim() !== '') { - // MOD retrieve page content and retest for search term after redaction - const record = item.split(':') - const page_name = path.basename(record[0].replace(/\.md$/, '')) - const search_page = new models.Page(page_name) - promise_list.push(search_page.fetch().then(function () { - const redacted_content = renderer.redact(search_page.content, res, app.locals.config) - term_regex = new RegExp(res.locals.term, 'i') - if (term_regex && term_regex.exec(redacted_content)){ - res.locals.matches.push({ - pageName: page_name, - line: record[1] ? ', L' + record[1] : '', - text: record.slice(2).join('') - }) - } - })) - } - }) - - // MOD wait for all page fetches to return - Promise.all(promise_list).then(function(){ - renderResults() - }) - - } else { - - items.forEach(function (item) { - if (item.trim() !== '') { - record = item.split(':') - res.locals.matches.push({ - pageName: path.basename(record[0].replace(/\.md$/, '')), - line: record[1] ? ', L' + record[1] : '', - text: record.slice(2).join('') - }) - } - }) - + if (app.locals.config.get('redaction').enabled) { + var promiseArray = [] + var termRegex + + items.forEach(function (item) { + if (item.trim() !== '') { + // MOD retrieve page content and retest for search term after redaction + const record = item.split(':') + const nameOfPage = path.basename(record[0].replace(/\.md$/, '')) + const searchPage = new models.Page(nameOfPage) + promiseArray.push(searchPage.fetch().then(function () { + const redactedContent = renderer.redact(searchPage.content, res, app.locals.config) + termRegex = new RegExp(res.locals.term, 'i') + if (termRegex && termRegex.exec(redactedContent)) { + res.locals.matches.push({ + pageName: nameOfPage, + line: record[1] ? ', L' + record[1] : '', + text: record.slice(2).join('') + }) + } + })) + } + }) + + // MOD wait for all page fetches to return + Promise.all(promiseArray).then(function () { renderResults() - + }) + } else { + items.forEach(function (item) { + if (item.trim() !== '') { + record = item.split(':') + res.locals.matches.push({ + pageName: path.basename(record[0].replace(/\.md$/, '')), + line: record[1] ? ', L' + record[1] : '', + text: record.slice(2).join('') + }) + } + }) + + renderResults() } - }) } diff --git a/routes/wiki.js b/routes/wiki.js index e92215b5..a1d82915 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -48,15 +48,14 @@ function _getWiki (req, res) { pages.fetch(pagen).then(function () { pages.models.forEach(function (page) { - // MOD test to see if content is redacted - const page_content = renderer.redact(page.content, res, app.locals.config) - if (!page.error && page_content) { - const rendered_content = renderer.render(page_content) // MOD render content + const pageContent = renderer.redact(page.content, res, app.locals.config) + if (!page.error && pageContent) { + const renderedContent = renderer.render(pageContent) // MOD render content items.push({ page: page, hashes: page.hashes.length === 2 ? page.hashes.join('..') : '', - summary: rendered_content.match(/

[\s\S]*?<\/p>/m) // MOD add first paragraph summary to item + summary: renderedContent.match(/

[\s\S]*?<\/p>/m) // MOD add first paragraph summary to item }) } }) @@ -75,21 +74,20 @@ function _getWiki (req, res) { } function _getWikiPage (req, res) { - // MOD check if page is listed as an alias - var alias_map = app.locals.config.get('aliases') - var page_name = req.params.page - if (alias_map){ - var alias_name = page_name.toLowerCase() - if (app.locals.config.get('features').caseSensitiveAliases){ - alias_name = page_name + var aliasMap = app.locals.config.get('aliases') + var nameOfPage = req.params.page + if (aliasMap) { + var aliasName = nameOfPage.toLowerCase() + if (app.locals.config.get('features').caseSensitiveAliases) { + aliasName = nameOfPage } - if (alias_map[alias_name]){ - page_name = alias_map[alias_name] + if (aliasMap[aliasName]) { + nameOfPage = aliasMap[aliasName] } } - var page = new models.Page(page_name, req.params.version) + var page = new models.Page(nameOfPage, req.params.version) page.fetch().then(function () { if (!page.error) { @@ -103,28 +101,26 @@ function _getWikiPage (req, res) { delete req.session.notice // MOD redact content - var page_content = renderer.redact(page.content, res, app.locals.config) - + var pageContent = renderer.redact(page.content, res, app.locals.config) + // MOD add redirection and render content - if (page_content) { - var rendered_content = renderer.render('# ' + page.title + '\n' + page_content) - if (page_name != req.params.page){ - rendered_content = renderer.redirect(rendered_content, req.params.page, page_name) - } - - res.render('show', { - page: page, - title: app.locals.config.get('application').title + ' – ' + page.title, - content: rendered_content // MOD add rendered content - }) + if (pageContent) { + var renderedContent = renderer.render('# ' + page.title + '\n' + pageContent) + if (nameOfPage !== req.params.page) { + renderedContent = renderer.redirect(renderedContent, req.params.page, nameOfPage) + } + + res.render('show', { + page: page, + title: app.locals.config.get('application').title + ' – ' + page.title, + content: renderedContent // MOD add rendered content + }) } else { // MOD remove existence of page if all content is redacted res.locals.title = '404 - Not found' res.statusCode = 404 res.render('404.pug') - return } - } else { if (req.user) { // Try sorting out redirect loops with case insentive fs @@ -143,7 +139,6 @@ function _getWikiPage (req, res) { res.locals.title = '404 - Not found' res.statusCode = 404 res.render('404.pug') - return } } } @@ -182,7 +177,6 @@ function _getCompare (req, res) { res.locals.title = '404 - Not found' res.statusCode = 404 res.render('404.pug') - return } }) diff --git a/test/spec/configSpec.js b/test/spec/configSpec.js index 3d987394..0de7b231 100644 --- a/test/spec/configSpec.js +++ b/test/spec/configSpec.js @@ -60,8 +60,8 @@ describe('Config', function () { expect(def.redaction.enabled).to.be.false expect(def.redaction.hiddenPage).to.equal('^') - expect(def.redaction.privateComment).to.equal('') - expect(def.redaction.earliestDate).to.equal('([\\s\\S]*?)') + expect(def.redaction.privateContent).to.equal('') + expect(def.redaction.futureContent).to.equal('([\\s\\S]*?)') }) it('should get the config as a whole', function () { diff --git a/test/spec/redactorSpec.js b/test/spec/redactorSpec.js index e31ad2c0..2ead016a 100644 --- a/test/spec/redactorSpec.js +++ b/test/spec/redactorSpec.js @@ -10,11 +10,11 @@ var config = { redaction: { enabled: true, hiddenPage: '^', - privateComment: '', - earliestDate: '([\\s\\S]*?)', - sequentialSections: [{ + privateContent: '', + futureContent: '([\\s\\S]*?)', + sectionContent: [{ expression: '([\\s\\S]*?)', - latestValue: 0 + current: 0 }] } } From 063d78a80d2ca3fbbe28532f18832e7dd1085a5c Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Tue, 31 Jul 2018 19:46:02 +0000 Subject: [PATCH 23/34] fixed bug with sidebar rendering in layout.pug --- views/layout.pug | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/views/layout.pug b/views/layout.pug index aabeab41..103a67a8 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -58,6 +58,8 @@ include mixins/links -var main_class = 'col-md-' + mainWidth + ' hide-tools' -var footer_sidebar = 'col-md-' + footerSidebarWidth -var footer_class = 'col-md-' + footerWidth + ' with-footer' + -var sidebar_class_none = 'col-md-' + sidebarWidth + -var sidebar_mobile_class_none = sidebar_class_none + ' hidden-sm hidden-xs' .row if hasSidebar() @@ -69,9 +71,9 @@ include mixins/links .content !{_sidebar} else if sidebarMobile - div(id='sidebar' class=sidebar_class) + div(id='sidebar' class=sidebar_class_none) else - div(id='sidebar' class=sidebar_mobile_class) + div(id='sidebar' class=sidebar_mobile_class_none) div(id='main' class=main_class) block content From 2a8cd3af8ccad24fb89b8149e8cd12a2f52336fd Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Thu, 2 Aug 2018 17:18:51 +0000 Subject: [PATCH 24/34] restored favicon.ico acquisition process since favicon url setting can be used with media folder; --- lib/app.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lib/app.js b/lib/app.js index 8a712386..1ca63911 100644 --- a/lib/app.js +++ b/lib/app.js @@ -164,12 +164,7 @@ module.exports.initialize = function (config) { if (config.get('application').loggingMode) { app.use(logger(config.get('application').loggingMode == 1 ? 'combined' : 'dev', {skip: function () { }})) // eslint-disable-line eqeqeq } - // MOD use favicon.ico in media folder - if (Git.mediaPath('favicon.ico') && fs.existsSync(Git.mediaPath('favicon.ico'))) { - app.use(favicon(Git.mediaPath('favicon.ico'))) - } else { - app.use(favicon(path.join(__dirname + '/../', 'public', 'favicon.ico'))) // eslint-disable-line no-path-concat - } + app.use(favicon(path.join(__dirname + '/../', 'public', 'favicon.ico'))) // eslint-disable-line no-path-concat app.use(bodyParser.urlencoded({extended: true, limit: '500kb'})) app.use(methodOverride(function (req, res) { if (req.body && typeof req.body === 'object' && '_method' in req.body) { From 1c78fc236bca4629de561f3df1cb4aadc66d1555 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Sat, 4 Aug 2018 22:02:03 +0000 Subject: [PATCH 25/34] added assets import support for css and js files found in mediaSubdir; added unittests for additional fields added to config; added documentation to README_FORK.md; --- README_FORK.md | 8 ++++++++ lib/app.js | 35 +++++++++++++++++++++++++++++++++-- lib/config.js | 20 +++++++++++++++++++- test/spec/configSpec.js | 5 ++++- views/layout.pug | 8 ++++++++ 5 files changed, 72 insertions(+), 4 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index 63b996df..c58b17af 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -40,6 +40,14 @@ Additional Configuration Options With this option, you can force redirection to only match an alias if the cases match. For example, if you want to have any link to "Introduction" to redirect to Home.md, when this option is disabled, links to "introduction" would also redirect to Home.md. +#### assets.css (string: '') + + With the assets.css string, you can add the file path to any number of css sheets to be imported on page rendering in the element prior to the customization style. In this way, you can add dependencies to the customization style. Separate stylesheets should be delineated with a comma and all such sheets must be located in the mediaSubdir folder or they will not be imported. + +#### assets.js (string: '') + + With the assets.js string, you can add the file path to any number of js files to be appended to the bottom of the body element on page rendering prior to the customization script. In this way, you can add local dependencies to the customization script. Separate javascript files should be delineated with a comma and all such files must be located in the mediaSubdir folder or they will not be imported. + #### aliases (map) If you would like to setup one or more aliases for a wiki entry, which will redirect to that page, you can include each alias and its associated page as a key:value pair in this map. Whenever a page request to an alias value is made, the server will return the page it is associated with and also include a line underneath the title of the page that indicates that the requested term redirects to this page. Since URLs cannot contain a space, all aliases with a word break need to replace that word break with a '-'. Whereas the alias should not contain .md, the page it redirects to must include .md in its name. diff --git a/lib/app.js b/lib/app.js index 1ca63911..ac97ee8d 100644 --- a/lib/app.js +++ b/lib/app.js @@ -48,6 +48,30 @@ module.exports.initialize = function (config) { app.locals.baseUrl = config.get('server').baseUrl } + // MOD add assets to locals + app.locals.assets = { + css: [], + js: [] + } + var cssArray = config.get('assets').css.split(',') + for (var i = 0; i < cssArray.length; i++){ + if (cssArray[i].trim() && fs.existsSync(Git.mediaPath(cssArray[i].trim()))){ + app.locals.assets.css.push(cssArray[i].trim()) + } + } + var jsArray = config.get('assets').js.split(',') + for (var i = 0; i < jsArray.length; i++){ + if (jsArray[i].trim() && fs.existsSync(Git.mediaPath(jsArray[i].trim()))){ + app.locals.assets.js.push(jsArray[i].trim()) + } + } + if (app.locals.assets.css){ + console.log('Adding styles ' + JSON.stringify(app.locals.assets.css)) + } + if (app.locals.assets.js){ + console.log('Adding scripts ' + JSON.stringify(app.locals.assets.js)) + } + // View helpers app.use(function (req, res, next) { res.locals = { @@ -115,6 +139,13 @@ module.exports.initialize = function (config) { get serveLocal () { return config.get('application').serveLocal }, + // MOD add asset imports + get cssAssets () { + return app.locals.assets.css + }, + get jsAssets () { + return app.locals.assets.js + }, isAnonymous: function () { return !req.user @@ -174,9 +205,9 @@ module.exports.initialize = function (config) { return method } })) - + // MOD add files in media path to static files if (Git.mediaPath()) { - app.use(express.static(Git.mediaPath())) // MOD files in media path to static files + app.use(express.static(Git.mediaPath())) } app.use(express.static(path.join(__dirname + '/../', 'public'))) // eslint-disable-line no-path-concat app.use(cookieParser()) diff --git a/lib/config.js b/lib/config.js index 14e0179f..760b3022 100644 --- a/lib/config.js +++ b/lib/config.js @@ -62,7 +62,7 @@ module.exports = (function () { repository: '', docSubdir: '', mediaSubdir: '', // MOD name of sub-directory to use for additional public accessible media - serveLocal: false, // MOD enable serving of files from local server rather than CDN + serveLocal: false, // MOD enable serving of files from local server rather than a CDN remote: '', pushInterval: 30, secret: 'change me', @@ -168,6 +168,12 @@ module.exports = (function () { script: '_script.js' }, + // MOD comma delineated strings of css and js files to include in assets on page load + assets: { + css: '', + js: '' + }, + // MOD map of alias terms and the page each redirects to aliases: { introduction: 'Home.md' @@ -282,6 +288,18 @@ module.exports = (function () { config.customizations = _.extend({}, this.defaults.customizations, config.customizations) + // MOD extend and validate assets + config.assets = _.extend({}, this.defaults.assets, config.assets) + var import_assets = config.assets.css + if (import_assets){ + import_assets += ', ' + } + import_assets += config.assets.js + if (import_assets && !config.application.mediaSubdir){ + error = 'Use of assets ' + import_assets + ' requires the specification of a mediaSubdir.' + return false + } + // MOD validate layout fields config.layout = _.extend({}, this.defaults.layout, config.layout) config.layout.sidebarWidth = parseInt(config.layout.sidebarWidth, 10) diff --git a/test/spec/configSpec.js b/test/spec/configSpec.js index 0de7b231..c17bf19a 100644 --- a/test/spec/configSpec.js +++ b/test/spec/configSpec.js @@ -3,7 +3,7 @@ var yaml = require('js-yaml') -var configKeys = ['application', 'authentication', 'features', 'server', 'authorization', 'pages', 'customizations', 'aliases', 'layout', 'redaction'] +var configKeys = ['application', 'authentication', 'features', 'server', 'authorization', 'pages', 'customizations', 'assets', 'aliases', 'layout', 'redaction'] var Config = require('../../lib/config') describe('Config', function () { @@ -53,6 +53,9 @@ describe('Config', function () { expect(def.authentication.local.enabled).to.be.false expect(def.authentication.github.enabled).to.be.false + expect(def.assets.css).to.equal('') + expect(def.assets.js).to.equal('') + expect(def.layout.sidebarWidth).to.equal(2) expect(def.layout.mainWidth).to.equal(8) expect(def.layout.footerWidth).to.equal(8) diff --git a/views/layout.pug b/views/layout.pug index 103a67a8..00ec4740 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -19,6 +19,10 @@ include mixins/links +asset("/css/style.css") +asset("/css/ionicons.min.css") +asset("/css/shCoreDefault.css") + //- MOD add css assets + if cssAssets.length + each sheet in cssAssets + +asset(sheet) block styles if hasCustomStyle() style. @@ -87,6 +91,10 @@ include mixins/links script(src=proxyPath + "/vendor/jquery.min.js") +asset("/vendor/bootstrap/js/bootstrap.min.js") +asset("/js/app.js") + //- MOD add javascript assets + if jsAssets.length + each js in jsAssets + +asset(js) script. Jingo.init("#{proxyPath}"); block scripts From 40c56aee3cce3105b35a364f0f80c04b3e2ed640 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Tue, 21 Aug 2018 02:16:14 +0000 Subject: [PATCH 26/34] fixed bug associated with quotation marks in name of article when checking for existence of link; --- README_FORK.md | 4 ++-- public/js/app.js | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index c58b17af..21f4723e 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -42,11 +42,11 @@ Additional Configuration Options #### assets.css (string: '') - With the assets.css string, you can add the file path to any number of css sheets to be imported on page rendering in the element prior to the customization style. In this way, you can add dependencies to the customization style. Separate stylesheets should be delineated with a comma and all such sheets must be located in the mediaSubdir folder or they will not be imported. + With the assets.css string, you can add the file path to any number of css sheets to be imported on page rendering in the \ element prior to the customization style. In this way, you can add dependencies to the customization style. Separate stylesheets should be delineated with a comma and all such sheets must be located in the mediaSubdir folder or they will not be imported. #### assets.js (string: '') - With the assets.js string, you can add the file path to any number of js files to be appended to the bottom of the body element on page rendering prior to the customization script. In this way, you can add local dependencies to the customization script. Separate javascript files should be delineated with a comma and all such files must be located in the mediaSubdir folder or they will not be imported. + With the assets.js string, you can add the file path to any number of js files to be appended to the bottom of the \ element on page rendering prior to the customization script. In this way, you can add local dependencies to the customization script. Separate javascript files should be delineated with a comma and all such files must be located in the mediaSubdir folder or they will not be imported. #### aliases (map) diff --git a/public/js/app.js b/public/js/app.js index 88dbd71f..6d448782 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -223,8 +223,12 @@ }) $.getJSON(proxyPath + '/misc/existence', {data: pages}, function (result) { - $.each(result.data, function (href, a) { - $(selector + " a[href='" + proxyPath.split('/').join('\\/') + '\\/wiki\\/' + encodeURIComponent(a) + "']").addClass('absent') + $.each(result.data, function (href, a) { + if (a.indexOf("'")){ + $(selector + ' a[href="' + proxyPath.split('/').join('\\/') + '\\/wiki\\/' + encodeURIComponent(a) + '"]').addClass('absent') + } else { + $(selector + " a[href='" + proxyPath.split('/').join('\\/') + '\\/wiki\\/' + encodeURIComponent(a) + "']").addClass('absent') + } }) }) } From 87e3afdf0a483266a77bf2cca4ba52cb60867581 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 27 Aug 2018 23:10:40 +0000 Subject: [PATCH 27/34] extended caseSensitive option to all page retrieval; renamed caseSensitiveAliases to caseSensitive in config; --- lib/config.js | 2 +- routes/misc.js | 6 +++++- routes/wiki.js | 8 +++++++- test/spec/configSpec.js | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/config.js b/lib/config.js index 760b3022..c0df9a44 100644 --- a/lib/config.js +++ b/lib/config.js @@ -119,7 +119,7 @@ module.exports = (function () { codemirror: true, gravatar: true, pageSummaries: true, // MOD enable initial paragraph to be returned in list of documents - caseSensitiveAliases: false // MOD enable case sensitivity in redirection + caseSensitive: false // MOD enable case sensitivity in redirection }, server: { diff --git a/routes/misc.js b/routes/misc.js index 6bf5e468..e8d43067 100644 --- a/routes/misc.js +++ b/routes/misc.js @@ -42,13 +42,17 @@ function _getExistence (req, res) { nameOfPage = name if (aliasMap) { var aliasName = nameOfPage.toLowerCase() - if (app.locals.config.get('features').caseSensitiveAliases) { + if (app.locals.config.get('features').caseSensitive) { aliasName = nameOfPage } if (aliasMap[aliasName]) { nameOfPage = aliasMap[aliasName] } } + // MOD capitalize all words in page name + if (!app.locals.config.get('features').caseSensitive){ + nameOfPage = nameOfPage.replace(/(^|\-)\w/g, function(l){ return l.toUpperCase() }) + } page = new models.Page(nameOfPage) if (!fs.existsSync(page.pathname)) { result.push(name) diff --git a/routes/wiki.js b/routes/wiki.js index a1d82915..397341d2 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -79,13 +79,19 @@ function _getWikiPage (req, res) { var nameOfPage = req.params.page if (aliasMap) { var aliasName = nameOfPage.toLowerCase() - if (app.locals.config.get('features').caseSensitiveAliases) { + if (app.locals.config.get('features').caseSensitive) { aliasName = nameOfPage } if (aliasMap[aliasName]) { nameOfPage = aliasMap[aliasName] } } + // MOD capitalize all words in page name + if (!app.locals.config.get('features').caseSensitive){ + console.log(nameOfPage) + nameOfPage = nameOfPage.replace(/(^|\-)\w/g, function(l){ return l.toUpperCase() }) + console.log(nameOfPage) + } var page = new models.Page(nameOfPage, req.params.version) diff --git a/test/spec/configSpec.js b/test/spec/configSpec.js index c17bf19a..54385a6f 100644 --- a/test/spec/configSpec.js +++ b/test/spec/configSpec.js @@ -38,7 +38,7 @@ describe('Config', function () { expect(def.features.codemirror).to.be.true expect(def.features.markitup).to.be.false expect(def.features.pageSummaries).to.be.true - expect(def.features.caseSensitiveAliases).to.be.false + expect(def.features.caseSensitive).to.be.false expect(def.server.hostname).to.equal('localhost') expect(def.server.port).to.equal(6067) From 3aaf9d17f9e58ab743a4d2e36c3cc65d5c3001a6 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 27 Aug 2018 23:21:51 +0000 Subject: [PATCH 28/34] updated documentation for case sensitivity disabling; TODO: integrate aliases into page editing so alias can be added by live users; TODO: lift html elements outside of paragraphs during markdown rendering; TODO: add route to retrieve data files which can be redacted; TODO: add option to auto-generate tables and other data objects into page; TODO: add plugin option for a different flavor of markdown; --- README_FORK.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README_FORK.md b/README_FORK.md index 21f4723e..0bca1b5c 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -36,9 +36,9 @@ Additional Configuration Options With this option, the html rendered version of the first paragraph of each page will be included its listing when a user browses all the pages. -#### features.caseSensitiveRedirects (boolean: false) +#### features.caseSensitive (boolean: false) - With this option, you can force redirection to only match an alias if the cases match. For example, if you want to have any link to "Introduction" to redirect to Home.md, when this option is disabled, links to "introduction" would also redirect to Home.md. + With this option, you can force aliases and page linking to only match a page if the cases match. For example, if you want to have any link to "Introduction" to redirect to Home.md, when this option is disabled, links to "introduction" would also redirect to Home.md. #### assets.css (string: '') From e9a812aecae7b60954084f1a0866d5938fd0fd63 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Mon, 27 Aug 2018 23:28:56 +0000 Subject: [PATCH 29/34] updated documentation for new pull request; TODO: integrate aliases into page editing so alias can be added by live users; TODO: lift html elements outside of paragraphs during markdown rendering; TODO: add route to retrieve data files which can be redacted; TODO: add option to auto-generate tables and other data objects into page; TODO: add plugin option for a different flavor of markdown; --- README_FORK.md | 2 ++ public/js/app.js | 1 + 2 files changed, 3 insertions(+) diff --git a/README_FORK.md b/README_FORK.md index 0bca1b5c..888951a3 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -8,6 +8,7 @@ ChangeLog --------- ### List of Modifications - fixed bug in gitExec when repo path contains one or more spaces +- fixed bug with markMissingPagesAsAbsent request for pages with ' in the name - added redirection of synonyms to official page toggled in config - added sidebar, main and footer column width customization to config - added options to use regexp to redact exerpts of information for anonymous users to config @@ -17,6 +18,7 @@ ChangeLog - added media folder to static routes on page - added override of standard favicon with any favicon in root of media folder - added option to serve files from local version rather than CDN +- added option to disable case sensitivity in page links and aliases ### Mod Strategy All changes and/or additions have been marked with comments which begin with "// MOD" so as to make it easier to hunt down changes. Existing code has been preserved whenever possible through the use of configuration flags to enable the additional/optional functionality of this fork. Also, additional methods and modules have been employed using naming conventions so as to least possibly conflict with future changes to the main branch. diff --git a/public/js/app.js b/public/js/app.js index 6d448782..0c6be3dc 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -224,6 +224,7 @@ $.getJSON(proxyPath + '/misc/existence', {data: pages}, function (result) { $.each(result.data, function (href, a) { + // MOD change quote convention if page contains ' in its name if (a.indexOf("'")){ $(selector + ' a[href="' + proxyPath.split('/').join('\\/') + '\\/wiki\\/' + encodeURIComponent(a) + '"]').addClass('absent') } else { From 0e4a2d7a99748ce1c1189b2e4b2aea2371261f69 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Tue, 28 Aug 2018 15:37:18 +0000 Subject: [PATCH 30/34] removed console log debugging lines; TODO: integrate aliases into page editing so alias can be added by live users; TODO: lift html elements outside of paragraphs during markdown rendering; TODO: add route to retrieve data files which can be redacted; TODO: add option to auto-generate tables and other data objects into page; TODO: add plugin option for a different flavor of markdown; --- routes/wiki.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/routes/wiki.js b/routes/wiki.js index 397341d2..195dabd7 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -88,9 +88,7 @@ function _getWikiPage (req, res) { } // MOD capitalize all words in page name if (!app.locals.config.get('features').caseSensitive){ - console.log(nameOfPage) nameOfPage = nameOfPage.replace(/(^|\-)\w/g, function(l){ return l.toUpperCase() }) - console.log(nameOfPage) } var page = new models.Page(nameOfPage, req.params.version) From 63df6c36ace02d1428dd76cd3d4b349440fe1e34 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Thu, 30 Aug 2018 03:37:02 +0000 Subject: [PATCH 31/34] added option to lift html block elements outside of paragraphs during markdown rendering; TODO: integrate aliases into page editing so alias can be added by live users; TODO: add option to auto-generate tables and other data objects into page; TODO: add plugin option for a different flavor of markdown; --- README_FORK.md | 5 +++++ lib/config.js | 1 + lib/renderer.js | 46 +++++++++++++++++++++++++++++++++++++++++ package.json | 1 + test/spec/configSpec.js | 1 + 5 files changed, 54 insertions(+) diff --git a/README_FORK.md b/README_FORK.md index 888951a3..c582bd1b 100644 --- a/README_FORK.md +++ b/README_FORK.md @@ -19,6 +19,7 @@ ChangeLog - added override of standard favicon with any favicon in root of media folder - added option to serve files from local version rather than CDN - added option to disable case sensitivity in page links and aliases +- added option to lift block elements outside of paragraphs during markdown rendering ### Mod Strategy All changes and/or additions have been marked with comments which begin with "// MOD" so as to make it easier to hunt down changes. Existing code has been preserved whenever possible through the use of configuration flags to enable the additional/optional functionality of this fork. Also, additional methods and modules have been employed using naming conventions so as to least possibly conflict with future changes to the main branch. @@ -34,6 +35,10 @@ Additional Configuration Options With this option, you can use a local copy of a resource instead of a CDN. Currently, this only applies to the Ubuntu font families requested in the head of each page. +#### application.percolateBlocks (string: "div, blockquote") + + With this option, you can add other block elements to the list of block elements which are lifted out of their location in paragraphs during markdown rendering. Separate each element tag type you would like to be placed outside of paragraphs with a comma (and optional space). Without this option, only table blocks are lifted outside of paragraphs. + #### features.pageSummaries (boolean: true) With this option, the html rendered version of the first paragraph of each page will be included its listing when a user browses all the pages. diff --git a/lib/config.js b/lib/config.js index c0df9a44..0694951e 100644 --- a/lib/config.js +++ b/lib/config.js @@ -71,6 +71,7 @@ module.exports = (function () { loggingMode: 1, pedanticMarkdown: true, gfmBreaks: true, + percolateBlocks: 'div, blockquote', // MOD html block element tags to lift out of paragraphs staticWhitelist: '/\\.png$/i, /\\.jpg$/i, /\\.gif$/i', proxyPath: '' }, diff --git a/lib/renderer.js b/lib/renderer.js index 3ae7e707..624859b7 100644 --- a/lib/renderer.js +++ b/lib/renderer.js @@ -6,6 +6,7 @@ var Page = require('./models').Page var directives = require('./directives') var Configurable = require('./configurable') var redactor = require('./redactor') // MOD added redactor module as dependency +var cheerio = require('cheerio') var Configuration = function () { Configurable.call(this) @@ -40,6 +41,51 @@ mdRenderer.code = function (code, lang, escaped) { '\n\n' } +function outerHTML (element) { + var index = element.index(); + var parent = element.parent().clone(); + var child = parent.children()[index]; + parent.empty(); + parent.append(child); + return parent.html(); +} + +// MOD overwrite paragraph method to lift user defined block elements outside of paragraphs +mdRenderer.paragraph = function(text) { + + /* NOTE: requires cheerio module */ + + var blocks = '' + + var blockElements = configuration.getConfig().application.percolateBlocks + if (blockElements){ + + var $ = cheerio.load(text) + const blockArray = blockElements.split(',') + var selectors = '' + for (var i = 0; i < blockArray.length; i++){ + if (selectors){ selectors += ', '} + selectors += 'body > ' + blockArray[i].trim() + } + $(selectors).each(function(i, el){ + var index = $(el).index() + var parent = $(el).parent().clone() + var child = parent.children()[index] + parent.empty() + parent.append(child) + blocks += parent.html() + $(el).parent().children('br').remove() + $(el).remove() + }) + text = $('body').html() + + } + + text = blocks + '

' + text + '

' + return text + +} + Marked.setOptions({ gfm: true, renderer: mdRenderer, diff --git a/package.json b/package.json index cf96317a..b6408bbe 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "dependencies": { "bluebird": "^3.5.0", "body-parser": "^1.10.0", + "cheerio": "^1.0.0-rc.2", "commander": "^2.5.1", "cookie-parser": "^1.3.3", "cookie-session": "^1.1.0", diff --git a/test/spec/configSpec.js b/test/spec/configSpec.js index 54385a6f..841a21d9 100644 --- a/test/spec/configSpec.js +++ b/test/spec/configSpec.js @@ -32,6 +32,7 @@ describe('Config', function () { expect(def.application.loggingMode).to.equal(1) expect(def.application.pedanticMarkdown).to.be.true expect(def.application.gfmBreaks).to.be.true + expect(def.application.percolateBlocks).to.equal('div, blockquote') expect(def.application.staticWhitelist).to.equal('/\\.png$/i, /\\.jpg$/i, /\\.gif$/i') expect(def.application.proxyPath).to.equal('') From 1ca60d9600e2bf3a3c476d9e5d31abc60c8f07a3 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Wed, 19 Jul 2023 16:58:02 -0400 Subject: [PATCH 32/34] added extension field to config file --- lib/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/config.js b/lib/config.js index 0694951e..b329258a 100644 --- a/lib/config.js +++ b/lib/config.js @@ -60,6 +60,7 @@ module.exports = (function () { logo: '', favicon: '', repository: '', + extension: '', docSubdir: '', mediaSubdir: '', // MOD name of sub-directory to use for additional public accessible media serveLocal: false, // MOD enable serving of files from local server rather than a CDN From 37b064456cd3968dbe2b54b679e67a8b8d74246b Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Wed, 19 Jul 2023 20:15:15 -0400 Subject: [PATCH 33/34] fixed search to ensure only results after redactions are served; --- routes/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/search.js b/routes/search.js index 39787bad..9f61fb3c 100644 --- a/routes/search.js +++ b/routes/search.js @@ -55,7 +55,7 @@ function _getSearch (req, res) { promiseArray.push(searchPage.fetch().then(function () { const redactedContent = renderer.redact(searchPage.content, res, app.locals.config) termRegex = new RegExp(res.locals.term, 'i') - if (termRegex && termRegex.exec(redactedContent)) { + if (termRegex && termRegex.exec(redactedContent) && redactedContent.includes(record.slice(2).join(''))) { res.locals.matches.push({ pageName: nameOfPage, line: record[1] ? ', L' + record[1] : '', From ed7cfa8289f5ac0916b83faa051674648860e063 Mon Sep 17 00:00:00 2001 From: /home/rcj1492 Date: Wed, 9 Aug 2023 13:46:50 -0400 Subject: [PATCH 34/34] added redaction capacity to Sidebar.md; --- routes/wiki.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/routes/wiki.js b/routes/wiki.js index 195dabd7..339d8415 100644 --- a/routes/wiki.js +++ b/routes/wiki.js @@ -19,6 +19,10 @@ router.get('/wiki/:page/:version', _getWikiPage) router.get('/wiki/:page/compare/:revisions', _getCompare) function _getHistory (req, res) { + + // MOD redact content of sidebar + res.locals._sidebar = renderer.redact(res.locals._sidebar, res, app.locals.config) + var page = new models.Page(req.params.page) page.fetch().then(function () { @@ -41,6 +45,10 @@ function _getHistory (req, res) { } function _getWiki (req, res) { + + // MOD redact content of sidebar + res.locals._sidebar = renderer.redact(res.locals._sidebar, res, app.locals.config) + var items = [] var pagen = 0 | req.query.page @@ -74,6 +82,7 @@ function _getWiki (req, res) { } function _getWikiPage (req, res) { + // MOD check if page is listed as an alias var aliasMap = app.locals.config.get('aliases') var nameOfPage = req.params.page @@ -91,6 +100,9 @@ function _getWikiPage (req, res) { nameOfPage = nameOfPage.replace(/(^|\-)\w/g, function(l){ return l.toUpperCase() }) } + // MOD redact content of sidebar + res.locals._sidebar = renderer.redact(res.locals._sidebar, res, app.locals.config) + var page = new models.Page(nameOfPage, req.params.version) page.fetch().then(function () { @@ -150,6 +162,10 @@ function _getWikiPage (req, res) { } function _getCompare (req, res) { + + // MOD redact content of sidebar + res.locals._sidebar = renderer.redact(res.locals._sidebar, res, app.locals.config) + var revisions = req.params.revisions var page = new models.Page(req.params.page)