diff --git a/dns/dnsManager.py b/dns/dnsManager.py index fb0eb3b49..fc2654a78 100755 --- a/dns/dnsManager.py +++ b/dns/dnsManager.py @@ -1015,4 +1015,87 @@ class DNSManager: except BaseException as msg: final_dic = {'status': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) + return HttpResponse(final_json) + + + def enableProxy(self, userID = None, data = None): + try: + currentACL = ACLManager.loadedACL(userID) + + if ACLManager.currentContextPermission(currentACL, 'addDeleteRecords') == 0: + return ACLManager.loadErrorJson('fetchStatus', 0) + + zoneDomain = data['selectedZone'] + name = data['name'] + value = data['value'] + + 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) + + ## Get zone + + zones = cf.zones.get(params=params) + + zone = zones[0] + + ## + + zone_id = zone['id'] + + params = {'name': name} + dns_records = cf.zones.dns_records.get(zone_id, params=params) + + ## + + + if value == True: + new_r_proxied_flag = False + else: + new_r_proxied_flag = True + + for dns_record in dns_records: + r_zone_id = dns_record['zone_id'] + r_id = dns_record['id'] + r_name = dns_record['name'] + r_type = dns_record['type'] + r_content = dns_record['content'] + r_ttl = dns_record['ttl'] + r_proxied = dns_record['proxied'] + r_proxiable = dns_record['proxiable'] + + if r_proxied == new_r_proxied_flag: + # Nothing to do + continue + + dns_record_id = dns_record['id'] + + new_dns_record = { + 'zone_id': r_zone_id, + 'id': r_id, + 'type': r_type, + 'name': r_name, + 'content': r_content, + 'ttl': r_ttl, + 'proxied': new_r_proxied_flag + } + + cf.zones.dns_records.put(zone_id, dns_record_id, data=new_dns_record) + + 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 01ff5299c..516d2f4de 100755 --- a/dns/static/dns/dns.js +++ b/dns/static/dns/dns.js @@ -1131,19 +1131,17 @@ app.controller('addModifyDNSRecordsCloudFlare', function ($scope, $http, $window }; - $scope.enableProxy = function (id, value) { - - alert(value); - return 0; - + $scope.enableProxy = function (name, value) { + $scope.recordsLoading = false; var selectedZone = $scope.selectedZone; - url = "/dns/deleteDNSRecordCloudFlare"; + url = "/dns/enableProxy"; var data = { selectedZone: selectedZone, - id: id + name: name, + value: value }; var config = { @@ -1157,9 +1155,9 @@ app.controller('addModifyDNSRecordsCloudFlare', function ($scope, $http, $window function ListInitialDatas(response) { + populateCurrentRecords(); - - if (response.data.delete_status == 1) { + if (response.data.status === 1) { $scope.addRecordsBox = false; diff --git a/dns/templates/dns/addDeleteDNSRecordsCloudFlare.html b/dns/templates/dns/addDeleteDNSRecordsCloudFlare.html index eb3769004..e4f7ea335 100755 --- a/dns/templates/dns/addDeleteDNSRecordsCloudFlare.html +++ b/dns/templates/dns/addDeleteDNSRecordsCloudFlare.html @@ -508,7 +508,7 @@ - + diff --git a/dns/urls.py b/dns/urls.py index d3e560806..94969f35f 100755 --- a/dns/urls.py +++ b/dns/urls.py @@ -23,5 +23,6 @@ urlpatterns = [ url(r'^getCurrentRecordsForDomainCloudFlare$', views.getCurrentRecordsForDomainCloudFlare, name='getCurrentRecordsForDomainCloudFlare'), url(r'^deleteDNSRecordCloudFlare$', views.deleteDNSRecordCloudFlare, name='deleteDNSRecordCloudFlare'), url(r'^addDNSRecordCloudFlare$', views.addDNSRecordCloudFlare,name='addDNSRecordCloudFlare'), - url(r'^syncCF$', views.syncCF, name='syncCF') + url(r'^syncCF$', views.syncCF, name='syncCF'), + url(r'^enableProxy$', views.enableProxy, name='enableProxy') ] \ No newline at end of file diff --git a/dns/views.py b/dns/views.py index 6e29fdde1..d5fe5c359 100755 --- a/dns/views.py +++ b/dns/views.py @@ -232,3 +232,14 @@ def syncCF(request): except KeyError: return redirect(loadLoginPage) + +def enableProxy(request): + try: + userID = request.session['userID'] + + dm = DNSManager() + coreResult = dm.enableProxy(userID, json.loads(request.body)) + + return coreResult + except KeyError: + return redirect(loadLoginPage)