Назад
Parley: федеративний чат на звичайному IRC
SiTech AI Team2 წთ. საკითხავი

Parley: федеративний чат на звичайному IRC

Відкритий проєкт Parley дозволяє будь-кому запустити невеликий чат-інстанс для свого домену та з'єднатися з іншими через підписаний HTTPS. Звичайні IRC-клієнти, зокрема irssi або WeeChat, працюють без плагінів.

Чат без центру

Parley це федеративна чатова мережа з відкритим кодом, у якій кожна людина або команда запускає невеликий інстанс для свого домену. Ідентифікатори схожі на електронну пошту: [email protected] працює на foo.com, а [email protected] на bar.com. Інстанси знаходять один одного через DNS та документи ідентичності й показують усю мережу звичайним IRC клієнтам.

Parley працює зі звичайними IRC клієнтами, зокрема irssi, WeeChat і Textual, без плагінів: bob пише /msg [email protected] hi, і повідомлення доходить, навіть якщо два інстанси раніше не чули одне про одного. Автори називають код робочим прототипом: дизайн працює на реальному інстансі, але система ще не загартована. Написано на Go, ліцензія MIT.

Як працює федерація

Пошук починається з DNS: запис SRV _parley._tcp вказує на інстанс, що обслуговує домен, а https://chat.example.com/.well-known/parley/instance.json публікує публічний ключ ed25519 та адресу inbox. Кожна подія це JSON документ із відокремленим підписом ed25519 у заголовках, який надсилається на /inbox партнера, а отримувач перевіряє його тим ключем, який знайшов сам, тому федерація відкрита. Варто написати комусь на новому домені, і два інстанси з'єднуються самі та обмінюються відомими вузлами, тож мережа будується без налаштувань.

Приватна розмова між двома федеративними інстансами в irssi

Канали, історія та модерація

#dev глобальний: він копіюється на кожен пов'язаний інстанс і нікому не належить, тому не має ні теми, ні операторів; ¬es локальний, ніколи не залишає інстанс і є єдиним місцем, де тема існує. Оскільки глобальний канал нікому не належить, вигнати з нього нікого не можна, тому /ban стає чорним списком за маскою: /ban *!*@example.com блокує цілий інстанс. Історія зберігається на кожному інстансі в SQLite з повнотекстовим індексом, пошук працює через parleyctl search, а після перерви інстанс сам довантажує пропущене.

Обидва користувачі в глобальному каналі #lobby

Запуск інстансу та обмеження

Для запуску достатньо контейнера з образу prologic/parley: у каталозі даних зберігаються ключ ідентичності, бази та акаунти, а файлу конфігурації немає. Акаунти створюють через parleyctl, адмін-сторінку або єдиний вхід через OpenID Connect. У версії 0.6.0 додано обмеження частоти: одне повідомлення на секунду та 20 одночасно, боти виключені. Автори відкрито перелічують недоліки: ключі лише на рівні інстансу, наскрізного шифрування немає, режимів і операторів каналів не існує, а веб-клієнта для чату свідомо не роблять.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.