Klien Routeros API Delphi lainnya. Mendukung API melalui TLS dan Routeros 6.43+ Metode Login API.
Dokumentasi API Resmi: https://wiki.mikrotik.com/wiki/manual:api
Mikrotik Forum Topik: https://forum.mikrotik.com/viewtopic.php?f=9&t=31555
Ini adalah implementasi klien API Mikrotik Routeros untuk Delphi. Ini mendukung eksekusi permintaan paralel ke router dan memiliki antarmuka seperti basis data untuk kemudahan penggunaan.
Unit Routerosapi berisi definisi dua kelas yang Anda butuhkan untuk bekerja dengan protokol API dari program Delphi Anda.
Kelas ini merangkum sifat dan metode untuk membuat koneksi ke router melalui protokol Routeros API.
Fungsi ini terhubung ke router dan melakukan prosedur login. Itu mengembalikan true jika login berhasil, FALSE sebaliknya.
Membuat kueri ke router. Permintaan adalah array string, yang pertama adalah perintah dan yang lainnya adalah parameter. Jika GetAllAfterQuery benar , maka Trosapiresult.getall dieksekusi setelah mengirim kueri.
Jika Anda tidak perlu menerima output apa pun dari kueri Anda, gunakan metode ini. Ini hanya memanggil fungsi kueri dan membebaskan objek yang dikembalikan.
Dengan properti ini Anda dapat menetapkan nilai batas waktu untuk operasi jaringan (dalam milidetik).
Properti read-only ini berisi deskripsi tekstual tentang kesalahan terakhir yang terjadi.
Putuskan sambungan dari router.
Kelas ini memberi Anda kemampuan untuk bekerja dengan data yang dikembalikan dari kueri. Setiap eksekusi perintah "terisolasi" dalam objek trosapiresultnya , sehingga Anda dapat melakukan permintaan paralel dengan memanggil trosapiclient.Query dan menerima beberapa objek trosapiresult .
Mengembalikan nilai parameter nama ( kata dalam hal API) dalam kalimat saat ini. Cara yang lebih disukai untuk mendapatkan hasilnya adalah sebagai berikut: Apiresult ['parmname'] alih -alih apiresult.ValueBeebyName ('parmname') . Anda dapat menggunakan nama param baik dengan dan tanpa memimpin '=' karakter ( apiresult ['address'] dan apiresult ['= address'] mengembalikan hasil yang sama).
Mengembalikan kalimat saat ini dari hasil kueri (tipe adalah trosapisentence).
Menerima satu kalimat dari router. Jika parameter tunggu benar , fungsi akan menunggu sampai kalimat diterima. Jika menunggu salah dan tidak ada kalimat yang diterima untuk saat ini, fungsi kembali salah . Ini bermanfaat ketika menjalankan perintah tak terbatas (seperti 'Listen') di GUI, ketika Anda perlu memproses tindakan pengguna lain: Anda harus secara berkala memanggil getOne dengan tunggu = false , dan dalam hal hasil negatif hanya melakukan sesuatu yang lain untuk sementara waktu.
Menerima semua kalimat hingga 'Done', lalu mengembalikan true (atau false jika terjadi batas waktu).
Mengembalikan jumlah kalimat yang diterima setelah menelepon GetAll .
Kembali benar jika ada lebih banyak kalimat dalam hasil kueri.
Kembali benar jika ada perangkap selama getall
Returns True If 'Done' Kalimat diterima di GetOne
Bergeser ke kalimat berikutnya yang diterima di getall
Membatalkan eksekusi perintah saat ini.
Contoh aplikasi apitest dapat diunduh di bagian rilis: https://github.com/chupaka/delphi-routeros-api/releases
Pada awalnya, kita harus mendeklarasikan variabel dan membuat instance trosapiclient :
var
RouterOS: TRosApiClient;
RouterOS := TRosApiClient.Create;Sekarang kami terhubung ke router dan melakukan prosedur 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 ;Semua kueri dilakukan dengan memanggil fungsi kueri trosapiclient . Ini mengembalikan instance trosapiresult dari mana semua data diambil.
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;Pertama, tempatkan timer pada formulir dan beri nama tmrlisten , atur diaktifkan ke false . Lalu kami membuat kueri dan mengaktifkan timer:
ResListen := ROS.Query([ ' /log/listen ' ], False);
tmrListen.Enabled := True;Lalu kami memeriksa data baru di acara timer:
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 ;Untuk diskusi dan saran, Anda dapat memeriksa utas forum mikrotik routeros api delphi klien