В сеть попали некорректные сообщения в эху oldpc.51t.ru. Моё расследование показало, что эта эха есть только у hugeping и shaos.
Проблем тут две. Почти всегда в сети была станция, которая содержала в себе весь архив ii с 2014 года, сначала у меня, потом alicorn, потом lessmore.pw (у него, кстати, можно базу взять?). И сообщение, принадлежащее двум эхам, может сорвать им крышу, в любом случае не будет ничего хорошего.
Вторая: эха в самом сообщении должна совпадать с фактической, а тут в сообщении будет одна, а текущих - две. Тоже проблема.
Надо снять эху с фетча и вычистить некорректные сообщения. Либо грохнуть у обоих и восстановить из актуального архива, в неё давно не писали.
А какая сейчас вообще схема роутинга, кто кого фетчит?
И есть ли у кого архивы, кроме аликорновского? В нём 46 тыщ сообщений, а у меня много лет назад в архиве было уже 87 тыщ. Откуда вообще взялась old.pc, в аликорновской базе такого нет.
> И сообщение, принадлежащее двум эхам, может сорвать им крышу, в любом случае не будет ничего хорошего.
> Вторая: эха в самом сообщении должна совпадать с фактической
если всё настолько серьёзно, то незамедлительно нужно сделать 2 вещи:
1) чётко прописать алогритм хеша (конверсия небуквенных символов в A и z без всяких "например" и "лишь бы было уникально");
2) запретить редактирование сообщений если они уже приняты сервером (ибо это сломает сходимость хеша);
из вышесказанного вытекает ещё одно требование к узлам - проверять все входящие сообщения на совпадение хеша (по чётко прописанному в стандарте алгоритму) для отбрасывания всего, что не сходится (а оно не сойдётся если имя эхи не то или получателя/отправителя исправили или текст покоцался)
нет, не надо, иногда сообщение на станции нужно подправить в последний момент, это бывает нужно. сверять хэши не нужно. просто у каждого нового сообщения всегда должен быть уникальный хэш, не повторяющий старый.
поскольку у меня её тоже больше нет, она действительно есть только у тебя :)
ок, заберу, почищу ненужное, прокомментирую/исправлю устаревшее и сконвертирую всё в retro.talks. а свою old.pc убью. в общем, никто не пострадал, но непонятно, почему станция Петра поместила их в old.pc, если ты проставил там новую эху внутри
короче я так понимаю, repto проще всего будет менять постфактум, чтобы не городить огороды, поэтому хэши в результате всё равно не сойдутся. ну да ладно.
> интересно, каким образом он её создал, по какому принципу?
видимо по принципу, что имя эхи другое он и начал кидать сообщения в эту другую эху, а так как её ещё небыло, он её создал - по сути это дыра т.к. таким образом можно через ограниченный фетч заслать сообщения в другие эхи, которые не фетчатся, даже локальные...
> нет, не надо, иногда сообщение на станции нужно подправить в последний момент, это бывает нужно.
> сверять хэши не нужно. просто у каждого нового сообщения всегда должен быть уникальный хэш, не повторяющий старый.
ну на самом деле одно другому не противоречит - надо просто ввести понятие draft для сообщений которые только что приняты сервером - их надо просто попридержать какое-то время (5 минут?) прежде чем флаг draft снимется и сообщение станет доступно для фетчинга с других узлов и если юзер вдруг решил исправить draft, то надо УБИТЬ старое сообщение и СОЗДАТЬ новое с ДРУГИМ msgid !!! т.к. старое сообщение ещё не ушло, то о такой подмене никто не узнает, а если сообщение уже ушло (т.е. флаг draft снялся), то всё - исправлять это сообщение уже больше нельзя иначе в системе будут циркулировать сообщения с одним и тем же msgid, но разным содержимым - поэтому и надо сверять хэши при фетче (хотя бы чтобы защититься от коррапнутых при хранении или передаче сообщений)
P.S. тот же механизм можно использовать для модерирования сообщений от новых поинтов - они будут в сосотянии draft пока модератор узла их не одобрит...
> короче я так понимаю, repto проще всего будет менять постфактум, чтобы не городить огороды, поэтому хэши в результате всё равно не сойдутся. ну да ладно.
ну почему? если перекодировать сообщения в хронологическом порядке, то можно и repto подменить т.к. repto будут ссылаться на msgid который заведомо уже был и уже сконверчен - т.е. просто подменяем и всё
я в декабре 2021 года качнул database.tar.xz с alicorn и сейчас поднял на локальном узле потихоньку вытаскивая оттуда полезное (например python.15 уже вытащил)
ii.stat почему то был только на spline-online.ru, а в архиве alicorn его небыло - тоже стянул...
> но непонятно, почему станция Петра поместила их в old.pc, если ты проставил там новую эху внутри
на тот момент когда он фечнул в этих сообщениях в качестве эхи стояла именно old.pc - я потом пробовал ставить oldpc.51t.ru, а потом обратно всё откатил, но это всё уже никуда не попало...
>> А ну тогда вообще ничего не страшно, это валидная эха old.pc
shaos> ну просто эти сообщения для old.pc пришли на запрос эхи oldpc.51t.ru и я уже понял, что это было нехорошо...
Да, именно. Видимо мне придётся добавить валидацию для такого случая, чтобы рассчитывать на ошибки тех, у кого забираю. А пока я откатил базу на вчерашнее состояние.
hugeping> Да, именно. Видимо мне придётся добавить валидацию для такого случая, чтобы рассчитывать на ошибки тех, у кого забираю. А пока я откатил базу на вчерашнее состояние.
Хотя сделать это, не так-то просто. Ведь когда я формирую список id он уже отвязан от эх... Мнда... Ладно, подумаю на досуге.
hugeping to hugeping (2024-10-13 08:24:53)
[ссылка]
Я этого делать не буду, моя нода служит мне чисто утилитарно для моего проекта. Мне важно уметь редактировать сообщения. При этом не создаётся много сообщений, ID остаётся тем-же самым, но база хранит всю историю сообщений (но не отдаёт их наружу, всегда только последнее). Так же есть личные сообщения, но они тоже локализованы моей нодой.
Кроме того, я могу заниматься цензурой, например, вырезать мат из сообщений без их удаления. Но опять таки, это всё остается в рамках моего узла. По факту, таких случаев было, может быть 1-2 за всю историю, но они были.
Если это кого-то напрягает, снимайте фетч. Ну и я сам могу снять по просьбе.
hugeping to hugeping (2024-10-13 08:29:07)
[ссылка]
Это к вопросу о важности тэгов. Вообще обычно фетчеры ориентируются на то, какую эху забирают, но фетчер Петра, видимо, ориентируется на тэг. Поэтому получилась совершенно валидная эха old.pc, такая же, как оригинальная.
> Я этого делать не буду, моя нода служит мне чисто утилитарно для моего проекта. Мне важно уметь редактировать сообщения. При этом не создаётся много сообщений, ID остаётся тем-же самым, но база хранит всю историю сообщений (но не отдаёт их наружу, всегда только последнее). Так же есть личные сообщения, но они тоже локализованы моей нодой.
я тоже иногда поправлю запятую там, и мне не страшно, что уйдёт неидентичный файл. на худой конец могу попросить просто грохнуть у всех сообщения и скачать их по новой. тут особо ничего не надо, изобретать чего-то там.
iiii> Это к вопросу о важности тэгов. Вообще обычно фетчеры ориентируются на то, какую эху забирают, но фетчер Петра, видимо, ориентируется на тэг. Поэтому получилась совершенно валидная эха old.pc, такая же, как оригинальная.
Не совсем понимаю, что за тег? Я просто забираю список id по всем эхам а потом забираю эти сообщения. Распаковываю и помещаю их в соответствии с содержимым в базу.
да это единичный момент. всё равно мы же не фетчим что-то постороннее. для постороннего я бы вообще отдельную станцию поднимал, а потом уже с неё сам фетчил.
iiii> да это единичный момент. всё равно мы же не фетчим что-то постороннее. для постороннего я бы вообще отдельную станцию поднимал, а потом уже с неё сам фетчил.
Я тоже считаю, что проблемы особой нет. А стандартов - чем меньше, тем лучше :)