Децентрализация-2

Перекатить тему
Предыдущий: >>11285
Продолжаем обсуждение децентрализации борды.
Ответы: >>20177, >>27716
>>12077
Ну дык антивайп включается, чтобы дать возможность админу разобраться с нарушителем. Это не панацея.
Ответы: >>12080
>>12079
На обычной борде да. А на анонимной распределённой? Где у всех постеров один айпи и других параметров их различить нет?
Ответы: >>12081
>>12080
Точно так же. Просто у админа меньше шансов разобраться :3
Ответы: >>12082
>>12081
Как так же? Забанить всех?
Ответы: >>12083, >>12087, >>12088
>>12082
Антивайп работает так же. А что делать с нарушителем – это уже дело админа. Можно посмотреть на то, каким текстом вайпается, а добавить его в чёрный список (если вдруг кулхацкер не смотрит на результат, а запустил и ушёл).
>>12082
По принципу "Не нравится – не ешь". Оператор каждой ноды фильтрует сам.
Ответы: >>12088
>>12082
>>12087
На самом деле "забанить всех" иногда тоже может быть выходом. В условиях DDoS'а пул может принять решение закрыть ту ноду, на которую идёт атака. Если это поможет остальным, конечно.
Кстати, ноды ж между собой синхронизируются? То есть я могу один месадж во все потоки заливать сразу на все ноды?
Ответы: >>12090
>>12089
Ты сейчас про какой протокол говоришь?
Ответы: >>12091
>>12090
Распределённый.
Я ведь могу подключиться к разным нодам и на каждую, к которой подключился, заливать мессадж так, как будто это новый. Каждая нода будет считать что я отправил одно сообщение, но после синхронизации их получится, к примеру, двадцать.
Ответы: >>12092
>>12091
Распределённый.
Ты про борду или битмесседж?
Я ведь могу подключиться к разным нодам и на каждую, к которой подключился, заливать мессадж так, как будто это новый. Каждая нода будет считать что я отправил одно сообщение, но после синхронизации их получится, к примеру, двадцать.
Можешь. Операторы нод в пуле (которые синхронизируются полностью) обсудят это и примут решение тебя коллективно забанить. А если мы говорим не про пул, а просто про ноды, которые друг о друге знают плохо, то они просто заблокируют друг друга за вродоносную информацию, а дальше будут разборки между операторами.
Ответы: >>12093
>>12092
Ты про борду или битмесседж?
Про борду. В битмессадже это само по себе так работает.
обсудят это и примут решение тебя коллективно забанить.
Но борда ж анонимная. И в прошлом треде я видел что "нода ведь в i2p". И как они забанят тогда, если айпи у меня 127.0.0.1?
то они просто заблокируют друг друга за вродоносную информацию, а дальше будут разборки между операторами.
Звучит здорово. Мне нравится. Получается можно систему вывести из строя.
Ответы: >>12094
>>12093
Но борда ж анонимная. И в прошлом треде я видел что "нода ведь в i2p". И как они забанят тогда, если айпи у меня 127.0.0.1?
В протоколе нигде не сказано, что борда анонимная. Мы оговариваем только синхронизацию, локально борда может быть чем угодно и какой угодно, хоть форумом с регистрацией. Что делать с гадёнышами в i2p, решать оператором.
Получается можно систему вывести из строя.
1. Любую систему можно вывести из строя, вопрос в сложности сегод действия.
2. Ещё раз повторюсь, протокола синхронизации это не касается. Мы только обеспечиваем обмен данными, но не модерацию, анонимизацию, шифрование и прочее ништяки. Всё это решается на других уровнях и другими протоколами и механизмами.
Ответы: >>12102
Ныне это выглядит так :3
Пока в обработчиках запросов подписей нет, но сами запросы работают и тестами покрыты
Ответы: >>12096, >>12098
>>12095
Возможно ключ целиком не нужно показывать, достаточно первые несколько символов и многоточие, а ключ отображать в tooltip для любопытных (или как-то через js раскрывать по клику, хз.
Ответы: >>12099
>>12095
Для тех, кто не читал предыдущее обсуждение. Данная надпись означает, что сообщение получено от некоего узла с ключом таким-то, тип ключа ecdsa, и на узле-источнике имеет порядковый номер такой-то. Пока что ecdsa это единственный реализованный тип ключа, но ничего не мешает добавить другие (правда, абстракция там кривая, надо сделать с наследованием нормально). Ключ будет отображаться на борде, чтобы желающие могли видеть, что откуда пришло, и добавлять себе в источники для синхронизации узлы, с которых больше всего "интересностей".
>>12096
Можно сделать алерт с готовым <id> для запроса, по клику.
Ответы: >>12103
>>12094
Мы оговариваем только синхронизацию, локально борда может быть чем угодно и какой угодно, хоть форумом с регистрацией
Я тогда видимо вообще не врубился про что тред. Ладно.
Диаспору смотрели, кстати говоря?
Ответы: >>12104
>>12099
Или как на псевдочане, сделать ссылку на полный xml поста.
>>12102
Диаспору смотрели, кстати говоря?
Хороший вопрос. Протокол не смотрели, надо поискать.
От идеи сохранять с постом ссылки на предыдущие и следующие пришлось отказаться. Причина – эти штуки учитываются при подписывании поста, а чужие посты нельзя изменять локально (чтобы не повредить подпись). Т.о. даже если на них добавляются ответы, нельзя добавлять их в XML. К тому же, обе ссылки можно получить из самих постов и нет смысла дублировать эту информацию.
Так же, отказался от времени изменения. Аналогично для чужих постов его менять нельзя, а для своих состояние "пост изменился" можно определить по изменению контента и/или подписи.
Ответы: >>12116, >>12117
>>12114
*также
>>12114
Вот теперь можно было бы в принципе использовать и NNTP, если бы в этом был какой-то профит и я бы знал, что там с множественными подписями.
ВНЕЗАПНО обнаружил, что перед отдачей текстов постов на другой узел надо заменять локальные ссылки глобальными. Ну и наоборот, надо парсить глобальные в локальные при получении.
Ответы: >>12175, >>12185
>>12174
Теперь сложнее всего разобраться, что делать с постами, которые отвечают на посты, которые ещё не загружены. Добавлять очередь из (ожидающий пост, ожидаемый пост) в отдельной таблице?
>>12174
парсить глобальные в локальные
Тут я уже запутался. Заменять текст нельзя, будет нарушена подпись. Будут заменяться только отрендеренные ссылки.
Смержил эту ветку с дефолтной. Теперь можно продолжать работать.
Ответы: >>14657
>>14656
Также немного изменил структуру поста для синхронизации. Теперь ID треда для постов будет отдаваться в глобальной форме. До этого в примерах была старая глобальная (ключ/номер), а в коде локальная (номер).
Пока остаётся вопрос, что делать с постами, созданными до создания первого ключа. Наверное, при создании ключа нужно присваивать его всем существующим постам.
Так. Сделал запрос и ответ конкретных постов. Пока не сохраняю их, поскольку надо придумать, что делать с частичными данными (например куда девать ответ, если ОП ещё не получили). Также ещё не сделал замену ссылок на посты в теле поста (при синхронизации ссылки на посты должны превращаться в глобальные, а при импорте наоборот – для наглядности).
Надо организовать описание в виде доков по типу RFC на каждый запрос протокола.
Ответы: >>20235
>>20179
Собсно сабж-заголовок
Ответы: >>20236
>>20235
Хм, имеющаяся дока и так вроде наглядно описывает. Я погорячился. Нужно просто её сделать более подробной.
https://bitbucket.org/neko259/neboard/src/92159bcb3ce85758a39f47dc596d6180e67b5eae/docs/sync.markdown?at=decentral
Ответы: >>20237
>>20236
https://bitbucket.org/neko259/neboard/src/d679decc9ebf2680b853778b8b8014632f62b15a/docs/sync.markdown?at=decentral
Это чуть более новая. По ходу дела буду дописывать дальше. Как минимум надо расписать, из чего состоят запросы и ответы, а также присвоить документам номера и версии.
Ответы: >>20238
>>20237
Засунул всё в одну доку пока, это основные данные по протоколу: https://bitbucket.org/neko259/neboard/src/762bb5078ec527226a73a8295e1225f4dbc581de/docs/dip-1.markdown?at=decentral
Протокол назовём Data Interchange Protocol. В DIP-2 будут описания, специфичные для постов (фильтры, поля и прочее). Комментарии приветствуются.
Ответы: >>20758
>>20238
https://bitbucket.org/neko259/neboard/src/4961f75de9da702a2126d4074578b692ca4b52bc/docs/dip-1.markdown?at=decentral
https://bitbucket.org/neko259/neboard/src/4961f75de9da702a2126d4074578b692ca4b52bc/docs/dip-2.markdown?at=decentral
актуальные линки…
если я правильно понял, то там не оговариваются лимиты на размер сообщений, частоту сообщений
и в протоколе самом нет такой возможности - "запросить политику обмена информацией"
Ответы: >>20760
>>20758
>если я правильно понял, то там не оговариваются лимиты на размер сообщений, частоту сообщений
Да. Поскольку это f2f, считается что узлы знают друг друга и могут оговорить политику отдельно.
Ответы: >>20773
>>20760
а какже рекомедации к "здравому смыслу" ?
и прочие "бла-бла"
Сделал конвертацию локальных ссылок в глобальные при генерации XML поста. Также смержил с дефолтной веткой и всеми свежими изменениями из неё.
Импорт простого поста (в новом треде, без рефлинков, без мультитреда, тегов и картинок) работает.
Добавил проверку подписей при импорте поста.
Сейчас осталось:
* Загружать картинки (через b64 или напрямую по ссылке).
* Писать и парсить в ОП теги.
* Сохранять порядок обработки постов с рефлинками и ответов в треды. Т.е. ответы нельзя сохранять раньше ОП, и нежелательно сохранять ответы на пост (рефлинк) раньше поста, на который он отвечает (либо можно, но тогда надо при загрузке отвечаемого поста найти все ответы и поцеплять к ним связи).
Также всё это не тестировалось вживую, а только на юниттестах. Нужно будет организовать два тестовых сервера и активно посинкать данные между ними.
Вопрос всем: есть тут желающие поднять резервный сервер, когда я закончу с синхронизацией? Можно i2p-only, можно в клирнете. Главное условие – договориться о политике модерации, и держать сервер всегда работающим.
Ответы: >>22583, >>22584
>>22555
Почему бы и нет? Если готов пояснять за установку (в случае возникновения проблем и т.д.) - оставляй свои контакты здесь.
>>22555
>договориться о политике модерации
Пахнет фашизмом. Зачем это делать? Разве вся суть децентрализации заключается не в том, что на каждой из нод правит свой африканский царёк с безумными правилами, и все вынуждены с этим мириться, потому что сами согласились на децентрализацию?
Ответы: >>22585, >>22586
>>22584
Это всё напоминает мне ситуацию с overchan'ом. Когда через русскоязычную ноду (хиддач) в сети начал появляться спам (в i2p, ога), владельцы почти всех прочих нод попросту заблокировали её! И зачем же тогда нужна децентрализация, если каждый может легко отрезать чью-то другую ноду от своей, а если это сделает множество людей, то и практически от всей сети?
>>22584
А как ты предлагаешь синхронизировать тред, в котором половина постов противоречит политике данной борды? Удалять их и оставить половину треда? Тогда контекст потеряется.
Пока а планах фильтрация по тегам тредов, но не постов внутри одного треда.
Ответы: >>22676
Добавил парсинг и вывод тегов для ОП. Пока вывод поста выглядит так:
Global ID: ecdsa::bBkbwIH532svRWjKE9v9GR8d692Dv32LQTAJQrNVXZJbyw24o1+AqTb2aZ4YCYaZ::51
XML: <response><status>success</status><models><model name="post"><content><id key="bBkbwIH532svRWjKE9v9GR8d692Dv32LQTAJQrNVXZJbyw24o1+AqTb2aZ4YCYaZ" local-id="51" type="ecdsa" /><title /><text>[post]ecdsa::bBkbwIH532svRWjKE9v9GR8d692Dv32LQTAJQrNVXZJbyw24o1+AqTb2aZ4YCYaZ::50[/post]
gfd dgf</text><thread><id key="bBkbwIH532svRWjKE9v9GR8d692Dv32LQTAJQrNVXZJbyw24o1+AqTb2aZ4YCYaZ" local-id="32" type="ecdsa" /></thread><pub-time>2015-07-08 12:34:33.378164+00:00</pub-time></content><signatures><signature key="bBkbwIH532svRWjKE9v9GR8d692Dv32LQTAJQrNVXZJbyw24o1+AqTb2aZ4YCYaZ" type="ecdsa" value="06HKmlKAKTJUgvYTSm9bDqI6dISvHqDWB/Hm60YyMoOlNRuhFF7ZG93cJUkwG8OO" /></signatures></model></models></response>
>>22586
было бы хорошо добавить возможность скрывать посты владельцам нод. Т.е. на ноде X запостили пост Y, но администрации ноды Z это не понравилось, они скрыли посты и в итоге на ноде Z не видно Y, но на других нодах этот пост можно найти. Не знаю, насколько сложно это будет реализовать, но это наигуманнейшее решение, ИМХО.
Ответы: >>22677, >>22678
>>22676
Алсо, почему у первого треда на главной отображается 4 последних сообщения вместо трёх?
Ответы: >>22679, >>22688
>>22676
Локально скрывать можно что угодно, это к синхронизации не имеет никакого отношения.
>>22677
Где? У меня 3 сообщения везде.
Ответы: >>22680
>>22679
Оу, точно…
Ответы: >>22682
>>22680
Оно как-то меняется. То 3, то 4, и на разных тредах. Доберусь до сервера – перезапущу.
Ответы: >>22686
>>22682
Возможно, это связано с кэшем…
Добавил сохранение подписей при импорте чужого поста.
Даже пока нет полного импорта, можно попробовать запилить федерализацию. Показывать тред, посты которого будут через js собираться с разных серверов.
Добавил реализацию pull. Можно загружать список всех постов (пока без фильтрации).
Тут были желающие поднять второй тестовый сервер. Прошу начать работу сейчас. Стягиваете из ветки decentral, запускаете и сообщаете IP и порт сюда.
Ответы: >>26162
>>26161
Если кто-то собирается этим заняться, сообщите мне с трипкодом.
Ответы: >>26178
>>26162
Вам вместе сообщать или по отдельности?
Ответы: >>26180
>>26178
Кому нам, братишка? Я один здесь сижу.
Ответы: >>26182
>>26180
А трипкод?
Ответы: >>26183
>>26182
Что трипкод? Ты – тот, кто поднимает сервер. Ты создаёшь трипкод и общаемся с ним, чтобы никто не смог выдать себя за тебя.
Ответы: >>26187
>>26183
>Ты – тот, кто поднимает сервер
А карандаш из-под него кто доставать будет?
>и общаемся с ним
Да вы тут коллективно поехавшие, уже с трипкодами общаетесь? Всё, я валю с неборды.
Ответы: >>26191
>>26187
>уже с трипкодами общаетесь?
Трипкоды нужны для тредов, где важно различать друг друга. Например, для этого.
Ответы: >>26197
>>26191
Ты ж прокачивал мегаскилл различения анонимусов, и всё напрасно?
Ответы: >>26431
>>26197
Мегаскилл не идеален. В тредах вроде этого нужна 99% гарантия.
Ответы: >>26440
>>26431
То есть твой мегаскилл бесполезен и анонимность не нужна?
Ответы: >>30054
>>29555
Кто-нибудь его поднимал? Где можно потыкать тестовый сервер?
Ну что, у кого-нибудь появилось желание попробовать синхронизацию борд?
Ответы: >>30117
>>30112
Яб попробовал, напиши инструкцию по поднятию.
Ответы: >>30118
>>30117
Стягиваешь сервер с https://bitbucket.org/neko259/neboard. Переключаешься на ветку decentral (hg up decentral). Делаешь python3 manage.py migrate, python3 manage.py generate_keypair, python3 manage.py createsuperuser (задаёшь логин-пароль админа для себя). python3 manage.py runserver адрес порт. Дальше заходишь в админку и создаёшь хотя бы один required тег, создаёшь треды с ним.
Ответы: >>30119
>>30118
ОК, завтра попробую.
Ответы: >>30126
>>30119
Я там поправил парочку багов. Тебе нужно будет обновиться, если уже склонировался.
Ответы: >>30137
Что я вижу на данный момент:
* нужно сначала подгружать ОП, а потом ответы
* есть проблема с верификацией подписей на некоторых постах (пока не могу понять почему)
* не реализована загрузка файлов и картинок (хотя бы текст для начала заставить работать)
>>30126
А какие модули нужно будет установить?
Ответы: >>30139
Там есть requirements.txt, в нём все модули перечислены.
Ответы: >>30139, >>30141
>>30138
ImportError: No module named django.core.management
Ответы: >>30142, >>30144
>>30141
Ну, и что дальше?
Ответы: >>30143
>>30142
В общем, слишком много проблем с этой вашей небордочкой, тестируйте её сами.
>>30141
Версия джанги какая?
Ответы: >>30150
>>30144
Я не могу писать на борду и какать одновременно!
Ответы: >>30151
>>30150
Точнее, писать могу, но вот определять версию джанги – нет.