def makeService(self, options): """ Construct a dispersy service. """ tracker_service = MultiService() tracker_service.setName("Bartercast Crawler") # crypto if options["crypto"] == 'NoCrypto': crypto = NoCrypto() else: crypto = NoVerifyCrypto() container = [None] manhole_namespace = {} if options["manhole"]: port = options["manhole"] manhole = manhole_tap.makeService({ 'namespace': manhole_namespace, 'telnetPort': 'tcp:%d:interface=127.0.0.1' % port, 'sshPort': None, 'passwd': os.path.join(os.path.dirname(__file__), 'passwd'), }) tracker_service.addService(manhole) manhole.startService() def run(): # setup dispersy = BartercastCrawler( StandaloneEndpoint(options["port"], options["ip"]), unicode(options["statedir"]), bool(options["silent"]), crypto) container[0] = dispersy manhole_namespace['dispersy'] = dispersy self._stopping = False def signal_handler(sig, frame): msg("Received signal '%s' in %s (shutting down)" % (sig, frame)) if not self._stopping: self._stopping = True dispersy.stop().addCallback(lambda _: reactor.stop) signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) # start print "starting dispersy" if not dispersy.start(): raise RuntimeError("Unable to start Dispersy") # wait forever reactor.exitCode = 0 reactor.callWhenRunning(run) # TODO: exit code return tracker_service
def initializeCrypto(self): try: from Tribler.dispersy.crypto import ECCrypto, NoCrypto except: from dispersy.crypto import ECCrypto, NoCrypto if environ.get('TRACKER_CRYPTO', 'ECCrypto') == 'ECCrypto': self._logger.debug('Turning on ECCrypto') return ECCrypto() self._logger.debug('Turning off Crypto') return NoCrypto()
def load_community(session): keypair = dispersy.crypto.generate_key(u"curve25519") dispersy_member = dispersy.get_member( private_key=dispersy.crypto.key_to_bin(keypair)) settings = TunnelSettings(tribler_session=session) if not crypto_enabled: settings.crypto = NoCrypto() settings.become_exitnode = become_exit_node return dispersy.define_auto_load(HiddenTunnelCommunity, dispersy_member, (session, settings), load=True)[0]
def load_tunnel_community_in_session(self, session, exitnode=False): """ Load the tunnel community in a given session. We are using our own tunnel community here instead of the one used in Tribler. """ dispersy = session.get_dispersy_instance() keypair = dispersy.crypto.generate_key(u"curve25519") dispersy_member = dispersy.get_member(private_key=dispersy.crypto.key_to_bin(keypair)) settings = TunnelSettings(tribler_session=session) if not self.crypto_enabled: settings.crypto = NoCrypto() settings.become_exitnode = exitnode return dispersy.define_auto_load(HiddenTunnelCommunityTests, dispersy_member, (session, settings), load=True)[0]