|
发表于 2012-1-8 23:09:12
|
显示全部楼层
本帖最后由 ccxxzz 于 2012-1-8 23:26 编辑
决定此贴放ROS的API接口代码,顶起此贴!
uses
RouterOSAPI;
调用请把此文件加进去!别忘记了;
广告动作推送是这样的,写个这样的动作函数;
connectros(ddisp.fieldbyname('NasIP').AsString,rosgonggao.fieldbyname('admin').AsString,rosgonggao.fieldbyname('password').AsString,ddisp.fieldbyname('user_name').AsString,ddisp.fieldbyname('FramedIPAddress').AsString);
函数的定义在这里
function connectros(rosaddress,adminname,adminpass,username,userip:string):boolean;
var
Res: TRosApiResult;
ros: TRosApiClient;
pa: array of AnsiString;
s: String; //这个放命令动词
s1,s2:string;//这些放参数命令
begin
//showmessage('ROS管理地址:'+rosaddress+' 超级用户:'+adminname+' 用户IP地址:'+userip);
ROS := TRosApiClient.Create;
RESULT:=false;
if ROS.Connect(rosaddress, adminname, adminpass) then
begin
Res := ROS.Query(['/system/resource/print'], True);
Res.Free;
//=============这个地方放执行命令代码===============
s :='/ip/firewall/address-list/add';
s1:='=list=ExpAuto_expired';
s2:='=address='+userip;
SetLength(pa, 0);
SetLength(pa, High(pa) + 2); //命令s
pa[High(pa)] := s;
SetLength(pa, High(pa) + 2); //参数s1
pa[High(pa)] := s1;
SetLength(pa, High(pa) + 2); //参数s2
pa[High(pa)] := s2;
try
ROS.Execute(pa);
except
ROS.Free; //无命令行输入,直接释放API调用内存泄漏
RESULT:=false;
Exit;
end;
=================================
ROS API
//=======================这个地方放执行命令代码=======================
end
else
begin
//ShowMessage('Connection error: ' + ROS.LastError);
ros.Free;
RESULT:=false;
Exit;
end;
RESULT:=TRUE; //程序正确执行完毕
end;
===============
ROSAPI到哪里下,你知道的,外国佬用的VB写的API,我看过了;我使用的DELPHI!
在我写的认证里面就使用这个代码发送公告,应深圳顺风特意写的;代码明眼人一看就知道!
所有API接口全部是这个模式,你需要搞清楚API的三个参数!如果需要,我可给出我的查询代码,其实就是WINBOX的变种,把API命令求出来!
写这个程序,只要你有闲工,把所有API命令找出,随便写,就用上面的代码;并且这样写代码,不涉及到TCP、UDP套接,无协议研究、无内存泄放,合适于会写一点程序的人员研究!
然后kz斑竹要WEB和软件的交互,请看我开源的WEB 是如何实现和核心软件交互的;帖子在这里:http://bbs.routerclub.com/forum. ... mp;extra=#pid362562 |
|