* Add POC analyze sub-command * Address lint errors * [chore] Embed scopes at compile time * [chore] Move subcommand check up to prevent printing metrics * added http logging to most analyzers * Use custom RoundTripper with default http.Client * Create framework of interfaces, structs, and protos * Merge main * Add AnalysisInfo to detectors.Result * Hide analyze subcommand * Update gen_proto.sh * Update protos * Make protos * Update analyzer data types * Rename argument to credentialInfo --------- Co-authored-by: Joe Leon <[email protected]>
113 lines
2.7 KiB
Go
113 lines
2.7 KiB
Go
package bitbucket
|
|
|
|
var credential_type_map = map[string]string{
|
|
"repo_access_token": "Repository Access Token (Can access 1 repository)",
|
|
"project_access_token": "Project Access Token (Can access all repos in 1 project)",
|
|
"workspace_access_token": "Workspace Access Token (Can access all projects and repos in 1 workspace)",
|
|
}
|
|
|
|
type BitbucketScope struct {
|
|
Name string `json:"name"`
|
|
Category string `json:"category"`
|
|
ImpliedScopes []string `json:"implied_scopes"`
|
|
}
|
|
|
|
type ByCategoryAndName []BitbucketScope
|
|
|
|
func (a ByCategoryAndName) Len() int { return len(a) }
|
|
func (a ByCategoryAndName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
|
func (a ByCategoryAndName) Less(i, j int) bool {
|
|
categoryOrder := map[string]int{
|
|
"Account": 0,
|
|
"Projects": 1,
|
|
"Repositories": 2,
|
|
"Pull Requests": 3,
|
|
"Webhooks": 4,
|
|
"Pipelines": 5,
|
|
"Runners": 6,
|
|
}
|
|
nameOrder := map[string]int{
|
|
"Read": 0,
|
|
"Write": 1,
|
|
"Admin": 2,
|
|
"Delete": 3,
|
|
"Edit variables": 4,
|
|
"Read and write": 5,
|
|
}
|
|
|
|
if categoryOrder[a[i].Category] != categoryOrder[a[j].Category] {
|
|
return categoryOrder[a[i].Category] < categoryOrder[a[j].Category]
|
|
}
|
|
return nameOrder[a[i].Name] < nameOrder[a[j].Name]
|
|
}
|
|
|
|
var oauth_scope_map = map[string]BitbucketScope{
|
|
"repository": {
|
|
Name: "Read",
|
|
Category: "Repositories",
|
|
},
|
|
"repository:write": {
|
|
Name: "Write",
|
|
Category: "Repositories",
|
|
ImpliedScopes: []string{"repository"},
|
|
},
|
|
"repository:admin": {
|
|
Name: "Admin",
|
|
Category: "Repositories",
|
|
},
|
|
"repository:delete": {
|
|
Name: "Delete",
|
|
Category: "Repositories",
|
|
},
|
|
"pullrequest": {
|
|
Name: "Read",
|
|
Category: "Pull Requests",
|
|
ImpliedScopes: []string{"repository"},
|
|
},
|
|
"pullrequest:write": {
|
|
Name: "Write",
|
|
Category: "Pull Requests",
|
|
ImpliedScopes: []string{"pullrequest", "repository", "repository:write"},
|
|
},
|
|
"webhook": {
|
|
Name: "Read and write",
|
|
Category: "Webhooks",
|
|
},
|
|
"pipeline": {
|
|
Name: "Read",
|
|
Category: "Pipelines",
|
|
},
|
|
"pipeline:write": {
|
|
Name: "Write",
|
|
Category: "Pipelines",
|
|
ImpliedScopes: []string{"pipeline"},
|
|
},
|
|
"pipeline:variable": {
|
|
Name: "Edit variables",
|
|
Category: "Pipelines",
|
|
ImpliedScopes: []string{"pipeline", "pipeline:write"},
|
|
},
|
|
"runner": {
|
|
Name: "Read",
|
|
Category: "Runners",
|
|
},
|
|
"runner:write": {
|
|
Name: "Write",
|
|
Category: "Runners",
|
|
ImpliedScopes: []string{"runner"},
|
|
},
|
|
"project": {
|
|
Name: "Read",
|
|
Category: "Projects",
|
|
ImpliedScopes: []string{"repository"},
|
|
},
|
|
"project:admin": {
|
|
Name: "Admin",
|
|
Category: "Projects",
|
|
},
|
|
"account": {
|
|
Name: "Read",
|
|
Category: "Account",
|
|
},
|
|
}
|