feat: tor managed services support #1819
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces support for Tor-managed hidden services, providing a more secure and simplified way to run persistent onion services without requiring Tor control port access.
Changes
Core Implementation
Modified
JMHiddenServiceclass insrc/jmbase/twisted_utils.py:tor-managed:prefixed hidden service directoriesstart_tor_managed_onion()method that polls for hostname file creationcreate_filesystem_onion_ep()for better code organizationDaemon Integration
Updated
OnionMessageChannelinsrc/jmdaemon/onionmc.py:_start_listener()method for cleaner listener setupTesting
Added comprehensive test coverage:
test/jmbase/test_twisted_utils.py: Tests for hidden service mode detection and ephemeral service creationtest/jmdaemon/test_onionmc.py: Tests for listener setup and different host/port configurationsBenefits
Usage
To use Tor-managed hidden services, configure your
joinmarket.cfg:The corresponding torrc entry would be:
The code automatically detects the
tor-managed:prefix and switches to managed mode, polling for the hostname file that Tor creates.