From ebfbf1241f318e4bcb728b309729276d046e7750 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Fri, 21 Jul 2023 10:30:49 -0500 Subject: [PATCH] Update PKI_VERSION in tomcat.conf The PKI_VERSION in tomcat.conf has been modified to use quotes like other properties in the file so they all can be processed more consistently. The PropertyFile and PKIUpgradeTracker classes have been modified to support optional quotes. --- base/common/python/pki/__init__.py | 37 +++++++++++++++++------ base/common/python/pki/upgrade.py | 5 +-- base/server/python/pki/server/__init__.py | 2 +- base/server/python/pki/server/upgrade.py | 3 +- base/server/share/conf/tomcat.conf | 2 +- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/base/common/python/pki/__init__.py b/base/common/python/pki/__init__.py index 4c4b3a3278b..6cf2fd9d200 100644 --- a/base/common/python/pki/__init__.py +++ b/base/common/python/pki/__init__.py @@ -464,13 +464,14 @@ class PropertyFile(object): are maintained internally as a list of properties. Properties are strings of the format where - '=' is the default delimiter. + '=' is the default delimiter. The value can optionally be quoted. """ - def __init__(self, filename, delimiter='='): + def __init__(self, filename, delimiter='=', quote=None): """ Constructor """ self.filename = filename self.delimiter = delimiter + self.quote = quote self.lines = [] @@ -568,8 +569,6 @@ def get(self, name): :type name: str :return: str -- value of property """ - result = None - for line in self.lines: # parse @@ -582,10 +581,17 @@ def get(self, name): key = match.group(1) value = match.group(2) - if key.lower() == name.lower(): - return value + if key.lower() != name.lower(): + continue - return result + # remove quotes if any + if self.quote and value.startswith(self.quote) and value.endswith(self.quote): + length = len(self.quote) + value = value[length:-length] + + return value + + return None def set(self, name, value, index=None): """ @@ -599,6 +605,9 @@ def set(self, name, value, index=None): :type index: int :return: None """ + if self.quote: + value = self.quote + value + self.quote + for i, line in enumerate(self.lines): # parse @@ -640,8 +649,16 @@ def remove(self, name): key = match.group(1) value = match.group(2) - if key.lower() == name.lower(): - self.lines.pop(i) - return value + if key.lower() != name.lower(): + continue + + self.lines.pop(i) + + # remove quotes if any + if self.quote and value.startswith(self.quote) and value.endswith(self.quote): + length = len(self.quote) + value = value[length:-length] + + return value return None diff --git a/base/common/python/pki/upgrade.py b/base/common/python/pki/upgrade.py index eff51ec1cad..a144016ce42 100644 --- a/base/common/python/pki/upgrade.py +++ b/base/common/python/pki/upgrade.py @@ -43,7 +43,8 @@ class PKIUpgradeTracker(object): def __init__(self, name, filename, delimiter='=', version_key='PKI_VERSION', - index_key='PKI_UPGRADE_INDEX'): + index_key='PKI_UPGRADE_INDEX', + quote=None): self.name = name self.filename = filename @@ -54,7 +55,7 @@ def __init__(self, name, filename, delimiter='=', # properties must be read and written immediately to avoid # interfering with scriptlets that update the same file - self.properties = pki.PropertyFile(filename, delimiter) + self.properties = pki.PropertyFile(filename, delimiter=delimiter, quote=quote) # run all scriptlets for each upgrade version self.remove_index() diff --git a/base/server/python/pki/server/__init__.py b/base/server/python/pki/server/__init__.py index 76c501fe348..cac4141496f 100644 --- a/base/server/python/pki/server/__init__.py +++ b/base/server/python/pki/server/__init__.py @@ -694,7 +694,7 @@ def create(self, force=False): # copy /etc/tomcat/tomcat.conf self.copy(Tomcat.TOMCAT_CONF, self.tomcat_conf, force=force) - tomcat_conf = pki.PropertyFile(self.tomcat_conf) + tomcat_conf = pki.PropertyFile(self.tomcat_conf, quote='"') tomcat_conf.read() # store JAVA_HOME from /usr/share/pki/etc/pki.conf diff --git a/base/server/python/pki/server/upgrade.py b/base/server/python/pki/server/upgrade.py index 2c5ae6400ca..d5480e23999 100644 --- a/base/server/python/pki/server/upgrade.py +++ b/base/server/python/pki/server/upgrade.py @@ -69,7 +69,8 @@ def get_tracker(self): '%s instance' % self.instance, INSTANCE_TRACKER % self.instance.conf_dir, version_key='PKI_VERSION', - index_key='PKI_UPGRADE_INDEX') + index_key='PKI_UPGRADE_INDEX', + quote='"') return self.tracker diff --git a/base/server/share/conf/tomcat.conf b/base/server/share/conf/tomcat.conf index 0ee187b8ba2..58aed04869f 100644 --- a/base/server/share/conf/tomcat.conf +++ b/base/server/share/conf/tomcat.conf @@ -57,7 +57,7 @@ TOMCAT_LOG="/var/log/pki/[pki_instance_name]/tomcat-initd.log" # put your own definitions here # (i.e. LD_LIBRARY_PATH for some jdbc drivers) -PKI_VERSION=[application_version] +PKI_VERSION="[application_version]" # Debian settings TOMCAT_USER="[pki_user]"