Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doodoocoder
prometheus
提交
02e06839
P
prometheus
项目概览
doodoocoder
/
prometheus
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
prometheus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
02e06839
编写于
7月 06, 2015
作者:
F
Fabian Reinartz
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
config: hide authentication credentials in String() output
上级
92c20168
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
20 addition
and
10 deletion
+20
-10
config/config.go
config/config.go
+10
-6
config/config_test.go
config/config_test.go
+8
-2
config/testdata/conf.good.yml
config/testdata/conf.good.yml
+2
-2
未找到文件。
config/config.go
浏览文件 @
02e06839
...
...
@@ -20,6 +20,7 @@ var (
patJobName
=
regexp
.
MustCompile
(
`^[a-zA-Z_][a-zA-Z0-9_-]*$`
)
patFileSDName
=
regexp
.
MustCompile
(
`^[^*]*(\*[^/]*)?\.(json|yml|yaml|JSON|YML|YAML)$`
)
patRulePath
=
regexp
.
MustCompile
(
`^[^*]*(\*[^/]*)?$`
)
patAuthLine
=
regexp
.
MustCompile
(
`((?:username|password):\s+)(".+"|'.+'|[^\s]+)`
)
)
// Load parses the YAML input s into a Config.
...
...
@@ -118,14 +119,17 @@ func checkOverflow(m map[string]interface{}, ctx string) error {
}
func
(
c
Config
)
String
()
string
{
var
s
string
if
c
.
original
!=
""
{
return
c
.
original
}
b
,
err
:=
yaml
.
Marshal
(
c
)
if
err
!=
nil
{
return
fmt
.
Sprintf
(
"<error creating config string: %s>"
,
err
)
s
=
c
.
original
}
else
{
b
,
err
:=
yaml
.
Marshal
(
c
)
if
err
!=
nil
{
return
fmt
.
Sprintf
(
"<error creating config string: %s>"
,
err
)
}
s
=
string
(
b
)
}
return
string
(
b
)
return
patAuthLine
.
ReplaceAllString
(
s
,
"${1}<hidden>"
)
}
// UnmarshalYAML implements the yaml.Unmarshaler interface.
...
...
config/config_test.go
浏览文件 @
02e06839
...
...
@@ -85,8 +85,8 @@ var expectedConf = &Config{
ScrapeTimeout
:
Duration
(
5
*
time
.
Second
),
BasicAuth
:
&
BasicAuth
{
Username
:
"admin"
,
Password
:
"password"
,
Username
:
"admin
_name
"
,
Password
:
"
admin_
password"
,
},
MetricsPath
:
"/my_path"
,
Scheme
:
"https"
,
...
...
@@ -183,6 +183,12 @@ func TestLoadConfig(t *testing.T) {
if
!
reflect
.
DeepEqual
(
c
,
expectedConf
)
{
t
.
Fatalf
(
"%s: unexpected config result:
\n\n
%s
\n
expected
\n\n
%s"
,
"testdata/conf.good.yml"
,
bgot
,
bexp
)
}
// String method must not reveal authentication credentials.
s
:=
c
.
String
()
if
strings
.
Contains
(
s
,
"admin_name"
)
||
strings
.
Contains
(
s
,
"admin_password"
)
{
t
.
Fatalf
(
"config's String method reveals authentication credentials."
)
}
}
var
expectedErrors
=
[]
struct
{
...
...
config/testdata/conf.good.yml
浏览文件 @
02e06839
...
...
@@ -49,8 +49,8 @@ scrape_configs:
-
job_name
:
service-x
basic_auth
:
username
:
admin
password
:
password
username
:
admin
_name
password
:
admin_
password
scrape_interval
:
50s
scrape_timeout
:
5s
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录