add cf records sync for dkim

This commit is contained in:
Usman Nasir
2020-02-14 11:14:07 +05:00
parent 6dcd4f1a39
commit 24792a3489
2 changed files with 72 additions and 17 deletions

View File

@@ -712,12 +712,17 @@ class DNSManager:
checker = 0
for dns_record in dns_records:
if dns_record['ttl'] == 1:
ttl = 'AUTO'
else:
ttl = dns_record['ttl']
dic = {'id': dns_record['id'],
'type': dns_record['type'],
'name': dns_record['name'],
'content': dns_record['content'],
'priority': '1400',
'ttl': dns_record['ttl']
'ttl': ttl
}
if checker == 0:

View File

@@ -1,7 +1,9 @@
#!/usr/local/CyberCP/bin/python
import os, sys
sys.path.append('/usr/local/CyberCP')
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
try:
django.setup()
@@ -10,6 +12,7 @@ except:
from plogical import CyberCPLogFileWriter as logging
import subprocess
import shlex
try:
from dns.models import Domains, Records
from manageServices.models import PDNSStatus, SlaveServers
@@ -18,8 +21,8 @@ except:
import CloudFlare
from plogical.processUtilities import ProcessUtilities
class DNS:
class DNS:
nsd_base = "/etc/nsd/nsd.conf"
zones_base_dir = "/usr/local/lsws/conf/zones/"
create_zone_dir = "/usr/local/lsws/conf/zones"
@@ -50,10 +53,8 @@ class DNS:
else:
return 0, 'Sync not enabled.'
cf = CloudFlare.CloudFlare(email=self.email, token=self.key)
try:
params = {'name': zoneDomain, 'per_page': 50}
zones = cf.zones.get(params=params)
@@ -140,7 +141,6 @@ class DNS:
except:
zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE")
zone.save()
if zone.type == 'NATIVE':
@@ -480,7 +480,33 @@ class DNS:
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
command = ' systemctl restart pdns'
ProcessUtiities.executioner(command)
ProcessUtilities.executioner(command)
## Add record to CF If sync enabled
dns = DNS()
dns.admin = zone.admin
dns.loadCFKeys()
cf = CloudFlare.CloudFlare(email=dns.email, token=dns.key)
if dns.status == 'Enable':
try:
params = {'name': domain, 'per_page': 50}
zones = cf.zones.get(params=params)
for zone in sorted(zones, key=lambda v: v['name']):
zone = zone['id']
DNS.createDNSRecordCloudFlare(cf, zone, "default._domainkey." + topLevelDomain, 'TXT',
output[leftIndex:rightIndex], 0,
3600)
except CloudFlare.exceptions.CloudFlareAPIError as e:
logging.CyberCPLogFileWriter.writeToFile(str(e))
except Exception as e:
logging.CyberCPLogFileWriter.writeToFile(str(e))
except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile(
@@ -501,11 +527,14 @@ class DNS:
value = value.replace('\n\t', '')
value = value.replace('"', '')
if ttl > 0:
dns_record = {'name': name, 'type': type, 'content': value, 'ttl': ttl, 'priority': priority}
r = cf.zones.dns_records.post(zone, data=dns_record)
except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
else:
dns_record = {'name': name, 'type': type, 'content': value, 'priority': priority}
cf.zones.dns_records.post(zone, data=dns_record)
except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + '. [createDNSRecordCloudFlare]')
@staticmethod
def createDNSRecord(zone, name, type, value, priority, ttl):
@@ -518,8 +547,6 @@ class DNS:
getSOA.content = " ".join(soaContent)
getSOA.save()
if type == 'NS':
if Records.objects.filter(name=name, type=type, content=value).count() == 0:
record = Records(domainOwner=zone,
@@ -574,7 +601,6 @@ class DNS:
ProcessUtilities.executioner(command)
return
if Records.objects.filter(name=name, type=type).count() == 0:
record = Records(domainOwner=zone,
domain_id=zone.id,
@@ -589,6 +615,30 @@ class DNS:
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
command = 'sudo systemctl restart pdns'
ProcessUtilities.executioner(command)
## Add Record to CF if SYNC Enabled
dns = DNS()
dns.admin = zone.admin
dns.loadCFKeys()
cf = CloudFlare.CloudFlare(email=dns.email, token=dns.key)
if dns.status == 'Enable':
try:
params = {'name': zone.name, 'per_page': 50}
zones = cf.zones.get(params=params)
for zone in sorted(zones, key=lambda v: v['name']):
zone = zone['id']
DNS.createDNSRecordCloudFlare(cf, zone, name, type, value, ttl, priority)
except CloudFlare.exceptions.CloudFlareAPIError as e:
logging.CyberCPLogFileWriter.writeToFile(str(e))
except Exception as e:
logging.CyberCPLogFileWriter.writeToFile(str(e))
except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [createDNSRecord]")