summaryrefslogtreecommitdiffstats
path: root/gitautodeploy/httpserver.py
diff options
context:
space:
mode:
authorOliver Poignant <oliver@poignant.se>2016-12-09 20:36:38 +0100
committerOliver Poignant <oliver@poignant.se>2016-12-09 20:36:38 +0100
commitc98d5b22de7bed03c6345775539a405e61e58477 (patch)
tree4fff1fdca0626bad24d894192369028d1af9d44d /gitautodeploy/httpserver.py
parent9e4aa3618ad9f5494847fb95b0958f2f1b43ccb5 (diff)
downloadGit-Auto-Deploy-c98d5b22de7bed03c6345775539a405e61e58477.zip
Git-Auto-Deploy-c98d5b22de7bed03c6345775539a405e61e58477.tar.gz
Git-Auto-Deploy-c98d5b22de7bed03c6345775539a405e61e58477.tar.bz2
Verify secret token in GitLab requests
Diffstat (limited to 'gitautodeploy/httpserver.py')
-rw-r--r--gitautodeploy/httpserver.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/gitautodeploy/httpserver.py b/gitautodeploy/httpserver.py
index 654fd83..2dfb0db 100644
--- a/gitautodeploy/httpserver.py
+++ b/gitautodeploy/httpserver.py
@@ -59,6 +59,11 @@ class WebhookRequestHandler(BaseHTTPRequestHandler):
repo_configs, ref, action, webhook_urls = ServiceRequestParser(self._config).get_repo_params_from_request(request_headers, request_body)
logger.debug("Event details - ref: %s; action: %s" % (ref or "master", action))
+ if not ServiceRequestParser(self._config).validate_request(request_headers, repo_configs):
+ self.send_error(400, 'Bad request')
+ test_case['expected']['status'] = 400
+ return
+
if len(repo_configs) == 0:
self.send_error(400, 'Bad request')
logger.warning('The URLs references in the webhook did not match any repository entry in the config. For this webhook to work, make sure you have at least one repository configured with one of the following URLs; %s' % ', '.join(webhook_urls))