Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2020fengziyang
kubesphere
提交
247fc38b
K
kubesphere
项目概览
2020fengziyang
/
kubesphere
与 Fork 源项目一致
Fork自
KubeSphere / kubesphere
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kubesphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
247fc38b
编写于
4月 01, 2019
作者:
R
runzexia
提交者:
zryfish
4月 07, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update verify func
上级
70882b5a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
80 addition
and
21 deletion
+80
-21
pkg/apis/resources/v1alpha2/register.go
pkg/apis/resources/v1alpha2/register.go
+1
-3
pkg/apiserver/git/git.go
pkg/apiserver/git/git.go
+1
-2
pkg/models/git/git.go
pkg/models/git/git.go
+27
-16
pkg/models/git/git_test.go
pkg/models/git/git_test.go
+51
-0
未找到文件。
pkg/apis/resources/v1alpha2/register.go
浏览文件 @
247fc38b
...
...
@@ -152,13 +152,11 @@ func addWebService(c *restful.Container) error {
Writes
(
errors
.
Error
{}))
tags
=
[]
string
{
"Git"
}
webservice
.
Route
(
webservice
.
POST
(
"/
namespaces/{namespace}/secrets/{secret}/git
readverify"
)
.
webservice
.
Route
(
webservice
.
POST
(
"/
git/
readverify"
)
.
To
(
git
.
GitReadVerify
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"secret git read verify"
)
.
Param
(
webservice
.
PathParameter
(
"namespace"
,
"secret's namespace"
))
.
Param
(
webservice
.
PathParameter
(
"secret"
,
"secret's name"
))
.
Reads
(
gitmodel
.
AuthInfo
{})
.
Writes
(
errors
.
Error
{}),
)
...
...
pkg/apiserver/git/git.go
浏览文件 @
247fc38b
...
...
@@ -14,13 +14,12 @@ func GitReadVerify(request *restful.Request, response *restful.Response) {
err
:=
request
.
ReadEntity
(
&
authInfo
)
ns
:=
request
.
PathParameter
(
"namespace"
)
name
:=
request
.
PathParameter
(
"name"
)
if
err
!=
nil
{
response
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
err
=
git
.
GitReadVerify
(
ns
,
name
,
authInfo
)
err
=
git
.
GitReadVerify
(
ns
,
authInfo
)
if
err
!=
nil
{
response
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
...
...
pkg/models/git/git.go
浏览文件 @
247fc38b
...
...
@@ -11,34 +11,45 @@ import (
)
type
AuthInfo
struct
{
RemoteUrl
string
`json:"remoteUrl"`
RemoteUrl
string
`json:"remoteUrl"`
SecretRef
*
corev1
.
SecretReference
`json:"secretRef,omitempty"`
}
func
GitReadVerify
(
namespace
string
,
name
string
,
authInfo
AuthInfo
)
error
{
secret
,
err
:=
informers
.
SharedInformerFactory
()
.
Core
()
.
V1
()
.
Secrets
()
.
Lister
()
.
Secrets
(
namespace
)
.
Get
(
name
)
if
err
!=
nil
{
return
err
}
username
,
ok
:=
secret
.
Data
[
corev1
.
BasicAuthUsernameKey
]
if
!
ok
{
return
fmt
.
Errorf
(
"could not get username in secret %s"
,
secret
.
Name
)
}
password
,
ok
:=
secret
.
Data
[
corev1
.
BasicAuthPasswordKey
]
if
!
ok
{
return
fmt
.
Errorf
(
"could not get password in secret %s"
,
secret
.
Name
)
func
GitReadVerify
(
namespace
string
,
authInfo
AuthInfo
)
error
{
username
:=
""
password
:=
""
if
authInfo
.
SecretRef
!=
nil
{
secret
,
err
:=
informers
.
SharedInformerFactory
()
.
Core
()
.
V1
()
.
Secrets
()
.
Lister
()
.
Secrets
(
authInfo
.
SecretRef
.
Namespace
)
.
Get
(
authInfo
.
SecretRef
.
Name
)
if
err
!=
nil
{
return
err
}
usernameBytes
,
ok
:=
secret
.
Data
[
corev1
.
BasicAuthUsernameKey
]
if
!
ok
{
return
fmt
.
Errorf
(
"could not get username in secret %s"
,
secret
.
Name
)
}
passwordBytes
,
ok
:=
secret
.
Data
[
corev1
.
BasicAuthPasswordKey
]
if
!
ok
{
return
fmt
.
Errorf
(
"could not get password in secret %s"
,
secret
.
Name
)
}
username
=
string
(
usernameBytes
)
password
=
string
(
passwordBytes
)
}
return
gitReadVerifyWithBasicAuth
(
string
(
username
),
string
(
password
),
authInfo
.
RemoteUrl
)
}
func
gitReadVerifyWithBasicAuth
(
username
string
,
password
string
,
remote
string
)
error
{
r
,
_
:=
git
.
Init
(
memory
.
NewStorage
(),
nil
)
// Add a new remote, with the default fetch refspec
origin
,
err
:=
r
.
CreateRemote
(
&
config
.
RemoteConfig
{
Name
:
git
.
DefaultRemoteName
,
URLs
:
[]
string
{
authInfo
.
RemoteUrl
},
URLs
:
[]
string
{
remote
},
})
if
err
!=
nil
{
return
err
}
_
,
err
=
origin
.
List
(
&
git
.
ListOptions
{
Auth
:
&
http
.
BasicAuth
{
Username
:
string
(
username
),
Password
:
string
(
password
)}})
_
,
err
=
origin
.
List
(
&
git
.
ListOptions
{
Auth
:
&
http
.
BasicAuth
{
Username
:
string
(
username
),
Password
:
string
(
password
)}})
return
err
}
pkg/models/git/git_test.go
0 → 100644
浏览文件 @
247fc38b
package
git
import
(
"testing"
)
func
TestGitReadVerifyWithBasicAuth
(
t
*
testing
.
T
)
{
shouldSuccess
:=
[]
map
[
string
]
string
{
{
"username"
:
""
,
"password"
:
""
,
"remote"
:
"https://github.com/kubesphere/kubesphere"
,
},
}
shouldFailed
:=
[]
map
[
string
]
string
{
{
"username"
:
""
,
"password"
:
""
,
"remote"
:
"https://github.com/kubesphere/kubesphere12222"
,
},
{
"username"
:
""
,
"password"
:
""
,
"remote"
:
"git@github.com:kubesphere/kubesphere.git"
,
},
{
"username"
:
"runzexia"
,
"password"
:
""
,
"remote"
:
"git@github.com:kubesphere/kubesphere.git"
,
},
{
"username"
:
""
,
"password"
:
""
,
"remote"
:
"git@fdsfs41342`@@@2414!!!!github.com:kubesphere/kubesphere.git"
,
},
}
for
_
,
item
:=
range
shouldSuccess
{
err
:=
gitReadVerifyWithBasicAuth
(
item
[
"username"
],
item
[
"password"
],
item
[
"remote"
])
if
err
!=
nil
{
t
.
Errorf
(
"should could access repo [%s] with %s:%s, %v"
,
item
[
"username"
],
item
[
"password"
],
item
[
"remote"
],
err
)
}
}
for
_
,
item
:=
range
shouldFailed
{
err
:=
gitReadVerifyWithBasicAuth
(
item
[
"username"
],
item
[
"password"
],
item
[
"remote"
])
if
err
==
nil
{
t
.
Errorf
(
"should could access repo [%s] with %s:%s "
,
item
[
"username"
],
item
[
"password"
],
item
[
"remote"
])
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录