Skip to content

Commit bb798a2

Browse files
Properly set webhook secret
Signed-off-by: Gabriel Adrian Samfira <[email protected]>
1 parent 6a168ba commit bb798a2

File tree

5 files changed

+21
-8
lines changed

5 files changed

+21
-8
lines changed

apiserver/controllers/controllers.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ func (a *APIController) handleWorkflowJobEvent(ctx context.Context, w http.Respo
103103
handleError(ctx, w, gErrors.NewBadRequestError("invalid post body: %s", err))
104104
return
105105
}
106-
slog.Debug("received workflow job event", "body", string(body))
107106

108107
signature := r.Header.Get("X-Hub-Signature-256")
109108
hookType := r.Header.Get("X-Github-Hook-Installation-Target-Type")
@@ -162,9 +161,6 @@ func (a *APIController) WebhookHandler(w http.ResponseWriter, r *http.Request) {
162161
}
163162

164163
headers := r.Header.Clone()
165-
for k, v := range headers {
166-
slog.Debug("header", "key", k, "value", v)
167-
}
168164

169165
event := runnerParams.Event(headers.Get("X-Github-Event"))
170166
switch event {

params/github.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,9 @@ type WorkflowJob struct {
171171
DefaultBranch string `json:"default_branch"`
172172
} `json:"repository"`
173173
Organization struct {
174-
Login string `json:"login"`
174+
Login string `json:"login"`
175+
// Name is a gitea specific field
176+
Name string `json:"name"`
175177
ID int64 `json:"id"`
176178
NodeID string `json:"node_id"`
177179
URL string `json:"url"`
@@ -218,6 +220,13 @@ type WorkflowJob struct {
218220
} `json:"sender"`
219221
}
220222

223+
func (w WorkflowJob) GetOrgName(forgeType EndpointType) string {
224+
if forgeType == GiteaEndpointType {
225+
return w.Organization.Name
226+
}
227+
return w.Organization.Login
228+
}
229+
221230
type RunnerSetting struct {
222231
Ephemeral bool `json:"ephemeral,omitempty"`
223232
IsElastic bool `json:"isElastic,omitempty"`

runner/pool/pool.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ func (r *basePoolManager) getProviderBaseParams(pool params.Pool) common.Provide
152152

153153
func (r *basePoolManager) HandleWorkflowJob(job params.WorkflowJob) error {
154154
if err := r.ValidateOwner(job); err != nil {
155+
slog.ErrorContext(r.ctx, "failed to validate owner", "error", err)
155156
return errors.Wrap(err, "validating owner")
156157
}
157158

@@ -164,6 +165,7 @@ func (r *basePoolManager) HandleWorkflowJob(job params.WorkflowJob) error {
164165

165166
jobParams, err := r.paramsWorkflowJobToParamsJob(job)
166167
if err != nil {
168+
slog.ErrorContext(r.ctx, "failed to convert job to params", "error", err)
167169
return errors.Wrap(err, "converting job to params")
168170
}
169171

@@ -1962,7 +1964,7 @@ func (r *basePoolManager) ValidateOwner(job params.WorkflowJob) error {
19621964
return runnerErrors.NewBadRequestError("job not meant for this pool manager")
19631965
}
19641966
case params.ForgeEntityTypeOrganization:
1965-
if !strings.EqualFold(job.Organization.Login, r.entity.Owner) {
1967+
if !strings.EqualFold(job.GetOrgName(r.entity.Credentials.ForgeType), r.entity.Owner) {
19661968
return runnerErrors.NewBadRequestError("job not meant for this pool manager")
19671969
}
19681970
case params.ForgeEntityTypeEnterprise:

runner/runner.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -668,8 +668,8 @@ func (r *Runner) DispatchWorkflowJob(hookTargetType, signature string, forgeType
668668
case OrganizationHook:
669669
slog.DebugContext(
670670
r.ctx, "got hook for organization",
671-
"organization", util.SanitizeLogEntry(job.Organization.Login))
672-
poolManager, err = r.findOrgPoolManager(job.Organization.Login, endpoint.Name)
671+
"organization", util.SanitizeLogEntry(job.GetOrgName(forgeType)))
672+
poolManager, err = r.findOrgPoolManager(job.GetOrgName(forgeType), endpoint.Name)
673673
case EnterpriseHook:
674674
slog.DebugContext(
675675
r.ctx, "got hook for enterprise",
@@ -679,7 +679,9 @@ func (r *Runner) DispatchWorkflowJob(hookTargetType, signature string, forgeType
679679
return runnerErrors.NewBadRequestError("cannot handle hook target type %s", hookTargetType)
680680
}
681681

682+
slog.DebugContext(r.ctx, "found pool manager", "pool_manager", poolManager.ID())
682683
if err != nil {
684+
slog.ErrorContext(r.ctx, "failed to find pool manager", "error", err, "hook_target_type", hookTargetType)
683685
// We don't have a repository or organization configured that
684686
// can handle this workflow job.
685687
return errors.Wrap(err, "fetching poolManager")
@@ -689,10 +691,12 @@ func (r *Runner) DispatchWorkflowJob(hookTargetType, signature string, forgeType
689691
// we make sure that the source of this workflow job is valid.
690692
secret := poolManager.WebhookSecret()
691693
if err := r.validateHookBody(signature, secret, jobData); err != nil {
694+
slog.ErrorContext(r.ctx, "failed to validate webhook data", "error", err)
692695
return errors.Wrap(err, "validating webhook data")
693696
}
694697

695698
if err := poolManager.HandleWorkflowJob(job); err != nil {
699+
slog.ErrorContext(r.ctx, "failed to handle workflow job", "error", err)
696700
return errors.Wrap(err, "handling workflow job")
697701
}
698702

util/github/gitea.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ func (g *githubClient) createGiteaRepoHook(ctx context.Context, owner, name stri
3232
"content_type": hook.GetConfig().GetContentType(),
3333
"url": hook.GetConfig().GetURL(),
3434
"http_method": "post",
35+
"secret": hook.GetConfig().GetSecret(),
3536
},
3637
}
3738

@@ -59,6 +60,7 @@ func (g *githubClient) createGiteaOrgHook(ctx context.Context, owner string, hoo
5960
"content_type": hook.GetConfig().GetContentType(),
6061
"url": hook.GetConfig().GetURL(),
6162
"http_method": "post",
63+
"secret": hook.GetConfig().GetSecret(),
6264
},
6365
}
6466

0 commit comments

Comments
 (0)