模拟 github hook with curl with secret
Emulate github hook with curl with secret
我有类似 Emulate github service hooks wih curl 的需求,但我也在我的 webhook 中使用了一个秘密,但它无法正常工作。
这是我作为 post-接收挂钩所做的事情:
#!/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="}')
curl -X POST -H "Content-Type: application/json" -H "${sig}" --data-urlencode "payload@${tmpfile}" http://webhook:9000/hooks/r10k
rm -f "${tmpfile}"
done
webhook(与 github 一起使用)抱怨签名错误。
我做错了什么?
问题出在 openssl 命令输入流末尾的回车 return。
我改为:
#!/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="}')
curl -X POST -H "Content-Type: application/json" -H "${sig}" --data "${data}" http://webhook:9000/hooks/r10k
rm -f "${tmpfile}"
done
成功了。
我有类似 Emulate github service hooks wih curl 的需求,但我也在我的 webhook 中使用了一个秘密,但它无法正常工作。
这是我作为 post-接收挂钩所做的事情:
#!/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="}')
curl -X POST -H "Content-Type: application/json" -H "${sig}" --data-urlencode "payload@${tmpfile}" http://webhook:9000/hooks/r10k
rm -f "${tmpfile}"
done
webhook(与 github 一起使用)抱怨签名错误。
我做错了什么?
问题出在 openssl 命令输入流末尾的回车 return。
我改为:
#!/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="}')
curl -X POST -H "Content-Type: application/json" -H "${sig}" --data "${data}" http://webhook:9000/hooks/r10k
rm -f "${tmpfile}"
done
成功了。