Ein weiterer Routeros -API -Delphi -Client. Unterstützt API über TLS- und Routeros 6.43+ -API -Anmeldemethode.
Offizielle API -Dokumentation: https://wiki.mikrotik.com/wiki/Manual:api
Mikrotik Forum Thema: https://forum.mikrotik.com/viewtopic.php?f=9&t=31555
Dies ist eine Implementierung des Mikrotik -Routeros -API -Clients für Delphi. Es unterstützt die Ausführung paralleler Anfragen an einen Router und verfügt über eine datenbankähnliche Schnittstelle für die Benutzerfreundlichkeit.
Die Routerosapi -Einheit enthält die Definition von zwei Klassen, die Sie mit dem API -Protokoll aus Ihren Delphi -Programmen arbeiten müssen.
Diese Klasse verkauft Eigenschaften und Methoden, um eine Verbindung zu einem Router über das Routeros -API -Protokoll herzustellen.
Diese Funktion stellt eine Verbindung zum Router her und führt eine Anmeldeverfahren durch. Es gibt wahr zurück, wenn das Anmeldung erfolgreich war, ansonsten falsch .
Macht eine Frage zum Router. Anfrage ist eine Reihe von Zeichenfolgen, der zuerst der Befehl ist und andere Parameter. Wenn GetAllAfterQuery wahr ist, wird trostapiresult.getall nach dem Senden einer Abfrage ausgeführt.
Wenn Sie keine Ausgabe von Ihrer Abfrage erhalten müssen, verwenden Sie diese Methode. Es werden einfach die Abfragefunktion aufgerufen und die Free zurückgegeben.
Mit dieser Eigenschaft können Sie den Zeitüberschreitungswert für Netzwerkoperationen (in Millisekunden) festlegen.
Diese schreibgeschützte Eigenschaft enthält eine Textbeschreibung des letzten Fehlers.
Trennen Sie den Router.
Diese Klasse bietet Ihnen die Möglichkeit, mit Daten zu arbeiten, die aus Abfragen zurückgegeben werden. Jede Befehlsausführung ist in ihrem Trostenelult -Objekt "isoliert", sodass Sie parallele Anfragen durch nennen trosticlient.Query und mehrere Trostimesult -Objekte erhalten können.
Gibt den Parameterwert des Namens ( Wort in Bezug auf die API) im aktuellen Satz zurück. Der bevorzugte Weg, um das Ergebnis zu erhalten, ist Folgendes: apiresult ['Parmname'] anstelle von apiresult.ValuebyName ('Parmname') . Sie können den Paramamen sowohl mit als auch ohne Führung "=" Zeichen verwenden ( Apiresult ["Adresse"] und apiresult ["= Adresse"] geben dasselbe Ergebnis zurück).
Gibt den aktuellen Satz des Abfrageergebnisses zurück (Typ ist eine Trostierz).
Erhält einen Satz vom Router. Wenn Wait Parameter wahr ist, wartet die Funktion, bis der Satz empfangen wird. Wenn das Warten falsch ist und vorerst keine Sätze empfangen wurden, gibt die Funktion falsch zurück. Dies ist hilfreich bei der Ausführung von Infinite -Befehlen (z. B. 'Hören') in der GUI, wenn Sie die Aktionen anderer Benutzer verarbeiten müssen: Sie sollten Getone mit Warte = False regelmäßig aufrufen und im Falle eines negativen Ergebniss eine Zeit lang einfach etwas anderes tun.
Empfängt alle Sätze bis zu '! Done' und gibt dann wahr (oder falsch im Falle einer Auszeit).
Gibt die Anzahl der empfangenen Sätze zurück, nachdem Sie Getall angerufen haben.
Gibt true zurück, wenn es im Abfrageergebnis mehr Satz (n) gibt.
Kehrt wahr, wenn es während des Getall Fallen gab
Gibt true zurück, wenn '! Done' in Getone gesetzt wurde
Verschiebt sich auf den nächsten Satz in Getall
Die aktuelle Befehlsausführung storniert.
Beispiel Apitest- Anwendung kann in Abschnitt Releases heruntergeladen werden: https://github.com/chupaka/delphi-routeros-api/releases
Zunächst sollten wir eine Variable deklarieren und eine Instanz von Trosticlient erstellen:
var
RouterOS: TRosApiClient;
RouterOS := TRosApiClient.Create;Jetzt stellen wir eine Verbindung zum Router her und führen Anmeldungsprozess durch:
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 ;Alle Abfragen werden durchgeführt, indem die Abfragefunktion von Trosticlient aufgerufen wird. Es gibt eine Instanz von Trostimesult zurück, aus der alle Daten abgerufen werden.
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;Stellen Sie zunächst einen Timer in Formular und nennen Sie es tmrListen , aktiviert auf false . Dann machen wir eine Frage und aktivieren Timer:
ResListen := ROS.Query([ ' /log/listen ' ], False);
tmrListen.Enabled := True;Anschließend suchen wir nach neuen Daten zum Timer -Ereignis:
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 ;Für Diskussionen und Vorschläge können Sie den Mikrotik Forum Thread Routeros API Delphi Client überprüfen