Files
CyberPanel/static/dns/dns.js

1570 lines
45 KiB
JavaScript

/**
* Created by usman on 8/1/17.
*/
/* Java script code to create NS */
app.controller('createNameserver', function ($scope, $http) {
$scope.createNameserverLoading = true;
$scope.nameserverCreationFailed = true;
$scope.nameserverCreated = true;
$scope.couldNotConnect = true;
$scope.createNameserverFunc = function () {
var domainForNS = $scope.domainForNS;
var ns1 = $scope.firstNS;
var ns2 = $scope.secondNS;
var firstNSIP = $scope.firstNSIP;
var secondNSIP = $scope.secondNSIP;
url = "/dns/NSCreation";
var data = {
domainForNS: domainForNS,
ns1: ns1,
ns2: ns2,
firstNSIP: firstNSIP,
secondNSIP: secondNSIP,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.NSCreation === 1) {
$scope.createNameserverLoading = true;
$scope.nameserverCreationFailed = true;
$scope.nameserverCreated = false;
$scope.couldNotConnect = true;
$scope.nameServerTwo = $scope.firstNS;
$scope.nameServerOne = $scope.secondNS;
} else {
$scope.createNameserverLoading = true;
$scope.nameserverCreationFailed = false;
$scope.nameserverCreated = true;
$scope.couldNotConnect = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.createNameserverLoading = true;
$scope.nameserverCreationFailed = true;
$scope.nameserverCreated = true;
$scope.couldNotConnect = false;
}
};
});
/* Java script code to create NS ends here */
/* Java script code to create DNS Zone */
app.controller('createDNSZone', function ($scope, $http) {
$scope.createDNSZoneLoading = true;
$scope.dnsZoneCreationFailed = true;
$scope.dnsZoneCreated = true;
$scope.couldNotConnect = true;
$scope.createDNSZone = function () {
var zoneDomain = $scope.zoneDomain;
url = "/dns/zoneCreation";
var data = {
zoneDomain: zoneDomain,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.zoneCreation === 1) {
$scope.createDNSZoneLoading = true;
$scope.dnsZoneCreationFailed = true;
$scope.dnsZoneCreated = false;
$scope.couldNotConnect = true;
$scope.zoneDomain = $scope.zoneDomain;
} else {
$scope.createDNSZoneLoading = true;
$scope.dnsZoneCreationFailed = false;
$scope.dnsZoneCreated = true;
$scope.couldNotConnect = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.createDNSZoneLoading = true;
$scope.dnsZoneCreationFailed = true;
$scope.dnsZoneCreated = true;
$scope.couldNotConnect = false;
}
};
});
/* Java script code to delete DNS Zone */
/* Java script code to create DNS Zone */
app.controller('addModifyDNSRecords', function ($scope, $http) {
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.recordDeleted = true;
$scope.couldNotDeleteRecords = true;
$scope.couldNotAddRecord = true;
$scope.recordValueDefault = false;
// Hide records boxes
$(".aaaaRecord").hide();
$(".cNameRecord").hide();
$(".mxRecord").hide();
$(".txtRecord").hide();
$(".spfRecord").hide();
$(".nsRecord").hide();
$(".soaRecord").hide();
$(".srvRecord").hide();
$(".caaRecord").hide();
var currentSelection = "aRecord";
$("#" + currentSelection).addClass("active");
$scope.fetchRecordsTabs = function (recordType) {
$("#" + currentSelection).removeClass("active");
$("." + currentSelection).hide();
$scope.recordsLoading = false;
currentSelection = recordType;
$("#" + currentSelection).addClass("active");
$("." + currentSelection).show();
populateCurrentRecords();
};
$scope.fetchRecords = function () {
$scope.recordsLoading = false;
$scope.addRecordsBox = false;
populateCurrentRecords();
};
$scope.addDNSRecord = function (type) {
$scope.recordsLoading = false;
url = "/dns/addDNSRecord";
// Record specific values
var data = {};
if (type === "MX") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentMX = $scope.recordContentMX;
data.priority = $scope.priority;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "A") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentA = $scope.recordContentA;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "AAAA") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentAAAA = $scope.recordContentAAAA;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "CNAME") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentCNAME = $scope.recordContentCNAME;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "SPF") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentSPF = $scope.recordContentSPF;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "SOA") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.selectedZone;
data.recordContentSOA = $scope.recordContentSOA;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "TXT") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentTXT = $scope.recordContentTXT;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "NS") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.selectedZone;
data.recordContentNS = $scope.recordContentNS;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "SRV") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentSRV = $scope.recordContentSRV;
data.priority = $scope.priority;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "CAA") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentCAA = $scope.recordContentCAA;
data.ttl = $scope.ttl;
data.recordType = type;
}
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.add_status === 1) {
populateCurrentRecords();
$scope.canNotFetchRecords = true;
$scope.recordsFetched = false;
$scope.recordDeleted = true;
$scope.recordAdded = false;
$scope.couldNotConnect = true;
$scope.couldNotAddRecord = true;
$scope.recordsLoading = true;
} else {
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.couldNotAddRecord = false;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = false;
$scope.couldNotAddRecord = true;
}
};
function populateCurrentRecords() {
var selectedZone = $scope.selectedZone;
url = "/dns/getCurrentRecordsForDomain";
var data = {
selectedZone: selectedZone,
currentSelection: currentSelection
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.fetchStatus === 1) {
$scope.records = JSON.parse(response.data.data);
$scope.currentRecords = false;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = false;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.couldNotAddRecord = true;
$scope.domainFeteched = $scope.selectedZone;
} else {
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = false;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.couldNotAddRecord = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = false;
$scope.couldNotAddRecord = true;
}
};
var globalID = null;
var nameNow = null;
var ttlNow = null;
var contentNow = null;
var priorityNow = null;
$scope.setupContent = function (id, type, content) {
if (globalID === null) {
globalID = id;
} else {
if (globalID !== id) {
globalID = id;
nameNow = null;
ttlNow = null;
contentNow = null;
priorityNow = null;
}
}
if (type === 'name') {
nameNow = content;
} else if (type === 'ttl') {
ttlNow = content;
} else if (type === 'content') {
contentNow = content;
} else if (type === 'priority') {
priorityNow = content;
}
};
$scope.saveNow = function (id) {
if (id !== globalID) {
alert('This record is not changed');
return;
}
$scope.recordsLoading = false;
url = "/dns/updateRecord";
var data = {
selectedZone: $scope.selectedZone,
id: globalID,
nameNow: nameNow,
ttlNow: ttlNow,
contentNow: contentNow,
priorityNow: priorityNow,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.recordsLoading = true;
if (response.data.status === 1) {
new PNotify({
title: 'Success!',
text: 'Record updated.',
type: 'success'
});
} else {
new PNotify({
title: 'Operation Failed!',
text: response.data.error_message,
type: 'error'
});
}
}
function cantLoadInitialDatas(response) {
$scope.recordsLoading = true;
new PNotify({
title: 'Operation Failed!',
text: 'Could not connect to server, please refresh this page',
type: 'error'
});
}
};
$scope.deleteRecord = function (id) {
var selectedZone = $scope.selectedZone;
url = "/dns/deleteDNSRecord";
var data = {
id: id,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.delete_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;
}
};
}
);
/* Java script code to delete DNS Zone */
/* Java script code to delete DNS Zone */
app.controller('deleteDNSZone', function ($scope, $http) {
$scope.deleteZoneButton = true;
$scope.deleteFailure = true;
$scope.deleteSuccess = true;
$scope.couldNotConnect = true;
$scope.deleteZone = function () {
$scope.deleteZoneButton = false;
$scope.deleteFailure = true;
$scope.deleteSuccess = true;
};
$scope.deleteZoneFinal = function () {
var zoneDomain = $scope.selectedZone;
url = "/dns/submitZoneDeletion";
var data = {
zoneDomain: zoneDomain,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.delete_status == 1) {
$scope.deleteZoneButton = true;
$scope.deleteFailure = true;
$scope.deleteSuccess = false;
$scope.couldNotConnect = true;
$scope.deletedZone = $scope.selectedZone;
} else {
$scope.deleteZoneButton = true;
$scope.deleteFailure = false;
$scope.deleteSuccess = true;
$scope.couldNotConnect = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.deleteZoneButton = true;
$scope.deleteFailure = true;
$scope.deleteSuccess = true;
$scope.couldNotConnect = false;
}
};
});
/* Java script code to delete DNS Zone */
/* Java script code to create NS */
app.controller('configureDefaultNameservers', function ($scope, $http) {
$scope.cyberPanelLoading = true;
$scope.saveNSConfigurations = function () {
$scope.cyberPanelLoading = false;
url = "/dns/saveNSConfigurations";
var data = {
firstNS: $scope.firstNS,
secondNS: $scope.secondNS,
thirdNS: $scope.thirdNS,
forthNS: $scope.forthNS,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.cyberPanelLoading = true;
if (response.data.status === 1) {
new PNotify({
title: 'Success!',
text: 'Default nameservers saved.',
type: 'success'
});
} else {
new PNotify({
title: 'Operation Failed!',
text: response.data.error_message,
type: 'error'
});
}
}
function cantLoadInitialDatas(response) {
$scope.cyberPanelLoading = true;
new PNotify({
title: 'Operation Failed!',
text: 'Could not connect to server, please refresh this page',
type: 'error'
});
}
};
});
/* Java script code to create NS ends here */
/* Java script code for CloudFlare */
app.controller('addModifyDNSRecordsCloudFlare', function ($scope, $http, $window) {
$scope.saveCFConfigs = function () {
$scope.recordsLoading = false;
url = "/dns/saveCFConfigs";
var data = {
cfEmail: $scope.cfEmail,
cfToken: $scope.cfToken,
cfSync: $scope.cfSync,
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.recordsLoading = true;
if (response.data.status === 1) {
new PNotify({
title: 'Success',
text: 'Changes successfully saved.',
type: 'success'
});
$window.location.reload();
} else {
new PNotify({
title: 'Operation Failed!',
text: response.data.error_message,
type: 'error'
});
}
}
function cantLoadInitialDatas(response) {
$scope.recordsLoading = true;
new PNotify({
title: 'Operation Failed!',
text: 'Could not connect to server, please refresh this page',
type: 'error'
});
}
};
////
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.loadingRecords = true;
$scope.recordDeleted = true;
$scope.couldNotDeleteRecords = true;
$scope.couldNotAddRecord = true;
$scope.recordValueDefault = false;
$scope.records = [];
$scope.showEditModal = false;
$scope.editRecord = {};
// Hide records boxes
$(".aaaaRecord").hide();
$(".cNameRecord").hide();
$(".mxRecord").hide();
$(".txtRecord").hide();
$(".spfRecord").hide();
$(".nsRecord").hide();
$(".soaRecord").hide();
$(".srvRecord").hide();
$(".caaRecord").hide();
var currentSelection = "aRecord";
$("#" + currentSelection).addClass("active");
$scope.fetchRecordsTabs = function (recordType) {
$("#" + currentSelection).removeClass("active");
$("." + currentSelection).hide();
$scope.recordsLoading = false;
currentSelection = recordType;
$("#" + currentSelection).addClass("active");
$("." + currentSelection).show();
populateCurrentRecords();
};
$scope.fetchRecords = function () {
$scope.recordsLoading = false;
$scope.addRecordsBox = false;
populateCurrentRecords();
};
$scope.addDNSRecord = function (type) {
$scope.recordsLoading = false;
url = "/dns/addDNSRecordCloudFlare";
// Record specific values
var data = {};
if (type === "MX") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentMX = $scope.recordContentMX;
data.priority = $scope.priority;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "A") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentA = $scope.recordContentA;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "AAAA") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentAAAA = $scope.recordContentAAAA;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "CNAME") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentCNAME = $scope.recordContentCNAME;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "SPF") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentSPF = $scope.recordContentSPF;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "SOA") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.selectedZone;
data.recordContentSOA = $scope.recordContentSOA;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "TXT") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentTXT = $scope.recordContentTXT;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "NS") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.selectedZone;
data.recordContentNS = $scope.recordContentNS;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "SRV") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentSRV = $scope.recordContentSRV;
data.priority = $scope.priority;
data.ttl = $scope.ttl;
data.recordType = type;
} else if (type === "CAA") {
data.selectedZone = $scope.selectedZone;
data.recordName = $scope.recordName;
data.recordContentCAA = $scope.recordContentCAA;
data.ttl = $scope.ttl;
data.recordType = type;
}
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.add_status === 1) {
populateCurrentRecords();
$scope.canNotFetchRecords = true;
$scope.recordsFetched = false;
$scope.recordDeleted = true;
$scope.recordAdded = false;
$scope.couldNotConnect = true;
$scope.couldNotAddRecord = true;
$scope.recordsLoading = true;
} else {
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.couldNotAddRecord = false;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = false;
$scope.couldNotAddRecord = true;
}
};
function populateCurrentRecords() {
$scope.loadingRecords = true;
var selectedZone = $scope.selectedZone;
url = "/dns/getCurrentRecordsForDomainCloudFlare";
var data = {
selectedZone: selectedZone,
currentSelection: currentSelection
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function normalizeRecordForInline(record) {
record.ttlNum = record.ttl === 'AUTO' || record.ttl === 1 ? 1 : (parseInt(record.ttl, 10) || 3600);
record.priority = parseInt(record.priority, 10) || 0;
if (record.type != null && typeof record.type === 'string') {
record.type = record.type.toUpperCase().trim();
} else if (record.type == null || record.type === '') {
record.type = 'A';
}
}
function ListInitialDatas(response) {
$scope.loadingRecords = false;
if (response.data.fetchStatus === 1) {
$scope.records = JSON.parse(response.data.data);
$scope.records.forEach(normalizeRecordForInline);
$scope.currentRecords = false;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = false;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.couldNotAddRecord = true;
$scope.domainFeteched = $scope.selectedZone;
} else {
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = false;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = true;
$scope.recordsLoading = true;
$scope.couldNotAddRecord = true;
$scope.records = [];
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.loadingRecords = false;
$scope.addRecordsBox = true;
$scope.currentRecords = true;
$scope.canNotFetchRecords = true;
$scope.recordsFetched = true;
$scope.recordDeleted = true;
$scope.recordAdded = true;
$scope.couldNotConnect = false;
$scope.couldNotAddRecord = true;
$scope.records = [];
}
}
$scope.deleteRecord = function (id) {
var selectedZone = $scope.selectedZone;
url = "/dns/deleteDNSRecordCloudFlare";
var data = {
selectedZone: selectedZone,
id: id
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.delete_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;
}
};
$scope.dnsTypeList = ['A', 'AAAA', 'CNAME', 'MX', 'TXT', 'NS', 'SOA', 'SRV', 'CAA', 'SPF', 'DNSKEY', 'CDNSKEY', 'HTTPS', 'SVCB', 'URI', 'LOC', 'NAPTR', 'SMIMEA', 'SSHFP', 'TLSA', 'PTR'];
$scope.getTypeOptions = function (record) {
var list = angular.copy($scope.dnsTypeList);
var t = record && record.type ? String(record.type).toUpperCase().trim() : '';
if (t && list.indexOf(t) === -1) {
list.unshift(t);
}
return list;
};
$scope.editingRecordId = null;
$scope.editingField = null;
$scope.isEditing = function (record, field) {
return $scope.editingRecordId === record.id && $scope.editingField === field;
};
$scope.startEdit = function (record, field) {
$scope.editingRecordId = record.id;
$scope.editingField = field;
};
$scope.saveInlineField = function (record, field) {
$scope.editingRecordId = null;
$scope.editingField = null;
var ttl = record.ttlNum !== undefined ? record.ttlNum : (record.ttl === 'AUTO' || record.ttl === 1 ? 1 : parseInt(record.ttl, 10) || 3600);
var url = "/dns/updateDNSRecordCloudFlare";
var data = {
selectedZone: $scope.selectedZone,
id: record.id,
name: record.name,
recordType: record.type,
content: record.content,
ttl: ttl,
priority: parseInt(record.priority, 10) || 0,
proxied: record.proxy
};
var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } };
$http.post(url, data, config).then(function (response) {
if (response.data.update_status === 1) {
new PNotify({ title: 'Success', text: 'Record updated.', type: 'success' });
populateCurrentRecords();
} else {
new PNotify({ title: 'Error', text: response.data.error_message || 'Update failed', type: 'error' });
}
}, function () {
new PNotify({ title: 'Error', text: 'Could not connect to server.', type: 'error' });
});
};
$scope.openEditModal = function (record) {
$scope.editRecord = {
id: record.id,
name: record.name,
type: record.type,
ttl: record.ttl,
content: record.content,
priority: record.priority || 0,
proxy: record.proxy,
proxiable: record.proxiable
};
$scope.showEditModal = true;
};
$scope.closeEditModal = function () {
$scope.showEditModal = false;
};
$scope.saveEditRecord = function () {
var url = "/dns/updateDNSRecordCloudFlare";
var data = {
selectedZone: $scope.selectedZone,
id: $scope.editRecord.id,
name: $scope.editRecord.name,
recordType: $scope.editRecord.type,
content: $scope.editRecord.content,
ttl: $scope.editRecord.ttl === 'AUTO' || $scope.editRecord.ttl === 1 ? 1 : parseInt($scope.editRecord.ttl, 10) || 3600,
priority: parseInt($scope.editRecord.priority, 10) || 0,
proxied: $scope.editRecord.proxy
};
var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } };
$http.post(url, data, config).then(function (response) {
if (response.data.update_status === 1) {
$scope.closeEditModal();
populateCurrentRecords();
new PNotify({ title: 'Success', text: 'Record updated.', type: 'success' });
} else {
$scope.errorMessage = response.data.error_message || 'Update failed';
new PNotify({ title: 'Error', text: $scope.errorMessage, type: 'error' });
}
}, function () {
new PNotify({ title: 'Error', text: 'Could not connect to server.', type: 'error' });
});
};
$scope.syncCF = function () {
$scope.recordsLoading = false;
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;
}
};
$scope.enableProxy = function (name, value) {
$scope.recordsLoading = false;
var selectedZone = $scope.selectedZone;
url = "/dns/enableProxy";
var data = {
selectedZone: selectedZone,
name: name,
value: value
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
populateCurrentRecords();
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;
}
};
});
/* Java script code for CloudFlare */
app.controller('ResetDNSconf', function ($scope, $http, $timeout){
$scope.Loading = true;
$scope.NotifyBox = true;
$scope.InstallBox = true;
$scope.resetDNS = function () {
$scope.Loading = false;
$scope.installationDetailsForm = true;
$scope.InstallBox = false;
url = "/dns/resetDNSnow";
var data = {
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
function ListInitialData(response) {
if (response.data.status === 1) {
$scope.NotifyBox = true;
$scope.InstallBox = false;
$scope.Loading = false;
$scope.failedToStartInallation = true;
$scope.couldNotConnect = true;
$scope.modSecSuccessfullyInstalled = true;
$scope.installationFailed = true;
$scope.statusfile = response.data.tempStatusPath
$timeout(getRequestStatus, 1000);
} else {
$scope.errorMessage = response.data.error_message;
$scope.NotifyBox = false;
$scope.InstallBox = true;
$scope.Loading = true;
$scope.failedToStartInallation = false;
$scope.couldNotConnect = true;
$scope.modSecSuccessfullyInstalled = true;
}
}
function cantLoadInitialData(response) {
$scope.cyberhosting = true;
new PNotify({
title: 'Error!',
text: 'Could not connect to server, please refresh this page.',
type: 'error'
});
}
}
function getRequestStatus() {
$scope.NotifyBox = true;
$scope.InstallBox = false;
$scope.Loading = false;
$scope.failedToStartInallation = true;
$scope.couldNotConnect = true;
$scope.modSecSuccessfullyInstalled = true;
$scope.installationFailed = true;
url = "/dns/getresetstatus";
var data = {
statusfile: $scope.statusfile
};
var config = {
headers: {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
if (response.data.abort === 0) {
$scope.NotifyBox = true;
$scope.InstallBox = false;
$scope.Loading = false;
$scope.failedToStartInallation = true;
$scope.couldNotConnect = true;
$scope.modSecSuccessfullyInstalled = true;
$scope.installationFailed = true;
$scope.requestData = response.data.requestStatus;
$timeout(getRequestStatus, 1000);
} else {
// Notifications
$timeout.cancel();
$scope.NotifyBox = false;
$scope.InstallBox = false;
$scope.Loading = true;
$scope.failedToStartInallation = true;
$scope.couldNotConnect = true;
$scope.requestData = response.data.requestStatus;
if (response.data.installed === 0) {
$scope.installationFailed = false;
$scope.errorMessage = response.data.error_message;
} else {
$scope.modSecSuccessfullyInstalled = false;
$timeout(function () {
$window.location.reload();
}, 3000);
}
}
}
function cantLoadInitialDatas(response) {
$scope.NotifyBox = false;
$scope.InstallBox = false;
$scope.Loading = true;
$scope.failedToStartInallation = true;
$scope.couldNotConnect = false;
$scope.modSecSuccessfullyInstalled = true;
$scope.installationFailed = true;
}
}
});