Size: a a a

Wi-Fi в метро

2020 October 28
Wi-Fi в метро
61-я сборка #webview!

Что-то всё никак к новым адреса не привыкну. Замена init_smart сработала, а вот адреса я опять не те прописал. В этой сборке ну точно должно заработать :)


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2020 October 31
Wi-Fi в метро
62-я сборка #webview!

#webview!

На МЦК, ЦППК и, возможно, МЦД появился новый алгоритм. В этой сборке я немного поправил V2WV, чтобы в логах было видно, что нужно делать дальше. Когда webview сможет успешно подключиться, информации в логе должно стать достаточно, чтобы починить master без сбора дампов.

Скорее всего эта сборка не подключится, но она точно пройдёт дальше, чем предыдущая. Поэтому присылайте мне логи вне зависимости от результатов. Заранее спасибо :)


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2020 November 01
Wi-Fi в метро
385-я сборка #master и 63-я сборка #webview!

#master и 63-я сборка #webview!

План с 62-й сборкой сработал! В этих двух сборках я попробовал обновить MosMetroV2 и MosMetroV2WV, чтобы они могли нормально подключаться на МЦК, МЦД и ЦППК.

Как оказалось, в этих сетях используется тот же алгоритм, что и в Санкт-Петербурге, но опять с немного изменёнными адресами (в Москве нет префикса /spb).


master: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
webview: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2020 November 05
Wi-Fi в метро
386-я сборка #master!

#master!

Всего-то спустя 2.5 года наконец-то можно удалить ветку #webview, так как все её функции теперь есть и в #master!

По сути, эта сборка почти совпадает с 63-й #webview. Вот список отличий:

* Алгоритм MosMetroV2WV отключён по умолчанию. Я не хотел перебрасывать всех на более медленный алгоритм без особой причины. Данный алгоритм можно включить в настройках подключения, если вы хотите использовать именно его;
* Названия этапов подключения переведены на русский язык (их всего 3). Надо было это сделать ещё в самом начале;
* Удалена настройка pref_mmv2wv_blacklist. Она позволяла очень легко сломать подключение через WebView, и просто делала работу WebView менее предсказуемой;
* Удалена настройка pref_trust_all_certs. Она уже давно была удалена в master, а вот в webview я о ней забыл. Суть в том, что приложение не должно доверять любым сертификатам, так как это ломает 2-й этап проверки generate_204. Вместо этого приложение теперь доверяет пользовательским CA, установленным в системе. То есть MITM остаётся возможным, но при этом он может производиться только по воле пользователя;

Ветка webview-experimental уже удалена, а webview будет удалена чуть позже, когда в master появится что-то новое. webview сама предложит обновиться до master, когда это произойдёт.

Дальнейшие планы:
* Обработка midsession. Напомню, что он проявляется в виде восклицательного знака рядом со значком Wi-Fi и уведомления "Требуется вход в сеть". Вроде у меня уже были наработки по этому направлению, просто их надо найти и обновить;
* Релиз 2.0! Я даже, наверное, не смогу составить полный список изменений, т.к. прошло уже 2 года с прошлого релиза. Сейчас самое время сделать новый релиз, т.к. есть важные и актуальные исправления :)


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
387-я сборка #master!

#master!

Одно небольшое исправление: теперь MosMetroV2WV действительно отключён по умолчанию.

Я просто забыл, что значение нужно менять в нескольких местах одновременно.


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2020 November 21
Wi-Fi в метро
388-я сборка #master!

#master!

В метро Москвы тоже начал периодически появляться новый алгоритм, который сначала включили в Санкт-Петербурге, а затем на МЦК, МЦД и ЦППК. Странно то, что они уже в 3-й раз используют немного разные адреса страниц. На этот раз отличие было совсем незначительное, но приложение его само обойти не смогло.

Обновлены оба алгоритма (MosMetroV2 и MosMetroV2WV). Насчёт V2WV я уверен чуть больше, потому что я там не делал никаких предположений - вся нужная информация уже была в логах.

Чтобы убедиться, что всё работает правильно, мне пригодятся логи обоих алгоритмов. Так что если один не заработает, то можно попробовать другой. Напомню, что переключаться между ними можно в настройках подключения: если MosMetroV2WV выключен, то вместо него используется V2 (и наоборот).

Кстати, ветка webview больше не существует. Если вы до сих пор её используете, то она предложит обновиться до master. Не волнуйтесь, в master теперь есть всё её функции 👍


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2020 November 22
Wi-Fi в метро
389-я сборка #master!

#master!

* Релиз 2.0!
* Добавлена метрика для разных видов MosMetroV2 - они позволит нам понять, какие алгоритмы используются в каждом сегменте сети, и встречается ли до сих пор его оригинальная версия;
* Исправлен вылет WebView в некоторых сегментах (например, dit_enforta). Судя по отчётам ACRA, эта ошибка была причиной наибольшего количества вылетов за последнее время;
* Изменено описание MosMetroV3 в настройках, чтобы было более очевидно, что этот алгоритм давно устарел и больше не используется;
* MosMetroV2WV теперь покрывает все известные разновидности алгоритма только с помощью регулярных выражений. То есть теперь алгоритм может измениться в любой момент, но приложение всё-равно продолжит работать;

Важно: С этой сборки откатиться на более старую можно только путём полной переустановки приложения. Это вызвано тем, что из-за релиза код версии изменился (был 71, а стал 72), а Android не допускает понижения версий.


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2020 November 25
Wi-Fi в метро
390-я сборка #master!

#master!

В 3-х этапной проверке соединения с интернетом нашлась одна проблема: приложение замечает midsession, но не может его отключить, из-за чего процесс зацикливается. В данной сборке я временно отключил проверку на ложно-негативные ответы generate_204, чтобы этого больше не происходило.

Также теперь приложение собирается под Android 10, что позволило включить поддержку глобальной тёмной темы. Вручную тему пока переключать нельзя - эта функция ещё дорабатывается.

В ближайших планах:
* Периодическая проверка наличия обновлений вне зависимости от успешности подключения;
* Правильная обработка midsession (чтобы отключить уведомление "Требуется вход в сеть");


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2020 November 27
Wi-Fi в метро
1-я сборка #experimental!

#experimental!

Да, снова эксперименты! :)

* В метро Москвы приложение теперь будет подключаться с помощью старого алгоритма, когда это возможно. Суть в том, что хоть адрес первого шага и изменился, с него по прежнему идёт перенаправление на старый алгоритм. То есть в метро сейчас одновременно работает два разных алгоритма: приложение использует новый, а все остальные - старый;

* Снова включена обработка midsession. Я подозреваю, что именно из-за предыдущего пункта приложение зацикливалось на midsession. Провайдер ожидал, что пользователь нажмёт на уведомление и увидит страницу по старому алгоритму, а приложение вместо этого шло по новому, из-за чего midsession не пропадал, а приложение продолжало попытки;

* ConnectionService теперь имеет представление о midsession и будет предотвращать бесконечные циклы, если midsession не пропадёт после первой попытки. Ну и вообще теперь можно спокойно сохранять данные между последовательными подключениями;

ВАЖНО: данная сборка не просто так названа экспериментальной. Мало того, что она может сломаться в любой момент, она ещё и отправляет отчёты самостоятельно (вместе с логом). Отчёты отправляются в следующих случаях:
* Если удалось заменить новый алгоритм на старый в московском метро;
* Если удалось или не удалось отключить midsession;


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental
источник
Wi-Fi в метро
391-я сборка #master!

#master!

Тест прошёл успешно! Новый алгоритм действительно можно обойти через старый, что также позволяет справиться с midsession.

В этой сборке есть все изменения из 1-й experimental за исключением автоматической отправки логов.

Дополнительные изменения:
* В лог больше не будут выводиться страницы длиной больше 512 строк;
* Обход нового алгоритма включён для всех сегментов. Не факт, что он заработает в Санкт-Петербурге или электричках Москвы, но если приложение увидит признак присутствия старого алгоритма, то оно попробует подключиться через него;

Посмотрим, как будет работать эта сборка. Если не будет никаких проблем, то сделаю небольшой релиз в ветке play, чтобы исправить зацикливание на midsession.

Ветка experimental будет удалена, так что приложение должно будет само предложить обновиться на master.


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2020 November 28
Wi-Fi в метро
Увидел на 4PDA претензию, что здесь все ссылки ведут на последнюю сборку, а не на указанную в посте.

Дело в том, что это та же ссылка, которую использует приложение. Она доступна из метро (основной домен заблокирован, а этот нет), не зависит от доступности Jenkins и ведёт статистику скачиваний, чтобы я мог понять соотношение пользователей на разных ветках.

Старые сборки по-прежнему доступны в Jenkins: https://jenkins.thedrhax.pw/job/mosmetro-android-pipeline/

Но если вы всё-таки решили откатиться на предыдущую версию, сообщите мне, пожалуйста, причину. Тихие откаты проекту не помогут, и проблемы продолжат накапливаться. А так я смогу хотя бы попробовать всё исправить или откатить изменения. Спасибо :)
источник
Wi-Fi в метро
391-я сборка #master должна нормально работать в метро Москвы, но в остальных сегментах при появлении midsession она может выдавать ошибку подключения. Само подключение к сети работает нормально, вся проблема именно в периодической проверке соединения уже после успешного подключения. В следующей сборке постараюсь исправить 👍

Но вообще с midsession будет много проблем. Уже известно, что алгоритмы его работы отличаются в метро Москвы, Санкт-Петербурге и аэроэксрессах. Надо будет сделать так, чтобы приложение игнорировало ошибки обработки midsession, прекращало попытки его отключить и продолжало работать в обычном режиме. А дальше уже можно будет делать отдельные алгоритмы специально под midsession.
источник
Wi-Fi в метро
Тестирование с автоматической отправкой отчётов показало свою эффективность. Скоро надо будет его повторить. Как думаете, какой вариант лучше?
Окончательные результаты
24%
Снова сделать экспериментальную ветку, где отправка отчётов будет включена для всех по умолчанию
62%
Добавить в меню "Отладка" настройку, которая позволит вам принять участие в этом и будущих тестах
14%
Не принимаю участие в тестированиях
Проголосовало: 353
источник
Wi-Fi в метро
392-я сборка #master!

#master!

* Обработка midsession переделана с нуля. Теперь она не приводит к перезапуску подключения, а тихо отрабатывает в фоне. В случае неудачи попытки прекращаются до следующего запуска процесса;

* Если у приложения нет подходящего алгоритма для обработки midsession, оно будет пробовать просто следовать по перенаправлениям до тех пор, пока они не закончатся. Это сработало бы с первым вариантом midsession, а также может помочь в аэроэкспрессе и других сегментах;

* Обработку midsession теперь можно отключить в настройках подключения (пункт "Отключать midsession"). Хотя сейчас midsession больше не должен мешать, в будущем это может измениться. Я сообщу, если это случится;

* Добавлена программа тестирования! Вы можете вступить в неё, включив "Участие в тестировании" в меню "Отладка". При этом приложение будет отправлять лог, если сработает одно из заданных условий. Например, в этой сборке условие одно: завершение обработки midsession. В будущих сборках набор условий будет меняться (а я буду об этом сообщать в списке изменений);


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
Для активации тестирования нужно включить эти три пункта. Если один из них выключен, то все, что ниже него, будут недоступны, так как они зависят друг от друга.
источник
2020 November 29
Wi-Fi в метро
394-я сборка #master!

#master!

* Исправлен потенциальный баг с бесконечным циклом при обработке midsession с неизвестным алгоритмом;
* Midsession теперь игнорируется в самом начале. Фоновый процесс начинает разбираться с midsession сразу после успешного подключения, чтобы основное подключение лишний раз не вылетало с ошибкой;
* Обновлены данные по донатам. По многочисленным просьбам добавлена карта Сбербанка ( ͡° ͜ʖ ͡°). Информация находится там же, где и всегда: кнопка "Поддержать" в заголовке главного меню;

Активные тесты:
* Обработка midsession, вне зависимости от успешности;
* [NEW] Неудачный обход нового алгоритма через старый;

Напомню, что вы можете присоединиться к автоматическому тестированию с помощью опции "Участие в тестировании" в меню "Отладка" (см. предыдущий пост). Это может значительно ускорить подготовку нового релиза ❤️

P.S. 393-я сборка провалилась из-за опечатки, поэтому её пришлось пропустить :)


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
395-я сборка #master!

#master!

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

* Исправлен конфликт MosMetroV2WV и обработчика midsession. WebView завершался сразу, как только появлялось соединение с интернетом, а при обработке midsession это соединение есть с самого начала;
* Снова заблокированы адреса mcc.wi-fi.ru, spb.wi-fi.ru и gowifi.ru. Из-за mcc.wi-fi.ru приложение вылетело 2 раза;

Активные тесты не изменились по сравнению с предыдущей сборкой.


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2020 December 01
Wi-Fi в метро
396-я сборка #master!

#master!

* Расширен лог обработки midsession с неизвестным алгоритмом. Может быть удастся понять, что ещё требуется в аэроэкспрессе;
* Добавлена отдельная метрика, чтобы настоящие подключения не путались с midsession в статистике. Заодно так можно будет понять, что midsession перестал обрабатываться правильно;
* Значительно переделана проверка обновлений и новостей проекта. Теперь проверка происходит не сразу после успешного подключения, а периодически в фоне (пока что раз в 3 часа). Проверка производится только через Wi-Fi, и только когда это разрешает Android;

Завершённые тесты:
* Неудачный обход нового алгоритма через старый - неудачи были только по внешним причинам (отсоединение от сети, падение DNS и т.д.);
* Обработка midsession, вне зависимости от успешности - много успешных результатов (Москва и Санкт-Петербург), один неудачный (аэроэкспресс);

Активные тесты:
* [NEW] Неисправность проверки обновлений;
* [NEW] Неудачная обработка midsession;

Если всё пройдёт гладко, то завтра завершатся последние 2 теста, и можно будет выпустить новый релиз 👍


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
397-я сборка #master!

#master!

* Релиз 2.1!
* Теперь midsession обрабатывается и при ручном подключении. Ранее он обрабатывался только после успешного подключения в автоматическом режиме, поэтому эта функция была недоступна для тех, у кого до сих пор не работает автоматика;


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2020 December 05
Wi-Fi в метро
398-я сборка #master!

#master!

* Изменён приоритет адресов во внутреннем DNS-клиенте. Теперь приоритет отдаётся адресам, которые нашёл сам DNS-клиент, а не тем, которые удалось считать из Android API. Это может помочь с ошибками UnknownHostException у пользователей с включённым Private DNS;

* Обработчик midsession теперь будет уведомлять систему о том, что состояние подключения изменилось. То есть уведомление "Требуется вход в сеть" теперь должно пропасть почти сразу после успешного отключения midsession (как и после обычного успешного подключения);

* Добавлен постоянный фоновый процесс. Это довольно важное изменение, которое может помочь в тех случаях, когда система не сообщает приложению об изменении состояния Wi-Fi. Когда этот процесс включён, он закрепляется уведомлением (чтобы система его не завершила) и активно слушает события Wi-Fi. Когда он получает нужное событие, он запускает основной процесс;

Если у вас приложение не реагирует на подключение к Wi-Fi и вам приходится запускать ручное подключение, попробуйте включить "Постоянный фоновый процесс" в главном меню.

Да, при включённом фоновом процессе будет показываться постоянное уведомление. Его можно скрыть в настройках системы, но это может привести к неопределённым последствиям. Я планирую реализовать индивидуальную настройку уведомлений в ближайшее время, чтобы это уведомление можно было свернуть и спрятать.


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник