-
{% trans "Version Management" %}
-
{% trans "Here you can manage versions and check for updates to CyberPanel" %}
-
+
+
{% trans "Version Management" %}
+
{% trans "Here you can manage versions and check for updates to CyberPanel" %}
+
+ {% if Notecheck %}
+
{% trans "Note: Latest commit does not match, please upgrade CyberPanel." %}
-
- {% endif %}
-
-
-
-
-
- CyberPanel
-
-
+ {% endif %}
+
+
-
-
-
+
-
{% endblock %}
diff --git a/baseTemplate/urls.py b/baseTemplate/urls.py
index ad11d2197..b4574ce36 100755
--- a/baseTemplate/urls.py
+++ b/baseTemplate/urls.py
@@ -2,17 +2,17 @@
from . import views
urlpatterns = [
- url(r'^$', views.renderBase, name='index'),
- url(r'^getSystemStatus$',views.getSystemStatus, name='getSystemInformation'),
- url(r'^getAdminStatus',views.getAdminStatus, name='getSystemInformation'),
- url(r'^getLoadAverage',views.getLoadAverage, name='getLoadAverage'),
- url(r'^versionManagment',views.versionManagment, name='versionManagment'),
- url(r'^design', views.design, name='design'),
- url(r'^getthemedata', views.getthemedata, name='getthemedata'),
+ path('', views.renderBase, name='index'),
+ path('getSystemStatus', views.getSystemStatus, name='getSystemInformation'),
+ path('getAdminStatus', views.getAdminStatus, name='getSystemInformation'),
+ path('getLoadAverage', views.getLoadAverage, name='getLoadAverage'),
+ path('versionManagment', views.versionManagement, name='versionManagement'),
+ path('design', views.design, name='design'),
+ path('getthemedata', views.getthemedata, name='getthemedata'),
- #url(r'^upgrade',views.upgrade, name='upgrade'),
+ # Add this URL pattern for 'upgrade_cyberpanel'
+ path('upgrade_cyberpanel', views.upgrade_cyberpanel, name='upgrade_cyberpanel'),
- url(r'^UpgradeStatus',views.upgradeStatus, name='UpgradeStatus'),
- url(r'^upgradeVersion',views.upgradeVersion, name='upgradeVersion'),
-
-]
\ No newline at end of file
+ path('UpgradeStatus', views.upgradeStatus, name='UpgradeStatus'),
+ path('upgradeVersion', views.upgradeVersion, name='upgradeVersion'),
+]
diff --git a/baseTemplate/views.py b/baseTemplate/views.py
index 8362cfdc6..cf50e9f56 100755
--- a/baseTemplate/views.py
+++ b/baseTemplate/views.py
@@ -1,27 +1,23 @@
# -*- coding: utf-8 -*-
from django.shortcuts import render, redirect
-from django.http import HttpResponse
-from plogical.getSystemInformation import SystemInformation
-import json
-from loginSystem.views import loadLoginPage
+from django.http import HttpResponse, JsonResponse
from .models import version
import requests
import subprocess
import shlex
import os
-import plogical.CyberCPLogFileWriter as logging
-from plogical.acl import ACLManager
+import json
+from .plogical.getSystemInformation import SystemInformation
+from .plogical.CyberCPLogFileWriter as logging
+from .plogical.acl import ACLManager
from manageServices.models import PDNSStatus
from django.views.decorators.csrf import ensure_csrf_cookie
-from plogical.processUtilities import ProcessUtilities
-from plogical.httpProc import httpProc
-
-# Create your views here.
+from .plogical.processUtilities import ProcessUtilities
+from .plogical.httpProc import httpProc
VERSION = '2.3'
BUILD = 4
-
@ensure_csrf_cookie
def renderBase(request):
template = 'baseTemplate/homePage.html'
@@ -31,13 +27,59 @@ def renderBase(request):
proc = httpProc(request, template, finaData)
return proc.render()
+@ensure_csrf_cookie
+def versionManagement(request):
+ getVersion = requests.get('https://cyberpanel.net/version.txt')
+ latest = getVersion.json()
+ latestVersion = latest['version']
+ latestBuild = latest['build']
+
+ currentVersion = VERSION
+ currentBuild = str(BUILD)
+ u = "https://api.github.com/repos/usmannasir/cyberpanel/commits?sha=v%s.%s" % (latestVersion, latestBuild)
+ logging.CyberCPLogFileWriter.writeToFile(u)
+ r = requests.get(u)
+ latestcomit = r.json()[0]['sha']
+
+ command = "git -C /usr/local/CyberCP/ rev-parse HEAD"
+ output = ProcessUtilities.outputExecutioner(command)
+
+ Currentcomt = output.rstrip("\n")
+ notechk = True
+
+ if Currentcomt == latestcomit:
+ notechk = False
+
+ template = 'baseTemplate/versionManagment.html'
+ finalData = {'build': currentBuild, 'currentVersion': currentVersion, 'latestVersion': latestVersion,
+ 'latestBuild': latestBuild, 'latestcomit': latestcomit, "Currentcomt": Currentcomt, "Notecheck": notechk}
+
+ proc = httpProc(request, template, finalData, 'versionManagement')
+ return proc.render()
+
+@ensure_csrf_cookie
+def upgrade_cyberpanel(request):
+ if request.method == 'POST':
+ try:
+ upgrade_command = 'sh <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh || wget -O - https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh)'
+ result = subprocess.run(upgrade_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
+
+ if result.returncode == 0:
+ response_data = {'success': True, 'message': 'CyberPanel upgrade completed successfully.'}
+ else:
+ response_data = {'success': False, 'message': 'CyberPanel upgrade failed. Error output: ' + result.stderr}
+ except Exception as e:
+ response_data = {'success': False, 'message': 'An error occurred during the upgrade: ' + str(e)}
+
+ return JsonResponse(response_data)
+
+@ensure_csrf_cookie
def getAdminStatus(request):
try:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
-
if os.path.exists('/home/cyberpanel/postfix'):
currentACL['emailAsWhole'] = 1
else:
@@ -68,7 +110,6 @@ def getAdminStatus(request):
except KeyError:
return HttpResponse("Can not get admin Status")
-
def getSystemStatus(request):
try:
val = request.session['userID']
@@ -79,7 +120,6 @@ def getSystemStatus(request):
except KeyError:
return HttpResponse("Can not get admin Status")
-
def getLoadAverage(request):
try:
val = request.session['userID']
@@ -95,53 +135,7 @@ def getLoadAverage(request):
except KeyError:
return HttpResponse("Not allowed.")
-
@ensure_csrf_cookie
-def versionManagment(request):
- ## Get latest version
-
- getVersion = requests.get('https://cyberpanel.net/version.txt')
- latest = getVersion.json()
- latestVersion = latest['version']
- latestBuild = latest['build']
-
- ## Get local version
-
- currentVersion = VERSION
- currentBuild = str(BUILD)
-
- u = "https://api.github.com/repos/usmannasir/cyberpanel/commits?sha=v%s.%s" % (latestVersion, latestBuild)
- logging.CyberCPLogFileWriter.writeToFile(u)
- r = requests.get(u)
- latestcomit = r.json()[0]['sha']
-
- command ="git -C /usr/local/CyberCP/ rev-parse HEAD"
- output = ProcessUtilities.outputExecutioner(command)
-
- Currentcomt = output.rstrip("\n")
- notechk = True
-
- # command ="git fetch -C /usr/local/CyberCP/"
- # output = ProcessUtilities.outputExecutioner(command)
- #
- # command ="git -C /usr/local/CyberCP/ log %s..%s --pretty=oneline | wc -l" % ( Currentcomt, latestcomit)
- # output = ProcessUtilities.outputExecutioner(command)
- #
- # numCommits = output.rstrip("\n")
-
- if(Currentcomt == latestcomit):
- notechk = False
-
-
- template = 'baseTemplate/versionManagment.html'
- finalData = {'build': currentBuild, 'currentVersion': currentVersion, 'latestVersion': latestVersion,
- 'latestBuild': latestBuild, 'latestcomit': latestcomit, "Currentcomt": Currentcomt, "Notecheck" : notechk }
-
-
- proc = httpProc(request, template, finalData, 'versionManagement')
- return proc.render()
-
-
def upgrade(request):
try:
admin = request.session['userID']
@@ -152,38 +146,28 @@ def upgrade(request):
pass
command = 'wget http://cyberpanel.net/upgrade.py'
-
cmd = shlex.split(command)
-
res = subprocess.call(cmd)
vers = version.objects.get(pk=1)
-
from upgrade import Upgrade
-
Upgrade.initiateUpgrade(vers.currentVersion, vers.build)
-
adminData = {"upgrade": 1}
-
json_data = json.dumps(adminData)
-
return HttpResponse(json_data)
-
except KeyError:
adminData = {"upgrade": 1, "error_message": "Please login or refresh this page."}
json_data = json.dumps(adminData)
return HttpResponse(json_data)
-
+@ensure_csrf_cookie
def upgradeStatus(request):
try:
val = request.session['userID']
try:
if request.method == 'POST':
-
path = "/usr/local/lscp/logs/upgradeLog"
-
try:
upgradeLog = open(path, "r").read()
except:
@@ -193,16 +177,13 @@ def upgradeStatus(request):
return HttpResponse(final_json)
if upgradeLog.find("Upgrade Completed") > -1:
-
vers = version.objects.get(pk=1)
getVersion = requests.get('https://cyberpanel.net/version.txt')
latest = getVersion.json()
vers.currentVersion = latest['version']
vers.build = latest['build']
vers.save()
-
os.remove(path)
-
final_json = json.dumps({'finished': 1, 'upgradeStatus': 1,
'error_message': "None",
'upgradeLog': upgradeLog})
@@ -212,8 +193,6 @@ def upgradeStatus(request):
'error_message': "None",
'upgradeLog': upgradeLog})
return HttpResponse(final_json)
-
-
except BaseException as msg:
final_dic = {'upgradeStatus': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
@@ -223,7 +202,6 @@ def upgradeStatus(request):
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
-
def upgradeVersion(request):
try:
vers = version.objects.get(pk=1)
@@ -237,10 +215,8 @@ def upgradeVersion(request):
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
-
@ensure_csrf_cookie
def design(request):
- ### Load Custom CSS
try:
from baseTemplate.models import CyberPanelCosmetic
cosmetic = CyberPanelCosmetic.objects.get(pk=1)
@@ -264,12 +240,8 @@ def design(request):
cosmetic.save()
finalData['saved'] = 1
- ####### Fetch sha...
-
sha_url = "https://api.github.com/repos/usmannasir/CyberPanel-Themes/commits"
-
sha_res = requests.get(sha_url)
-
sha = sha_res.json()[0]['sha']
l = "https://api.github.com/repos/usmannasir/CyberPanel-Themes/git/trees/%s" % sha
@@ -286,7 +258,6 @@ def design(request):
proc = httpProc(request, template, finalData, 'versionManagement')
return proc.render()
-
def getthemedata(request):
try:
val = request.session['userID']
@@ -298,12 +269,9 @@ def getthemedata(request):
else:
return ACLManager.loadErrorJson('reboot', 0)
- #logging.CyberCPLogFileWriter.writeToFile(str(data) + " [themedata]")
-
url = "https://raw.githubusercontent.com/usmannasir/CyberPanel-Themes/main/%s/design.css" % data['Themename']
res = requests.get(url)
-
rsult = res.text
final_dic = {'status': 1, 'csscontent': rsult}
final_json = json.dumps(final_dic)
@@ -312,4 +280,3 @@ def getthemedata(request):
final_dic = {'status': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
-