fix(openwrt): close TollGate free-access gap, mint URL bug, and payout config #155
Closed
ssmithx
wants to merge 3 commits from
fix/tollgate-provisioning-gaps into main
pull from: fix/tollgate-provisioning-gaps
merge into: :main
:main
:fix/paid-content-payment-not-lost
:fix/mint-error-detail-swallowed
:investigate/framework-lnd-startup
:fix/minibits-already-redeemed
:cuprate-fixes
:feature/dojobay-app
:fix/bitcoin-core-tor-service-name
:docs/openwrt-gateway-setup
:cuprate-cpu-fix
:fix/cuprate-explicit-logging-levels
:companion/session-2026-08-31
:companion/0.5.28-deploy-handoff
:companion/0.5.28-ship
:companion/0.5.28
:app-bumps-mirror-pending
:cuprate-archyapp
:docs/todo-list
:companion/0.5.27-version-meta
:companion/0.5.27-ship
:companion/0.5.27-clipboard-qr-restart
:ux-at-last
:fix/mesh-send-content-inline-federation-fallback
:cashu-error-messages
:gsd/phase-13-aiui-functional-conversational-node-control-and-content-surf
:feat/podsteadr-app-package
:rotate-release-root
:chore/aiui-monorepo-migration
:wip/phase-13-p13-02
:wip/phase-13-p13-01
:fix/bitcoin-conf-conflict-crash-loop
:demo-build
:archy-hwconfig
:openwrt-enhancements
:a3-10-endpoint-fallback
:public-prelaunch
:release/1.7.115-prep
:fix/web-listener-ipv6
:fips-companion-5g-hardening
:fix/connection-accept-deadlock
:fix/demo-images-path-filter
:fix/companion-autologin-replay-intro
:networking-profits-dashboard
:identities-mobile-polish
:companion-qr-scan-fix
:companion-qr-pairing
:intro-reliability-video-perf
:login-bg-continuity
:audio-bottom-bar
:demo-intro-every-visit
:intro-entrance-fixes
:cloud-feedback-demo-content
:cloud-tabs-search
:ark-wallet-ui-demo
:demo-nginx-app-assets
:demo-ui-fixes
:ark-wallet-barkd
No Reviewers
Labels
Clear labels
companion-agent
queued
roadmap
waiting-external
Companion-app agent's handover list (node-side parts tracked separately)
Triaged, next in this session's queue after current release work
Feature/effort item, deliberately unscheduled — needs scoping + a slot, not a fix today
Waiting on a person outside this session (tester, operator)
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: lfg2025/archy#155
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
tollgate-module-basic-goinstaller's own default AP (wireless.default_radioN, rebranded "TollGate-") was left bound tonetwork=lan— wide open, unmetered, sharing the router's admin LAN — becauseinstall_ipk()runs the package's ownuci-defaultsscripts but nothing reconciled that AP with the separatetollgatenetwork/bridge/firewall this project's ownprovision_ssid()sets up. Fixed by folding anydefault_radioNsection still onlanonto thetollgatenetwork right after it's created.mint_urlwith a trailing slash was written byte-for-byte intoaccepted_mints[0].url, whichtollgate-wrtstring-compares exactly against a token's embedded (slash-less) mint URL — rejecting every valid token as an "untrusted mint". Fixed by trimming trailing slashes before use.tollgate_sweep.rs's automated ecash sweep has never actually worked —tollgate wallet drain cashublocks on an interactive y/N prompt that a non-PTY SSH exec can never answer (exits 0 regardless, so the failure is invisible). The obvious fix (--json, which does skip the prompt) is worse: confirmed live that on a wallet with a stale duplicate per-mint registry entry, it completes a real swap then discards the resulting token entirely when a different mint entry fails, reporting"success": falsewith no recovery path. Documented in detail so nobody wires in--jsonbefore upstream fixes the data loss./etc/tollgate/identities.json— the "owner" payout identity was whatever the router's TollGate install defaulted to (confirmed: an unmodified upstream placeholder). AddsTollGateConfig.payout_address(opt-in), merges it into theownerentry without disturbing the merchant keypair or other profit-share identities, and exposes it as a field in the OpenWrt Gateway UI's reconfigure form.All of the above (except the payout-address UI, which is type-checked/built but not yet exercised live) was found and verified live against a real GL.iNet GL-MT3000 router (archy-x250-pa3) — see commit messages for exact repro details, log excerpts, and dates.
Test plan
cargo build -p archipelago-openwrt -p archipelago— cleanvue-tsc -b && vite build(neode-ui) — clean; newpayout_addressfield confirmed present in the built bundlebr-tollgate, real Cashu payment succeeded end-to-end (Receive completed, amount=50, err=<nil>), NoDogSplash showsState: Authenticatedwith real traffic🤖 Generated with Claude Code
Closed at maintainer request pending a fresh review/requirements pass. The branch remains available for reference.
Pull request closed