15 changed files with 307 additions and 80 deletions
@ -0,0 +1,11 @@ |
|||||
|
### Example Plugin Configuration for EasyEngine |
||||
|
|
||||
|
[info] |
||||
|
|
||||
|
### If enabled, load a plugin named `example` either from the Python module |
||||
|
### `ee.cli.plugins.example` or from the file path |
||||
|
### `/var/lib/ee/plugins/example.py` |
||||
|
enable_plugin = true |
||||
|
|
||||
|
### Additional plugin configuration settings |
||||
|
foo = bar |
@ -1,26 +0,0 @@ |
|||||
from cement.core.controller import CementBaseController, expose |
|
||||
|
|
||||
|
|
||||
class EEInfoController(CementBaseController): |
|
||||
class Meta: |
|
||||
label = 'info' |
|
||||
stacked_on = 'base' |
|
||||
stacked_type = 'nested' |
|
||||
description = 'info command used for debugging issued with stack or \ |
|
||||
site specific configuration' |
|
||||
arguments = [ |
|
||||
(['--mysql'], |
|
||||
dict(help='get mysql configuration information', |
|
||||
action='store_true')), |
|
||||
(['--php'], |
|
||||
dict(help='get php configuration information', |
|
||||
action='store_true')), |
|
||||
(['--nginx'], |
|
||||
dict(help='get nginx configuration information', |
|
||||
action='store_true')), |
|
||||
] |
|
||||
|
|
||||
@expose(hide=True) |
|
||||
def default(self): |
|
||||
# TODO Default action for ee debug command |
|
||||
print("Inside EEInfoController.default().") |
|
@ -0,0 +1,197 @@ |
|||||
|
"""EEInfo Plugin for EasyEngine.""" |
||||
|
|
||||
|
from cement.core.controller import CementBaseController, expose |
||||
|
from cement.core import handler, hook |
||||
|
from pynginxconfig import NginxConfig |
||||
|
from ee.core.aptget import EEAptGet |
||||
|
from ee.core.shellexec import EEShellExec |
||||
|
import os |
||||
|
import configparser |
||||
|
|
||||
|
|
||||
|
def info_plugin_hook(app): |
||||
|
# do something with the ``app`` object here. |
||||
|
pass |
||||
|
|
||||
|
|
||||
|
class EEInfoController(CementBaseController): |
||||
|
class Meta: |
||||
|
label = 'info' |
||||
|
stacked_on = 'base' |
||||
|
stacked_type = 'nested' |
||||
|
description = 'info command used for debugging issued with stack or \ |
||||
|
site specific configuration' |
||||
|
arguments = [ |
||||
|
(['--mysql'], |
||||
|
dict(help='get mysql configuration information', |
||||
|
action='store_true')), |
||||
|
(['--php'], |
||||
|
dict(help='get php configuration information', |
||||
|
action='store_true')), |
||||
|
(['--nginx'], |
||||
|
dict(help='get nginx configuration information', |
||||
|
action='store_true')), |
||||
|
] |
||||
|
|
||||
|
@expose(hide=True) |
||||
|
def info_nginx(self): |
||||
|
version = os.popen("nginx -v 2>&1 | cut -d':' -f2 | cut -d' ' -f2 | " |
||||
|
"cut -d'/' -f2 | tr -d '\n'").read() |
||||
|
allow = os.popen("grep ^allow /etc/nginx/common/acl.conf | " |
||||
|
"cut -d' ' -f2 | cut -d';' -f1 | tr '\n' ' '").read() |
||||
|
nc = NginxConfig() |
||||
|
nc.loadf('/etc/nginx/nginx.conf') |
||||
|
user = nc.get('user')[1] |
||||
|
worker_processes = nc.get('worker_processes')[1] |
||||
|
worker_connections = nc.get([('events',), 'worker_connections'])[1] |
||||
|
keepalive_timeout = nc.get([('http',), 'keepalive_timeout'])[1] |
||||
|
if os.path.isfile('/etc/nginx/conf.d/ee-nginx.conf'): |
||||
|
nc.loadf('/etc/nginx/conf.d/ee-nginx.conf') |
||||
|
fastcgi_read_timeout = nc.get('fastcgi_read_timeout')[1] |
||||
|
client_max_body_size = nc.get('client_max_body_size')[1] |
||||
|
else: |
||||
|
fastcgi_read_timeout = nc.get([('http',), |
||||
|
'fastcgi_read_timeout'])[1] |
||||
|
client_max_body_size = nc.get([('http',), |
||||
|
'client_max_body_size'])[1] |
||||
|
data = dict(version=version, allow=allow, user=user, |
||||
|
worker_processes=worker_processes, |
||||
|
keepalive_timeout=keepalive_timeout, |
||||
|
worker_connections=worker_connections, |
||||
|
fastcgi_read_timeout=fastcgi_read_timeout, |
||||
|
client_max_body_size=client_max_body_size) |
||||
|
self.app.render((data), 'info_nginx.mustache') |
||||
|
|
||||
|
@expose(hide=True) |
||||
|
def info_php(self): |
||||
|
version = os.popen("php -v | head -n1 | cut -d' ' -f2 |" |
||||
|
" cut -d'+' -f1 | tr -d '\n'").read |
||||
|
config = configparser.ConfigParser() |
||||
|
config.read('/etc/php5/fpm/php.ini') |
||||
|
expose_php = config['PHP']['expose_php'] |
||||
|
memory_limit = config['PHP']['memory_limit'] |
||||
|
post_max_size = config['PHP']['post_max_size'] |
||||
|
upload_max_filesize = config['PHP']['upload_max_filesize'] |
||||
|
max_execution_time = config['PHP']['max_execution_time'] |
||||
|
|
||||
|
config.read('/etc/php5/fpm/pool.d/www.conf') |
||||
|
www_listen = config['www']['listen'] |
||||
|
www_ping_path = config['www']['ping.path'] |
||||
|
www_pm_status_path = config['www']['pm.status_path'] |
||||
|
www_pm = config['www']['pm'] |
||||
|
www_pm_max_requests = config['www']['pm.max_requests'] |
||||
|
www_pm_max_children = config['www']['pm.max_children'] |
||||
|
www_pm_start_servers = config['www']['pm.start_servers'] |
||||
|
www_pm_min_spare_servers = config['www']['pm.min_spare_servers'] |
||||
|
www_pm_max_spare_servers = config['www']['pm.max_spare_servers'] |
||||
|
www_request_terminate_time = (config['www'] |
||||
|
['request_terminate_timeout']) |
||||
|
try: |
||||
|
www_xdebug = (config['www']['php_admin_flag[xdebug.profiler_enable' |
||||
|
'_trigger]']) |
||||
|
except Exception as e: |
||||
|
www_xdebug = 'off' |
||||
|
|
||||
|
config.read('/etc/php5/fpm/pool.d/debug.conf') |
||||
|
debug_listen = config['debug']['listen'] |
||||
|
debug_ping_path = config['debug']['ping.path'] |
||||
|
debug_pm_status_path = config['debug']['pm.status_path'] |
||||
|
debug_pm = config['debug']['pm'] |
||||
|
debug_pm_max_requests = config['debug']['pm.max_requests'] |
||||
|
debug_pm_max_children = config['debug']['pm.max_children'] |
||||
|
debug_pm_start_servers = config['debug']['pm.start_servers'] |
||||
|
debug_pm_min_spare_servers = config['debug']['pm.min_spare_servers'] |
||||
|
debug_pm_max_spare_servers = config['debug']['pm.max_spare_servers'] |
||||
|
debug_request_terminate = (config['debug'] |
||||
|
['request_terminate_timeout']) |
||||
|
try: |
||||
|
debug_xdebug = (config['debug']['php_admin_flag[xdebug.profiler_' |
||||
|
'enable_trigger]']) |
||||
|
except Exception as e: |
||||
|
debug_xdebug = 'off' |
||||
|
|
||||
|
data = dict(version=version, expose_php=expose_php, |
||||
|
memory_limit=memory_limit, post_max_size=post_max_size, |
||||
|
upload_max_filesize=upload_max_filesize, |
||||
|
max_execution_time=max_execution_time, |
||||
|
www_listen=www_listen, www_ping_path=www_ping_path, |
||||
|
www_pm_status_path=www_pm_status_path, www_pm=www_pm, |
||||
|
www_pm_max_requests=www_pm_max_requests, |
||||
|
www_pm_max_children=www_pm_max_children, |
||||
|
www_pm_start_servers=www_pm_start_servers, |
||||
|
www_pm_min_spare_servers=www_pm_min_spare_servers, |
||||
|
www_pm_max_spare_servers=www_pm_max_spare_servers, |
||||
|
www_request_terminate_timeout=www_request_terminate_time, |
||||
|
www_xdebug_profiler_enable_trigger=www_xdebug, |
||||
|
debug_listen=debug_listen, debug_ping_path=debug_ping_path, |
||||
|
debug_pm_status_path=debug_pm_status_path, |
||||
|
debug_pm=debug_pm, |
||||
|
debug_pm_max_requests=debug_pm_max_requests, |
||||
|
debug_pm_max_children=debug_pm_max_children, |
||||
|
debug_pm_start_servers=debug_pm_start_servers, |
||||
|
debug_pm_min_spare_servers=debug_pm_min_spare_servers, |
||||
|
debug_pm_max_spare_servers=debug_pm_max_spare_servers, |
||||
|
debug_request_terminate_timeout=debug_request_terminate, |
||||
|
debug_xdebug_profiler_enable_trigger=debug_xdebug) |
||||
|
self.app.render((data), 'info_php.mustache') |
||||
|
|
||||
|
@expose(hide=True) |
||||
|
def info_mysql(self): |
||||
|
version = os.popen("mysql -V | awk '{print($5)}' | cut -d ',' " |
||||
|
"-f1 | tr -d '\n'").read() |
||||
|
host = "localhost" |
||||
|
port = os.popen("mysql -e \"show variables\" | grep ^port | awk " |
||||
|
"'{print($2)}' | tr -d '\n'").read() |
||||
|
wait_timeout = os.popen("mysql -e \"show variables\" | grep " |
||||
|
"^wait_timeout | awk '{print($2)}' | " |
||||
|
"tr -d '\n'").read() |
||||
|
interactive_timeout = os.popen("mysql -e \"show variables\" | grep " |
||||
|
"^interactive_timeout | awk " |
||||
|
"'{print($2)}' | tr -d '\n'").read() |
||||
|
max_used_connections = os.popen("mysql -e \"show global status\" | " |
||||
|
"grep Max_used_connections | awk " |
||||
|
"'{print($2)}' | tr -d '\n'").read() |
||||
|
datadir = os.popen("mysql -e \"show variables\" | grep datadir | awk" |
||||
|
" '{print($2)}' | tr -d '\n'").read() |
||||
|
socket = os.popen("mysql -e \"show variables\" | grep \"^socket\" | " |
||||
|
"awk '{print($2)}' | tr -d '\n'").read() |
||||
|
data = dict(version=version, host=host, port=port, |
||||
|
wait_timeout=wait_timeout, |
||||
|
interactive_timeout=interactive_timeout, |
||||
|
max_used_connections=max_used_connections, |
||||
|
datadir=datadir, socket=socket) |
||||
|
self.app.render((data), 'info_mysql.mustache') |
||||
|
|
||||
|
@expose(hide=True) |
||||
|
def default(self): |
||||
|
if (not self.app.pargs.nginx and not self.app.pargs.php |
||||
|
and not self.app.pargs.mysql): |
||||
|
self.app.pargs.nginx = True |
||||
|
self.app.pargs.php = True |
||||
|
self.app.pargs.mysql = True |
||||
|
|
||||
|
if self.app.pargs.nginx: |
||||
|
if EEAptGet.is_installed('nginx-common'): |
||||
|
self.info_nginx() |
||||
|
else: |
||||
|
print("Nginx is not installed") |
||||
|
|
||||
|
if self.app.pargs.php: |
||||
|
if EEAptGet.is_installed('php5-fpm'): |
||||
|
self.info_php() |
||||
|
else: |
||||
|
print("PHP5 is installed") |
||||
|
|
||||
|
if self.app.pargs.mysql: |
||||
|
if EEShellExec.cmd_exec(self, "mysqladmin ping"): |
||||
|
self.info_mysql() |
||||
|
else: |
||||
|
print("MySQL is not installed") |
||||
|
|
||||
|
|
||||
|
def load(app): |
||||
|
# register the plugin class.. this only happens if the plugin is enabled |
||||
|
handler.register(EEInfoController) |
||||
|
|
||||
|
# register a hook (function) to run after arguments are parsed. |
||||
|
hook.register('post_argument_parsing', info_plugin_hook) |
@ -0,0 +1,9 @@ |
|||||
|
|
||||
|
MySQL ({{version}}) on {{host}}: |
||||
|
|
||||
|
port {{port}} |
||||
|
wait_timeout {{wait_timeout}} |
||||
|
interactive_timeout {{interactive_timeout}} |
||||
|
max_used_connections {{max_used_connections}} |
||||
|
datadir {{datadir}} |
||||
|
socket {{socket}} |
@ -0,0 +1,10 @@ |
|||||
|
|
||||
|
NGINX ({{version}}): |
||||
|
|
||||
|
user {{user}} |
||||
|
worker_processes {{worker_processes}} |
||||
|
worker_connections {{worker_connections}} |
||||
|
keepalive_timeout {{keepalive_timeout}} |
||||
|
fastcgi_read_timeout {{fastcgi_read_timeout}} |
||||
|
client_max_body_size {{client_max_body_size}} |
||||
|
allow {{allow}} |
@ -0,0 +1,35 @@ |
|||||
|
|
||||
|
PHP ({{version}}): |
||||
|
|
||||
|
user {{user}} |
||||
|
expose_php {{expose_php}} |
||||
|
memory_limit {{memory_limit}} |
||||
|
post_max_size {{post_max_size}} |
||||
|
upload_max_filesize {{upload_max_filesize}} |
||||
|
max_execution_time {{max_execution_time}} |
||||
|
|
||||
|
Information about www.conf |
||||
|
ping.path {{www_ping_path}} |
||||
|
pm.status_path {{www_pm_status_path}} |
||||
|
process_manager {{www_pm}} |
||||
|
pm.max_requests {{www_pm_max_requests}} |
||||
|
pm.max_children {{www_pm_max_children}} |
||||
|
pm.start_servers {{www_pm_start_servers}} |
||||
|
pm.min_spare_servers {{www_pm_min_spare_servers}} |
||||
|
pm.max_spare_servers {{www_pm_max_spare_servers}} |
||||
|
request_terminate_timeout {{www_request_terminate_timeout}} |
||||
|
xdebug.profiler_enable_trigger {{www_xdebug_profiler_enable_trigger}} |
||||
|
listen {{www_listen}} |
||||
|
|
||||
|
Information about debug.conf |
||||
|
ping.path {{debug_ping_path}} |
||||
|
pm.status_path {{debug_pm_status_path}} |
||||
|
process_manager {{debug_pm}} |
||||
|
pm.max_requests {{debug_pm_max_requests}} |
||||
|
pm.max_children {{debug_pm_max_children}} |
||||
|
pm.start_servers {{debug_pm_start_servers}} |
||||
|
pm.min_spare_servers {{debug_pm_min_spare_servers}} |
||||
|
pm.max_spare_servers {{debug_pm_max_spare_servers}} |
||||
|
request_terminate_timeout {{debug_request_terminate_timeout}} |
||||
|
xdebug.profiler_enable_trigger {{debug_xdebug_profiler_enable_trigger}} |
||||
|
listen {{debug_listen}} |
Loading…
Reference in new issue