LINUX.ORG.RU

Nastene 0.7 — простая распределённая система сообщений

 , , , ,


5

5

Nastene (она же ii) — это распределённая система сообщений, максимально упрощённое фидо. Операция идёт с двумя объёктами. Объект сообщение это сообщение. Объект эха это именованный список сообщений. Станции по заданному заранее роутингу скачивают с других станций списки, потом забирают те сообщения, которых у них нет. Пойнты пишут сообщения на станции (в веб-интерфейсе или клиентом). Всё, это весь обмен и вся структура сети.

Nastene 0.7 и есть станция. Написана на Python 3 и работает на текстовых файлах.

О роутинге. С помощью list.txt и питоньей скриптоты можно легко обеспечить режим «все обмениваются всем со всеми», но как показывает практика, у разных станций разные списки эх. Так и было задумано. Обычно в сети есть какая-нибудь станция-архив, которая скачивает все сообщения со всех станций.

Есть lite-интерфейс (поддерживает, например win95/ie4+), создана эха retro.talks.

Изначальная цель проекта — ведение маленьких, но дружных сообществ (когда трафика мало, формат эх позволяет больше вовлекаться в обсуждения). Или распределённый мини-твиттер. Проекту более 10 лет, но до сих пор сохранилось много сообщений многолетней давности с сайтов, которых уже давным давно нет. Что написано в ii, не вырубишь топором. Благодаря этому из двух уже давно умерших сайтов и эх воссоздана эха retro.talks.

Изменения (фактически, это изменения с версией 2014 года):

  • Вместо Foundation (где куча css и js файлов) используется chota css (один css-файлик). Светлая и тёмная темы. Иконочный шрифт удалён. Для тех, кому и это слишком тяжело, есть lite-интерфейс.
  • Введение тэга topicid для отслеживания цепочек (даже если какая-то часть сообщений потерялась).

Это всё так же базовая реализация протокола, следующую версию можно выпустить ещё лет через 10.

P.S. Korovan-free product

>>> Подробности

★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 7)
Ответ на: комментарий от macrohard

А для конечного юзера тоже просто - ты регаешься на станции, пишешь сообщения, и когда этот сайт умрёт, его через 256 лет найдут на других сайтах.

alt-tab-let ★★
() автор топика
Ответ на: комментарий от alt-tab-let

А для конечного юзера тоже просто - ты регаешься на станции, пишешь сообщения, и когда этот сайт умрёт, его через 256 лет найдут на других сайтах.

В чём принципиальное отличие от ZeroNet?

macrohard ★★
()
Ответ на: комментарий от Xintrea

Было бы проще пояснить по хардкору, если бы у меня нода была уже допилена, но щас постараюсь.

Usenet-группы знаешь? Вот ii/idec-эхи — это типа того. Распределённые между нодами рассылки сообщений. За один запрос юзер может запостить только в одну эху через ту ноду, на которой он зарегистрирован. И его адресом будет (имя_ноды, id_юзера). Это чисто чтобы показать источник сообщения в ленте.

Но чтобы только читать эхи, регистрации вообще не нужно. Если между нодами синхронизация налажена, то со временем сообщения, написанные в эху через одну ноду, можно будет прочесть и через другую.

У автора, видимо, улица == имя_ноды, ii-сервер == станция == нода.

rebforce
()
Ответ на: комментарий от macrohard

В чём принципиальное отличие от ZeroNet?

Если ты об этом зеронете, то как минимум в отсутствии криптографических наворотов, мешающих поднять клиента (а то и ноду) на условной амижке, макинтошплюсе или 386-ом.

rebforce
()
Последнее исправление: rebforce (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

простота протокола

Теперь еще нужна простота изложения документации: что из себя представляет Nestene вообще, нахрена оно нужно, и как им пользоваться.

Пока что я вижу, что автор вместо решения этой задачи пытается каждому персонально что-то объяснить. Это бессмысленная затея.

Xintrea ★★★★★
()
Ответ на: комментарий от macrohard

В чём принципиальное отличие от ZeroNet?

в том, что у тебя нода на php хостинге из 27 строк кода. работающая везде и всегда. клиент на 4-х строках shell-кода. это сеть не про технологии, это сеть про распространение

alt-tab-let ★★
() автор топика
Ответ на: комментарий от rebforce

Да, об этом.

в отсутствии криптографических наворотов, мешающих поднять клиента (а то и ноду) на условной амижке, макинтошплюсе или 386-ом.

Ещё вопрос, что дешевле в приобретении и использовании — raspberry pi способная справиться с «криптографическими наворотами» или исправный 386ой.

macrohard ★★
()
Ответ на: комментарий от Xintrea

Автор просто почему-то умолчал, приравняв nastene к ii, что уже 10 лет как существуют ещё альтернативные клиентские и серверные реализации…

Я, например, у шаоса зареган. Скоро перейду на свою ноду вообще. Там веб-интерфейса не будет, но с клиентом всё куда понятнее.

rebforce
()
Ответ на: комментарий от Xintrea

Теперь еще нужна простота изложения документации: что из себя представляет Nestene вообще, нахрена оно нужно, и как им пользоваться.

это объясенено в топике и в первом сообщении. а вообще, это объяснено в 2014 году.

Пока что я вижу, что автор вместо решения этой задачи

задача тоже решена ещё в 2014 году. и что тогда автор предполагал, сейчас становится более актуальным. вообще, это нормально когда кто-то что-то не понимает, но я думаю, я достаточно понятно объяснил суть сети, которая занимает две строчки. самый простой пример это git (и да, git это тоже нормальный транспорт для сети, две станции могут обмениваться, используя только git)

это юзерфрендли, когда ты пойнт (пишешь на станцию и всё, вообще не задумываешься). когда ты сисоп, это уже сисоп-френдли

alt-tab-let ★★
() автор топика
Ответ на: комментарий от macrohard

Ещё вопрос, что дешевле в приобретении и использовании — raspberry pi способная справиться с «криптографическими наворотами» или исправный 386ой.

ещё вопрос, что понятнее - «неубиваемая» сеть со сколько хочешь используемыми хранилищами хоть на текстовых файлах, или непонятный бинарный протокол, в котором непонятно, что где хранится

и вопрос не в дешевизне приобретении, суть вообще не про это. то есть, абсолютно, это разные задачи. nastene не построит тебе инфраструктуру для кликания, а rpi не напишет тебе клиент на турбо вижуал вижн бейсике

alt-tab-let ★★
() автор топика
Ответ на: комментарий от macrohard

Ещё вопрос, что дешевле в приобретении и использовании — raspberry pi способная справиться с «криптографическими наворотами» или исправный 386ой.

Уважаемый, я с raspberry pi сейчас это сообщение отсылаю. Здесь вопрос не в приобретении, а в сохранении уже имеющегося старого и борьбе с потребительством лёгкого поведения и его последствиями в виде e-waste.

Переход на TLS «убил» кучу старых браузеров на 68к-железе, переход на TLSv1.3 «убил» кучу браузеров на кнопочных мобилах, далеко не все из которых можно адекватно пропатчить. А ты крутить блокчейны на клиентах упрощённого аналога юзнета предлагаешь. Ну-ну.

rebforce
()
Ответ на: комментарий от rebforce

Переход на TLS не от скуки произошёл. Смерть старых браузеров на 68к-железе — оправданная жертва. 68к-железки умерли раньше. Современный web — тот ещё монстр, TLS далеко не главный фактор его ожирения.

Существуют Fediverse, ZeroNet, IPFS с примерно похожими задачами. Есть ещё причины появления Nastene кроме «слишком высоких системных требований» аналогов?

macrohard ★★
()
Ответ на: комментарий от macrohard

Переход на TLS не от скуки произошёл.

PGP появился раньше, и когда надо действительно что-то зашифровать от и до, его используют независимо от наличия TLS в транспорте. И с текстовыми форматами PGP вполне себе дружит, в отличие от.

Смерть старых браузеров на 68к-железе — оправданная жертва. 68к-железки умерли раньше.

А у кого-то они до сих пор живут, прикинь. Но ввиду всратости современного веба приходится пользоваться онлайн-шлюзами вроде FrogFind.

Есть ещё причины появления Nastene кроме «слишком высоких системных требований» аналогов?

Причины появления Nastene как серверной реализации мне неизвестны, они известны только её автору. Причины появления самого ii-протокола, насколько я понимаю, в том, что используемые в фидонете протоколы слишком сложны, т.к. бинарны и не были изначально рассчитаны на стек TCP/IP, который за нас уже делает большую часть работы.

rebforce
()
Ответ на: комментарий от macrohard

см. пункт 2. если ты не делал свою bbs на основе максимуса (я ниасилил, я делал на торнаде, вроде на торнадо.фак моё имя идёт первым), то сложно понять, в чём прелесть :)

но вообще я не знаю. я делал сильно упрощённый вариант фидо. за 10 лет он даж не умер. я вернулся и пусть оно дальше работает. идея мне за 10 лет не разонравилась. суть указана в «целях». собственно, всё.

alt-tab-let ★★
() автор топика
Ответ на: комментарий от rebforce

Причины появления Nastene как серверной реализации мне неизвестны, они известны только её автору.

проще выглядит :) и в css реализации, и в lite-реализации

alt-tab-let ★★
() автор топика
Ответ на: комментарий от alt-tab-let

это объясенено в топике и в первом сообщении.

А должно быть объяснено в документации.

а вообще, это объяснено в 2014 году.

И конечно же, пользователь об этом должен просто знать. Заодно он должен знать кем объяснено и где объяснено. Очень удобно по отношению к пользователю.

Xintrea ★★★★★
()
Ответ на: комментарий от alt-tab-let

Нашел в своих старых архивах

═ GUITAR.SONGS (2:5020/68.23) ══════════════════════════════════ GUITAR.SONGS ═
 Msg  : 1 of 140
 From : Sergey Goluboff                     2:5061/24.57    08 Jul 98  22:36:00
 To   : Mike Vinogradov                                     10 Jul 98  04:50:04
 Subj : "По танку вдазило болванкой..."
═══════════════════════════════════════════════════════════════════════════════
┌───---·--───------·-·-··-··-·· · - ·  ·    ·        ·
|   Forvarded :Sergey Goluboff (2:5061/24.57)
·        Area :GUITAR.SONGS (GUITAR.SONGS)
∙        From :Nickolay Adamov, 2:5020/1009.17 (Wednesday March 18 1998 22:10)
|          To :Alexandr Mayorov
│        Subj :"По танку вдазило болванкой..."
└──----·---─────────---──-──-─--─-─--─-----·-·--·· - ·   ·      ·
А почта идет .Уpа PОССИЙСКОЙ почте !!!
Физкульт привет Alexandr , разбудил все-таки.
.....

А если по делу, то ты в gemini space только транслируешь эхи? Писать оттуда как-то можно?

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от Xintrea

И конечно же, пользователь об этом должен просто знать. Заодно он должен знать кем объяснено и где объяснено. Очень удобно по отношению к пользователю.

Да-да, я сам не так давно пытался от автора (-ов) получить предыдущие версии стандарта ii, а в ответ получал от «всё реализовано в нодах/клиентах, читай исходники» до «читай эхи за 2014 год, где они сохранились — не знаю».

Протокол-то хороший, плохо лишь, когда он развивается турбоаутистами. Благо, двое из них недавно из сети отвалились, вот один только остался. Так что адекватов там на самом деле теперь больше (полагаю).

rebforce
()
Ответ на: комментарий от gns

А если по делу, то ты в gemini space только транслируешь эхи? Писать оттуда как-то можно?

Нет, он не хочет это реализовать. У меня можно будет писать через гофер/некс.

rebforce
()
Ответ на: комментарий от Xintrea

Пока что я вижу, что автор вместо решения этой задачи пытается каждому персонально что-то объяснить. Это бессмысленная затея.

Автору может быть не понятно и не очевидно, что именно другим людям не ясно. Ведь автору кажется, что всё предельно просто. Пообщается персонально - может исполнится идеями о том, что писать в документации

Manhunt ★★★★★
()
Ответ на: комментарий от alt-tab-let

но вообще я не знаю. я делал сильно упрощённый вариант фидо

Постоянными отсылками к фидо и к фидошной терминологии ты сужаешь свою аудиторию до дедов, которые успели застать этот самый фидо и освоиться с ним, из которых уже песок сыпется.

Как быть тем, кто только *родился* тогда, когда фидо уже давно было мертво? У тебя есть цель, чтобы эти люди держались от твоего проекта подальше?

Если система действительно проста, то почему бы не подготовить исчерпывающее и ясное её описание, без отсылок к реликтам из прошлого тысячелетия?

Manhunt ★★★★★
()
Ответ на: комментарий от alt-tab-let

это сеть не про технологии, это сеть про распространение

А как решается вопрос с тем, что в сети завелся злоумышленник, который целенаправленно делает гадости? Ни авторство сообщений, ни целостность списков сообщений никак не контролируются?

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

В общем федеративная система обмена сообщениями, на простом текстовом протоколе. Пользователи пишут на ноду на которой зарегистрированы. Ноды периодически обмениваются новыми сообщениями. Каждая нода может хранить какие-то определенные ветки обсуждений или все какие есть. За счет этого на уровне нод обеспечивается хранение истории сети.

ptah_alexs ★★★★★
()
Ответ на: комментарий от Manhunt

Владелец ноды может отключить такого пользователя, а его сообщения удалить из базы сообщений, либо внести в чёрный список исключая из обмена с другими нодами. Если владелец сет не препятствует деятельности такого человека остальные ноды могут исключить эту из обмена сообщениями. Да, всё это делается вручную.

ptah_alexs ★★★★★
()
Ответ на: комментарий от ptah_alexs

Я джве недели уточнял кучу моментов из той спецификации. Здесь более чётко и актуально на сегодняшний день.

rebforce
()
Последнее исправление: rebforce (всего исправлений: 1)

На стенеееееее

Голоса зовуу-уут меняяя-аааа!

MageasteR ★★★★★
()
Ответ на: комментарий от ptah_alexs

А если владелец ноды начнет коверкать чужие сообщения, или коверкать целиком свои реплики чужих баз сообщений (эти реплики ведь потом могут себе ещё какие-то ноды скачать)? Есть какие-то механизмы, чтобы облегчить выявление недобросовестных нод? Обычно-то это на криптографии держится: подписи на отдельно взятых сообщениях, подписи на цепочках сообщений..

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 2)
Ответ на: комментарий от Manhunt

Защиты от такого нет. Насколько я понимаю тут всё держится на доверии и бэкапах). Пользователь отправляет сообщение с паролем который выдал владелец ноды.

ptah_alexs ★★★★★
()
Ответ на: комментарий от Manhunt

Ну по-хорошему ID сообщения назначается нодой-источником и зависит от SHA-2 содержимого (вместе с метаданными). Алгоритм в спецификации есть.

  1. Calculate SHA256 of the message in the Node-to-Point format as binary data.
  2. Calculate Base64 of the resulting binary hash sum.
  3. Truncate to the first 20 characters.
  4. Replace all occurrences of + or - with A, and / or _ with z.
  5. The result of these operations is your ii message ID.

Последнее время всякие «интересные личности» начали редактировать сообщения непосредственно на нодах без обновления ID, но у меня, например, клиент сразу пишет напротив таких сообщений «ID hash mismatch».

rebforce
()
Последнее исправление: rebforce (всего исправлений: 2)
Ответ на: комментарий от rebforce

Ну так МедбратЪ разбился на мотоцикле об березу в лесу (увы, это правда) :( , ЙоЖЪ что-то еще пишет в Пейсбуке, но это все уже так, поциэнты перевелись,

gns ★★★★★
()
Ответ на: комментарий от ptah_alexs

Пользователь отправляет сообщение с паролем который выдал владелец ноды.

Тут ещё одно слабое место.

Шифрование не является обязательным, так что из дампа трафика вполне можно выудить пользовательский auth_string, и начать писать от имени этого пользователя.

А если у атакующего есть возможность сделать MITM, то помимо шифрования нужен ещё способ проконтролировать подлинность контрагента (то, что в приктикуемом сегодня https делается за счет pki - сертификат подписан удостоверяющим центром, и к центру есть доверие).

Ну или надо отказаться от передачи auth_string между машинами:
* как вариант, перейти на какой-нибудь challenge-response;
* как другой вариант, сделать обязательную pgp-подпись на всех сообщениях (подпись не сошлась -> сообщение будет отброшено, auth_string не нужны)

А пока получается, что широкое распространение этого протокола привлечет разного рода «хакеров», которые превратят его использование в ад.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 3)
Ответ на: комментарий от alt-tab-let

10 лет назад уже обсуждали :)

То есть, недавно? ;)

Somebody ★★
()
Ответ на: комментарий от rebforce

Может, это «на стене».

Изнчально я так и прочитал,этим внимание тема и привлекла: Ачего это они там на стене вытворяют??"...

Somebody ★★
()
Ответ на: комментарий от Manhunt

Если.

Насчёт PGP тоже думал, но как-то люди без этого жили и на обычных форумах, и в этом вашем фиде.

Но, кстати, это всё детали реализации: ничто не мешает конкретной ноде сделать auth_string динамической и зависимой от тела сообщения. PGP-подпись или просто хэшировать вместе с паролем — дело десятое. Можно хоть TOTP прикрутить, если так хочется. Главное, чтобы клиент это всё тоже понимал.

rebforce
()
Последнее исправление: rebforce (всего исправлений: 1)
Ответ на: комментарий от mittorn

Ну мы неукоснительно следуем взаимоисключающим параграфам!

gns ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.