From ec976ab090df7547a25a3e2b1a2d5888136d2e48 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 19 Aug 2025 10:23:40 -0400 Subject: [PATCH] Bud 2 mostly done --- IMPLEMENTATION.md | 92 +- ...8b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt | 7 + ...07b54815c2519b17652acf2d81543a141d32a3.txt | 7 + ...b6d0b69361ac63bed5956652e39dad53400ac5.txt | 7 + ...0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt | 7 + ...5d9db94acce2246673bc347da6805951bdac52.txt | 7 + ...34944d5fea43a8b3dc8eaa08abe4859eb68325.txt | 7 + ...2b940b04e1b48b0b700d27ff85081206ed08bf.bin | 7 + ...ee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt | 7 + build/ginxsom-fcgi | Bin 152816 -> 161536 bytes build/main.o | Bin 24168 -> 40952 bytes db/ginxsom.db | Bin 36864 -> 36864 bytes logs/access.log | 18 + logs/error.log | 5621 +++++++++++++++++ put_test.sh | 3 +- src/main.c | 366 +- 16 files changed, 6071 insertions(+), 85 deletions(-) create mode 100644 blobs/27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt create mode 100644 blobs/33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt create mode 100644 blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt create mode 100644 blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt create mode 100644 blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt create mode 100644 blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt create mode 100644 blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin create mode 100644 blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt diff --git a/IMPLEMENTATION.md b/IMPLEMENTATION.md index 52a76f3..7754e88 100644 --- a/IMPLEMENTATION.md +++ b/IMPLEMENTATION.md @@ -59,50 +59,37 @@ This document outlines the implementation plan for ginxsom, a FastCGI-based Blos ## Phase 2: Upload & Authentication (BUD-02) ### 2.1 Nostr Authentication Setup -- [ ] Integrate nostr_core_lib submodule - - [ ] Update Makefile to include nostr_core_lib paths and static library - - [ ] Build libnostr_core_x64.a using provided build.sh script - - [ ] Add system dependencies: -lsecp256k1 -lssl -lcrypto -lcurl -lz -ldl -lpthread -lm +- [x] Integrate nostr_core_lib submodule + - [x] Update Makefile to include nostr_core_lib paths and static library + - [x] Build libnostr_core_x64.a using provided build.sh script + - [x] Add system dependencies: -lsecp256k1 -lssl -lcrypto -lcurl -lz -ldl -lpthread -lm -- [ ] Implement authentication functions in main.c (BUD-02 section): - - [ ] `parse_authorization_header()` - Extract JSON from "Nostr base64(event)" header - - [ ] `validate_blossom_event()` - Validate Blossom-specific requirements (kind 24242, content hash, method, expiration) - - [ ] `authenticate_request()` - Main orchestrator function +- [x] Implement authentication functions in main.c (BUD-02 section): + - [x] `parse_authorization_header()` - Extract JSON from "Nostr base64(event)" header + - [x] `validate_blossom_event()` - Validate Blossom-specific requirements (kind 24242, content hash, method, expiration) + - [x] `authenticate_request()` - Main orchestrator function -- [ ] Leverage existing nostr_core_lib functions: - - [ ] Use `nostr_validate_event()` for structure + signature validation (from nip001.h) - - [ ] Use standardized error codes from nostr_common.h (NOSTR_SUCCESS, NOSTR_ERROR_EVENT_INVALID_SIGNATURE, etc.) - - [ ] Use `nostr_strerror()` for error message translation - -**Function Specifications:** -```c -// Custom functions to implement: -int parse_authorization_header(const char* auth_header, char* event_json, size_t json_size); -int validate_blossom_event(struct cJSON* event, const char* expected_hash, const char* method); -int authenticate_request(const char* auth_header, const char* method, const char* file_hash); - -// Existing nostr_core_lib functions to use directly: -// - nostr_validate_event(cJSON* event) - handles structure + signature validation -// - nostr_validate_event_structure(cJSON* event) - if separate validation needed -// - nostr_verify_event_signature(cJSON* event) - if separate signature check needed -``` +- [x] Leverage existing nostr_core_lib functions: + - [x] Use `nostr_validate_event()` for structure + signature validation (from nip001.h) + - [x] Use standardized error codes from nostr_common.h (NOSTR_SUCCESS, NOSTR_ERROR_EVENT_INVALID_SIGNATURE, etc.) + - [x] Use `nostr_strerror()` for error message translation ### 2.2 Upload Endpoint Implementation -- [ ] Implement `PUT /upload` endpoint - - [ ] Parse Authorization header (optional but recommended) - - [ ] Stream file upload to temporary location - - [ ] Calculate SHA-256 hash during upload - - [ ] Validate hash matches authorization if provided - - [ ] Move file to permanent location - - [ ] Store metadata in database - - [ ] Return blob descriptor JSON response +- [x] Implement `PUT /upload` endpoint + - [x] Parse Authorization header (Nostr base64 event extraction) + - [x] Stream file upload to temporary location + - [x] Calculate SHA-256 hash during upload + - [x] Validate hash matches authorization if provided + - [x] Move file to permanent location + - [x] Store metadata in database (including uploader_pubkey and filename) + - [x] Return blob descriptor JSON response ### 2.3 Blob Descriptor Response -- [ ] Implement blob descriptor structure - - [ ] Required fields: url, sha256, size, type, uploaded - - [ ] Handle MIME type detection - - [ ] Generate proper blob URLs - - [ ] Add optional server-specific fields +- [x] Implement blob descriptor structure + - [x] Required fields: url, sha256, size, type, uploaded + - [x] Handle MIME type detection + - [x] Generate proper blob URLs + - [x] Add optional server-specific fields (uploader_pubkey, filename) ### 2.4 Error Handling - [ ] Implement proper HTTP status codes @@ -115,12 +102,13 @@ int authenticate_request(const char* auth_header, const char* method, const char - [ ] Implement request logging ### 2.5 Testing & Validation -- [ ] Test uploads without authentication -- [ ] Test uploads with valid nostr auth -- [ ] Test uploads with invalid auth -- [ ] Test hash mismatch scenarios +- [x] Test uploads without authentication +- [x] Test uploads with valid nostr auth +- [x] Test uploads with invalid auth +- [x] Test hash mismatch scenarios - [ ] Test file size limits -- [ ] Verify blob descriptors are correct +- [x] Verify blob descriptors are correct +- [x] Verify database metadata storage (uploader_pubkey and filename) --- @@ -208,14 +196,18 @@ int authenticate_request(const char* auth_header, const char* method, const char - [x] Database stores blob information with proper schema ### Milestone 2: Full Upload Support (Phase 2 Complete) -- Authenticated uploads working -- Proper error handling -- Blob descriptors returned correctly +- [x] Basic upload functionality working (PUT requests accepted) +- [x] SHA-256 hash calculation during upload +- [x] File storage to blobs/ directory +- [x] Blob descriptor JSON response +- [x] Authenticated uploads working (Nostr kind 24242 event validation) +- [x] Proper error handling for upload scenarios +- [x] Database metadata storage during upload (with uploader_pubkey and filename) -### Milestone 3: Policy Compliance (Phase 3 Complete) -- Upload requirements implemented -- Server policies configurable -- Spec compliance verified +### Milestone 3: Policy Compliance (Phase 3 Pending) +- [ ] Upload requirements implemented +- [ ] Server policies configurable +- [ ] Spec compliance verified ### Milestone 4: Production Ready (Phase 4 Complete) - Optional features implemented as needed diff --git a/blobs/27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt b/blobs/27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt new file mode 100644 index 0000000..764225e --- /dev/null +++ b/blobs/27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T09:58:19-04:00 +Random data: faafb490d178139a95368b519dd836ef835b488da9324ab5387299654f294826 +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/blobs/33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt b/blobs/33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt new file mode 100644 index 0000000..c53e9e0 --- /dev/null +++ b/blobs/33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T10:06:44-04:00 +Random data: a0100362b9eb683a4bf49f49b8b6597490142d2a2d2543e7d500f371f0a1f052 +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt b/blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt new file mode 100644 index 0000000..073cbe5 --- /dev/null +++ b/blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T10:10:05-04:00 +Random data: 0dbb5e8f50695faa4f8bc3a5369d21fca51c98fda6be69520a6bfe6160bd55ca +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt b/blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt new file mode 100644 index 0000000..348087d --- /dev/null +++ b/blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T09:49:32-04:00 +Random data: 5fc993875e7b145b161463e2250f7b7d4be0428fca7a91a40a843b25d594eb2d +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt b/blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt new file mode 100644 index 0000000..25c0809 --- /dev/null +++ b/blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T10:07:52-04:00 +Random data: f1690ecb249bb7499e997e47b515e0f067dc0fffa13f4265f497b87166799187 +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt b/blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt new file mode 100644 index 0000000..499e165 --- /dev/null +++ b/blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T10:11:22-04:00 +Random data: 97e6573bd31c5dd5dc1f3fd7ed6e7d94898959af435556879a648f83b62267e7 +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin b/blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin new file mode 100644 index 0000000..6bad1ab --- /dev/null +++ b/blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T09:23:37-04:00 +Random data: 91175d5c0a2465bb69dabfa79d822054cbc8c00cc05cc551b1ed69b5f619631a +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt b/blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt new file mode 100644 index 0000000..8fc2eb9 --- /dev/null +++ b/blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt @@ -0,0 +1,7 @@ +Test blob content for Ginxsom Blossom server +Timestamp: 2025-08-19T09:53:53-04:00 +Random data: e4170eb6a32ff51102a2e154ec96dd4c769b3033f92b2bdb68fe4b835ec42d8f +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. diff --git a/build/ginxsom-fcgi b/build/ginxsom-fcgi index 045670f2bda2084ee1115fc65fff987dcaaefe4b..113567c8e93aea39876df4ecae598c3ec763a8e0 100755 GIT binary patch literal 161536 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 O`uv)h%^s<@4g5c-=v+?# literal 152816 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

  • ~<(aDJA_$oZb& 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 Be5(Ke diff --git a/db/ginxsom.db b/db/ginxsom.db index 401db6eeeee2ff9834e5b3ce39c0cc7e6dd7673e..6efc6f7e140f9c166365cd0668e1822c4fbda497 100644 GIT binary patch delta 2112 zcmbuAOK4nG7{~9-o!51oIi_GljM(hD5Ody-g18WI>&|Q>InTCI`@m63L2f2A73oF^ zhzo^+fo>}iK_rU`f*@2BaVH3hC{_xgP)l9-&D>1usMR(ZnDd=)nECUc|NVXEtemf} zoUgz6NNwL+b5GayeXzWNW{d9S484mE_P_6+?LXf8x+m{n?OxuTdEmotIV43f?A7NR z!`_ot7%r2h1Sh9eGD=Y@nUrywOCshxfUimsTmcu1A};KuyEq2 zJ#y^u#@VhiE=s9lGQm4%y$}{lYJ`tkVTTo_rgX^%M}v=42O~_Png~b01yM#1;>&|2 zcl5YhB1#BJsMPd{!KuNJbZ(hegkg9YOEt$ZVgiT>72$1V8Muu^VC{@`+UkgfPl+go zxv)w{VReG2JPR5ynwDO@x!9OU2V-bV#3tM7%8I!cx9SJ5{*}oF6ag- zrA(y+n1hIMT6(y>m`|jQ0*+`Tk{QChls5l2L3n{BcY=}x zk?=IFymDo^zN7qT(r*3P$F^pR-np#*e*XpZN$)GP(0{0RuKx>q1?KZ)uY3juv$og4 zEXFFknUwPOsCdyC%iLmjm*}>~DtAd)c}L7zW0`+J>Yj*dj#chVPx;^YOz3G;$?TDo ze5?Xg2*(ZP9)^1J^@Z2=&lc!nhJHs^(NE|*^bPs~eTqIt7dK~~dmF7^U1}bLv$p8u zjoRUjwXM$1#Kr$>FlY-~V3+|2SC7zg`Cwe|t64Zsb|5HCmdZr7>Fa(NfRzthg`BvI3pX zAcbv+y89XW2wgz$pf}Lz&6)knsO;zSwcFQRG2M2i+xB$Znr@rZZDYF4N9~c9?4h{u z;)!^u-pl6;XxDF)U3g%ZGW09@5oq`peThCtm%!`|;Nb##s+HGkwF5;}I#p>`rB#(? TRT@>vN9EPIdMnS1eD2tvOQSl) delta 164 zcmZozz|^pSX@WE(_e2?IM(&LXOZYjM_^lZD=kQx?R&>zgpKK+63Mf*_z`vWnbhBbW zCjaJA{eA_Y(0c~{AN=n(D>f|PpE$vJ@`iZU$zS3HfD+#s`2X;Khe~*hvM@6+GBGnV zaB?v)Ffj2yX5fF!{|PE= json_size) { - printf("DEBUG: Event JSON too large for buffer\r\n"); + // Decode base64 to JSON using nostr_core_lib base64 decode + unsigned char decoded_buffer[4096]; + size_t decoded_len = base64_decode(base64_event, decoded_buffer); + + if (decoded_len == 0) { + printf("DEBUG: Failed to decode base64 event\r\n"); return NOSTR_ERROR_INVALID_INPUT; } - strncpy(event_json, base64_event, json_size - 1); - event_json[json_size - 1] = '\0'; + if (decoded_len >= json_size) { + printf("DEBUG: Decoded JSON too large for buffer\r\n"); + return NOSTR_ERROR_INVALID_INPUT; + } + + // Copy decoded JSON to output buffer + memcpy(event_json, decoded_buffer, decoded_len); + event_json[decoded_len] = '\0'; printf("DEBUG: Parsed authorization header, extracted JSON: %.100s...\r\n", event_json); return NOSTR_SUCCESS; @@ -416,22 +516,13 @@ void handle_upload_request(void) { printf("DEBUG: handle_upload_request called\r\n"); // Get HTTP headers - const char* auth_header = getenv("HTTP_AUTHORIZATION"); const char* content_type = getenv("CONTENT_TYPE"); const char* content_length_str = getenv("CONTENT_LENGTH"); - printf("DEBUG: auth_header=%s\r\n", auth_header ? auth_header : "NULL"); printf("DEBUG: content_type=%s\r\n", content_type ? content_type : "NULL"); printf("DEBUG: content_length=%s\r\n", content_length_str ? content_length_str : "NULL"); // Validate required headers - if (!auth_header) { - printf("Status: 401 Unauthorized\r\n"); - printf("Content-Type: text/plain\r\n\r\n"); - printf("Authorization header required\n"); - return; - } - if (!content_type) { printf("Status: 400 Bad Request\r\n"); printf("Content-Type: text/plain\r\n\r\n"); @@ -454,32 +545,239 @@ void handle_upload_request(void) { return; } - // Authenticate the request - int auth_result = authenticate_request(auth_header, "PUT", NULL); - if (auth_result != NOSTR_SUCCESS) { - printf("DEBUG: Authentication failed: %d\r\n", auth_result); - printf("Status: 401 Unauthorized\r\n"); + // Get Authorization header for authentication + const char* auth_header = getenv("HTTP_AUTHORIZATION"); + printf("DEBUG: Raw Authorization header: %s\r\n", auth_header ? auth_header : "NULL"); + + // Parse the authorization header to extract the Nostr event + const char* uploader_pubkey = NULL; + + if (auth_header) { + printf("DEBUG: Authorization header present, length=%zu\r\n", strlen(auth_header)); + + // Parse authorization header to get JSON + char event_json[4096]; + int parse_result = parse_authorization_header(auth_header, event_json, sizeof(event_json)); + printf("DEBUG: parse_authorization_header returned: %d\r\n", parse_result); + + if (parse_result == NOSTR_SUCCESS) { + printf("DEBUG: Successfully parsed authorization header\r\n"); + printf("DEBUG: Event JSON: %.200s...\r\n", event_json); + + // Parse the JSON event to extract pubkey + cJSON* event = cJSON_Parse(event_json); + if (event) { + printf("DEBUG: Successfully parsed JSON event\r\n"); + cJSON* pubkey_json = cJSON_GetObjectItem(event, "pubkey"); + if (pubkey_json && cJSON_IsString(pubkey_json)) { + const char* temp_pubkey = cJSON_GetStringValue(pubkey_json); + printf("DEBUG: Found pubkey in JSON: %.16s...\r\n", temp_pubkey ? temp_pubkey : "NULL"); + + // Copy the pubkey to a static buffer to preserve it after cJSON_Delete + static char pubkey_buffer[256]; + if (temp_pubkey) { + strncpy(pubkey_buffer, temp_pubkey, sizeof(pubkey_buffer)-1); + pubkey_buffer[sizeof(pubkey_buffer)-1] = '\0'; + uploader_pubkey = pubkey_buffer; + printf("DEBUG: Copied pubkey to static buffer: %.16s...\r\n", uploader_pubkey); + } + } else { + printf("DEBUG: No valid 'pubkey' field found in JSON event\r\n"); + } + cJSON_Delete(event); + } else { + printf("DEBUG: Failed to parse JSON event\r\n"); + } + } else { + printf("DEBUG: Failed to parse authorization header, error: %d\r\n", parse_result); + } + } else { + printf("DEBUG: No authorization header provided\r\n"); + } + + printf("DEBUG: Final uploader_pubkey after auth parsing: %s\r\n", uploader_pubkey ? uploader_pubkey : "NULL"); + + // Read file data from stdin + unsigned char* file_data = malloc(content_length); + if (!file_data) { + printf("Status: 500 Internal Server Error\r\n"); printf("Content-Type: text/plain\r\n\r\n"); - printf("Authentication failed\n"); + printf("Memory allocation failed\n"); return; } - printf("DEBUG: Authentication successful, proceeding with upload\r\n"); + size_t bytes_read = fread(file_data, 1, content_length, stdin); + if (bytes_read != (size_t)content_length) { + printf("DEBUG: Expected %ld bytes, read %zu bytes\r\n", content_length, bytes_read); + free(file_data); + printf("Status: 400 Bad Request\r\n"); + printf("Content-Type: text/plain\r\n\r\n"); + printf("Failed to read complete file data\n"); + return; + } - // For now, return a simple response indicating the upload endpoint is working - // In a full implementation, you would: - // 1. Read the file data from stdin - // 2. Calculate SHA-256 hash - // 3. Save file to blobs/ directory with proper extension - // 4. Store metadata in database - // 5. Return blob descriptor JSON + printf("DEBUG: Successfully read %zu bytes from stdin\r\n", bytes_read); - printf("Status: 501 Not Implemented\r\n"); + // Calculate SHA-256 hash using nostr_core function + unsigned char hash[32]; + if (nostr_sha256(file_data, content_length, hash) != NOSTR_SUCCESS) { + free(file_data); + printf("Status: 500 Internal Server Error\r\n"); + printf("Content-Type: text/plain\r\n\r\n"); + printf("Hash calculation failed\n"); + return; + } + + // Convert hash to hex string + char sha256_hex[65]; + nostr_bytes_to_hex(hash, 32, sha256_hex); + printf("DEBUG: Calculated SHA-256: %s\r\n", sha256_hex); + + // Determine file extension from Content-Type + const char* extension = ""; + if (strstr(content_type, "image/jpeg")) { + extension = ".jpg"; + } else if (strstr(content_type, "image/webp")) { + extension = ".webp"; + } else if (strstr(content_type, "image/png")) { + extension = ".png"; + } else if (strstr(content_type, "image/gif")) { + extension = ".gif"; + } else if (strstr(content_type, "video/mp4")) { + extension = ".mp4"; + } else if (strstr(content_type, "video/webm")) { + extension = ".webm"; + } else if (strstr(content_type, "audio/mpeg")) { + extension = ".mp3"; + } else if (strstr(content_type, "audio/ogg")) { + extension = ".ogg"; + } else if (strstr(content_type, "text/plain")) { + extension = ".txt"; + } else { + // Default to binary extension for unknown types + extension = ".bin"; + } + + // Save file to blobs directory with SHA-256 + extension + char filepath[MAX_PATH_LEN]; + snprintf(filepath, sizeof(filepath), "blobs/%s%s", sha256_hex, extension); + + printf("DEBUG: Saving file to: %s\r\n", filepath); + + FILE* outfile = fopen(filepath, "wb"); + if (!outfile) { + free(file_data); + printf("Status: 500 Internal Server Error\r\n"); + printf("Content-Type: text/plain\r\n\r\n"); + printf("Failed to create file\n"); + return; + } + + size_t bytes_written = fwrite(file_data, 1, content_length, outfile); + fclose(outfile); + free(file_data); + + if (bytes_written != (size_t)content_length) { + // Clean up partial file + unlink(filepath); + printf("Status: 500 Internal Server Error\r\n"); + printf("Content-Type: text/plain\r\n\r\n"); + printf("Failed to write complete file\n"); + return; + } + + printf("DEBUG: Successfully saved %zu bytes to %s\r\n", bytes_written, filepath); + + // Extract filename from Content-Disposition header if present + const char* filename = NULL; + const char* content_disposition = getenv("HTTP_CONTENT_DISPOSITION"); + printf("DEBUG: Content-Disposition header: %s\r\n", content_disposition ? content_disposition : "NULL"); + + if (content_disposition) { + printf("DEBUG: Looking for filename= in Content-Disposition header\r\n"); + // Look for filename= in Content-Disposition header + const char* filename_start = strstr(content_disposition, "filename="); + if (filename_start) { + printf("DEBUG: Found filename= at position %ld\r\n", filename_start - content_disposition); + filename_start += 9; // Skip "filename=" + printf("DEBUG: Filename value starts with: %.20s\r\n", filename_start); + + // Handle quoted filenames + if (*filename_start == '"') { + printf("DEBUG: Processing quoted filename\r\n"); + filename_start++; // Skip opening quote + // Find closing quote + const char* filename_end = strchr(filename_start, '"'); + if (filename_end) { + // Extract filename between quotes + static char filename_buffer[256]; + size_t filename_len = filename_end - filename_start; + printf("DEBUG: Quoted filename length: %zu\r\n", filename_len); + if (filename_len < sizeof(filename_buffer)) { + strncpy(filename_buffer, filename_start, filename_len); + filename_buffer[filename_len] = '\0'; + filename = filename_buffer; + printf("DEBUG: Extracted quoted filename: '%s'\r\n", filename); + } else { + printf("DEBUG: Quoted filename too long, skipping\r\n"); + } + } else { + printf("DEBUG: No closing quote found for filename\r\n"); + } + } else { + printf("DEBUG: Processing unquoted filename\r\n"); + // Unquoted filename - extract until space or end + const char* filename_end = filename_start; + while (*filename_end && *filename_end != ' ' && *filename_end != ';') { + filename_end++; + } + static char filename_buffer[256]; + size_t filename_len = filename_end - filename_start; + printf("DEBUG: Unquoted filename length: %zu\r\n", filename_len); + if (filename_len < sizeof(filename_buffer)) { + strncpy(filename_buffer, filename_start, filename_len); + filename_buffer[filename_len] = '\0'; + filename = filename_buffer; + printf("DEBUG: Extracted unquoted filename: '%s'\r\n", filename); + } else { + printf("DEBUG: Unquoted filename too long, skipping\r\n"); + } + } + } else { + printf("DEBUG: No filename= found in Content-Disposition header\r\n"); + } + } else { + printf("DEBUG: No Content-Disposition header provided\r\n"); + } + + printf("DEBUG: Final filename after extraction: %s\r\n", filename ? filename : "NULL"); + + // Store blob metadata in database + time_t uploaded_time = time(NULL); + if (!insert_blob_metadata(sha256_hex, content_length, content_type, uploaded_time, uploader_pubkey, filename)) { + // Database insertion failed - clean up the physical file to maintain consistency + printf("DEBUG: Database insertion failed, removing physical file\r\n"); + unlink(filepath); + printf("Status: 500 Internal Server Error\r\n"); + printf("Content-Type: text/plain\r\n\r\n"); + printf("Failed to store blob metadata\n"); + return; + } + + printf("DEBUG: Blob metadata successfully stored in database\r\n"); + + // Return success response with blob descriptor + printf("Status: 200 OK\r\n"); printf("Content-Type: application/json\r\n\r\n"); printf("{\n"); - printf(" \"message\": \"Upload endpoint authenticated successfully\",\n"); - printf(" \"note\": \"Full file upload implementation pending\"\n"); + printf(" \"sha256\": \"%s\",\n", sha256_hex); + printf(" \"size\": %ld,\n", content_length); + printf(" \"type\": \"%s\",\n", content_type); + printf(" \"uploaded\": %ld,\n", uploaded_time); + printf(" \"url\": \"http://localhost:9001/%s%s\"\n", sha256_hex, extension); printf("}\n"); + + printf("DEBUG: Upload completed successfully with database storage\r\n"); } int main(void) {