请问我想用pkg/cof加载加密过的yml
Closed this issue · 4 comments
lijianow commented
我需要怎么自定义加载和解析呢?
因为项目开发是多运维的场景,除了某个人,不希望大家都能看到密钥信息,我我看了下viper里的yml加载,默认都是需要定义文件的,不支持直接传yml 字符串,所以我想直接加密yml ,但这就意味着当读文件的时候需要解密一下
我研究了一天没想到用sponge 怎么写
zhufuyi commented
例如你的服务名称为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
}
lijianow commented
还得是你聪明,好主意 我可以先这么干着
这个方法只有一瞬间的危险 假如文件被监听复制走 大佬如果还有其他的思路 可有在这里留言
这个帖子我过2天思考下close
zhufuyi commented
可以自己实现解析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)
}
lijianow commented
卧槽 十分感谢 你的库写的真像艺术品