From bb7987cf4cd1f50eb1f2a171b6423b91ba35172d Mon Sep 17 00:00:00 2001 From: Hariharan Date: Tue, 17 Feb 2026 09:50:31 +0530 Subject: [PATCH 1/2] user configured password - logged fix --- lib/pan/xapi.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/pan/xapi.py b/lib/pan/xapi.py index 9e454c2..9aa47a3 100644 --- a/lib/pan/xapi.py +++ b/lib/pan/xapi.py @@ -603,22 +603,26 @@ def keygen(self, extra_qs=None): if extra_qs is not None: query = self.__merge_extra_qs(query, extra_qs) - response = self.__api_request(query) - if not response: - raise PanXapiError(self.status_detail) + try: + response = self.__api_request(query) + if not response: + raise PanXapiError(self.status_detail) - if not self.__set_response(response): - raise PanXapiError(self.status_detail) + if not self.__set_response(response): + raise PanXapiError(self.status_detail) - if self.element_result is None: - raise PanXapiError('keygen(): result element not found') - element = self.element_result.find('key') - if element is None: - raise PanXapiError('keygen(): key element not found') + if self.element_result is None: + raise PanXapiError('keygen(): result element not found') + element = self.element_result.find('key') + if element is None: + raise PanXapiError('keygen(): key element not found') - self.api_key = element.text + self.api_key = element.text - return self.api_key + return self.api_key + finally: + if isinstance(query, dict) and 'password' in query: + del query['password'] @staticmethod def __qs_to_dict(qs): From 52fa4e66d0ce270d29096174869057ca313a4d62 Mon Sep 17 00:00:00 2001 From: Hariharan Date: Mon, 23 Mar 2026 08:23:37 +0530 Subject: [PATCH 2/2] Refactor password handling --- lib/pan/xapi.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/pan/xapi.py b/lib/pan/xapi.py index 9aa47a3..f5b381a 100644 --- a/lib/pan/xapi.py +++ b/lib/pan/xapi.py @@ -605,24 +605,23 @@ def keygen(self, extra_qs=None): try: response = self.__api_request(query) - if not response: - raise PanXapiError(self.status_detail) + finally: + query.pop('password', None) + if not response: + raise PanXapiError(self.status_detail) - if not self.__set_response(response): - raise PanXapiError(self.status_detail) + if not self.__set_response(response): + raise PanXapiError(self.status_detail) - if self.element_result is None: - raise PanXapiError('keygen(): result element not found') - element = self.element_result.find('key') - if element is None: - raise PanXapiError('keygen(): key element not found') + if self.element_result is None: + raise PanXapiError('keygen(): result element not found') + element = self.element_result.find('key') + if element is None: + raise PanXapiError('keygen(): key element not found') - self.api_key = element.text + self.api_key = element.text - return self.api_key - finally: - if isinstance(query, dict) and 'password' in query: - del query['password'] + return self.api_key @staticmethod def __qs_to_dict(qs):