Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    C# API — tik4net на GitHub

    C# API — tik4net на GitHub

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    C# API — tik4net на GitHub, RouterOS
     
    danikf
    Guest
    #1
    0
    27.08.2015 21:54:00
    Я только что опубликовал свой API-клиент для .NET. Он реализует выполнение параллельных запросов, которые легко обрабатываются благодаря интерфейсу, похожему на ADO.NET, и расширениям с O/R маппером для поддержки строго типизированного опыта (поддерживает как одиночные сущности, так и списки сущностей). Пожалуйста, оставляйте сообщения в этой теме, если вам нужна реализация какой-то функции или есть вопросы.

    Репозиторий: https://github.com/danikf/tik4net  
    Вики: https://github.com/danikf/tik4net/wiki  
    Как использовать: https://github.com/danikf/tik4net/wiki/How-to-use-tik4net-library  
    NuGet пакет: https://www.nuget.org/packages/tik4net/  
    Релизы (рекомендуется использовать NuGet пакет):  
    tik4net-3.5.0.zip (1.72 MB)  
    tik4net-3.4.0.zip (1.44 MB)  

    Функции:  
    - ITikConnection низкоуровневый API (отправка команд / чтение ответов, асинхронные команды)  
    - API, похожий на ADO.NET (ITikCommand + различные методы Execute…)  
    - O/R маппер для сущностей (connection.LoadList())  
    - В релизе есть генераторы C# кода для частичной автоматизации генерации кастомных сущностей из работающего роутера Mikrotik и официальной документации Mikrotik wiki  
    - API-SSL поддержка  
    - Поддержка нового процесса логина Mikrotik (начиная с версии 6.43)  
    - Скомпилированные dll для .NET 3.5, 4.0, 4.5.x, 4.6.x, netcoreapp1.1, netcoreapp2.0, netstandard1.3, netstandard1.4, netstandard1.6  
    - Работает с Xamarin и другими .NET рантаймами на базе Mono  
    - Загружайте dll только если вы не можете использовать NuGet пакет или исходники с GitHub  

    Примеры:

    Для примеров чтения/записи смотрите страницу с wiki по сравнению API и примерами CRUD.

    Чтение и вывод identity роутера Mikrotik:

    using (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api))  
    {  
     connection.Open(HOST, USER, PASS);  
     ITikCommand cmd = connection.CreateCommand("/system/identity/print");  
     Console.WriteLine(cmd.ExecuteScalar());  
    }

    Пример асинхронной команды Torch:

    using (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api))  
    {  
     connection.Open(HOST, USER, PASS);  
     var loadingContext = connection.LoadAsync<ToolTorch>(  
       torchItem => Console.WriteLine(torchItem.ToString()),  
       error => Console.WriteLine(error.ToString()),  
       connection.CreateParameter("interface", interfaceName),  
       connection.CreateParameter("port", "any"),  
       connection.CreateParameter("src-address", "0.0.0.0/0"),  
       connection.CreateParameter("dst-address", "0.0.0.0/0"));  

     Console.ReadLine();  
     loadingContext.Cancel();  
    }

    Чтение всех записей лога:

    var logs = connection.LoadList<Log>();  
    foreach (Log log in logs)  
    {  
       Console.WriteLine("{0}[{1}]: {2}", log.Time, log.Topics, log.Message);
    }

    Управление firewall:

    // найти первое правило firewall  
    var firstFirewallRule = connection.LoadAll<FirewallFilter>().First();

    // создать новое правило firewall и поставить его первым в списке  
    var firewallFilter = new FirewallFilter()  
    {  
      Chain = FirewallFilter.ChainType.Forward,  
      Action = FirewallFilter.ActionType.Accept,  
    };  
    connection.Save(firewallFilter);  
    connection.Move(firewallFilter, firstFirewallRule);

    _ПРИМЕЧАНИЕ: пожалуйста, не используйте устаревшую несовместимую версию 0.9.7 tik4net с https://code.google.com/p/mikrotik4net/._  
    tik4net-3.3.0.zip (1.42 MB)
     
     
     
    danikf
    Guest
    #2
    0
    16.09.2015 17:31:00
    Выпущена новая версия с обновлениями. Добавлены версии для .NET 3.5, .NET 4.0 и .NET 4.5.2.
     
     
     
    danikf
    Guest
    #3
    0
    20.09.2015 12:29:00
    Выпущена новая версия 1.2.0.0 с поддержкой enum (в качестве значений полей) и генераторами кода сущностей на C#. Наслаждайтесь, D
     
     
     
    danikf
    Guest
    #4
    0
    22.09.2015 20:45:00
    Пример использования высокоуровневого API (ветка dev на GitHub): // обновить IP на интерфейсе dhcp-client
    connection.LoadAll<IpDhcpClient>().First().Release(connection);
     
     
     
    MarkLFT
    Guest
    #5
    0
    30.09.2015 07:49:00
    Это похоже на отличный проект, который будет очень полезен. Спасибо, что поделились им с нами. Я только что скачал его и потратил некоторое время, изучая примеры и классы, но не заметил ничего, связанного с Hotspot, в частности с созданием и удалением пользовательских аккаунтов. Есть ли такая функция в библиотеке? Если нет, планируете ли вы добавить её в ближайшее время? Ещё раз большое спасибо. Марк
     
     
     
    danikf
    Guest
    #6
    0
    30.09.2015 19:20:00
    Привет! Очень скоро, примерно через неделю, я начну импортировать объекты hotspot, но мне нужны бета-тестеры, так как я сам эту функцию не использую. Если хочешь поучаствовать в бета-тестировании, буду благодарен за помощь. Либо можешь создать свои собственные классы (см. атрибуты TikEntity и TikProperty) и использовать их с O/R маппером в стиле расширений. Или же использовать API, похожий на ADO — управлять hotspot через стандартный интерфейс команды «Execute», как и в других библиотеках D.
     
     
     
    danikf
    Guest
    #7
    0
    30.09.2015 21:15:00
    Выпущена новая версия 1.2.2.0 с поддержкой сущностей пользователей хотспота (бета). Использование tik4net.Objects;  
    using tik4net.Objects.Ip.Hotspot;  

    var user = new HotspotUser()  
    {  
       Name = "TEST",  
       LimitUptime = "1:00:00",  
       Password = "secretpass"  
    };  

    _connection.Save(user);  

    Приятного использования, D
     
     
     
    MarkLFT
    Guest
    #8
    0
    01.10.2015 05:43:00
    У нас в офисе есть тестовая площадка, и мы довольно активно используем функцию Hotspot, так что с удовольствием поможем протестировать её для вас.
     
     
     
    danikf
    Guest
    #9
    0
    16.10.2015 20:32:00
    Опубликована версия 1.3.0.0. Новые сущности высокого уровня: пользователи Hotspot, интерфейс (eth/wlan) var list = Connection.LoadAll<InterfaceWireless.WirelessRegistrationTable>(); Наслаждайтесь, D
     
     
     
    danikf
    Guest
    #10
    0
    27.10.2015 22:54:00
    Выпущена версия 1.4.0.0: Исправлен подсчёт длины слова (благодарность h44z) Починено управление пользователями Hotspot Рефакторинг Async API (очистка) Наслаждайтесь, D
     
     
     
    normangon
    Guest
    #11
    0
    18.12.2015 08:49:00
    Впечатляющая работа! Я использовал старую устаревшую версию, но это просто отлично, без сомнений! Сейчас тестирую!
     
     
     
    geraneto
    Guest
    #12
    0
    19.12.2015 00:32:00
    Добрый вечер! Нужно зафиксировать все подключения с IP-адреса /ip/firewall/connections/print, где src-address ~192.168.2.2. Как это сделать? Спасибо!
     
     
     
    geraneto
    Guest
    #13
    0
    20.12.2015 23:21:00
    Добрый вечер… Я не могу выполнить команду /IP/firewall/connection/print, где src-address ~ “192.168.2.2”. Мне нужно отследить dst-address. Спасибо.
     
     
     
    danikf
    Guest
    #14
    0
    21.12.2015 18:50:00
    Привет! Есть несколько способов справиться с этой задачей:

    Используя  
    (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api))  
    {  
     connection.Open(HOST, USER, PASS);

    Через прямой вызов API (низкоуровневый доступ):  
    string[] command = new string[]
    {  
     "/ip/firewall/connection/print",  
     "?src-address=192.168.3.103"  
    };  
    var result = connection.CallCommandSync(command);

    Через API, похожее на ADO.NET:  
    var command = connection.CreateCommandAndParameters("/ip/firewall/connection/print",  
     "src-address", "192.168.3.103");  
    var result = command.ExecuteList();

    Через высокоуровневый O/R mapper API:  
    // Этот класс будет частью следующего релиза, но пока можно просто добавить его в свой код  
    [TikEntity("ip/firewall/connection")]
    public class FirewallConnection  
    {  
       [TikProperty(".id", IsReadOnly = true, IsMandatory = true)]
       public string Id { get; private set; }

       [TikProperty("connection-mark", IsReadOnly = true)]
       public string ConnectionMark { get; private set; }

       [TikProperty("connection-type", IsReadOnly = true)]
       public string ConnectionType { get; private set; }

       [TikProperty("dst-address", IsReadOnly = true)]
       public string DstAddress { get; private set; }

       [TikProperty("protocol", IsReadOnly = true)]
       public string Protocol { get; private set; }

       [TikProperty("src-address", IsReadOnly = true)]
       public string SrcAddress { get; private set; }

       [TikProperty("tcp-state", IsReadOnly = true)]
       public string TcpState { get; private set; }

       [TikProperty("timeout", IsReadOnly = true)]
       public string Timeout { get; private set; }  
    }

    // А вот код:  
    using tik4net.Objects;  
    ...  
    var result = connection.LoadList<FirewallConnection>(  
     connection.CreateParameter("src-address", "192.168.3.103"));

    Можно вообще пропустить фильтрацию в запросе, взять все соединения и отфильтровать их потом в C# (LINQ?). Медленно, зато просто... Наслаждайтесь, D
     
     
     
    geraneto
    Guest
    #15
    0
    22.12.2015 10:53:00
    Доброе утро… Я провёл тест следующим образом, используя (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api)) { connection.Open(HOST, USER, PASS); var command = connection.CreateCommandAndParameters(“/ip/firewall/connection/print”,“src-address”,“192.168.3.69”); var result = command.ExecuteList(); foreach (var c in result) { listBox1.Items.Add©; } } Однако результата нет.
     
     
     
    danikf
    Guest
    #16
    0
    22.12.2015 16:55:00
    Вероятно, нет активного соединения с IP 192.168.3.69 к роутеру (или отслеживание соединений отключено в конфигурации Mikrotik). Попробуйте загрузить все соединения без фильтра: var command = connection.CreateCommandAndParameters("/ip/firewall/connection/print"); var result = command.ExecuteList(); Наслаждайтесь, D
     
     
     
    danikf
    Guest
    #17
    0
    01.01.2016 18:21:00
    Выпущена новая версия 1.5.0.0. Что нового: функция TikListMerge — подробности на https://github.com/danikf/tik4net/wiki/TikListMerge, сущность FirewallConnection.ConnectionTracking, исправлены баги. Наслаждайтесь, D
     
     
     
    tmak
    Guest
    #18
    0
    27.01.2016 11:06:00
    Привет, danikf! Отличная работа, мужик, спасибо, что поделился. Я использую твою dll в проекте на vb.net, можешь объяснить, как установить #operations через CreateCommandAndParameters, чтобы применить операции к значениям в стеке? Пример для выполнения этого запроса: /interface/print
    ?type=ether
    ?type=vlan
    ?#|
     
     
     
    danikf
    Guest
    #19
    0
    28.01.2016 08:27:00
    Привет! Я только что обновил исходники на GitHub (обновление войдёт в следующий релиз). В обновлённой версии теперь можно просто форматировать текст команды с помощью фильтра. Непривязанный тип:

    var cmd = Connection.CreateCommandAndParameters(@"/interface/print
                               ?type=ether
                               ?type=wlan
                               ?#|");
    var list = cmd.ExecuteList();

    Строго типизированный вариант:

    var cmd = Connection.CreateCommandAndParameters(@"/interface/print
                               ?type=ether
                               ?type=wlan
                               ?#|");
    var list = cmd.LoadList<Interface>();

    Главная причина, почему стек параметров не поддерживается — это то, что он сильно усложнит API (выражения деревьев?). Поэтому на данный момент я решил не поддерживать такую конструкцию через параметры (возможно, в будущем). Наслаждайтесь, D
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры