From d6a951914671c63ed5c80fab7ce5cd1565a0418b Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 12 Jan 2026 08:56:55 +0000 Subject: [PATCH] Debug scripts --- send-webmentions-debug.sh | 75 +++++++++++++++++++++++++++++++++++++++ test-webmention-auth.sh | 43 ++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100755 send-webmentions-debug.sh create mode 100755 test-webmention-auth.sh diff --git a/send-webmentions-debug.sh b/send-webmentions-debug.sh new file mode 100755 index 0000000..10a37d4 --- /dev/null +++ b/send-webmentions-debug.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +# Load environment variables from .env file +if [ -f .env ]; then + export $(cat .env | grep -v '^#' | xargs) +else + echo "⚠️ Warning: .env file not found, using defaults" +fi + +# Use environment variables with fallback defaults +WEBMENTIONS_FILE="${WEBMENTIONS_FILE:-public/webmentions.json}" +SENT_CACHE="${SENT_CACHE:-.webmentions-sent}" +API_ENDPOINT="${API_ENDPOINT:-https://api.ritual.sh/webmention/send}" +API_KEY="${API_KEY:-your-secret-key}" + +echo "DEBUG: Configuration" +echo "====================" +echo "API_ENDPOINT: $API_ENDPOINT" +echo "API_KEY: ${API_KEY:0:10}... (first 10 chars)" +echo "WEBMENTIONS_FILE: $WEBMENTIONS_FILE" +echo "" + +# Read the webmentions JSON +if [ ! -f "$WEBMENTIONS_FILE" ]; then + echo "No webmentions.json found at $WEBMENTIONS_FILE" + exit 0 +fi + +# Get first mention for testing +first_mention=$(jq -c '.[0]' "$WEBMENTIONS_FILE") +source=$(echo "$first_mention" | jq -r '.source') +target=$(echo "$first_mention" | jq -r '.target') + +echo "DEBUG: Testing with first webmention" +echo "=====================================" +echo "Source: $source" +echo "Target: $target" +echo "" + +# Create the JSON payload +payload=$(jq -n \ + --arg auth "$API_KEY" \ + --arg source "$source" \ + --arg target "$target" \ + '{auth: $auth, source: $source, target: $target}') + +echo "DEBUG: Payload" +echo "==============" +echo "$payload" | jq '.' +echo "" + +echo "DEBUG: Sending request..." +echo "=========================" + +# Send with verbose output +response=$(curl -v -X POST "$API_ENDPOINT" \ + -H "Content-Type: application/json" \ + -d "$payload" \ + 2>&1) + +echo "" +echo "DEBUG: Full Response" +echo "====================" +echo "$response" +echo "" + +# Extract just the HTTP status and response body +http_status=$(echo "$response" | grep "< HTTP" | tail -1) +response_body=$(echo "$response" | sed -n '/^{/,/^}/p' | tail -1) + +echo "" +echo "DEBUG: Parsed Results" +echo "=====================" +echo "HTTP Status: $http_status" +echo "Response Body: $response_body" diff --git a/test-webmention-auth.sh b/test-webmention-auth.sh new file mode 100755 index 0000000..be8bdeb --- /dev/null +++ b/test-webmention-auth.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Simple test to verify API authentication +# Usage: ./test-webmention-auth.sh YOUR_API_KEY + +API_KEY="${1:-your-secret-key}" +API_ENDPOINT="${API_ENDPOINT:-https://api.ritual.sh/webmention/send}" + +echo "Testing webmention API authentication" +echo "======================================" +echo "Endpoint: $API_ENDPOINT" +echo "API Key: ${API_KEY:0:10}... (truncated)" +echo "" + +# Test 1: Wrong auth (should get 401) +echo "Test 1: Wrong auth (expecting 401 Unauthorized)" +echo "------------------------------------------------" +curl -v -X POST "$API_ENDPOINT" \ + -H "Content-Type: application/json" \ + -d '{"auth":"wrong-key","source":"https://ritual.sh/test/","target":"https://example.com/test/"}' \ + 2>&1 | grep -E "(< HTTP|Unauthorized|error)" + +echo "" +echo "" + +# Test 2: Correct auth (should get 400 or 201 depending on whether endpoints exist) +echo "Test 2: Correct auth (expecting 400 'No endpoint found' or 201 success)" +echo "------------------------------------------------------------------------" +curl -v -X POST "$API_ENDPOINT" \ + -H "Content-Type: application/json" \ + -d "{\"auth\":\"$API_KEY\",\"source\":\"https://ritual.sh/test/\",\"target\":\"https://example.com/test/\"}" \ + 2>&1 | grep -E "(< HTTP|success|error|endpoint)" + +echo "" +echo "" + +# Test 3: Missing auth (should get 401) +echo "Test 3: Missing auth (expecting 401 Unauthorized)" +echo "--------------------------------------------------" +curl -v -X POST "$API_ENDPOINT" \ + -H "Content-Type: application/json" \ + -d '{"source":"https://ritual.sh/test/","target":"https://example.com/test/"}' \ + 2>&1 | grep -E "(< HTTP|Unauthorized|error)"