Compare commits

..

2 Commits

Author SHA1 Message Date
Your Name
fa17aa1f78 v0.2.4 - Clean up config issues 2025-09-06 04:40:59 -04:00
Your Name
7e560b4247 Remove relay.log from tracking (already in .gitignore) 2025-09-05 19:51:47 -04:00
9 changed files with 19 additions and 61 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -142,7 +142,7 @@ INSERT OR IGNORE INTO server_config (key, value, description, config_type, data_
('relay_description', 'High-performance C Nostr relay with SQLite storage', 'Relay description', 'user', 'string', 0),
('relay_contact', '', 'Contact information', 'user', 'string', 0),
('relay_pubkey', '', 'Relay public key', 'user', 'string', 0),
('relay_software', 'https://github.com/laantungir/c-relay', 'Software URL', 'user', 'string', 0),
('relay_software', 'https://git.laantungir.net/laantungir/c-relay.git', 'Software URL', 'user', 'string', 0),
('relay_version', '0.2.0', 'Software version', 'user', 'string', 0),
-- NIP-13 Proof of Work

View File

@@ -66,7 +66,7 @@ The configuration file contains a signed Nostr event (kind 33334) with relay con
["relay_contact", ""],
["relay_pubkey", ""],
["relay_software", "https://github.com/laantungir/c-relay"],
["relay_software", "https://git.laantungir.net/laantungir/c-relay.git"],
["relay_version", "0.2.0"],
["max_event_tags", "100"],

View File

@@ -1,50 +0,0 @@
=== C Nostr Relay Server ===
[SUCCESS] Database connection established
[INFO] Initializing configuration system...
[INFO] Configuration directory: %s
/home/teknari/.config/c-relay
[INFO] Configuration file: %s
/home/teknari/.config/c-relay/c_relay_config_event.json
[INFO] Initializing configuration database statements...
[SUCCESS] Configuration database statements initialized
[INFO] Generating missing configuration file...
[INFO] Using private key from environment variable
[INFO] Creating configuration Nostr event...
[SUCCESS] Configuration Nostr event created successfully
Event ID: 03021d58b91941a3bb9284ee704e069c50c9ac09a20eb049d8de676757dde83a
Public Key: 8d8fbfb027872f13ed09e9e61f1d09473f3bec24bcfa9183e76cc1ceb789eb5e
[INFO] Stored admin public key in configuration database
Admin Public Key: 8d8fbfb027872f13ed09e9e61f1d09473f3bec24bcfa9183e76cc1ceb789eb5e
[SUCCESS] Configuration file written successfully
File: /home/teknari/.config/c-relay/c_relay_config_event.json
[SUCCESS] Configuration file generated successfully
[INFO] Loading configuration from all sources...
[INFO] Configuration file found, attempting to load...
[INFO] Loading configuration from file...
[INFO] Validating configuration event...
[INFO] Configuration event structure validation passed
[INFO] Configuration tags validation passed (%d tags)
Found 27 configuration tags
[WARNING] Signature verification not yet implemented - accepting event
[SUCCESS] Applied configuration from file
Applied 27 configuration values
[SUCCESS] Configuration event validation and application completed
[SUCCESS] Configuration loaded from file successfully
[SUCCESS] File configuration loaded successfully
[INFO] Loading configuration from database...
[SUCCESS] Database configuration validated (%d entries)
Found 27 configuration entries
[SUCCESS] Database configuration loaded
[INFO] Applying configuration to global variables...
[SUCCESS] Configuration applied to global variables
[SUCCESS] Configuration system initialized successfully
[SUCCESS] Relay information initialized with default values
[INFO] Initializing NIP-13 Proof of Work configuration
[INFO] PoW configured in basic validation mode
[INFO] PoW Configuration: enabled=true, min_difficulty=0, validation_flags=0x1, mode=full
[INFO] Initializing NIP-40 Expiration Timestamp configuration
[INFO] Expiration Configuration: enabled=true, strict_mode=true, filter_responses=true, grace_period=300 seconds
[INFO] Subscription limits: max_per_client=25, max_total=5000
[INFO] Starting relay server...
[INFO] Starting libwebsockets-based Nostr relay server...
[SUCCESS] WebSocket relay started on ws://127.0.0.1:8888

View File

@@ -1 +1 @@
793733
871512

View File

@@ -721,7 +721,6 @@ cJSON* create_config_nostr_event(const char* privkey_hex) {
static const default_config_t defaults[] = {
// Administrative settings
{"admin_pubkey", ""},
{"admin_enabled", "false"},
// Server core settings
@@ -734,7 +733,7 @@ cJSON* create_config_nostr_event(const char* privkey_hex) {
{"relay_description", "High-performance C Nostr relay with SQLite storage"},
{"relay_contact", ""},
{"relay_pubkey", ""},
{"relay_software", "https://github.com/teknari/c-relay"},
{"relay_software", "https://git.laantungir.net/laantungir/c-relay.git"},
{"relay_version", "0.2.0"},
// NIP-13 Proof of Work
@@ -776,7 +775,8 @@ cJSON* create_config_nostr_event(const char* privkey_hex) {
const char* key = (const char*)sqlite3_column_text(stmt, 0);
const char* value = (const char*)sqlite3_column_text(stmt, 1);
if (key && value) {
// Skip admin_pubkey since it's redundant (already in event.pubkey)
if (key && value && strcmp(key, "admin_pubkey") != 0) {
cJSON* tag = cJSON_CreateArray();
cJSON_AddItemToArray(tag, cJSON_CreateString(key));
cJSON_AddItemToArray(tag, cJSON_CreateString(value));
@@ -978,7 +978,7 @@ int generate_config_file_if_missing(void) {
cJSON* pubkey_obj = cJSON_GetObjectItem(event, "pubkey");
if (pubkey_obj && cJSON_IsString(pubkey_obj)) {
const char* admin_pubkey = cJSON_GetStringValue(pubkey_obj);
if (set_database_config("relay_admin_pubkey", admin_pubkey, "system") == 0) {
if (set_database_config("admin_pubkey", admin_pubkey, "system") == 0) {
log_info("Stored admin public key in configuration database");
printf(" Admin Public Key: %s\n", admin_pubkey);
} else {

View File

@@ -26,9 +26,9 @@
#define RELAY_URL_MAX_LENGTH 256
#define RELAY_CONTACT_MAX_LENGTH 128
#define RELAY_PUBKEY_MAX_LENGTH 65
#define DATABASE_PATH "db/c_nostr_relay.db"
// Default configuration values (used as fallbacks if database config fails)
#define DEFAULT_DATABASE_PATH "db/c_nostr_relay.db"
#define DEFAULT_PORT 8888
#define DEFAULT_HOST "127.0.0.1"
#define MAX_CLIENTS 100

View File

@@ -1306,7 +1306,7 @@ void init_relay_info() {
if (relay_software) {
strncpy(g_relay_info.software, relay_software, sizeof(g_relay_info.software) - 1);
} else {
strncpy(g_relay_info.software, "https://github.com/laantungir/c-relay", sizeof(g_relay_info.software) - 1);
strncpy(g_relay_info.software, "https://git.laantungir.net/laantungir/c-relay.git", sizeof(g_relay_info.software) - 1);
}
const char* relay_version = get_config_value("relay_version");
@@ -1940,13 +1940,21 @@ int validate_event_expiration(cJSON* event, char* error_message, size_t error_si
// Initialize database connection
int init_database() {
int rc = sqlite3_open(DATABASE_PATH, &g_db);
// Use configurable database path, falling back to default
const char* db_path = get_config_value("database_path");
if (!db_path) {
db_path = DEFAULT_DATABASE_PATH;
}
int rc = sqlite3_open(db_path, &g_db);
if (rc != SQLITE_OK) {
log_error("Cannot open database");
return -1;
}
log_success("Database connection established");
char success_msg[256];
snprintf(success_msg, sizeof(success_msg), "Database connection established: %s", db_path);
log_success(success_msg);
return 0;
}