From d6ee223414fe4f23405546481de49871c1c049ab Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 16 Oct 2022 17:25:09 +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 | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 143 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e1998b7..c5842aa 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,144 @@ -# inpx-web +inpx-web +======== -Веб-сервер для поиска по inpx-коллекции. +Веб-сервер для поиска по .inpx-коллекции. +Выглядит это так: https://lib.omnireader.ru + +.inpx - индексный файл для импорта\экспорта информации из базы данных сетевых библиотек +в базу каталогизатора [MyHomeLib](https://alex80.github.io/mhl/) +или [freeLib](http://sourceforge.net/projects/freelibdesign) +или [LightLib](https://lightlib.azurewebsites.net) + +Просто поместите приложение `inpx-web` в папку с .inpx-файлом и файлами библиотеки (zip-архивами) и запустите. +Сервер будет доступен по адресу http://127.0.0.1:12380 + +После открытия веб-приложения в бразуере, для быстрого понимания того, как работает поиск, воспользуйтесь памяткой (кнопка со знаком вопроса). + +## +* [Возможности программы](#capabilities) +* [Использование](#usage) + * [Параметры командной строки](#cli) + * [Конфигурация](#config) + * [Удаленная библиотека](#remotelib) + * Настройка https с помощью nginx +* Сборка проекта +* Разработка + + + +## Возможности программы +- поиск по автору, серии, названию и пр. +- скачивание книги, копирование ссылки или открытие в читалке +- возможность указать рабочий каталог при запуске, а также расположение .inpx и файлов библиотеки +- ограничение доступа по паролю +- работа в режиме "удаленная библиотека" +- фильтр авторов и книг при создании поисковой БД для создания своей коллекции "на лету" +- подхват изменений .inpx-файла (периодическая проверка), автоматическое пересоздание поисковой БД +- мощная оптимизация, хорошая скорость поиска +- релизы под Linux и Windows + + + +## Использование +Поместите приложение `inpx-web` в папку с .inpx-файлом и файлами библиотеки и запустите. +По умолчанию сервер будет доступен по адресу http://127.0.0.1:12380 + + + +### Параметры командной строки +Запустите `inpx-web --help`, чтобы увидеть список опций: +```console +Usage: inpx-web [options] + +Options: + --help Показать опции командной строки + --host= Задать имя хоста для веб сервера, по умолчанию: 0.0.0.0 + --port= Задать порт для веб сервера, по умолчанию: 12380 + --app-dir= Задать рабочую директорию, по умолчанию: /.inpx-web + --lib-dir= Задать директорию библиотеки (с zip-архивами), по умолчанию: там же, где лежит файл приложения + --inpx= Задать путь к файлу .inpx, по умолчанию: тот, что найдется в директории библиотеки + --recreate Принудительно пересоздать поисковую БД при запуске приложения +``` + + + +### Конфигурация +При первом запуске в рабочей директории будет создан конфигурационный файл `config.json`: +```js +{ + // пароль для ограничения доступа к веб-интерфейсу сервера + "accessPassword": "", + + // содержимое кнопки-ссылки (читать), если не задано - кнопка (читать) не показывается + // пример: "https://omnireader.ru/#/reader?url=${DOWNLOAD_LINK}" + // на место ${DOWNLOAD_LINK} будет подставлена ссылка на скачивание файла книги + "bookReadLink": "", + + // включить(true)/выключить(false) журналирование + "loggingEnabled": true, + + // максимальный размер в байтах директории закешированных файлов в <раб.дир>/public/files + // чистка каждый час + "maxFilesDirSize": 1073741824, + + // включить(true)/выключить(false) кеширование запросов на сервере + "queryCacheEnabled": true, + + // периодичность чистки кеша запросов на сервере, в минутах + "cacheCleanInterval": 60, + + // периодичность проверки изменений .inpx-файла + // если файл изменился, поисковая БД будет автоматически пересоздана + "inpxCheckInterval": 60, + + // включить(true)/выключить(false) режим работы с малым количеством физической памяти на машине + // при включении этого режима, количество требуемой для создания БД памяти снижается примерно в 1.5-2 раза + // во столько же раз увеличивается время создания + "lowMemoryMode": false, + + // включить(true)/выключить(false) режим "Удаленная библиотека" (сервер) + "allowRemoteLib": false, + + // включить(Object)/выключить(false) режим "Удаленная библиотека" (клиент) + // подробнее см. раздел "Удаленная библиотека" ниже + "remoteLib": false, + + // настройки веб-сервера + "server": { + "host": "0.0.0.0", + "port": "12380" + } +} +``` + +При необходимости, можно настроить нужный параметр в этом файле вручную. Параметры командной +строки имеют больший приоритет, чем настройки из `config.json`. + + + +### Удаленная библиотека + +В случае, когда необходимо физически разнести веб-интерфейс и библиотеку файлов на разные машины, +приложение может работать в режиме клиент-сервер: веб-интерфейс, поисковый движок и поисковая БД на одной машине (клиент), +а библиотека книг и .inpx-файл на другой (сервер). + +Для этого необходимо развернуть два приложения, первое из которых будет клиентом для второго. + +На сервере правим `config.json`: +``` + "accessPassword": "123456", + "allowRemoteLib": true, +``` + +На клиенте: +``` + "remoteLib": { + "accessPassword": "123456", + "url": "ws://server.host:12380" + }, +``` + +Если сервер работает по протоколу `http://`, то указываем протокол `ws://`, а для `https://` соответственно `wss://`. +Пароль не обязателен, но необходим в случае, если сервер тоже "смотрит" в интернет, для ограничения доступа к его веб-интерфесу. +При указании `"remoteLib": {...}` настройки командной строки --inpx и --lib-dir игнорируются, +т.к. файлы .inpx-индекса и библиотеки используются удаленно.