本帖最后由 江威 于 2017-6-20 21:09 编辑
什么是iPro iPro是基于Lua语言扩展而来的编程语言,继承了Lua语言的大部分特性,同时包含了很多扩展特性。结合AD设备的全代理架构,实现了高度灵活、可扩展的脚本可编程接口。当AD设备通过GUI操作配置不能满足需要时,可以使用iPro脚本进行适当的扩展(比如未知协议的解析、基于消息的负载以及其他AD GUI不支持的负载功能)。 目前,我们的iPro实现了TCP、HTTP、UDP、DNS等几类应用服务的可编程接口,它们分别有各自的事件、接口、自定义变量。通过脚本,可以灵活地对业务进行控制,甚至可以完成一些复杂的个性化需求,然而只需要很少的工作量,并且不需要花过多的时间来测试,从而保证业务快速稳定的上线。 iPro脚本可以很简单,也可以很复杂,完全取决于您的业务需要,下面是一个简单的iPro脚本例子: - event HTTP_REQUEST {
- if HTTP.uri() ~= "/index.html" then
- HTTP.close()
- end
- }
复制代码
为什么基于Lua扩展 Lua是一种相对小型且简单的语言,只有21个保留字,它的设计理念是提供最基本和相对简单的方式来扩展语言,以适应各种应用领域。 Lua是动态解释型语言,相对其他脚本语言(比如TCL、 JavaScript V8)来说,Lua的语法简单、学习成本低廉、扩展性好、性能高效(测试数据表明,Lua性能是TCL的6-7倍,也是JavaScript V8的3-4倍)等特点,是作为嵌入式开发的首选,而且越来越多的厂商也开始向基于Lua的扩展进行迁移。
iPro的构成元素 iPro完全采用Lua的语法,基于事件驱动(event-driven),由系统触发您在iPro中指定/期望的事件。一个业务事件的处理就是定义一个Lua的函数,一般包括事件声明、操作符以及iPro接口函数三个部分,事件处理需要根据业务逻辑,通过iPro提供的API接口和标准库进行相应的业务分析处理,其基本格式如下: |