IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/02/17
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
DUHOVKIN
Most2
Nausicaa
Vort
Xeha
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
poriori_
profetikla
soos
un
weko
whothefuckami_
R4SAS deb, rpi собраны, сейчас залью
R4SAS ведро для репы собрано, залито. для fdroid в процессе
R4SAS deb/rpi/ubnt полностью залиты в repo
orignal у тебя нигде не падает?
R4SAS вроде везде тихо
R4SAS залил в fdroid
orignal у трусишки упало непонятно почему
R4SAS ну так надо в дамп смотреть
R4SAS я по всем нодам прошелся, везде работает
fern *** обнял того кто релиз сделал ***
orignal просто если есть бага надо починить ибо не тестировалось
orignal weko первая реализация DHT в соотвествии с твоей идеей
orignal последний коммит
orignal пока рекурсия
orignal потом может разверну в цикл для скорости
weko orignal: сейчас гляну
weko Теперь нужно проверить... Кстати, как я понял, второй или третий ближайший он пока что не ищет
acetone Сейчас отвалюсь, обновлю сервер
acetone weko: понял почему ты не видел ошибку в адресхелпере. Ошибка есть только при флаге update=true, когда существующая запись перезаписывается. На нее юзер попадает только с собственного редиректа в правильном сценарии и если там не оказалось рефера -
acetone наверняка юзера пульнули на эту страницу злоумышленники (или их js скрипт). При добавлении новой записи, особых сообщений нет. Первый шаг без рефера, второй - с рефером. Если рефера нет, всегда попадаешь на первый шаг и i2pd считает, что каждый твой визит
acetone на страницу адресхелпера - первый)
acetone Может быть стоит добавить абзац на страницу адресхелпера вроде
acetone If this page occurs recursively, the problem is probably due to the disabled Referer headers in your browser which are using by address helper for security purposes.
weko Надо подумать, что с этим делать. Потому что честно говоря, AH иногда пользуюсь, а так будет не удобно: зайти в отдельный браузер, что добавить адрес.
weko acetone: стоит. Потому что я не понял проблему, когда кликал, думал должна быть ошибка, как ты сказал
acetone weko: если что придумаешь - будет интересно) первая итерация обсуждения привела к выводу, что трюки с токенами бесполезны, т.к. защитой является только фактор гарантии локальности клика на ссылку адресхелпера)
weko Я помню
weko Хочу попробовать протестировать новый код...
weko Orignal_huesos: дарова!
weko Как жизнь, как соль?
Vort может, глупый вопрос: вот, допустим, повысит скорость работы новый алгоритм поиска ближайших узлов в DHT. но не понизит ли скорость ещё больше новый алгоритм добавления и удаления узлов из DHT ?
weko Vort: эта ситуация реже в разы
Vort weko: даже во время атаки мусорными RI ?
weko И выполняется не то чтобы сильно дольше поиска
weko Vort: это другая проблема
weko О которой речь уже былп
Vort ну почему же другая? засирание не приведёт к добавлению новых элементов в контейнер что ли?
weko Vort: проблема другая
weko И решается на другом уровне
Vort так приведёт к добавлению или не приведёт?
weko Алгоритм DHT тут не при чём, он же O(1)
weko Vort: по моему это очевидно
weko Но проблема решается на другом уровне
weko const int NETDB_MIN_ROUTERS = 90;
weko const int NETDB_MIN_FLOODFILLS = 5;
weko Я думаю стоит больше сделать...
weko 150/15
orignal weko по поводу второго и третьего надо добвить фильтр еще
orignal не успел
weko Фильтр не эффективно наверное
weko По два три раза одно и тоже ходить-то
orignal да это понятно
weko Можно просто вверх подниматься даже рекурсией
orignal это имелось ввиду на нижнем уровне рекурсии
weko Окей
weko Тогда
weko Тогда нормально
orignal я вчера проеврял вроде находило правильно
orignal weko ты читаешь? ))
weko Что читаю?
weko [12:53:36] <orignal> я вчера проеврял вроде находило правильно
weko Супер!
orignal ls2 ))
weko Сейчас посмотрю...
orignal я уже ерестал понимать
weko У тебя есть тоже самое? Вообще 1000 коннектов за 90 секунд это кажется, нормально
weko Флудфил всё таки
weko Это может быть солевой? Он вроде что то про спам говорил
weko Флудфилов
orignal ну так о том и речь
orignal что в этом такого?
orignal мы бы тогда видели рост нагрузки
orignal но зато я узнал кое что важное
weko Но я не вижу
weko Как я понимал
weko Написал*
orignal они кидают шифроанные роутеры для публикации
weko Как было 20% на тред, так и осталось
weko Лол
orignal короче надо делать расшифровку в отдельном треде
weko Надо
weko И проверку подписей
weko orignal: а почему? Ssu2 лучше оптимизирован?
orignal TCP это куча лишних пакетов
orignal а для публикации нам нужно послать всего одно сообщение
weko По сути да
tetrimer Зато в tcp - есть контроль передачи сообщений.
tetrimer orignal: У меня вчера программа свалилась с коркой практически на ровном месте. Грешу на то, что шарился в веб-интерфейсе...
tetrimer orignal: Core was generated by `/usr/local/bin/i2pd --certsdir /usr/local/share/i2pd/certificates --conf /usr/lo'.
tetrimer Program terminated with signal SIGSEGV, Segmentation fault.
tetrimer Address not mapped to object.
tetrimer #0 0x00000000003f1e2f in ?? ()
tetrimer [Current thread is 1 (LWP 101134)]
tetrimer С тех пор больше не падает...
tetrimer Uptime: 18 hours, 41 minutes, 24 seconds
tetrimer Tunnel creation success rate: 22%
tetrimer Received: 57.01 GiB (706.59 KiB/s)
tetrimer Sent: 61.50 GiB (685.77 KiB/s)
tetrimer Transit: 55.22 GiB (677.39 KiB/s)
tetrimer Version: 2.46.0
tetrimer Routers: 8951 Floodfills: 1242 LeaseSets: 125
tetrimer Client Tunnels: 40 Transit Tunnels: 6354
orignal ну так собирай с дебагом
orignal я же не ванга
tetrimer Так не падает больше. :(
R4SAS orignal: у меня один вроде отвалился
R4SAS сейчас чекну
orignal R4SAS понял
orignal счас починим
R4SAS сейчас другие узлы проверю еще
weko [14:04:08] <tetrimer> Зато в tcp - есть контроль передачи сообщений.
weko Если не ошибаюсь, в ssu2 сделано аналогичнвй функционал. Если вру, поправьте
weko tetrimer: собирай с дебагом, чтобы посмотреть back trace
weko Собери i2pd с DEBUG=ON чтобы в gdb было видно backtrace
R4SAS оно по дефолту с дебагом как бэ собирает
R4SAS а если у него пакет, то надо просто i2pd-dbgsym поставить
weko Да я не помню что там по дефолту))
tetrimer Да, если не сказать DEBUG=N - собирает стометровый файл с дебагом... Пакет в портах - вряд ли кто-то успел обновить. Я последние дни - руками собираю.
R4SAS портах фрязи?
R4SAS фряхи*
tetrimer R4SAS: У меня в портах еще 2.45.1_1, правда сегодня пытался деинсталлироваться, когда я gdb ставил...
R4SAS tetrimer: на фрешпорты уже залили 2.46.0
tetrimer Ну, вот оно, наверное, и ругнулось...
R4SAS такс... надо alpine бампнуть
R4SAS orignal: в остальных местах везде живо
orignal счас закоммичу
Most2 06.<trusishka> R4SAS мы щас разбирались админами хмпп за круглым столом в чем проблема связности. Нашли косяк что каким то образом словеснику в адресбук прописался на подд <clipped message>
Most2 06.<trusishka> омен одного из сервера старый б32 (при том что до этого он менял его вручную), какими путями он мог сам туда попасть?
R4SAS из подписки
R4SAS на рег обновил хоть?
Most2 06.<trusishka> На рег давно новый висит б32
Most2 06.<trusishka> Мы вчера еще связывались серверами, сегодня уже не можем, вот нашли проблему
R4SAS надо смотреть по всем подпискам тогда
R4SAS подписки ведь рандомно выбираются
R4SAS не обязательно с рега оно может придти
Most2 06.<trusishka> Хм, т.е. даже если домен только на реге записан?
R4SAS а вообще влоги в руки и курим
R4SAS а ты уверен что только?
Most2 06.<trusishka> Ну точнее он прописывался только на реге изначально, окей, мысль понятна
R4SAS может у него еще другие прописаны?
Most2 06.<trusishka> Щас обсудим между собой
R4SAS ну и еще вариант того что он после того как в тот раз прописал новый у себя, а потом ш2зв именно был убит - ни кто не отменяет
R4SAS адреска записывается только при остановке
R4SAS если ш2зв убивают силой, то адресная не перезаписывается
Most2 06.<trusishka> Не, он тогда прописал нормально как надо и рестартнул после чего вск работало несколько дней
R4SAS тогда раскуривать логи
R4SAS я не помню в каком уровне логирования пишет какие домены добавляются
orignal закоммитил фикс
R4SAS чую что там просто проверка на пустоту )))
R4SAS а, лол. ясно
orignal а вот и нет )))
weko orignal: вот оно работает, а прикол в том что это я сам придумал, и только потом проверил в статье *похвастался*
orignal нуу я счел твою мысль тоже правильной
orignal еще усовершенствовал что мы ветки обрезаем когда удаляем
weko Это верно, но я тебе больше скажу
weko Их и создавать не надо
orignal то что мы делаем это нахывается деервом поиском
orignal а k-bucket это для определения соседей
weko Да слышал такое
weko Да, это я тоже понял
orignal ну я создаю ветку до первого веткления
weko Но в i2p кажется не используются они
orignal нет ветвления и ветка не нужна
weko [15:53:45] <orignal> ну я создаю ветку до первого веткления
weko Тоесть всё таки оптимально хранится
weko Ну да
orignal но если была нужна а потом элемент удаляем то ветку обрезаем до предфдущего ветсвления
weko Ну да, просто там же другое может быть
weko Может мы удалили ветвление, а другая нода осталась на длинной ветке
weko Хотя такого быть не должно вроде
weko Если всё правильно сделано
weko Так что да, по сути это оптимально
Most2 06.<trusishka> R4SAS у второго человека b32 левый в адрессбуке взялся, только теперь на андроиде, и это у него после обновления
weko Выходит O(log m * n ^ 2), вполне себе достойно
weko А до этого было O(m * n ^ 2)
Most2 06.<trusishka> на нотбобе нет моего домена, хочу на статсе посмотреть, сайт все еще грузится их
orignal если другая нода осталась то где то же было ветвление значит
orignal trusishka нашли причину падени
Most2 06.<trusishka> какая?
weko orignal: да понял, значит осталось по сути хождение вверх по дереву и рекурсия->цикл
orignal ну обычная коллизия
Most2 06.<trusishka> короче у словесника без обновы подтянулся b32 старый, у garmr после обновления это возникло > это вряд ли связано с обновленияем
Most2 06.<trusishka> хотя на реге он правильный
Most2 06.<trusishka> просто я не знаю кишки резолвов и регов, поэтму держу вкурсе всего
orignal смотри что в addresses.csv
Most2 06.<trusishka> я о том что там и говорю
Most2 06.<trusishka> туда записался старый b32
Most2 06.<trusishka> при том что на реге правильный висит
qnormnick R4SAS здравствуйте вы тута?
weko orignal: наверное уже будет излишне, но можно же вот как: если у нас есть соединённые ноды в цепочку, но нету на них развилок (тоесть цепочка длиннее 1 ноды без развилок), то можно сократить их, например записав в ноду, сколько было нод пропущено.
orignal да можно
weko Что-то типа сокращения бесполезной информации, которая р в памяти лежит, и дольше вычисления делает.
orignal просто брать бит со сдвигом
weko Да
orignal это не просто сокращение
orignal памяти
orignal это сокрращение рекурсии
weko "и дольше вычисления делает"
weko Тоесть написано в ноде, например, что пропущено 3 ноды, значит добавляем к номеру бита +3
orignal гбоубо говоря хэщ 0....0 и 0....1
orignal где все пропущенные нули
weko Да
weko В идеальном распределении такого нету, но идеального распределения не существует
weko Придёт какой нибудь чел, и намайнит куча гавна. Чтобы страдали все
orignal там тогда вставка усложиттся если возникнет ветвелние в середине
weko Согласен
weko поэтому я и предлагаю в некий to do добавить в виде комментария, например
tetrimer Core was generated by `/usr/local/bin/i2pd --certsdir /usr/local/share/i2pd/certificates --conf /usr/lo'.
tetrimer Program terminated with signal SIGSEGV, Segmentation fault.
tetrimer Address not mapped to object.
tetrimer #0 0x00000000006bad0b in ?? ()
tetrimer [Current thread is 1 (LWP 101295)]
tetrimer Что с дебагом, что без него - ничего человеческого не показывает...
tetrimer bt дает 36 строк в Hex-коде...
tetrimer А упало опять после того, как я чуть энергичнее пошарился в веб-интерфейсе программы.
orignal возьми последний коммит
orignal я же починил
Vort может быть несколько причин крешей
Vort странно, что стек не даёт нормальной информации
orignal у бздуна хохла дает
Vort можно "вручную" по бинарнику адреса отресолвить кстати
orignal он как то делал и кидал мне стек
Vort для clang я использовал llvm-dwarfdump
Vort может, и для gcc есть что-то подобное
weko tetrimer: а ты в gdb указал бинарник то?
tetrimer Нет, только корку...
orignal ну да
tetrimer Вроде в инете - так написано.
orignal gdb i2pd core надо
orignal ты че?
tetrimer Я - не настоящий сварщик. :)
orignal а чего во бздуны подался?
Vort в дампе нету информации о бинарнике? O_o
weko Vort: а как gdb найдёт где это бинарник с дебагом
weko Этот*
Vort weko: почему в дамп эту информацию система не кладёт?
orignal так надо путь к нему прописать
orignal если не в текущей
weko Vort: я знаю? Значит есть причина
Vort weko: ох уж эти причины...
tetrimer Program terminated with signal SIGSEGV, Segmentation fault.
tetrimer Address not mapped to object.
tetrimer #0 0x00000000006bad0b in i2p::data::LeaseSet2::VerifySignature<std::__1::shared_ptr<i2p::data::IdentityEx const> > (this=0x80563c000, verifier=...,
tetrimer buf=0x8058d6000
tetrimer "\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\0
tetrimer 1-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261"...,
tetrimer len=815, signatureOffset=775) at libi2pd/LeaseSet.cpp:383
tetrimer 383uint8_t c = buf[-1];
tetrimer [Current thread is 1 (LWP 101295)]
orignal понял
orignal сча
tetrimer Оно, или еще что-то надо смотреть?
weko Vort: насколько они оправданы - другой вопрос
weko tetrimer: оно самое
weko Интересная ошибка
orignal покжи весь стек
orignal точнее уровень выще откуда вызывается
tetrimer Reading symbols from /usr/local/bin/i2pd.2.46.D...
tetrimer [New LWP 101295]
tetrimer [New LWP 101760]
tetrimer [New LWP 100796]
tetrimer [New LWP 100814]
tetrimer [New LWP 100891]
tetrimer [New LWP 100945]
tetrimer [New LWP 100973]
tetrimer [New LWP 101241]
tetrimer [New LWP 101259]
tetrimer [New LWP 101362]
tetrimer [New LWP 101364]
tetrimer [New LWP 101371]
tetrimer [New LWP 101372]
tetrimer Core was generated by `/usr/local/bin/i2pd --certsdir /usr/local/share/i2pd/certificates --conf /usr/lo'.
tetrimer Program terminated with signal SIGSEGV, Segmentation fault.
tetrimer Address not mapped to object.
orignal блять
orignal набери where
orignal что будет #1?
orignal меня интересует откуда вызывается
tetrimer Там есть еще и #0
weko Хорошая идея кидать на пасту)
tetrimer #1 0x00000000006b4055 in i2p::data::LeaseSet2::ReadFromBuffer (this=0x80563c000,
tetrimer buf=0x8058d6000
tetrimer "\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\0
tetrimer 1-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261"...,
orignal одну строку только
tetrimer len=815, readIdentity=true, verifySignature=true) at libi2pd/LeaseSet.cpp:366
orignal давай #2
tetrimer #2 0x00000000006b2f27 in i2p::data::LeaseSet2::LeaseSet2 (this=0x80563c000, storeType=3 '\003',
tetrimer buf=0x8058d6000
tetrimer "\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261\265\341-\004\324*5\203\376\0
tetrimer 1-\004\324*5\203\376\001P/[\273\235v\242\215\356{g\345\001/\r\253\001\225\006ph\261"...,
tetrimer len=815, storeLeases=true, preferredCrypto=0) at libi2pd/LeaseSet.cpp:290
orignal еще выше
tetrimer В смысле - ниже? Третью?
orignal #3 да
orignal len=815, signatureOffset=775
orignal это смущает
tetrimer #3 0x000000000052c380 in i2p::http::ShowLeasesSets(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)::$_0::operator()(i2p::data::Tag<32ul>, std::__1::shared_ptr<i2p::data::LeaseSet>) const (this=0x7fffdf1f6328, dest=..., leaseSet=...)
tetrimer at daemon/HTTPServer.cpp:628
orignal длина подписи 40
orignal бяяяя
orignal а сразу то сказать не мог? ))
Vort он сразу сказал что вебконсоль тыкал )
orignal тогда извини
weko Я тоже видел
orignal теперь все ясно
orignal неясно другое
orignal какого хуя вызываются конструкторы
orignal ну все ясно че
orignal jeff, you code? ))
tetrimer Так показания же меняются... Видимо в момент смены данных - что-то и падает...
orignal нет там дело в -1
orignal я же не думал что кое кто начнет их создавать вручыную
orignal jeff, ShowLeaseSets
weko orignal: если что-то можно сделать, кто то это сделает...
weko В идеале таких банить на часов 12
weko Придурков
orignal // we assume buf inside DatabaseStore message, so buf[-1] is valid memory
weko )))))))))
orignal вот этот комментарий
orignal причем кто это сделал известно
jeff orignal: what up?
orignal you ShowLeaseSets crashes
Словесник-Былинник weko: <weko>В идеале таких банить на часов 12 ??? Банить :) ... прозреваешь я смотрю.
weko Ты не понял))
weko Я имел ввиду банить тех, кто в p2p сети не следует правилам
weko Важен контекст
Словесник-Былинник метод : БАНИТЬ : контекст: Найдем
qnormnick [-1] это из пайтона и всяких йаваскриптов же?
qnormnick в си++ точно такое есть?
weko Словесник-Былинник: найдём что? Откуда ты такой контекст взял
qnormnick если ток перегрузкой оператора может
orignal когечно есть
Vort [] в c++ это простое сложение по сути. ну с умножением на размер типа
orignal это сишная конструкция
qnormnick прямо в голом си можно?
weko Но навело на мысль что я не прав, потому что фиг найдёшь кто прислал такой лиссет
qnormnick жесть
Vort низкий уровень показывает себя
Словесник-Былинник weko: господи, у тебя как с юмором то ? я на банить повелся.
weko Словесник-Былинник: у каждого своё понимание смешного
weko Я вот не понял...
qnormnick не пашет же
Vort ну почему же
Vort скомпилировалось ведь
Vort и так же крешнулось :D
qnormnick может там operator overloading?
qnormnick как [-1]
qnormnick в си
qnormnick голом
orignal x[-1] = *(x-1) что не так.
qnormnick так а если память выделяется вперёд
qnormnick по ячейкам
qnormnick то как оно назад обращается и не получает пизды
qnormnick от ОС
Vort ну так в заду ведь тоже что-то есть?
qnormnick ну так оно не выделяло себе эту память
Vort ну вот и крешится )
qnormnick а так можно
qnormnick а можно же может можно
orignal так оно в середине буфера сидит
Vort c++ многое позволяет
Vort но не всё что он позволяет стоит делать
qnormnick в python'е это ображение от последнего элемента
qnormnick не не так
qnormnick это взять элемент по индексу от последнего
qnormnick не не так
qnormnick >>> a=[1,2,3,4,5,6,7,8,9,10]
qnormnick >>> a[-1]
qnormnick >>> a=range(0,100)
qnormnick >>> a[-1]
Vort в c++ часто размеры массива вообще неизвестны :)
Vort хоть a[100500] пиши
Vort напишешь глупость - получишь креш
Vort или чего похуже
qnormnick так если это не malloc'ом сделано. то компилятор скажет что я опидорел
qnormnick ну должен
qnormnick и то сейчас такие компиляторы. что в теории должен и с new понимать
Vort по-моему new не обязан запоминать размер
Vort как-то потом, конечно, будет удаляться правильный блок памяти
Vort но по-моему, эта задача отадётся ОС
weko [20:03:06] <qnormnick> >>> a=range(0,100)
weko [20:03:06] <qnormnick> >>> a[-1]
weko А разве это должно работать? Итераторы вроде не имеют .__getitem__() (или что то подобное, забыл), у них только .next()
weko Если так уж, то list(range(0, 100))[-1]
orignal народ вы будете меня плюсами учить? ))
tetrimer Самое интересное, что у меня же сутками снимается вот эта статистика: ujtui6edpiqofdhuwdwo3trfrjznqgvzcagvofybu666wivwkdqa.b32.i2p - и ведь ничего не падало, пока не полез в лизсеты...
Vort скорее всего, такие запросы "легче", поэтому меньше шанс во что-то вляпаться
Vort знает ли кто-нибудь, есть ли в вебконсоли хоть где-то защита мьютексами?
orignal нет нигде
orignal но тут падаение не из-за мьютекса
Vort ну вот
Vort значит, шанс проблем зависит от тяжести запроса
Vort orignal: а оно всегда падает или нет?
tetrimer Нет, "всегда" - оно как раз и не падает.
orignal оно падает когда попадает на не ту страницу
Vort на защищённую?
tetrimer Я же говорю: раз в 5 минут по крону запускается скрипт, который с помощью lynx --dump получает статистики.
tetrimer А иногда - ткнул: и получил дамп. Есть ощущение, что при двух "одновременных" коннектах - валится...
Vort в общем, кажется, я догадываюсь: доступ всегда неверен, но креш из-за этого случается не всегда
orignal Vort именно так
orignal потому что не предполагалось что буфер будет использоваться так
orignal Ilita will go down in 10 mintes