From 16f5f904b38ef8dc5c36c544fdeb7be73a44680d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20K=C3=A1cha?= <ph@cesnet.cz>
Date: Tue, 21 Nov 2023 22:27:36 +0100
Subject: [PATCH] Allow warden_filer to also accept textual
 usernames/groupnames on uid/gid

---
 warden_filer/warden_filer.py | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/warden_filer/warden_filer.py b/warden_filer/warden_filer.py
index 86b2bba..83a7aec 100755
--- a/warden_filer/warden_filer.py
+++ b/warden_filer/warden_filer.py
@@ -470,6 +470,18 @@ def get_configs():
 
 
 
+def get_uid_gid(str_id, get_nam_func):
+    if str_id:
+        try:
+            id = int(str_id)
+        except ValueError:
+            id = get_nam_func(str_id)[2]
+    else:
+        id = None
+    return id
+
+
+
 if __name__ == "__main__":
 
     args = get_args()
@@ -482,12 +494,17 @@ if __name__ == "__main__":
 
     try:
         if args.daemon:
+            from pwd import getpwnam
+            from grp import getgrnam
+            uid = get_uid_gid(fconfig.get("uid"), getpwnam)
+            gid = get_uid_gid(fconfig.get("gid"), getgrnam)
+
             daemonize(
                 work_dir = fconfig.get("work_dir", "."),
                 chroot_dir = fconfig.get("chroot_dir"),
                 umask = fconfig.get("umask"),
-                uid = fconfig.get("uid"),
-                gid = fconfig.get("gid"),
+                uid = uid,
+                gid = gid,
                 pidfile = args.pid_file,
                 files_preserve = get_logger_files(wclient.logger),
                 signals = {
-- 
GitLab