35 lines
1021 B
Python
35 lines
1021 B
Python
|
import os.path, idna, sys, collections
|
||
|
|
||
|
def get_www_domains(domains_to_skip):
|
||
|
# Returns the domain names (IDNA-encoded) of all of the domains that are configured to serve www
|
||
|
# on the system.
|
||
|
domains = []
|
||
|
|
||
|
try:
|
||
|
# read a line from text file
|
||
|
with open("/etc/miabwwwdomains.conf") as file_in:
|
||
|
for line in file_in:
|
||
|
# Valid domain check future extention: use validators module
|
||
|
# Only one dot allowed
|
||
|
if line.count('.') == 1:
|
||
|
www_domain = get_domain(line, as_unicode=False)
|
||
|
if www_domain not in domains_to_skip:
|
||
|
domains.append(www_domain)
|
||
|
except:
|
||
|
# ignore failures
|
||
|
pass
|
||
|
|
||
|
return set(domains)
|
||
|
|
||
|
|
||
|
def get_domain(domaintxt, as_unicode=True):
|
||
|
ret = domaintxt.rstrip()
|
||
|
if as_unicode:
|
||
|
try:
|
||
|
ret = idna.decode(ret.encode('ascii'))
|
||
|
except (ValueError, UnicodeError, idna.IDNAError):
|
||
|
pass
|
||
|
|
||
|
return ret
|
||
|
|