Use the new `mLib' annotations on varargs functions.
[tripe] / svc / connect.in
index 37241bb..0031d36 100644 (file)
@@ -87,11 +87,14 @@ def addpeer(peer, addr):
   if peer.name in S.list():
     S.kill(peer.name)
   try:
+    booltrue = ['t', 'true', 'y', 'yes', 'on']
     S.add(peer.name,
           tunnel = peer.get('tunnel', None),
           keepalive = peer.get('keepalive', None),
           key = peer.get('key', None),
-          cork = peer.get('cork', 'nil') in ['t', 'true', 'y', 'yes', 'on'],
+          priv = peer.get('priv', None),
+          mobile = peer.get('mobile', 'nil') in booltrue,
+          cork = peer.get('cork', 'nil') in booltrue,
           *addr)
   except T.TripeError, exc:
     raise T.TripeJobError(*exc.args)
@@ -127,6 +130,16 @@ def cmd_info(name):
   for i in items:
     T.svcinfo('%s=%s' % (i, peer.get(i)))
 
+def cmd_userpeer(user):
+  """
+  userpeer USER: Report the peer name for the named user.
+  """
+  try:
+    peer = CDB.init(opts.cdb)['U' + user]
+  except KeyError:
+    raise T.TripeJobError('unknown-user', user)
+  T.svcinfo(peer)
+
 ## Dictionary mapping challenges to waiting passive-connection coroutines.
 chalmap = {}
 
@@ -238,7 +251,8 @@ service_info = [('connect', VERSION, {
   'passive': (1, None, '[OPTIONS] USER', cmd_passive),
   'active': (1, 1, 'PEER', cmd_active),
   'info': (1, 1, 'PEER', cmd_info),
-  'list': (0, 0, '', cmd_list)
+  'list': (0, 0, '', cmd_list),
+  'userpeer': (1, 1, 'USER', cmd_userpeer)
 })]
 
 if __name__ == '__main__':