diff --git a/dns/dnsManager.py b/dns/dnsManager.py index 386a17f9f..d1e33d083 100755 --- a/dns/dnsManager.py +++ b/dns/dnsManager.py @@ -987,65 +987,16 @@ class DNSManager: ## Get zone - self.loadCFKeys() + dns = DNS() + status, error = dns.cfTemplate(zoneDomain, admin) - 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) - - 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"} + if status == 1: + 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)) - 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)} + else: + final_dic = {'status': 0, 'error_message': error} final_json = json.dumps(final_dic) return HttpResponse(final_json) diff --git a/plogical/dnsUtilities.py b/plogical/dnsUtilities.py index 5e8f5f94e..35a721176 100755 --- a/plogical/dnsUtilities.py +++ b/plogical/dnsUtilities.py @@ -12,11 +12,11 @@ import subprocess import shlex try: from dns.models import Domains,Records - from plogical.processUtilities import ProcessUtilities from manageServices.models import PDNSStatus, SlaveServers except: pass import CloudFlare +from plogical.processUtilities import ProcessUtilities class DNS: @@ -28,6 +28,77 @@ class DNS: ## 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 def dnsTemplate(domain, admin): try: @@ -372,6 +443,9 @@ class DNS: command = 'sudo systemctl restart pdns' ProcessUtilities.executioner(command) + dns = DNS() + dns.cfTemplate(domain, admin) + except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile( "We had errors while creating DNS records for: " + domain + ". Error message: " + str(msg))