File manager - Edit - /usr/local/CyberCP/cyberpanel/serverStatus/serverStatusUtil.py
Back
#!/usr/local/CyberCP/bin/python import os,sys import time sys.path.append('/usr/local/CyberCP') import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings") django.setup() import subprocess import shlex import argparse import shutil import plogical.CyberCPLogFileWriter as logging from plogical.processUtilities import ProcessUtilities from websiteFunctions.models import Websites from plogical.virtualHostUtilities import virtualHostUtilities from plogical.sslUtilities import sslUtilities from plogical.vhost import vhost from shutil import ignore_patterns import threading as multi class ServerStatusUtil(multi.Thread): lswsInstallStatusPath = '/home/cyberpanel/switchLSWSStatus' serverRootPath = '/usr/local/lsws/' def __init__(self, key): multi.Thread.__init__(self) self.key = key def run(self): self.switchTOLSWS(self.key) @staticmethod def executioner(command, statusFile): try: if os.path.exists(ProcessUtilities.debugPath): logging.CyberCPLogFileWriter.writeToFile(command) res = subprocess.call(command, stdout=statusFile, stderr=statusFile, shell=True) if res == 1: return 0 else: return 1 except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return 0 @staticmethod def installLiteSpeed(licenseKey, statusFile): try: cwd = os.getcwd() try: command = 'groupadd nobody' ServerStatusUtil.executioner(command, statusFile) except: pass try: command = 'usermod -a -G nobody nobody' ServerStatusUtil.executioner(command, statusFile) except: pass try: command = 'systemctl stop lsws' ServerStatusUtil.executioner(command, statusFile) except: pass from plogical.acl import ACLManager if ACLManager.ISARM(): command = 'wget https://www.litespeedtech.com/packages/6.0/lsws-6.2-ent-aarch64-linux.tar.gz' else: command = 'wget https://www.litespeedtech.com/packages/6.0/lsws-6.2-ent-x86_64-linux.tar.gz' if ServerStatusUtil.executioner(command, statusFile) == 0: return 0 if os.path.exists('/usr/local/CyberCP/lsws-6.0/'): shutil.rmtree('/usr/local/CyberCP/lsws-6.0') if os.path.exists('/usr/local/CyberCP/lsws-6.2/'): shutil.rmtree('/usr/local/CyberCP/lsws-6.2/') if ACLManager.ISARM(): command = 'tar zxf lsws-6.2-ent-aarch64-linux.tar.gz -C /usr/local/CyberCP' else: command = 'tar zxf lsws-6.2-ent-x86_64-linux.tar.gz -C /usr/local/CyberCP' if ServerStatusUtil.executioner(command, statusFile) == 0: return 0 if licenseKey == 'trial': command = 'wget -q --output-document=/usr/local/CyberCP/lsws-6.2/trial.key http://license.litespeedtech.com/reseller/trial.key' if ServerStatusUtil.executioner(command, statusFile) == 0: return 0 else: writeSerial = open('/usr/local/CyberCP/lsws-6.2/serial.no', 'w') writeSerial.writelines(licenseKey) writeSerial.close() shutil.copy('/usr/local/CyberCP/serverStatus/litespeed/install.sh', '/usr/local/CyberCP/lsws-6.2/') shutil.copy('/usr/local/CyberCP/serverStatus/litespeed/functions.sh', '/usr/local/CyberCP/lsws-6.2/') os.chdir('/usr/local/CyberCP/lsws-6.2/') command = 'chmod +x install.sh' if ServerStatusUtil.executioner(command, statusFile) == 0: return 0 command = 'chmod +x functions.sh' if ServerStatusUtil.executioner(command, statusFile) == 0: return 0 command = './install.sh' if ServerStatusUtil.executioner(command, statusFile) == 0: return 0 os.chdir(cwd) confPath = '/usr/local/lsws/conf/' shutil.copy('/usr/local/CyberCP/serverStatus/litespeed/httpd_config.xml', confPath) shutil.copy('/usr/local/CyberCP/serverStatus/litespeed/modsec.conf', confPath) shutil.copy('/usr/local/CyberCP/serverStatus/litespeed/httpd.conf', confPath) try: command = 'chown -R lsadm:lsadm ' + confPath subprocess.call(shlex.split(command)) except: pass try: os.rmdir("/usr/local/CyberCP/lsws-6.2") except: pass files = ['/usr/local/lsws/conf/httpd_config.xml', '/usr/local/lsws/conf/modsec.conf', '/usr/local/lsws/conf/httpd.conf'] for items in files: command = 'chmod 644 %s' % (items) ServerStatusUtil.executioner(command, statusFile) return 1 except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return 0 @staticmethod def setupFileManager(statusFile): try: logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "Setting up Filemanager files..\n") fileManagerPath = ServerStatusUtil.serverRootPath+"FileManager" if os.path.exists(fileManagerPath): shutil.rmtree(fileManagerPath) shutil.copytree("/usr/local/CyberCP/serverStatus/litespeed/FileManager",fileManagerPath) ## remove unnecessary files command = 'chmod -R 777 ' + fileManagerPath if ServerStatusUtil.executioner(command, statusFile) == 0: return 0 logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,"Filemanager files are set!\n") return 1 except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return 0 @staticmethod def recover(): FNULL = open(os.devnull, 'w') if os.path.exists('/usr/local/lsws'): shutil.rmtree('/usr/local/lsws') command = 'mv /usr/local/lswsbak /usr/local/lsws' ServerStatusUtil.executioner(command, FNULL) command = '/usr/local/lsws/bin/openlitespeed' ServerStatusUtil.executioner(command, FNULL) @staticmethod def createWebsite(website): try: virtualHostName = website.domain confPath = vhost.Server_root + "/conf/vhosts/" + virtualHostName FNULL = open(os.devnull, 'w') if not os.path.exists(confPath): command = 'mkdir -p ' + confPath ServerStatusUtil.executioner(command, FNULL) completePathToConfigFile = confPath + "/vhost.conf" if vhost.perHostVirtualConf(completePathToConfigFile, website.adminEmail , website.externalApp, website.phpSelection, virtualHostName, 1) == 1: pass else: return 0 retValues = vhost.createConfigInMainVirtualHostFile(virtualHostName) if retValues[0] == 0: return 0 if os.path.exists('/etc/letsencrypt/live/' + virtualHostName): sslUtilities.installSSLForDomain(virtualHostName, website.adminEmail) vhostPath = vhost.Server_root + "/conf/vhosts" FNULL = open(os.devnull, 'w') command = "chown -R " + "lsadm" + ":" + "lsadm" + " " + vhostPath cmd = shlex.split(command) subprocess.call(cmd, stdout=FNULL, stderr=subprocess.STDOUT) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return 0 @staticmethod def createDomain(website): try: virtualHostName = website.domain confPath = vhost.Server_root + "/conf/vhosts/" + virtualHostName completePathToConfigFile = confPath + "/vhost.conf" confPath = vhost.Server_root + "/conf/vhosts/" + virtualHostName FNULL = open(os.devnull, 'w') if not os.path.exists(confPath): command = 'mkdir -p ' + confPath ServerStatusUtil.executioner(command, FNULL) if vhost.perHostDomainConf(website.path, website.master.domain, virtualHostName, completePathToConfigFile, website.master.adminEmail, website.phpSelection, website.master.externalApp, 1) == 1: pass else: return 0 retValues = vhost.createConfigInMainDomainHostFile(virtualHostName, website.master.domain) if retValues[0] == 0: return 0 if os.path.exists('/etc/letsencrypt/live/' + virtualHostName): sslUtilities.installSSLForDomain(virtualHostName, website.master.adminEmail) vhostPath = vhost.Server_root + "/conf/vhosts" FNULL = open(os.devnull, 'w') command = "chown -R " + "lsadm" + ":" + "lsadm" + " " + vhostPath cmd = shlex.split(command) subprocess.call(cmd, stdout=FNULL, stderr=subprocess.STDOUT) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return 0 @staticmethod def rebuildvConf(): try: allWebsites = Websites.objects.all() for website in allWebsites: logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "Building vhost conf for: " + website.domain + ".\n", 1) if ServerStatusUtil.createWebsite(website) == 0: return 0 childs = website.childdomains_set.all() for child in childs: try: if ServerStatusUtil.createDomain(child) == 0: logging.CyberCPLogFileWriter.writeToFile( 'Error while creating child domain: ' + child.domain) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile( 'Error while creating child domain: ' + child.domain + ' . Exact message: ' + str( msg)) aliases = website.aliasdomains_set.all() for alias in aliases: try: aliasDomain = alias.aliasDomain alias.delete() virtualHostUtilities.createAlias(website.domain, aliasDomain, 0, '/home', website.adminEmail, website.admin) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile( 'Error while creating alais domain: ' + aliasDomain + ' . Exact message: ' + str( msg)) logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "vhost conf successfully built for: " + website.domain + ".\n", 1) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return 0 @staticmethod def switchTOLSWS(licenseKey): try: os.environ['TERM'] = "xterm-256color" statusFile = open(ServerStatusUtil.lswsInstallStatusPath, 'w') FNULL = open(os.devnull, 'w') logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,"Starting conversion process..\n") logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "Removing OpenLiteSpeed..\n", 1) ## Try to stop current LiteSpeed Process ProcessUtilities.killLiteSpeed() if os.path.exists('/usr/local/lsws'): if not os.path.exists('/usr/local/lswsbak'): shutil.copytree('/usr/local/lsws', '/usr/local/lswsbak', symlinks=True, ignore=ignore_patterns('*.sock*')) dirs = os.listdir('/usr/local/lsws') for dir in dirs: if dir.find('lsphp') > -1: continue finalDir = '/usr/local/lsws/' + dir try: shutil.rmtree(finalDir) except: pass if os.path.exists('/etc/redhat-release'): command = 'yum -y erase openlitespeed' else: command = "apt-get -y remove openlitespeed" ServerStatusUtil.executioner(command, statusFile) logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "OpenLiteSpeed removed.\n", 1) logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "Installing LiteSpeed Enterprise Web Server ..\n", 1) if ServerStatusUtil.installLiteSpeed(licenseKey, statusFile) == 0: logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "Failed to install LiteSpeed. [404]", 1) ServerStatusUtil.recover() return 0 logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "LiteSpeed Enterprise Web Server installed.\n", 1) # if ServerStatusUtil.setupFileManager(statusFile) == 0: # logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "Failed to set up File Manager. [404]", 1) # ServerStatusUtil.recover() # return 0 logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "Rebuilding vhost conf..\n", 1) ServerStatusUtil.rebuildvConf() logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "vhost conf successfully built.\n", 1) ProcessUtilities.stopLitespeed() ProcessUtilities.restartLitespeed() ### Check and remove OLS restart if lsws ent detected CentOSPath = '/etc/redhat-release' if os.path.exists(CentOSPath): cronPath = '/var/spool/cron/root' else: cronPath = '/var/spool/cron/crontabs/root' data = open(cronPath, 'r').readlines() writeToFile = open(cronPath, 'w') for items in data: if items.find('-maxdepth 2 -type f -newer') > -1: pass else: writeToFile.writelines(items) writeToFile.close() ### logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,"Successfully switched to LITESPEED ENTERPRISE WEB SERVER. [200]\n", 1) except BaseException as msg: logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, "%s. [404]" % (str(msg)), 1) logging.CyberCPLogFileWriter.writeToFile(str(msg)) ServerStatusUtil.recover() @staticmethod def switchTOLSWSCLI(licenseKey): try: ssu = ServerStatusUtil(licenseKey) ssu.start() while(True): command = 'sudo cat ' + ServerStatusUtil.lswsInstallStatusPath output = ProcessUtilities.outputExecutioner(command) if output.find('[404]') > -1: command = "sudo rm -f " + ServerStatusUtil.lswsInstallStatusPath ProcessUtilities.popenExecutioner(command) data_ret = {'status': 1, 'abort': 1, 'requestStatus': output, 'installed': 0} print(str(data_ret)) return 0 elif output.find('[200]') > -1: command = "sudo rm -f " + ServerStatusUtil.lswsInstallStatusPath ProcessUtilities.popenExecutioner(command) data_ret = {'status': 1, 'abort': 1, 'requestStatus': 'Successfully converted.', 'installed': 1} print(str(data_ret)) return 1 else: data_ret = {'status': 1, 'abort': 0, 'requestStatus': output, 'installed': 0} #print(output) time.sleep(2) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) def main(): parser = argparse.ArgumentParser(description='Server Status Util.') parser.add_argument('function', help='Specific a function to call!') parser.add_argument('--licenseKey', help='LITESPEED ENTERPRISE WEB SERVER License Key') args = parser.parse_args() if args.function == "switchTOLSWS": ServerStatusUtil.switchTOLSWS(args.licenseKey) if __name__ == "__main__": main()
| ver. 1.4 |
Github
|
.
| PHP 8.2.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings