55import sys
66import getopt
77import subprocess
8- import collections
98import urllib .error
109import urllib .request
1110import comanage_scripts_utils as utils
2524 "ldaps://ldap.cilogon.org" ,
2625 "-D" ,
2726 "uid=readonly_user,ou=system,o=OSG,o=CO,dc=cilogon,dc=org" ,
28- "-w" , "{}" ,
27+ "-w" , "{auth }" ,
2928 "-b" ,
3029 "ou=groups,o=OSG,o=CO,dc=cilogon,dc=org" ,
3130 "-s" ,
3938 "-H" , "ldaps://ldap.cilogon.org" ,
4039 "-D" , "uid=readonly_user,ou=system,o=OSG,o=CO,dc=cilogon,dc=org" ,
4140 "-x" ,
42- "-w" , "{}" ,
41+ "-w" , "{auth }" ,
4342 "-b" , "ou=people,o=OSG,o=CO,dc=cilogon,dc=org" ,
44- "(isMemberOf=CO:members:active) " , "voPersonApplicationUID" ,
43+ "{filter} " , "voPersonApplicationUID" ,
4544 "|" , "grep" , "voPersonApplicationUID" ,
4645 "|" , "sort" ,
4746]
@@ -165,13 +164,13 @@ def get_ldap_group_members_data():
165164 ).stdout .decode ('utf-8' ).strip ()
166165
167166 ldap_group_members_command = LDAP_GROUP_MEMBERS_COMMAND
168- ldap_group_members_command [LDAP_GROUP_MEMBERS_COMMAND .index ("{}" )] = auth_str
167+ ldap_group_members_command [LDAP_GROUP_MEMBERS_COMMAND .index ("{auth }" )] = auth_str
169168
170169 data_file = subprocess .run (
171170 ldap_group_members_command , stdout = subprocess .PIPE ).stdout .decode ('utf-8' ).split ('\n ' )
172171
173172 search_results = list (filter (
174- lambda x : not re .compile ("#|dn|cn|objectClass" ).match (x ),
173+ lambda x : not re .compile ("#|dn: |cn: |objectClass: " ).match (x ),
175174 (line for line in data_file )))
176175
177176 search_results .reverse ()
@@ -193,14 +192,17 @@ def get_ldap_group_members_data():
193192 return group_data_dict
194193
195194
196- def get_ldap_active_users ():
195+ def get_ldap_active_users (filter_group_name ):
197196 auth_str = subprocess .run (
198197 LDAP_AUTH_COMMAND ,
199198 stdout = subprocess .PIPE
200199 ).stdout .decode ('utf-8' ).strip ()
200+
201+ filter_str = ("(isMemberOf=CO:members:active)" if filter_group_name is None else f"(&(isMemberOf={ filter_group_name } )(isMemberOf=CO:members:active))" )
201202
202203 ldap_active_users_command = LDAP_ACTIVE_USERS_COMMAND
203- ldap_active_users_command [LDAP_ACTIVE_USERS_COMMAND .index ("{}" )] = auth_str
204+ ldap_active_users_command [LDAP_ACTIVE_USERS_COMMAND .index ("{auth}" )] = auth_str
205+ ldap_active_users_command [LDAP_ACTIVE_USERS_COMMAND .index ("{filter}" )] = filter_str
204206
205207 active_users = subprocess .run (ldap_active_users_command , stdout = subprocess .PIPE ).stdout .decode ('utf-8' ).split ('\n ' )
206208 users = set (line .replace ("voPersonApplicationUID: " , "" ) if re .compile ("dn: voPerson*" ) else "" for line in active_users )
@@ -231,28 +233,10 @@ def get_co_api_data():
231233 return project_osggids_to_name
232234
233235
234- def gid_pids_to_osguser_pid_gids (gid_pids , pid_osguser ):
235- pid_gids = collections .defaultdict (set )
236-
237- for gid in gid_pids :
238- for pid in gid_pids [gid ]:
239- if pid_osguser [pid ] is not None :
240- pid_gids [pid ].add (gid )
241-
242- return pid_gids
243-
244-
245- def filter_by_group (pid_gids , groups , filter_group_name ):
246- groups_idx = { v : k for k ,v in groups .items () }
247- filter_gid = groups_idx [filter_group_name ] # raises KeyError if missing
248- filter_group_pids = set (get_co_group_members__pids (filter_gid ))
249- return { p : g for p ,g in pid_gids .items () if p in filter_group_pids }
250-
251-
252236def get_osguser_groups (filter_group_name = None ):
253237 project_osggids_to_name = get_co_api_data ()
254238 ldap_groups_members = get_ldap_group_members_data ()
255- ldap_users = get_ldap_active_users ()
239+ ldap_users = get_ldap_active_users (filter_group_name )
256240
257241 active_project_osggids = set (ldap_groups_members .keys ()).intersection (set (project_osggids_to_name .keys ()))
258242 project_to_user_map = {
@@ -268,9 +252,6 @@ def get_osguser_groups(filter_group_name=None):
268252 all_active_project_users ,
269253 project_osggids_to_name ,
270254 )
271-
272- #if filter_group_name is not None:
273- #pid_gids = filter_by_group(pid_gids, groups, filter_group_name)
274255
275256 return usernames_to_project_map
276257
0 commit comments