Я только что опубликовал свой API-клиент для .NET. Он реализует выполнение параллельных запросов, которые легко обрабатываются благодаря интерфейсу, похожему на ADO.NET, и расширениям с O/R маппером для поддержки строго типизированного опыта (поддерживает как одиночные сущности, так и списки сущностей). Пожалуйста, оставляйте сообщения в этой теме, если вам нужна реализация какой-то функции или есть вопросы.
Репозиторий:
Вики:
Как использовать:
NuGet пакет:
Релизы (рекомендуется использовать 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 с
tik4net-3.3.0.zip (1.42 MB)
Репозиторий:
Вики:
Как использовать:
NuGet пакет:
Релизы (рекомендуется использовать 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 с
tik4net-3.3.0.zip (1.42 MB)
