author | Pascal Volk <neverseen@users.sourceforge.net> |
Tue, 27 Jul 2010 19:29:44 +0000 | |
branch | v0.6.x |
changeset 318 | 4dc2edf02d11 |
parent 316 | 31d8931dc535 |
child 319 | f4956b4ceba1 |
permissions | -rw-r--r-- |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
1 |
# -*- coding: UTF-8 -*- |
162
0ac9ef587769
Updated copyright notices to include the year 2010.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
158
diff
changeset
|
2 |
# Copyright (c) 2007 - 2010, Pascal Volk |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
3 |
# See COPYING for distribution information. |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
5 |
""" |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
6 |
VirtualMailManager.Handler |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
7 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
8 |
A wrapper class. It wraps round all other classes and does some |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
9 |
dependencies checks. |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
10 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
11 |
Additionally it communicates with the PostgreSQL database, creates |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
12 |
or deletes directories of domains or users. |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
13 |
""" |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
14 |
|
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
15 |
import os |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
16 |
import re |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
17 |
|
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
18 |
from shutil import rmtree |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
19 |
from subprocess import Popen, PIPE |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
241
2493453f2c10
VMM/Handler: small code cleanups and an improved import statement.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
240
diff
changeset
|
21 |
from pyPgSQL import PgSQL # python-pgsql - http://pypgsql.sourceforge.net |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
22 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
23 |
from VirtualMailManager.Account import Account |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
24 |
from VirtualMailManager.Alias import Alias |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
25 |
from VirtualMailManager.AliasDomain import AliasDomain |
262
6eea85d8b91d
VMM: moved some non-init functions to the new common module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
259
diff
changeset
|
26 |
from VirtualMailManager.common import exec_ok |
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
27 |
from VirtualMailManager.Config import Config as Cfg |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
28 |
from VirtualMailManager.constants import \ |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
29 |
ACCOUNT_EXISTS, ALIAS_EXISTS, CONF_NOFILE, CONF_NOPERM, CONF_WRONGPERM, \ |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
30 |
DATABASE_ERROR, DOMAINDIR_GROUP_MISMATCH, DOMAIN_INVALID, \ |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
31 |
FOUND_DOTS_IN_PATH, INVALID_ARGUMENT, MAILDIR_PERM_MISMATCH, \ |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
32 |
NOT_EXECUTABLE, NO_SUCH_ACCOUNT, NO_SUCH_ALIAS, NO_SUCH_BINARY, \ |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
33 |
NO_SUCH_DIRECTORY, NO_SUCH_RELOCATED, RELOCATED_EXISTS |
294
7d1bafc6fa30
VMM/Domain: removed functions ace2idna() and idn2ascii().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
293
diff
changeset
|
34 |
from VirtualMailManager.Domain import Domain, get_gid |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
35 |
from VirtualMailManager.EmailAddress import EmailAddress |
285
d30a94f5aef5
VMM/Handler: import the errors before raising them.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
283
diff
changeset
|
36 |
from VirtualMailManager.errors import \ |
d30a94f5aef5
VMM/Handler: import the errors before raising them.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
283
diff
changeset
|
37 |
DomainError, NotRootError, PermissionError, VMMError |
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
38 |
from VirtualMailManager.mailbox import new as new_mailbox |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
39 |
from VirtualMailManager.pycompat import any |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
40 |
from VirtualMailManager.Relocated import Relocated |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
41 |
from VirtualMailManager.Transport import Transport |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
43 |
|
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
44 |
_ = lambda msg: msg |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
45 |
|
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
46 |
CFG_FILE = 'vmm.cfg' |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
47 |
CFG_PATH = '/root:/usr/local/etc:/etc' |
241
2493453f2c10
VMM/Handler: small code cleanups and an improved import statement.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
240
diff
changeset
|
48 |
RE_DOMAIN_SEARCH = """^[a-z0-9-\.]+$""" |
251
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
49 |
TYPE_ACCOUNT = 0x1 |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
50 |
TYPE_ALIAS = 0x2 |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
51 |
TYPE_RELOCATED = 0x4 |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
52 |
OTHER_TYPES = { |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
53 |
TYPE_ACCOUNT: (_(u'an account'), ACCOUNT_EXISTS), |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
54 |
TYPE_ALIAS: (_(u'an alias'), ALIAS_EXISTS), |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
55 |
TYPE_RELOCATED: (_(u'a relocated user'), RELOCATED_EXISTS), |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
56 |
} |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
57 |
|
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
58 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
59 |
class Handler(object): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
60 |
"""Wrapper class to simplify the access on all the stuff from |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
61 |
VirtualMailManager""" |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
62 |
__slots__ = ('_cfg', '_cfg_fname', '_dbh', '__warnings') |
191
db77501aeaed
VMM/Handler: __mailDirMake() add warning for skipped mailboxes.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
190
diff
changeset
|
63 |
|
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
64 |
def __init__(self, skip_some_checks=False): |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
65 |
"""Creates a new Handler instance. |
188
cf1b5f22dbd2
VMM/Handler: __init__ accepts now a config_type ('default'||'cli').
Pascal Volk <neverseen@users.sourceforge.net>
parents:
187
diff
changeset
|
66 |
|
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
67 |
``skip_some_checks`` : bool |
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
68 |
When a derived class knows how to handle all checks this |
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
69 |
argument may be ``True``. By default it is ``False`` and |
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
70 |
all checks will be performed. |
188
cf1b5f22dbd2
VMM/Handler: __init__ accepts now a config_type ('default'||'cli').
Pascal Volk <neverseen@users.sourceforge.net>
parents:
187
diff
changeset
|
71 |
|
216
0c8c053b451c
Moved VirtualMailManager/Exceptions to VirtualMailManager/errors.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
215
diff
changeset
|
72 |
Throws a NotRootError if your uid is greater 0. |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
73 |
""" |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
74 |
self._cfg_fname = '' |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
75 |
self.__warnings = [] |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
76 |
self._cfg = None |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
77 |
self._dbh = None |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
78 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
79 |
if os.geteuid(): |
216
0c8c053b451c
Moved VirtualMailManager/Exceptions to VirtualMailManager/errors.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
215
diff
changeset
|
80 |
raise NotRootError(_(u"You are not root.\n\tGood bye!\n"), |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
81 |
CONF_NOPERM) |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
82 |
if self.__check_cfg_file(): |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
83 |
self._cfg = Cfg(self._cfg_fname) |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
84 |
self._cfg.load() |
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
85 |
if not skip_some_checks: |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
86 |
self._cfg.check() |
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
87 |
self._chkenv() |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
88 |
|
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
89 |
def __find_cfg_file(self): |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
90 |
"""Search the CFG_FILE in CFG_PATH. |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
91 |
Raise a VMMError when no vmm.cfg could be found. |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
92 |
""" |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
93 |
for path in CFG_PATH.split(':'): |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
94 |
tmp = os.path.join(path, CFG_FILE) |
119
014335f38962
Small code cleanups (replaced dir+'/'+file by os.path.join()).
Pascal Volk <neverseen@users.sourceforge.net>
parents:
115
diff
changeset
|
95 |
if os.path.isfile(tmp): |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
96 |
self._cfg_fname = tmp |
94
0d303d15549e
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
90
diff
changeset
|
97 |
break |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
98 |
if not self._cfg_fname: |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
99 |
raise VMMError(_(u"Could not find '%(cfg_file)s' in: " |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
100 |
u"'%(cfg_path)s'") % {'cfg_file': CFG_FILE, |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
101 |
'cfg_path' : CFG_PATH}, CONF_NOFILE) |
94
0d303d15549e
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
90
diff
changeset
|
102 |
|
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
103 |
def __check_cfg_file(self): |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
104 |
"""Checks the configuration file, returns bool""" |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
105 |
self.__find_cfg_file() |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
106 |
fstat = os.stat(self._cfg_fname) |
48
0d5f58f8b8f5
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
47
diff
changeset
|
107 |
fmode = int(oct(fstat.st_mode & 0777)) |
187
38b9a9859749
VMM/{,cli/Cli}Config: Moved interactive stuff to new CliConfig class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
186
diff
changeset
|
108 |
if fmode % 100 and fstat.st_uid != fstat.st_gid or \ |
285
d30a94f5aef5
VMM/Handler: import the errors before raising them.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
283
diff
changeset
|
109 |
fmode % 10 and fstat.st_uid == fstat.st_gid: |
290
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
110 |
raise PermissionError(_(u"wrong permissions for '%(file)s': " |
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
111 |
u"%(perms)s\n`chmod 0600 %(file)s` would " |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
112 |
u"be great.") % {'file': self._cfg_fname, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
113 |
'perms': fmode}, CONF_WRONGPERM) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
114 |
else: |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
115 |
return True |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
116 |
|
190
1903d4ce97d7
VMM/{,cli/}Handler: reverted most of cs cf1b5f22dbd2 added a cli handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
117 |
def _chkenv(self): |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
118 |
"""Make sure our base_directory is a directory and that all |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
119 |
required executables exists and are executable. |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
120 |
If not, a VMMError will be raised""" |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
121 |
basedir = self._cfg.dget('misc.base_directory') |
168
fd496561acc6
vmm.cfg: a few re-renamed configuration options.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
166
diff
changeset
|
122 |
if not os.path.exists(basedir): |
28
87da30d30fde
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
24
diff
changeset
|
123 |
old_umask = os.umask(0006) |
168
fd496561acc6
vmm.cfg: a few re-renamed configuration options.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
166
diff
changeset
|
124 |
os.makedirs(basedir, 0771) |
270
d3389645a91d
configuration: Dropped setting misc.gid_mail.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
266
diff
changeset
|
125 |
os.chown(basedir, 0, 0) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
126 |
os.umask(old_umask) |
168
fd496561acc6
vmm.cfg: a few re-renamed configuration options.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
166
diff
changeset
|
127 |
elif not os.path.isdir(basedir): |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
128 |
raise VMMError(_(u"'%(path)s' is not a directory.\n(%(cfg_file)s: " |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
129 |
u"section 'misc', option 'base_directory')") % |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
130 |
{'path': basedir, 'cfg_file': self._cfg_fname}, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
131 |
NO_SUCH_DIRECTORY) |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
132 |
for opt, val in self._cfg.items('bin'): |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
133 |
try: |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
134 |
exec_ok(val) |
290
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
135 |
except VMMError, err: |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
136 |
if err.code is NO_SUCH_BINARY: |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
137 |
raise VMMError(_(u"'%(binary)s' doesn't exist.\n" |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
138 |
u"(%(cfg_file)s: section 'bin', option " |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
139 |
u"'%(option)s')") % {'binary': val, |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
140 |
'cfg_file': self._cfg_fname, 'option': opt}, |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
141 |
err.code) |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
142 |
elif err.code is NOT_EXECUTABLE: |
290
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
143 |
raise VMMError(_(u"'%(binary)s' is not executable.\n" |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
144 |
u"(%(cfg_file)s: section 'bin', option " |
290
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
145 |
u"'%(option)s')") % {'binary': val, |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
146 |
'cfg_file': self._cfg_fname, 'option': opt}, |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
147 |
err.code) |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
148 |
else: |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
184
diff
changeset
|
149 |
raise |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
150 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
151 |
def __dbConnect(self): |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
152 |
"""Creates a pyPgSQL.PgSQL.connection instance.""" |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
153 |
if self._dbh is None or (isinstance(self._dbh, PgSQL.Connection) and |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
154 |
not self._dbh._isOpen): |
83
cc195af37de0
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
80
diff
changeset
|
155 |
try: |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
156 |
self._dbh = PgSQL.connect( |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
157 |
database=self._cfg.dget('database.name'), |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
158 |
user=self._cfg.pget('database.user'), |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
159 |
host=self._cfg.dget('database.host'), |
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
160 |
password=self._cfg.pget('database.pass'), |
83
cc195af37de0
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
80
diff
changeset
|
161 |
client_encoding='utf8', unicode_results=True) |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
162 |
dbc = self._dbh.cursor() |
83
cc195af37de0
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
80
diff
changeset
|
163 |
dbc.execute("SET NAMES 'UTF8'") |
cc195af37de0
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
80
diff
changeset
|
164 |
dbc.close() |
cc195af37de0
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
80
diff
changeset
|
165 |
except PgSQL.libpq.DatabaseError, e: |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
166 |
raise VMMError(str(e), DATABASE_ERROR) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
167 |
|
251
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
168 |
def _chk_other_address_types(self, address, exclude): |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
169 |
"""Checks if the EmailAddress *address* is known as `TYPE_ACCOUNT`, |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
170 |
`TYPE_ALIAS` or `TYPE_RELOCATED`, but not as the `TYPE_*` specified |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
171 |
by *exclude*. If the *address* is known as one of the `TYPE_*`s |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
172 |
the according `TYPE_*` constant will be returned. Otherwise 0 will |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
173 |
be returned.""" |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
174 |
assert exclude in (TYPE_ACCOUNT, TYPE_ALIAS, TYPE_RELOCATED) and \ |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
175 |
isinstance(address, EmailAddress) |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
176 |
if exclude is not TYPE_ACCOUNT: |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
177 |
account = Account(self._dbh, address) |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
178 |
if account: |
251
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
179 |
return TYPE_ACCOUNT |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
180 |
if exclude is not TYPE_ALIAS: |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
181 |
alias = Alias(self._dbh, address) |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
182 |
if alias: |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
183 |
return TYPE_ALIAS |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
184 |
if exclude is not TYPE_RELOCATED: |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
185 |
relocated = Relocated(self._dbh, address) |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
186 |
if relocated: |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
187 |
return TYPE_RELOCATED |
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
188 |
return 0 |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
189 |
|
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
190 |
def _is_other_address(self, address, exclude): |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
191 |
"""Checks if *address* is known for an Account (TYPE_ACCOUNT), |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
192 |
Alias (TYPE_ALIAS) or Relocated (TYPE_RELOCATED), except for |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
193 |
*exclude*. Returns `False` if the address is not known for other |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
194 |
types. |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
195 |
|
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
196 |
Raises a `VMMError` if the address is known. |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
197 |
""" |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
198 |
other = self._chk_other_address_types(address, exclude) |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
199 |
if not other: |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
200 |
return False |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
201 |
msg = _(u"There is already %(a_type)s with the address '%(address)s'.") |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
202 |
raise VMMError(msg % {'a_type': OTHER_TYPES[other][0], |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
203 |
'address': address}, OTHER_TYPES[other][1]) |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
204 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
205 |
def __getAccount(self, address): |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
206 |
address = EmailAddress(address) |
197
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
207 |
self.__dbConnect() |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
208 |
return Account(self._dbh, address) |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
209 |
|
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
210 |
def __getAlias(self, address): |
197
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
211 |
address = EmailAddress(address) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
212 |
self.__dbConnect() |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
213 |
return Alias(self._dbh, address) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
214 |
|
197
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
215 |
def __getRelocated(self, address): |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
216 |
address = EmailAddress(address) |
197
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
217 |
self.__dbConnect() |
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
218 |
return Relocated(self._dbh, address) |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
219 |
|
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
220 |
def __getDomain(self, domainname): |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
221 |
self.__dbConnect() |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
222 |
return Domain(self._dbh, domainname) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
223 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
224 |
def __getDiskUsage(self, directory): |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
225 |
"""Estimate file space usage for the given directory. |
128
cf8116625866
Converted VirtualMailManager and Postconf to new-style classes.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
119
diff
changeset
|
226 |
|
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
227 |
Keyword arguments: |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
228 |
directory -- the directory to summarize recursively disk usage for |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
229 |
""" |
40 | 230 |
if self.__isdir(directory): |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
231 |
return Popen([self._cfg.dget('bin.du'), "-hs", directory], |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
232 |
stdout=PIPE).communicate()[0].split('\t')[0] |
40 | 233 |
else: |
234 |
return 0 |
|
235 |
||
236 |
def __isdir(self, directory): |
|
237 |
isdir = os.path.isdir(directory) |
|
238 |
if not isdir: |
|
239 |
self.__warnings.append(_('No such directory: %s') % directory) |
|
240 |
return isdir |
|
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
241 |
|
310
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
242 |
def __make_domain_dir(self, domain): |
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
243 |
cwd = os.getcwd() |
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
244 |
hashdir, domdir = domain.directory.split(os.path.sep)[-2:] |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
245 |
os.chdir(self._cfg.dget('misc.base_directory')) |
310
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
246 |
if not os.path.isdir(hashdir): |
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
247 |
os.mkdir(hashdir, 0711) |
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
248 |
os.chown(hashdir, 0, 0) |
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
249 |
os.mkdir(os.path.join(hashdir, domdir), |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
250 |
self._cfg.dget('domain.directory_mode')) |
310
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
251 |
os.chown(domain.directory, 0, domain.gid) |
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
252 |
os.chdir(cwd) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
253 |
|
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
254 |
def __make_home(self, account): |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
255 |
"""Create a home directory for the new Account *account*.""" |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
256 |
os.umask(0007) |
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
257 |
os.chdir(account.domain_directory) |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
258 |
os.mkdir('%s' % account.uid, self._cfg.dget('account.directory_mode')) |
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
259 |
os.chown('%s' % account.uid, account.uid, account.gid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
260 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
261 |
def __userDirDelete(self, domdir, uid, gid): |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
262 |
if uid > 0 and gid > 0: |
51
f5ca21303871
* Switched from pygettext to xgettext -> small adjustments to these files:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
50
diff
changeset
|
263 |
userdir = '%s' % uid |
f5ca21303871
* Switched from pygettext to xgettext -> small adjustments to these files:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
50
diff
changeset
|
264 |
if userdir.count('..') or domdir.count('..'): |
216
0c8c053b451c
Moved VirtualMailManager/Exceptions to VirtualMailManager/errors.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
215
diff
changeset
|
265 |
raise VMMError(_(u'Found ".." in home directory path.'), |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
266 |
FOUND_DOTS_IN_PATH) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
267 |
if os.path.isdir(domdir): |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
268 |
os.chdir(domdir) |
51
f5ca21303871
* Switched from pygettext to xgettext -> small adjustments to these files:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
50
diff
changeset
|
269 |
if os.path.isdir(userdir): |
f5ca21303871
* Switched from pygettext to xgettext -> small adjustments to these files:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
50
diff
changeset
|
270 |
mdstat = os.stat(userdir) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
271 |
if (mdstat.st_uid, mdstat.st_gid) != (uid, gid): |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
272 |
raise VMMError(_(u'Detected owner/group mismatch in ' |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
273 |
u'home directory.'), |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
274 |
MAILDIR_PERM_MISMATCH) |
51
f5ca21303871
* Switched from pygettext to xgettext -> small adjustments to these files:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
50
diff
changeset
|
275 |
rmtree(userdir, ignore_errors=True) |
40 | 276 |
else: |
216
0c8c053b451c
Moved VirtualMailManager/Exceptions to VirtualMailManager/errors.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
215
diff
changeset
|
277 |
raise VMMError(_(u"No such directory: %s") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
278 |
os.path.join(domdir, userdir), |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
279 |
NO_SUCH_DIRECTORY) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
280 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
281 |
def __domDirDelete(self, domdir, gid): |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
282 |
if gid > 0: |
40 | 283 |
if not self.__isdir(domdir): |
284 |
return |
|
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
285 |
basedir = self._cfg.dget('misc.base_directory') |
191
db77501aeaed
VMM/Handler: __mailDirMake() add warning for skipped mailboxes.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
190
diff
changeset
|
286 |
domdirdirs = domdir.replace(basedir + '/', '').split('/') |
119
014335f38962
Small code cleanups (replaced dir+'/'+file by os.path.join()).
Pascal Volk <neverseen@users.sourceforge.net>
parents:
115
diff
changeset
|
287 |
domdirparent = os.path.join(basedir, domdirdirs[0]) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
288 |
if basedir.count('..') or domdir.count('..'): |
216
0c8c053b451c
Moved VirtualMailManager/Exceptions to VirtualMailManager/errors.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
215
diff
changeset
|
289 |
raise VMMError(_(u'Found ".." in domain directory path.'), |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
290 |
FOUND_DOTS_IN_PATH) |
119
014335f38962
Small code cleanups (replaced dir+'/'+file by os.path.join()).
Pascal Volk <neverseen@users.sourceforge.net>
parents:
115
diff
changeset
|
291 |
if os.path.isdir(domdirparent): |
014335f38962
Small code cleanups (replaced dir+'/'+file by os.path.join()).
Pascal Volk <neverseen@users.sourceforge.net>
parents:
115
diff
changeset
|
292 |
os.chdir(domdirparent) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
293 |
if os.lstat(domdirdirs[1]).st_gid != gid: |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
294 |
raise VMMError(_(u'Detected group mismatch in domain ' |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
295 |
u'directory.'), DOMAINDIR_GROUP_MISMATCH) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
296 |
rmtree(domdirdirs[1], ignore_errors=True) |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
297 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
298 |
def hasWarnings(self): |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
299 |
"""Checks if warnings are present, returns bool.""" |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
300 |
return bool(len(self.__warnings)) |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
301 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
302 |
def getWarnings(self): |
221
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
303 |
"""Returns a list with all available warnings and resets all |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
304 |
warnings. |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
305 |
|
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
306 |
""" |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
307 |
ret_val = self.__warnings[:] |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
308 |
del self.__warnings[:] |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
309 |
return ret_val |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
310 |
|
255
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
311 |
def cfg_dget(self, option): |
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
312 |
"""Get the configured value of the *option* (section.option). |
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
313 |
When the option was not configured its default value will be |
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
314 |
returned.""" |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
315 |
return self._cfg.dget(option) |
40 | 316 |
|
255
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
317 |
def cfg_pget(self, option): |
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
318 |
"""Get the configured value of the *option* (section.option).""" |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
319 |
return self._cfg.pget(option) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
320 |
|
280
db35d2eec518
VMM/{Config,Handler}: moved Config.install() to Handler.cfg_install().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
278
diff
changeset
|
321 |
def cfg_install(self): |
db35d2eec518
VMM/{Config,Handler}: moved Config.install() to Handler.cfg_install().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
278
diff
changeset
|
322 |
"""Installs the cfg_dget method as ``cfg_dget`` into the built-in |
db35d2eec518
VMM/{Config,Handler}: moved Config.install() to Handler.cfg_install().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
278
diff
changeset
|
323 |
namespace.""" |
db35d2eec518
VMM/{Config,Handler}: moved Config.install() to Handler.cfg_install().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
278
diff
changeset
|
324 |
import __builtin__ |
db35d2eec518
VMM/{Config,Handler}: moved Config.install() to Handler.cfg_install().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
278
diff
changeset
|
325 |
assert 'cfg_dget' not in __builtin__.__dict__ |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
326 |
__builtin__.__dict__['cfg_dget'] = self._cfg.dget |
280
db35d2eec518
VMM/{Config,Handler}: moved Config.install() to Handler.cfg_install().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
278
diff
changeset
|
327 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
328 |
def domainAdd(self, domainname, transport=None): |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
329 |
dom = self.__getDomain(domainname) |
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
330 |
if transport is None: |
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
331 |
dom.set_transport(Transport(self._dbh, |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
332 |
transport=self._cfg.dget('misc.transport'))) |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
333 |
else: |
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
334 |
dom.set_transport(Transport(self._dbh, transport=transport)) |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
335 |
dom.set_directory(self._cfg.dget('misc.base_directory')) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
336 |
dom.save() |
310
644e2cc4a441
VMM/Handler: Reworked __domDirMake and reamed to __make_domain_dir.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
309
diff
changeset
|
337 |
self.__make_domain_dir(dom) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
338 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
339 |
def domainTransport(self, domainname, transport, force=None): |
18
c98e08791ee8
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
17
diff
changeset
|
340 |
if force is not None and force != 'force': |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
341 |
raise DomainError(_(u"Invalid argument: '%s'") % force, |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
342 |
INVALID_ARGUMENT) |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
343 |
dom = self.__getDomain(domainname) |
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
344 |
trsp = Transport(self._dbh, transport=transport) |
18
c98e08791ee8
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
17
diff
changeset
|
345 |
if force is None: |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
346 |
dom.update_transport(trsp) |
18
c98e08791ee8
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
17
diff
changeset
|
347 |
else: |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
348 |
dom.update_transport(trsp, force=True) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
349 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
350 |
def domainDelete(self, domainname, force=None): |
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
351 |
if force and force not in ('deluser', 'delalias', 'delall'): |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
352 |
raise DomainError(_(u"Invalid argument: '%s'") % force, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
353 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
354 |
dom = self.__getDomain(domainname) |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
355 |
gid = dom.gid |
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
356 |
domdir = dom.directory |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
357 |
if self._cfg.dget('domain.force_deletion') or force == 'delall': |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
358 |
dom.delete(True, True) |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
359 |
elif force == 'deluser': |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
360 |
dom.delete(deluser=True) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
361 |
elif force == 'delalias': |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
362 |
dom.delete(delalias=True) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
363 |
else: |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
364 |
dom.delete() |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
365 |
if self._cfg.dget('domain.delete_directory'): |
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
366 |
self.__domDirDelete(domdir, gid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
367 |
|
62
869de537a020
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
55
diff
changeset
|
368 |
def domainInfo(self, domainname, details=None): |
869de537a020
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
55
diff
changeset
|
369 |
if details not in [None, 'accounts', 'aliasdomains', 'aliases', 'full', |
191
db77501aeaed
VMM/Handler: __mailDirMake() add warning for skipped mailboxes.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
190
diff
changeset
|
370 |
'relocated']: |
216
0c8c053b451c
Moved VirtualMailManager/Exceptions to VirtualMailManager/errors.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
215
diff
changeset
|
371 |
raise VMMError(_(u'Invalid argument: “%s”') % details, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
372 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
373 |
dom = self.__getDomain(domainname) |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
374 |
dominfo = dom.get_info() |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
375 |
if dominfo['domainname'].startswith('xn--'): |
294
7d1bafc6fa30
VMM/Domain: removed functions ace2idna() and idn2ascii().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
293
diff
changeset
|
376 |
dominfo['domainname'] += ' (%s)' % \ |
7d1bafc6fa30
VMM/Domain: removed functions ace2idna() and idn2ascii().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
293
diff
changeset
|
377 |
dominfo['domainname'].decode('idna') |
62
869de537a020
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
55
diff
changeset
|
378 |
if details is None: |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
379 |
return dominfo |
62
869de537a020
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
55
diff
changeset
|
380 |
elif details == 'accounts': |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
381 |
return (dominfo, dom.get_accounts()) |
62
869de537a020
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
55
diff
changeset
|
382 |
elif details == 'aliasdomains': |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
383 |
return (dominfo, dom.get_aliase_names()) |
62
869de537a020
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
55
diff
changeset
|
384 |
elif details == 'aliases': |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
385 |
return (dominfo, dom.get_aliases()) |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
386 |
elif details == 'relocated': |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
387 |
return(dominfo, dom.get_relocated()) |
62
869de537a020
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
55
diff
changeset
|
388 |
else: |
236
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
389 |
return (dominfo, dom.get_aliase_names(), dom.get_accounts(), |
084331dd1e4c
VMM/Domain: reworked Domain class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
233
diff
changeset
|
390 |
dom.get_aliases(), dom.get_relocated()) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
391 |
|
55
15c873f94ba6
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
54
diff
changeset
|
392 |
def aliasDomainAdd(self, aliasname, domainname): |
15c873f94ba6
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
54
diff
changeset
|
393 |
"""Adds an alias domain to the domain. |
53
5b50eb306d37
* 'VirtualMailManager/DomainAlias.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
52
diff
changeset
|
394 |
|
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
395 |
Arguments: |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
396 |
|
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
397 |
`aliasname` : basestring |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
398 |
The name of the alias domain |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
399 |
`domainname` : basestring |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
400 |
The name of the target domain |
45
9e66138aad0b
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
44
diff
changeset
|
401 |
""" |
9e66138aad0b
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
44
diff
changeset
|
402 |
dom = self.__getDomain(domainname) |
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
403 |
aliasDom = AliasDomain(self._dbh, aliasname) |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
404 |
aliasDom.set_destination(dom) |
55
15c873f94ba6
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
54
diff
changeset
|
405 |
aliasDom.save() |
53
5b50eb306d37
* 'VirtualMailManager/DomainAlias.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
52
diff
changeset
|
406 |
|
55
15c873f94ba6
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
54
diff
changeset
|
407 |
def aliasDomainInfo(self, aliasname): |
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
408 |
"""Returns a dict (keys: "alias" and "domain") with the names of |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
409 |
the alias domain and its primary domain.""" |
53
5b50eb306d37
* 'VirtualMailManager/DomainAlias.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
52
diff
changeset
|
410 |
self.__dbConnect() |
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
411 |
aliasDom = AliasDomain(self._dbh, aliasname) |
55
15c873f94ba6
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
54
diff
changeset
|
412 |
return aliasDom.info() |
45
9e66138aad0b
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
44
diff
changeset
|
413 |
|
78
8f1e501b1bb1
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
76
diff
changeset
|
414 |
def aliasDomainSwitch(self, aliasname, domainname): |
8f1e501b1bb1
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
76
diff
changeset
|
415 |
"""Modifies the target domain of an existing alias domain. |
8f1e501b1bb1
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
76
diff
changeset
|
416 |
|
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
417 |
Arguments: |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
418 |
|
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
419 |
`aliasname` : basestring |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
420 |
The name of the alias domain |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
421 |
`domainname` : basestring |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
422 |
The name of the new target domain |
78
8f1e501b1bb1
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
76
diff
changeset
|
423 |
""" |
8f1e501b1bb1
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
76
diff
changeset
|
424 |
dom = self.__getDomain(domainname) |
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
425 |
aliasDom = AliasDomain(self._dbh, aliasname) |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
426 |
aliasDom.set_destination(dom) |
78
8f1e501b1bb1
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
76
diff
changeset
|
427 |
aliasDom.switch() |
8f1e501b1bb1
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
76
diff
changeset
|
428 |
|
55
15c873f94ba6
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
54
diff
changeset
|
429 |
def aliasDomainDelete(self, aliasname): |
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
430 |
"""Deletes the given alias domain. |
53
5b50eb306d37
* 'VirtualMailManager/DomainAlias.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
52
diff
changeset
|
431 |
|
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
432 |
Argument: |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
433 |
|
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
434 |
`aliasname` : basestring |
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
435 |
The name of the alias domain |
45
9e66138aad0b
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
44
diff
changeset
|
436 |
""" |
9e66138aad0b
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
44
diff
changeset
|
437 |
self.__dbConnect() |
244
698ba4208ddc
VMM/Handler: adjusted Handler.aliasDomain*() methods to changes
Pascal Volk <neverseen@users.sourceforge.net>
parents:
241
diff
changeset
|
438 |
aliasDom = AliasDomain(self._dbh, aliasname) |
55
15c873f94ba6
* 'VirtualMailManager/Exceptions.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
54
diff
changeset
|
439 |
aliasDom.delete() |
45
9e66138aad0b
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
44
diff
changeset
|
440 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
441 |
def domainList(self, pattern=None): |
241
2493453f2c10
VMM/Handler: small code cleanups and an improved import statement.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
240
diff
changeset
|
442 |
from VirtualMailManager.Domain import search |
35
22cc616aef61
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
34
diff
changeset
|
443 |
like = False |
241
2493453f2c10
VMM/Handler: small code cleanups and an improved import statement.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
240
diff
changeset
|
444 |
if pattern and (pattern.startswith('%') or pattern.endswith('%')): |
2493453f2c10
VMM/Handler: small code cleanups and an improved import statement.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
240
diff
changeset
|
445 |
like = True |
2493453f2c10
VMM/Handler: small code cleanups and an improved import statement.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
240
diff
changeset
|
446 |
if not re.match(RE_DOMAIN_SEARCH, pattern.strip('%')): |
290
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
447 |
raise VMMError(_(u"The pattern '%s' contains invalid " |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
448 |
u"characters.") % pattern, DOMAIN_INVALID) |
35
22cc616aef61
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
34
diff
changeset
|
449 |
self.__dbConnect() |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
450 |
return search(self._dbh, pattern=pattern, like=like) |
35
22cc616aef61
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
34
diff
changeset
|
451 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
452 |
def user_add(self, emailaddress, password): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
453 |
"""Wrapper around Account.set_password() and Account.save().""" |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
454 |
acc = self.__getAccount(emailaddress) |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
455 |
acc.set_password(password) |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
456 |
acc.save() |
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
457 |
oldpwd = os.getcwd() |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
458 |
self.__make_home(acc) |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
459 |
mailbox = new_mailbox(acc) |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
460 |
mailbox.create() |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
461 |
folders = self._cfg.dget('mailbox.folders').split(':') |
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
462 |
if any(folders): |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
463 |
bad = mailbox.add_boxes(folders, |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
464 |
self._cfg.dget('mailbox.subscribe')) |
309
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
465 |
if bad: |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
466 |
self.__warnings.append(_(u"Skipped mailbox folders:") + |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
467 |
'\n\t- ' + '\n\t- '.join(bad)) |
d21423478803
VMM/mailbox: Added to the repository.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
294
diff
changeset
|
468 |
os.chdir(oldpwd) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
469 |
|
221
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
470 |
def aliasAdd(self, aliasaddress, *targetaddresses): |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
471 |
"""Creates a new `Alias` entry for the given *aliasaddress* with |
221
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
472 |
the given *targetaddresses*.""" |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
473 |
alias = self.__getAlias(aliasaddress) |
221
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
474 |
destinations = [EmailAddress(address) for address in targetaddresses] |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
475 |
warnings = [] |
281
59ff7c719697
VMM/Alias: moved the postconf stuff from the Handlers to Alias class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
280
diff
changeset
|
476 |
destinations = alias.add_destinations(destinations, warnings) |
221
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
477 |
if warnings: |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
478 |
self.__warnings.append(_('Ignored destination addresses:')) |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
479 |
self.__warnings.extend((' * %s' % w for w in warnings)) |
371ae0b4443d
VMM/Alias: renamed Alias.add_destination() to add_destinations().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
216
diff
changeset
|
480 |
for destination in destinations: |
282
28871c1be260
VMM/Handler: fixed destination check in Handler.aliasAdd().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
281
diff
changeset
|
481 |
if get_gid(self._dbh, destination.domainname) and \ |
290
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
482 |
not self._chk_other_address_types(destination, TYPE_RELOCATED): |
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
483 |
self.__warnings.append(_(u"The destination account/alias '%s' " |
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
484 |
u"doesn't exist.") % destination) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
485 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
486 |
def user_delete(self, emailaddress, force=None): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
487 |
"""Wrapper around Account.delete(...)""" |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
488 |
if force not in (None, 'delalias'): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
489 |
raise VMMError(_(u"Invalid argument: '%s'") % force, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
490 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
491 |
acc = self.__getAccount(emailaddress) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
492 |
if not acc: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
493 |
raise VMMError(_(u"The account '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
494 |
acc.address, NO_SUCH_ACCOUNT) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
495 |
uid = acc.uid |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
496 |
gid = acc.gid |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
497 |
dom_dir = acc.domain_directory |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
498 |
acc_dir = acc.home |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
499 |
acc.delete(bool(force)) |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
500 |
if self._cfg.dget('account.delete_directory'): |
47
191d5a5adc4a
* Removed gettext import and setup in VirtualMailManager/:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
45
diff
changeset
|
501 |
try: |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
502 |
self.__userDirDelete(dom_dir, uid, gid) |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
503 |
except VMMError, err: |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
504 |
if err.code in (FOUND_DOTS_IN_PATH, MAILDIR_PERM_MISMATCH, |
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
505 |
NO_SUCH_DIRECTORY): |
47
191d5a5adc4a
* Removed gettext import and setup in VirtualMailManager/:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
45
diff
changeset
|
506 |
warning = _(u"""\ |
191d5a5adc4a
* Removed gettext import and setup in VirtualMailManager/:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
45
diff
changeset
|
507 |
The account has been successfully deleted from the database. |
191d5a5adc4a
* Removed gettext import and setup in VirtualMailManager/:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
45
diff
changeset
|
508 |
But an error occurred while deleting the following directory: |
133
2d5c4745efec
Replaced angle quotes by quotation marks.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
132
diff
changeset
|
509 |
“%(directory)s” |
192
0854fb9f3bc5
VMM/Handler: fixed a SyntaxError. Oops
Pascal Volk <neverseen@users.sourceforge.net>
parents:
191
diff
changeset
|
510 |
Reason: %(reason)s""") % \ |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
511 |
{'directory': acc_dir, 'reason': err.msg} |
47
191d5a5adc4a
* Removed gettext import and setup in VirtualMailManager/:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
45
diff
changeset
|
512 |
self.__warnings.append(warning) |
191d5a5adc4a
* Removed gettext import and setup in VirtualMailManager/:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
45
diff
changeset
|
513 |
else: |
191
db77501aeaed
VMM/Handler: __mailDirMake() add warning for skipped mailboxes.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
190
diff
changeset
|
514 |
raise |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
515 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
516 |
def aliasInfo(self, aliasaddress): |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
517 |
"""Returns an iterator object for all destinations (`EmailAddress` |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
518 |
instances) for the `Alias` with the given *aliasaddress*.""" |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
519 |
alias = self.__getAlias(aliasaddress) |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
520 |
if alias: |
215
33f727efa7c4
PEP-8-ified the work of the last days.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
208
diff
changeset
|
521 |
return alias.get_destinations() |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
522 |
if not self._is_other_address(alias.address, TYPE_ALIAS): |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
523 |
raise VMMError(_(u"The alias '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
524 |
alias.address, NO_SUCH_ALIAS) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
525 |
|
54
1fc1f82c662f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
53
diff
changeset
|
526 |
def aliasDelete(self, aliasaddress, targetaddress=None): |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
527 |
"""Deletes the `Alias` *aliasaddress* with all its destinations from |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
528 |
the database. If *targetaddress* is not ``None``, only this |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
529 |
destination will be removed from the alias.""" |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
530 |
alias = self.__getAlias(aliasaddress) |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
531 |
if targetaddress is None: |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
532 |
alias.delete() |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
533 |
else: |
215
33f727efa7c4
PEP-8-ified the work of the last days.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
208
diff
changeset
|
534 |
alias.del_destination(EmailAddress(targetaddress)) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
535 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
536 |
def user_info(self, emailaddress, details=None): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
537 |
"""Wrapper around Account.get_info(...)""" |
174
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
168
diff
changeset
|
538 |
if details not in (None, 'du', 'aliases', 'full'): |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
539 |
raise VMMError(_(u"Invalid argument: '%s'") % details, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
540 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
541 |
acc = self.__getAccount(emailaddress) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
542 |
if not acc: |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
543 |
if not self._is_other_address(acc.address, TYPE_ACCOUNT): |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
544 |
raise VMMError(_(u"The account '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
545 |
acc.address, NO_SUCH_ACCOUNT) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
546 |
info = acc.get_info() |
318
4dc2edf02d11
VMM//{,cli/}Handler: Reworked configuration related parts.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
316
diff
changeset
|
547 |
if self._cfg.dget('account.disk_usage') or details in ('du', 'full'): |
293
a77b67673aa6
VMM/Account: replaced attribute _mid : int by _mail : MailLocation.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
290
diff
changeset
|
548 |
path = os.path.join(acc.home, acc.mail_location.directory) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
549 |
info['disk usage'] = self.__getDiskUsage(path) |
174
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
168
diff
changeset
|
550 |
if details in (None, 'du'): |
90
1734eb5101c6
* 'VirtualMailManager/Account.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
88
diff
changeset
|
551 |
return info |
174
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
168
diff
changeset
|
552 |
if details in ('aliases', 'full'): |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
553 |
return (info, acc.get_aliases()) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
554 |
return info |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
555 |
|
255
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
556 |
def user_by_uid(self, uid): |
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
557 |
"""Search for an Account by its *uid*. |
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
558 |
Returns a dict (address, uid and gid) if a user could be found.""" |
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
559 |
from VirtualMailManager.Account import get_account_by_uid |
19
bf9a03c476fc
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
18
diff
changeset
|
560 |
self.__dbConnect() |
255
d2ddd4a6528d
VMM/Handler: renamed some methods and added their missing docstrings:
Pascal Volk <neverseen@users.sourceforge.net>
parents:
254
diff
changeset
|
561 |
return get_account_by_uid(uid, self._dbh) |
19
bf9a03c476fc
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
18
diff
changeset
|
562 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
563 |
def user_password(self, emailaddress, password): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
564 |
"""Wrapper for Account.modify('password' ...).""" |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
565 |
if not isinstance(password, basestring) or not password: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
566 |
raise VMMError(_(u"Could not accept password: '%s'") % password, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
567 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
568 |
acc = self.__getAccount(emailaddress) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
569 |
if not acc: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
570 |
raise VMMError(_(u"The account '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
571 |
acc.address, NO_SUCH_ACCOUNT) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
572 |
acc.modify('password', password) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
573 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
574 |
def user_name(self, emailaddress, name): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
575 |
"""Wrapper for Account.modify('name', ...).""" |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
576 |
if not isinstance(name, basestring) or not name: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
577 |
raise VMMError(_(u"Could not accept name: '%s'") % name, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
578 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
579 |
acc = self.__getAccount(emailaddress) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
580 |
if not acc: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
581 |
raise VMMError(_(u"The account '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
582 |
acc.address, NO_SUCH_ACCOUNT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
583 |
acc.modify('name', name) |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
584 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
585 |
def user_transport(self, emailaddress, transport): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
586 |
"""Wrapper for Account.modify('transport', ...).""" |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
587 |
if not isinstance(transport, basestring) or not transport: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
588 |
raise VMMError(_(u"Could not accept transport: '%s'") % transport, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
589 |
INVALID_ARGUMENT) |
17
fe9be0081e5f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
16
diff
changeset
|
590 |
acc = self.__getAccount(emailaddress) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
591 |
if not acc: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
592 |
raise VMMError(_(u"The account '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
593 |
acc.address, NO_SUCH_ACCOUNT) |
17
fe9be0081e5f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
16
diff
changeset
|
594 |
acc.modify('transport', transport) |
fe9be0081e5f
* 'VirtualMailManager/VirtualMailManager.py'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
16
diff
changeset
|
595 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
596 |
def user_disable(self, emailaddress, service=None): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
597 |
"""Wrapper for Account.disable(service)""" |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
598 |
if service not in (None, 'all', 'imap', 'pop3', 'smtp', 'sieve'): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
599 |
raise VMMError(_(u"Could not accept service: '%s'") % service, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
600 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
601 |
acc = self.__getAccount(emailaddress) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
602 |
if not acc: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
603 |
raise VMMError(_(u"The account '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
604 |
acc.address, NO_SUCH_ACCOUNT) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
605 |
acc.disable(service) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
606 |
|
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
607 |
def user_enable(self, emailaddress, service=None): |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
608 |
"""Wrapper for Account.enable(service)""" |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
609 |
if service not in (None, 'all', 'imap', 'pop3', 'smtp', 'sieve'): |
290
e2785e04f92e
VMM/…: re-indented long queries and error messages.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
285
diff
changeset
|
610 |
raise VMMError(_(u"Could not accept service: '%s'") % service, |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
611 |
INVALID_ARGUMENT) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
612 |
acc = self.__getAccount(emailaddress) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
613 |
if not acc: |
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
614 |
raise VMMError(_(u"The account '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
615 |
acc.address, NO_SUCH_ACCOUNT) |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
616 |
acc.enable(service) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
617 |
|
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
618 |
def relocatedAdd(self, emailaddress, targetaddress): |
197
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
619 |
"""Creates a new `Relocated` entry in the database. If there is |
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
620 |
already a relocated user with the given *emailaddress*, only the |
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
621 |
*targetaddress* for the relocated user will be updated.""" |
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
622 |
relocated = self.__getRelocated(emailaddress) |
215
33f727efa7c4
PEP-8-ified the work of the last days.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
208
diff
changeset
|
623 |
relocated.set_destination(EmailAddress(targetaddress)) |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
624 |
|
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
625 |
def relocatedInfo(self, emailaddress): |
197
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
626 |
"""Returns the target address of the relocated user with the given |
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
627 |
*emailaddress*.""" |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
628 |
relocated = self.__getRelocated(emailaddress) |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
629 |
if relocated: |
251
0963ad2f5fe2
VMM/Handler: Implemented Handler._chk_other_address_types().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
244
diff
changeset
|
630 |
return relocated.get_info() |
283
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
631 |
if not self._is_other_address(relocated.address, TYPE_RELOCATED): |
ea6d052de24a
VMM/Handler: code cleanups in the user/alias/relocated info methods.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
282
diff
changeset
|
632 |
raise VMMError(_(u"The relocated user '%s' doesn't exist.") % |
316
31d8931dc535
VMM/constants: Replaced the constants subpackage by a module.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
310
diff
changeset
|
633 |
relocated.address, NO_SUCH_RELOCATED) |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
634 |
|
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
635 |
def relocatedDelete(self, emailaddress): |
197
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
636 |
"""Deletes the relocated user with the given *emailaddress* from |
d2712e8c724e
VMM/{Relocated,Handler}: reworked Relocated class, adjusted Handler.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
196
diff
changeset
|
637 |
the database.""" |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
638 |
relocated = self.__getRelocated(emailaddress) |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
639 |
relocated.delete() |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
78
diff
changeset
|
640 |
|
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
641 |
def __del__(self): |
196
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
642 |
if isinstance(self._dbh, PgSQL.Connection) and self._dbh._isOpen: |
65a3163bd113
VMM/{Alias,Handler}: reworked Alias class, adjusted Handler class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
192
diff
changeset
|
643 |
self._dbh.close() |
277
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
644 |
|
e50ffc0b8468
VMM{,/cli}/Handler: adjusted user* methods to the changes in Account.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
272
diff
changeset
|
645 |
del _ |