mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 22:06:05 +01:00
port docker manager to ubuntu
This commit is contained in:
@@ -6,7 +6,58 @@
|
|||||||
|
|
||||||
<style>
|
<style>
|
||||||
/* Loading Spinner */
|
/* Loading Spinner */
|
||||||
.spinner{margin:0;width:70px;height:18px;margin:-35px 0 0 -9px;position:absolute;top:50%;left:50%;text-align:center}.spinner > div{width:18px;height:18px;background-color:#333;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0.0)}40%{-webkit-transform:scale(1.0)}}@keyframes bouncedelay{0%,80%,100%{transform:scale(0.0);-webkit-transform:scale(0.0)}40%{transform:scale(1.0);-webkit-transform:scale(1.0)}}
|
.spinner {
|
||||||
|
margin: 0;
|
||||||
|
width: 70px;
|
||||||
|
height: 18px;
|
||||||
|
margin: -35px 0 0 -9px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
text-align: center
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner > div {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
background-color: #333;
|
||||||
|
border-radius: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
-webkit-animation: bouncedelay 1.4s infinite ease-in-out;
|
||||||
|
animation: bouncedelay 1.4s infinite ease-in-out;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner .bounce1 {
|
||||||
|
-webkit-animation-delay: -.32s;
|
||||||
|
animation-delay: -.32s
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner .bounce2 {
|
||||||
|
-webkit-animation-delay: -.16s;
|
||||||
|
animation-delay: -.16s
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes bouncedelay {
|
||||||
|
0%, 80%, 100% {
|
||||||
|
-webkit-transform: scale(0.0)
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
-webkit-transform: scale(1.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes bouncedelay {
|
||||||
|
0%, 80%, 100% {
|
||||||
|
transform: scale(0.0);
|
||||||
|
-webkit-transform: scale(0.0)
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
transform: scale(1.0);
|
||||||
|
-webkit-transform: scale(1.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
@@ -41,12 +92,12 @@
|
|||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="/static/baseTemplate/assets/themes/admin/layout.css">
|
<link rel="stylesheet" type="text/css" href="/static/baseTemplate/assets/themes/admin/layout.css">
|
||||||
<link rel="stylesheet" type="text/css" href="/static/baseTemplate/assets/themes/admin/color-schemes/default.css">
|
<link rel="stylesheet" type="text/css" href="/static/baseTemplate/assets/themes/admin/color-schemes/default.css">
|
||||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
|
<link rel="stylesheet" type="text/css"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'baseTemplate/custom-js/pnotify.custom.min.css' %}">
|
<link rel="stylesheet" type="text/css" href="{% static 'baseTemplate/custom-js/pnotify.custom.min.css' %}">
|
||||||
<!-- Components theme, component below was above three CSS files. -->
|
<!-- Components theme, component below was above three CSS files. -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Admin responsive -->
|
<!-- Admin responsive -->
|
||||||
|
|
||||||
|
|
||||||
@@ -74,7 +125,6 @@
|
|||||||
<div id="sb-site">
|
<div id="sb-site">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!------- ng-controller="systemStatusInfo" ------------>
|
<!------- ng-controller="systemStatusInfo" ------------>
|
||||||
|
|
||||||
|
|
||||||
@@ -83,8 +133,6 @@
|
|||||||
<div class="pad15A">
|
<div class="pad15A">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
|
||||||
@@ -134,8 +182,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="loading">
|
<div id="loading">
|
||||||
<div class="spinner">
|
<div class="spinner">
|
||||||
<div class="bounce1"></div>
|
<div class="bounce1"></div>
|
||||||
@@ -147,7 +193,8 @@
|
|||||||
<div id="page-wrapper">
|
<div id="page-wrapper">
|
||||||
<div id="page-header" class="bg-gradient-9">
|
<div id="page-header" class="bg-gradient-9">
|
||||||
<div id="mobile-navigation">
|
<div id="mobile-navigation">
|
||||||
<button id="nav-toggle" class="collapsed" data-toggle="collapse" data-target="#page-sidebar"><span></span></button>
|
<button id="nav-toggle" class="collapsed" data-toggle="collapse" data-target="#page-sidebar">
|
||||||
|
<span></span></button>
|
||||||
<a href="{% url "index" %}" class="logo-content-small" title="{% trans 'CyberPanel' %}"></a>
|
<a href="{% url "index" %}" class="logo-content-small" title="{% trans 'CyberPanel' %}"></a>
|
||||||
</div>
|
</div>
|
||||||
<div id="header-logo" class="logo-bg">
|
<div id="header-logo" class="logo-bg">
|
||||||
@@ -166,7 +213,8 @@
|
|||||||
<div id="header-nav-left">
|
<div id="header-nav-left">
|
||||||
<div ng-controller="adminController" class="user-account-btn dropdown">
|
<div ng-controller="adminController" class="user-account-btn dropdown">
|
||||||
<a href="#" title="{% trans 'My Account' %}" class="user-profile clearfix" data-toggle="dropdown">
|
<a href="#" title="{% trans 'My Account' %}" class="user-profile clearfix" data-toggle="dropdown">
|
||||||
<img width="28" src="{% static 'baseTemplate/assets/image-resources/gravatar.png' %}" alt="Profile image">
|
<img width="28" src="{% static 'baseTemplate/assets/image-resources/gravatar.png' %}"
|
||||||
|
alt="Profile image">
|
||||||
<span>{$ currentAdmin $}</span>
|
<span>{$ currentAdmin $}</span>
|
||||||
<i class="glyph-icon icon-angle-down"></i>
|
<i class="glyph-icon icon-angle-down"></i>
|
||||||
</a>
|
</a>
|
||||||
@@ -182,8 +230,10 @@
|
|||||||
{$ currentAdmin $}
|
{$ currentAdmin $}
|
||||||
<i>{$ admin_type $}</i>
|
<i>{$ admin_type $}</i>
|
||||||
</span>
|
</span>
|
||||||
<a href="{% url 'modifyUsers' %}" title="{% trans 'Edit profile' %}">{% trans "Edit profile" %}</a>
|
<a href="{% url 'modifyUsers' %}"
|
||||||
<a href="{% url 'viewProfile' %}" title="{% trans 'View Profile' %}">{% trans "View Profile" %}</a>
|
title="{% trans 'Edit profile' %}">{% trans "Edit profile" %}</a>
|
||||||
|
<a href="{% url 'viewProfile' %}"
|
||||||
|
title="{% trans 'View Profile' %}">{% trans "View Profile" %}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="divider"></div>
|
<div class="divider"></div>
|
||||||
@@ -201,56 +251,66 @@
|
|||||||
|
|
||||||
<div ng-controller="loadAvg" id="header-nav-right">
|
<div ng-controller="loadAvg" id="header-nav-right">
|
||||||
|
|
||||||
<a class="hide-on-phone" style="background-color: none;width: 33px" href="#" class="hdr-btn" title="{% trans 'CPU Load Average' %}" data-placement="bottom" >
|
<a class="hide-on-phone" style="background-color: none;width: 33px" href="#" class="hdr-btn"
|
||||||
|
title="{% trans 'CPU Load Average' %}" data-placement="bottom">
|
||||||
<span class="badge bg-yellow">{$ one $}</span>
|
<span class="badge bg-yellow">{$ one $}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="hide-on-phone" style="background-color: none;width: 33px" href="#" class="hdr-btn" title="{% trans 'CPU Load Average' %}" data-placement="bottom" >
|
<a class="hide-on-phone" style="background-color: none;width: 33px" href="#" class="hdr-btn"
|
||||||
|
title="{% trans 'CPU Load Average' %}" data-placement="bottom">
|
||||||
<span class="badge bg-yellow">{$ two $}</span>
|
<span class="badge bg-yellow">{$ two $}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="hide-on-phone" style="background-color: none;width: 33px" href="#" class="hdr-btn" title="{% trans 'CPU Load Average' %}" data-placement="bottom">
|
<a class="hide-on-phone" style="background-color: none;width: 33px" href="#" class="hdr-btn"
|
||||||
|
title="{% trans 'CPU Load Average' %}" data-placement="bottom">
|
||||||
<span class="badge bg-yellow">{$ three $}</span>
|
<span class="badge bg-yellow">{$ three $}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="dropdown" id="dashnav-btn">
|
<div class="dropdown" id="dashnav-btn">
|
||||||
<a href="#" data-toggle="dropdown" data-placement="bottom" class="popover-button-header tooltip-button" title="{% trans 'Dashboard Quick Menu' %}">
|
<a href="#" data-toggle="dropdown" data-placement="bottom"
|
||||||
|
class="popover-button-header tooltip-button" title="{% trans 'Dashboard Quick Menu' %}">
|
||||||
<i class="glyph-icon icon-linecons-cog"></i>
|
<i class="glyph-icon icon-linecons-cog"></i>
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu float-right">
|
<div class="dropdown-menu float-right">
|
||||||
<div class="box-sm">
|
<div class="box-sm">
|
||||||
<div class="pad5T pad5B pad10L pad10R dashboard-buttons clearfix">
|
<div class="pad5T pad5B pad10L pad10R dashboard-buttons clearfix">
|
||||||
<a href="{% url 'loadWebsitesHome' %}" class="btn vertical-button remove-border btn-info" title="{% trans '' %}">
|
<a href="{% url 'loadWebsitesHome' %}"
|
||||||
|
class="btn vertical-button remove-border btn-info" title="{% trans '' %}">
|
||||||
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
||||||
<i class="glyph-icon icon-dashboard opacity-80 font-size-20"></i>
|
<i class="glyph-icon icon-dashboard opacity-80 font-size-20"></i>
|
||||||
</span>
|
</span>
|
||||||
{% trans "Websites" %}
|
{% trans "Websites" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'packagesHome' %}" class="btn vertical-button remove-border btn-danger" title="{% trans '' %}">
|
<a href="{% url 'packagesHome' %}" class="btn vertical-button remove-border btn-danger"
|
||||||
|
title="{% trans '' %}">
|
||||||
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
||||||
<i class="glyph-icon icon-tags opacity-80 font-size-20"></i>
|
<i class="glyph-icon icon-tags opacity-80 font-size-20"></i>
|
||||||
</span>
|
</span>
|
||||||
{% trans "Packages" %}
|
{% trans "Packages" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'dnsHome' %}" class="btn vertical-button remove-border btn-purple" title="{% trans '' %}">
|
<a href="{% url 'dnsHome' %}" class="btn vertical-button remove-border btn-purple"
|
||||||
|
title="{% trans '' %}">
|
||||||
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
||||||
<i class="glyph-icon icon-fire opacity-80 font-size-20"></i>
|
<i class="glyph-icon icon-fire opacity-80 font-size-20"></i>
|
||||||
</span>
|
</span>
|
||||||
{% trans "DNS" %}
|
{% trans "DNS" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'loadFTPHome' %}" class="btn vertical-button remove-border btn-azure" title="{% trans '' %}">
|
<a href="{% url 'loadFTPHome' %}" class="btn vertical-button remove-border btn-azure"
|
||||||
|
title="{% trans '' %}">
|
||||||
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
||||||
<i class="glyph-icon icon-bar-chart-o opacity-80 font-size-20"></i>
|
<i class="glyph-icon icon-bar-chart-o opacity-80 font-size-20"></i>
|
||||||
</span>
|
</span>
|
||||||
{% trans "FTP" %}
|
{% trans "FTP" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'loadTuningHome' %}" class="btn vertical-button remove-border btn-yellow" title="{% trans '' %}">
|
<a href="{% url 'loadTuningHome' %}"
|
||||||
|
class="btn vertical-button remove-border btn-yellow" title="{% trans '' %}">
|
||||||
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
||||||
<i class="glyph-icon icon-laptop opacity-80 font-size-20"></i>
|
<i class="glyph-icon icon-laptop opacity-80 font-size-20"></i>
|
||||||
</span>
|
</span>
|
||||||
{% trans "Tuning" %}
|
{% trans "Tuning" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'serverStatusHome' %}" class="btn vertical-button remove-border btn-warning" title="{% trans '' %}">
|
<a href="{% url 'serverStatusHome' %}"
|
||||||
|
class="btn vertical-button remove-border btn-warning" title="{% trans '' %}">
|
||||||
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
<span class="glyph-icon icon-separator-vertical pad0A medium">
|
||||||
<i class="glyph-icon icon-code opacity-80 font-size-20"></i>
|
<i class="glyph-icon icon-code opacity-80 font-size-20"></i>
|
||||||
</span>
|
</span>
|
||||||
@@ -278,19 +338,25 @@
|
|||||||
<li class="header"><span>{% trans "Overview" %}</span></li>
|
<li class="header"><span>{% trans "Overview" %}</span></li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" title="{% trans 'Server IP Address' %}">
|
<a href="#" title="{% trans 'Server IP Address' %}">
|
||||||
<i class="glyph-icon tooltip-button icon-laptop" title="{% trans 'Server IP Address' %}" data-original-title=".icon-laptop"></i>
|
<i class="glyph-icon tooltip-button icon-laptop" title="{% trans 'Server IP Address' %}"
|
||||||
|
data-original-title=".icon-laptop"></i>
|
||||||
<span style="color: #db6868;font-weight: bold;" id="serverIPAddress"></span>
|
<span style="color: #db6868;font-weight: bold;" id="serverIPAddress"></span>
|
||||||
</a>
|
</a>
|
||||||
<a href="{% url 'index' %}" title="{% trans 'Dashboard' %}">
|
<a href="{% url 'index' %}" title="{% trans 'Dashboard' %}">
|
||||||
<i class="glyph-icon icon-linecons-tv"></i>
|
<i class="glyph-icon icon-linecons-tv"></i>
|
||||||
<span>{% trans "Dashboard" %}</span>
|
<span>{% trans "Dashboard" %}</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="versionManagement" href="{% url 'versionManagment' %}" title="{% trans 'Version Management' %}">
|
<a class="versionManagement" href="{% url 'versionManagment' %}"
|
||||||
<i class="glyph-icon tooltip-button icon-cloud-upload" title="{% trans 'Version Management' %}" data-original-title=".icon-cloud-upload" aria-describedby="tooltip896208"></i>
|
title="{% trans 'Version Management' %}">
|
||||||
|
<i class="glyph-icon tooltip-button icon-cloud-upload"
|
||||||
|
title="{% trans 'Version Management' %}" data-original-title=".icon-cloud-upload"
|
||||||
|
aria-describedby="tooltip896208"></i>
|
||||||
<span>{% trans "Version Management" %}</span>
|
<span>{% trans "Version Management" %}</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="versionManagement" href="https://platform.cyberpanel.net" title="{% trans 'Connect' %}">
|
<a class="versionManagement" href="https://platform.cyberpanel.net"
|
||||||
<i class="glyph-icon tooltip-button icon-cloud" title="{% trans 'Connect' %}" data-original-title=".icon-cloud-upload" aria-describedby="tooltip896208"></i>
|
title="{% trans 'Connect' %}">
|
||||||
|
<i class="glyph-icon tooltip-button icon-cloud" title="{% trans 'Connect' %}"
|
||||||
|
data-original-title=".icon-cloud-upload" aria-describedby="tooltip896208"></i>
|
||||||
<span>{% trans "Connect" %}</span>
|
<span>{% trans "Connect" %}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -305,15 +371,32 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'viewProfile' %}" title="{% trans 'View Profile' %}"><span>{% trans "View Profile" %}</span></a></li>
|
<li><a href="{% url 'viewProfile' %}"
|
||||||
<li class="createNewUser"><a href="{% url 'createUser' %}" title="{% trans 'Create New User' %}"><span>{% trans "Create New User" %}</span></a></li>
|
title="{% trans 'View Profile' %}"><span>{% trans "View Profile" %}</span></a>
|
||||||
<li><a href="{% url 'modifyUsers' %}" title="{% trans 'Modify User' %}"><span>{% trans "Modify User" %}</span></a></li>
|
</li>
|
||||||
<li class="deleteUser"><a href="{% url 'deleteUser' %}" title="{% trans 'Delete User' %}"><span>{% trans "Delete User" %}</span></a></li>
|
<li class="createNewUser"><a href="{% url 'createUser' %}"
|
||||||
<li class="resellerCenter"><a href="{% url 'resellerCenter' %}" title="{% trans 'Reseller Center' %}"><span>{% trans "Reseller Center" %}</span></a></li>
|
title="{% trans 'Create New User' %}"><span>{% trans "Create New User" %}</span></a>
|
||||||
<li class="changeUserACL"><a href="{% url 'changeUserACL' %}" title="{% trans 'Change User ACL' %}"><span>{% trans "Change User ACL" %}</span></a></li>
|
</li>
|
||||||
<li class="serverACL"><a href="{% url 'createNewACL' %}" title="{% trans 'Create New ACL' %}"><span>{% trans "Create New ACL" %}</span></a></li>
|
<li><a href="{% url 'modifyUsers' %}"
|
||||||
<li class="serverACL"><a href="{% url 'deleteACL' %}" title="{% trans 'Delete ACL' %}"><span>{% trans "Delete ACL" %}</span></a></li>
|
title="{% trans 'Modify User' %}"><span>{% trans "Modify User" %}</span></a></li>
|
||||||
<li class="serverACL"><a href="{% url 'modifyACL' %}" title="{% trans 'Modify ACL' %}"><span>{% trans "Modify ACL" %}</span></a></li>
|
<li class="deleteUser"><a href="{% url 'deleteUser' %}"
|
||||||
|
title="{% trans 'Delete User' %}"><span>{% trans "Delete User" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="resellerCenter"><a href="{% url 'resellerCenter' %}"
|
||||||
|
title="{% trans 'Reseller Center' %}"><span>{% trans "Reseller Center" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="changeUserACL"><a href="{% url 'changeUserACL' %}"
|
||||||
|
title="{% trans 'Change User ACL' %}"><span>{% trans "Change User ACL" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="serverACL"><a href="{% url 'createNewACL' %}"
|
||||||
|
title="{% trans 'Create New ACL' %}"><span>{% trans "Create New ACL" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="serverACL"><a href="{% url 'deleteACL' %}"
|
||||||
|
title="{% trans 'Delete ACL' %}"><span>{% trans "Delete ACL" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="serverACL"><a href="{% url 'modifyACL' %}"
|
||||||
|
title="{% trans 'Modify ACL' %}"><span>{% trans "Modify ACL" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -327,11 +410,21 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="createWebsite"><a href="{% url 'createWebsite' %}" title="{% trans 'Create Website' %}"><span>{% trans "Create Website" %}</span></a></li>
|
<li class="createWebsite"><a href="{% url 'createWebsite' %}"
|
||||||
<li><a href="{% url 'listWebsites' %}" title="{% trans 'List Websites' %}"><span>{% trans "List Websites" %}</span></a></li>
|
title="{% trans 'Create Website' %}"><span>{% trans "Create Website" %}</span></a>
|
||||||
<li class="modifyWebsite"><a href="{% url 'modifyWebsite' %}" title="{% trans 'Modify Website' %}"><span>{% trans "Modify Website" %}</span></a></li>
|
</li>
|
||||||
<li class="suspendWebsite"><a href="{% url 'siteState' %}" title="{% trans 'Suspend/Unsuspend' %}"><span>{% trans "Suspend/Unsuspend" %}</span></a></li>
|
<li><a href="{% url 'listWebsites' %}"
|
||||||
<li class="deleteWebsite"><a href="{% url 'deleteWebsite' %}" title="{% trans 'Delete Website' %}"><span>{% trans "Delete Website" %}</span></a></li>
|
title="{% trans 'List Websites' %}"><span>{% trans "List Websites" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="modifyWebsite"><a href="{% url 'modifyWebsite' %}"
|
||||||
|
title="{% trans 'Modify Website' %}"><span>{% trans "Modify Website" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="suspendWebsite"><a href="{% url 'siteState' %}"
|
||||||
|
title="{% trans 'Suspend/Unsuspend' %}"><span>{% trans "Suspend/Unsuspend" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="deleteWebsite"><a href="{% url 'deleteWebsite' %}"
|
||||||
|
title="{% trans 'Delete Website' %}"><span>{% trans "Delete Website" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -344,9 +437,15 @@
|
|||||||
<div id="packageSub" class="sidebar-submenu">
|
<div id="packageSub" class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="createPackage"><a href="{% url 'createPackage' %}" title="{% trans 'Create Package' %}"><span>{% trans "Create Package" %}</span></a></li>
|
<li class="createPackage"><a href="{% url 'createPackage' %}"
|
||||||
<li class="deletePackage"><a href="{% url 'deletePackage' %}" title="{% trans 'Delete Package' %}"><span>{% trans "Delete Package" %}</span></a></li>
|
title="{% trans 'Create Package' %}"><span>{% trans "Create Package" %}</span></a>
|
||||||
<li class="modifyPackage"><a href="{% url 'modifyPackage' %}" title="{% trans 'Modify Package' %}"><span>{% trans "Modify Package" %}</span></a></li>
|
</li>
|
||||||
|
<li class="deletePackage"><a href="{% url 'deletePackage' %}"
|
||||||
|
title="{% trans 'Delete Package' %}"><span>{% trans "Delete Package" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="modifyPackage"><a href="{% url 'modifyPackage' %}"
|
||||||
|
title="{% trans 'Modify Package' %}"><span>{% trans "Modify Package" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -360,10 +459,17 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="createDatabase"><a href="{% url 'createDatabase' %}" title="{% trans 'Create Database' %}"><span>{% trans "Create Database" %}</span></a></li>
|
<li class="createDatabase"><a href="{% url 'createDatabase' %}"
|
||||||
<li class="deleteDatabase"><a href="{% url 'deleteDatabase' %}" title="{% trans 'Delete Database' %}"><span>{% trans "Delete Database" %}</span></a></li>
|
title="{% trans 'Create Database' %}"><span>{% trans "Create Database" %}</span></a>
|
||||||
<li class="listDatabases"><a href="{% url 'listDBs' %}" title="{% trans 'List Databases' %}"><span>{% trans "List Databases" %}</span></a></li>
|
</li>
|
||||||
<li><a href="/phpmyadmin/index.php" title="{% trans 'PHPMYAdmin' %}" target="_blank"><span>{% trans "PHPMYAdmin" %}</span></a></li>
|
<li class="deleteDatabase"><a href="{% url 'deleteDatabase' %}"
|
||||||
|
title="{% trans 'Delete Database' %}"><span>{% trans "Delete Database" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="listDatabases"><a href="{% url 'listDBs' %}"
|
||||||
|
title="{% trans 'List Databases' %}"><span>{% trans "List Databases" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="/phpmyadmin/index.php" title="{% trans 'PHPMYAdmin' %}"
|
||||||
|
target="_blank"><span>{% trans "PHPMYAdmin" %}</span></a></li>
|
||||||
<!----<li><a href="{% url 'modifyPackage' %}" title="Change Password"><span>Change Password</span></a></li>--->
|
<!----<li><a href="{% url 'modifyPackage' %}" title="Change Password"><span>Change Password</span></a></li>--->
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@@ -378,10 +484,18 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="createNameServer"><a href="{% url 'createNameserver' %}" title="{% trans 'Create Nameserver' %}"><span>{% trans "Create Nameserver" %}</span></a></li>
|
<li class="createNameServer"><a href="{% url 'createNameserver' %}"
|
||||||
<li class="createDNSZone"><a href="{% url 'createDNSZone' %}" title="{% trans 'Create DNS Zone' %}"><span>{% trans "Create DNS Zone" %}</span></a></li>
|
title="{% trans 'Create Nameserver' %}"><span>{% trans "Create Nameserver" %}</span></a>
|
||||||
<li class="deleteZone"><a href="{% url 'deleteDNSZone' %}" title="{% trans 'Delete Zone' %}"><span>{% trans "Delete Zone" %}</span></a></li>
|
</li>
|
||||||
<li class="addDeleteRecords"><a href="{% url 'addDeleteDNSRecords' %}" title="{% trans 'Add/Delete Records' %}"><span>{% trans "Add/Delete Records" %}</span></a></li>
|
<li class="createDNSZone"><a href="{% url 'createDNSZone' %}"
|
||||||
|
title="{% trans 'Create DNS Zone' %}"><span>{% trans "Create DNS Zone" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="deleteZone"><a href="{% url 'deleteDNSZone' %}"
|
||||||
|
title="{% trans 'Delete Zone' %}"><span>{% trans "Delete Zone" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="addDeleteRecords"><a href="{% url 'addDeleteDNSRecords' %}"
|
||||||
|
title="{% trans 'Add/Delete Records' %}"><span>{% trans "Add/Delete Records" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -395,12 +509,23 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="createEmail"><a href="{% url 'createEmailAccount' %}" title="{% trans 'Create Email Account' %}"><span>{% trans "Create Email" %}</span></a></li>
|
<li class="createEmail"><a href="{% url 'createEmailAccount' %}"
|
||||||
<li class="deleteEmail"><a href="{% url 'deleteEmailAccount' %}" title="{% trans 'Delete Email Account' %}"><span>{% trans "Delete Email" %}</span></a></li>
|
title="{% trans 'Create Email Account' %}"><span>{% trans "Create Email" %}</span></a>
|
||||||
<li class="emailForwarding"><a href="{% url 'emailForwarding' %}" title="{% trans 'Email Forwarding' %}"><span>{% trans "Email Forwarding" %}</span></a></li>
|
</li>
|
||||||
<li class="changeEmailPassword"><a href="{% url 'changeEmailAccountPassword' %}" title="{% trans 'Change Password' %}"><span>{% trans "Change Password" %}</span></a></li>
|
<li class="deleteEmail"><a href="{% url 'deleteEmailAccount' %}"
|
||||||
<li class="dkimManager"><a href="{% url 'dkimManager' %}" title="{% trans 'DKIM Manager' %}"><span>{% trans "DKIM Manager" %}</span></a></li>
|
title="{% trans 'Delete Email Account' %}"><span>{% trans "Delete Email" %}</span></a>
|
||||||
<li><a href="/rainloop/index.php" title="{% trans 'Access Webmail' %}" target="_blank"><span>{% trans "Access Webmail" %}</span></a></li>
|
</li>
|
||||||
|
<li class="emailForwarding"><a href="{% url 'emailForwarding' %}"
|
||||||
|
title="{% trans 'Email Forwarding' %}"><span>{% trans "Email Forwarding" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="changeEmailPassword"><a href="{% url 'changeEmailAccountPassword' %}"
|
||||||
|
title="{% trans 'Change Password' %}"><span>{% trans "Change Password" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="dkimManager"><a href="{% url 'dkimManager' %}"
|
||||||
|
title="{% trans 'DKIM Manager' %}"><span>{% trans "DKIM Manager" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="/rainloop/index.php" title="{% trans 'Access Webmail' %}"
|
||||||
|
target="_blank"><span>{% trans "Access Webmail" %}</span></a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@@ -415,9 +540,15 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="createFTPAccount"><a href="{% url 'createFTPAccount' %}" title="{% trans 'Create FTP Account' %}"><span>{% trans "Create FTP Account" %}</span></a></li>
|
<li class="createFTPAccount"><a href="{% url 'createFTPAccount' %}"
|
||||||
<li class="deleteFTPAccount"><a href="{% url 'deleteFTPAccount' %}" title="{% trans 'Delete FTP Account' %}"><span>{% trans "Delete FTP Account" %}</span></a></li>
|
title="{% trans 'Create FTP Account' %}"><span>{% trans "Create FTP Account" %}</span></a>
|
||||||
<li class="listFTPAccounts"><a href="{% url 'listFTPAccounts' %}" title="{% trans 'List FTP Accounts' %}"><span>{% trans "List FTP Accounts" %}</span></a></li>
|
</li>
|
||||||
|
<li class="deleteFTPAccount"><a href="{% url 'deleteFTPAccount' %}"
|
||||||
|
title="{% trans 'Delete FTP Account' %}"><span>{% trans "Delete FTP Account" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="listFTPAccounts"><a href="{% url 'listFTPAccounts' %}"
|
||||||
|
title="{% trans 'List FTP Accounts' %}"><span>{% trans "List FTP Accounts" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -431,11 +562,21 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="createBackup"><a href="{% url 'backupSite' %}" title="{% trans 'Create Back up' %}"><span>{% trans "Create Back up" %}</span></a></li>
|
<li class="createBackup"><a href="{% url 'backupSite' %}"
|
||||||
<li class="restoreBackup"><a href="{% url 'restoreSite' %}" title="{% trans 'Restore Back up' %}"><span>{% trans "Restore Back up" %}</span></a></li>
|
title="{% trans 'Create Back up' %}"><span>{% trans "Create Back up" %}</span></a>
|
||||||
<li class="addDeleteDestinations"><a href="{% url 'backupDestinations' %}" title="{% trans 'Add Destination' %}"><span>{% trans "Add/Delete Destination" %}</span></a></li>
|
</li>
|
||||||
<li class="scheDuleBackups"><a href="{% url 'scheduleBackup' %}" title="{% trans 'Schedule Back up' %}"><span>{% trans "Schedule Back up" %}</span></a></li>
|
<li class="restoreBackup"><a href="{% url 'restoreSite' %}"
|
||||||
<li class="remoteBackups"><a href="{% url 'remoteBackups' %}" title="{% trans 'Remote Back ups' %}"><span>{% trans "Remote Back ups" %}</span></a></li>
|
title="{% trans 'Restore Back up' %}"><span>{% trans "Restore Back up" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="addDeleteDestinations"><a href="{% url 'backupDestinations' %}"
|
||||||
|
title="{% trans 'Add Destination' %}"><span>{% trans "Add/Delete Destination" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="scheDuleBackups"><a href="{% url 'scheduleBackup' %}"
|
||||||
|
title="{% trans 'Schedule Back up' %}"><span>{% trans "Schedule Back up" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="remoteBackups"><a href="{% url 'remoteBackups' %}"
|
||||||
|
title="{% trans 'Remote Back ups' %}"><span>{% trans "Remote Back ups" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -450,9 +591,15 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li class="manageSSL"><a href="{% url 'manageSSL' %}" title="{% trans 'Manage SSL' %}"><span>{% trans "Manage SSL" %}</span></a></li>
|
<li class="manageSSL"><a href="{% url 'manageSSL' %}"
|
||||||
<li class="hostnameSSL"><a href="{% url 'sslForHostName' %}" title="{% trans 'Hostname SSL' %}"><span>{% trans "Hostname SSL" %}</span></a></li>
|
title="{% trans 'Manage SSL' %}"><span>{% trans "Manage SSL" %}</span></a>
|
||||||
<li class="mailServerSSL"><a href="{% url 'sslForMailServer' %}" title="{% trans 'MailServer SSL' %}"><span>{% trans "MailServer SSL" %}</span></a></li>
|
</li>
|
||||||
|
<li class="hostnameSSL"><a href="{% url 'sslForHostName' %}"
|
||||||
|
title="{% trans 'Hostname SSL' %}"><span>{% trans "Hostname SSL" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="mailServerSSL"><a href="{% url 'sslForMailServer' %}"
|
||||||
|
title="{% trans 'MailServer SSL' %}"><span>{% trans "MailServer SSL" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -460,6 +607,29 @@
|
|||||||
|
|
||||||
<li class="header serverACL"><span>{% trans "Server" %}</span></li>
|
<li class="header serverACL"><span>{% trans "Server" %}</span></li>
|
||||||
|
|
||||||
|
<li class="serverACL">
|
||||||
|
<a href="#" title="{% trans 'Docker' %}">
|
||||||
|
<i class="glyph-icon icon-linecons-fire"></i>
|
||||||
|
<span>{% trans "Docker Manager" %}</span>
|
||||||
|
<span class="bs-label badge-yellow">{% trans "NEW" %}</span>
|
||||||
|
</a>
|
||||||
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="{% url 'manageImages' %}"
|
||||||
|
title="{% trans 'Manage Docker Images' %}"><span>{% trans "Manage Images" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'listContainers' %}"
|
||||||
|
title="{% trans 'Manage Docker Containers' %}"><span>{% trans "Manage Containers" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'containerImage' %}"
|
||||||
|
title="{% trans 'Create New Docker Container' %}"><span>{% trans "Create New Container" %}</span></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div><!-- .sidebar-submenu -->
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="serverACL">
|
<li class="serverACL">
|
||||||
<a href="#" title="{% trans 'Tuning' %}">
|
<a href="#" title="{% trans 'Tuning' %}">
|
||||||
<i class="glyph-icon icon-linecons-fire"></i>
|
<i class="glyph-icon icon-linecons-fire"></i>
|
||||||
@@ -468,8 +638,11 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'liteSpeedTuning' %}" title="{% trans 'LiteSpeed Tuning' %}"><span>{% trans "LiteSpeed Tuning" %}</span></a></li>
|
<li><a href="{% url 'liteSpeedTuning' %}"
|
||||||
<li><a href="{% url 'phpTuning' %}" title="{% trans 'PHP Tuning' %}"><span>{% trans "PHP Tuning" %}</span></a></li>
|
title="{% trans 'LiteSpeed Tuning' %}"><span>{% trans "LiteSpeed Tuning" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'phpTuning' %}"
|
||||||
|
title="{% trans 'PHP Tuning' %}"><span>{% trans "PHP Tuning" %}</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -483,10 +656,18 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'topProcesses' %}" title="{% trans 'Top Processes' %}"><span>{% trans "Top Processes" %}</span></a></li>
|
<li><a href="{% url 'topProcesses' %}"
|
||||||
<li><a href="{% url 'litespeedStatus' %}" title="{% trans 'LiteSpeed Status' %}"><span>{% trans "LiteSpeed Status" %}</span></a></li>
|
title="{% trans 'Top Processes' %}"><span>{% trans "Top Processes" %}</span></a>
|
||||||
<li><a href="{% url 'cyberCPMainLogFile' %}" title="{% trans 'CyberPanel Main Log File' %}"><span>{% trans "CyberPanel Main Log File" %}</span></a></li>
|
</li>
|
||||||
<li><a href="{% url 'services' %}" title="{% trans 'Services Status' %}"><span>{% trans "Services Status" %}</span></a></li>
|
<li><a href="{% url 'litespeedStatus' %}"
|
||||||
|
title="{% trans 'LiteSpeed Status' %}"><span>{% trans "LiteSpeed Status" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'cyberCPMainLogFile' %}"
|
||||||
|
title="{% trans 'CyberPanel Main Log File' %}"><span>{% trans "CyberPanel Main Log File" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'services' %}"
|
||||||
|
title="{% trans 'Services Status' %}"><span>{% trans "Services Status" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -500,8 +681,12 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'installExtensions' %}" title="{% trans 'Install PHP Extensions' %}"><span>{% trans "Install Extensions" %}</span></a></li>
|
<li><a href="{% url 'installExtensions' %}"
|
||||||
<li><a href="{% url 'editPHPConfigs' %}" title="{% trans 'Edit PHP Configs' %}"><span>{% trans "Edit PHP Configs" %}</span></a></li>
|
title="{% trans 'Install PHP Extensions' %}"><span>{% trans "Install Extensions" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'editPHPConfigs' %}"
|
||||||
|
title="{% trans 'Edit PHP Configs' %}"><span>{% trans "Edit PHP Configs" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -515,11 +700,17 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'accessLogs' %}" title="{% trans 'Access Log' %}"><span>{% trans "Access Log" %}</span></a></li>
|
<li><a href="{% url 'accessLogs' %}"
|
||||||
<li><a href="{% url 'errorLogs' %}" title="{% trans 'Error Logs' %}"><span>{% trans "Error Logs" %}</span></a></li>
|
title="{% trans 'Access Log' %}"><span>{% trans "Access Log" %}</span></a></li>
|
||||||
<li><a href="{% url 'emaillogs' %}" title="{% trans 'Email Logs' %}"><span>{% trans "Email Log" %}</span></a></li>
|
<li><a href="{% url 'errorLogs' %}"
|
||||||
<li><a href="{% url 'ftplogs' %}" title="{% trans 'FTP Logs' %}"><span>{% trans "FTP Logs" %}</span></a></li>
|
title="{% trans 'Error Logs' %}"><span>{% trans "Error Logs" %}</span></a></li>
|
||||||
<li><a href="{% url 'modSecAuditLogs' %}" title="{% trans 'ModSecurity Audit Logs' %}"><span>{% trans "ModSec Audit Logs" %}</span></a></li>
|
<li><a href="{% url 'emaillogs' %}"
|
||||||
|
title="{% trans 'Email Logs' %}"><span>{% trans "Email Log" %}</span></a></li>
|
||||||
|
<li><a href="{% url 'ftplogs' %}"
|
||||||
|
title="{% trans 'FTP Logs' %}"><span>{% trans "FTP Logs" %}</span></a></li>
|
||||||
|
<li><a href="{% url 'modSecAuditLogs' %}"
|
||||||
|
title="{% trans 'ModSecurity Audit Logs' %}"><span>{% trans "ModSec Audit Logs" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -533,12 +724,22 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'firewallHome' %}" title="{% trans 'Firewall Home' %}"><span>{% trans "Firewall" %}</span></a></li>
|
<li><a href="{% url 'firewallHome' %}"
|
||||||
<li><a href="{% url 'secureSSH' %}" title="{% trans 'Secure SSH' %}"><span>{% trans "Secure SSH" %}</span></a></li>
|
title="{% trans 'Firewall Home' %}"><span>{% trans "Firewall" %}</span></a></li>
|
||||||
<li><a href="{% url 'modSecurity' %}" title="{% trans 'ModSecurity Configurations' %}"><span>{% trans "ModSecurity Conf" %}</span></a></li>
|
<li><a href="{% url 'secureSSH' %}"
|
||||||
<li><a href="{% url 'modSecRules' %}" title="{% trans 'ModSecurity Rules' %}"><span>{% trans "ModSecurity Rules" %}</span></a></li>
|
title="{% trans 'Secure SSH' %}"><span>{% trans "Secure SSH" %}</span></a></li>
|
||||||
<li><a href="{% url 'modSecRulesPacks' %}" title="{% trans 'ModSecurity Rules Packs' %}"><span>{% trans "ModSecurity Rules Packs" %}</span></a></li>
|
<li><a href="{% url 'modSecurity' %}"
|
||||||
<li><a href="{% url 'csf' %}" title="{% trans 'ConfigServer Security & Firewall (CSF)' %}"><span>{% trans "CSF" %}</span></a></li>
|
title="{% trans 'ModSecurity Configurations' %}"><span>{% trans "ModSecurity Conf" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'modSecRules' %}"
|
||||||
|
title="{% trans 'ModSecurity Rules' %}"><span>{% trans "ModSecurity Rules" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'modSecRulesPacks' %}"
|
||||||
|
title="{% trans 'ModSecurity Rules Packs' %}"><span>{% trans "ModSecurity Rules Packs" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'csf' %}"
|
||||||
|
title="{% trans 'ConfigServer Security & Firewall (CSF)' %}"><span>{% trans "CSF" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -553,10 +754,18 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'emailPolicyServer' %}" title="{% trans 'Email Policy Server' %}"><span>{% trans "Email Policy Server" %}</span></a></li>
|
<li><a href="{% url 'emailPolicyServer' %}"
|
||||||
<li><a href="{% url 'listDomains' %}" title="{% trans 'Email Limits' %}"><span>{% trans "Email Limits" %}</span></a></li>
|
title="{% trans 'Email Policy Server' %}"><span>{% trans "Email Policy Server" %}</span></a>
|
||||||
<li><a href="{% url 'SpamAssassin' %}" title="{% trans 'SpamAssassin Configurations' %}"><span>{% trans "SpamAssassin" %}</span></a></li>
|
</li>
|
||||||
<li><a href="{% url 'emailMarketing' %}" title="{% trans 'Email Marketing' %}"><span>{% trans "Email Marketing" %}</span></a></li>
|
<li><a href="{% url 'listDomains' %}"
|
||||||
|
title="{% trans 'Email Limits' %}"><span>{% trans "Email Limits" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'SpamAssassin' %}"
|
||||||
|
title="{% trans 'SpamAssassin Configurations' %}"><span>{% trans "SpamAssassin" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'emailMarketing' %}"
|
||||||
|
title="{% trans 'Email Marketing' %}"><span>{% trans "Email Marketing" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -570,9 +779,14 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'managePowerDNS' %}" title="{% trans 'Manage PowerDNS' %}"><span>{% trans "Manage PowerDNS" %}</span></a></li>
|
<li><a href="{% url 'managePowerDNS' %}"
|
||||||
<li><a href="{% url 'managePostfix' %}" title="{% trans 'Manage Postfix' %}"><span>{% trans "Manage Postfix" %}</span></a></li>
|
title="{% trans 'Manage PowerDNS' %}"><span>{% trans "Manage PowerDNS" %}</span></a>
|
||||||
<li><a href="{% url 'managePureFtpd' %}" title="{% trans 'Manage FTP' %}"><span>{% trans "Manage FTP" %}</span></a></li>
|
</li>
|
||||||
|
<li><a href="{% url 'managePostfix' %}"
|
||||||
|
title="{% trans 'Manage Postfix' %}"><span>{% trans "Manage Postfix" %}</span></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="{% url 'managePureFtpd' %}"
|
||||||
|
title="{% trans 'Manage FTP' %}"><span>{% trans "Manage FTP" %}</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
@@ -586,7 +800,9 @@
|
|||||||
<div class="sidebar-submenu">
|
<div class="sidebar-submenu">
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url 'installed' %}" title="{% trans 'Installed Plugins' %}"><span>{% trans "Installed" %}</span></a></li>
|
<li><a href="{% url 'installed' %}"
|
||||||
|
title="{% trans 'Installed Plugins' %}"><span>{% trans "Installed" %}</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div><!-- .sidebar-submenu -->
|
</div><!-- .sidebar-submenu -->
|
||||||
|
|||||||
@@ -1,8 +1,18 @@
|
|||||||
app.controller('installDocker', function($scope,$http) {
|
|
||||||
|
|
||||||
|
app.controller('installDocker', function ($scope, $http, $timeout, $window) {
|
||||||
$scope.installDockerStatus = true;
|
$scope.installDockerStatus = true;
|
||||||
|
$scope.installBoxGen = true;
|
||||||
|
$scope.dockerInstallBTN = false;
|
||||||
|
|
||||||
$scope.installDocker = function () {
|
$scope.installDocker = function () {
|
||||||
|
|
||||||
$scope.installDockerStatus = false;
|
$scope.installDockerStatus = false;
|
||||||
|
$scope.installBoxGen = true;
|
||||||
|
$scope.dockerInstallBTN = true;
|
||||||
|
|
||||||
url = "/docker/installDocker";
|
url = "/docker/installDocker";
|
||||||
|
|
||||||
var data = {};
|
var data = {};
|
||||||
var config = {
|
var config = {
|
||||||
headers: {
|
headers: {
|
||||||
@@ -10,42 +20,91 @@ app.controller('installDocker', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||||
|
|
||||||
|
|
||||||
function ListInitialDatas(response) {
|
function ListInitialDatas(response) {
|
||||||
if (response.data.installDockerStatus === 1)
|
$scope.cyberPanelLoading = true;
|
||||||
{
|
if (response.data.status === 1) {
|
||||||
new PNotify({
|
$scope.installBoxGen = false;
|
||||||
title: 'Docker installed',
|
getRequestStatus();
|
||||||
text: 'Reloading...',
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
location.reload();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Failed to complete request',
|
title: 'Operation Failed!',
|
||||||
text: response.data.error,
|
text: response.data.error_message,
|
||||||
type: 'error'
|
type: 'error'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$scope.installDockerStatus = true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialDatas(response) {
|
function cantLoadInitialDatas(response) {
|
||||||
$scope.installDockerStatus = true;
|
$scope.cyberPanelLoading = true;
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Failed to complete request',
|
title: 'Operation Failed!',
|
||||||
|
text: 'Could not connect to server, please refresh this page',
|
||||||
type: 'error'
|
type: 'error'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
function getRequestStatus() {
|
||||||
|
$scope.cyberPanelLoading = false;
|
||||||
|
|
||||||
|
url = "/serverstatus/switchTOLSWSStatus";
|
||||||
|
|
||||||
|
var data = {};
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
headers: {
|
||||||
|
'X-CSRFToken': getCookie('csrftoken')
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||||
|
|
||||||
|
|
||||||
|
function ListInitialDatas(response) {
|
||||||
|
if (response.data.abort === 0) {
|
||||||
|
$scope.requestData = response.data.requestStatus;
|
||||||
|
$timeout(getRequestStatus, 1000);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Notifications
|
||||||
|
$scope.cyberPanelLoading = true;
|
||||||
|
$timeout.cancel();
|
||||||
|
$scope.requestData = response.data.requestStatus;
|
||||||
|
if (response.data.installed === 1) {
|
||||||
|
$timeout(function () {
|
||||||
|
$window.location.reload();
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function cantLoadInitialDatas(response) {
|
||||||
|
$scope.cyberPanelLoading = true;
|
||||||
|
new PNotify({
|
||||||
|
title: 'Operation Failed!',
|
||||||
|
text: 'Could not connect to server, please refresh this page',
|
||||||
|
type: 'error'
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/* Java script code for docker management */
|
/* Java script code for docker management */
|
||||||
var delayTimer = null;
|
var delayTimer = null;
|
||||||
|
|
||||||
app.controller('dockerImages', function($scope,$http) {
|
app.controller('dockerImages', function ($scope) {
|
||||||
$scope.tagList = [];
|
$scope.tagList = [];
|
||||||
$scope.imageTag = {};
|
$scope.imageTag = {};
|
||||||
});
|
});
|
||||||
@@ -119,8 +178,7 @@ app.controller('runContainer', function($scope,$http) {
|
|||||||
|
|
||||||
function ListInitialDatas(response) {
|
function ListInitialDatas(response) {
|
||||||
|
|
||||||
if (response.data.createContainerStatus === 1)
|
if (response.data.createContainerStatus === 1) {
|
||||||
{
|
|
||||||
$scope.currentStatus = "Successful. Redirecting...";
|
$scope.currentStatus = "Successful. Redirecting...";
|
||||||
window.location.href = "/docker/view/" + $scope.name
|
window.location.href = "/docker/view/" + $scope.name
|
||||||
}
|
}
|
||||||
@@ -138,8 +196,8 @@ app.controller('runContainer', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialDatas(response) {
|
function cantLoadInitialDatas(response) {
|
||||||
|
|
||||||
$scope.containerCreationLoading = true;
|
$scope.containerCreationLoading = true;
|
||||||
@@ -175,7 +233,7 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
$scope.assignContainer = function (name) {
|
$scope.assignContainer = function (name) {
|
||||||
$("#assign").modal("show");
|
$("#assign").modal("show");
|
||||||
$scope.assignActive = name;
|
$scope.assignActive = name;
|
||||||
}
|
};
|
||||||
|
|
||||||
$scope.submitAssignContainer = function () {
|
$scope.submitAssignContainer = function () {
|
||||||
url = "/docker/assignContainer";
|
url = "/docker/assignContainer";
|
||||||
@@ -199,8 +257,7 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
});
|
});
|
||||||
window.location.href = '/docker/listContainers';
|
window.location.href = '/docker/listContainers';
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -209,6 +266,7 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$("#assign").modal("hide");
|
$("#assign").modal("hide");
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
console.log("not good");
|
console.log("not good");
|
||||||
new PNotify({
|
new PNotify({
|
||||||
@@ -217,7 +275,7 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
});
|
});
|
||||||
$("#assign").modal("hide");
|
$("#assign").modal("hide");
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
$scope.delContainer = function (name, unlisted=false) {
|
$scope.delContainer = function (name, unlisted=false) {
|
||||||
(new PNotify({
|
(new PNotify({
|
||||||
@@ -296,18 +354,19 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
$("#listFail").fadeIn();
|
$("#listFail").fadeIn();
|
||||||
$scope.errorMessage = response.data.error_message;
|
$scope.errorMessage = response.data.error_message;
|
||||||
}
|
}
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
}
|
}
|
||||||
@@ -345,8 +404,7 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
if (response.data.containerLogStatus === 1) {
|
if (response.data.containerLogStatus === 1) {
|
||||||
$scope.logs = response.data.containerLog;
|
$scope.logs = response.data.containerLog;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -355,6 +413,7 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -386,13 +445,13 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
console.log($scope.ContainerList);
|
console.log($scope.ContainerList);
|
||||||
$("#listFail").hide();
|
$("#listFail").hide();
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
$("#listFail").fadeIn();
|
$("#listFail").fadeIn();
|
||||||
$scope.errorMessage = response.data.error_message;
|
$scope.errorMessage = response.data.error_message;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
console.log("not good");
|
console.log("not good");
|
||||||
}
|
}
|
||||||
@@ -421,20 +480,19 @@ app.controller('listContainers', function($scope,$http) {
|
|||||||
$scope.ContainerList = finalData;
|
$scope.ContainerList = finalData;
|
||||||
$("#listFail").hide();
|
$("#listFail").hide();
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
$("#listFail").fadeIn();
|
$("#listFail").fadeIn();
|
||||||
$scope.errorMessage = response.data.error_message;
|
$scope.errorMessage = response.data.error_message;
|
||||||
console.log(response.data);
|
console.log(response.data);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
console.log("not good");
|
console.log("not good");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -483,8 +541,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
});
|
});
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -494,6 +551,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$('#infoLoading').hide();
|
$('#infoLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
PNotify.error({
|
PNotify.error({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -529,8 +587,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
$scope.topHead = response.data.processes.Titles;
|
$scope.topHead = response.data.processes.Titles;
|
||||||
$scope.topProcesses = response.data.processes.Processes;
|
$scope.topProcesses = response.data.processes.Processes;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -540,6 +597,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$scope.loadingTop = false;
|
$scope.loadingTop = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
PNotify.error({
|
PNotify.error({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -587,8 +645,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
});
|
});
|
||||||
window.location.href = '/docker/listContainers';
|
window.location.href = '/docker/listContainers';
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -597,6 +654,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$('#actionLoading').hide();
|
$('#actionLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
PNotify.error({
|
PNotify.error({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -622,8 +680,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
console.log(response.data.status);
|
console.log(response.data.status);
|
||||||
$scope.status = response.data.status;
|
$scope.status = response.data.status;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -632,6 +689,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
PNotify.error({
|
PNotify.error({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -678,8 +736,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -690,6 +747,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
$('#containerSettingLoading').hide();
|
$('#containerSettingLoading').hide();
|
||||||
$scope.savingSettings = false;
|
$scope.savingSettings = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -735,8 +793,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
$scope.status = response.data.status;
|
$scope.status = response.data.status;
|
||||||
$scope.refreshStatus()
|
$scope.refreshStatus()
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -746,6 +803,7 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$('#actionLoading').hide();
|
$('#actionLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
PNotify.error({
|
PNotify.error({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -778,12 +836,12 @@ app.controller('viewContainer', function($scope,$http) {
|
|||||||
if (response.data.containerLogStatus === 1) {
|
if (response.data.containerLogStatus === 1) {
|
||||||
$scope.logs = response.data.containerLog;
|
$scope.logs = response.data.containerLog;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
$scope.logs = response.data.error_message;
|
$scope.logs = response.data.error_message;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
console.log("not good");
|
console.log("not good");
|
||||||
$scope.logs = "Error loading log";
|
$scope.logs = "Error loading log";
|
||||||
@@ -801,8 +859,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
|
|
||||||
$scope.pullImage = function (image, tag) {
|
$scope.pullImage = function (image, tag) {
|
||||||
function ListInitialDatas(response) {
|
function ListInitialDatas(response) {
|
||||||
if (response.data.installImageStatus === 1)
|
if (response.data.installImageStatus === 1) {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Image pulled successfully',
|
title: 'Image pulled successfully',
|
||||||
text: 'Reloading...',
|
text: 'Reloading...',
|
||||||
@@ -821,6 +878,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialDatas(response) {
|
function cantLoadInitialDatas(response) {
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
new PNotify({
|
new PNotify({
|
||||||
@@ -828,6 +886,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
type: 'error'
|
type: 'error'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (image && tag) {
|
if (image && tag) {
|
||||||
$('#imageLoading').show();
|
$('#imageLoading').show();
|
||||||
|
|
||||||
@@ -880,8 +939,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||||
|
|
||||||
function ListInitialDatas(response) {
|
function ListInitialDatas(response) {
|
||||||
if (response.data.searchImageStatus === 1)
|
if (response.data.searchImageStatus === 1) {
|
||||||
{
|
|
||||||
$scope.images = response.data.matches;
|
$scope.images = response.data.matches;
|
||||||
console.log($scope.images)
|
console.log($scope.images)
|
||||||
}
|
}
|
||||||
@@ -896,6 +954,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialDatas(response) {
|
function cantLoadInitialDatas(response) {
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
new PNotify({
|
new PNotify({
|
||||||
@@ -932,8 +991,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
$scope.tagList[image].push("Load more");
|
$scope.tagList[image].push("Load more");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -942,6 +1000,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -1012,8 +1071,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
$('#history').modal('show');
|
$('#history').modal('show');
|
||||||
$scope.historyList = response.data.history;
|
$scope.historyList = response.data.history;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -1022,6 +1080,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
@@ -1082,8 +1141,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
});
|
});
|
||||||
window.location.href = "/docker/manageImages";
|
window.location.href = "/docker/manageImages";
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
text: response.data.error_message,
|
text: response.data.error_message,
|
||||||
@@ -1092,6 +1150,7 @@ app.controller('manageImages', function($scope,$http) {
|
|||||||
}
|
}
|
||||||
$('#imageLoading').hide();
|
$('#imageLoading').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cantLoadInitialData(response) {
|
function cantLoadInitialData(response) {
|
||||||
new PNotify({
|
new PNotify({
|
||||||
title: 'Unable to complete request',
|
title: 'Unable to complete request',
|
||||||
|
|||||||
@@ -16,7 +16,8 @@
|
|||||||
<div ng-controller="installDocker" class="panel">
|
<div ng-controller="installDocker" class="panel">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<h3 class="title-hero">
|
<h3 class="title-hero">
|
||||||
{% trans "Install Docker" %} <img ng-hide="installDockerStatus" src="{% static 'images/loading.gif' %}">
|
{% trans "Install Docker" %} <img ng-hide="installDockerStatus"
|
||||||
|
src="{% static 'images/loading.gif' %}">
|
||||||
</h3>
|
</h3>
|
||||||
<div class="example-box-wrapper">
|
<div class="example-box-wrapper">
|
||||||
|
|
||||||
@@ -30,9 +31,25 @@
|
|||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<p>{% trans "Docker is currently not installed on this server. To manage containers, you must first install it." %}</p>
|
<p>{% trans "Docker is currently not installed on this server. To manage containers, you must first install it." %}</p>
|
||||||
|
<!------ LSWS Switch box ----------------->
|
||||||
|
|
||||||
|
<div style="margin-top: 2%" ng-hide="installBoxGen" class="col-md-12">
|
||||||
|
|
||||||
|
<form action="/" id="" class="form-horizontal bordered-row">
|
||||||
|
<div class="form-group">
|
||||||
|
<div style="margin-top: 2%;" class="col-sm-12">
|
||||||
|
<textarea ng-model="requestData" rows="15"
|
||||||
|
class="form-control">{{ requestData }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!----- LSWS Switch box ----------------->
|
||||||
<br>
|
<br>
|
||||||
{% if status == 1 %}
|
{% if status == 1 %}
|
||||||
<button class="btn btn-primary" ng-click="installDocker()">Install Docker</button>
|
<button ng-hide="dockerInstallBTN" class="btn btn-primary" ng-click="installDocker()">Install Docker</button>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% trans "You do not have permissions to install Docker. Please contact your system administrator" %}
|
{% trans "You do not have permissions to install Docker. Please contact your system administrator" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -43,7 +60,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.shortcuts import render,redirect
|
from django.shortcuts import render, redirect, HttpResponse
|
||||||
from loginSystem.models import Administrator
|
from loginSystem.models import Administrator
|
||||||
from loginSystem.views import loadLoginPage
|
from loginSystem.views import loadLoginPage
|
||||||
from plogical.container import ContainerManager
|
from plogical.container import ContainerManager
|
||||||
from dockerManager.pluginManager import pluginManager
|
|
||||||
from decorators import preDockerRun
|
from decorators import preDockerRun
|
||||||
from plogical.acl import ACLManager
|
from plogical.acl import ACLManager
|
||||||
import json
|
import json
|
||||||
@@ -22,7 +21,7 @@ def dockerPermission(request, userID, context):
|
|||||||
else:
|
else:
|
||||||
return ACLManager.loadError()
|
return ACLManager.loadError()
|
||||||
else:
|
else:
|
||||||
return None
|
return 0
|
||||||
|
|
||||||
@preDockerRun
|
@preDockerRun
|
||||||
def loadDockerHome(request):
|
def loadDockerHome(request):
|
||||||
@@ -41,22 +40,18 @@ def installDocker(request):
|
|||||||
userID = request.session['userID']
|
userID = request.session['userID']
|
||||||
perm = dockerPermission(request, userID, 'loadDockerHome')
|
perm = dockerPermission(request, userID, 'loadDockerHome')
|
||||||
if perm: return perm
|
if perm: return perm
|
||||||
result = pluginManager.preDockerInstallation(request) # Later change to preInstallInstallation
|
|
||||||
|
|
||||||
if result != 200:
|
cm = ContainerManager(userID, 'submitInstallDocker')
|
||||||
return result
|
cm.start()
|
||||||
|
|
||||||
cm = ContainerManager()
|
data_ret = {'status': 1, 'error_message': 'None'}
|
||||||
coreResult = cm.submitInstallDocker(userID, json.loads(request.body))
|
json_data = json.dumps(data_ret)
|
||||||
|
return HttpResponse(json_data)
|
||||||
|
|
||||||
result = pluginManager.postDockerInstallation(request, coreResult)
|
except BaseException, msg:
|
||||||
if result != 200:
|
data_ret = {'status': 0, 'error_message': str(msg)}
|
||||||
return result
|
json_data = json.dumps(data_ret)
|
||||||
|
return HttpResponse(json_data)
|
||||||
return coreResult
|
|
||||||
|
|
||||||
except KeyError:
|
|
||||||
return redirect(loadLoginPage)
|
|
||||||
|
|
||||||
@preDockerRun
|
@preDockerRun
|
||||||
def installImage(request):
|
def installImage(request):
|
||||||
@@ -332,6 +327,7 @@ def manageImages(request):
|
|||||||
def getImageHistory(request):
|
def getImageHistory(request):
|
||||||
try:
|
try:
|
||||||
userID = request.session['userID']
|
userID = request.session['userID']
|
||||||
|
|
||||||
perm = dockerPermission(request, userID, 'loadDockerHome')
|
perm = dockerPermission(request, userID, 'loadDockerHome')
|
||||||
if perm: return perm
|
if perm: return perm
|
||||||
|
|
||||||
|
|||||||
@@ -780,8 +780,8 @@ class preFlightsChecks:
|
|||||||
|
|
||||||
os.chdir(self.path)
|
os.chdir(self.path)
|
||||||
|
|
||||||
command = "wget http://cyberpanel.sh/CyberPanel.1.7.7.tar.gz"
|
#command = "wget http://cyberpanel.sh/CyberPanel.1.7.7.tar.gz"
|
||||||
#command = "wget http://cyberpanel.sh/CyberPanelTemp.tar.gz"
|
command = "wget http://cyberpanel.sh/CyberPanelTemp.tar.gz"
|
||||||
preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
|
preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
|
||||||
'CyberPanel Download',
|
'CyberPanel Download',
|
||||||
1, 1, os.EX_OSERR)
|
1, 1, os.EX_OSERR)
|
||||||
@@ -789,8 +789,8 @@ class preFlightsChecks:
|
|||||||
##
|
##
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
command = "tar zxf CyberPanel.1.7.7.tar.gz"
|
#command = "tar zxf CyberPanel.1.7.7.tar.gz"
|
||||||
#command = "tar zxf CyberPanelTemp.tar.gz"
|
command = "tar zxf CyberPanelTemp.tar.gz"
|
||||||
preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
|
preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
|
||||||
'Extract CyberPanel',1, 1, os.EX_OSERR)
|
'Extract CyberPanel',1, 1, os.EX_OSERR)
|
||||||
|
|
||||||
@@ -2667,27 +2667,15 @@ class preFlightsChecks:
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
def installPYDNS(self):
|
def installPYDNS(self):
|
||||||
try:
|
|
||||||
count = 0
|
|
||||||
while (1):
|
|
||||||
command = "pip install pydns"
|
command = "pip install pydns"
|
||||||
|
preFlightsChecks.call(command, self.distro, '[installPYDNS]',
|
||||||
res = subprocess.call(shlex.split(command))
|
'Install PYDNS',
|
||||||
|
1, 0, os.EX_OSERR)
|
||||||
if preFlightsChecks.resFailed(self.distro, res):
|
def installDockerPY(self):
|
||||||
count = count + 1
|
command = "pip install docker"
|
||||||
preFlightsChecks.stdOut(
|
preFlightsChecks.call(command, self.distro, '[installDockerPY]',
|
||||||
"Trying to install pydns, trying again, try number: " + str(count))
|
'Install DockerPY',
|
||||||
if count == 3:
|
1, 0, os.EX_OSERR)
|
||||||
logging.InstallLog.writeToFile(
|
|
||||||
"Failed to install pydns! [installTLDExtract]")
|
|
||||||
else:
|
|
||||||
logging.InstallLog.writeToFile("pydns successfully installed! [pip]")
|
|
||||||
preFlightsChecks.stdOut("pydns successfully installed! [pip]")
|
|
||||||
break
|
|
||||||
except OSError, msg:
|
|
||||||
logging.InstallLog.writeToFile(str(msg) + " [installTLDExtract]")
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def installOpenDKIM(self):
|
def installOpenDKIM(self):
|
||||||
try:
|
try:
|
||||||
@@ -3289,6 +3277,7 @@ def main():
|
|||||||
checks.installCertBot()
|
checks.installCertBot()
|
||||||
checks.test_Requests()
|
checks.test_Requests()
|
||||||
checks.installPYDNS()
|
checks.installPYDNS()
|
||||||
|
checks.installDockerPY()
|
||||||
checks.download_install_CyberPanel(installCyberPanel.InstallCyberPanel.mysqlPassword, mysql)
|
checks.download_install_CyberPanel(installCyberPanel.InstallCyberPanel.mysqlPassword, mysql)
|
||||||
checks.setupCLI()
|
checks.setupCLI()
|
||||||
checks.setup_cron()
|
checks.setup_cron()
|
||||||
|
|||||||
@@ -453,7 +453,6 @@ class ACLManager:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def checkContainerOwnership(name, userID):
|
def checkContainerOwnership(name, userID):
|
||||||
return 1
|
|
||||||
try:
|
try:
|
||||||
container = Containers.objects.get(name=name)
|
container = Containers.objects.get(name=name)
|
||||||
currentACL = ACLManager.loadedACL(userID)
|
currentACL = ACLManager.loadedACL(userID)
|
||||||
@@ -513,7 +512,7 @@ class ACLManager:
|
|||||||
for items in admins:
|
for items in admins:
|
||||||
cons = items.containers_set.all()
|
cons = items.containers_set.all()
|
||||||
for con in cons:
|
for con in cons:
|
||||||
containerList.append(web)
|
containerList.append(con)
|
||||||
|
|
||||||
return containerList
|
return containerList
|
||||||
|
|
||||||
|
|||||||
@@ -18,54 +18,88 @@ import subprocess
|
|||||||
import shlex
|
import shlex
|
||||||
import time
|
import time
|
||||||
from dockerManager.models import Containers
|
from dockerManager.models import Containers
|
||||||
from django.http import StreamingHttpResponse
|
|
||||||
from wsgiref.util import FileWrapper
|
|
||||||
from math import ceil
|
from math import ceil
|
||||||
import docker
|
import docker
|
||||||
import docker.utils
|
import docker.utils
|
||||||
import requests
|
import requests
|
||||||
|
from processUtilities import ProcessUtilities
|
||||||
|
from serverStatus.serverStatusUtil import ServerStatusUtil
|
||||||
|
import threading as multi
|
||||||
|
|
||||||
|
|
||||||
# Use default socket to connect
|
# Use default socket to connect
|
||||||
class ContainerManager:
|
class ContainerManager(multi.Thread):
|
||||||
def __init__(self, name=None):
|
|
||||||
self.name = name
|
|
||||||
|
|
||||||
def submitInstallDocker(self, userID=None, data=None):
|
def __init__(self, name=None, function=None):
|
||||||
|
multi.Thread.__init__(self)
|
||||||
|
self.name = name
|
||||||
|
self.function = function
|
||||||
|
|
||||||
|
def run(self):
|
||||||
try:
|
try:
|
||||||
currentACL = ACLManager.loadedACL(userID)
|
if self.function == 'submitInstallDocker':
|
||||||
|
self.submitInstallDocker()
|
||||||
|
elif self.function == 'restartGunicorn':
|
||||||
|
command = 'sudo systemctl restart gunicorn.socket'
|
||||||
|
ProcessUtilities.executioner(command)
|
||||||
|
except BaseException, msg:
|
||||||
|
logging.CyberCPLogFileWriter.writeToFile( str(msg) + ' [ContainerManager.run]')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def executioner(command, statusFile):
|
||||||
|
try:
|
||||||
|
res = subprocess.call(shlex.split(command), stdout=statusFile, stderr=statusFile)
|
||||||
|
if res == 1:
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
except BaseException, msg:
|
||||||
|
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def submitInstallDocker(self):
|
||||||
|
try:
|
||||||
|
currentACL = ACLManager.loadedACL(self.name)
|
||||||
|
|
||||||
if ACLManager.currentContextPermission(currentACL, 'createContainer') == 0:
|
if ACLManager.currentContextPermission(currentACL, 'createContainer') == 0:
|
||||||
return ACLManager.loadError()
|
return ACLManager.loadError()
|
||||||
|
|
||||||
|
statusFile = open(ServerStatusUtil.lswsInstallStatusPath, 'w')
|
||||||
|
|
||||||
|
logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,
|
||||||
|
"Starting Docker Installation..\n", 1)
|
||||||
|
|
||||||
|
if ProcessUtilities.decideDistro() == ProcessUtilities.centos:
|
||||||
command = 'sudo yum install -y docker'
|
command = 'sudo yum install -y docker'
|
||||||
cmd = shlex.split(command)
|
else:
|
||||||
res = subprocess.call(cmd)
|
command = 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker.io'
|
||||||
|
|
||||||
|
if not ServerStatusUtil.executioner(command, statusFile):
|
||||||
|
logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,
|
||||||
|
"Failed to install Docker. [404]\n", 1)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
command = 'sudo groupadd docker'
|
command = 'sudo groupadd docker'
|
||||||
cmd = shlex.split(command)
|
ServerStatusUtil.executioner(command, statusFile)
|
||||||
res2 = subprocess.call(cmd)
|
|
||||||
|
|
||||||
command = 'sudo usermod -aG docker cyberpanel'
|
command = 'sudo usermod -aG docker cyberpanel'
|
||||||
cmd = shlex.split(command)
|
ServerStatusUtil.executioner(command, statusFile)
|
||||||
res3 = subprocess.call(cmd)
|
|
||||||
|
|
||||||
command = 'sudo service docker start'
|
command = 'sudo systemctl enable docker'
|
||||||
cmd = shlex.split(command)
|
ServerStatusUtil.executioner(command, statusFile)
|
||||||
res4 = subprocess.call(cmd)
|
|
||||||
|
|
||||||
if res == 0 and res2 == 0 and res3 == 0 and res4 == 0:
|
command = 'sudo systemctl start docker'
|
||||||
data_ret = {'installDockerStatus': 1, 'error_message': 'None'}
|
ServerStatusUtil.executioner(command, statusFile)
|
||||||
json_data = json.dumps(data_ret)
|
|
||||||
return HttpResponse(json_data)
|
|
||||||
else:
|
|
||||||
data_ret = {'installDockerStatus': 0, 'error_message': 'Failed to install. Manual install required.'}
|
|
||||||
json_data = json.dumps(data_ret)
|
|
||||||
return HttpResponse(json_data)
|
|
||||||
|
|
||||||
return HttpResponse(res)
|
cm = ContainerManager(self.name, 'restartGunicorn')
|
||||||
|
cm.start()
|
||||||
|
|
||||||
|
logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,
|
||||||
|
"Docker successfully installed.[200]\n", 1)
|
||||||
|
|
||||||
except BaseException, msg:
|
except BaseException, msg:
|
||||||
return HttpResponse(str(msg))
|
logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, str(msg) + ' [404].', 1)
|
||||||
|
|
||||||
def createContainer(self, request=None, userID=None, data=None):
|
def createContainer(self, request=None, userID=None, data=None):
|
||||||
try:
|
try:
|
||||||
@@ -779,9 +813,6 @@ class ContainerManager:
|
|||||||
|
|
||||||
name = data['name']
|
name = data['name']
|
||||||
|
|
||||||
if ACLManager.checkContainerOwnership(name, userID) != 1:
|
|
||||||
return ACLManager.loadError()
|
|
||||||
|
|
||||||
client = docker.from_env()
|
client = docker.from_env()
|
||||||
dockerAPI = docker.APIClient()
|
dockerAPI = docker.APIClient()
|
||||||
|
|
||||||
@@ -808,6 +839,7 @@ class ContainerManager:
|
|||||||
def removeImage(self, userID=None, data=None):
|
def removeImage(self, userID=None, data=None):
|
||||||
try:
|
try:
|
||||||
admin = Administrator.objects.get(pk=userID)
|
admin = Administrator.objects.get(pk=userID)
|
||||||
|
|
||||||
if admin.acl.adminStatus != 1:
|
if admin.acl.adminStatus != 1:
|
||||||
return ACLManager.loadError()
|
return ACLManager.loadError()
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,10 @@ class modSec:
|
|||||||
|
|
||||||
mailUtilities.checkHome()
|
mailUtilities.checkHome()
|
||||||
|
|
||||||
|
if ProcessUtilities.decideDistro() == ProcessUtilities.centos:
|
||||||
command = 'sudo yum install ols-modsecurity -y'
|
command = 'sudo yum install ols-modsecurity -y'
|
||||||
|
else:
|
||||||
|
command = 'sudo DEBIAN_FRONTEND=noninteractive apt-get install ols-modsecurity -y'
|
||||||
|
|
||||||
cmd = shlex.split(command)
|
cmd = shlex.split(command)
|
||||||
|
|
||||||
|
|||||||
@@ -599,6 +599,40 @@ WantedBy=multi-user.target"""
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def dockerMigrations():
|
||||||
|
try:
|
||||||
|
connection, cursor = Upgrade.setupConnection('cyberpanel')
|
||||||
|
|
||||||
|
|
||||||
|
query = """CREATE TABLE `dockerManager_containers` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` varchar(50) NOT NULL,
|
||||||
|
`cid` varchar(64) NOT NULL,
|
||||||
|
`image` varchar(50) NOT NULL,
|
||||||
|
`tag` varchar(50) NOT NULL,
|
||||||
|
`memory` int(11) NOT NULL,
|
||||||
|
`ports` longtext NOT NULL,
|
||||||
|
`env` longtext NOT NULL,
|
||||||
|
`startOnReboot` int(11) NOT NULL,
|
||||||
|
`admin_id` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `name` (`name`),
|
||||||
|
KEY `dockerManager_contai_admin_id_58fb62b7_fk_loginSyst` (`admin_id`),
|
||||||
|
CONSTRAINT `dockerManager_contai_admin_id_58fb62b7_fk_loginSyst` FOREIGN KEY (`admin_id`) REFERENCES `loginSystem_administrator` (`id`)
|
||||||
|
)"""
|
||||||
|
try:
|
||||||
|
cursor.execute(query)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
connection.close()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def enableServices():
|
def enableServices():
|
||||||
try:
|
try:
|
||||||
@@ -854,6 +888,7 @@ WantedBy=multi-user.target"""
|
|||||||
|
|
||||||
Upgrade.mailServerMigrations()
|
Upgrade.mailServerMigrations()
|
||||||
Upgrade.emailMarketingMigrationsa()
|
Upgrade.emailMarketingMigrationsa()
|
||||||
|
Upgrade.dockerMigrations()
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
||||||
|
|||||||
BIN
static/images/docker.png
Normal file
BIN
static/images/docker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
@@ -394,6 +394,7 @@ app.controller('servicesManager', function ($scope, $http) {
|
|||||||
|
|
||||||
|
|
||||||
function ListInitialDatas(response) {
|
function ListInitialDatas(response) {
|
||||||
|
console.log(response.data)
|
||||||
|
|
||||||
if (response.data.status.litespeed) {
|
if (response.data.status.litespeed) {
|
||||||
$scope.olsStatus = "Running";
|
$scope.olsStatus = "Running";
|
||||||
@@ -409,8 +410,18 @@ app.controller('servicesManager', function ($scope, $http) {
|
|||||||
$scope.olsStop = false;
|
$scope.olsStop = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update SQL stats
|
if (response.data.status.docker) {
|
||||||
|
$scope.dockerStatus = "Running";
|
||||||
|
$scope.dockerStart = false;
|
||||||
|
$scope.dockerStop = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$scope.dockerStatus = "Stopped";
|
||||||
|
$scope.dockerStart = true;
|
||||||
|
$scope.dockerStop = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update SQL stats
|
||||||
if (response.data.status.mysql) {
|
if (response.data.status.mysql) {
|
||||||
$scope.sqlStatus = "Running";
|
$scope.sqlStatus = "Running";
|
||||||
$scope.sqlStats = true;
|
$scope.sqlStats = true;
|
||||||
@@ -468,7 +479,7 @@ app.controller('servicesManager', function ($scope, $http) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
}
|
||||||
getServiceStatus();
|
getServiceStatus();
|
||||||
|
|
||||||
$scope.serviceAction = function (serviceName, action) {
|
$scope.serviceAction = function (serviceName, action) {
|
||||||
|
|||||||
Reference in New Issue
Block a user