@@ -68,6 +68,11 @@ def add_args(parser) -> None:
6868 action = "store_true" ,
6969 help = "Enable debug logging" ,
7070 )
71+ parser .add_argument (
72+ "--ca-bundle" ,
73+ required = False ,
74+ help = "Path to a custom CA certificate or bundle (PEM) to trust for TLS (self-signed/internal CAs)" ,
75+ )
7176
7277
7378def make_security_managers_team (
@@ -77,13 +82,14 @@ def make_security_managers_team(
7782 headers : dict [str , str ],
7883 legacy = False ,
7984 progress = False ,
85+ verify : str | bool | None = True ,
8086) -> None :
8187 """Create or update the security managers team in the specified organization."""
8288 security_manager_role_id : str | None = None
8389
8490 if not legacy :
8591 org_roles : dict [str , Any ] = organizations .list_org_roles (
86- api_url , headers , org_name
92+ api_url , headers , org_name , verify = verify
8793 )
8894
8995 # Check if the "security manager" role exists
@@ -106,15 +112,15 @@ def make_security_managers_team(
106112 security_manager_role_id = security_manager_role_id_list [0 ]
107113
108114 # Get the list of teams
109- teams_info = teams .list_teams (api_url , headers , org_name )
115+ teams_info = teams .list_teams (api_url , headers , org_name , verify = verify )
110116 teams_list = [team ["name" ] for team in teams_info ]
111117
112118 # Create the team if it doesn't exist
113119 if sec_team_name not in teams_list :
114120 if progress :
115121 LOG .info ("Creating team {}" .format (sec_team_name ))
116122 try :
117- teams .create_team (api_url , headers , org_name , sec_team_name )
123+ teams .create_team (api_url , headers , org_name , sec_team_name , verify = verify )
118124 except Exception as e :
119125 LOG .error ("⨯ Failed to create team {}: {}" .format (sec_team_name , e ))
120126
@@ -128,6 +134,7 @@ def make_security_managers_team(
128134 sec_team_name ,
129135 security_manager_role_id ,
130136 legacy = legacy ,
137+ verify = verify ,
131138 ):
132139 teams .change_team_role (
133140 api_url ,
@@ -136,6 +143,7 @@ def make_security_managers_team(
136143 sec_team_name ,
137144 security_manager_role_id ,
138145 legacy = legacy ,
146+ verify = verify ,
139147 )
140148 if progress :
141149 LOG .info (
@@ -162,17 +170,18 @@ def add_security_managers_to_team(
162170 api_url : str ,
163171 headers : dict [str , str ],
164172 progress : bool = False ,
173+ verify : str | bool | None = True ,
165174) -> None :
166175 """Add security managers to the specified team in the organization."""
167176 # Get the list of org members, adding the missing ones to the org
168- org_members = organizations .list_org_users (api_url , headers , org_name )
177+ org_members = organizations .list_org_users (api_url , headers , org_name , verify = verify )
169178 org_members_list = [member ["login" ] for member in org_members ]
170179 for username in sec_team_members :
171180 if username not in org_members_list :
172181 if progress :
173182 LOG .info ("Adding {} to {}" .format (username , org_name ))
174183 try :
175- organizations .add_org_user (api_url , headers , org_name , username )
184+ organizations .add_org_user (api_url , headers , org_name , username , verify = verify )
176185 except Exception as e :
177186 LOG .error (
178187 "⨯ Failed to add user {} to org {}: {}" .format (
@@ -182,15 +191,15 @@ def add_security_managers_to_team(
182191 return
183192
184193 # Get the list of team members, adding the missing ones to the team and removing the extra ones
185- team_members = teams .list_team_members (api_url , headers , org_name , sec_team_name )
194+ team_members = teams .list_team_members (api_url , headers , org_name , sec_team_name , verify = verify )
186195 team_members_list = [member ["login" ] for member in team_members ]
187196 for username in team_members_list :
188197 if username not in sec_team_members :
189198 if progress :
190199 LOG .info ("Removing {} from {}" .format (username , sec_team_name ))
191200 try :
192201 teams .remove_team_member (
193- api_url , headers , org_name , sec_team_name , username
202+ api_url , headers , org_name , sec_team_name , username , verify = verify
194203 )
195204 except Exception as e :
196205 LOG .error (
@@ -205,7 +214,7 @@ def add_security_managers_to_team(
205214 LOG .info ("Adding {} to {}" .format (username , sec_team_name ))
206215 try :
207216 teams .add_team_member (
208- api_url , headers , org_name , sec_team_name , username
217+ api_url , headers , org_name , sec_team_name , username , verify = verify
209218 )
210219 except Exception as e :
211220 LOG .error (
@@ -260,6 +269,13 @@ def main() -> None:
260269
261270 api_url = util .rest_api_url_from_server_url (args .github_url )
262271
272+ # Optional custom CA bundle / cert file
273+ verify : str | bool | None = True
274+ try :
275+ verify = util .validate_ca_bundle (args .ca_bundle )
276+ except FileNotFoundError :
277+ return
278+
263279 # Set up the headers
264280 headers = {
265281 "Authorization" : "token {}" .format (github_pat ),
@@ -276,6 +292,7 @@ def main() -> None:
276292 headers ,
277293 legacy = args .legacy ,
278294 progress = args .progress ,
295+ verify = verify ,
279296 )
280297 add_security_managers_to_team (
281298 org_name ,
@@ -284,6 +301,7 @@ def main() -> None:
284301 api_url ,
285302 headers ,
286303 progress = args .progress ,
304+ verify = verify ,
287305 )
288306
289307
0 commit comments