diff --git a/dns/dnsManager.py b/dns/dnsManager.py index 11121340b..e8868cc58 100755 --- a/dns/dnsManager.py +++ b/dns/dnsManager.py @@ -736,4 +736,47 @@ class DNSManager: except BaseException as msg: final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) + return HttpResponse(final_json) + + def deleteDNSRecordCloudFlare(self, userID = None, data = None): + try: + currentACL = ACLManager.loadedACL(userID) + + if ACLManager.currentContextPermission(currentACL, 'addDeleteRecords') == 0: + return ACLManager.loadErrorJson('fetchStatus', 0) + + zoneDomain = data['selectedZone'] + id = data['id'] + + admin = Administrator.objects.get(pk=userID) + self.admin = admin + + if ACLManager.checkOwnershipZone(zoneDomain, admin, currentACL) == 1: + pass + else: + return ACLManager.loadErrorJson() + + self.loadCFKeys() + + params = {'name': zoneDomain, 'per_page': 50} + cf = CloudFlare.CloudFlare(email=self.email, token=self.key) + + try: + zones = cf.zones.get(params=params) + except CloudFlare.CloudFlareAPIError as e: + final_json = json.dumps({'status': 0, 'delete_status': 0, 'error_message': str(e), "data": '[]'}) + return HttpResponse(final_json) + + for zone in sorted(zones, key=lambda v: v['name']): + zone_id = zone['id'] + + dns_record = cf.zones.dns_records.delete(zone_id, int(id)) + + final_dic = {'status': 1, 'delete_status': 1, 'error_message': "None"} + final_json = json.dumps(final_dic) + return HttpResponse(final_json) + + except BaseException as msg: + final_dic = {'status': 0, 'delete_status': 0, 'error_message': str(msg)} + final_json = json.dumps(final_dic) return HttpResponse(final_json) \ No newline at end of file diff --git a/dns/static/dns/dns.js b/dns/static/dns/dns.js index 5a4abfff4..73d1609b0 100755 --- a/dns/static/dns/dns.js +++ b/dns/static/dns/dns.js @@ -971,10 +971,11 @@ app.controller('addModifyDNSRecordsCloudFlare', function ($scope, $http) { var selectedZone = $scope.selectedZone; - url = "/dns/deleteDNSRecord"; + url = "/dns/deleteDNSRecordCloudFlare"; var data = { - id: id, + selectedZone: selectedZone, + id: id }; var config = { diff --git a/dns/urls.py b/dns/urls.py index 7cf318bc7..c3d852463 100755 --- a/dns/urls.py +++ b/dns/urls.py @@ -14,11 +14,13 @@ urlpatterns = [ url(r'^zoneCreation', views.zoneCreation, name='zoneCreation'), url(r'^getCurrentRecordsForDomain$',views.getCurrentRecordsForDomain,name='getCurrentRecordsForDomain'), url(r'^addDNSRecord',views.addDNSRecord,name='addDNSRecord'), - url(r'^deleteDNSRecord',views.deleteDNSRecord,name='deleteDNSRecord'), + url(r'^deleteDNSRecord$',views.deleteDNSRecord,name='deleteDNSRecord'), url(r'^deleteDNSZone',views.deleteDNSZone,name='deleteDNSZone'), url(r'^submitZoneDeletion',views.submitZoneDeletion,name='submitZoneDeletion'), url(r'^saveNSConfigurations$', views.saveNSConfigurations, name='saveNSConfigurations'), url(r'^saveCFConfigs$', views.saveCFConfigs, name='saveCFConfigs'), url(r'^getCurrentRecordsForDomainCloudFlare$', views.getCurrentRecordsForDomainCloudFlare, name='getCurrentRecordsForDomainCloudFlare'), + url(r'^deleteDNSRecordCloudFlare$', views.deleteDNSRecordCloudFlare, + name='deleteDNSRecordCloudFlare'), ] \ No newline at end of file diff --git a/dns/views.py b/dns/views.py index b95f23182..602cb8fe4 100755 --- a/dns/views.py +++ b/dns/views.py @@ -197,3 +197,14 @@ def getCurrentRecordsForDomainCloudFlare(request): return dm.getCurrentRecordsForDomainCloudFlare(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) + +def deleteDNSRecordCloudFlare(request): + try: + userID = request.session['userID'] + + dm = DNSManager() + coreResult = dm.deleteDNSRecordCloudFlare(userID, json.loads(request.body)) + + return coreResult + except KeyError: + return redirect(loadLoginPage)