(config *firewallconfigs.FirewallActionConfig)
| 142 | } |
| 143 | |
| 144 | func (this *ActionManager) createInstance(config *firewallconfigs.FirewallActionConfig) (ActionInterface, error) { |
| 145 | var instance ActionInterface |
| 146 | switch config.Type { |
| 147 | case firewallconfigs.FirewallActionTypeIPSet: |
| 148 | instance = NewIPSetAction() |
| 149 | case firewallconfigs.FirewallActionTypeFirewalld: |
| 150 | instance = NewFirewalldAction() |
| 151 | case firewallconfigs.FirewallActionTypeIPTables: |
| 152 | instance = NewIPTablesAction() |
| 153 | case firewallconfigs.FirewallActionTypeScript: |
| 154 | instance = NewScriptAction() |
| 155 | case firewallconfigs.FirewallActionTypeHTTPAPI: |
| 156 | instance = NewHTTPAPIAction() |
| 157 | case firewallconfigs.FirewallActionTypeHTML: |
| 158 | instance = NewHTMLAction() |
| 159 | } |
| 160 | if instance == nil { |
| 161 | return nil, errors.New("can not create instance for type '" + config.Type + "'") |
| 162 | } |
| 163 | err := instance.Init(config) |
| 164 | if err != nil { |
| 165 | // 如果是警告错误,我们只是提示 |
| 166 | if !IsFatalError(err) { |
| 167 | remotelogs.Error("IPLIBRARY/ACTION_MANAGER/CREATE_INSTANCE", "init '"+config.Type+"' failed: "+err.Error()) |
| 168 | } else { |
| 169 | return nil, err |
| 170 | } |
| 171 | } |
| 172 | return instance, nil |
| 173 | } |
no test coverage detected