mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-10-26 07:46:35 +01:00
424 lines
18 KiB
Python
424 lines
18 KiB
Python
import sys
|
|
sys.path.append('/usr/local/CyberCP')
|
|
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
|
|
from plogical.installUtilities import installUtilities
|
|
import argparse
|
|
from plogical.processUtilities import ProcessUtilities
|
|
from xml.etree import ElementTree
|
|
|
|
class tuning:
|
|
|
|
|
|
@staticmethod
|
|
def fetchTuningDetails():
|
|
if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
|
|
try:
|
|
dataToReturn = {}
|
|
command = "sudo cat /usr/local/lsws/conf/httpd_config.conf"
|
|
datas = ProcessUtilities.outputExecutioner(command).split("\n")
|
|
|
|
for items in datas:
|
|
if items.find("maxConnections")>-1:
|
|
data = items.split()
|
|
dataToReturn['maxConnections'] = data[1]
|
|
|
|
if items.find("maxSSLConnections") > -1:
|
|
data = items.split()
|
|
dataToReturn['maxSSLConnections'] = data[1]
|
|
|
|
if items.find("connTimeout") > -1:
|
|
data = items.split()
|
|
dataToReturn['connTimeout'] = data[1]
|
|
|
|
|
|
if items.find("maxConnections")>-1:
|
|
data = items.split()
|
|
dataToReturn['maxConnections'] = data[1]
|
|
|
|
if items.find("keepAliveTimeout") > -1:
|
|
data = items.split()
|
|
dataToReturn['keepAliveTimeout'] = data[1]
|
|
|
|
|
|
if items.find("totalInMemCacheSize") > -1:
|
|
data = items.split()
|
|
dataToReturn['totalInMemCacheSize'] = data[1]
|
|
|
|
if items.find("enableGzipCompress") > -1:
|
|
data = items.split()
|
|
dataToReturn['enableGzipCompress'] = data[1]
|
|
|
|
return dataToReturn
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [fetchTuningDetails]")
|
|
return 0
|
|
else:
|
|
try:
|
|
dataToReturn = {}
|
|
|
|
command = "sudo cat /usr/local/lsws/conf/httpd_config.xml"
|
|
datas = ProcessUtilities.outputExecutioner(command)
|
|
comTree = ElementTree.fromstring(datas)
|
|
tuningData = comTree.find('tuning')
|
|
|
|
dataToReturn['maxConnections'] = tuningData.find('maxConnections').text
|
|
dataToReturn['maxSSLConnections'] = tuningData.find('maxSSLConnections').text
|
|
dataToReturn['connTimeout'] = tuningData.find('connTimeout').text
|
|
dataToReturn['keepAliveTimeout'] = tuningData.find('keepAliveTimeout').text
|
|
dataToReturn['totalInMemCacheSize'] = tuningData.find('totalInMemCacheSize').text
|
|
dataToReturn['enableGzipCompress'] = tuningData.find('enableGzipCompress').text
|
|
|
|
return dataToReturn
|
|
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [fetchTuningDetails]")
|
|
return 0
|
|
|
|
|
|
@staticmethod
|
|
def saveTuningDetails(maxConnections,maxSSLConnections,connectionTimeOut,keepAliveTimeOut,cacheSizeInMemory,gzipCompression):
|
|
if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
|
|
try:
|
|
datas = open("/usr/local/lsws/conf/httpd_config.conf").readlines()
|
|
writeDataToFile = open("/usr/local/lsws/conf/httpd_config.conf","w")
|
|
|
|
if gzipCompression == "Enable":
|
|
gzip = 1
|
|
else:
|
|
gzip = 0
|
|
|
|
|
|
for items in datas:
|
|
if items.find("maxConnections") > -1:
|
|
data = " maxConnections "+str(maxConnections)+"\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("maxSSLConnections") > -1:
|
|
data = " maxSSLConnections "+str(maxSSLConnections) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("connTimeout") > -1:
|
|
data =" connTimeout "+str(connectionTimeOut)+"\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("keepAliveTimeout") > -1:
|
|
data = " keepAliveTimeout " + str(keepAliveTimeOut) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("totalInMemCacheSize") > -1:
|
|
data = " totalInMemCacheSize " + str(cacheSizeInMemory) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("enableGzipCompress") > -1:
|
|
data = " enableGzipCompress " + str(gzip) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
else:
|
|
writeDataToFile.writelines(items)
|
|
|
|
writeDataToFile.close()
|
|
|
|
print("1,None")
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [saveTuningDetails]")
|
|
print("0," + str(msg))
|
|
else:
|
|
try:
|
|
datas = open("/usr/local/lsws/conf/httpd_config.xml").readlines()
|
|
writeDataToFile = open("/usr/local/lsws/conf/httpd_config.xml", "w")
|
|
|
|
if gzipCompression == "Enable":
|
|
gzip = 1
|
|
else:
|
|
gzip = 0
|
|
|
|
for items in datas:
|
|
if items.find("maxConnections") > -1:
|
|
data = " <maxConnections>" + str(maxConnections) + "</maxConnections>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("maxSSLConnections") > -1:
|
|
data = " <maxSSLConnections>" + str(maxSSLConnections) + "</maxSSLConnections>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<connTimeout>") > -1:
|
|
data = " <connTimeout>" + str(connectionTimeOut) + "</connTimeout>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<keepAliveTimeout>") > -1:
|
|
data = " <keepAliveTimeout>" + str(keepAliveTimeOut) + "</keepAliveTimeout>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<totalInMemCacheSize>") > -1:
|
|
data = " <totalInMemCacheSize>" + str(cacheSizeInMemory) + "</totalInMemCacheSize>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<enableGzipCompress>") > -1:
|
|
data = " <enableGzipCompress>" + str(gzip) + "</enableGzipCompress>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
else:
|
|
writeDataToFile.writelines(items)
|
|
writeDataToFile.close()
|
|
print("1,None")
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [saveTuningDetails]")
|
|
print("0," + str(msg))
|
|
|
|
|
|
@staticmethod
|
|
def fetchPHPDetails(virtualHost):
|
|
if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
|
|
try:
|
|
path = installUtilities.Server_root_path + "/conf/vhosts/"+virtualHost+"/vhost.conf"
|
|
|
|
command = "sudo cat "+path
|
|
datas = ProcessUtilities.outputExecutioner(command).split("\n")
|
|
|
|
dataToReturn = {}
|
|
|
|
for items in datas:
|
|
if items.find("maxConns")>-1:
|
|
data = items.split()
|
|
dataToReturn['maxConns'] = data[1]
|
|
|
|
if items.find("initTimeout") > -1:
|
|
data = items.split()
|
|
dataToReturn['initTimeout'] = data[1]
|
|
|
|
if items.find("persistConn") > -1:
|
|
data = items.split()
|
|
dataToReturn['persistConn'] = data[1]
|
|
|
|
|
|
if items.find("memSoftLimit")>-1:
|
|
data = items.split()
|
|
dataToReturn['memSoftLimit'] = data[1]
|
|
|
|
if items.find("memHardLimit") > -1:
|
|
data = items.split()
|
|
dataToReturn['memHardLimit'] = data[1]
|
|
|
|
|
|
if items.find("procSoftLimit") > -1:
|
|
data = items.split()
|
|
dataToReturn['procSoftLimit'] = data[1]
|
|
|
|
if items.find("procHardLimit") > -1:
|
|
data = items.split()
|
|
dataToReturn['procHardLimit'] = data[1]
|
|
|
|
return dataToReturn
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [fetchPHPDetails]")
|
|
return 0
|
|
else:
|
|
try:
|
|
command = "sudo cat /usr/local/lsws/conf/httpd_config.xml"
|
|
datas = ProcessUtilities.outputExecutioner(command)
|
|
comTree = ElementTree.fromstring(datas)
|
|
extProcessorList = comTree.findall('extProcessorList/extProcessor')
|
|
|
|
dataToReturn = {}
|
|
|
|
for extProcessor in extProcessorList:
|
|
if extProcessor.find('name').text == virtualHost:
|
|
dataToReturn['maxConns'] = extProcessor.find('maxConns').text
|
|
dataToReturn['initTimeout'] = extProcessor.find('initTimeout').text
|
|
dataToReturn['persistConn'] = extProcessor.find('persistConn').text
|
|
dataToReturn['memSoftLimit'] = extProcessor.find('memSoftLimit').text
|
|
dataToReturn['memHardLimit'] = extProcessor.find('memHardLimit').text
|
|
dataToReturn['procSoftLimit'] = extProcessor.find('procSoftLimit').text
|
|
dataToReturn['procHardLimit'] = extProcessor.find('procHardLimit').text
|
|
break
|
|
|
|
return dataToReturn
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [fetchPHPDetails]")
|
|
return 0
|
|
|
|
@staticmethod
|
|
def tunePHP(virtualHost,maxConns,initTimeout,persistConn,memSoftLimit,memHardLimit,procSoftLimit,procHardLimit):
|
|
if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
|
|
try:
|
|
path = installUtilities.Server_root_path + "/conf/vhosts/" + virtualHost + "/vhost.conf"
|
|
datas = open(path).readlines()
|
|
|
|
writeDataToFile = open(path,"w")
|
|
|
|
|
|
for items in datas:
|
|
if items.find("maxConns") > -1:
|
|
data = " maxConns "+str(maxConns)+"\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("initTimeout") > -1:
|
|
data = " initTimeout "+str(initTimeout) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("memSoftLimit") > -1:
|
|
data =" memSoftLimit "+str(memSoftLimit)+"\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("memHardLimit") > -1:
|
|
data = " memHardLimit " + str(memHardLimit) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("procSoftLimit") > -1:
|
|
data = " procSoftLimit " + str(procSoftLimit) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("procHardLimit") > -1:
|
|
data = " procHardLimit " + str(procHardLimit) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
elif items.find("persistConn") > -1:
|
|
if persistConn == "Enable":
|
|
persist = 1
|
|
else:
|
|
persist = 0
|
|
|
|
|
|
data = " persistConn " + str(persist) + "\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
else:
|
|
writeDataToFile.writelines(items)
|
|
|
|
writeDataToFile.close()
|
|
|
|
print("1,None")
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [saveTuningDetails]")
|
|
print("0,"+str(msg))
|
|
else:
|
|
try:
|
|
path = "/usr/local/lsws/conf/httpd_config.xml"
|
|
datas = open(path).readlines()
|
|
|
|
writeDataToFile = open(path, "w")
|
|
activate = 0
|
|
|
|
for items in datas:
|
|
if items.find(virtualHost) > -1:
|
|
writeDataToFile.writelines(items)
|
|
activate = 1
|
|
continue
|
|
|
|
elif activate == 1:
|
|
if items.find('</extProcessor>') > -1:
|
|
writeDataToFile.writelines(items)
|
|
activate = 0
|
|
continue
|
|
if items.find("<maxConns>") > -1:
|
|
data = " <maxConns>" + str(maxConns) + "</maxConns>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<initTimeout>") > -1:
|
|
data = " <initTimeout>" + str(initTimeout) + "</initTimeout>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("memSoftLimit") > -1:
|
|
data = " <memSoftLimit>" + str(memSoftLimit) + "</memSoftLimit>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<memHardLimit>") > -1:
|
|
data = " <memHardLimit>" + str(memHardLimit) + "</memHardLimit>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<procSoftLimit>") > -1:
|
|
data = " <procSoftLimit>" + str(procSoftLimit) + "</procSoftLimit>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
|
|
elif items.find("<procHardLimit>") > -1:
|
|
data = " <procHardLimit>" + str(procHardLimit) + "</procHardLimit>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
elif items.find("<persistConn>") > -1:
|
|
if persistConn == "Enable":
|
|
persist = 1
|
|
else:
|
|
persist = 0
|
|
|
|
data = " <persistConn>" + str(persist) + "</persistConn>\n"
|
|
writeDataToFile.writelines(data)
|
|
continue
|
|
else:
|
|
writeDataToFile.writelines(items)
|
|
else:
|
|
writeDataToFile.writelines(items)
|
|
|
|
writeDataToFile.close()
|
|
|
|
print("1,None")
|
|
|
|
except BaseException as msg:
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
str(msg) + " [saveTuningDetails]")
|
|
print("0," + str(msg))
|
|
|
|
def main():
|
|
|
|
parser = argparse.ArgumentParser(description='CyberPanel Installer')
|
|
parser.add_argument('function', help='Specific a function to call!')
|
|
parser.add_argument('--virtualHost', help='Domain name!')
|
|
parser.add_argument('--maxConns', help='Max Connections for PHP!')
|
|
parser.add_argument('--initTimeout', help='Initial Request Timeout (secs) for PHP!')
|
|
parser.add_argument("--persistConn", help="Persistent Connection for PHP!")
|
|
parser.add_argument("--memSoftLimit", help="Memory Soft Limit (bytes) for PHP!")
|
|
parser.add_argument("--memHardLimit", help="Memory Hard Limit (bytes) for PHP!")
|
|
parser.add_argument("--procSoftLimit", help="Process Soft Limit for PHP!")
|
|
parser.add_argument("--procHardLimit", help="Process Hard Limit for PHP!")
|
|
|
|
## Litespeed Tuning Arguments
|
|
|
|
parser.add_argument("--maxConn", help="Max Connections for LiteSpeed!")
|
|
parser.add_argument("--maxSSLConn", help="Max SSL Connections for LiteSpeed!")
|
|
parser.add_argument("--connTime", help="Connection Timeout (secs) for LiteSpeed!")
|
|
parser.add_argument("--keepAlive", help="Keep-Alive Timeout (secs) for LiteSpeed!")
|
|
parser.add_argument("--inMemCache", help="Total Small File Cache Size (bytes) for LiteSpeed!")
|
|
parser.add_argument("--gzipCompression", help="Enable disable GZIP Compression for LiteSpeed!")
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.function == "tunePHP":
|
|
tuning.tunePHP(args.virtualHost, args.maxConns, args.initTimeout, args.persistConn, args.memSoftLimit, args.memHardLimit, args.procSoftLimit,
|
|
args.procHardLimit)
|
|
elif args.function == "saveTuningDetails":
|
|
tuning.saveTuningDetails(args.maxConn, args.maxSSLConn, args.connTime, args.keepAlive, args.inMemCache, args.gzipCompression)
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|