Ссылка на роутер на сайте Yota.
Поскольку для малого бизнеса у нас нет возможности в пределах МКАД подключить проводной интернет по доступной цене, то поставили этот роутер, который ловит интернет по мобильной сети, а потом раздает его по wi-fi или проводу. В принципе по деньгам не дорого.
Однако есть и ложка дегтя на всю эту бочку меда — роутер Yota любит периодически забывать раздавать инет (может он зависает). Хочется отметить, что в роутере не предусмотрены админские примочки для адекватного администрирования девайса. Так, например, к нему можно подключаться исключительно через вэб-интерфейс. Можно ввести логин и пароль, а потом перейти на страницу настроек, где можно нажать кнопочку перезагрузки.
Нашел статью, в которой автор как бы поборол эту болезнь просто периодически перезагружая роутер с помощью CMD-скрипта. Однако в той версии вэб-интерфейса, с которой я столкнулся разработчики немного усилили процесс авторизации и мне этот скрипт не подошел. Пришлось ковырять вэб-морду самому.
Для начала я воспользовался встроенными средствами Firefox и отследил запросы, которые происходят при нажатии кнопки перезагрузки. Оказалось, что в этой версии изменилась строка для перезагрузки. Так, ключом выступала дата не в виде «time=dd.mm.yyyy», а указывалось количество миллисекунд, которые прошли с 1 января 1970 года (JavaScript getTime() метод) . Причем было введено ограничение на длительность сессии, поэтому нельзя было ввести любое число.
Авторизация происходила в заголовке запроса (хотя один из тестов показал, что почему-то можно вводить любой логин и пароль, поэтому есть предположение, что для перезагрузки авторизация не используется…)
Таким образом моя программа раз в установленный интервал (10 минут) проверяла наличие коннекта с помощью метода:
public void CheckForInternetConnection()
{
try
{
AddLog("Checking for Internet connection...");
CheckingConnection = true;
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://www.google.com");
{
IsInternetAvailable = true;
FaultsCounts = 0;
// Возвращаем установленный в настройках интервал (если было 5 секунд)
dispatcherTimer.Interval = new TimeSpan(0, INTERVAL, 0);
CheckingConnection = false;
}
}
catch
{
IsInternetAvailable = false;
CheckingConnection = false;
// Для проверки повторяем запросы через 5 секунд
dispatcherTimer.Interval = new TimeSpan(0, 0, 5);
FaultsCounts++;
if (FaultsCounts > 5)
{
AddLog("Ошибок подключения больше 5. Перезагружаем роутер.",
MessageBoxImage.Warning);
dispatcherTimer.Interval = new TimeSpan(0, 0, INTERVAL);
dispatcherTimer.Stop();
FaultsCounts = 4;
RouterReboot();
}
}
}
Скриншоты утилиты Yota Restart Tool:
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024