Selaa lähdekoodia

Редактирование readme

Book Pauk 2 vuotta sitten
vanhempi
commit
54f82d73f3
1 muutettua tiedostoa jossa 129 lisäystä ja 8 poistoa
  1. 129 8
      README.md

+ 129 - 8
README.md

@@ -20,11 +20,12 @@ inpx-web
     * [Параметры командной строки](#cli)
     * [Конфигурация](#config)
     * [Удаленная библиотека](#remotelib)
-    * Настройка https с помощью nginx
-* Сборка проекта
-* Разработка
+    * [Фильтр по аторам и книгам](#filter)
+    * [Настройка https с помощью nginx](#https)
+* [Сборка проекта](#build)
+* [Разработка](#development)
 
-<a name="capabilities" />
+<a id="capabilities" />
 
 ## Возможности программы
 - поиск по автору, серии, названию и пр.
@@ -37,13 +38,13 @@ inpx-web
 - мощная оптимизация, хорошая скорость поиска
 - релизы под Linux и Windows
 
-<a name="#usage" />
+<a id="usage" />
 
 ## Использование
 Поместите приложение `inpx-web` в папку с .inpx-файлом и файлами библиотеки и запустите.
 По умолчанию сервер будет доступен по адресу http://127.0.0.1:12380
 
-<a name="#cli" />
+<a id="cli" />
 
 ### Параметры командной строки
 Запустите `inpx-web --help`, чтобы увидеть список опций:
@@ -60,7 +61,7 @@ Options:
   --recreate          Принудительно пересоздать поисковую БД при запуске приложения
 ```
 
-<a name="#config" />
+<a id="config" />
 
 ### Конфигурация
 При первом запуске в рабочей директории будет создан конфигурационный файл `config.json`:
@@ -114,7 +115,7 @@ Options:
 При необходимости, можно настроить нужный параметр в этом файле вручную. Параметры командной
 строки имеют больший приоритет, чем настройки из `config.json`.
 
-<a name="#remotelib" />
+<a id="remotelib" />
 
 ### Удаленная библиотека
 
@@ -142,3 +143,123 @@ Options:
 Пароль не обязателен, но необходим в случае, если сервер тоже "смотрит" в интернет, для ограничения доступа к его веб-интерфесу.
 При указании `"remoteLib": {...}` настройки командной строки --inpx и --lib-dir игнорируются,
 т.к. файлы .inpx-индекса и библиотеки используются удаленно.
+
+<a id="filter" />
+
+### Фильтр по аторам и книгам
+
+При создании поисковой БД во время загрузки и парсинга .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-файле.
+<a id="https" />
+
+### Настройка 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
+
+<a id="build" />
+
+### Сборка проекта
+Сборка только в среде 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) файла.
+
+<a id="development" />
+
+### Разработка
+```sh
+npm run dev
+```
+
+Связаться с автором проекта: [bookpauk@gmail.com](mailto:bookpauk@gmail.com)