deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (hnrss.org)

Parley: herhangi bir standart IRC istemcisinin katılabildiği, federasyon sohbet ağı

Yeni yayımlanan açık kaynaklı bir proje, alan başına bir sohbet instance'ı çalıştırıyor, imzalı mesajları HTTPS üzerinden federasyonla paylaşıyor ve tüm ağı irssi ve WeeChat gibi standart IRC istemcilerine sunuyor.

Parley: herhangi bir standart IRC istemcisinin katılabildiği, federasyon sohbet ağı

Ne yayımlandı

Merkezi bir otorite olmadan federasyon halinde çalışan ve istemcilere düz IRC konuşan açık kaynaklı sohbet ağı Parley, Hacker News ana sayfasında ortaya çıktı. Projenin README'sine göre her kişi veya ekip kendi alanı için küçük bir instance çalıştırıyor, instance'lar birbirlerini otomatik olarak buluyor ve tüm federe ağ, eklenti gerektirmeden irssi, WeeChat veya Textual gibi sıradan IRC istemcilerine sunuluyor. Proje olgunluk konusunda açık sözlü: mevcut sürüm, tasarımı uçtan uca gösteren çalışan bir kavram kanıtı, ancak yazılım henüz sağlamlaştırılmış değil.

E-posta tarzı kimlikler

Kimlikler e-posta adreslerine benziyor. [email protected] foo.com instance'ında, [email protected] ise bar.com üzerinde yaşıyor; Bob /msg [email protected] hi yazdığında, iki instance daha önce hiç karşılaşmamış olsa bile teslimat çalışıyor. Kullanıcının nick'i yalın yerel parça, instance ise host olduğu için alice, WHO ve WHOIS'ta alice![email protected] olarak görünür ve NAMES'ta görünen her nick doğrudan mesaj gönderülebilecek bir nick'tir.

Keşif, DNS'yi well-known kimlik belgeleriyle birleştiriyor; README bu yaklaşımın Salty IM'yi yansıttığını söylüyor. Bir SRV kaydı olan _parley._tcp.domain, instance'ı gösterirken HTTPS üzerinden sunulan well-known JSON dosyaları instance'ın ed25519 public key'ini ve inbox'unu yayımlıyor ve bireysel kullanıcıların varlığını doğruluyor. Wire formatı depoda ayrı olarak belgelenmiş.

İmzalı HTTPS federasyonu

Federasyon HTTPS üzerinde çalışıyor. Her event, header'larda ayrık bir ed25519 imzasıyla bir peer'ın inbox'ına POST edilen bir JSON belgesi ve alıcı, gönderenin iddia ettiğine güvenmek yerine kendi keşfettiği bir anahtarla doğrulama yapıyor. Peering açıktır: imzası doğrulanan her instance sizinkiyle konuşabilir ve bağlantılı instance'lar tanıdıkları peer'ları birbirine aktarır, böylece yapılandırma olmadan bir mesh oluşur. README akışı adım adım anlatıyor — alıcının SRV kaydının aranması, anahtar keşfi, imzalı bir teslimat ve yabancıya geri gönderilen bir hello, ardından iki taraf kanal listelerini ve peer listelerini takas eder.

IRC katmanı

Parley, modern istemcilerin beklediği IRCv3 uzantılarını uygular: server-time, message-tags, echo-message, multi-prefix ve setname bunlara dahil. TAGMSG, yazıyor göstergeleri gibi yalnızca istemciye ait tag'leri federasyon boyunca taşır, bir mesajdaki tag'ler depolamadan geçer, böylece geçmişten yeniden oynatıldığında bir yanıt hâlâ yanıttır ve draft bir multiline uzantısı, yapıştırılan bir paragrafı sekiz mesaj yerine tek mesaj olarak tutar.

Geçmiş istemciden değil hesabı izler: CHATHISTORY hem kanallarda hem özel mesajlarda sayfalama yapar, bir join kullanıcının henüz görmediği her şeyi yeniden oynatır ve draft bir read-marker hesap üzerinde yaşar, böylece telefonda bir kanalı okundu olarak işaretlemek masaüstünde de temizler. Her instance kanal geçmişini tam metin arama diziniyle birlikte SQLite'ta tutar ve bir kesinti sonrası dönen peer, kaçırdıklarını çeker.

Kanallar iki çeşittir. #dev gibi global kanallar, içinde üyesi olan her bağlantılı instance'a çoğaltılır ve kimse onlara sahip olmadığı için konu ve operatör taşımazlar. & önekiyle başlayan yerel kanallar instance'dan asla çıkmaz ve peer'lara görünmezdir. Moderasyon, sahiplik eksikliğinden doğar: ban komutu maskeye göre bir block list'e dönüşür; tek bir kullanıcıyı veya整个 bir instance'ı kapsar, bir admin'in listesi instance genelindegörse peering'in kendisi bir admin aracıyla yönetilir.

Instance çalıştırma

Proje, örnek bir compose dosyasıyla birlikte prologic/parley container image'ı olarak geliyor; ayrıca CoreDNS'yi, yerel bir sertifika otoritesini ve Docker'da iki instance'ı ayağa kaldıran bir demo var. Hesaplar sunucu çalışırken yönetilir — parleyctl aracıyla, bir admin sayfasıyla, bir HTTP API'siyle veya OpenID Connect ya da reverse-proxy kimlik header'ları üzerinden tek oturum açmayla — ve kullanıcılar istemcileri için IRC token'larını bir ayarlar sayfasından üretir. Yapılandırma dosyası yoktur; süreç düzeyindeki ayarlar flag'lerde ve bunlara karşılık gelen ortam değişkenlerinde yaşar. Bir parleyctl check komutu bir instance'ı bir peer'ın yapacağı gibi yoklar ve eksik bir SRV kaydı gibi hataları rapor eder; README bunu en yaygın arıza olarak tanımlar.

Neden önemli

Metin ve sohbet trafiği büyük ölçüde tek şirketlerin işlettiği merkezi platformlarda toplandı. Parley farklı bir bölünmeyi savunuyor: onlarca yıllık, evrensel olarak desteklenen IRC protokolünü istemciye dönük yüzey olarak tutun ve kimliği, keşfi, kriptografik doğrulamayı ve moderasyonu onun altına yerleştirin. Kullanıcılar hiçbir yeni şey kurmaz, operatörler hiçbir satıcıya bağımlı olmaz ve ağa katılım bir DNS kaydı ile bir TLS sertifikası kadar masraflıdır. Açık federasyon, kavram kanıtının yanıtlamadığı soruları da beraberinde getiriyor — projenin kendisi sağlamlaştırmayı bekleyen bir iş olarak işaret ediyor ve her geçerli imzayı kabul eden peering, ölçekte spam ve istismarı davet ediyor. Yine de, düz IRC ile merkeziyetsiz kimliğin bir arada var olabileceğinin çalıştırılabilir bir gösterimi olarak Parley, federe mesajlaşma tasarlayan herkes için dikkat çekici bir veri noktası.

  • #irc
  • #federation
  • #open-source
  • #messaging
  • #self-hosting

İlgili yazılar