(globals map[string]interface{}, nodes []config.Node)
| 256 | } |
| 257 | |
| 258 | func parseMsgPipelineRcptCfg(globals map[string]interface{}, nodes []config.Node) (*rcptBlock, error) { |
| 259 | rcpt := rcptBlock{} |
| 260 | for _, node := range nodes { |
| 261 | switch node.Name { |
| 262 | case "check": |
| 263 | checks, err := parseChecksGroup(globals, node) |
| 264 | if err != nil { |
| 265 | return nil, err |
| 266 | } |
| 267 | |
| 268 | rcpt.checks = append(rcpt.checks, checks...) |
| 269 | case "modify": |
| 270 | modifiers, err := parseModifiersGroup(globals, node) |
| 271 | if err != nil { |
| 272 | return nil, err |
| 273 | } |
| 274 | |
| 275 | rcpt.modifiers.Modifiers = append(rcpt.modifiers.Modifiers, modifiers.Modifiers...) |
| 276 | case "deliver_to": |
| 277 | if rcpt.rejectErr != nil { |
| 278 | return nil, config.NodeErr(node, "can't use 'reject' and 'deliver_to' together") |
| 279 | } |
| 280 | |
| 281 | if len(node.Args) == 0 { |
| 282 | return nil, config.NodeErr(node, "required at least one argument") |
| 283 | } |
| 284 | mod, err := modconfig.DeliveryTarget(globals, node.Args, node) |
| 285 | if err != nil { |
| 286 | return nil, err |
| 287 | } |
| 288 | |
| 289 | rcpt.targets = append(rcpt.targets, mod) |
| 290 | case "reroute": |
| 291 | if len(node.Children) == 0 { |
| 292 | return nil, config.NodeErr(node, "missing or empty reroute pipeline configuration") |
| 293 | } |
| 294 | |
| 295 | pipeline, err := New(globals, node.Children) |
| 296 | if err != nil { |
| 297 | return nil, err |
| 298 | } |
| 299 | |
| 300 | rcpt.targets = append(rcpt.targets, pipeline) |
| 301 | case "reject": |
| 302 | if len(rcpt.targets) != 0 { |
| 303 | return nil, config.NodeErr(node, "can't use 'reject' and 'deliver_to' together") |
| 304 | } |
| 305 | |
| 306 | var err error |
| 307 | rcpt.rejectErr, err = parseRejectDirective(node) |
| 308 | if err != nil { |
| 309 | return nil, err |
| 310 | } |
| 311 | default: |
| 312 | return nil, config.NodeErr(node, "invalid directive") |
| 313 | } |
| 314 | } |
| 315 | return &rcpt, nil |
no test coverage detected