mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-11-03 20:05:58 +01:00 
			
		
		
		
	
		
			
	
	
		
			181 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			181 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/local/CyberCP/bin/python
							 | 
						||
| 
								 | 
							
								import os.path
							 | 
						||
| 
								 | 
							
								import sys
							 | 
						||
| 
								 | 
							
								import django
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from plogical.httpProc import httpProc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								sys.path.append('/usr/local/CyberCP')
							 | 
						||
| 
								 | 
							
								os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
							 | 
						||
| 
								 | 
							
								django.setup()
							 | 
						||
| 
								 | 
							
								from django.http import HttpResponse
							 | 
						||
| 
								 | 
							
								import json
							 | 
						||
| 
								 | 
							
								import plogical.CyberCPLogFileWriter as logging
							 | 
						||
| 
								 | 
							
								from plogical.tuning import tuning
							 | 
						||
| 
								 | 
							
								from loginSystem.views import loadLoginPage
							 | 
						||
| 
								 | 
							
								from plogical.virtualHostUtilities import virtualHostUtilities
							 | 
						||
| 
								 | 
							
								from plogical.acl import ACLManager
							 | 
						||
| 
								 | 
							
								from plogical.processUtilities import ProcessUtilities
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class tuningManager:
							 | 
						||
| 
								 | 
							
								    def loadTuningHome(self, request, userID):
							 | 
						||
| 
								 | 
							
								        proc = httpProc(request, 'tuning/index.html',
							 | 
						||
| 
								 | 
							
								                        None, 'admin')
							 | 
						||
| 
								 | 
							
								        return proc.render()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def liteSpeedTuning(self, request, userID):
							 | 
						||
| 
								 | 
							
								        proc = httpProc(request, 'tuning/liteSpeedTuning.html',
							 | 
						||
| 
								 | 
							
								                        None, 'admin')
							 | 
						||
| 
								 | 
							
								        return proc.render()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def phpTuning(self, request, userID):
							 | 
						||
| 
								 | 
							
								        currentACL = ACLManager.loadedACL(userID)
							 | 
						||
| 
								 | 
							
								        if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
							 | 
						||
| 
								 | 
							
								            websitesName = ACLManager.findAllSites(currentACL, userID)
							 | 
						||
| 
								 | 
							
								            OLS = 1
							 | 
						||
| 
								 | 
							
								            proc = httpProc(request, 'tuning/phpTuning.html',
							 | 
						||
| 
								 | 
							
								                            {'websiteList': websitesName, 'OLS': OLS}, 'admin')
							 | 
						||
| 
								 | 
							
								            return proc.render()
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            OLS = 0
							 | 
						||
| 
								 | 
							
								            proc = httpProc(request, 'tuning/phpTuning.html',
							 | 
						||
| 
								 | 
							
								                            {'OLS': OLS}, 'admin')
							 | 
						||
| 
								 | 
							
								            return proc.render()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def tuneLitespeed(self, userID, data):
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            currentACL = ACLManager.loadedACL(userID)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if currentACL['admin'] == 1:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                return ACLManager.loadError()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            status = data['status']
							 | 
						||
| 
								 | 
							
								            if status == "fetch":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                json_data = json.dumps(tuning.fetchTuningDetails())
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                data_ret = {'fetch_status': 1, 'error_message': "None", "tuning_data": json_data,
							 | 
						||
| 
								 | 
							
								                            'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                if data.get('maxConn') is None:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 1, 'error_message': "Provide Max Connections", 'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if data.get('maxSSLConn') is None:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 1, 'error_message': "Provide Max SSL Connections",
							 | 
						||
| 
								 | 
							
								                                'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if data.get('keepAlive') is None:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 1, 'error_message': "Provide Keep Alive", 'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if data.get('inMemCache') is None:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 1, 'error_message': "Provide Cache Size in memory",
							 | 
						||
| 
								 | 
							
								                                'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if not data.get('gzipCompression'):
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 1, 'error_message': "Provide Enable GZIP Compression",
							 | 
						||
| 
								 | 
							
								                                'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                maxConn = str(data['maxConn'])
							 | 
						||
| 
								 | 
							
								                maxSSLConn = str(data['maxSSLConn'])
							 | 
						||
| 
								 | 
							
								                connTime = str(data['connTime'])
							 | 
						||
| 
								 | 
							
								                keepAlive = str(data['keepAlive'])
							 | 
						||
| 
								 | 
							
								                inMemCache = str(data['inMemCache'])
							 | 
						||
| 
								 | 
							
								                gzipCompression = data['gzipCompression']
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/tuning.py"
							 | 
						||
| 
								 | 
							
								                execPath = execPath + " saveTuningDetails --maxConn " + maxConn + " --maxSSLConn " + maxSSLConn + " --connTime " + connTime + " --keepAlive " + keepAlive + " --inMemCache '" + inMemCache + "' --gzipCompression " + gzipCompression
							 | 
						||
| 
								 | 
							
								                output = ProcessUtilities.outputExecutioner(execPath)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if output.find("1,None") > -1:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 1, 'error_message': "None", 'tuneStatus': 1}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 1, 'error_message': "None", 'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        except BaseException as msg:
							 | 
						||
| 
								 | 
							
								            data_ret = {'fetch_status': 0, 'error_message': str(msg), 'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								            json_data = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								            return HttpResponse(json_data)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def tunePHP(self, userID, data):
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            currentACL = ACLManager.loadedACL(userID)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if currentACL['admin'] == 1:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                return ACLManager.loadError()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            status = data['status']
							 | 
						||
| 
								 | 
							
								            domainSelection = data.get('domainSelection')
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            # Check if domainSelection is None or 'null' string
							 | 
						||
| 
								 | 
							
								            if domainSelection is None or domainSelection == 'null' or domainSelection == '':
							 | 
						||
| 
								 | 
							
								                data_ret = {'fetch_status': 0, 'error_message': "Please select a domain/PHP version first", 'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            domainSelection = str(domainSelection)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if status == "fetch":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                json_data = json.dumps(tuning.fetchPHPDetails(domainSelection))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                data_ret = {'fetch_status': 1, 'error_message': "None", "tuning_data": json_data,
							 | 
						||
| 
								 | 
							
								                            'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                initTimeout = str(data['initTimeout'])
							 | 
						||
| 
								 | 
							
								                maxConns = str(data['maxConns'])
							 | 
						||
| 
								 | 
							
								                memSoftLimit = data['memSoftLimit']
							 | 
						||
| 
								 | 
							
								                memHardLimit = data['memHardLimit']
							 | 
						||
| 
								 | 
							
								                procSoftLimit = str(data['procSoftLimit'])
							 | 
						||
| 
								 | 
							
								                procHardLimit = str(data['procHardLimit'])
							 | 
						||
| 
								 | 
							
								                persistConn = data['persistConn']
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/tuning.py"
							 | 
						||
| 
								 | 
							
								                execPath = execPath + " tunePHP --virtualHost " + domainSelection + " --initTimeout " + initTimeout + " --maxConns " + maxConns + " --memSoftLimit " + memSoftLimit + " --memHardLimit '" + memHardLimit + "' --procSoftLimit " + procSoftLimit + " --procHardLimit " + procHardLimit + " --persistConn " + persistConn
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                output = ProcessUtilities.outputExecutioner(execPath)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if output.find("1,None") > -1:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'tuneStatus': 1, 'fetch_status': 0, 'error_message': "None"}
							 | 
						||
| 
								 | 
							
								                    final_json = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(final_json)
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    data_ret = {'fetch_status': 0, 'error_message': output, 'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								                    logging.CyberCPLogFileWriter.writeToFile(output + " [tunePHP]]")
							 | 
						||
| 
								 | 
							
								                    json_data = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								                    return HttpResponse(json_data)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        except BaseException as msg:
							 | 
						||
| 
								 | 
							
								            data_ret = {'fetch_status': 0, 'error_message': str(msg), 'tuneStatus': 0}
							 | 
						||
| 
								 | 
							
								            logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [tunePHP]]")
							 | 
						||
| 
								 | 
							
								            json_data = json.dumps(data_ret)
							 | 
						||
| 
								 | 
							
								            return HttpResponse(json_data)
							 |