2016-02-19 56 views
0

我有一个需要类似于Emulate github service hooks wih curl,但我也在我的webhook中使用一个秘密,它不能正常工作。仿真github钩与卷曲与秘密

下面是我在做什么作为后收到钩:

#!/bin/bash 

while read oldrev newrev refname; do 
    tmpfile=$(mktemp --suffix=.json) 

    cat <<EOF> $tmpfile 
    { 
    "ref": "${refname}" 
    } 
EOF 

    sig=$(cat "${tmpfile}" | openssl dgst -sha1 -hmac "${WEBHOOK_SECRET}" | awk '{print "X-Hub-Signature: sha1="$2}') 

    curl -X POST -H "Content-Type: application/json" -H "${sig}" --data-urlencode "[email protected]${tmpfile}" http://webhook:9000/hooks/r10k 

    rm -f "${tmpfile}" 
done 

网络挂接(与GitHub的作品)抱怨说,签名是错误的。

我在做什么错?

回答

1

问题来自openssl命令中输入流末尾的回车。

我改这个代替:

#!/bin/bash 

while read oldrev newrev refname; do 
    tmpfile=$(mktemp --suffix=.json) 

    data="{\"ref\": \"${refname}\"}" 

    sig=$(echo -n "${data}" | openssl dgst -sha1 -hmac "%{WEBHOOK_SECRET}" | awk '{print "X-Hub-Signature: sha1="$2}') 

    curl -X POST -H "Content-Type: application/json" -H "${sig}" --data "${data}" http://webhook:9000/hooks/r10k 

    rm -f "${tmpfile}" 
done 

和它的工作。