API Delphi

Базовая функциональность RouterOS
ITProfService
Сообщения: 2
Зарегистрирован: 06 янв 2021, 19:43

API Delphi

Сообщение ITProfService »

Добрый день.
Попытался воспользоваться программой api_studio, однако столкнулся с простейшей проблемой:
  • Версия ROS: 6.48 (firmware 6.48)
  • API включено для моих подключений
Пр попытке подключиться программа говорит, что логин или пароль неправильный.
Вот лог:
06.01.2021 19.27.51 - info 103 - connecting to 172.18.254.254
06.01.2021 19.27.51 - DEBUG 11001 - 172.16.254.254 tr_mkrouter.msend /login
06.01.2021 19.27.51 - DEBUG 11001 - 172.16.254.254 tr_mkrouter.msend /login
06.01.2021 19.27.51 - DEBUG 11001 - 172.16.254.254 tr_mkrouter.msend =name=admin
06.01.2021 19.27.51 - DEBUG 11001 - 172.16.254.254 tr_mkrouter.msend =response=00af078270207cf6f97695588cdd13fa3f
06.01.2021 19.27.51 - #ERROR# 10008 - 172.16.254.254 tr_mkrouter.open opening router error = !trap=message=invalid user name or password (6)
что делать? Есть варианты?
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: API Delphi

Сообщение Chupaka »

Судя по всему, ваша версия api_studio не поддерживает новый тип логина, который реализовали в 6.43 и сделали единственно возможным в 6.45.1. Либо обновитесь, либо <минутка рекламы> воспользуйтесь моей реализацией API для Delphi: https://github.com/Chupaka/Delphi-RouterOS-API :) </минутка рекламы>
ITProfService
Сообщения: 2
Зарегистрирован: 06 янв 2021, 19:43

Re: API Delphi

Сообщение ITProfService »

Всё работает прекрасно по Вашей рекомендации. Подскажите, каким образом получить результат /export ?
Вот для определённого списка есть такая конструкция:
Res := ROS.Query(['/ip/firewall/address-list/print', '?list=hackers'], True);
lbBGL.Items.Add(Res['address']);
как в этом случае получить экспорт конфигурации? Что нужно писать для Res?
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: API Delphi

Сообщение Chupaka »

Увы, в API это сделать не так-то просто... Универсальный вариант - сделать экспорт в файл, потом файл забрать по ftp/scp какому-нибудь. Если не ожидаем, что размер файла будет больше 4096 байт - тогда можно через /file/print с получением contents запросить через тот же API.

А вам экспорт зачем?..