vmm
changeset 80 5dedc673524e
parent 78 8f1e501b1bb1
child 90 1734eb5101c6
--- a/vmm	Mon Sep 08 23:47:34 2008 +0000
+++ b/vmm	Tue Sep 09 04:29:13 2008 +0000
@@ -40,32 +40,35 @@
     u_head = _("""\
 Usage: %s SUBCOMMAND OBJECT ARGS*
   short long
-  subcommand               object            args (* = optional)\n""")\
+  subcommand               object             args (* = optional)\n""")\
           % __prog__
 
     u_body = """\
-  da    domainadd          domain.tld        transport*
-  di    domaininfo         domain.tld        details*
-  dt    domaintransport    domain.tld        transport force*
-  dd    domaindelete       domain.tld        delalias*|deluser*|delall*
-  ada   aliasdomainadd     aliasdomain.tld   domain.tld
+  da    domainadd          domain.tld         transport*
+  di    domaininfo         domain.tld         details*
+  dt    domaintransport    domain.tld         transport force*
+  dd    domaindelete       domain.tld         delalias*|deluser*|delall*
+  ada   aliasdomainadd     aliasdomain.tld    domain.tld
   adi   aliasdomaininfo    aliasdomain.tld
-  ads   aliasdomainswitch  aliasdomain.tld   domain.tld
+  ads   aliasdomainswitch  aliasdomain.tld    domain.tld
   add   aliasdomaindelete  aliasdomain.tld
-  ua    useradd            user@domain.tld   password*
-  ui    userinfo           user@domain.tld   du*
-  un    username           user@domain.tld   'Users Name'
-  up    userpassword       user@domain.tld   password*
-  ut    usertransport      user@domain.tld   transport
-  u0    userdisable        user@domain.tld   service*
-  u1    userenable         user@domain.tld   service*
-  ud    userdelete         user@domain.tld   delalias*
-  aa    aliasadd           alias@domain.tld  user@domain.tld
+  ua    useradd            user@domain.tld    password*
+  ui    userinfo           user@domain.tld    du*
+  un    username           user@domain.tld    'Users Name'
+  up    userpassword       user@domain.tld    password*
+  ut    usertransport      user@domain.tld    transport
+  u0    userdisable        user@domain.tld    service*
+  u1    userenable         user@domain.tld    service*
+  ud    userdelete         user@domain.tld    delalias*
+  aa    aliasadd           alias@domain.tld   user@domain.tld
   ai    aliasinfo          alias@domain.tld
-  ad    aliasdelete        alias@domain.tld  user@domain.tld*
+  ad    aliasdelete        alias@domain.tld   user@domain.tld*
+  ra    relocatedadd       exaddr@domain.tld  user@domain.tld
+  ri    relocatedinfo      exaddr@domain.tld
+  rf    relocateddelete    exaddr@domain.tld
   gu    getuser            userid
-  ld    listdomains                          pattern*
-  cf    configure                            section*
+  ld    listdomains                           pattern*
+  cf    configure                             section*
   h     help
   v     version
 """
@@ -91,7 +94,7 @@
     if argv[1] in ['di', 'domaininfo']:
         order = (('domainname', 0), ('gid', 1), ('transport', 0),
                 ('domaindir', 0), ('aliasdomains', 0), ('accounts', 0),
-                ('aliases', 0))
+                ('aliases', 0), ('relocated', 0))
     elif argv[1] in ['ui', 'userinfo']:
         if argc == 4 or vmm.cfgGetBoolean('maildir', 'diskusage'):
             order = (('address', 0), ('name', 0), ('uid', 1), ('gid', 1),
@@ -143,6 +146,12 @@
         w_std(_('\tNone'))
     print
 
+def _printRelocated(addr_dest):
+    msg = _(u'Relocated information')
+    w_std('%s\n%s' % (msg, '-'*len(msg)))
+    w_std(_(u'\tUser »%(addr)s« has moved to »%(dest)s«') % addr_dest)
+    print
+
 def _formatDom(domain, main=True):
     if domain.startswith('xn--'):
         domain = '%s (%s)' % (domain, vmm.ace2idna(domain))
@@ -215,10 +224,13 @@
             _printList(infos[1], _('alias domains'))
         elif details == 'aliases':
             _printList(infos[1], _('aliases'))
+        elif details == 'relocated':
+            _printList(infos[1], _('relocated users'))
         else:
             _printList(infos[1], _('alias domains'))
             _printList(infos[2], _('accounts'))
             _printList(infos[3], _('aliases'))
+            _printList(infos[4], _('relocated users'))
 
 def domain_transport():
     if argc < 3:
@@ -338,7 +350,7 @@
     if argc < 3:
         usage(EXIT.MISSING_ARGS, _(u'Missing alias address'))
     else:
-        _printAliases(argv[2], vmm.aliasInfo(argv[2].lower()))
+        _printAliases(argv[2].lower(), vmm.aliasInfo(argv[2].lower()))
 
 def alias_delete():
     if argc < 3:
@@ -348,6 +360,29 @@
     else:
         vmm.aliasDelete(argv[2].lower(), argv[3].lower())
 
+def relocated_add():
+    if argc < 3:
+        usage(EXIT.MISSING_ARGS,
+                _(u'Missing relocated address and destination.'))
+    elif argc < 4:
+        usage(EXIT.MISSING_ARGS, _(u'Missing destination address.'))
+    else:
+        vmm.relocatedAdd(argv[2].lower(), argv[3])
+
+def relocated_info():
+    if argc < 3:
+        usage(EXIT.MISSING_ARGS, _(u'Missing relocated address'))
+    else:
+        relocated = argv[2].lower()
+        _printRelocated({'addr': relocated,
+            'dest': vmm.relocatedInfo(relocated)})
+
+def relocated_delete():
+    if argc < 3:
+        usage(EXIT.MISSING_ARGS, _(u'Missing relocated address'))
+    else:
+        vmm.relocatedDelete(argv[2].lower())
+
 def user_byID():
     if argc < 3:
         usage(EXIT.MISSING_ARGS, _(u'Missing userid'))
@@ -428,6 +463,12 @@
             alias_info()
         elif argv[1] in ['ad', 'aliasdelete']:
             alias_delete()
+        elif argv[1] in ['ra', 'relocatedadd']:
+            relocated_add()
+        elif argv[1] in ['ri', 'relocatedinfo']:
+            relocated_info()
+        elif argv[1] in ['rd', 'relocateddelete']:
+            relocated_delete()
         elif argv[1] in ['gu', 'getuser']:
             user_byID()
         elif argv[1] in ['ld', 'listdomains']: