71 order = () |
71 order = () |
72 if vmm.cfgGetInt('misc', 'dovecotvers') > 11: |
72 if vmm.cfgGetInt('misc', 'dovecotvers') > 11: |
73 sieve_name = u'sieve' |
73 sieve_name = u'sieve' |
74 else: |
74 else: |
75 sieve_name = u'managesieve' |
75 sieve_name = u'managesieve' |
76 if argv[1] in ['di', 'domaininfo']: |
76 if argv[1] in (u'di', u'domaininfo'): |
77 order = ((u'domainname', 0), (u'gid', 1), (u'transport', 0), |
77 order = ((u'domainname', 0), (u'gid', 1), (u'transport', 0), |
78 (u'domaindir', 0), (u'aliasdomains', 0), (u'accounts', 0), |
78 (u'domaindir', 0), (u'aliasdomains', 0), (u'accounts', 0), |
79 (u'aliases', 0), (u'relocated', 0)) |
79 (u'aliases', 0), (u'relocated', 0)) |
80 elif argv[1] in ['ui', 'userinfo']: |
80 elif argv[1] in (u'ui', u'userinfo'): |
81 if argc == 4 and argv[3] != 'aliases'\ |
81 if argc == 4 and argv[3] != u'aliases'\ |
82 or vmm.cfgGetBoolean('maildir', 'diskusage'): |
82 or vmm.cfgGetBoolean('maildir', 'diskusage'): |
83 order = ((u'address', 0), (u'name', 0), (u'uid', 1), (u'gid', 1), |
83 order = ((u'address', 0), (u'name', 0), (u'uid', 1), (u'gid', 1), |
84 (u'transport', 0), (u'maildir', 0), (u'disk usage', 0), |
84 (u'transport', 0), (u'maildir', 0), (u'disk usage', 0), |
85 (u'smtp', 1), (u'pop3', 1), (u'imap', 1), (sieve_name, 1)) |
85 (u'smtp', 1), (u'pop3', 1), (u'imap', 1), (sieve_name, 1)) |
86 else: |
86 else: |
87 order = ((u'address', 0), (u'name', 0), (u'uid', 1), (u'gid', 1), |
87 order = ((u'address', 0), (u'name', 0), (u'uid', 1), (u'gid', 1), |
88 (u'transport', 0), (u'maildir', 0), (u'smtp', 1), |
88 (u'transport', 0), (u'maildir', 0), (u'smtp', 1), |
89 (u'pop3', 1), (u'imap', 1), (sieve_name, 1)) |
89 (u'pop3', 1), (u'imap', 1), (sieve_name, 1)) |
90 elif argv[1] in ['gu', 'getuser']: |
90 elif argv[1] in (u'gu', u'getuser'): |
91 order = ((u'uid', 1), (u'gid', 1), (u'address', 0)) |
91 order = ((u'uid', 1), (u'gid', 1), (u'address', 0)) |
92 return order |
92 return order |
93 |
93 |
94 def _printInfo(info, title): |
94 def _printInfo(info, title): |
95 msg = u'%s %s' % (title, _(u'information')) |
95 msg = u'%s %s' % (title, _(u'information')) |
199 _printInfo(vmm.domainInfo(argv[2].lower()), _(u'Domain')) |
199 _printInfo(vmm.domainInfo(argv[2].lower()), _(u'Domain')) |
200 else: |
200 else: |
201 details = argv[3].lower() |
201 details = argv[3].lower() |
202 infos = vmm.domainInfo(argv[2].lower(), details) |
202 infos = vmm.domainInfo(argv[2].lower(), details) |
203 _printInfo(infos[0], _(u'Domain')) |
203 _printInfo(infos[0], _(u'Domain')) |
204 if details == 'accounts': |
204 if details == u'accounts': |
205 _printList(infos[1], _(u'accounts')) |
205 _printList(infos[1], _(u'accounts')) |
206 elif details == 'aliasdomains': |
206 elif details == u'aliasdomains': |
207 _printList(infos[1], _(u'alias domains')) |
207 _printList(infos[1], _(u'alias domains')) |
208 elif details == 'aliases': |
208 elif details == u'aliases': |
209 _printList(infos[1], _(u'aliases')) |
209 _printList(infos[1], _(u'aliases')) |
210 elif details == 'relocated': |
210 elif details == u'relocated': |
211 _printList(infos[1], _(u'relocated users')) |
211 _printList(infos[1], _(u'relocated users')) |
212 else: |
212 else: |
213 _printList(infos[1], _(u'alias domains')) |
213 _printList(infos[1], _(u'alias domains')) |
214 _printList(infos[2], _(u'accounts')) |
214 _printList(infos[2], _(u'accounts')) |
215 _printList(infos[3], _(u'aliases')) |
215 _printList(infos[3], _(u'aliases')) |
273 vmm.userDelete(argv[2].lower(), argv[3].lower()) |
273 vmm.userDelete(argv[2].lower(), argv[3].lower()) |
274 |
274 |
275 def user_info(): |
275 def user_info(): |
276 if argc < 3: |
276 if argc < 3: |
277 usage(EXIT.MISSING_ARGS, _(u'Missing e-mail address.')) |
277 usage(EXIT.MISSING_ARGS, _(u'Missing e-mail address.')) |
278 elif argc < 4: |
278 try: |
279 _printInfo(vmm.userInfo(argv[2].lower()), u'Account') |
279 if argc < 4: |
280 else: |
280 _printInfo(vmm.userInfo(argv[2].lower()), u'Account') |
281 arg3 = argv[3].lower() |
281 else: |
282 info = vmm.userInfo(argv[2].lower(), arg3) |
282 arg3 = argv[3].lower() |
283 if arg3 in ['aliases', 'full']: |
283 info = vmm.userInfo(argv[2].lower(), arg3) |
284 _printInfo(info[0], u'Account') |
284 if arg3 in ['aliases', 'full']: |
285 _printList(info[1], _(u'alias addresses')) |
285 _printInfo(info[0], u'Account') |
286 else: |
286 _printList(info[1], _(u'alias addresses')) |
287 _printInfo(info, u'Account') |
287 else: |
|
288 _printInfo(info, u'Account') |
|
289 except VMME.VMMAccountException, e: |
|
290 if e.code() is ERR.ALIAS_EXISTS: |
|
291 w_std(plan_a_b % {'subcommand': u'aliasinfo', |
|
292 'address': argv[2].lower()}) |
|
293 alias_info() |
|
294 elif e.code() is ERR.RELOCATED_EXISTS: |
|
295 w_std(plan_a_b % {'subcommand': u'relocatedinfo', |
|
296 'address': argv[2].lower()}) |
|
297 relocated_info() |
|
298 else: |
|
299 raise e |
288 |
300 |
289 def user_name(): |
301 def user_name(): |
290 if argc < 3: |
302 if argc < 3: |
291 usage(EXIT.MISSING_ARGS, _(u'Missing e-mail address and users name.')) |
303 usage(EXIT.MISSING_ARGS, _(u'Missing e-mail address and users name.')) |
292 if argc < 4: |
304 if argc < 4: |
336 vmm.aliasAdd(argv[2].lower(), argv[3]) |
348 vmm.aliasAdd(argv[2].lower(), argv[3]) |
337 |
349 |
338 def alias_info(): |
350 def alias_info(): |
339 if argc < 3: |
351 if argc < 3: |
340 usage(EXIT.MISSING_ARGS, _(u'Missing alias address')) |
352 usage(EXIT.MISSING_ARGS, _(u'Missing alias address')) |
341 else: |
353 try: |
342 _printAliases(argv[2].lower(), vmm.aliasInfo(argv[2].lower())) |
354 _printAliases(argv[2].lower(), vmm.aliasInfo(argv[2].lower())) |
|
355 except VMME.VMMAliasException, e: |
|
356 if e.code() is ERR.ACCOUNT_EXISTS: |
|
357 w_std(plan_a_b % {'subcommand': u'userinfo', |
|
358 'address': argv[2].lower()}) |
|
359 argv[1] = u'ui' # necessary manipulation to get the order |
|
360 user_info() |
|
361 elif e.code() is ERR.RELOCATED_EXISTS: |
|
362 w_std(plan_a_b % {'subcommand': u'relocatedinfo', |
|
363 'address': argv[2].lower()}) |
|
364 relocated_info() |
|
365 else: |
|
366 raise e |
343 |
367 |
344 def alias_delete(): |
368 def alias_delete(): |
345 if argc < 3: |
369 if argc < 3: |
346 usage(EXIT.MISSING_ARGS, _(u'Missing alias address')) |
370 usage(EXIT.MISSING_ARGS, _(u'Missing alias address')) |
347 elif argc < 4: |
371 elif argc < 4: |
359 vmm.relocatedAdd(argv[2].lower(), argv[3]) |
383 vmm.relocatedAdd(argv[2].lower(), argv[3]) |
360 |
384 |
361 def relocated_info(): |
385 def relocated_info(): |
362 if argc < 3: |
386 if argc < 3: |
363 usage(EXIT.MISSING_ARGS, _(u'Missing relocated address')) |
387 usage(EXIT.MISSING_ARGS, _(u'Missing relocated address')) |
364 else: |
388 relocated = argv[2].lower() |
365 relocated = argv[2].lower() |
389 try: |
366 _printRelocated({'addr': relocated, |
390 _printRelocated({'addr': relocated, |
367 'dest': vmm.relocatedInfo(relocated)}) |
391 'dest': vmm.relocatedInfo(relocated)}) |
|
392 except VMME.VMMRelocatedException, e: |
|
393 if e.code() is ERR.ACCOUNT_EXISTS: |
|
394 w_std(plan_a_b % {'subcommand': u'userinfo', 'address': relocated}) |
|
395 argv[1] = u'ui' # necessary manipulation to get the order |
|
396 user_info() |
|
397 elif e.code() is ERR.ALIAS_EXISTS: |
|
398 w_std(plan_a_b % {'subcommand': u'aliasinfo', 'address': relocated}) |
|
399 alias_info() |
|
400 else: |
|
401 raise e |
368 |
402 |
369 def relocated_delete(): |
403 def relocated_delete(): |
370 if argc < 3: |
404 if argc < 3: |
371 usage(EXIT.MISSING_ARGS, _(u'Missing relocated address')) |
405 usage(EXIT.MISSING_ARGS, _(u'Missing relocated address')) |
372 else: |
406 else: |
403 if __name__ == '__main__': |
437 if __name__ == '__main__': |
404 __prog__ = os.path.basename(os.sys.argv[0]) |
438 __prog__ = os.path.basename(os.sys.argv[0]) |
405 gettext.install(__prog__, '/usr/local/share/locale', unicode=1) |
439 gettext.install(__prog__, '/usr/local/share/locale', unicode=1) |
406 argv = [unicode(arg, ENCODING) for arg in os.sys.argv] |
440 argv = [unicode(arg, ENCODING) for arg in os.sys.argv] |
407 argc = len(os.sys.argv) |
441 argc = len(os.sys.argv) |
|
442 plan_a_b =_(u'Plan A failed ... trying Plan B: %(subcommand)s %(address)s') |
408 |
443 |
409 if argc < 2: |
444 if argc < 2: |
410 usage(EXIT.MISSING_ARGS) |
445 usage(EXIT.MISSING_ARGS) |
411 |
446 |
412 vmm = get_vmm() |
447 vmm = get_vmm() |
413 try: |
448 try: |
414 need_setup = not vmm.setupIsDone() |
449 need_setup = not vmm.setupIsDone() |
415 if argv[1] in ['cf', 'configure'] or need_setup: |
450 if argv[1] in (u'cf', u'configure') or need_setup: |
416 configure() |
451 configure() |
417 elif argv[1] in ['da', 'domainadd']: |
452 elif argv[1] in (u'da', u'domainadd'): |
418 domain_add() |
453 domain_add() |
419 elif argv[1] in ['di', 'domaininfo']: |
454 elif argv[1] in (u'di', u'domaininfo'): |
420 domain_info() |
455 domain_info() |
421 elif argv[1] in ['dt', 'domaintransport']: |
456 elif argv[1] in (u'dt', u'domaintransport'): |
422 domain_transport() |
457 domain_transport() |
423 elif argv[1] in ['dd', 'domaindelete']: |
458 elif argv[1] in (u'dd', u'domaindelete'): |
424 domain_delete() |
459 domain_delete() |
425 elif argv[1] in ['ada', 'aliasdomainadd']: |
460 elif argv[1] in (u'ada', u'aliasdomainadd'): |
426 alias_domain_add() |
461 alias_domain_add() |
427 elif argv[1] in ['adi', 'aliasdomaininfo']: |
462 elif argv[1] in (u'adi', u'aliasdomaininfo'): |
428 alias_domain_info() |
463 alias_domain_info() |
429 elif argv[1] in ['ads', 'aliasdomainswitch']: |
464 elif argv[1] in (u'ads', u'aliasdomainswitch'): |
430 alias_domain_switch() |
465 alias_domain_switch() |
431 elif argv[1] in ['add', 'aliasdomaindelete']: |
466 elif argv[1] in (u'add', u'aliasdomaindelete'): |
432 alias_domain_delete() |
467 alias_domain_delete() |
433 elif argv[1] in ['ua', 'useradd']: |
468 elif argv[1] in (u'ua', u'useradd'): |
434 user_add() |
469 user_add() |
435 elif argv[1] in ['ui', 'userinfo']: |
470 elif argv[1] in (u'ui', u'userinfo'): |
436 user_info() |
471 user_info() |
437 elif argv[1] in ['un', 'username']: |
472 elif argv[1] in (u'un', u'username'): |
438 user_name() |
473 user_name() |
439 elif argv[1] in ['up', 'userpassword']: |
474 elif argv[1] in (u'up', u'userpassword'): |
440 user_password() |
475 user_password() |
441 elif argv[1] in ['ut', 'usertransport']: |
476 elif argv[1] in (u'ut', u'usertransport'): |
442 user_transport() |
477 user_transport() |
443 elif argv[1] in ['u0', 'userdisable']: |
478 elif argv[1] in (u'u0', u'userdisable'): |
444 user_disable() |
479 user_disable() |
445 elif argv[1] in ['u1', 'userenable']: |
480 elif argv[1] in (u'u1', u'userenable'): |
446 user_enable() |
481 user_enable() |
447 elif argv[1] in ['ud', 'userdelete']: |
482 elif argv[1] in (u'ud', u'userdelete'): |
448 user_delete() |
483 user_delete() |
449 elif argv[1] in ['aa', 'aliasadd']: |
484 elif argv[1] in (u'aa', u'aliasadd'): |
450 alias_add() |
485 alias_add() |
451 elif argv[1] in ['ai', 'aliasinfo']: |
486 elif argv[1] in (u'ai', u'aliasinfo'): |
452 alias_info() |
487 alias_info() |
453 elif argv[1] in ['ad', 'aliasdelete']: |
488 elif argv[1] in (u'ad', u'aliasdelete'): |
454 alias_delete() |
489 alias_delete() |
455 elif argv[1] in ['ra', 'relocatedadd']: |
490 elif argv[1] in (u'ra', u'relocatedadd'): |
456 relocated_add() |
491 relocated_add() |
457 elif argv[1] in ['ri', 'relocatedinfo']: |
492 elif argv[1] in (u'ri', u'relocatedinfo'): |
458 relocated_info() |
493 relocated_info() |
459 elif argv[1] in ['rd', 'relocateddelete']: |
494 elif argv[1] in (u'rd', u'relocateddelete'): |
460 relocated_delete() |
495 relocated_delete() |
461 elif argv[1] in ['gu', 'getuser']: |
496 elif argv[1] in (u'gu', u'getuser'): |
462 user_byID() |
497 user_byID() |
463 elif argv[1] in ['ld', 'listdomains']: |
498 elif argv[1] in (u'ld', u'listdomains'): |
464 domain_list() |
499 domain_list() |
465 elif argv[1] in ['h', 'help']: |
500 elif argv[1] in (u'h', u'help'): |
466 usage() |
501 usage() |
467 elif argv[1] in ['v', 'version']: |
502 elif argv[1] in (u'v', u'version'): |
468 show_version() |
503 show_version() |
469 else: |
504 else: |
470 usage(EXIT.UNKNOWN_COMMAND, |
505 usage(EXIT.UNKNOWN_COMMAND, |
471 u"%s: ā%sā" % (_(u'Unknown subcommand'), argv[1])) |
506 u"%s: ā%sā" % (_(u'Unknown subcommand'), argv[1])) |
472 show_warnings() |
507 show_warnings() |