author | Pascal Volk <neverseen@users.sourceforge.net> |
Mon, 22 Feb 2010 03:14:12 +0000 | |
branch | v0.6.x |
changeset 207 | 95be8f62bc0c |
parent 199 | 0684790fff7c |
child 208 | efa1327b721f |
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:
152
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. |
138
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
4 |
# package initialization code |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
5 |
# |
138
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
6 |
|
188
cf1b5f22dbd2
VMM/Handler: __init__ accepts now a config_type ('default'||'cli').
Pascal Volk <neverseen@users.sourceforge.net>
parents:
187
diff
changeset
|
7 |
import gettext |
138
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
8 |
import os |
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
9 |
import re |
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
10 |
import locale |
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
11 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
12 |
from encodings.idna import ToASCII, ToUnicode |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
13 |
|
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
14 |
from VirtualMailManager.constants.ERROR import \ |
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
15 |
DOMAIN_INVALID, DOMAIN_TOO_LONG, LOCALPART_INVALID, LOCALPART_TOO_LONG, \ |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
16 |
NOT_EXECUTABLE, NO_SUCH_BINARY, NO_SUCH_DIRECTORY |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
17 |
from VirtualMailManager.constants.VERSION import * |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
18 |
from VirtualMailManager.Exceptions import VMMException |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
19 |
|
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
20 |
|
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
21 |
__all__ = [ |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
22 |
# imported modules |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
23 |
'os', 're', 'locale', |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
24 |
# version information from VERSION |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
25 |
'__author__', '__date__', '__version__', |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
26 |
# error codes |
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
27 |
'ENCODING', 'ace2idna', 'check_domainname', 'check_localpart', 'exec_ok', |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
28 |
'expand_path', 'get_unicode', 'idn2ascii', 'is_dir', |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
29 |
] |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
30 |
|
138
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
31 |
|
152
3dbee02711cd
Ignore unsupported locale setting and silently fall back to 'C'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
141
diff
changeset
|
32 |
# Try to set all of the locales according to the current |
3dbee02711cd
Ignore unsupported locale setting and silently fall back to 'C'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
141
diff
changeset
|
33 |
# environment variables and get the character encoding. |
3dbee02711cd
Ignore unsupported locale setting and silently fall back to 'C'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
141
diff
changeset
|
34 |
try: |
3dbee02711cd
Ignore unsupported locale setting and silently fall back to 'C'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
141
diff
changeset
|
35 |
locale.setlocale(locale.LC_ALL, '') |
3dbee02711cd
Ignore unsupported locale setting and silently fall back to 'C'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
141
diff
changeset
|
36 |
except locale.Error: |
3dbee02711cd
Ignore unsupported locale setting and silently fall back to 'C'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
141
diff
changeset
|
37 |
locale.setlocale(locale.LC_ALL, 'C') |
138
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
38 |
ENCODING = locale.nl_langinfo(locale.CODESET) |
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
39 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
40 |
RE_ASCII_CHARS = r"^[\x20-\x7E]*$" |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
41 |
RE_DOMAIN = r"^(?:[a-z0-9-]{1,63}\.){1,}[a-z]{2,6}$" |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
42 |
RE_LOCALPART = r"[^\w!#$%&'\*\+-\.\/=?^_`{\|}~]" |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
43 |
|
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
44 |
|
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
45 |
# there may be many domain and e-mail address checks |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
46 |
re_obj_domain = re.compile(RE_DOMAIN) |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
47 |
re_obj_localpart = re.compile(RE_LOCALPART) |
138
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
48 |
|
617f27715b01
Reorganized module import.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
49 |
|
188
cf1b5f22dbd2
VMM/Handler: __init__ accepts now a config_type ('default'||'cli').
Pascal Volk <neverseen@users.sourceforge.net>
parents:
187
diff
changeset
|
50 |
gettext.install('vmm', '/usr/local/share/locale', unicode=1) |
cf1b5f22dbd2
VMM/Handler: __init__ accepts now a config_type ('default'||'cli').
Pascal Volk <neverseen@users.sourceforge.net>
parents:
187
diff
changeset
|
51 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
52 |
|
174
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
162
diff
changeset
|
53 |
def get_unicode(string): |
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
162
diff
changeset
|
54 |
"""Converts `string` to `unicode`, if necessary.""" |
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
162
diff
changeset
|
55 |
if isinstance(string, unicode): |
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
162
diff
changeset
|
56 |
return string |
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
162
diff
changeset
|
57 |
return unicode(string, ENCODING, 'replace') |
974bafa59330
VMM/Config: reworked configuration handling.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
162
diff
changeset
|
58 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
59 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
60 |
def expand_path(path): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
61 |
"""Expands paths, starting with ``.`` or ``~``, to an absolute path.""" |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
62 |
if path.startswith('.'): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
63 |
return os.path.abspath(path) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
64 |
if path.startswith('~'): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
65 |
return os.path.expanduser(path) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
66 |
return path |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
67 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
68 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
69 |
def is_dir(path): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
70 |
"""Checks if ``path`` is a directory. |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
71 |
|
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
72 |
Throws a `VMMException` if ``path`` is not a directory. |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
73 |
""" |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
74 |
path = expand_path(path) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
75 |
if not os.path.isdir(path): |
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
76 |
raise VMMException(_(u'“%s” is not a directory') % |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
77 |
get_unicode(path), NO_SUCH_DIRECTORY) |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
78 |
return path |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
79 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
80 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
81 |
def exec_ok(binary): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
82 |
"""Checks if the ``binary`` exists and if it is executable. |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
83 |
|
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
84 |
Throws a `VMMException` if the ``binary`` isn't a file or is not |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
85 |
executable. |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
86 |
""" |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
87 |
binary = expand_path(binary) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
88 |
if not os.path.isfile(binary): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
89 |
raise VMMException(_(u'“%s” is not a file') % get_unicode(binary), |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
90 |
NO_SUCH_BINARY) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
91 |
if not os.access(binary, os.X_OK): |
187
38b9a9859749
VMM/{,cli/Cli}Config: Moved interactive stuff to new CliConfig class.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
185
diff
changeset
|
92 |
raise VMMException(_(u'File is not executable: “%s”') % |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
93 |
get_unicode(binary), NOT_EXECUTABLE) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
94 |
return binary |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
95 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
96 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
97 |
def idn2ascii(domainname): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
98 |
"""Converts the idn domain name `domainname` into punycode.""" |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
99 |
return '.'.join([ToASCII(lbl) for lbl in domainname.split('.') if lbl]) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
100 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
101 |
|
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
102 |
def ace2idna(domainname): |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
103 |
"""Converts the domain name `domainname` from ACE according to IDNA.""" |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
104 |
return u'.'.join([ToUnicode(lbl) for lbl in domainname.split('.') if lbl]) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
105 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
106 |
|
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
107 |
def check_domainname(domainname): |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
108 |
"""Returns the validated domain name `domainname`. |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
109 |
|
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
110 |
It also converts the name of the domain from IDN to ASCII, if necessary. |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
111 |
|
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
112 |
Throws an `VMMException`, if the domain name is too long or doesn't look |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
113 |
like a valid domain name (label.label.label). |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
114 |
""" |
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
115 |
if not re_obj_domain.match(domainname): |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
116 |
domainname = idn2ascii(domainname) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
117 |
if len(domainname) > 255: |
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
118 |
raise VMMException(_(u'The domain name is too long'), DOMAIN_TOO_LONG) |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
119 |
if not re_obj_domain.match(domainname): |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
120 |
raise VMMException(_(u'The domain name %r is invalid') % domainname, |
185
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
121 |
DOMAIN_INVALID) |
6e1ef32fbd82
VMM/*: Moved some methods from classes to modules __init__.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
174
diff
changeset
|
122 |
return domainname |
199
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
123 |
|
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
124 |
|
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
125 |
def check_localpart(localpart): |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
126 |
"""Returns the validated local-part *localpart*. |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
127 |
|
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
128 |
Throws a `VMMException` if the local-part is too long or contains |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
129 |
invalid characters. |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
130 |
""" |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
131 |
if len(localpart) > 64: |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
132 |
raise VMMException(_(u'The local-part %r is too long') % localpart, |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
133 |
LOCALPART_TOO_LONG) |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
134 |
invalid_chars = set(re_obj_localpart.findall(localpart)) |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
135 |
if invalid_chars: |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
136 |
i_chars = u''.join((u'"%s" ' % c for c in invalid_chars)) |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
137 |
raise VMMException(_(u"The local-part %(l_part)r contains invalid \ |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
138 |
characters: %(i_chars)s") % |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
139 |
{'l_part': localpart, 'i_chars': i_chars}, |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
140 |
LOCALPART_INVALID) |
0684790fff7c
VMM: renamed function chk_domainname() -> check_domainname().
Pascal Volk <neverseen@users.sourceforge.net>
parents:
188
diff
changeset
|
141 |
return localpart |