45 lines
806 B
Go
45 lines
806 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"gopkg.in/yaml.v3"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
type ServerAuthConfig struct {
|
||
|
Username string `yaml:"username"`
|
||
|
Password string `yaml:"password"`
|
||
|
}
|
||
|
|
||
|
type ServerConfig struct {
|
||
|
Listen string `yaml:"listen"`
|
||
|
Auth ServerAuthConfig `yaml:"auth"`
|
||
|
}
|
||
|
|
||
|
type RemoteConfigItem struct {
|
||
|
Type string `yaml:"type"`
|
||
|
Label string `yaml:"label"`
|
||
|
Items []map[string]string `yaml:"items"`
|
||
|
}
|
||
|
|
||
|
type Config struct {
|
||
|
Server ServerConfig `yaml:"server"`
|
||
|
Remote map[string][]RemoteConfigItem `yaml:"remote"`
|
||
|
}
|
||
|
|
||
|
func createConfigFromFile(file string) (Config, error) {
|
||
|
data, err := os.ReadFile(file)
|
||
|
value := Config{}
|
||
|
|
||
|
if err != nil {
|
||
|
return value, err
|
||
|
}
|
||
|
|
||
|
err = yaml.Unmarshal(data, &value)
|
||
|
|
||
|
if err != nil {
|
||
|
return value, err
|
||
|
}
|
||
|
|
||
|
return value, nil
|
||
|
}
|