diff --git a/pluginserver.go b/pluginserver.go index 2566a6f..8ef41d4 100644 --- a/pluginserver.go +++ b/pluginserver.go @@ -48,47 +48,6 @@ func main() { } } -// --- pluginData --- // -type pluginData struct { - name string - code *plugin.Plugin - constructor func() interface{} - config interface{} -} - -// --- instanceData --- // -type instanceData struct { - id int - plugin *pluginData - initialized bool - config interface{} - handlers map[string]func(kong *pdk.PDK) -} - -type ( - certificater interface{ Certificate(*pdk.PDK) } - rewriter interface{ Rewrite(*pdk.PDK) } - accesser interface{ Access(*pdk.PDK) } - headerFilter interface{ HeaderFilter(*pdk.PDK) } - bodyFilter interface{ BodyFilter(*pdk.PDK) } - prereader interface{ Preread(*pdk.PDK) } - logger interface{ Log(*pdk.PDK) } -) - -func getHandlers(config interface{}) map[string]func(kong *pdk.PDK) { - handlers := map[string]func(kong *pdk.PDK){} - - if h, ok := config.(certificater); ok { handlers["certificate"] = h.Certificate } - if h, ok := config.(rewriter) ; ok { handlers["rewrite"] = h.Rewrite } - if h, ok := config.(accesser) ; ok { handlers["access"] = h.Access } - if h, ok := config.(headerFilter); ok { handlers["header_filter"] = h.HeaderFilter } - if h, ok := config.(bodyFilter) ; ok { handlers["body_filter"] = h.BodyFilter } - if h, ok := config.(prereader) ; ok { handlers["preread"] = h.Preread } - if h, ok := config.(logger) ; ok { handlers["log"] = h.Log } - - return handlers -} - // --- PluginServer --- // type PluginServer struct { lock sync.RWMutex @@ -117,6 +76,14 @@ func (s *PluginServer) SetPluginDir(dir string, reply *string) error { return nil } +// --- pluginData --- // +type pluginData struct { + name string + code *plugin.Plugin + constructor func() interface{} + config interface{} +} + func (s PluginServer) loadPlugin(name string) (plug *pluginData, err error) { s.lock.RLock() plug, ok := s.plugins[name] @@ -263,6 +230,39 @@ func (s PluginServer) GetPluginInfo(name string, info *PluginInfo) error { return nil } +// --- instanceData --- // +type instanceData struct { + id int + plugin *pluginData + initialized bool + config interface{} + handlers map[string]func(kong *pdk.PDK) +} + +type ( + certificater interface{ Certificate(*pdk.PDK) } + rewriter interface{ Rewrite(*pdk.PDK) } + accesser interface{ Access(*pdk.PDK) } + headerFilter interface{ HeaderFilter(*pdk.PDK) } + bodyFilter interface{ BodyFilter(*pdk.PDK) } + prereader interface{ Preread(*pdk.PDK) } + logger interface{ Log(*pdk.PDK) } +) + +func getHandlers(config interface{}) map[string]func(kong *pdk.PDK) { + handlers := map[string]func(kong *pdk.PDK){} + + if h, ok := config.(certificater); ok { handlers["certificate"] = h.Certificate } + if h, ok := config.(rewriter) ; ok { handlers["rewrite"] = h.Rewrite } + if h, ok := config.(accesser) ; ok { handlers["access"] = h.Access } + if h, ok := config.(headerFilter); ok { handlers["header_filter"] = h.HeaderFilter } + if h, ok := config.(bodyFilter) ; ok { handlers["body_filter"] = h.BodyFilter } + if h, ok := config.(prereader) ; ok { handlers["preread"] = h.Preread } + if h, ok := config.(logger) ; ok { handlers["log"] = h.Log } + + return handlers +} + type PluginConfig struct { Name string Config []byte