func (nxc *NxConfig) Add(class string, name string, value interface{}) { switch class { case "extension": addition := &nxextension{name: name, properties: value.(map[string]string)} nxc.Extensions = append(nxc.Extensions, *addition) case "input": addition := &nxinput{name: name, properties: value.(map[string]string)} nxc.Inputs = append(nxc.Inputs, *addition) case "output": addition := &nxoutput{name: name, properties: value.(map[string]string)} nxc.Outputs = append(nxc.Outputs, *addition) case "route": addition := &nxroute{name: name, properties: value.(map[string]string)} nxc.Routes = append(nxc.Routes, *addition) case "match": addition := &nxmatch{name: name, properties: value.(map[string]string)} nxc.Matches = append(nxc.Matches, *addition) case "processor": addition := &nxprocessor{name: name, properties: value.(map[string]string)} nxc.Processors = append(nxc.Processors, *addition) case "snippet": snippet := &nxsnippet{name: name, value: value.(string)} if !nxc.Exists("snippet", snippet) { nxc.Snippets = append(nxc.Snippets, *snippet) } else { msg := fmt.Sprintf("Skipping snippet %s till it already exist in configuration.", name) nxc.SetStatus(backends.StatusUnknown, msg) log.Warnf("[%s] %s", nxc.Name(), msg) } //pre-canned configuration types case "output-gelf-udp": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "output-gelf-tcp": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "output-gelf-tcp-tls": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "input-file": input_properties := value.(map[string]interface{}) addition := &nxcanned{name: name, kind: class, properties: input_properties} nxc.Canned = append(nxc.Canned, *addition) multiline := nxc.isEnabled(input_properties["multiline"]) var multilineStart string var multilineStop string if input_properties["multiline_start"] != nil { multilineStart = common.EncloseWith(input_properties["multiline_start"].(string), "/") } if input_properties["multiline_stop"] != nil { multilineStop = common.EncloseWith(input_properties["multiline_stop"].(string), "/") } if multiline { extension := &nxextension{name: name + "-multiline", properties: map[string]string{"Module": "xm_multiline"}} if len(multilineStart) > 0 { extension.properties["HeaderLine"] = multilineStart } if len(multilineStop) > 0 { extension.properties["EndLine"] = multilineStop } nxc.Extensions = append(nxc.Extensions, *extension) } case "input-windows-event-log": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "input-udp-syslog": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) extension := &nxextension{name: "syslog", properties: map[string]string{"Module": "xm_syslog"}} if !nxc.Exists("extension", extension) { nxc.Extensions = append(nxc.Extensions, *extension) } case "input-tcp-syslog": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) extension := &nxextension{name: "syslog", properties: map[string]string{"Module": "xm_syslog"}} if !nxc.Exists("extension", extension) { nxc.Extensions = append(nxc.Extensions, *extension) } } }
func (nxc *NxConfig) Add(class string, name string, value interface{}) { switch class { case "extension": addition := &nxextension{name: name, properties: value.(map[string]string)} nxc.Extensions = append(nxc.Extensions, *addition) case "input": addition := &nxinput{name: name, properties: value.(map[string]string)} nxc.Inputs = append(nxc.Inputs, *addition) case "output": addition := &nxoutput{name: name, properties: value.(map[string]string)} nxc.Outputs = append(nxc.Outputs, *addition) case "route": addition := &nxroute{name: name, properties: value.(map[string]string)} nxc.Routes = append(nxc.Routes, *addition) case "match": addition := &nxmatch{name: name, properties: value.(map[string]string)} nxc.Matches = append(nxc.Matches, *addition) case "snippet": addition := &nxsnippet{name: name, value: value.(string)} nxc.Snippets = append(nxc.Snippets, *addition) //pre-canned configuration types case "output-gelf-udp": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "output-gelf-tcp": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "output-gelf-tcp-tls": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "input-file": input_properties := value.(map[string]interface{}) addition := &nxcanned{name: name, kind: class, properties: input_properties} nxc.Canned = append(nxc.Canned, *addition) multiline := nxc.isEnabled(input_properties["multiline"]) var multilineStart string var multilineStop string if input_properties["multiline_start"] != nil { multilineStart = common.EncloseWith(input_properties["multiline_start"].(string), "/") } if input_properties["multiline_stop"] != nil { multilineStop = common.EncloseWith(input_properties["multiline_stop"].(string), "/") } if multiline { extension := &nxextension{name: name + "-multiline", properties: map[string]string{"Module": "xm_multiline"}} if len(multilineStart) > 0 { extension.properties["HeaderLine"] = multilineStart } if len(multilineStop) > 0 { extension.properties["EndLine"] = multilineStop } nxc.Extensions = append(nxc.Extensions, *extension) } case "input-windows-event-log": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) case "input-udp-syslog": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) if !nxc.Exists("extension", "syslog") { extension := &nxextension{name: "syslog", properties: map[string]string{"Module": "xm_syslog"}} nxc.Extensions = append(nxc.Extensions, *extension) } case "input-tcp-syslog": addition := &nxcanned{name: name, kind: class, properties: value.(map[string]interface{})} nxc.Canned = append(nxc.Canned, *addition) if !nxc.Exists("extension", "syslog") { extension := &nxextension{name: "syslog", properties: map[string]string{"Module": "xm_syslog"}} nxc.Extensions = append(nxc.Extensions, *extension) } } }