Штож. Еще нужно сказать, ибо одного раза недостаточно.
Как показывает практика: блокировки и шатдауны в странах бывшего СССР только растут и ширятся. В Беларуси — сами видите. В России два задокументированных локальных шатдауна, сотни тысяч записей в реестре "запрещенных сайтов". В Казахстане — иногда блокируют без объявлений социальные сети и по-меньшей мере три зафиксированных локальных шатдауна. В Украине все еще не могут снять блокировку некоторых ресурсов.
Разумеется, это не может устраивать нормальных инженеров. Нужно решение....
Которое, на самом деле, есть. Это SDK NewNode для создания неубиваемых мобильных приложений.
В Беларуси нам удалось сделать пару имплементаций и выяснилось, что решение работоспособно даже во время шатдауна — 140 тысяч пользователей тому доказательство.
SDK прозрачно встраивается в любое приложение под Android и/или IOS и просто пропускает через себя весь трафик, если ничего не случается.
Но если что-то идет не так — источник данных становится недоступным (кстати по любой причине — вот тот же DDoS), то NewNode собирает данные от пиров, как в BitTorrent, и перенаправляет трафик через них. Грубо говоря, создается огромный рой шлюзов к ресурсу, которые заблокировать фактически невозможно.
Кроме того, NewNode — это наследник известного проекта FireChat, который умел передавать данные без интернета, создавая mesh-сети по беспроводным интерфесам смартфонов — по Wi-Fi и/или BlueTooth. Собственно, этим методом и обеспечивается передача данных во время шатдауна — просто от одного аппарата к другому (D2D — Device-To-Device).
В общем, если у вас есть приложение и вы хотите, чтоб оно работало при любых условиях, то NewNode вам нужен.
ВАЖНО: это все открытый исходный код. SDK написана на C++ и сотни инженеров уже проревьюили код на предмет "чего плохого". Вы и сами можете взять, и просмотреть.
ЕЩЕ ВАЖНЕЕ: имплементация не простая. А ОЧЕНЬ ПРОСТАЯ для тех, кто занимается мобильной разработкой — при компиляции релизного проекта нужно в конфиги добавить путь размещения кода NewNode с GitHUB. И все. В реальности есть проекты, которые все сделали за пару часов.
И в догонку: мы не называем действующие проекты с имплементированным NewNode, чтоб не привлекать внимания властей. Но таких проектов уже достаточно много, чтоб точно сказать, что это все работает. А еще — многих мы просто сами не знаем. Взять код с Гитхаба можно и анонимно.
За консультациями вы и сами знаете куда обращаться.
Исходный код и документация вот тут:
https://github.com/clostra/newnodeСпецификация с объяснялками на английском лежит тут [ОСТРОЖНО МОЗГ!]
https://github.com/clostra/newnode/blob/master/docs/newnode-spec.mdИ новость еще короткая: много раз спрашивали — будет ли версия для десктопа. Отвечаю: будет. Но позже.
Пока же чисто экспериментально можно развернуть под macOS / Linux
Создаем локальный репозиторий и компилируем:
git clone --recurse-submodules https://github.com/clostra/newnode.git
cd newnode
./build.sh
Запуск:
./client
Работать будет что-то типа прокси. Можно побаловаться.