From 683ada6f01eaf86a4b9a22d12d8176723bb26782 Mon Sep 17 00:00:00 2001 From: Usman Nasir Date: Sun, 27 Oct 2019 18:08:10 +0500 Subject: [PATCH] email forwarding: structure for pipe to program --- .idea/workspace.xml | 444 +- CyberCP/settings.py | 1 + locale/br/LC_MESSAGES/django.mo | Bin 77824 -> 77444 bytes locale/br/LC_MESSAGES/django.po | 1122 +-- locale/bs/LC_MESSAGES/django.po | 1138 +-- locale/cn/LC_MESSAGES/django.mo | Bin 36805 -> 36541 bytes locale/cn/LC_MESSAGES/django.po | 1126 +-- locale/de/LC_MESSAGES/django.mo | Bin 0 -> 88735 bytes locale/de/LC_MESSAGES/django.po | 6728 +++++++++++++++++ locale/es/LC_MESSAGES/django.po | 1131 +-- locale/fr/LC_MESSAGES/django.mo | Bin 63944 -> 63631 bytes locale/fr/LC_MESSAGES/django.po | 1128 +-- locale/gr/LC_MESSAGES/django.mo | Bin 55167 -> 54774 bytes locale/gr/LC_MESSAGES/django.po | 1144 +-- locale/id/LC_MESSAGES/django.mo | Bin 373 -> 76639 bytes locale/id/LC_MESSAGES/django.po | 3566 +++++---- locale/it/LC_MESSAGES/django.mo | Bin 57230 -> 56784 bytes locale/it/LC_MESSAGES/django.po | 1135 +-- locale/ja/LC_MESSAGES/django.mo | Bin 76259 -> 89637 bytes locale/ja/LC_MESSAGES/django.po | 1792 ++--- locale/pl/LC_MESSAGES/django.mo | Bin 69417 -> 89085 bytes locale/pl/LC_MESSAGES/django.po | 2099 +++-- locale/pt/LC_MESSAGES/django.mo | Bin 37542 -> 57033 bytes locale/pt/LC_MESSAGES/django.po | 2187 +++--- locale/ru/LC_MESSAGES/django.mo | Bin 55253 -> 54896 bytes locale/ru/LC_MESSAGES/django.po | 1135 +-- locale/tr/LC_MESSAGES/django.mo | Bin 45129 -> 44860 bytes locale/tr/LC_MESSAGES/django.po | 1132 +-- locale/vi/LC_MESSAGES/django.mo | Bin 70903 -> 70563 bytes locale/vi/LC_MESSAGES/django.po | 1121 +-- loginSystem/templates/loginSystem/login.html | 152 +- loginSystem/views.py | 5 + mailServer/mailserverManager.py | 118 +- mailServer/models.py | 5 + mailServer/static/mailServer/mailServer.js | 3 + .../templates/mailServer/emailForwarding.html | 14 +- plogical/csf.py | 27 +- plogical/virtualHostUtilities.py | 131 +- websiteFunctions/website.py | 8 +- 39 files changed, 19027 insertions(+), 9565 deletions(-) create mode 100644 locale/de/LC_MESSAGES/django.mo create mode 100644 locale/de/LC_MESSAGES/django.po diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 777004f9b..2bf26a3d5 100755 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -28,39 +28,60 @@ - + - - + + - - + + + - - - - - - - - - - + - - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + @@ -73,25 +94,6 @@ - externalApp - restoreDatabaseBackup - logging.writeToFile - build=0 - version.txt - logging - Incremen - restoreDatabase - 1.9.0 - /usr/local/CyberCP/public/rainloop/rainloop/v/1.12.1/include.php - CLManager - IncBackups - chmod - stat. - destination - downloadAndUpgrade - /usr/local/CyberCP - os.remove - shutil.rmtree setupVirtualEnv python setupDKIM @@ -103,6 +105,25 @@ addRule firewalld normal + Removing OpenLiteSpeed.. + def decideServer( + mirror.cyberpanel.net + http + loginAPI + verify + verifylogins + https + kvm + openvz + virtualenv + createWebsiteAPI + selectedEmail + emailForwarding + emailFor + selectForwardingEmail + getEmailsForDomain + submitForwardDeletion + forwardEmail admin.api == 1 @@ -118,6 +139,8 @@ self.website statusPath cyberpanelLoading + cyberpanel.sh + https $PROJECT_DIR$/backup @@ -131,12 +154,6 @@ - @@ -206,7 +229,7 @@ - + + @@ -113,45 +164,50 @@
- +
- +
- + + + + + + + + + + + + + + +
- +

Could Not Login, Error message: {$ errorMessage $}

+
- - @@ -160,7 +216,7 @@ - + diff --git a/loginSystem/views.py b/loginSystem/views.py index 8774ecb4d..18c3e2da8 100755 --- a/loginSystem/views.py +++ b/loginSystem/views.py @@ -106,6 +106,11 @@ def verifyLogin(request): request.session[LANGUAGE_SESSION_KEY] = user_Language request.COOKIES['django_language'] = user_Language settings.LANGUAGE_CODE = user_Language + elif data['languageSelection'] == "German": + user_Language = "de" + request.session[LANGUAGE_SESSION_KEY] = user_Language + request.COOKIES['django_language'] = user_Language + settings.LANGUAGE_CODE = user_Language except: request.session[LANGUAGE_SESSION_KEY] = "en" request.COOKIES['django_language'] = "en" diff --git a/mailServer/mailserverManager.py b/mailServer/mailserverManager.py index 3b968fdbd..9a0cd8345 100755 --- a/mailServer/mailserverManager.py +++ b/mailServer/mailserverManager.py @@ -18,7 +18,7 @@ from plogical.mailUtilities import mailUtilities import thread from dns.models import Domains as dnsDomains from dns.models import Records as dnsRecords -from mailServer.models import Forwardings +from mailServer.models import Forwardings, Pipeprograms from plogical.acl import ACLManager import os from plogical.dnsUtilities import DNS @@ -255,40 +255,69 @@ class MailServerManager: data = json.loads(self.request.body) emailAddress = data['emailAddress'] + forwardingOption = data['forwardingOption'] - eUser = EUsers.objects.get(email=emailAddress) + if forwardingOption != "Pipe to program": + eUser = EUsers.objects.get(email=emailAddress) - admin = Administrator.objects.get(pk=userID) - if ACLManager.checkOwnership(eUser.emailOwner.domainOwner.domain, admin, currentACL) == 1: - pass - else: - return ACLManager.loadErrorJson() - - currentForwardings = Forwardings.objects.filter(source=emailAddress) - - json_data = "[" - checker = 0 - id = 1 - for items in currentForwardings: - if items.source == items.destination: - continue - dic = {'id': id, - 'source': items.source, - 'destination': items.destination} - - id = id + 1 - - if checker == 0: - json_data = json_data + json.dumps(dic) - checker = 1 + admin = Administrator.objects.get(pk=userID) + if ACLManager.checkOwnership(eUser.emailOwner.domainOwner.domain, admin, currentACL) == 1: + pass else: - json_data = json_data + ',' + json.dumps(dic) + return ACLManager.loadErrorJson() - json_data = json_data + ']' - final_dic = {'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data} - final_json = json.dumps(final_dic) + currentForwardings = Forwardings.objects.filter(source=emailAddress) - return HttpResponse(final_json) + json_data = "[" + checker = 0 + id = 1 + for items in currentForwardings: + if items.source == items.destination: + continue + dic = {'id': id, + 'source': items.source, + 'destination': items.destination} + + id = id + 1 + + if checker == 0: + json_data = json_data + json.dumps(dic) + checker = 1 + else: + json_data = json_data + ',' + json.dumps(dic) + + json_data = json_data + ']' + final_dic = {'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data} + final_json = json.dumps(final_dic) + + return HttpResponse(final_json) + else: + + currentForwardings = Pipeprograms.objects.filter(source=emailAddress) + + json_data = "[" + checker = 0 + id = 1 + for items in currentForwardings: + if items.source == items.destination: + continue + dic = {'id': id, + 'source': items.source, + 'destination': items.destination} + + id = id + 1 + + if checker == 0: + json_data = json_data + json.dumps(dic) + checker = 1 + else: + json_data = json_data + ',' + json.dumps(dic) + + json_data = json_data + ']' + final_dic = {'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data} + final_json = json.dumps(final_dic) + + return HttpResponse(final_json) except BaseException, msg: @@ -306,6 +335,7 @@ class MailServerManager: data = json.loads(self.request.body) destination = data['destination'] source = data['source'] + forwardingOption = data['forwardingOption'] eUser = EUsers.objects.get(email=source) @@ -315,8 +345,15 @@ class MailServerManager: else: return ACLManager.loadErrorJson() - for items in Forwardings.objects.filter(destination=destination, source=source): - items.delete() + if forwardingOption == 'Forward to email': + for items in Forwardings.objects.filter(destination=destination, source=source): + items.delete() + else: + for items in Pipeprograms.objects.filter(destination=destination, source=source): + items.delete() + + ### Michael Ramsey + ## Treat your path deletion code here. data_ret = {'status': 1, 'deleteForwardingStatus': 1, 'error_message': "None", 'successMessage': 'Successfully deleted!'} @@ -338,6 +375,7 @@ class MailServerManager: data = json.loads(self.request.body) source = data['source'] destination = data['destination'] + forwardingOption = data['forwardingOption'] eUser = EUsers.objects.get(email=source) @@ -353,12 +391,19 @@ class MailServerManager: json_data = json.dumps(data_ret) return HttpResponse(json_data) - if Forwardings.objects.filter(source=source).count() == 0: - forwarding = Forwardings(source=source, destination=source) + if forwardingOption == 'Forward to email': + if Forwardings.objects.filter(source=source).count() == 0: + forwarding = Forwardings(source=source, destination=source) + forwarding.save() + + forwarding = Forwardings(source=source, destination=destination) + forwarding.save() + else: + forwarding = Pipeprograms(source=source, destination=destination) forwarding.save() - forwarding = Forwardings(source=source, destination=destination) - forwarding.save() + ### Michael Ramsey + ## Treat your path creation code here. data_ret = {'status': 1, 'createStatus': 1, 'error_message': "None", 'successMessage': 'Successfully Created!'} json_data = json.dumps(data_ret) @@ -369,7 +414,6 @@ class MailServerManager: json_data = json.dumps(data_ret) return HttpResponse(json_data) - def fetchEmails(self): try: userID = self.request.session['userID'] diff --git a/mailServer/models.py b/mailServer/models.py index 9ffb80512..7e3fe26e7 100755 --- a/mailServer/models.py +++ b/mailServer/models.py @@ -43,3 +43,8 @@ class Transport(models.Model): class Meta: db_table = 'e_transport' + + +class Pipeprograms(models.Model): + source = models.CharField(max_length=80) + destination = models.TextField() diff --git a/mailServer/static/mailServer/mailServer.js b/mailServer/static/mailServer/mailServer.js index 41c559534..dc162982e 100755 --- a/mailServer/static/mailServer/mailServer.js +++ b/mailServer/static/mailServer/mailServer.js @@ -898,6 +898,7 @@ app.controller('emailForwarding', function ($scope, $http) { var data = { + forwardingOption: $scope.forwardingOption, emailAddress: $scope.selectedEmail }; @@ -971,6 +972,7 @@ app.controller('emailForwarding', function ($scope, $http) { var data = { + forwardingOption: $scope.forwardingOption, destination: destination, source: source }; @@ -1045,6 +1047,7 @@ app.controller('emailForwarding', function ($scope, $http) { var data = { + forwardingOption: $scope.forwardingOption, source: $scope.selectedEmail, destination: $scope.destinationEmail }; diff --git a/mailServer/templates/mailServer/emailForwarding.html b/mailServer/templates/mailServer/emailForwarding.html index 2900d20fe..7199ffdaa 100755 --- a/mailServer/templates/mailServer/emailForwarding.html +++ b/mailServer/templates/mailServer/emailForwarding.html @@ -51,12 +51,22 @@
-
+
+ +
+ +
+
+
@@ -88,7 +98,7 @@
- +
diff --git a/plogical/csf.py b/plogical/csf.py index 1bde35449..666b9136d 100755 --- a/plogical/csf.py +++ b/plogical/csf.py @@ -78,8 +78,8 @@ class CSF(multi.Thread): elif ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu: command = 'apt-get install dnsutils libwww-perl liblwp-protocol-https-perl libgd-graph-perl net-tools -y' ProcessUtilities.normalExecutioner(command) - command = 'ln -s /bin/systemctl /usr/bin/systemctl' - ProcessUtilities.normalExecutioner(command) + command = 'ln -s /bin/systemctl /usr/bin/systemctl' + ProcessUtilities.normalExecutioner(command) else: logging.CyberCPLogFileWriter.statusWriter(CSF.installLogPath, @@ -95,14 +95,15 @@ class CSF(multi.Thread): writeToConf.writelines( 'TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,1025,7080,8090,40110:40210"\n') elif items.find('TCP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'): - writeToConf.writelines('TCP_OUT = "20,21,22,25,43,53,80,110,113,443,587,993,995,8090,40110:40210"\n') + writeToConf.writelines( + 'TCP_OUT = "20,21,22,25,43,53,80,110,113,443,587,993,995,8090,40110:40210"\n') elif items.find('UDP_IN') > -1 and items.find('=') > -1 and (items[0] != '#'): writeToConf.writelines('UDP_IN = "20,21,53"\n') elif items.find('UDP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'): writeToConf.writelines('UDP_OUT = "20,21,53,113,123"\n') elif items.find('TESTING =') > -1 and items.find('=') > -1 and (items[0] != '#'): writeToConf.writelines('TESTING = "0"\n') - # setting RESTRICT_SYSLOG to "3" for use with option RESTRICT_SYSLOG_GROUP + # setting RESTRICT_SYSLOG to "3" for use with option RESTRICT_SYSLOG_GROUP elif items.find('RESTRICT_SYSLOG =') > -1 and items.find('=') > -1 and (items[0] != '#'): writeToConf.writelines('RESTRICT_SYSLOG = "3"\n') @@ -282,21 +283,21 @@ class CSF(multi.Thread): # HTACCESS_LOG is ins main error.log elif items.find('HTACCESS_LOG =') > -1 and items.find('=') > -1 and (items[0] != '#'): writeToConf.writelines('HTACCESS_LOG = "/usr/local/lsws/logs/error.log"\n') - + # SYSLOG_CHECK Check whether syslog is running elif items.find('SYSLOG_CHECK =') > -1 and items.find('=') > -1 and (items[0] != '#'): writeToConf.writelines('SYSLOG_CHECK = "300"\n') - - # CSF UI enable - #elif items.find('UI = "0"') > -1 and items.find('=') > -1 and (items[0] != '#'): + + # CSF UI enable + # elif items.find('UI = "0"') > -1 and items.find('=') > -1 and (items[0] != '#'): # writeToConf.writelines('UI = "1"\n') - #elif items.find('UI_ALLOW') > -1 and items.find('=') > -1 and (items[0] != '#'): + # elif items.find('UI_ALLOW') > -1 and items.find('=') > -1 and (items[0] != '#'): # writeToConf.writelines('UI_ALLOW = "0"\n') - #elif items.find('UI_PORT =') > -1 and items.find('=') > -1 and (items[0] != '#'): + # elif items.find('UI_PORT =') > -1 and items.find('=') > -1 and (items[0] != '#'): # writeToConf.writelines('UI_PORT = "1025"\n') - #elif items.find('UI_USER') > -1 and items.find('=') > -1 and (items[0] != '#'): + # elif items.find('UI_USER') > -1 and items.find('=') > -1 and (items[0] != '#'): # writeToConf.writelines('UI_USER = "cyberpanel"\n') - #elif items.find('UI_PASS') > -1 and items.find('=') > -1 and (items[0] != '#'): + # elif items.find('UI_PASS') > -1 and items.find('=') > -1 and (items[0] != '#'): # writeToConf.writelines('UI_PASS = "csfadmin1234567"\n') else: writeToConf.writelines(items) @@ -331,7 +332,6 @@ class CSF(multi.Thread): ## - command = 'csf -s' ProcessUtilities.normalExecutioner(command) @@ -556,6 +556,7 @@ class CSF(multi.Thread): except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[checkIP]") + def main(): parser = argparse.ArgumentParser(description='CSF Manager') parser.add_argument('function', help='Specific a function to call!') diff --git a/plogical/virtualHostUtilities.py b/plogical/virtualHostUtilities.py index 5e5665495..a016ab138 100755 --- a/plogical/virtualHostUtilities.py +++ b/plogical/virtualHostUtilities.py @@ -3,6 +3,7 @@ import os import os.path import sys import django + sys.path.append('/usr/local/CyberCP') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings") try: @@ -38,6 +39,7 @@ try: except: pass + ## If you want justice, you have come to the wrong place. @@ -77,12 +79,13 @@ class virtualHostUtilities: writeToFile.close() - Server_root = "/usr/local/lsws" cyberPanel = "/usr/local/CyberCP" + @staticmethod def createVirtualHost(virtualHostName, administratorEmail, phpVersion, virtualHostUser, ssl, - dkimCheck, openBasedir, websiteOwner, packageName, apache, tempStatusPath = '/home/cyberpanel/fakePath'): + dkimCheck, openBasedir, websiteOwner, packageName, apache, + tempStatusPath='/home/cyberpanel/fakePath'): try: logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Running some checks..,0') @@ -92,7 +95,8 @@ class virtualHostUtilities: admin = Administrator.objects.get(userName=websiteOwner) if ACLManager.websitesLimitCheck(admin, 1) == 0: - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'You\'ve reached maximum websites limit as a reseller. [404]') + logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, + 'You\'ve reached maximum websites limit as a reseller. [404]') return 0, 'You\'ve reached maximum websites limit as a reseller.' ####### Limitations Check End @@ -102,7 +106,8 @@ class virtualHostUtilities: return 0, "This website already exists." if ChildDomains.objects.filter(domain=virtualHostName).count() > 0: - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This website already exists as child domain. [404]') + logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, + 'This website already exists as child domain. [404]') return 0, "This website already exists as child domain." ####### Limitations Check End @@ -118,7 +123,8 @@ class virtualHostUtilities: logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Setting up directories..,25') if vhost.checkIfVirtualHostExists(virtualHostName) == 1: - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Virtual Host Directory already exists. [404]') + logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, + 'Virtual Host Directory already exists. [404]') return 0, "Virtual Host Directory already exists!" if vhost.checkIfAliasExists(virtualHostName) == 1: @@ -130,7 +136,7 @@ class virtualHostUtilities: raise BaseException(retValues[1]) retValues = vhost.createDirectoryForVirtualHost(virtualHostName, administratorEmail, - virtualHostUser, phpVersion, openBasedir) + virtualHostUser, phpVersion, openBasedir) if retValues[0] == 0: raise BaseException(retValues[1]) @@ -148,7 +154,6 @@ class virtualHostUtilities: website.save() - if ssl == 1: sslPath = "/home/" + virtualHostName + "/public_html" logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Setting up SSL..,70') @@ -177,7 +182,7 @@ class virtualHostUtilities: raise BaseException(result[1]) result = ApacheVhost.setupApacheVhost(administratorEmail, virtualHostUser, virtualHostUser, - phpVersion, virtualHostName) + phpVersion, virtualHostName) if result[0] == 0: raise BaseException(result[1]) else: @@ -191,7 +196,6 @@ class virtualHostUtilities: logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'DKIM Setup..,90') - ## DKIM Check postFixPath = '/home/cyberpanel/postfix' @@ -236,15 +240,14 @@ class virtualHostUtilities: try: clPackage = CLPackages.objects.get(owner=selectedPackage) command = 'sudo lvectl package-set %s --speed=%s --pmem=%s --io=%s --nproc=%s --iops=%s --vmem=%s --ep=%s' % ( - clPackage.name, clPackage.speed, clPackage.pmem, clPackage.io, clPackage.np, clPackage.iops, clPackage.vmem, clPackage.ep) + clPackage.name, clPackage.speed, clPackage.pmem, clPackage.io, clPackage.np, clPackage.iops, + clPackage.vmem, clPackage.ep) ProcessUtilities.normalExecutioner(command) command = 'sudo lvectl apply all' ProcessUtilities.normalExecutioner(command) except: pass - - return 1, 'None' except BaseException, msg: @@ -424,7 +427,6 @@ class virtualHostUtilities: ## Get wordpress - if not os.path.exists("latest.tar.gz"): command = 'wget --no-check-certificate http://wordpress.org/latest.tar.gz -O latest.tar.gz' cmd = shlex.split(command) @@ -553,7 +555,7 @@ class virtualHostUtilities: destPrivKey = "/usr/local/lscp/conf/key.pem" destCert = "/usr/local/lscp/conf/cert.pem" - + lswsAdminPrivKey = "/usr/local/lsws/admin/conf/cert/admin.key" lswsAdminCert = "/usr/local/lsws/admin/conf/cert/admin.crt" @@ -568,7 +570,7 @@ class virtualHostUtilities: os.remove(destPrivKey) if os.path.exists(destCert): os.remove(destCert) - + ## removing self signed certs for lsws webadmin if os.path.exists(lswsAdminCert): os.remove(lswsAdminCert) @@ -590,7 +592,6 @@ class virtualHostUtilities: ProcessUtilities.normalExecutioner(command) command = 'ln -s /usr/local/lscp/conf/key.pem /usr/local/lsws/admin/conf/webadmin.key' ProcessUtilities.normalExecutioner(command) - adminEmail = "email@" + virtualHost @@ -609,7 +610,7 @@ class virtualHostUtilities: subprocess.call(cmd) print "1,None" - return 1,'None' + return 1, 'None' except BaseException, msg: @@ -703,13 +704,13 @@ class virtualHostUtilities: p.start() print "1,None" - return 1,'None' + return 1, 'None' except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile( str(msg) + " [issueSSLForHostName]") print "0," + str(msg) - return 0,str(msg) + return 0, str(msg) @staticmethod def createAlias(masterDomain, aliasDomain, ssl, sslPath, administratorEmail, owner=None): @@ -718,7 +719,6 @@ class virtualHostUtilities: admin = Administrator.objects.get(userName=owner) DNS.dnsTemplate(aliasDomain, admin) - if vhost.checkIfAliasExists(aliasDomain) == 1: print "0, This domain already exists as vHost or Alias." return @@ -774,7 +774,7 @@ class virtualHostUtilities: website = Websites.objects.get(domain=masterDomain) - newAlias = aliasDomains(master=website, aliasDomain = aliasDomain) + newAlias = aliasDomains(master=website, aliasDomain=aliasDomain) newAlias.save() print "1,None" @@ -888,7 +888,6 @@ class virtualHostUtilities: data = open(completePathToConfigFile, 'r').readlines() - if openBasedirValue == 'Disable': writeToFile = open(completePathToConfigFile, 'w') for items in data: @@ -913,7 +912,8 @@ class virtualHostUtilities: if items.find('phpIniOverride') > -1: writeToFile.writelines(items) if fileManagerCheck == 1: - writeToFile.writelines('php_admin_value open_basedir "/tmp:/usr/local/lsws/Example/html/FileManager:$VH_ROOT"\n') + writeToFile.writelines( + 'php_admin_value open_basedir "/tmp:/usr/local/lsws/Example/html/FileManager:$VH_ROOT"\n') fileManagerCheck = 0 continue else: @@ -1006,7 +1006,6 @@ class virtualHostUtilities: os.remove(keyPath) os.remove(certPath) - sslUtilities.sslUtilities.installSSLForDomain(virtualHost) installUtilities.installUtilities.reStartLiteSpeed() @@ -1025,7 +1024,8 @@ class virtualHostUtilities: print "0," + str(msg) @staticmethod - def createDomain(masterDomain, virtualHostName, phpVersion, path, ssl, dkimCheck, openBasedir, owner, apache, tempStatusPath = '/home/cyberpanel/fakePath'): + def createDomain(masterDomain, virtualHostName, phpVersion, path, ssl, dkimCheck, openBasedir, owner, apache, + tempStatusPath='/home/cyberpanel/fakePath'): try: logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Running some checks..,0') @@ -1035,13 +1035,14 @@ class virtualHostUtilities: admin = Administrator.objects.get(userName=owner) DNS.dnsTemplate(virtualHostName, admin) - if Websites.objects.filter(domain=virtualHostName).count() > 0: - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This Domain already exists as a website. [404]') + logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, + 'This Domain already exists as a website. [404]') return 0, "This Domain already exists as a website." if ChildDomains.objects.filter(domain=virtualHostName).count() > 0: - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This domain already exists as child domain. [404]') + logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, + 'This domain already exists as child domain. [404]') return 0, "This domain already exists as child domain." ####### Limitations check @@ -1057,7 +1058,6 @@ class virtualHostUtilities: 'Fully qualified domain is not allowed in the package. [404]') return 0, "Fully qualified domain is not allowed in the package." - if domainsInPackage == 0: pass elif domainsInPackage > master.childdomains_set.all().count(): @@ -1067,19 +1067,17 @@ class virtualHostUtilities: 'Exceeded maximum number of domains for this package. [404]') return 0, "Exceeded maximum number of domains for this package" - ####### Limitations Check End - if vhost.checkIfVirtualHostExists(virtualHostName) == 1: - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,'Virtual Host Directory already exists. [404]') + logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, + 'Virtual Host Directory already exists. [404]') return 0, "Virtual Host Directory already exists!" if vhost.checkIfAliasExists(virtualHostName) == 1: - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,'This domain exists as Alias. [404]') + logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This domain exists as Alias. [404]') return 0, "This domain exists as Alias." - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'DKIM Setup..,30') retValues = mailUtilities.setupDKIM(virtualHostName) @@ -1091,7 +1089,7 @@ class virtualHostUtilities: logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Creating configurations..,50') retValues = vhost.createDirectoryForDomain(masterDomain, virtualHostName, phpVersion, path, - master.adminEmail, master.externalApp, openBasedir) + master.adminEmail, master.externalApp, openBasedir) if retValues[0] == 0: raise BaseException(retValues[1]) @@ -1132,7 +1130,7 @@ class virtualHostUtilities: raise BaseException(result[1]) result = ApacheVhost.setupApacheVhostChild(master.adminEmail, master.externalApp, - master.externalApp, phpVersion, virtualHostName, path) + master.externalApp, phpVersion, virtualHostName, path) if result[0] == 0: raise BaseException(result[1]) else: @@ -1150,7 +1148,6 @@ class virtualHostUtilities: if dkimCheck == 1: DNS.createDKIMRecords(virtualHostName) - logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Domain successfully created. [200]') return 1, "None" @@ -1173,13 +1170,13 @@ class virtualHostUtilities: installUtilities.installUtilities.reStartLiteSpeed() print "1,None" - return 1,'None' + return 1, 'None' except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile( str(msg) + " [deleteDomain]") print "0," + str(msg) - return 0,str(msg) + return 0, str(msg) @staticmethod def switchServer(virtualHostName, phpVersion, server, tempStatusPath): @@ -1212,10 +1209,12 @@ class virtualHostUtilities: ApacheVhost.perHostVirtualConfOLS(completePathToConfigFile, website.adminEmail) if child: - ApacheVhost.setupApacheVhostChild(website.master.adminEmail, website.master.externalApp, website.master.externalApp, + ApacheVhost.setupApacheVhostChild(website.master.adminEmail, website.master.externalApp, + website.master.externalApp, phpVersion, virtualHostName, website.path) else: - ApacheVhost.setupApacheVhost(website.adminEmail, website.externalApp, website.externalApp, phpVersion, virtualHostName) + ApacheVhost.setupApacheVhost(website.adminEmail, website.externalApp, website.externalApp, + phpVersion, virtualHostName) logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Restarting servers and phps..,90') @@ -1229,10 +1228,12 @@ class virtualHostUtilities: ApacheVhost.DeleteApacheVhost(virtualHostName) if child: - vhost.perHostDomainConf(website.path, website.master.domain, virtualHostName, completePathToConfigFile, + vhost.perHostDomainConf(website.path, website.master.domain, virtualHostName, + completePathToConfigFile, website.master.adminEmail, phpVersion, website.master.externalApp, 0) else: - vhost.perHostVirtualConf(completePathToConfigFile, website.adminEmail, website.externalApp, phpVersion, virtualHostName, 0) + vhost.perHostVirtualConf(completePathToConfigFile, website.adminEmail, website.externalApp, + phpVersion, virtualHostName, 0) logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Restarting server..,90') installUtilities.installUtilities.reStartLiteSpeed() logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Successfully converted. [200]') @@ -1245,7 +1246,8 @@ class virtualHostUtilities: def getDiskUsage(path, totalAllowed): try: - totalUsageInMB = ProcessUtilities.outputExecutioner(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[0] + totalUsageInMB = ProcessUtilities.outputExecutioner(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[ + 0] percentage = float(100) / float(totalAllowed) @@ -1283,8 +1285,8 @@ class virtualHostUtilities: except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) -def main(): +def main(): parser = argparse.ArgumentParser(description='CyberPanel Installer') parser.add_argument('function', help='Specific a function to call!') parser.add_argument('--virtualHostName', help='Domain name!') @@ -1301,7 +1303,6 @@ def main(): parser.add_argument('--restore', help='Restore Check.') parser.add_argument('--apache', help='Enable/Disable Apache as backend') - ## arguments for creation child domains parser.add_argument('--masterDomain', help='Master Domain Needed While Creating Child Domains!') @@ -1316,7 +1317,6 @@ def main(): parser.add_argument('--tempPath', help='Temporary path where configuration data is placed!') - ## save ssl arguments parser.add_argument('--tempKeyPath', help='Temporary path to store key!') @@ -1375,7 +1375,9 @@ def main(): except: tempStatusPath = '/home/cyberpanel/fakePath' - virtualHostUtilities.createVirtualHost(args.virtualHostName, args.administratorEmail, args.phpVersion, args.virtualHostUser, int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, args.package, apache, tempStatusPath) + virtualHostUtilities.createVirtualHost(args.virtualHostName, args.administratorEmail, args.phpVersion, + args.virtualHostUser, int(args.ssl), dkimCheck, openBasedir, + args.websiteOwner, args.package, apache, tempStatusPath) elif args.function == "deleteVirtualHostConfigurations": vhost.deleteVirtualHostConfigurations(args.virtualHostName) elif args.function == "createDomain": @@ -1399,33 +1401,39 @@ def main(): except: tempStatusPath = '/home/cyberpanel/fakePath' - virtualHostUtilities.createDomain(args.masterDomain, args.virtualHostName, args.phpVersion, args.path, int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, apache, tempStatusPath) + virtualHostUtilities.createDomain(args.masterDomain, args.virtualHostName, args.phpVersion, args.path, + int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, apache, + tempStatusPath) elif args.function == "issueSSL": - virtualHostUtilities.issueSSL(args.virtualHostName,args.path,args.administratorEmail) + virtualHostUtilities.issueSSL(args.virtualHostName, args.path, args.administratorEmail) elif args.function == "changePHP": - vhost.changePHP(args.path,args.phpVersion) + vhost.changePHP(args.path, args.phpVersion) elif args.function == "getAccessLogs": - virtualHostUtilities.getAccessLogs(args.path,int(args.page)) + virtualHostUtilities.getAccessLogs(args.path, int(args.page)) elif args.function == "getErrorLogs": - virtualHostUtilities.getErrorLogs(args.path,int(args.page)) + virtualHostUtilities.getErrorLogs(args.path, int(args.page)) elif args.function == "saveVHostConfigs": - virtualHostUtilities.saveVHostConfigs(args.path,args.tempPath) + virtualHostUtilities.saveVHostConfigs(args.path, args.tempPath) elif args.function == "saveRewriteRules": - virtualHostUtilities.saveRewriteRules(args.virtualHostName,args.path,args.tempPath) + virtualHostUtilities.saveRewriteRules(args.virtualHostName, args.path, args.tempPath) elif args.function == "saveSSL": - virtualHostUtilities.saveSSL(args.virtualHostName,args.tempKeyPath,args.tempCertPath) + virtualHostUtilities.saveSSL(args.virtualHostName, args.tempKeyPath, args.tempCertPath) elif args.function == "installWordPress": - virtualHostUtilities.installWordPress(args.virtualHostName,args.path,args.virtualHostUser,args.dbName,args.dbUser,args.dbPassword) + virtualHostUtilities.installWordPress(args.virtualHostName, args.path, args.virtualHostUser, args.dbName, + args.dbUser, args.dbPassword) elif args.function == "installJoomla": - virtualHostUtilities.installJoomla(args.virtualHostName,args.path,args.virtualHostUser,args.dbName,args.dbUser,args.dbPassword,args.username,args.password,args.prefix,args.sitename, args.tempStatusPath) + virtualHostUtilities.installJoomla(args.virtualHostName, args.path, args.virtualHostUser, args.dbName, + args.dbUser, args.dbPassword, args.username, args.password, args.prefix, + args.sitename, args.tempStatusPath) elif args.function == "issueSSLForHostName": - virtualHostUtilities.issueSSLForHostName(args.virtualHostName,args.path) + virtualHostUtilities.issueSSLForHostName(args.virtualHostName, args.path) elif args.function == "issueSSLForMailServer": - virtualHostUtilities.issueSSLForMailServer(args.virtualHostName,args.path) + virtualHostUtilities.issueSSLForMailServer(args.virtualHostName, args.path) elif args.function == "findDomainBW": vhost.findDomainBW(args.virtualHostName, int(args.bandwidth)) elif args.function == 'createAlias': - virtualHostUtilities.createAlias(args.masterDomain,args.aliasDomain,int(args.ssl),args.sslPath, args.administratorEmail, args.websiteOwner) + virtualHostUtilities.createAlias(args.masterDomain, args.aliasDomain, int(args.ssl), args.sslPath, + args.administratorEmail, args.websiteOwner) elif args.function == 'issueAliasSSL': virtualHostUtilities.issueAliasSSL(args.masterDomain, args.aliasDomain, args.sslPath, args.administratorEmail) elif args.function == 'deleteAlias': @@ -1437,5 +1445,6 @@ def main(): elif args.function == 'switchServer': virtualHostUtilities.switchServer(args.virtualHostName, args.phpVersion, int(args.server), args.tempStatusPath) + if __name__ == "__main__": main() diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py index 04a57d4ab..34cecd545 100755 --- a/websiteFunctions/website.py +++ b/websiteFunctions/website.py @@ -712,6 +712,8 @@ class WebsiteManager: execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str( website.package.bandwidth) + logging.CyberCPLogFileWriter.writeToFile(execPath) + output = ProcessUtilities.outputExecutioner(execPath) bwData = output.split(",") except BaseException, msg: @@ -2078,6 +2080,10 @@ StrictHostKeyChecking no data['adminEmail'] = data['ownerEmail'] data['phpSelection'] = "PHP 7.0" data['package'] = data['packageName'] + try: + websitesLimit = data['websitesLimit'] + except: + websitesLimit = 1 admin = Administrator.objects.get(userName=adminUser) @@ -2091,7 +2097,7 @@ StrictHostKeyChecking no websiteOwn = Administrator(userName=websiteOwner, password=hashPassword.hash_password(ownerPassword), email=adminEmail, type=3, owner=admin.pk, - initWebsitesLimit=1, acl=acl, api=1) + initWebsitesLimit=websitesLimit, acl=acl, api=1) websiteOwn.save() except BaseException: pass