Browse Source

ee site info, enable, disable, log completed

bugfixes
harshadyeola 10 years ago
parent
commit
7713f844ac
  1. 105
      ee/cli/plugins/site.py
  2. 31
      ee/cli/plugins/site_functions.py
  3. 10
      ee/cli/templates/siteinfo.mustache
  4. 10
      ee/core/git.py
  5. 19
      ee/core/services.py
  6. 13
      ee/core/shellexec.py

105
ee/cli/plugins/site.py

@ -10,6 +10,7 @@ from ee.cli.plugins.sitedb import *
from ee.core.git import EEGit
import sys
import os
import glob
def ee_site_hook(app):
@ -41,33 +42,108 @@ class EESiteController(CementBaseController):
@expose(help="enable site example.com")
def enable(self):
# TODO Write code for ee site enable command here
print("Inside EESiteController.enable().")
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}'
.format(ee_domain)):
EEFileUtils.create_symlink(self,
['/etc/nginx/sites-available/{0}.conf'
.format(ee_domain_name),
'/etc/nginx/sites-enabled/{0}.conf'
.format(ee_domain_name)])
else:
Log.error(self, "site {0} does not exists".format(ee_domain))
sys.exit(1)
@expose(help="disable site example.com")
def disable(self):
# TODO Write code for ee site disable command here
print("Inside EESiteController.disable().")
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}'
.format(ee_domain)):
EEFileUtils.remove_symlink(self,
['/etc/nginx/sites-available/{0}.conf'
.format(ee_domain_name),
'/etc/nginx/sites-enabled/{0}.conf'
.format(ee_domain_name)])
else:
Log.error(self, "site {0} does not exists".format(ee_domain))
sys.exit(1)
@expose(help="get example.com information")
def info(self):
# TODO Write code for ee site info command here
print("Inside EESiteController.info().")
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
ee_db_name = ''
ee_db_user = ''
ee_db_pass = ''
if os.path.isfile('/etc/nginx/sites-available/{0}'
.format(ee_domain)):
ee_site_webroot = EEVariables.ee_webroot + ee_domain
access_log = (ee_site_webroot + '/logs/access.log')
error_log = (ee_site_webroot + '/logs/error.log')
configfiles = glob.glob(ee_site_webroot + '/*-config.php')
if configfiles:
if EEFileUtils.isexist(self, configfiles[0]):
ee_db_name = (EEFileUtils.grep(self, configfiles[0],
'DB_NAME').split(',')[1]
.split(')')[0].strip().replace('\'', ''))
ee_db_user = (EEFileUtils.grep(self, configfiles[0],
'DB_USER').split(',')[1]
.split(')')[0].strip().replace('\'', ''))
ee_db_pass = (EEFileUtils.grep(self, configfiles[0],
'DB_PASSWORD').split(',')[1]
.split(')')[0].strip().replace('\'', ''))
data = dict(domain=ee_domain, webroot=ee_site_webroot,
accesslog=access_log, errorlog=error_log,
dbname=ee_db_name, dbuser=ee_db_user,
dbpass=ee_db_pass)
self.app.render((data), 'siteinfo.mustache')
else:
Log.error(self, "site {0} does not exists".format(ee_domain))
sys.exit(1)
@expose(help="Monitor example.com logs")
def log(self):
# TODO Write code for ee site log command here
print("Inside EESiteController.log().")
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}'
.format(ee_domain)):
EEShellExec.cmd_exec(self, 'tail -f /var/log/nginx/{0}.*.log'
.format(ee_domain))
else:
Log.error(self, "site {0} does not exists".format(ee_domain))
sys.exit(1)
@expose(help="Edit example.com's nginx configuration")
def edit(self):
# TODO Write code for ee site edit command here
print("Inside EESiteController.edit().")
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}'
.format(ee_domain)):
EEShellExec.invoke_editor(self, '/etc/nginx/sites-available/{0}'
.format(ee_domain))
if (EEGit.checkfilestatus(self, "/etc/nginx",
'/etc/nginx/sites-available/{0}'.format(ee_domain))):
EEGit.add(self, ["/etc/nginx"], msg="Edit website: {0}"
.format(ee_domain))
# Reload NGINX
EEService.reload_service(self, 'nginx')
else:
Log.error(self, "site {0} does not exists".format(ee_domain))
sys.exit(1)
@expose(help="Display example.com's nginx configuration")
def show(self):
# TODO Write code for ee site edit command here
print("Inside EESiteController.show().")
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
if os.path.isfile('/etc/nginx/sites-available/{0}'
.format(ee_domain)):
Log.info(self, "Display NGINX configuration for {0}"
.format(ee_domain))
f = open('/etc/nginx/sites-available/{0}'.format(ee_domain), "r")
text = f.read()
print(text)
f.close()
else:
Log.error(self, "site {0} does not exists".format(ee_domain))
sys.exit(1)
@expose(help="list sites currently available")
def list(self):
@ -116,14 +192,13 @@ class EESiteCreateController(CementBaseController):
# data = dict(foo='EESiteCreateController.default().')
# self.app.render((data), 'default.mustache')
# Check domain name validation
(ee_domain,
ee_www_domain, ) = ValidateDomain(self.app.pargs.site_name)
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
ee_site_webroot = EEVariables.ee_webroot + ee_domain
# Check if doain previously exists or not
if os.path.isfile('/etc/nginx/sites-available/{0}.conf'
if os.path.isfile('/etc/nginx/sites-available/{0}'
.format(ee_domain)):
self.app.log.error("site {0} already exists"
self.app.log.error(self, "site {0} already exists"
.format(ee_domain))
sys.exit(1)

31
ee/cli/plugins/site_functions.py

@ -18,7 +18,7 @@ def SetupDomain(self, data):
self.app.log.info("Creating {0} ...".format(ee_domain_name))
# write nginx config for file
try:
ee_site_nginx_conf = open('/etc/nginx/sites-available/{0}.conf'
ee_site_nginx_conf = open('/etc/nginx/sites-available/{0}'
.format(ee_domain_name), 'w')
self.app.render((data), 'virtualconf.mustache',
@ -33,9 +33,9 @@ def SetupDomain(self, data):
sys.exit(1)
# create symbolic link for
EEFileUtils.create_symlink(self, ['/etc/nginx/sites-available/{0}.conf'
EEFileUtils.create_symlink(self, ['/etc/nginx/sites-available/{0}'
.format(ee_domain_name),
'/etc/nginx/sites-enabled/{0}.conf'
'/etc/nginx/sites-enabled/{0}'
.format(ee_domain_name)])
# Creating htdocs & logs directory
@ -283,22 +283,21 @@ def siteBackup(self, data):
if not EEFileUtils.isexist(self, backup_path):
EEFileUtils.mkdir(self, backup_path)
Log.info(self, "Backup Location : {0}".format(backup_path))
EEFileUtils.copyfile(self, '/etc/nginx/sites-available/{0}.conf'
EEFileUtils.copyfile(self, '/etc/nginx/sites-available/{0}'
.format(data['ee_domain']), backup_path)
if data['currsitetype'] in ['html', 'php', 'mysql']:
Log.info(self, "Backup Webroot ...")
EEFileUtils.mvfile(self, ee_site_webroot + '/htdocs', backup_path)
configfiles = glob(ee_site_webroot + '/htdocs/*-config.php')
for file in configfiles:
if EEFileUtils.isexist(self, file):
ee_db_name = (EEFileUtils.grep(self, file, 'DB_NAME').split(',')[1]
.split(')')[0].strip())
Log.info(self, 'Backup Database, please wait')
EEShellExec.cmd_exec(self, "mysqldump {0} > {1}/{0}.sql"
.format(ee_db_name, backup_path),
"Failed: Backup Database")
# move wp-config.php/ee-config.php to backup
EEFileUtils.mvfile(self, file, backup_path)
configfiles = glob(ee_site_webroot + '/*-config.php')
if EEFileUtils.isexist(self, configfiles[0]):
ee_db_name = (EEFileUtils.grep(self, file, 'DB_NAME').split(',')[1]
.split(')')[0].strip().replace('\'', ''))
Log.info(self, 'Backup Database, please wait')
EEShellExec.cmd_exec(self, "mysqldump {0} > {1}/{0}.sql"
.format(ee_db_name, backup_path),
"Failed: Backup Database")
# move wp-config.php/ee-config.php to backup
EEFileUtils.mvfile(self, file, backup_path)

10
ee/cli/templates/siteinfo.mustache

@ -0,0 +1,10 @@
Information about {{domain}}:
Nginx configuration {{type}} {{enable}}
access_log {{accesslog}}
error_log {{errorlog}}
Webroot {{webroot}}
{{#dbname}}DB_NAME {{dbname}}{{/dbname}}
{{#dbname}}DB_USER {{dbuser}}{{/dbname}}
{{#dbname}}DB_PASS {{dbpass}}{{/dbname}}
{{#tablepref}}table_prefix {{tableprefix}}{{/tablepref}}

10
ee/core/git.py

@ -34,3 +34,13 @@ class EEGit:
sys.exit(1)
else:
self.app.log.debug("EEGit: Path {0} not present".format(path))
def checkfilestatus(self, repo, filepath):
global git
git = git.bake("--git-dir={0}/.git".format(repo),
"--work-tree={0}".format(repo))
status = git.status("-s", "{0}".format(filepath))
if len(status.splitlines()) > 0:
return True
else:
return False

19
ee/core/services.py

@ -48,6 +48,22 @@ class EEService():
def reload_service(self, service_name):
try:
if service_name in ['nginx', 'php5-fpm']:
retcode = subprocess.getstatusoutput('{0} -t'
.format(service_name))
if retcode[0] == 0:
subprocess.getstatusoutput('service {0} reload'
.format(service_name))
self.app.log.info("reload : {0} [OK]"
.format(service_name))
return True
else:
self.app.log.error("reload : {0} [FAIL]"
.format(service_name))
self.app.log.debug("{0}"
.format(retcode[1]))
return False
retcode = subprocess.getstatusoutput('service {0} reload'
.format(service_name))
if retcode[0] == 0:
@ -56,7 +72,8 @@ class EEService():
else:
return False
except OSError as e:
self.app.log.error("Failed to reload NGINX:", e)
self.app.log.error("Failed to reload {0} {1}"
.format(service_name, e))
return False
def get_service_status(self, service_name):

13
ee/core/shellexec.py

@ -29,3 +29,16 @@ class EEShellExec():
Log.debug(self, "Unable to execute command \ {0}{1}"
.format(e.errno, e.strerror))
sys.exit(1)
def invoke_editor(self, filepath, errormsg=''):
try:
subprocess.call(['sensible-editor', filepath])
except OSError as e:
if errormsg:
Log.error(self, errormsg)
else:
Log.error(self, "Unable to edit file \ {0}{1}"
.format(e.errno, e.strerror))
Log.debug(self, "Unable to edit file \ {0}{1}"
.format(e.errno, e.strerror))
sys.exit(1)

Loading…
Cancel
Save