configmdl.go 2.21 KiB
Newer Older
package configmdl

import (
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/filemdl"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/securitymdl"
	"github.com/BurntSushi/toml"
)

// InitConfig initConfig
func InitConfig(fpath string, config interface{}) (toml.MetaData, error) {
	return toml.DecodeFile(fpath, config)
}

// InitConfigData initConfig using byte array
func InitConfigData(data []byte, config interface{}) (toml.MetaData, error) {
	return toml.Decode(string(data), config)
}

// var config tomlConfig
// InitConfig("../testingdata/testData/config/config.toml", &config)
// fmt.Println(config.Name)

//******* SECURE *******//

// InitConfigSecure - Init Config Secure
func InitConfigSecure(fpath string, config interface{}, key []byte) (toml.MetaData, error) {
	fileBytes, fileReadErr := filemdl.ReadFile(fpath)
	if fileReadErr != nil {
		return toml.MetaData{}, fileReadErr
	}
	fileContent, decryptErr := securitymdl.AESDecrypt(fileBytes, key)
	if errormdl.CheckErr2(decryptErr) != nil {
		return toml.MetaData{}, errormdl.CheckErr2(decryptErr)
	}
	return toml.Decode(string(fileContent), config)
}

// SaveConfig - SaveConfig
func SaveConfig(fpath string, config interface{}) error {
	// bytes, tomlMarshalError := pellgotoml.Marshal(config)
	bytes, tomlMarshalError := toml.Marshal(config)
	if errormdl.CheckErr(tomlMarshalError) != nil {
		return errormdl.CheckErr(tomlMarshalError)
	}
	writeError := filemdl.WriteFile(fpath, bytes, false, false)
	if errormdl.CheckErr2(writeError) != nil {
		return errormdl.CheckErr2(writeError)
	}
	return nil
}

// SaveConfigSecure - SaveConfigSecure
func SaveConfigSecure(fpath string, config interface{}, key []byte) error {
	configBytes, tomlMarshalError := toml.Marshal(config)
	if errormdl.CheckErr(tomlMarshalError) != nil {
		return errormdl.CheckErr(tomlMarshalError)
	}

	encryptedBytes, encryptError := securitymdl.AESEncrypt(configBytes, key)

	if errormdl.CheckErr1(encryptError) != nil {
		return errormdl.CheckErr1(encryptError)
	}

	writeError := filemdl.WriteFile(fpath, encryptedBytes, false, false)
	if errormdl.CheckErr2(writeError) != nil {
		return errormdl.CheckErr2(writeError)
	}
	return nil
}