add action notify to action config

This commit is contained in:
2021-09-10 15:59:58 +02:00
parent 2b73e43d2f
commit 24d9eb3502
3 changed files with 33 additions and 3 deletions

View File

@@ -131,6 +131,25 @@ class ActionConfig(BaseConfig):
raise RuntimeError(
f"{self['name']}: storage_type: invalid storage type")
elif self["type"] == "notify":
self["headersonly"] = False
self.add_string_arg(
cfg, ["smtp_host", "envelope_from", "from", "subject",
"template"])
self.add_int_arg(cfg, "smtp_port")
if "embedded_imgs" in cfg:
assert isinstance(cfg["embedded_imgs"], list), \
f"{self['name']}: embedded_imgs: invalid value, " \
f"should be list"
for img in cfg["embedded_imgs"]:
assert isinstance(img, str), \
f"{self['name']}: embedded_imgs: invalid entry, " \
f"should be string"
self["args"]["embedded_imgs"] = cfg["embedded_imgs"]
else:
raise RuntimeError(f"{self['name']}: type: invalid action type")

View File

@@ -104,6 +104,17 @@ class BaseConfig:
f"{self['name']}: {arg}: invalid value, should be bool"
self["args"][arg] = cfg[arg]
def add_int_arg(self, cfg, args):
if isinstance(args, str):
args = [args]
for arg in args:
assert arg in cfg, \
f"{self['name']}: mandatory parameter '{arg}' not found"
assert isinstance(cfg[arg], int), \
f"{self['name']}: {arg}: invalid value, should be integer"
self["args"][arg] = cfg[arg]
class MilterMessage(MIMEPart):
def replace_header(self, _name, _value, idx=None):

View File

@@ -121,12 +121,12 @@ class EMailNotification(BaseNotification):
self.subject = subject
try:
self.template = open(template, "r").read()
self.embedded_imgs = []
self.embed_imgs = []
for img_path in embed_imgs:
img = MIMEImage(open(img_path, "rb").read())
filename = basename(img_path)
img.add_header("Content-ID", f"<{filename}>")
self.embedded_imgs.append(img)
self.embed_imgs.append(img)
self.replacement_img = repl_img
self.strip_images = strip_imgs
@@ -297,7 +297,7 @@ class EMailNotification(BaseNotification):
logger.debug("attaching notification_replacement_img")
msg.attach(self.replacement_img)
for img in self.embedded_imgs:
for img in self.embed_imgs:
logger.debug("attaching imgage")
msg.attach(img)