enable/disable CF proxy

This commit is contained in:
Usman Nasir
2020-02-27 17:31:49 +05:00
parent 7a190c7c48
commit 2a2521bde2
5 changed files with 104 additions and 11 deletions

View File

@@ -1015,4 +1015,87 @@ class DNSManager:
except BaseException as msg: except BaseException as msg:
final_dic = {'status': 0, 'error_message': str(msg)} final_dic = {'status': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic) 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) return HttpResponse(final_json)

View File

@@ -1131,19 +1131,17 @@ app.controller('addModifyDNSRecordsCloudFlare', function ($scope, $http, $window
}; };
$scope.enableProxy = function (id, value) { $scope.enableProxy = function (name, value) {
$scope.recordsLoading = false;
alert(value);
return 0;
var selectedZone = $scope.selectedZone; var selectedZone = $scope.selectedZone;
url = "/dns/deleteDNSRecordCloudFlare"; url = "/dns/enableProxy";
var data = { var data = {
selectedZone: selectedZone, selectedZone: selectedZone,
id: id name: name,
value: value
}; };
var config = { var config = {
@@ -1157,9 +1155,9 @@ app.controller('addModifyDNSRecordsCloudFlare', function ($scope, $http, $window
function ListInitialDatas(response) { function ListInitialDatas(response) {
populateCurrentRecords();
if (response.data.status === 1) {
if (response.data.delete_status == 1) {
$scope.addRecordsBox = false; $scope.addRecordsBox = false;

View File

@@ -508,7 +508,7 @@
<td ng-bind="record.content"></td> <td ng-bind="record.content"></td>
<td ng-bind="record.priority"></td> <td ng-bind="record.priority"></td>
<td> <td>
<input ng-click="enableProxy(record.id, this)" ng-disabled="!record.proxiable" ng-checked="record.proxy" type="checkbox" data-toggle="toggle"> <input ng-click="enableProxy(record.name, record.proxy)" ng-disabled="!record.proxiable" ng-checked="record.proxy" type="checkbox" ng-true-value="true" ng-false-value="false" data-toggle="toggle">
</td> </td>
<td ng-click="deleteRecord(record.id)"><img <td ng-click="deleteRecord(record.id)"><img
src="{% static 'images/delete.png' %}"></td> src="{% static 'images/delete.png' %}"></td>

View File

@@ -23,5 +23,6 @@ urlpatterns = [
url(r'^getCurrentRecordsForDomainCloudFlare$', views.getCurrentRecordsForDomainCloudFlare, name='getCurrentRecordsForDomainCloudFlare'), url(r'^getCurrentRecordsForDomainCloudFlare$', views.getCurrentRecordsForDomainCloudFlare, name='getCurrentRecordsForDomainCloudFlare'),
url(r'^deleteDNSRecordCloudFlare$', views.deleteDNSRecordCloudFlare, name='deleteDNSRecordCloudFlare'), url(r'^deleteDNSRecordCloudFlare$', views.deleteDNSRecordCloudFlare, name='deleteDNSRecordCloudFlare'),
url(r'^addDNSRecordCloudFlare$', views.addDNSRecordCloudFlare,name='addDNSRecordCloudFlare'), 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')
] ]

View File

@@ -232,3 +232,14 @@ def syncCF(request):
except KeyError: except KeyError:
return redirect(loadLoginPage) 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)