mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-10-26 15:56:34 +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)
|