Loading onbrisca/bridge_torcontrol.py +25 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import asyncio import functools import logging import time import stem from stem.control import EventType Loading Loading @@ -40,9 +41,31 @@ class BridgeTorControl(TorControl): bridgelines = Bridge.objects.bridgelines_from_bridges(bridges) # Obtain first the bridges already set to do not set duplicated bridges tor_bridgelines = self.controller.get_conf("Bridge", multiple=True) logger.debug("tor has %s bridgelines", len(tor_bridgelines)) new_bridgelines = set(bridgelines).difference(set(tor_bridgelines)) if new_bridgelines: self.controller.set_conf("Bridge", new_bridgelines) valid_bridgelines = [] # Set bridges one by one so that if a line can not be parsed, it is # ignored and the rest can be set. for new_bridgeline in new_bridgelines: try: self.controller.set_conf("Bridge", new_bridgeline) except stem.InvalidRequest as e: logger.warning( "Ignoring invalid bridge line %s: %s", new_bridgeline, e ) except Exception as e: logger.exception( "Exception adding bridgeline %s: %s", new_bridgeline, e ) else: valid_bridgelines.append(new_bridgeline) # Sleep because otherwise tor's socket get closed setting many # bridges in a row. time.sleep(0.1) # Now set all the valid bridgelines logger.debug("Setting %s bridgelines.", len(valid_bridgelines)) if valid_bridgelines: self.controller.set_conf("Bridge", valid_bridgelines) self.controller.set_conf("UseBridges", "1") async def afetch_http_head(self, path, http_client, url): Loading Loading
onbrisca/bridge_torcontrol.py +25 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import asyncio import functools import logging import time import stem from stem.control import EventType Loading Loading @@ -40,9 +41,31 @@ class BridgeTorControl(TorControl): bridgelines = Bridge.objects.bridgelines_from_bridges(bridges) # Obtain first the bridges already set to do not set duplicated bridges tor_bridgelines = self.controller.get_conf("Bridge", multiple=True) logger.debug("tor has %s bridgelines", len(tor_bridgelines)) new_bridgelines = set(bridgelines).difference(set(tor_bridgelines)) if new_bridgelines: self.controller.set_conf("Bridge", new_bridgelines) valid_bridgelines = [] # Set bridges one by one so that if a line can not be parsed, it is # ignored and the rest can be set. for new_bridgeline in new_bridgelines: try: self.controller.set_conf("Bridge", new_bridgeline) except stem.InvalidRequest as e: logger.warning( "Ignoring invalid bridge line %s: %s", new_bridgeline, e ) except Exception as e: logger.exception( "Exception adding bridgeline %s: %s", new_bridgeline, e ) else: valid_bridgelines.append(new_bridgeline) # Sleep because otherwise tor's socket get closed setting many # bridges in a row. time.sleep(0.1) # Now set all the valid bridgelines logger.debug("Setting %s bridgelines.", len(valid_bridgelines)) if valid_bridgelines: self.controller.set_conf("Bridge", valid_bridgelines) self.controller.set_conf("UseBridges", "1") async def afetch_http_head(self, path, http_client, url): Loading