Routeros API Delphi Client. يدعم API على TLS و Routeros 6.43+ طريقة تسجيل الدخول API.
وثائق واجهة برمجة التطبيقات الرسمية: https://wiki.mikrotik.com/wiki/manual:Api
Mikrotik منتدى الموضوع: https://forum.mikrotik.com/viewtopic.php؟f=9&t=31555
هذا هو تنفيذ عميل Mikrotik Routeros API لـ Delphi. وهو يدعم تنفيذ الطلبات المتوازية لجهاز التوجيه ولديه واجهة تشبه قاعدة البيانات لسهولة الاستخدام.
تحتوي وحدة Routerosapi على تعريف لفئتين تحتاج إلى العمل مع بروتوكول API من برامج Delphi الخاصة بك.
تغلف هذه الفئة الخصائص والأساليب لإجراء اتصال بجهاز التوجيه عبر بروتوكول API Routeros.
تتصل هذه الوظيفة بجهاز التوجيه وتنفيذ إجراء تسجيل الدخول. إنه يعود صحيحًا إذا كان تسجيل الدخول ناجحًا ، خطأ خلاف ذلك.
يجعل استعلام لجهاز التوجيه. الطلب هو مجموعة من الأوتار ، أول واحد هو الأمر والبعض الآخر معلمات. إذا كان GetAllafterQuery صحيحًا ، فسيتم تنفيذ trosapiresult.getall بعد إرسال استعلام.
إذا لم تكن بحاجة إلى تلقي أي إخراج من استعلامك ، فاستخدم هذه الطريقة. إنها ببساطة تستدعي وظيفة الاستعلام وتحرر الكائن الذي تم إرجاعه.
باستخدام هذه الخاصية ، يمكنك تعيين قيمة مهلة لعمليات الشبكة (بالمللي ثانية).
تحتوي الخاصية القراءة فقط على وصف نصي لآخر خطأ حدث.
تفصل عن جهاز التوجيه.
يمنحك هذا الفصل القدرة على العمل مع البيانات التي يتم إرجاعها من الاستعلامات. يتم "عزل" كل تنفيذ أمر في كائن Trosapiresult الخاص به ، بحيث يمكنك القيام بطلبات متوازية عن طريق استدعاء trosapiclient.query واستلام العديد من كائنات trosapiresult .
إرجاع قيمة المعلمة الاسم ( كلمة من حيث API) في الجملة الحالية. الطريقة المفضلة للحصول على النتيجة هي ما يلي: apiresult ['parmname'] بدلاً من apiresult.valuebyname ('parmname') . يمكنك استخدام Param Name مع حرف أو بدون قيادة "=" ( apiresult ['address'] و apiresult ['= address'] إرجاع نفس النتيجة).
إرجاع الجملة الحالية لنتيجة الاستعلام (النوع هو trosapisentence).
يتلقى جملة واحدة من جهاز التوجيه. إذا كانت معلمة الانتظار صحيحة ، فستنتظر الوظيفة حتى يتم استلام الجملة. إذا كانت الانتظار خاطئة ولم يتم استلام أي جمل في الوقت الحالي ، فإن إرجاع الوظيفة كاذبة . هذا مفيد عند تنفيذ الأوامر اللانهائية (مثل "الاستماع") في واجهة المستخدم الرسومية ، عندما تحتاج إلى معالجة إجراءات المستخدم الأخرى: يجب أن تتصل بشكل دوري بـ GetOne مع Wait = false ، وفي حالة وجود نتيجة سلبية فقط القيام بشيء آخر لفترة.
يتلقى جميع الجمل حتى "! تم" ، ثم يعيد صحيح (أو خطأ في حالة مهلة).
عائدات عدد الجمل المستلمة بعد الاتصال Getall .
يعود صحيح إذا كان هناك المزيد من الجملة (الجملة) في نتيجة الاستعلام.
يعود صحيح إذا كان هناك فخ (ق) خلال getall
عوائد صحيح إذا تم استلام الجملة "!
نوبات إلى الجملة التالية التي تم استلامها في Getall
يلغي تنفيذ الأمر الحالي.
يمكن تنزيل نموذج تطبيق Apitest في قسم الإصدارات: https://github.com/chupaka/delphi-routeros-api/releases
في البداية ، يجب أن نعلن عن متغير وننشئ مثيلًا من trosapiclient :
var
RouterOS: TRosApiClient;
RouterOS := TRosApiClient.Create;الآن نتواصل بجهاز التوجيه وننفذ إجراء تسجيل الدخول:
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 ;يتم إجراء جميع الاستعلامات عن طريق استدعاء وظيفة الاستعلام من trosapiclient . إنه يرجع مثيلًا من trosapiresult التي يتم جلب جميع البيانات منها.
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;أولاً ، ضع جهاز توقيت على النموذج وتسمية tmrlisten ، تم تعيينه إلى FALSE . ثم نقوم بإجراء استعلام ونمكّن مؤقتًا:
ResListen := ROS.Query([ ' /log/listen ' ], False);
tmrListen.Enabled := True;ثم نتحقق من وجود بيانات جديدة عن حدث المؤقت:
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 ;للمناقشات والاقتراحات ، يمكنك التحقق