set config file
This commit is contained in:
69
config/config.go
Normal file
69
config/config.go
Normal file
@ -0,0 +1,69 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
ini "gopkg.in/ini.v1"
|
||||
)
|
||||
// Config is the config
|
||||
type Config struct {
|
||||
HTTP HTTPConfig
|
||||
LDAP LDAPConfig
|
||||
}
|
||||
// HTTPConfig is the http config
|
||||
type HTTPConfig struct {
|
||||
Address string
|
||||
|
||||
}
|
||||
// LDAPConfig is the ldap config
|
||||
type LDAPConfig struct {
|
||||
Base string
|
||||
Host string
|
||||
Port int
|
||||
BindDN string
|
||||
BindPassword string
|
||||
UserFilter string
|
||||
Attributes []string
|
||||
}
|
||||
|
||||
// NewFromFile retrieves the configuration from the given file
|
||||
func NewFromFile(filepath string) (*Config, error) {
|
||||
config := NewDefault()
|
||||
cfg, err := ini.Load(filepath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := cfg.MapTo(config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return config, nil
|
||||
}
|
||||
// NewDefault set a default config
|
||||
func NewDefault() *Config {
|
||||
return &Config{
|
||||
HTTP: HTTPConfig{
|
||||
Address: ":3001",
|
||||
},
|
||||
LDAP: LDAPConfig{
|
||||
Base: "dc=example,dc=com",
|
||||
Host: "ldap.example.com",
|
||||
Port: 389,
|
||||
BindDN: "uid=readonlysuer,ou=People,dc=example,dc=com",
|
||||
BindPassword: "readonlypassword",
|
||||
UserFilter: "(uid=%s)",
|
||||
Attributes: []string{"givenName", "sn", "mail", "uid"},
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
// Dump return the config dump
|
||||
func Dump(config *Config, w io.Writer) error {
|
||||
cfg := ini.Empty()
|
||||
if err := cfg.ReflectFrom(config); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := cfg.WriteTo(w); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user