diff --git a/baseTemplate/templates/baseTemplate/versionManagment.html b/baseTemplate/templates/baseTemplate/versionManagment.html index a6cefa56b..98dc6a244 100755 --- a/baseTemplate/templates/baseTemplate/versionManagment.html +++ b/baseTemplate/templates/baseTemplate/versionManagment.html @@ -1,87 +1,80 @@ {% extends "baseTemplate/index.html" %} {% load i18n %} -{% block title %}{% trans "Version Management - CyberPanel" %}"{% endblock %} +{% block title %}{% trans "Version Management - CyberPanel" %}*{% endblock %} {% block content %} {% load static %}
-
-

{% trans "Version Management" %}

-

{% trans "Here you can manage versions and check for updates to CyberPanel" %}

-
- {% if Notecheck %} -
+
+

{% 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 -

-
- - -
-
- - -
{{ currentVersion }}
- -
- - - -
- -
{{ build }}
- -
{{ Currentcomt }}
- -
- - - -
- -
{{ latestVersion }}
- - -
- - -
- -
{{ latestBuild }}
- -
{{ latestcomit }}
- -
- - +
+ {% endif %} + +
+
+

+ CyberPanel +

+
+ + {% csrf_token %} + +
-
- -
+
+ +
- - - - - - - - +
-
- - +
+
+

+ CyberPanel +

+
+
+
+ +
{{ currentVersion }}
+
+ +
+ +
{{ build }}
+ +
{{ Currentcomt }}
+
+ +
+ +
{{ latestVersion }}
+
+ +
+ +
{{ latestBuild }}
+ +
{{ latestcomit }}
+
+ +
+
+ +
+
+
+
+
+
- {% 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) -