mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 13:56:01 +01:00
cf
This commit is contained in:
@@ -768,7 +768,7 @@ class DNSManager:
|
|||||||
for zone in sorted(zones, key=lambda v: v['name']):
|
for zone in sorted(zones, key=lambda v: v['name']):
|
||||||
zone_id = zone['id']
|
zone_id = zone['id']
|
||||||
|
|
||||||
cf.zones.dns_records.delete(zone_id, int(id))
|
cf.zones.dns_records.delete(zone_id, id)
|
||||||
|
|
||||||
final_dic = {'status': 1, 'delete_status': 1, 'error_message': "None"}
|
final_dic = {'status': 1, 'delete_status': 1, 'error_message': "None"}
|
||||||
final_json = json.dumps(final_dic)
|
final_json = json.dumps(final_dic)
|
||||||
@@ -965,4 +965,78 @@ class DNSManager:
|
|||||||
except BaseException as msg:
|
except BaseException as msg:
|
||||||
final_dic = {'status': 0, 'add_status': 0, 'error_message': str(msg)}
|
final_dic = {'status': 0, 'add_status': 0, 'error_message': str(msg)}
|
||||||
final_json = json.dumps(final_dic)
|
final_json = json.dumps(final_dic)
|
||||||
|
return HttpResponse(final_json)
|
||||||
|
|
||||||
|
def syncCF(self, userID = None, data = None):
|
||||||
|
try:
|
||||||
|
|
||||||
|
currentACL = ACLManager.loadedACL(userID)
|
||||||
|
|
||||||
|
if ACLManager.currentContextPermission(currentACL, 'addDeleteRecords') == 0:
|
||||||
|
return ACLManager.loadErrorJson('add_status', 0)
|
||||||
|
|
||||||
|
zoneDomain = data['selectedZone']
|
||||||
|
|
||||||
|
admin = Administrator.objects.get(pk=userID)
|
||||||
|
self.admin = admin
|
||||||
|
|
||||||
|
if ACLManager.checkOwnershipZone(zoneDomain, admin, currentACL) == 1:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
return ACLManager.loadErrorJson()
|
||||||
|
|
||||||
|
## Get zone
|
||||||
|
|
||||||
|
self.loadCFKeys()
|
||||||
|
|
||||||
|
params = {'name': zoneDomain, 'per_page': 50}
|
||||||
|
cf = CloudFlare.CloudFlare(email=self.email, token=self.key)
|
||||||
|
|
||||||
|
try:
|
||||||
|
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.CloudFlareAPIError as 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"}
|
||||||
|
final_json = json.dumps(final_dic)
|
||||||
|
return HttpResponse(final_json)
|
||||||
|
|
||||||
|
except BaseException as msg:
|
||||||
|
logging.writeToFile(str(msg))
|
||||||
|
final_dic = {'status': 0, 'error_message': str(msg)}
|
||||||
|
final_json = json.dumps(final_dic)
|
||||||
|
return HttpResponse(final_json)
|
||||||
|
|
||||||
|
final_dic = {'status': 1, 'error_message': "None"}
|
||||||
|
final_json = json.dumps(final_dic)
|
||||||
|
return HttpResponse(final_json)
|
||||||
|
|
||||||
|
except BaseException as msg:
|
||||||
|
final_dic = {'status': 0, 'error_message': str(msg)}
|
||||||
|
final_json = json.dumps(final_dic)
|
||||||
return HttpResponse(final_json)
|
return HttpResponse(final_json)
|
||||||
@@ -1051,6 +1051,90 @@ app.controller('addModifyDNSRecordsCloudFlare', function ($scope, $http) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.syncCF = function () {
|
||||||
|
|
||||||
|
|
||||||
|
var selectedZone = $scope.selectedZone;
|
||||||
|
|
||||||
|
url = "/dns/syncCF";
|
||||||
|
|
||||||
|
var data = {
|
||||||
|
selectedZone: selectedZone
|
||||||
|
};
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
headers: {
|
||||||
|
'X-CSRFToken': getCookie('csrftoken')
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||||
|
|
||||||
|
|
||||||
|
function ListInitialDatas(response) {
|
||||||
|
|
||||||
|
|
||||||
|
if (response.data.status === 1) {
|
||||||
|
|
||||||
|
|
||||||
|
$scope.addRecordsBox = false;
|
||||||
|
$scope.currentRecords = false;
|
||||||
|
$scope.canNotFetchRecords = true;
|
||||||
|
$scope.recordsFetched = true;
|
||||||
|
$scope.recordDeleted = false;
|
||||||
|
$scope.recordAdded = true;
|
||||||
|
$scope.couldNotConnect = true;
|
||||||
|
$scope.recordsLoading = true;
|
||||||
|
$scope.recordDeleted = true;
|
||||||
|
$scope.couldNotDeleteRecords = true;
|
||||||
|
$scope.couldNotAddRecord = true;
|
||||||
|
|
||||||
|
populateCurrentRecords();
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$scope.addRecordsBox = true;
|
||||||
|
$scope.currentRecords = true;
|
||||||
|
$scope.canNotFetchRecords = true;
|
||||||
|
$scope.recordsFetched = false;
|
||||||
|
$scope.recordDeleted = true;
|
||||||
|
$scope.recordAdded = true;
|
||||||
|
$scope.couldNotConnect = true;
|
||||||
|
$scope.recordsLoading = true;
|
||||||
|
$scope.recordDeleted = true;
|
||||||
|
$scope.couldNotDeleteRecords = false;
|
||||||
|
$scope.couldNotAddRecord = true;
|
||||||
|
|
||||||
|
|
||||||
|
$scope.errorMessage = response.data.error_message;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function cantLoadInitialDatas(response) {
|
||||||
|
|
||||||
|
$scope.addRecordsBox = false;
|
||||||
|
$scope.currentRecords = false;
|
||||||
|
$scope.canNotFetchRecords = true;
|
||||||
|
$scope.recordsFetched = true;
|
||||||
|
$scope.recordDeleted = true;
|
||||||
|
$scope.recordAdded = true;
|
||||||
|
$scope.couldNotConnect = false;
|
||||||
|
$scope.recordsLoading = true;
|
||||||
|
$scope.recordDeleted = true;
|
||||||
|
$scope.couldNotDeleteRecords = true;
|
||||||
|
$scope.couldNotAddRecord = true;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "Select Domain" %} </label>
|
<label class="col-sm-2 control-label">{% trans "Select Domain" %} </label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<select ng-change="fetchRecords()" ng-model="selectedZone" class="form-control">
|
<select ng-change="fetchRecords()" ng-model="selectedZone" class="form-control">
|
||||||
{% for items in domainsList %}
|
{% for items in domainsList %}
|
||||||
@@ -96,6 +96,10 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div ng-hide="addRecordsBox" class="col-sm-4">
|
||||||
|
<button style="width: 100%;" type="button" ng-click="syncCF()"
|
||||||
|
class="btn btn-primary">{% trans "Sync Local Records to CloudFlare" %}</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,5 +22,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')
|
||||||
]
|
]
|
||||||
12
dns/views.py
12
dns/views.py
@@ -220,3 +220,15 @@ def addDNSRecordCloudFlare(request):
|
|||||||
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return redirect(loadLoginPage)
|
return redirect(loadLoginPage)
|
||||||
|
|
||||||
|
def syncCF(request):
|
||||||
|
try:
|
||||||
|
userID = request.session['userID']
|
||||||
|
|
||||||
|
dm = DNSManager()
|
||||||
|
coreResult = dm.syncCF(userID, json.loads(request.body))
|
||||||
|
|
||||||
|
return coreResult
|
||||||
|
|
||||||
|
except KeyError:
|
||||||
|
return redirect(loadLoginPage)
|
||||||
|
|||||||
@@ -421,8 +421,11 @@ class DNS:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def createDNSRecordCloudFlare(cf, zone, name, type, value, priority, ttl):
|
def createDNSRecordCloudFlare(cf, zone, name, type, value, priority, ttl):
|
||||||
dns_record = {'name': name, 'type': type, 'content': value, 'ttl': ttl, 'priority': priority}
|
try:
|
||||||
r = cf.zones.dns_records.post(zone, data=dns_record)
|
dns_record = {'name': name, 'type': type, 'content': value, 'ttl': ttl, 'priority': priority}
|
||||||
|
r = cf.zones.dns_records.post(zone, data=dns_record)
|
||||||
|
except BaseException as msg:
|
||||||
|
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user