Files
WPIQ/wo/core/domainvalidate.py

53 lines
1.8 KiB
Python
Raw Normal View History

2018-11-13 21:55:59 +01:00
"""WordOps domain validation module."""
import os
2018-11-13 21:55:59 +01:00
2019-09-19 14:07:34 +02:00
class WODomain():
"""WordOps domain validation utilities"""
2018-11-13 21:55:59 +01:00
2019-10-01 04:08:54 +02:00
def validate(self, url):
2019-09-04 20:36:15 +02:00
"""
This function returns domain name removing http:// and https://
returns domain name only with or without www as user provided.
"""
2018-11-13 21:55:59 +01:00
2019-09-04 20:36:15 +02:00
# Check if http:// or https:// present remove it if present
domain_name = url.split('/')
if 'http:' in domain_name or 'https:' in domain_name:
domain_name = domain_name[2]
else:
domain_name = domain_name[0]
www_domain_name = domain_name.split('.')
final_domain = ''
if www_domain_name[0] == 'www':
final_domain = '.'.join(www_domain_name[1:])
2019-10-12 11:16:25 +02:00
return final_domain
return domain_name
2019-10-01 04:08:54 +02:00
def getlevel(self, domain):
2019-09-04 20:36:15 +02:00
"""
2019-09-29 14:20:16 +02:00
Returns the domain type : domain, subdomain and the root domain
2019-09-04 20:36:15 +02:00
"""
domain_name = domain.lower().strip().split('.')
if domain_name[0] == 'www':
domain_name = domain_name[1:]
domain_type = ''
if os.path.isfile("/var/lib/wo/public_suffix_list.dat"):
# Read mode opens a file for reading only.
suffix_file = open(
2019-10-12 11:07:25 +02:00
"/var/lib/wo/public_suffix_list.dat", encoding='utf-8')
2019-09-04 20:36:15 +02:00
# Read all the lines into a list.
for domain_suffix in suffix_file:
if (str(domain_suffix).strip()) == ('.'.join(domain_name[1:])):
domain_type = 'domain'
break
else:
domain_type = 'subdomain'
suffix_file.close()
2019-10-12 11:07:25 +02:00
if domain_type == 'domain':
root_domain = ('.'.join(domain_name[0:]))
else:
root_domain = ('.'.join(domain_name[1:]))
return (domain_type, root_domain)