Sort import, create class DMN

This commit is contained in:
VirtuBox
2019-09-04 20:36:15 +02:00
parent 3696afc03e
commit 50cc8a4d09
34 changed files with 458 additions and 421 deletions

View File

@@ -1,14 +1,16 @@
"""Clean Plugin for WordOps.""" """Clean Plugin for WordOps."""
from wo.core.shellexec import WOShellExec
from wo.core.aptget import WOAptGet
from wo.core.services import WOService
from wo.core.logging import Log
from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook
import os import os
import urllib.request import urllib.request
from cement.core import handler, hook
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.shellexec import WOShellExec
def wo_clean_hook(app): def wo_clean_hook(app):
pass pass

View File

@@ -1,21 +1,23 @@
"""Debug Plugin for WordOps""" """Debug Plugin for WordOps"""
from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook
from wo.core.aptget import WOAptGet
from wo.core.shellexec import WOShellExec
from wo.core.mysql import WOMysql
from wo.core.services import WOService
from wo.core.logging import Log
from wo.cli.plugins.site_functions import logwatch
from wo.core.variables import WOVariables
from wo.core.fileutils import WOFileUtils
from pynginxconfig import NginxConfig
import os
import configparser import configparser
import glob import glob
import os
import signal import signal
from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose
from pynginxconfig import NginxConfig
from wo.cli.plugins.site_functions import logwatch
from wo.core.aptget import WOAptGet
from wo.core.fileutils import WOFileUtils
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
def wo_debug_hook(app): def wo_debug_hook(app):
pass pass

View File

@@ -1,5 +1,6 @@
from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,296 +1,298 @@
"""WOInfo Plugin for WordOps""" """WOInfo Plugin for WordOps"""
from cement.core.controller import CementBaseController, expose import configparser
from cement.core import handler, hook import os
from pynginxconfig import NginxConfig
from wo.core.aptget import WOAptGet from cement.core import handler, hook
from wo.core.shellexec import WOShellExec from cement.core.controller import CementBaseController, expose
from wo.core.logging import Log from pynginxconfig import NginxConfig
import os
import configparser from wo.core.aptget import WOAptGet
from wo.core.logging import Log
from wo.core.shellexec import WOShellExec
def wo_info_hook(app):
pass
def wo_info_hook(app):
pass
class WOInfoController(CementBaseController):
class Meta:
label = 'info' class WOInfoController(CementBaseController):
stacked_on = 'base' class Meta:
stacked_type = 'nested' label = 'info'
description = ('Display configuration information related to Nginx,' stacked_on = 'base'
' PHP and MySQL') stacked_type = 'nested'
arguments = [ description = ('Display configuration information related to Nginx,'
(['--mysql'], ' PHP and MySQL')
dict(help='Get MySQL configuration information', arguments = [
action='store_true')), (['--mysql'],
(['--php'], dict(help='Get MySQL configuration information',
dict(help='Get PHP 7.2 configuration information', action='store_true')),
action='store_true')), (['--php'],
(['--php73'], dict(help='Get PHP 7.2 configuration information',
dict(help='Get PHP 7.3 configuration information', action='store_true')),
action='store_true')), (['--php73'],
(['--nginx'], dict(help='Get PHP 7.3 configuration information',
dict(help='Get Nginx configuration information', action='store_true')),
action='store_true')), (['--nginx'],
] dict(help='Get Nginx configuration information',
usage = "wo info [options]" action='store_true')),
]
@expose(hide=True) usage = "wo info [options]"
def info_nginx(self):
"""Display Nginx information""" @expose(hide=True)
version = os.popen("/usr/sbin/nginx -v 2>&1 | " def info_nginx(self):
"awk -F '/' '{print $2}' | " """Display Nginx information"""
"awk -F ' ' '{print $1}' | tr '\n' ' '").read() version = os.popen("/usr/sbin/nginx -v 2>&1 | "
allow = os.popen("grep ^allow /etc/nginx/common/acl.conf | " "awk -F '/' '{print $2}' | "
"cut -d' ' -f2 | cut -d';' -f1 | tr '\n' ' '").read() "awk -F ' ' '{print $1}' | tr '\n' ' '").read()
nc = NginxConfig() allow = os.popen("grep ^allow /etc/nginx/common/acl.conf | "
nc.loadf('/etc/nginx/nginx.conf') "cut -d' ' -f2 | cut -d';' -f1 | tr '\n' ' '").read()
user = nc.get('user')[1] nc = NginxConfig()
worker_processes = nc.get('worker_processes')[1] nc.loadf('/etc/nginx/nginx.conf')
worker_connections = nc.get([('events',), 'worker_connections'])[1] user = nc.get('user')[1]
keepalive_timeout = nc.get([('http',), 'keepalive_timeout'])[1] worker_processes = nc.get('worker_processes')[1]
fastcgi_read_timeout = nc.get([('http',), worker_connections = nc.get([('events',), 'worker_connections'])[1]
'fastcgi_read_timeout'])[1] keepalive_timeout = nc.get([('http',), 'keepalive_timeout'])[1]
client_max_body_size = nc.get([('http',), fastcgi_read_timeout = nc.get([('http',),
'client_max_body_size'])[1] 'fastcgi_read_timeout'])[1]
data = dict(version=version, allow=allow, user=user, client_max_body_size = nc.get([('http',),
worker_processes=worker_processes, 'client_max_body_size'])[1]
keepalive_timeout=keepalive_timeout, data = dict(version=version, allow=allow, user=user,
worker_connections=worker_connections, worker_processes=worker_processes,
fastcgi_read_timeout=fastcgi_read_timeout, keepalive_timeout=keepalive_timeout,
client_max_body_size=client_max_body_size) worker_connections=worker_connections,
self.app.render((data), 'info_nginx.mustache') fastcgi_read_timeout=fastcgi_read_timeout,
client_max_body_size=client_max_body_size)
@expose(hide=True) self.app.render((data), 'info_nginx.mustache')
def info_php(self):
"""Display PHP information""" @expose(hide=True)
version = os.popen("/usr/bin/php7.2 -v 2>/dev/null | " def info_php(self):
"head -n1 | cut -d' ' -f2 |" """Display PHP information"""
" cut -d'+' -f1 | tr -d '\n'").read version = os.popen("/usr/bin/php7.2 -v 2>/dev/null | "
config = configparser.ConfigParser() "head -n1 | cut -d' ' -f2 |"
config.read('/etc/{0}/fpm/php.ini'.format("php/7.2")) " cut -d'+' -f1 | tr -d '\n'").read
expose_php = config['PHP']['expose_php'] config = configparser.ConfigParser()
memory_limit = config['PHP']['memory_limit'] config.read('/etc/{0}/fpm/php.ini'.format("php/7.2"))
post_max_size = config['PHP']['post_max_size'] expose_php = config['PHP']['expose_php']
upload_max_filesize = config['PHP']['upload_max_filesize'] memory_limit = config['PHP']['memory_limit']
max_execution_time = config['PHP']['max_execution_time'] post_max_size = config['PHP']['post_max_size']
upload_max_filesize = config['PHP']['upload_max_filesize']
config.read('/etc/{0}/fpm/pool.d/www.conf'.format("php/7.2")) max_execution_time = config['PHP']['max_execution_time']
www_listen = config['www']['listen']
www_ping_path = config['www']['ping.path'] config.read('/etc/{0}/fpm/pool.d/www.conf'.format("php/7.2"))
www_pm_status_path = config['www']['pm.status_path'] www_listen = config['www']['listen']
www_pm = config['www']['pm'] www_ping_path = config['www']['ping.path']
www_pm_max_requests = config['www']['pm.max_requests'] www_pm_status_path = config['www']['pm.status_path']
www_pm_max_children = config['www']['pm.max_children'] www_pm = config['www']['pm']
www_pm_start_servers = config['www']['pm.start_servers'] www_pm_max_requests = config['www']['pm.max_requests']
www_pm_min_spare_servers = config['www']['pm.min_spare_servers'] www_pm_max_children = config['www']['pm.max_children']
www_pm_max_spare_servers = config['www']['pm.max_spare_servers'] www_pm_start_servers = config['www']['pm.start_servers']
www_request_terminate_time = (config['www'] www_pm_min_spare_servers = config['www']['pm.min_spare_servers']
['request_terminate_timeout']) www_pm_max_spare_servers = config['www']['pm.max_spare_servers']
try: www_request_terminate_time = (config['www']
www_xdebug = (config['www']['php_admin_flag[xdebug.profiler_enable' ['request_terminate_timeout'])
'_trigger]']) try:
except Exception as e: www_xdebug = (config['www']['php_admin_flag[xdebug.profiler_enable'
Log.debug(self, "{0}".format(e)) '_trigger]'])
www_xdebug = 'off' except Exception as e:
Log.debug(self, "{0}".format(e))
config.read('/etc/{0}/fpm/pool.d/debug.conf'.format("php/7.2")) www_xdebug = 'off'
debug_listen = config['debug']['listen']
debug_ping_path = config['debug']['ping.path'] config.read('/etc/{0}/fpm/pool.d/debug.conf'.format("php/7.2"))
debug_pm_status_path = config['debug']['pm.status_path'] debug_listen = config['debug']['listen']
debug_pm = config['debug']['pm'] debug_ping_path = config['debug']['ping.path']
debug_pm_max_requests = config['debug']['pm.max_requests'] debug_pm_status_path = config['debug']['pm.status_path']
debug_pm_max_children = config['debug']['pm.max_children'] debug_pm = config['debug']['pm']
debug_pm_start_servers = config['debug']['pm.start_servers'] debug_pm_max_requests = config['debug']['pm.max_requests']
debug_pm_min_spare_servers = config['debug']['pm.min_spare_servers'] debug_pm_max_children = config['debug']['pm.max_children']
debug_pm_max_spare_servers = config['debug']['pm.max_spare_servers'] debug_pm_start_servers = config['debug']['pm.start_servers']
debug_request_terminate = (config['debug'] debug_pm_min_spare_servers = config['debug']['pm.min_spare_servers']
['request_terminate_timeout']) debug_pm_max_spare_servers = config['debug']['pm.max_spare_servers']
try: debug_request_terminate = (config['debug']
debug_xdebug = (config['debug']['php_admin_flag[xdebug.profiler_' ['request_terminate_timeout'])
'enable_trigger]']) try:
except Exception as e: debug_xdebug = (config['debug']['php_admin_flag[xdebug.profiler_'
Log.debug(self, "{0}".format(e)) 'enable_trigger]'])
debug_xdebug = 'off' except Exception as e:
Log.debug(self, "{0}".format(e))
data = dict(version=version, expose_php=expose_php, debug_xdebug = 'off'
memory_limit=memory_limit, post_max_size=post_max_size,
upload_max_filesize=upload_max_filesize, data = dict(version=version, expose_php=expose_php,
max_execution_time=max_execution_time, memory_limit=memory_limit, post_max_size=post_max_size,
www_listen=www_listen, www_ping_path=www_ping_path, upload_max_filesize=upload_max_filesize,
www_pm_status_path=www_pm_status_path, www_pm=www_pm, max_execution_time=max_execution_time,
www_pm_max_requests=www_pm_max_requests, www_listen=www_listen, www_ping_path=www_ping_path,
www_pm_max_children=www_pm_max_children, www_pm_status_path=www_pm_status_path, www_pm=www_pm,
www_pm_start_servers=www_pm_start_servers, www_pm_max_requests=www_pm_max_requests,
www_pm_min_spare_servers=www_pm_min_spare_servers, www_pm_max_children=www_pm_max_children,
www_pm_max_spare_servers=www_pm_max_spare_servers, www_pm_start_servers=www_pm_start_servers,
www_request_terminate_timeout=www_request_terminate_time, www_pm_min_spare_servers=www_pm_min_spare_servers,
www_xdebug_profiler_enable_trigger=www_xdebug, www_pm_max_spare_servers=www_pm_max_spare_servers,
debug_listen=debug_listen, debug_ping_path=debug_ping_path, www_request_terminate_timeout=www_request_terminate_time,
debug_pm_status_path=debug_pm_status_path, www_xdebug_profiler_enable_trigger=www_xdebug,
debug_pm=debug_pm, debug_listen=debug_listen, debug_ping_path=debug_ping_path,
debug_pm_max_requests=debug_pm_max_requests, debug_pm_status_path=debug_pm_status_path,
debug_pm_max_children=debug_pm_max_children, debug_pm=debug_pm,
debug_pm_start_servers=debug_pm_start_servers, debug_pm_max_requests=debug_pm_max_requests,
debug_pm_min_spare_servers=debug_pm_min_spare_servers, debug_pm_max_children=debug_pm_max_children,
debug_pm_max_spare_servers=debug_pm_max_spare_servers, debug_pm_start_servers=debug_pm_start_servers,
debug_request_terminate_timeout=debug_request_terminate, debug_pm_min_spare_servers=debug_pm_min_spare_servers,
debug_xdebug_profiler_enable_trigger=debug_xdebug) debug_pm_max_spare_servers=debug_pm_max_spare_servers,
self.app.render((data), 'info_php.mustache') debug_request_terminate_timeout=debug_request_terminate,
debug_xdebug_profiler_enable_trigger=debug_xdebug)
@expose(hide=True) self.app.render((data), 'info_php.mustache')
def info_php73(self):
"""Display PHP information""" @expose(hide=True)
version = os.popen("/usr/bin/php7.3 -v 2>/dev/null | " def info_php73(self):
"head -n1 | cut -d' ' -f2 |" """Display PHP information"""
" cut -d'+' -f1 | tr -d '\n'").read version = os.popen("/usr/bin/php7.3 -v 2>/dev/null | "
config = configparser.ConfigParser() "head -n1 | cut -d' ' -f2 |"
config.read('/etc/php/7.3/fpm/php.ini') " cut -d'+' -f1 | tr -d '\n'").read
expose_php = config['PHP']['expose_php'] config = configparser.ConfigParser()
memory_limit = config['PHP']['memory_limit'] config.read('/etc/php/7.3/fpm/php.ini')
post_max_size = config['PHP']['post_max_size'] expose_php = config['PHP']['expose_php']
upload_max_filesize = config['PHP']['upload_max_filesize'] memory_limit = config['PHP']['memory_limit']
max_execution_time = config['PHP']['max_execution_time'] post_max_size = config['PHP']['post_max_size']
upload_max_filesize = config['PHP']['upload_max_filesize']
config.read('/etc/php/7.3/fpm/pool.d/www.conf') max_execution_time = config['PHP']['max_execution_time']
www_listen = config['www']['listen']
www_ping_path = config['www']['ping.path'] config.read('/etc/php/7.3/fpm/pool.d/www.conf')
www_pm_status_path = config['www']['pm.status_path'] www_listen = config['www']['listen']
www_pm = config['www']['pm'] www_ping_path = config['www']['ping.path']
www_pm_max_requests = config['www']['pm.max_requests'] www_pm_status_path = config['www']['pm.status_path']
www_pm_max_children = config['www']['pm.max_children'] www_pm = config['www']['pm']
www_pm_start_servers = config['www']['pm.start_servers'] www_pm_max_requests = config['www']['pm.max_requests']
www_pm_min_spare_servers = config['www']['pm.min_spare_servers'] www_pm_max_children = config['www']['pm.max_children']
www_pm_max_spare_servers = config['www']['pm.max_spare_servers'] www_pm_start_servers = config['www']['pm.start_servers']
www_request_terminate_time = (config['www'] www_pm_min_spare_servers = config['www']['pm.min_spare_servers']
['request_terminate_timeout']) www_pm_max_spare_servers = config['www']['pm.max_spare_servers']
try: www_request_terminate_time = (config['www']
www_xdebug = (config['www']['php_admin_flag[xdebug.profiler_enable' ['request_terminate_timeout'])
'_trigger]']) try:
except Exception as e: www_xdebug = (config['www']['php_admin_flag[xdebug.profiler_enable'
Log.debug(self, "{0}".format(e)) '_trigger]'])
www_xdebug = 'off' except Exception as e:
Log.debug(self, "{0}".format(e))
config.read('/etc/php/7.3/fpm/pool.d/debug.conf') www_xdebug = 'off'
debug_listen = config['debug']['listen']
debug_ping_path = config['debug']['ping.path'] config.read('/etc/php/7.3/fpm/pool.d/debug.conf')
debug_pm_status_path = config['debug']['pm.status_path'] debug_listen = config['debug']['listen']
debug_pm = config['debug']['pm'] debug_ping_path = config['debug']['ping.path']
debug_pm_max_requests = config['debug']['pm.max_requests'] debug_pm_status_path = config['debug']['pm.status_path']
debug_pm_max_children = config['debug']['pm.max_children'] debug_pm = config['debug']['pm']
debug_pm_start_servers = config['debug']['pm.start_servers'] debug_pm_max_requests = config['debug']['pm.max_requests']
debug_pm_min_spare_servers = config['debug']['pm.min_spare_servers'] debug_pm_max_children = config['debug']['pm.max_children']
debug_pm_max_spare_servers = config['debug']['pm.max_spare_servers'] debug_pm_start_servers = config['debug']['pm.start_servers']
debug_request_terminate = (config['debug'] debug_pm_min_spare_servers = config['debug']['pm.min_spare_servers']
['request_terminate_timeout']) debug_pm_max_spare_servers = config['debug']['pm.max_spare_servers']
try: debug_request_terminate = (config['debug']
debug_xdebug = (config['debug']['php_admin_flag[xdebug.profiler_' ['request_terminate_timeout'])
'enable_trigger]']) try:
except Exception as e: debug_xdebug = (config['debug']['php_admin_flag[xdebug.profiler_'
Log.debug(self, "{0}".format(e)) 'enable_trigger]'])
debug_xdebug = 'off' except Exception as e:
Log.debug(self, "{0}".format(e))
data = dict(version=version, expose_php=expose_php, debug_xdebug = 'off'
memory_limit=memory_limit, post_max_size=post_max_size,
upload_max_filesize=upload_max_filesize, data = dict(version=version, expose_php=expose_php,
max_execution_time=max_execution_time, memory_limit=memory_limit, post_max_size=post_max_size,
www_listen=www_listen, www_ping_path=www_ping_path, upload_max_filesize=upload_max_filesize,
www_pm_status_path=www_pm_status_path, www_pm=www_pm, max_execution_time=max_execution_time,
www_pm_max_requests=www_pm_max_requests, www_listen=www_listen, www_ping_path=www_ping_path,
www_pm_max_children=www_pm_max_children, www_pm_status_path=www_pm_status_path, www_pm=www_pm,
www_pm_start_servers=www_pm_start_servers, www_pm_max_requests=www_pm_max_requests,
www_pm_min_spare_servers=www_pm_min_spare_servers, www_pm_max_children=www_pm_max_children,
www_pm_max_spare_servers=www_pm_max_spare_servers, www_pm_start_servers=www_pm_start_servers,
www_request_terminate_timeout=www_request_terminate_time, www_pm_min_spare_servers=www_pm_min_spare_servers,
www_xdebug_profiler_enable_trigger=www_xdebug, www_pm_max_spare_servers=www_pm_max_spare_servers,
debug_listen=debug_listen, debug_ping_path=debug_ping_path, www_request_terminate_timeout=www_request_terminate_time,
debug_pm_status_path=debug_pm_status_path, www_xdebug_profiler_enable_trigger=www_xdebug,
debug_pm=debug_pm, debug_listen=debug_listen, debug_ping_path=debug_ping_path,
debug_pm_max_requests=debug_pm_max_requests, debug_pm_status_path=debug_pm_status_path,
debug_pm_max_children=debug_pm_max_children, debug_pm=debug_pm,
debug_pm_start_servers=debug_pm_start_servers, debug_pm_max_requests=debug_pm_max_requests,
debug_pm_min_spare_servers=debug_pm_min_spare_servers, debug_pm_max_children=debug_pm_max_children,
debug_pm_max_spare_servers=debug_pm_max_spare_servers, debug_pm_start_servers=debug_pm_start_servers,
debug_request_terminate_timeout=debug_request_terminate, debug_pm_min_spare_servers=debug_pm_min_spare_servers,
debug_xdebug_profiler_enable_trigger=debug_xdebug) debug_pm_max_spare_servers=debug_pm_max_spare_servers,
self.app.render((data), 'info_php.mustache') debug_request_terminate_timeout=debug_request_terminate,
debug_xdebug_profiler_enable_trigger=debug_xdebug)
@expose(hide=True) self.app.render((data), 'info_php.mustache')
def info_mysql(self):
"""Display MySQL information""" @expose(hide=True)
version = os.popen("/usr/bin/mysql -V | awk '{print($5)}' | " def info_mysql(self):
"cut -d ',' " """Display MySQL information"""
"-f1 | tr -d '\n'").read() version = os.popen("/usr/bin/mysql -V | awk '{print($5)}' | "
host = "localhost" "cut -d ',' "
port = os.popen("/usr/bin/mysql -e \"show variables\" | " "-f1 | tr -d '\n'").read()
"/bin/grep ^port | awk " host = "localhost"
"'{print($2)}' | tr -d '\n'").read() port = os.popen("/usr/bin/mysql -e \"show variables\" | "
wait_timeout = os.popen("/usr/bin/mysql -e \"show variables\" | grep " "/bin/grep ^port | awk "
"^wait_timeout | awk '{print($2)}' | " "'{print($2)}' | tr -d '\n'").read()
"tr -d '\n'").read() wait_timeout = os.popen("/usr/bin/mysql -e \"show variables\" | grep "
interactive_timeout = os.popen("/usr/bin/mysql -e " "^wait_timeout | awk '{print($2)}' | "
"\"show variables\" | grep " "tr -d '\n'").read()
"^interactive_timeout | awk " interactive_timeout = os.popen("/usr/bin/mysql -e "
"'{print($2)}' | tr -d '\n'").read() "\"show variables\" | grep "
max_used_connections = os.popen("/usr/bin/mysql -e " "^interactive_timeout | awk "
"\"show global status\" | " "'{print($2)}' | tr -d '\n'").read()
"grep Max_used_connections | awk " max_used_connections = os.popen("/usr/bin/mysql -e "
"'{print($2)}' | tr -d '\n'").read() "\"show global status\" | "
datadir = os.popen("/usr/bin/mysql -e \"show variables\" | " "grep Max_used_connections | awk "
"/bin/grep datadir | awk" "'{print($2)}' | tr -d '\n'").read()
" '{print($2)}' | tr -d '\n'").read() datadir = os.popen("/usr/bin/mysql -e \"show variables\" | "
socket = os.popen("/usr/bin/mysql -e \"show variables\" | " "/bin/grep datadir | awk"
"/bin/grep \"^socket\" | " " '{print($2)}' | tr -d '\n'").read()
"awk '{print($2)}' | tr -d '\n'").read() socket = os.popen("/usr/bin/mysql -e \"show variables\" | "
data = dict(version=version, host=host, port=port, "/bin/grep \"^socket\" | "
wait_timeout=wait_timeout, "awk '{print($2)}' | tr -d '\n'").read()
interactive_timeout=interactive_timeout, data = dict(version=version, host=host, port=port,
max_used_connections=max_used_connections, wait_timeout=wait_timeout,
datadir=datadir, socket=socket) interactive_timeout=interactive_timeout,
self.app.render((data), 'info_mysql.mustache') max_used_connections=max_used_connections,
datadir=datadir, socket=socket)
@expose(hide=True) self.app.render((data), 'info_mysql.mustache')
def default(self):
"""default function for info""" @expose(hide=True)
if (not self.app.pargs.nginx and not self.app.pargs.php and def default(self):
not self.app.pargs.mysql and not self.app.pargs.php73): """default function for info"""
self.app.pargs.nginx = True if (not self.app.pargs.nginx and not self.app.pargs.php and
self.app.pargs.php = True not self.app.pargs.mysql and not self.app.pargs.php73):
self.app.pargs.mysql = True self.app.pargs.nginx = True
if WOAptGet.is_installed(self, 'php7.3-fpm'): self.app.pargs.php = True
self.app.pargs.php73 = True self.app.pargs.mysql = True
if WOAptGet.is_installed(self, 'php7.3-fpm'):
if self.app.pargs.nginx: self.app.pargs.php73 = True
if (WOAptGet.is_installed(self, 'nginx-custom') or
WOAptGet.is_installed(self, 'nginx-wo')): if self.app.pargs.nginx:
self.info_nginx() if (WOAptGet.is_installed(self, 'nginx-custom') or
else: WOAptGet.is_installed(self, 'nginx-wo')):
Log.error(self, "Nginx is not installed") self.info_nginx()
else:
if self.app.pargs.php: Log.error(self, "Nginx is not installed")
if WOAptGet.is_installed(self, 'php7.2-fpm'):
self.info_php() if self.app.pargs.php:
else: if WOAptGet.is_installed(self, 'php7.2-fpm'):
Log.error(self, "PHP 7.2 is not installed") self.info_php()
else:
if self.app.pargs.php73: Log.error(self, "PHP 7.2 is not installed")
if WOAptGet.is_installed(self, 'php7.3-fpm'):
self.info_php73() if self.app.pargs.php73:
else: if WOAptGet.is_installed(self, 'php7.3-fpm'):
Log.error(self, "PHP 7.3 is not installed") self.info_php73()
else:
if self.app.pargs.mysql: Log.error(self, "PHP 7.3 is not installed")
if WOShellExec.cmd_exec(self, "/usr/bin/mysqladmin ping"):
self.info_mysql() if self.app.pargs.mysql:
else: if WOShellExec.cmd_exec(self, "/usr/bin/mysqladmin ping"):
Log.error(self, "MySQL is not installed") self.info_mysql()
else:
Log.error(self, "MySQL is not installed")
def load(app):
# register the plugin class.. this only happens if the plugin is enabled
handler.register(WOInfoController) def load(app):
# register the plugin class.. this only happens if the plugin is enabled
# register a hook (function) to run after arguments are parsed. handler.register(WOInfoController)
hook.register('post_argument_parsing', wo_info_hook)
# register a hook (function) to run after arguments are parsed.
hook.register('post_argument_parsing', wo_info_hook)

View File

@@ -6,6 +6,7 @@ import os
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from wo.cli.plugins.site_functions import logwatch from wo.cli.plugins.site_functions import logwatch
from wo.core.fileutils import WOFileUtils from wo.core.fileutils import WOFileUtils
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -2,6 +2,7 @@
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from wo.core.aptget import WOAptGet from wo.core.aptget import WOAptGet
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,4 +1,5 @@
from sqlalchemy import Column, DateTime, String, Integer, Boolean, func from sqlalchemy import Boolean, Column, DateTime, Integer, String, func
from wo.core.database import Base from wo.core.database import Base

View File

@@ -1,13 +1,15 @@
from cement.core.controller import CementBaseController, expose import getpass
import random
import string
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose
from wo.core.git import WOGit
from wo.core.logging import Log
from wo.core.services import WOService
from wo.core.shellexec import WOShellExec from wo.core.shellexec import WOShellExec
from wo.core.variables import WOVariables from wo.core.variables import WOVariables
from wo.core.logging import Log
from wo.core.git import WOGit
from wo.core.services import WOService
import string
import random
import getpass
def wo_secure_hook(app): def wo_secure_hook(app):

View File

@@ -10,7 +10,7 @@ from cement.core.controller import CementBaseController, expose
from wo.cli.plugins.site_functions import * from wo.cli.plugins.site_functions import *
from wo.cli.plugins.sitedb import (addNewSite, deleteSiteInfo, getAllsites, from wo.cli.plugins.sitedb import (addNewSite, deleteSiteInfo, getAllsites,
getSiteInfo, updateSiteInfo) getSiteInfo, updateSiteInfo)
from wo.core.domainvalidate import GetDomainlevel, ValidateDomain from wo.core.domainvalidate import DMN
from wo.core.fileutils import WOFileUtils from wo.core.fileutils import WOFileUtils
from wo.core.git import WOGit from wo.core.git import WOGit
from wo.core.logging import Log from wo.core.logging import Log
@@ -57,7 +57,7 @@ class WOSiteController(CementBaseController):
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
# validate domain name # validate domain name
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
# check if site exists # check if site exists
if not check_domain_exists(self, wo_domain): if not check_domain_exists(self, wo_domain):
@@ -94,7 +94,7 @@ class WOSiteController(CementBaseController):
Log.debug(self, str(e)) Log.debug(self, str(e))
Log.error(self, 'could not input site name') Log.error(self, 'could not input site name')
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
# check if site exists # check if site exists
if not check_domain_exists(self, wo_domain): if not check_domain_exists(self, wo_domain):
Log.error(self, "site {0} does not exist".format(wo_domain)) Log.error(self, "site {0} does not exist".format(wo_domain))
@@ -134,8 +134,8 @@ class WOSiteController(CementBaseController):
Log.debug(self, str(e)) Log.debug(self, str(e))
Log.error(self, 'could not input site name') Log.error(self, 'could not input site name')
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
(wo_domain_type, wo_root_domain) = GetDomainlevel(wo_domain) (wo_domain_type, wo_root_domain) = DMN.getdomainlevel(self, wo_domain)
wo_db_name = '' wo_db_name = ''
wo_db_user = '' wo_db_user = ''
wo_db_pass = '' wo_db_pass = ''
@@ -186,7 +186,7 @@ class WOSiteController(CementBaseController):
def log(self): def log(self):
pargs = self.app.pargs pargs = self.app.pargs
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
wo_site_webroot = getSiteInfo(self, wo_domain).site_path wo_site_webroot = getSiteInfo(self, wo_domain).site_path
if not check_domain_exists(self, wo_domain): if not check_domain_exists(self, wo_domain):
@@ -208,7 +208,7 @@ class WOSiteController(CementBaseController):
Log.error(self, 'could not input site name') Log.error(self, 'could not input site name')
# TODO Write code for wo site edit command here # TODO Write code for wo site edit command here
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
if not check_domain_exists(self, wo_domain): if not check_domain_exists(self, wo_domain):
Log.error(self, "site {0} does not exist".format(wo_domain)) Log.error(self, "site {0} does not exist".format(wo_domain))
@@ -239,7 +239,7 @@ class WOSiteController(CementBaseController):
Log.error(self, 'Unable to read input, please try again') Log.error(self, 'Unable to read input, please try again')
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
if not check_domain_exists(self, wo_domain): if not check_domain_exists(self, wo_domain):
Log.error(self, "site {0} does not exist".format(wo_domain)) Log.error(self, "site {0} does not exist".format(wo_domain))
@@ -280,7 +280,7 @@ class WOSiteEditController(CementBaseController):
Log.error(self, 'Unable to read input, Please try again') Log.error(self, 'Unable to read input, Please try again')
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
if not check_domain_exists(self, wo_domain): if not check_domain_exists(self, wo_domain):
Log.error(self, "site {0} does not exist".format(wo_domain)) Log.error(self, "site {0} does not exist".format(wo_domain))
@@ -425,7 +425,7 @@ class WOSiteCreateController(CementBaseController):
Log.error(self, "Unable to input site name, Please try again!") Log.error(self, "Unable to input site name, Please try again!")
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
if not wo_domain.strip(): if not wo_domain.strip():
Log.error(self, "Invalid domain name, " Log.error(self, "Invalid domain name, "
"Provide valid domain name") "Provide valid domain name")
@@ -718,7 +718,7 @@ class WOSiteCreateController(CementBaseController):
"`tail /var/log/wo/wordops.log` and please try again") "`tail /var/log/wo/wordops.log` and please try again")
if pargs.letsencrypt: if pargs.letsencrypt:
(wo_domain_type, wo_root_domain) = GetDomainlevel(wo_domain) (wo_domain_type, wo_root_domain) = DMN.getdomainlevel(self, wo_domain)
data['letsencrypt'] = True data['letsencrypt'] = True
letsencrypt = True letsencrypt = True
if data['letsencrypt'] is True: if data['letsencrypt'] is True:
@@ -931,7 +931,7 @@ class WOSiteUpdateController(CementBaseController):
Log.error(self, 'Unable to input site name, Please try again!') Log.error(self, 'Unable to input site name, Please try again!')
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
wo_site_webroot = WOVariables.wo_webroot + wo_domain wo_site_webroot = WOVariables.wo_webroot + wo_domain
check_site = getSiteInfo(self, wo_domain) check_site = getSiteInfo(self, wo_domain)
@@ -1129,7 +1129,7 @@ class WOSiteUpdateController(CementBaseController):
pargs.php73 = False pargs.php73 = False
if pargs.letsencrypt: if pargs.letsencrypt:
(wo_domain_type, wo_root_domain) = GetDomainlevel(wo_domain) (wo_domain_type, wo_root_domain) = DMN.getdomainlevel(self, wo_domain)
if pargs.letsencrypt == 'on': if pargs.letsencrypt == 'on':
data['letsencrypt'] = True data['letsencrypt'] = True
letsencrypt = True letsencrypt = True
@@ -1858,7 +1858,7 @@ class WOSiteDeleteController(CementBaseController):
Log.error(self, 'could not input site name') Log.error(self, 'could not input site name')
pargs.site_name = pargs.site_name.strip() pargs.site_name = pargs.site_name.strip()
(wo_domain, wo_www_domain) = ValidateDomain(pargs.site_name) (wo_domain, wo_www_domain) = DMN.validatedomain(self, pargs.site_name)
wo_db_name = '' wo_db_name = ''
wo_prompt = '' wo_prompt = ''
wo_nginx_prompt = '' wo_nginx_prompt = ''

View File

@@ -1,8 +1,8 @@
import getpass import getpass
import glob import glob
import json
import os import os
import random import random
import json
import re import re
import string import string
import subprocess import subprocess
@@ -10,13 +10,13 @@ from subprocess import CalledProcessError
from wo.cli.plugins.sitedb import getSiteInfo from wo.cli.plugins.sitedb import getSiteInfo
from wo.cli.plugins.stack import WOStackController from wo.cli.plugins.stack import WOStackController
from wo.cli.plugins.stack_pref import post_pref
from wo.core.aptget import WOAptGet from wo.core.aptget import WOAptGet
from wo.core.fileutils import WOFileUtils from wo.core.fileutils import WOFileUtils
from wo.core.git import WOGit from wo.core.git import WOGit
from wo.core.logging import Log from wo.core.logging import Log
from wo.core.mysql import WOMysql from wo.core.mysql import WOMysql
from wo.core.services import WOService from wo.core.services import WOService
from wo.cli.plugins.stack_pref import post_pref
from wo.core.shellexec import CommandExecutionError, WOShellExec from wo.core.shellexec import CommandExecutionError, WOShellExec
from wo.core.sslutils import SSL from wo.core.sslutils import SSL
from wo.core.variables import WOVariables from wo.core.variables import WOVariables

View File

@@ -1,10 +1,11 @@
from sqlalchemy import Column, DateTime, String, Integer, Boolean from sqlalchemy import (Boolean, Column, DateTime, ForeignKey, Integer, String,
from sqlalchemy import ForeignKey, func func)
from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from wo.core.logging import Log from sqlalchemy.orm import backref, relationship
from wo.core.database import db_session
from wo.cli.plugins.models import SiteDB from wo.cli.plugins.models import SiteDB
from wo.core.database import db_session
from wo.core.logging import Log
def addNewSite(self, site, stype, cache, path, def addNewSite(self, site, stype, cache, path,

View File

@@ -14,7 +14,6 @@ from wo.core.apt_repo import WORepo
from wo.core.aptget import WOAptGet from wo.core.aptget import WOAptGet
from wo.core.checkfqdn import check_fqdn_ip from wo.core.checkfqdn import check_fqdn_ip
from wo.core.cron import WOCron from wo.core.cron import WOCron
from wo.core.domainvalidate import GetDomainlevel
from wo.core.extract import WOExtract from wo.core.extract import WOExtract
from wo.core.fileutils import WOFileUtils from wo.core.fileutils import WOFileUtils
from wo.core.git import WOGit from wo.core.git import WOGit

View File

@@ -2,6 +2,7 @@ import os
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from wo.core.aptget import WOAptGet from wo.core.aptget import WOAptGet
from wo.core.logging import Log from wo.core.logging import Log
from wo.core.services import WOService from wo.core.services import WOService

View File

@@ -3,6 +3,7 @@ import shutil
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from wo.cli.plugins.stack_pref import post_pref, pre_pref from wo.cli.plugins.stack_pref import post_pref, pre_pref
from wo.core.aptget import WOAptGet from wo.core.aptget import WOAptGet
from wo.core.download import WODownload from wo.core.download import WODownload

View File

@@ -2,6 +2,7 @@ import glob
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from wo.cli.plugins.sitedb import getAllsites, updateSiteInfo from wo.cli.plugins.sitedb import getAllsites, updateSiteInfo
from wo.core.fileutils import WOFileUtils from wo.core.fileutils import WOFileUtils
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -3,6 +3,7 @@ import time
from cement.core import handler, hook from cement.core import handler, hook
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from wo.core.download import WODownload from wo.core.download import WODownload
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,11 +1,13 @@
"""WordOps Swap Creation""" """WordOps Swap Creation"""
from wo.core.shellexec import WOShellExec
from wo.core.fileutils import WOFileUtils
from wo.core.aptget import WOAptGet
from wo.core.logging import Log
import os import os
import psutil import psutil
from wo.core.aptget import WOAptGet
from wo.core.fileutils import WOFileUtils
from wo.core.logging import Log
from wo.core.shellexec import WOShellExec
class WOSwap(): class WOSwap():
"""Manage Swap""" """Manage Swap"""

View File

@@ -1,8 +1,9 @@
"""WordOps packages repository operations""" """WordOps packages repository operations"""
import os
from wo.core.logging import Log
from wo.core.shellexec import WOShellExec from wo.core.shellexec import WOShellExec
from wo.core.variables import WOVariables from wo.core.variables import WOVariables
from wo.core.logging import Log
import os
class WORepo(): class WORepo():

View File

@@ -1,11 +1,12 @@
"""WordOps package installation using apt-get module.""" """WordOps package installation using apt-get module."""
import apt
import sys
import subprocess import subprocess
from wo.core.logging import Log import sys
from sh import ErrorReturnCode, apt_get
import apt
from wo.core.apt_repo import WORepo from wo.core.apt_repo import WORepo
from sh import apt_get from wo.core.logging import Log
from sh import ErrorReturnCode
class WOAptGet(): class WOAptGet():

View File

@@ -1,6 +1,7 @@
import requests
from wo.core.shellexec import WOShellExec from wo.core.shellexec import WOShellExec
from wo.core.variables import WOVariables from wo.core.variables import WOVariables
import requests
def check_fqdn(self, wo_host): def check_fqdn(self, wo_host):

View File

@@ -1,5 +1,6 @@
from wo.core.shellexec import WOShellExec
from wo.core.logging import Log from wo.core.logging import Log
from wo.core.shellexec import WOShellExec
""" """
Set CRON on LINUX system. Set CRON on LINUX system.

View File

@@ -3,49 +3,50 @@ import os
from urllib.parse import urlparse from urllib.parse import urlparse
def ValidateDomain(url): class DOMN:
"""
This function returns domain name removing http:// and https://
returns domain name only with or without www as user provided.
"""
# Check if http:// or https:// present remove it if present def validatedomain(self, url):
domain_name = url.split('/') """
if 'http:' in domain_name or 'https:' in domain_name: This function returns domain name removing http:// and https://
domain_name = domain_name[2] returns domain name only with or without www as user provided.
else: """
domain_name = domain_name[0]
www_domain_name = domain_name.split('.')
final_domain = ''
if www_domain_name[0] == 'www':
final_domain = '.'.join(www_domain_name[1:])
else:
final_domain = domain_name
return (final_domain, domain_name) # Check if http:// or https:// present remove it if present
domain_name = url.split('/')
if 'http:' in domain_name or 'https:' in domain_name:
domain_name = domain_name[2]
else:
domain_name = domain_name[0]
www_domain_name = domain_name.split('.')
final_domain = ''
if www_domain_name[0] == 'www':
final_domain = '.'.join(www_domain_name[1:])
else:
final_domain = domain_name
return (final_domain, domain_name)
def GetDomainlevel(domain): def getdomainlevel(self, domain):
""" """
This function returns the domain type : domain, subdomain, This function returns the domain type : domain, subdomain,
""" """
domain_name = domain.lower().strip().split('.') domain_name = domain.lower().strip().split('.')
if domain_name[0] == 'www': if domain_name[0] == 'www':
domain_name = domain_name[1:] domain_name = domain_name[1:]
domain_type = '' domain_type = ''
if os.path.isfile("/var/lib/wo/public_suffix_list.dat"): if os.path.isfile("/var/lib/wo/public_suffix_list.dat"):
# Read mode opens a file for reading only. # Read mode opens a file for reading only.
suffix_file = open( suffix_file = open(
"/var/lib/wo/public_suffix_list.dat", encoding='utf-8', ) "/var/lib/wo/public_suffix_list.dat", encoding='utf-8', )
# Read all the lines into a list. # Read all the lines into a list.
for domain_suffix in suffix_file: for domain_suffix in suffix_file:
if (str(domain_suffix).strip()) == ('.'.join(domain_name[1:])): if (str(domain_suffix).strip()) == ('.'.join(domain_name[1:])):
domain_type = 'domain' domain_type = 'domain'
root_domain = ('.'.join(domain_name[0:])) root_domain = ('.'.join(domain_name[0:]))
break break
else: else:
domain_type = 'subdomain' domain_type = 'subdomain'
root_domain = ('.'.join(domain_name[1:])) root_domain = ('.'.join(domain_name[1:]))
suffix_file.close() suffix_file.close()
return (domain_type, root_domain) return (domain_type, root_domain)

View File

@@ -1,7 +1,8 @@
"""WordOps download core classes.""" """WordOps download core classes."""
import urllib.request
import urllib.error
import os import os
import urllib.error
import urllib.request
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,6 +1,7 @@
"""WordOps Extract Core """ """WordOps Extract Core """
import tarfile
import os import os
import tarfile
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,8 +1,9 @@
"""WordOps file utils core classes.""" """WordOps file utils core classes."""
import shutil import fileinput
import os import os
import pwd import pwd
import fileinput import shutil
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,8 +1,10 @@
"""WordOps GIT module""" """WordOps GIT module"""
from sh import git, ErrorReturnCode
from wo.core.logging import Log
import os import os
from sh import ErrorReturnCode, git
from wo.core.logging import Log
class WOGit: class WOGit:
"""Intialization of core variables""" """Intialization of core variables"""

View File

@@ -3,10 +3,11 @@
Real time log files watcher supporting log rotation. Real time log files watcher supporting log rotation.
""" """
import os
import time
import errno import errno
import os
import stat import stat
import time
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,8 +1,10 @@
"""WordOps MySQL core classes.""" """WordOps MySQL core classes."""
import pymysql
from pymysql import connections, DatabaseError, Error
from os.path import expanduser
import os import os
from os.path import expanduser
import pymysql
from pymysql import DatabaseError, Error, connections
from wo.core.logging import Log from wo.core.logging import Log
from wo.core.variables import WOVariables from wo.core.variables import WOVariables

View File

@@ -1,10 +1,11 @@
"""WordOps Hash Bucket Calculator""" """WordOps Hash Bucket Calculator"""
from wo.core.fileutils import WOFileUtils import fileinput
import math import math
import os import os
import fileinput
import subprocess import subprocess
from wo.core.fileutils import WOFileUtils
def hashbucket(self): def hashbucket(self):
# Check Nginx Hashbucket error # Check Nginx Hashbucket error

View File

@@ -1,10 +1,10 @@
import smtplib
import os import os
from email.mime.multipart import MIMEMultipart import smtplib
from email import encoders
from email.mime.base import MIMEBase from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate from email.utils import COMMASPACE, formatdate
from email import encoders
def WOSendMail(send_from, send_to, subject, text, files, server="localhost", def WOSendMail(send_from, send_to, subject, text, files, server="localhost",

View File

@@ -1,5 +1,6 @@
"""WordOps Service Manager""" """WordOps Service Manager"""
import subprocess import subprocess
from wo.core.logging import Log from wo.core.logging import Log

View File

@@ -1,7 +1,8 @@
"""WordOps Shell Functions""" """WordOps Shell Functions"""
from wo.core.logging import Log
import subprocess import subprocess
from wo.core.logging import Log
class CommandExecutionError(Exception): class CommandExecutionError(Exception):
"""custom Exception for command execution""" """custom Exception for command execution"""

View File

@@ -1,6 +1,8 @@
from wo.core.logging import Log
import os import os
from wo.core.logging import Log
""" """
Render Templates Render Templates
""" """

View File

@@ -1,9 +1,10 @@
"""WordOps core variable module""" """WordOps core variable module"""
import distro
import socket
import configparser import configparser
import os
import datetime import datetime
import os
import socket
import distro
class WOVariables(): class WOVariables():