94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"gitea.futuresens.co.uk/futuresens/hardlink/handlers"
|
|
log "github.com/sirupsen/logrus"
|
|
yaml "gopkg.in/yaml.v3"
|
|
)
|
|
|
|
// configRec holds values from config.yml.
|
|
type ConfigRec struct {
|
|
Port int `yaml:"port"`
|
|
LockserverUrl string `yaml:"lockservUrl"`
|
|
LockType string `yaml:"lockType"`
|
|
EncoderAddress string `yaml:"encoderAddr"`
|
|
Cert string `yaml:"cert"`
|
|
DispenserPort string `yaml:"dispensPort"`
|
|
DispenserAdrr string `yaml:"dispensAddr"`
|
|
PrinterName string `yaml:"printerName"`
|
|
LogDir string `yaml:"logdir"`
|
|
Dbport int `yaml:"dbport"` // Port for the database connection
|
|
Dbname string `yaml:"dbname"` // Database name for the connection
|
|
Dbuser string `yaml:"dbuser"` // User for the database connection
|
|
Dbpassword string `yaml:"dbpassword"` // Password for the database connection
|
|
IsPayment bool `yaml:"isPayment"`
|
|
TestMode bool `yaml:"testMode"`
|
|
}
|
|
|
|
// ReadConfig reads config.yml and applies defaults.
|
|
func ReadHardlinkConfig() ConfigRec {
|
|
var cfg ConfigRec
|
|
const configName = "config.yml"
|
|
defaultPort := 9091
|
|
sep := string(os.PathSeparator)
|
|
|
|
data, err := os.ReadFile(configName)
|
|
if err != nil {
|
|
log.Warnf("ReadConfig %s: %v", configName, err)
|
|
} else if err := yaml.Unmarshal(data, &cfg); err != nil {
|
|
log.Warnf("Unmarshal config: %v", err)
|
|
}
|
|
|
|
if cfg.Port == 0 {
|
|
cfg.Port = defaultPort
|
|
}
|
|
|
|
if cfg.LockType == "" {
|
|
err = fmt.Errorf("LockType is required in %s", configName)
|
|
handlers.FatalError(err)
|
|
}
|
|
cfg.LockType = strings.ToLower(cfg.LockType)
|
|
|
|
if cfg.LogDir == "" {
|
|
cfg.LogDir = "./logs" + sep
|
|
} else if !strings.HasSuffix(cfg.LogDir, sep) {
|
|
cfg.LogDir += sep
|
|
}
|
|
|
|
if cfg.Dbport <= 0 || cfg.Dbuser == "" || cfg.Dbname == "" || cfg.Dbpassword == "" {
|
|
err = fmt.Errorf("Database config (dbport, dbuser, dbname, dbpassword) are required in %s", configName)
|
|
log.Warnf(err.Error())
|
|
}
|
|
|
|
return cfg
|
|
}
|
|
|
|
func ReadPreauthReleaserConfig() ConfigRec {
|
|
var cfg ConfigRec
|
|
const configName = "config.yml"
|
|
sep := string(os.PathSeparator)
|
|
|
|
data, err := os.ReadFile(configName)
|
|
if err != nil {
|
|
log.Warnf("ReadConfig %s: %v", configName, err)
|
|
} else if err := yaml.Unmarshal(data, &cfg); err != nil {
|
|
log.Warnf("Unmarshal config: %v", err)
|
|
}
|
|
|
|
if cfg.Dbport <= 0 || cfg.Dbuser == "" || cfg.Dbname == "" || cfg.Dbpassword == "" {
|
|
err = fmt.Errorf("Database config (dbport, dbuser, dbname, dbpassword) are required in %s", configName)
|
|
handlers.FatalError(err)
|
|
}
|
|
|
|
if cfg.LogDir == "" {
|
|
cfg.LogDir = "./logs" + sep
|
|
} else if !strings.HasSuffix(cfg.LogDir, sep) {
|
|
cfg.LogDir += sep
|
|
}
|
|
return cfg
|
|
}
|