File size: 1,944 Bytes
87e74a8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9d05dd2
87e74a8
 
 
 
9d05dd2
87e74a8
 
9d05dd2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import hashlib

def get_domains(i_domains):
    domains = []
    for domain in i_domains.split(","):
        domain = domain.strip()
        domains.append(domain)
    return domains

def extract_subdomains(domains):
    exchange = min(domains, key=len)
    return exchange

def prefix(domain):
    domain_bytes = domain.encode()
    prefix = hashlib.blake2b(domain_bytes, digest_size=12).hexdigest()
    return prefix

def gen_cname_recs(domains):
    cname_recs = []
    for domain in domains:
        cname_rec = f"_acme-challenge.{domain}"
        cname_recs.append(cname_rec)
    return cname_recs

def gen_cname_values(domains, cf_domain, exchange):
    temp_cname_values = []
    cname_values = []
    for domain in domains:
        cname_value = prefix(domain)
        cname_value = f"{cname_value}.{domain}"
        temp_cname_values.append(cname_value)
    for cname_value in temp_cname_values:
        modified_cname_value = cname_value.replace(exchange, cf_domain)
        cname_values.append(modified_cname_value)
    return cname_values

def gen_cname(domains, cf_domain, exchange):
    print(domains)
    cname_recs  = gen_cname_recs(domains)
    cname_values = gen_cname_values(domains, cf_domain, exchange)
    return cname_recs, cname_values

def generate_cnames(i_domains, cf_domain, wildcard=False):
    domains = get_domains(i_domains)
    exchange = extract_subdomains(domains=domains)
    if wildcard:
        domain = []
        domain.append(f"{exchange}")
        cname_recs, cname_values = gen_cname(domain, cf_domain, exchange)
    else:
        cname_recs, cname_values = gen_cname(domains, cf_domain, exchange)
    return cname_recs, cname_values

# i_domains = "dash.raanna.com, raanna.com"
# cf_domain = "silerudaagartha.eu.org"
# wildcard = True
# cname_recs, cname_values = generate_cnames(i_domains, cf_domain, wildcard)
# for rec, value in zip(cname_recs, cname_values):
#     print(f"{rec} -> {value}")