Updating WordOps dashboard
This commit is contained in:
@@ -8,6 +8,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|||||||
|
|
||||||
### v3.9.x - [Unreleased]
|
### v3.9.x - [Unreleased]
|
||||||
|
|
||||||
|
#### Changed
|
||||||
|
|
||||||
|
- [APP] WordOps dashboard updated to v1.2. Shipped as a html file, it can be used without PHP stack
|
||||||
|
|
||||||
#### Fixed
|
#### Fixed
|
||||||
|
|
||||||
- `wo stack purge --all` failure if mysql isn't installed
|
- `wo stack purge --all` failure if mysql isn't installed
|
||||||
|
|||||||
@@ -269,9 +269,9 @@ _wo_complete()
|
|||||||
|
|
||||||
"--web" | "--admin" | "--nginx" | "--php" | "--php73" | "--mysql" | "--wpcli" | "--phpmyadmin" | "--adminer" | "--utils" | "--fail2ban" | "--redis | --phpredisadmin | --netdata")
|
"--web" | "--admin" | "--nginx" | "--php" | "--php73" | "--mysql" | "--wpcli" | "--phpmyadmin" | "--adminer" | "--utils" | "--fail2ban" | "--redis | --phpredisadmin | --netdata")
|
||||||
if [[ "${COMP_WORDS[2]}" == "install" || "${COMP_WORDS[2]}" == "purge" || "${COMP_WORDS[2]}" == "remove" ]]; then
|
if [[ "${COMP_WORDS[2]}" == "install" || "${COMP_WORDS[2]}" == "purge" || "${COMP_WORDS[2]}" == "remove" ]]; then
|
||||||
retlist="--web --admin --security --nginx --php --php73 --mysql --wpcli --phpmyadmin --adminer --utils --redis --fail2ban --phpredisadmin --netdata -f --force"
|
retlist="--web --admin --security --nginx --php --php73 --mysql --wpcli --phpmyadmin --adminer --utils --redis --fail2ban --phpredisadmin --netdata --force"
|
||||||
elif [[ "${COMP_WORDS[2]}" == "start" || "${COMP_WORDS[2]}" == "reload" || "${COMP_WORDS[2]}" == "restart" || "${COMP_WORDS[2]}" == "stop" ]]; then
|
elif [[ "${COMP_WORDS[2]}" == "start" || "${COMP_WORDS[2]}" == "reload" || "${COMP_WORDS[2]}" == "restart" || "${COMP_WORDS[2]}" == "stop" ]]; then
|
||||||
retlist="--nginx --php --php73 --mysql --redis --netdata"
|
retlist="--nginx --php --php73 --mysql --redis --netdata --fail2ban"
|
||||||
elif [[ "${COMP_WORDS[1]}" == "debug" ]]; then
|
elif [[ "${COMP_WORDS[1]}" == "debug" ]]; then
|
||||||
retlist="--start --nginx --php --php73 --fpm --fpm7 --mysql -i --interactive -stop --import-slow-log --import-slow-log-interval= -"
|
retlist="--start --nginx --php --php73 --fpm --fpm7 --mysql -i --interactive -stop --import-slow-log --import-slow-log-interval= -"
|
||||||
if [[ $prev == '--mysql' ]]; then
|
if [[ $prev == '--mysql' ]]; then
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
import os
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
from cement.core import handler, hook
|
|
||||||
from cement.core.controller import CementBaseController, expose
|
|
||||||
|
|
||||||
from wo.cli.plugins.stack_pref import post_pref, pre_pref
|
|
||||||
from wo.core.aptget import WOAptGet
|
|
||||||
from wo.core.download import WODownload
|
|
||||||
from wo.core.extract import WOExtract
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
class WOStackUpgradeController(CementBaseController):
|
|
||||||
class Meta:
|
|
||||||
label = 'config'
|
|
||||||
stacked_on = 'stack'
|
|
||||||
stacked_type = 'nested'
|
|
||||||
description = ('Upgrade stack safely')
|
|
||||||
arguments = [
|
|
||||||
(['--nginx'],
|
|
||||||
dict(help='Upgrade all stack', action='store_true')),
|
|
||||||
(['--php'],
|
|
||||||
dict(help='Upgrade PHP 7.2 stack', action='store_true')),
|
|
||||||
(['--php73'],
|
|
||||||
dict(help='Upgrade PHP 7.3 stack', action='store_true')),
|
|
||||||
(['--mysql'],
|
|
||||||
dict(help='Upgrade MySQL stack', action='store_true')),
|
|
||||||
(['--wpcli'],
|
|
||||||
dict(help='Upgrade WPCLI', action='store_true')),
|
|
||||||
(['--redis'],
|
|
||||||
dict(help='Upgrade Redis', action='store_true')),
|
|
||||||
(['--netdata'],
|
|
||||||
dict(help='Upgrade Netdata', action='store_true')),
|
|
||||||
(['--dashboard'],
|
|
||||||
dict(help='Upgrade WordOps Dashboard', action='store_true')),
|
|
||||||
(['--composer'],
|
|
||||||
dict(help='Upgrade Composer', action='store_true')),
|
|
||||||
(['--phpmyadmin'],
|
|
||||||
dict(help='Upgrade phpMyAdmin', action='store_true')),
|
|
||||||
(['--no-prompt'],
|
|
||||||
dict(help="Upgrade Packages without any prompt",
|
|
||||||
action='store_true')),
|
|
||||||
(['--force'],
|
|
||||||
dict(help="Force Packages upgrade without any prompt",
|
|
||||||
action='store_true')),
|
|
||||||
]
|
|
||||||
@@ -950,10 +950,11 @@ def post_pref(self, apt_packages, packages, upgrade=False):
|
|||||||
WOService.restart_service(self, 'proftpd')
|
WOService.restart_service(self, 'proftpd')
|
||||||
|
|
||||||
# add rule for proftpd with UFW
|
# add rule for proftpd with UFW
|
||||||
if os.path.isdir('/etc/ufw'):
|
if WOFileUtils.grepcheck(
|
||||||
|
self, '/etc/ufw/ufw.conf', 'ENABLED=yes'):
|
||||||
try:
|
try:
|
||||||
WOShellExec.cmd_exec(
|
WOShellExec.cmd_exec(
|
||||||
self, "ufw allow 21")
|
self, "ufw limit 21")
|
||||||
WOShellExec.cmd_exec(
|
WOShellExec.cmd_exec(
|
||||||
self, "ufw allow 49000:50000/tcp")
|
self, "ufw allow 49000:50000/tcp")
|
||||||
WOShellExec.cmd_exec(
|
WOShellExec.cmd_exec(
|
||||||
@@ -1270,7 +1271,7 @@ def post_pref(self, apt_packages, packages, upgrade=False):
|
|||||||
"| cut -d ' ' -f 2").read()
|
"| cut -d ' ' -f 2").read()
|
||||||
if (wo_wan != 'eth0' and wo_wan != ''):
|
if (wo_wan != 'eth0' and wo_wan != ''):
|
||||||
WOFileUtils.searchreplace(self,
|
WOFileUtils.searchreplace(self,
|
||||||
"{0}22222/htdocs/index.php"
|
"{0}22222/htdocs/index.html"
|
||||||
.format(WOVariables.wo_webroot),
|
.format(WOVariables.wo_webroot),
|
||||||
"eth0",
|
"eth0",
|
||||||
"{0}".format(wo_wan))
|
"{0}".format(wo_wan))
|
||||||
|
|||||||
@@ -148,7 +148,8 @@ class WOStackUpgradeController(CementBaseController):
|
|||||||
'Netdata']]
|
'Netdata']]
|
||||||
|
|
||||||
if pargs.dashboard:
|
if pargs.dashboard:
|
||||||
if os.path.isfile('/var/www/22222/htdocs/index.php'):
|
if (os.path.isfile('/var/www/22222/htdocs/index.php') or
|
||||||
|
os.path.isfile('/var/www/22222/htdocs/index.html')):
|
||||||
packages = packages + \
|
packages = packages + \
|
||||||
[["https://github.com/WordOps/wordops-dashboard/"
|
[["https://github.com/WordOps/wordops-dashboard/"
|
||||||
"releases/download/v{0}/wordops-dashboard.tar.gz"
|
"releases/download/v{0}/wordops-dashboard.tar.gz"
|
||||||
@@ -233,7 +234,11 @@ class WOStackUpgradeController(CementBaseController):
|
|||||||
WOFileUtils.rm(self, '/var/lib/wo/tmp/kickstart.sh')
|
WOFileUtils.rm(self, '/var/lib/wo/tmp/kickstart.sh')
|
||||||
|
|
||||||
if pargs.dashboard:
|
if pargs.dashboard:
|
||||||
|
if os.path.isfile('/var/www/22222/htdocs/index.php'):
|
||||||
WOFileUtils.rm(self, '/var/www/22222/htdocs/index.php')
|
WOFileUtils.rm(self, '/var/www/22222/htdocs/index.php')
|
||||||
|
if os.path.isfile('/var/www/22222/htdocs/index.html'):
|
||||||
|
WOFileUtils.rm(
|
||||||
|
self, '/var/www/22222/htdocs/index.html')
|
||||||
|
|
||||||
Log.debug(self, "Downloading following: {0}".format(packages))
|
Log.debug(self, "Downloading following: {0}".format(packages))
|
||||||
WODownload.download(self, packages)
|
WODownload.download(self, packages)
|
||||||
@@ -256,17 +261,14 @@ class WOStackUpgradeController(CementBaseController):
|
|||||||
Log.valide(self, "Upgrading Netdata")
|
Log.valide(self, "Upgrading Netdata")
|
||||||
|
|
||||||
if pargs.dashboard:
|
if pargs.dashboard:
|
||||||
Log.debug(self, "Extracting wo-dashboard.tar.gz "
|
post_pref(
|
||||||
"to location {0}22222/htdocs/"
|
self, [], [["https://github.com/WordOps"
|
||||||
.format(WOVariables.wo_webroot))
|
"/wordops-dashboard/"
|
||||||
WOExtract.extract(self, '/var/lib/wo/tmp/'
|
"releases/download/v{0}/"
|
||||||
'wo-dashboard.tar.gz',
|
"wordops-dashboard.tar.gz"
|
||||||
'{0}22222/htdocs'
|
.format(WOVariables.wo_dashboard),
|
||||||
.format(WOVariables.wo_webroot))
|
"/var/lib/wo/tmp/wo-dashboard.tar.gz",
|
||||||
WOFileUtils.chown(self, "{0}22222/htdocs"
|
"WordOps Dashboard"]])
|
||||||
.format(WOVariables.wo_webroot),
|
|
||||||
'www-data',
|
|
||||||
'www-data', recursive=True)
|
|
||||||
|
|
||||||
if pargs.composer:
|
if pargs.composer:
|
||||||
Log.wait(self, "Upgrading Composer")
|
Log.wait(self, "Upgrading Composer")
|
||||||
|
|||||||
@@ -2,32 +2,20 @@
|
|||||||
add_header X-Robots-Tag none;
|
add_header X-Robots-Tag none;
|
||||||
add_header X-Permitted-Cross-Domain-Policies none;
|
add_header X-Permitted-Cross-Domain-Policies none;
|
||||||
add_header Referrer-Policy no-referrer;
|
add_header Referrer-Policy no-referrer;
|
||||||
|
|
||||||
location = /robots.txt {
|
location = /robots.txt {
|
||||||
allow all;
|
allow all;
|
||||||
log_not_found off;
|
log_not_found off;
|
||||||
access_log off;
|
access_log off;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Enable gzip but do not remove ETag headers
|
|
||||||
gzip on;
|
|
||||||
gzip_vary on;
|
|
||||||
gzip_comp_level 4;
|
|
||||||
gzip_min_length 256;
|
|
||||||
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
|
|
||||||
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
|
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
rewrite ^ /index.php$request_uri;
|
rewrite ^ /index.php$request_uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
|
location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
|
||||||
deny all;
|
deny all;
|
||||||
}
|
}
|
||||||
location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
|
location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
|
||||||
deny all;
|
deny all;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
|
location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
|
||||||
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
|
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
@@ -42,12 +30,10 @@
|
|||||||
fastcgi_intercept_errors on;
|
fastcgi_intercept_errors on;
|
||||||
fastcgi_request_buffering off;
|
fastcgi_request_buffering off;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
|
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
|
||||||
try_files $uri/ =404;
|
try_files $uri/ =404;
|
||||||
index index.php;
|
index index.php;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Adding the cache control header for js, css and map files
|
# Adding the cache control header for js, css and map files
|
||||||
# Make sure it is BELOW the PHP block
|
# Make sure it is BELOW the PHP block
|
||||||
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
|
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
|
||||||
@@ -70,13 +56,18 @@
|
|||||||
add_header X-Download-Options noopen;
|
add_header X-Download-Options noopen;
|
||||||
add_header X-Permitted-Cross-Domain-Policies none;
|
add_header X-Permitted-Cross-Domain-Policies none;
|
||||||
add_header Referrer-Policy no-referrer;
|
add_header Referrer-Policy no-referrer;
|
||||||
|
|
||||||
# Optional: Don't log access to assets
|
# Optional: Don't log access to assets
|
||||||
access_log off;
|
access_log off;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
|
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
|
||||||
try_files $uri /index.php$request_uri;
|
try_files $uri /index.php$request_uri;
|
||||||
# Optional: Don't log access to other assets
|
# Optional: Don't log access to other assets
|
||||||
access_log off;
|
access_log off;
|
||||||
}
|
}
|
||||||
|
# Enable gzip but do not remove ETag headers
|
||||||
|
gzip on;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_comp_level 4;
|
||||||
|
gzip_min_length 256;
|
||||||
|
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
|
||||||
|
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class WOVariables():
|
|||||||
wo_adminer = "4.7.2"
|
wo_adminer = "4.7.2"
|
||||||
wo_phpmyadmin = "4.9.0.1"
|
wo_phpmyadmin = "4.9.0.1"
|
||||||
wo_extplorer = "2.1.13"
|
wo_extplorer = "2.1.13"
|
||||||
wo_dashboard = "1.1"
|
wo_dashboard = "1.2"
|
||||||
|
|
||||||
# Get WPCLI path
|
# Get WPCLI path
|
||||||
wo_wpcli_path = '/usr/local/bin/wp'
|
wo_wpcli_path = '/usr/local/bin/wp'
|
||||||
|
|||||||
Reference in New Issue
Block a user