1
0
mirror of https://github.com/taigaio/taiga-back synced 2025-10-06 00:02:52 +02:00
Files
taiga-back/taiga/hooks/gogs/api.py
David Barragán Merino e7fad0b5cc chore: migrate to django 3.2
2023-02-24 13:05:37 +01:00

44 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# Copyright (c) 2021-present Kaleidos Ventures SL
from taiga.hooks.api import BaseWebhookApiViewSet
from . import event_hooks
import hmac
import hashlib
class GogsViewSet(BaseWebhookApiViewSet):
event_hook_classes = {
"push": event_hooks.PushEventHook
}
def _validate_signature(self, project, request):
if not hasattr(project, "modules_config"):
return False
if project.modules_config.config is None:
return False
secret = project.modules_config.config.get("gogs", {}).get("secret", None)
if secret is None:
return False
signature = request.headers.get("x-gogs-signature", None)
if not signature: # Old format signature support (before 0.11 version)
payload = self._get_payload(request)
return payload.get('secret', None) == secret
secret = project.modules_config.config.get("gogs", {}).get("secret", "")
secret = bytes(secret.encode("utf-8"))
mac = hmac.new(secret, msg=request.body, digestmod=hashlib.sha256)
return hmac.compare_digest(mac.hexdigest(), signature)
def _get_event_name(self, request):
return "push"