~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
AreEnn
DUHOVKIN_
Guest7184
Most2
Nausicaa
Nikat
Ruskoye_911
Vort
Xeha
anon3
b3t4f4c3
fidoid
nemiga
not_bob_afk
onon
plap
poriori
profetikla
qend
segfault
soos
teeth
tetrimer_
uis
un
unlike
user
vade
weko
whothefuckami
weko
Лол
weko
Вопрос убил
orignal
segfault представь себе что у тебя два хуя
orignal
а не один
segfault
Просто почему-то оно вопринималось как одно и тоже. Тут длина туннеля, а тут тоже самое -- сколько штук их в туннеле.
orignal
ну вот длина хуя и число хуев это не одно и то же ))
segfault
orignal: Кстати, зачем почему в проекте есть new и delete?
orignal
потому что мне так захотелось
orignal
ну всякие там пулы реализовывать в частности
segfault
github.com/PurpleI2P/i2pd/blob/b8f998f76a4acb0f0764e151308f6150a19f076c/libi2pd/NTCP2.cpp#L39
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, что новенького в сети, какие планы?