zhufuyi/sponge

请问我想用pkg/cof加载加密过的yml

Closed this issue · 4 comments

我需要怎么自定义加载和解析呢?
因为项目开发是多运维的场景,除了某个人,不希望大家都能看到密钥信息,我我看了下viper里的yml加载,默认都是需要定义文件的,不支持直接传yml 字符串,所以我想直接加密yml ,但这就意味着当读文件的时候需要解密一下
我研究了一天没想到用sponge 怎么写

例如你的服务名称为user,创建的user服务之后,打开代码internal/config/user.go,修改一下Init函数

func Init(configFile string, fs ...func()) error {
	// 在这解密你的yaml文件,并保存到临时文件./user.yml
	tmpFile := "./user.yml"

	config = &Config{}
	err := conf.Parse(tmpFile, config, fs...)
	if err == nil {
		// 删除临时文件
	}
	return err
}

还得是你聪明,好主意 我可以先这么干着
这个方法只有一瞬间的危险 假如文件被监听复制走 大佬如果还有其他的思路 可有在这里留言
这个帖子我过2天思考下close

可以自己实现解析yaml文件来替换conf.Parse,无需保存临时文件

func Init(configFile string) error {
	data, err := os.ReadFile(configFile)
	if err != nil {
		return err
	}

	// 解密内容data得到 decryptedData

	r := bytes.NewReader(decryptedData)
	viper.SetConfigType("yaml")
	err = viper.ReadConfig(r)
	if err != nil {
		return err
	}
	config = &Config{}
	return viper.Unmarshal(config)
}

卧槽 十分感谢 你的库写的真像艺术品