mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-03-23 04:05:15 +00:00
help the queen have a persistent PBURL, have the client connect to it
This commit is contained in:
parent
f2fbf688b0
commit
f3c0856dc7
@ -3,12 +3,15 @@ from foolscap import Tub, Referenceable
|
||||
from twisted.application import service
|
||||
from twisted.python import log
|
||||
import os.path
|
||||
from allmydata.util.iputil import get_local_ip_for
|
||||
|
||||
class Roster(service.MultiService, Referenceable):
|
||||
pass
|
||||
def remote_hello(self, urls):
|
||||
print "contact from %s" % urls
|
||||
|
||||
class Queen(service.MultiService):
|
||||
CERTFILE = "queen.pem"
|
||||
PORTNUMFILE = "queen.port"
|
||||
|
||||
def __init__(self):
|
||||
service.MultiService.__init__(self)
|
||||
@ -19,12 +22,40 @@ class Queen(service.MultiService):
|
||||
f = open(self.CERTFILE, "wb")
|
||||
f.write(self.tub.getCertData())
|
||||
f.close()
|
||||
portnum = 0
|
||||
if os.path.exists(self.PORTNUMFILE):
|
||||
portnum = int(open(self.PORTNUMFILE, "r").read())
|
||||
self.tub.listenOn("tcp:%d" % portnum)
|
||||
# we must wait until our service has started before we can find out
|
||||
# our IP address and thus do tub.setLocation, and we can't register
|
||||
# any services with the Tub until after that point
|
||||
self.tub.setServiceParent(self)
|
||||
self.urls = {}
|
||||
|
||||
def _setup_tub(self, local_ip):
|
||||
l = self.tub.getListeners()[0]
|
||||
portnum = l.getPortnum()
|
||||
self.tub.setLocation("%s:%d" % (local_ip, portnum))
|
||||
if not os.path.exists(self.PORTNUMFILE):
|
||||
# record which port we're listening on, so we can grab the same
|
||||
# one next time
|
||||
f = open(self.PORTNUMFILE, "w")
|
||||
f.write("%d\n" % portnum)
|
||||
f.close()
|
||||
self.tub.setLocation("%s:%d" % (local_ip, l.getPortnum()))
|
||||
return local_ip
|
||||
|
||||
def _setup_services(self, local_ip):
|
||||
r = Roster()
|
||||
r.setServiceParent(self)
|
||||
#self.urls["roster"] = self.tub.registerReference(r, "roster")
|
||||
self.urls["roster"] = self.tub.registerReference(r, "roster")
|
||||
log.msg(" roster is at %s" % self.urls["roster"])
|
||||
|
||||
def startService(self):
|
||||
# note: this class can only be started and stopped once.
|
||||
service.MultiService.startService(self)
|
||||
log.msg("queen running")
|
||||
#log.msg(" roster is at %s" % self.urls["roster"])
|
||||
d = get_local_ip_for()
|
||||
d.addCallback(self._setup_tub)
|
||||
d.addCallback(self._setup_services)
|
||||
|
||||
|
@ -7,7 +7,7 @@ from twisted.internet.protocol import DatagramProtocol
|
||||
#from twisted.internet.interfaces import IReactorMulticast
|
||||
#from amdlib.util.nattraverso.utils import is_rfc1918_ip, is_bogus_ip
|
||||
|
||||
def get_local_ip_for(target):
|
||||
def get_local_ip_for(target='A.ROOT-SERVERS.NET'):
|
||||
"""Find out what our IP address is for use by a given target.
|
||||
|
||||
Returns a Deferred which will be fired with a string that holds the IP
|
||||
|
@ -4,7 +4,7 @@ from allmydata import client
|
||||
from twisted.application import service
|
||||
|
||||
queen_host = "yumyum"
|
||||
queen_pburl = ""
|
||||
queen_pburl = "pb://jekyv6ghn7zinppk7wcvfmk7o4gw76hb@192.168.1.101:42552/roster"
|
||||
c = client.Client(queen_host, queen_pburl)
|
||||
|
||||
application = service.Application("allmydata_client")
|
||||
|
Loading…
x
Reference in New Issue
Block a user