diff options
Diffstat (limited to 'modules/server/owncast-integration/hook.cgi.sh')
-rw-r--r-- | modules/server/owncast-integration/hook.cgi.sh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/modules/server/owncast-integration/hook.cgi.sh b/modules/server/owncast-integration/hook.cgi.sh new file mode 100644 index 000000000000..a11891a384bc --- /dev/null +++ b/modules/server/owncast-integration/hook.cgi.sh @@ -0,0 +1,41 @@ +#!/bin/sh -e + +echo "Content-Type:text/plain" + +if [ "$REQUEST_METHOD" != POST ]; then + echo "Status:405 Method Not Allowed" + echo + exit +fi + +# case and printenv are used here to ensure there isn't a test +# subprocess with the secret visible in its argv. +case "$(printenv HTTP_AUTHORIZATION | sed -n 's/^basic //ip' | base64 -d)" in + "$(cat -- "$CREDENTIALS_DIRECTORY/owncast-inbound")") + ;; + *) + echo "Status:401 Unauthorized" + echo + exit + ;; +esac + +echo "Status:204 No Content" +echo + +if [ "$(jq -r .type)" = STREAM_STARTED ]; then + nc -N ::1 18770 <<EOF +📺 Development stream started on https://live.qyliss.net/! +EOF + + ( + sleep 3600 + ( + printf "Authorization: Bearer " + cat -- "$CREDENTIALS_DIRECTORY/owncast-outbound" + ) | curl -sSH @- \ + --json '{"body":"My work is mostly funded through individual donations. Please consider supporting development of Spectrum and related projects via https://github.com/sponsors/alyssais or https://liberapay.com/qyliss. Thank you!"}' \ + --fail-with-body \ + https://live.qyliss.net/api/integrations/chat/system + ) & +fi |