diff --git a/baseTemplate/templates/baseTemplate/versionManagment.html b/baseTemplate/templates/baseTemplate/versionManagment.html
index 98dc6a244..e3022b7f0 100755
--- a/baseTemplate/templates/baseTemplate/versionManagment.html
+++ b/baseTemplate/templates/baseTemplate/versionManagment.html
@@ -1,6 +1,6 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
-{% block title %}{% trans "Version Management - CyberPanel" %}*{% endblock %}
+{% block title %}{% trans "Version Management - CyberPanel" %}"{% endblock %}
{% block content %}
{% load static %}
@@ -11,9 +11,9 @@
{% trans "Here you can manage versions and check for updates to CyberPanel" %}
{% if Notecheck %}
-
-
{% trans "Note: Latest commit does not match, please upgrade CyberPanel." %}
-
+
+
{% trans "Note: Latest commit does not match, please upgrade CyberPanel." %}
+
{% endif %}
@@ -22,9 +22,38 @@
CyberPanel
-
-
+
+
{% endblock %}
diff --git a/baseTemplate/urls.py b/baseTemplate/urls.py
index b4574ce36..ad11d2197 100755
--- a/baseTemplate/urls.py
+++ b/baseTemplate/urls.py
@@ -2,17 +2,17 @@ from django.conf.urls import url
from . import views
urlpatterns = [
- 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'^$', 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'),
- # Add this URL pattern for 'upgrade_cyberpanel'
- path('upgrade_cyberpanel', views.upgrade_cyberpanel, name='upgrade_cyberpanel'),
+ #url(r'^upgrade',views.upgrade, name='upgrade'),
- path('UpgradeStatus', views.upgradeStatus, name='UpgradeStatus'),
- path('upgradeVersion', views.upgradeVersion, name='upgradeVersion'),
-]
+ url(r'^UpgradeStatus',views.upgradeStatus, name='UpgradeStatus'),
+ url(r'^upgradeVersion',views.upgradeVersion, name='upgradeVersion'),
+
+]
\ No newline at end of file
diff --git a/baseTemplate/views.py b/baseTemplate/views.py
index 1f8cd674d..cecbf13bb 100755
--- a/baseTemplate/views.py
+++ b/baseTemplate/views.py
@@ -1,22 +1,26 @@
# -*- coding: utf-8 -*-
from django.shortcuts import render, redirect
-from django.http import HttpResponse, JsonResponse
+from django.http import HttpResponse
+from plogical.getSystemInformation import SystemInformation
+import json
+from loginSystem.views import loadLoginPage
from .models import version
import requests
import subprocess
import shlex
import os
-import json
-from plogical.getSystemInformation import SystemInformation
-from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
+import 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.
+
VERSION = '2.3'
-BUILD = 4
+BUILD = 3
+
@ensure_csrf_cookie
def renderBase(request):
@@ -27,59 +31,13 @@ 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:
@@ -110,6 +68,7 @@ def getAdminStatus(request):
except KeyError:
return HttpResponse("Can not get admin Status")
+
def getSystemStatus(request):
try:
val = request.session['userID']
@@ -120,6 +79,7 @@ def getSystemStatus(request):
except KeyError:
return HttpResponse("Can not get admin Status")
+
def getLoadAverage(request):
try:
val = request.session['userID']
@@ -135,7 +95,53 @@ 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']
@@ -146,28 +152,38 @@ 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:
@@ -177,13 +193,16 @@ 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})
@@ -193,6 +212,8 @@ 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)
@@ -202,6 +223,7 @@ def upgradeStatus(request):
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
+
def upgradeVersion(request):
try:
vers = version.objects.get(pk=1)
@@ -215,8 +237,10 @@ 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)
@@ -240,8 +264,12 @@ 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
@@ -258,6 +286,7 @@ def design(request):
proc = httpProc(request, template, finalData, 'versionManagement')
return proc.render()
+
def getthemedata(request):
try:
val = request.session['userID']
@@ -269,9 +298,12 @@ 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)
@@ -280,3 +312,4 @@ def getthemedata(request):
final_dic = {'status': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
+