66import json
77import getopt
88import subprocess
9- import collections
109import urllib .error
1110import urllib .request
1211
2827 "ldaps://ldap.cilogon.org" ,
2928 "-D" ,
3029 "uid=readonly_user,ou=system,o=OSG,o=CO,dc=cilogon,dc=org" ,
31- "-w" , "{}" ,
30+ "-w" , "{auth }" ,
3231 "-b" ,
3332 "ou=groups,o=OSG,o=CO,dc=cilogon,dc=org" ,
3433 "-s" ,
4241 "-H" , "ldaps://ldap.cilogon.org" ,
4342 "-D" , "uid=readonly_user,ou=system,o=OSG,o=CO,dc=cilogon,dc=org" ,
4443 "-x" ,
45- "-w" , "{}" ,
44+ "-w" , "{auth }" ,
4645 "-b" , "ou=people,o=OSG,o=CO,dc=cilogon,dc=org" ,
47- "(isMemberOf=CO:members:active) " , "voPersonApplicationUID" ,
46+ "{filter} " , "voPersonApplicationUID" ,
4847 "|" , "grep" , "voPersonApplicationUID" ,
4948 "|" , "sort" ,
5049]
@@ -242,13 +241,13 @@ def get_ldap_group_members_data():
242241 ).stdout .decode ('utf-8' ).strip ()
243242
244243 ldap_group_members_command = LDAP_GROUP_MEMBERS_COMMAND
245- ldap_group_members_command [LDAP_GROUP_MEMBERS_COMMAND .index ("{}" )] = auth_str
244+ ldap_group_members_command [LDAP_GROUP_MEMBERS_COMMAND .index ("{auth }" )] = auth_str
246245
247246 data_file = subprocess .run (
248247 ldap_group_members_command , stdout = subprocess .PIPE ).stdout .decode ('utf-8' ).split ('\n ' )
249248
250249 search_results = list (filter (
251- lambda x : not re .compile ("#|dn|cn|objectClass" ).match (x ),
250+ lambda x : not re .compile ("#|dn: |cn: |objectClass: " ).match (x ),
252251 (line for line in data_file )))
253252
254253 search_results .reverse ()
@@ -270,14 +269,17 @@ def get_ldap_group_members_data():
270269 return group_data_dict
271270
272271
273- def get_ldap_active_users ():
272+ def get_ldap_active_users (filter_group_name ):
274273 auth_str = subprocess .run (
275274 LDAP_AUTH_COMMAND ,
276275 stdout = subprocess .PIPE
277276 ).stdout .decode ('utf-8' ).strip ()
277+
278+ filter_str = ("(isMemberOf=CO:members:active)" if filter_group_name is None else f"(&(isMemberOf={ filter_group_name } )(isMemberOf=CO:members:active))" )
278279
279280 ldap_active_users_command = LDAP_ACTIVE_USERS_COMMAND
280- ldap_active_users_command [LDAP_ACTIVE_USERS_COMMAND .index ("{}" )] = auth_str
281+ ldap_active_users_command [LDAP_ACTIVE_USERS_COMMAND .index ("{auth}" )] = auth_str
282+ ldap_active_users_command [LDAP_ACTIVE_USERS_COMMAND .index ("{filter}" )] = filter_str
281283
282284 active_users = subprocess .run (ldap_active_users_command , stdout = subprocess .PIPE ).stdout .decode ('utf-8' ).split ('\n ' )
283285 users = set (line .replace ("voPersonApplicationUID: " , "" ) if re .compile ("dn: voPerson*" ) else "" for line in active_users )
@@ -308,28 +310,10 @@ def get_co_api_data():
308310 return project_osggids_to_name
309311
310312
311- def gid_pids_to_osguser_pid_gids (gid_pids , pid_osguser ):
312- pid_gids = collections .defaultdict (set )
313-
314- for gid in gid_pids :
315- for pid in gid_pids [gid ]:
316- if pid_osguser [pid ] is not None :
317- pid_gids [pid ].add (gid )
318-
319- return pid_gids
320-
321-
322- def filter_by_group (pid_gids , groups , filter_group_name ):
323- groups_idx = { v : k for k ,v in groups .items () }
324- filter_gid = groups_idx [filter_group_name ] # raises KeyError if missing
325- filter_group_pids = set (get_co_group_members__pids (filter_gid ))
326- return { p : g for p ,g in pid_gids .items () if p in filter_group_pids }
327-
328-
329313def get_osguser_groups (filter_group_name = None ):
330314 project_osggids_to_name = get_co_api_data ()
331315 ldap_groups_members = get_ldap_group_members_data ()
332- ldap_users = get_ldap_active_users ()
316+ ldap_users = get_ldap_active_users (filter_group_name )
333317
334318 active_project_osggids = set (ldap_groups_members .keys ()).intersection (set (project_osggids_to_name .keys ()))
335319 project_to_user_map = {
@@ -345,9 +329,6 @@ def get_osguser_groups(filter_group_name=None):
345329 all_active_project_users ,
346330 project_osggids_to_name ,
347331 )
348-
349- #if filter_group_name is not None:
350- #pid_gids = filter_by_group(pid_gids, groups, filter_group_name)
351332
352333 return usernames_to_project_map
353334
0 commit comments