mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-08 14:26:16 +01:00
enable/disable CF proxy
This commit is contained in:
@@ -1016,3 +1016,86 @@ class DNSManager:
|
||||
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)
|
||||
@@ -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;
|
||||
|
||||
@@ -508,7 +508,7 @@
|
||||
<td ng-bind="record.content"></td>
|
||||
<td ng-bind="record.priority"></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 ng-click="deleteRecord(record.id)"><img
|
||||
src="{% static 'images/delete.png' %}"></td>
|
||||
|
||||
@@ -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')
|
||||
]
|
||||
11
dns/views.py
11
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)
|
||||
|
||||
Reference in New Issue
Block a user