From 54f82d73f37c8ccd9580275b6a7ce4e8fea0e5d4 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 16 Oct 2022 18:28:24 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 129 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c5842aa..a9d491f 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,12 @@ inpx-web * [Параметры командной строки](#cli) * [Конфигурация](#config) * [Удаленная библиотека](#remotelib) - * Настройка https с помощью nginx -* Сборка проекта -* Разработка + * [Фильтр по аторам и книгам](#filter) + * [Настройка https с помощью nginx](#https) +* [Сборка проекта](#build) +* [Разработка](#development) - + ## Возможности программы - поиск по автору, серии, названию и пр. @@ -37,13 +38,13 @@ inpx-web - мощная оптимизация, хорошая скорость поиска - релизы под Linux и Windows - + ## Использование Поместите приложение `inpx-web` в папку с .inpx-файлом и файлами библиотеки и запустите. По умолчанию сервер будет доступен по адресу http://127.0.0.1:12380 - + ### Параметры командной строки Запустите `inpx-web --help`, чтобы увидеть список опций: @@ -60,7 +61,7 @@ Options: --recreate Принудительно пересоздать поисковую БД при запуске приложения ``` - + ### Конфигурация При первом запуске в рабочей директории будет создан конфигурационный файл `config.json`: @@ -114,7 +115,7 @@ Options: При необходимости, можно настроить нужный параметр в этом файле вручную. Параметры командной строки имеют больший приоритет, чем настройки из `config.json`. - + ### Удаленная библиотека @@ -142,3 +143,123 @@ Options: Пароль не обязателен, но необходим в случае, если сервер тоже "смотрит" в интернет, для ограничения доступа к его веб-интерфесу. При указании `"remoteLib": {...}` настройки командной строки --inpx и --lib-dir игнорируются, т.к. файлы .inpx-индекса и библиотеки используются удаленно. + + + +### Фильтр по аторам и книгам + +При создании поисковой БД во время загрузки и парсинга .inpx-файла, имеется возможность +отфильтровать авторов и книги, задав определенные критерии. Для этого небходимо создать +в рабочей директории (там же, где `config.json`) файл `filter.json` следующего вида: +```json +{ + "info": { + "collection": "Новое название коллекции", + "structure": "", + "version": "1.0.0" + }, + "filter": "(r) => r.del == 0", + "includeAuthors": ["Имя автора 1", "Имя автора 2"], + "excludeAuthors": ["Имя автора"] +} +``` +При создании поисковой БД, авторы и книги из `includeAuthors` будут добавлены, а из `excludeAuthors` исключены. +Использование совместно `includeAuthors` и `excludeAuthors` имеет мало смысла, поэтому для включения +определенных авторов можно использовать только `includeAuthors`: +```json +{ + "info": { + "collection": "Новое название коллекции" + }, + "includeAuthors": ["Имя автора 1", "Имя автора 2"] +} +``` +Для исключения: +```json +{ + "info": { + "collection": "Новое название коллекции" + }, + "excludeAuthors": ["Имя автора 1", "Имя автора 2"] +} +``` + +Параметр `filter` используется для более гибкой фильтрации по атрибутам записей из .inpx. +Уберем все записи, помеченные как удаленные и исключим "Имя автора 1": +```json +{ + "info": { + "collection": "Новое название коллекции" + }, + "filter": "(inpxRec) => inpxRec.del == 0", + "excludeAuthors": ["Имя автора 1"] +} +``` +Использование `filter` небезопасно, т.к. позволяет выполнить произвольный js-код внутри программы, +поэтому запуск приложения в этом случае должен сопровождаться дополнительным параметром командной строки `--unsafe-filter`. +Названия атрибутов inpxRec соответствуют названиям в нижнем регистре из структуры structure.info в .inpx-файле. + + +### Настройка https с помощью nginx +Проще всего настроить https с помощью certbot и проксирования в nginx (пример для debian-based linux): + +```sh +#ставим nginx +sudo apt install nginx +``` +``` +#правим конфиг nginx +server { + listen 80; + server_name <имя сервера>; + set $inpx_web http://127.0.0.1:12380; + + client_max_body_size 512m; + proxy_read_timeout 1h; + + location / { + proxy_pass $inpx_web; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } +} +``` +```sh +#загружаем новый конфиг +sudo service nginx reload +``` +Далее следовать инструкции установки https://certbot.eff.org/instructions?ws=nginx&os=debianbuster + + + +### Сборка проекта +Сборка только в среде Linux. +Необходима версия node.js не ниже 16. + +```sh +git clone https://github.com/bookpauk/inpx-web +cd inpx-web +npm i +``` + +#### Для платформы Windows +```sh +npm run build:win +``` + +#### Для платформы Linux +```sh +npm run build:linux +``` + +Результат сборки будет доступен в каталоге `dist/linux|win` в виде исполнимого (standalone) файла. + + + +### Разработка +```sh +npm run dev +``` + +Связаться с автором проекта: [bookpauk@gmail.com](mailto:bookpauk@gmail.com) \ No newline at end of file