Outro cliente da API Delphi de Routeros. Suporta a API sobre o método de login da API TLS e Routeros 6.43+.
Documentação oficial da API: https://wiki.mikrotik.com/wiki/manual:api
Mikrotik Forum Tópico: https://forum.mikrotik.com/viewtopic.php?f=9&t=31555
Esta é uma implementação do cliente Mikrotik Routeros API para Delphi. Ele suporta a execução de solicitações paralelas em um roteador e possui interface semelhante ao banco de dados para facilitar o uso.
A unidade Routerosapi contém definição de duas classes que você precisa trabalhar com o protocolo API em seus programas Delphi.
Esta classe encapsula propriedades e métodos para fazer uma conexão com um roteador por protocolo API de roteteros.
Esta função se conecta ao roteador e executa o procedimento de login. Ele retorna true se o login foi bem -sucedido, false caso contrário.
Faz uma consulta para o roteador. A solicitação é uma variedade de strings, primeiro uma sendo o comando e outros são parâmetros. Se GetallafterQuery for verdadeiro , o TrosApiresult.getAll será executado após o envio de uma consulta.
Se você não precisar receber nenhuma saída da sua consulta, use este método. Simplesmente chama a função de consulta e o objeto retornou do Frees.
Com esta propriedade, você pode definir o valor do tempo limite para operações de rede (em milissegundos).
Esta propriedade somente leitura contém descrição textual do último erro.
Desconecta do roteador.
Esta classe oferece a você a capacidade de trabalhar com dados retornados das consultas. Cada execução de comando é "isolada" em seu objeto TrosApiresult , para que você possa fazer solicitações paralelas chamando o TrosApiclient.Query e recebendo vários objetos TrosApiresult .
Retorna o valor do parâmetro de nome ( Word em termos de API) na frase atual. A maneira preferida de obter o resultado é a seguinte: Apiresult ['Parmname'] em vez de apiresult.valueByName ('Parmname') . Você pode usar o nome do param com e sem liderar '=' caractere ( Apiresult ['endereço'] e apiresult ['= endereço'] retornar o mesmo resultado).
Retorna a frase atual do resultado da consulta (o tipo é trrosapisentence).
Recebe uma frase do roteador. Se o parâmetro de espera for verdadeiro , a função esperará até que a sentença seja recebida. Se a espera for falsa e nenhuma frase foi recebida por enquanto, a função retorna falsa . Isso é útil ao executar comandos infinitos (como 'ouvir') na GUI, quando você precisar processar as ações de outros usuários: você deve chamar periodicamente de getOne com espera = false e, em caso de resultado negativo, faça outra coisa por um tempo.
Recebe todas as frases até '! Feito', depois retorna verdadeiro (ou falso em caso de tempo limite).
Retorna o número de frases recebidas após ligar para Getall .
Retorna true se houver mais frases no resultado da consulta.
Retorna verdadeiro se houvesse armadilhas durante o getall
Retorna verdadeira se '! Coned' sentença foi recebida em Getone
Muda para a próxima frase recebida em getall
Cancela a execução do comando atual.
O aplicativo APITEST da amostra pode ser baixado na seção de lançamentos: https://github.com/chupaka/delphi-ruteros-api/releases
No começo, devemos declarar uma variável e criar uma instância de Trosapiclient :
var
RouterOS: TRosApiClient;
RouterOS := TRosApiClient.Create;Agora nos conectamos ao roteador e executamos procedimento de login:
if RouterOS.Connect( ' 192.168.0.1 ' , ' admin ' , ' password ' ) then
begin
// we are connected successfully
end
else
begin
// an error occured; text error message is in LastError property
end ;Todas as consultas são feitas chamando a função de consulta do Trosapiclient . Ele retorna uma instância de TrosApiresult a partir da qual todos os dados são buscados.
var
Res: TRosApiResult;
Res := RouterOS.Query([ ' /system/resource/print ' ], True);Res := ROS.Query([ ' /ip/arp/print ' , ' ?interface=ether2 ' ], True);
while not Res.Eof do
begin
SomeProcessingFunction(Res[ ' .id ' ], Res[ ' address ' ]);
Res.Next;
end ;
Res.Free;Primeiro, coloque um timer no formulário e nomeie -o tmrlisten , definido ativado para false . Então fazemos uma consulta e atribuímos o temporizador:
ResListen := ROS.Query([ ' /log/listen ' ], False);
tmrListen.Enabled := True;Em seguida, verificamos um novo evento de dados sobre o evento:
procedure TForm1.tmrListenTimer (Sender: TObject);
begin
repeat
if not ResListen.GetOne(False) then Break;
if ResListen.Trap then
begin
ShowMessage( ' Trap: ' + ROS.LastError);
Break;
end ;
if ResListen.Done then
begin
ShowMessage( ' Done ' );
ResListen.Free;
tmrListen.Enabled := False;
Break;
end ;
Memo1.Lines.Add(ResListen[ ' time ' ] + ' : ' + ResListen[ ' message ' ]);
until False;
end ;Para discussões e sugestões, você pode verificar o Mikrotik Forum Thread Routeros API Delphi Client