design local

This commit is contained in:
Zarak Khan
2023-12-25 11:48:06 +05:00
parent c8da443334
commit 7f05697ee4
21 changed files with 6008 additions and 40 deletions

View File

@@ -0,0 +1,155 @@
let icon1 = document.getElementById("icon1");
let menu1 = document.getElementById("menu1");
const showMenu1 = (flag) => {
if (flag) {
icon1.classList.toggle("rotate-180");
menu1.classList.toggle("hidden");
}
};
let icon2 = document.getElementById("icon2");
let menu2 = document.getElementById("menu2");
const showMenu2 = (flag) => {
if (flag) {
icon2.classList.toggle("rotate-180");
menu2.classList.toggle("hidden");
}
};
let icon3 = document.getElementById("icon3");
let menu3 = document.getElementById("menu3");
const showMenu3 = (flag) => {
if (flag) {
icon3.classList.toggle("rotate-180");
menu3.classList.toggle("hidden");
}
};
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var newapp =angular.module('cybercpV2',[]);
newapp.config(['$interpolateProvider', function ($interpolateProvider) {
$interpolateProvider.startSymbol('{$');
$interpolateProvider.endSymbol('$}');
}]);
newapp.controller('dashboardV2', function ($scope, $http, $timeout) {
alert('dashboardV2');
function getStuff() {
url = "/base/getSystemStatus";
$http.get(url).then(ListInitialData, cantLoadInitialData);
function ListInitialData(response) {
console.log(response.data);
$("#redcircle").removeClass();
$("#greencircle").removeClass();
$("#pinkcircle").removeClass();
$scope.cpuUsage = response.data.cpuUsage;
$scope.ramUsage = response.data.ramUsage;
$scope.diskUsage = response.data.diskUsage;
$scope.RequestProcessing = response.data.RequestProcessing;
$scope.TotalRequests = response.data.TotalRequests;
$scope.MAXCONN = response.data.MAXCONN;
$scope.MAXSSL = response.data.MAXSSL;
$scope.Avail = response.data.Avail;
$scope.AvailSSL = response.data.AvailSSL;
$("#redcircle").addClass("c100");
$("#redcircle").addClass("p" + $scope.cpuUsage);
$("#redcircle").addClass("red");
$("#greencircle").addClass("c100");
$("#greencircle").addClass("p" + $scope.ramUsage);
$("#greencircle").addClass("green");
$("#pinkcircle").addClass("c100");
$("#pinkcircle").addClass("p" + $scope.diskUsage);
$("#pinkcircle").addClass("red");
// home page cpu,ram and disk update.
var rotationMultiplier = 3.6;
// For each div that its id ends with "circle", do the following.
$("div[id$='circle']").each(function () {
// Save all of its classes in an array.
var classList = $(this).attr('class').split(/\s+/);
// Iterate over the array
for (var i = 0; i < classList.length; i++) {
/* If there's about a percentage class, take the actual percentage and apply the
css transformations in all occurences of the specified percentage class,
even for the divs without an id ending with "circle" */
if (classList[i].match("^p" + $scope.cpuUsage)) {
var rotationPercentage = $scope.cpuUsage;
var rotationDegrees = rotationMultiplier * rotationPercentage;
$('.c100.p' + rotationPercentage + ' .bar').css({
'-webkit-transform': 'rotate(' + rotationDegrees + 'deg)',
'-moz-transform': 'rotate(' + rotationDegrees + 'deg)',
'-ms-transform': 'rotate(' + rotationDegrees + 'deg)',
'-o-transform': 'rotate(' + rotationDegrees + 'deg)',
'transform': 'rotate(' + rotationDegrees + 'deg)'
});
} else if (classList[i].match("^p" + $scope.ramUsage)) {
var rotationPercentage = response.data.ramUsage;
;
var rotationDegrees = rotationMultiplier * rotationPercentage;
$('.c100.p' + rotationPercentage + ' .bar').css({
'-webkit-transform': 'rotate(' + rotationDegrees + 'deg)',
'-moz-transform': 'rotate(' + rotationDegrees + 'deg)',
'-ms-transform': 'rotate(' + rotationDegrees + 'deg)',
'-o-transform': 'rotate(' + rotationDegrees + 'deg)',
'transform': 'rotate(' + rotationDegrees + 'deg)'
});
} else if (classList[i].match("^p" + $scope.diskUsage)) {
var rotationPercentage = response.data.diskUsage;
;
var rotationDegrees = rotationMultiplier * rotationPercentage;
$('.c100.p' + rotationPercentage + ' .bar').css({
'-webkit-transform': 'rotate(' + rotationDegrees + 'deg)',
'-moz-transform': 'rotate(' + rotationDegrees + 'deg)',
'-ms-transform': 'rotate(' + rotationDegrees + 'deg)',
'-o-transform': 'rotate(' + rotationDegrees + 'deg)',
'transform': 'rotate(' + rotationDegrees + 'deg)'
});
}
}
});
}
function cantLoadInitialData(response) {
console.log("not good");
}
$timeout(getStuff, 2000);
}
getStuff();
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 989 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 B

View File

@@ -0,0 +1,649 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
<div class="p-8" ng-controller="dashboardV2">
<!-- Search Functionalities -->
<div class="relative flex items-center w-full h-12 rounded-lg bg-gray-100 overflow-hidden">
<div class="grid place-items-center h-full w-12 text-gray-300">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
</svg>
</div>
<input class="h-full w-full bg-gray-100 outline-none text-sm text-gray-700 pr-2" type="text"
id="search" placeholder="Search the available functionalities.."/>
</div>
<!-- Search Functionalities End -->
<div class="lg:flex py-10 md:flex-row">
<!-- Left Side -->
<div class="w-full">
<!-- Users -->
<div>
<div class="flex justify-between bg-gray-600 p-2 w-full">
<div>
<p class="text-white px-6 text-xl font-bold">Users</p>
</div>
<div>
<svg id="icon2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-white mr-4">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 12h-15"/>
</svg>
</div>
</div>
<div>
<ul class="flex w-full grid lg:grid-cols-4">
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">View Profile</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">List Users</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M24.9999 20.0001C28.6818 20.0001 31.6666 17.0153 31.6666 13.3334C31.6666 9.65152 28.6818 6.66675 24.9999 6.66675C21.318 6.66675 18.3333 9.65152 18.3333 13.3334C18.3333 17.0153 21.318 20.0001 24.9999 20.0001Z"
fill="#FF9A00"/>
<path
d="M25.0001 23.3333C14.8334 23.3333 11.6667 29.9999 11.6667 29.9999V33.3333H38.3334V29.9999C38.3334 29.9999 35.1667 23.3333 25.0001 23.3333Z"
fill="#FF9A00"/>
<path d="M8.33325 11.6667V25.0001" stroke="#FF9A00" stroke-width="2"
stroke-miterlimit="10"/>
<path d="M15.0001 18.3333H1.66675" stroke="#FF9A00" stroke-width="2"
stroke-miterlimit="10"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Create Users</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M38.3333 12.5L29.4999 21.6667L24.8333 17" stroke="#FF9A00"
stroke-width="2" stroke-miterlimit="10"/>
<path
d="M14.9999 20.0001C18.6818 20.0001 21.6666 17.0153 21.6666 13.3334C21.6666 9.65152 18.6818 6.66675 14.9999 6.66675C11.318 6.66675 8.33325 9.65152 8.33325 13.3334C8.33325 17.0153 11.318 20.0001 14.9999 20.0001Z"
fill="#FF9A00"/>
<path
d="M15.0001 23.3333C4.83341 23.3333 1.66675 29.9999 1.66675 29.9999V33.3333H28.3334V29.9999C28.3334 29.9999 25.1667 23.3333 15.0001 23.3333Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Modify Users</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_55_1903)">
<path
d="M10 31.6667C10 33.5083 11.4917 35 13.3334 35H26.6667C28.5084 35 30 33.5083 30 31.6667V11.6667H10V31.6667ZM31.6667 6.66667H25.8334L24.1667 5H15.8334L14.1667 6.66667H8.33337V10H31.6667V6.66667Z"
fill="#FF9A00"/>
</g>
<defs>
<clipPath id="clip0_55_1903">
<rect width="40" height="40" fill="white"/>
</clipPath>
</defs>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Delete Users</p>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- Users End -->
<hr>
<!-- Website -->
<div class="py-6">
<div class="flex justify-between bg-gray-600 p-2 w-full">
<div>
<p class="text-white px-6 text-xl font-bold">Websites</p>
</div>
<div>
<svg id="icon2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-white mr-4">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 12h-15"/>
</svg>
</div>
</div>
<div>
<ul class="flex w-full grid lg:grid-cols-4">
<a href="{% url 'createWebsiteV2' %}"
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 1.66675C9.83329 1.66675 1.66663 9.83342 1.66663 20.0001C1.66663 30.1667 9.83329 38.3334 20 38.3334C30.1666 38.3334 38.3333 30.1667 38.3333 20.0001C38.3333 9.83342 30.1666 1.66675 20 1.66675ZM28.3333 23.3334H23.3333V28.3334C23.3333 30.1667 21.8333 31.6667 20 31.6667C18.1666 31.6667 16.6666 30.1667 16.6666 28.3334V23.3334H11.6666C9.83329 23.3334 8.33329 21.8334 8.33329 20.0001C8.33329 18.1667 9.83329 16.6667 11.6666 16.6667H16.6666V11.6667C16.6666 9.83342 18.1666 8.33342 20 8.33342C21.8333 8.33342 23.3333 9.83342 23.3333 11.6667V16.6667H28.3333C30.1666 16.6667 31.6666 18.1667 31.6666 20.0001C31.6666 21.8334 30.1666 23.3334 28.3333 23.3334Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Create Website</p>
</div>
</div>
</li>
</a>
<a href="{% url 'listWebsitesV2' %}"
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">List Website</p>
</div>
</div>
</li>
</a>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M28.3333 36.6667H8.33325C7.00717 36.6667 5.7354 36.14 4.79772 35.2023C3.86004 34.2646 3.33325 32.9928 3.33325 31.6667V11.6667C3.33325 10.3407 3.86004 9.0689 4.79772 8.13121C5.7354 7.19353 7.00717 6.66675 8.33325 6.66675H14.9999C15.4419 6.66675 15.8659 6.84234 16.1784 7.1549C16.491 7.46746 16.6666 7.89139 16.6666 8.33341C16.6666 8.77544 16.491 9.19936 16.1784 9.51193C15.8659 9.82449 15.4419 10.0001 14.9999 10.0001H8.33325C7.89122 10.0001 7.4673 10.1757 7.15474 10.4882C6.84218 10.8008 6.66659 11.2247 6.66659 11.6667V31.6667C6.66659 32.1088 6.84218 32.5327 7.15474 32.8453C7.4673 33.1578 7.89122 33.3334 8.33325 33.3334H28.3333C28.7753 33.3334 29.1992 33.1578 29.5118 32.8453C29.8243 32.5327 29.9999 32.1088 29.9999 31.6667V25.0001C29.9999 24.5581 30.1755 24.1341 30.4881 23.8216C30.8006 23.509 31.2246 23.3334 31.6666 23.3334C32.1086 23.3334 32.5325 23.509 32.8451 23.8216C33.1577 24.1341 33.3333 24.5581 33.3333 25.0001V31.6667C33.3333 32.9928 32.8065 34.2646 31.8688 35.2023C30.9311 36.14 29.6593 36.6667 28.3333 36.6667Z"
fill="#FF9A00"/>
<path
d="M24.3334 9.78345L16.0834 18.1168C15.9709 18.2172 15.8947 18.3519 15.8668 18.5001L14.2001 24.8668C14.1597 25.0072 14.1586 25.156 14.1968 25.297C14.235 25.4381 14.311 25.5659 14.4168 25.6668C14.498 25.732 14.5915 25.7803 14.6917 25.8089C14.7918 25.8375 14.8967 25.8458 15.0001 25.8334C15.0716 25.8483 15.1453 25.8483 15.2168 25.8334L21.5834 24.1668C21.7316 24.1388 21.8664 24.0627 21.9668 23.9501L30.2168 15.6668L24.3334 9.78345Z"
fill="#FF9A00"/>
<path
d="M35.0001 7.41664L32.5834 4.99998C32.1097 4.5348 31.4723 4.27417 30.8084 4.27417C30.1445 4.27417 29.5071 4.5348 29.0334 4.99998L26.6667 7.41664L32.5834 13.3333L35.0001 10.9666C35.4653 10.4929 35.7259 9.85556 35.7259 9.19164C35.7259 8.52773 35.4653 7.89034 35.0001 7.41664Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Modify Website</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_55_1963)">
<path
d="M10 31.6666H16.6667V8.33325H10V31.6666ZM23.3333 8.33325V31.6666H30V8.33325H23.3333Z"
fill="#FF9A00"/>
</g>
<defs>
<clipPath id="clip0_55_1963">
<rect width="40" height="40" fill="white"/>
</clipPath>
</defs>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Suspended/Unsuspended
</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_55_1903)">
<path
d="M10 31.6667C10 33.5083 11.4917 35 13.3334 35H26.6667C28.5084 35 30 33.5083 30 31.6667V11.6667H10V31.6667ZM31.6667 6.66667H25.8334L24.1667 5H15.8334L14.1667 6.66667H8.33337V10H31.6667V6.66667Z"
fill="#FF9A00"/>
</g>
<defs>
<clipPath id="clip0_55_1903">
<rect width="40" height="40" fill="white"/>
</clipPath>
</defs>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Delete Website</p>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- Website End -->
<hr>
<!-- Packages -->
<div class="py-6">
<div class="flex justify-between bg-gray-600 p-2 w-full">
<div>
<p class="text-white px-6 text-xl font-bold">Packages</p>
</div>
<div>
<svg id="icon2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-white mr-4">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 12h-15"/>
</svg>
</div>
</div>
<div>
<ul class="flex w-full grid lg:grid-cols-4 ">
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 1.66675C9.83329 1.66675 1.66663 9.83342 1.66663 20.0001C1.66663 30.1667 9.83329 38.3334 20 38.3334C30.1666 38.3334 38.3333 30.1667 38.3333 20.0001C38.3333 9.83342 30.1666 1.66675 20 1.66675ZM28.3333 23.3334H23.3333V28.3334C23.3333 30.1667 21.8333 31.6667 20 31.6667C18.1666 31.6667 16.6666 30.1667 16.6666 28.3334V23.3334H11.6666C9.83329 23.3334 8.33329 21.8334 8.33329 20.0001C8.33329 18.1667 9.83329 16.6667 11.6666 16.6667H16.6666V11.6667C16.6666 9.83342 18.1666 8.33342 20 8.33342C21.8333 8.33342 23.3333 9.83342 23.3333 11.6667V16.6667H28.3333C30.1666 16.6667 31.6666 18.1667 31.6666 20.0001C31.6666 21.8334 30.1666 23.3334 28.3333 23.3334Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Create Package</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">List Package</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M28.3333 36.6667H8.33325C7.00717 36.6667 5.7354 36.14 4.79772 35.2023C3.86004 34.2646 3.33325 32.9928 3.33325 31.6667V11.6667C3.33325 10.3407 3.86004 9.0689 4.79772 8.13121C5.7354 7.19353 7.00717 6.66675 8.33325 6.66675H14.9999C15.4419 6.66675 15.8659 6.84234 16.1784 7.1549C16.491 7.46746 16.6666 7.89139 16.6666 8.33341C16.6666 8.77544 16.491 9.19936 16.1784 9.51193C15.8659 9.82449 15.4419 10.0001 14.9999 10.0001H8.33325C7.89122 10.0001 7.4673 10.1757 7.15474 10.4882C6.84218 10.8008 6.66659 11.2247 6.66659 11.6667V31.6667C6.66659 32.1088 6.84218 32.5327 7.15474 32.8453C7.4673 33.1578 7.89122 33.3334 8.33325 33.3334H28.3333C28.7753 33.3334 29.1992 33.1578 29.5118 32.8453C29.8243 32.5327 29.9999 32.1088 29.9999 31.6667V25.0001C29.9999 24.5581 30.1755 24.1341 30.4881 23.8216C30.8006 23.509 31.2246 23.3334 31.6666 23.3334C32.1086 23.3334 32.5325 23.509 32.8451 23.8216C33.1577 24.1341 33.3333 24.5581 33.3333 25.0001V31.6667C33.3333 32.9928 32.8065 34.2646 31.8688 35.2023C30.9311 36.14 29.6593 36.6667 28.3333 36.6667Z"
fill="#FF9A00"/>
<path
d="M24.3334 9.78345L16.0834 18.1168C15.9709 18.2172 15.8947 18.3519 15.8668 18.5001L14.2001 24.8668C14.1597 25.0072 14.1586 25.156 14.1968 25.297C14.235 25.4381 14.311 25.5659 14.4168 25.6668C14.498 25.732 14.5915 25.7803 14.6917 25.8089C14.7918 25.8375 14.8967 25.8458 15.0001 25.8334C15.0716 25.8483 15.1453 25.8483 15.2168 25.8334L21.5834 24.1668C21.7316 24.1388 21.8664 24.0627 21.9668 23.9501L30.2168 15.6668L24.3334 9.78345Z"
fill="#FF9A00"/>
<path
d="M35.0001 7.41664L32.5834 4.99998C32.1097 4.5348 31.4723 4.27417 30.8084 4.27417C30.1445 4.27417 29.5071 4.5348 29.0334 4.99998L26.6667 7.41664L32.5834 13.3333L35.0001 10.9666C35.4653 10.4929 35.7259 9.85556 35.7259 9.19164C35.7259 8.52773 35.4653 7.89034 35.0001 7.41664Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Modify Package</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_55_1903)">
<path
d="M10 31.6667C10 33.5083 11.4917 35 13.3334 35H26.6667C28.5084 35 30 33.5083 30 31.6667V11.6667H10V31.6667ZM31.6667 6.66667H25.8334L24.1667 5H15.8334L14.1667 6.66667H8.33337V10H31.6667V6.66667Z"
fill="#FF9A00"/>
</g>
<defs>
<clipPath id="clip0_55_1903">
<rect width="40" height="40" fill="white"/>
</clipPath>
</defs>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Delete Package</p>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- Packages End -->
<hr>
<!-- Database -->
<div class="py-6">
<div class="flex justify-between bg-gray-600 p-2 w-full">
<div>
<p class="text-white px-6 text-xl font-bold">Database</p>
</div>
<div>
<svg id="icon2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-white mr-4">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 12h-15"/>
</svg>
</div>
</div>
<div>
<ul class="flex w-full grid lg:grid-cols-4 ">
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 1.66675C9.83329 1.66675 1.66663 9.83342 1.66663 20.0001C1.66663 30.1667 9.83329 38.3334 20 38.3334C30.1666 38.3334 38.3333 30.1667 38.3333 20.0001C38.3333 9.83342 30.1666 1.66675 20 1.66675ZM28.3333 23.3334H23.3333V28.3334C23.3333 30.1667 21.8333 31.6667 20 31.6667C18.1666 31.6667 16.6666 30.1667 16.6666 28.3334V23.3334H11.6666C9.83329 23.3334 8.33329 21.8334 8.33329 20.0001C8.33329 18.1667 9.83329 16.6667 11.6666 16.6667H16.6666V11.6667C16.6666 9.83342 18.1666 8.33342 20 8.33342C21.8333 8.33342 23.3333 9.83342 23.3333 11.6667V16.6667H28.3333C30.1666 16.6667 31.6666 18.1667 31.6666 20.0001C31.6666 21.8334 30.1666 23.3334 28.3333 23.3334Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Create Database</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">List Database</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_55_1903)">
<path
d="M10 31.6667C10 33.5083 11.4917 35 13.3334 35H26.6667C28.5084 35 30 33.5083 30 31.6667V11.6667H10V31.6667ZM31.6667 6.66667H25.8334L24.1667 5H15.8334L14.1667 6.66667H8.33337V10H31.6667V6.66667Z"
fill="#FF9A00"/>
</g>
<defs>
<clipPath id="clip0_55_1903">
<rect width="40" height="40" fill="white"/>
</clipPath>
</defs>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Delete Database</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">PHPMYADMIN</p>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- Database End -->
<hr>
<!-- DNS -->
<div class="py-6">
<div class="flex justify-between bg-gray-600 p-2 w-full">
<div>
<p class="text-white px-6 text-xl font-bold">DNS</p>
</div>
<div>
<svg id="icon2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-white mr-4">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 12h-15"/>
</svg>
</div>
</div>
<div>
<ul class="flex w-full grid lg:grid-cols-4 ">
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Create NameServer</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 23.3333C24.6023 23.3333 28.3333 18.8561 28.3333 13.3333C28.3333 7.8104 24.6023 3.33325 20 3.33325C15.3976 3.33325 11.6666 7.8104 11.6666 13.3333C11.6666 18.8561 15.3976 23.3333 20 23.3333Z"
fill="#FF9A00"/>
<path
d="M36.3333 31.8331C34.8333 28.8331 32 26.3331 28.3333 24.8331C27.3333 24.4998 26.1666 24.4998 25.3333 24.9998C23.6666 25.9998 22 26.4998 20 26.4998C18 26.4998 16.3333 25.9998 14.6666 24.9998C13.8333 24.6665 12.6666 24.4998 11.6666 24.9998C7.99995 26.4998 5.16662 28.9998 3.66662 31.9998C2.49995 34.1665 4.33329 36.6665 6.83329 36.6665H33.1666C35.6666 36.6665 37.5 34.1665 36.3333 31.8331Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Create DNS Zone</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_55_1903)">
<path
d="M10 31.6667C10 33.5083 11.4917 35 13.3334 35H26.6667C28.5084 35 30 33.5083 30 31.6667V11.6667H10V31.6667ZM31.6667 6.66667H25.8334L24.1667 5H15.8334L14.1667 6.66667H8.33337V10H31.6667V6.66667Z"
fill="#FF9A00"/>
</g>
<defs>
<clipPath id="clip0_55_1903">
<rect width="40" height="40" fill="white"/>
</clipPath>
</defs>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Delete Zone</p>
</div>
</div>
</li>
<li class="px-3 py-3">
<div class="flex items-center">
<div>
<svg width="20" height="20" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M20 1.66675C9.83329 1.66675 1.66663 9.83342 1.66663 20.0001C1.66663 30.1667 9.83329 38.3334 20 38.3334C30.1666 38.3334 38.3333 30.1667 38.3333 20.0001C38.3333 9.83342 30.1666 1.66675 20 1.66675ZM28.3333 23.3334H23.3333V28.3334C23.3333 30.1667 21.8333 31.6667 20 31.6667C18.1666 31.6667 16.6666 30.1667 16.6666 28.3334V23.3334H11.6666C9.83329 23.3334 8.33329 21.8334 8.33329 20.0001C8.33329 18.1667 9.83329 16.6667 11.6666 16.6667H16.6666V11.6667C16.6666 9.83342 18.1666 8.33342 20 8.33342C21.8333 8.33342 23.3333 9.83342 23.3333 11.6667V16.6667H28.3333C30.1666 16.6667 31.6666 18.1667 31.6666 20.0001C31.6666 21.8334 30.1666 23.3334 28.3333 23.3334Z"
fill="#FF9A00"/>
</svg>
</div>
<div>
<p class="px-2 font-bold" style="font-size: 70%;">Add/Delete Record</p>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- DNS End -->
</div>
<!-- Left Side End -->
<!-- Right Side -->
<div class="w-96">
<div class="px-5 ml-4">
<!-- Gerneral Information -->
<div>
<div class="w-64 bg-gray-600 p-2">
<p class="text-white px-6">General Information</p>
</div>
<div class="px-8 py-1 mb-2">
<p class="font-semibold">Current User</p>
<p class="text-xs">Cpd</p>
</div>
<hr>
<div class="px-8 py-1 mb-2">
<p class="font-semibold">Primary Domain</p>
<p class="text-xs">Cyberpanel.com</p>
</div>
<hr>
<div class="px-8 py-1 mb-2">
<p class="font-semibold">Home Directory</p>
<p class="text-xs">/home/cpd</p>
</div>
<hr>
<div class="px-8 py-1 mb-2">
<p class="font-semibold">Last Login</p>
<p class="text-xs">65.108.159.129</p>
</div>
<hr>
<hr>
</div>
<!-- General Information -->
<!-- Resources -->
{# <div class="py-6">#}
{# <div class="w-64 bg-gray-600 p-2">#}
{# <p class="text-white px-6">Resources</p>#}
{# </div>#}
{# <div class="w-64 p-2">#}
{# <p class="text-gray-400 font-semibold px-6">CPU Usage</p>#}
{# </div>#}
{# <div class="w-64 p-2">#}
{# <p class="text-gray-400 font-semibold px-6">RAM Usage</p>#}
{# </div>#}
{# <div class="w-64 p-2">#}
{# <p class="text-gray-400 font-semibold px-6">DISK Usage</p>#}
{# </div>#}
{# #}
{# </div>#}
<ul class="progress-box">
<li>
<div class="progress-title">
{% trans "CPU Usage" %}
<b>{$ cpuUsage $}%</b>
</div>
<div class="progressbar-small progressbar" data-value="{$ cpuUsage $}">
<div class="progressbar-value bg-yellow tooltip-button" title="{$ cpuUsage $}%">
</div>
</div>
</li>
<li>
<b class="pull-right">{$ ramUsage $}%</b>
<div class="progress-title">
{% trans "RAM Usage" %}
</div>
<div class="progressbar-small progressbar" data-value="{$ ramUsage $}">
<div class="progressbar-value bg-red tooltip-button" title="{$ ramUsage $}%"></div>
</div>
</li>
<li>
<div class="progress-title">
{% trans "Disk Usage" %}
<b>{$ diskUsage $}%</b>
</div>
<div class="progressbar" data-value="{$ diskUsage $}">
<div class="progressbar-value bg-green">
<div class="progress-label">{$ diskUsage $}%</div>
</div>
</div>
</li>
</ul>
<!-- Resources End -->
</div>
</div>
<!-- Right Side End -->
</div>
</div>
{% endblock %}

View File

@@ -301,7 +301,10 @@
<div id="page-sidebar">
<div class="scroll-sidebar">
<ul id="sidebar-menu">
<li class="header"><span>{% trans "Overview" %}</span></li>
<li class="header"><span>{% trans "Overview ABC" %}</span>
<a href="{% url 'exampleZarak' %}">Example Page</a>
</li>
<li>
<a id="sidebar-menu-item-server-ip-address" href="#"
title="{% trans 'Server IP Address' %}">

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,62 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
<div class="p-8">
<div>
<p class="text-4xl font-bold">Vision Management</p>
<p class="text-xs text-gray-600 py-2 font-semibold">Have you can manage versions and check for updates to CyberPanel</p>
<hr>
</div>
<div class="py-4">
<p class="text-xl font-semibold">CyberPanel</p>
<div class="py-6">
<div class="border border-gray-300 shadow-lg rounded-lg px-6 py-4">
<table class="flex">
<thead>
<tr class="flex justify-start mb-2">
<th>Current Version:</th>
</tr>
<tr class="flex justify-start mb-2">
<th>Build:</th>
</tr>
<tr class="flex justify-start mb-2">
<th>Current Commit:</th>
</tr>
<tr class="flex justify-start mb-2">
<th>Latest Version:</th>
</tr>
<tr class="flex justify-start mb-2">
<th>Current Biuld:</th>
</tr>
<tr class="flex justify-start mb-2">
<th>Current Version:</th>
</tr>
</thead>
<tbody class="px-4">
<tr class="flex justify-start mb-2">
<td class="text-orange-400 font-bold">2.3</td>
</tr>
<tr class="flex justify-start mb-2">
<td class="text-orange-400 font-bold">4</td>
</tr>
<tr class="flex justify-start mb-2">
<td class="text-orange-400 font-bold">d65b6b5bcd4e89ce1a0eeb74131f98093e85bb3a</td>
</tr>
<tr class="flex justify-start mb-2">
<td class="text-orange-400 font-bold">2.3</td>
</tr>
<tr class="flex justify-start mb-2">
<td class="text-orange-400 font-bold">4</td>
</tr>
<tr class="flex justify-start mb-2">
<td class="text-orange-400 font-bold">d65b6b5bcd4e89ce1a0eeb74131f98093e85bb3a</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -8,6 +8,9 @@ urlpatterns = [
url(r'^getLoadAverage',views.getLoadAverage, name='getLoadAverage'),
url(r'^versionManagment',views.versionManagment, name='versionManagment'),
url(r'^design', views.design, name='design'),
url(r'^exampleZarak', views.exampleZarak, name='exampleZarak'),
url(r'^visionManagementV2', views.visionManagementV2, name='visionManagementV2'),
url(r'^getthemedata', views.getthemedata, name='getthemedata'),
#url(r'^upgrade',views.upgrade, name='upgrade'),

View File

@@ -31,6 +31,17 @@ def renderBase(request):
proc = httpProc(request, template, finaData)
return proc.render()
def exampleZarak(request):
template = 'baseTemplate/example.html'
proc = httpProc(request, template)
return proc.render()
def visionManagementV2(request):
template = 'baseTemplate/visionManagementV2.html'
proc = httpProc(request, template)
return proc.render()
def getAdminStatus(request):
try:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,116 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
{% load static %}
<div ng-controller="websitePagesV2" class="p-8">
<div>
<p class="text-4xl font-bold">Create Child Domain</p>
<p class="text-xs text-gray-600 py-2 font-semibold">Create child-domains, child domains are owned by a
master website</p>
</div>
<div>
<div class="py-4">
<p class="text-xl font-bold">Details</p>
</div>
<hr>
<div>
<div class="flex mt-4 py-2 px-6">
<div>
<p class="font-semibold w-60">Select Website</p>
</div>
<div>
<select ng-change="WebsiteSelection()" ng-model="masterDomain"
class="form-control w-80 bg-gray-100 rounded px-2 py-1">
{% for items in websiteList %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div ng-hide="DomainCreateForm" class="flex py-2 px-6">
<div>
<p class="font-semibold w-60">Domain Name</p>
</div>
<div>
<input name="dom" type="text" class="form-control w-80 bg-gray-100 rounded px-2 py-1"
ng-model="domainNameCreate"
required>
</div>
</div>
<div ng-hide="DomainCreateForm" class="flex py-2 px-6">
<div>
<p class="font-semibold w-60">Path: /home{$ masterDomain
$}/</p>
</div>
<div>
<input type="email" name="email" class="form-control w-80 bg-gray-100 rounded px-2 py-1"
ng-model="docRootPath" required>
</div>
</div>
<div ng-hide="DomainCreateForm" class="flex py-2 px-6">
<div>
<p class="font-semibold w-60">Select PHP</p>
</div>
<div>
<select ng-model="phpSelection" class="form-control w-80 bg-gray-100 rounded px-2 py-1">
{% for php in phps %}
<option>{{ php }}</option>
{% endfor %}
</select>
</div>
</div>
<div ng-hide="DomainCreateForm" ng-hide="installationDetailsForm" class="flex py-2 px-6">
<div class="w-60">
<p class="font-semibold w-48">Additional Features</p></label>
</div>
<div class="text-gray-500 font-semibold">
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="sslCheck" type="checkbox" value="">
SSL
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="apacheBackend" type="checkbox" value="">
Apache as Reverse Proxy (Beta, for Ubuntu 22 and AlmaLinux 8)
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="dkimCheck" type="checkbox" value="">
DKIM Support
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="openBasedir" type="checkbox" value="">
open_basedir Protection
</label>
</div>
</div>
</div>
</div>
</div>
</div>
<div ng-hide="DomainCreateForm" class="flex justify-center mt-4">
<button ng-click="createDomain()"
class="bg-orange-500 px-3 py-4 rounded-lg text-xl font-semibold text-white">
Create Domain
</button>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,141 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
{% load static %}
<div ng-controller="createWebsiteV2" class="p-8">
<div>
<p class="text-4xl font-bold">Create Website</p>
<p class="text-xs text-gray-600 py-2 font-semibold">On this page you can launch,list,modify and
delete websites
from your server</p>
</div>
<div>
<div class="py-4">
<p class="text-xl font-bold">Website Details</p>
</div>
<hr>
<div>
<div class="flex mt-4 py-2 px-6">
<div>
<p class="font-semibold w-48">Select Package</p>
</div>
<div>
<select ng-model="packageForWebsite" class="form-control w-80 bg-gray-100 rounded px-2 py-1">
{% for items in packageList %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-48">Select Owner</p>
</div>
<div>
<select ng-model="websiteOwner" class="form-control w-80 bg-gray-100 rounded px-2 py-1">
{% for items in owernList %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-48">Domain Name</p>
</div>
<div>
<input name="dom" type="text" class="form-control w-80 bg-gray-100 rounded px-2 py-1"
ng-model="domainNameCreate"
placeholder="{% trans "Do not enter WWW, it will be auto created!" %}" required>
</div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-48">Email</p>
</div>
<div>
<input type="email" name="email" class="form-control w-80 bg-gray-100 rounded px-2 py-1"
ng-model="adminEmail" required>
</div>
</div>
<div class="flex py-2 px-6">
<div>
<p class="font-semibold w-48">Select PHP</p>
</div>
<div>
<select ng-model="phpSelection" class="form-control w-80 bg-gray-100 rounded px-2 py-1">
{% for php in phps %}
<option>{{ php }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="flex py-2 px-6">
<div class="w-48">
<p class="font-semibold w-48">Additional Features</p></label>
</div>
<div class="text-gray-500 font-semibold">
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="sslCheck" type="checkbox" value="">
SSL
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
{% if test_domain_data %}
<input ng-model="apacheBackend" type="checkbox" value="">
OpenLiteSpeed + Apache (Backend) (For Ubuntu 22 and AlmaLinux 8)
{% else %}
<input ng-model="apacheBackend" type="checkbox" value="" disabled>
OpenLiteSpeed + Apache (Backend) (For Ubuntu 22 and AlmaLinux 8) -
<strong><a href="https://go.cyberpanel.net/ApacheRev">Premium Feature</a> <i
class="p fa fa-external-link btn-icon"></i></strong>
{% endif %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="dkimCheck" type="checkbox" value="">
DKIM Support
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="openBasedir" type="checkbox" value="">
open_basedir Protection
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="mailDomain" type="checkbox" value="">
Create Mail Domain
</label>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="flex justify-center">
<button ng-click="goBack()" class="bg-orange-500 px-3 py-4 rounded-lg text-xl font-semibold text-white">Create Website</button>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,284 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
{% load static %}
<div ng-controller="listChildDomainsMainV2" class="p-8">
<div class="flex lg:flex-row justify-between items-center sm:flex-col">
<div>
<p class="text-4xl font-bold">List Child Domains</p>
<p class="text-xs text-gray-600 py-2 font-semibold">On this page you can launch,list,modify and
child domains
from your server</p>
</div>
</div>
<!-- Search Bar -->
<div class="flex justify-between py-1 mt-4">
<div class="w-full">
<div class="relative flex items-center w-full h-12 rounded-lg bg-gray-200 overflow-hidden">
<div class="grid place-items-center h-full w-12 text-gray-300">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-gray-500" fill="none"
viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
</svg>
</div>
<input ng-change="searchWebsites()" ng-model="patternAdded" name="dom"
class="h-full w-full bg-gray-200 outline-none text-sm text-gray-700 pr-2" type="text"
id="search" placeholder="Search" required/>
</div>
</div>
<!-- Search Bar End -->
<div class="pl-6">
<select ng-model="recordsToShow" ng-change="getFurtherWebsitesFromDB()"
class="w-24 bg-gray-200 py-3 px-2 rounded" id="example-select">
<option>10</option>
<option>50</option>
<option>100</option>
</select>
</div>
</div>
<div ng-repeat="web in WebSitesList track by $index" class="panel col-md-12"
style="padding: 0px; box-shadow: 0px 0px 1px 0px #888888;">
<div class="">
<div class="table-responsive no-gutter text-nowrap" style="overflow-x: hidden;">
<div style="border-bottom: 1px solid #888888" class="col-md-12">
<div class="col-lg-10 content-box-header" style="text-transform: none;">
<a href="http://{$ web.domain $}" target="_blank" title="Visit Site">
<h2 style="display: inline; color: #414C59;" ng-bind="web.domain"></h2>
</a>
<a target="_blank" href="/filemanager/{$ web.masterDomain $}" title="Open File Manager">
--
File Manager</a>
</div>
<div class="col-md-2 content-box-header" style="text-transform: none;">
<a href="/websites/{$ web.masterDomain $}/{$ web.domain $}" target="_blank"
title="Manage Website">
<i class="p fa fa-external-link btn-icon">&emsp;</i>
<span>Manage</span>
</a>
</div>
</div>
<div class="col-md-12">
<div class="col-md-4 content-box-header">
<i class="p fa fa-trash-o btn-icon text-muted" data-toggle="tooltip"
data-placement="right"
title="Delete Child Domain">&emsp;</i>
<span><a ng-click='deleteDomainInit(web.domain)' data-toggle="modal"
data-target="#DeleteChild" href=""
style="text-transform: none">Delete</a></span>
<div id="DeleteChild" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;
</button>
<h4 class="modal-title">Delete Child Domain
<img ng-hide="$parent.cyberPanelLoading"
src="/static/images/loading.gif"
style="display: none;">
</h4>
</div>
<div class="modal-body">
<form name="DeleteDocumentRootForm" action="/" class="form-horizontal">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-2 control-label">{% trans "" %}</label>
<div class="col-sm-8">
<input ng-model="$parent.DeleteDocRoot" type="checkbox"
value="">
Delete Document Root
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary"
ng-click="deleteChildDomain()">Delete Now
</button>
<button type="button" ng-disabled="savingSettings"
class="btn btn-default" data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 content-box-header">
<i class="p fa fa-map-marker btn-icon text-muted" data-toggle="tooltip"
data-placement="right" title="IP Address">&emsp;</i>
<span ng-bind="web.ipAddress"></span>
</div>
<div class="col-md-4 content-box-header">
<i class="p fa fa-lock btn-icon text-muted" data-toggle="tooltip" data-placement="right"
title="SSL">&emsp;</i>
<span><a ng-click="issueSSL(web.domain)" href=""
style="text-transform: none">Issue SSL</a></span>
</div>
</div>
<div class="col-md-12">
<div class="col-md-4 content-box-header">
<i class="p fa fa-cubes btn-icon text-muted" data-toggle="tooltip"
data-placement="right"
title="Packages">&emsp;</i>
<span ng-bind="web.package" style="text-transform: none"></span>
</div>
<div class="col-md-4 content-box-header">
<i class="p fa fa-user btn-icon text-muted" data-toggle="tooltip" data-placement="right"
title="Owner">&emsp;</i>
<span ng-bind="web.admin" style="text-transform: none"></span>
</div>
<div class="col-md-4 content-box-header">
<i class="p fa fa-arrows-h btn-icon text-muted" data-toggle="tooltip"
data-placement="right"
title="Convert to Website">&emsp;</i>
<span><a data-toggle="modal" data-target="#settings" href=""
style="text-transform: none"
ng-click="initConvert(web.domain)">Convert to Website</a></span>
<div id="settings" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;
</button>
<h4 class="modal-title">Convert Child Domain to normal Website
<img ng-hide="$parent.cyberPanelLoading"
src="/static/images/loading.gif"
style="display: none;">
</h4>
</div>
<div class="modal-body">
<form name="containerSettingsForm" action="/" class="form-horizontal">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Domain Name" %}</label>
<div class="col-sm-6">
<input name="dom" type="text" class="form-control"
ng-model="domainName"
placeholder="{% trans "Do not enter WWW, it will be auto created!" %}"
readonly>
</div>
</div>
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Owner" %}</label>
<div class="col-sm-6">
<select ng-model="$parent.websiteOwner"
class="form-control">
{% for items in owernList %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<hr ng-hide="installationDetailsForm">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Package" %}</label>
<div class="col-sm-6">
<select ng-model="$parent.packageForWebsite"
class="form-control">
{% for items in packageList %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<hr ng-hide="installationDetailsForm">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Email" %}</label>
<div class="col-sm-6">
<input type="email" name="email" class="form-control"
ng-model="$parent.adminEmail" required>
</div>
</div>
<hr ng-hide="installationDetailsForm">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Select PHP" %}</label>
<div class="col-sm-6">
<select ng-model="$parent.phpSelection"
class="form-control">
{% for php in phps %}
<option>{{ php }}</option>
{% endfor %}
</select>
</div>
</div>
<div ng-hide="installationProgress" class="form-group">
<label class="col-sm-1 control-label"></label>
<div class="col-sm-10">
<div class="alert alert-success text-center">
<h2>{$ currentStatus $}</h2>
</div>
<div class="progress">
<div id="installProgress" class="progress-bar"
role="progressbar" aria-valuenow="70"
aria-valuemin="0" aria-valuemax="100"
style="width:0%">
<span class="sr-only">70% Complete</span>
</div>
</div>
</div>
</div>
<div ng-hide="installationProgress" class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-disabled="goBackDisable"
ng-click="goBack()"
class="btn btn-primary btn-lg">{% trans "Go Back" %}</button>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary"
ng-click="convert()">Convert
</button>
<button type="button" ng-disabled="savingSettings"
class="btn btn-default" data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="listFail" class="alert alert-danger">
<p>{% trans "Cannot list websites. Error message:" %} {$ errorMessage $}</p>
</div>
</div>
</div>
</div>
<div class="flex justify-end mt-4">
<select ng-model="currentPage" ng-change="getFurtherWebsitesFromDB()"
class="w-36 bg-gray-200 py-3 px-2 rounded" id="example-select">
<option ng-repeat="page in pagination">{$ $index + 1 $}</option>
</select>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,104 @@
{% extends "baseTemplate/newBase.html" %}
{% load i18n %}
{% block titleNew %}{% trans "Home - CyberPanel" %}{% endblock %}
{% block newContent %}
{% load static %}
<div ng-controller="listWebsitesV2" class="p-8">
<div class="flex lg:flex-row justify-between items-center sm:flex-col">
<div>
<p class="text-4xl font-bold">List Website</p>
<p class="text-xs text-gray-600 py-2 font-semibold">On this page you can launch,list,modify and
delete websites
from your server</p>
</div>
<div>
<div class="sm:mt-6">
<a href="{% url 'createWebsiteV2' %}"
class="bg-orange-500 px-3 py-3 rounded-lg text-xl font-semibold text-white">Create
Website
</a>
</div>
</div>
</div>
<!-- Search Bar -->
<div class="flex justify-between py-1 mt-4">
<div class="w-full">
<div class="relative flex items-center w-full h-12 rounded-lg bg-gray-200 overflow-hidden">
<div class="grid place-items-center h-full w-12 text-gray-300">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-gray-500" fill="none"
viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
</svg>
</div>
<input ng-change="searchWebsites()" ng-model="patternAdded" name="dom"
class="h-full w-full bg-gray-200 outline-none text-sm text-gray-700 pr-2" type="text"
id="search" placeholder="Search" required/>
</div>
</div>
<!-- Search Bar End -->
<div class="pl-6">
<select ng-model="recordsToShow" ng-change="getFurtherWebsitesFromDB()"
class="w-24 bg-gray-200 py-3 px-2 rounded" id="example-select">
<option>10</option>
<option>50</option>
<option>100</option>
</select>
</div>
</div>
<div ng-repeat="web in WebSitesList track by $index" class="py-8">
<div class="border shadow-lg rounded-lg px-3">
<div>
<div class="px-2">
<div class="pl-44 gap-20 py-5 flex font-bold">
<div>Owner</div>
<div>IP Address</div>
<div>Disk Usage</div>
<div>Package</div>
<div>SSL</div>
<div class="pl-4">State</div>
</div>
</div>
<div class="px-2">
<div class="bg-gray-200 w-full rounded-t-lg border-b-2 border-gray-400">
<p class="font-bold px-4 py-1" ng-bind="web.domain"></p>
</div>
<div class="w-full rounded-b-lg border-b-2 border-gray-400">
<div class="pl-4 py-5 gap-20 flex items-center text-sm">
<a href="/websites/{$ web.domain $}" class="flex items-center">
<svg width="25" height="25" viewBox="0 0 30 30" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M22.5 16.25V23.75C22.5 24.413 22.2366 25.0489 21.7678 25.5178C21.2989 25.9866 20.663 26.25 20 26.25H6.25C5.58696 26.25 4.95107 25.9866 4.48223 25.5178C4.01339 25.0489 3.75 24.413 3.75 23.75V10C3.75 9.33696 4.01339 8.70107 4.48223 8.23223C4.95107 7.76339 5.58696 7.5 6.25 7.5H13.75"
stroke="#3A6A7E" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"/>
<path d="M18.75 3.75H26.25V11.25" stroke="#3A6A7E" stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"/>
<path d="M12.5 17.5L26.25 3.75" stroke="#3A6A7E" stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"/>
</svg>
<p class="ml-2 text-blue-600 font-semibold">Manage</p>
</a>
<div><span ng-bind="web.admin" style="text-transform: none"></span></div>
<div><span ng-bind="web.ipAddress"></span></div>
<div class="pl-3"><span ng-bind="web.diskUsed" style="text-transform: none"></span>
</div>
<div class="pl-7"><span ng-bind="web.package" style="text-transform: none"></span></div>
<div> <span><a ng-click="issueSSL(web.domain)" href=""
style="text-transform: none">Issue SSL</a></span></div>
<div class="text-green-700 font-bold"><span ng-bind="web.state"
style="text-transform: none"></span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -127,6 +127,9 @@
</div>
</div>
</div>
<div style="margin-top: 2%" class="row">
<div class="col-md-12">
<div class="row">

View File

@@ -6,13 +6,16 @@ urlpatterns = [
url(r'^createWebsite$', views.createWebsite, name='createWebsite'),
url(r'^listWebsites$', views.listWebsites, name='listWebsites'),
url(r'^listChildDomains$', views.listChildDomains, name='listChildDomains'),
url(r'^listChildDomainsV2$', views.listChildDomainsV2, name='listChildDomainsV2'),
url(r'^modifyWebsite$', views.modifyWebsite, name='modifyWebsite'),
url(r'^deleteWebsite$', views.deleteWebsite, name='deleteWebsite'),
url(r'^siteState$', views.siteState, name='siteState'),
url(r'^createWebsiteV2$', views.createWebsiteV2, name='createWebsiteV2'),
url(r'^listWebsitesV2$', views.listWebsitesV2, name='listWebsitesV2'),
##
url(r'^CreateNewDomain$', views.CreateNewDomain, name='CreateNewDomain'),
url(r'^CreateNewDomainV2$', views.CreateNewDomainV2, name='CreateNewDomainV2'),
### WordPress
url(r'^createWordpress$', views.WPCreate, name='createWordpress'),

View File

@@ -1,19 +1,19 @@
# -*- coding: utf-8 -*-
from django.shortcuts import redirect
import json
from django.http import HttpResponse
from django.shortcuts import redirect
from django.views.decorators.csrf import csrf_exempt
import plogical.CyberCPLogFileWriter as logging
from loginSystem.models import Administrator
from loginSystem.views import loadLoginPage
import json
import plogical.CyberCPLogFileWriter as logging
from plogical.httpProc import httpProc
from websiteFunctions.models import wpplugins
from websiteFunctions.website import WebsiteManager
from websiteFunctions.pluginManager import pluginManager
from django.views.decorators.csrf import csrf_exempt
from websiteFunctions.website import WebsiteManager
def loadWebsitesHome(request):
val = request.session['userID']
@@ -22,6 +22,7 @@ def loadWebsitesHome(request):
{"type": admin.type})
return proc.render()
def createWebsite(request):
try:
userID = request.session['userID']
@@ -29,14 +30,26 @@ def createWebsite(request):
return wm.createWebsite(request, userID)
except KeyError:
return redirect(loadLoginPage)
def createWebsiteV2(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.createWebsiteV2(request, userID)
except KeyError:
return redirect(loadLoginPage)
def WPCreate(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.WPCreate(request, userID,)
return wm.WPCreate(request, userID, )
except KeyError:
return redirect(loadLoginPage)
def ListWPSites(request):
try:
userID = request.session['userID']
@@ -46,6 +59,7 @@ def ListWPSites(request):
except KeyError:
return redirect(loadLoginPage)
def WPHome(request):
try:
userID = request.session['userID']
@@ -56,6 +70,8 @@ def WPHome(request):
return wm.WPHome(request, userID, WPid, DeleteID)
except KeyError:
return redirect(loadLoginPage)
def RestoreHome(request):
try:
userID = request.session['userID']
@@ -77,6 +93,7 @@ def RemoteBackupConfig(request):
except KeyError:
return redirect(loadLoginPage)
def BackupfileConfig(request):
try:
userID = request.session['userID']
@@ -88,6 +105,7 @@ def BackupfileConfig(request):
except KeyError:
return redirect(loadLoginPage)
def AddRemoteBackupsite(request):
try:
userID = request.session['userID']
@@ -95,18 +113,20 @@ def AddRemoteBackupsite(request):
ID = request.GET.get('ID')
DeleteSiteID = request.GET.get('DeleteID')
wm = WebsiteManager()
return wm.AddRemoteBackupsite(request, userID, ID,DeleteSiteID )
return wm.AddRemoteBackupsite(request, userID, ID, DeleteSiteID)
except KeyError:
return redirect(loadLoginPage)
def WordpressPricing(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.WordpressPricing(request, userID,)
return wm.WordpressPricing(request, userID, )
except KeyError:
return redirect(loadLoginPage)
def RestoreBackups(request):
try:
userID = request.session['userID']
@@ -117,6 +137,7 @@ def RestoreBackups(request):
except KeyError:
return redirect(loadLoginPage)
def AutoLogin(request):
try:
userID = request.session['userID']
@@ -125,6 +146,8 @@ def AutoLogin(request):
except KeyError:
return redirect(loadLoginPage)
def ConfigurePlugins(request):
try:
userID = request.session['userID']
@@ -136,13 +159,14 @@ def ConfigurePlugins(request):
jobobj.delete()
Deleted = 1
except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile("DeleteFileID ....... %s....msg.....%s" % (DeleteFileID,msg))
logging.CyberCPLogFileWriter.writeToFile("DeleteFileID ....... %s....msg.....%s" % (DeleteFileID, msg))
Deleted = 0
wm = WebsiteManager()
return wm.ConfigurePlugins(request, userID)
except KeyError:
return redirect(loadLoginPage)
def Addnewplugin(request):
try:
userID = request.session['userID']
@@ -152,15 +176,13 @@ def Addnewplugin(request):
return redirect(loadLoginPage)
def SearchOnkeyupPlugin(request):
try:
userID = request.session['userID']
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -182,7 +204,7 @@ def AddNewpluginAjax(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -215,7 +237,7 @@ def deletesPlgin(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -237,7 +259,7 @@ def Addplugineidt(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -259,7 +281,7 @@ def submitWorpressCreation(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -281,7 +303,7 @@ def FetchWPdata(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -303,7 +325,7 @@ def GetCurrentPlugins(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -326,7 +348,7 @@ def fetchstaging(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -341,13 +363,14 @@ def fetchstaging(request):
except KeyError:
return redirect(loadLoginPage)
def fetchDatabase(request):
try:
userID = request.session['userID']
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -362,6 +385,7 @@ def fetchDatabase(request):
except KeyError:
return redirect(loadLoginPage)
def SaveUpdateConfig(request):
try:
userID = request.session['userID']
@@ -383,27 +407,29 @@ def SaveUpdateConfig(request):
except KeyError:
return redirect(loadLoginPage)
def DeploytoProduction(request):
try:
userID = request.session['userID']
#result = pluginManager.preWebsiteCreation(request)
# result = pluginManager.preWebsiteCreation(request)
#if result != 200:
# if result != 200:
# return result
wm = WebsiteManager()
return wm.DeploytoProduction(userID, json.loads(request.body))
#result = pluginManager.postWebsiteCreation(request, coreResult)
#if result != 200:
# result = pluginManager.postWebsiteCreation(request, coreResult)
# if result != 200:
# return result
#return coreResult
# return coreResult
except KeyError:
return redirect(loadLoginPage)
def WPCreateBackup(request):
try:
userID = request.session['userID']
@@ -426,7 +452,6 @@ def WPCreateBackup(request):
return redirect(loadLoginPage)
def RestoreWPbackupNow(request):
try:
userID = request.session['userID']
@@ -469,6 +494,7 @@ def SaveBackupConfig(request):
except KeyError:
return redirect(loadLoginPage)
def SaveBackupSchedule(request):
try:
userID = request.session['userID']
@@ -489,6 +515,7 @@ def SaveBackupSchedule(request):
except KeyError:
return redirect(loadLoginPage)
def AddWPsiteforRemoteBackup(request):
try:
userID = request.session['userID']
@@ -596,14 +623,13 @@ def dataintegrity(request):
return redirect(loadLoginPage)
def GetCurrentThemes(request):
try:
userID = request.session['userID']
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -625,7 +651,7 @@ def UpdateWPSettings(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -647,7 +673,7 @@ def UpdatePlugins(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -669,7 +695,7 @@ def UpdateThemes(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -691,7 +717,7 @@ def DeletePlugins(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -713,7 +739,7 @@ def DeleteThemes(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -735,7 +761,7 @@ def ChangeStatus(request):
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -795,7 +821,6 @@ def CreateStagingNow(request):
return redirect(loadLoginPage)
def modifyWebsite(request):
try:
userID = request.session['userID']
@@ -807,6 +832,7 @@ def modifyWebsite(request):
except KeyError:
return redirect(loadLoginPage)
def deleteWebsite(request):
try:
userID = request.session['userID']
@@ -815,6 +841,7 @@ def deleteWebsite(request):
except KeyError:
return redirect(loadLoginPage)
def CreateNewDomain(request):
try:
userID = request.session['userID']
@@ -823,6 +850,14 @@ def CreateNewDomain(request):
except KeyError:
return redirect(loadLoginPage)
def CreateNewDomainV2(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.CreateNewDomainV2(request, userID)
except KeyError:
return redirect(loadLoginPage)
def siteState(request):
try:
userID = request.session['userID']
@@ -831,6 +866,7 @@ def siteState(request):
except KeyError:
return redirect(loadLoginPage)
def listWebsites(request):
try:
userID = request.session['userID']
@@ -839,6 +875,16 @@ def listWebsites(request):
except KeyError:
return redirect(loadLoginPage)
def listWebsitesV2(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.listWebsitesV2(request, userID)
except KeyError:
return redirect(loadLoginPage)
def listChildDomains(request):
try:
userID = request.session['userID']
@@ -847,13 +893,22 @@ def listChildDomains(request):
except KeyError:
return redirect(loadLoginPage)
def listChildDomainsV2(request):
try:
userID = request.session['userID']
wm = WebsiteManager()
return wm.listChildDomainsV2(request, userID)
except KeyError:
return redirect(loadLoginPage)
def submitWebsiteCreation(request):
try:
userID = request.session['userID']
result = pluginManager.preWebsiteCreation(request)
if result != 200:
if result != 200:
return result
wm = WebsiteManager()
@@ -868,6 +923,7 @@ def submitWebsiteCreation(request):
except KeyError:
return redirect(loadLoginPage)
def submitDomainCreation(request):
try:
userID = request.session['userID']
@@ -887,6 +943,7 @@ def submitDomainCreation(request):
except KeyError:
return redirect(loadLoginPage)
def fetchDomains(request):
try:
userID = request.session['userID']
@@ -895,6 +952,7 @@ def fetchDomains(request):
except KeyError:
return redirect(loadLoginPage)
def searchWebsites(request):
try:
userID = request.session['userID']
@@ -903,6 +961,7 @@ def searchWebsites(request):
except KeyError:
return redirect(loadLoginPage)
def searchChilds(request):
try:
userID = request.session['userID']
@@ -911,6 +970,7 @@ def searchChilds(request):
except KeyError:
return redirect(loadLoginPage)
def getFurtherAccounts(request):
try:
userID = request.session['userID']
@@ -919,6 +979,7 @@ def getFurtherAccounts(request):
except KeyError:
return redirect(loadLoginPage)
def fetchWebsitesList(request):
try:
userID = request.session['userID']
@@ -927,6 +988,7 @@ def fetchWebsitesList(request):
except KeyError:
return redirect(loadLoginPage)
def fetchChildDomainsMain(request):
try:
userID = request.session['userID']
@@ -935,6 +997,7 @@ def fetchChildDomainsMain(request):
except KeyError:
return redirect(loadLoginPage)
def submitWebsiteDeletion(request):
try:
userID = request.session['userID']
@@ -954,6 +1017,7 @@ def submitWebsiteDeletion(request):
except KeyError:
return redirect(loadLoginPage)
def submitDomainDeletion(request):
try:
@@ -975,6 +1039,7 @@ def submitDomainDeletion(request):
except KeyError:
return redirect(loadLoginPage)
def convertDomainToSite(request):
try:
@@ -985,6 +1050,7 @@ def convertDomainToSite(request):
except KeyError:
return redirect(loadLoginPage)
def submitWebsiteStatus(request):
try:
@@ -1006,6 +1072,7 @@ def submitWebsiteStatus(request):
except KeyError:
return redirect(loadLoginPage)
def submitWebsiteModify(request):
try:
@@ -1016,6 +1083,7 @@ def submitWebsiteModify(request):
except KeyError:
return redirect(loadLoginPage)
def saveWebsiteChanges(request):
try:
@@ -1037,6 +1105,7 @@ def saveWebsiteChanges(request):
except KeyError:
return redirect(loadLoginPage)
def domain(request, domain):
try:
@@ -1061,6 +1130,7 @@ def domain(request, domain):
except KeyError:
return redirect(loadLoginPage)
def launchChild(request, domain, childDomain):
try:
userID = request.session['userID']
@@ -1069,6 +1139,7 @@ def launchChild(request, domain, childDomain):
except KeyError:
return redirect(loadLoginPage)
def getDataFromLogFile(request):
try:
userID = request.session['userID']
@@ -1077,6 +1148,7 @@ def getDataFromLogFile(request):
except KeyError:
return redirect(loadLoginPage)
def fetchErrorLogs(request):
try:
userID = request.session['userID']
@@ -1085,6 +1157,7 @@ def fetchErrorLogs(request):
except KeyError:
return redirect(loadLoginPage)
def getDataFromConfigFile(request):
try:
userID = request.session['userID']
@@ -1093,6 +1166,7 @@ def getDataFromConfigFile(request):
except KeyError:
return redirect(loadLoginPage)
def saveConfigsToFile(request):
try:
@@ -1114,6 +1188,7 @@ def saveConfigsToFile(request):
except KeyError:
return redirect(loadLoginPage)
def getRewriteRules(request):
try:
userID = request.session['userID']
@@ -1122,6 +1197,7 @@ def getRewriteRules(request):
except KeyError:
return redirect(loadLoginPage)
def saveRewriteRules(request):
try:
@@ -1143,6 +1219,7 @@ def saveRewriteRules(request):
except KeyError:
return redirect(loadLoginPage)
def saveSSL(request):
try:
@@ -1164,6 +1241,7 @@ def saveSSL(request):
except KeyError:
return redirect(loadLoginPage)
def changePHP(request):
try:
@@ -1185,6 +1263,7 @@ def changePHP(request):
except KeyError:
return redirect(loadLoginPage)
def listCron(request):
try:
userID = request.session['userID']
@@ -1193,6 +1272,7 @@ def listCron(request):
except KeyError:
return redirect(loadLoginPage)
def getWebsiteCron(request):
try:
userID = request.session['userID']
@@ -1201,6 +1281,7 @@ def getWebsiteCron(request):
except KeyError:
return redirect(loadLoginPage)
def getCronbyLine(request):
try:
userID = request.session['userID']
@@ -1209,6 +1290,7 @@ def getCronbyLine(request):
except KeyError:
return redirect(loadLoginPage)
def saveCronChanges(request):
try:
userID = request.session['userID']
@@ -1217,6 +1299,7 @@ def saveCronChanges(request):
except KeyError:
return redirect(loadLoginPage)
def remCronbyLine(request):
try:
userID = request.session['userID']
@@ -1236,6 +1319,7 @@ def remCronbyLine(request):
except KeyError:
return redirect(loadLoginPage)
def addNewCron(request):
try:
userID = request.session['userID']
@@ -1255,6 +1339,7 @@ def addNewCron(request):
except KeyError:
return redirect(loadLoginPage)
def domainAlias(request, domain):
try:
userID = request.session['userID']
@@ -1263,6 +1348,7 @@ def domainAlias(request, domain):
except KeyError:
return redirect(loadLoginPage)
def submitAliasCreation(request):
try:
userID = request.session['userID']
@@ -1282,6 +1368,7 @@ def submitAliasCreation(request):
except KeyError:
return redirect(loadLoginPage)
def issueAliasSSL(request):
try:
userID = request.session['userID']
@@ -1290,6 +1377,7 @@ def issueAliasSSL(request):
except KeyError:
return redirect(loadLoginPage)
def delateAlias(request):
try:
userID = request.session['userID']
@@ -1309,6 +1397,7 @@ def delateAlias(request):
except KeyError:
return redirect(loadLoginPage)
def changeOpenBasedir(request):
try:
@@ -1330,6 +1419,7 @@ def changeOpenBasedir(request):
except KeyError:
return redirect(loadLoginPage)
def wordpressInstall(request, domain):
try:
userID = request.session['userID']
@@ -1338,6 +1428,7 @@ def wordpressInstall(request, domain):
except KeyError:
return redirect(loadLoginPage)
def installWordpress(request):
try:
userID = request.session['userID']
@@ -1346,6 +1437,7 @@ def installWordpress(request):
except KeyError:
return redirect(loadLoginPage)
def installWordpressStatus(request):
try:
userID = request.session['userID']
@@ -1354,6 +1446,7 @@ def installWordpressStatus(request):
except KeyError:
return redirect(loadLoginPage)
def joomlaInstall(request, domain):
try:
userID = request.session['userID']
@@ -1362,6 +1455,7 @@ def joomlaInstall(request, domain):
except KeyError:
return redirect(loadLoginPage)
def installJoomla(request):
try:
userID = request.session['userID']
@@ -1370,6 +1464,7 @@ def installJoomla(request):
except KeyError:
return redirect(loadLoginPage)
def setupGit(request, domain):
try:
userID = request.session['userID']
@@ -1378,6 +1473,7 @@ def setupGit(request, domain):
except KeyError:
return redirect(loadLoginPage)
def setupGitRepo(request):
try:
userID = request.session['userID']
@@ -1386,6 +1482,7 @@ def setupGitRepo(request):
except KeyError:
return redirect(loadLoginPage)
@csrf_exempt
def gitNotify(request, domain):
try:
@@ -1394,6 +1491,7 @@ def gitNotify(request, domain):
except KeyError:
return redirect(loadLoginPage)
def detachRepo(request):
try:
userID = request.session['userID']
@@ -1402,6 +1500,7 @@ def detachRepo(request):
except KeyError:
return redirect(loadLoginPage)
def changeBranch(request):
try:
userID = request.session['userID']
@@ -1410,6 +1509,7 @@ def changeBranch(request):
except KeyError:
return redirect(loadLoginPage)
def installPrestaShop(request, domain):
try:
userID = request.session['userID']
@@ -1418,6 +1518,7 @@ def installPrestaShop(request, domain):
except KeyError:
return redirect(loadLoginPage)
def installMagento(request, domain):
try:
userID = request.session['userID']
@@ -1426,6 +1527,7 @@ def installMagento(request, domain):
except KeyError:
return redirect(loadLoginPage)
def magentoInstall(request):
try:
userID = request.session['userID']
@@ -1434,6 +1536,7 @@ def magentoInstall(request):
except KeyError:
return redirect(loadLoginPage)
def installMautic(request, domain):
try:
userID = request.session['userID']
@@ -1442,6 +1545,7 @@ def installMautic(request, domain):
except KeyError:
return redirect(loadLoginPage)
def mauticInstall(request):
try:
userID = request.session['userID']
@@ -1450,6 +1554,7 @@ def mauticInstall(request):
except KeyError:
return redirect(loadLoginPage)
def prestaShopInstall(request):
try:
userID = request.session['userID']
@@ -1458,6 +1563,7 @@ def prestaShopInstall(request):
except KeyError:
return redirect(loadLoginPage)
def sshAccess(request, domain):
try:
userID = request.session['userID']
@@ -1502,6 +1608,7 @@ def syncToMaster(request, domain, childDomain):
except KeyError:
return redirect(loadLoginPage)
def startSync(request):
try:
userID = request.session['userID']
@@ -1528,6 +1635,7 @@ def manageGIT(request, domain):
except KeyError:
return redirect(loadLoginPage)
def fetchFolderDetails(request):
try:
userID = request.session['userID']
@@ -1536,6 +1644,7 @@ def fetchFolderDetails(request):
except KeyError:
return redirect(loadLoginPage)
def initRepo(request):
try:
userID = request.session['userID']
@@ -1544,6 +1653,7 @@ def initRepo(request):
except KeyError:
return redirect(loadLoginPage)
def setupRemote(request):
try:
userID = request.session['userID']
@@ -1552,6 +1662,7 @@ def setupRemote(request):
except KeyError:
return redirect(loadLoginPage)
def changeGitBranch(request):
try:
userID = request.session['userID']
@@ -1560,6 +1671,7 @@ def changeGitBranch(request):
except KeyError:
return redirect(loadLoginPage)
def createNewBranch(request):
try:
userID = request.session['userID']
@@ -1568,6 +1680,7 @@ def createNewBranch(request):
except KeyError:
return redirect(loadLoginPage)
def commitChanges(request):
try:
userID = request.session['userID']
@@ -1576,6 +1689,7 @@ def commitChanges(request):
except KeyError:
return redirect(loadLoginPage)
def gitPull(request):
try:
userID = request.session['userID']
@@ -1584,6 +1698,7 @@ def gitPull(request):
except KeyError:
return redirect(loadLoginPage)
def gitPush(request):
try:
userID = request.session['userID']
@@ -1592,6 +1707,7 @@ def gitPush(request):
except KeyError:
return redirect(loadLoginPage)
def attachRepoGIT(request):
try:
userID = request.session['userID']
@@ -1600,6 +1716,7 @@ def attachRepoGIT(request):
except KeyError:
return redirect(loadLoginPage)
def removeTracking(request):
try:
userID = request.session['userID']
@@ -1608,6 +1725,7 @@ def removeTracking(request):
except KeyError:
return redirect(loadLoginPage)
def fetchGitignore(request):
try:
userID = request.session['userID']
@@ -1616,6 +1734,7 @@ def fetchGitignore(request):
except KeyError:
return redirect(loadLoginPage)
def saveGitIgnore(request):
try:
userID = request.session['userID']
@@ -1624,6 +1743,7 @@ def saveGitIgnore(request):
except KeyError:
return redirect(loadLoginPage)
def fetchCommits(request):
try:
userID = request.session['userID']
@@ -1632,6 +1752,7 @@ def fetchCommits(request):
except KeyError:
return redirect(loadLoginPage)
def fetchFiles(request):
try:
userID = request.session['userID']
@@ -1640,6 +1761,7 @@ def fetchFiles(request):
except KeyError:
return redirect(loadLoginPage)
def fetchChangesInFile(request):
try:
userID = request.session['userID']
@@ -1648,6 +1770,7 @@ def fetchChangesInFile(request):
except KeyError:
return redirect(loadLoginPage)
def saveGitConfigurations(request):
try:
userID = request.session['userID']
@@ -1656,6 +1779,7 @@ def saveGitConfigurations(request):
except KeyError:
return redirect(loadLoginPage)
def fetchGitLogs(request):
try:
userID = request.session['userID']
@@ -1664,6 +1788,7 @@ def fetchGitLogs(request):
except KeyError:
return redirect(loadLoginPage)
def getSSHConfigs(request):
try:
userID = request.session['userID']
@@ -1672,6 +1797,7 @@ def getSSHConfigs(request):
except KeyError:
return redirect(loadLoginPage)
def deleteSSHKey(request):
try:
userID = request.session['userID']
@@ -1680,6 +1806,7 @@ def deleteSSHKey(request):
except KeyError:
return redirect(loadLoginPage)
def addSSHKey(request):
try:
userID = request.session['userID']
@@ -1688,6 +1815,7 @@ def addSSHKey(request):
except KeyError:
return redirect(loadLoginPage)
@csrf_exempt
def webhook(request, domain):
try:
@@ -1714,6 +1842,7 @@ def getSwitchStatus(request):
except KeyError:
return redirect(loadLoginPage)
def switchServer(request):
try:
userID = request.session['userID']
@@ -1722,6 +1851,7 @@ def switchServer(request):
except KeyError:
return redirect(loadLoginPage)
def statusFunc(request):
try:
userID = request.session['userID']
@@ -1733,6 +1863,7 @@ def statusFunc(request):
except KeyError:
return redirect(loadLoginPage)
def tuneSettings(request):
try:
userID = request.session['userID']
@@ -1742,6 +1873,7 @@ def tuneSettings(request):
except KeyError:
return redirect(loadLoginPage)
def saveApacheConfigsToFile(request):
try:
userID = request.session['userID']

View File

@@ -82,6 +82,37 @@ class WebsiteManager:
Data, 'createWebsite')
return proc.render()
def createWebsiteV2(self, request=None, userID=None, data=None):
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "all",
"IP": ACLManager.GetServerIP()
}
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
test_domain_status = 0
if (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent:
test_domain_status = 1
currentACL = ACLManager.loadedACL(userID)
adminNames = ACLManager.loadAllUsers(userID)
packagesName = ACLManager.loadPackages(userID, currentACL)
phps = PHPManager.findPHPVersions()
rnpss = randomPassword.generate_pass(10)
Data = {'packageList': packagesName, "owernList": adminNames, 'phps': phps, 'Randam_String': rnpss.lower(),
'test_domain_data': test_domain_status}
proc = httpProc(request, 'websiteFunctions/createWebsiteV2.html',
Data, 'createWebsite')
return proc.render()
def WPCreate(self, request=None, userID=None, data=None):
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
@@ -716,6 +747,30 @@ class WebsiteManager:
{'websiteList': websitesName, 'phps': PHPManager.findPHPVersions(), 'Randam_String': rnpss, 'test_domain_data':test_domain_status})
return proc.render()
def CreateNewDomainV2(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
websitesName = ACLManager.findAllSites(currentACL, userID)
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "all",
"IP": ACLManager.GetServerIP()
}
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
test_domain_status = 0
if (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent:
test_domain_status = 1
rnpss = randomPassword.generate_pass(10)
proc = httpProc(request, 'websiteFunctions/createDomainV2.html',
{'websiteList': websitesName, 'phps': PHPManager.findPHPVersions(), 'Randam_String': rnpss, 'test_domain_data':test_domain_status})
return proc.render()
def siteState(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
@@ -732,6 +787,13 @@ class WebsiteManager:
{"pagination": pagination})
return proc.render()
def listWebsitesV2(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
pagination = self.websitePagination(currentACL, userID)
proc = httpProc(request, 'websiteFunctions/listWebsiteV2.html',
{"pagination": pagination})
return proc.render()
def listChildDomains(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
adminNames = ACLManager.loadAllUsers(userID)
@@ -743,6 +805,17 @@ class WebsiteManager:
Data)
return proc.render()
def listChildDomainsV2(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
adminNames = ACLManager.loadAllUsers(userID)
packagesName = ACLManager.loadPackages(userID, currentACL)
phps = PHPManager.findPHPVersions()
Data = {'packageList': packagesName, "owernList": adminNames, 'phps': phps}
proc = httpProc(request, 'websiteFunctions/listChildDomainsV2.html',
Data)
return proc.render()
def listCron(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
admin = Administrator.objects.get(pk=userID)