Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Фрибис

Python 3.11+ License: MIT

Фрибис — совместимый сервер автоматизации библиотек (по протоколу ИРБИС64) на Python с хранением данных в MongoDB. Реализует проводной TCP-протокол, позволяя штатным клиентам и АРМам работать с ним без каких-либо изменений.

Особенности и возможности

  • Полная совместимость по протоколу: Поддержка регистрации клиентов, полного CRUD для записей с версионированием и блокировками, чтение и запись текстовых и бинарных файлов, управление пользователями и БД.
  • Современное хранилище (MongoDB): Отказ от файловой БД в пользу мощной, масштабируемой и надежной NoSQL базы данных. Инвертированный индекс, учетные записи и метаданные ресурсов хранятся в коллекциях MongoDB.
  • Встроенная миграция: Прямое чтение бинарных MST/XRF файлов оригинального сервера для прозрачного импорта записей, ресурсов и пользователей.

Требования

  • Python 3.11+
  • MongoDB 7.0+
  • Docker и Docker Compose (опционально, для быстрого разворачивания)

Быстрый старт (Docker)

Самый простой способ запустить сервер и базу данных — использовать Docker Compose.

  1. Склонируйте репозиторий:

    git clone https://github.com/Venjer/Fribis.git
    cd freebis
  2. Запустите стек:

    docker-compose up -d

Сервер будет доступен на порту 6666, а MongoDB на порту 27017. В контейнере настроен постоянный volume для базы данных и хранения больших бинарных файлов (изображений, сканов и т.д.).

Учётные данные при первом запуске

Пока коллекция пользователей пуста, сервер блокирует доступ. Для первого входа задайте временный bootstrap-пароль в файле docker-compose.yml, раскомментировав строку:

- IRBIS_BOOTSTRAP_PASSWORD=your_secure_password

Локальная разработка и запуск

Если вы хотите запустить сервер без Docker:

  1. Создайте виртуальное окружение и установите зависимости:

    python -m venv .venv
    .\.venv\Scripts\python -m pip install -e ".[dev]"
  2. Запустите сервер (убедитесь, что локально запущена MongoDB):

    $env:IRBIS_BOOTSTRAP_PASSWORD = "your_secure_password"
    .\.venv\Scripts\irbis-server --host 0.0.0.0 --port 6666 --mongo-db irbis

Миграция существующих данных

Встроенная утилита позволяет напрямую читать файлы старого сервера (*.par, MST/XRF) и импортировать их в MongoDB.

# Пример импорта базы данных IBIS (укажите правильный путь к старой папке сервера)
.\.venv\Scripts\irbis-migrate --old-server C:\Path\To\Old\Server --db IBIS --reindex

Мигратор перенесет записи, текстовые/бинарные ресурсы и автоматически перестроит поисковый словарь.

Архитектура хранения

Данные распределены по коллекциям MongoDB (база irbis):

Коллекция Описание
catalog Список баз данных: максимальный MFN, флаги блокировки
records Сами записи: сырая строка с ^-подполями (как в протоколе), статусы, версии
postings Инвертированный индекс: термины, MFN, теги, вхождения
resources Текстовые ресурсы (PFT/MNU/WS/FST/INI)
blobs Метаданные бинарных ресурсов (сами файлы лежат на диске для оптимизации)
users Учетные записи пользователей

Большие бинарные файлы (сканы, обложки) сохраняются на файловой системе (в папке blobs), чтобы не перегружать БД, а в коллекции blobs остаются только метаданные и sha256 хеши.

Бинарные ресурсы и утилиты

По умолчанию корень бинарных ресурсов blobs/ создается в текущей директории (или определяется переменной IRBIS_BLOB_ROOT). Для работы с ресурсами доступна отдельная CLI-утилита:

# сводка по файлам, проверка целостности, уборка осиротевших файлов
.\.venv\Scripts\irbis-blobs stat
.\.venv\Scripts\irbis-blobs verify --deep
.\.venv\Scripts\irbis-blobs gc            # пробный прогон
.\.venv\Scripts\irbis-blobs gc --apply

Лицензия

Проект распространяется под лицензией MIT.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages