added cmd/config.go
This commit is contained in:
		
							
								
								
									
										87
									
								
								cmd/config.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								cmd/config.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,87 @@ | |||||||
|  | package main | ||||||
|  |  | ||||||
|  | import "errors" | ||||||
|  | import "io" | ||||||
|  | import "os" | ||||||
|  |  | ||||||
|  | import "gopkg.in/yaml.v3" | ||||||
|  |  | ||||||
|  | type ServerTLSConfig struct { | ||||||
|  | 	Enabled                  bool               `yaml:"enabled"` | ||||||
|  | 	CertFile                 string             `yaml:"cert-file"` | ||||||
|  | 	KeyFile                  string             `yaml:"key-file"` | ||||||
|  | 	CertText                 string             `yaml:"cert-text"` | ||||||
|  | 	KeyText                  string             `yaml:"key-text"` | ||||||
|  |  | ||||||
|  | 	ClientAuthType           string             `yaml:"client-auth-type"` | ||||||
|  | 	ClientCACertFile         string             `yaml:"client-ca-cert-file"` | ||||||
|  | 	ClientCACertText         string             `yaml:"client-ca-cert-text"` | ||||||
|  | 	//CipherSuites             []Cipher           `yaml:"cipher_suites"` | ||||||
|  | 	//CurvePreferences         []Curve            `yaml:"curve_preferences"` | ||||||
|  | 	//MinVersion               TLSVersion         `yaml:"min-version"` | ||||||
|  | 	//MaxVersion               TLSVersion         `yaml:"max-version"` | ||||||
|  | 	//PreferServerCipherSuites bool               `yaml:"prefer-server-cipher-suites"` | ||||||
|  | 	//ClientAllowedSans        []string           `yaml:"client-allowed-sans"` | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type ClientTLSConfig struct { | ||||||
|  | 	Enabled          bool    `yaml:"enabled"` | ||||||
|  | 	CertFile         string  `yaml:"cert-file"` | ||||||
|  | 	KeyFile          string  `yaml:"key-file"` | ||||||
|  | 	CertText         string  `yaml:"cert-text"` | ||||||
|  | 	KeyText          string  `yaml:"key-text"` | ||||||
|  | 	ServerCACertFile string  `yaml:"server-ca-cert-file"` | ||||||
|  | 	ServerCACertText string  `yaml:"server-ca-cert-text"` | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type ServerConfig struct { | ||||||
|  | 	TLS ServerTLSConfig `yaml:"tls"` | ||||||
|  | 	 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type ClientConfig struct { | ||||||
|  | 	TLS ServerTLSConfig `yaml:"tls"` | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | func LoadServerConfig(cfgfile string) (*ServerConfig, error) { | ||||||
|  | 	var cfg ServerConfig | ||||||
|  | 	var f *os.File | ||||||
|  | 	var yd *yaml.Decoder | ||||||
|  | 	var err error | ||||||
|  |  | ||||||
|  | 	f, err = os.Open(cfgfile) | ||||||
|  | 	if err != nil && errors.Is(err, io.EOF) { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	yd = yaml.NewDecoder(f) | ||||||
|  | 	err = yd.Decode(&cfg) | ||||||
|  | 	f.Close() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return &cfg, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func LoadClientConfig(cfgfile string) (*ClientConfig, error) { | ||||||
|  | 	var cfg ClientConfig | ||||||
|  | 	var f *os.File | ||||||
|  | 	var yd *yaml.Decoder | ||||||
|  | 	var err error | ||||||
|  |  | ||||||
|  | 	f, err = os.Open(cfgfile) | ||||||
|  | 	if err != nil && errors.Is(err, io.EOF) { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	yd = yaml.NewDecoder(f) | ||||||
|  | 	err = yd.Decode(&cfg) | ||||||
|  | 	f.Close() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return &cfg, nil | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user