@@ -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,22 @@ 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 (
178+ api_url , headers , org_name , verify = verify
179+ )
169180 org_members_list = [member ["login" ] for member in org_members ]
170181 for username in sec_team_members :
171182 if username not in org_members_list :
172183 if progress :
173184 LOG .info ("Adding {} to {}" .format (username , org_name ))
174185 try :
175- organizations .add_org_user (api_url , headers , org_name , username )
186+ organizations .add_org_user (
187+ api_url , headers , org_name , username , verify = verify
188+ )
176189 except Exception as e :
177190 LOG .error (
178191 "⨯ Failed to add user {} to org {}: {}" .format (
@@ -182,15 +195,17 @@ def add_security_managers_to_team(
182195 return
183196
184197 # 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 )
198+ team_members = teams .list_team_members (
199+ api_url , headers , org_name , sec_team_name , verify = verify
200+ )
186201 team_members_list = [member ["login" ] for member in team_members ]
187202 for username in team_members_list :
188203 if username not in sec_team_members :
189204 if progress :
190205 LOG .info ("Removing {} from {}" .format (username , sec_team_name ))
191206 try :
192207 teams .remove_team_member (
193- api_url , headers , org_name , sec_team_name , username
208+ api_url , headers , org_name , sec_team_name , username , verify = verify
194209 )
195210 except Exception as e :
196211 LOG .error (
@@ -205,7 +220,7 @@ def add_security_managers_to_team(
205220 LOG .info ("Adding {} to {}" .format (username , sec_team_name ))
206221 try :
207222 teams .add_team_member (
208- api_url , headers , org_name , sec_team_name , username
223+ api_url , headers , org_name , sec_team_name , username , verify = verify
209224 )
210225 except Exception as e :
211226 LOG .error (
@@ -260,6 +275,13 @@ def main() -> None:
260275
261276 api_url = util .rest_api_url_from_server_url (args .github_url )
262277
278+ # Optional custom CA bundle / cert file
279+ verify : str | bool | None = True
280+ try :
281+ verify = util .validate_ca_bundle (args .ca_bundle )
282+ except FileNotFoundError :
283+ return
284+
263285 # Set up the headers
264286 headers = {
265287 "Authorization" : "token {}" .format (github_pat ),
@@ -276,6 +298,7 @@ def main() -> None:
276298 headers ,
277299 legacy = args .legacy ,
278300 progress = args .progress ,
301+ verify = verify ,
279302 )
280303 add_security_managers_to_team (
281304 org_name ,
@@ -284,6 +307,7 @@ def main() -> None:
284307 api_url ,
285308 headers ,
286309 progress = args .progress ,
310+ verify = verify ,
287311 )
288312
289313
0 commit comments