diff --git a/build/bud08.o b/build/bud08.o index e316af3..fd1ed03 100644 Binary files a/build/bud08.o and b/build/bud08.o differ diff --git a/build/ginxsom-fcgi b/build/ginxsom-fcgi index a951d80..70c5508 100755 Binary files a/build/ginxsom-fcgi and b/build/ginxsom-fcgi differ diff --git a/db/ginxsom.db b/db/ginxsom.db index b2bc752..3354f30 100644 Binary files a/db/ginxsom.db and b/db/ginxsom.db differ diff --git a/src/bud08.c b/src/bud08.c index 0498c3f..3be9603 100644 --- a/src/bud08.c +++ b/src/bud08.c @@ -44,19 +44,29 @@ int nip94_get_origin(char* out, size_t out_size) { if (!out || out_size == 0) { return 0; } - + + // Check if request came over HTTPS (nginx sets HTTPS=on for SSL requests) + const char* https_env = getenv("HTTPS"); + if (https_env && strcmp(https_env, "on") == 0) { + // HTTPS request - use HTTPS origin + strncpy(out, "https://localhost:9443", out_size - 1); + out[out_size - 1] = '\0'; + return 1; + } + + // HTTP request - check database config first, then use HTTP origin sqlite3* db; sqlite3_stmt* stmt; int rc; - + rc = sqlite3_open_v2(DB_PATH, &db, SQLITE_OPEN_READONLY, NULL); if (rc) { - // Default on DB error + // Default on DB error - use HTTP strncpy(out, "http://localhost:9001", out_size - 1); out[out_size - 1] = '\0'; return 1; } - + const char* sql = "SELECT value FROM server_config WHERE key = 'cdn_origin'"; rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); if (rc == SQLITE_OK) { @@ -73,10 +83,10 @@ int nip94_get_origin(char* out, size_t out_size) { } sqlite3_finalize(stmt); } - + sqlite3_close(db); - - // Default fallback + + // Default fallback - HTTP strncpy(out, "http://localhost:9001", out_size - 1); out[out_size - 1] = '\0'; return 1; diff --git a/test_file.txt b/test_file.txt new file mode 100644 index 0000000..d7ab9a8 --- /dev/null +++ b/test_file.txt @@ -0,0 +1 @@ +test file content