Как мы сделали российский удалённый доступ с E2E и P2P

Когда мы начинали делать проект, задача казалась обманчиво знакомой. Нужно получить изображение удалённого экрана, передать события мыши и клавиатуры в обратную сторону и как‑нибудь соединить два компьютера. Если смотреть на задачу с высоты архитектурной диаграммы, всё помещается в несколько прямоугольников.
Проблемы начинаются ниже этой диаграммы. Один пользователь находится за офисным межсетевым экраном, второй подключён через домашний роутер. На Windows экран входа живёт не в той сессии, в которой запущен интерфейс приложения. macOS может разрешить захват экрана и запретить ввод. Wayland вообще не даёт приложению просто взять содержимое экрана. При плохом канале очередь видеокадров растёт быстрее, чем сеть успевает их отправлять. А если пустить трафик через свой сервер, возникает неприятный вопрос: может ли этот сервер увидеть экран или перехватить управление?



















