Об этом проекте
slskr — это самостоятельно размещаемый демон на Rust, HTTP API и браузерный интерфейс для одноранговой файлообменной сети Soulseek. Он предназначен для операторов, которым нужен приватный, сценарный клиент Soulseek, работающий локально, на сервере или за собственными границами сервиса. Один процесс `slskr serve` управляет сессией Soulseek, слушателями пиров, индексом общих ресурсов, движком передач, HTTP API, потоком событий и встроенным веб-интерфейсом.
Ключевые возможности:
- **Веб-доступ**: веб-интерфейс на React, обслуживаемый тем же HTTP-слушателем, с поиском, загрузками, выгрузками, комнатами, личными сообщениями, пользователями, контактами, состоянием просмотра, общими ресурсами, коллекциями, интеграциями, элементами управления плеером, статусом конфигурации, телеметрией и состоянием среды выполнения.
- **Поиск и результаты**: поддерживаются глобальные, пользовательские, комнатные и целевые списки желаемого. Результаты включают метаданные пиров, такие как состояние блокировки, доступность слотов, длина очереди, скорость, размер файла и путь. Интерфейс добавляет фильтры, сворачивание дубликатов, скрытых/заблокированных пользователей, историю поиска, заметки для проверки, профили приобретения, панели графа обнаружения и последующие поиски с помощью метаданных.
- **Передачи**: загрузки и выгрузки представлены как принадлежащие демону записи передач с состояниями очереди, запуска, прогресса, завершения, отмены, повтора и сбоя. Поддерживаются локальные проекции на основе файлов для тестов, исходящие загрузки, обслуживание входящих общих файлов, прямые сокеты передачи между пирами, сокеты передачи с обфускацией типа 1, резервный вариант косвенной передачи, поля смещения/возобновления и ограниченная история событий передачи. Ускоренные загрузки могут использовать `POST /api/v0/multisource/swarm` с несколькими источниками, поддерживающими HTTP range, и ожидаемым дайджестом SHA-256. Кратковременные билеты предварительного просмотра пиров и mesh передают аудио в браузер без создания обычной загрузки.
- **Общие ресурсы и просмотр**: корни общих ресурсов индексируются при запуске или по повторному сканированию. Каталог использует виртуальные пути общих ресурсов вместо раскрытия необработанных путей хоста. Операторы могут настраивать обработку скрытых файлов, следование символическим ссылкам, ограничения сканирования и разрешённые направления передачи.
- **Обмен сообщениями, комнаты и пользователи**: отслеживаются беседы личных сообщений, подтверждение сообщений, списки комнат, состояние присоединения/выхода из комнаты, недавние сообщения комнат, отслеживаемые пользователи, статистика пользователей, контакты, заметки и связанный контекст пиров.
- **API и автоматизация**: версионированные маршруты `/api/v0/*` плюс отдельные неверсионированные псевдонимы совместимости. Клиенты API могут использовать bearer-аутентификацию или заголовок `X-API-Key`. Потребители событий могут опрашивать ограниченные записи событий или подписываться на поток событий WebSocket. Предоставлены OpenAPI и подробная документация конечных точек.
- **Интеграции**: включает обработку обратного вызова Spotify OAuth, потоки статуса/желаемого/ручного импорта Lidarr, отчётность о запуске внешнего визуализатора и панели на стороне интерфейса для рабочих процессов библиотеки, источников и рекомендаций.
Настройки безопасности по умолчанию консервативны: HTTP по умолчанию привязывается к `127.0.0.1:5030`, привязки не к loopback требуют хотя бы одного токена API, если аутентификация явно не отключена, изменяющие запросы из браузерного источника проверяются с помощью `Origin`/`Referer`, очищенные ответы конфигурации не возвращают учётные данные, а API общих ресурсов возвращают виртуальные пути, а не необработанные пути хоста.
Ресурсы развёртывания включают примеры systemd, манифесты Kubernetes, правила Prometheus и публичные проверки posture. Проект включает средство сертификации с изоляцией VPN для каждой учётной записи, чтобы обойти ограничение скорости Soulseek по IP, охватывающее 7 фаз и 39 тестовых случаев. Клиентские библиотеки доступны для TypeScript, Python, Go и Rust. Проект лицензирован под AGPL-3.0-only.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.