Код в мешке
249 subscribers
9.08K photos
1.6K videos
2.11K files
42.7K links
Код в мешке - про кодинг, и не только...
Это личная записная книжка

https://t.me/joinchat/AAAAAEIy6oGlr8oxqTMS5w
Download Telegram
Viktor Oreshkin:
Все бы ничего, но вот только mtproto прокси не используются для звонков

Anna 🐱:
голосовые данные передаются вне mtproto
поэтому mtproto-прокси и не может их пропускать через себя
там отдельные relay-сервера, они могут по TCP и UDP работать
и могут только через socks5 идти
ну так это прямое соединение с relay-серверами
не через прокси

Savely Krasovsky:
То есть в России работать не будет?

Anna 🐱:
если relay-сервера забанены, не будет
а с SOCKS5 будет, так как в SOCKS5 можно завернуть что угодно

Savely Krasovsky:
Я это понимаю

Viktor Oreshkin:
Было бы круто, если бы peer-to-peer устанавливался и при заблокированном релее

Anna 🐱:
не круто, когда человек жмет "отключить p2p", а p2p все равно устанавливается
и человек сливает свой IP, не ожидая того

Viktor Oreshkin:
Когда включён p2p, но забанены релеи, звонок не пройдёт
Потому что перед установкой p2p соединения несколько пакетов идут через релей

Anna 🐱:
не через релей, а через мтпрото-сервер основной
да, это обычные мтпрото-пакеты, в них вся мета
а потом сразу п2п либо релей для голоса уже
гляньте доки:3

Savely Krasovsky:
Я просто что-то тупанул, тестил звонки со включенным VPN. Уже забыл про него

Anna 🐱:
ссылочку постараюсь найти. заодно перепроверю себя

Viktor Oreshkin:
Не следил за обновлениями, но раньше точно было так
Гришка ещё вроде расписывал, что это нужно в том числе для штук вроде hole punching и для более надёжного определения адреса внешнего

Savely Krasovsky:
А в таких вещах юзаются стандартные вещи типа STUN и TURN?
Я так понимаю обращение к релею это как раз аналог STUN

Anna 🐱:
а чем mtproto-сервера не хватает для решения этой задачи?

Viktor Oreshkin:
Не могу найти уже, а сам не настолько хорош в сетях, так что не отвечу

Anna 🐱:
https://core.telegram.org/api/end-to-end/voice-calls

Savely Krasovsky:
Судя по TDLib там можно установить этот P2P канал, но нужна tgvoip
И там использовались именно методы MTProto

Viktor Oreshkin:
Это *or* должно быть and, имхо

Anna 🐱:
у меня совсем нет сил
пожалуста можно конкретнее

Viktor Oreshkin:
Ну, так как это было приведено как аргумент к тому, что релеи при p2p неё нужны, вот единственное место, где это упоминается:
Besides that, the parties have to negotiate the protocols to be used, learn the IP addresses of each other or of the Telegram relay servers to be used (so-called reflectors),

Savely Krasovsky:
P2P же вообще не всегда технически возможен
Это я так, к слову

Anna 🐱:
если невозможен, то фоллбек до relay

Viktor Oreshkin:
Беглый просмотр исходников libtgvoip показывает, что:
- endpoint’ы от mtproto сервера скармливаются libtgvoip вместе с allowP2p
- Если allowP2p == true, то вызывается SendPublicEndpointsRequest, который в итоге отправляет на UDP релеи пакет с 0xFF x 16 (и peer tag). Если udp relay не доступен или его вообще нет, то все умирает на этом этапе.
После отправки пакета waitingForRelayPeerInfo устанавливается в true
- со временем приходит очередной пакет от relay сервера с tlid TLID_UDP_REFLECTOR_PEER_INFO. Если waitingForRelayPeerInfo установлен в true, то пакет обрабатывается: из него извлекаются ip/port текущего клиента и собеседника. ip/port собеседника добавляются в список доступных endpoint’ов как p2p. Если адреса клиента и собеседника одинаковые, то происходит попытка установить соединение по локалке
- (по локалке) В очередь ставится пакет с типом PKT_LAN_ENDPOINT с локальным адресом и портом
- (по локалке) когда такой пакет приходит, данные из него добавляются в endpoint’ы
Каждый раз, когда они добавляются, новый ставится как приоритетный и происходит их перепроверка и пересортировка

Вообще, как я это понимаю: Отправляется udp пакет на релеи, все nat’ы на пути выбирают свободные порты и создаётся цепочка пересылки. Приложение на конце никак не может узнать какие там в итоге получились адрес и порт, его может узнать только релей и отправить обратно.
В простейшем случае нужен хотя бы эхо-сервер на UDP, чтобы каждый клиент пробил канал и узнал адрес/порт, а потом уже по mtproto они бы этой информацией обменялись
Ну и вики подтверждает https://en.m.wikipedia.org/wiki/UDP_hole_punching

Можно, конечно, пробовать через третье лицо, которое тоже будет клиентом
Но вряд ли юзеры оценят, да и проблема курицы и яйца получается — как первый клиент должен узнать свои адрес и порт?
Спросил Гришку — в текущей версии все действительно так
Forwarded from UGram (Олег)
Forwarded from UGram (Олег)
🔞 Мод Plus Messenger
- Изменил название с Plus на Telegram+
- Полностью перебрал перевод и удалил все лишнее
- Новая Иконка Приложения
- Новая Иконка Уведомлений
- В строке уведомления Telegram +
- Карты отображаются корректно
- Оставлены только EN , RU языки
- Подпись изменена
Forwarded from UGram (Олег)
Версия Telegram + 4.6.0.6
Что нового:
— Добавлены быстрые ссылки на расширенные настройки. Длинным нажатием на любую настройку можно скопировать ссылку, или сразу ей поделиться.
— P2.6 в расширенных настройках позволяет скрыть некоторые функции в контекстом меню.
— Различные исправления и улучшения
#New #plus
Forwarded from UGram (Олег)
Forwarded from UGram (Олег)
UGram T4.6.0-M10.5.1

Просмотр чата по долгому тапу в списке чатов (для активации включить функцию в разделе Чат в настройках UGram
Просмотр канала перед вступлением;
Возможность удаления кнопки выключения уведомлений в каналах
Возможность выбрать вид пузырей и галочек доставки
Отображение фото во всю ширину экрана;
Добавлен доступ в скрытый раздел по отпечатку и жесту;
Возможность удалить фото контакта в диалоге, в заголовке, в списке чатов и контактов
Открытие черновиков (шаблонов) по долгому тапу на значке emoji.
Добавили недостающие значки в меню чата
Исправление ошибок.
#New @UGramod
Forwarded from UGram (Олег)
Forwarded from UGram (Олег)
UGram 2.apk
14.2 MB
Клон версии 10.5.1
Версия без «призрака»
Карты(местоположение) работают
Устанавливается рядом с UGram или Mobogram
#New #UGram2 #клон @UGramod
Forwarded from UGram (Олег)
Forwarded from UGram (Олег)
UGram 3.apk
13.4 MB
Клон версии 10.1
Последняя версия с функцией «призрака»
Карты(местоположение) работают
Отсутствуют все последние нововведения
#New #UGram3 #клон @UGramod
Forwarded from UGram (Помощник)
📌Добро пожаловать в UGram❗️
UGram - это русскоязычная модификация (мод) иранского неофициального клиента Mobogram, работающего на основе Telegram.
🔹Отличия UGram 🔹
✔️ Вырезаны все языки кроме Русского и Англ.
✔️ Русский Язык при установке
✔️ Всплывающие Подсказки на Русском и Английском языках (англ. перевод от @xxxvhxxx )
✔️ Удалена автоматическая подписка на иранские каналы
✔️ Заменена иконка приложения
✔️ Создавайте и отправляйте шаблоны в чате
✔️ Готовые шаблоны (на русском)
✔️ Глубокая оптимизация графики iCatalyst
✔️ По умолчанию применена тема Dark Blue от @DarkBlueTheme


‼️ Для правильного отображения даты ‼️
⚙️ Меню > Настройки UGram > Вид > Даты по персидски,
🔺🔺 ОТКЛЮЧИТЬ 🔻🔻
Forwarded from Free Telegram proxy
Прямая ссылка на MTProto proxy:
tg://proxy?server=akgov.tgproxy.network&port=8443&secret=726564736869656c6476706e2e636f6d

Этот сервер работает на официальном софте от Telegram.

Поддерживается клиентами:

Telegram Desktop alpha
Android
Telegram X iOS
Savely Krasovsky:
Best script yet for MTProto Proxy server side written in NodeJS

https://github.com/FreedomPrevails/JSMTProxy

It can handle more than 30000people at once

Орнул немного

С хайперформанс на яваскприте

@dotcypress
Код в мешке
Savely Krasovsky: Best script yet for MTProto Proxy server side written in NodeJS https://github.com/FreedomPrevails/JSMTProxy It can handle more than 30000people at once Орнул немного С хайперформанс на яваскприте @dotcypress
Savely Krasovsky:
Там хай перформанс только в сравнении имеет смысл, среди MTProto серверов. До этого были на PHP (который выжирал 10 гигов ОЗУ за 5000 коннектов) и на C#, который банально нестабилен.

Anna 🐱:
Я не понимаю, почему все пишут одно и то же, хотя можно сделать в два раза реализацию быстрее. Независимо от языка

Eugene Subbotin:
каждый проксятник себя мнит "официальным" :)

Официальные прокси - это исключительно те, которые выдаются самим Телеграмом в клиенты автоматически. Всё остальное - это скам

Savely Krasovsky:
Нет, речь про то что возможно телеграм тестирует свою реализацию сервера
Savva Mirzoyan:
Привет, друзья! как защитить бота от дудоса со стороны пользователя? или скажите, пожалуйста, как правильно это загуглить

Anna 🐱:
Redis, ttl
Savva Mirzoyan:
Привет, друзья! как защитить бота от дудоса со стороны пользователя? или скажите, пожалуйста, как правильно это загуглить

если это не какая то шутка, то я могу просто раз 15 нажать на клавиатуру и бот ляжет

A̐ndry В ☆ @rostext:
А это число нажатий нельзя нормировать?

Savva Mirzoyan:
если больше 5 за 3-5 секунд, то отклонять запросы?

Anna 🐱:
Именно так. Redis и ключ с TTL

A̐ndry В ☆ @rostext:
Блокируй клавиатуру на хх сек

Anna 🐱:
ты можешь либо сделать ограничение по количеству входящих сообщений в секунду
при превышении просто временно игнорировать человека и не присылать ему ничего
либо можешь сделать умнее: очередь
и обрабатывать её постепенно
тогда будешь вписываться в исходящие rate limit'ы независимо от потока входящих сообщений
лимит вообще не настраивается, он изначально строго задан телеграмом
и о конкретных порогах они открыто даже не говорят, есть примерные данные

@LyoSU 💜:
Тогда может такое произойти что бот будет тупить сильно

Makkusu Kage:
так и есть
иногда сутками не работал