@@ -217,3 +217,136 @@ def get_default_service_options(self) -> PrivXAPIResponse:
217217 UrlEnum .HOST_STORE .SETTINGS ,
218218 )
219219 return PrivXAPIResponse (response_status , HTTPStatus .OK , data )
220+
221+ def get_command_restriction_whitelists (
222+ self ,
223+ offset : Optional [int ] = None ,
224+ limit : Optional [int ] = None ,
225+ query : Optional [str ] = None ,
226+ sort_dir : Optional [str ] = None ,
227+ ) -> PrivXAPIResponse :
228+ """
229+ Get all whitelists.
230+
231+ Returns:
232+ PrivXAPIResponse
233+ """
234+ search_params = self ._get_search_params (
235+ offset = offset ,
236+ limit = limit ,
237+ query = query ,
238+ sortdir = sort_dir ,
239+ )
240+ response_status , data = self ._http_get (
241+ UrlEnum .HOST_STORE .WHITELISTS ,
242+ query_params = search_params ,
243+ )
244+ return PrivXAPIResponse (response_status , HTTPStatus .OK , data )
245+
246+ def create_command_restriction_whitelist (self , whitelist : dict ) -> PrivXAPIResponse :
247+ """
248+ Create a whitelist, see required fields from API docs.
249+
250+ Returns:
251+ PrivXAPIResponse
252+ """
253+ response_status , data = self ._http_post (
254+ UrlEnum .HOST_STORE .WHITELISTS ,
255+ body = whitelist ,
256+ )
257+ return PrivXAPIResponse (response_status , HTTPStatus .CREATED , data )
258+
259+ def get_command_restriction_whitelist (self , whitelist_id : str ) -> PrivXAPIResponse :
260+ """
261+ Get a whitelist by id.
262+
263+ Returns:
264+ PrivXAPIResponse
265+ """
266+ response_status , data = self ._http_get (
267+ UrlEnum .HOST_STORE .WHITELIST ,
268+ path_params = {"whitelist_id" : whitelist_id },
269+ )
270+ return PrivXAPIResponse (response_status , HTTPStatus .OK , data )
271+
272+ def delete_command_restriction_whitelist (
273+ self , whitelist_id : str
274+ ) -> PrivXAPIResponse :
275+ """
276+ Remove a whitelist by id.
277+
278+ Returns:
279+ PrivXAPIResponse
280+ """
281+ response_status , data = self ._http_delete (
282+ UrlEnum .HOST_STORE .WHITELIST ,
283+ path_params = {"whitelist_id" : whitelist_id },
284+ )
285+ return PrivXAPIResponse (response_status , HTTPStatus .OK , data )
286+
287+ def update_command_restriction_whitelist (
288+ self , whitelist_id : str , whitelist : dict
289+ ) -> PrivXAPIResponse :
290+ """
291+ Update a whitelist by id, see required fields from API docs.
292+
293+ Returns:
294+ PrivXAPIResponse
295+ """
296+ response_status , data = self ._http_put (
297+ UrlEnum .HOST_STORE .WHITELIST ,
298+ path_params = {"whitelist_id" : whitelist_id },
299+ body = whitelist ,
300+ )
301+ return PrivXAPIResponse (response_status , HTTPStatus .OK , data )
302+
303+ def search_command_restriction_whitelists (
304+ self ,
305+ offset : Optional [int ] = None ,
306+ limit : Optional [int ] = None ,
307+ sort_key : Optional [str ] = None ,
308+ sort_dir : Optional [str ] = None ,
309+ search_payload : Optional [dict ] = None ,
310+ ) -> PrivXAPIResponse :
311+ """
312+ Search for whitelists, more granular search could be done
313+ via "keywords" body param
314+ search_payload = {
315+ "keywords": "common_whitelist,allow_all_cmds",
316+ }
317+
318+ Returns:
319+ PrivXAPIResponse
320+ """
321+ search_params = self ._get_search_params (
322+ offset = offset ,
323+ limit = limit ,
324+ sortkey = sort_key ,
325+ sortdir = sort_dir ,
326+ )
327+
328+ response_status , data = self ._http_post (
329+ UrlEnum .HOST_STORE .WHITELIST_SEARCH ,
330+ query_params = search_params ,
331+ body = get_value (search_payload , dict ()),
332+ )
333+ return PrivXAPIResponse (response_status , HTTPStatus .OK , data )
334+
335+ def eval_commands_against_whitelist (
336+ self , whitelist : dict , rshell_variant : str , cmds : [str ]
337+ ) -> PrivXAPIResponse :
338+ """
339+ Evaluate commands against the whitelist,see required fields from API docs.
340+
341+ Returns:
342+ PrivXAPIResponse
343+ """
344+ response_status , data = self ._http_post (
345+ UrlEnum .HOST_STORE .WHITELIST_EVALUATE ,
346+ body = {
347+ "whitelist" : whitelist ,
348+ "rshell_variant" : rshell_variant ,
349+ "commands" : cmds ,
350+ },
351+ )
352+ return PrivXAPIResponse (response_status , HTTPStatus .OK , data )
0 commit comments