def load_from_tor_stem(cls, stem_controller: Controller): bridges: List[str] = [] if stem_controller.get_conf("UseBridges") != "0": bridges = stem_controller.get_conf("Bridge", multiple=True) for proxy_type in PROXY_TYPES: val = stem_controller.get_conf(proxy_type) if val is not None: auth = [ stem_controller.get_conf(opt) for opt in PROXY_AUTH_OPTIONS[proxy_type] ] proxy = TorConnectionProxy.from_tor_value(proxy_type, val, auth_values=auth) break else: proxy = TorConnectionProxy.noproxy() config = cls(bridges=bridges, proxy=proxy) return config
def peer_tunnel(tor_controller: Controller, peer): socks_port = tor_controller.get_conf('SocksPort') class Connected: connected = False send_buffer = [] rec_buffer = [] rec_address = None yam.client(1, peer, socks_port, send_buffer, rec_buffer, Connected) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: ip = '127.0.0.1' s.bind((ip, 0)) s.listen(1) port = s.getsockname()[1] serv = tor_controller.create_ephemeral_hidden_service( {1337: '127.0.0.1:' + str(port)}, key_content='ED25519-V3', await_publication=True, ) rec_address = serv.service_id conn, addr = s.accept() yam.server(1, tor_controller, conn, send_buffer, rec_buffer, Connected)