youtubebeat/vendor/github.com/elastic/beats/filebeat/input/syslog/config.go

78 lines
2.1 KiB
Go

// Licensed to Elasticsearch B.V. under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Elasticsearch B.V. licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package syslog
import (
"fmt"
"time"
"github.com/dustin/go-humanize"
"github.com/elastic/beats/filebeat/harvester"
"github.com/elastic/beats/filebeat/inputsource"
"github.com/elastic/beats/filebeat/inputsource/tcp"
"github.com/elastic/beats/filebeat/inputsource/udp"
"github.com/elastic/beats/libbeat/common"
)
type config struct {
harvester.ForwarderConfig `config:",inline"`
Protocol common.ConfigNamespace `config:"protocol"`
}
var defaultConfig = config{
ForwarderConfig: harvester.ForwarderConfig{
Type: "syslog",
},
}
var defaultTCP = tcp.Config{
LineDelimiter: "\n",
Timeout: time.Minute * 5,
MaxMessageSize: 20 * humanize.MiByte,
}
var defaultUDP = udp.Config{
MaxMessageSize: 10 * humanize.KiByte,
Timeout: time.Minute * 5,
}
func factory(
cb inputsource.NetworkFunc,
config common.ConfigNamespace,
) (inputsource.Network, error) {
n, cfg := config.Name(), config.Config()
switch n {
case tcp.Name:
config := defaultTCP
if err := cfg.Unpack(&config); err != nil {
return nil, err
}
return tcp.New(&config, cb)
case udp.Name:
config := defaultUDP
if err := cfg.Unpack(&config); err != nil {
return nil, err
}
return udp.New(&config, cb), nil
default:
return nil, fmt.Errorf("you must choose between TCP or UDP")
}
}