X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/8362ac1c9b2fbf253b06a50639c57047d43a8fa2..d3a17033e6285dfb9a7c626ec2e9403b6e1d5034:/svc/connect.in diff --git a/svc/connect.in b/svc/connect.in index fe8d73b9..25c80b0f 100644 --- a/svc/connect.in +++ b/svc/connect.in @@ -526,7 +526,7 @@ class PingPeer (object): 'min-ping': '%.1fms' % me._min, 'max-ping': '%.1fms' % me._max, 'state': me._timer and 'idle' or 'check', - 'failures': me._failures } + 'failures': str(me._failures) } @T._callback def _time(me): @@ -717,11 +717,12 @@ def disownpeer(peer): T.Coroutine(run_ifupdown, name = 'ifdown %s' % peer.name) \ .switch('ifdown', peer) -def addpeer(peer, addr): +def addpeer(peer, addr, ephemp): """ Process a connect request from a new peer PEER on address ADDR. - Any existing peer with this name is disconnected from the server. + Any existing peer with this name is disconnected from the server. EPHEMP + is the default ephemeral-ness state for the new peer. """ if peer.name in S.list(): S.kill(peer.name) @@ -734,6 +735,8 @@ def addpeer(peer, addr): mobile = peer.get('mobile', filter = boolean, default = False), knock = peer.get('knock', default = None), cork = peer.get('cork', filter = boolean, default = False), + ephemeral = peer.get('ephemeral', filter = boolean, + default = ephemp), *addr) except T.TripeError, exc: raise T.TripeJobError(*exc.args) @@ -778,7 +781,7 @@ def notify(_, code, *rest): S.warn(['connect', 'knock-tag-mismatch', 'peer', pname, 'public-key-tag', ktag]) return - T.spawn(addpeer, p, rest[1:]) + T.spawn(addpeer, p, rest[1:], True) ###-------------------------------------------------------------------------- ### Command implementation. @@ -813,7 +816,7 @@ def cmd_active(name): addr = peer.get('peer') if addr == 'PASSIVE': raise T.TripeJobError('passive-peer', name) - addpeer(peer, M.split(addr, quotep = True)[0]) + addpeer(peer, M.split(addr, quotep = True)[0], True) def cmd_listactive(): """ @@ -839,7 +842,7 @@ def cmd_info(name): for i in items: try: v = d[i] except KeyError: v = peer.get(i) - T.svcinfo('%s=%s' % (i, v)) + T.svcinfo('%s=%s' % (i, v.replace('\n', ' '))) def cmd_userpeer(user): """ @@ -875,7 +878,7 @@ def cmd_passive(*args): addr = cr.parent.switch() if addr is None: raise T.TripeJobError('connect-timeout') - addpeer(peer, addr) + addpeer(peer, addr, True) finally: del chalmap[chal] @@ -911,7 +914,7 @@ def setup(): for name in M.split(autos)[0]: try: peer = Peer(name, cdb) - addpeer(peer, M.split(peer.get('peer'), quotep = True)[0]) + addpeer(peer, M.split(peer.get('peer'), quotep = True)[0], False) except T.TripeJobError, err: S.warn('connect', 'auto-add-failed', name, *err.args)