
Parley: ფედერაციული ჩატი ჩვეულებრივი IRC კლიენტებისთვის
ღია კოდის პროექტი Parley საშუალებას აძლევს ყველას, საკუთარი დომენისთვის პატარა ჩატ-ინსტანცია გაუშვას და სხვა დომენებთან ხელმოწერილი HTTPS-ით დაიკავშირდეს. ჩვეულებრივი IRC კლიენტები, მაგალითად irssi ან WeeChat, დამატებითი დანამატების გარეშე მუშაობს.
ჩატი ცენტრის გარეშე
ღია კოდის პროექტი Parley ფედერაციული ჩატ-ქსელია, სადაც ყველა ადამიანი ან გუნდი საკუთარი დომენისთვის პატარა ინსტანციას უშვებს და ცენტრალური სერვერი არ არსებობს. მომხმარებლის სახელი ელფოსტის მსგავსია: [email protected] მუშაობს foo.com-ზე, [email protected] კი bar.com-ზე. ინსტანციები ერთმანეთს DNS-ისა და ცნობილი დოკუმენტების მეშვეობით პოულობენ.
Parley მუშაობს irssi, WeeChat და Textual-ის მსგავს კლიენტებთან დანამატების გარეშე: bob დაწერს /msg [email protected] hi და შეტყობინება მიდის, მაშინაც კი, თუ ორი ინსტანცია ერთმანეთს აქამდე არ იცნობდა. ავტორები კოდს მუშა პროტოტიპს უწოდებენ: დიზაინი რეალურ ინსტანციაზე მუშაობს, თუმცა სისტემა ჯერ არ არის გამაგრებული. ის Go ენაზეა დაწერილი და MIT ლიცენზიით ვრცელდება.
როგორ მუშაობს ფედერაცია
ძიება DNS-იდან იწყება: SRV ჩანაწერი დომენს ინსტანციაზე მიუთითებს, ხოლო დომენის well-known დოკუმენტი აქვეყნებს ed25519 საჯარო გასაღებსა და inbox-ის მისამართს. ყოველი მოვლენა JSON დოკუმენტია HTTP სათაურებში ჩადებული ed25519 ხელმოწერით, რომელიც მეორე მხარის /inbox-ზე იგზავნება. მიმღები ხელმოწერას იმ გასაღებით ამოწმებს, რომელიც თავად აღმოაჩინა, ამიტომ ფედერაცია ღიაა. ახალ დომენზე მიწერისას ორი ინსტანცია თავისით უკავშირდება ერთმანეთს და ნაცნობ მეზობლებს უზიარებს, ასე ქსელი კონფიგურაციის გარეშე იქმნება.
არხები, ისტორია და მოდერაცია
#dev გლობალური არხია: ის ყველა დაკავშირებულ ინსტანციაზე კოპირდება და არავის ეკუთვნის, ამიტომ არც თემა აქვს და არც ოპერატორები. ¬es ლოკალურია, ინსტანციიდან არასდროს გადის და ერთადერთი ადგილია, სადაც თემა არსებობს. გლობალურ არხს მფლობელი არ ჰყავს, ამიტომ იქიდან ვერავის გააძევებ და /ban ნიღბის მიხედვით მოქმედ ბლოკსიად იქცევა: ერთი ადამიანის ნიღაბი მომხმარებელს ბლოკავს, დომენის ნიღაბი კი მთელ ინსტანციას. ისტორია SQLite-ში ინახება სრულტექსტური ინდექსით, parleyctl search-ით ძიება შესაძლებელია, გათიშვის შემდეგ კი ინსტანცია გამოტოვებულ შეტყობინებებს თავისით იბრუნებს.
ინსტანციის გაშვება და შეზღუდვები
გასაშვებად საკმარისია Docker-ის იმიჯი prologic/parley: მონაცემთა საქაღალდეში ინახება იდენტობის გასაღები, ბაზები და ანგარიშები, კონფიგურაციის ფაილი კი არ არსებობს. ანგარიშები იქმნება parleyctl-ით, ადმინის გვერდიდან ან OpenID Connect-ის მეშვეობით. v0.6.0-ში დაემატა სიხშირის ლიმიტი: წამში ერთი შეტყობინება და ერთდროულად 20, ბოტები გამონაკლისია. ავტორები ხარვეზებს ღიად ასახელებენ: გასაღები ინსტანციის დონეზეა და არა მომხმარებლის, end-to-end შიფრაცია არ არსებობს, არხის რეჟიმები და ოპერატორები არ არის, ვებ-ჩატი კი შეგნებულად არ არის.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.