~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest8889
HackerMan
Most2
Nausicaa
Ruskoye_911
Vort
`
acetone_
anon3
b3t4f4c3
fidoid_
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
tensor
un
weko_
whothefuckami
acetone
кажется, вопрос оказался незамеченным: "нельзя ли перегрузить группу роутеров, создавая "рекурсивные чесноки", которые создадут замкнутый цикл из роутеров, которые будут передавать их самим же себе? Никто же не знает, сколько раз чеснок уже был на
acetone
этом роутере"
acetone
orignal: ^
R4SAS
колчество ведь ограничено
R4SAS
8 прыжков
R4SAS
так что наверно не получится, и чесноки после декодированияя ведь удаляются
R4SAS
получил пакет, раскодировал свой чеснок, удалил его, передал дальше
R4SAS
как они закончятся, вс остановится
R4SAS
я так то понимаю
acetone
R4SAS: какой параметр в конфиге отвечает за локализацию? чот не нашел сходу)
orignal
я не понял вопрос
acetone
orignal: это вопрос из комментариев на ютубе) суть в том, чтобы флудить сеть чесноками, которые передавались бы бесконечно)
acetone
и тут ответ: зубчик заменяется ответом, поэтому не получится
orignal
ааа ну ответ такой
orignal
в i2p нет реального чесночного шифрования кроме как для построения тоннелей
orignal
а там как ты знаешь число зубчиков ограничено 8
orignal
ну и промежуточный узел сформировать и зашифровать инструкции вместо ответа не может
acetone
ага
R4SAS
acetone: http.locale
acetone
R4SAS: спасибо
R4SAS
точнее http.lan
R4SAS
g
R4SAS
## Currently supported english (default), afrikaans, russian, turkmen, ukrainian and uzbek languages
R4SAS
# lang = english
acetone
R4SAS: нашел)
acetone
до этого два раза пролистывал и не мог увидеть
R4SAS
kjk
R4SAS
такс... чего там надо было делать... чет не вспомню уже
orignal
я тоже
R4SAS
пока чутка времени есть
orignal
флуфдилы профилировать
orignal
попробуй починить HUP
R4SAS
так я не понимаю че там не так
R4SAS
если верно понимаю, то должно читать все туннели и проверять изменения
R4SAS
если их нет, то пропускать
orignal
так надо понять почему ломаются
R4SAS
если есть изменения, то останавливать туннель, и запускать с новыми параметрами
R4SAS
так вот не ясно
orignal
вот и попробуй понять
R4SAS
легко сказать
orignal
еще можешь попробовать начать делать SIP тоннели
orignal
чтобы там в SIP сообщениях подменять порты
R4SAS
так это надо на ходу поднимать туннель
R4SAS
точнее листнеры
R4SAS
не, эт позже
orignal
ничего не надо
orignal
надо просто в сообщение вставлять нужный и все
R4SAS
у тебя на стороне сервера то должно знать куда слать
R4SAS
у тебя на сервере будет ждать пакеты на определенном порту
R4SAS
а на клиенте на тобой указанном для сипа
orignal
так вот куда слать и будет ему передаваться порт тоннеля
orignal
и 127.0.0.1
R4SAS
да на клиенте то ясно
R4SAS
а на сервере как?
orignal
клиент соединился
orignal
передал свой порт в сообщении
R4SAS
как ты запомнишь куда надо там отсылать пакеты клиента?
orignal
мы в тоннеле его перехватили
orignal
и подставили порт своего тоннеля
orignal
сервер будет отвечать на заданный нами порт
R4SAS
еще раз
R4SAS
1. клиент начинает SIP сессию
R4SAS
2. сервер говорит: я слушаю RTMP на 127.0.0.1:5900
R4SAS
3. пересылаем через ш2з что сервер слушает на 127.0.0.1:5900
R4SAS
4. на клиентской стороне видим пакет и видим что мы указали в конфиге туннеля слушать RTMP на 3080 например. перезаписываем пакет
R4SAS
и отсылаем что сервер слушает на 127.0.0.1:3080
R4SAS
5. клиент шлет на 127.0.0.1:3080, данные шлются на ш2з сервера, а сервер то куда отошлет
R4SAS
это надо как то запомнить что данные надо на 5900 отослать
orignal
ну да таблица надо держать конечно
R4SAS
ну вот
R4SAS
а только вопрос один
R4SAS
если SIP и RTMP будет разными портами
R4SAS
и двумя разными туннелями
R4SAS
то как таблицу хранить то, и где
orignal
неее
orignal
надо SIP тоннель двойной
orignal
который сразу и SIP и RTMP обрабатывает
R4SAS
я про серверную сторону
R4SAS
как ты такое сделаешь?
R4SAS
SIP же на UDP, TCP?
R4SAS
значит 2 UDP туннеля надо
orignal
ну по сути да
R4SAS
либо TCP+UDP
orignal
но логичнски мы делаем одним
R4SAS
не, это 2 туннеля, но с одним адресом как я понимаю
R4SAS
тогда да
R4SAS
тогда можно на сервере сохранить в таблицу что для такого то b32 сервер слушает на таком то порту
orignal
вот я так и хочу
R4SAS
скажи ка вот что
R4SAS
void ClientContext::Stop ()
R4SAS
{
R4SAS
LogPrint(eLogInfo, "Clients: stopping HTTP Proxy");
R4SAS
m_HttpProxy->Stop();
R4SAS
delete m_HttpProxy;
R4SAS
m_HttpProxy = nullptr;
R4SAS
}
R4SAS
delete, а потом nullptr
R4SAS
эт нормально ?
R4SAS
разве не наоборот надо?
orignal
так и надо делать
orignal
сначала delete потом зануление
R4SAS
почему?
orignal
мы удаляем указатель
R4SAS
ну а в релоаде у нас такое:
R4SAS
// recreate HTTP proxy
R4SAS
if (m_HttpProxy)
R4SAS
{
R4SAS
m_HttpProxy->Stop ();
R4SAS
m_HttpProxy = nullptr;
R4SAS
}
R4SAS
ReadHttpProxy ();
orignal
а потом говорит что куда он показывает что невадино
orignal
плохо что delete не делам
R4SAS
добавлю
orignal
кстати m_HttpProxy какого типа
orignal
погоди
R4SAS
i2p::proxy::HTTPProxy * m_HttpProxy;
orignal
тогда да надо добиавть delete
R4SAS
class HTTPProxy: public i2p::client::TCPIPAcceptor
orignal
я видать там подумал что он shared_ptr
R4SAS
не проверяем
R4SAS
по идее там просто 2 строки добавить на m_ClientForwards и m_ServerForwards?
orignal
я не знаю что тут псих задумал
R4SAS
это
R4SAS
и ниже типа удалять должно
orignal
неее
orignal
там же лямбда передается
R4SAS
ну, он везде фолс ставит в параметрах туннеля
R4SAS
нет?
R4SAS
точнее не так
R4SAS
он сначала просто проходится по списку, везде изменяя параметр, но return true не дает ничего удалить
R4SAS
а при втором проходе смотрится уже возвращенное значение
R4SAS
и тут происходится удаление туннеля если false осталось
R4SAS
(а вобще это дичь какая та)
orignal
вот и надо разбираться с логикой
orignal
дык ясное дело что дичь
orignal
все
orignal
выпилил тоннели через эль-гамаль
R4SAS
orignal: m_SharedLocalDestination->Release ();
R4SAS
Release из std::shared_ptr?
orignal
нет
orignal
там какой то счетчик свой есть
R4SAS
int Release () { return --m_RefCounter; };
R4SAS
ясно
R4SAS
мы почему то не делаем этого перед остановкой ш2зв
R4SAS
сразу nullptr
R4SAS
и никаких Stop не вижу
orignal
а x3
orignal
я уже не помню чего я там нагородил ))
R4SAS
orignal: слушай, я не понимаю
orignal
чего?
R4SAS
auto ins = m_ServerTunnels.insert (std::make_pair ( std::make_pair (localDestination->GetIdentHash (), inPort), serverTunnel));
R4SAS
ins.first->second->isUpdated = true;
R4SAS
что в этом случае first?
R4SAS
std::map<std::pair<i2p::data::IdentHash, int>, std::shared_ptr<I2PServerTunnel> > m_ServerTunnels;
orignal
первый или второй?
R4SAS
??
orignal
там возвращает пару <итератор, вставлено>
orignal
<R4SAS> ins.first->second->isUpdated = true;
orignal
про какой first ты говоришь?>
R4SAS
который после точки
R4SAS
ins.first
orignal
это итератор показывающий на элемент мапа
orignal
у него в свою очередь first это ключ
R4SAS
т.е. там мап, и на нем сразу же берез значение?
orignal
а second это значение
R4SAS
берем*
R4SAS
а
orignal
так поотому и делаем first->second
R4SAS
т.е. там будет I2PServerTunnel в итоге?
orignal
да. указатель на него
R4SAS
ок
R4SAS
ща попробую разобраться с удалением UDP
R4SAS
neyytktq
R4SAS
туннелей
R4SAS
но вообще, мне логика перезагрузки туннелей не нравится
orignal
мне тоже
R4SAS
то что просто меняется значение что не обнолен, а потом просто загружается заново
R4SAS
а тогда в этом ins под second что будет?
orignal
в second что обновлен или старый
orignal
он типа bool
R4SAS
т.е. если загрузиьт такой же точь в точь туннель, то скажет false?
R4SAS
и какие критерии определяют такой же он или нет?
R4SAS
эм, а как UDP туннели деинциализируются?
R4SAS
лол,Ю ни как
R4SAS
только деструктором...
R4SAS
да уж
R4SAS
смотри что происходит
R4SAS
Clients: New transient keys address ... created
R4SAS
Destination: parameters for tunnel set to: ...
R4SAS
Clients: I2P client tunnel destination updated
R4SAS
Clients: I2P client tunnel for endpoint 127.0.0.1:XXXX already exists
R4SAS
значит по факту туннель не запускается
R4SAS
если я пытаюсь на 127.0.0.1:XXXX стучаться, то меня просто отбрасывает
R4SAS
изменение I2CP параметров не решает проблемы
R4SAS
т.е. даже после изменения деста ломается
R4SAS
я верно понимаю что оно дает false на ins.second ибо видит что есть подобный туннель таким же endpoint?
R4SAS
я чет не уверен, что это:
R4SAS
TCPIPAcceptor (address, port, localDestination)
R4SAS
будет работать после вызова
R4SAS
ins.first->second->SetLocalDestination (clientTunnel->GetLocalDestination ());
R4SAS
вызывающего это:
R4SAS
я так понимаю в любом случае надо останавливать TCPIPAcceptor
R4SAS
делать замену и потом запускать заново
R4SAS
видимо из-за этого и начинает именно падать при остановке после релоада
R4SAS
да, остановка, замена и запуск туннеля пофиксили
R4SAS
ins.first->second->SetLocalDestination (clientTunnel->GetLocalDestination ());
R4SAS
ins.first->second->Start ();
R4SAS
дест запустился корректно
R4SAS
и порт отвечает
R4SAS
orignal: у тебя походу оно не отваливалось после релоада потому что ты на статичных ключах проверял
orignal
возможно
orignal
тогда коммить
Ананташеша
подлец
orignal
кто?
Ананташеша
хз
orignal
LeaseSets: 176
orignal
однако
R4SAS
orignal: сначала объясни как поправить ту хрень
R4SAS
которую нагородил псих
R4SAS
VisitTunnels
R4SAS
VisitTunnelsContainer (m_ClientForwards, v) не проканывает ибо в лямбде передается (I2PService * s)->bool
orignal
а что ты хочешь?
R4SAS
сделать чтобы только { s->isUpdated = false; return true; } передавалось, а тип ставить в самом VisitTunnels
R4SAS
т.е. по факту что эта хрень делает
R4SAS
они сначала ставит всем туннелям isUpdated = false
R4SAS
а потом, после обновления туннелей топять проходит итерацией по всем, смотрит на isUpdated, и если он false, то делает остановку и удаление туннеля в
R4SAS
в VisitTunnelsContainer
orignal
не понимаю вопроса
orignal
в том смысле что тебе нужно
orignal
можешь вообще без этого всего
orignal
просто в том месте напиши итератор по списку тоннелей и все
R4SAS
попробую
orignal
эти Visit* умножение сущностей без надобности
R4SAS
а как там итерацию сделать по всем?
R4SAS
каждый отдельно?
orignal
for (auto it: m_Tunnels)
orignal
как обычно
orignal
в 17 можно for (auto [ident, dest]: m_Tunnels)
R4SAS
так
R4SAS
чятднт?
R4SAS
m_ServerTunnels.erase(it.first);
R4SAS
это как я понимаю не правильно, особенно в итераторе
R4SAS
копию списка делать?
R4SAS
вот так в общем пытался сделать
orignal
m_ServerTunnels.erase(it.first);
orignal
так нельзя
orignal
потому что ты ломаешь сам итератор
orignal
посмотри как у меня сделано
orignal
в этом случше
orignal
в Tunnels.cpp например
R4SAS
for (auto it = pendingTunnels.begin (); it != pendingTunnels.end ();)
R4SAS
такое?
R4SAS
типа так
R4SAS
но после релоада вылет
R4SAS
ладно, завтра наверно
R4SAS
если время будет