Преглед изворни кода

Adding baseurl flag to allow self-hosted GitLab/GitHub servers

Peter Gallagher пре 6 година
родитељ
комит
c5e1e8abc0
3 измењених фајлова са 25 додато и 2 уклоњено
  1. 14 1
      hosts/github.go
  2. 10 1
      hosts/gitlab.go
  3. 1 0
      options/options.go

+ 14 - 1
hosts/github.go

@@ -33,9 +33,22 @@ func NewGithubClient(m manager.Manager) *Github {
 		&oauth2.Token{AccessToken: options.GetAccessToken(m.Opts)},
 	)
 
+	var githubClient *github.Client
+	httpClient := oauth2.NewClient(ctx, token)
+
+	if m.Opts.BaseURL == "" {
+		githubClient = github.NewClient(httpClient)
+	} else {
+		var err error
+		githubClient, err = github.NewEnterpriseClient(m.Opts.BaseURL, m.Opts.BaseURL, httpClient)
+		if err != nil {
+			log.Error(err)
+		}
+	}
+
 	return &Github{
 		manager: m,
-		client:  github.NewClient(oauth2.NewClient(ctx, token)),
+		client:  githubClient,
 	}
 }
 

+ 10 - 1
hosts/gitlab.go

@@ -23,11 +23,20 @@ type Gitlab struct {
 // NewGitlabClient accepts a manager struct and returns a Gitlab host pointer which will be used to
 // perform a gitlab audit on an group or user.
 func NewGitlabClient(m manager.Manager) *Gitlab {
-	return &Gitlab{
+	gitlabClient := &Gitlab{
 		manager: m,
 		ctx:     context.Background(),
 		client:  gitlab.NewClient(nil, options.GetAccessToken(m.Opts)),
 	}
+
+	if m.Opts.BaseURL != "" {
+		err := gitlabClient.client.SetBaseURL(m.Opts.BaseURL)
+		if err != nil {
+			log.Error(err)
+		}
+	}
+
+	return gitlabClient
 }
 
 // Audit will audit a github user or organization's repos.

+ 1 - 0
options/options.go

@@ -52,6 +52,7 @@ type Options struct {
 
 	// Hosts
 	Host         string `long:"host" description:"git hosting service like gitlab or github. Supported hosts include: Github, Gitlab"`
+	BaseURL      string `long:"baseurl" description:"Base URL for API requests. Defaults to the public GitLab or GitHub API, but can be set to a domain endpoint to use with a self hosted server."`
 	Organization string `long:"org" description:"organization to audit"`
 	User         string `long:"user" description:"user to audit"` //work
 	PullRequest  string `long:"pr" description:"pull/merge request url"`