fix(tor): resolve app ports dynamically + auto-create hidden service on install
'Add Service' only worked for the 19 apps in the hardcoded known_service_port map — everything else failed with 'Unknown app'. tor.create-service and tor.toggle-app now fall back to the app's live launch address from the scanner state, so any manifest-driven app gets a .onion without a per-app entry (the static map still wins for protocol services like bitcoin, which must expose 8333, not a UI port). toggle-app also no longer writes a broken port-0 HiddenServicePort for unknown apps. Every successful package.install now auto-creates the app's hidden service (detached, best-effort, retries while the scanner derives the port; skips protocol services and existing entries). The demo mock gains stateful tor.create-service/tor.delete-service so the demo round-trips instead of erroring. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
5d4d40e9e8
commit
0f5ea9ae15
@@ -110,6 +110,14 @@ impl RpcHandler {
|
||||
)
|
||||
.await;
|
||||
handler.clear_install_progress(&package_id_spawn).await;
|
||||
// Auto-expose the app over Tor (best-effort, detached) —
|
||||
// every installed app gets its .onion without a manual
|
||||
// "Add Service" step.
|
||||
let tor_handler = Arc::clone(&handler);
|
||||
let tor_app = package_id_spawn.clone();
|
||||
tokio::spawn(async move {
|
||||
tor_handler.auto_add_tor_service(&tor_app).await;
|
||||
});
|
||||
}
|
||||
Err(e) => {
|
||||
error!("package.install {} failed: {:#}", package_id_spawn, e);
|
||||
|
||||
Reference in New Issue
Block a user