可配置插件设计
--fago #网关fago主目录
---lib #存放第三方类库
---common #存放一些工具类库
---conf #存放配置文件
-----fago.conf #定义fago网关的一些相关配置
---plugins #存放所有插件的目录
-----base_plugin.lua #插件基类
-----XXXX #某个插件的目录名
-------handler.lua #某个插件的实现类,统一命名为handler,这个是用目录名区分插件,这样的设计有特别用途一)首先设计一个基础插件类
-------------------------base_plugin.lua-------------------------
local utils = require("fago.common.utils")
local Object = require("fago.lib.classic")
local BasePlugin = Object:extend()
function BasePlugin:new(name)
self._name = name
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": new")
end
function BasePlugin:get_name()
return self._name
end
function BasePlugin:init_worker()
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": init_worker")
end
function BasePlugin:redirect()
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": redirect")
end
function BasePlugin:rewrite()
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": rewrite")
end
function BasePlugin:access()
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": access")
end
function BasePlugin:header_filter()
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": header_filter")
end
function BasePlugin:body_filter()
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": body_filter")
end
function BasePlugin:log()
utils.debug_log("BasePlugin executing plugin \""..self._name.."\": log")
end
return BasePluginLast updated