From fe1435c35a5e8ab9610a9c1ce639670fee4cc944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Clavijo?= Date: Fri, 5 May 2023 14:01:41 -0300 Subject: [PATCH 1/3] SSL no_check_certificate Allows to use self signed certificates --- passboltapi/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/passboltapi/__init__.py b/passboltapi/__init__.py index 3fd1ce9..ddd568d 100644 --- a/passboltapi/__init__.py +++ b/passboltapi/__init__.py @@ -51,17 +51,20 @@ def __init__( config_path: Optional[str] = None, new_keys: bool = False, delete_old_keys: bool = False, + no_check_certificate: bool = False, ): """ :param config: Config as a dictionary :param config_path: Path to the config file. :param delete_old_keys: Set true if old keys need to be deleted + :param no_check_certificate: disables SSL server certificate check. """ self.config = config if config_path: self.config = configparser.ConfigParser() self.config.read_file(open(config_path, "r")) self.requests_session = requests.Session() + self.requests_session.verify = not no_check_certificate if not self.config: raise ValueError("Missing config. Provide config as dictionary or path to configuration file.") From 118b861c54d522b66054ad3963e7ef91a2683e1b Mon Sep 17 00:00:00 2001 From: Sourcery AI <> Date: Tue, 9 Jan 2024 02:54:51 +0000 Subject: [PATCH 2/3] 'Refactored by Sourcery' --- passboltapi/__init__.py | 33 ++++++++++++++------------------- test.py | 10 ++++------ 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/passboltapi/__init__.py b/passboltapi/__init__.py index ddd568d..78ced61 100644 --- a/passboltapi/__init__.py +++ b/passboltapi/__init__.py @@ -158,9 +158,7 @@ def get(self, url, return_response_object=False, **kwargs): r = self.requests_session.get(self.server_url + url, headers=self.get_headers(), **kwargs) try: r.raise_for_status() - if return_response_object: - return r - return r.json() + return r if return_response_object else r.json() except requests.exceptions.HTTPError as e: logging.error(r.text) raise e @@ -169,9 +167,7 @@ def put(self, url, data, return_response_object=False, **kwargs): r = self.requests_session.put(self.server_url + url, json=data, headers=self.get_headers(), **kwargs) try: r.raise_for_status() - if return_response_object: - return r - return r.json() + return r if return_response_object else r.json() except requests.exceptions.HTTPError as e: logging.error(r.text) raise e @@ -180,9 +176,7 @@ def post(self, url, data, return_response_object=False, **kwargs): r = self.requests_session.post(self.server_url + url, json=data, headers=self.get_headers(), **kwargs) try: r.raise_for_status() - if return_response_object: - return r - return r.json() + return r if return_response_object else r.json() except requests.exceptions.HTTPError as e: logging.error(r.text) raise e @@ -247,12 +241,10 @@ def iterate_resources(self, params: Optional[dict] = None): params = params or {} url_params = urllib.parse.urlencode(params) if url_params: - url_params = "?" + url_params - response = self.get("/resources.json" + url_params) + url_params = f"?{url_params}" + response = self.get(f"/resources.json{url_params}") assert "body" in response.keys(), f"Key 'body' not found in response keys: {response.keys()}" - resources = response["body"] - for resource in resources: - yield resource + yield from response["body"] def list_resources(self, folder_id: Optional[PassboltFolderIdType] = None): params = { @@ -261,8 +253,8 @@ def list_resources(self, folder_id: Optional[PassboltFolderIdType] = None): } url_params = urllib.parse.urlencode(params) if url_params: - url_params = "?" + url_params - response = self.get("/folders.json" + url_params) + url_params = f"?{url_params}" + response = self.get(f"/folders.json{url_params}") assert "body" in response.keys(), f"Key 'body' not found in response keys: {response.keys()}" response = response["body"][0] assert "children_resources" in response.keys(), ( @@ -292,7 +284,7 @@ def list_users( else: params = {"filter[has-access]": resource_or_folder_id, "contain[user]": 1} params["contain[permission]"] = True - response = self.get(f"/users.json", params=params) + response = self.get("/users.json", params=params) assert "body" in response.keys(), f"Key 'body' not found in response keys: {response.keys()}" response = response["body"] users = constructor( @@ -465,8 +457,11 @@ def update_resource( payload["secrets"] = self._encrypt_secrets(secret_text=secret_text, recipients=recipients) if payload: - r = self.put(f"/resources/{resource_id}.json", payload, return_response_object=True) - return r + return self.put( + f"/resources/{resource_id}.json", + payload, + return_response_object=True, + ) def describe_group(self, group_id: PassboltGroupIdType): response = self.get(f"/groups/{group_id}.json", params={"contain[groups_users]": 1}) diff --git a/test.py b/test.py index 5c8bdc6..38a1fda 100644 --- a/test.py +++ b/test.py @@ -4,7 +4,7 @@ def get_my_passwords(passbolt_obj): - result = list() + result = [] for i in passbolt_obj.get(url="/resources.json?api-version=v2")["body"]: result.append({ "id": i["id"], @@ -14,8 +14,7 @@ def get_my_passwords(passbolt_obj): }) print(i) for i in result: - resource = passbolt_obj.get( - "/secrets/resource/{}.json?api-version=v2".format(i["id"])) + resource = passbolt_obj.get(f'/secrets/resource/{i["id"]}.json?api-version=v2') i["password"] = passbolt_obj.decrypt(resource["body"]["data"]) print(result) @@ -24,7 +23,7 @@ def get_passwords_basic(): # A simple example to show how to retrieve passwords of a user. # Note the config file is placed in the project directory. passbolt_obj = passboltapi.PassboltAPI(config_path="config.ini") - result = list() + result = [] for i in passbolt_obj.get(url="/resources.json?api-version=v2")["body"]: result.append({ "id": i["id"], @@ -34,8 +33,7 @@ def get_passwords_basic(): }) print(i) for i in result: - resource = passbolt_obj.get( - "/secrets/resource/{}.json?api-version=v2".format(i["id"])) + resource = passbolt_obj.get(f'/secrets/resource/{i["id"]}.json?api-version=v2') i["password"] = passbolt_obj.decrypt(resource["body"]["data"]) print(result) passbolt_obj.close_session() From 9d43bb23cc2067f0bcfc4b2fedb36ffaa4fcde46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Clavijo?= Date: Tue, 9 Jan 2024 12:47:53 -0300 Subject: [PATCH 3/3] Update __init__.py --- passboltapi/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/passboltapi/__init__.py b/passboltapi/__init__.py index 78ced61..a8b50bb 100644 --- a/passboltapi/__init__.py +++ b/passboltapi/__init__.py @@ -51,20 +51,20 @@ def __init__( config_path: Optional[str] = None, new_keys: bool = False, delete_old_keys: bool = False, - no_check_certificate: bool = False, + check_certificate: bool = False, ): """ :param config: Config as a dictionary :param config_path: Path to the config file. :param delete_old_keys: Set true if old keys need to be deleted - :param no_check_certificate: disables SSL server certificate check. + :param check_certificate: enables SSL server certificate check. """ self.config = config if config_path: self.config = configparser.ConfigParser() self.config.read_file(open(config_path, "r")) self.requests_session = requests.Session() - self.requests_session.verify = not no_check_certificate + self.requests_session.verify = check_certificate if not self.config: raise ValueError("Missing config. Provide config as dictionary or path to configuration file.")