From 7373610f7eb8e516b6610370411b57a20e7af2a0 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 22 Feb 2015 16:14:46 +0100 Subject: add support for github -> local sync --- webhook.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 webhook.py (limited to 'webhook.py') diff --git a/webhook.py b/webhook.py new file mode 100755 index 0000000..a7ae5f8 --- /dev/null +++ b/webhook.py @@ -0,0 +1,22 @@ +#!/usr/bin/python3 +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 + +# get repository from query string +query = os.getenv("QUERY_STRING") +query = urllib.parse.parse_qs(query) +repository = query.get('repository', []) +repository = repository[0] if len(repository) else '' + +# execute the actual script +git_mirror = "/home/ralf/git-mirror/update.py" +os.execlp("sudo", "sudo", "-n", "-u", "git", git_mirror, "--web-hook", "--repository", repository) -- cgit v1.2.3