mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-10 15:26:13 +01:00
sync to cf by default
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user