zscams 2.0.6__py3-none-any.whl → 2.0.7__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.
@@ -39,7 +39,7 @@ services:
39
39
  custom_port_name: "reverse_port"
40
40
  params:
41
41
  local_port: 4422
42
- private_key: zscams/agent/keys/autoport.key
42
+ private_key: keys/autoport.key
43
43
  remote_host: localhost
44
44
  reverse_port: "{reverse_port}"
45
45
  server_ssh_user: ssh_user
@@ -52,7 +52,7 @@ services:
52
52
  port: 22
53
53
  prerequisites:
54
54
  files:
55
- - zscams/agent/keys/autoport.key
55
+ - keys/autoport.key
56
56
  ports:
57
57
  - 22
58
58
  services: []
@@ -1,9 +1,12 @@
1
+ import os
1
2
  from zscams.agent.src.support.logger import get_logger
2
3
  from zscams.agent.src.support.filesystem import is_file_exists
3
4
  from zscams.agent.src.core import running_services
4
5
  from zscams.agent.src.support.network import is_port_open, is_service_running
6
+ from zscams.agent.src.support.configuration import CONFIG_PATH
5
7
 
6
8
  logger = get_logger("service_prerequisites")
9
+ config_dir = os.path.dirname(CONFIG_PATH)
7
10
 
8
11
 
9
12
  def check_prerequisites(prereqs: dict) -> bool:
@@ -18,7 +21,7 @@ def check_prerequisites(prereqs: dict) -> bool:
18
21
 
19
22
  # Check file prerequisites
20
23
  for path in prereqs.get("files", []):
21
- results.append(is_file_exists(path, logger))
24
+ results.append(is_file_exists(path, logger, config_dir))
22
25
 
23
26
  # Check port prerequisites
24
27
  for port in prereqs.get("ports", []):
@@ -4,6 +4,7 @@ import os
4
4
  import sys
5
5
  from zscams.agent.src.support.logger import get_logger
6
6
  from zscams.agent.src.support.filesystem import resolve_path
7
+ from zscams.agent.src.support.configuration import CONFIG_PATH
7
8
 
8
9
  logger = get_logger("autossh_service")
9
10
 
@@ -14,11 +15,11 @@ if not params_env:
14
15
  sys.exit(1)
15
16
 
16
17
  params = json.loads(params_env)
17
-
18
+ config_dir = os.path.dirname(CONFIG_PATH)
18
19
  LOCAL_PORT = params.get("local_port", 4422)
19
20
  SERVER_SSH_USER = params.get("server_ssh_user", "ssh_user")
20
21
  REVERSE_PORT = params.get("reverse_port", 2222)
21
- PRIVATE_KEY = resolve_path(params.get("private_key")) # Path to RSA key
22
+ PRIVATE_KEY = resolve_path(params.get("private_key"), config_dir) # Path to RSA key
22
23
  SSH_OPTIONS = params.get("ssh_options", [])
23
24
  CHECK_INTERVAL = 120 #
24
25
 
@@ -4,6 +4,7 @@ import os
4
4
  import sys
5
5
  from zscams.agent.src.support.logger import get_logger
6
6
  from zscams.agent.src.support.filesystem import resolve_path
7
+ from zscams.agent.src.support.configuration import CONFIG_PATH
7
8
 
8
9
  logger = get_logger("autossh_service")
9
10
 
@@ -14,13 +15,13 @@ if not params_env:
14
15
  sys.exit(1)
15
16
 
16
17
  params = json.loads(params_env)
17
-
18
+ config_dir = os.path.dirname(CONFIG_PATH)
18
19
  FORWARDER_PORT = params.get("forwarder_port", 4422)
19
20
  LOCAL_PORT = params.get("local_port", 4422)
20
21
  REMOTE_PORT = params.get("remote_port", 4422)
21
22
  REMOTE_HOST = params.get("remote_host", "localhost")
22
23
  SERVER_SSH_USER = params.get("server_ssh_user", "ssh_user")
23
- PRIVATE_KEY = resolve_path(params.get("private_key")) # Path to RSA key
24
+ PRIVATE_KEY = resolve_path(params.get("private_key"), config_dir) # Path to RSA key
24
25
  SSH_OPTIONS = params.get("ssh_options", [])
25
26
  CHECK_INTERVAL = 120 #
26
27
 
@@ -9,6 +9,7 @@ from zscams.agent.src.support.logger import get_logger
9
9
 
10
10
  logger = get_logger("FileSystem")
11
11
 
12
+
12
13
  def resolve_path(path: Optional[str], base_dir: Optional[str] = None) -> Optional[str]:
13
14
  """
14
15
  Resolve a file path relative to a base directory.
@@ -34,9 +35,12 @@ def ensure_dir(path: str):
34
35
  os.makedirs(path, exist_ok=True)
35
36
 
36
37
 
37
- def is_file_exists(path, logger):
38
+ def is_file_exists(path, logger, base_dir=None):
38
39
  """Check if file exists."""
39
- if os.path.exists(path):
40
+ absolute_path = resolve_path(path, base_dir)
41
+ if os.path.exists(path) or os.path.exists(
42
+ Path(absolute_path if absolute_path else __file__)
43
+ ):
40
44
  logger.debug(f"File exists: {path}")
41
45
  return True
42
46
 
@@ -50,7 +54,7 @@ def append_to_file(path: str | Path, content: str):
50
54
  path = Path(path)
51
55
 
52
56
  if not path.parent.exists():
53
- os.mkdir(path.parent,0o700)
57
+ os.mkdir(path.parent, 0o700)
54
58
 
55
59
  with open(path, "a", encoding="utf-8") as file:
56
60
  file.write(content)
@@ -58,6 +62,7 @@ def append_to_file(path: str | Path, content: str):
58
62
  logger.error(exception)
59
63
  raise exception
60
64
 
65
+
61
66
  def write_to_file(path: str | Path, content: str):
62
67
  with open(path, "w", encoding="utf-8") as f:
63
68
  f.write(content)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zscams
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Async TLS tunnel client with SNI routing, auto-reconnect, and health checks
5
5
  Author: OCD - Cairo Software Team
6
6
  Maintainer: OCD - Cairo Software Team
@@ -3,7 +3,7 @@ zscams/__main__.py,sha256=J3ArryUM5B-nVwMMNPmDGRHctehDF9ZaGGHfLHiP1jI,1055
3
3
  zscams/agent/__init__.py,sha256=CKNRkV_frJyFrnFU0Nrf6xp4Ja4a_w7j7qrja_h8VUU,2976
4
4
  zscams/agent/certificates/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  zscams/agent/config.yaml,sha256=0DuIENHlSoo6nRg4Xa0ZljHGgDGQiWSEX8b_uRMtpS0,2542
6
- zscams/agent/configuration/config.j2,sha256=DLkSd-opbPzFLvNipnPLx-OsUpISlZprPzabYjPF1-E,2659
6
+ zscams/agent/configuration/config.j2,sha256=95lUo1oo_EExGCHIhlBnaeK0cwmr9gUXfh7TYP9WYdg,2633
7
7
  zscams/agent/configuration/freebsd_service.j2,sha256=d0Nh6WJFGw7PhO_dfUjECx2NXTGagalvuIE0aulXIYE,309
8
8
  zscams/agent/configuration/linux_service.j2,sha256=UOrGrXvBK2mFit_b3QxUAKgZhG-dmKV8-45bksxL4NE,225
9
9
  zscams/agent/keys/autoport.key,sha256=hZBmtw_nLsZwe11LYlwLL-P_blQ_qpUDpFwvqOZDZFE,1679
@@ -13,20 +13,20 @@ zscams/agent/src/core/backend/bootstrap.py,sha256=Dvh6Hesy9M-5zX4iQxvSSlX6HD2Ty4
13
13
  zscams/agent/src/core/backend/client.py,sha256=xZw2GuOVw6Ek-QI9OaUO4rqzIrs4xGwiPizBLCH89fo,10123
14
14
  zscams/agent/src/core/backend/exceptions.py,sha256=osMbVb_ZGvrGbw5cOCMG1s4yBLukJl7T8TITCcVPyXA,383
15
15
  zscams/agent/src/core/backend/update_machine_info.py,sha256=9chBdvsLeLVf5DsvSHiUO9xQpXSbDgqhdnrUwxyoKUM,474
16
- zscams/agent/src/core/prerequisites.py,sha256=LNPjDj2AQhZ3xBiLDNurG2osBTjepcU6tzDIm5PT_GA,1159
16
+ zscams/agent/src/core/prerequisites.py,sha256=5OlXBEg8FaYp6LXjJHtbdcpRaMywR-DBDyvDr_OiVdA,1286
17
17
  zscams/agent/src/core/service_health_check.py,sha256=9VUWQitXcDEwLcHTTeequi6om98OXN-JIIMZCCH5y4A,1733
18
18
  zscams/agent/src/core/services.py,sha256=GvAYODh1Pg_FatnZO_8iqReiIeBfq7Hfwj9zxlXYm-0,2840
19
19
  zscams/agent/src/core/tunnel/__init__.py,sha256=BvJmqtjliO-UvmEguOwky8KSGLY_w8xqM67Q3v2_jc0,4658
20
20
  zscams/agent/src/core/tunnel/tls.py,sha256=EIRR7aLq6BkW6jUVseM1YCqm7E_UDVSQ9CffQri2U6U,2006
21
21
  zscams/agent/src/core/tunnels.py,sha256=FwYi9cV3V7c_su5cEgXmyNdr8VyfCBKzU5olvi2MzBw,1736
22
22
  zscams/agent/src/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- zscams/agent/src/services/reverse_ssh.py,sha256=nAALz2pjaSAmax8Q_ojjuVfaUb2ZaB9UpR-nuv3iwMQ,2156
24
- zscams/agent/src/services/ssh_forwarder.py,sha256=RSlEhxxbeNmEUhnolWEA1tjSzQyaXsnJHpayf1LDYCs,2298
23
+ zscams/agent/src/services/reverse_ssh.py,sha256=4NeS8TIq48VoUpq6CFcUrEl97qkd2L1yWAs7qlyvSzE,2272
24
+ zscams/agent/src/services/ssh_forwarder.py,sha256=O6V89DRpohkk_Gwg_FrHD4sv9hTS45VpBUcuXv7CRO4,2414
25
25
  zscams/agent/src/services/system_monitor.py,sha256=7VeSYHbr1Lv8tGVg0AMMd5_o7EgMGuRDlxJjxpGM27g,7529
26
26
  zscams/agent/src/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  zscams/agent/src/support/cli.py,sha256=6Y0zokhwhWcsmjEosGqq_kMqF3tn4juPpsBmQax1Oyc,1221
28
28
  zscams/agent/src/support/configuration.py,sha256=hnJhvJLdL5ElZITDFLybTOHVACBHttWgy8sXhmu75Wc,2025
29
- zscams/agent/src/support/filesystem.py,sha256=jSVsnBFFBx8dFT3LzuVkGkK9CF1PScLxbyC_0vPkrRg,1587
29
+ zscams/agent/src/support/filesystem.py,sha256=QoqyvIWm0jgIGx51ikopU_mvupBWke_e5KaW-wnTI4A,1738
30
30
  zscams/agent/src/support/logger.py,sha256=rKjAVO6vDeXYTM9__q2lcc1PBiJoZUqLzry8yMf71vY,2347
31
31
  zscams/agent/src/support/mac.py,sha256=XVKc5YAYLu4a-5VrMhcwgkMNnP2u6itK3cx-Oxnx4IA,453
32
32
  zscams/agent/src/support/network.py,sha256=VwVVNqykZxvrTPwPYQ3sSVMc_Z2XUwASlo_kd_wdGDs,1453
@@ -36,7 +36,7 @@ zscams/agent/src/support/ssh.py,sha256=J9-XsVc6fGdcTN9CsfmgDRaMnfaWluDUaPGug7BVl
36
36
  zscams/agent/src/support/yaml.py,sha256=bKsQzXHAgjCxkGzPR8bgaUPB-QHMR3AMEVuvn4RRpnA,1188
37
37
  zscams/deps.py,sha256=D2WEI7dLoMnPl_OL7NOSXe-k25p1FFeeGsY1Mh7IIEw,3630
38
38
  zscams/lib/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- zscams-2.0.6.dist-info/METADATA,sha256=sP8qC6GUenw7tAGmBfNWC5TBFUR9Arhml9APowQ48Ug,6805
40
- zscams-2.0.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
41
- zscams-2.0.6.dist-info/entry_points.txt,sha256=IXiMYjEq4q0tUiD9O7eCWhqKBuOssXrMW42siTBAgG8,47
42
- zscams-2.0.6.dist-info/RECORD,,
39
+ zscams-2.0.7.dist-info/METADATA,sha256=MKMIfFRXQNLJMR-Fzhpn_ezncJJ_gcNyXqARWSFlL4A,6805
40
+ zscams-2.0.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
41
+ zscams-2.0.7.dist-info/entry_points.txt,sha256=IXiMYjEq4q0tUiD9O7eCWhqKBuOssXrMW42siTBAgG8,47
42
+ zscams-2.0.7.dist-info/RECORD,,
File without changes