From 704ff23ddf2e6b726b1c56cc329ae4f332096f3b Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Sun, 29 Jun 2025 08:33:55 +0200 Subject: [PATCH] add support function to display user/group radicale is running --- radicale/utils.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/radicale/utils.py b/radicale/utils.py index 4f759f58..25ca7a58 100644 --- a/radicale/utils.py +++ b/radicale/utils.py @@ -17,6 +17,10 @@ # You should have received a copy of the GNU General Public License # along with Radicale. If not, see . +import getpass +import grp +import os +import pwd import ssl import sys from importlib import import_module, metadata @@ -214,3 +218,23 @@ def ssl_get_protocols(context): if (context.minimum_version <= ssl.TLSVersion.TLSv1_3) and (context.maximum_version >= ssl.TLSVersion.TLSv1_3): protocols.append("TLSv1.3") return protocols + + +def user_groups_as_string(): + if sys.platform != "win32": + euid = os.geteuid() + egid = os.getegid() + username = pwd.getpwuid(euid)[0] + gids = os.getgrouplist(username, egid) + groups = [] + for gid in gids: + try: + gi = grp.getgrgid(gid) + groups.append("%s(%d)" % (gi.gr_name, gid)) + except Exception: + groups.append("%s(%d)" % (gid, gid)) + s = "user=%s(%d) groups=%s" % (username, euid, ','.join(groups)) + else: + username = getpass.getuser() + s = "user=%s" % (username) + return s