bud-09 implemented
This commit is contained in:
@@ -218,13 +218,70 @@ This document tracks the implementation status of ginxsom, a high-performance Fa
|
||||
|
||||
---
|
||||
|
||||
## BUD-09: Content Reporting ⚪ **PARTIAL**
|
||||
## BUD-09: Content Reporting ✅ **COMPLETE**
|
||||
|
||||
### Current Status
|
||||
- [x] nginx endpoint configured (`PUT /report`)
|
||||
- [x] FastCGI routing established
|
||||
- [ ] NIP-56 report event handling
|
||||
- [ ] Moderation interface
|
||||
- [ ] Content filtering implementation
|
||||
- [ ] Reporting workflow testing
|
||||
### NIP-56 Report Event System
|
||||
- [x] Full NIP-56 kind 1984 report event implementation
|
||||
- [x] Report event structure validation (kind, required fields, x tags)
|
||||
- [x] SHA-256 blob hash extraction from x tags [`extract_blob_hashes_from_report()`](src/main.c:2408)
|
||||
- [x] Report type validation (nudity, malware, profanity, illegal, spam, impersonation, other)
|
||||
- [x] Nostr cryptographic signature verification
|
||||
- [x] Event timestamp and expiration validation
|
||||
|
||||
### PUT /report Endpoint
|
||||
- [x] nginx endpoint configuration (`PUT /report`)
|
||||
- [x] FastCGI routing and request handling [`handle_report_request()`](src/main.c:2516)
|
||||
- [x] JSON request body parsing and validation
|
||||
- [x] Content-Type enforcement (application/json required)
|
||||
- [x] Request size limits (1 byte to 10KB)
|
||||
- [x] HTTP method validation (PUT only, 405 for others)
|
||||
|
||||
### Report Validation Features
|
||||
- [x] Event structure validation [`validate_report_event_structure()`](src/main.c:2355)
|
||||
- [x] NIP-56 compliance checking (kind 1984, x tags required)
|
||||
- [x] SHA-256 hash format validation (64-char hex)
|
||||
- [x] Report type extensibility (accepts unknown types per NIP-56)
|
||||
- [x] Multiple blob reporting (multiple x tags supported)
|
||||
- [x] Optional tag support (e, p, server tags)
|
||||
|
||||
### Report Storage System
|
||||
- [x] Optional report storage in database [`store_blob_report()`](src/main.c:2485)
|
||||
- [x] Reporter pubkey extraction and storage
|
||||
- [x] Report type and content preservation
|
||||
- [x] Timestamp tracking for moderation review
|
||||
- [x] Configurable storage policy (server MAY store reports)
|
||||
|
||||
### Error Handling & Security
|
||||
- [x] Comprehensive error responses with specific error codes:
|
||||
- `invalid_json` - Malformed JSON requests
|
||||
- `invalid_content_length` - Size limit violations
|
||||
- `invalid_report_event` - NIP-56 structure violations
|
||||
- `no_blob_hashes` - Missing or invalid SHA-256 hashes
|
||||
- `unsupported_media_type` - Non-JSON Content-Type
|
||||
- [x] HTTP status code compliance (200, 400, 405, 415)
|
||||
- [x] Detailed error messages with troubleshooting information
|
||||
|
||||
### NIP-56 Compliance Features
|
||||
- [x] Report types: nudity, malware, profanity, illegal, spam, impersonation, other
|
||||
- [x] Extensible report type system (unknown types accepted)
|
||||
- [x] Multiple blob reporting via multiple x tags
|
||||
- [x] Optional metadata tags (e, p, server)
|
||||
- [x] Content field support (reports may include descriptions)
|
||||
- [x] Cryptographic signature verification via nostr event validation
|
||||
|
||||
### Testing Status
|
||||
- [x] Comprehensive test suite with 22 test cases [`tests/report_test_bud09.sh`](tests/report_test_bud09.sh)
|
||||
- [x] All NIP-56 report types tested (nudity, malware, profanity, illegal, spam, impersonation, other)
|
||||
- [x] Event validation testing (missing x tags, wrong kind, invalid JSON)
|
||||
- [x] Error handling testing (empty body, wrong Content-Type, unsupported methods)
|
||||
- [x] Multiple blob reporting functionality
|
||||
- [x] Optional tag support with comprehensive NIP-56 structure
|
||||
- [x] Unknown report type extensibility
|
||||
- [x] Edge cases (empty content, long content, invalid hashes)
|
||||
|
||||
### Integration Points
|
||||
- [x] Full integration with existing nostr authentication system
|
||||
- [x] Database integration for optional report storage
|
||||
- [x] nginx FastCGI routing configuration
|
||||
- [x] Error response standardization with existing endpoints
|
||||
|
||||
|
||||
Reference in New Issue
Block a user