From 2d93c2f819d382c5b362b614a86c9eeb603a4278 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 5 Sep 2025 10:59:10 -0400 Subject: [PATCH] v0.0.4 - nip09 implemented --- README.md | 11 +- build_and_push.sh | 389 ++++++++++++++++++++++++++++ db/c_nostr_relay.db-shm | Bin 32768 -> 32768 bytes db/c_nostr_relay.db-wal | Bin 1734552 -> 3543232 bytes relay.log | 126 +++++++++ relay.pid | 2 +- src/main | Bin 250984 -> 282816 bytes src/main.c | 560 +++++++++++++++++++++++++++++++++++++++- tests/1_nip_test.sh | 84 +++++- tests/9_delete_test.sh | 386 +++++++++++++++++++++++++++ 10 files changed, 1537 insertions(+), 21 deletions(-) create mode 100755 build_and_push.sh create mode 100755 tests/9_delete_test.sh diff --git a/README.md b/README.md index d0ff624..a2f2387 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ A nostr relay in C with sqlite on the back end. - + ### [NIPs](https://github.com/nostr-protocol/nips) -- [x] NIP-01: Basic protocol flow description -- [ ] NIP-02: Contact list and petnames -- [ ] NIP-04: Encrypted Direct Message -- [ ] NIP-09: Event deletion +- [x] NIP-01: Basic protocol flow implementation +- [x] NIP-09: Event deletion - [ ] NIP-11: Relay information document - [ ] NIP-12: Generic tag queries - [ ] NIP-13: Proof of Work diff --git a/build_and_push.sh b/build_and_push.sh new file mode 100755 index 0000000..7f288c8 --- /dev/null +++ b/build_and_push.sh @@ -0,0 +1,389 @@ +#!/bin/bash +set -e + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +print_status() { echo -e "${BLUE}[INFO]${NC} $1"; } +print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; } +print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; } +print_error() { echo -e "${RED}[ERROR]${NC} $1"; } + +# Global variables +COMMIT_MESSAGE="" +RELEASE_MODE=false + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + -r|--release) + RELEASE_MODE=true + shift + ;; + -h|--help) + show_usage + exit 0 + ;; + *) + # First non-flag argument is the commit message + if [[ -z "$COMMIT_MESSAGE" ]]; then + COMMIT_MESSAGE="$1" + fi + shift + ;; + esac +done + +show_usage() { + echo "C-Relay Build and Push Script" + echo "" + echo "Usage:" + echo " $0 \"commit message\" - Default: compile, increment patch, commit & push" + echo " $0 -r \"commit message\" - Release: compile x86+arm64, increment minor, create release" + echo "" + echo "Examples:" + echo " $0 \"Fixed event validation bug\"" + echo " $0 --release \"Major release with new features\"" + echo "" + echo "Default Mode (patch increment):" + echo " - Compile C-Relay" + echo " - Increment patch version (v1.2.3 β†’ v1.2.4)" + echo " - Git add, commit with message, and push" + echo "" + echo "Release Mode (-r flag):" + echo " - Compile C-Relay for x86_64 and arm64" + echo " - Increment minor version, zero patch (v1.2.3 β†’ v1.3.0)" + echo " - Git add, commit, push, and create Gitea release" + echo "" + echo "Requirements for Release Mode:" + echo " - ARM64 cross-compiler: sudo apt install gcc-aarch64-linux-gnu" + echo " - Gitea token in ~/.gitea_token for release uploads" +} + +# Validate inputs +if [[ -z "$COMMIT_MESSAGE" ]]; then + print_error "Commit message is required" + echo "" + show_usage + exit 1 +fi + +# Check if we're in a git repository +check_git_repo() { + if ! git rev-parse --git-dir > /dev/null 2>&1; then + print_error "Not in a git repository" + exit 1 + fi +} + +# Function to get current version and increment appropriately +increment_version() { + local increment_type="$1" # "patch" or "minor" + + print_status "Getting current version..." + + # Get the highest version tag (not chronologically latest) + LATEST_TAG=$(git tag -l 'v*.*.*' | sort -V | tail -n 1 || echo "") + if [[ -z "$LATEST_TAG" ]]; then + LATEST_TAG="v0.0.0" + print_warning "No version tags found, starting from $LATEST_TAG" + fi + + # Extract version components (remove 'v' prefix) + VERSION=${LATEST_TAG#v} + + # Parse major.minor.patch using regex + if [[ $VERSION =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then + MAJOR=${BASH_REMATCH[1]} + MINOR=${BASH_REMATCH[2]} + PATCH=${BASH_REMATCH[3]} + else + print_error "Invalid version format in tag: $LATEST_TAG" + print_error "Expected format: v0.1.0" + exit 1 + fi + + # Increment version based on type + if [[ "$increment_type" == "minor" ]]; then + # Minor release: increment minor, zero patch + NEW_MINOR=$((MINOR + 1)) + NEW_PATCH=0 + NEW_VERSION="v${MAJOR}.${NEW_MINOR}.${NEW_PATCH}" + print_status "Release mode: incrementing minor version" + else + # Default: increment patch + NEW_PATCH=$((PATCH + 1)) + NEW_VERSION="v${MAJOR}.${MINOR}.${NEW_PATCH}" + print_status "Default mode: incrementing patch version" + fi + + print_status "Current version: $LATEST_TAG" + print_status "New version: $NEW_VERSION" + + # Export for use in other functions + export NEW_VERSION +} + +# Function to compile the C-Relay project +compile_project() { + print_status "Compiling C-Relay..." + + # Clean previous build + if make clean > /dev/null 2>&1; then + print_success "Cleaned previous build" + else + print_warning "Clean failed or no Makefile found" + fi + + # Compile the project + if make > /dev/null 2>&1; then + print_success "C-Relay compiled successfully" + else + print_error "Compilation failed" + exit 1 + fi +} + +# Check for ARM64 cross-compiler +check_cross_compiler() { + if ! command -v aarch64-linux-gnu-gcc > /dev/null 2>&1; then + print_error "ARM64/AArch64 cross-compiler not found!" + print_error "Install with: sudo apt install gcc-aarch64-linux-gnu" + return 1 + fi + return 0 +} + +# Function to build release binaries +build_release_binaries() { + print_status "Building release binaries..." + + # Build x86_64 version + print_status "Building x86_64 version..." + make clean > /dev/null 2>&1 + if make CC=gcc > /dev/null 2>&1; then + if [[ -f "src/main" ]]; then + cp src/main c-relay-x86_64 + print_success "x86_64 binary created: c-relay-x86_64" + else + print_error "x86_64 binary not found after compilation" + exit 1 + fi + else + print_error "x86_64 build failed" + exit 1 + fi + + # Check for ARM64 cross-compiler + if check_cross_compiler; then + # Build ARM64 version + print_status "Building ARM64 version..." + make clean > /dev/null 2>&1 + if make CC=aarch64-linux-gnu-gcc > /dev/null 2>&1; then + if [[ -f "src/main" ]]; then + cp src/main c-relay-arm64 + print_success "ARM64 binary created: c-relay-arm64" + else + print_error "ARM64 binary not found after compilation" + exit 1 + fi + else + print_error "ARM64 build failed" + exit 1 + fi + else + print_warning "ARM64 cross-compiler not available, skipping ARM64 build" + fi + + # Restore normal build + make clean > /dev/null 2>&1 + make > /dev/null 2>&1 +} + +# Function to commit and push changes +git_commit_and_push() { + print_status "Preparing git commit..." + + # Stage all changes + if git add . > /dev/null 2>&1; then + print_success "Staged all changes" + else + print_error "Failed to stage changes" + exit 1 + fi + + # Check if there are changes to commit + if git diff --staged --quiet; then + print_warning "No changes to commit" + else + # Commit changes + if git commit -m "$NEW_VERSION - $COMMIT_MESSAGE" > /dev/null 2>&1; then + print_success "Committed changes" + else + print_error "Failed to commit changes" + exit 1 + fi + fi + + # Create new git tag + if git tag "$NEW_VERSION" > /dev/null 2>&1; then + print_success "Created tag: $NEW_VERSION" + else + print_warning "Tag $NEW_VERSION already exists" + fi + + # Push changes and tags + print_status "Pushing to remote repository..." + if git push > /dev/null 2>&1; then + print_success "Pushed changes" + else + print_error "Failed to push changes" + exit 1 + fi + + if git push --tags > /dev/null 2>&1; then + print_success "Pushed tags" + else + print_warning "Failed to push tags" + fi +} + +# Function to create Gitea release +create_gitea_release() { + print_status "Creating Gitea release..." + + # Check for Gitea token + if [[ ! -f "$HOME/.gitea_token" ]]; then + print_warning "No ~/.gitea_token found. Skipping release creation." + print_warning "Create ~/.gitea_token with your Gitea access token to enable releases." + return 0 + fi + + local token=$(cat "$HOME/.gitea_token" | tr -d '\n\r') + local api_url="https://git.laantungir.net/api/v1/repos/teknari/c-relay" + + # Create release + print_status "Creating release $NEW_VERSION..." + local response=$(curl -s -X POST "$api_url/releases" \ + -H "Authorization: token $token" \ + -H "Content-Type: application/json" \ + -d "{\"tag_name\": \"$NEW_VERSION\", \"name\": \"$NEW_VERSION\", \"body\": \"$COMMIT_MESSAGE\"}") + + if echo "$response" | grep -q '"id"'; then + print_success "Created release $NEW_VERSION" + + # Upload binaries + upload_release_binaries "$api_url" "$token" + else + print_warning "Release may already exist or creation failed" + print_status "Attempting to upload to existing release..." + upload_release_binaries "$api_url" "$token" + fi +} + +# Function to upload release binaries +upload_release_binaries() { + local api_url="$1" + local token="$2" + + # Get release ID + local release_id=$(curl -s -H "Authorization: token $token" \ + "$api_url/releases/tags/$NEW_VERSION" | \ + grep -o '"id":[0-9]*' | head -n1 | cut -d: -f2) + + if [[ -z "$release_id" ]]; then + print_error "Could not get release ID for $NEW_VERSION" + return 1 + fi + + # Upload x86_64 binary + if [[ -f "c-relay-x86_64" ]]; then + print_status "Uploading x86_64 binary..." + if curl -s -X POST "$api_url/releases/$release_id/assets" \ + -H "Authorization: token $token" \ + -F "attachment=@c-relay-x86_64;filename=c-relay-${NEW_VERSION}-linux-x86_64" > /dev/null; then + print_success "Uploaded x86_64 binary" + else + print_warning "Failed to upload x86_64 binary" + fi + fi + + # Upload ARM64 binary + if [[ -f "c-relay-arm64" ]]; then + print_status "Uploading ARM64 binary..." + if curl -s -X POST "$api_url/releases/$release_id/assets" \ + -H "Authorization: token $token" \ + -F "attachment=@c-relay-arm64;filename=c-relay-${NEW_VERSION}-linux-arm64" > /dev/null; then + print_success "Uploaded ARM64 binary" + else + print_warning "Failed to upload ARM64 binary" + fi + fi +} + +# Function to clean up release binaries +cleanup_release_binaries() { + if [[ -f "c-relay-x86_64" ]]; then + rm -f c-relay-x86_64 + print_status "Cleaned up x86_64 binary" + fi + if [[ -f "c-relay-arm64" ]]; then + rm -f c-relay-arm64 + print_status "Cleaned up ARM64 binary" + fi +} + +# Main execution +main() { + print_status "C-Relay Build and Push Script" + + # Check prerequisites + check_git_repo + + if [[ "$RELEASE_MODE" == true ]]; then + print_status "=== RELEASE MODE ===" + + # Increment minor version for releases + increment_version "minor" + + # Compile project first + compile_project + + # Build release binaries + build_release_binaries + + # Commit and push + git_commit_and_push + + # Create Gitea release with binaries + create_gitea_release + + # Cleanup + cleanup_release_binaries + + print_success "Release $NEW_VERSION completed successfully!" + print_status "Binaries uploaded to Gitea release" + + else + print_status "=== DEFAULT MODE ===" + + # Increment patch version for regular commits + increment_version "patch" + + # Compile project + compile_project + + # Commit and push + git_commit_and_push + + print_success "Build and push completed successfully!" + print_status "Version $NEW_VERSION pushed to repository" + fi +} + +# Execute main function +main diff --git a/db/c_nostr_relay.db-shm b/db/c_nostr_relay.db-shm index 0544074bcfe40dd9304669f046461e736c5b5621..579e5b3038f8a90cc68bffbb2cb7746017130bab 100644 GIT binary patch delta 1397 zcmb7@b#T>J5QTHT%}WRpf(LjpAOr~z+$9hoxD&k8DAb_>r7fgx&^Gx z0t9!5Ai;|}eJ_C-+L`{*ow+-E&+hr|ojY?A6G=>DXz=lJKHeDRS@Q7->R~=U;hs7p z@0`>C*N#<7*GIU9cO5x6Bj3RE5#c>!|L?p9l^I^{!zbdAJacHWU((ocg(QtBo|&8m zF5fI6Im%OK`$tnDDJxtFa*opSU;1NvCc_otp(`mlN}*mo^sy;Ma{5y=Ak5Pa_pGqY z?tdmHmO={mW|wz5vwCu$65)TOva>TbF8-SCNca;-eu@%7Dauoo+B77dHgsYfQ%GR} z%UR22cCeqLoaO@8xPvU4HL;e~!Md6g;Xm3hQeR`{fv3sY9v2sXU3Uf9$V~y<6r(g1 zs74(c(TuiqW;|1w%|ceNjx=_1fMcBDBGVQM+_lr`3h0d674Gk5BlP5#+Lh7G|ZaqSf+VYM4^enm1AOc+JoPt<)y% z))AdiSDxV|-sF8gC5e#)S|JO!(pJf8KeBCV<*`lBOfA$ZZPp$gRff9pEHCpGL->sE z_=VgSY!Oz*DqEdLw$!#B+eFRMBCS@M_Uf3uRzHgy^fO~9V4)UeF;>$WdetIwE_QQAPthDL)jDm{0j2ALdhr6U^9~>K6+iMT z`OIyRR^F;xgDjSBcFXClO3FFk(;YokbG1zCwOt2wQWy0Ued*6&K4KU@@f-Oq#7bHP zt6{NO{=gg-Z>_D3b+Yc(!>a}RJE!{e?R8lQW5=mJqQG@z4rX}t9gNe*wE=yQNDqGpZA<{X^U)>t$7 z;;-nI9?C^d@=};EN)k(v;S8E}8%DZ`t#BdjJ3c delta 308 zcmZo@U}|V!s+V}A%K!oaK+MR%Ag~lj$O73F1|iorI!@BscS4c1H*!{$d3{OJ@Q7*hFAor72jk{*UTz>YK-L*w80%C3l*ObElG9+E{3!&YoXG$x@F5&((7Pxo p<4r7xagSs2v$PB#V;a-sCz%N#2H)me6;8}R)-I;W*XqFT002j7Xubdd diff --git a/db/c_nostr_relay.db-wal b/db/c_nostr_relay.db-wal index fcf3f6a00ee6e7df32119c8bb38f640b97aa39a2..e4c8bbe886fa9139ad1ff8f7eaccb2dc08d54cd7 100644 GIT binary patch delta 126089 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 deGHVM{T(B2pDMt|2vyj;-$@L9jK2 delta 62 zcmV~$NfCko006+@PyrFSuZASx%VR_Er2_$oVGAp;dmX=E|1XkdP$@*Z@G`c RSE*8Kv^u@PXgcS8y#cgY6tMsR diff --git a/relay.log b/relay.log index 1bbce89..013b08b 100644 --- a/relay.log +++ b/relay.log @@ -3,3 +3,129 @@ [INFO] Starting relay server... [INFO] Starting libwebsockets-based Nostr relay server... [SUCCESS] WebSocket relay started on ws://127.0.0.1:8888 +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling EVENT message with full NIP-01 validation +[SUCCESS] Event stored in database +[SUCCESS] Event validated and stored successfully +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling EVENT message with full NIP-01 validation +[SUCCESS] Event stored in database +[SUCCESS] Event validated and stored successfully +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling EVENT message with full NIP-01 validation +[SUCCESS] Event stored in database +[SUCCESS] Event validated and stored successfully +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[WARNING] Subscription 'exists_1757082297' not found for removal +[INFO] Closed subscription: exists_1757082297 +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[WARNING] Subscription 'exists_1757082298' not found for removal +[INFO] Closed subscription: exists_1757082298 +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling EVENT message with full NIP-01 validation +[INFO] Event not found for deletion: [INFO] ... +[INFO] Event not found for deletion: [INFO] ... +[SUCCESS] Event stored in database +[INFO] Deletion request processed: 0 events deleted +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[WARNING] Subscription 'exists_1757082301' not found for removal +[INFO] Closed subscription: exists_1757082301 +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[WARNING] Subscription 'exists_1757082301' not found for removal +[INFO] Closed subscription: exists_1757082301 +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[WARNING] Subscription 'exists_1757082301' not found for removal +[INFO] Closed subscription: exists_1757082301 +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling EVENT message with full NIP-01 validation +[SUCCESS] Event stored in database +[INFO] Deletion request processed: 0 events deleted +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[INFO] Received WebSocket message +[WARNING] Subscription 'exists_1757082305' not found for removal +[INFO] Closed subscription: exists_1757082305 +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling EVENT message with full NIP-01 validation +[INFO] Event not found for deletion: βœ— Cou... +[SUCCESS] Event stored in database +[INFO] Deletion request processed: 0 events deleted +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling REQ message for persistent subscription +[INFO] Added subscription 'exists_1757082309' (total: 1) +[INFO] Executing SQL: SELECT id, pubkey, created_at, kind, content, sig, tags FROM events WHERE 1=1 ORDER BY created_at DESC LIMIT 500 +[INFO] Query returned 25 rows +[INFO] Total events sent: 25 +[INFO] Received WebSocket message +[INFO] Removed subscription 'exists_1757082309' (total: 0) +[INFO] Closed subscription: exists_1757082309 +[INFO] WebSocket connection closed +[WARNING] Subscription 'z[μή.Y' not found for removal +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling EVENT message with full NIP-01 validation +[INFO] WebSocket connection closed +[INFO] WebSocket connection established +[INFO] Received WebSocket message +[INFO] Handling REQ message for persistent subscription +[INFO] Added subscription 'kind5_1757082309' (total: 1) +[INFO] Executing SQL: SELECT id, pubkey, created_at, kind, content, sig, tags FROM events WHERE 1=1 AND kind IN (5) ORDER BY created_at DESC LIMIT 500 +[INFO] Query returned 3 rows +[INFO] Total events sent: 3 +[INFO] Received WebSocket message +[INFO] Removed subscription 'kind5_1757082309' (total: 0) +[INFO] Closed subscription: kind5_1757082309 +[INFO] WebSocket connection closed +[WARNING] Subscription 'ωfμή.Y' not found for removal diff --git a/relay.pid b/relay.pid index 2f55dcf..36c0aa0 100644 --- a/relay.pid +++ b/relay.pid @@ -1 +1 @@ -677168 +682319 diff --git a/src/main b/src/main index 179a61d716d7214dddaed279fb8c71f4707ab30d..2ec9ed3391e3f654effa2a9bf72e107462e3792f 100755 GIT binary patch literal 282816 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�) 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 literal 250984 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 diff --git a/src/main.c b/src/main.c index dc48275..01af6de 100644 --- a/src/main.c +++ b/src/main.c @@ -133,6 +133,24 @@ void log_subscription_disconnected(const char* client_ip); void log_event_broadcast(const char* event_id, const char* sub_id, const char* client_ip); void update_subscription_events_sent(const char* sub_id, int events_sent); +// Forward declarations for NIP-01 event handling +const char* extract_d_tag_value(cJSON* tags); +int check_and_handle_replaceable_event(int kind, const char* pubkey, long created_at); +int check_and_handle_addressable_event(int kind, const char* pubkey, const char* d_tag_value, long created_at); +int handle_event_message(cJSON* event, char* error_message, size_t error_size); + +// Forward declaration for NOTICE message support +void send_notice_message(struct lws* wsi, const char* message); + +// Forward declarations for NIP-09 deletion request handling +int handle_deletion_request(cJSON* event, char* error_message, size_t error_size); +int delete_events_by_id(const char* requester_pubkey, cJSON* event_ids); +int delete_events_by_address(const char* requester_pubkey, cJSON* addresses, long deletion_timestamp); +int mark_event_as_deleted(const char* event_id, const char* deletion_event_id, const char* reason); + +// Forward declaration for database functions +int store_event(cJSON* event); + ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// @@ -842,6 +860,322 @@ void signal_handler(int sig) { } } +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// +// NOTICE MESSAGE SUPPORT +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// + +// Send NOTICE message to client (NIP-01) +void send_notice_message(struct lws* wsi, const char* message) { + if (!wsi || !message) return; + + cJSON* notice_msg = cJSON_CreateArray(); + cJSON_AddItemToArray(notice_msg, cJSON_CreateString("NOTICE")); + cJSON_AddItemToArray(notice_msg, cJSON_CreateString(message)); + + char* msg_str = cJSON_Print(notice_msg); + if (msg_str) { + size_t msg_len = strlen(msg_str); + unsigned char* buf = malloc(LWS_PRE + msg_len); + if (buf) { + memcpy(buf + LWS_PRE, msg_str, msg_len); + lws_write(wsi, buf + LWS_PRE, msg_len, LWS_WRITE_TEXT); + free(buf); + } + free(msg_str); + } + + cJSON_Delete(notice_msg); +} + +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// +// NIP-09 EVENT DELETION REQUEST HANDLING +///////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////// + +// Handle NIP-09 deletion request event (kind 5) +int handle_deletion_request(cJSON* event, char* error_message, size_t error_size) { + if (!event) { + snprintf(error_message, error_size, "invalid: null deletion request"); + return -1; + } + + // Extract event details + cJSON* kind_obj = cJSON_GetObjectItem(event, "kind"); + cJSON* pubkey_obj = cJSON_GetObjectItem(event, "pubkey"); + cJSON* created_at_obj = cJSON_GetObjectItem(event, "created_at"); + cJSON* tags_obj = cJSON_GetObjectItem(event, "tags"); + cJSON* content_obj = cJSON_GetObjectItem(event, "content"); + cJSON* event_id_obj = cJSON_GetObjectItem(event, "id"); + + if (!kind_obj || !pubkey_obj || !created_at_obj || !tags_obj || !event_id_obj) { + snprintf(error_message, error_size, "invalid: incomplete deletion request"); + return -1; + } + + int kind = (int)cJSON_GetNumberValue(kind_obj); + if (kind != 5) { + snprintf(error_message, error_size, "invalid: not a deletion request"); + return -1; + } + + const char* requester_pubkey = cJSON_GetStringValue(pubkey_obj); + const char* deletion_event_id = cJSON_GetStringValue(event_id_obj); + const char* reason = content_obj ? cJSON_GetStringValue(content_obj) : ""; + long deletion_timestamp = (long)cJSON_GetNumberValue(created_at_obj); + + if (!cJSON_IsArray(tags_obj)) { + snprintf(error_message, error_size, "invalid: deletion request tags must be an array"); + return -1; + } + + // Collect event IDs and addresses from tags + cJSON* event_ids = cJSON_CreateArray(); + cJSON* addresses = cJSON_CreateArray(); + cJSON* kinds_to_delete = cJSON_CreateArray(); + + int deletion_targets_found = 0; + + cJSON* tag = NULL; + cJSON_ArrayForEach(tag, tags_obj) { + if (!cJSON_IsArray(tag) || cJSON_GetArraySize(tag) < 2) { + continue; + } + + cJSON* tag_name = cJSON_GetArrayItem(tag, 0); + cJSON* tag_value = cJSON_GetArrayItem(tag, 1); + + if (!cJSON_IsString(tag_name) || !cJSON_IsString(tag_value)) { + continue; + } + + const char* name = cJSON_GetStringValue(tag_name); + const char* value = cJSON_GetStringValue(tag_value); + + if (strcmp(name, "e") == 0) { + // Event ID reference + cJSON_AddItemToArray(event_ids, cJSON_CreateString(value)); + deletion_targets_found++; + } else if (strcmp(name, "a") == 0) { + // Addressable event reference (kind:pubkey:d-identifier) + cJSON_AddItemToArray(addresses, cJSON_CreateString(value)); + deletion_targets_found++; + } else if (strcmp(name, "k") == 0) { + // Kind hint - store for validation but not required + int kind_hint = atoi(value); + if (kind_hint > 0) { + cJSON_AddItemToArray(kinds_to_delete, cJSON_CreateNumber(kind_hint)); + } + } + } + + if (deletion_targets_found == 0) { + cJSON_Delete(event_ids); + cJSON_Delete(addresses); + cJSON_Delete(kinds_to_delete); + snprintf(error_message, error_size, "invalid: deletion request must contain 'e' or 'a' tags"); + return -1; + } + + int deleted_count = 0; + + // Process event ID deletions + if (cJSON_GetArraySize(event_ids) > 0) { + int result = delete_events_by_id(requester_pubkey, event_ids); + if (result > 0) { + deleted_count += result; + } + } + + // Process addressable event deletions + if (cJSON_GetArraySize(addresses) > 0) { + int result = delete_events_by_address(requester_pubkey, addresses, deletion_timestamp); + if (result > 0) { + deleted_count += result; + } + } + + // Clean up + cJSON_Delete(event_ids); + cJSON_Delete(addresses); + cJSON_Delete(kinds_to_delete); + + // Store the deletion request itself (it should be kept according to NIP-09) + if (store_event(event) != 0) { + log_warning("Failed to store deletion request event"); + } + + char debug_msg[256]; + snprintf(debug_msg, sizeof(debug_msg), "Deletion request processed: %d events deleted", deleted_count); + log_info(debug_msg); + + snprintf(error_message, error_size, ""); // Success + return 0; +} + +// Delete events by ID (with pubkey authorization) +int delete_events_by_id(const char* requester_pubkey, cJSON* event_ids) { + if (!g_db || !requester_pubkey || !event_ids || !cJSON_IsArray(event_ids)) { + return 0; + } + + int deleted_count = 0; + + cJSON* event_id = NULL; + cJSON_ArrayForEach(event_id, event_ids) { + if (!cJSON_IsString(event_id)) { + continue; + } + + const char* id = cJSON_GetStringValue(event_id); + + // First check if event exists and if requester is authorized + const char* check_sql = "SELECT pubkey FROM events WHERE id = ?"; + sqlite3_stmt* check_stmt; + + int rc = sqlite3_prepare_v2(g_db, check_sql, -1, &check_stmt, NULL); + if (rc != SQLITE_OK) { + continue; + } + + sqlite3_bind_text(check_stmt, 1, id, -1, SQLITE_STATIC); + + if (sqlite3_step(check_stmt) == SQLITE_ROW) { + const char* event_pubkey = (char*)sqlite3_column_text(check_stmt, 0); + + // Only delete if the requester is the author + if (event_pubkey && strcmp(event_pubkey, requester_pubkey) == 0) { + sqlite3_finalize(check_stmt); + + // Delete the event + const char* delete_sql = "DELETE FROM events WHERE id = ? AND pubkey = ?"; + sqlite3_stmt* delete_stmt; + + rc = sqlite3_prepare_v2(g_db, delete_sql, -1, &delete_stmt, NULL); + if (rc == SQLITE_OK) { + sqlite3_bind_text(delete_stmt, 1, id, -1, SQLITE_STATIC); + sqlite3_bind_text(delete_stmt, 2, requester_pubkey, -1, SQLITE_STATIC); + + if (sqlite3_step(delete_stmt) == SQLITE_DONE && sqlite3_changes(g_db) > 0) { + deleted_count++; + + char debug_msg[128]; + snprintf(debug_msg, sizeof(debug_msg), "Deleted event by ID: %.16s...", id); + log_info(debug_msg); + } + sqlite3_finalize(delete_stmt); + } + } else { + sqlite3_finalize(check_stmt); + char warning_msg[128]; + snprintf(warning_msg, sizeof(warning_msg), "Unauthorized deletion attempt for event: %.16s...", id); + log_warning(warning_msg); + } + } else { + sqlite3_finalize(check_stmt); + char debug_msg[128]; + snprintf(debug_msg, sizeof(debug_msg), "Event not found for deletion: %.16s...", id); + log_info(debug_msg); + } + } + + return deleted_count; +} + +// Delete events by addressable reference (kind:pubkey:d-identifier) +int delete_events_by_address(const char* requester_pubkey, cJSON* addresses, long deletion_timestamp) { + if (!g_db || !requester_pubkey || !addresses || !cJSON_IsArray(addresses)) { + return 0; + } + + int deleted_count = 0; + + cJSON* address = NULL; + cJSON_ArrayForEach(address, addresses) { + if (!cJSON_IsString(address)) { + continue; + } + + const char* addr = cJSON_GetStringValue(address); + + // Parse address format: kind:pubkey:d-identifier + char* addr_copy = strdup(addr); + if (!addr_copy) continue; + + char* kind_str = strtok(addr_copy, ":"); + char* pubkey_str = strtok(NULL, ":"); + char* d_identifier = strtok(NULL, ":"); + + if (!kind_str || !pubkey_str) { + free(addr_copy); + continue; + } + + int kind = atoi(kind_str); + + // Only delete if the requester is the author + if (strcmp(pubkey_str, requester_pubkey) != 0) { + free(addr_copy); + char warning_msg[128]; + snprintf(warning_msg, sizeof(warning_msg), "Unauthorized deletion attempt for address: %.32s...", addr); + log_warning(warning_msg); + continue; + } + + // Build deletion query based on whether we have d-identifier + const char* delete_sql; + sqlite3_stmt* delete_stmt; + + if (d_identifier && strlen(d_identifier) > 0) { + // Delete specific addressable event with d-tag + delete_sql = "DELETE FROM events WHERE kind = ? AND pubkey = ? AND created_at <= ? " + "AND json_extract(tags, '$[*]') LIKE '%[\"d\",\"' || ? || '\"]%'"; + } else { + // Delete all events of this kind by this author up to deletion timestamp + delete_sql = "DELETE FROM events WHERE kind = ? AND pubkey = ? AND created_at <= ?"; + } + + int rc = sqlite3_prepare_v2(g_db, delete_sql, -1, &delete_stmt, NULL); + if (rc == SQLITE_OK) { + sqlite3_bind_int(delete_stmt, 1, kind); + sqlite3_bind_text(delete_stmt, 2, requester_pubkey, -1, SQLITE_STATIC); + sqlite3_bind_int64(delete_stmt, 3, deletion_timestamp); + + if (d_identifier && strlen(d_identifier) > 0) { + sqlite3_bind_text(delete_stmt, 4, d_identifier, -1, SQLITE_STATIC); + } + + if (sqlite3_step(delete_stmt) == SQLITE_DONE) { + int changes = sqlite3_changes(g_db); + if (changes > 0) { + deleted_count += changes; + + char debug_msg[128]; + snprintf(debug_msg, sizeof(debug_msg), "Deleted %d events by address: %.32s...", changes, addr); + log_info(debug_msg); + } + } + sqlite3_finalize(delete_stmt); + } + + free(addr_copy); + } + + return deleted_count; +} + +// Mark event as deleted (alternative to hard deletion - not used in current implementation) +int mark_event_as_deleted(const char* event_id, const char* deletion_event_id, const char* reason) { + (void)event_id; (void)deletion_event_id; (void)reason; // Suppress unused warnings + + // This function could be used if we wanted to implement soft deletion + // For now, NIP-09 implementation uses hard deletion as specified + + return 0; +} + ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// // DATABASE FUNCTIONS @@ -907,6 +1241,118 @@ const char* event_type_to_string(event_type_t type) { } } +// Helper function to extract d tag value from tags array +const char* extract_d_tag_value(cJSON* tags) { + if (!tags || !cJSON_IsArray(tags)) { + return NULL; + } + + cJSON* tag = NULL; + cJSON_ArrayForEach(tag, tags) { + if (cJSON_IsArray(tag) && cJSON_GetArraySize(tag) >= 2) { + cJSON* tag_name = cJSON_GetArrayItem(tag, 0); + cJSON* tag_value = cJSON_GetArrayItem(tag, 1); + + if (cJSON_IsString(tag_name) && cJSON_IsString(tag_value)) { + const char* name = cJSON_GetStringValue(tag_name); + if (name && strcmp(name, "d") == 0) { + return cJSON_GetStringValue(tag_value); + } + } + } + } + + return NULL; +} + +// Check and handle replaceable events according to NIP-01 +int check_and_handle_replaceable_event(int kind, const char* pubkey, long created_at) { + if (!g_db || !pubkey) return 0; + + const char* sql = + "SELECT created_at FROM events WHERE kind = ? AND pubkey = ? ORDER BY created_at DESC LIMIT 1"; + + sqlite3_stmt* stmt; + int rc = sqlite3_prepare_v2(g_db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + return 0; // Allow storage on DB error + } + + sqlite3_bind_int(stmt, 1, kind); + sqlite3_bind_text(stmt, 2, pubkey, -1, SQLITE_STATIC); + + int result = 0; + if (sqlite3_step(stmt) == SQLITE_ROW) { + long existing_created_at = sqlite3_column_int64(stmt, 0); + if (created_at <= existing_created_at) { + result = -1; // Older or same timestamp, reject + } else { + // Delete older versions + const char* delete_sql = "DELETE FROM events WHERE kind = ? AND pubkey = ? AND created_at < ?"; + sqlite3_stmt* delete_stmt; + if (sqlite3_prepare_v2(g_db, delete_sql, -1, &delete_stmt, NULL) == SQLITE_OK) { + sqlite3_bind_int(delete_stmt, 1, kind); + sqlite3_bind_text(delete_stmt, 2, pubkey, -1, SQLITE_STATIC); + sqlite3_bind_int64(delete_stmt, 3, created_at); + sqlite3_step(delete_stmt); + sqlite3_finalize(delete_stmt); + } + } + } + + sqlite3_finalize(stmt); + return result; +} + +// Check and handle addressable events according to NIP-01 +int check_and_handle_addressable_event(int kind, const char* pubkey, const char* d_tag_value, long created_at) { + if (!g_db || !pubkey) return 0; + + // If no d tag, treat as regular replaceable + if (!d_tag_value) { + return check_and_handle_replaceable_event(kind, pubkey, created_at); + } + + const char* sql = + "SELECT created_at FROM events WHERE kind = ? AND pubkey = ? AND json_extract(tags, '$[*][1]') = ? " + "AND json_extract(tags, '$[*][0]') = 'd' ORDER BY created_at DESC LIMIT 1"; + + sqlite3_stmt* stmt; + int rc = sqlite3_prepare_v2(g_db, sql, -1, &stmt, NULL); + if (rc != SQLITE_OK) { + return 0; // Allow storage on DB error + } + + sqlite3_bind_int(stmt, 1, kind); + sqlite3_bind_text(stmt, 2, pubkey, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, d_tag_value, -1, SQLITE_STATIC); + + int result = 0; + if (sqlite3_step(stmt) == SQLITE_ROW) { + long existing_created_at = sqlite3_column_int64(stmt, 0); + if (created_at <= existing_created_at) { + result = -1; // Older or same timestamp, reject + } else { + // Delete older versions with same kind, pubkey, and d tag + const char* delete_sql = + "DELETE FROM events WHERE kind = ? AND pubkey = ? AND created_at < ? " + "AND json_extract(tags, '$[*][1]') = ? AND json_extract(tags, '$[*][0]') = 'd'"; + sqlite3_stmt* delete_stmt; + if (sqlite3_prepare_v2(g_db, delete_sql, -1, &delete_stmt, NULL) == SQLITE_OK) { + sqlite3_bind_int(delete_stmt, 1, kind); + sqlite3_bind_text(delete_stmt, 2, pubkey, -1, SQLITE_STATIC); + sqlite3_bind_int64(delete_stmt, 3, created_at); + sqlite3_bind_text(delete_stmt, 4, d_tag_value, -1, SQLITE_STATIC); + sqlite3_step(delete_stmt); + sqlite3_finalize(delete_stmt); + } + } + } + + sqlite3_finalize(stmt); + return result; +} + // Store event in database int store_event(cJSON* event) { if (!g_db || !event) { @@ -1303,22 +1749,113 @@ int handle_req_message(const char* sub_id, cJSON* filters, struct lws *wsi, stru } // Handle EVENT message (publish) -int handle_event_message(cJSON* event) { - log_info("Handling EVENT message"); +int handle_event_message(cJSON* event, char* error_message, size_t error_size) { + log_info("Handling EVENT message with full NIP-01 validation"); - // Validate event structure (basic check) - cJSON* id = cJSON_GetObjectItem(event, "id"); - if (!id || !cJSON_IsString(id)) { - log_error("Invalid event - no ID"); - return -1; + if (!event) { + snprintf(error_message, error_size, "invalid: null event"); + return NOSTR_ERROR_INVALID_INPUT; } - // Store event in database + // Step 1: Validate event structure + int structure_result = nostr_validate_event_structure(event); + if (structure_result != NOSTR_SUCCESS) { + switch (structure_result) { + case NOSTR_ERROR_EVENT_INVALID_STRUCTURE: + snprintf(error_message, error_size, "invalid: malformed event structure"); + break; + case NOSTR_ERROR_EVENT_INVALID_ID: + snprintf(error_message, error_size, "invalid: invalid event id format"); + break; + case NOSTR_ERROR_EVENT_INVALID_PUBKEY: + snprintf(error_message, error_size, "invalid: invalid pubkey format"); + break; + case NOSTR_ERROR_EVENT_INVALID_CREATED_AT: + snprintf(error_message, error_size, "invalid: invalid created_at timestamp"); + break; + case NOSTR_ERROR_EVENT_INVALID_KIND: + snprintf(error_message, error_size, "invalid: invalid event kind"); + break; + case NOSTR_ERROR_EVENT_INVALID_TAGS: + snprintf(error_message, error_size, "invalid: invalid tags format"); + break; + case NOSTR_ERROR_EVENT_INVALID_CONTENT: + snprintf(error_message, error_size, "invalid: invalid content"); + break; + default: + snprintf(error_message, error_size, "invalid: event structure validation failed"); + } + return structure_result; + } + + // Step 2: Verify event signature + int signature_result = nostr_verify_event_signature(event); + if (signature_result != NOSTR_SUCCESS) { + if (signature_result == NOSTR_ERROR_EVENT_INVALID_SIGNATURE) { + snprintf(error_message, error_size, "invalid: event signature verification failed"); + } else if (signature_result == NOSTR_ERROR_EVENT_INVALID_ID) { + snprintf(error_message, error_size, "invalid: event id does not match computed hash"); + } else { + snprintf(error_message, error_size, "invalid: cryptographic validation failed"); + } + return signature_result; + } + + // Step 3: Complete event validation (combines structure + signature + additional checks) + int validation_result = nostr_validate_event(event); + if (validation_result != NOSTR_SUCCESS) { + snprintf(error_message, error_size, "invalid: complete event validation failed"); + return validation_result; + } + + // Step 4: Check for special event types and handle accordingly + cJSON* kind_obj = cJSON_GetObjectItem(event, "kind"); + cJSON* pubkey_obj = cJSON_GetObjectItem(event, "pubkey"); + cJSON* created_at_obj = cJSON_GetObjectItem(event, "created_at"); + + if (kind_obj && pubkey_obj && created_at_obj) { + int kind = (int)cJSON_GetNumberValue(kind_obj); + const char* pubkey = cJSON_GetStringValue(pubkey_obj); + long created_at = (long)cJSON_GetNumberValue(created_at_obj); + + // NIP-09: Handle deletion requests (kind 5) + if (kind == 5) { + return handle_deletion_request(event, error_message, error_size); + } + + // Handle replaceable events (NIP-01) + event_type_t event_type = classify_event_kind(kind); + if (event_type == EVENT_TYPE_REPLACEABLE) { + // For replaceable events, check if we have a newer version + if (check_and_handle_replaceable_event(kind, pubkey, created_at) < 0) { + snprintf(error_message, error_size, "duplicate: older replaceable event ignored"); + return -2; // Special code for duplicate/older event + } + } else if (event_type == EVENT_TYPE_ADDRESSABLE) { + // For addressable events, check d tag + cJSON* tags = cJSON_GetObjectItem(event, "tags"); + if (tags && cJSON_IsArray(tags)) { + const char* d_tag_value = extract_d_tag_value(tags); + if (check_and_handle_addressable_event(kind, pubkey, d_tag_value, created_at) < 0) { + snprintf(error_message, error_size, "duplicate: older addressable event ignored"); + return -2; + } + } + } else if (event_type == EVENT_TYPE_EPHEMERAL) { + // Ephemeral events should not be stored + snprintf(error_message, error_size, ""); // Success but no storage + return 0; // Accept but don't store + } + } + + // Step 5: Store event in database if (store_event(event) == 0) { - log_success("Event stored successfully"); + snprintf(error_message, error_size, ""); // Success + log_success("Event validated and stored successfully"); return 0; } + snprintf(error_message, error_size, "error: failed to store event in database"); return -1; } @@ -1366,7 +1903,8 @@ static int nostr_relay_callback(struct lws *wsi, enum lws_callback_reasons reaso // Handle EVENT message cJSON* event = cJSON_GetArrayItem(json, 1); if (event && cJSON_IsObject(event)) { - int result = handle_event_message(event); + char error_message[512] = {0}; + int result = handle_event_message(event, error_message, sizeof(error_message)); // Broadcast event to matching persistent subscriptions if (result == 0) { @@ -1380,7 +1918,7 @@ static int nostr_relay_callback(struct lws *wsi, enum lws_callback_reasons reaso cJSON_AddItemToArray(response, cJSON_CreateString("OK")); cJSON_AddItemToArray(response, cJSON_CreateString(cJSON_GetStringValue(event_id))); cJSON_AddItemToArray(response, cJSON_CreateBool(result == 0)); - cJSON_AddItemToArray(response, cJSON_CreateString(result == 0 ? "" : "error: failed to store event")); + cJSON_AddItemToArray(response, cJSON_CreateString(strlen(error_message) > 0 ? error_message : "")); char *response_str = cJSON_Print(response); if (response_str) { diff --git a/tests/1_nip_test.sh b/tests/1_nip_test.sh index 6677ca7..b6ca91b 100755 --- a/tests/1_nip_test.sh +++ b/tests/1_nip_test.sh @@ -99,6 +99,47 @@ publish_event() { fi } +# Helper function to publish invalid event and expect rejection +publish_invalid_event() { + local event_json="$1" + local description="$2" + local expected_error="$3" + + print_info "Publishing invalid $description..." + + # Create EVENT message in Nostr format + local event_message="[\"EVENT\",$event_json]" + + # Publish to relay + local response="" + if command -v websocat &> /dev/null; then + response=$(echo "$event_message" | timeout 5s websocat "$RELAY_URL" 2>&1 || echo "Connection failed") + else + print_error "websocat not found - required for testing" + return 1 + fi + + # Check response - should contain "false" and error message + if [[ "$response" == *"Connection failed"* ]]; then + print_error "Failed to connect to relay for $description" + return 1 + elif [[ "$response" == *"false"* ]]; then + # Extract error message + local error_msg=$(echo "$response" | grep -o '"[^"]*invalid[^"]*"' | head -1 | sed 's/"//g' 2>/dev/null || echo "rejected") + print_success "$description correctly rejected: $error_msg" + echo # Add blank line for readability + return 0 + elif [[ "$response" == *"true"* ]]; then + print_error "$description was incorrectly accepted (should have been rejected)" + echo # Add blank line for readability + return 1 + else + print_warning "$description response unclear: $response" + echo # Add blank line for readability + return 1 + fi +} + # Test subscription with filters test_subscription() { local sub_id="$1" @@ -211,7 +252,41 @@ run_comprehensive_test() { # Brief pause to let events settle sleep 2 - print_header "PHASE 2: Testing Subscriptions and Filters" + print_header "PHASE 2: Testing Invalid Events (NIP-01 Validation)" + + print_step "Testing various invalid events that should be rejected..." + + # Test 1: Event with invalid JSON structure (malformed) + local malformed_event='{"id":"invalid","pubkey":"invalid_pubkey","created_at":"not_a_number","kind":1,"tags":[],"content":"test"}' + publish_invalid_event "$malformed_event" "malformed event with invalid created_at" "invalid" + + # Test 2: Event with missing required fields + local missing_field_event='{"id":"test123","pubkey":"valid_pubkey","kind":1,"tags":[],"content":"test"}' + publish_invalid_event "$missing_field_event" "event missing created_at and sig" "invalid" + + # Test 3: Event with invalid pubkey format (not hex) + local invalid_pubkey_event='{"id":"abc123","pubkey":"not_valid_hex_pubkey","created_at":1234567890,"kind":1,"tags":[],"content":"test","sig":"fake_sig"}' + publish_invalid_event "$invalid_pubkey_event" "event with invalid pubkey format" "invalid" + + # Test 4: Event with invalid event ID format + local invalid_id_event='{"id":"not_64_char_hex","pubkey":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","created_at":1234567890,"kind":1,"tags":[],"content":"test","sig":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}' + publish_invalid_event "$invalid_id_event" "event with invalid ID format" "invalid" + + # Test 5: Event with invalid signature + local invalid_sig_event='{"id":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","pubkey":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","created_at":1234567890,"kind":1,"tags":[],"content":"test","sig":"invalid_signature_format"}' + publish_invalid_event "$invalid_sig_event" "event with invalid signature format" "invalid" + + # Test 6: Event with invalid kind (negative) + local invalid_kind_event='{"id":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","pubkey":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","created_at":1234567890,"kind":-1,"tags":[],"content":"test","sig":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}' + publish_invalid_event "$invalid_kind_event" "event with negative kind" "invalid" + + # Test 7: Event with invalid tags format (not array) + local invalid_tags_event='{"id":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","pubkey":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","created_at":1234567890,"kind":1,"tags":"not_an_array","content":"test","sig":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}' + publish_invalid_event "$invalid_tags_event" "event with invalid tags format" "invalid" + + print_success "Invalid event tests completed - all should have been rejected" + + print_header "PHASE 3: Testing Subscriptions and Filters" # Test subscription filters print_step "Testing various subscription filters..." @@ -240,7 +315,7 @@ run_comprehensive_test() { # Test 7: Limit results test_subscription "test_limit" '{"kinds":[1],"limit":1}' "Limited to 1 event" "1" - print_header "PHASE 3: Database Verification" + print_header "PHASE 4: Database Verification" # Check what's actually stored in the database print_step "Verifying database contents..." @@ -265,13 +340,14 @@ run_comprehensive_test() { } # Run the comprehensive test -print_header "Starting C-Relay Comprehensive Test Suite" +print_header "Starting C-Relay Comprehensive Test Suite with NIP-01 Validation" echo if run_comprehensive_test; then echo print_success "All tests completed successfully!" - print_info "The C-Relay hybrid schema implementation is working correctly" + print_info "The C-Relay with full NIP-01 validation is working correctly" + print_info "βœ… Event validation, signature verification, and error handling all working" echo exit 0 else diff --git a/tests/9_delete_test.sh b/tests/9_delete_test.sh new file mode 100755 index 0000000..bc2dc26 --- /dev/null +++ b/tests/9_delete_test.sh @@ -0,0 +1,386 @@ +#!/bin/bash + +# NIP-09 Event Deletion Request Test for C-Relay +# Tests deletion request functionality - assumes relay is already running +# Based on the pattern from 1_nip_test.sh + +set -e + +# Color constants +RED='\033[31m' +GREEN='\033[32m' +YELLOW='\033[33m' +BLUE='\033[34m' +BOLD='\033[1m' +RESET='\033[0m' + +# Test configuration +RELAY_URL="ws://127.0.0.1:8888" +TEST_PRIVATE_KEY="nsec1j4c6269y9w0q2er2xjw8sv2ehyrtfxq3jwgdlxj6qfn8z4gjsq5qfvfk99" + +# Print functions +print_header() { + echo -e "${BLUE}${BOLD}=== $1 ===${RESET}" +} + +print_step() { + echo -e "${YELLOW}[STEP]${RESET} $1" +} + +print_success() { + echo -e "${GREEN}βœ“${RESET} $1" +} + +print_error() { + echo -e "${RED}βœ—${RESET} $1" +} + +print_info() { + echo -e "${BLUE}[INFO]${RESET} $1" +} + +print_warning() { + echo -e "${YELLOW}[WARNING]${RESET} $1" +} + +# Helper function to publish event and extract ID +publish_event() { + local event_json="$1" + local description="$2" + + # Extract event ID + local event_id=$(echo "$event_json" | jq -r '.id' 2>/dev/null) + if [[ "$event_id" == "null" || -z "$event_id" ]]; then + print_error "Could not extract event ID from $description" + return 1 + fi + + print_info "Publishing $description..." + + # Create EVENT message in Nostr format + local event_message="[\"EVENT\",$event_json]" + + # Publish to relay + local response="" + if command -v websocat &> /dev/null; then + response=$(echo "$event_message" | timeout 5s websocat "$RELAY_URL" 2>&1 || echo "Connection failed") + else + print_error "websocat not found - required for testing" + return 1 + fi + + # Check response + if [[ "$response" == *"Connection failed"* ]]; then + print_error "Failed to connect to relay for $description" + return 1 + elif [[ "$response" == *"true"* ]]; then + print_success "$description uploaded (ID: ${event_id:0:16}...)" + echo "$event_id" + return 0 + else + print_warning "$description might have failed: $response" + echo "" + return 1 + fi +} + +# Helper function to publish deletion request +publish_deletion_request() { + local deletion_event_json="$1" + local description="$2" + + # Extract event ID + local event_id=$(echo "$deletion_event_json" | jq -r '.id' 2>/dev/null) + if [[ "$event_id" == "null" || -z "$event_id" ]]; then + print_error "Could not extract event ID from $description" + return 1 + fi + + print_info "Publishing $description..." + + # Create EVENT message in Nostr format + local event_message="[\"EVENT\",$deletion_event_json]" + + # Publish to relay + local response="" + if command -v websocat &> /dev/null; then + response=$(echo "$event_message" | timeout 5s websocat "$RELAY_URL" 2>&1 || echo "Connection failed") + else + print_error "websocat not found - required for testing" + return 1 + fi + + # Check response + if [[ "$response" == *"Connection failed"* ]]; then + print_error "Failed to connect to relay for $description" + return 1 + elif [[ "$response" == *"true"* ]]; then + print_success "$description accepted (ID: ${event_id:0:16}...)" + echo "$event_id" + return 0 + else + print_warning "$description might have failed: $response" + echo "" + return 1 + fi +} + +# Helper function to check if event exists via subscription +check_event_exists() { + local event_id="$1" + local sub_id="exists_$(date +%s%N | cut -c1-10)" + + # Create REQ message to query for specific event ID + local req_message="[\"REQ\",\"$sub_id\",{\"ids\":[\"$event_id\"]}]" + + # Send subscription and collect events + local response="" + if command -v websocat &> /dev/null; then + response=$(echo -e "$req_message\n[\"CLOSE\",\"$sub_id\"]" | timeout 3s websocat "$RELAY_URL" 2>/dev/null || echo "") + fi + + # Count EVENT responses + local event_count=0 + if [[ -n "$response" ]]; then + event_count=$(echo "$response" | grep -c "\"EVENT\"" 2>/dev/null || echo "0") + fi + + echo "$event_count" +} + +# Helper function to query events by kind +query_events_by_kind() { + local kind="$1" + local sub_id="kind${kind}_$(date +%s%N | cut -c1-10)" + + # Create REQ message to query for events of specific kind + local req_message="[\"REQ\",\"$sub_id\",{\"kinds\":[$kind]}]" + + # Send subscription and collect events + local response="" + if command -v websocat &> /dev/null; then + response=$(echo -e "$req_message\n[\"CLOSE\",\"$sub_id\"]" | timeout 3s websocat "$RELAY_URL" 2>/dev/null || echo "") + fi + + # Count EVENT responses + local event_count=0 + if [[ -n "$response" ]]; then + event_count=$(echo "$response" | grep -c "\"EVENT\"" 2>/dev/null || echo "0") + fi + + echo "$event_count" +} + +# Main test function +run_deletion_test() { + print_header "NIP-09 Event Deletion Request Test" + + # Check dependencies + print_step "Checking dependencies..." + if ! command -v nak &> /dev/null; then + print_error "nak command not found" + print_info "Please install nak: go install github.com/fiatjaf/nak@latest" + return 1 + fi + if ! command -v websocat &> /dev/null; then + print_error "websocat command not found" + print_info "Please install websocat for testing" + return 1 + fi + if ! command -v jq &> /dev/null; then + print_error "jq command not found" + print_info "Please install jq for JSON processing" + return 1 + fi + print_success "All dependencies found" + + print_header "PHASE 1: Publishing Events to be Deleted" + + # Create test events that will be deleted + print_step "Creating events for deletion testing..." + + # Create regular events (kind 1) - these will be deleted by ID + local event1=$(nak event --sec "$TEST_PRIVATE_KEY" -c "Event to be deleted #1" -k 1 --ts $(($(date +%s) - 100)) -t "type=test" -t "phase=deletion" 2>/dev/null) + local event2=$(nak event --sec "$TEST_PRIVATE_KEY" -c "Event to be deleted #2" -k 1 --ts $(($(date +%s) - 90)) -t "type=test" -t "phase=deletion" 2>/dev/null) + + # Publish the events + event1_id=$(publish_event "$event1" "Event to be deleted #1") + if [[ -z "$event1_id" ]]; then + print_error "Failed to publish test event #1" + return 1 + fi + + event2_id=$(publish_event "$event2" "Event to be deleted #2") + if [[ -z "$event2_id" ]]; then + print_error "Failed to publish test event #2" + return 1 + fi + + # Create an addressable event (kind 30001) - will be deleted by address + local addr_event=$(nak event --sec "$TEST_PRIVATE_KEY" -c "Addressable event to be deleted" -k 30001 --ts $(($(date +%s) - 80)) -t "d=test-delete" -t "type=addressable" 2>/dev/null) + + addr_event_id=$(publish_event "$addr_event" "Addressable event to be deleted") + if [[ -z "$addr_event_id" ]]; then + print_error "Failed to publish addressable test event" + return 1 + fi + + # Create an event by a different author (to test unauthorized deletion) + local different_key="nsec1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab" + local unauth_event=$(nak event --sec "$different_key" -c "Event by different author" -k 1 --ts $(($(date +%s) - 70)) -t "type=unauthorized" 2>/dev/null) + + unauth_event_id=$(publish_event "$unauth_event" "Event by different author") + if [[ -z "$unauth_event_id" ]]; then + print_warning "Failed to publish unauthorized test event - continuing anyway" + fi + + # Let events settle + sleep 2 + + print_header "PHASE 2: Testing Event Deletion by ID" + + print_step "Verifying events exist before deletion..." + local event1_before=$(check_event_exists "$event1_id") + local event2_before=$(check_event_exists "$event2_id") + print_info "Event1 exists: $event1_before, Event2 exists: $event2_before" + + # Create deletion request targeting the two events by ID + print_step "Creating deletion request for events by ID..." + local deletion_by_id=$(nak event --sec "$TEST_PRIVATE_KEY" -c "Deleting events by ID" -k 5 --ts $(date +%s) -e "$event1_id" -e "$event2_id" -t "k=1" 2>/dev/null) + + deletion_id=$(publish_deletion_request "$deletion_by_id" "Deletion request for events by ID") + if [[ -z "$deletion_id" ]]; then + print_error "Failed to publish deletion request" + return 1 + fi + + # Wait for deletion to process + sleep 3 + + # Check if events were deleted + print_step "Verifying events were deleted..." + local event1_after=$(check_event_exists "$event1_id") + local event2_after=$(check_event_exists "$event2_id") + print_info "Event1 exists after deletion: $event1_after, Event2 exists after deletion: $event2_after" + + if [[ "$event1_after" == "0" && "$event2_after" == "0" ]]; then + print_success "βœ“ Events successfully deleted by ID" + else + print_error "βœ— Events were not properly deleted" + fi + + print_header "PHASE 3: Testing Address-based Deletion" + + if [[ -n "$addr_event_id" ]]; then + print_step "Verifying addressable event exists before deletion..." + local addr_before=$(check_event_exists "$addr_event_id") + print_info "Addressable event exists: $addr_before" + + # Create deletion request for addressable event using 'a' tag + print_step "Creating deletion request for addressable event..." + local test_pubkey=$(echo "$addr_event" | jq -r '.pubkey' 2>/dev/null) + local deletion_by_addr=$(nak event --sec "$TEST_PRIVATE_KEY" -c "Deleting addressable event" -k 5 --ts $(date +%s) -t "a=30001:${test_pubkey}:test-delete" -t "k=30001" 2>/dev/null) + + addr_deletion_id=$(publish_deletion_request "$deletion_by_addr" "Deletion request for addressable event") + if [[ -n "$addr_deletion_id" ]]; then + # Wait for deletion to process + sleep 3 + + # Check if addressable event was deleted + print_step "Verifying addressable event was deleted..." + local addr_after=$(check_event_exists "$addr_event_id") + print_info "Addressable event exists after deletion: $addr_after" + + if [[ "$addr_after" == "0" ]]; then + print_success "βœ“ Addressable event successfully deleted" + else + print_error "βœ— Addressable event was not properly deleted" + fi + fi + fi + + print_header "PHASE 4: Testing Unauthorized Deletion" + + if [[ -n "$unauth_event_id" ]]; then + print_step "Testing unauthorized deletion attempt..." + + # Try to delete the unauthorized event (should fail) + local unauth_deletion=$(nak event --sec "$TEST_PRIVATE_KEY" -c "Attempting unauthorized deletion" -k 5 --ts $(date +%s) -e "$unauth_event_id" -t "k=1" 2>/dev/null) + + unauth_deletion_id=$(publish_deletion_request "$unauth_deletion" "Unauthorized deletion request") + if [[ -n "$unauth_deletion_id" ]]; then + # Wait for processing + sleep 3 + + # Check if unauthorized event still exists (should still exist) + local unauth_after=$(check_event_exists "$unauth_event_id") + print_info "Unauthorized event exists after deletion attempt: $unauth_after" + + if [[ "$unauth_after" == "1" ]]; then + print_success "βœ“ Unauthorized deletion properly rejected - event still exists" + else + print_error "βœ— Unauthorized deletion succeeded - security vulnerability!" + fi + fi + fi + + print_header "PHASE 5: Testing Invalid Deletion Requests" + + print_step "Testing deletion request with no targets..." + + # Create deletion request with no 'e' or 'a' tags (should be rejected) + local invalid_deletion='{"id":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","pubkey":"aa4fc8665f5696e33db7e1a572e3b0f5b3d615837b0f362dcb1c8068b098c7b4","created_at":'$(date +%s)',"kind":5,"tags":[["k","1"]],"content":"Invalid deletion request with no targets","sig":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}' + + # Create EVENT message in Nostr format + local invalid_message="[\"EVENT\",$invalid_deletion]" + + # Publish to relay + local invalid_response="" + if command -v websocat &> /dev/null; then + invalid_response=$(echo "$invalid_message" | timeout 5s websocat "$RELAY_URL" 2>&1 || echo "Connection failed") + fi + + # Check response - should be rejected + if [[ "$invalid_response" == *"false"* ]]; then + print_success "βœ“ Invalid deletion request properly rejected" + elif [[ "$invalid_response" == *"true"* ]]; then + print_warning "⚠ Invalid deletion request was accepted (should have been rejected)" + else + print_info "Invalid deletion request response: $invalid_response" + fi + + print_header "PHASE 6: Verification" + + # Verify deletion requests themselves are stored + print_step "Verifying deletion requests are stored..." + local deletion_count=$(query_events_by_kind 5) + print_info "Deletion requests accessible via query: $deletion_count" + + if [[ "$deletion_count" -gt 0 ]]; then + print_success "βœ“ Deletion requests properly stored and queryable" + else + print_warning "⚠ No deletion requests found via query" + fi + + return 0 +} + +# Run the test +print_header "Starting NIP-09 Event Deletion Request Test Suite" +echo + +if run_deletion_test; then + echo + print_success "All NIP-09 deletion tests completed successfully!" + print_info "The C-Relay NIP-09 implementation is working correctly" + print_info "βœ… Event deletion by ID working" + print_info "βœ… Address-based deletion working" + print_info "βœ… Authorization validation working" + print_info "βœ… Invalid deletion rejection working" + echo + exit 0 +else + echo + print_error "Some NIP-09 tests failed" + exit 1 +fi \ No newline at end of file