inpx-web ======== Веб-сервер для поиска по .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-индекса и библиотеки используются удаленно.