From beb73a2eeacf7dbe5e292ce6e26a95a933808267 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 19 May 2026 04:13:11 +0530 Subject: 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 --- main/captive_portal.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) (limited to 'main/captive_portal.c') diff --git a/main/captive_portal.c b/main/captive_portal.c index 1a3d5ce..ea83906 100644 --- a/main/captive_portal.c +++ b/main/captive_portal.c @@ -2,6 +2,8 @@ #include "firewall.h" #include "session.h" #include "config.h" +#include "mining_payment.h" +#include "stratum_proxy.h" #include "esp_log.h" #include "esp_wifi.h" #include "cJSON.h" @@ -31,6 +33,12 @@ static const char PORTAL_HTML_TEMPLATE[] = \ "max-width:400px;width:100%;text-align:center}" "h1{font-size:28px;margin-bottom:8px;color:#f7931a}" ".subtitle{color:#888;margin-bottom:24px;font-size:14px}" +".tabs{display:flex;gap:4px;margin-bottom:20px}" +".tab{flex:1;padding:10px;border:none;border-radius:8px;background:#252525;color:#888;" +"cursor:pointer;font-size:13px;font-weight:bold}" +".tab.active{background:#f7931a;color:#000}" +".tab-content{display:none}" +".tab-content.active{display:block}" ".price{background:#252525;border-radius:12px;padding:16px;margin-bottom:16px}" ".price-amount{font-size:36px;font-weight:bold;color:#f7931a}" ".price-unit{color:#888;font-size:14px}" @@ -46,15 +54,22 @@ static const char PORTAL_HTML_TEMPLATE[] = \ "background:#1a1a1a;padding:8px;border-radius:6px;cursor:pointer}" ".mint-url:active{opacity:0.7}" ".mint-hint{color:#666;font-size:10px;margin-top:4px}" +".mining-stats{background:#252525;border-radius:12px;padding:16px;margin-bottom:16px;text-align:left}" +".mining-stat{display:flex;justify-content:space-between;margin-bottom:8px;font-size:13px}" +".mining-stat .label{color:#888}" +".mining-stat .value{color:#f7931a;font-weight:bold}" "#status{margin-top:16px;padding:12px;border-radius:8px;display:none;font-size:14px}" "#status.success{display:block;background:#1a472a;color:#4caf50}" "#status.error{display:block;background:#471a1a;color:#f44336}" "#status.processing{display:block;background:#1a3a47;color:#2196f3}" +".mining-info{color:#666;font-size:11px;margin-top:12px;line-height:1.5}" "" "" "
" "

TollGate

" -"

Pay for internet access with ecash

" +"

Pay for internet access with ecash or mining

" +"__MINING_TABS__" +"
" "
" "
__PRICE__
" "
sats per minute
" @@ -66,6 +81,18 @@ static const char PORTAL_HTML_TEMPLATE[] = \ "
__MINT_URL__
" "
Tap to copy • Mint tokens at this URL before paying
" "
" +"
" +"
" +"
" +"
Hashrate0.00 GH/s
" +"
Shares0
" +"
Hashprice0.00 sat/GH/s/day
" +"
Time earned0 min
" +"
" +"" +"
Mining earns internet time by contributing SHA256 hashpower. " +"Connect a Stratum miner to port __MINING_PORT__ or use the built-in web miner.
" +"
" "
" "
" "" ""; @@ -126,7 +179,21 @@ static esp_err_t portal_handler(httpd_req_t *req) { "__AP_IP__", s_ap_ip_str }, { "__PRICE__", price_str }, { "__MINT_URL__", cfg->mint_url }, + { "__MINING_TABS__", cfg->mining_enabled ? + "
" + "" + "" + "
" : "" }, + { "__MINING_PORT__", cfg->mining_enabled ? + (char[]){ [0 ... 7] = 0 } : "3333" }, + { "__CASHU_ACTIVE__", "active" }, + { "__MINING_ACTIVE__", "" }, }; + char mining_port_buf[8] = "3333"; + if (cfg->mining_enabled) { + snprintf(mining_port_buf, sizeof(mining_port_buf), "%d", cfg->mining_port); + subs[4].val = mining_port_buf; + } int nsubs = sizeof(subs) / sizeof(subs[0]); size_t extra = 0; -- cgit v1.2.3