about summary refs log tree commit diff
path: root/modules/server/owncast-integration/hook.cgi.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/server/owncast-integration/hook.cgi.sh')
-rw-r--r--modules/server/owncast-integration/hook.cgi.sh41
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