def startService(self): service.MultiService.startService(self) certFile = os.path.join(self.basedir, "gatherer.pem") self._tub = Tub(certFile=certFile) self._tub.setServiceParent(self) local_addresses = ["127.0.0.1"] local_address = get_local_ip_for() if self.use_local_addresses and local_address: local_addresses.insert(0, local_address) portnumfile = os.path.join(self.basedir, "portnum") try: desired_portnum = int(open(portnumfile, "r").read()) except (EnvironmentError, ValueError): desired_portnum = 0 l = self._tub.listenOn("tcp:%d" % desired_portnum) got_portnum = l.getPortnum() f = open(portnumfile, "w") f.write("%d\n" % got_portnum) f.close() # we can't do setLocation until we have two things: # portnum: this requires listenOn, if portnum=0 also startService # localip: this just requires a call to get_local_ip_for # so it is safe to do everything in startService, after the upcall local_addresses = [ "%s:%d" % (addr, got_portnum,) for addr in local_addresses ] assert len(local_addresses) >= 1 location = ",".join(local_addresses) self._tub.setLocation(location) self.tub_ready()
def startService(self): service.MultiService.startService(self) certFile = os.path.join(self.basedir, "gatherer.pem") self._tub = self.tub_class(certFile=certFile) self._tub.setServiceParent(self) local_addresses = ["127.0.0.1"] local_address = get_local_ip_for() if self.use_local_addresses and local_address: local_addresses.insert(0, local_address) portnumfile = os.path.join(self.basedir, "portnum") try: desired_portnum = int(open(portnumfile, "r").read()) except (EnvironmentError, ValueError): desired_portnum = 0 l = self._tub.listenOn("tcp:%d" % desired_portnum) got_portnum = l.getPortnum() open(portnumfile, "w").write("%d\n" % got_portnum) # we can't do setLocation until we have two things: # portnum: this requires listenOn, if portnum=0 also startService # localip: this just requires a call to get_local_ip_for # so it is safe to do everything in startService, after the upcall local_addresses = ["%s:%d" % (addr, got_portnum) for addr in local_addresses] assert len(local_addresses) >= 1 location = ",".join(local_addresses) self._tub.setLocation(location) self.tub_ready()
def _reactor_running(res): assert self.running # we can't use get_local_ip_for until the reactor is running return util.get_local_ip_for()