Browse Source

Changed some display messages

bugfixes
gau1991 10 years ago
parent
commit
aa36506775
  1. 6
      ee/cli/controllers/base.py
  2. 52
      ee/cli/plugins/clean.py
  3. 41
      ee/cli/plugins/debug.py
  4. 2
      ee/cli/plugins/import_slow_log.py
  5. 10
      ee/cli/plugins/info.py
  6. 20
      ee/cli/plugins/secure.py
  7. 34
      ee/cli/plugins/site.py
  8. 34
      ee/cli/plugins/site_functions.py
  9. 6
      ee/cli/plugins/sitedb.py
  10. 12
      ee/cli/plugins/stack_services.py
  11. 1
      ee/core/addswap.py
  12. 3
      ee/core/apt_repo.py
  13. 3
      ee/core/database.py
  14. 1
      ee/core/domainvalidate.py
  15. 3
      ee/core/git.py
  16. 1
      ee/core/logging.py
  17. 4
      ee/core/shellexec.py
  18. 8
      ee/core/symboliclink.py

6
ee/cli/controllers/base.py

@ -6,9 +6,9 @@ from cement.core.controller import CementBaseController, expose
class EEBaseController(CementBaseController): class EEBaseController(CementBaseController):
class Meta: class Meta:
label = 'base' label = 'base'
description = ("easyengine is the commandline tool to manage your" description = ("EasyEngine is the commandline tool to manage your"
" websites based on wordpress and nginx with easy to" " websites based on WordPress and Nginx with easy to"
" use commands.") " use commands")
@expose(hide=True) @expose(hide=True)
def default(self): def default(self):

52
ee/cli/plugins/clean.py

@ -1,11 +1,13 @@
"""Clean Plugin for EasyEngine."""
from ee.core.shellexec import EEShellExec from ee.core.shellexec import EEShellExec
from ee.core.aptget import EEAptGet from ee.core.aptget import EEAptGet
from ee.core.services import EEService from ee.core.services import EEService
from ee.core.logging import Log
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook from cement.core import handler, hook
import os import os
import urllib.request import urllib.request
from ee.core.logging import Log
def clean_plugin_hook(app): def clean_plugin_hook(app):
@ -18,52 +20,50 @@ class EECleanController(CementBaseController):
label = 'clean' label = 'clean'
stacked_on = 'base' stacked_on = 'base'
stacked_type = 'nested' stacked_type = 'nested'
description = ('clean command cleans different cache with following ' description = ('Clean NGINX FastCGI cache, Opcacache, Memcache')
'options')
arguments = [ arguments = [
(['--all'], (['--all'],
dict(help='clean all cache', action='store_true')), dict(help='Clean all cache', action='store_true')),
(['--fastcgi'], (['--fastcgi'],
dict(help='clean fastcgi cache', action='store_true')), dict(help='Clean FastCGI cache', action='store_true')),
(['--memcache'], (['--memcache'],
dict(help='clean memcache', action='store_true')), dict(help='Clean MemCache', action='store_true')),
(['--opcache'], (['--opcache'],
dict(help='clean opcode cache cache', action='store_true')) dict(help='Clean OpCache', action='store_true'))
] ]
@expose(hide=True) @expose(hide=True)
def default(self): def default(self):
# TODO Default action for ee clean command here if (not (self.app.pargs.all or self.app.pargs.fastcgi or
if (not (self.app.pargs.all or self.app.pargs.fastcgi or self.app.pargs.memcache or self.app.pargs.opcache)):
self.app.pargs.memcache or self.app.pargs.opcache)): self.clean_fastcgi()
self.clean_fastcgi() if self.app.pargs.all:
if self.app.pargs.all: self.clean_memcache()
self.clean_memcache() self.clean_fastcgi()
self.clean_fastcgi() self.clean_opcache()
self.clean_opcache() if self.app.pargs.fastcgi:
if self.app.pargs.fastcgi: self.clean_fastcgi()
self.clean_fastcgi() if self.app.pargs.memcache:
if self.app.pargs.memcache: self.clean_memcache()
self.clean_memcache() if self.app.pargs.opcache:
if self.app.pargs.opcache: self.clean_opcache()
self.clean_opcache()
@expose(hide=True) @expose(hide=True)
def clean_memcache(self): def clean_memcache(self):
try: try:
if(EEAptGet.is_installed("memcached")): if(EEAptGet.is_installed("memcached")):
EEService.restart_service(self, "memcached") EEService.restart_service(self, "memcached")
Log.info(self, "Cleaning memcache...") Log.info(self, "Cleaning MemCache")
else: else:
Log.error(self, "Memcache not installed") Log.error(self, "Memcache not installed")
except Exception as e: except Exception as e:
Log.debug(self, "{0}".format(e)) Log.debug(self, "{0}".format(e))
Log.error(self, "Unable to restart memcached") Log.error(self, "Unable to restart Memcached")
@expose(hide=True) @expose(hide=True)
def clean_fastcgi(self): def clean_fastcgi(self):
if(os.path.isdir("/var/run/nginx-cache")): if(os.path.isdir("/var/run/nginx-cache")):
Log.info(self, "Cleaning NGINX FastCGI cache, please wait...") Log.info(self, "Cleaning NGINX FastCGI cache")
EEShellExec.cmd_exec(self, "rm -rf /var/run/nginx-cache/*") EEShellExec.cmd_exec(self, "rm -rf /var/run/nginx-cache/*")
else: else:
Log.error(self, "Unable to clean FastCGI cache") Log.error(self, "Unable to clean FastCGI cache")
@ -71,12 +71,12 @@ class EECleanController(CementBaseController):
@expose(hide=True) @expose(hide=True)
def clean_opcache(self): def clean_opcache(self):
try: try:
Log.info(self, "Cleaning opcache... ") Log.info(self, "Cleaning opcache")
wp = urllib.request.urlopen(" https://127.0.0.1:22222/cache" wp = urllib.request.urlopen(" https://127.0.0.1:22222/cache"
"/opcache/opgui.php?page=reset").read() "/opcache/opgui.php?page=reset").read()
except Exception as e: except Exception as e:
Log.debug(self, "{0}".format(e)) Log.debug(self, "{0}".format(e))
Log.error(self, "Unable to clean opacache") Log.error(self, "Unable to clean OpCache")
def load(app): def load(app):

41
ee/cli/plugins/debug.py

@ -1,12 +1,12 @@
"""Debug Plugin for EasyEngine.""" """Debug Plugin for EasyEngine"""
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook from cement.core import handler, hook
from ee.core.shellexec import EEShellExec from ee.core.shellexec import EEShellExec
from ee.core.mysql import EEMysql from ee.core.mysql import EEMysql
from ee.core.services import EEService from ee.core.services import EEService
import os
from ee.core.logging import Log from ee.core.logging import Log
import os
def debug_plugin_hook(app): def debug_plugin_hook(app):
@ -17,7 +17,7 @@ def debug_plugin_hook(app):
class EEDebugController(CementBaseController): class EEDebugController(CementBaseController):
class Meta: class Meta:
label = 'debug' label = 'debug'
description = 'debug command enables/disbaled stack debug' description = 'Used for server level debugging'
stacked_on = 'base' stacked_on = 'base'
stacked_type = 'nested' stacked_type = 'nested'
arguments = [ arguments = [
@ -58,7 +58,7 @@ class EEDebugController(CementBaseController):
for ip_addr in debug_address: for ip_addr in debug_address:
if not ("debug_connection "+ip_addr in open('/etc/nginx/' if not ("debug_connection "+ip_addr in open('/etc/nginx/'
'nginx.conf').read()): 'nginx.conf').read()):
Log.info(self, "Setting up NGINX debug connection" Log.info(self, "Setting up Nginx debug connection"
" for "+ip_addr) " for "+ip_addr)
EEShellExec.cmd_exec(self, "sed -i \"/events {{/a\\ \\ \\ " EEShellExec.cmd_exec(self, "sed -i \"/events {{/a\\ \\ \\ "
"\\ $(echo debug_connection " "\\ $(echo debug_connection "
@ -67,7 +67,7 @@ class EEDebugController(CementBaseController):
self.trigger_nginx = True self.trigger_nginx = True
if not self.trigger_nginx: if not self.trigger_nginx:
Log.info(self, "NGINX debug connection already enabled") Log.info(self, "Nginx debug connection already enabled")
self.msg = self.msg + [" /var/log/nginx/*.error.log"] self.msg = self.msg + [" /var/log/nginx/*.error.log"]
@ -79,7 +79,7 @@ class EEDebugController(CementBaseController):
" /etc/nginx/nginx.conf") " /etc/nginx/nginx.conf")
self.trigger_nginx = True self.trigger_nginx = True
else: else:
Log.info(self, "Nginx debug connection already disbaled") Log.info(self, "Nginx debug connection already disabled")
# start site specific debug # start site specific debug
elif self.start and self.app.pargs.site_name: elif self.start and self.app.pargs.site_name:
@ -120,7 +120,7 @@ class EEDebugController(CementBaseController):
else: else:
Log.info(self, "Debug for site allready disbaled") Log.info(self, "Debug for site allready disabled")
else: else:
Log.info(self, "{0} domain not valid" Log.info(self, "{0} domain not valid"
.format(self.app.pargs.site_name)) .format(self.app.pargs.site_name))
@ -135,7 +135,7 @@ class EEDebugController(CementBaseController):
"| grep 9001")): "| grep 9001")):
Log.info(self, "Enabling PHP debug") Log.info(self, "Enabling PHP debug")
data = dict(php="9001", debug="9001") data = dict(php="9001", debug="9001")
Log.info(self, 'writting the nginx configration to file' Log.info(self, 'Writting the Nginx debug configration to file '
'/etc/nginx/conf.d/upstream.conf ') '/etc/nginx/conf.d/upstream.conf ')
ee_nginx = open('/etc/nginx/conf.d/upstream.conf', 'w') ee_nginx = open('/etc/nginx/conf.d/upstream.conf', 'w')
self.app.render((data), 'upstream.mustache', out=ee_nginx) self.app.render((data), 'upstream.mustache', out=ee_nginx)
@ -153,14 +153,14 @@ class EEDebugController(CementBaseController):
"| grep 9001"): "| grep 9001"):
Log.info(self, "Disabling PHP debug") Log.info(self, "Disabling PHP debug")
data = dict(php="9000", debug="9001") data = dict(php="9000", debug="9001")
Log.info(self, 'writting the nginx configration to file' Log.info(self, 'Writting the Nginx debug configration to file '
'/etc/nginx/conf.d/upstream.conf ') '/etc/nginx/conf.d/upstream.conf ')
ee_nginx = open('/etc/nginx/conf.d/upstream.conf', 'w') ee_nginx = open('/etc/nginx/conf.d/upstream.conf', 'w')
self.app.render((data), 'upstream.mustache', out=ee_nginx) self.app.render((data), 'upstream.mustache', out=ee_nginx)
ee_nginx.close() ee_nginx.close()
self.trigger_php = True self.trigger_php = True
else: else:
Log.info(self, "PHP debug is allready disbaled") Log.info(self, "PHP debug is allready disabled")
@expose(hide=True) @expose(hide=True)
def debug_fpm(self): def debug_fpm(self):
@ -187,8 +187,7 @@ class EEDebugController(CementBaseController):
"/php-fpm.conf") "/php-fpm.conf")
self.trigger_php = True self.trigger_php = True
else: else:
Log.info(self, "PHP5-FPM log_level = debug " Log.info(self, "PHP5-FPM log_level = debug already disabled")
" already disabled")
@expose(hide=True) @expose(hide=True)
def debug_mysql(self): def debug_mysql(self):
@ -291,12 +290,12 @@ class EEDebugController(CementBaseController):
"SAVEQUERIES\', " "SAVEQUERIES\', "
"true);/d\" {0}".format(wp_config)) "true);/d\" {0}".format(wp_config))
else: else:
Log.info(self, "WordPress debug all already disbaled") Log.info(self, "WordPress debug all already disabled")
else: else:
Log.info(self, "{0} domain not valid" Log.error(self, "{0} domain not valid"
.format(self.app.pargs.site_name)) .format(self.app.pargs.site_name))
else: else:
Log.info(self, "Missing argument site_name") Log.error(self, "Missing argument site name")
@expose(hide=True) @expose(hide=True)
def debug_rewrite(self): def debug_rewrite(self):
@ -309,7 +308,7 @@ class EEDebugController(CementBaseController):
"rewrite_log on;\' /etc/nginx/nginx.conf") "rewrite_log on;\' /etc/nginx/nginx.conf")
self.trigger_nginx = True self.trigger_nginx = True
else: else:
Log.info(self, "NGINX rewrite logs already enabled") Log.info(self, "Nginx rewrite logs already enabled")
if '/var/log/nginx/*.error.log' not in self.msg: if '/var/log/nginx/*.error.log' not in self.msg:
self.msg = self.msg + ['/var/log/nginx/*.error.log'] self.msg = self.msg + ['/var/log/nginx/*.error.log']
@ -323,14 +322,14 @@ class EEDebugController(CementBaseController):
" /etc/nginx/nginx.conf") " /etc/nginx/nginx.conf")
self.trigger_nginx = True self.trigger_nginx = True
else: else:
Log.info(self, "NGINX rewrite logs already disbaled") Log.info(self, "Nginx rewrite logs already disabled")
# Start Nginx rewrite for site # Start Nginx rewrite for site
elif self.start and self.app.pargs.site_name: elif self.start and self.app.pargs.site_name:
config_path = ("/etc/nginx/sites-available/{0}.conf" config_path = ("/etc/nginx/sites-available/{0}.conf"
.format(self.app.pargs.site_name)) .format(self.app.pargs.site_name))
if not EEShellExec.cmd_exec(self, "grep \"rewrite_log on;\" {0}" if not EEShellExec.cmd_exec(self, "grep \"rewrite_log on;\" {0}"
.format(config_path)): .format(config_path)):
Log.info(self, "Setting up NGINX rewrite logs for {0}" Log.info(self, "Setting up Nginx rewrite logs for {0}"
.format(self.app.pargs.site_name)) .format(self.app.pargs.site_name))
EEShellExec.cmd_exec(self, "sed -i \"/access_log/i \\\\\\t" EEShellExec.cmd_exec(self, "sed -i \"/access_log/i \\\\\\t"
"rewrite_log on;\" {0}" "rewrite_log on;\" {0}"
@ -351,14 +350,14 @@ class EEDebugController(CementBaseController):
.format(self.app.pargs.site_name)) .format(self.app.pargs.site_name))
if EEShellExec.cmd_exec(self, "grep \"rewrite_log on;\" {0}" if EEShellExec.cmd_exec(self, "grep \"rewrite_log on;\" {0}"
.format(config_path)): .format(config_path)):
Log.info(self, "Disabling NGINX rewrite logs for {0}" Log.info(self, "Disabling Nginx rewrite logs for {0}"
.format(self.app.pargs.site_name)) .format(self.app.pargs.site_name))
EEShellExec.cmd_exec(self, "sed -i \"/rewrite_log.*/d\" {0}" EEShellExec.cmd_exec(self, "sed -i \"/rewrite_log.*/d\" {0}"
.format(config_path)) .format(config_path))
self.trigger_nginx = True self.trigger_nginx = True
else: else:
Log.info(self, "Nginx rewrite logs for {0} allready " Log.info(self, "Nginx rewrite logs for {0} allready "
" disbaled".format(self.app.pargs.site_name)) " disabled".format(self.app.pargs.site_name))
@expose(hide=True) @expose(hide=True)
def default(self): def default(self):

2
ee/cli/plugins/import_slow_log.py

@ -21,6 +21,7 @@ class EEImportslowlogController(CementBaseController):
if os.path.isdir("/var/www/22222/htdocs/db/anemometer"): if os.path.isdir("/var/www/22222/htdocs/db/anemometer"):
if os.path.isfile("/var/log/mysql/mysql-slow.log"): if os.path.isfile("/var/log/mysql/mysql-slow.log"):
# Get Anemometer user name and password # Get Anemometer user name and password
Log.error(self, "Importing MySQL slow log to Anemometer")
host = os.popen("grep -e \"\'host\'\" /var/www/22222/htdocs/" host = os.popen("grep -e \"\'host\'\" /var/www/22222/htdocs/"
"db/anemometer/conf/config.inc.php " "db/anemometer/conf/config.inc.php "
"| head -1 | cut -d\\\' -f4 | " "| head -1 | cut -d\\\' -f4 | "
@ -33,6 +34,7 @@ class EEImportslowlogController(CementBaseController):
"htdocs/db/anemometer/conf/config.inc.php " "htdocs/db/anemometer/conf/config.inc.php "
"| head -1 | cut -d\\\' -f4 | " "| head -1 | cut -d\\\' -f4 | "
"tr -d '\n'").read() "tr -d '\n'").read()
# Import slow log Anemometer using pt-query-digest # Import slow log Anemometer using pt-query-digest
EEShellExec.cmd_exec(self, "pt-query-digest --user={0} " EEShellExec.cmd_exec(self, "pt-query-digest --user={0} "
"--password={1} " "--password={1} "

10
ee/cli/plugins/info.py

@ -19,17 +19,17 @@ class EEInfoController(CementBaseController):
label = 'info' label = 'info'
stacked_on = 'base' stacked_on = 'base'
stacked_type = 'nested' stacked_type = 'nested'
description = 'info command used for debugging issued with stack or \ description = ('Display configuration information related to Nginx,'
site specific configuration' ' PHP and MySQL')
arguments = [ arguments = [
(['--mysql'], (['--mysql'],
dict(help='get mysql configuration information', dict(help='Get MySQL configuration information',
action='store_true')), action='store_true')),
(['--php'], (['--php'],
dict(help='get php configuration information', dict(help='Get PHP configuration information',
action='store_true')), action='store_true')),
(['--nginx'], (['--nginx'],
dict(help='get nginx configuration information', dict(help='Get Nginx configuration information',
action='store_true')), action='store_true')),
] ]

20
ee/cli/plugins/secure.py

@ -2,12 +2,12 @@ from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook from cement.core import handler, hook
from ee.core.shellexec import EEShellExec from ee.core.shellexec import EEShellExec
from ee.core.variables import EEVariables from ee.core.variables import EEVariables
from ee.core.logging import Log
import string import string
import random import random
import sys import sys
import hashlib import hashlib
import getpass import getpass
from ee.core.logging import Log
def secure_plugin_hook(app): def secure_plugin_hook(app):
@ -15,7 +15,7 @@ def secure_plugin_hook(app):
pass pass
class EEsecureController(CementBaseController): class EESecureController(CementBaseController):
class Meta: class Meta:
label = 'secure' label = 'secure'
stacked_on = 'base' stacked_on = 'base'
@ -43,8 +43,8 @@ class EEsecureController(CementBaseController):
@expose(hide=True) @expose(hide=True)
def secure_auth(self): def secure_auth(self):
passwd = ''.join([random.choice passwd = ''.join([random.choice
(string.ascii_letters + string.digits) (string.ascii_letters + string.digits)
for n in range(6)]) for n in range(6)])
username = input("Provide HTTP authentication user " username = input("Provide HTTP authentication user "
"name [{0}] :".format(EEVariables.ee_user)) "name [{0}] :".format(EEVariables.ee_user))
password = input("Provide HTTP authentication " password = input("Provide HTTP authentication "
@ -75,20 +75,18 @@ class EEsecureController(CementBaseController):
"/etc/nginx/sites-available/22222" "/etc/nginx/sites-available/22222"
.format(port=port)) .format(port=port))
else: else:
Log.info(self, "Unable to change EasyEngine admin port{0}" Log.error(self, "Unable to change EasyEngine admin port")
.format("[FAIL]"))
if EEVariables.ee_platform_distro == 'Debian': if EEVariables.ee_platform_distro == 'Debian':
EEShellExec.cmd_exec(self, "sed -i \"s/listen.*/listen " EEShellExec.cmd_exec(self, "sed -i \"s/listen.*/listen "
"{port} default_server ssl;/\" " "{port} default_server ssl;/\" "
"/etc/nginx/sites-available/22222" "/etc/nginx/sites-available/22222"
.format(port=port)) .format(port=port))
else: else:
Log.info(self, "Unable to change EasyEngine admin port{0}" Log.error(self, "Unable to change EasyEngine admin port")
.format("[FAIL]"))
@expose(hide=True) @expose(hide=True)
def secure_ip(self): def secure_ip(self):
#TODO:remaining with ee.conf updation in file # TODO:remaining with ee.conf updation in file
newlist = [] newlist = []
ip = input("Enter the comma separated IP addresses " ip = input("Enter the comma separated IP addresses "
"to white list [127.0.0.1]:") "to white list [127.0.0.1]:")
@ -102,7 +100,7 @@ class EEsecureController(CementBaseController):
for check_ip in user_list_ip: for check_ip in user_list_ip:
if check_ip not in exist_ip_list: if check_ip not in exist_ip_list:
newlist.extend(exist_ip_list) newlist.extend(exist_ip_list)
# changes in acl.conf file # changes in acl.conf file
if len(newlist) != 0: if len(newlist) != 0:
EEShellExec.cmd_exec(self, "sed -i \"/allow.*/d\" /etc/nginx" EEShellExec.cmd_exec(self, "sed -i \"/allow.*/d\" /etc/nginx"
"/common/acl.conf") "/common/acl.conf")
@ -115,6 +113,6 @@ class EEsecureController(CementBaseController):
def load(app): def load(app):
# register the plugin class.. this only happens if the plugin is enabled # register the plugin class.. this only happens if the plugin is enabled
handler.register(EEsecureController) handler.register(EESecureController)
# register a hook (function) to run after arguments are parsed. # register a hook (function) to run after arguments are parsed.
hook.register('post_argument_parsing', secure_plugin_hook) hook.register('post_argument_parsing', secure_plugin_hook)

34
ee/cli/plugins/site.py

@ -8,11 +8,11 @@ from ee.cli.plugins.site_functions import *
from ee.core.services import EEService from ee.core.services import EEService
from ee.cli.plugins.sitedb import * from ee.cli.plugins.sitedb import *
from ee.core.git import EEGit from ee.core.git import EEGit
from subprocess import Popen
import sys import sys
import os import os
import glob import glob
import subprocess import subprocess
from subprocess import Popen
def ee_site_hook(app): def ee_site_hook(app):
@ -26,18 +26,18 @@ class EESiteController(CementBaseController):
label = 'site' label = 'site'
stacked_on = 'base' stacked_on = 'base'
stacked_type = 'nested' stacked_type = 'nested'
description = ('site command manages website configuration' description = ('Site command manages website configuration'
' with the help of the following subcommands') ' with the help of the following subcommands')
arguments = [ arguments = [
(['site_name'], (['site_name'],
dict(help='website name')), dict(help='Website name')),
] ]
@expose(hide=True) @expose(hide=True)
def default(self): def default(self):
self.app.args.print_help() self.app.args.print_help()
@expose(help="enable site example.com") @expose(help="Enable site example.com")
def enable(self): def enable(self):
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name) (ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}' if os.path.isfile('/etc/nginx/sites-available/{0}'
@ -51,7 +51,7 @@ class EESiteController(CementBaseController):
else: else:
Log.error(self, " site {0} does not exists".format(ee_domain)) Log.error(self, " site {0} does not exists".format(ee_domain))
@expose(help="disable site example.com") @expose(help="Disable site example.com")
def disable(self): def disable(self):
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name) (ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}' if os.path.isfile('/etc/nginx/sites-available/{0}'
@ -63,7 +63,7 @@ class EESiteController(CementBaseController):
else: else:
Log.error(self, " site {0} does not exists".format(ee_domain)) Log.error(self, " site {0} does not exists".format(ee_domain))
@expose(help="get example.com information") @expose(help="Get example.com information")
def info(self): def info(self):
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name) (ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
ee_db_name = '' ee_db_name = ''
@ -105,7 +105,7 @@ class EESiteController(CementBaseController):
else: else:
Log.error(self, " site {0} does not exists".format(ee_domain)) Log.error(self, " site {0} does not exists".format(ee_domain))
@expose(help="Edit example.com's nginx configuration") @expose(help="Edit Nginx configuration of example.com")
def edit(self): def edit(self):
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name) (ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}' if os.path.isfile('/etc/nginx/sites-available/{0}'
@ -121,7 +121,7 @@ class EESiteController(CementBaseController):
else: else:
Log.error(self, " site {0} does not exists".format(ee_domain)) Log.error(self, " site {0} does not exists".format(ee_domain))
@expose(help="Display example.com's nginx configuration") @expose(help="Display Nginx configuration of example.com")
def show(self): def show(self):
# TODO Write code for ee site edit command here # TODO Write code for ee site edit command here
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name) (ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
@ -136,7 +136,7 @@ class EESiteController(CementBaseController):
else: else:
Log.error(self, " site {0} does not exists".format(ee_domain)) Log.error(self, " site {0} does not exists".format(ee_domain))
@expose(help="change directory to site webroot") @expose(help="Change directory to site webroot")
def cd(self): def cd(self):
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name) (ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
@ -454,7 +454,7 @@ class EESiteUpdateController(CementBaseController):
label = 'update' label = 'update'
stacked_on = 'site' stacked_on = 'site'
stacked_type = 'nested' stacked_type = 'nested'
description = 'update command manages website configuration with the \ description = 'Update command manages website configuration with the \
help of the following subcommands' help of the following subcommands'
arguments = [ arguments = [
(['site_name'], (['site_name'],
@ -480,7 +480,7 @@ class EESiteUpdateController(CementBaseController):
dict(help="update to wpsc cache", action='store_true')), dict(help="update to wpsc cache", action='store_true')),
] ]
@expose(help="update site type or cache") @expose(help="Update site type or cache")
def default(self): def default(self):
(ee_domain, (ee_domain,
ee_www_domain, ) = ValidateDomain(self.app.pargs.site_name) ee_www_domain, ) = ValidateDomain(self.app.pargs.site_name)
@ -875,7 +875,7 @@ class EESiteDeleteController(CementBaseController):
label = 'delete' label = 'delete'
stacked_on = 'site' stacked_on = 'site'
stacked_type = 'nested' stacked_type = 'nested'
description = 'delete command deletes website' description = 'To delete website'
arguments = [ arguments = [
(['site_name'], (['site_name'],
dict(help='domain name to be deleted')), dict(help='domain name to be deleted')),
@ -890,7 +890,7 @@ class EESiteDeleteController(CementBaseController):
dict(help="delete webroot only", action='store_true')), dict(help="delete webroot only", action='store_true')),
] ]
@expose(help="delete site") @expose(help="Delete site")
def default(self): def default(self):
# TODO Write code for ee site update here # TODO Write code for ee site update here
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name) (ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
@ -999,15 +999,15 @@ class EESiteListController(CementBaseController):
label = 'list' label = 'list'
stacked_on = 'site' stacked_on = 'site'
stacked_type = 'nested' stacked_type = 'nested'
description = 'list websites' description = 'List websites'
arguments = [ arguments = [
(['--enabled'], (['--enabled'],
dict(help='list enabled sites', action='store_true')), dict(help='List enabled websites', action='store_true')),
(['--disabled'], (['--disabled'],
dict(help="list disabled sites", action='store_true')), dict(help="List disabled websites", action='store_true')),
] ]
@expose(help="delete example.com") @expose(help="Delete example.com")
def default(self): def default(self):
sites = getAllsites(self) sites = getAllsites(self)
if not sites: if not sites:

34
ee/cli/plugins/site_functions.py

@ -1,8 +1,3 @@
import os
import random
import string
import sys
import getpass
from ee.cli.plugins.stack import EEStackController from ee.cli.plugins.stack import EEStackController
from ee.core.fileutils import EEFileUtils from ee.core.fileutils import EEFileUtils
from ee.core.mysql import EEMysql from ee.core.mysql import EEMysql
@ -10,6 +5,11 @@ from ee.core.shellexec import EEShellExec
from ee.core.variables import EEVariables from ee.core.variables import EEVariables
from ee.core.aptget import EEAptGet from ee.core.aptget import EEAptGet
from ee.core.logging import Log from ee.core.logging import Log
import os
import random
import string
import sys
import getpass
import glob import glob
@ -109,19 +109,19 @@ def setupDatabase(self, data):
# create MySQL database # create MySQL database
Log.info(self, "Setting Up Database ", end='') Log.info(self, "Setting Up Database ", end='')
Log.debug(self, "creating databse {0}".format(ee_db_name)) Log.debug(self, "Creating databse {0}".format(ee_db_name))
EEMysql.execute(self, "create database {0}" EEMysql.execute(self, "create database {0}"
.format(ee_db_name)) .format(ee_db_name))
# Create MySQL User # Create MySQL User
Log.debug(self, "creating user {0}".format(ee_db_username)) Log.debug(self, "Creating user {0}".format(ee_db_username))
EEMysql.execute(self, EEMysql.execute(self,
"create user {0}@{1} identified by '{2}'" "create user {0}@{1} identified by '{2}'"
.format(ee_db_username, ee_mysql_grant_host, .format(ee_db_username, ee_mysql_grant_host,
ee_db_password)) ee_db_password))
# Grant permission # Grant permission
Log.debug(self, "setting up user privileges") Log.debug(self, "Setting up user privileges")
EEMysql.execute(self, EEMysql.execute(self,
"grant all privileges on {0}.* to {1}@{2}" "grant all privileges on {0}.* to {1}@{2}"
.format(ee_db_name, ee_db_username, ee_mysql_grant_host)) .format(ee_db_name, ee_db_username, ee_mysql_grant_host))
@ -200,14 +200,14 @@ def setupWordpress(self, data):
if not ee_wp_user: if not ee_wp_user:
ee_wp_user = EEVariables.ee_user ee_wp_user = EEVariables.ee_user
while not ee_wp_user: while not ee_wp_user:
Log.warn(self, "Usernames can have only alphanumeric" Log.warn(self, "Username can have only alphanumeric"
"characters, spaces, underscores, hyphens," "characters, spaces, underscores, hyphens,"
"periods and the @ symbol.") "periods and the @ symbol.")
try: try:
ee_wp_user = input('Enter WordPress username: ') ee_wp_user = input('Enter WordPress username: ')
except EOFError as e: except EOFError as e:
Log.debug(self, "{0}".format(e)) Log.debug(self, "{0}".format(e))
Log.error(self, "Unable to input wp user name") Log.error(self, "Unable to input WordPress user name")
if not ee_wp_pass: if not ee_wp_pass:
ee_wp_pass = ee_random ee_wp_pass = ee_random
@ -219,12 +219,12 @@ def setupWordpress(self, data):
ee_wp_email = input('Enter WordPress email: ') ee_wp_email = input('Enter WordPress email: ')
except EOFError as e: except EOFError as e:
Log.debug(self, "{0}".format(e)) Log.debug(self, "{0}".format(e))
Log.error(self, "Unable to input wp user email") Log.error(self, "Unable to input WordPress user email")
Log.debug(self, "setting up WordPress Tables") Log.debug(self, "Setting up WordPress tables")
if not data['multisite']: if not data['multisite']:
Log.debug(self, "creating tables for WordPress Single site") Log.debug(self, "Creating tables for WordPress Single site")
EEShellExec.cmd_exec(self, "php /usr/bin/wp --allow-root core install " EEShellExec.cmd_exec(self, "php /usr/bin/wp --allow-root core install "
"--url={0} --title={0} --admin_name={1} " "--url={0} --title={0} --admin_name={1} "
.format(data['www_domain'], ee_wp_user) .format(data['www_domain'], ee_wp_user)
@ -232,7 +232,7 @@ def setupWordpress(self, data):
.format(ee_wp_pass, ee_wp_email), .format(ee_wp_pass, ee_wp_email),
errormsg="Unable to setup WordPress Tables") errormsg="Unable to setup WordPress Tables")
else: else:
Log.debug(self, "creating tables for WordPress multisite") Log.debug(self, "Creating tables for WordPress multisite")
EEShellExec.cmd_exec(self, "php /usr/bin/wp --allow-root " EEShellExec.cmd_exec(self, "php /usr/bin/wp --allow-root "
"core multisite-install " "core multisite-install "
"--url={0} --title={0} --admin_name={1} " "--url={0} --title={0} --admin_name={1} "
@ -306,7 +306,7 @@ def uninstallWP_Plugin(self, plugin_name, data):
def SetWebrootPermissions(self, webroot): def SetWebrootPermissions(self, webroot):
Log.debug(self, "Setting Up Permissions...") Log.debug(self, "Setting up permissions...")
EEFileUtils.chown(self, webroot, EEVariables.ee_php_user, EEFileUtils.chown(self, webroot, EEVariables.ee_php_user,
EEVariables.ee_php_user, recursive=True) EEVariables.ee_php_user, recursive=True)
@ -316,7 +316,7 @@ def siteBackup(self, data):
backup_path = ee_site_webroot + '/backup/{0}'.format(EEVariables.ee_date) backup_path = ee_site_webroot + '/backup/{0}'.format(EEVariables.ee_date)
if not EEFileUtils.isexist(self, backup_path): if not EEFileUtils.isexist(self, backup_path):
EEFileUtils.mkdir(self, backup_path) EEFileUtils.mkdir(self, backup_path)
Log.info(self, "Backup Location : {0}".format(backup_path)) Log.info(self, "Backup location : {0}".format(backup_path))
EEFileUtils.copyfile(self, '/etc/nginx/sites-available/{0}' EEFileUtils.copyfile(self, '/etc/nginx/sites-available/{0}'
.format(data['site_name']), backup_path) .format(data['site_name']), backup_path)
@ -331,7 +331,7 @@ def siteBackup(self, data):
ee_db_name = (EEFileUtils.grep(self, configfiles[0], ee_db_name = (EEFileUtils.grep(self, configfiles[0],
'DB_NAME').split(',')[1] 'DB_NAME').split(',')[1]
.split(')')[0].strip().replace('\'', '')) .split(')')[0].strip().replace('\'', ''))
Log.info(self, 'Backing up Database ', end='') Log.info(self, 'Backing up database ', end='')
EEShellExec.cmd_exec(self, "mysqldump {0} > {1}/{0}.sql" EEShellExec.cmd_exec(self, "mysqldump {0} > {1}/{0}.sql"
.format(ee_db_name, backup_path), .format(ee_db_name, backup_path),
errormsg="\nFailed: Backup Database") errormsg="\nFailed: Backup Database")

6
ee/cli/plugins/sitedb.py

@ -3,9 +3,9 @@ from sqlalchemy import ForeignKey, func
from sqlalchemy.orm import relationship, backref from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from ee.core.logging import Log from ee.core.logging import Log
import sys
from ee.core.database import db_session from ee.core.database import db_session
from ee.core.models import SiteDB from ee.core.models import SiteDB
import sys
def addNewSite(self, site, stype, cache, path, def addNewSite(self, site, stype, cache, path,
@ -60,7 +60,7 @@ def deleteSiteInfo(self, site):
q = SiteDB.query.filter(SiteDB.sitename == site).first() q = SiteDB.query.filter(SiteDB.sitename == site).first()
except Exception as e: except Exception as e:
Log.debug(self, "{0}".format(e)) Log.debug(self, "{0}".format(e))
Log.error(self, "Unable to query database :") Log.error(self, "Unable to query database")
try: try:
db_session.delete(q) db_session.delete(q)
db_session.commit() db_session.commit()
@ -75,4 +75,4 @@ def getAllsites(self):
return q return q
except Exception as e: except Exception as e:
Log.debug(self, "{0}".format(e)) Log.debug(self, "{0}".format(e))
Log.error(self, "Unable to query database :") Log.error(self, "Unable to query database")

12
ee/cli/plugins/stack_services.py

@ -9,7 +9,7 @@ class EEStackStatusController(CementBaseController):
label = 'stack_services' label = 'stack_services'
stacked_on = 'stack' stacked_on = 'stack'
stacked_type = 'embedded' stacked_type = 'embedded'
description = 'stack command manages stack operations' description = 'Get status of stack'
arguments = [ arguments = [
(['--memcache'], (['--memcache'],
dict(help='start/stop/restart stack', action='store_true')), dict(help='start/stop/restart stack', action='store_true')),
@ -17,7 +17,7 @@ class EEStackStatusController(CementBaseController):
dict(help='start/stop/restart dovecot', action='store_true')), dict(help='start/stop/restart dovecot', action='store_true')),
] ]
@expose(help="start stack services") @expose(help="Start stack services")
def start(self): def start(self):
services = [] services = []
if self.app.pargs.nginx: if self.app.pargs.nginx:
@ -44,7 +44,7 @@ class EEStackStatusController(CementBaseController):
for service in services: for service in services:
EEService.start_service(self, service) EEService.start_service(self, service)
@expose(help="stop stack services") @expose(help="Stop stack services")
def stop(self): def stop(self):
services = [] services = []
if self.app.pargs.nginx: if self.app.pargs.nginx:
@ -71,7 +71,7 @@ class EEStackStatusController(CementBaseController):
for service in services: for service in services:
EEService.stop_service(self, service) EEService.stop_service(self, service)
@expose(help="restart stack services") @expose(help="Restart stack services")
def restart(self): def restart(self):
services = [] services = []
if self.app.pargs.nginx: if self.app.pargs.nginx:
@ -98,7 +98,7 @@ class EEStackStatusController(CementBaseController):
Log.debug(self, "nginx,php5-fpm,mysql,postfix services restart") Log.debug(self, "nginx,php5-fpm,mysql,postfix services restart")
EEService.restart_service(self, service) EEService.restart_service(self, service)
@expose(help="get stack status") @expose(help="Get stack status")
def status(self): def status(self):
services = [] services = []
if self.app.pargs.nginx: if self.app.pargs.nginx:
@ -126,7 +126,7 @@ class EEStackStatusController(CementBaseController):
if EEService.get_service_status(self, service): if EEService.get_service_status(self, service):
Log.info(self, "{0:10}: {1}".format(service, "Running")) Log.info(self, "{0:10}: {1}".format(service, "Running"))
@expose(help="reload stack services") @expose(help="Reload stack services")
def reload(self): def reload(self):
services = [] services = []
if self.app.pargs.nginx: if self.app.pargs.nginx:

1
ee/core/addswap.py

@ -1,3 +1,4 @@
"""EasyEngine SWAP creation"""
from ee.core.variables import EEVariables from ee.core.variables import EEVariables
from ee.core.shellexec import EEShellExec from ee.core.shellexec import EEShellExec
from ee.core.fileutils import EEFileUtils from ee.core.fileutils import EEFileUtils

3
ee/core/apt_repo.py

@ -1,6 +1,7 @@
import os """EasyEngine packages repository operations"""
from ee.core.shellexec import EEShellExec from ee.core.shellexec import EEShellExec
from ee.core.variables import EEVariables from ee.core.variables import EEVariables
import os
class EERepo(): class EERepo():

3
ee/core/database.py

@ -1,8 +1,9 @@
"""EasyEngine generic database creation module"""
from sqlalchemy import create_engine from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
#db_path = self.app.config.get('site', 'db_path') # db_path = self.app.config.get('site', 'db_path')
engine = create_engine('sqlite:////var/lib/ee/ee.sqlite', convert_unicode=True) engine = create_engine('sqlite:////var/lib/ee/ee.sqlite', convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False, db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False, autoflush=False,

1
ee/core/domainvalidate.py

@ -1,3 +1,4 @@
"""EasyEngine domain validation module."""
from urllib.parse import urlparse from urllib.parse import urlparse

3
ee/core/git.py

@ -1,6 +1,7 @@
"""EasyEngine GIT module"""
from sh import git, ErrorReturnCode from sh import git, ErrorReturnCode
import os
from ee.core.logging import Log from ee.core.logging import Log
import os
class EEGit: class EEGit:

1
ee/core/logging.py

@ -1,3 +1,4 @@
"""EasyEngine log module"""
class Log: class Log:

4
ee/core/shellexec.py

@ -1,9 +1,9 @@
"""EasyEngine shell executaion functions.""" """EasyEngine shell executaion functions."""
from subprocess import Popen
from ee.core.logging import Log
import os import os
import sys import sys
import subprocess import subprocess
from subprocess import Popen
from ee.core.logging import Log
class EEShellExec(): class EEShellExec():

8
ee/core/symboliclink.py

@ -1,8 +0,0 @@
"""EasyEngine symbolic link creation module"""
class EESymbolicLink():
"""Intialization for symbolic link"""
def ___init__():
# TODO method for symbolic link
pass
Loading…
Cancel
Save