PHPMYADMIN Fix

This commit is contained in:
Zarak Khan 2024-01-15 22:12:19 +05:00
parent 039e9592ff
commit 367693e7c3
9 changed files with 568 additions and 64 deletions

View File

@ -548,7 +548,7 @@
Delete Database</a>
</li>
<li>
<a href="{% url 'phpMyAdminV2' %}"
<a href="{% url 'phpMyAdminV2 ' %}"
class="flex items-center w-full text-base font-normal text-white transition duration-75 rounded-lg group hover:bg-cyan-400 dark:text-white dark:hover:bg-gray-700 pl-11">•
PHPMYAdmin</a>
</li>
@ -588,7 +588,7 @@
</div>
<ul id="dropdown-example-6" class="hidden py-2 space-y-2">
<li>
<a href="#"
<a href="{% url 'createNameserverV2' %}"
class="flex items-center w-full text-base font-normal text-white transition duration-75 rounded-lg group hover:bg-cyan-400 dark:text-white dark:hover:bg-gray-700 pl-11">•
Create NameServer</a>
</li>
@ -1674,6 +1674,7 @@
<script src="{% static 'userManagment/userManagementV2.js' %}"></script>
<script src="{% static 'packages/packagesV2.js' %}"></script>
<script src="{% static 'databases/databasesV2.js' %}"></script>
<script src="{% static 'dns/dnsV2.js' %}"></script>
</body>
</html>

View File

@ -203,6 +203,7 @@ def phpMyAdmin(request):
return dm.phpMyAdmin(request, userID)
except KeyError:
return redirect(loadLoginPage)
def phpMyAdminV2(request):
try:
userID = request.session['userID']

View File

@ -10,15 +10,16 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
django.setup()
from django.http import HttpResponse
import json
try:
from plogical.dnsUtilities import DNS
from loginSystem.models import Administrator
from .models import Domains,Records
from .models import Domains, Records
from plogical.mailUtilities import mailUtilities
except:
pass
import os
from re import match,I,M
from re import match, I, M
from plogical.acl import ACLManager
import CloudFlare
import re
@ -26,6 +27,7 @@ import plogical.CyberCPLogFileWriter as logging
from plogical.processUtilities import ProcessUtilities
from plogical.httpProc import httpProc
class DNSManager:
defaultNameServersPath = '/home/cyberpanel/defaultNameservers'
@ -38,13 +40,13 @@ class DNSManager:
self.email = data[0].rstrip('\n')
self.key = data[1].rstrip('\n')
def loadDNSHome(self, request = None, userID = None):
def loadDNSHome(self, request=None, userID=None):
admin = Administrator.objects.get(pk=userID)
template = 'dns/index.html'
proc = httpProc(request, template, {"type": admin.type}, 'createDNSZone')
return proc.render()
def createNameserver(self, request = None, userID = None):
def createNameserver(self, request=None, userID=None):
mailUtilities.checkHome()
if os.path.exists('/home/cyberpanel/powerdns'):
@ -56,7 +58,19 @@ class DNSManager:
proc = httpProc(request, template, finalData, 'createNameServer')
return proc.render()
def NSCreation(self, userID = None, data = None):
def createNameserverV2(self, request=None, userID=None):
mailUtilities.checkHome()
if os.path.exists('/home/cyberpanel/powerdns'):
finalData = {"status": 1}
else:
finalData = {"status": 0}
template = 'dns/createNameServerV2.html'
proc = httpProc(request, template, finalData, 'createNameServer')
return proc.render()
def NSCreation(self, userID=None, data=None):
try:
admin = Administrator.objects.get(pk=userID)
currentACL = ACLManager.loadedACL(userID)
@ -64,7 +78,6 @@ class DNSManager:
if ACLManager.currentContextPermission(currentACL, 'createNameServer') == 0:
return ACLManager.loadErrorJson('NSCreation', 0)
domainForNS = data['domainForNS']
ns1 = data['ns1']
ns2 = data['ns2']
@ -77,7 +90,6 @@ class DNSManager:
## NS1
record = Records(domainOwner=newZone,
domain_id=newZone.id,
name=ns1,
@ -112,7 +124,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def createDNSZone(self, request = None, userID = None):
def createDNSZone(self, request=None, userID=None):
if os.path.exists('/home/cyberpanel/powerdns'):
finalData = {'status': 1}
@ -123,7 +135,18 @@ class DNSManager:
proc = httpProc(request, template, finalData, 'createDNSZone')
return proc.render()
def zoneCreation(self, userID = None, data = None):
def createDNSZoneV2(self, request=None, userID=None):
if os.path.exists('/home/cyberpanel/powerdns'):
finalData = {'status': 1}
else:
finalData = {'status': 0}
template = 'dns/createDNSZoneV2.html'
proc = httpProc(request, template, finalData, 'createDNSZone')
return proc.render()
def zoneCreation(self, userID=None, data=None):
try:
admin = Administrator.objects.get(pk=userID)
@ -158,7 +181,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def addDeleteDNSRecords(self, request = None, userID = None):
def addDeleteDNSRecords(self, request=None, userID=None):
currentACL = ACLManager.loadedACL(userID)
if not os.path.exists('/home/cyberpanel/powerdns'):
@ -171,7 +194,7 @@ class DNSManager:
proc = httpProc(request, template, finalData, 'addDeleteRecords')
return proc.render()
def getCurrentRecordsForDomain(self, userID = None, data = None):
def getCurrentRecordsForDomain(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -179,7 +202,6 @@ class DNSManager:
if ACLManager.currentContextPermission(currentACL, 'addDeleteRecords') == 0:
return ACLManager.loadErrorJson('fetchStatus', 0)
zoneDomain = data['selectedZone']
currentSelection = data['currentSelection']
@ -245,7 +267,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def addDNSRecord(self, userID = None, data = None):
def addDNSRecord(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -416,7 +438,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def updateRecord(self, userID = None, data = None):
def updateRecord(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -462,7 +484,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def deleteDNSRecord(self, userID = None, data = None):
def deleteDNSRecord(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -480,7 +502,6 @@ class DNSManager:
else:
return ACLManager.loadError()
delRecord.delete()
final_dic = {'status': 1, 'delete_status': 1, 'error_message': "None"}
@ -492,7 +513,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def deleteDNSZone(self, request = None, userID = None):
def deleteDNSZone(self, request=None, userID=None):
currentACL = ACLManager.loadedACL(userID)
if not os.path.exists('/home/cyberpanel/powerdns'):
finalData = {"status": 0}
@ -504,7 +525,19 @@ class DNSManager:
proc = httpProc(request, template, finalData, 'deleteZone')
return proc.render()
def submitZoneDeletion(self, userID = None, data = None):
def deleteDNSZoneV2(self, request=None, userID=None):
currentACL = ACLManager.loadedACL(userID)
if not os.path.exists('/home/cyberpanel/powerdns'):
finalData = {"status": 0}
else:
finalData = {"status": 1}
finalData['domainsList'] = ACLManager.findAllDomains(currentACL, userID)
template = 'dns/deleteDNSZoneV2.html'
proc = httpProc(request, template, finalData, 'deleteZone')
return proc.render()
def submitZoneDeletion(self, userID=None, data=None):
try:
zoneDomain = data['zoneDomain']
@ -513,7 +546,6 @@ class DNSManager:
if ACLManager.currentContextPermission(currentACL, 'deleteZone') == 0:
return ACLManager.loadErrorJson('delete_status', 0)
if ACLManager.checkOwnershipZone(zoneDomain, admin, currentACL) == 1:
pass
else:
@ -568,7 +600,7 @@ class DNSManager:
proc = httpProc(request, template, data, 'admin')
return proc.render()
def saveNSConfigurations(self, userID = None, data = None):
def saveNSConfigurations(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -580,10 +612,13 @@ class DNSManager:
nsContent = ''
try:
nsContent = '%s\n%s\n%s\n%s\n' % (data['firstNS'].rstrip('\n'), data['secondNS'].rstrip('\n'), data['thirdNS'].rstrip('\n'), data['forthNS'].rstrip('\n'))
nsContent = '%s\n%s\n%s\n%s\n' % (
data['firstNS'].rstrip('\n'), data['secondNS'].rstrip('\n'), data['thirdNS'].rstrip('\n'),
data['forthNS'].rstrip('\n'))
except:
try:
nsContent = '%s\n%s\n%s\n' % (data['firstNS'].rstrip('\n'), data['secondNS'].rstrip('\n'), data['thirdNS'].rstrip('\n'))
nsContent = '%s\n%s\n%s\n' % (
data['firstNS'].rstrip('\n'), data['secondNS'].rstrip('\n'), data['thirdNS'].rstrip('\n'))
except:
try:
nsContent = '%s\n%s\n' % (data['firstNS'].rstrip('\n'), data['secondNS'].rstrip('\n'))
@ -597,7 +632,6 @@ class DNSManager:
writeToFile.write(nsContent.rstrip('\n'))
writeToFile.close()
final_dic = {'status': 1, 'error_message': "None"}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
@ -607,7 +641,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def addDeleteDNSRecordsCloudFlare(self, request = None, userID = None):
def addDeleteDNSRecordsCloudFlare(self, request=None, userID=None):
currentACL = ACLManager.loadedACL(userID)
if not os.path.exists('/home/cyberpanel/powerdns'):
status = 0
@ -633,7 +667,7 @@ class DNSManager:
proc = httpProc(request, template, data, 'addDeleteRecords')
return proc.render()
def saveCFConfigs(self, userID = None, data = None):
def saveCFConfigs(self, userID=None, data=None):
try:
cfEmail = data['cfEmail']
cfToken = data['cfToken']
@ -662,7 +696,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def getCurrentRecordsForDomainCloudFlare(self, userID = None, data = None):
def getCurrentRecordsForDomainCloudFlare(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -670,7 +704,6 @@ class DNSManager:
if ACLManager.currentContextPermission(currentACL, 'addDeleteRecords') == 0:
return ACLManager.loadErrorJson('fetchStatus', 0)
zoneDomain = data['selectedZone']
currentSelection = data['currentSelection']
@ -684,8 +717,8 @@ class DNSManager:
self.loadCFKeys()
params = {'name': zoneDomain, 'per_page':50}
cf = CloudFlare.CloudFlare(email=self.email,token=self.key)
params = {'name': zoneDomain, 'per_page': 50}
cf = CloudFlare.CloudFlare(email=self.email, token=self.key)
try:
zones = cf.zones.get(params=params)
@ -727,7 +760,7 @@ class DNSManager:
fetchType = 'CAA'
try:
dns_records = cf.zones.dns_records.get(zone_id, params={'per_page':50, 'type':fetchType})
dns_records = cf.zones.dns_records.get(zone_id, params={'per_page': 50, 'type': fetchType})
except CloudFlare.exceptions.CloudFlareAPIError as e:
final_json = json.dumps({'status': 0, 'fetchStatus': 0, 'error_message': str(e), "data": '[]'})
return HttpResponse(final_json)
@ -760,7 +793,6 @@ class DNSManager:
else:
json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']'
final_json = json.dumps({'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data})
return HttpResponse(final_json)
@ -770,7 +802,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def deleteDNSRecordCloudFlare(self, userID = None, data = None):
def deleteDNSRecordCloudFlare(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -813,8 +845,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def addDNSRecordCloudFlare(self, userID = None, data = None):
def addDNSRecordCloudFlare(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -1001,7 +1032,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def syncCF(self, userID = None, data = None):
def syncCF(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -1039,8 +1070,7 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def enableProxy(self, userID = None, data = None):
def enableProxy(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
@ -1079,7 +1109,6 @@ class DNSManager:
##
if value == True:
new_r_proxied_flag = False
else:
@ -1126,13 +1155,11 @@ class DNSManager:
try:
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu or ProcessUtilities.decideDistro() == ProcessUtilities.cent8:
command = 'systemctl stop systemd-resolved'
ProcessUtilities.executioner(command)
command = 'systemctl disable systemd-resolved.service'
ProcessUtilities.executioner(command)
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
command = 'DEBIAN_FRONTEND=noninteractive apt-get -y remove pdns-server pdns-backend-mysql -y'
@ -1185,7 +1212,6 @@ class DNSManager:
writeDataToFile.close()
if self.remotemysql == 'ON':
command = "sed -i 's|gmysql-host=localhost|gmysql-host=%s|g' %s" % (self.mysqlhost, dnsPath)
ProcessUtilities.executioner(command)
@ -1242,7 +1268,8 @@ class DNSManager:
if os.path.exists(ProcessUtilities.debugPath):
logging.CyberCPLogFileWriter.writeToFile('%s. [setupConnection:75]' % (str(msg)))
logging.CyberCPLogFileWriter.statusWriter(self.extraArgs['tempStatusPath'], 'Removing and re-installing DNS..,5')
logging.CyberCPLogFileWriter.statusWriter(self.extraArgs['tempStatusPath'],
'Removing and re-installing DNS..,5')
if self.installPowerDNS() == 0:
logging.CyberCPLogFileWriter.statusWriter(self.extraArgs['tempStatusPath'],
@ -1259,7 +1286,8 @@ class DNSManager:
logging.CyberCPLogFileWriter.statusWriter(self.extraArgs['tempStatusPath'], 'Configurations reset..,70')
if self.installPowerDNSConfigurations(settings.DATABASES['default']['PASSWORD']) == 0:
logging.CyberCPLogFileWriter.statusWriter(self.extraArgs['tempStatusPath'], 'installPowerDNSConfigurations failed. [404].')
logging.CyberCPLogFileWriter.statusWriter(self.extraArgs['tempStatusPath'],
'installPowerDNSConfigurations failed. [404].')
return 0
if self.startPowerDNS() == 0:
@ -1278,8 +1306,8 @@ class DNSManager:
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def main():
def main():
parser = argparse.ArgumentParser(description='CyberPanel')
parser.add_argument('function', help='Specify a function to call!')
parser.add_argument('--tempStatusPath', help='Path of temporary status file.')
@ -1291,5 +1319,6 @@ def main():
ftp = DNSManager(extraArgs)
ftp.ResetDNSConfigurations()
if __name__ == "__main__":
main()
main()

136
dns/static/dns/dnsV2.js Normal file
View File

@ -0,0 +1,136 @@
newapp.controller('createNameserverV2', 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;
}
};
});
newapp.controller('createDNSZoneV2', 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;
}
};
});

View File

@ -0,0 +1,78 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
{% load static %}
<div ng-controller="createDNSZoneV2" class="p-8">
{% if not status %}
<div>
<div class="flex justify-between">
<div>
<p class="text-4xl font-bold">Create DNS Zone</p>
</div>
<div>
<h3>{% trans "PowerDNS is disabled." %}
<a href="{% url 'managePowerDNS' %}">
<button class="bg-orange-500 text-white font-bold px-4 py-2 text-xl">
<span>{% trans "Enable Now" %}</span>
<i class="glyph-icon icon-arrow-right"></i>
</button>
</a></h3>
</div>
</div>
<p class="text-xs text-gray-600 py-2 font-semibold">This page is used to create DNS zone, to edit dns
zone you can visit Modify DNS Zone Page.</p>
</div>
{% else %}
<div>
<div class="py-4">
<p class="text-xl font-bold">Details</p>
<img ng-hide="createDNSZoneLoading" src="{% static 'images/loading.gif' %}">
</div>
<hr>
<div id="createPackages">
<div class="flex mt-4 py-2 px-6">
<div>
<p class="font-semibold w-60">Domain Name</p>
</div>
<div>
<input name="dom" type="text" class="w-80 bg-gray-100 rounded px-2 py-1"
ng-model="zoneDomain" required>
</div>
<div class="text-orange-500 font-semibold ml-3">
<div class="current-pack">example.com</div>
</div>
</div>
<div class="flex justify-center mt-6">
<button ng-click="createDNSZone()"
class="bg-orange-500 text-white font-bold px-4 py-2 text-xl">
Create DNS Zone
</button>
</div>
<div class="mt-4">
<label class="col-sm-3 control-label"></label>
<div>
<div ng-hide="dnsZoneCreated"
class="flex justify-center bg-green-500 px-2 rounded-lg py-1 font-semibold">
<p>{% trans "DNS Zone for domain:" %} <strong>{$ zoneDomain $}</strong> created<br>
</p>
</div>
<div ng-hide="dnsZoneCreationFailed"
class="flex justify-center bg-red-500 rounded-lg text-white px-2 py-1 font-semibold">
<p>{% trans "Cannot create DNS Zone. Error message:" %} {$ errorMessage $}</p>
</div>
<div ng-hide="couldNotConnect"
class="flex justify-center bg-red-500 rounded-lg text-white px-2 py-1 font-semibold">
<p>{% trans "Could not connect to server. Please refresh this page." %}</p>
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock %}

View File

@ -0,0 +1,126 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
{% load static %}
<div ng-controller="createNameserverV2" class="p-8">
{% if not status %}
<div>
<div class="flex justify-between">
<div>
<p class="text-4xl font-bold">Create NameServer</p>
</div>
<div>
<h3>{% trans "PowerDNS is disabled." %}
<a href="{% url 'managePowerDNS' %}">
<button class="bg-orange-500 text-white font-bold px-4 py-2 text-xl">
<span>{% trans "Enable Now" %}</span>
<i class="glyph-icon icon-arrow-right"></i>
</button>
</a></h3>
</div>
</div>
<p class="text-xs text-gray-600 py-2 font-semibold">You can use this page to setup nameservers using
which
people on the internet can resolve websites hosted on this server.</p>
</div>
{% else %}
<div>
<div class="py-4">
<p class="text-xl font-bold">Details</p>
<img ng-hide="createNameserverLoading" src="{% static 'images/loading.gif' %}">
</div>
<hr>
<div id="createPackages">
<div class="flex mt-4 py-2 px-6">
<div>
<p class="font-semibold w-60">Domain Name</p>
</div>
<div>
<input name="dom" type="text" class="w-80 bg-gray-100 rounded px-2 py-1"
ng-model="domainForNS" required>
</div>
<div class="text-orange-500 font-semibold ml-3">
<div class="current-pack">example.com</div>
</div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-60">First NameServer</p>
</div>
<div>
<input name="firstNS" type="text" class="w-80 bg-gray-100 rounded px-2 py-1"
ng-model="firstNS" required>
</div>
<div class="text-orange-500 font-semibold ml-3">
<div class="current-pack">ns1.example.com</div>
</div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-60">IP Address</p>
</div>
<div>
<input value="IP Address for first nameserver." name="firstNSIP" type="text"
class="w-80 bg-gray-100 rounded px-2 py-1" ng-model="firstNSIP" required>
</div>
<div class="text-orange-500 font-semibold ml-3"><p>{% trans "MB (0 = Unlimited)" %}</p></div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-60">Second NameServer (Backup)</p>
</div>
<div>
<input name="secondNS" type="text" class="w-80 bg-gray-100 rounded px-2 py-1"
ng-model="secondNS" required>
</div>
<div class="text-orange-500 font-semibold ml-3">
<div class="current-pack">ns2.example.com</div>
</div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-60">IP Address</p>
</div>
<div>
<input name="secondNSIP" type="text" class="w-80 bg-gray-100 rounded px-2 py-1"
ng-model="secondNSIP" required>
</div>
</div>
<div class="flex justify-center mt-6">
<button ng-click="createNameserverFunc()"
class="bg-orange-500 text-white font-bold px-4 py-2 text-xl">
Create NameServer
</button>
</div>
<div class="mt-4">
<label class="col-sm-3 control-label"></label>
<div>
<div ng-hide="nameserverCreated"
class="flex justify-center bg-green-500 px-2 rounded-lg py-1 font-semibold">
<p>{% trans "The following nameservers were successfully created:" %} <br>
<strong>{$ nameServerOne $}</strong> <br>
<strong>{$ nameServerTwo $}</strong> <br>
</p>
</div>
<div ng-hide="nameserverCreationFailed"
class="flex justify-center bg-red-500 rounded-lg text-white px-2 py-1 font-semibold">
<p>{% trans "Nameserver cannot be created. Error message:" %} {$ errorMessage $}</p>
</div>
<div ng-hide="couldNotConnect"
class="flex justify-center bg-red-500 rounded-lg text-white px-2 py-1 font-semibold">
<p>{% trans "Could not connect to server. Please refresh this page." %}</p>
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock %}

View File

@ -0,0 +1,85 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
{% load static %}
<div ng-controller="deleteDNSZoneV2" class="p-8">
{% if not status %}
<div>
<div class="flex justify-between">
<div>
<p class="text-4xl font-bold">Delete DNS Zone</p>
</div>
<div>
<h3>{% trans "PowerDNS is disabled." %}
<a href="{% url 'managePowerDNS' %}">
<button class="bg-orange-500 text-white font-bold px-4 py-2 text-xl">
<span>{% trans "Enable Now" %}</span>
<i class="glyph-icon icon-arrow-right"></i>
</button>
</a></h3>
</div>
</div>
<p class="text-xs text-gray-600 py-2 font-semibold">This page can be used to delete DNS Zone. Deleting
the DNS zone will remove all its related records as well.</p>
</div>
{% else %}
<div>
<div class="py-4">
<p class="text-xl font-bold">Details</p>
<img ng-hide="createDNSZoneLoading" src="{% static 'images/loading.gif' %}">
</div>
<hr>
<div id="createPackages">
<div class="flex mt-4 py-2 px-6">
<div>
<p class="font-semibold w-60">Select Zone</p>
</div>
<div>
<select ng-model="selectedZone" class="w-80 bg-gray-100 rounded px-2 py-1">
{% for items in domainsList %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="flex justify-center mt-6">
<button ng-click="deleteZone()"
class="bg-orange-500 text-white font-bold px-4 py-2 text-xl">
Delete Zone
</button>
</div>
<div ng-hide="deleteZoneButton" class="flex justify-center mt-6">
<button type="button" ng-click="deleteZoneFinal()"
class="bg-gray-500 text-white font-bold px-4 py-2 text-xl">{% trans "Are you sure?" %}</button>
</div>
<div class="mt-4">
<label class="col-sm-3 control-label"></label>
<div>
<div ng-hide="deleteSuccess"
class="flex justify-center bg-green-500 px-2 rounded-lg py-1 font-semibold">
<p>{% trans "Zone for domain:" %} <strong>{$ deletedZone
$}</strong> {% trans "is successfully erased." %}</p>
</div>
<div ng-hide="deleteFailure"
class="flex justify-center bg-red-500 rounded-lg text-white px-2 py-1 font-semibold">
<p>{% trans "Cannot delete zone. Error message: " %}{$ errorMessage $}</p>
</div>
<div ng-hide="couldNotConnect"
class="flex justify-center bg-red-500 rounded-lg text-white px-2 py-1 font-semibold">
<p>{% trans "Could not connect to server. Please refresh this page." %}</p>
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock %}

View File

@ -4,26 +4,30 @@ from . import views
urlpatterns = [
url(r'^$', views.loadDNSHome, name='dnsHome'),
url(r'^createNameserver', views.createNameserver, name='createNameserver'),
url(r'^createNameserverV2', views.createNameserverV2, name='createNameserverV2'),
url(r'^configureDefaultNameServers$', views.configureDefaultNameServers, name='configureDefaultNameServers'),
url(r'^createDNSZone', views.createDNSZone, name='createDNSZone'),
url(r'^createDNSZoneV2', views.createDNSZoneV2, name='createDNSZoneV2'),
url(r'^addDeleteDNSRecords$', views.addDeleteDNSRecords, name='addDeleteDNSRecords'),
url(r'^addDeleteDNSRecordsCloudFlare$', views.addDeleteDNSRecordsCloudFlare, name='addDeleteDNSRecordsCloudFlare'),
# JS Functions
url(r'^NSCreation',views.NSCreation,name="NSCreation"),
url(r'^NSCreation', views.NSCreation, name="NSCreation"),
url(r'^zoneCreation', views.zoneCreation, name='zoneCreation'),
url(r'^getCurrentRecordsForDomain$',views.getCurrentRecordsForDomain,name='getCurrentRecordsForDomain'),
url(r'^addDNSRecord$',views.addDNSRecord,name='addDNSRecord'),
url(r'^deleteDNSRecord$',views.deleteDNSRecord,name='deleteDNSRecord'),
url(r'^deleteDNSZone',views.deleteDNSZone,name='deleteDNSZone'),
url(r'^submitZoneDeletion',views.submitZoneDeletion,name='submitZoneDeletion'),
url(r'^getCurrentRecordsForDomain$', views.getCurrentRecordsForDomain, name='getCurrentRecordsForDomain'),
url(r'^addDNSRecord$', views.addDNSRecord, name='addDNSRecord'),
url(r'^deleteDNSRecord$', views.deleteDNSRecord, name='deleteDNSRecord'),
url(r'^deleteDNSZone', views.deleteDNSZone, name='deleteDNSZone'),
url(r'^deleteDNSZoneV2', views.deleteDNSZoneV2, name='deleteDNSZoneV2'),
url(r'^submitZoneDeletion', views.submitZoneDeletion, name='submitZoneDeletion'),
url(r'^saveNSConfigurations$', views.saveNSConfigurations, name='saveNSConfigurations'),
url(r'^saveCFConfigs$', views.saveCFConfigs, name='saveCFConfigs'),
url(r'^updateRecord$', views.updateRecord, name='updateRecord'),
url(r'^getCurrentRecordsForDomainCloudFlare$', views.getCurrentRecordsForDomainCloudFlare, name='getCurrentRecordsForDomainCloudFlare'),
url(r'^getCurrentRecordsForDomainCloudFlare$', views.getCurrentRecordsForDomainCloudFlare,
name='getCurrentRecordsForDomainCloudFlare'),
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'),
url(r'^enableProxy$', views.enableProxy, name='enableProxy')
]
]

View File

@ -6,6 +6,7 @@ from .dnsManager import DNSManager
from .pluginManager import pluginManager
import json
# Create your views here.
def loadDNSHome(request):
@ -16,6 +17,7 @@ def loadDNSHome(request):
except KeyError:
return redirect(loadLoginPage)
def createNameserver(request):
try:
userID = request.session['userID']
@ -24,6 +26,16 @@ def createNameserver(request):
except KeyError:
return redirect(loadLoginPage)
def createNameserverV2(request):
try:
userID = request.session['userID']
dm = DNSManager()
return dm.createNameserverV2(request, userID)
except KeyError:
return redirect(loadLoginPage)
def NSCreation(request):
try:
userID = request.session['userID']
@ -43,6 +55,7 @@ def NSCreation(request):
except KeyError:
return redirect(loadLoginPage)
def createDNSZone(request):
try:
userID = request.session['userID']
@ -51,6 +64,16 @@ def createDNSZone(request):
except KeyError:
return redirect(loadLoginPage)
def createDNSZoneV2(request):
try:
userID = request.session['userID']
dm = DNSManager()
return dm.createDNSZoneV2(request, userID)
except KeyError:
return redirect(loadLoginPage)
def zoneCreation(request):
try:
userID = request.session['userID']
@ -60,7 +83,7 @@ def zoneCreation(request):
return result
dm = DNSManager()
coreResult = dm.zoneCreation(userID, json.loads(request.body))
coreResult = dm.zoneCreation(userID, json.loads(request.body))
result = pluginManager.postZoneCreation(request, coreResult)
if result != 200:
@ -70,6 +93,7 @@ def zoneCreation(request):
except KeyError:
return redirect(loadLoginPage)
def addDeleteDNSRecords(request):
try:
userID = request.session['userID']
@ -78,6 +102,7 @@ def addDeleteDNSRecords(request):
except KeyError:
return redirect(loadLoginPage)
def updateRecord(request):
try:
userID = request.session['userID']
@ -86,6 +111,7 @@ def updateRecord(request):
except KeyError:
return redirect(loadLoginPage)
def getCurrentRecordsForDomain(request):
try:
userID = request.session['userID']
@ -94,6 +120,7 @@ def getCurrentRecordsForDomain(request):
except KeyError:
return redirect(loadLoginPage)
def addDNSRecord(request):
try:
userID = request.session['userID']
@ -103,7 +130,7 @@ def addDNSRecord(request):
return result
dm = DNSManager()
coreResult = dm.addDNSRecord(userID, json.loads(request.body))
coreResult = dm.addDNSRecord(userID, json.loads(request.body))
result = pluginManager.postAddDNSRecord(request, coreResult)
if result != 200:
@ -114,6 +141,7 @@ def addDNSRecord(request):
except KeyError:
return redirect(loadLoginPage)
def deleteDNSRecord(request):
try:
userID = request.session['userID']
@ -123,7 +151,7 @@ def deleteDNSRecord(request):
return result
dm = DNSManager()
coreResult = dm.deleteDNSRecord(userID, json.loads(request.body))
coreResult = dm.deleteDNSRecord(userID, json.loads(request.body))
result = pluginManager.postDeleteDNSRecord(request, coreResult)
if result != 200:
@ -133,6 +161,7 @@ def deleteDNSRecord(request):
except KeyError:
return redirect(loadLoginPage)
def deleteDNSZone(request):
try:
userID = request.session['userID']
@ -141,6 +170,16 @@ def deleteDNSZone(request):
except KeyError:
return redirect(loadLoginPage)
def deleteDNSZoneV2(request):
try:
userID = request.session['userID']
dm = DNSManager()
return dm.deleteDNSZoneV2(request, userID)
except KeyError:
return redirect(loadLoginPage)
def submitZoneDeletion(request):
try:
userID = request.session['userID']
@ -177,6 +216,7 @@ def saveNSConfigurations(request):
except KeyError:
return redirect(loadLoginPage)
def addDeleteDNSRecordsCloudFlare(request):
try:
userID = request.session['userID']
@ -185,6 +225,7 @@ def addDeleteDNSRecordsCloudFlare(request):
except KeyError:
return redirect(loadLoginPage)
def saveCFConfigs(request):
try:
userID = request.session['userID']
@ -197,7 +238,6 @@ def saveCFConfigs(request):
return redirect(loadLoginPage)
def getCurrentRecordsForDomainCloudFlare(request):
try:
userID = request.session['userID']
@ -206,47 +246,51 @@ def getCurrentRecordsForDomainCloudFlare(request):
except KeyError:
return redirect(loadLoginPage)
def deleteDNSRecordCloudFlare(request):
try:
userID = request.session['userID']
dm = DNSManager()
coreResult = dm.deleteDNSRecordCloudFlare(userID, json.loads(request.body))
coreResult = dm.deleteDNSRecordCloudFlare(userID, json.loads(request.body))
return coreResult
except KeyError:
return redirect(loadLoginPage)
def addDNSRecordCloudFlare(request):
try:
userID = request.session['userID']
dm = DNSManager()
coreResult = dm.addDNSRecordCloudFlare(userID, json.loads(request.body))
coreResult = dm.addDNSRecordCloudFlare(userID, json.loads(request.body))
return coreResult
except KeyError:
return redirect(loadLoginPage)
def syncCF(request):
try:
userID = request.session['userID']
dm = DNSManager()
coreResult = dm.syncCF(userID, json.loads(request.body))
coreResult = dm.syncCF(userID, json.loads(request.body))
return coreResult
except KeyError:
return redirect(loadLoginPage)
def enableProxy(request):
try:
userID = request.session['userID']
dm = DNSManager()
coreResult = dm.enableProxy(userID, json.loads(request.body))
coreResult = dm.enableProxy(userID, json.loads(request.body))
return coreResult
except KeyError: