diff --git a/CHANGELOG.md b/CHANGELOG.md index c0ae5a9..689d2d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### v3.9.x - [Unreleased] +### v3.11.2 - 2019-12-07 + +#### Changed + +- Proxy virtualhost now include proxy_params with X-Forwarded-Proto header +- Acme.sh upgrade + +#### Fixed + +- Issue with Nginx variables_hash_bucket_size & variables_hash_max_size +- Netdata MySQL user error when purging/reinstalling Netdata stack +- Fix `wo site cd` + ### v3.11.1 - 2019-12-04 #### Added diff --git a/install b/install index 16642d2..b6f2d7e 100755 --- a/install +++ b/install @@ -9,7 +9,7 @@ # ------------------------------------------------------------------------- # wget -qO wo wops.cc && sudo bash wo # ------------------------------------------------------------------------- -# Version 3.11.1 - 2019-12-04 +# Version 3.11.2 - 2019-12-07 # ------------------------------------------------------------------------- # CONTENTS @@ -388,9 +388,6 @@ wo_install_acme_sh() { --home /etc/letsencrypt \ --config-home /etc/letsencrypt/config \ --cert-home /etc/letsencrypt/renewal - # enable auto-upgrade - /etc/letsencrypt/acme.sh --config-home '/etc/letsencrypt/config' --upgrade --auto-upgrade - fi if [ -x "$HOME/.acme.sh/acme.sh" ]; then @@ -411,8 +408,6 @@ wo_install_acme_sh() { mkdir "$HOME/.acme.sh" touch "$HOME/.acme.sh/acme.sh.env" # removing previous cronjob - crontab -l | sed '/41 0 \* \* \* "\/root\/\.acme\.sh"\/acme.sh --cron --home "\/root\/\.acme\.sh" > \/dev\/null/d' | crontab - - fi # Let's Encrypt .well-known folder setup if [ ! -d /var/www/html/.well-known/acme-challenge ]; then @@ -420,6 +415,13 @@ wo_install_acme_sh() { fi chown -R www-data:www-data /var/www/html /var/www/html/.well-known chmod 750 /var/www/html /var/www/html/.well-known + if [ -x /etc/letsencrypt/acme.sh ]; then + export LE_WORKING_DIR="/etc/letsencrypt" + export LE_CONFIG_HOME="/etc/letsencrypt/config" + /etc/letsencrypt/acme.sh --config-home '/etc/letsencrypt/config' --upgrade --auto-upgrade + /etc/letsencrypt/acme.sh --config-home "/etc/letsencrypt/config" --uninstall-cronjob + /etc/letsencrypt/acme.sh --config-home "/etc/letsencrypt/config" --install-cronjob + fi } diff --git a/setup.py b/setup.py index 602f4aa..c0800ad 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ if os.geteuid() == 0: os.makedirs('/var/lib/wo/tmp/') setup(name='wordops', - version='3.11.1', + version='3.11.2', description='An essential toolset that eases server administration', long_description=LONG, long_description_content_type='text/markdown', diff --git a/wo/cli/plugins/site.py b/wo/cli/plugins/site.py index 0d63995..426c84a 100644 --- a/wo/cli/plugins/site.py +++ b/wo/cli/plugins/site.py @@ -241,6 +241,11 @@ class WOSiteController(CementBaseController): wo_site_webroot = getSiteInfo(self, wo_domain).site_path if os.path.isdir(wo_site_webroot): WOFileUtils.chdir(self, wo_site_webroot) + + try: + subprocess.call(['/bin/bash']) + except OSError as e: + Log.debug(self, "{0}{1}".format(e.errno, e.strerror)) else: Log.error(self, "unable to change directory") diff --git a/wo/cli/plugins/stack.py b/wo/cli/plugins/stack.py index 17f8d63..f2a5981 100644 --- a/wo/cli/plugins/stack.py +++ b/wo/cli/plugins/stack.py @@ -166,6 +166,7 @@ class WOStackController(CementBaseController): # Nginx if pargs.nginx: + pargs.ngxblocker = True Log.debug(self, "Setting apt_packages variable for Nginx") if not WOAptGet.is_exec(self, 'nginx'): apt_packages = apt_packages + WOVar.wo_nginx @@ -1139,6 +1140,9 @@ class WOStackController(CementBaseController): WOShellExec.cmd_exec(self, "bash /opt/netdata/usr/" "libexec/netdata/netdata-" "uninstaller.sh -y -f") + if WOShellExec.cmd_exec(self, 'mysqladmin ping'): + WOMysql.execute( + self, "DELETE FROM mysql.user WHERE User = 'netdata';") if (apt_packages): Log.wait(self, "Purging APT Packages ") diff --git a/wo/cli/plugins/stack_pref.py b/wo/cli/plugins/stack_pref.py index f6a29d7..ddb6636 100644 --- a/wo/cli/plugins/stack_pref.py +++ b/wo/cli/plugins/stack_pref.py @@ -321,9 +321,15 @@ def post_pref(self, apt_packages, packages, upgrade=False): "'\"$http_referer\" " "\"$http_user_agent\"';\n") - # Nginx-Plus does not have nginx - # package structure like this - # So creating directories + if not os.path.exists('/etc/nginx/bots.d'): + WOFileUtils.textwrite( + self, '/etc/nginx/conf.d/variables-hash.conf', + 'variables_hash_max_size 4096;\n' + 'variables_hash_bucket_size 4096;') + + # Nginx-Plus does not have nginx + # package structure like this + # So creating directories if not os.path.exists('/etc/nginx/sites-available'): Log.debug(self, 'Creating directory' '/etc/nginx/sites-available') @@ -1404,11 +1410,15 @@ def post_pref(self, apt_packages, packages, upgrade=False): try: WOMysql.execute( self, - "create user 'netdata'@'localhost';", + "DELETE FROM mysql.user WHERE User = 'netdata';", log=False) WOMysql.execute( self, - "grant usage on *.* to 'netdata'@'localhost';", + "create user 'netdata'@'127.0.0.1';", + log=False) + WOMysql.execute( + self, + "grant usage on *.* to 'netdata'@'127.0.0.1';", log=False) WOMysql.execute( self, "flush privileges;", @@ -1585,11 +1595,16 @@ def post_pref(self, apt_packages, packages, upgrade=False): # ngxblocker if any('/usr/local/sbin/install-ngxblocker' == x[1] for x in packages): + # remove duplicate directives + if os.path.exists('/etc/nginx/conf.d/variables-hash.conf'): + WOFileUtils.rm(self, '/etc/nginx/conf.d/variables-hash.conf') WOFileUtils.chmod( self, "/usr/local/sbin/install-ngxblocker", 0o700) WOShellExec.cmd_exec(self, '/usr/local/sbin/install-ngxblocker -x') WOFileUtils.chmod( self, "/usr/local/sbin/update-ngxblocker", 0o700) + if not WOService.restart_service(self, 'nginx'): + Log.error(self, 'ngxblocker install failed') def pre_stack(self): diff --git a/wo/cli/plugins/stack_upgrade.py b/wo/cli/plugins/stack_upgrade.py index 2d8592c..be669c5 100644 --- a/wo/cli/plugins/stack_upgrade.py +++ b/wo/cli/plugins/stack_upgrade.py @@ -269,8 +269,6 @@ class WOStackUpgradeController(CementBaseController): '/usr/local/sbin/update-ngxblocker', 'ngxblocker' ]] - else: - Log.info(self, "ngxblocker is not installed") if ((not (apt_packages)) and (not(packages))): self.app.args.print_help() @@ -347,6 +345,9 @@ class WOStackUpgradeController(CementBaseController): WOFileUtils.chmod(self, "/usr/local/bin/wp", 0o775) if WOAptGet.is_selected(self, 'ngxblocker', packages): + if os.path.exists('/etc/nginx/conf.d/variables-hash.conf'): + WOFileUtils.rm( + self, '/etc/nginx/conf.d/variables-hash.conf') WOFileUtils.chmod( self, '/usr/local/sbin/update-ngxblocker', 0o775) WOShellExec.cmd_exec( diff --git a/wo/cli/templates/virtualconf.mustache b/wo/cli/templates/virtualconf.mustache index 76be634..e0f2f36 100644 --- a/wo/cli/templates/virtualconf.mustache +++ b/wo/cli/templates/virtualconf.mustache @@ -21,9 +21,7 @@ server { location / { proxy_pass http://{{host}}:{{port}}; proxy_redirect off; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + include proxy_params; } # Security settings for better privacy diff --git a/wo/core/mysql.py b/wo/core/mysql.py index 907a608..275a56a 100644 --- a/wo/core/mysql.py +++ b/wo/core/mysql.py @@ -108,17 +108,13 @@ class WOMysql(): if dbs == "": continue Log.info(self, "Backing up {0} database".format(dbs)) - p1 = subprocess.Popen("/usr/bin/mysqldump {0}" - " --max_allowed_packet=1024M" - " --single-transaction".format(dbs), - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, shell=True) - p2 = subprocess.Popen("/usr/bin/pigz -c > " - "/var/lib/wo-backup/mysql/{0}{1}.sql.gz" - .format(dbs, WOVar.wo_date), - stdin=p1.stdout, - shell=True) - + p1 = subprocess.Popen( + "/usr/bin/mysqldump {0} --max_allowed_packet=1024M " + "--single-transaction ".format(dbs), + stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + p2 = subprocess.Popen( + "/usr/bin/pigz -c > /var/lib/wo-backup/mysql/{0}{1}.sql.gz" + .format(dbs, WOVar.wo_date), stdin=p1.stdout, shell=True) # Allow p1 to receive a SIGPIPE if p2 exits p1.stdout.close() output = p1.stderr.read() diff --git a/wo/core/variables.py b/wo/core/variables.py index afc8dad..e943562 100644 --- a/wo/core/variables.py +++ b/wo/core/variables.py @@ -14,7 +14,7 @@ class WOVar(): """Intialization of core variables""" # WordOps version - wo_version = "3.11.1" + wo_version = "3.11.2" # WordOps packages versions wo_wp_cli = "2.4.0" wo_adminer = "4.7.5"