65 lines
1.3 KiB
Python
Executable file
65 lines
1.3 KiB
Python
Executable file
#!/usr/bin/python3
|
|
|
|
# SPDX-FileCopyrightText: 2021 Luca Beltrame <lbeltrame@kde.org>
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
from enum import Enum
|
|
import fileinput
|
|
|
|
import drymail # Vendored
|
|
|
|
|
|
SUBJECT = "Certbot certificate renewal - Status: {0}"
|
|
HEADER = {"X-Notification-Type": "letsencrypt"}
|
|
|
|
|
|
class State(Enum):
|
|
|
|
renewed = 1
|
|
no_action = 2
|
|
error = 3
|
|
unknown = 4
|
|
|
|
def __str__(self):
|
|
return f'{self.name.capitalize().replace("_", " ")}'
|
|
|
|
|
|
def main():
|
|
|
|
state = State.unknown
|
|
text = list()
|
|
|
|
for line in fileinput.input():
|
|
|
|
line = line.strip()
|
|
text.append(line)
|
|
|
|
if "all renewals succeeded" in line:
|
|
state = State.renewed
|
|
elif "not due for renewal" in line:
|
|
state = State.no_action
|
|
elif "unexpected error occurred" in line:
|
|
state = State.error
|
|
|
|
if state is State.no_action:
|
|
return
|
|
|
|
text = "\n".join(text)
|
|
subject = SUBJECT.format(str(state))
|
|
message = drymail.Message(
|
|
sender=("Certbot renewal bot", "notify@dennogumi.org"),
|
|
receivers=["root"],
|
|
subject=subject,
|
|
headers=HEADER,
|
|
text=text
|
|
)
|
|
|
|
client = drymail.SMTPMailer(
|
|
host='localhost')
|
|
|
|
client.send(message)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|