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