68 w_err(e.code(), "%s: %s\n" % (_(u'Error'), e.msg())) |
68 w_err(e.code(), "%s: %s\n" % (_(u'Error'), e.msg())) |
69 |
69 |
70 def _getOrder(): |
70 def _getOrder(): |
71 order = () |
71 order = () |
72 if vmm.cfgGetInt('misc', 'dovecotvers') > 11: |
72 if vmm.cfgGetInt('misc', 'dovecotvers') > 11: |
73 sieve_name = 'sieve' |
73 sieve_name = u'sieve' |
74 else: |
74 else: |
75 sieve_name = 'managesieve' |
75 sieve_name = u'managesieve' |
76 if argv[1] in ['di', 'domaininfo']: |
76 if argv[1] in ['di', 'domaininfo']: |
77 order = (('domainname', 0), ('gid', 1), ('transport', 0), |
77 order = ((u'domainname', 0), (u'gid', 1), (u'transport', 0), |
78 ('domaindir', 0), ('aliasdomains', 0), ('accounts', 0), |
78 (u'domaindir', 0), (u'aliasdomains', 0), (u'accounts', 0), |
79 ('aliases', 0), ('relocated', 0)) |
79 (u'aliases', 0), (u'relocated', 0)) |
80 elif argv[1] in ['ui', 'userinfo']: |
80 elif argv[1] in ['ui', 'userinfo']: |
81 if argc == 4 and argv[3] != 'aliases'\ |
81 if argc == 4 and argv[3] != 'aliases'\ |
82 or vmm.cfgGetBoolean('maildir', 'diskusage'): |
82 or vmm.cfgGetBoolean('maildir', 'diskusage'): |
83 order = (('address', 0), ('name', 0), ('uid', 1), ('gid', 1), |
83 order = ((u'address', 0), (u'name', 0), (u'uid', 1), (u'gid', 1), |
84 ('transport', 0), ('maildir', 0), ('disk usage', 0), |
84 (u'transport', 0), (u'maildir', 0), (u'disk usage', 0), |
85 ('smtp', 1), ('pop3', 1), ('imap', 1), (sieve_name, 1)) |
85 (u'smtp', 1), (u'pop3', 1), (u'imap', 1), (sieve_name, 1)) |
86 else: |
86 else: |
87 order = (('address', 0), ('name', 0), ('uid', 1), ('gid', 1), |
87 order = ((u'address', 0), (u'name', 0), (u'uid', 1), (u'gid', 1), |
88 ('transport', 0), ('maildir', 0), ('smtp', 1), ('pop3', 1), |
88 (u'transport', 0), (u'maildir', 0), (u'smtp', 1), |
89 ('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 ['gu', 'getuser']: |
91 order = (('uid', 1), ('gid', 1), ('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 = '%s %s' % (title, _('information')) |
95 msg = u'%s %s' % (title, _(u'information')) |
96 w_std ('%s\n%s' % (msg, '-'*len(msg))) |
96 w_std (u'%s\n%s' % (msg, u'-'*len(msg))) |
97 for k,u in _getOrder(): |
97 for k,u in _getOrder(): |
98 if u: |
98 if u: |
99 w_std('\t%s: %s' % (k.upper().ljust(15, '.'), info[k])) |
99 w_std(u'\t%s: %s' % (k.upper().ljust(15, u'.'), info[k])) |
100 else: |
100 else: |
101 w_std('\t%s: %s' % (k.title().ljust(15, '.'), info[k])) |
101 w_std(u'\t%s: %s' % (k.title().ljust(15, u'.'), info[k])) |
102 print |
102 print |
103 |
103 |
104 def _printList(alist, title): |
104 def _printList(alist, title): |
105 msg = '%s %s' % (_('Available'), title) |
105 msg = u'%s %s' % (_(u'Available'), title) |
106 w_std('%s\n%s' % (msg, '-'*len(msg))) |
106 w_std(u'%s\n%s' % (msg, u'-'*len(msg))) |
107 if len(alist) > 0: |
107 if len(alist) > 0: |
108 if title != _('alias domains'): |
108 if title != _(u'alias domains'): |
109 for val in alist: |
109 for val in alist: |
110 w_std('\t%s' % val) |
110 w_std(u'\t%s' % val) |
111 else: |
111 else: |
112 for dom in alist: |
112 for dom in alist: |
113 if not dom.startswith('xn--'): |
113 if not dom.startswith('xn--'): |
114 w_std('\t%s' % dom) |
114 w_std(u'\t%s' % dom) |
115 else: |
115 else: |
116 w_std('\t%s (%s)' % (dom, vmm.ace2idna(dom))) |
116 w_std(u'\t%s (%s)' % (dom, vmm.ace2idna(dom))) |
117 else: |
117 else: |
118 w_std(_('\tNone')) |
118 w_std(_(u'\tNone')) |
119 print |
119 print |
120 |
120 |
121 def _printAliases(alias, targets): |
121 def _printAliases(alias, targets): |
122 msg = _('Alias information') |
122 msg = _(u'Alias information') |
123 w_std('%s\n%s' % (msg, '-'*len(msg))) |
123 w_std(u'%s\n%s' % (msg, u'-'*len(msg))) |
124 w_std(_('\tMail for %s will be redirected to:') % alias) |
124 w_std(_(u'\tMail for %s will be redirected to:') % alias) |
125 if len(targets) > 0: |
125 if len(targets) > 0: |
126 for target in targets: |
126 for target in targets: |
127 w_std('\t * %s' % target) |
127 w_std(u'\t * %s' % target) |
128 else: |
128 else: |
129 w_std(_('\tNone')) |
129 w_std(_(u'\tNone')) |
130 print |
130 print |
131 |
131 |
132 def _printRelocated(addr_dest): |
132 def _printRelocated(addr_dest): |
133 msg = _(u'Relocated information') |
133 msg = _(u'Relocated information') |
134 w_std('%s\n%s' % (msg, '-'*len(msg))) |
134 w_std(u'%s\n%s' % (msg, u'-'*len(msg))) |
135 w_std(_(u'\tUser “%(addr)s” has moved to “%(dest)s”') % addr_dest) |
135 w_std(_(u'\tUser “%(addr)s” has moved to “%(dest)s”') % addr_dest) |
136 print |
136 print |
137 |
137 |
138 def _formatDom(domain, main=True): |
138 def _formatDom(domain, main=True): |
139 if domain.startswith('xn--'): |
139 if domain.startswith('xn--'): |
140 domain = '%s (%s)' % (domain, vmm.ace2idna(domain)) |
140 domain = u'%s (%s)' % (domain, vmm.ace2idna(domain)) |
141 if main: |
141 if main: |
142 return '\t[+] %s' % domain |
142 return u'\t[+] %s' % domain |
143 else: |
143 else: |
144 return '\t[-] %s' % domain |
144 return u'\t[-] %s' % domain |
145 |
145 |
146 def _printDomList(dids, domains): |
146 def _printDomList(dids, domains): |
147 if argc < 3: |
147 if argc < 3: |
148 msg = _('Available domains') |
148 msg = _('Available domains') |
149 else: |
149 else: |
194 |
194 |
195 def domain_info(): |
195 def domain_info(): |
196 if argc < 3: |
196 if argc < 3: |
197 usage(EXIT.MISSING_ARGS, _(u'Missing domain name.')) |
197 usage(EXIT.MISSING_ARGS, _(u'Missing domain name.')) |
198 elif argc < 4: |
198 elif argc < 4: |
199 _printInfo(vmm.domainInfo(argv[2].lower()), _('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], _('Domain')) |
203 _printInfo(infos[0], _(u'Domain')) |
204 if details == 'accounts': |
204 if details == 'accounts': |
205 _printList(infos[1], _('accounts')) |
205 _printList(infos[1], _(u'accounts')) |
206 elif details == 'aliasdomains': |
206 elif details == 'aliasdomains': |
207 _printList(infos[1], _('alias domains')) |
207 _printList(infos[1], _(u'alias domains')) |
208 elif details == 'aliases': |
208 elif details == 'aliases': |
209 _printList(infos[1], _('aliases')) |
209 _printList(infos[1], _(u'aliases')) |
210 elif details == 'relocated': |
210 elif details == 'relocated': |
211 _printList(infos[1], _('relocated users')) |
211 _printList(infos[1], _(u'relocated users')) |
212 else: |
212 else: |
213 _printList(infos[1], _('alias domains')) |
213 _printList(infos[1], _(u'alias domains')) |
214 _printList(infos[2], _('accounts')) |
214 _printList(infos[2], _(u'accounts')) |
215 _printList(infos[3], _('aliases')) |
215 _printList(infos[3], _(u'aliases')) |
216 _printList(infos[4], _('relocated users')) |
216 _printList(infos[4], _(u'relocated users')) |
217 |
217 |
218 def domain_transport(): |
218 def domain_transport(): |
219 if argc < 3: |
219 if argc < 3: |
220 usage(EXIT.MISSING_ARGS, _(u'Missing domain name and new transport.')) |
220 usage(EXIT.MISSING_ARGS, _(u'Missing domain name and new transport.')) |
221 if argc < 4: |
221 if argc < 4: |