From 51b3c1a2eb87bb114579363e62c3a7d216817e3b Mon Sep 17 00:00:00 2001 From: usmannasir <01-134132-158@student.bahria.edu.pk> Date: Mon, 26 Nov 2018 02:32:30 +0500 Subject: [PATCH] v1.7.4 --- CyberCP/secMiddleware.py | 2 +- api/views.py | 7 +-- cloudAPI/cloudManager.py | 12 +++++- cloudAPI/views.py | 4 ++ ftp/ftpManager.py | 12 ++++-- install/installCyberPanel.py | 44 ++++++++++++++++++- loginSystem/views.py | 5 +-- manageSSL/urls.py | 1 - manageSSL/views.py | 16 +++---- plogical/ftpUtilities.py | 1 - plogical/mailUtilities.py | 8 ++-- plogical/upgrade.py | 83 +++++++++++++++++------------------- 12 files changed, 120 insertions(+), 75 deletions(-) diff --git a/CyberCP/secMiddleware.py b/CyberCP/secMiddleware.py index 3182e5772..5a4488b64 100644 --- a/CyberCP/secMiddleware.py +++ b/CyberCP/secMiddleware.py @@ -10,7 +10,7 @@ class secMiddleware: def __call__(self, request): if request.method == 'POST': try: - logging.writeToFile(request.body) + #logging.writeToFile(request.body) data = json.loads(request.body) for key, value in data.iteritems(): if type(value) == str or type(value) == unicode: diff --git a/api/views.py b/api/views.py index 2600fab74..beebbec53 100644 --- a/api/views.py +++ b/api/views.py @@ -560,7 +560,6 @@ def changeAdminPassword(request): if numberOfAdministrator == 0: ACLManager.createDefaultACLs() acl = ACL.objects.get(name='admin') - token = hashPassword.generateToken('admin', '1234567') email = 'usman@cyberpersons.com' @@ -568,7 +567,7 @@ def changeAdminPassword(request): firstName="Cyber", lastName="Panel", acl=acl, token=token) admin.save() - vers = version(currentVersion="1.7", build=3) + vers = version(currentVersion="1.7", build=4) vers.save() package = Package(admin=admin, packageName="Default", diskSpace=1000, @@ -619,7 +618,6 @@ def changeAdminPassword(request): 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) - os.remove(randomFile) admin = Administrator.objects.get(userName="admin") admin.password = hashPassword.hash_password(adminPass) @@ -635,9 +633,6 @@ def changeAdminPassword(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - - - except BaseException, msg: data_ret = {"changed": 0, 'error_message': str(msg)} diff --git a/cloudAPI/cloudManager.py b/cloudAPI/cloudManager.py index 391d6d0b6..42145f3b0 100644 --- a/cloudAPI/cloudManager.py +++ b/cloudAPI/cloudManager.py @@ -10,7 +10,7 @@ from databases.databaseManager import DatabaseManager from dns.dnsManager import DNSManager from mailServer.mailserverManager import MailServerManager from ftp.ftpManager import FTPManager -from manageSSL.views import issueSSL +from manageSSL.views import issueSSL, obtainHostNameSSL, obtainMailServerSSL from plogical.backupManager import BackupManager import userManagment.views as um from packages.packagesManager import PackagesManager @@ -732,3 +732,13 @@ class CloudManager: return getLogsFromFile(request) except BaseException, msg: return self.ajaxPre(0, str(msg)) + + def serverSSL(self, request): + try: + request.session['userID'] = self.admin.pk + if self.data['type'] == 'hostname': + return obtainHostNameSSL(request) + else: + return obtainMailServerSSL(request) + except BaseException, msg: + return self.ajaxPre(0, str(msg)) diff --git a/cloudAPI/views.py b/cloudAPI/views.py index fe2ff8206..c35156e42 100644 --- a/cloudAPI/views.py +++ b/cloudAPI/views.py @@ -159,6 +159,10 @@ def router(request): return cm.deleteRule() elif controller == 'getLogsFromFile': return cm.getLogsFromFile(request) + elif controller == 'serverSSL': + return cm.serverSSL(request) + else: + return cm.ajaxPre(0, 'This function is not available in your version of CyberPanel.') except BaseException, msg: cm = CloudManager(None) diff --git a/ftp/ftpManager.py b/ftp/ftpManager.py index 8dc4b85f4..5935ef5ab 100644 --- a/ftp/ftpManager.py +++ b/ftp/ftpManager.py @@ -63,7 +63,7 @@ class FTPManager: data = json.loads(self.request.body) userName = data['ftpUserName'] password = data['ftpPassword'] - path = data['path'] + domainName = data['ftpDomain'] try: @@ -73,9 +73,13 @@ class FTPManager: admin = Administrator.objects.get(id=userID) - if len(path) > 0: - pass - else: + try: + path = data['path'] + if len(path) > 0: + pass + else: + path = 'None' + except: path = 'None' execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/ftpUtilities.py" diff --git a/install/installCyberPanel.py b/install/installCyberPanel.py index da5d9edd8..8f0fc36a8 100644 --- a/install/installCyberPanel.py +++ b/install/installCyberPanel.py @@ -332,7 +332,7 @@ class InstallCyberPanel: if res != 0: failed = True else: - command = 'yum -y install lsphp*' + command = 'yum -y groupinstall lsphp-all' cmd = shlex.split(command) res = subprocess.call(cmd) if install.preFlightsChecks.resFailed(self.distro, res): @@ -351,6 +351,48 @@ class InstallCyberPanel: logging.InstallLog.writeToFile("LiteSpeed PHPs successfully installed!") InstallCyberPanel.stdOut("LiteSpeed PHPs successfully installed!") + ## only php 71 + if self.distro == centos: + count = 0 + while (1): + command = 'yum install lsphp71 lsphp71-json lsphp71-xmlrpc lsphp71-xml lsphp71-tidy lsphp71-soap lsphp71-snmp lsphp71-recode lsphp71-pspell lsphp71-process lsphp71-pgsql lsphp71-pear lsphp71-pdo lsphp71-opcache lsphp71-odbc lsphp71-mysqlnd lsphp71-mcrypt lsphp71-mbstring lsphp71-ldap lsphp71-intl lsphp71-imap lsphp71-gmp lsphp71-gd lsphp71-enchant lsphp71-dba lsphp71-common lsphp71-bcmath -y' + cmd = shlex.split(command) + res = subprocess.call(cmd) + if res == 1: + count = count + 1 + InstallCyberPanel.stdOut( + "Trying to install LiteSpeed PHP 7.1, trying again, try number: " + str(count)) + if count == 3: + logging.InstallLog.writeToFile( + "Failed to install LiteSpeed PHP 7.1, exiting installer! [installAllPHPVersions]") + InstallCyberPanel.stdOut("Installation failed, consult: /var/log/installLogs.txt") + os._exit(0) + else: + logging.InstallLog.writeToFile("LiteSpeed PHP 7.1 successfully installed!") + InstallCyberPanel.stdOut("LiteSpeed PHP 7.1 successfully installed!") + break + + ## only php 72 + count = 0 + while (1): + command = 'yum install -y lsphp72 lsphp72-json lsphp72-xmlrpc lsphp72-xml lsphp72-tidy lsphp72-soap lsphp72-snmp lsphp72-recode lsphp72-pspell lsphp72-process lsphp72-pgsql lsphp72-pear lsphp72-pdo lsphp72-opcache lsphp72-odbc lsphp72-mysqlnd lsphp72-mcrypt lsphp72-mbstring lsphp72-ldap lsphp72-intl lsphp72-imap lsphp72-gmp lsphp72-gd lsphp72-enchant lsphp72-dba lsphp72-common lsphp72-bcmath' + cmd = shlex.split(command) + res = subprocess.call(cmd) + if res == 1: + count = count + 1 + InstallCyberPanel.stdOut( + "Trying to install LiteSpeed PHP 7.1, trying again, try number: " + str(count)) + if count == 3: + logging.InstallLog.writeToFile( + "Failed to install LiteSpeed PHP 7.1, exiting installer! [installAllPHPVersions]") + InstallCyberPanel.stdOut( + "Installation failed, consult: /var/log/installLogs.txt") + os._exit(0) + else: + logging.InstallLog.writeToFile("LiteSpeed PHP 7.1 successfully installed!") + InstallCyberPanel.stdOut("LiteSpeed PHP 7.1 successfully installed!") + break + ## break for outer loop break diff --git a/loginSystem/views.py b/loginSystem/views.py index c3323a2e7..5d71d0d63 100644 --- a/loginSystem/views.py +++ b/loginSystem/views.py @@ -143,13 +143,10 @@ def loadLoginPage(request): except KeyError: numberOfAdministrator = Administrator.objects.count() - password = hashPassword.hash_password('1234567') if numberOfAdministrator == 0: - ACLManager.createDefaultACLs() - acl = ACL.objects.get(name='admin') token = hashPassword.generateToken('admin', '1234567') @@ -159,7 +156,7 @@ def loadLoginPage(request): firstName="Cyber",lastName="Panel", acl=acl, token=token) admin.save() - vers = version(currentVersion="1.7",build=3) + vers = version(currentVersion="1.7", build=4) vers.save() package = Package(admin=admin, packageName="Default", diskSpace=1000, diff --git a/manageSSL/urls.py b/manageSSL/urls.py index 02065f33b..01488e1c6 100644 --- a/manageSSL/urls.py +++ b/manageSSL/urls.py @@ -4,7 +4,6 @@ import views urlpatterns = [ url(r'^$', views.loadSSLHome, name='loadSSLHome'), - url(r'^manageSSL', views.manageSSL, name='manageSSL'), url(r'^issueSSL', views.issueSSL, name='issueSSL'), diff --git a/manageSSL/views.py b/manageSSL/views.py index b2b3777a3..ae7c5ef6d 100644 --- a/manageSSL/views.py +++ b/manageSSL/views.py @@ -154,12 +154,12 @@ def obtainHostNameSSL(request): output = subprocess.check_output(shlex.split(execPath)) if output.find("1,None") > -1: - data_ret = {"SSL": 1, + data_ret = {"status": 1, "SSL": 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: - data_ret = {"SSL": 0, + data_ret = {"status": 0, "SSL": 0, 'error_message': output} json_data = json.dumps(data_ret) return HttpResponse(json_data) @@ -167,12 +167,12 @@ def obtainHostNameSSL(request): ## ssl issue ends except BaseException,msg: - data_ret = {"SSL": 0, + data_ret = {"status": 0, "SSL": 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError: - data_ret = {"SSL": 0, + data_ret = {"status": 0, "SSL": 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) @@ -224,12 +224,12 @@ def obtainMailServerSSL(request): output = subprocess.check_output(shlex.split(execPath)) if output.find("1,None") > -1: - data_ret = {"SSL": 1, + data_ret = {"status": 1, "SSL": 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: - data_ret = {"SSL": 0, + data_ret = {"status": 0, "SSL": 0, 'error_message': output} json_data = json.dumps(data_ret) return HttpResponse(json_data) @@ -238,12 +238,12 @@ def obtainMailServerSSL(request): except BaseException,msg: - data_ret = {"SSL": 0, + data_ret = {"status": 0, "SSL": 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError,msg: - data_ret = {"SSL": 0, + data_ret = {"status": 0, "SSL": 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) \ No newline at end of file diff --git a/plogical/ftpUtilities.py b/plogical/ftpUtilities.py index ea5301207..e728e8619 100644 --- a/plogical/ftpUtilities.py +++ b/plogical/ftpUtilities.py @@ -126,7 +126,6 @@ class FTPUtilities: path = path.lstrip("/") if path != 'None': - path = "/home/" + domainName + "/public_html/" + path ## Security Check diff --git a/plogical/mailUtilities.py b/plogical/mailUtilities.py index 901fe128b..fd07f18eb 100644 --- a/plogical/mailUtilities.py +++ b/plogical/mailUtilities.py @@ -313,14 +313,16 @@ milter_default_action = accept def checkHome(): try: try: + FNULL = open(os.devnull, 'w') + command = "sudo mkdir " + mailUtilities.cyberPanelHome - subprocess.call(shlex.split(command)) + subprocess.call(shlex.split(command), stdout=FNULL) command = "sudo chown -R cyberpanel:cyberpanel " + mailUtilities.cyberPanelHome - subprocess.call(shlex.split(command)) + subprocess.call(shlex.split(command), stdout=FNULL) except: command = "sudo chown -R cyberpanel:cyberpanel " + mailUtilities.cyberPanelHome - subprocess.call(shlex.split(command)) + subprocess.call(shlex.split(command), stdout=FNULL) except BaseException,msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [checkHome]") diff --git a/plogical/upgrade.py b/plogical/upgrade.py index e03f80941..f891fbb04 100644 --- a/plogical/upgrade.py +++ b/plogical/upgrade.py @@ -145,16 +145,6 @@ class Upgrade: Upgrade.stdOut(str(msg) + " [setupVirtualEnv]") os._exit(0) - @staticmethod - def upgradeOpenLiteSpeed(): - try: - command = "yum upgrade -y openlitespeed" - if Upgrade.executioner(command) == 1: - Upgrade.stdOut('OpenLiteSpeed Upgraded.') - except OSError, msg: - Upgrade.stdOut(str(msg) + " [upgradeOpenLiteSpeed]") - os._exit(0) - @staticmethod def updateGunicornConf(): try: @@ -204,7 +194,6 @@ WantedBy=multi-user.target""" def fileManager(): ## Copy File manager files - command = "rm -rf /usr/local/lsws/Example/html/FileManager" Upgrade.executioner(command) @@ -319,6 +308,12 @@ WantedBy=multi-user.target""" except: pass + try: + command = "echo 'ALTER TABLE loginSystem_administrator ADD token varchar(500);' | python manage.py dbshell" + subprocess.call(command, shell=True) + except: + pass + try: command = "echo 'ALTER TABLE loginSystem_administrator ADD acl_id integer;' | python manage.py dbshell" subprocess.call(command, shell=True) @@ -448,25 +443,6 @@ WantedBy=multi-user.target""" command = "python manage.py makemigrations emailMarketing" Upgrade.executioner(command) - data = open('/usr/local/CyberCP/emailMarketing/migrations/0001_initial.py', 'r').readline() - writeToFile = open('/usr/local/CyberCP/emailMarketing/migrations/0001_initial.py', 'w') - skipCheck = 0 - - for items in data: - if items.find('dependencies') > -1: - skipCheck = 1 - - if items.find(']') > -1 and skipCheck == 1: - skipCheck = 0 - continue - - if skipCheck == 0: - writeToFile.writelines(items) - - writeToFile.close() - - - command = "python manage.py migrate emailMarketing" Upgrade.executioner(command) except: @@ -498,6 +474,7 @@ WantedBy=multi-user.target""" count = 0 while (1): command = "wget https://cyberpanel.net/CyberPanel." + versionNumbring + #command = "wget https://cyberpanel.net/CyberPanel.1.7.4.tar.gz" res = subprocess.call(shlex.split(command)) if res == 1: @@ -526,6 +503,7 @@ WantedBy=multi-user.target""" count = 1 while (1): + #command = "tar zxf CyberPanel.1.7.4.tar.gz" command = "tar zxf CyberPanel." + versionNumbring res = subprocess.call(shlex.split(command)) @@ -584,10 +562,6 @@ WantedBy=multi-user.target""" ## Move static files Upgrade.staticContent() - - ## Upgrade File Manager - - Upgrade.fileManager() except: pass @@ -733,6 +707,35 @@ WantedBy=multi-user.target""" return 1 + @staticmethod + def fixPermissions(): + try: + + Upgrade.stdOut("Fixing permissions..") + + command = 'chown -R cyberpanel:cyberpanel /usr/local/CyberCP' + cmd = shlex.split(command) + res = subprocess.call(cmd) + + command = 'chown -R cyberpanel:cyberpanel /usr/local/lscp' + cmd = shlex.split(command) + res = subprocess.call(cmd) + + command = 'chown -R lscpd:lscpd /usr/local/lscp/cyberpanel' + cmd = shlex.split(command) + subprocess.call(cmd) + + Upgrade.stdOut("Permissions updated.") + + except OSError, msg: + Upgrade.stdOut(str(msg) + " [fixPermissions]") + return 0 + except ValueError, msg: + Upgrade.stdOut(str(msg) + " [fixPermissions]") + return 0 + + return 1 + @staticmethod def upgrade(): @@ -763,12 +766,8 @@ WantedBy=multi-user.target""" ## Upgrade.installPYDNS() Upgrade.downloadAndUpgrade(Version, versionNumbring) - - ## - Upgrade.installTLDExtract() - ## Upgrade.mailServerMigrations() @@ -784,13 +783,9 @@ WantedBy=multi-user.target""" Upgrade.applyLoginSystemMigrations() Upgrade.enableServices() - ## Upgrade OpenLiteSpeed - - if os.path.exists('/usr/local/lsws/bin/openlitespeed'): - Upgrade.upgradeOpenLiteSpeed() - Upgrade.setupCLI() Upgrade.installLSCPD() + Upgrade.fixPermissions() time.sleep(3) ## Upgrade version @@ -805,6 +800,4 @@ WantedBy=multi-user.target""" Upgrade.stdOut("Upgrade Completed.") - - Upgrade.upgrade()