From a267913ec338ac548464c3e43e5316c45931255c Mon Sep 17 00:00:00 2001 From: Nis Wechselberg <enbewe@enbewe.de> Date: Mon, 9 Jun 2025 16:23:09 +0200 Subject: [PATCH] Added SIGTERM handler for proper shutdown Signed-off-by: Nis Wechselberg <enbewe@enbewe.de> --- uffd-ldapd | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/uffd-ldapd b/uffd-ldapd index 6beac0b..e69a8b2 100755 --- a/uffd-ldapd +++ b/uffd-ldapd @@ -5,6 +5,7 @@ import socketserver import logging import socket import re +import signal import click import requests @@ -284,6 +285,10 @@ class StdoutFilter(logging.Filter): def filter(self, record): return record.levelno <= logging.INFO +def sigterm_handler(_signum, _frame): + logger.info("Received SIGTERM, shutting down gracefully ...") + sys.exit(0) + # pylint: disable=line-too-long @click.command(help='LDAP proxy for integrating LDAP service with uffd SSO. Supports user and group searches and as well as binds with user passwords.') @click.option('--socket-address', help='Host and port "ip:port" to listen on') @@ -298,6 +303,10 @@ class StdoutFilter(logging.Filter): @click.option('--group-filter-regex', help='Python regular expression that group names must match for the group to be visible to LDAP clients') def main(socket_address, socket_path, socket_fd, api_url, api_user, api_secret, cache_ttl, base_dn, bind_password, group_filter_regex): # pylint: disable=too-many-locals + + # Register signal handler for proper SIGTERM handling + signal.signal(signal.SIGTERM, sigterm_handler) + if (socket_address is not None) \ + (socket_path is not None) \ + (socket_fd is not None) != 1: -- GitLab