sync to cf by default

This commit is contained in:
Usman Nasir
2020-02-14 00:26:51 +05:00
parent 2c23c1f2f7
commit a291d932c6
2 changed files with 81 additions and 56 deletions

View File

@@ -987,65 +987,16 @@ class DNSManager:
## Get zone ## Get zone
self.loadCFKeys() dns = DNS()
status, error = dns.cfTemplate(zoneDomain, admin)
cf = CloudFlare.CloudFlare(email=self.email, token=self.key) if status == 1:
final_dic = {'status': 1, 'error_message': 'None'}
try:
params = {'name': zoneDomain, 'per_page': 50}
zones = cf.zones.get(params=params)
for zone in sorted(zones, key=lambda v: v['name']):
zone = zone['id']
domain = Domains.objects.get(name=zoneDomain)
records = Records.objects.filter(domain_id=domain.id)
for record in records:
DNS.createDNSRecordCloudFlare(cf, zone, record.name, record.type, record.content, record.prio,
record.ttl)
final_dic = {'status': 1, 'error_message': "None"}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except CloudFlare.exceptions.CloudFlareAPIError as e:
logging.writeToFile(str(e))
except Exception as e:
logging.writeToFile(str(e))
try:
zone_info = cf.zones.post(data={'jump_start': False, 'name': zoneDomain})
zone = zone_info['id']
domain = Domains.objects.get(name=zoneDomain)
records = Records.objects.filter(domain_id=domain.id)
for record in records:
DNS.createDNSRecordCloudFlare(cf, zone, record.name, record.type, record.content, record.prio,
record.ttl)
final_dic = {'status': 1, 'error_message': "None"}
final_json = json.dumps(final_dic) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
else:
final_dic = {'status': 0, 'error_message': error}
except CloudFlare.exceptions.CloudFlareAPIError as e:
logging.writeToFile(str(e))
final_dic = {'status': 0, 'error_message': str(e)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except Exception as e:
logging.writeToFile(str(e))
final_dic = {'status': 0, 'error_message': str(e)}
final_json = json.dumps(final_dic) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)

View File

@@ -12,11 +12,11 @@ import subprocess
import shlex import shlex
try: try:
from dns.models import Domains,Records from dns.models import Domains,Records
from plogical.processUtilities import ProcessUtilities
from manageServices.models import PDNSStatus, SlaveServers from manageServices.models import PDNSStatus, SlaveServers
except: except:
pass pass
import CloudFlare import CloudFlare
from plogical.processUtilities import ProcessUtilities
class DNS: class DNS:
@@ -28,6 +28,77 @@ class DNS:
## DNS Functions ## DNS Functions
def loadCFKeys(self):
cfFile = '%s%s' % (DNS.CFPath, self.admin.userName)
data = open(cfFile, 'r').readlines()
self.email = data[0].rstrip('\n')
self.key = data[1].rstrip('\n')
self.status = data[2].rstrip('\n')
def cfTemplate(self, zoneDomain, admin, enableCheck = None):
try:
self.admin = admin
## Get zone
self.loadCFKeys()
if enableCheck == None:
pass
else:
if self.status == 'Enable':
pass
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)
for zone in sorted(zones, key=lambda v: v['name']):
zone = zone['id']
domain = Domains.objects.get(name=zoneDomain)
records = Records.objects.filter(domain_id=domain.id)
for record in records:
DNS.createDNSRecordCloudFlare(cf, zone, record.name, record.type, record.content, record.prio,
record.ttl)
return 1, None
except CloudFlare.exceptions.CloudFlareAPIError as e:
logging.CyberCPLogFileWriter.writeToFile(str(e))
except Exception as e:
logging.CyberCPLogFileWriter.writeToFile(str(e))
try:
zone_info = cf.zones.post(data={'jump_start': False, 'name': zoneDomain})
zone = zone_info['id']
domain = Domains.objects.get(name=zoneDomain)
records = Records.objects.filter(domain_id=domain.id)
for record in records:
DNS.createDNSRecordCloudFlare(cf, zone, record.name, record.type, record.content, record.prio,
record.ttl)
return 1, None
except CloudFlare.exceptions.CloudFlareAPIError as e:
return 0, str(e)
except Exception as e:
return 0, str(e)
except BaseException as msg:
return 0, str(e)
@staticmethod @staticmethod
def dnsTemplate(domain, admin): def dnsTemplate(domain, admin):
try: try:
@@ -372,6 +443,9 @@ class DNS:
command = 'sudo systemctl restart pdns' command = 'sudo systemctl restart pdns'
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
dns = DNS()
dns.cfTemplate(domain, admin)
except BaseException as msg: except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile( logging.CyberCPLogFileWriter.writeToFile(
"We had errors while creating DNS records for: " + domain + ". Error message: " + str(msg)) "We had errors while creating DNS records for: " + domain + ". Error message: " + str(msg))