简介
可以利用c语言为ats编写功能插件。ats支持复杂的基于web的处理和缓存模式,其包含一个事件触发的循环
1 2 3 4 |
|
你可以编写自己的插件,然后编译成动态库,供ats启动时进行载入。插件注册相应的事件处理函数以及事件类型 一旦ats需要处理某个事件,它会运行所有注册在该事件上的回调函数。
用途
插件有以下用途
- HTTP协议处理:过滤,屏蔽,认证用户,传递内容
- 新协议支持:可以支持新的缓存协议
下面是一些插件的例子:
- Blacklisting plugin: 拒绝某些网络访问
- Append transform plugin:将文本通过http响应的content传递回去
- Image conversion plugin:将jpg转化为gif
- Compression plugin:将响应内容进行压缩
- Authorization plugin:认证访问用户
- A plugin that gathers client information:收集请求信息并保存到数据库中
- Protocol plugin:利用ats监听特定端口,处理特殊的协议请求
例子
有如下几个例子
- append-transform.c: 为http响应添加文本信息
- server-transform.c:将请求数据提供给转码服务器进行转码后传回给client端,例如图形转化
- basic-auth.c:http代理认证
- blacklist-1.c:读取配置文件进行代理认证
插件载入
ats启动后根据plugin.config配置文件决定哪些插件需要进行载入。同时plugin.config被传递给每个插件的初始化函数TSPluginInit。 records.config确定插件动态库的路径
配置
下面是一个配置文件例子,包含一个命令行,一个空白行和两个插件配置行
1 2 3 4 |
|
so文件后面是对应的参数序列 插件的配置文件每一行不能大于1023字节,插件的so命名应该是全局唯一的。
- 命令行以#起始
- 空行被葫芦额
- 插件载入顺序和在plugin.config出现的顺序一致
启动及初始化
每个插件需要定义一个初始化函数TSPluginInit,这个函数读取配置文件并注册对应的事件。
TSPluginInit包含两个参数
- argc: 该插件在plugin.config内的参数个数
- argv: 该插件在plugin.config参数数组