Parse acme.sh csv cert list to detect if a wildcard is available
This commit is contained in:
@@ -8,6 +8,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
|
||||
### v3.9.x - [Unreleased]
|
||||
|
||||
#### Changed
|
||||
|
||||
- Date format in backup name : /backup/30Aug2019035932 -> /backup/30Aug2019-03-59-32
|
||||
|
||||
#### Fixed
|
||||
|
||||
- cache-enabler plugin not installed and configured with `wo site update site.tld --wpce`
|
||||
|
||||
### v3.9.8.5 - 2019-08-30
|
||||
|
||||
#### Changed
|
||||
|
||||
@@ -1539,7 +1539,7 @@ class WOSiteUpdateController(CementBaseController):
|
||||
"enable_purge": 1,
|
||||
"enable_map": "0",
|
||||
"enable_log": 0,
|
||||
"enable_stamp": 0,
|
||||
"enable_stamp": 1,
|
||||
"purge_homepage_on_new": 1,
|
||||
"purge_homepage_on_edit": 1,
|
||||
"purge_homepage_on_del": 1,
|
||||
@@ -1580,7 +1580,7 @@ class WOSiteUpdateController(CementBaseController):
|
||||
"enable_purge": 1,
|
||||
"enable_map": "0",
|
||||
"enable_log": 0,
|
||||
"enable_stamp": 0,
|
||||
"enable_stamp": 1,
|
||||
"purge_homepage_on_new": 1,
|
||||
"purge_homepage_on_edit": 1,
|
||||
"purge_homepage_on_del": 1,
|
||||
|
||||
@@ -6,6 +6,7 @@ import json
|
||||
import re
|
||||
import string
|
||||
import subprocess
|
||||
import csv
|
||||
from subprocess import CalledProcessError
|
||||
|
||||
from wo.cli.plugins.sitedb import getSiteInfo
|
||||
@@ -1455,6 +1456,38 @@ def setupLetsEncrypt(self, wo_domain_name, subdomain=False, wildcard=False,
|
||||
"you are running Let\'s Encrypt Client "
|
||||
"\n to allow it to verify the site automatically.")
|
||||
|
||||
# check if a wildcard exist to secure a new subdomain
|
||||
|
||||
|
||||
def checkWildcardExist(self, wo_domain_name):
|
||||
|
||||
wo_acme_exec = ("/etc/letsencrypt/acme.sh --config-home "
|
||||
"'/etc/letsencrypt/config'")
|
||||
try:
|
||||
# export certificates list from acme.sh
|
||||
WOShellExec.cmd_exec(self, "{0} ".format(wo_acme_exec) +
|
||||
"--list --list-raw > /var/lib/wo/cert.csv")
|
||||
except CommandExecutionError as e:
|
||||
Log.debug(self, "{0}".format(e))
|
||||
Log.error(self, "Failed to export cert list")
|
||||
|
||||
# define new csv dialect
|
||||
csv.register_dialect('acmeconf', delimiter='|')
|
||||
# open file
|
||||
with open('/var/lib/wo/cert.csv', 'rt') as wo_cert:
|
||||
reader = csv.reader(wo_cert, 'acmeconf')
|
||||
wo_wildcard = "*.{0}".format(wo_domain_name)
|
||||
try:
|
||||
for row in reader:
|
||||
if wo_wildcard in row[2]:
|
||||
break
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except csv.Error as e:
|
||||
Log.debug(self, "{0}".format(e))
|
||||
Log.error(self, "Failed to read cert list")
|
||||
|
||||
# letsencrypt cert renewal
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user