@timofeev_sergei281093

MikroTik C# API ошибка авторизации?

Имеется простейшая консольная программка на c#, которая стучится на MikroTik через API.
До этого у меня было реализовано подобное, только писалось все в visual studio 2010 и версия router os была 6.43 и ниже(смену типа авторизации застал и поборол).
Теперь возникла проблема - "login failure for user мой_юзер from мой_ip via api". IP service настроены корректно, юзер и пароль проверены вдаль и поперек. IP=>firewall залочил все правила. В общем стандартные методы "а не дурак ли я" проверены. Класс API взят свежий с wiki.mikrotik. Версия Router OS 6.48.4, MikroTik RB1100.
Вот метод авторизации класса:
public bool Login(string username, string password)
        {
            Send("/login", true);
            string hash = Read()[0].Split(new string[] { "ret=" }, StringSplitOptions.None)[1];
            Send("/login");
            Send("=name=" + username);
            Send("=response=00" + EncodePassword(password, hash), true);
            if (Read()[0] == "!done")
            {
                return true;
            }
            else
            {
                return false;
            }
        }

P.S. есть реализация API на PHP, и она прекрасно работает.
  • Вопрос задан
  • 850 просмотров
Решения вопроса 1
@timofeev_sergei281093 Автор вопроса
Решено! Проблема в кривом классе в официальном источники, а точнее в методе авторизации. Размещенный метод там является устаревшим
Вот верный метод:
public bool Login(string username, string password)
    {
        Send("/login");
        Send("=name=" + username);
        Send("=password=" + password, true);
        if (Read()[0] == "!done")
        {
            return true;
        }
        else
        {
            return false;
        }
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы