mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-13 12:33:25 +02:00
Use socks5 proxy for outbound connection when available (#1226)
* Use socks5 proxy for outbound connection when available * Remove log lines in peer client for tox proxy
This commit is contained in:
parent
29e8720532
commit
8c8a039ba2
5 changed files with 23 additions and 2 deletions
|
|
@ -12,6 +12,7 @@ importlib_resources==1.4.0
|
|||
mypy-protobuf
|
||||
protobuf
|
||||
psycopg2
|
||||
PySocks
|
||||
pyzmq
|
||||
requests
|
||||
SQLAlchemy
|
||||
|
|
|
|||
1
setup.py
1
setup.py
|
|
@ -119,6 +119,7 @@ setup(
|
|||
'Flask-WTF',
|
||||
'flask-cors',
|
||||
'alembic',
|
||||
'PySocks',
|
||||
],
|
||||
extras_require={"test": ["pytest", "coverage"]},
|
||||
entry_points={
|
||||
|
|
|
|||
|
|
@ -142,6 +142,10 @@ class NodeConfig(Config):
|
|||
cast=int, required=False, default=DEFAULT_OFFER_DELETION_INTERVAL_S)
|
||||
interest_block_interval = key(
|
||||
cast=int, required=False, default=DEFAULT_INTEREST_BLOCK_INTERVAL)
|
||||
tor_proxy_ip = key(
|
||||
cast=str, required=False, default="")
|
||||
tor_proxy_port = key(
|
||||
cast=int, required=False, default=0)
|
||||
|
||||
|
||||
@section('db')
|
||||
|
|
|
|||
|
|
@ -54,6 +54,8 @@ class NetworkManager(object):
|
|||
self.local_port = self.config.server.rpc_port or squeak.params.params.DEFAULT_PORT
|
||||
self.peer_server = None
|
||||
self.peer_client = None
|
||||
self.tor_proxy_ip = self.config.node.tor_proxy_ip
|
||||
self.tor_proxy_port = self.config.node.tor_proxy_port
|
||||
self.connection_manager = ConnectionManager()
|
||||
|
||||
def start(self, squeak_controller):
|
||||
|
|
@ -67,6 +69,8 @@ class NetworkManager(object):
|
|||
)
|
||||
self.peer_client = PeerClient(
|
||||
peer_handler,
|
||||
self.tor_proxy_ip,
|
||||
self.tor_proxy_port,
|
||||
)
|
||||
self.peer_server.start()
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@ import logging
|
|||
import socket
|
||||
import threading
|
||||
|
||||
import socks
|
||||
|
||||
from squeaknode.core.peer_address import PeerAddress
|
||||
|
||||
|
||||
|
|
@ -36,13 +38,15 @@ class PeerClient(object):
|
|||
"""Creates outgoing connections to other peers in the network.
|
||||
"""
|
||||
|
||||
def __init__(self, peer_handler):
|
||||
def __init__(self, peer_handler, tor_proxy_ip, tor_proxy_port):
|
||||
self.peer_handler = peer_handler
|
||||
self.tor_proxy_ip = tor_proxy_ip
|
||||
self.tor_proxy_port = tor_proxy_port
|
||||
|
||||
def make_connection(self, address: PeerAddress):
|
||||
logger.info('Making connection to {}'.format(address))
|
||||
try:
|
||||
peer_socket = socket.socket()
|
||||
peer_socket = self.get_socket()
|
||||
logger.info('Trying to connect socket to {}'.format(address))
|
||||
peer_socket.settimeout(SOCKET_CONNECT_TIMEOUT)
|
||||
peer_socket.connect(address)
|
||||
|
|
@ -60,3 +64,10 @@ class PeerClient(object):
|
|||
args=(address,),
|
||||
name="peer_client_connection_thread",
|
||||
).start()
|
||||
|
||||
def get_socket(self):
|
||||
if self.tor_proxy_ip:
|
||||
s = socks.socksocket() # Same API as socket.socket in the standard lib
|
||||
s.set_proxy(socks.SOCKS5, self.tor_proxy_ip, self.tor_proxy_port)
|
||||
return s
|
||||
return socket.socket()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue