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 @@
-

+

@@ -205,7 +206,8 @@
- +
@@ -217,7 +219,7 @@
-

+

@@ -275,7 +277,8 @@
- + @@ -286,7 +289,8 @@
- + @@ -318,7 +322,8 @@
-

+

@@ -437,7 +443,8 @@
-

+

diff --git a/websiteFunctions/templates/websiteFunctions/website.html b/websiteFunctions/templates/websiteFunctions/website.html index 431f6695b..a7fdb7473 100755 --- a/websiteFunctions/templates/websiteFunctions/website.html +++ b/websiteFunctions/templates/websiteFunctions/website.html @@ -673,7 +673,8 @@
- @@ -810,23 +811,28 @@
- - + {% if ftp %} + + + + + + {% endif %} @@ -890,67 +896,75 @@
- {% if marketingStatus %} + {% if email %} -