diff --git a/dns/models.py b/dns/models.py
index db54286c4..49bef743a 100755
--- a/dns/models.py
+++ b/dns/models.py
@@ -5,7 +5,7 @@ from loginSystem.models import Administrator
class Domains(models.Model):
- admin = models.ForeignKey(Administrator,on_delete=models.CASCADE, default=1)
+ admin = models.ForeignKey(Administrator,on_delete=models.CASCADE, null=True)
name = models.CharField(unique=True, max_length=255)
master = models.CharField(max_length=128, blank=True, null=True)
last_check = models.IntegerField(blank=True, null=True)
@@ -18,7 +18,7 @@ class Domains(models.Model):
class Records(models.Model):
- domainOwner = models.ForeignKey(Domains, on_delete=models.CASCADE)
+ domainOwner = models.ForeignKey(Domains, on_delete=models.CASCADE, null=True)
id = models.BigAutoField(primary_key=True)
domain_id = models.IntegerField(blank=True, null=True)
name = models.CharField(max_length=255, blank=True, null=True)
diff --git a/install/installCyberPanel.py b/install/installCyberPanel.py
index c6c291e62..59ddffae5 100755
--- a/install/installCyberPanel.py
+++ b/install/installCyberPanel.py
@@ -604,8 +604,8 @@ class InstallCyberPanel:
'Install PowerDNS',
1, 1, os.EX_OSERR)
- command = 'curl -o /etc/yum.repos.d/powerdns-auth-master.repo ' \
- 'https://repo.powerdns.com/repo-files/centos-auth-master.repo'
+ command = 'curl -o /etc/yum.repos.d/powerdns-auth-42.repo ' \
+ 'https://repo.powerdns.com/repo-files/centos-auth-42.repo'
install.preFlightsChecks.call(command, self.distro, '[installPowerDNS]',
'Install PowerDNS',
1, 1, os.EX_OSERR)
diff --git a/manageServices/serviceManager.py b/manageServices/serviceManager.py
index f56691bad..9d0afcfb6 100755
--- a/manageServices/serviceManager.py
+++ b/manageServices/serviceManager.py
@@ -35,19 +35,19 @@ class ServiceManager:
for items in data:
if items.find('allow-axfr-ips') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('also-notify') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('daemon=') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('disable-axfr') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('slave') > -1:
- data[counter] = '#' + data[counter]
+ continue
counter = counter + 1
@@ -68,19 +68,19 @@ class ServiceManager:
for items in data:
if items.find('allow-axfr-ips') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('also-notify') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('daemon=') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('disable-axfr') > -1:
- data[counter] = '#' + data[counter]
+ continue
if items.find('slave') > -1:
- data[counter] = '#' + data[counter]
+ continue
counter = counter + 1
@@ -90,8 +90,20 @@ class ServiceManager:
for items in data:
writeToFile.writelines(items + '\n')
- writeToFile.writelines('slave=yes\n')
- writeToFile.writelines('daemon=no\n')
+ slaveData = """slave=yes
+daemon=yes
+disable-axfr=yes
+guardian=yes
+local-address=0.0.0.0
+local-port=53
+master=no
+slave-cycle-interval=60
+setgid=pdns
+setuid=pdns
+superslave=yes
+"""
+
+ writeToFile.writelines(slaveData)
writeToFile.close()
for items in Supermasters.objects.all():
diff --git a/manageServices/static/manageServices/manageServices.js b/manageServices/static/manageServices/manageServices.js
index bf85e23cd..b9244c85b 100755
--- a/manageServices/static/manageServices/manageServices.js
+++ b/manageServices/static/manageServices/manageServices.js
@@ -152,9 +152,12 @@ app.controller('powerDNS', function ($scope, $http, $timeout, $window) {
$scope.slaveIPs = false;
$scope.masterServerHD = true;
- } else {
+ } else if($scope.dnsMode == 'SLAVE') {
$scope.slaveIPs = true;
$scope.masterServerHD = false;
+ }else{
+ $scope.slaveIPs = true;
+ $scope.masterServerHD = true;
}
}
diff --git a/manageServices/templates/manageServices/managePowerDNS.html b/manageServices/templates/manageServices/managePowerDNS.html
index 1df94d169..685f53474 100755
--- a/manageServices/templates/manageServices/managePowerDNS.html
+++ b/manageServices/templates/manageServices/managePowerDNS.html
@@ -42,11 +42,11 @@
- {% trans 'Default is Slave Mode' %}
diff --git a/manageServices/views.py b/manageServices/views.py
index d5ccd6aad..7c73edb05 100755
--- a/manageServices/views.py
+++ b/manageServices/views.py
@@ -168,7 +168,7 @@ def saveStatus(request):
pdns.masterServer = data['slaveServerNS']
pdns.masterIP = data['masterServerIP']
pdns.save()
- else:
+ elif data['dnsMode'] == 'MASTER':
pdns.masterServer = 'NONE'
pdns.masterIP = 'NONE'
pdns.save()
@@ -192,11 +192,11 @@ def saveStatus(request):
except:
pass
+ if data['dnsMode'] != 'Default':
+ data['type'] = data['dnsMode']
- data['type'] = data['dnsMode']
-
- sm = ServiceManager(data)
- sm.managePDNS()
+ sm = ServiceManager(data)
+ sm.managePDNS()
command = 'sudo systemctl enable pdns'
ProcessUtilities.executioner(command)
diff --git a/plogical/dnsUtilities.py b/plogical/dnsUtilities.py
index a3e8dfe10..c845c3a8a 100755
--- a/plogical/dnsUtilities.py
+++ b/plogical/dnsUtilities.py
@@ -41,6 +41,20 @@ class DNS:
pdns = PDNSStatus.objects.get(pk=1)
if pdns.type == 'MASTER':
zone = Domains(admin=admin, name=topLevelDomain, type="MASTER")
+ zone.save()
+
+ for items in SlaveServers.objects.all():
+ record = Records(domainOwner=zone,
+ domain_id=zone.id,
+ name=topLevelDomain,
+ type="NS",
+ content=items.slaveServer,
+ ttl=3600,
+ prio=0,
+ disabled=0,
+ auth=1)
+ record.save()
+
else:
zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE")
except:
@@ -49,38 +63,40 @@ class DNS:
zone.save()
- record = Records(domainOwner=zone,
- domain_id=zone.id,
- name=topLevelDomain,
- type="NS",
- content='hostmaster.%s' % (topLevelDomain),
- ttl=3600,
- prio=0,
- disabled=0,
- auth=1)
- record.save()
+ if zone.type == 'NATIVE':
- record = Records(domainOwner=zone,
- domain_id=zone.id,
- name=topLevelDomain,
- type="NS",
- content='ns1.%s' % (topLevelDomain),
- ttl=3600,
- prio=0,
- disabled=0,
- auth=1)
- record.save()
+ record = Records(domainOwner=zone,
+ domain_id=zone.id,
+ name=topLevelDomain,
+ type="NS",
+ content='hostmaster.%s' % (topLevelDomain),
+ ttl=3600,
+ prio=0,
+ disabled=0,
+ auth=1)
+ record.save()
- record = Records(domainOwner=zone,
- domain_id=zone.id,
- name=topLevelDomain,
- type="NS",
- content='ns2.%s' % (topLevelDomain),
- ttl=3600,
- prio=0,
- disabled=0,
- auth=1)
- record.save()
+ record = Records(domainOwner=zone,
+ domain_id=zone.id,
+ name=topLevelDomain,
+ type="NS",
+ content='ns1.%s' % (topLevelDomain),
+ ttl=3600,
+ prio=0,
+ disabled=0,
+ auth=1)
+ record.save()
+
+ record = Records(domainOwner=zone,
+ domain_id=zone.id,
+ name=topLevelDomain,
+ type="NS",
+ content='ns2.%s' % (topLevelDomain),
+ ttl=3600,
+ prio=0,
+ disabled=0,
+ auth=1)
+ record.save()
content = "ns1." + topLevelDomain + " hostmaster." + topLevelDomain + " 1 10800 3600 604800 3600"
@@ -392,6 +408,16 @@ class DNS:
@staticmethod
def createDNSRecord(zone, name, type, value, priority, ttl):
try:
+
+ if zone.type == 'MASTER':
+ getSOA = Records.objects.get(domainOwner=zone, type='SOA')
+ soaContent = getSOA.content.split(' ')
+ soaContent[2] = str(int(soaContent[2]) + 1)
+ getSOA.content = " ".join(soaContent)
+ getSOA.save()
+
+
+
if type == 'NS':
if Records.objects.filter(name=name, type=type, content=value).count() == 0:
record = Records(domainOwner=zone,
diff --git a/plogical/website.py b/plogical/website.py
index c4630ee68..98711f23d 100755
--- a/plogical/website.py
+++ b/plogical/website.py
@@ -609,6 +609,19 @@ class WebsiteManager:
Data['phps'] = PHPManager.findPHPVersions()
+ servicePath = '/home/cyberpanel/postfix'
+ if os.path.exists(servicePath):
+ Data['email'] = 1
+ else:
+ Data['email'] = 0
+
+ servicePath = '/home/cyberpanel/pureftpd'
+ if os.path.exists(servicePath):
+ Data['ftp'] = 1
+ else:
+ Data['ftp'] = 0
+
+
return render(request, 'websiteFunctions/website.html', Data)
else:
@@ -674,6 +687,18 @@ class WebsiteManager:
Data['phps'] = PHPManager.findPHPVersions()
+ servicePath = '/home/cyberpanel/postfix'
+ if os.path.exists(servicePath):
+ Data['email'] = 1
+ else:
+ Data['email'] = 0
+
+ servicePath = '/home/cyberpanel/pureftpd'
+ if os.path.exists(servicePath):
+ Data['ftp'] = 1
+ else:
+ Data['ftp'] = 0
+
return render(request, 'websiteFunctions/launchChild.html', Data)
else:
return render(request, 'websiteFunctions/launchChild.html',
diff --git a/static/baseTemplate/custom-js/system-status.js b/static/baseTemplate/custom-js/system-status.js
old mode 100755
new mode 100644
index 0200129db..134e67021
--- a/static/baseTemplate/custom-js/system-status.js
+++ b/static/baseTemplate/custom-js/system-status.js
@@ -182,6 +182,10 @@ app.controller('adminController', function($scope,$http,$timeout) {
// DNS Management
+ if(!Boolean(response.data.dnsAsWhole)){
+ $('.dnsAsWhole').hide();
+ }
+
if(!Boolean(response.data.createNameServer)){
$('.createNameServer').hide();
}
@@ -200,6 +204,10 @@ app.controller('adminController', function($scope,$http,$timeout) {
// Email Management
+ if(!Boolean(response.data.emailAsWhole)){
+ $('.emailAsWhole').hide();
+ }
+
if(!Boolean(response.data.createEmail)){
$('.createEmail').hide();
}
@@ -223,6 +231,10 @@ app.controller('adminController', function($scope,$http,$timeout) {
// FTP Management
+ if(!Boolean(response.data.ftpAsWhole)){
+ $('.ftpAsWhole').hide();
+ }
+
if(!Boolean(response.data.createFTPAccount)){
$('.createFTPAccount').hide();
}
@@ -273,7 +285,20 @@ app.controller('adminController', function($scope,$http,$timeout) {
}
- }
+ }else{
+
+ if(!Boolean(response.data.emailAsWhole)){
+ $('.emailAsWhole').hide();
+ }
+
+ if(!Boolean(response.data.ftpAsWhole)){
+ $('.ftpAsWhole').hide();
+ }
+
+ if(!Boolean(response.data.dnsAsWhole)){
+ $('.dnsAsWhole').hide();
+ }
+ }
}
function cantLoadInitialData(response) {}
diff --git a/static/manageServices/manageServices.js b/static/manageServices/manageServices.js
old mode 100755
new mode 100644
index ca700620a..b9244c85b
--- a/static/manageServices/manageServices.js
+++ b/static/manageServices/manageServices.js
@@ -12,6 +12,7 @@ app.controller('powerDNS', function ($scope, $http, $timeout, $window) {
$scope.couldNotConnect = true;
$scope.changesApplied = true;
$scope.slaveIPs = true;
+ $scope.masterServerHD = true;
var pdnsStatus = false;
@@ -90,7 +91,14 @@ app.controller('powerDNS', function ($scope, $http, $timeout, $window) {
status: pdnsStatus,
service: service,
dnsMode: $scope.dnsMode,
- slaveIPData: $scope.slaveIPData
+ slaveServerNS: $scope.slaveServerNS,
+ masterServerIP: $scope.masterServerIP,
+ slaveServer: $scope.slaveServer,
+ slaveServerIP: $scope.slaveServerIP,
+ slaveServer2: $scope.slaveServer2,
+ slaveServerIP2: $scope.slaveServerIP2,
+ slaveServer3: $scope.slaveServer3,
+ slaveServerIP3: $scope.slaveServerIP3,
};
}else {
var data = {
@@ -142,9 +150,14 @@ app.controller('powerDNS', function ($scope, $http, $timeout, $window) {
$scope.modeChange = function () {
if ($scope.dnsMode === 'MASTER') {
$scope.slaveIPs = false;
+ $scope.masterServerHD = true;
- } else {
+ } else if($scope.dnsMode == 'SLAVE') {
$scope.slaveIPs = true;
+ $scope.masterServerHD = false;
+ }else{
+ $scope.slaveIPs = true;
+ $scope.masterServerHD = true;
}
}
diff --git a/websiteFunctions/templates/websiteFunctions/launchChild.html b/websiteFunctions/templates/websiteFunctions/launchChild.html
index c6c405939..8003469e2 100755
--- a/websiteFunctions/templates/websiteFunctions/launchChild.html
+++ b/websiteFunctions/templates/websiteFunctions/launchChild.html
@@ -175,7 +175,8 @@