vmm
changeset 35 22cc616aef61
parent 34 6d74e20c5b3b
child 38 c44ea4526546
equal deleted inserted replaced
34:6d74e20c5b3b 35:22cc616aef61
    50   ud    userdelete      user@domain.tld
    50   ud    userdelete      user@domain.tld
    51   aa    aliasadd        alias@domain.tld user@domain.tld
    51   aa    aliasadd        alias@domain.tld user@domain.tld
    52   ai    aliasinfo       alias@domain.tld
    52   ai    aliasinfo       alias@domain.tld
    53   ad    aliasdelete     alias@domain.tld user@domain.tld*
    53   ad    aliasdelete     alias@domain.tld user@domain.tld*
    54   gu    getuser         userid
    54   gu    getuser         userid
       
    55   ld    listdomains                      pattern*
    55   cf    configure                        section*
    56   cf    configure                        section*
    56   h     help
    57   h     help
    57   v     version
    58   v     version
    58 
    59 
    59 """)
    60 """)
    98             clear0 = ''
    99             clear0 = ''
    99             sys.stderr.write('%s\n' % _('Sorry, passwords do not match'))
   100             sys.stderr.write('%s\n' % _('Sorry, passwords do not match'))
   100     return clear0
   101     return clear0
   101 
   102 
   102 def _getOrder():
   103 def _getOrder():
   103     global argc
       
   104     order = ()
   104     order = ()
   105     if sys.argv[1] in ['di', 'domaininfo']:
   105     if sys.argv[1] in ['di', 'domaininfo']:
   106         order = (('domainname', 0), ('gid', 1), ('transport', 0),
   106         order = (('domainname', 0), ('gid', 1), ('transport', 0),
   107                 ('domaindir', 0), ('accounts', 0), ('aliases', 0))
   107                 ('domaindir', 0), ('accounts', 0), ('aliases', 0))
   108     elif sys.argv[1] in ['ui', 'userinfo']:
   108     elif sys.argv[1] in ['ui', 'userinfo']:
   116                     ('smtp', 1), ('pop3', 1), ('imap', 1), ('managesieve', 1))
   116                     ('smtp', 1), ('pop3', 1), ('imap', 1), ('managesieve', 1))
   117     elif sys.argv[1] in ['gu', 'getuser']:
   117     elif sys.argv[1] in ['gu', 'getuser']:
   118         order = (('uid', 1), ('gid', 1), ('address', 0))
   118         order = (('uid', 1), ('gid', 1), ('address', 0))
   119     return order
   119     return order
   120 
   120 
   121 
       
   122 def _printInfo(info, title):
   121 def _printInfo(info, title):
   123     msg = '%s %s' % (title, _('information'))
   122     msg = '%s %s' % (title, _('information'))
   124     print '%s\n%s' % (msg, '-'*len(msg))
   123     print '%s\n%s' % (msg, '-'*len(msg))
   125     for k,u in _getOrder():
   124     for k,u in _getOrder():
   126         if u:
   125         if u:
   148             print '\t     -> %s' % target
   147             print '\t     -> %s' % target
   149     else:
   148     else:
   150         print _('\tNone')
   149         print _('\tNone')
   151     print
   150     print
   152 
   151 
       
   152 def _printDomList(domains):
       
   153     if argc < 3:
       
   154         msg = _('Available domains')
       
   155     else:
       
   156         msg = _('Matching domains')
       
   157     print '%s\n%s' % (msg, '-'*len(msg))
       
   158     if not len(domains):
       
   159         print _('\tNone')
       
   160     else:
       
   161         for domain in domains:
       
   162             d = domain[0]
       
   163             if not d.startswith('xn--'):
       
   164                 print '\t%s' % d
       
   165             else:
       
   166                 print "\t%s (%s)" % (d, vmm.ace2idna(d))
       
   167     print
       
   168 
   153 def domain_add():
   169 def domain_add():
   154     global argc
       
   155     if argc < 3:
   170     if argc < 3:
   156         usage(EXIT.MISSING_ARGS, _('Missing domain name.'))
   171         usage(EXIT.MISSING_ARGS, _('Missing domain name.'))
   157     elif argc < 4:
   172     elif argc < 4:
   158         vmm.domain_add(sys.argv[2].lower())
   173         vmm.domain_add(sys.argv[2].lower())
   159     else:
   174     else:
   160         vmm.domain_add(sys.argv[2].lower(), sys.argv[3])
   175         vmm.domain_add(sys.argv[2].lower(), sys.argv[3])
   161 
   176 
   162 def domain_delete():
   177 def domain_delete():
   163     global argc
       
   164     if argc < 3:
   178     if argc < 3:
   165         usage(EXIT.MISSING_ARGS, _('Missing domain name.'))
   179         usage(EXIT.MISSING_ARGS, _('Missing domain name.'))
   166     elif argc < 4:
   180     elif argc < 4:
   167         vmm.domain_delete(sys.argv[2].lower())
   181         vmm.domain_delete(sys.argv[2].lower())
   168     else:
   182     else:
   169         vmm.domain_delete(sys.argv[2].lower(), sys.argv[3])
   183         vmm.domain_delete(sys.argv[2].lower(), sys.argv[3])
   170 
   184 
   171 def domain_info():
   185 def domain_info():
   172     global argc
       
   173     if argc < 3:
   186     if argc < 3:
   174         usage(EXIT.MISSING_ARGS, _('Missing domain name.'))
   187         usage(EXIT.MISSING_ARGS, _('Missing domain name.'))
   175     elif argc < 4:
   188     elif argc < 4:
   176         _printInfo(vmm.domain_info(sys.argv[2].lower()), 'Domain')
   189         _printInfo(vmm.domain_info(sys.argv[2].lower()), 'Domain')
   177     else:
   190     else:
   179         _printInfo(infos[0], 'Domain')
   192         _printInfo(infos[0], 'Domain')
   180         _printUsers(infos[1], _('accounts'))
   193         _printUsers(infos[1], _('accounts'))
   181         _printUsers(infos[2], _('aliases'))
   194         _printUsers(infos[2], _('aliases'))
   182 
   195 
   183 def domain_transport():
   196 def domain_transport():
   184     global argc
       
   185     if argc < 3:
   197     if argc < 3:
   186         usage(EXIT.MISSING_ARGS, _('Missing domain name and new transport.'))
   198         usage(EXIT.MISSING_ARGS, _('Missing domain name and new transport.'))
   187     if argc < 4:
   199     if argc < 4:
   188         usage(EXIT.MISSING_ARGS, _('Missing new transport.'))
   200         usage(EXIT.MISSING_ARGS, _('Missing new transport.'))
   189     elif argc < 5:
   201     elif argc < 5:
   190         vmm.domain_transport(sys.argv[2].lower(), sys.argv[3])
   202         vmm.domain_transport(sys.argv[2].lower(), sys.argv[3])
   191     else:
   203     else:
   192         vmm.domain_transport(sys.argv[2].lower(), sys.argv[3], sys.argv[4])
   204         vmm.domain_transport(sys.argv[2].lower(), sys.argv[3], sys.argv[4])
   193 
   205 
   194 def user_add():
   206 def user_add():
   195     global argc
       
   196     if argc < 3:
   207     if argc < 3:
   197         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   208         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   198     elif argc < 4:
   209     elif argc < 4:
   199         password = _readpass()
   210         password = _readpass()
   200     else:
   211     else:
   201         password = sys.argv[3]
   212         password = sys.argv[3]
   202     vmm.user_add(sys.argv[2].lower(), password)
   213     vmm.user_add(sys.argv[2].lower(), password)
   203 
   214 
   204 def user_delete():
   215 def user_delete():
   205     global argc
       
   206     if argc < 3:
   216     if argc < 3:
   207         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   217         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   208     else:
   218     else:
   209         vmm.user_delete(sys.argv[2].lower())
   219         vmm.user_delete(sys.argv[2].lower())
   210 
   220 
   211 def user_info():
   221 def user_info():
   212     global argc
       
   213     if argc < 3:
   222     if argc < 3:
   214         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   223         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   215     elif argc < 4:
   224     elif argc < 4:
   216         _printInfo(vmm.user_info(sys.argv[2].lower()), 'Account')
   225         _printInfo(vmm.user_info(sys.argv[2].lower()), 'Account')
   217     else:
   226     else:
   218         _printInfo(vmm.user_info(sys.argv[2].lower(), True), 'Account')
   227         _printInfo(vmm.user_info(sys.argv[2].lower(), True), 'Account')
   219 
   228 
   220 def user_name():
   229 def user_name():
   221     global argc
       
   222     if argc < 3:
   230     if argc < 3:
   223         usage(EXIT.MISSING_ARGS, _('Missing e-mail address and users name.'))
   231         usage(EXIT.MISSING_ARGS, _('Missing e-mail address and users name.'))
   224     if argc < 4:
   232     if argc < 4:
   225         usage(EXIT.MISSING_ARGS, _('Missing users name.'))
   233         usage(EXIT.MISSING_ARGS, _('Missing users name.'))
   226     else:
   234     else:
   227         vmm.user_name(sys.argv[2].lower(), sys.argv[3])
   235         vmm.user_name(sys.argv[2].lower(), sys.argv[3])
   228 
   236 
   229 def user_transport():
   237 def user_transport():
   230     global argc
       
   231     if argc < 3:
   238     if argc < 3:
   232         usage(EXIT.MISSING_ARGS, _('Missing e-mail address and transport.'))
   239         usage(EXIT.MISSING_ARGS, _('Missing e-mail address and transport.'))
   233     if argc <4:
   240     if argc <4:
   234         usage(EXIT.MISSING_ARGS, _('Missing transport.'))
   241         usage(EXIT.MISSING_ARGS, _('Missing transport.'))
   235     else:
   242     else:
   236         vmm.user_transport(sys.argv[2].lower(), sys.argv[3])
   243         vmm.user_transport(sys.argv[2].lower(), sys.argv[3])
   237 
   244 
   238 def user_enable():
   245 def user_enable():
   239     global argc
       
   240     if argc < 3:
   246     if argc < 3:
   241         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   247         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   242     elif argc < 4:
   248     elif argc < 4:
   243         vmm.user_enable(sys.argv[2].lower())
   249         vmm.user_enable(sys.argv[2].lower())
   244     else:
   250     else:
   245         vmm.user_enable(sys.argv[2].lower(), sys.argv[3].lower())
   251         vmm.user_enable(sys.argv[2].lower(), sys.argv[3].lower())
   246 
   252 
   247 def user_disable():
   253 def user_disable():
   248     global argc
       
   249     if argc < 3:
   254     if argc < 3:
   250         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   255         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   251     elif argc < 4:
   256     elif argc < 4:
   252         vmm.user_disable(sys.argv[2].lower())
   257         vmm.user_disable(sys.argv[2].lower())
   253     else:
   258     else:
   254         vmm.user_disable(sys.argv[2].lower(), sys.argv[3].lower())
   259         vmm.user_disable(sys.argv[2].lower(), sys.argv[3].lower())
   255 
   260 
   256 def user_password():
   261 def user_password():
   257     global argc
       
   258     if argc < 3:
   262     if argc < 3:
   259         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   263         usage(EXIT.MISSING_ARGS, _('Missing e-mail address.'))
   260     elif argc < 4:
   264     elif argc < 4:
   261         password = _readpass()
   265         password = _readpass()
   262     else:
   266     else:
   263         password = sys.argv[3]
   267         password = sys.argv[3]
   264     vmm.user_password(sys.argv[2].lower(), password)
   268     vmm.user_password(sys.argv[2].lower(), password)
   265 
   269 
   266 def alias_add():
   270 def alias_add():
   267     global argc
       
   268     if argc < 4:
   271     if argc < 4:
   269         usage(EXIT.MISSING_ARGS, _('Missing alias address and destination.'))
   272         usage(EXIT.MISSING_ARGS, _('Missing alias address and destination.'))
   270     else:
   273     else:
   271         vmm.alias_add(sys.argv[2].lower(), sys.argv[3])
   274         vmm.alias_add(sys.argv[2].lower(), sys.argv[3])
   272 
   275 
   273 def alias_info():
   276 def alias_info():
   274     global argc
       
   275     if argc < 3:
   277     if argc < 3:
   276         usage(EXIT.MISSING_ARGS, _('Missing alias address'))
   278         usage(EXIT.MISSING_ARGS, _('Missing alias address'))
   277     else:
   279     else:
   278         _printAliases(sys.argv[2], vmm.alias_info(sys.argv[2].lower()))
   280         _printAliases(sys.argv[2], vmm.alias_info(sys.argv[2].lower()))
   279 
   281 
   280 def alias_delete():
   282 def alias_delete():
   281     global argc
       
   282     if argc < 3:
   283     if argc < 3:
   283         usage(EXIT.MISSING_ARGS, _('Missing alias address'))
   284         usage(EXIT.MISSING_ARGS, _('Missing alias address'))
   284     elif argc < 4:
   285     elif argc < 4:
   285         vmm.alias_delete(sys.argv[2].lower())
   286         vmm.alias_delete(sys.argv[2].lower())
   286     else:
   287     else:
   287         vmm.alias_delete(sys.argv[2].lower(), sys.argv[3].lower())
   288         vmm.alias_delete(sys.argv[2].lower(), sys.argv[3].lower())
   288 
   289 
   289 def user_byID():
   290 def user_byID():
   290     global argc
       
   291     if argc < 3:
   291     if argc < 3:
   292         usage(EXIT.MISSING_ARGS, _('Missing userid'))
   292         usage(EXIT.MISSING_ARGS, _('Missing userid'))
   293     else:
   293     else:
   294         _printInfo(vmm.user_byID(sys.argv[2]), 'Account')
   294         _printInfo(vmm.user_byID(sys.argv[2]), 'Account')
       
   295 
       
   296 def domain_list():
       
   297     if argc < 3:
       
   298         _printDomList(vmm.domain_list())
       
   299     else:
       
   300         _printDomList(vmm.domain_list(sys.argv[2].lower()))
   295 
   301 
   296 def showWarnings():
   302 def showWarnings():
   297     if vmm.hasWarnings():
   303     if vmm.hasWarnings():
   298         print _('\nWarnings:')
   304         print _('\nWarnings:')
   299         for w in vmm.getWarnings():
   305         for w in vmm.getWarnings():
   345             alias_info()
   351             alias_info()
   346         elif sys.argv[1] in ['ad', 'aliasdelete']:
   352         elif sys.argv[1] in ['ad', 'aliasdelete']:
   347             alias_delete()
   353             alias_delete()
   348         elif sys.argv[1] in ['gu', 'getuser']:
   354         elif sys.argv[1] in ['gu', 'getuser']:
   349             user_byID()
   355             user_byID()
       
   356         elif sys.argv[1] in ['ld', 'listdomains']:
       
   357             domain_list()
   350         elif sys.argv[1] in ['h', 'help']:
   358         elif sys.argv[1] in ['h', 'help']:
   351             usage()
   359             usage()
   352         elif sys.argv[1] in ['v', 'version']:
   360         elif sys.argv[1] in ['v', 'version']:
   353             print "%s, version %s (%s from %s)\n" % (__prog__, __version__,
   361             print "%s, version %s (%s from %s)\n" % (__prog__, __version__,
   354                     __revision__, __date__)
   362                     __revision__, __date__)