Skip to content
This repository was archived by the owner on May 9, 2025. It is now read-only.

Commit b163849

Browse files
committed
feat: add insecure flag to force http on the domain
1 parent b32ae76 commit b163849

File tree

3 files changed

+36
-13
lines changed

3 files changed

+36
-13
lines changed

apis/mpas/v1alpha1/repository_types.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ type RepositorySpec struct {
5353
//+optional
5454
//+kubebuilder:validation:Pattern="^\\w+(\\.|:[0-9]).*$"
5555
Domain string `json:"domain,omitempty"`
56+
// Insecure should be defined if `domain` is not HTTPS.
57+
//+optional
58+
Insecure bool `json:"insecure,omitempty"`
5659
//+optional
5760
Maintainers []string `json:"maintainers,omitempty"`
5861
//+optional
@@ -105,7 +108,12 @@ func (in Repository) GetRepositoryURL() string {
105108
return fmt.Sprintf("%s:%s/%s", in.Spec.Domain, in.Spec.Owner, in.GetName())
106109
}
107110

108-
return fmt.Sprintf("https://%s/%s/%s", in.Spec.Domain, in.Spec.Owner, in.GetName())
111+
scheme := "https"
112+
if in.Spec.Insecure {
113+
scheme = "http"
114+
}
115+
116+
return fmt.Sprintf("%s://%s/%s/%s", scheme, in.Spec.Domain, in.Spec.Owner, in.GetName())
109117
}
110118

111119
domain := ""

config/crd/bases/mpas.ocm.software_repositories.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ spec:
8383
- adopt
8484
- fail
8585
type: string
86+
insecure:
87+
description: Insecure should be defined if `domain` is not HTTPS.
88+
type: boolean
8689
interval:
8790
type: string
8891
isOrganization:

pkg/providers/gitea/gitea.go

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"encoding/base64"
1111
"errors"
1212
"fmt"
13+
"net/url"
1314

1415
"code.gitea.io/sdk/gitea"
1516
deliveryv1alpha1 "github.com/open-component-model/git-controller/apis/delivery/v1alpha1"
@@ -22,9 +23,8 @@ import (
2223
)
2324

2425
const (
25-
tokenKey = "password"
26-
providerType = "gitea"
27-
defaultDomain = "gitea.com"
26+
tokenKey = "password"
27+
providerType = "gitea"
2828
)
2929

3030
// Client gitea.
@@ -65,9 +65,9 @@ func (c *Client) CreateRepository(ctx context.Context, obj mpasv1alpha1.Reposito
6565
return fmt.Errorf("token '%s' not found in secret", tokenKey)
6666
}
6767

68-
domain := defaultDomain
69-
if obj.Spec.Domain != "" {
70-
domain = obj.Spec.Domain
68+
domain, err := c.getDomain(obj)
69+
if err != nil {
70+
return fmt.Errorf("failed to generate domain url: %w", err)
7171
}
7272

7373
client, err := gitea.NewClient(domain, gitea.SetToken(string(token)))
@@ -167,9 +167,9 @@ func (c *Client) CreatePullRequest(ctx context.Context, branch string, sync deli
167167
return -1, fmt.Errorf("token '%s' not found in secret", tokenKey)
168168
}
169169

170-
domain := defaultDomain
171-
if repository.Spec.Domain != "" {
172-
domain = repository.Spec.Domain
170+
domain, err := c.getDomain(repository)
171+
if err != nil {
172+
return -1, fmt.Errorf("failed to generate domain url: %w", err)
173173
}
174174

175175
gclient, err := gitea.NewClient(domain, gitea.SetToken(string(token)))
@@ -237,9 +237,9 @@ func (c *Client) CreateBranchProtection(ctx context.Context, repository mpasv1al
237237

238238
logger.Info("got secret")
239239

240-
domain := defaultDomain
241-
if repository.Spec.Domain != "" {
242-
domain = repository.Spec.Domain
240+
domain, err := c.getDomain(repository)
241+
if err != nil {
242+
return fmt.Errorf("failed to generate domain url: %w", err)
243243
}
244244

245245
logger.Info("default domain set", "domain", domain)
@@ -267,3 +267,15 @@ func (c *Client) CreateBranchProtection(ctx context.Context, repository mpasv1al
267267

268268
return nil
269269
}
270+
271+
func (c *Client) getDomain(obj mpasv1alpha1.Repository) (string, error) {
272+
u, err := url.Parse(obj.GetRepositoryURL())
273+
if err != nil {
274+
return "", fmt.Errorf("failed to parse repository url: %w", err)
275+
}
276+
277+
// construct the domain including the scheme and host but without the path
278+
// gitea requires a host and a scheme
279+
domain := fmt.Sprintf("%s://%s", u.Scheme, u.Host)
280+
return domain, nil
281+
}

0 commit comments

Comments
 (0)