Browse Source
Refactor Webhook + Add X-Hub-Signature (#16176)
Refactor Webhook + Add X-Hub-Signature (#16176)
This PR removes multiple unneeded fields from the `HookTask` struct and adds the two headers `X-Hub-Signature` and `X-Hub-Signature-256`. ## ⚠️ BREAKING ⚠️ * The `Secret` field is no longer passed as part of the payload. * "Breaking" change (or fix?): The webhook history shows the real called url and not the url registered in the webhook (`deliver.go`@129). Close #16115 Fixes #7788 Fixes #11755 Co-authored-by: zeripath <art27@cantab.net>master
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 130 additions and 179 deletions
-
2models/migrations/migrations.go
-
46models/migrations/v187.go
-
52models/webhook.go
-
14models/webhook_test.go
-
55modules/structs/hook.go
-
2routers/api/v1/utils/hook.go
-
2routers/web/repo/webhook.go
-
61services/webhook/deliver.go
-
3services/webhook/dingtalk.go
-
3services/webhook/discord.go
-
3services/webhook/feishu.go
-
9services/webhook/matrix.go
-
4services/webhook/matrix_test.go
-
3services/webhook/msteams.go
-
3services/webhook/slack.go
-
3services/webhook/telegram.go
-
40services/webhook/webhook.go
-
4templates/repo/settings/webhook/history.tmpl
@ -0,0 +1,46 @@ |
|||
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|||
// Use of this source code is governed by a MIT-style
|
|||
// license that can be found in the LICENSE file.
|
|||
|
|||
package migrations |
|||
|
|||
import ( |
|||
"xorm.io/xorm" |
|||
) |
|||
|
|||
func dropWebhookColumns(x *xorm.Engine) error { |
|||
// Make sure the columns exist before dropping them
|
|||
type Webhook struct { |
|||
Signature string `xorm:"TEXT"` |
|||
IsSSL bool `xorm:"is_ssl"` |
|||
} |
|||
if err := x.Sync2(new(Webhook)); err != nil { |
|||
return err |
|||
} |
|||
|
|||
type HookTask struct { |
|||
Typ string `xorm:"VARCHAR(16) index"` |
|||
URL string `xorm:"TEXT"` |
|||
Signature string `xorm:"TEXT"` |
|||
HTTPMethod string `xorm:"http_method"` |
|||
ContentType int |
|||
IsSSL bool |
|||
} |
|||
if err := x.Sync2(new(HookTask)); err != nil { |
|||
return err |
|||
} |
|||
|
|||
sess := x.NewSession() |
|||
defer sess.Close() |
|||
if err := sess.Begin(); err != nil { |
|||
return err |
|||
} |
|||
if err := dropTableColumns(sess, "webhook", "signature", "is_ssl"); err != nil { |
|||
return err |
|||
} |
|||
if err := dropTableColumns(sess, "hook_task", "typ", "url", "signature", "http_method", "content_type", "is_ssl"); err != nil { |
|||
return err |
|||
} |
|||
|
|||
return sess.Commit() |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue