diff --git a/CHANGELOG.md b/CHANGELOG.md index b92d264..b3d9497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +1.5.2 / 2023-02-05 + +- Исправление проблемы чтения каталога opds для koreader + 1.5.1 / 2023-01-28 ------------------ diff --git a/package-lock.json b/package-lock.json index 7c9d437..f7fb831 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "inpx-web", - "version": "1.5.1", + "version": "1.5.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "inpx-web", - "version": "1.5.1", + "version": "1.5.2", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { diff --git a/package.json b/package.json index aeb4ebf..5848d12 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "inpx-web", - "version": "1.5.1", + "version": "1.5.2", "author": "Book Pauk ", "license": "CC0-1.0", "repository": "bookpauk/inpx-web", diff --git a/server/core/opds/BasePage.js b/server/core/opds/BasePage.js index c986f1f..38eeb9a 100644 --- a/server/core/opds/BasePage.js +++ b/server/core/opds/BasePage.js @@ -24,13 +24,18 @@ class BasePage { this.showDeleted = false; } + escape(s) { + //костыль для koreader, не понимает hex-экранирование вида ' + return he.escape(s).replace(/'/g, ''').replace(/`/g, '`'); + } + makeEntry(entry = {}) { if (!entry.id) throw new Error('makeEntry: no id'); if (!entry.title) throw new Error('makeEntry: no title'); - entry.title = he.escape(entry.title); + entry.title = this.escape(entry.title); const result = { updated: (new Date()).toISOString().substring(0, 19) + 'Z', @@ -48,7 +53,7 @@ class BasePage { } makeLink(attrs) { - attrs.href = he.escape(attrs.href); + attrs.href = this.escape(attrs.href); return {'*ATTRS': attrs}; } diff --git a/server/core/opds/BookPage.js b/server/core/opds/BookPage.js index d46fef3..da04dcb 100644 --- a/server/core/opds/BookPage.js +++ b/server/core/opds/BookPage.js @@ -1,6 +1,5 @@ const path = require('path'); const _ = require('lodash'); -const he = require('he'); const dayjs = require('dayjs'); const BasePage = require('./BasePage'); @@ -190,7 +189,7 @@ class BookPage extends BasePage { if (content) { e.content = { '*ATTRS': {type: 'text/html'}, - '*TEXT': he.escape(content), + '*TEXT': this.escape(content), }; } diff --git a/server/core/opds/GenrePage.js b/server/core/opds/GenrePage.js index 91cbfc3..0a036a5 100644 --- a/server/core/opds/GenrePage.js +++ b/server/core/opds/GenrePage.js @@ -14,7 +14,7 @@ class GenrePage extends BasePage { const query = { from: req.query.from || 'search', - term: req.query.term || '*', + term: req.query.term || '', section: req.query.section || '', }; diff --git a/server/core/opds/SearchHelpPage.js b/server/core/opds/SearchHelpPage.js index 60c084a..246f499 100644 --- a/server/core/opds/SearchHelpPage.js +++ b/server/core/opds/SearchHelpPage.js @@ -1,5 +1,3 @@ -const he = require('he'); - const BasePage = require('./BasePage'); class SearchHelpPage extends BasePage { @@ -45,7 +43,7 @@ class SearchHelpPage extends BasePage { title: this.title, content: { '*ATTRS': {type: 'text/html'}, - '*TEXT': he.escape(content), + '*TEXT': this.escape(content), }, link: [ this.downLink({href: '/book/fake-link', type: `application/fb2+zip`}) diff --git a/server/core/opds/index.js b/server/core/opds/index.js index bbe6895..a2347d7 100644 --- a/server/core/opds/index.js +++ b/server/core/opds/index.js @@ -11,6 +11,8 @@ const OpensearchPage = require('./OpensearchPage'); const SearchPage = require('./SearchPage'); const SearchHelpPage = require('./SearchHelpPage'); +const log = new (require('../AppLogger'))().log;//singleton + module.exports = function(app, config) { if (!config.opds || !config.opds.enabled) return; @@ -63,10 +65,8 @@ module.exports = function(app, config) { next(); } } catch (e) { + log(LM_ERR, `OPDS: ${e.message}, url: ${req.originalUrl}`); res.status(500).send({error: e.message}); - if (config.branch == 'development') { - console.error({error: e.message, url: req.originalUrl}); - } } };