From c731d806d68b68781325c38982ddb071512055fe Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Wed, 2 Oct 2019 13:13:32 +0200 Subject: [PATCH] Refactor acme.sh and WOVariables --- CHANGELOG.md | 8 ++ requirements-dev-py3.txt | 21 ----- wo/cli/controllers/base.py | 4 +- wo/cli/plugins/debug.py | 38 ++++---- wo/cli/plugins/log.py | 52 +++++------ wo/cli/plugins/secure.py | 6 +- wo/cli/plugins/site.py | 37 +++----- wo/cli/plugins/site_functions.py | 116 +++++++++++------------ wo/cli/plugins/stack.py | 148 +++++++++++++++--------------- wo/cli/plugins/stack_migrate.py | 12 +-- wo/cli/plugins/stack_pref.py | 152 +++++++++++++++---------------- wo/cli/plugins/stack_services.py | 22 ++--- wo/cli/plugins/stack_upgrade.py | 44 ++++----- wo/core/acme.py | 8 +- wo/core/apt_repo.py | 6 +- wo/core/checkfqdn.py | 8 +- wo/core/database.py | 4 +- wo/core/domainvalidate.py | 3 +- wo/core/mysql.py | 4 +- wo/core/sslutils.py | 10 +- wo/core/template.py | 2 + wo/core/variables.py | 40 +++++--- 22 files changed, 371 insertions(+), 374 deletions(-) delete mode 100644 requirements-dev-py3.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 18bca5a..e2a7421 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - [STACK] Nginx ultimate bad bots blocker with `wo stack install --ngxblocker` - [STACK] Added support for custom Nginx compiled from source +#### Changed + +- [CORE] Query acme.sh database directly to check if a certificate exist + +#### Fixed + +- [SITE] Issues with root_domain variable with `wo site update` + ### v3.9.9.1 - 2019-09-26 #### Added diff --git a/requirements-dev-py3.txt b/requirements-dev-py3.txt deleted file mode 100644 index 38fec85..0000000 --- a/requirements-dev-py3.txt +++ /dev/null @@ -1,21 +0,0 @@ -# The following are only required in development, not production -nose -coverage -sphinx -pep8 -autopep8 -mock -pyinotify - -# Required for optional extensions (only the ones supported on py3) -argcomplete -pystache -pyYaml -colorlog -configobj -tabulate -pylibmc -redis -jinja2 -watchdog -pybars3 \ No newline at end of file diff --git a/wo/cli/controllers/base.py b/wo/cli/controllers/base.py index 62c9587..9558442 100644 --- a/wo/cli/controllers/base.py +++ b/wo/cli/controllers/base.py @@ -2,9 +2,9 @@ from cement.core.controller import CementBaseController, expose -from wo.core.variables import WOVariables +from wo.core.variables import WOVar -VERSION = WOVariables.wo_version +VERSION = WOVar.wo_version BANNER = """ WordOps v%s diff --git a/wo/cli/plugins/debug.py b/wo/cli/plugins/debug.py index 51744ee..c54dccb 100644 --- a/wo/cli/plugins/debug.py +++ b/wo/cli/plugins/debug.py @@ -16,7 +16,7 @@ from wo.core.logging import Log from wo.core.mysql import WOMysql from wo.core.services import WOService from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar def wo_debug_hook(app): @@ -146,7 +146,7 @@ class WODebugController(CementBaseController): Log.info(self, "Nginx debug for site already enabled") self.msg = self.msg + ['{0}{1}/logs/error.log' - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] else: @@ -446,14 +446,14 @@ class WODebugController(CementBaseController): """Start/Stop WordPress debug""" if (self.app.pargs.wp == 'on' and self.app.pargs.site_name): wp_config = ("{0}/{1}/wp-config.php" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)) - webroot = "{0}{1}".format(WOVariables.wo_webroot, + webroot = "{0}{1}".format(WOVar.wo_webroot, self.app.pargs.site_name) # Check wp-config.php file into htdocs folder if not os.path.isfile(wp_config): wp_config = ("{0}/{1}/htdocs/wp-config.php" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)) if os.path.isfile(wp_config): if not WOShellExec.cmd_exec(self, "grep \"\'WP_DEBUG\'\" {0} |" @@ -464,7 +464,7 @@ class WODebugController(CementBaseController): WOShellExec.cmd_exec(self, "chown {1}: {0}/htdocs/wp-" "content/debug.log" "".format(webroot, - WOVariables.wo_php_user)) + WOVar.wo_php_user)) WOShellExec.cmd_exec(self, "sed -i \"s/define(\'WP_DEBUG\'" ".*/define(\'WP_DEBUG\', true);\\n" "define(\'WP_DEBUG_DISPLAY\', false);" @@ -478,11 +478,11 @@ class WODebugController(CementBaseController): WOShellExec.cmd_exec(self, "chown -R {1}: {0}/htdocs/" "wp-content/plugins" .format(webroot, - WOVariables.wo_php_user)) + WOVar.wo_php_user)) self.msg = self.msg + ['{0}{1}/htdocs/wp-content' '/debug.log' - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] else: @@ -491,14 +491,14 @@ class WODebugController(CementBaseController): elif (self.app.pargs.wp == 'off' and self.app.pargs.site_name): wp_config = ("{0}{1}/wp-config.php" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)) - webroot = "{0}{1}".format(WOVariables.wo_webroot, + webroot = "{0}{1}".format(WOVar.wo_webroot, self.app.pargs.site_name) # Check wp-config.php file into htdocs folder if not os.path.isfile(wp_config): wp_config = ("{0}/{1}/htdocs/wp-config.php" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)) if os.path.isfile(wp_config): if WOShellExec.cmd_exec(self, "grep \"\'WP_DEBUG\'\" {0} | " @@ -565,11 +565,11 @@ class WODebugController(CementBaseController): Log.info(self, "Nginx rewrite logs for {0} already setup" .format(self.app.pargs.site_name)) - if ('{0}{1}/logs/error.log'.format(WOVariables.wo_webroot, + if ('{0}{1}/logs/error.log'.format(WOVar.wo_webroot, self.app.pargs.site_name) not in self.msg): self.msg = self.msg + ['{0}{1}/logs/error.log' - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] # Stop Nginx rewrite for site @@ -608,7 +608,7 @@ class WODebugController(CementBaseController): self.debug_fpm73() if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL - if WOVariables.wo_mysql_host is "localhost": + if WOVar.wo_mysql_host is "localhost": self.app.pargs.mysql = 'off' self.debug_mysql() else: @@ -756,7 +756,7 @@ class WODebugController(CementBaseController): self.debug_fpm73() if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL - if WOVariables.wo_mysql_host == "localhost": + if WOVar.wo_mysql_host == "localhost": self.debug_mysql() else: Log.warn(self, "Remote MySQL found, WordOps does not support " @@ -796,22 +796,22 @@ class WODebugController(CementBaseController): def import_slow_log(self): """Default function for import slow log""" if os.path.isdir("{0}22222/htdocs/db/anemometer" - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): if os.path.isfile("/var/log/mysql/mysql-slow.log"): # Get Anemometer user name and password Log.info(self, "Importing MySQL slow log to Anemometer") host = os.popen("grep -e \"\'host\'\" {0}22222/htdocs/" - .format(WOVariables.wo_webroot) + + .format(WOVar.wo_webroot) + "db/anemometer/conf/config.inc.php " "| head -1 | cut -d\\\' -f4 | " "tr -d '\n'").read() user = os.popen("grep -e \"\'user\'\" {0}22222/htdocs/" - .format(WOVariables.wo_webroot) + + .format(WOVar.wo_webroot) + "db/anemometer/conf/config.inc.php " "| head -1 | cut -d\\\' -f4 | " "tr -d '\n'").read() password = os.popen("grep -e \"\'password\'\" {0}22222/" - .format(WOVariables.wo_webroot) + + .format(WOVar.wo_webroot) + "htdocs/db/anemometer/conf" "/config.inc.php " "| head -1 | cut -d\\\' -f4 | " diff --git a/wo/cli/plugins/log.py b/wo/cli/plugins/log.py index 8c6ee23..838f5cb 100644 --- a/wo/cli/plugins/log.py +++ b/wo/cli/plugins/log.py @@ -13,7 +13,7 @@ from wo.core.logging import Log from wo.core.mysql import WOMysql from wo.core.sendmail import WOSendMail from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar def wo_log_hook(app): @@ -99,7 +99,7 @@ class WOLogShowController(CementBaseController): '/var/log/php5/fpm.log'] if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL - if WOVariables.wo_mysql_host == "localhost": + if WOVar.wo_mysql_host == "localhost": if os.path.isfile('/var/log/mysql/mysql-slow.log'): self.msg = self.msg + ['/var/log/mysql/mysql-slow.log'] else: @@ -109,18 +109,18 @@ class WOLogShowController(CementBaseController): "remote MySQL servers or log files") if self.app.pargs.site_name: - webroot = "{0}{1}".format(WOVariables.wo_webroot, + webroot = "{0}{1}".format(WOVar.wo_webroot, self.app.pargs.site_name) if not os.path.isdir(webroot): Log.error(self, "Site not present, quitting") if self.app.pargs.access: self.msg = self.msg + ["{0}/{1}/logs/access.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.nginx: self.msg = self.msg + ["{0}/{1}/logs/error.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.wp: if os.path.isdir('{0}/htdocs/wp-content'.format(webroot)): @@ -134,7 +134,7 @@ class WOLogShowController(CementBaseController): WOShellExec.cmd_exec(self, "chown {1}: {0}/htdocs/" "wp-content/debug.log" "".format(webroot, - WOVariables + WOVar .wo_php_user) ) # create symbolic link for debug log @@ -145,7 +145,7 @@ class WOLogShowController(CementBaseController): .format(webroot)]) self.msg = self.msg + ["{0}/{1}/logs/debug.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] else: Log.info(self, "Site is not WordPress site, skipping " @@ -238,7 +238,7 @@ class WOLogResetController(CementBaseController): '/var/log/php5/fpm.log'] if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL - if WOVariables.wo_mysql_host == "localhost": + if WOVar.wo_mysql_host == "localhost": if os.path.isfile('/var/log/mysql/mysql-slow.log'): self.msg = self.msg + ['/var/log/mysql/mysql-slow.log'] else: @@ -248,18 +248,18 @@ class WOLogResetController(CementBaseController): "remote MySQL servers or log files") if self.app.pargs.site_name: - webroot = "{0}{1}".format(WOVariables.wo_webroot, + webroot = "{0}{1}".format(WOVar.wo_webroot, self.app.pargs.site_name) if not os.path.isdir(webroot): Log.error(self, "Site not present, quitting") if self.app.pargs.access: self.msg = self.msg + ["{0}/{1}/logs/access.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.nginx: self.msg = self.msg + ["{0}/{1}/logs/error.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.wp: if os.path.isdir('{0}/htdocs/wp-content'.format(webroot)): @@ -273,7 +273,7 @@ class WOLogResetController(CementBaseController): WOShellExec.cmd_exec(self, "chown {1}: {0}/htdocs/" "wp-content/debug.log" "".format(webroot, - WOVariables + WOVar .wo_php_user) ) # create symbolic link for debug log @@ -284,7 +284,7 @@ class WOLogResetController(CementBaseController): .format(webroot)]) self.msg = self.msg + ["{0}/{1}/logs/debug.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] else: Log.info(self, "Site is not WordPress site, skipping " @@ -366,7 +366,7 @@ class WOLogGzipController(CementBaseController): '/var/log/php5/fpm.log'] if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL - if WOVariables.wo_mysql_host == "localhost": + if WOVar.wo_mysql_host == "localhost": if os.path.isfile('/var/log/mysql/mysql-slow.log'): self.msg = self.msg + ['/var/log/mysql/mysql-slow.log'] else: @@ -377,18 +377,18 @@ class WOLogGzipController(CementBaseController): "remote MySQL servers or log files") if self.app.pargs.site_name: - webroot = "{0}{1}".format(WOVariables.wo_webroot, + webroot = "{0}{1}".format(WOVar.wo_webroot, self.app.pargs.site_name) if not os.path.isdir(webroot): Log.error(self, "Site not present, quitting") if self.app.pargs.access: self.msg = self.msg + ["{0}/{1}/logs/access.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.nginx: self.msg = self.msg + ["{0}/{1}/logs/error.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.wp: if os.path.isdir('{0}/htdocs/wp-content'.format(webroot)): @@ -402,7 +402,7 @@ class WOLogGzipController(CementBaseController): WOShellExec.cmd_exec(self, "chown {1}: {0}/htdocs/" "wp-content/debug.log" "".format(webroot, - WOVariables + WOVar .wo_php_user) ) # create symbolic link for debug log @@ -413,7 +413,7 @@ class WOLogGzipController(CementBaseController): .format(webroot)]) self.msg = self.msg + ["{0}/{1}/logs/debug.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] else: Log.info(self, "Site is not WordPress site, skipping " @@ -504,7 +504,7 @@ class WOLogMailController(CementBaseController): '/var/log/php5/fpm.log'] if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL - if WOVariables.wo_mysql_host == "localhost": + if WOVar.wo_mysql_host == "localhost": if os.path.isfile('/var/log/mysql/mysql-slow.log'): self.msg = self.msg + ['/var/log/mysql/mysql-slow.log'] else: @@ -514,18 +514,18 @@ class WOLogMailController(CementBaseController): "remote MySQL servers or log files") if self.app.pargs.site_name: - webroot = "{0}{1}".format(WOVariables.wo_webroot, + webroot = "{0}{1}".format(WOVar.wo_webroot, self.app.pargs.site_name) if not os.path.isdir(webroot): Log.error(self, "Site not present, quitting") if self.app.pargs.access: self.msg = self.msg + ["{0}/{1}/logs/access.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.nginx: self.msg = self.msg + ["{0}/{1}/logs/error.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] if self.app.pargs.wp: if os.path.isdir('{0}/htdocs/wp-content'.format(webroot)): @@ -539,7 +539,7 @@ class WOLogMailController(CementBaseController): WOShellExec.cmd_exec(self, "chown {1}: {0}/htdocs/" "wp-content/debug.log" "".format(webroot, - WOVariables + WOVar .wo_php_user) ) # create symbolic link for debug log @@ -550,7 +550,7 @@ class WOLogMailController(CementBaseController): .format(webroot)]) self.msg = self.msg + ["{0}/{1}/logs/debug.log" - .format(WOVariables.wo_webroot, + .format(WOVar.wo_webroot, self.app.pargs.site_name)] else: Log.info(self, "Site is not WordPress site, skipping " @@ -563,7 +563,7 @@ class WOLogMailController(CementBaseController): for tomail in self.app.pargs.to: Log.info(self, "Sending mail to {0}".format(tomail[0])) WOSendMail("wordops", tomail[0], "{0} Log Files" - .format(WOVariables.wo_fqdn), + .format(WOVar.wo_fqdn), "Hi,\n The requested logfiles are attached." "\n\nBest regards,\nYour WordOps worker", files=mail_list, port=25, isTls=False) diff --git a/wo/cli/plugins/secure.py b/wo/cli/plugins/secure.py index e2b21ef..889f765 100644 --- a/wo/cli/plugins/secure.py +++ b/wo/cli/plugins/secure.py @@ -11,7 +11,7 @@ from wo.core.random import RANDOM from wo.core.services import WOService from wo.core.shellexec import WOShellExec from wo.core.template import WOTemplate -from wo.core.variables import WOVariables +from wo.core.variables import WOVar def wo_secure_hook(app): @@ -73,10 +73,10 @@ class WOSecureController(CementBaseController): passwd = RANDOM.gen(self, length='24') if not pargs.user_input: username = input("Provide HTTP authentication user " - "name [{0}] :".format(WOVariables.wo_user)) + "name [{0}] :".format(WOVar.wo_user)) pargs.user_input = username if username == "": - pargs.user_input = WOVariables.wo_user + pargs.user_input = WOVar.wo_user if not pargs.user_pass: password = getpass.getpass("Provide HTTP authentication " "password [{0}] :".format(passwd)) diff --git a/wo/cli/plugins/site.py b/wo/cli/plugins/site.py index 18036e4..27c89a7 100644 --- a/wo/cli/plugins/site.py +++ b/wo/cli/plugins/site.py @@ -17,7 +17,7 @@ from wo.core.nginxhashbucket import hashbucket from wo.core.services import WOService from wo.core.shellexec import WOShellExec from wo.core.sslutils import SSL -from wo.core.variables import WOVariables +from wo.core.variables import WOVar def wo_site_hook(app): @@ -56,8 +56,7 @@ class WOSiteController(CementBaseController): pargs.site_name = pargs.site_name.strip() # validate domain name - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) # check if site exists if not check_domain_exists(self, wo_domain): @@ -94,8 +93,7 @@ class WOSiteController(CementBaseController): Log.debug(self, str(e)) Log.error(self, 'could not input site name') pargs.site_name = pargs.site_name.strip() - (wo_domain, wo_www_domain) = WODomain.validate(self, - pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) # check if site exists if not check_domain_exists(self, wo_domain): Log.error(self, "site {0} does not exist".format(wo_domain)) @@ -135,8 +133,7 @@ class WOSiteController(CementBaseController): Log.debug(self, str(e)) Log.error(self, 'could not input site name') pargs.site_name = pargs.site_name.strip() - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) (wo_domain_type, wo_root_domain) = WODomain.getlevel( self, wo_domain) wo_db_name = '' @@ -189,8 +186,7 @@ class WOSiteController(CementBaseController): def log(self): pargs = self.app.pargs pargs.site_name = pargs.site_name.strip() - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) wo_site_webroot = getSiteInfo(self, wo_domain).site_path if not check_domain_exists(self, wo_domain): @@ -212,8 +208,7 @@ class WOSiteController(CementBaseController): Log.error(self, 'could not input site name') # TODO Write code for wo site edit command here pargs.site_name = pargs.site_name.strip() - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) if not check_domain_exists(self, wo_domain): Log.error(self, "site {0} does not exist".format(wo_domain)) @@ -244,8 +239,7 @@ class WOSiteController(CementBaseController): Log.error(self, 'Unable to read input, please try again') pargs.site_name = pargs.site_name.strip() - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) if not check_domain_exists(self, wo_domain): Log.error(self, "site {0} does not exist".format(wo_domain)) @@ -285,13 +279,12 @@ class WOSiteEditController(CementBaseController): Log.error(self, 'Unable to read input, Please try again') pargs.site_name = pargs.site_name.strip() - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) if not check_domain_exists(self, wo_domain): Log.error(self, "site {0} does not exist".format(wo_domain)) - wo_site_webroot = WOVariables.wo_webroot + wo_domain + wo_site_webroot = WOVar.wo_webroot + wo_domain if os.path.isfile('/etc/nginx/sites-available/{0}' .format(wo_domain)): @@ -436,13 +429,12 @@ class WOSiteCreateController(CementBaseController): Log.error(self, "Unable to input site name, Please try again!") pargs.site_name = pargs.site_name.strip() - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) if not wo_domain.strip(): Log.error(self, "Invalid domain name, " "Provide valid domain name") - wo_site_webroot = WOVariables.wo_webroot + wo_domain + wo_site_webroot = WOVar.wo_webroot + wo_domain if check_domain_exists(self, wo_domain): Log.error(self, "site {0} already exists".format(wo_domain)) @@ -991,9 +983,8 @@ class WOSiteUpdateController(CementBaseController): Log.error(self, 'Unable to input site name, Please try again!') pargs.site_name = pargs.site_name.strip() - (wo_domain, - wo_www_domain) = WODomain.validate(self, pargs.site_name) - wo_site_webroot = WOVariables.wo_webroot + wo_domain + wo_domain = WODomain.validate(self, pargs.site_name) + wo_site_webroot = WOVar.wo_webroot + wo_domain check_site = getSiteInfo(self, wo_domain) if check_site is None: @@ -1958,7 +1949,7 @@ class WOSiteDeleteController(CementBaseController): Log.error(self, 'could not input site name') pargs.site_name = pargs.site_name.strip() - (wo_domain, wo_www_domain) = WODomain.validate(self, pargs.site_name) + wo_domain = WODomain.validate(self, pargs.site_name) wo_db_name = '' wo_prompt = '' wo_nginx_prompt = '' diff --git a/wo/cli/plugins/site_functions.py b/wo/cli/plugins/site_functions.py index 62320cc..472bcfa 100644 --- a/wo/cli/plugins/site_functions.py +++ b/wo/cli/plugins/site_functions.py @@ -22,7 +22,7 @@ from wo.core.mysql import (MySQLConnectionError, StatementExcecutionError, from wo.core.services import WOService from wo.core.shellexec import CommandExecutionError, WOShellExec from wo.core.sslutils import SSL -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class SiteError(Exception): @@ -229,7 +229,7 @@ def setupdatabase(self, data): data['wo_db_name'] = wo_db_name data['wo_db_user'] = wo_db_username data['wo_db_pass'] = wo_db_password - data['wo_db_host'] = WOVariables.wo_mysql_host + data['wo_db_host'] = WOVar.wo_mysql_host data['wo_mysql_grant_host'] = wo_mysql_grant_host return(data) @@ -295,7 +295,7 @@ def setupwordpress(self, data, vhostonly=False): if not data['multisite']: Log.debug(self, "Generating wp-config for WordPress Single site") Log.debug(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config create " + "--dbname=\'{0}\' --dbprefix=\'{1}\' --dbuser=\'{2}\' " "--dbhost=\'{3}\' " @@ -307,7 +307,7 @@ def setupwordpress(self, data, vhostonly=False): "\n\ndefine(\'WP_DEBUG\', false);")) try: if WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root" - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + " config create " + "--dbname=\'{0}\' --dbprefix=\'{1}\' " "--dbuser=\'{2}\' --dbhost=\'{3}\' " @@ -330,7 +330,7 @@ def setupwordpress(self, data, vhostonly=False): else: Log.debug(self, "Generating wp-config for WordPress multisite") Log.debug(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config create " + "--dbname=\'{0}\' --dbprefix=\'{1}\' --dbhost=\'{2}\' " .format(data['wo_db_name'], @@ -345,7 +345,7 @@ def setupwordpress(self, data, vhostonly=False): "\n\ndefine(\'WP_DEBUG\', false);")) try: if WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root" - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + " config create " + "--dbname=\'{0}\' --dbprefix=\'{1}\' " "--dbhost=\'{2}\' " @@ -370,36 +370,36 @@ def setupwordpress(self, data, vhostonly=False): try: WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set WP_CACHE_KEY_SALT " "\'{0}:\'\"".format(wo_domain_name)) WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set WP_MEMORY_LIMIT " "\'128M\'\"") WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set WP_MAX_MEMORY_LIMIT " "\'256M\'\"") WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set CONCATENATE_SCRIPTS " "false --raw\"") WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set WP_POST_REVISIONS " "\'10\'\"") WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set MEDIA_TRASH " "true --raw\"") WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set EMPTY_TRASH_DAYS " "\'15\'\"") WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "config set WP_AUTO_UPDATE_CORE " "minor\"") @@ -426,7 +426,7 @@ def setupwordpress(self, data, vhostonly=False): raise SiteError("Unable to move wp-config.php") if not wo_wp_user: - wo_wp_user = WOVariables.wo_user + wo_wp_user = WOVar.wo_user while not wo_wp_user: Log.warn(self, "Username can have only alphanumeric" "characters, spaces, underscores, hyphens," @@ -439,7 +439,7 @@ def setupwordpress(self, data, vhostonly=False): wo_wp_pass = wo_random_pass if not wo_wp_email: - wo_wp_email = WOVariables.wo_email + wo_wp_email = WOVar.wo_email while not wo_wp_email: try: wo_wp_email = input('Enter WordPress email: ') @@ -460,14 +460,14 @@ def setupwordpress(self, data, vhostonly=False): if not data['multisite']: Log.debug(self, "Creating tables for WordPress Single site") Log.debug(self, "{0} --allow-root core install " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--url=\'{0}\' --title=\'{0}\' --admin_name=\'{1}\' " .format(data['www_domain'], wo_wp_user) + "--admin_password= --admin_email=\'{1}\'" .format(wo_wp_pass, wo_wp_email)) try: if WOShellExec.cmd_exec(self, "{0} --allow-root core " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "install --url=\'{0}\' --title=\'{0}\' " "--admin_name=\'{1}\' " .format(data['www_domain'], wo_wp_user) + @@ -484,7 +484,7 @@ def setupwordpress(self, data, vhostonly=False): else: Log.debug(self, "Creating tables for WordPress multisite") Log.debug(self, "{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "core multisite-install " "--url=\'{0}\' --title=\'{0}\' --admin_name=\'{1}\' " .format(data['www_domain'], wo_wp_user) + @@ -495,7 +495,7 @@ def setupwordpress(self, data, vhostonly=False): if not data['wpsubdir'] else '')) try: if WOShellExec.cmd_exec(self, "{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "core multisite-install " "--url=\'{0}\' --title=\'{0}\' " "--admin_name=\'{1}\' " @@ -517,7 +517,7 @@ def setupwordpress(self, data, vhostonly=False): Log.debug(self, "Updating WordPress permalink") try: WOShellExec.cmd_exec(self, " {0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "rewrite structure " "/%postname%/") except CommandExecutionError as e: @@ -608,7 +608,7 @@ def setupwordpress(self, data, vhostonly=False): if vhostonly: try: WOShellExec.cmd_exec(self, "/bin/bash -c \"{0} --allow-root " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "db clean --yes\"") WOFileUtils.rm(self, "{0}/htdocs".format(wo_site_webroot)) WOFileUtils.mkdir(self, "{0}/htdocs".format(wo_site_webroot)) @@ -653,7 +653,7 @@ def installwp_plugin(self, plugin_name, data): WOFileUtils.chdir(self, '{0}/htdocs/'.format(wo_site_webroot)) try: WOShellExec.cmd_exec(self, "{0} plugin " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--allow-root install " "{0}".format(plugin_name)) except CommandExecutionError as e: @@ -662,7 +662,7 @@ def installwp_plugin(self, plugin_name, data): try: WOShellExec.cmd_exec(self, "{0} plugin " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--allow-root activate " "{0} {na}" .format(plugin_name, @@ -689,12 +689,12 @@ def uninstallwp_plugin(self, plugin_name, data): .format(plugin_name)) try: WOShellExec.cmd_exec(self, "{0} plugin " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--allow-root deactivate " "{0}".format(plugin_name)) WOShellExec.cmd_exec(self, "{0} plugin " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--allow-root uninstall " "{0}".format(plugin_name)) except CommandExecutionError as e: @@ -716,7 +716,7 @@ def setupwp_plugin(self, plugin_name, plugin_option, plugin_data, data): if not data['multisite']: try: WOShellExec.cmd_exec(self, "{0} " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--allow-root option update " "{0} \'{1}\' --format=json" .format(plugin_option, plugin_data)) @@ -731,7 +731,7 @@ def setupwp_plugin(self, plugin_name, plugin_option, plugin_data, data): else: try: WOShellExec.cmd_exec(self, "{0} " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--allow-root network meta update 1 " "{0} \'{1}\' --format=json" .format(plugin_option, plugin_data @@ -750,8 +750,8 @@ def setwebrootpermissions(self, webroot): Log.debug(self, "Setting up permissions") try: WOFileUtils.findBrokenSymlink(self, '/var/www/') - WOFileUtils.chown(self, webroot, WOVariables.wo_php_user, - WOVariables.wo_php_user, recursive=True) + WOFileUtils.chown(self, webroot, WOVar.wo_php_user, + WOVar.wo_php_user, recursive=True) except Exception as e: Log.debug(self, str(e)) raise SiteError("problem occured while setting up webroot permissions") @@ -759,7 +759,7 @@ def setwebrootpermissions(self, webroot): def sitebackup(self, data): wo_site_webroot = data['webroot'] - backup_path = wo_site_webroot + '/backup/{0}'.format(WOVariables.wo_date) + backup_path = wo_site_webroot + '/backup/{0}'.format(WOVar.wo_date) if not WOFileUtils.isexist(self, backup_path): WOFileUtils.mkdir(self, backup_path) Log.info(self, "Backup location : {0}".format(backup_path)) @@ -836,8 +836,8 @@ def site_package_check(self, stype): # do something # do post nginx installation configuration Log.info(self, "NGINX PLUS Detected ...") - apt = ["nginx-plus"] + WOVariables.wo_nginx - # apt_packages = apt_packages + WOVariables.wo_nginx + apt = ["nginx-plus"] + WOVar.wo_nginx + # apt_packages = apt_packages + WOVar.wo_nginx stack.post_pref(self, apt, packages) elif WOAptGet.is_installed(self, 'nginx'): Log.info(self, "WordOps detected a previously" @@ -845,13 +845,13 @@ def site_package_check(self, stype): "It may or may not have required modules. " "\nIf you need help, please create an issue at " "https://github.com/WordOps/WordOps/issues/ \n") - apt = ["nginx"] + WOVariables.wo_nginx - # apt_packages = apt_packages + WOVariables.wo_nginx + apt = ["nginx"] + WOVar.wo_nginx + # apt_packages = apt_packages + WOVar.wo_nginx post_pref(self, apt, packages) elif os.path.isfile('/usr/sbin/nginx'): - post_pref(self, WOVariables.wo_nginx, []) + post_pref(self, WOVar.wo_nginx, []) else: - apt_packages = apt_packages + WOVariables.wo_nginx + apt_packages = apt_packages + WOVar.wo_nginx else: # Fix for Nginx white screen death if not WOFileUtils.grep(self, '/etc/nginx/fastcgi_params', @@ -871,26 +871,26 @@ def site_package_check(self, stype): Log.debug(self, "Setting apt_packages variable for PHP 7.2") if not WOAptGet.is_installed(self, 'php7.2-fpm'): if not WOAptGet.is_installed(self, 'php7.3-fpm'): - apt_packages = apt_packages + WOVariables.wo_php + \ - WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php + \ + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php + apt_packages = apt_packages + WOVar.wo_php if self.app.pargs.php73 and stype in ['mysql', 'wp', 'wpsubdir', 'wpsubdomain']: Log.debug(self, "Setting apt_packages variable for PHP 7.3") if not WOAptGet.is_installed(self, 'php7.3-fpm'): if not WOAptGet.is_installed(self, 'php7.2-fpm'): - apt_packages = apt_packages + WOVariables.wo_php + \ - WOVariables.wo_php73 + WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php + \ + WOVar.wo_php73 + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php73 + apt_packages = apt_packages + WOVar.wo_php73 if stype in ['mysql', 'wp', 'wpsubdir', 'wpsubdomain']: Log.debug(self, "Setting apt_packages variable for MySQL") if not WOShellExec.cmd_exec(self, "/usr/bin/mysqladmin ping"): - if not WOVariables.wo_distro == 'raspbian': - if (not WOVariables.wo_platform_codename == 'jessie'): + if not WOVar.wo_distro == 'raspbian': + if (not WOVar.wo_platform_codename == 'jessie'): wo_mysql = ["mariadb-server", "percona-toolkit", "python3-mysqldb", "mariadb-backup"] else: @@ -907,7 +907,7 @@ def site_package_check(self, stype): packages = packages + [["https://github.com/wp-cli/wp-cli/" "releases/download/v{0}/" "wp-cli-{0}.phar" - .format(WOVariables.wo_wp_cli), + .format(WOVar.wo_wp_cli), "/usr/local/bin/wp", "WP-CLI"]] if self.app.pargs.wpredis: Log.debug(self, "Setting apt_packages variable for redis") @@ -918,10 +918,10 @@ def site_package_check(self, stype): Log.debug(self, "Setting apt_packages variable for PHP 7.3") if not WOAptGet.is_installed(self, 'php7.3-fpm'): if not WOAptGet.is_installed(self, 'php7.2-fpm'): - apt_packages = apt_packages + WOVariables.wo_php + \ - WOVariables.wo_php73 + WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php + \ + WOVar.wo_php73 + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php73 + apt_packages = apt_packages + WOVar.wo_php73 if self.app.pargs.ngxblocker: if not os.path.isdir('/etc/nginx/bots.d'): @@ -1293,9 +1293,9 @@ def removeAcmeConf(self, domain): Log.error(self, "Cert removal failed") WOFileUtils.rm(self, '{0}/{1}_ecc' - .format(WOVariables.wo_ssl_archive, domain)) + .format(WOVar.wo_ssl_archive, domain)) WOFileUtils.rm(self, '{0}/{1}' - .format(WOVariables.wo_ssl_live, domain)) + .format(WOVar.wo_ssl_live, domain)) WOFileUtils.rm(self, '{0}'.format(sslconf)) WOFileUtils.rm(self, '{0}.disabled'.format(sslconf)) WOFileUtils.rm(self, '{0}'.format(sslforce)) @@ -1502,7 +1502,7 @@ def archivedCertificateHandle(self, domain): self, "You already have an existing certificate " "for the domain requested.\n" "(ref: {0}/" - "{1}_ecc/{1}.conf)".format(WOVariables.wo_ssl_archive, domain) + + "{1}_ecc/{1}.conf)".format(WOVar.wo_ssl_archive, domain) + "\nPlease select an option from below?" "\n\t1: Reinstall existing certificate" "\n\t2: Issue a new certificate to replace " @@ -1511,10 +1511,10 @@ def archivedCertificateHandle(self, domain): check_prompt = input( "\nType the appropriate number [1-2] or any other key to cancel: ") if not os.path.isfile("{0}/{1}/fullchain.pem" - .format(WOVariables.wo_ssl_live, domain)): + .format(WOVar.wo_ssl_live, domain)): Log.error( self, "{0}/{1}/fullchain.pem file is missing." - .format(WOVariables.wo_ssl_live, domain)) + .format(WOVar.wo_ssl_live, domain)) if check_prompt == "1": Log.info(self, "Reinstalling SSL cert with acme.sh") @@ -1539,7 +1539,7 @@ def archivedCertificateHandle(self, domain): "ssl_certificate_key {0}/{1}/key.pem;\n" "ssl_trusted_certificate {0}/{1}/ca.pem;\n" "ssl_stapling_verify on;\n" - .format(WOVariables.wo_ssl_live, domain)) + .format(WOVar.wo_ssl_live, domain)) sslconf.close() except IOError as e: @@ -1573,7 +1573,7 @@ def archivedCertificateHandle(self, domain): "{0}/{1}/ca.pem;\n" "--reloadcmd " "\"nginx -t && service nginx restart\" " - .format(WOVariables.wo_ssl_live, domain)) + .format(WOVar.wo_ssl_live, domain)) except IOError as e: Log.debug(self, str(e)) @@ -1595,8 +1595,8 @@ def archivedCertificateHandle(self, domain): def setuprocketchat(self): - if ((not WOVariables.wo_platform_codename == 'bionic') and - (not WOVariables.wo_platform_codename == 'xenial')): + if ((not WOVar.wo_platform_codename == 'bionic') and + (not WOVar.wo_platform_codename == 'xenial')): Log.info(self, "Rocket.chat is only available on Ubuntu 16.04 " "& 18.04 LTS") return False diff --git a/wo/cli/plugins/stack.py b/wo/cli/plugins/stack.py index b690777..ab75744 100644 --- a/wo/cli/plugins/stack.py +++ b/wo/cli/plugins/stack.py @@ -18,7 +18,7 @@ from wo.core.logging import Log from wo.core.mysql import WOMysql from wo.core.services import WOService from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar def wo_stack_hook(app): @@ -163,18 +163,18 @@ class WOStackController(CementBaseController): if not (WOAptGet.is_installed(self, 'nginx-plus') or WOAptGet.is_installed(self, 'nginx')): if not os.path.isfile('/usr/sbin/nginx'): - apt_packages = apt_packages + WOVariables.wo_nginx + apt_packages = apt_packages + WOVar.wo_nginx else: if WOAptGet.is_installed(self, 'nginx-plus'): Log.info(self, "NGINX PLUS Detected ...") - apt = ["nginx-plus"] + WOVariables.wo_nginx + apt = ["nginx-plus"] + WOVar.wo_nginx self.post_pref(apt, empty_packages) elif WOAptGet.is_installed(self, 'nginx'): Log.info(self, "WordOps detected an already " "installed nginx package." "It may or may not have " "required modules.\n") - apt = ["nginx"] + WOVariables.wo_nginx + apt = ["nginx"] + WOVar.wo_nginx self.post_pref(apt, empty_packages) else: Log.debug(self, "Nginx already installed") @@ -182,7 +182,7 @@ class WOStackController(CementBaseController): # Redis if pargs.redis: if not WOAptGet.is_installed(self, 'redis-server'): - apt_packages = apt_packages + WOVariables.wo_redis + apt_packages = apt_packages + WOVar.wo_redis else: Log.info(self, "Redis already installed") @@ -191,8 +191,8 @@ class WOStackController(CementBaseController): if pargs.php: Log.debug(self, "Setting apt_packages variable for PHP 7.2") if not (WOAptGet.is_installed(self, 'php7.2-fpm')): - apt_packages = (apt_packages + WOVariables.wo_php + - WOVariables.wo_php_extra) + apt_packages = (apt_packages + WOVar.wo_php + + WOVar.wo_php_extra) else: Log.debug(self, "PHP 7.2 already installed") Log.info(self, "PHP 7.2 already installed") @@ -201,9 +201,9 @@ class WOStackController(CementBaseController): if pargs.php73: Log.debug(self, "Setting apt_packages variable for PHP 7.3") if not WOAptGet.is_installed(self, 'php7.3-fpm'): - apt_packages = (apt_packages + WOVariables.wo_php + - WOVariables.wo_php73 + - WOVariables.wo_php_extra) + apt_packages = (apt_packages + WOVar.wo_php + + WOVar.wo_php73 + + WOVar.wo_php_extra) else: Log.debug(self, "PHP 7.3 already installed") Log.info(self, "PHP 7.3 already installed") @@ -213,7 +213,7 @@ class WOStackController(CementBaseController): pargs.mysqltuner = True Log.debug(self, "Setting apt_packages variable for MySQL") if not WOShellExec.cmd_exec(self, "mysqladmin ping"): - apt_packages = apt_packages + WOVariables.wo_mysql + apt_packages = apt_packages + WOVar.wo_mysql else: Log.debug(self, "MySQL already installed and alive") Log.info(self, "MySQL already installed and alive") @@ -223,7 +223,7 @@ class WOStackController(CementBaseController): Log.debug(self, "Setting apt_packages variable " "for MySQL Client") if not WOShellExec.cmd_exec(self, "mysqladmin ping"): - apt_packages = apt_packages + WOVariables.wo_mysql_client + apt_packages = apt_packages + WOVar.wo_mysql_client else: Log.debug(self, "MySQL already installed and alive") Log.info(self, "MySQL already installed and alive") @@ -236,7 +236,7 @@ class WOStackController(CementBaseController): packages = packages + [["https://github.com/wp-cli/wp-cli/" "releases/download/v{0}/" "wp-cli-{0}.phar" - "".format(WOVariables.wo_wp_cli), + "".format(WOVar.wo_wp_cli), "/usr/local/bin/wp", "WP-CLI"]] else: @@ -247,7 +247,7 @@ class WOStackController(CementBaseController): if pargs.fail2ban: Log.debug(self, "Setting apt_packages variable for Fail2ban") if not WOAptGet.is_installed(self, 'fail2ban'): - apt_packages = apt_packages + WOVariables.wo_fail2ban + apt_packages = apt_packages + WOVar.wo_fail2ban else: Log.debug(self, "Fail2ban already installed") Log.info(self, "Fail2ban already installed") @@ -256,7 +256,7 @@ class WOStackController(CementBaseController): if pargs.clamav: Log.debug(self, "Setting apt_packages variable for ClamAV") if not WOAptGet.is_installed(self, 'clamav'): - apt_packages = apt_packages + WOVariables.wo_clamav + apt_packages = apt_packages + WOVar.wo_clamav else: Log.debug(self, "ClamAV already installed") Log.info(self, "ClamAV already installed") @@ -346,17 +346,17 @@ class WOStackController(CementBaseController): packages = packages + [["https://github.com/vrana/adminer/" "releases/download/v{0}" "/adminer-{0}.php" - .format(WOVariables.wo_adminer), + .format(WOVar.wo_adminer), "{0}22222/" "htdocs/db/adminer/index.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "Adminer"], ["https://raw.githubusercontent.com" "/vrana/adminer/master/designs/" "pepa-linha/adminer.css", "{0}22222/" "htdocs/db/adminer/adminer.css" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "Adminer theme"]] else: Log.debug(self, "Adminer already installed") @@ -383,7 +383,7 @@ class WOStackController(CementBaseController): os.path.isdir("/etc/netdata")): Log.debug( self, "Setting packages variable for Netdata") - if WOVariables.wo_distro == 'raspbian': + if WOVar.wo_distro == 'raspbian': packages = packages + [['https://my-netdata.io/' 'kickstart.sh', '/var/lib/wo/tmp/kickstart.sh', @@ -407,7 +407,7 @@ class WOStackController(CementBaseController): "/wordops-dashboard/" "releases/download/v{0}/" "wordops-dashboard.tar.gz" - .format(WOVariables.wo_dashboard), + .format(WOVar.wo_dashboard), "/var/lib/wo/tmp/wo-dashboard.tar.gz", "WordOps Dashboard"]] else: @@ -421,7 +421,7 @@ class WOStackController(CementBaseController): packages = packages + \ [["https://github.com/soerennb/" "extplorer/archive/v{0}.tar.gz" - .format(WOVariables.wo_extplorer), + .format(WOVar.wo_extplorer), "/var/lib/wo/tmp/extplorer.tar.gz", "eXtplorer"]] else: @@ -449,25 +449,25 @@ class WOStackController(CementBaseController): "clean.php", "{0}22222/htdocs/cache/" "nginx/clean.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "clean.php"], ["https://raw.github.com/rlerdorf/" "opcache-status/master/opcache.php", "{0}22222/htdocs/cache/" "opcache/opcache.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "opcache.php"], ["https://raw.github.com/amnuts/" "opcache-gui/master/index.php", "{0}22222/htdocs/" "cache/opcache/opgui.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "Opgui"], ["https://raw.githubusercontent.com/" "mlazarov/ocp/master/ocp.php", "{0}22222/htdocs/cache/" "opcache/ocp.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "OCP.php"], ["https://github.com/jokkedk/webgrind/" "archive/master.tar.gz", @@ -575,27 +575,27 @@ class WOStackController(CementBaseController): if pargs.nginx: if WOAptGet.is_installed(self, 'nginx-custom'): Log.debug(self, "Removing apt_packages variable of Nginx") - apt_packages = apt_packages + WOVariables.wo_nginx + apt_packages = apt_packages + WOVar.wo_nginx # PHP 7.2 if pargs.php: Log.debug(self, "Removing apt_packages variable of PHP") if WOAptGet.is_installed(self, 'php7.2-fpm'): if not WOAptGet.is_installed(self, 'php7.3-fpm'): - apt_packages = apt_packages + WOVariables.wo_php + \ - WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php + \ + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php + apt_packages = apt_packages + WOVar.wo_php # PHP7.3 if pargs.php73: Log.debug(self, "Removing apt_packages variable of PHP 7.3") if WOAptGet.is_installed(self, 'php7.3-fpm'): if not (WOAptGet.is_installed(self, 'php7.2-fpm')): - apt_packages = apt_packages + WOVariables.wo_php73 + \ - WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php73 + \ + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php73 + apt_packages = apt_packages + WOVar.wo_php73 # REDIS if pargs.redis: @@ -616,19 +616,19 @@ class WOStackController(CementBaseController): Log.debug(self, "Removing apt_packages variable " "for MySQL Client") if WOShellExec.cmd_exec(self, "mysqladmin ping"): - apt_packages = apt_packages + WOVariables.wo_mysql_client + apt_packages = apt_packages + WOVar.wo_mysql_client # fail2ban if pargs.fail2ban: if WOAptGet.is_installed(self, 'fail2ban'): Log.debug(self, "Remove apt_packages variable of Fail2ban") - apt_packages = apt_packages + WOVariables.wo_fail2ban + apt_packages = apt_packages + WOVar.wo_fail2ban # ClamAV if pargs.clamav: Log.debug(self, "Setting apt_packages variable for ClamAV") if WOAptGet.is_installed(self, 'clamav'): - apt_packages = apt_packages + WOVariables.wo_clamav + apt_packages = apt_packages + WOVar.wo_clamav # sendmail if pargs.sendmail: @@ -657,10 +657,10 @@ class WOStackController(CementBaseController): # PHPMYADMIN if pargs.phpmyadmin: if os.path.isdir('{0}22222/htdocs/db/pma' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Removing package of phpMyAdmin ") packages = packages + ['{0}22222/htdocs/db/pma' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] # Composer if pargs.composer: Log.debug(self, "Removing package of Composer ") @@ -677,28 +677,28 @@ class WOStackController(CementBaseController): if pargs.phpredisadmin: Log.debug(self, "Removing package variable of phpRedisAdmin ") if os.path.isdir('{0}22222/htdocs/cache/redis' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): packages = packages + ['{0}22222/htdocs/' 'cache/redis' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] # ADMINER if pargs.adminer: if os.path.isdir('{0}22222/htdocs/db/adminer' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Removing package variable of Adminer ") packages = packages + ['{0}22222/htdocs/db/adminer' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] if pargs.utils: Log.debug(self, "Removing package variable of utils ") packages = packages + ['{0}22222/htdocs/php/webgrind/' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/cache/opcache' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/cache/nginx/' - 'clean.php'.format(WOVariables.wo_webroot), + 'clean.php'.format(WOVar.wo_webroot), '/usr/bin/pt-query-advisor', '{0}22222/htdocs/db/anemometer' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] if pargs.netdata: Log.debug(self, "Removing Netdata") @@ -708,16 +708,16 @@ class WOStackController(CementBaseController): if pargs.dashboard: if (os.path.isfile('{0}22222/htdocs/index.php' - .format(WOVariables.wo_webroot)) or + .format(WOVar.wo_webroot)) or os.path.isfile('{0}22222/htdocs/index.html' - .format(WOVariables.wo_webroot))): + .format(WOVar.wo_webroot))): Log.debug(self, "Removing Wo-Dashboard") packages = packages + ['{0}22222/htdocs/assets' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/index.php' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/index.html' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] if (packages) or (apt_packages): if (not pargs.force): @@ -739,7 +739,7 @@ class WOStackController(CementBaseController): # Netdata uninstaller if (set(['/var/lib/wo/tmp/' 'kickstart.sh']).issubset(set(packages))): - if WOVariables.wo_distro == 'Raspbian': + if WOVar.wo_distro == 'Raspbian': WOShellExec.cmd_exec(self, "bash /usr/" "libexec/netdata/" "netdata-uninstaller.sh -y -f") @@ -818,7 +818,7 @@ class WOStackController(CementBaseController): if pargs.nginx: if WOAptGet.is_installed(self, 'nginx-custom'): Log.debug(self, "Add Nginx to apt_packages list") - apt_packages = apt_packages + WOVariables.wo_nginx + apt_packages = apt_packages + WOVar.wo_nginx else: Log.info(self, "Nginx is not installed") @@ -827,20 +827,20 @@ class WOStackController(CementBaseController): Log.debug(self, "Add PHP to apt_packages list") if WOAptGet.is_installed(self, 'php7.2-fpm'): if not (WOAptGet.is_installed(self, 'php7.3-fpm')): - apt_packages = apt_packages + WOVariables.wo_php + \ - WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php + \ + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php + apt_packages = apt_packages + WOVar.wo_php # PHP 7.3 if pargs.php73: Log.debug(self, "Removing apt_packages variable of PHP 7.3") if WOAptGet.is_installed(self, 'php7.3-fpm'): if not (WOAptGet.is_installed(self, 'php7.2-fpm')): - apt_packages = apt_packages + WOVariables.wo_php73 + \ - WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php73 + \ + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php73 + apt_packages = apt_packages + WOVar.wo_php73 # REDIS if pargs.redis: @@ -865,19 +865,19 @@ class WOStackController(CementBaseController): if pargs.mysqlclient: if WOShellExec.cmd_exec(self, "mysqladmin ping"): Log.debug(self, "Add MySQL client to apt_packages list") - apt_packages = apt_packages + WOVariables.wo_mysql_client + apt_packages = apt_packages + WOVar.wo_mysql_client # fail2ban if pargs.fail2ban: if WOAptGet.is_installed(self, 'fail2ban'): Log.debug(self, "Add Fail2ban to apt_packages list") - apt_packages = apt_packages + WOVariables.wo_fail2ban + apt_packages = apt_packages + WOVar.wo_fail2ban # ClamAV if pargs.clamav: if WOAptGet.is_installed(self, 'clamav'): Log.debug(self, "Add ClamAV to apt_packages list") - apt_packages = apt_packages + WOVariables.wo_clamav + apt_packages = apt_packages + WOVar.wo_clamav # UFW if pargs.ufw: @@ -906,10 +906,10 @@ class WOStackController(CementBaseController): # PHPMYADMIN if pargs.phpmyadmin: if os.path.isdir('{0}22222/htdocs/db/pma' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Removing package of phpMyAdmin ") packages = packages + ['{0}22222/htdocs/db/pma' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] # Composer if pargs.composer: @@ -927,29 +927,29 @@ class WOStackController(CementBaseController): if pargs.phpredisadmin: Log.debug(self, "Removing package variable of phpRedisAdmin ") if os.path.isdir('{0}22222/htdocs/cache/redis' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): packages = packages + ['{0}22222/htdocs/' 'cache/redis' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] # ADMINER if pargs.adminer: if os.path.isdir('{0}22222/htdocs/db/adminer' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Removing package variable of Adminer ") packages = packages + ['{0}22222/htdocs/db/adminer' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] # utils if pargs.utils: Log.debug(self, "Purge package variable utils") packages = packages + ['{0}22222/htdocs/php/webgrind/' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/cache/opcache' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/cache/nginx/' - 'clean.php'.format(WOVariables.wo_webroot), + 'clean.php'.format(WOVar.wo_webroot), '/usr/bin/pt-query-advisor', '{0}22222/htdocs/db/anemometer' - .format(WOVariables.wo_webroot) + .format(WOVar.wo_webroot) ] if pargs.netdata: @@ -961,9 +961,9 @@ class WOStackController(CementBaseController): if pargs.dashboard: Log.debug(self, "Removing Wo-Dashboard") packages = packages + ['{0}22222/htdocs/assets/' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/index.php' - .format(WOVariables.wo_webroot)] + .format(WOVar.wo_webroot)] if (packages) or (apt_packages): if (not pargs.force): @@ -991,7 +991,7 @@ class WOStackController(CementBaseController): # Netdata uninstaller if (set(['/var/lib/wo/tmp/' 'kickstart.sh']).issubset(set(packages))): - if WOVariables.wo_distro == 'Raspbian': + if WOVar.wo_distro == 'Raspbian': WOShellExec.cmd_exec(self, "bash /usr/" "libexec/netdata/netdata-" "uninstaller.sh -y -f", diff --git a/wo/cli/plugins/stack_migrate.py b/wo/cli/plugins/stack_migrate.py index 7b64b37..20bf585 100644 --- a/wo/cli/plugins/stack_migrate.py +++ b/wo/cli/plugins/stack_migrate.py @@ -9,7 +9,7 @@ from wo.core.aptget import WOAptGet from wo.core.logging import Log from wo.core.mysql import WOMysql from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class WOStackMigrateController(CementBaseController): @@ -29,8 +29,8 @@ class WOStackMigrateController(CementBaseController): # Backup all database WOMysql.backupAll(self) - if not WOVariables.wo_distro == 'raspbian': - if (not WOVariables.wo_platform_codename == 'jessie'): + if not WOVar.wo_distro == 'raspbian': + if (not WOVar.wo_platform_codename == 'jessie'): wo_mysql = ["mariadb-server", "percona-toolkit", "python3-mysqldb", "mariadb-backup"] else: @@ -49,9 +49,9 @@ class WOStackMigrateController(CementBaseController): 'MariaDB.pref', 'w') as mysql_pref_file: mysql_pref_file.write(mysql_pref) - WORepo.add(self, repo_url=WOVariables.wo_mysql_repo) + WORepo.add(self, repo_url=WOVar.wo_mysql_repo) Log.debug(self, 'Adding key for {0}' - .format(WOVariables.wo_mysql_repo)) + .format(WOVar.wo_mysql_repo)) WORepo.add_key(self, '0xcbcb082a1bb943db', keyserver="keyserver.ubuntu.com") @@ -104,7 +104,7 @@ class WOStackMigrateController(CementBaseController): if ((not self.app.pargs.mariadb)): self.app.args.print_help() if self.app.pargs.mariadb: - if WOVariables.wo_mysql_host != "localhost": + if WOVar.wo_mysql_host != "localhost": Log.error( self, "Remote MySQL server in use, skipping local install") diff --git a/wo/cli/plugins/stack_pref.py b/wo/cli/plugins/stack_pref.py index 4b10482..bf3c911 100644 --- a/wo/cli/plugins/stack_pref.py +++ b/wo/cli/plugins/stack_pref.py @@ -23,7 +23,7 @@ from wo.core.services import WOService from wo.core.shellexec import CommandExecutionError, WOShellExec from wo.core.sslutils import SSL from wo.core.template import WOTemplate -from wo.core.variables import WOVariables +from wo.core.variables import WOVar from wo.core.nginxhashbucket import hashbucket @@ -32,7 +32,7 @@ def pre_pref(self, apt_packages): if ("mariadb-server" in apt_packages or "mariadb-client" in apt_packages): # add mariadb repository excepted on raspbian and ubuntu 19.04 - if (not WOVariables.wo_distro == 'raspbian'): + if (not WOVar.wo_distro == 'raspbian'): Log.info(self, "Adding repository for MySQL, please wait...") mysql_pref = ("Package: *\nPin: origin " "sfo1.mirrors.digitalocean.com" @@ -40,7 +40,7 @@ def pre_pref(self, apt_packages): with open('/etc/apt/preferences.d/' 'MariaDB.pref', 'w') as mysql_pref_file: mysql_pref_file.write(mysql_pref) - WORepo.add(self, repo_url=WOVariables.wo_mysql_repo) + WORepo.add(self, repo_url=WOVar.wo_mysql_repo) WORepo.add_key(self, '0xcbcb082a1bb943db', keyserver='keys.gnupg.net') WORepo.add_key(self, '0xF1656F24C74CD1D8', @@ -50,8 +50,8 @@ def pre_pref(self, apt_packages): chars = ''.join(random.sample(string.ascii_letters, 24)) # configure MySQL non-interactive install - if ((WOVariables.wo_distro == 'raspbian') and - (WOVariables.wo_platform_codename == 'stretch')): + if ((WOVar.wo_distro == 'raspbian') and + (WOVar.wo_platform_codename == 'stretch')): mariadb_ver = '10.1' else: mariadb_ver = '10.3' @@ -106,26 +106,26 @@ def pre_pref(self, apt_packages): WOFileUtils.chmod(self, "/etc/mysql/conf.d/my.cnf", 0o600) # add nginx repository - if set(WOVariables.wo_nginx).issubset(set(apt_packages)): + if set(WOVar.wo_nginx).issubset(set(apt_packages)): Log.info(self, "Adding repository for NGINX, please wait...") - if (WOVariables.wo_distro == 'ubuntu'): - WORepo.add(self, ppa=WOVariables.wo_nginx_repo) + if (WOVar.wo_distro == 'ubuntu'): + WORepo.add(self, ppa=WOVar.wo_nginx_repo) Log.debug(self, 'Adding ppa for Nginx') else: - WORepo.add(self, repo_url=WOVariables.wo_nginx_repo) + WORepo.add(self, repo_url=WOVar.wo_nginx_repo) Log.debug(self, 'Adding repository for Nginx') - WORepo.add_key(self, WOVariables.wo_nginx_key) + WORepo.add_key(self, WOVar.wo_nginx_key) # add php repository - if (set(WOVariables.wo_php73).issubset(set(apt_packages)) or - set(WOVariables.wo_php).issubset(set(apt_packages))): + if (set(WOVar.wo_php73).issubset(set(apt_packages)) or + set(WOVar.wo_php).issubset(set(apt_packages))): Log.info(self, "Adding repository for PHP, please wait...") - if (WOVariables.wo_distro == 'ubuntu'): + if (WOVar.wo_distro == 'ubuntu'): Log.debug(self, 'Adding ppa for PHP') - WORepo.add(self, ppa=WOVariables.wo_php_repo) + WORepo.add(self, ppa=WOVar.wo_php_repo) else: # Add repository for php - if (WOVariables.wo_platform_codename == 'buster'): + if (WOVar.wo_platform_codename == 'buster'): php_pref = ("Package: *\nPin: origin " "packages.sury.org" "\nPin-Priority: 1000\n") @@ -133,22 +133,22 @@ def pre_pref(self, apt_packages): 'PHP.pref', 'w') as php_pref_file: php_pref_file.write(php_pref) Log.debug(self, 'Adding repo_url of php for debian') - WORepo.add(self, repo_url=WOVariables.wo_php_repo) + WORepo.add(self, repo_url=WOVar.wo_php_repo) Log.debug(self, 'Adding deb.sury GPG key') - WORepo.add_key(self, WOVariables.wo_php_key) + WORepo.add_key(self, WOVar.wo_php_key) # add redis repository - if set(WOVariables.wo_redis).issubset(set(apt_packages)): + if set(WOVar.wo_redis).issubset(set(apt_packages)): Log.info(self, "Adding repository for Redis, please wait...") - if WOVariables.wo_distro == 'ubuntu': + if WOVar.wo_distro == 'ubuntu': Log.debug(self, 'Adding ppa for redis') - WORepo.add(self, ppa=WOVariables.wo_redis_repo) + WORepo.add(self, ppa=WOVar.wo_redis_repo) def post_pref(self, apt_packages, packages, upgrade=False): """Post activity after installation of packages""" if (apt_packages): # Nginx configuration - if set(WOVariables.wo_nginx).issubset(set(apt_packages)): + if set(WOVar.wo_nginx).issubset(set(apt_packages)): Log.info(self, "Applying Nginx configuration templates") # Nginx main configuration ngxcnf = '/etc/nginx/conf.d' @@ -306,7 +306,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): with open("/etc/nginx/common/release", "w") as release_file: release_file.write("v{0}" - .format(WOVariables.wo_version)) + .format(WOVar.wo_version)) release_file.close() # Following files should not be overwrited @@ -459,7 +459,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): "on https://{0}:22222 " "or https://{1}:22222" .format(server_ip.text, - WOVariables.wo_fqdn)]) + WOVar.wo_fqdn)]) if not os.path.isfile("/opt/cf-update.sh"): data = dict() @@ -493,7 +493,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): "Use the command nginx -t to identify " "the cause of this issue", False) - if set(WOVariables.wo_php).issubset(set(apt_packages)): + if set(WOVar.wo_php).issubset(set(apt_packages)): WOGit.add(self, ["/etc/php"], msg="Adding PHP into Git") Log.info(self, "Configuring php7.2-fpm") ngxroot = '/var/www/' @@ -517,7 +517,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): config['PHP']['max_execution_time'] = '300' config['PHP']['max_input_time'] = '300' config['PHP']['max_input_vars'] = '20000' - config['Date']['date.timezone'] = WOVariables.wo_timezone + config['Date']['date.timezone'] = WOVar.wo_timezone config['opcache']['opcache.enable'] = '1' config['opcache']['opcache.interned_strings_buffer'] = '8' config['opcache']['opcache.max_accelerated_files'] = '10000' @@ -627,7 +627,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): WOService.restart_service(self, 'php7.2-fpm') # PHP7.3 configuration - if set(WOVariables.wo_php73).issubset(set(apt_packages)): + if set(WOVar.wo_php73).issubset(set(apt_packages)): WOGit.add(self, ["/etc/php"], msg="Adding PHP into Git") Log.info(self, "Configuring php7.3-fpm") ngxroot = '/var/www/' @@ -651,7 +651,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): config['PHP']['max_execution_time'] = '300' config['PHP']['max_input_time'] = '300' config['PHP']['max_input_vars'] = '20000' - config['Date']['date.timezone'] = WOVariables.wo_timezone + config['Date']['date.timezone'] = WOVar.wo_timezone config['opcache']['opcache.enable'] = '1' config['opcache']['opcache.interned_strings_buffer'] = '8' config['opcache']['opcache.max_accelerated_files'] = '10000' @@ -815,7 +815,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): WOGit.add(self, ["/etc/mysql"], msg="Adding MySQL into Git") # create fail2ban configuration files - if set(WOVariables.wo_fail2ban).issubset(set(apt_packages)): + if set(WOVar.wo_fail2ban).issubset(set(apt_packages)): WOGit.add(self, ["/etc/fail2ban"], msg="Adding Fail2ban into Git") if not os.path.isfile("/etc/fail2ban/jail.d/custom.conf"): @@ -1004,7 +1004,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): WOService.restart_service(self, 'redis-server') # ClamAV configuration - if set(WOVariables.wo_clamav).issubset(set(apt_packages)): + if set(WOVar.wo_clamav).issubset(set(apt_packages)): Log.debug(self, "Setting up freshclam cronjob") if not os.path.isfile("/opt/freshclam.sh"): data = dict() @@ -1032,26 +1032,26 @@ def post_pref(self, apt_packages, packages, upgrade=False): Log.debug(self, 'Extracting file /var/lib/wo/tmp/pma.tar.gz to ' 'location /var/lib/wo/tmp/') if not os.path.exists('{0}22222/htdocs/db' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Creating new directory " "{0}22222/htdocs/db" - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) os.makedirs('{0}22222/htdocs/db' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) if not os.path.exists('{0}22222/htdocs/db/pma/' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): shutil.move('/var/lib/wo/tmp/phpmyadmin-STABLE/', '{0}22222/htdocs/db/pma/' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) shutil.copyfile('{0}22222/htdocs/db/pma' '/config.sample.inc.php' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), '{0}22222/htdocs/db/pma/config.inc.php' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) Log.debug(self, 'Setting Blowfish Secret Key ' 'FOR COOKIE AUTH to ' '{0}22222/htdocs/db/pma/config.inc.php file ' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) blowfish_key = ''.join([random.choice (string.ascii_letters + string.digits) @@ -1059,7 +1059,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): WOFileUtils.searchreplace(self, '{0}22222/htdocs/db/pma' '/config.inc.php' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "$cfg[\'blowfish_secret\']" " = \'\';", "$cfg[\'blowfish_secret\']" @@ -1067,21 +1067,21 @@ def post_pref(self, apt_packages, packages, upgrade=False): .format(blowfish_key)) Log.debug(self, 'Setting HOST Server For Mysql to ' '{0}22222/htdocs/db/pma/config.inc.php file ' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOFileUtils.searchreplace(self, '{0}22222/htdocs/db/pma' '/config.inc.php' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "$cfg[\'Servers\'][$i][\'host\']" " = \'localhost\';", "$cfg" "[\'Servers\'][$i][\'host\'] " "= \'{0}\';" - .format(WOVariables.wo_mysql_host)) + .format(WOVar.wo_mysql_host)) Log.debug(self, 'Setting Privileges of webroot permission to ' '{0}22222/htdocs/db/pma file ' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOFileUtils.chown(self, '{0}22222/htdocs' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'www-data', 'www-data', recursive=True) @@ -1107,19 +1107,19 @@ def post_pref(self, apt_packages, packages, upgrade=False): "/var/www/22222/htdocs/db/pma/") WOFileUtils.chown( self, '{0}22222/htdocs/db/pma' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'www-data', 'www-data', recursive=True) Log.valide(self, "Updating phpMyAdmin") if not os.path.exists('{0}22222/htdocs/cache/' 'redis/phpRedisAdmin' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Creating new directory " "{0}22222/htdocs/cache/redis" - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) os.makedirs('{0}22222/htdocs/cache/redis/phpRedisAdmin' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) if not os.path.isfile('/var/www/22222/htdocs/cache/redis/' 'phpRedisAdmin/composer.lock'): WOShellExec.cmd_exec( @@ -1128,7 +1128,7 @@ def post_pref(self, apt_packages, packages, upgrade=False): "erik-dubbelboer/php-redis-admin " "/var/www/22222/htdocs/cache/redis/phpRedisAdmin") WOFileUtils.chown(self, '{0}22222/htdocs' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'www-data', 'www-data', recursive=True) @@ -1194,25 +1194,25 @@ def post_pref(self, apt_packages, packages, upgrade=False): for x in packages): Log.debug(self, "Extracting wo-dashboard.tar.gz " "to location {0}22222/htdocs/" - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOExtract.extract(self, '/var/lib/wo/tmp/' 'wo-dashboard.tar.gz', '{0}22222/htdocs' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) wo_wan = os.popen("/sbin/ip -4 route get 8.8.8.8 | " "grep -oP \"dev [^[:space:]]+ \" " "| cut -d ' ' -f 2").read() if (wo_wan != 'eth0' and wo_wan != ''): WOFileUtils.searchreplace(self, "{0}22222/htdocs/index.html" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "eth0", "{0}".format(wo_wan)) Log.debug(self, "Setting Privileges to " "{0}22222/htdocs" - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOFileUtils.chown(self, '{0}22222/htdocs' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'www-data', 'www-data', recursive=True) @@ -1222,18 +1222,18 @@ def post_pref(self, apt_packages, packages, upgrade=False): for x in packages): Log.debug(self, "Extracting extplorer.tar.gz " "to location {0}22222/htdocs/files" - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOExtract.extract(self, '/var/lib/wo/tmp/extplorer.tar.gz', '/var/lib/wo/tmp/') shutil.move('/var/lib/wo/tmp/extplorer-{0}' - .format(WOVariables.wo_extplorer), + .format(WOVar.wo_extplorer), '{0}22222/htdocs/files' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) Log.debug(self, "Setting Privileges to " "{0}22222/htdocs/files" - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOFileUtils.chown(self, '{0}22222/htdocs' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'www-data', 'www-data', recursive=True) @@ -1247,41 +1247,41 @@ def post_pref(self, apt_packages, packages, upgrade=False): self, '/var/lib/wo/tmp/webgrind.tar.gz', '/var/lib/wo/tmp/') if not os.path.exists('{0}22222/htdocs/php' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Creating directroy " "{0}22222/htdocs/php" - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) os.makedirs('{0}22222/htdocs/php' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) if not os.path.exists('{0}22222/htdocs/php/webgrind' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): shutil.move('/var/lib/wo/tmp/webgrind-master/', '{0}22222/htdocs/php/webgrind' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOFileUtils.searchreplace( self, "{0}22222/htdocs/php/webgrind/" "config.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "/usr/local/bin/dot", "/usr/bin/dot") WOFileUtils.searchreplace( self, "{0}22222/htdocs/php/webgrind/" "config.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "Europe/Copenhagen", - WOVariables.wo_timezone) + WOVar.wo_timezone) WOFileUtils.searchreplace( self, "{0}22222/htdocs/php/webgrind/" "config.php" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), "90", "100") Log.debug(self, "Setting Privileges of webroot permission to " "{0}22222/htdocs/php/webgrind/ file " - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOFileUtils.chown(self, '{0}22222/htdocs' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'www-data', 'www-data', recursive=True) @@ -1294,20 +1294,20 @@ def post_pref(self, apt_packages, packages, upgrade=False): self, '/var/lib/wo/tmp/anemometer.tar.gz', '/var/lib/wo/tmp/') if not os.path.exists('{0}22222/htdocs/db/' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): Log.debug(self, "Creating directory") os.makedirs('{0}22222/htdocs/db/' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) if not os.path.exists('{0}22222/htdocs/db/anemometer' - .format(WOVariables.wo_webroot)): + .format(WOVar.wo_webroot)): shutil.move('/var/lib/wo/tmp/Anemometer-master', '{0}22222/htdocs/db/anemometer' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) chars = ''.join(random.sample(string.ascii_letters, 8)) try: WOShellExec.cmd_exec(self, 'mysql < {0}22222/htdocs/db' '/anemometer/install.sql' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) except Exception as e: Log.debug(self, "{0}".format(e)) Log.error(self, "failed to configure Anemometer", @@ -1334,11 +1334,11 @@ def post_pref(self, apt_packages, packages, upgrade=False): # Custom Anemometer configuration Log.debug(self, "configration Anemometer") - data = dict(host=WOVariables.wo_mysql_host, port='3306', + data = dict(host=WOVar.wo_mysql_host, port='3306', user='anemometer', password=chars) WOTemplate.deploy(self, '{0}22222/htdocs/db/anemometer' '/conf/config.inc.php' - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'anemometer.mustache', data) # pt-query-advisor diff --git a/wo/cli/plugins/stack_services.py b/wo/cli/plugins/stack_services.py index 26408f6..84598e4 100644 --- a/wo/cli/plugins/stack_services.py +++ b/wo/cli/plugins/stack_services.py @@ -6,7 +6,7 @@ from cement.core.controller import CementBaseController, expose from wo.core.aptget import WOAptGet from wo.core.logging import Log from wo.core.services import WOService -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class WOStackStatusController(CementBaseController): @@ -57,8 +57,8 @@ class WOStackStatusController(CementBaseController): Log.info(self, "PHP7.3-FPM is not installed") if pargs.mysql: - if ((WOVariables.wo_mysql_host == "localhost") or - (WOVariables.wo_mysql_host == "127.0.0.1")): + if ((WOVar.wo_mysql_host == "localhost") or + (WOVar.wo_mysql_host == "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or WOAptGet.is_installed(self, 'percona-server-server-5.6') or WOAptGet.is_installed(self, 'mariadb-server')): @@ -144,8 +144,8 @@ class WOStackStatusController(CementBaseController): # mysql if pargs.mysql: - if ((WOVariables.wo_mysql_host == "localhost") or - (WOVariables.wo_mysql_host == "127.0.0.1")): + if ((WOVar.wo_mysql_host == "localhost") or + (WOVar.wo_mysql_host == "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or WOAptGet.is_installed(self, 'percona-server-server-5.6') or WOAptGet.is_installed(self, 'mariadb-server')): @@ -230,8 +230,8 @@ class WOStackStatusController(CementBaseController): Log.info(self, "PHP7.3-FPM is not installed") if pargs.mysql: - if ((WOVariables.wo_mysql_host == "localhost") or - (WOVariables.wo_mysql_host == "127.0.0.1")): + if ((WOVar.wo_mysql_host == "localhost") or + (WOVar.wo_mysql_host == "127.0.0.1")): if ((WOAptGet.is_installed(self, 'mysql-server') or WOAptGet.is_installed(self, 'percona-server-server-5.6') or @@ -316,8 +316,8 @@ class WOStackStatusController(CementBaseController): Log.info(self, "PHP7.3-FPM is not installed") if pargs.mysql: - if ((WOVariables.wo_mysql_host == "localhost") or - (WOVariables.wo_mysql_host == "127.0.0.1")): + if ((WOVar.wo_mysql_host == "localhost") or + (WOVar.wo_mysql_host == "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or WOAptGet.is_installed(self, 'percona-server-server-5.6') or WOAptGet.is_installed(self, 'mariadb-server')): @@ -401,8 +401,8 @@ class WOStackStatusController(CementBaseController): Log.info(self, "PHP7.3-FPM is not installed") if pargs.mysql: - if ((WOVariables.wo_mysql_host == "localhost") or - (WOVariables.wo_mysql_host == "127.0.0.1")): + if ((WOVar.wo_mysql_host == "localhost") or + (WOVar.wo_mysql_host == "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or WOAptGet.is_installed(self, 'percona-server-server-5.6') or WOAptGet.is_installed(self, 'mariadb-server')): diff --git a/wo/cli/plugins/stack_upgrade.py b/wo/cli/plugins/stack_upgrade.py index b8f2a61..136aeaf 100644 --- a/wo/cli/plugins/stack_upgrade.py +++ b/wo/cli/plugins/stack_upgrade.py @@ -12,7 +12,7 @@ from wo.core.fileutils import WOFileUtils from wo.core.logging import Log from wo.core.services import WOService from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class WOStackUpgradeController(CementBaseController): @@ -92,31 +92,31 @@ class WOStackUpgradeController(CementBaseController): if pargs.nginx: if WOAptGet.is_installed(self, 'nginx-custom'): - apt_packages = apt_packages + WOVariables.wo_nginx + apt_packages = apt_packages + WOVar.wo_nginx else: if os.path.isfile(self, '/usr/sbin/nginx'): Log.info(self, "Updating Nginx templates") - post_pref(self, WOVariables.wo_nginx, []) + post_pref(self, WOVar.wo_nginx, []) else: Log.info(self, "Nginx Stable is not already installed") if pargs.php: if WOAptGet.is_installed(self, 'php7.2-fpm'): if not WOAptGet.is_installed(self, 'php7.3-fpm'): - apt_packages = apt_packages + WOVariables.wo_php + \ - WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php + \ + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php + apt_packages = apt_packages + WOVar.wo_php else: Log.info(self, "PHP 7.2 is not installed") if pargs.php73: if WOAptGet.is_installed(self, 'php7.3-fpm'): if not WOAptGet.is_installed(self, 'php7.2-fpm'): - apt_packages = apt_packages + WOVariables.wo_php73 + \ - WOVariables.wo_php_extra + apt_packages = apt_packages + WOVar.wo_php73 + \ + WOVar.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php73 + apt_packages = apt_packages + WOVar.wo_php73 else: Log.info(self, "PHP 7.3 is not installed") @@ -137,7 +137,7 @@ class WOStackUpgradeController(CementBaseController): packages = packages + [["https://github.com/wp-cli/wp-cli/" "releases/download/v{0}/" "wp-cli-{0}.phar" - "".format(WOVariables.wo_wp_cli), + "".format(WOVar.wo_wp_cli), "/usr/local/bin/wp", "WP-CLI"]] else: @@ -157,7 +157,7 @@ class WOStackUpgradeController(CementBaseController): packages = packages + \ [["https://github.com/WordOps/wordops-dashboard/" "releases/download/v{0}/wordops-dashboard.tar.gz" - .format(WOVariables.wo_dashboard), + .format(WOVar.wo_dashboard), "/var/lib/wo/tmp/wo-dashboard.tar.gz", "WordOps Dashboard"]] @@ -168,7 +168,7 @@ class WOStackUpgradeController(CementBaseController): "/phpMyAdmin/{0}/" "phpMyAdmin-{0}-" "all-languages" - ".tar.gz".format(WOVariables.wo_phpmyadmin), + ".tar.gz".format(WOVar.wo_phpmyadmin), "/var/lib/wo/tmp/pma.tar.gz", "PHPMyAdmin"]] else: @@ -209,7 +209,7 @@ class WOStackUpgradeController(CementBaseController): # additional pre_pref if ["nginx-custom"] in apt_packages: - pre_pref(self, WOVariables.wo_nginx) + pre_pref(self, WOVar.wo_nginx) if ["php7.2-fpm"] in apt_packages: WOAptGet.remove(self, ['php7.2-fpm'], auto=False, purge=True) @@ -219,8 +219,8 @@ class WOStackUpgradeController(CementBaseController): # check if nginx upgrade is blocked if os.path.isfile( '/etc/apt/preferences.d/nginx-block'): - apt_packages.remove(WOVariables.wo_nginx) - post_pref(self, WOVariables.wo_nginx, [], True) + apt_packages.remove(WOVar.wo_nginx) + post_pref(self, WOVar.wo_nginx, [], True) # upgrade packages WOAptGet.install(self, apt_packages) Log.valide(self, "Upgrading APT Packages") @@ -269,7 +269,7 @@ class WOStackUpgradeController(CementBaseController): "/wordops-dashboard/" "releases/download/v{0}/" "wordops-dashboard.tar.gz" - .format(WOVariables.wo_dashboard), + .format(WOVar.wo_dashboard), "/var/lib/wo/tmp/wo-dashboard.tar.gz", "WordOps Dashboard"]]) @@ -290,20 +290,20 @@ class WOStackUpgradeController(CementBaseController): '/var/lib/wo/tmp/') shutil.copyfile(('{0}22222/htdocs/db/pma' '/config.inc.php' - .format(WOVariables.wo_webroot)), + .format(WOVar.wo_webroot)), ('/var/lib/wo/tmp/phpMyAdmin-{0}' '-all-languages/config.inc.php' - .format(WOVariables.wo_phpmyadmin)) + .format(WOVar.wo_phpmyadmin)) ) WOFileUtils.rm(self, '{0}22222/htdocs/db/pma' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) shutil.move('/var/lib/wo/tmp/phpMyAdmin-{0}' '-all-languages/' - .format(WOVariables.wo_phpmyadmin), + .format(WOVar.wo_phpmyadmin), '{0}22222/htdocs/db/pma/' - .format(WOVariables.wo_webroot)) + .format(WOVar.wo_webroot)) WOFileUtils.chown(self, "{0}22222/htdocs" - .format(WOVariables.wo_webroot), + .format(WOVar.wo_webroot), 'www-data', 'www-data', recursive=True) Log.valide(self, "Upgrading phpMyAdmin") diff --git a/wo/core/acme.py b/wo/core/acme.py index 4b09e81..b2c514b 100644 --- a/wo/core/acme.py +++ b/wo/core/acme.py @@ -7,7 +7,7 @@ from wo.core.fileutils import WOFileUtils from wo.core.git import WOGit from wo.core.logging import Log from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class WOAcme: @@ -77,7 +77,7 @@ class WOAcme: "--fullchain-file {0}/{1}/fullchain.pem " "--ca-file {0}/{1}/ca.pem --reloadcmd \"nginx -t && " "service nginx restart\" " - .format(WOVariables.wo_ssl_live, + .format(WOVar.wo_ssl_live, wo_domain_name, WOAcme.wo_acme_exec)): Log.valide(self, "Deploying SSL cert") else: @@ -97,7 +97,7 @@ class WOAcme: "ssl_certificate_key {0}/{1}/key.pem;\n" "ssl_trusted_certificate {0}/{1}/ca.pem;\n" "ssl_stapling_verify on;\n" - .format(WOVariables.wo_ssl_live, wo_domain_name)) + .format(WOVar.wo_ssl_live, wo_domain_name)) sslconf.close() if not WOFileUtils.grep(self, '/var/www/22222/conf/nginx/ssl.conf', @@ -109,7 +109,7 @@ class WOAcme: "ssl_certificate_key {0}/{1}/key.pem;\n" "ssl_trusted_certificate {0}/{1}/ca.pem;\n" "ssl_stapling_verify on;\n" - .format(WOVariables.wo_ssl_live, wo_domain_name)) + .format(WOVar.wo_ssl_live, wo_domain_name)) sslconf.close() WOGit.add(self, ["/etc/letsencrypt"], diff --git a/wo/core/apt_repo.py b/wo/core/apt_repo.py index 1684b6e..f7ba7b6 100644 --- a/wo/core/apt_repo.py +++ b/wo/core/apt_repo.py @@ -3,7 +3,7 @@ import os from wo.core.logging import Log from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class WORepo(): @@ -25,7 +25,7 @@ class WORepo(): if repo_url is not None: repo_file_path = ("/etc/apt/sources.list.d/" + - WOVariables().wo_repo_file) + WOVar().wo_repo_file) try: if not os.path.isfile(repo_file_path): with open(repo_file_path, @@ -65,7 +65,7 @@ class WORepo(): .format(ppa_name=ppa)) elif repo_url: repo_file_path = ("/etc/apt/sources.list.d/" + - WOVariables().wo_repo_file) + WOVar().wo_repo_file) try: repofile = open(repo_file_path, "w+") diff --git a/wo/core/checkfqdn.py b/wo/core/checkfqdn.py index 8b240f8..55f93d5 100644 --- a/wo/core/checkfqdn.py +++ b/wo/core/checkfqdn.py @@ -1,20 +1,20 @@ import requests from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar def check_fqdn(self, wo_host): """FQDN check with WordOps, for mail server hostname must be FQDN""" # wo_host=os.popen("hostname -f | tr -d '\n'").read() if '.' in wo_host: - WOVariables.wo_fqdn = wo_host + WOVar.wo_fqdn = wo_host with open('/etc/hostname', encoding='utf-8', mode='w') as hostfile: hostfile.write(wo_host) WOShellExec.cmd_exec(self, "sed -i \"1i\\127.0.0.1 {0}\" /etc/hosts" .format(wo_host)) - if WOVariables.wo_distro == 'debian': + if WOVar.wo_distro == 'debian': WOShellExec.cmd_exec(self, "/etc/init.d/hostname.sh start") else: WOShellExec.cmd_exec(self, "service hostname restart") @@ -29,7 +29,7 @@ def check_fqdn_ip(self): x = requests.get('http://v4.wordops.eu') ip = (x.text).strip() - wo_fqdn = WOVariables.wo_fqdn + wo_fqdn = WOVar.wo_fqdn y = requests.get('http://v4.wordops.eu/dns/{0}/'.format(wo_fqdn)) ip_fqdn = (y.text).strip() diff --git a/wo/core/database.py b/wo/core/database.py index c7fbff9..5be0dd7 100644 --- a/wo/core/database.py +++ b/wo/core/database.py @@ -3,10 +3,10 @@ from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session, sessionmaker -from wo.core.variables import WOVariables +from wo.core.variables import WOVar # db_path = self.app.config.get('site', 'db_path') -engine = create_engine(WOVariables.wo_db_uri, convert_unicode=True) +engine = create_engine(WOVar.wo_db_uri, convert_unicode=True) db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) diff --git a/wo/core/domainvalidate.py b/wo/core/domainvalidate.py index 0e0b912..50ab1dc 100644 --- a/wo/core/domainvalidate.py +++ b/wo/core/domainvalidate.py @@ -24,7 +24,7 @@ class WODomain(): else: final_domain = domain_name - return (final_domain, domain_name) + return final_domain def getlevel(self, domain): """ @@ -49,3 +49,4 @@ class WODomain(): root_domain = ('.'.join(domain_name[1:])) suffix_file.close() return (domain_type, root_domain) + return ('other', domain) diff --git a/wo/core/mysql.py b/wo/core/mysql.py index 92339b5..cd9de53 100644 --- a/wo/core/mysql.py +++ b/wo/core/mysql.py @@ -6,7 +6,7 @@ import pymysql from pymysql import DatabaseError, Error, connections from wo.core.logging import Log -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class MySQLConnectionError(Exception): @@ -115,7 +115,7 @@ class WOMysql(): stderr=subprocess.PIPE, shell=True) p2 = subprocess.Popen("/usr/bin/pigz -c > " "/var/wo-mysqlbackup/{0}{1}.sql.gz" - .format(dbs, WOVariables.wo_date), + .format(dbs, WOVar.wo_date), stdin=p1.stdout, shell=True) diff --git a/wo/core/sslutils.py b/wo/core/sslutils.py index 9bb620d..2a2ea5f 100644 --- a/wo/core/sslutils.py +++ b/wo/core/sslutils.py @@ -5,7 +5,7 @@ import re from wo.core.fileutils import WOFileUtils from wo.core.logging import Log from wo.core.shellexec import WOShellExec -from wo.core.variables import WOVariables +from wo.core.variables import WOVar class SSL: @@ -63,11 +63,11 @@ class SSL: self, '{0}/htdocs/'.format(wo_site_webroot)) if WOShellExec.cmd_exec( self, "{0} --allow-root core is-installed" - .format(WOVariables.wo_wp_cli)): + .format(WOVar.wo_wp_cli)): wo_siteurl = ( WOShellExec.cmd_exec_stdout( self, "{0} option get siteurl " - .format(WOVariables.wo_wpcli_path) + + .format(WOVar.wo_wpcli_path) + "--allow-root --quiet")) test_url = re.split(":", wo_siteurl) if not (test_url[0] == 'https'): @@ -76,11 +76,11 @@ class SSL: WOShellExec.cmd_exec( self, "{0} option update siteurl " "\'https://{1}\' --allow-root".format( - WOVariables.wo_wpcli_path, domain)) + WOVar.wo_wpcli_path, domain)) WOShellExec.cmd_exec( self, "{0} option update home " "\'https://{1}\' --allow-root".format( - WOVariables.wo_wpcli_path, domain)) + WOVar.wo_wpcli_path, domain)) WOShellExec.cmd_exec( self, "{0} search-replace \'http://{0}\'" "\'https://{0}\' --skip-columns=guid " diff --git a/wo/core/template.py b/wo/core/template.py index e827149..93ee44c 100644 --- a/wo/core/template.py +++ b/wo/core/template.py @@ -9,6 +9,8 @@ Render Templates class WOTemplate(): + """WordOps template utilities""" + def deploy(self, fileconf, template, data, overwrite=True): """Deploy template with render()""" data = dict(data) diff --git a/wo/core/variables.py b/wo/core/variables.py index d5ce887..67c86dd 100644 --- a/wo/core/variables.py +++ b/wo/core/variables.py @@ -1,13 +1,15 @@ """WordOps core variable module""" import configparser -import datetime import os -import socket +from datetime import datetime +from re import match +from socket import getfqdn -import distro +from distro import linux_distribution +from sh import git -class WOVariables(): +class WOVar(): """Intialization of core variables""" # WordOps version @@ -23,14 +25,14 @@ class WOVariables(): wo_wpcli_path = '/usr/local/bin/wp' # Current date and time of System - wo_date = datetime.datetime.now().strftime('%d%b%Y-%H-%M-%S') + wo_date = datetime.now().strftime('%d%b%Y-%H-%M-%S') # WordOps core variables - wo_distro = distro.linux_distribution( + wo_distro = linux_distribution( full_distribution_name=False)[0].lower() - wo_platform_version = distro.linux_distribution( + wo_platform_version = linux_distribution( full_distribution_name=False)[1].lower() - wo_platform_codename = distro.linux_distribution( + wo_platform_codename = linux_distribution( full_distribution_name=False)[2].lower() # Get timezone of system @@ -43,7 +45,7 @@ class WOVariables(): wo_timezone = "Europe/Amsterdam" # Get FQDN of system - wo_fqdn = socket.getfqdn() + wo_fqdn = getfqdn() # WordOps default webroot path wo_webroot = '/var/www/' @@ -64,11 +66,25 @@ class WOVariables(): wo_user = config['user']['name'] wo_email = config['user']['email'] except Exception: + print("WordOps (wo) require an username & and an email " + "address to configure Git (used to save server configurations)") + print("Your informations will ONLY be stored locally") + wo_user = input("Enter your name: ") + while wo_user == "": + print("Unfortunately, this can't be left blank") + wo_user = input("Enter your name: ") + wo_email = input("Enter your email: ") - os.system("git config --global user.name {0}".format(wo_user)) - os.system( - "git config --global user.email {0}".format(wo_email)) + + while not match(r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", + wo_email): + print("Whoops, seems like you made a typo - " + "the e-mailaddress is invalid...") + wo_email = input("Enter your email: ") + + git.config("--global", "user.name", "{0}".format(wo_user)) + git.config("--global", "user.email", "{0}".format(wo_email)) # MySQL hostname wo_mysql_host = ""