From 38be1c99851040ea3b89fd97243c3ea75a86531c Mon Sep 17 00:00:00 2001 From: Usman Nasir Date: Thu, 8 Oct 2020 12:18:51 +0500 Subject: [PATCH] joomla installer: auto install with lscache --- install/lscache-1.3.1.zip | Bin 0 -> 92482 bytes plogical/applicationInstaller.py | 243 +++++++++--------- static/websiteFunctions/websiteFunctions.js | 5 +- .../websiteFunctions/websiteFunctions.js | 5 +- .../websiteFunctions/installJoomla.html | 11 +- .../websiteFunctions/launchChild.html | 4 +- websiteFunctions/website.py | 117 +-------- 7 files changed, 143 insertions(+), 242 deletions(-) create mode 100644 install/lscache-1.3.1.zip diff --git a/install/lscache-1.3.1.zip b/install/lscache-1.3.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..95711264acf680d7bd8e25fefcc5e814a3b7c520 GIT binary patch literal 92482 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


Io)+ZA56Pg& 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 er}YQ)@kaN*n13iOh-VPb website.master.databases_set.all().count(): + pass + else: + raise BaseException("Maximum database limit reached for this website.") + + statusFile = open(tempStatusPath, 'w') + statusFile.writelines('Setting up Database,20') + statusFile.close() + + dbName, dbUser, dbPassword = self.dbCreation(tempStatusPath, website.master) + self.permPath = website.path + + except: + website = Websites.objects.get(domain=domainName) + externalApp = website.externalApp + self.masterDomain = website.domain + + if home == '0': + path = self.extraArgs['path'] + finalPath = "/home/" + domainName + "/public_html/" + path + "/" + else: + finalPath = "/home/" + domainName + "/public_html/" + + if website.package.dataBases > website.databases_set.all().count(): + pass + else: + raise BaseException("Maximum database limit reached for this website.") + + statusFile = open(tempStatusPath, 'w') + statusFile.writelines('Installing Joomla Console..,30') + statusFile.close() + + dbName, dbUser, dbPassword = self.dbCreation(tempStatusPath, website) + self.permPath = '/home/%s/public_html' % (website.domain) + + ## Dataloss check + + command = 'ls -la %s' % (finalPath) + result = ProcessUtilities.outputExecutioner(command, externalApp) + + if result.find('No such file or directory') > -1: + command = 'mkdir %s' % (finalPath) + ProcessUtilities.executioner(command, externalApp) if self.dataLossCheck(finalPath, tempStatusPath) == 0: raise BaseException('Directory is not empty.') - ## Get Joomla + command = 'composer global require joomlatools/console' + ProcessUtilities.outputExecutioner(command, externalApp, None, self.permPath) - os.chdir(finalPath) - - if not os.path.exists("staging.zip"): - command = 'wget --no-check-certificate https://github.com/joomla/joomla-cms/archive/staging.zip -P ' + finalPath - ProcessUtilities.executioner(command, virtualHostUser) - else: - raise BaseException('File already exists.') - - command = 'unzip ' + finalPath + 'staging.zip -d ' + finalPath - ProcessUtilities.executioner(command, virtualHostUser) - - command = 'rm -f %s' % (finalPath + 'staging.zip') - ProcessUtilities.executioner(command, virtualHostUser) - - command = 'cp -r ' + finalPath + 'joomla-cms-staging/. ' + finalPath - ProcessUtilities.executioner(command, virtualHostUser) - - command = 'chown -R cyberpanel:cyberpanel %s' % (finalPath) - ProcessUtilities.executioner(command) - - shutil.rmtree(finalPath + "joomla-cms-staging") - os.rename(finalPath + "installation/configuration.php-dist", finalPath + "configuration.php") - os.rename(finalPath + "robots.txt.dist", finalPath + "robots.txt") - os.rename(finalPath + "htaccess.txt", finalPath + ".htaccess") - - ## edit config file + ## Run the install command statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Creating configuration files.,40') + statusFile.writelines('Installing Joomla..,40') statusFile.close() - configfile = finalPath + "configuration.php" + command = '/home/%s/.composer/vendor/bin/joomla site:create %s --mysql-login %s:%s --mysql-database %s --mysql_db_prefix=%s --www %s --sample-data=blog --skip-create-statement' % (self.masterDomain, dbUser, dbUser, dbPassword, dbName, prefix , finalPath) - data = open(configfile, "r").readlines() + result = ProcessUtilities.outputExecutioner(command, externalApp) - writeDataToFile = open(configfile, "w") + if result.find('admin/admin') == -1: + raise BaseException(result) - secret = randomPassword.generate_pass() - - defDBName = " public $user = '" + dbName + "';" + "\n" - defDBUser = " public $db = '" + dbUser + "';" + "\n" - defDBPassword = " public $password = '" + dbPassword + "';" + "\n" - secretKey = " public $secret = '" + secret + "';" + "\n" - logPath = " public $log_path = '" + finalPath + "administrator/logs';" + "\n" - tmpPath = " public $tmp_path = '" + finalPath + "administrator/tmp';" + "\n" - dbprefix = " public $dbprefix = '" + prefix + "';" + "\n" - sitename = " public $sitename = '" + sitename + "';" + "\n" - - for items in data: - if items.find("public $user ") > -1: - writeDataToFile.writelines(defDBUser) - elif items.find("public $password ") > -1: - writeDataToFile.writelines(defDBPassword) - elif items.find("public $db ") > -1: - writeDataToFile.writelines(defDBName) - elif items.find("public $log_path ") > -1: - writeDataToFile.writelines(logPath) - elif items.find("public $tmp_path ") > -1: - writeDataToFile.writelines(tmpPath) - elif items.find("public $secret ") > -1: - writeDataToFile.writelines(secretKey) - elif items.find("public $dbprefix ") > -1: - writeDataToFile.writelines(dbprefix) - elif items.find("public $sitename ") > -1: - writeDataToFile.writelines(sitename) - elif items.find("/*") > -1: - pass - elif items.find(" *") > -1: - pass - else: - writeDataToFile.writelines(items) - - writeDataToFile.close() + ### Update password as per user requirments statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Creating default user..,70') + statusFile.writelines('Updating admin password..,70') statusFile.close() - # Rename SQL db prefix + try: - f1 = open(finalPath + 'installation/sql/mysql/joomla.sql', 'r') - f2 = open(finalPath + 'installation/sql/mysql/joomlaInstall.sql', 'w') - for line in f1: - f2.write(line.replace('#__', prefix)) - f1.close() - f2.close() + salt = randomPassword.generate_pass(32) + # return salt + password_hash = hashlib.md5((password + salt).encode('utf-8')).hexdigest() + password = password_hash + ":" + salt - # Restore SQL - proc = subprocess.Popen(["mysql", "--user=%s" % dbUser, "--password=%s" % dbPassword, dbName], - stdin=subprocess.PIPE, stdout=subprocess.PIPE) + import MySQLdb.cursors as cursors + import MySQLdb as mysql - usercreation = """INSERT INTO `%susers` - (`name`, `username`, `password`, `params`) - VALUES ('Administrator', '%s', - '%s', ''); - INSERT INTO `%suser_usergroup_map` (`user_id`,`group_id`) - VALUES (LAST_INSERT_ID(),'8');""" % (prefix, username, password, prefix) + conn = mysql.connect(host='localhost', user=dbUser, passwd=dbPassword, port=3306, + cursorclass=cursors.SSCursor) + cursor = conn.cursor() - out, err = proc.communicate( - open(finalPath + 'installation/sql/mysql/joomlaInstall.sql', 'rb').read() + ("\n" + usercreation).encode('utf-8')) + cursor.execute("use %s;UPDATE j_users SET password = '%s' where username = 'admin';FLUSH PRIVILEGES;" % (dbName, password)) - shutil.rmtree(finalPath + "installation") + conn.close() + except BaseException as msg: + logging.writeToFile(str(msg)) - if ProcessUtilities.decideDistro() == ProcessUtilities.centos or ProcessUtilities.decideDistro() == ProcessUtilities.cent8: - groupName = 'nobody' - else: - groupName = 'nogroup' + try: + os.remove('/usr/local/CyberCP/joomla.zip') + os.remove('/usr/local/CyberCP/lscache_plugin.zip') + os.remove('/usr/local/CyberCP/com_lscache.zip') + except: + pass - command = "chown -R " + virtualHostUser + ":" + groupName + " " + finalPath + statusFile = open(tempStatusPath, 'w') + statusFile.writelines('Installing LiteSpeed Cache Joomla plugin..,80') + statusFile.close() + + + command = 'wget https://raw.githubusercontent.com/litespeedtech/lscache-joomla/master/package/lscache-1.3.1.zip -O /usr/local/CyberCP/joomla.zip' ProcessUtilities.executioner(command) - vhost.addRewriteRules(domainName) + command = 'unzip /usr/local/CyberCP/joomla.zip -d /usr/local/CyberCP/' + ProcessUtilities.executioner(command) + + command = '/home/%s/.composer/vendor/bin/joomla extension:installfile %s --www %s /usr/local/CyberCP/lscache_plugin.zip' % (self.masterDomain, dbUser, finalPath) + ProcessUtilities.executioner(command) + + command = '/home/%s/.composer/vendor/bin/joomla extension:installfile %s --www %s /usr/local/CyberCP/com_lscache.zip' % (self.masterDomain, dbUser, finalPath) + ProcessUtilities.executioner(command) + + command = '/home/%s/.composer/vendor/bin/joomla extension:enable %s --www %s lscache' % (self.masterDomain, dbUser, finalPath) + ProcessUtilities.executioner(command) + + command = 'mv %s%s/* %s' % (finalPath, dbUser, finalPath) + ProcessUtilities.executioner(command) + + command = 'mv %s%s/.[^.]* %s' % (finalPath, dbUser, finalPath) + ProcessUtilities.executioner(command) + + command = "sed -i 's|$debug = 1|$debug = 0|g' %sconfiguration.php" % (finalPath) + ProcessUtilities.executioner(command) + + ## + + from filemanager.filemanager import FileManager + + fm = FileManager(None, None) + fm.fixPermissions(self.masterDomain) installUtilities.reStartLiteSpeedSocket() - permPath = '/home/%s/public_html' % (domainName) - command = 'chmod 750 %s' % (permPath) - ProcessUtilities.executioner(command) - statusFile = open(tempStatusPath, 'w') statusFile.writelines("Successfully Installed. [200]") statusFile.close() @@ -984,16 +995,10 @@ $parameters = array( except BaseException as msg: # remove the downloaded files - homeDir = "/home/" + domainName + "/public_html" + from filemanager.filemanager import FileManager - if ProcessUtilities.decideDistro() == ProcessUtilities.centos or ProcessUtilities.decideDistro() == ProcessUtilities.cent8: - groupName = 'nobody' - else: - groupName = 'nogroup' - - if not os.path.exists(homeDir): - command = "chown -R " + virtualHostUser + ":" + groupName + " " + homeDir - ProcessUtilities.executioner(command) + fm = FileManager(None, None) + fm.fixPermissions(self.masterDomain) try: mysqlUtilities.deleteDatabase(dbName, dbUser) diff --git a/static/websiteFunctions/websiteFunctions.js b/static/websiteFunctions/websiteFunctions.js index efd6556d3..f23ccbeca 100644 --- a/static/websiteFunctions/websiteFunctions.js +++ b/static/websiteFunctions/websiteFunctions.js @@ -1723,8 +1723,7 @@ app.controller('websitePages', function ($scope, $http, $timeout, $window) { var domain = $("#domainNamePage").text(); var path = $scope.installPath; - var sitename = $scope.sitename; - var username = $scope.username; + var username = 'admin'; var password = $scope.password; var prefix = $scope.prefix; @@ -1742,8 +1741,6 @@ app.controller('websitePages', function ($scope, $http, $timeout, $window) { domain: domain, home: home, path: path, - sitename: sitename, - username: username, password: password, prefix: prefix, }; diff --git a/websiteFunctions/static/websiteFunctions/websiteFunctions.js b/websiteFunctions/static/websiteFunctions/websiteFunctions.js index efd6556d3..f23ccbeca 100755 --- a/websiteFunctions/static/websiteFunctions/websiteFunctions.js +++ b/websiteFunctions/static/websiteFunctions/websiteFunctions.js @@ -1723,8 +1723,7 @@ app.controller('websitePages', function ($scope, $http, $timeout, $window) { var domain = $("#domainNamePage").text(); var path = $scope.installPath; - var sitename = $scope.sitename; - var username = $scope.username; + var username = 'admin'; var password = $scope.password; var prefix = $scope.prefix; @@ -1742,8 +1741,6 @@ app.controller('websitePages', function ($scope, $http, $timeout, $window) { domain: domain, home: home, path: path, - sitename: sitename, - username: username, password: password, prefix: prefix, }; diff --git a/websiteFunctions/templates/websiteFunctions/installJoomla.html b/websiteFunctions/templates/websiteFunctions/installJoomla.html index 153795f0a..7c552fecf 100755 --- a/websiteFunctions/templates/websiteFunctions/installJoomla.html +++ b/websiteFunctions/templates/websiteFunctions/installJoomla.html @@ -24,17 +24,10 @@
-
- -
- -
-
-
- +
@@ -48,7 +41,7 @@
- +
diff --git a/websiteFunctions/templates/websiteFunctions/launchChild.html b/websiteFunctions/templates/websiteFunctions/launchChild.html index a487bd158..dd057a69e 100755 --- a/websiteFunctions/templates/websiteFunctions/launchChild.html +++ b/websiteFunctions/templates/websiteFunctions/launchChild.html @@ -688,7 +688,7 @@ - +
website.master.databases_set.all().count(): - pass - else: - data_ret = {'status': 0, 'installStatus': 0, - 'error_message': "0,Maximum database limit reached for this website."} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - - if home == '0': - path = data['path'] - finalPath = website.path.rstrip('/') + "/" + path + "/" - else: - finalPath = website.path + "/" - - db = Databases(website=website.master, dbName=dbName, dbUser=dbUser) - db.save() - - except: - website = Websites.objects.get(domain=domainName) - externalApp = website.externalApp - - if website.package.dataBases > website.databases_set.all().count(): - pass - else: - data_ret = {'status': 0, 'installStatus': 0, - 'error_message': "0,Maximum database limit reached for this website."} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - - if home == '0': - path = data['path'] - finalPath = "/home/" + domainName + "/public_html/" + path + "/" - else: - finalPath = "/home/" + domainName + "/public_html/" - - db = Databases(website=website, dbName=dbName, dbUser=dbUser) - db.save() - - if finalPath.find("..") > -1: - data_ret = {'status': 0, 'installStatus': 0, - 'error_message': "Specified path must be inside virtual host home!"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - - ## Installation - salt = randomPassword.generate_pass(32) - # return salt - password_hash = hashlib.md5((password + salt).encode('utf-8')).hexdigest() - password = password_hash + ":" + salt - - statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Downloading Joomla Core..,20') - statusFile.close() - - virtualHostUtilities.installJoomla(domainName, finalPath, externalApp, dbName, dbUser, dbPassword, username, password, prefix, sitename, tempStatusPath) - - data_ret = {'status': 1, "installStatus": 1, 'tempStatusPath': tempStatusPath} + data_ret = {'status': 1, 'installStatus': 1, 'error_message': 'None', + 'tempStatusPath': extraArgs['tempStatusPath']} json_data = json.dumps(data_ret) return HttpResponse(json_data)