IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2021/09/16
~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest60783
Most2
Nausicaa
Vort
`
acetone_
ananas
anon3
b3t4f4c3
fidoid
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
tensor
un
weko_
whothefuckami
orignal [:]|||[:]
WebClient56 привет
WebClient56 есть пару вопросов
orignal ближе к делу
WebClient56 1. Протокол SAM, оказывается, имеет такую особенность: если на одном конце серверная часть приложения не была включена ранее, то при попытке соединиться с клиенской стороны приходит ответ, что
WebClient56 установить соединение не удалось. Однако, если серверая часть была недавно (минут 10, а иногда и больше) включена, а потом выключена (вообще машина физически), то при попытке соединиться по
WebClient56 протоколу SAM на клиенской части "connection OK". Никто не сталкивался с такой проблемой? Я в начале думал, что это библиотека кривая (i2p2sam for c++), потом по туториалу acetone по SAM на Хабре проверил - та же
WebClient56 история.
orignal по порядку
orignal какие команды SAM и какие ответы
WebClient56 Создаю серверную часть: HELLO VERSION, DEST GENERATE, на приватном ключе создаю сессию: SESSION CREATE STYLE=STREAM ID=ID_1 DESTINATION=priv_key
WebClient56 все это происходит через netcat
WebClient56 через второй терминал подключаюсь к текущей сессии: STREAM ACCEPT ID=ID_1
WebClient56 через 3-й терминал открываю вторую сессию, аналогично первой, только со своими ключами
WebClient56 через 4-й терминал подключаюсь STREAM CONNECT ID=ID_2 DESTINATION=public_key сессии с ID_1
orignal ну логично
WebClient56 суть дальше
WebClient56 потом все закрываем
WebClient56 перезагружаем все
orignal ну занчит в первом случае лизсет не находит
WebClient56 нетнет
WebClient56 все нормально отрабатывает в описанном выше сценарии
orignal так в чем проблема я не понимаю
WebClient56 суть вопроса вот: если выполнить только действия терминала 3 и 4, то тоже "типо" все нормально, возвращается TREAM STATUS RESULT=OK, а машина то с ID_1 же выключена. Какого Х*я-то ок?
orignal потому что лизсет в сети еще есть
orignal попробуй через 10 минут и не будет
WebClient56 проблема в том, что мне надо сразу
WebClient56 про лизсет я понял
orignal это надо смотреть
orignal когда ответ на создание стрима приходит
orignal и надо у zzz уточнить
WebClient56 я через либу добился того, что посылаю тестовую посылку на серверную часть приложения и если ответа нет, значит на самом деле сереврная часть не подключена
WebClient56 но - проблема заключячается тогда во втором вопросе:
orignal так ответа же на SYN не будет и стрим закроется
WebClient56 вот SYN как раз и приходит походу, только не от целевой точки, а откуда-то пораньше
orignal ты хочешл сказать у тебя стрим не закрывается сам с этом случае?
WebClient56 так, вот вопрос 2
WebClient56 2. Отправка/прием данных периодически чрезмерно долго происходят (хотя я читал где-то что там уже вроде как видеопотоки в тестовом режиме гоняются на i2pd). Либо я что-то не так как нужно делаю
WebClient56 (установил bandwidth = X (неограниченно) и долю транзитного трафика снизил со 100% до 30%) - не помогло. Подумал что дело в том, что тормоза происходят, когда 3 моих туннеля разрушаются и i2p во время
WebClient56 задержки строит новые. Решил, что увеличив количество отведенных туннелей (установил 10) можно решить проблему - без изменений абсолютно. Думал, что это из-за того, что я за NAT'ом и дело в introducer'ах
WebClient56 -> проверил на машине с статическим белым IP -таже история. В чем может быть дело? Но так не всегда происходит. Ингода просто моментально доставляются сообщения, а иногда ПАРУ МИНУТ ждать
WebClient56 приходится.
WebClient56 "ты хочешл сказать у тебя стрим не закрывается сам с этом случае?" - именно
orignal сэм
orignal это достаточно большая гадость
orignal видеопотоки ходят через статические тоннели
orignal если не закрывается то бага
WebClient56 прописанные в tunnels.conf?
orignal с сэмом я вообще не уверен что будет
orignal там небось все время эль-гамаль делается
orignal потому и тормоха
orignal короче на сэме ты скорость не получись
WebClient56 в том то и дело, что тогда одинаково бы лагало
orignal просто потому что никто этого не проблвал
WebClient56 а оно периодически
orignal если периодески
orignal это значит что джавовские узлы в тоннелях не тянут поток
orignal bandiwdth влияет только на транзит
orignal на скорость никак не влияет
orignal разрушение тоннелей тоже не влияет потому что там уже построенные заново будут
WebClient56 понял, в общем засада. Если была только одна из проблем либо 1, либо 2, тогда все было бы норм
orignal ты снчала добейся скорости без сэма
WebClient56 но при наличии обеих - походу нерешаемо пока что
orignal сэм надо чинить отдлельно
orignal лагает ли радио
WebClient56 да мне не то чтобы прямо вот СКОРОСТЬ нужна, хотябы 10 сек чтобы сообщения приходили гарантировано
WebClient56 а не 2 минуты
orignal 2 миеуты что то у тебя не так
orignal тут ведь приходят без проблем
orignal и висят сутками без разрывов
orignal а таймут тут 30 сек
WebClient56 "тут ведь приходят без проблем" - вот это еще причина моего смятения
WebClient56 в чем может быть проблема в таком случае?
orignal причина у тебя одна - сэм
orignal также заметь что и нетсплитов нет
orignal хотя они тоже через i2p
WebClient56 "нетсплитов" - это что такое?
acetone WebClient56: разрыв между серверами
orignal тут 3 сервера
orignal несплит сразу увидишь
orignal когда куча народа враз отвалится
WebClient56 тут - это в ирке?
orignal вот в этой самой
orignal я последний раз отваливался 2 дня назад да и то потому что пересобирал
acetone а вот в IRC2P я частенько отваливаюсь)))
orignal странно что я почти нет
WebClient56 понял, так если не через SAM делать и НЕ через статические туннели, то как в свою приложуху добавлять поддержку i2p?
WebClient56 пол кода роутера тянуть?
orignal надо разбраться что там с сэмом
orignal и у сэма есть параметры
WebClient56 исходники смотреть?
acetone доки
orignal нет я починю
orignal ты сначала попробуй добейся стабильной работы со статическими тоннелями
orignal может у тебя часы съехали
orignal когда добьешься надо смотреть в чем проблема с сэмом
WebClient56 часы синхронизированы с ntp
WebClient56 до этого был такой лаг, проходил )
orignal вот и провечь просто с тоннелями
WebClient56 так, для справки - статические туннели - это любые туннели, которые указаны в tunnels.conf, или для которых определены все промежуточные узлы-посредники (чего я еще не делал, если так можно)?
orignal которые в tunnels.conf или tunnels.d
orignal чьи адреса создаются ри запуске
orignal а не динамически как в сэме
WebClient56 т.е. сейчас мы через статический туннель коммуницируем в LITA?
WebClient56 В SAM я тоже всегда использовал заранее созданные и записанные в файл ключи
orignal ну вот и попробуй
WebClient56 получется статический туннель - туннель для которого заранее определены private_key и public_key, И никакие промежуточные узлы заранее неизвестны, верно ? (просто чтобы понимать терминологию)
orignal статический тоннель это который сущесвует все время
orignal динамический который может стартовать и отключаться
orignal и адреса могут генериться на ходу
orignal LeaseSets: 206
WebClient56 у статического туннеля промежуточные узлы изменяются?
orignal новый рекорд?
orignal все точно также
WebClient56 меняются, понятно
acetone WebClient56: все промежуточные узлы меняются раз в 10 минут у всех)
orignal не изменются только если задашь парамет explicitPeers
orignal но этого делать не слеудет
orignal потому что теряется сам смысл i2p тогда
orignal только для отладки
WebClient56 понятно, спасибо
orignal acetone как тебе 206 лизсетов? ))
orignal вот это рост сети
acetone orignal: редко обращаю внимание на этот параметр))
acetone сейчас у себя гляну
WebClient56 у меня ксати почему-то LeaseSets: 0
acetone WebClient56: значит ты не флудфил)
acetone orignal: у меня поменьше LeaseSets: 141
WebClient56 а, ну да(
WebClient56 точно
orignal acetone и у тебя много
acetone WebClient56: это количество опубликованных на флудфиле лизсетов в настоящий момент
orignal раньше было в пределах 50-80
acetone orignal: значит, ура) рост
orignal WebClient56 потому что у тебя не флудфил
acetone теперь буду обращать внимание на параметр
orignal это именно рост
orignal счас дедуле скажу
WebClient56 В общем, если я хочу с кем-то коммуницировать без лагов, то необходимо адреса целевых конечных точек вносить в tunnels.conf, верно?
WebClient56 публичные есстественно
orignal для начала подключись сюда через ирк
orignal сделай клиенский тоннель до irc.ilita.i2p
acetone WebClient56: SAM вроде как умеет параметры длины туннелей
acetone и их ширины"" (quantity)
acetone возможно, это тоже может помочь в нужном случае
WebClient56 ~orignal, "сделай клиенский тоннель до irc.ilita.i2p" - какой клиент лучше тогда постаивть?
WebClient56 acetone, я думал SAM - это тупо служба, слущающая на 127.0.0.1:7656 сокет и принимающая все данные в него и перенаправляющая их в сет i2p через роутер
orignal type=client
acetone WebClient56: так и есть в общих чертах)
WebClient56 я создал его
orignal а понял
orignal у меня hexchat
WebClient56 acetone, так я думал SAM использует такое количество и тунелей и длину, которые указаны в i2pd.conf...
orignal лол
WebClient56 ~orignal, понял, спасибо
acetone в i2pd.conf указаны длины только сокс и http прокси
orignal или зондирующие
acetone остальные туннели ты конфигуряешь как в tunnels.conf
acetone или через SAM
WebClient56 а ну да
WebClient56 или там
WebClient56 я думал их SAM использует
WebClient56 ~orignal, acetone, спасибо за разъяснения
acetone WebClient56: o/
orignal R4SAS
orignal m_NextReceivedBuffer = new uint8_t[m_NextReceivedLen];
orignal в NTCP2
orignal на каждый сраный пакет
orignal надо что то с этим делать
R4SAS <~orignal> LeaseSets: 206
R4SAS <~orignal> новый рекорд?
R4SAS нет
R4SAS <~orignal> надо что то с этим делать
R4SAS а нам не известна полная длинна сообщения?
R4SAS orignal: выдай права на i2pd-dev на неилитном
R4SAS s2#2 (ff):
R4SAS 10960 root 20 0 2231132 123440 8328 S 25.2 1.5 453:32.85 `- ./i2pd --datadir=./data --log=file
R4SAS s2#3:
R4SAS 10965 root 20 0 1181356 72440 8140 S 44.7 0.9 585:42.13 `- ./i2pd --datadir=./data1 --log=file
R4SAS всё же память куда то девается
R4SAS 123 мб уже
R4SAS но уже лучше, не лезет на 200 мб
xadmpp R4SAS: приветсвую, что я делаю не так.? цель собрать ipk i2pd для openwrt. тулчейн собрал, в menuconfig "M" поставил, скомпилил и получил версию 2.35, затем попробовал с твоего гита взять папку и скомпилилась 2.36, но сейчас же последняя 2.39.
orignal R4SAS скажи как
orignal сделал но как постоянно дать?
orignal R4SAS длина то неизвестна но есть варианты
R4SAS orignal: через chanserv
R4SAS xadmpp: а ты как делал?
R4SAS по пукнтам
orignal R4SAS скажи что надо написать
R4SAS я ж не знаю какой там сервисный софт
R4SAS /msg chanserv qop #i2pd-dev R4SAS
R4SAS типа так наверно
orignal счас зайду
orignal пишет Invalid command
orignal усе
orignal команда просто op
orignal R4SAS идея с буфером такая
orignal сохранять с предыдущего запроса
orignal и если длина нового меньше то использовать
orignal если долго нет автивности то удалять
R4SAS а там каким образом работает этот буффер?
R4SAS он же ограничен 1К?
orignal <orignal> m_NextReceivedBuffer = new uint8_t[m_NextReceivedLen];
orignal длина прилетает в начале сообщения
orignal получаем новую длину смотрим если она меньше старой
R4SAS т.е. там может быть болле 1К?
orignal то используем
orignal вплоть до 64K
orignal если меньше то пересоздаем
orignal я не знаю как в плюсах сделать realloc
R4SAS я просто к тому, надо ли создавать каждый раз
orignal вот я и хочу
R4SAS а не просто перезаписывать, выделив один раз блок достаточно большой
orignal оставлять
orignal но смотри че
orignal сессия висит обычно на ожидании длины
orignal то много буферов будут болтаться и просто занимать память без дела
R4SAS так, а увеличить это надо realloc?
orignal в си да есть realloc
orignal а в плюсах нету
R4SAS напрмер прилетело 1К, а потом следующий пакет в сессии 32К
orignal но можно просто пересоздать
R4SAS и пока сессия не закончится держать 32К
orignal в приципе для плоского буфера мы можем сишгые функции использовать
orignal так это и плохо
R4SAS а в каких случаях может быть более 4К
R4SAS опять таймеры?
orignal так таймер же уже есть
orignal который сессии чистит
R4SAS ну а как ты определишь была ли активность за период этого таймера?
orignal у сессии таймтстапм есть
orignal я же чищу после 2-х минут некативности
R4SAS этот таймстамп последних данных?
orignal а когда просто прохожу по сессиям
orignal смотрю если буфер не занят под получение данных то чищу
orignal ну да
R4SAS ну тогда да
orignal я просто про это забыл
orignal давно собирался сделать
orignal а вот мысль насчет malloc вместо new мне пришла только что ))
R4SAS а если смова что то прилетит, то снова выделять придется?
orignal ну да
orignal ну и хуй с ним
R4SAS так а разница насчет malloc и new?
R4SAS просто память и структура с памятью?
orignal new вызывает конструктор
orignal и зависит от компилятора
orignal мы не можем полагать что new = malloc
R4SAS это ясно
R4SAS крч возможно наличие лишних данных либо некорректное выделение
R4SAS которе в дальнейшем по другому вычищаться будет
orignal но зато можно использовать realloc
R4SAS но я думаю ты не будешь пыаться делать realloc в меньшую сторону?
R4SAS или как ты хочешь?
orignal только в большую конечно
R4SAS ты же сам говорил что malloc блоками
orignal ибо иначе нет смысла это затевать
R4SAS а может тогда делать градуированную очистку?
orignal это что такое?
R4SAS т.е. если > 32K, то через минуту, если 16К+, то через 2 минуты, 8К через 3 минуты
R4SAS в зависимости от выделенного пространства
orignal да можно и так
zlatinb очень крутой docker-compose.yml с i2pd, i2psnark + MuWire pastebin.com/m3kKm6nz
R4SAS так сделаю
orignal а что ты изменил?
R4SAS добавил проверку на .b32.i2p и .i2p
orignal а разве раньше не было?
R4SAS как видишь
orignal главное проверь чтобы не тормозило
orignal в том месте поток идет
R4SAS какой поток?
R4SAS там только импорт адрески из подписок
orignal ну да
orignal там же пачка адресов
R4SAS да не должно
R4SAS это уже по обрубку до "=" будет проверку проходить, не по всей сроке
orignal тогда коммить
R4SAS так, еще заранее вопрос
R4SAS ничего если я вынес из HTTPServer.cpp в отдельный хедер стиль и иконку?
R4SAS этот хедер только из HTTPServer.cpp инклудится
orignal так хедер зачем?
orignal не надо его в хедер
orignal в хедере напиши extern
orignal если нужен доступ откуда то извне
R4SAS не нужен