59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
"github.com/asaskevich/govalidator"
|
|
)
|
|
|
|
func init() {
|
|
govalidator.SetFieldsRequiredByDefault(true)
|
|
}
|
|
|
|
var (
|
|
DefaultLocation string = "./pdfsign.conf" // Default location of the config file
|
|
Settings Config // Initialized once inside Read method Settings are stored in memory.
|
|
)
|
|
|
|
// Config is the root of the config
|
|
type Config struct {
|
|
//Info:
|
|
//Name: "Jeroen Bobbeldijk",
|
|
//Location: "Rotterdam",
|
|
//Reason: "Test",
|
|
//ContactInfo: "Geen",
|
|
//CertType: 2,
|
|
//Approval: false,
|
|
//TSA: sign.TSA{
|
|
//URL: "http://aatl-timestamp.globalsign.com/tsa/aohfewat2389535fnasgnlg5m23",
|
|
}
|
|
|
|
// ValidateFields validates all the fields of the config
|
|
func (c Config) ValidateFields() error {
|
|
_, err := govalidator.ValidateStruct(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func Read(configfile string) {
|
|
|
|
_, err := os.Stat(configfile)
|
|
if err != nil {
|
|
log.Fatal("Config file is missing: ", configfile)
|
|
}
|
|
|
|
var c Config
|
|
if _, err := toml.DecodeFile(configfile, &c); err != nil {
|
|
}
|
|
|
|
if err := c.ValidateFields(); err != nil {
|
|
log.Fatal("Config is not valid: ", err)
|
|
}
|
|
|
|
Settings = c
|
|
}
|