upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/main/config.c
diff options
context:
space:
mode:
authorYour Name <you@example.com>2026-05-19 04:13:11 +0530
committerYour Name <you@example.com>2026-05-19 04:13:11 +0530
commitbeb73a2eeacf7dbe5e292ce6e26a95a933808267 (patch)
tree3a9b711e1475c09ed544b96358587df3e5362555 /main/config.c
parentc75230e551a778408b2e370b208aff76b74c6560 (diff)
feat(mining): integrate mining subsystem into existing modules
- CMakeLists.txt: add 6 mining sources + tcp_transport dependency - config.h/c: mining_payout_mode_t enum, mining config fields, JSON parsing - tollgate_main.c: mining init in start_services(), stratum_client_tick in main loop - tollgate_api.c: GET /mining/job, POST /mining/share, GET /mining/stats endpoints - session.h/c: payment_method_t enum (CASHU/MINING/BYTES) - firewall.h/c: sandbox allowlist for mining port + mint URLs - tollgate_client.h/c: TG_CLIENT_MINING state, mining discovery tag parsing - captive_portal.c: tabbed UI with Cashu/Mine tabs, live hashrate polling
Diffstat (limited to 'main/config.c')
-rw-r--r--main/config.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/main/config.c b/main/config.c
index b991991..e27a39b 100644
--- a/main/config.c
+++ b/main/config.c
@@ -37,6 +37,11 @@ esp_err_t tollgate_config_init(void)
37 strncpy(g_config.cvm_relays, "wss://relay.primal.net", sizeof(g_config.cvm_relays) - 1); 37 strncpy(g_config.cvm_relays, "wss://relay.primal.net", sizeof(g_config.cvm_relays) - 1);
38 g_config.nostr_sync_interval_s = 1800; 38 g_config.nostr_sync_interval_s = 1800;
39 g_config.nostr_fallback_sync_interval_s = 21600; 39 g_config.nostr_fallback_sync_interval_s = 21600;
40 g_config.mining_enabled = false;
41 g_config.mining_payout_mode = MINING_PAYOUT_AUTO;
42 g_config.stratum_port = 3333;
43 g_config.mining_port = 3334;
44 g_config.mining_sandbox_mint_access = true;
40 45
41 esp_vfs_spiffs_conf_t conf = { 46 esp_vfs_spiffs_conf_t conf = {
42 .base_path = "/spiffs", 47 .base_path = "/spiffs",
@@ -279,6 +284,46 @@ esp_err_t tollgate_config_init(void)
279 cJSON *fallback_interval = cJSON_GetObjectItem(root, "nostr_fallback_sync_interval_s"); 284 cJSON *fallback_interval = cJSON_GetObjectItem(root, "nostr_fallback_sync_interval_s");
280 if (fallback_interval) g_config.nostr_fallback_sync_interval_s = fallback_interval->valueint; 285 if (fallback_interval) g_config.nostr_fallback_sync_interval_s = fallback_interval->valueint;
281 286
287 cJSON *mining = cJSON_GetObjectItem(root, "mining");
288 if (mining && cJSON_IsObject(mining)) {
289 cJSON *m_en = cJSON_GetObjectItem(mining, "enabled");
290 if (m_en && cJSON_IsBool(m_en)) g_config.mining_enabled = cJSON_IsTrue(m_en);
291
292 cJSON *m_mode = cJSON_GetObjectItem(mining, "payout_mode");
293 if (m_mode && cJSON_IsString(m_mode)) {
294 if (strcmp(m_mode->valuestring, "pool") == 0) g_config.mining_payout_mode = MINING_PAYOUT_POOL;
295 else if (strcmp(m_mode->valuestring, "upstream") == 0) g_config.mining_payout_mode = MINING_PAYOUT_UPSTREAM;
296 else if (strcmp(m_mode->valuestring, "proxy_only") == 0) g_config.mining_payout_mode = MINING_PAYOUT_PROXY_ONLY;
297 }
298
299 cJSON *m_host = cJSON_GetObjectItem(mining, "stratum_host");
300 if (m_host && cJSON_IsString(m_host)) strncpy(g_config.stratum_host, m_host->valuestring, sizeof(g_config.stratum_host) - 1);
301
302 cJSON *m_port = cJSON_GetObjectItem(mining, "stratum_port");
303 if (m_port) g_config.stratum_port = (uint16_t)m_port->valueint;
304
305 cJSON *m_user = cJSON_GetObjectItem(mining, "stratum_user");
306 if (m_user && cJSON_IsString(m_user)) strncpy(g_config.stratum_user, m_user->valuestring, sizeof(g_config.stratum_user) - 1);
307
308 cJSON *m_pass = cJSON_GetObjectItem(mining, "stratum_pass");
309 if (m_pass && cJSON_IsString(m_pass)) strncpy(g_config.stratum_pass, m_pass->valuestring, sizeof(g_config.stratum_pass) - 1);
310
311 cJSON *m_fb_host = cJSON_GetObjectItem(mining, "stratum_fallback_host");
312 if (m_fb_host && cJSON_IsString(m_fb_host)) strncpy(g_config.stratum_fallback_host, m_fb_host->valuestring, sizeof(g_config.stratum_fallback_host) - 1);
313
314 cJSON *m_fb_port = cJSON_GetObjectItem(mining, "stratum_fallback_port");
315 if (m_fb_port) g_config.stratum_fallback_port = (uint16_t)m_fb_port->valueint;
316
317 cJSON *m_mport = cJSON_GetObjectItem(mining, "mining_port");
318 if (m_mport) g_config.mining_port = (uint16_t)m_mport->valueint;
319
320 cJSON *m_hp = cJSON_GetObjectItem(mining, "hashprice_sats_per_ghs_day");
321 if (m_hp) g_config.hashprice_sats_per_ghs_day = (uint64_t)m_hp->valuedouble;
322
323 cJSON *m_sandbox = cJSON_GetObjectItem(mining, "sandbox_mint_access");
324 if (m_sandbox && cJSON_IsBool(m_sandbox)) g_config.mining_sandbox_mint_access = cJSON_IsTrue(m_sandbox);
325 }
326
282 cJSON_Delete(root); 327 cJSON_Delete(root);
283 328
284 if (g_config.payout.recipient_count == 0) { 329 if (g_config.payout.recipient_count == 0) {