Refactor -le=renew

This commit is contained in:
VirtuBox
2019-10-29 18:47:52 +01:00
parent 97103704eb
commit aa5f2eeb49
5 changed files with 67 additions and 27 deletions

View File

@@ -19,3 +19,4 @@ class WOOutputHandler(MustacheOutputHandler):
return open(full_path, encoding='utf-8', mode='r').read() return open(full_path, encoding='utf-8', mode='r').read()
else: else:
continue continue
return 1

View File

@@ -1069,23 +1069,39 @@ class WOSiteUpdateController(CementBaseController):
else: else:
Log.error(self, 'ngxblocker stack is not installed') Log.error(self, 'ngxblocker stack is not installed')
elif pargs.ngxblocker == "off": elif pargs.ngxblocker == "off":
if os.path.isfile( try:
'/var/www/{0}/conf/nginx/ngxblocker.conf' setupngxblocker(self, wo_domain, False)
.format(wo_domain)): except SiteError as e:
WOFileUtils.mvfile(self, '/var/www/{0}/conf/' Log.debug(self, str(e))
'nginx/ngxblocker.conf' Log.info(self, "\nngxblocker not enabled.")
.format(wo_domain),
'/var/www/{0}/conf/'
'nginx/ngxblocker.conf.disabled'
.format(wo_domain))
else:
Log.error(self, "ngxblocker isn't enabled")
# Service Nginx Reload # Service Nginx Reload
if not WOService.reload_service(self, 'nginx'): if not WOService.reload_service(self, 'nginx'):
Log.error(self, "service nginx reload failed. " Log.error(self, "service nginx reload failed. "
"check issues with `nginx -t` command") "check issues with `nginx -t` command")
return 0 return 0
#
if (pargs.letsencrypt == 'renew' and
not (pargs.html or
pargs.php or pargs.php73 or pargs.mysql or
pargs.wp or pargs.wpfc or pargs.wpsc or
pargs.wprocket or pargs.wpce or
pargs.wpsubdir or pargs.wpsubdomain or
pargs.ngxblocker or pargs.hsts)):
if WOAcme.cert_check(self, wo_domain):
if not pargs.force:
if (SSL.getexpirationdays(self, wo_domain) > 45):
Log.error(
self,
'Your certificate expire in more than 45 days.\n'
'Add \'--force\' to force to renew')
Log.wait(self, "Renewing SSL certificate")
if WOAcme.renew(self, wo_domain):
Log.valide(self, "Renewing SSL certificate")
else:
Log.error(self, "Certificate doesn't exist")
return 0
if ((stype == 'php' and if ((stype == 'php' and
oldsitetype not in ['html', 'proxy', 'php73']) or oldsitetype not in ['html', 'proxy', 'php73']) or
@@ -1281,10 +1297,10 @@ class WOSiteUpdateController(CementBaseController):
if not (acme_subdomain is True): if not (acme_subdomain is True):
if letsencrypt is check_ssl: if letsencrypt is check_ssl:
if letsencrypt is False: if letsencrypt is False:
Log.error(self, "SSl is not configured for given " Log.error(self, "SSL is not configured for given "
"site") "site")
elif letsencrypt is True: elif letsencrypt is True:
Log.error(self, "SSl is already configured for given " Log.error(self, "SSL is already configured for given "
"site") "site")
pargs.letsencrypt = False pargs.letsencrypt = False

View File

@@ -1554,19 +1554,31 @@ def setuprocketchat(self):
def setupngxblocker(self, domain, block=True): def setupngxblocker(self, domain, block=True):
if os.path.isdir('/var/www/{0}/conf/nginx'.format(domain)): if block:
if not os.path.isfile('/var/www/{0}/conf/nginx/ngxblocker.disabled' if os.path.isdir('/var/www/{0}/conf/nginx'.format(domain)):
.format(domain)): if not os.path.isfile(
ngxconf = open("/var/www/{0}/conf/nginx/ngxblocker.conf" '/var/www/{0}/conf/nginx/ngxblocker.conf.disabled'
.format(domain), .format(domain)):
encoding='utf-8', mode='w') ngxconf = open(
ngxconf.write("# Bad Bot Blocker\n" "/var/www/{0}/conf/nginx/ngxblocker.conf"
"include /etc/nginx/bots.d/ddos.conf;\n" .format(domain),
"include /etc/nginx/bots.d/blockbots.conf;\n") encoding='utf-8', mode='w')
ngxconf.close() ngxconf.write(
else: "# Bad Bot Blocker\n"
"include /etc/nginx/bots.d/ddos.conf;\n"
"include /etc/nginx/bots.d/blockbots.conf;\n")
ngxconf.close()
else:
WOFileUtils.mvfile(
self, '/var/www/{0}/conf/nginx/ngxblocker.conf.disabled'
.format(domain), '/var/www/{0}/conf/nginx/ngxblocker.conf'
.format(domain))
else:
if os.path.isfile('/var/www/{0}/conf/nginx/ngxblocker.conf'
.format(domain)):
WOFileUtils.mvfile( WOFileUtils.mvfile(
self, '/var/www/{0}/conf/nginx/ngxblocker.disabled' self, '/var/www/{0}/conf/nginx/ngxblocker.conf'
.format(domain), '/var/www/{0}/conf/nginx/ngxblocker' .format(domain),
'/var/www/{0}/conf/nginx/ngxblocker.conf.disabled'
.format(domain)) .format(domain))
return 0 return 0

View File

@@ -132,6 +132,17 @@ class WOAcme:
"ssl.conf") "ssl.conf")
return 0 return 0
def renew(self, domain):
"""Renew letsencrypt certificate with acme.sh"""
try:
WOShellExec.cmd_exec(
self, "{0} ".format(WOAcme.wo_acme_exec) +
"--renew -d {0} --ecc --force".format(domain))
except CommandExecutionError as e:
Log.debug(self, str(e))
Log.error(self, 'Unable to renew certificate')
return True
def check_dns(self, acme_domains): def check_dns(self, acme_domains):
"""Check if a list of domains point to the server IP""" """Check if a list of domains point to the server IP"""
server_ip = requests.get('http://v4.wordops.eu/').text server_ip = requests.get('http://v4.wordops.eu/').text

View File

@@ -44,7 +44,7 @@ class Log:
""" """
Logs debug messages into log file Logs debug messages into log file
""" """
self.app.log.debug(Log.HEADER + msg + Log.ENDC + __name__) self.app.log.debug(Log.HEADER + msg + Log.ENDC)
def wait(self, msg, end='\r', log=True): def wait(self, msg, end='\r', log=True):
""" """