#!/bin/bash # This script is copyright Oz N Tiram # It is distributed under the terms of GPLv3 # To use this hook rename it to post-update # Also you need the following software packages installed # # * curl # * openssl # # EDIT THE FOLLOWING VARIABLES TO FIT YOUR NEEDS # THE KEY SHOULD ALSO BE KNOWN ON THE SERVER THAT LISTENS TO SUBMITS SECRET_KEY=VERYSECRETLONGKEYYOUSHOULDDEFINITELYEDIT SUBMIT_HOST=192.168.1.100 SUBMIT_PORT=5000 GITURL="git@yourhost.domain:oz123/frank.git" JSON_TO_SUBMIT="" for HEAD in $@; do # We love bash too, but there a really fancy basename BRANCH=`basename $HEAD` # CUT, UNIX, No bash # BRANCH=$(echo $HEAD |cut -d / -f 3) # FUCK, BASHSIMS #echo $HEAD #IFS="/" #BRANCH=($HEAD) #BRANCH=${BRANCH[2]} REST_OF_JSON=$(git --no-pager log -n 1 --format='{"hashes":{"commit":"%H", "tree":"%T", "parents":"%P" }, "author":{"date": "%ai", "name":"%an", "email":"%ae" }, "committer":{"date": "%ci", "name": "%cn", "email":"%ce" }') REST_OF_JSON=$REST_OF_JSON,\"branch\":\""${BRANCH}"\" #REST_OF_JSON=$REST_OF_JSON,\"giturl\":\"$GITURL\""}" JSON_TO_SUBMIT=$JSON_TO_SUBMIT{\"$BRANCH\":$REST_OF_JSON\} JSON_TO_SUBMIT=$JSON_TO_SUBMIT,\\n REST_OF_JSON="" done # Calculate the digest of JSON SECRET=$(echo -n $JSON_TO_SUBMIT | openssl dgst -sha1 -hmac $SECRET_KEY) SECRET=`echo $SECRET | cut -d'=' -f2` # TODO: Consider submiting to HTTPS! # Github uses X-Hub-Signature, we use X-Secret curl -H "Content-Type: application/json" -H "X-Secret:${SECRET}" -X POST http://${SUBMIT_HOST}:${SUBMIT_PORT}/ -d ${JSON_TO_SUBMIT}