diff --git a/plogical/sslUtilities.py b/plogical/sslUtilities.py index 4bf312c7d..1dfe87e72 100755 --- a/plogical/sslUtilities.py +++ b/plogical/sslUtilities.py @@ -12,6 +12,7 @@ except: class sslUtilities: Server_root = "/usr/local/lsws" + redisConf = '/usr/local/lsws/conf/dvhost_redis.conf' @staticmethod def checkIfSSLMap(virtualHostName): @@ -186,78 +187,82 @@ class sslUtilities: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [installSSLForDomain]]") return 0 else: - confPath = sslUtilities.Server_root + "/conf/vhosts/" + virtualHostName - completePathToConfigFile = confPath + "/vhost.conf" + if not os.path.exists(sslUtilities.redisConf): + confPath = sslUtilities.Server_root + "/conf/vhosts/" + virtualHostName + completePathToConfigFile = confPath + "/vhost.conf" - ## Check if SSL VirtualHost already exists - - data = open(completePathToConfigFile, 'r').readlines() - - for items in data: - if items.find('*:443') > -1: - return 1 - - try: - - try: - chilDomain = ChildDomains.objects.get(domain=virtualHostName) - externalApp = chilDomain.master.externalApp - DocumentRoot = ' DocumentRoot ' + chilDomain.path + '\n' - except BaseException as msg: - website = Websites.objects.get(domain=virtualHostName) - externalApp = website.externalApp - DocumentRoot = ' DocumentRoot /home/' + virtualHostName + '/public_html\n' + ## Check if SSL VirtualHost already exists data = open(completePathToConfigFile, 'r').readlines() - phpHandler = '' for items in data: - if items.find('AddHandler') > -1 and items.find('php') > -1: - phpHandler = items - break + if items.find('*:443') > -1: + return 1 - confFile = open(completePathToConfigFile, 'a') + try: - cacheRoot = """ - CacheRoot lscache - -""" + try: + chilDomain = ChildDomains.objects.get(domain=virtualHostName) + externalApp = chilDomain.master.externalApp + DocumentRoot = ' DocumentRoot ' + chilDomain.path + '\n' + except BaseException as msg: + website = Websites.objects.get(domain=virtualHostName) + externalApp = website.externalApp + DocumentRoot = ' DocumentRoot /home/' + virtualHostName + '/public_html\n' - VirtualHost = '\n\n\n' - ServerName = ' ServerName ' + virtualHostName + '\n' - ServerAlias = ' ServerAlias www.' + virtualHostName + '\n' - ServerAdmin = ' ServerAdmin ' + adminEmail + '\n' - SeexecUserGroup = ' SuexecUserGroup ' + externalApp + ' ' + externalApp + '\n' - CustomLogCombined = ' CustomLog /home/' + virtualHostName + '/logs/' + virtualHostName + '.access_log combined\n' + data = open(completePathToConfigFile, 'r').readlines() + phpHandler = '' - confFile.writelines(VirtualHost) - confFile.writelines(ServerName) - confFile.writelines(ServerAlias) - confFile.writelines(ServerAdmin) - confFile.writelines(SeexecUserGroup) - confFile.writelines(DocumentRoot) - confFile.writelines(CustomLogCombined) - confFile.writelines(cacheRoot) + for items in data: + if items.find('AddHandler') > -1 and items.find('php') > -1: + phpHandler = items + break - SSLEngine = ' SSLEngine on\n' - SSLVerifyClient = ' SSLVerifyClient none\n' - SSLCertificateFile = ' SSLCertificateFile /etc/letsencrypt/live/' + virtualHostName + '/fullchain.pem\n' - SSLCertificateKeyFile = ' SSLCertificateKeyFile /etc/letsencrypt/live/' + virtualHostName + '/privkey.pem\n' + confFile = open(completePathToConfigFile, 'a') - confFile.writelines(SSLEngine) - confFile.writelines(SSLVerifyClient) - confFile.writelines(SSLCertificateFile) - confFile.writelines(SSLCertificateKeyFile) - confFile.writelines(phpHandler) + cacheRoot = """ + CacheRoot lscache + + """ - VirtualHostEnd = '\n' - confFile.writelines(VirtualHostEnd) - confFile.close() - return 1 + VirtualHost = '\n\n\n' + ServerName = ' ServerName ' + virtualHostName + '\n' + ServerAlias = ' ServerAlias www.' + virtualHostName + '\n' + ServerAdmin = ' ServerAdmin ' + adminEmail + '\n' + SeexecUserGroup = ' SuexecUserGroup ' + externalApp + ' ' + externalApp + '\n' + CustomLogCombined = ' CustomLog /home/' + virtualHostName + '/logs/' + virtualHostName + '.access_log combined\n' + + confFile.writelines(VirtualHost) + confFile.writelines(ServerName) + confFile.writelines(ServerAlias) + confFile.writelines(ServerAdmin) + confFile.writelines(SeexecUserGroup) + confFile.writelines(DocumentRoot) + confFile.writelines(CustomLogCombined) + confFile.writelines(cacheRoot) + + SSLEngine = ' SSLEngine on\n' + SSLVerifyClient = ' SSLVerifyClient none\n' + SSLCertificateFile = ' SSLCertificateFile /etc/letsencrypt/live/' + virtualHostName + '/fullchain.pem\n' + SSLCertificateKeyFile = ' SSLCertificateKeyFile /etc/letsencrypt/live/' + virtualHostName + '/privkey.pem\n' + + confFile.writelines(SSLEngine) + confFile.writelines(SSLVerifyClient) + confFile.writelines(SSLCertificateFile) + confFile.writelines(SSLCertificateKeyFile) + confFile.writelines(phpHandler) + + VirtualHostEnd = '\n' + confFile.writelines(VirtualHostEnd) + confFile.close() + return 1 + except BaseException as msg: + logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [installSSLForDomain]") + return 0 + else: + command = 'redis-cli hmset "ssl:%s" crt "%s" key "%s"' % (virtualHostName, open('/etc/letsencrypt/live/' + virtualHostName + '/fullchain.pem', 'r').read(), open('/etc/letsencrypt/live/' + virtualHostName + '/privkey.pem', 'r').read()) + ProcessUtilities.executioner(command) - except BaseException as msg: - logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [installSSLForDomain]") - return 0 @staticmethod diff --git a/plogical/vhost.py b/plogical/vhost.py index 40820b063..0cb68e62e 100755 --- a/plogical/vhost.py +++ b/plogical/vhost.py @@ -28,6 +28,9 @@ try: from databases.models import Databases except: pass +import pwd +import grp + ## If you want justice, you have come to the wrong place. @@ -255,6 +258,21 @@ class vhost: confFile.write(currentConf) confFile.close() + + else: + currentConf = vhostConfs.lswsRediConfMaster + + currentConf = currentConf.replace('{virtualHostName}', virtualHostName) + currentConf = currentConf.replace('{administratorEmail}', administratorEmail) + currentConf = currentConf.replace('{externalApp}', virtualHostUser) + currentConf = currentConf.replace('{php}', phpVersion.lstrip('PHP ')) + currentConf = currentConf.replace('{uid}', str(pwd.getpwnam(virtualHostUser).pw_uid)) + currentConf = currentConf.replace('{gid}', str(grp.getgrnam(virtualHostUser).gr_gid)) + + command = 'redis-cli set %s' % (currentConf) + ProcessUtilities.executioner(command) + + except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile( str(msg) + " [IO Error with per host config file [perHostVirtualConf]]") @@ -812,7 +830,6 @@ class vhost: try: if not os.path.exists(vhost.redisConf): - confFile = open(vhFile, "w+") php = PHPManager.getPHPString(phpVersion) @@ -828,6 +845,7 @@ class vhost: confFile.write(currentConf) confFile.close() + except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile( str(msg) + " [IO Error with per host config file [perHostDomainConf]]") diff --git a/plogical/vhostConfs.py b/plogical/vhostConfs.py index e25a8d6ce..fbceb8a7b 100755 --- a/plogical/vhostConfs.py +++ b/plogical/vhostConfs.py @@ -364,4 +364,21 @@ pm.max_children = {pmMaxChildren} pm.start_servers = {pmStartServers} pm.min_spare_servers = {pmMinSpareServers} pm.max_spare_servers = {pmMaxSpareServers} -""" \ No newline at end of file +""" + + lswsRediConfMaster = """"vhost:{virtualHostName}" '{ + "username": "{externalApp}", + "documentRoot": "/home/{virtualHostName}/public_html", + "vh_root": "/home/{virtualHostName}", + "uid": {uid}, + "gid": {gid}, + "phpVersion": {php}, + "custom_conf": { + ServerAlias www.{virtualHostName} + ServerAdmin {administratorEmail} + CustomLog /home/{virtualHostName}/logs/{virtualHostName}.access_log combined + + CacheRoot lscache + + } +}'""" \ No newline at end of file