mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-18 14:47:03 +00:00
This patch adds configuration options for the MDA binary and command line arguments, and changes the (soon to be renamed) procmail courier to make use of them.
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
// Package config implements the chasquid configuration.
|
|
package config
|
|
|
|
// Generate the config protobuf.
|
|
//go:generate protoc --go_out=. config.proto
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
|
|
"github.com/golang/glog"
|
|
"github.com/golang/protobuf/proto"
|
|
)
|
|
|
|
// Load the config from the given file.
|
|
func Load(path string) (*Config, error) {
|
|
c := &Config{}
|
|
|
|
buf, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
glog.Errorf("Failed to read config at %q", path)
|
|
glog.Errorf(" (%v)", err)
|
|
return nil, err
|
|
}
|
|
|
|
err = proto.UnmarshalText(string(buf), c)
|
|
if err != nil {
|
|
glog.Errorf("Error parsing config: %v", err)
|
|
return nil, err
|
|
}
|
|
|
|
// Fill in defaults for anything that's missing.
|
|
|
|
if c.Hostname == "" {
|
|
c.Hostname, err = os.Hostname()
|
|
if err != nil {
|
|
glog.Errorf("Could not get hostname: %v", err)
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
if c.MaxDataSizeMb == 0 {
|
|
c.MaxDataSizeMb = 50
|
|
}
|
|
|
|
if len(c.Address) == 0 {
|
|
c.Address = append(c.Address, "systemd")
|
|
}
|
|
|
|
if c.MailDeliveryAgentBin == "" {
|
|
c.MailDeliveryAgentBin = "procmail"
|
|
}
|
|
if len(c.MailDeliveryAgentArgs) == 0 {
|
|
c.MailDeliveryAgentArgs = append(c.MailDeliveryAgentArgs,
|
|
"-d", "%user%")
|
|
}
|
|
|
|
logConfig(c)
|
|
return c, nil
|
|
}
|
|
|
|
func logConfig(c *Config) {
|
|
glog.Infof("Configuration:")
|
|
glog.Infof(" Hostname: %q", c.Hostname)
|
|
glog.Infof(" Max data size (MB): %d", c.MaxDataSizeMb)
|
|
glog.Infof(" Addresses: %v", c.Address)
|
|
glog.Infof(" Monitoring address: %s", c.MonitoringAddress)
|
|
glog.Infof(" MDA: %s %v", c.MailDeliveryAgentBin, c.MailDeliveryAgentArgs)
|
|
}
|