[tv, dns] Mutualisation des noms de domaines
This commit is contained in:
parent
13995bfe92
commit
9131575122
4 changed files with 68 additions and 19 deletions
49
tv/dns.py
Normal file
49
tv/dns.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
sys.path.append('/usr/scripts')
|
||||
import re
|
||||
from unidecode import unidecode
|
||||
from gestion.config import dns
|
||||
|
||||
|
||||
def is_ascii(s):
|
||||
return all(ord(c) < 128 for c in s)
|
||||
|
||||
|
||||
def _sanitize(nom):
|
||||
nom=re.sub('TNT([0-9]*) ','',nom) # on enlève les TNT## des noms
|
||||
nom=nom.replace('TNT%2lcn ','') # on enlève les TNT## des noms
|
||||
nom=nom.replace('&','and') # on enlève les TNT## des noms
|
||||
nom=re.sub(' +([^ ])','-\g<1>',nom) # on remplaces les espaces intérieur par un tiret
|
||||
nom=re.sub('[ .():,"\'+<>]','',nom) # on enlève tous les caractères illégaux
|
||||
return nom.lower()
|
||||
|
||||
def _fqdn(bool):
|
||||
if bool:
|
||||
return ".%s" % dns.zone_tv
|
||||
else:
|
||||
return ""
|
||||
|
||||
def _check_unicode(nom):
|
||||
if not isinstance(nom, unicode):
|
||||
raise UnicodeError("%r should by an unicode string" % nom)
|
||||
|
||||
def punycode(nom, fqdn=False):
|
||||
_check_unicode(nom)
|
||||
if is_ascii(nom):
|
||||
return None
|
||||
else:
|
||||
return "xn--%s%s" % (_sanitize(nom).encode('punycode'), _fqdn(fqdn))
|
||||
|
||||
def ascii(nom, fqdn=False):
|
||||
_check_unicode(nom)
|
||||
return "%s%s" % (unidecode(_sanitize(nom)), _fqdn(fqdn))
|
||||
|
||||
def idn(nom, fqdn=False, charset='utf-8'):
|
||||
_check_unicode(nom)
|
||||
if charset:
|
||||
return "%s%s" % (_sanitize(nom).encode(charset), _fqdn(fqdn))
|
||||
else:
|
||||
return u"%s%s" % (_sanitize(nom), _fqdn(fqdn))
|
Loading…
Add table
Add a link
Reference in a new issue