IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/07/09
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
AreEnn
Leopold_
Most2
Nausicaa
Nikat
Opax
Vort
WayBest
acetone
anon2
anontor
b3t4f4c3
banona
fidoid
grimreaper
itsAMe
karamba_i2p
ncop
nemiga2
onon
onon1
overflow
polistern
poriori
profetikla
qend
r00tobo
soos
teeth
typhoon_
uis
un
user
weko
whothefuckami
колдыр
weko Лол
weko Вопрос убил
orignal segfault представь себе что у тебя два хуя
orignal а не один
segfault Просто почему-то оно вопринималось как одно и тоже. Тут длина туннеля, а тут тоже самое -- сколько штук их в туннеле.
orignal ну вот длина хуя и число хуев это не одно и то же ))
segfault orignal: Кстати, зачем почему в проекте есть new и delete?
orignal потому что мне так захотелось
orignal ну всякие там пулы реализовывать в частности
segfault Переделать на вектор?
weko [22:29:53] <orignal> segfault представь себе что у тебя два хуя
weko Не совсем в тему но такие люди реально есть :)
orignal так о чем и речь ))
orignal segfault нет ничего не трогать там
orignal но замечание верное
orignal надо бы его из пула брать
segfault Там местами нужен рефакторинг. Вот например, код написан в ветке else, а обработка ошибки под if. И это вложено. github.com/PurpleI2P/i2pd/blob/b8f998f76a4acb0f0764e151308f6150a19f076c/libi2pd/NTCP2.cpp#L476
orignal нет рефакторинг не нужен
orignal и перестань уже умничать
orignal не оп делу
orignal тебя вот ебет в какой ветке код а где обработка ошибка?
orignal тебе религия велит код под if а обработку под else? фэшнуй?
orignal займись лучше делом
weko Просто важно речь про наличие одного стиля или про чистоту кода
weko Нельзя недооценивать важное и того, и другого
weko Важность*
orignal я придерживаюсь иного мнения
orignal главное чтобы работало проавильно а не чтобы было красиво оформлено
segfault Ну просто в процессе сочинения программы незамтно получилось if {, if {, if {, if {, } else Terminate(), } else Terminate(), } else Terminate(), } else Terminate(). На FullHD мониторе функция еле-еле влазит в экран. Можно за день перелопатить код и привести его к...
segfault Blinded message
segfault Blinded message
segfault Я, конечно, почитываю материалы по работе сети потихоньку, но жестко кодить пока не готов.
segfault Там логика очень многослойная и сложная.
weko [22:56:32] <orignal> главное чтобы работало проавильно а не чтобы было красиво оформлено
weko Безусловно важнее. Однако плохое оформление может с большей вероятностью приводить к ошибкам и багам. А где больше багов, там и больше багов связанных с безопасностью
weko А это вообще не желательно
orignal демагогия
weko В чём я не прав?
weko Или думаешь вероятность не так уж и сильно больше?
orignal в том что обычно те кто озабочен правильным оформлемнием ничего полезного написать не в состоянии
orignal жизненное набдюдение
orignal а те кто умеют писать нужные вещи тем обычно на оформление насрать
weko А это разве делает плохое оформление чем то плохим?
weko Ой бля
weko Хорошее
weko Всё пора в дурку
weko Скоро адрес и номер пас(с)порта писать буду
orignal та же самая логика почему метросексуал пидар
orignal что пдохого в том что мужик душится как баба?)))
weko Ничего...
orignal но нормальный мужик этого делать не станет
orignal тут примерно также
weko Плохое сравнение. Тут то практический смысл присутствует и не маленький
orignal ну я тебе написал выше
orignal кто занят реальным делом тот не парится с оформлением
weko Ну смотри ты же принял мой PR с редактором функции. Я что подушился ?
weko Рефактором
orignal ну так это ж ты
weko А чем он не он? Пусть делает.
orignal я просто не стал бы заморачиваться
weko А он хочет и видимо может
weko Ты же на баб которые душаться не жалуешься?
orignal потому что бабе положенно душиться
orignal равно как и оформлять все по правилам )))
weko потому я написал про правила сразу
weko но тут правила нужно определить и следовать
orignal читай
orignal оно наверное еще в 2015 году написано
user Как работает trust.hidden = true
orignal не знаю
orignal это не я делал
user Не работает
orignal и все собираюсь выпилить
user Ничего не меняется
orignal значит фтопку
orignal я все равно разбираться и чинить не стану
orignal в jeff куда то пропал опять
user Это нужная фича. Надо будет починить.
orignal чини ))
weko так а что вообще должно делать?
orignal а я знаю? ))
orignal что он там думал сделать
weko user вот знает видимо
user Не публиковать IP
orignal с чего ты взял?
user Что бы не попасть в БД роутеров
orignal это ж в секции trust
user Ну да
orignal а просто опции hidden не будет никогда
orignal почему я неоднократно говорил
weko <~orignal> а просто опции hidden не будет никогда
weko а её разве уже нету?
user Я, видимо, пропустил
orignal вот для ssu2 да я собираюст сделать опцию чтобы всегда firewalled было
orignal нет и не будет
weko ой бля я имел ввиду что есть
weko точно в дурку пора
orignal есть буква H
orignal мы ее читаем
weko да я помню
weko говорили про неё недавно
orignal но у самих этого режима нет и не будет
user Он мне объясняет, не мешай
weko вот а смысл от неё ?
orignal это очредной тупняк от jrandom был
weko user: ... -_-
orignal смысла ее нет
user А почему нет?
weko потому что не публиция адресов делает тоже самое
weko и писать об этом дополнительно смысла нет
user А где настраивается публиковать/не публиковать адрес?
weko ntcp2.publish или как то так
weko ну и ssu2
weko просто один хер своё участие в сети не скрыть
weko так что неуловимые джо могут не надеятся на лёгкий способ и идти настраивать прокси или впн
weko или что там в моде у джо
user Ну он хотя бы не будет у всех в БД
user Так?
weko ну знаете, я про себя данные сливаю только ВКонтакте, лучше чем всем сливать, не так ли?
weko )))
weko в прямых подключениях нельзя скрыть свой адрес
user Ну так это ограниченное число одключений
user До начала туннеля
user И все
weko пару дней твоего подключения и несколько майорских нод будет достаточно
weko чтобы хотя бы одно подключение засечь
weko а дальше обратится к провайдеру чтобы он выдал кто именно подключился
weko хоп и майор знает что ты ш2з врубал
user Намекаешь, что это вызовет дополнительное внимание со стороны сс?
weko вполне возможно они уже так делают. списки составляют
weko я говорю что вариантов кроме как доверенный промежуточный узел который не связыван с тобой единственный вариант. и то могут отследить цепочку, что ты общаешься с узлов, а тот в ш2з активен. но я думаю пассивно таким не занимаются
user Где посмотреть b64 роутера?
weko своего?
user Да
weko в вебконсоли
weko RouterIdent
user Это хеш
weko ну дак
weko это и есть хэш в base64
user В trust.routers вставлять эти хеши?
weko думаю да
user через запятую
weko но не уверен
user Ща попробуем
weko интересно заработает ли
user Что-то судя по транспортам, не работает. Коннектится куда хочет.
orignal RouterIdent должен быть в base64
user Где взять?
weko да я ему уже сказал
orignal есть же параметр тоннеля explicitPeers=
orignal вот он работает
orignal мы его для тестирования используем
user Походу заработало
user Это я лопух. Не раскомментил enabled = true
user Получается, если я не публикую свой IP, и подключаюсь только через доверенные роутеры, никто не узнает, что я использую i2p
user Доверенные роутеры, естественно, не аффилированы со мной.
orignal так они узнают
user Так они мои, на впс за крипту.
orignal так и держи i2p там
orignal а сам ходит по ssh тоннелям
orignal строить тоннели через свои собственные узлы так себе идея
user Просто добавлять +1 хоп
user Если один из роутеров скомпрометируют, увидят, кто подключался по ssh
user А так, по NTCP2 куча соединений
user И попробуй найди
orignal так они и так увидят потому что как той этой впс тебе придется управлять
user Через впн
orignal все равно твои ssh соединения буту
orignal ну так и ssh тоннели делай через впн
orignal не стоит умножать сущности без надобности
weko Кацапы ещё не созрели до тюрьмы за i2p
weko Он может коннектится к ВПС через i2p опять же..
Vort по поводу стиля/чистоты кода: думаю, это станет актуальнее, когда сами по себе функции будут получше отлажены
Vort будет, допустим, покрытие тестами
Vort иначе сейчас 1. хватает багов. 2. неаккуратный рефакторинг может добавить ещё багов, при чём трудноуловимых
segfault Vort: ради бога не надо googletest и прочую херню
Vort ну проблема в том, что никто не знает как полноценно потестировать фрагмент кода после рефакторинга. да даже после починки бага
Vort а вслепую чинить - не очень удобно. проще не трогать, чтобы не сломать
Vort я сам плохо в тестах разбираюсь, но понимаю, что без них каждое изменение - большой риск
Vort и если баги чинить всё-таки надо, и риск понятен, то тягание кода туда-сюда риск не оправдывает
segfault Я сделал правильное выключение
segfault И у меня роутер выключился через segmentation fault (core dumped)
Vort он у меня всегда так выключается
Vort и я даже разбирался, почему
segfault И почему?
Vort потому что код выключения написан не очень аккуратно. а написан он так, потому что orignal считает выключение узла делом маловажным
Vort там и утечки памяти ещё есть
Vort при выключении
Vort в общем, дело в порядке того, как модули завершают свою работу
Vort они довольно загадочным образом друг от друга зависят
Vort и распутать этот клубок непросто
Vort ещё многие модули хранятся в глобальных переменных
segfault мьютексы сделать для правильного порядка выключения модулей никто не хочет?
Vort а C++ насколько я помню, не заморачивается с порядком их уничтожения
segfault Vort: Так они же в разных тредах
Vort ну дедлоки будут с мьютексами ) там задница в общем
Vort можешь попробовать разобраться, но башка болеть будет )
segfault Нужно в дестуктор каждого модуля поместить join() тех модулей, которые должны завершить работу до него
segfault Но знает ли хоть кто-нибудь идеальный порядок выключения модулей?
Vort 1. это только кажется простым. 2. хехе. вот это правильный вопрос. особенно учитывая взаимные связи. иногда надо половину одного модуля вырубить, потом половину второго, потом опять половину первого )))
Vort segfault: знаешь же что i2pd использует boost asio ?
Vort а как этот asio работает знаешь?
segfault Ну если дестукторы нормально не работают, то какой вообще в них смысл? Можно просто после 10 минут сделать exit(0) и всё. Ничего не поменяется.
Vort а в i2pd модули и не через деструкторы завершаются. там методы Stop вроде :))
Vort ты не осознаёшь ещё глубины задницы ))
segfault Vort: нет. Я всегда использовал Linux API
Vort так вот этот asio добавляет очень много интересностей к процессу завершения работы i2pd
Vort пока не поймешь идеально как он работает, выключение i2pd починить не удастся
segfault Я же предложил. Надо просто exit(0) сделать. Ошибки не будет
segfault Да, это плохо
segfault Но не хуже, чем сейчас
Vort сейчас хотя бы есть шанс, что нормально выйдет - с сохранением пир профилей к примеру
Vort с exit ещё можно лог файлы попортить, если на половине вывода строчки выйти. короч ленивое решение это
Vort и запросто создаст больше проблем, чем есть сейчас
segfault Так просто подождать мьютекс сохранялки и мьютекс логера
Vort ещё же и в netdb может быть активность
Vort ну так вот эти все ожидания - это и есть процесс завершения работы
Vort и вопрос в том, как сделать так, чтобы это нормально работало :)
orignal где то пулы удаляются раньше значит
Vort там много взаимосвязанных проблем
Vort как минимум, связь с утечками
Vort то есть, цель - и чтобы крешей не было и чтобы утечек не было
Vort убрать креши, добавив утечки - как бы не вариант
Vort думаю, суть всё же в продумывании правильного порядка остановки модулей
Vort может, стоит подумать над распутыванием взаимосвязей модулей. может, новый модуль какой-то выделять надо
Vort ну и это уже мои личные предпочтения, но мне кажется, что надо избавляться от хранения модулей в глобальных переменных
Vort вариант "удаление в произвольном порядке" порядка не добавляет )
orignal у меня обычно корректно заверщнается
Vort при быстром выходе или при медленном?
weko Vort: тоесть выходит тесты приоритетней. Но кто будет их писать?
weko Нужно же там пакеты подбирать нужные и не очень
Vort как по мне, важно удачную архитектуру для тестов выбрать
Vort с удачной архитектурой уже можно тесты по аналогии делать
weko Ну это да
Vort тесты они же на разных уровнях нужны
Vort на уровне функций, классов, целой сети
weko Так завершаться модули должны в обратном порядке как они были запущены
Vort ну и производительность тоже надо тестировать
Vort weko: говорю же - не так там всё просто. есть неочевидные связи между модулями
weko Vort: для целой сети можно только статистику сделать. Что я и хотел, как самое практически полезное. Чтобы видеть те баги, которые влияют на сеть
Vort ну и опять же - есть два типа остановки - Stop() и деструктор
Vort weko: ну целой _тестовой_ сети, прошу прощения что не уточнил
weko Vort: вот от Stop есть какие то ошибки?
weko Vort: ну тестовая менее показательна, что минус
Vort ну Stop может не всё остановить - в asio будут ещё ошмётки болтаться. а потом приходит деструктор...
Vort я уже не помню точно как там сделано. помню только что проблем много и разных
weko Значит нужно Stop доделывать
weko Чтобы он реально всё останавливал
Vort я тоже думал о таком варианте. но это надо кучу всего на умные указатели переделывать
Vort ну и почему просто не использовать деструктор?
weko Потом деструктор чистил всё в обратном порядке создания что есть поведение по умолчанию
weko Не знаю, правильно пихать в деструктор остановку модуля. Если правильно - ну вот и решение
Vort ну а правильно иметь две функции уничтожения? по каким критериям разделение - что должно в Stop идти, а что в деструктор?
Vort я когда пробовал чинить это место, я кстати Stop2 ещё делал
Vort из-за загадочных связей )
weko Stop это по логике остановка работы, а деструктор удаления из памяти оставшегося мусора
Vort то есть, Stop ничего удалять не должен? ну условно говоря
Vort вроде и логично, но по-моему он дофига всего удаляет
weko Так не должен
weko Сначала остановка полная потом удаление
Vort может так и правильно
weko А ты пробовал?
Vort что пробовал?
weko Сделать так
weko Дестуркторы же они для того и нужны чтобы удалять не нужное после того как объект не нужен
Vort я пробовал чисто затыкать креши и утечки. полностью чтобы переделать это надо понимать всю структуру программы. у меня же этого понимания нету
weko Борьба с симптомами
Vort вот посмотри к примеру как Stop в NetDb сделан: github.com/PurpleI2P/i2pd/blob/b8f998f76a4acb0f0764e151308f6150a19f076c/libi2pd/NetDb.cpp#L83-L103
Vort clear, clear, delete, даже = 0 чтобы уж точно добить :D
weko При чём останавливать тоже в обратном порядке. Точно не знаю, но логично начать с прокси, SAM, и прочего. Потом остановить построение туннлей, прочее, потом транспорта и под конец netdb
weko И когда оно гарантированно всего не работает деструкторы начинают чистить
weko А они то как раз умные, помогать им не надо
Vort если только нету циклических связей
orignal по kill -s INT
Vort иначе "кольцо" так и останется в памяти болтаться
Vort case SIGINT: ... "Graceful shutdown after "...
weko А они есть?
Vort по-моему есть. но на 100% не уверен
Vort orignal: медленная остановка меньше крешит, да. но, во-первых, и быстрая не должна крешить
Vort и, во-вторых, отладив быструю, скорее всего и медленная станет надёжной
orignal я согласен что надо разбираться
weko А разве деструкторы умеют определять что кольцо есть? Они же просто удаляют объекты рекурсивно. Или в этом и проблема?
orignal по уму же быстрой остановки вообще быть не должно
weko [12:03:01] <orignal> по уму же быстрой остановки вообще быть не должно
weko А я предлагал)). И ты тоже. Как сделать в смысле
orignal weko если кольцо то десткурторы вообще никогда не вызовутся
segfault orignal: ^C и ^\ всегда останутся.
Vort ну иногда юзеру надо срочно вырубить комп - и лучше быстрая остановка, чем выдергивание из розетки )
weko И kill -s TERM
segfault В этом проблема, кстати. I2P-роутер это не демон в привычном понимании, потому что демон должен мочь управляться через систему инициализации
segfault Вот я выключаю комп и I2Pd должен на 10 минут остановить Init
segfault Сомнительное решение
weko Речь про то что должно быть куда меньше 10 минут
weko Если ввести некоторые модификации протокола
orignal так я об этом навнрное 10 лет говорю
orignal что нужно сообщение от узла что он уходит из тоннеля
user Routers: 227 Floodfills: 222
user Очень быстро деградировал с 3к роутеров.
user Отключен транзит и публикация адреса.
user Это норма?
weko может подключение плохое?
user За натом
Vort может интернет отрубался
user Не отрубался
user В логах пишет, что удаляет недоступные хосты из бд.
user Вроде пишет, что и новые добавляет и обновляет существующие, но ситуация вот такая.
segfault Я с 8000 до 3000 просел
Vort я на своём узле тоже проседание видел
Vort но решил, что это из-за моих нагрузок на сеть
user На другом роутере сейчас норм
Vort может и общее для сети явление
user Routers: 9635 Floodfills: 1444
user Правда Tunnel creation success rate: 15%
segfault У меня чуть больше 50%
weko у меня всё ок. tcsr 35%
segfault Жалко что потребление памяти посмотреть не получается
weko htop?
Vort у меня на графиках видно 3 часа назад какое-то событие - резкий всплеск TCP коннектов и соответствующее ему повышение нагрузки CPU у i2pd. длилось полчаса
Vort может эхо от того события проявляется
segfault Оно не показывает сколько ядро жрёт на поддержку нескольких тысяч подключений
Vort думаю, что мало
weko segfault: так оно в теории константное значение
weko на один коннект одинаковое количество памяти
weko на каждый
segfault Ну, да это сколько?
weko откуда я знаю
segfault Ну вот. Я не знаю сколько оно потребляет, но почему-то мне кажется что не мало
weko я думаю копейки
Vort вот тут кстати тоже виден всплеск 3 часа назад: ujtui6edpiqofdhuwdwo3trfrjznqgvzcagvofybu666wivwkdqa.b32.i2p/index.html
segfault Кто-то насилует сеть?
Vort может быть тестовый запуск атаки
weko <Vort> вот тут кстати тоже виден всплеск 3 часа назад: ujtui6edpiqofdhuwdwo3trfrjznqgvzcagvofybu666wivwkdqa.b32.i2p/index.html
weko резко выросло количество SSU2 коннектов, и сильно и резко снизилось количество транзитных туннелей.
weko может кто-то пытался блокировать? если коннекты это причина, а не следствие
user Чебурнет тестируют
weko я так подумал потому что только TCP
Vort это я чисто TCP логирую (UDP так просто не пологируешь), а на графике по ссылке видно, что всплеск был общий - и TCP и UDP
Vort видимо, кто-то просто данных много гонял, вот коннектов и наплодилось
Vort то есть, скорее всего, это как и раньше - коннекты от обычных юзеров, но спровоцированные каким-то событием
weko почему тогда скорость упала
Vort наверно у того узла лимит стоит
Vort а как лимит в i2pd работает мы знаем :)
weko видно что там скакануло вверх перед этим
weko наверное да
user Streaming: LeaseSet was not confirmed in 4000 milliseconds. Trying to resubmit
user А что за лизсеты мой роутер пытается опубликовать? У меня никаких сервисов не запущено...
orignal значит что то запущено
orignal и это обязательно серврный тоннель
user Client Tunnels:
user HTTP Proxy
user И все
orignal а сокс?
user Services HTTP ProxyEnabled SOCKS ProxyDisabled BOBDisabled SAMDisabled I2CPDisabled I2PControlDisabled
orignal что в серверных тоннелях?
orignal аааа так это в Streaming
orignal что тебя удвиляет?
orignal у тебя же у прокси тоже есть лизсет просто не публикемый
user Я не совсе, видимо, понимаю логику работы
orignal ну смотри
orignal когда ты через прокси подключаешься к кому то
orignal то он чтобы отправить тебе ответ должен знать твой лизсет
orignal ты его обычно отправляешь с первым пакетом данных
orignal ну и когда протухнет тоже
orignal и ждешь подтверждения
orignal если есть подверждение то все
orignal если нет пытаешься снова
user А это с туннелями проблема, типа
user Не могу достучаться до сервиса
weko да и с туннелями тоже так. и вообще с любым i2p подключением
orignal ну да
user Понял, спасибо
orignal не пришел ответ на лизсет короче
user1 i2p.streaming.initialAckDelay Milliseconds to wait before sending Ack. (default: 200)
user1 Это для чего задержка нужна?
orignal сколько ждать данных в другую сторону перед тем как Ack послать
Opicaak Hello, I was just wondering if it is possible to configure i2pd in a way, that it uses Tor proxy for reseeding only from .onion reseed servers, and no proxy for regular normienet reseed servers?
orignal reseed.proxy=socks://127.0.0.1:9050
Opicaak But that will route everything though that proxy, no?
Opicaak Even clearnet reseeds.
orignal no it's not possible
Opicaak By everything I mean all reseed servers, including clearnet ones.
orignal then tell me if you use Tor why do you need clearnet reseed?
relaybot 13apophis: лол
relaybot 13apophis: edit your list to have ONLY onion reseed
orignal I don't see any rationalie
orignal apophis, he wants to have both in the list
orignal Blinded message
orignal but what for?
orignal especially reseed is one time thing
relaybot 13apophis: > Opicaak: Hello, I was just wondering if it is possible to configure i2pd in a way, that it uses Tor proxy for reseeding only from .onion reseed servers, and no proxy for regular normienet reseed servers?
relaybot 13apophis: Means he wants Onion only reseeds, so why bother to keep clearnet records ?
orignal " and no proxy for regular normienet reseed servers" means direct access to clearnet resseds
Opicaak original, yeah, you are right, it doesn't really make sense. I'm overthinking things.
relaybot 13apophis: sure
pikachu Всем print "hello"
pikachu как настроение, как разработка I2P, что новенького в сети, какие планы?