v0.7.4 - Remove excessive debug logging from entire codebase - preserve user-facing error logging
This commit is contained in:
217
src/config.c
217
src/config.c
@@ -226,24 +226,18 @@ static int refresh_unified_cache_from_table(void) {
|
||||
log_info("Refreshing unified configuration cache from database");
|
||||
|
||||
// Lock the cache for update (don't memset entire cache to avoid wiping relay_info)
|
||||
log_info("DEBUG: Acquiring cache lock for refresh");
|
||||
pthread_mutex_lock(&g_unified_cache.cache_lock);
|
||||
log_info("DEBUG: Cache lock acquired");
|
||||
|
||||
// Load critical config values from table
|
||||
log_info("DEBUG: Loading admin_pubkey from table");
|
||||
const char* admin_pubkey = get_config_value_from_table("admin_pubkey");
|
||||
if (admin_pubkey) {
|
||||
log_info("DEBUG: Setting admin_pubkey in cache");
|
||||
strncpy(g_unified_cache.admin_pubkey, admin_pubkey, sizeof(g_unified_cache.admin_pubkey) - 1);
|
||||
g_unified_cache.admin_pubkey[sizeof(g_unified_cache.admin_pubkey) - 1] = '\0';
|
||||
free((char*)admin_pubkey);
|
||||
}
|
||||
|
||||
log_info("DEBUG: Loading relay_pubkey from table");
|
||||
const char* relay_pubkey = get_config_value_from_table("relay_pubkey");
|
||||
if (relay_pubkey) {
|
||||
log_info("DEBUG: Setting relay_pubkey in cache");
|
||||
strncpy(g_unified_cache.relay_pubkey, relay_pubkey, sizeof(g_unified_cache.relay_pubkey) - 1);
|
||||
g_unified_cache.relay_pubkey[sizeof(g_unified_cache.relay_pubkey) - 1] = '\0';
|
||||
free((char*)relay_pubkey);
|
||||
@@ -361,12 +355,10 @@ static int refresh_unified_cache_from_table(void) {
|
||||
}
|
||||
|
||||
// Set cache expiration
|
||||
log_info("DEBUG: Setting cache expiration and validity");
|
||||
int cache_timeout = get_cache_timeout();
|
||||
g_unified_cache.cache_expires = time(NULL) + cache_timeout;
|
||||
g_unified_cache.cache_valid = 1;
|
||||
|
||||
log_info("DEBUG: Releasing cache lock");
|
||||
pthread_mutex_unlock(&g_unified_cache.cache_lock);
|
||||
|
||||
log_info("Unified configuration cache refreshed from database");
|
||||
@@ -2262,60 +2254,50 @@ extern int is_authorized_admin_event(cJSON* event);
|
||||
|
||||
// Process admin events (updated for Kind 23456)
|
||||
int process_admin_event_in_config(cJSON* event, char* error_message, size_t error_size, struct lws* wsi) {
|
||||
log_info("DEBUG: Entering process_admin_event_in_config()");
|
||||
|
||||
cJSON* kind_obj = cJSON_GetObjectItem(event, "kind");
|
||||
if (!kind_obj || !cJSON_IsNumber(kind_obj)) {
|
||||
log_error("DEBUG: Missing or invalid kind in admin event");
|
||||
log_error("Missing or invalid kind in admin event");
|
||||
snprintf(error_message, error_size, "invalid: missing or invalid kind");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
int kind = (int)cJSON_GetNumberValue(kind_obj);
|
||||
log_info("DEBUG: Processing admin event");
|
||||
printf(" Event kind: %d\n", kind);
|
||||
|
||||
|
||||
// Extract and log event details for debugging
|
||||
cJSON* pubkey_obj = cJSON_GetObjectItem(event, "pubkey");
|
||||
cJSON* content_obj = cJSON_GetObjectItem(event, "content");
|
||||
cJSON* tags_obj = cJSON_GetObjectItem(event, "tags");
|
||||
|
||||
|
||||
const char* event_pubkey = pubkey_obj ? cJSON_GetStringValue(pubkey_obj) : "unknown";
|
||||
const char* event_content = content_obj ? cJSON_GetStringValue(content_obj) : "unknown";
|
||||
|
||||
log_info("DEBUG: Event details");
|
||||
|
||||
printf(" Pubkey: %.16s...\n", event_pubkey ? event_pubkey : "null");
|
||||
printf(" Content length: %zu\n", event_content ? strlen(event_content) : 0);
|
||||
printf(" Has tags: %s\n", tags_obj ? "yes" : "no");
|
||||
if (tags_obj && cJSON_IsArray(tags_obj)) {
|
||||
printf(" Tags count: %d\n", cJSON_GetArraySize(tags_obj));
|
||||
}
|
||||
|
||||
|
||||
// DEFENSE-IN-DEPTH: Use comprehensive admin authorization validation
|
||||
log_info("DEBUG: Checking admin authorization");
|
||||
if (!is_authorized_admin_event(event)) {
|
||||
// Log the unauthorized attempt for security monitoring
|
||||
char log_msg[256];
|
||||
snprintf(log_msg, sizeof(log_msg),
|
||||
"DEBUG: Unauthorized admin event attempt in config processing - pubkey: %.16s...",
|
||||
"Unauthorized admin event attempt in config processing - pubkey: %.16s...",
|
||||
event_pubkey ? event_pubkey : "null");
|
||||
log_warning(log_msg);
|
||||
|
||||
|
||||
snprintf(error_message, error_size, "auth-required: not authorized admin");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Log successful admin authorization for audit trail
|
||||
log_info("DEBUG: Admin event authorized successfully in config processing");
|
||||
|
||||
|
||||
// Route to appropriate handler based on kind
|
||||
log_info("DEBUG: Routing to kind-specific handler");
|
||||
switch (kind) {
|
||||
case 23456: // New ephemeral auth rules management
|
||||
log_info("DEBUG: Routing to process_admin_auth_event (kind 23456)");
|
||||
return process_admin_auth_event(event, error_message, error_size, wsi);
|
||||
default:
|
||||
log_error("DEBUG: Unsupported admin event kind");
|
||||
log_error("Unsupported admin event kind");
|
||||
printf(" Unsupported kind: %d\n", kind);
|
||||
snprintf(error_message, error_size, "invalid: unsupported admin event kind %d", kind);
|
||||
return -1;
|
||||
@@ -2422,21 +2404,17 @@ int process_admin_config_event(cJSON* event, char* error_message, size_t error_s
|
||||
|
||||
// Handle Kind 23456 auth rules management
|
||||
int process_admin_auth_event(cJSON* event, char* error_message, size_t error_size, struct lws* wsi) {
|
||||
log_info("DEBUG: Entering process_admin_auth_event()");
|
||||
|
||||
cJSON* kind_obj = cJSON_GetObjectItem(event, "kind");
|
||||
int kind = kind_obj ? (int)cJSON_GetNumberValue(kind_obj) : 0;
|
||||
|
||||
log_info("DEBUG: Processing admin auth rule event through unified handler");
|
||||
|
||||
printf(" Kind: %d\n", kind);
|
||||
|
||||
|
||||
// Extract and log additional event details for debugging
|
||||
cJSON* content_obj = cJSON_GetObjectItem(event, "content");
|
||||
cJSON* tags_obj = cJSON_GetObjectItem(event, "tags");
|
||||
|
||||
|
||||
const char* event_content = content_obj ? cJSON_GetStringValue(content_obj) : "unknown";
|
||||
|
||||
log_info("DEBUG: Auth event details");
|
||||
|
||||
printf(" Content length: %zu\n", event_content ? strlen(event_content) : 0);
|
||||
printf(" Has tags: %s\n", tags_obj ? "yes" : "no");
|
||||
if (tags_obj && cJSON_IsArray(tags_obj)) {
|
||||
@@ -2445,12 +2423,10 @@ int process_admin_auth_event(cJSON* event, char* error_message, size_t error_siz
|
||||
|
||||
// Route all Kind 23456 events through the unified handler
|
||||
if (kind == 23456) {
|
||||
log_info("DEBUG: Routing Kind 23456 to unified handler");
|
||||
return handle_kind_23456_unified(event, error_message, error_size, wsi);
|
||||
}
|
||||
|
||||
|
||||
log_error("DEBUG: Unsupported auth event kind in process_admin_auth_event");
|
||||
|
||||
|
||||
printf(" Unsupported kind: %d\n", kind);
|
||||
snprintf(error_message, error_size, "invalid: unsupported auth event kind %d", kind);
|
||||
return -1;
|
||||
@@ -2857,118 +2833,86 @@ int handle_kind_23456_unified(cJSON* event, char* error_message, size_t error_si
|
||||
// Suppress unused parameter warning
|
||||
(void)wsi;
|
||||
if (!event) {
|
||||
log_error("DEBUG: Null event passed to handle_kind_23456_unified");
|
||||
log_error("invalid: null event");
|
||||
snprintf(error_message, error_size, "invalid: null event");
|
||||
return -1;
|
||||
}
|
||||
|
||||
log_info("DEBUG: Processing Kind 23456 event through unified handler");
|
||||
|
||||
// Check if content is encrypted (NIP-44)
|
||||
cJSON* content_obj = cJSON_GetObjectItem(event, "content");
|
||||
if (!content_obj || !cJSON_IsString(content_obj)) {
|
||||
log_error("DEBUG: Missing or invalid content in Kind 23456 event");
|
||||
log_error("invalid: missing or invalid content");
|
||||
snprintf(error_message, error_size, "invalid: missing or invalid content");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
const char* content = cJSON_GetStringValue(content_obj);
|
||||
log_info("DEBUG: Event content analysis");
|
||||
printf(" Content length: %zu\n", content ? strlen(content) : 0);
|
||||
printf(" Content preview: %.50s%s\n", content ? content : "null",
|
||||
(content && strlen(content) > 50) ? "..." : "");
|
||||
|
||||
cJSON* decrypted_content = NULL;
|
||||
|
||||
// Check if content looks like NIP-44 encrypted content (base64 string, not JSON)
|
||||
if (content && strlen(content) > 10 && content[0] != '[' && content[0] != '{') {
|
||||
log_info("DEBUG: Detected NIP-44 encrypted content, attempting decryption");
|
||||
printf(" Content appears to be base64 encrypted\n");
|
||||
|
||||
// Get relay private key for decryption
|
||||
log_info("DEBUG: Retrieving relay private key for decryption");
|
||||
char* relay_privkey = get_relay_private_key();
|
||||
if (!relay_privkey) {
|
||||
log_error("DEBUG: Relay private key not available for decryption");
|
||||
log_error("error: relay private key not available for decryption");
|
||||
snprintf(error_message, error_size, "error: relay private key not available for decryption");
|
||||
return -1;
|
||||
}
|
||||
log_info("DEBUG: Relay private key retrieved successfully");
|
||||
printf(" Relay privkey length: %zu\n", strlen(relay_privkey));
|
||||
|
||||
// Get sender's pubkey from the event for NIP-44 decryption
|
||||
cJSON* pubkey_obj = cJSON_GetObjectItem(event, "pubkey");
|
||||
if (!pubkey_obj || !cJSON_IsString(pubkey_obj)) {
|
||||
log_error("DEBUG: Missing sender pubkey in event");
|
||||
log_error("invalid: missing sender pubkey in event");
|
||||
free(relay_privkey);
|
||||
snprintf(error_message, error_size, "invalid: missing sender pubkey in event");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
const char* sender_pubkey = cJSON_GetStringValue(pubkey_obj);
|
||||
if (!sender_pubkey || strlen(sender_pubkey) != 64) {
|
||||
log_error("DEBUG: Invalid sender pubkey format");
|
||||
printf(" Sender pubkey: %s\n", sender_pubkey ? sender_pubkey : "null");
|
||||
printf(" Sender pubkey length: %zu\n", sender_pubkey ? strlen(sender_pubkey) : 0);
|
||||
log_error("invalid: invalid sender pubkey format");
|
||||
free(relay_privkey);
|
||||
snprintf(error_message, error_size, "invalid: invalid sender pubkey format");
|
||||
return -1;
|
||||
}
|
||||
|
||||
log_info("DEBUG: Sender pubkey validated");
|
||||
printf(" Sender pubkey: %.16s...\n", sender_pubkey);
|
||||
|
||||
// Convert relay private key from hex to bytes
|
||||
log_info("DEBUG: Converting relay private key from hex to bytes");
|
||||
unsigned char relay_privkey_bytes[32];
|
||||
if (nostr_hex_to_bytes(relay_privkey, relay_privkey_bytes, 32) != NOSTR_SUCCESS) {
|
||||
log_error("DEBUG: Failed to convert relay private key from hex");
|
||||
log_error("error: failed to convert relay private key");
|
||||
free(relay_privkey);
|
||||
snprintf(error_message, error_size, "error: failed to convert relay private key");
|
||||
return -1;
|
||||
}
|
||||
log_info("DEBUG: Relay private key converted successfully");
|
||||
|
||||
|
||||
// Convert sender public key from hex to bytes
|
||||
log_info("DEBUG: Converting sender public key from hex to bytes");
|
||||
unsigned char sender_pubkey_bytes[32];
|
||||
if (nostr_hex_to_bytes(sender_pubkey, sender_pubkey_bytes, 32) != NOSTR_SUCCESS) {
|
||||
log_error("DEBUG: Failed to convert sender public key from hex");
|
||||
log_error("error: failed to convert sender public key");
|
||||
free(relay_privkey);
|
||||
snprintf(error_message, error_size, "error: failed to convert sender public key");
|
||||
return -1;
|
||||
}
|
||||
log_info("DEBUG: Sender public key converted successfully");
|
||||
|
||||
|
||||
// Perform NIP-44 decryption (relay as recipient, admin as sender)
|
||||
log_info("DEBUG: Performing NIP-44 decryption");
|
||||
printf(" Encrypted content length: %zu\n", strlen(content));
|
||||
char decrypted_text[4096]; // Buffer for decrypted content
|
||||
int decrypt_result = nostr_nip44_decrypt(relay_privkey_bytes, sender_pubkey_bytes, content, decrypted_text, sizeof(decrypted_text));
|
||||
|
||||
|
||||
// Clean up private key immediately after use
|
||||
memset(relay_privkey_bytes, 0, 32);
|
||||
free(relay_privkey);
|
||||
|
||||
|
||||
if (decrypt_result != NOSTR_SUCCESS) {
|
||||
log_error("DEBUG: NIP-44 decryption failed");
|
||||
printf(" Decryption result code: %d\n", decrypt_result);
|
||||
log_error("error: NIP-44 decryption failed");
|
||||
snprintf(error_message, error_size, "error: NIP-44 decryption failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
log_info("DEBUG: NIP-44 decryption successful");
|
||||
printf(" Decrypted content: %s\n", decrypted_text);
|
||||
printf(" Decrypted length: %zu\n", strlen(decrypted_text));
|
||||
|
||||
// Check if decrypted content is a direct command array (DM control system)
|
||||
log_info("DEBUG: Checking if decrypted content is direct command array");
|
||||
cJSON* potential_command_array = cJSON_Parse(decrypted_text);
|
||||
|
||||
if (potential_command_array && cJSON_IsArray(potential_command_array)) {
|
||||
log_info("DEBUG: Detected direct command array - routing to DM admin system");
|
||||
printf(" Direct command array detected, size: %d\n", cJSON_GetArraySize(potential_command_array));
|
||||
|
||||
// Route to DM admin system
|
||||
int dm_result = process_dm_admin_command(potential_command_array, event, error_message, error_size, wsi);
|
||||
cJSON_Delete(potential_command_array);
|
||||
@@ -2977,74 +2921,51 @@ int handle_kind_23456_unified(cJSON* event, char* error_message, size_t error_si
|
||||
}
|
||||
|
||||
// If not a direct command array, try parsing as inner event JSON (NIP-17)
|
||||
log_info("DEBUG: Not a direct command array, parsing as inner event JSON");
|
||||
cJSON* inner_event = potential_command_array; // Reuse the parsed JSON
|
||||
|
||||
if (!inner_event || !cJSON_IsObject(inner_event)) {
|
||||
log_error("DEBUG: Decrypted content is not valid inner event JSON");
|
||||
printf(" Decrypted content type: %s\n",
|
||||
inner_event ? (cJSON_IsObject(inner_event) ? "object" : "other") : "null");
|
||||
log_error("error: decrypted content is not valid inner event JSON");
|
||||
cJSON_Delete(inner_event);
|
||||
snprintf(error_message, error_size, "error: decrypted content is not valid inner event JSON");
|
||||
return -1;
|
||||
}
|
||||
|
||||
log_info("DEBUG: Inner event parsed successfully");
|
||||
printf(" Inner event kind: %d\n", (int)cJSON_GetNumberValue(cJSON_GetObjectItem(inner_event, "kind")));
|
||||
|
||||
// Extract content from inner event
|
||||
cJSON* inner_content_obj = cJSON_GetObjectItem(inner_event, "content");
|
||||
if (!inner_content_obj || !cJSON_IsString(inner_content_obj)) {
|
||||
log_error("DEBUG: Inner event missing content field");
|
||||
log_error("error: inner event missing content field");
|
||||
cJSON_Delete(inner_event);
|
||||
snprintf(error_message, error_size, "error: inner event missing content field");
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char* inner_content = cJSON_GetStringValue(inner_content_obj);
|
||||
log_info("DEBUG: Extracted inner content");
|
||||
printf(" Inner content: %s\n", inner_content);
|
||||
|
||||
// Parse inner content as JSON array (the command array)
|
||||
log_info("DEBUG: Parsing inner content as command JSON array");
|
||||
decrypted_content = cJSON_Parse(inner_content);
|
||||
|
||||
if (!decrypted_content || !cJSON_IsArray(decrypted_content)) {
|
||||
log_error("DEBUG: Inner content is not valid JSON array");
|
||||
printf(" Inner content type: %s\n",
|
||||
decrypted_content ? (cJSON_IsArray(decrypted_content) ? "array" : "other") : "null");
|
||||
log_error("error: inner content is not valid JSON array");
|
||||
cJSON_Delete(inner_event);
|
||||
snprintf(error_message, error_size, "error: inner content is not valid JSON array");
|
||||
return -1;
|
||||
}
|
||||
|
||||
log_info("DEBUG: Inner content parsed successfully as JSON array");
|
||||
printf(" Array size: %d\n", cJSON_GetArraySize(decrypted_content));
|
||||
|
||||
// Clean up inner event
|
||||
cJSON_Delete(inner_event);
|
||||
|
||||
|
||||
// Replace event content with decrypted command array for processing
|
||||
log_info("DEBUG: Replacing event content with decrypted marker");
|
||||
cJSON_DeleteItemFromObject(event, "content");
|
||||
cJSON_AddStringToObject(event, "content", "decrypted");
|
||||
|
||||
// Create synthetic tags from decrypted command array
|
||||
log_info("DEBUG: Creating synthetic tags from decrypted command array");
|
||||
printf(" Decrypted content array size: %d\n", cJSON_GetArraySize(decrypted_content));
|
||||
|
||||
// Create synthetic tags from decrypted command array
|
||||
// Create new tags array with command tag first
|
||||
cJSON* new_tags = cJSON_CreateArray();
|
||||
|
||||
// Add decrypted command as first tag
|
||||
if (cJSON_GetArraySize(decrypted_content) > 0) {
|
||||
log_info("DEBUG: Adding decrypted command as synthetic tag");
|
||||
cJSON* first_item = cJSON_GetArrayItem(decrypted_content, 0);
|
||||
if (cJSON_IsString(first_item)) {
|
||||
const char* command_name = cJSON_GetStringValue(first_item);
|
||||
log_info("DEBUG: Creating command tag");
|
||||
printf(" Command: %s\n", command_name ? command_name : "null");
|
||||
|
||||
cJSON* command_tag = cJSON_CreateArray();
|
||||
cJSON_AddItemToArray(command_tag, cJSON_Duplicate(first_item, 1));
|
||||
|
||||
@@ -3052,139 +2973,91 @@ int handle_kind_23456_unified(cJSON* event, char* error_message, size_t error_si
|
||||
for (int i = 1; i < cJSON_GetArraySize(decrypted_content); i++) {
|
||||
cJSON* item = cJSON_GetArrayItem(decrypted_content, i);
|
||||
if (item) {
|
||||
if (cJSON_IsString(item)) {
|
||||
printf(" Arg %d: %s\n", i, cJSON_GetStringValue(item));
|
||||
} else {
|
||||
printf(" Arg %d: (non-string)\n", i);
|
||||
}
|
||||
cJSON_AddItemToArray(command_tag, cJSON_Duplicate(item, 1));
|
||||
}
|
||||
}
|
||||
|
||||
cJSON_AddItemToArray(new_tags, command_tag);
|
||||
log_info("DEBUG: Synthetic command tag added to new tags array");
|
||||
printf(" New tags after adding command: %d\n", cJSON_GetArraySize(new_tags));
|
||||
} else {
|
||||
log_error("DEBUG: First item in decrypted array is not a string");
|
||||
log_error("error: first item in decrypted array is not a string");
|
||||
}
|
||||
} else {
|
||||
log_error("DEBUG: Decrypted array is empty");
|
||||
}
|
||||
|
||||
// Add existing tags
|
||||
cJSON* existing_tags = cJSON_GetObjectItem(event, "tags");
|
||||
if (existing_tags && cJSON_IsArray(existing_tags)) {
|
||||
printf(" Existing tags count: %d\n", cJSON_GetArraySize(existing_tags));
|
||||
cJSON* tag = NULL;
|
||||
cJSON_ArrayForEach(tag, existing_tags) {
|
||||
cJSON_AddItemToArray(new_tags, cJSON_Duplicate(tag, 1));
|
||||
}
|
||||
printf(" New tags after adding existing: %d\n", cJSON_GetArraySize(new_tags));
|
||||
}
|
||||
|
||||
// Replace event tags with new tags
|
||||
cJSON_ReplaceItemInObject(event, "tags", new_tags);
|
||||
printf(" Final tag array size: %d\n", cJSON_GetArraySize(new_tags));
|
||||
|
||||
|
||||
cJSON_Delete(decrypted_content);
|
||||
} else {
|
||||
log_info("DEBUG: Content does not appear to be NIP-44 encrypted");
|
||||
printf(" Content starts with: %c\n", content ? content[0] : '?');
|
||||
printf(" Content length: %zu\n", content ? strlen(content) : 0);
|
||||
}
|
||||
|
||||
// Parse first tag to determine action type (now from decrypted content if applicable)
|
||||
log_info("DEBUG: Parsing first tag to determine action type");
|
||||
cJSON* tags_obj = cJSON_GetObjectItem(event, "tags");
|
||||
if (tags_obj && cJSON_IsArray(tags_obj)) {
|
||||
printf(" Tags array size: %d\n", cJSON_GetArraySize(tags_obj));
|
||||
for (int i = 0; i < cJSON_GetArraySize(tags_obj); i++) {
|
||||
cJSON* tag = cJSON_GetArrayItem(tags_obj, i);
|
||||
if (tag && cJSON_IsArray(tag) && cJSON_GetArraySize(tag) > 0) {
|
||||
cJSON* tag_name = cJSON_GetArrayItem(tag, 0);
|
||||
if (tag_name && cJSON_IsString(tag_name)) {
|
||||
printf(" Tag %d: %s\n", i, cJSON_GetStringValue(tag_name));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
printf(" No tags array found\n");
|
||||
}
|
||||
|
||||
const char* action_type = get_first_tag_name(event);
|
||||
if (!action_type) {
|
||||
log_error("DEBUG: Missing or invalid first tag after processing");
|
||||
log_error("invalid: missing or invalid first tag");
|
||||
snprintf(error_message, error_size, "invalid: missing or invalid first tag");
|
||||
return -1;
|
||||
}
|
||||
|
||||
log_info("DEBUG: Action type determined");
|
||||
printf(" Action type: %s\n", action_type);
|
||||
|
||||
// Route to appropriate handler based on action type
|
||||
log_info("DEBUG: Routing to action-specific handler");
|
||||
if (strcmp(action_type, "auth_query") == 0) {
|
||||
log_info("DEBUG: Routing to auth_query handler");
|
||||
const char* query_type = get_tag_value(event, action_type, 1);
|
||||
if (!query_type) {
|
||||
log_error("DEBUG: Missing auth_query type parameter");
|
||||
log_error("invalid: missing auth_query type");
|
||||
snprintf(error_message, error_size, "invalid: missing auth_query type");
|
||||
return -1;
|
||||
}
|
||||
printf(" Query type: %s\n", query_type);
|
||||
return handle_auth_query_unified(event, query_type, error_message, error_size, wsi);
|
||||
}
|
||||
else if (strcmp(action_type, "config_query") == 0) {
|
||||
log_info("DEBUG: Routing to config_query handler");
|
||||
const char* query_type = get_tag_value(event, action_type, 1);
|
||||
if (!query_type) {
|
||||
log_error("DEBUG: Missing config_query type parameter");
|
||||
log_error("invalid: missing config_query type");
|
||||
snprintf(error_message, error_size, "invalid: missing config_query type");
|
||||
return -1;
|
||||
}
|
||||
printf(" Query type: %s\n", query_type);
|
||||
return handle_config_query_unified(event, query_type, error_message, error_size, wsi);
|
||||
}
|
||||
else if (strcmp(action_type, "config_set") == 0) {
|
||||
log_info("DEBUG: Routing to config_set handler");
|
||||
const char* config_key = get_tag_value(event, action_type, 1);
|
||||
const char* config_value = get_tag_value(event, action_type, 2);
|
||||
if (!config_key || !config_value) {
|
||||
log_error("DEBUG: Missing config_set parameters");
|
||||
log_error("invalid: missing config_set key or value");
|
||||
snprintf(error_message, error_size, "invalid: missing config_set key or value");
|
||||
return -1;
|
||||
}
|
||||
printf(" Key: %s, Value: %s\n", config_key, config_value);
|
||||
return handle_config_set_unified(event, config_key, config_value, error_message, error_size, wsi);
|
||||
}
|
||||
else if (strcmp(action_type, "config_update") == 0) {
|
||||
log_info("DEBUG: Routing to config_update handler");
|
||||
return handle_config_update_unified(event, error_message, error_size, wsi);
|
||||
}
|
||||
else if (strcmp(action_type, "system_command") == 0) {
|
||||
log_info("DEBUG: Routing to system_command handler");
|
||||
const char* command = get_tag_value(event, action_type, 1);
|
||||
if (!command) {
|
||||
log_error("DEBUG: Missing system_command type parameter");
|
||||
log_error("invalid: missing system_command type");
|
||||
snprintf(error_message, error_size, "invalid: missing system_command type");
|
||||
return -1;
|
||||
}
|
||||
printf(" Command: %s\n", command);
|
||||
return handle_system_command_unified(event, command, error_message, error_size, wsi);
|
||||
}
|
||||
else if (strcmp(action_type, "stats_query") == 0) {
|
||||
log_info("DEBUG: Routing to stats_query handler");
|
||||
return handle_stats_query_unified(event, error_message, error_size, wsi);
|
||||
}
|
||||
else if (strcmp(action_type, "whitelist") == 0 || strcmp(action_type, "blacklist") == 0) {
|
||||
log_info("DEBUG: Routing to auth rule modification handler");
|
||||
printf(" Rule type: %s\n", action_type);
|
||||
// Handle auth rule modifications (existing logic from process_admin_auth_event)
|
||||
return handle_auth_rule_modification_unified(event, error_message, error_size, wsi);
|
||||
}
|
||||
else {
|
||||
log_error("DEBUG: Unknown Kind 23456 action type");
|
||||
printf(" Unknown action: %s\n", action_type);
|
||||
char error_msg[256];
|
||||
snprintf(error_msg, sizeof(error_msg), "invalid: unknown Kind 23456 action type '%s'", action_type);
|
||||
log_error(error_msg);
|
||||
snprintf(error_message, error_size, "invalid: unknown Kind 23456 action type '%s'", action_type);
|
||||
return -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user