mirror of
https://github.com/zokradonh/kopano-docker
synced 2025-06-07 16:06:14 +00:00
58 lines
2.4 KiB
Python
58 lines
2.4 KiB
Python
"""This module provides functions for easy editing of kopano config files \
|
|
via environment variables"""
|
|
|
|
import re
|
|
import os
|
|
import os.path
|
|
|
|
def configkopano(configs):
|
|
for filename, config in configs.items():
|
|
if not os.path.exists(filename):
|
|
return
|
|
with open(filename) as f:
|
|
contents = f.read()
|
|
f.close()
|
|
|
|
for key, newvalue in config.items():
|
|
if key == "kccomment":
|
|
for line in newvalue:
|
|
contents = re.sub(r"^\s*" + re.escape(line), r"#{}".format(line), contents, 0, re.MULTILINE)
|
|
elif key == "kcuncomment":
|
|
for line in newvalue:
|
|
contents = re.sub(r"^\s*#\s*" + re.escape(line) , line, contents, 0, re.MULTILINE)
|
|
else:
|
|
contents = re.sub(r"^\s*#?\s*{}\s*=.*".format(key), r"{} = {}".format(key, newvalue), contents, 0, re.MULTILINE)
|
|
|
|
with open(filename, "w") as f:
|
|
f.write(contents)
|
|
f.close()
|
|
|
|
def parseenvironmentvariables(prependingpath):
|
|
configs = dict()
|
|
|
|
for name, value in os.environ.items():
|
|
namematch = re.match(r"^KCCONF_([A-Z]+)_([A-Z0-9_]+)$", name)
|
|
if namematch != None:
|
|
filename = namematch.group(1).lower() + ".cfg"
|
|
if prependingpath + filename not in configs:
|
|
configs[prependingpath + filename] = dict()
|
|
confkey = namematch.group(2).lower()
|
|
configs[prependingpath + filename][confkey] = value
|
|
commentmatch = re.match(r"^KCCOMMENT_([A-Z]+)_([A-Z0-9_]+)$", name)
|
|
if commentmatch != None:
|
|
filename = commentmatch.group(1).lower() + ".cfg"
|
|
try:
|
|
configs[prependingpath + filename]["kccomment"].append(value)
|
|
except IndexError:
|
|
configs[prependingpath + filename]["kccomment"] = []
|
|
configs[prependingpath + filename]["kccomment"].append(value)
|
|
uncommentmatch = re.match(r"^KCUNCOMMENT_([A-Z]+)_([A-Z0-9_]+)$", name)
|
|
if uncommentmatch != None:
|
|
filename = uncommentmatch.group(1).lower() + ".cfg"
|
|
try:
|
|
configs[prependingpath + filename]["kunccomment"].append(value)
|
|
except IndexError:
|
|
configs[prependingpath + filename]["kunccomment"] = []
|
|
configs[prependingpath + filename]["kunccomment"].append(value)
|
|
return configs
|