MCPcopy Create free account
hub / github.com/foxcpp/maddy / parseMsgPipelineRcptCfg

Function parseMsgPipelineRcptCfg

internal/msgpipeline/config.go:258–316  ·  view source on GitHub ↗
(globals map[string]interface{}, nodes []config.Node)

Source from the content-addressed store, hash-verified

256}
257
258func 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

Callers 1

parseMsgPipelineSrcCfgFunction · 0.85

Calls 5

NodeErrFunction · 0.92
parseChecksGroupFunction · 0.85
parseModifiersGroupFunction · 0.85
parseRejectDirectiveFunction · 0.85
NewFunction · 0.70

Tested by

no test coverage detected