Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions plugins/AnnounceZero/AnnounceZeroPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from Peer import Peer
from util import helper
from Crypt import CryptRsa
from Config import config

allow_reload = False # No source reload supported in this plugin
time_full_announced = {} # Tracker address: Last announced all site to tracker
Expand Down Expand Up @@ -48,6 +49,12 @@ def announceTracker(self, tracker_protocol, tracker_address, fileserver_port=0,
need_types = ["ip4"]
if self.connection_server and self.connection_server.tor_manager and self.connection_server.tor_manager.enabled:
need_types.append("onion")
if config.onion_only:
need_types = ["onion"]
else:
need_types = ["ip4"]
if self.connection_server and self.connection_server.tor_manager and self.connection_server.tor_manager.enabled:
need_types.append("onion")

if mode == "start" or mode == "more": # Single: Announce only this site
sites = [self]
Expand Down
5 changes: 4 additions & 1 deletion src/Config.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,10 @@ def createArguments(self):
self.parser.add_argument('--tor', help='enable: Use only for Tor peers, always: Use Tor for every connection', choices=["disable", "enable", "always"], default='enable')
self.parser.add_argument('--tor_controller', help='Tor controller address', metavar='ip:port', default='127.0.0.1:9051')
self.parser.add_argument('--tor_proxy', help='Tor proxy address', metavar='ip:port', default='127.0.0.1:9050')

self.parser.add_argument("--onion_only", help='Discriminates against ipv4 peers and trackers.',
type='bool', choices=[True, False], default=False)
self.parser.add_argument("--pex_only", help='Discriminates against non-zeronet peers and trackers.',
type='bool', choices=[True, False], default=False)
self.parser.add_argument('--version', action='version', version='ZeroNet %s r%s' % (self.version, self.rev))

return self.parser
Expand Down
9 changes: 5 additions & 4 deletions src/Peer/Peer.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,10 +245,11 @@ def pex(self, site=None, need_num=5):
if site.addPeer(*address):
added += 1
# Onion
for peer in res.get("peers_onion", []):
address = helper.unpackOnionAddress(peer)
if site.addPeer(*address):
added += 1
if not config.onion_only:
for peer in res.get("peers_onion", []):
address = helper.unpackOnionAddress(peer)
if site.addPeer(*address):
added += 1

if added:
self.log("Added peers using pex: %s" % added)
Expand Down
6 changes: 5 additions & 1 deletion src/Site/Site.py
Original file line number Diff line number Diff line change
Expand Up @@ -701,6 +701,10 @@ def announce(self, force=False, mode="start", pex=True):
trackers = [tracker for tracker in trackers if not tracker.startswith("udp://")]
if self.connection_server and not self.connection_server.tor_manager.enabled:
trackers = [tracker for tracker in trackers if ".onion" not in tracker]
if config.onion_only:
trackers = [tracker for tracker in trackers if ".onion" in tracker]
if config.pex_only:
trackers = [tracker for tracker in trackers if tracker.startswith("zero://")]

if mode == "update" or mode == "more": # Only announce on one tracker, increment the queried tracker id
self.last_tracker_id += 1
Expand All @@ -714,7 +718,7 @@ def announce(self, force=False, mode="start", pex=True):
my_peer_id = self.connection_server.peer_id

# Type of addresses they can reach me
if self.connection_server.port_opened:
if self.connection_server.port_opened and not config.onion_only:
add_types.append("ip4")
if self.connection_server.tor_manager.enabled and self.connection_server.tor_manager.start_onions:
add_types.append("onion")
Expand Down