ark-sdk-python 2.0.3__py3-none-any.whl → 2.0.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ark_sdk_python/ark.py CHANGED
@@ -17,7 +17,7 @@ from ark_sdk_python.actions import ArkAction, ArkCacheAction, ArkConfigureAction
17
17
 
18
18
  urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
19
19
 
20
- __version__ = '2.0.3'
20
+ __version__ = '2.0.5'
21
21
 
22
22
 
23
23
  def main():
@@ -16,6 +16,7 @@ import inquirer
16
16
  from cachetools import LRUCache, cached
17
17
  from pydantic import ValidationError
18
18
  from requests import Session
19
+ from requests.cookies import RequestsCookieJar
19
20
 
20
21
  from ark_sdk_python.args import ArkArgsFormatter, ArkInquirerRender
21
22
  from ark_sdk_python.auth.identity.ark_identity_fqdn_resolver import ArkIdentityFQDNResolver
@@ -73,7 +74,7 @@ def input_process(pipe_write: Connection, pipe_read: Connection, mechanism: Mech
73
74
 
74
75
 
75
76
  class ArkIdentity:
76
- __LAST_START_AUTH_RESP: Dict[str, Tuple[StartAuthResponse, datetime]] = {}
77
+ __LAST_START_AUTH_RESP: Dict[str, Tuple[StartAuthResponse, datetime, RequestsCookieJar]] = {}
77
78
  __LAST_START_AUTH_RESP_DELTA_SECONDS: Final[int] = 30
78
79
 
79
80
  def __init__(
@@ -478,7 +479,11 @@ class ArkIdentity:
478
479
  identity_tenant_subdomain=identity_tenant_subdomain,
479
480
  )
480
481
  resp = identity.__start_authentication()
481
- ArkIdentity.__LAST_START_AUTH_RESP[f'{identity.identity_url}_{username}'] = (resp, datetime.now())
482
+ ArkIdentity.__LAST_START_AUTH_RESP[f'{identity.identity_url}_{username}'] = (
483
+ resp,
484
+ datetime.now(),
485
+ identity.session.cookies,
486
+ )
482
487
  return (
483
488
  resp.result.idp_redirect_url == None
484
489
  and resp.result.challenges
@@ -533,6 +538,7 @@ class ArkIdentity:
533
538
  start_auth_response_time = ArkIdentity.__LAST_START_AUTH_RESP[f'{self.__identity_url}_{self.__username}']
534
539
  if (datetime.now() - start_auth_response_time[1]).total_seconds() < ArkIdentity.__LAST_START_AUTH_RESP_DELTA_SECONDS:
535
540
  start_auth_response = start_auth_response_time[0]
541
+ self.__session.cookies.update(start_auth_response_time[2])
536
542
  del ArkIdentity.__LAST_START_AUTH_RESP[f'{self.__identity_url}_{self.__username}']
537
543
  if not start_auth_response:
538
544
  start_auth_response = self.__start_authentication()
@@ -33,6 +33,7 @@ class ArkPTYSSHConnection(ArkConnection):
33
33
  Raises:
34
34
  ArkException: _description_
35
35
  """
36
+ # pylint: disable=import-error
36
37
  from pexpect import pxssh
37
38
 
38
39
  if self.__is_connected:
@@ -0,0 +1,235 @@
1
+ import os
2
+ import re
3
+ import subprocess
4
+ import threading
5
+ import time
6
+ from shutil import which
7
+ from typing import Any, Final, Optional
8
+
9
+ from overrides import overrides
10
+
11
+ from ark_sdk_python.common.connections.ark_connection import ArkConnection
12
+ from ark_sdk_python.common.connections.ssh.ark_ssh_connection import SSH_PORT
13
+ from ark_sdk_python.models import ArkException
14
+ from ark_sdk_python.models.common.connections import ArkConnectionCommand, ArkConnectionDetails, ArkConnectionResult
15
+
16
+
17
+ class ArkPTYSSHWinConnection(ArkConnection):
18
+ __ANSI_COLOR_STRIPPER: Final[Any] = re.compile(r'\x1b[^m]*m|\x1b\[\?2004[hl]')
19
+ __ANSI_ESCAPE_STRIPPER: Final[Any] = re.compile(r'\x1B\[[0-?]*[ -/]*[@-~]')
20
+ __PROMPT_REGEX: Final[Any] = re.compile(r"[#$]")
21
+ __PASSWORD_PROMPT_REGEX: Final[Any] = re.compile(
22
+ r"(?i)(?:password:)|(?:passphrase for key)|(?:^Please enter your password[\s\S]+.+ >:$)"
23
+ )
24
+ __EXIT_MAKRER: Final[str] = '__ARK_RC_MARK__'
25
+ __DEFAULT_COL_SIZE: Final[int] = 80
26
+ __DEFAULT_ROW_SIZE: Final[int] = 24
27
+ __DEFAULT_NONEAGER_TIMEOEUT: Final[float] = 1.0
28
+ __DEFAULT_PROMPT_OVERALL_TIMEOUT: Final[float] = 20.0
29
+ __CHAR_SLEEP_TIME: Final[float] = 0.05
30
+
31
+ def __init__(self):
32
+ super().__init__()
33
+ self.__is_connected: bool = False
34
+ self.__is_suspended: bool = False
35
+ self.__pty: Optional[Any] = None
36
+ self.__output_lock: threading.Lock = threading.Lock()
37
+ self.__buffer: str = ''
38
+
39
+ def __strip_ansi(self, ansi_input: str) -> str:
40
+ ansi_input = ansi_input.strip()
41
+ ansi_input = ArkPTYSSHWinConnection.__ANSI_COLOR_STRIPPER.sub('', ansi_input)
42
+ ansi_input = ArkPTYSSHWinConnection.__ANSI_ESCAPE_STRIPPER.sub('', ansi_input)
43
+ return ansi_input
44
+
45
+ def __reset_buffer(self) -> None:
46
+ with self.__output_lock:
47
+ self.__buffer = ''
48
+
49
+ def __read_until_latest_prompt(
50
+ self,
51
+ password: Optional[str] = None,
52
+ noneager_timeout: float = __DEFAULT_NONEAGER_TIMEOEUT,
53
+ overall_timeout: float = __DEFAULT_PROMPT_OVERALL_TIMEOUT,
54
+ login_prompt: bool = False,
55
+ expected_prompt: Any = __PROMPT_REGEX,
56
+ ) -> None:
57
+ buffer = ''
58
+ prompt_found_at = -1
59
+ start_time = time.time()
60
+ noneager_start_time = start_time
61
+
62
+ while True:
63
+ char = self.__pty.read(1)
64
+ if not char:
65
+ if ArkPTYSSHWinConnection.__PASSWORD_PROMPT_REGEX.search(self.__strip_ansi(buffer)) and not password and login_prompt:
66
+ raise RuntimeError(f'Password prompt with no password given [{buffer}]')
67
+ if (time.time() - noneager_start_time > noneager_timeout) and prompt_found_at != -1:
68
+ break
69
+ if (time.time() - start_time) > overall_timeout and prompt_found_at == -1:
70
+ raise RuntimeError(f'Timeout while waiting for prompt [{buffer}]')
71
+ time.sleep(ArkPTYSSHWinConnection.__CHAR_SLEEP_TIME)
72
+ continue
73
+
74
+ buffer += char
75
+
76
+ with self.__output_lock:
77
+ self.__buffer += char
78
+
79
+ if ArkPTYSSHWinConnection.__PASSWORD_PROMPT_REGEX.search(self.__strip_ansi(buffer)) and login_prompt:
80
+ if not password:
81
+ raise RuntimeError(f'Password prompt with no password given [{buffer}]')
82
+ self.__pty.write(password + '\n')
83
+ buffer = ""
84
+ prompt_found_at = -1
85
+ continue
86
+
87
+ if expected_prompt.search(buffer):
88
+ prompt_found_at = len(buffer)
89
+
90
+ noneager_start_time = time.time()
91
+
92
+ if prompt_found_at != -1:
93
+ with self.__output_lock:
94
+ self.__buffer = buffer
95
+
96
+ @overrides
97
+ def connect(self, connection_details: ArkConnectionDetails) -> None:
98
+ """
99
+ Performs SSH connection with given details or keys
100
+ Saves the ssh session to be used for command executions
101
+ Done using windows pty
102
+
103
+ Args:
104
+ connection_details (ArkConnectionDetails): _description_
105
+
106
+ Raises:
107
+ ArkException: _description_
108
+ """
109
+ # pylint: disable=import-error
110
+ import winpty
111
+
112
+ if self.__is_connected:
113
+ return
114
+
115
+ address = connection_details.address
116
+ user = connection_details.credentials.user
117
+ port = connection_details.port or SSH_PORT
118
+ password = None
119
+ key_path = None
120
+ if connection_details.credentials.password:
121
+ password = connection_details.credentials.password.get_secret_value()
122
+ elif connection_details.credentials.private_key_filepath:
123
+ key_path = connection_details.credentials.private_key_filepath
124
+
125
+ ssh_args = [f'{user}@{address}', '-p', str(port), '-o', 'StrictHostKeyChecking=no']
126
+ if key_path:
127
+ ssh_args.extend(['-i', str(key_path)])
128
+ try:
129
+ self.__pty = winpty.PTY(
130
+ cols=ArkPTYSSHWinConnection.__DEFAULT_COL_SIZE,
131
+ rows=ArkPTYSSHWinConnection.__DEFAULT_ROW_SIZE,
132
+ backend=winpty.enums.Backend.WinPTY,
133
+ )
134
+ ssh_full_cmd = which('ssh', path=os.environ.get('PATH', os.defpath))
135
+ self.__pty.spawn(ssh_full_cmd, cmdline=' ' + subprocess.list2cmdline(ssh_args))
136
+ self.__read_until_latest_prompt(password, login_prompt=True)
137
+ self.__is_connected = True
138
+ except Exception as ex:
139
+ raise ArkException(f'Failed to ssh connect [{str(ex)}]') from ex
140
+
141
+ @overrides
142
+ def disconnect(self) -> None:
143
+ """
144
+ Disconnects the ssh session
145
+ """
146
+ if self.__pty:
147
+ self.__pty.write('exit\n')
148
+ self.__pty = None
149
+ self.__is_connected = False
150
+ self.__is_suspended = False
151
+
152
+ @overrides
153
+ def suspend_connection(self) -> None:
154
+ """
155
+ Suspends execution of ssh commands
156
+ """
157
+ self.__is_suspended = True
158
+
159
+ @overrides
160
+ def restore_connection(self) -> None:
161
+ """
162
+ Restores execution of ssh commands
163
+ """
164
+ self.__is_suspended = False
165
+
166
+ @overrides
167
+ def is_suspended(self) -> bool:
168
+ """
169
+ Checks whether ssh commands can be executed or not
170
+
171
+ Returns:
172
+ bool: _description_
173
+ """
174
+ return self.__is_suspended
175
+
176
+ @overrides
177
+ def is_connected(self) -> bool:
178
+ """
179
+ Checks whether theres a ssh session connected
180
+
181
+ Returns:
182
+ bool: _description_
183
+ """
184
+ return self.__is_connected
185
+
186
+ @overrides
187
+ def run_command(self, command: ArkConnectionCommand) -> ArkConnectionResult:
188
+ """
189
+ Runs a command over ssh session via pty, returning the result accordingly
190
+ stderr is not supported, only stdout is returned, and it'll contain everything including stderr
191
+
192
+ Args:
193
+ command (ArkConnectionCommand): _description_
194
+
195
+ Raises:
196
+ ArkException: _description_
197
+
198
+ Returns:
199
+ ArkConnectionResult: _description_
200
+ """
201
+ if not self.__is_connected or self.__is_suspended:
202
+ raise ArkException('Cannot run command while not connected or suspended')
203
+
204
+ self._logger.debug(f'Running command [{command.command}]')
205
+
206
+ self.__reset_buffer()
207
+ self.__pty.write(command.command + "\n")
208
+ self.__read_until_latest_prompt()
209
+
210
+ with self.__output_lock:
211
+ stdout = self.__buffer.strip()
212
+
213
+ self.__reset_buffer()
214
+ self.__pty.write(f'echo {ArkPTYSSHWinConnection.__EXIT_MAKRER}_$?;\n')
215
+ self.__read_until_latest_prompt()
216
+
217
+ with self.__output_lock:
218
+ lines = self.__buffer.strip().splitlines()
219
+
220
+ rc = None
221
+ for line in lines:
222
+ line = self.__strip_ansi(line)
223
+ if line.startswith(f'{ArkPTYSSHWinConnection.__EXIT_MAKRER}_'):
224
+ try:
225
+ rc = int(line[len(ArkPTYSSHWinConnection.__EXIT_MAKRER) + 1 :]) # +1 for the underscore
226
+ break
227
+ except ValueError:
228
+ continue
229
+ if rc is None:
230
+ raise ArkException(f"Failed to parse exit code from output - [{self.__buffer}]")
231
+ if rc != command.expected_rc and command.raise_on_error:
232
+ raise ArkException(f'Failed to execute command [{command.command}] - [{rc}] - [{stdout}]')
233
+ self._logger.debug(f'Command rc: [{rc}]')
234
+ self._logger.debug(f'Command stdout: [{stdout}]')
235
+ return ArkConnectionResult(stdout=stdout, rc=rc)
@@ -1,11 +1,17 @@
1
1
  import argparse
2
+ import platform
2
3
  import tempfile
3
4
 
4
5
  from ark_sdk_python.auth import ArkISPAuth
5
6
  from ark_sdk_python.common.ark_jwt_utils import ArkJWTUtils
6
7
  from ark_sdk_python.common.connections.ssh.ark_pty_ssh_connection import ArkPTYSSHConnection
8
+ from ark_sdk_python.common.connections.ssh.ark_pty_ssh_win_connection import ArkPTYSSHWinConnection
7
9
  from ark_sdk_python.models.auth import ArkAuthMethod, ArkAuthProfile, ArkSecret
8
- from ark_sdk_python.models.auth.ark_auth_method import IdentityServiceUserArkAuthMethodSettings
10
+ from ark_sdk_python.models.auth.ark_auth_method import (
11
+ ArkAuthMethodsDescriptionMap,
12
+ IdentityArkAuthMethodSettings,
13
+ IdentityServiceUserArkAuthMethodSettings,
14
+ )
9
15
  from ark_sdk_python.models.common.connections.ark_connection_command import ArkConnectionCommand
10
16
  from ark_sdk_python.models.common.connections.ark_connection_credentials import ArkConnectionCredentials
11
17
  from ark_sdk_python.models.common.connections.ark_connection_details import ArkConnectionDetails
@@ -13,29 +19,36 @@ from ark_sdk_python.models.services.sia.sso.ark_sia_sso_get_ssh_key import ArkSI
13
19
  from ark_sdk_python.services.sia.sso import ArkSIASSOService
14
20
 
15
21
 
16
- def login_to_identity_security_platform(service_user: str, service_token: str, application_name: str) -> ArkISPAuth:
22
+ def login_to_identity_security_platform(user: str, secret: str, is_service_user: bool, application_name: str) -> ArkISPAuth:
17
23
  """
18
- This will perform login to the tenant with the given service user credentials
24
+ This will perform login to the tenant with the given user credentials
25
+ Where the user is normal or service user based on the boolean
19
26
  Caching the logged in token is disabled and will perform a full login on each call
20
27
  Will return an identity security platform authenticated class
21
28
 
22
29
  Args:
23
- service_user (str): _description_
24
- service_token (str): _description_
30
+ user (str): _description_
31
+ secret (str): _description_
25
32
  application_name (str): _description_
26
33
 
27
34
  Returns:
28
35
  ArkISPAuth: _description_
29
36
  """
30
- print('Logging in to the tenant')
31
37
  isp_auth = ArkISPAuth(cache_authentication=False)
38
+ auth_method = ArkAuthMethod.IdentityServiceUser if is_service_user else ArkAuthMethod.Identity
39
+ auth_methods_settings = (
40
+ IdentityServiceUserArkAuthMethodSettings(identity_authorization_application=application_name)
41
+ if is_service_user
42
+ else IdentityArkAuthMethodSettings()
43
+ )
44
+ print(f'Logging in to the tenant with [{ArkAuthMethodsDescriptionMap[auth_method]}] user type and user [{user}]')
32
45
  isp_auth.authenticate(
33
46
  auth_profile=ArkAuthProfile(
34
- username=service_user,
35
- auth_method=ArkAuthMethod.IdentityServiceUser,
36
- auth_method_settings=IdentityServiceUserArkAuthMethodSettings(identity_authorization_application=application_name),
47
+ username=user,
48
+ auth_method=auth_method,
49
+ auth_method_settings=auth_methods_settings,
37
50
  ),
38
- secret=ArkSecret(secret=service_token),
51
+ secret=ArkSecret(secret=secret),
39
52
  )
40
53
  print('Logged in successfully')
41
54
  return isp_auth
@@ -92,7 +105,10 @@ def connect_and_validate_connection(ssh_key_path: str, proxy_address: str, conne
92
105
  command (str): _description_
93
106
  """
94
107
  print(f'Connecting to proxy [{proxy_address}] and connection string [{connection_string}]')
95
- ssh_connection = ArkPTYSSHConnection()
108
+ if platform.system() == 'Windows':
109
+ ssh_connection = ArkPTYSSHWinConnection()
110
+ else:
111
+ ssh_connection = ArkPTYSSHConnection()
96
112
  ssh_connection.connect(
97
113
  ArkConnectionDetails(
98
114
  address=proxy_address,
@@ -112,8 +128,9 @@ def connect_and_validate_connection(ssh_key_path: str, proxy_address: str, conne
112
128
  if __name__ == '__main__':
113
129
  # Construct an argument parser for CLI parameters for the script
114
130
  parser = argparse.ArgumentParser()
115
- parser.add_argument('--service-user', required=True, help='Service user to login and perform the operation with')
116
- parser.add_argument('--service-token', required=True, help='Service user token to use for logging in and connecting')
131
+ parser.add_argument('--user', required=True, help='User to login and perform the operation with')
132
+ parser.add_argument('--secret', required=True, help='User secret to use for logging in and connecting')
133
+ parser.add_argument('--is-service-user', action='store_true', help='Whether this user is a service user and not a normal user')
117
134
  parser.add_argument(
118
135
  '--service-application',
119
136
  default='__idaptive_cybr_user_oidc',
@@ -139,7 +156,7 @@ if __name__ == '__main__':
139
156
  # - Generate an MFA Caching SSH key
140
157
  # - Construct the ssh proxy address
141
158
  # - Connect in SSH to the proxy / target with the MFA Caching SSH Key and perform the command
142
- isp_auth = login_to_identity_security_platform(args.service_user, args.service_token, args.service_application)
159
+ isp_auth = login_to_identity_security_platform(args.user, args.secret, args.is_service_user, args.service_application)
143
160
  ssh_key_path = generate_mfa_caching_ssh_key(isp_auth, temp_folder)
144
161
  proxy_address = construct_ssh_proxy_address(isp_auth)
145
162
  connect_and_validate_connection(ssh_key_path, proxy_address, args.connection_string, args.test_command)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ark-sdk-python
3
- Version: 2.0.3
3
+ Version: 2.0.5
4
4
  Summary: Official Ark SDK / CLI for CyberArk Identity Security Platform
5
5
  License: Apache-2.0
6
6
  Author: CyberArk
@@ -29,13 +29,14 @@ Requires-Dist: keyrings.cryptfile
29
29
  Requires-Dist: overrides
30
30
  Requires-Dist: packaging
31
31
  Requires-Dist: paramiko
32
- Requires-Dist: pexpect
32
+ Requires-Dist: pexpect ; sys_platform != "win32"
33
33
  Requires-Dist: progress
34
34
  Requires-Dist: pycryptodome
35
35
  Requires-Dist: pydantic (==2.*)
36
36
  Requires-Dist: pyhumps
37
37
  Requires-Dist: pyjwt
38
38
  Requires-Dist: python-dateutil
39
+ Requires-Dist: pywinpty ; sys_platform == "win32"
39
40
  Requires-Dist: pywinrm
40
41
  Requires-Dist: pyyaml
41
42
  Requires-Dist: requests
@@ -10,13 +10,13 @@ ark_sdk_python/actions/ark_service_exec_action.py,sha256=IHIm9oISRThOD8WNJe4oJX-
10
10
  ark_sdk_python/args/__init__.py,sha256=mCb4UrIRL4u58QyUbqqH2xAU0VN91pxjK5sa_UwCM_k,279
11
11
  ark_sdk_python/args/ark_args_formatter.py,sha256=-Rs_rGMIr1bprD1SfYlMsLoSOFgr_RFrRdREvbmPU6k,9204
12
12
  ark_sdk_python/args/ark_pydantic_argparse.py,sha256=uupNLnUmO5LrTrRZsBv7qRKgDsx4GaJMwOUh1TCc1-w,40083
13
- ark_sdk_python/ark.py,sha256=7GknKi-bF-qVdg4VykNQGVA3SZCYSPjRzRLCqO1gDVY,1280
13
+ ark_sdk_python/ark.py,sha256=xWOv-IjEvmYh_rl41EYWAOllXjbAk1wLUtpzgR9SLVI,1280
14
14
  ark_sdk_python/ark_api.py,sha256=qEB2j-xf8kiSdAvTXrvEdqGDQ-l1aoEvktxnq7BYNRI,12486
15
15
  ark_sdk_python/auth/__init__.py,sha256=1l29Rf3VhwmV8z3YROiQVcgrZYSeeCqVN4zna77tnlk,620
16
16
  ark_sdk_python/auth/ark_auth.py,sha256=2fPlABM3AwWmb1h0lQPQAz93u1ZluYKv7axlfg4lq5Q,12988
17
17
  ark_sdk_python/auth/ark_isp_auth.py,sha256=Xuf8J7-VgN6a6oJOem5Rf8LzOI5NCNqUeT5Snb4VNK4,9572
18
18
  ark_sdk_python/auth/identity/__init__.py,sha256=2Yyc_Rrx-D4PsSdg-ESl5pFFTpqu6LUPSc4ZW59oOP8,328
19
- ark_sdk_python/auth/identity/ark_identity.py,sha256=3YHJJec8uQlTY00dMEKTrfzho-Q3SrdWcITRVrGMnHQ,31909
19
+ ark_sdk_python/auth/identity/ark_identity.py,sha256=zjxjQA91H7ImJqng6OAeG-jIQ54__2Ab84Z_c51g8Ho,32123
20
20
  ark_sdk_python/auth/identity/ark_identity_fqdn_resolver.py,sha256=utO8mWF7rqfYhcPUthBp7t4M9t-_u3v84CRJeCogoHc,4797
21
21
  ark_sdk_python/auth/identity/ark_identity_service_user.py,sha256=QlqUHGUh4iqmfqmV_YlXs6xNM_U-xz6VqW5hHZoxwSQ,7495
22
22
  ark_sdk_python/cli_services/__init__.py,sha256=e9vdwqNiYqhZmK05Wgpz-Hf9SycK_3X-RS3CK9n2lIs,87
@@ -43,7 +43,8 @@ ark_sdk_python/common/ark_system_config.py,sha256=cl44cYSgXZEnoRYu048aBeJwWRPdCT
43
43
  ark_sdk_python/common/connections/__init__.py,sha256=RyARha6jTeaUw1cIGBSR7nOYxCV3fC24juKb-17yXLw,104
44
44
  ark_sdk_python/common/connections/ark_connection.py,sha256=wjYpn_9EJ-B679006VqQREFeTOhINmw-heiRqlpuCnY,1613
45
45
  ark_sdk_python/common/connections/ssh/__init__.py,sha256=Ycv3BDI2iw-N7BdRkpAv2Qi90O4bp8sPyNsJnuQLfWo,256
46
- ark_sdk_python/common/connections/ssh/ark_pty_ssh_connection.py,sha256=GaCdiORXWfMB4Pu5bu1nkNPmjUAU5N3l7qUA6FaQ4WI,4974
46
+ ark_sdk_python/common/connections/ssh/ark_pty_ssh_connection.py,sha256=mhrVYV9vx81lSRXCcPoV3KjxKvMDEZlHEROOB1mynLs,5013
47
+ ark_sdk_python/common/connections/ssh/ark_pty_ssh_win_connection.py,sha256=vAAvJ7AMML66B4GVjsSeqzPlJVrrNK2M34TqeVDYg2k,8557
47
48
  ark_sdk_python/common/connections/ssh/ark_ssh_connection.py,sha256=yVtrM_clLScg1uNY-Fextiup59h2AIbKxQQadLfiqpw,5195
48
49
  ark_sdk_python/common/connections/winrm/__init__.py,sha256=TX8jEK5BPwvlzgo8lH4sGDcY9oL593rdEutQL4MMra4,164
49
50
  ark_sdk_python/common/connections/winrm/ark_winrm_connection.py,sha256=O8ifpvmuzFpvqvjb3wFmg576v5jFZwFHi20wlV2UtwE,6854
@@ -57,7 +58,7 @@ ark_sdk_python/examples/create_sia_vm_environment.py,sha256=omk2mb1yrAU8w3mNSqjH
57
58
  ark_sdk_python/examples/default_suffix.py,sha256=GEAnsrVhNdsIZ2YRJd4Xs4HYv86UdmXwPwOs7ajcQIQ,662
58
59
  ark_sdk_python/examples/list_pcloud_accounts.py,sha256=Xzq_LIp_woRgCt73w1AMlXbB6P8yNRHr1VGIBCyQswk,810
59
60
  ark_sdk_python/examples/session_monitoring_activites.py,sha256=WSGISA4Qye8q22WpiHq0HKYTfbwLK7038mRHp2Kr9IQ,1632
60
- ark_sdk_python/examples/validate_ssh_connection.py,sha256=hSUtmADqupxEkbKRTvC0MKmJBHfe-PYltVP0u8sHuhQ,6357
61
+ ark_sdk_python/examples/validate_ssh_connection.py,sha256=K9RB8eosbV-5m0Q-gx9YQWrp57D8oLB4jfCgQy44gdU,7094
61
62
  ark_sdk_python/models/__init__.py,sha256=2EKDAGANDadQfJrnTjm2Jc7JnINcZOwCRXWHEXmIH6o,1082
62
63
  ark_sdk_python/models/actions/__init__.py,sha256=2xPZhoHco50bmPX7rm6uPOAcYURoTP9J5KF4E3XNaFA,743
63
64
  ark_sdk_python/models/actions/ark_configure_action_consts.py,sha256=-YNgiGv1GsQx-JvO0eXXrrOlDcH6sRDLdO7kvTHto-M,1143
@@ -479,9 +480,9 @@ ark_sdk_python/services/sia/workspaces/targetsets/__init__.py,sha256=UjHr81LMcMl
479
480
  ark_sdk_python/services/sia/workspaces/targetsets/ark_sia_target_sets_workspace_service.py,sha256=o9_DzskTV94kkfc4m0Qk8lj5FV8rexRa5RzRwfe9Tbo,11254
480
481
  ark_sdk_python/services/sm/__init__.py,sha256=jzKxEkZYOCW9y_byLfd_odae9m2sh1UfjaaKBVySWY0,95
481
482
  ark_sdk_python/services/sm/ark_sm_service.py,sha256=Rh2dFjNz7VMJUnl43hxL07HEZ8_33KrU_lqfUrqUDn4,11517
482
- ark_sdk_python-2.0.3.dist-info/LICENSE.txt,sha256=d4EzYx2apA3-GqrFY23wLtc6UmQNXG05gyLfZ3oWVRs,11358
483
- ark_sdk_python-2.0.3.dist-info/METADATA,sha256=IlLOheNrRkXp06nhwTiyNzKFP9BZHw_pSYKITM6xQUY,20102
484
- ark_sdk_python-2.0.3.dist-info/NOTICES.md,sha256=cuG6J8u9QVu5ZjYki-McJmoEmi39foN30IxA_2fNnKY,125667
485
- ark_sdk_python-2.0.3.dist-info/WHEEL,sha256=QymApwX2NnTrOAORdnrvo1YegSC1EN2pJY0mOd9rfdE,110
486
- ark_sdk_python-2.0.3.dist-info/entry_points.txt,sha256=v5bcuRn8w42ZKQspfvX3AliKmLVO6f7Zb_bma77p3vQ,47
487
- ark_sdk_python-2.0.3.dist-info/RECORD,,
483
+ ark_sdk_python-2.0.5.dist-info/LICENSE.txt,sha256=d4EzYx2apA3-GqrFY23wLtc6UmQNXG05gyLfZ3oWVRs,11358
484
+ ark_sdk_python-2.0.5.dist-info/METADATA,sha256=Q03rx4A9NT-nI4hG54LBs_9db9vRG-FArJvIAD6DTuw,20178
485
+ ark_sdk_python-2.0.5.dist-info/NOTICES.md,sha256=cuG6J8u9QVu5ZjYki-McJmoEmi39foN30IxA_2fNnKY,125667
486
+ ark_sdk_python-2.0.5.dist-info/WHEEL,sha256=QymApwX2NnTrOAORdnrvo1YegSC1EN2pJY0mOd9rfdE,110
487
+ ark_sdk_python-2.0.5.dist-info/entry_points.txt,sha256=v5bcuRn8w42ZKQspfvX3AliKmLVO6f7Zb_bma77p3vQ,47
488
+ ark_sdk_python-2.0.5.dist-info/RECORD,,