1
0

Make proxies work

This commit is contained in:
Johann Bauer
2017-02-25 13:36:24 +01:00
committed by ThomasV
parent d4d93b3928
commit 8e54d5c4d4
4 changed files with 12 additions and 9 deletions

View File

@@ -40,7 +40,7 @@ import threading
import socket
import json
from . import socks
import socks
from . import util
from . import bitcoin
from .bitcoin import *
@@ -443,13 +443,16 @@ class Network(util.DaemonThread):
# socks.py seems to want either None or a non-empty string
username=(proxy.get("user", "") or None),
password=(proxy.get("password", "") or None))
# Store these somewhere so we can un-monkey-patch
if not hasattr(socket, "_socketobject"):
socket._socketobject = socket.socket
socket._getaddrinfo = socket.getaddrinfo
socket.socket = socks.socksocket
# prevent dns leaks, see http://stackoverflow.com/questions/13184205/dns-over-proxy
socket.getaddrinfo = lambda *args: [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
else:
if six.PY2:
socket.socket = socket._socketobject
socket.getaddrinfo = socket._socket.getaddrinfo
socket.socket = socket._socketobject
socket.getaddrinfo = socket._getaddrinfo
def start_network(self, protocol, proxy):
assert not self.interface and not self.interfaces