Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.tor_state.set_attacher(None, reactor)
class DummyResource(Resource):
isLeaf = True
def render_GET(self, request):
size = request.uri.split('/')[-1]
if 'k' in size:
size = int(size[:-1])*(2**10)
elif 'M' in size:
size = int(size[:-1])*(2**20)
# FIXME: to simplify test, return always same data no matter what the size is
return 'a'
return 'a'*size
self.port = yield available_tcp_port(reactor)
self.test_service = yield reactor.listenTCP(
self.port, Site(DummyResource()))
def test_onion_datagram_proxy():
received_buffer = []
received_d = defer.Deferred()
def received(data):
received_buffer.append(data)
received_d.callback(None)
received_size = 10
proxy_factory = OnionDatagramProxyFactory(received)
protocol = proxy_factory.buildProtocol(123)
packet = b"A" * received_size
protocol.stringReceived(packet)
assert received_buffer[0] == packet
service_port = yield txtorcon.util.available_tcp_port(reactor)
service_endpoint_desc = "tcp:interface=127.0.0.1:%s" % service_port
service_endpoint = endpoints.serverFromString(reactor, service_endpoint_desc)
yield service_endpoint.listen(proxy_factory)
client_endpoint_desc = "tcp:127.0.0.1:%s" % service_port
client_endpoint = endpoints.clientFromString(reactor, client_endpoint_desc)
client_protocol = Int32StringReceiver()
yield endpoints.connectProtocol(client_endpoint, client_protocol)
client_protocol.sendString(packet)
print "BEFORE CLOSE"
client_protocol.transport.loseConnection()
yield received_d
assert received_buffer[0] == packet
try:
socks_port = config.SocksPort
except KeyError:
socks_port = None
if non_anonymous_mode:
if socks_port is not None:
raise ValueError(
"Cannot use SOCKS options with non_anonymous_mode=True"
)
config.HiddenServiceNonAnonymousMode = 1
config.HiddenServiceSingleHopMode = 1
config.SOCKSPort = 0
else:
if socks_port is None:
socks_port = yield available_tcp_port(reactor)
config.SOCKSPort = socks_port
try:
our_user = user or config.User
except KeyError:
pass
else:
# if we're root, make sure the directory is owned by the User
# that Tor is configured to drop to
if sys.platform in ('linux', 'linux2', 'darwin') and os.geteuid() == 0:
os.chown(data_directory, pwd.getpwnam(our_user).pw_uid, -1)
# user can pass in a control port, or we set one up here
if control_port is None:
# on posix-y systems, we can use a unix-socket
if sys.platform in ('linux', 'linux2', 'darwin'):
d2.addCallback(lambda _: txtorcon.util.available_tcp_port(reactor))
d2.addCallback(set_control_port)
def get_random_tor_ports():
d2 = txtorcon.util.available_tcp_port(reactor)
d2.addCallback(lambda port: config.__setattr__('SocksPort', port))
d2.addCallback(lambda _: txtorcon.util.available_tcp_port(reactor))
d2.addCallback(lambda port: config.__setattr__('ControlPort', port))
return d2
def get_random_tor_ports():
def set_socks_port(port):
config.SocksPort = port
def set_control_port(port):
config.ControlPort = port
d2 = txtorcon.util.available_tcp_port(reactor)
d2.addCallback(set_socks_port)
d2.addCallback(lambda _: txtorcon.util.available_tcp_port(reactor))
d2.addCallback(set_control_port)
return d2
d2.addCallback(lambda _: txtorcon.util.available_tcp_port(reactor))
d2.addCallback(lambda port: config.__setattr__('ControlPort', port))
@defer.inlineCallbacks
def main(reactor):
ep = TCP4ClientEndpoint(reactor, "localhost", 9251)
tor_protocol = yield txtorcon.build_tor_connection(ep, build_state=False)
print "Connected to Tor"
hs_public_port = 80
hs_port = yield txtorcon.util.available_tcp_port(reactor)
hs_string = '%s 127.0.0.1:%d' % (hs_public_port, hs_port)
print "Adding ephemeral service", hs_string
print "(this can take some time; please be patient)"
hs = txtorcon.EphemeralHiddenService([hs_string])
yield hs.add_to_tor(tor_protocol)
print "Added ephemeral HS to Tor:", hs.hostname
print "Starting site"
site = server.Site(Simple())
hs_endpoint = TCP4ServerEndpoint(reactor, hs_port, interface='127.0.0.1')
yield hs_endpoint.listen(site)
# in 5 seconds, remove the hidden service -- obviously this is
# where you'd do your "real work" or whatever.
d = defer.Deferred()