X-Git-Url: https://git.ralfj.de/git-mirror.git/blobdiff_plain/b13f671882eb0d0e302860144103870f38f4a062..HEAD:/webhook.py diff --git a/webhook.py b/webhook.py index 7935d81..0b3f11f 100755 --- a/webhook.py +++ b/webhook.py @@ -1,4 +1,4 @@ -#!/usr/bin/python3 +#!/usr/bin/env python3 # Copyright (c) 2015, Ralf Jung # All rights reserved. # @@ -26,19 +26,9 @@ # This is the CGI script receiving GitHub webhooks. # You may have to change the location of the "main" webhook script: webhook_core = "/home/git/git-mirror/webhook-core.py" -# -import urllib.request, urllib.parse, json, os, sys -def is_github(remote_addr): - '''Returns whether the address is a github hook address. This function requires Python 3.3.''' - from ipaddress import ip_address, ip_network - remote_addr = ip_address(ip_network) - github = urllib.request.urlopen('https://api.github.com/meta').read() - github = json.loads(github.decode('utf-8')) - for net in github['hooks']: - if remote_addr in ip_network(net): - return True - return False +# Do NOT change anything below here +import urllib.request, urllib.parse, json, os, sys # get repository from query string query = os.getenv("QUERY_STRING") @@ -46,5 +36,9 @@ query = urllib.parse.parse_qs(query) repository = query.get('repository', []) repository = repository[0] if len(repository) else '' +# get GitHub metadata +githubEvent = os.getenv('HTTP_X_GITHUB_EVENT') +githubSignature = os.getenv('HTTP_X_HUB_SIGNATURE') + # execute the actual script -os.execlp("sudo", "sudo", "-n", "-u", "git", webhook_core, repository) +os.execlp("sudo", "sudo", "-n", "-u", "git", webhook_core, repository, str(githubEvent), str(githubSignature))