diff options
author | Oliver Poignant <oliver@poignant.se> | 2016-12-09 20:36:38 +0100 |
---|---|---|
committer | Oliver Poignant <oliver@poignant.se> | 2016-12-09 20:36:38 +0100 |
commit | c98d5b22de7bed03c6345775539a405e61e58477 (patch) | |
tree | 4fff1fdca0626bad24d894192369028d1af9d44d /gitautodeploy/httpserver.py | |
parent | 9e4aa3618ad9f5494847fb95b0958f2f1b43ccb5 (diff) | |
download | Git-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.py | 5 |
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)) |