regscale-cli 6.16.2.0__py3-none-any.whl → 6.16.3.0__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.

Potentially problematic release.


This version of regscale-cli might be problematic. Click here for more details.

@@ -1,8 +1,9 @@
1
- from typing import List, Optional
1
+ from typing import List, Optional, Union
2
2
 
3
3
  from regscale.core.app.logz import create_logger
4
4
  from regscale.core.app.utils.app_utils import get_current_datetime
5
- from regscale.models import Asset, Vulnerability, Mapping, ImportValidater
5
+ from regscale.integrations.scanner_integration import IntegrationFinding
6
+ from regscale.models import Asset, Vulnerability, ImportValidater, IssueStatus
6
7
  from regscale.models.integration_models.flat_file_importer import FlatFileImporter
7
8
 
8
9
  APP_NAME = "@app_name"
@@ -17,26 +18,34 @@ class Veracode(FlatFileImporter):
17
18
  self.vuln_title = "PROBLEM_TITLE"
18
19
  self.fmt = "%Y-%m-%d"
19
20
  self.dt_format = "%Y-%m-%d %H:%M:%S"
20
- csv_headers = [
21
+ xlsx_headers = [
21
22
  "Source",
22
23
  ]
23
24
  xml_headers = [
24
25
  "app_name",
25
26
  ]
27
+ json_headers = [
28
+ "findings",
29
+ "project_name",
30
+ ]
26
31
  self.mapping_file = kwargs.get("mappings_path")
27
32
  self.disable_mapping = kwargs.get("disable_mapping")
28
33
  file_type = kwargs.get("file_type")
29
- if file_type == ".xml":
34
+ xml_tag = None
35
+ if "xml" in file_type:
30
36
  self.required_headers = xml_headers
31
37
  xml_tag = "detailedreport"
38
+ elif "xlsx" in file_type:
39
+ self.required_headers = xlsx_headers
32
40
  else:
33
- self.required_headers = csv_headers
34
- xml_tag = None
41
+ self.required_headers = json_headers
35
42
  self.validater = ImportValidater(
36
43
  self.required_headers, kwargs.get("file_path"), self.mapping_file, self.disable_mapping, xml_tag=xml_tag
37
44
  )
38
45
  self.headers = self.validater.parsed_headers
39
46
  self.mapping = self.validater.mapping
47
+ if file_type == ".json":
48
+ self.asset_identifier = self.mapping.get_value(self.validater.data, "project_name", "")
40
49
  super().__init__(
41
50
  logger=logger,
42
51
  headers=self.headers,
@@ -57,10 +66,14 @@ class Veracode(FlatFileImporter):
57
66
  version = None
58
67
  # Veracode is a Web Application Security Scanner, so these will be software assets, scanning a
59
68
  # single web application
60
- if "detailedreport" in self.mapping.mapping.keys():
61
- name = self.mapping.get_value(dat, "detailedreport", {}).get(APP_NAME, "")
62
- account_id = self.mapping.get_value(dat, "detailedreport", {}).get(ACCOUNT_ID, "")
63
- version = self.mapping.get_value(dat, "detailedreport", {}).get(VERSION, "")
69
+ if "xml" in self.attributes.file_type:
70
+ detailed_report_data = dat.get("detailedreport", {})
71
+ name = detailed_report_data.get(APP_NAME, "")
72
+ account_id = detailed_report_data.get(ACCOUNT_ID, "")
73
+ version = detailed_report_data.get(VERSION, "")
74
+ elif "json" in self.attributes.file_type:
75
+ name = self.mapping.get_value(dat, "project_name", "")
76
+ account_id = self.asset_identifier
64
77
  else:
65
78
  name = self.mapping.get_value(dat, "Source", "")
66
79
  account_id = str(self.mapping.get_value(dat, "ID", ""))
@@ -88,7 +101,7 @@ class Veracode(FlatFileImporter):
88
101
  )
89
102
  return [asset]
90
103
 
91
- def create_vuln(self, dat: Optional[dict] = None, **kwargs) -> List[Vulnerability]:
104
+ def create_vuln(self, dat: Optional[dict] = None, **kwargs) -> Union[List[Vulnerability], List[IntegrationFinding]]:
92
105
  """
93
106
  Create a RegScale vulnerability from a vulnerability in the Veracode export file
94
107
 
@@ -96,30 +109,62 @@ class Veracode(FlatFileImporter):
96
109
  :return: List of RegScale Vulnerability objects
97
110
  :rtype: List[Vulnerability]
98
111
  """
99
- import_type = "xml" if isinstance(dat, str) else "csv"
100
112
  # Veracode is a Web Application Security Scanner, so these will be software assets,
101
113
  # scanning a single web application
102
- if import_type == "xml":
103
- name = self.mapping.get_value(dat, "detailedreport", {}).get(APP_NAME, "")
104
- all_sev_data = self.mapping.get_value(dat, "detailedreport", {}).get("severity", [])
114
+ if "xml" in self.attributes.file_type:
115
+ detailed_report_data = dat.get("detailedreport", {})
116
+ name = detailed_report_data.get(APP_NAME, "")
117
+ all_sev_data = detailed_report_data.get("severity", [])
105
118
  severity = self.severity_info(all_sev_data)[0] if all_sev_data else "low"
106
119
  if severity_data := self.severity_info(all_sev_data):
107
- if isinstance(severity_data, list) and len(severity_data) >= 2:
120
+ if isinstance(severity_data, tuple) and len(severity_data) >= 2:
108
121
  cwes = [
109
- f"{c.get('cweid')} {c.get('cwename')}" for c in severity_data[1].get("cwe", [])
122
+ f"{c.get('@cweid')} {c.get('@cwename')}" for c in severity_data[1].get("cwe", [])
110
123
  ] # Multiple cwes per asset in official XML
111
124
  else:
112
125
  cwes = []
113
- else:
126
+ elif "xlsx" in self.attributes.file_type:
114
127
  name = self.mapping.get_value(dat, "Source", "")
115
128
  severity = self.mapping.get_value(dat, "Sev", "").lower()
116
129
  cwes = [self.mapping.get_value(dat, "CWE ID & Name", [])] # Coalfire should flatten data for asset -> cwes
130
+ elif "json" in self.attributes.file_type:
131
+ return self._parse_json_findings(**kwargs)
117
132
 
118
- return self.process_csv_vulns(name, cwes, severity)
133
+ return self.process_vuln_data(name, cwes, severity)
119
134
 
120
- def process_csv_vulns(self, hostname: str, cwes: List[str], severity: str) -> List[Vulnerability]:
135
+ def _parse_json_findings(self, **kwargs) -> List[IntegrationFinding]:
121
136
  """
122
- Process the CSV findings from the ECR scan
137
+ Parse the JSON findings from the Veracode .json export file
138
+
139
+ :return: List of IntegrationFinding objects
140
+ :rtype: List[IntegrationFinding]
141
+ """
142
+ findings: List[IntegrationFinding] = []
143
+ for vuln in self.mapping.get_value(kwargs.get("data", self.validater.data), "findings", []):
144
+ if title := vuln.get("issue_type", vuln.get("title", "")):
145
+ findings.append(
146
+ IntegrationFinding(
147
+ title=title,
148
+ description=vuln.get("display_text", "No description available"),
149
+ severity=self.finding_severity_map.get(self.hit_mapping().get(vuln.get("severity", 0)), "Low"),
150
+ status=IssueStatus.Open,
151
+ plugin_name=vuln.get(title, self.name),
152
+ plugin_id=vuln.get("cwe_id", vuln.get("issue_id", "")),
153
+ plugin_text=vuln.get("issue_type", ""),
154
+ asset_identifier=self.asset_identifier,
155
+ first_seen=self.scan_date,
156
+ last_seen=self.scan_date,
157
+ scan_date=self.scan_date,
158
+ category="Software",
159
+ is_cwe=True,
160
+ control_labels=[],
161
+ )
162
+ )
163
+ return findings
164
+
165
+ def process_vuln_data(self, hostname: str, cwes: List[str], severity: str) -> List[Vulnerability]:
166
+ """
167
+ Process the vulnerability data to create a list of vulnerabilities
123
168
 
124
169
  :param str hostname: The hostname
125
170
  :param List[str] cwes: The CWEs
@@ -137,7 +182,7 @@ class Veracode(FlatFileImporter):
137
182
 
138
183
  def create_vulnerability_object(
139
184
  self, asset: Asset, hostname: str, cwe: str, severity: str, description: str
140
- ) -> Vulnerability:
185
+ ) -> IntegrationFinding:
141
186
  """
142
187
  Create a vulnerability from a row in the Veracode file
143
188
 
@@ -146,33 +191,25 @@ class Veracode(FlatFileImporter):
146
191
  :param str cwe: The CWE
147
192
  :param str severity: The severity
148
193
  :param str description: The description
149
- :return: The vulnerability
150
- :rtype: Vulnerability
151
- """
152
- config = self.attributes.app.config
153
-
154
- return Vulnerability( # type: ignore
155
- id=0,
156
- scanId=0,
157
- parentId=asset.id,
158
- parentModule="assets",
159
- ipAddress="0.0.0.0",
160
- lastSeen=get_current_datetime(), # No timestamp on Veracode
161
- firstSeen=get_current_datetime(), # No timestamp on Veracode
162
- daysOpen=None,
163
- dns=hostname,
164
- mitigated=None,
165
- operatingSystem=asset.operatingSystem,
166
- severity=severity,
167
- plugInName=cwe,
168
- cve="",
169
- tenantsId=0,
194
+ :return: The equivalent IntegrationFinding object
195
+ :rtype: IntegrationFinding
196
+ """
197
+ return IntegrationFinding(
170
198
  title=f"{cwe} on asset {asset.name}",
171
- description=cwe,
172
- plugInText=description,
173
- createdById=config["userId"],
174
- lastUpdatedById=config["userId"],
175
- dateCreated=get_current_datetime(),
199
+ description=description,
200
+ status=IssueStatus.Open,
201
+ dns=hostname,
202
+ first_seen=self.scan_date,
203
+ last_seen=self.scan_date,
204
+ scan_date=self.scan_date,
205
+ category="Software",
206
+ is_cwe=True,
207
+ severity=self.finding_severity_map.get(self.hit_mapping().get(severity.title(), "Low")),
208
+ plugin_name=cwe,
209
+ plugin_id=cwe,
210
+ plugin_text=description,
211
+ asset_identifier=hostname,
212
+ control_labels=[],
176
213
  )
177
214
 
178
215
  def get_asset(self, hostname: str) -> Optional[Asset]:
@@ -214,4 +251,10 @@ class Veracode(FlatFileImporter):
214
251
  "2": "low",
215
252
  "1": "low",
216
253
  "0": "info",
254
+ 5: "Critical",
255
+ 4: "High",
256
+ 3: "Medium",
257
+ 2: "Low",
258
+ 1: "Low",
259
+ 0: "Low",
217
260
  }
@@ -75,11 +75,10 @@ class User(RegScaleModel):
75
75
  :param str v: homePageUrl value
76
76
  :return: The homePageUrl if the RegScale version is compatible, None otherwise
77
77
  """
78
- from packaging.version import Version
78
+ from regscale.utils.version import RegscaleVersion
79
79
 
80
- regscale_version = cls._get_api_handler().regscale_version
81
-
82
- if len(regscale_version) >= 10 or Version(regscale_version) >= Version("6.14.0.0"):
80
+ rv = RegscaleVersion()
81
+ if rv.meets_minimum_version("6.14.0.0"):
83
82
  return v
84
83
  else:
85
84
  return None
regscale/utils/version.py CHANGED
@@ -2,13 +2,11 @@
2
2
 
3
3
  import logging
4
4
  import re
5
- from typing import Optional
6
5
  from functools import lru_cache
7
6
 
8
7
  from packaging.version import Version
9
8
 
10
9
  from regscale.core.app.utils.api_handler import APIHandler
11
- from regscale.utils.decorators import classproperty
12
10
 
13
11
  logger = logging.getLogger(__name__)
14
12
 
@@ -32,15 +30,15 @@ class RegscaleVersion:
32
30
  try:
33
31
  api_handler = APIHandler()
34
32
  response = api_handler.get("/assets/json/version.json")
35
- if response.status_code == 200:
33
+ if response.ok and response.status_code == 200:
36
34
  version_data = response.json()
37
35
  return version_data.get("version", "Unknown")
38
36
  else:
39
37
  logger.error(f"Failed to fetch version. Status code: {response.status_code}")
40
- return "dev"
38
+ return "Unknown"
41
39
  except Exception as e:
42
40
  logger.error(f"Error fetching version: {e}", exc_info=True)
43
- return "dev"
41
+ return "Unknown"
44
42
 
45
43
  @staticmethod
46
44
  def is_valid_version(version: str) -> bool:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: regscale-cli
3
- Version: 6.16.2.0
3
+ Version: 6.16.3.0
4
4
  Summary: Command Line Interface (CLI) for bulk processing/loading data into RegScale
5
5
  Home-page: https://github.com/RegScale/regscale-cli
6
6
  Author: Travis Howerton
@@ -1,4 +1,4 @@
1
- regscale/__init__.py,sha256=XD37lWEa0uj7RqQy4EgEbfMdhicQo2sDfeBDyyspRf4,25
1
+ regscale/__init__.py,sha256=jJ-ZEy_438JmVlyusriDiBL0lTIAVFQSRZYNzLmelSA,25
2
2
  regscale/regscale.py,sha256=kztX3Opi2ERFo3PVAE8ZC9fqzyOwHO3jYuNo6VdCRLM,30730
3
3
  regscale/airflow/__init__.py,sha256=yMwN0Bz4JbM0nl5qY_hPegxo_O2ilhTOL9PY5Njhn-s,270
4
4
  regscale/airflow/click_dags.py,sha256=H3SUR5jkvInNMv1gu-VG-Ja_H-kH145CpQYNalWNAbE,4520
@@ -54,7 +54,7 @@ regscale/core/app/internal/poam_editor.py,sha256=3PtpSMpV7bqKFuTHD2ACYcTyB3EEtTR
54
54
  regscale/core/app/internal/workflow.py,sha256=SpgYk1QyzdilVLOK1fFzaKhdLspumaugf5VezgboxhQ,4007
55
55
  regscale/core/app/utils/XMLIR.py,sha256=M_RrCsbjznihatkucCKw6dPgHTPQczXyqIdUXWhuCLI,8328
56
56
  regscale/core/app/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- regscale/core/app/utils/api_handler.py,sha256=7StrhhVgTtG6AbA7VvKfZ21V_mQQ6MmyGnF8i11FnPI,12189
57
+ regscale/core/app/utils/api_handler.py,sha256=T1meKw6Yi3ZAgRbQ1xuKDVh9Q9B8mbMqqN_LrSwIlAM,11765
58
58
  regscale/core/app/utils/app_utils.py,sha256=PnZeSU3AJqqe4NtdqABYowH1c3emiPSGDgRUdVp1kDc,36246
59
59
  regscale/core/app/utils/file_utils.py,sha256=URKWVEiR9aFnwoW3-Io7R22tBVeROTC3sX1wOZuhqXw,8912
60
60
  regscale/core/app/utils/parser_utils.py,sha256=aBEgcFwbJMD-ARf3wzf-tyWwR6NHvzEcdYcPMm8hGqo,2533
@@ -109,13 +109,13 @@ regscale/exceptions/validation_exception.py,sha256=_DW_GARtPr_Dyy8tolnvC_AYsHRsU
109
109
  regscale/integrations/__init__.py,sha256=Sqthp3Jggo7co_go380cLn3OAb0cHwqL609_4QJSFBY,58
110
110
  regscale/integrations/integration_override.py,sha256=PH7t_bf-RCe_it3FJ61tlKX5UghqHuSEQNJWDfCamAg,5480
111
111
  regscale/integrations/jsonl_scanner_integration.py,sha256=ixHAyTpevqusMpp2LS4vkATUbrCKvG4fSqu8VYOh254,38064
112
- regscale/integrations/scanner_integration.py,sha256=AEBGdDyzIMavbg1vJm0khd3Kb12anlkzBv_226xV-KA,127632
112
+ regscale/integrations/scanner_integration.py,sha256=8hikqPvcjPSIiuiVQC7s0goXsi-1FFtc3dokTMs3QV8,129339
113
113
  regscale/integrations/variables.py,sha256=_knfoweXyvarsDGijvpsy87tXAXIijKGRXk9Hw5gGlQ,1904
114
114
  regscale/integrations/commercial/__init__.py,sha256=bRSeNMGQorH-A7Pp6U62ll92WbVG8WTyBv2Lp4jlkBw,13160
115
115
  regscale/integrations/commercial/ad.py,sha256=YXSmK8vRf6yi2GnREGa5GrE6GelhFrLj44SY8AO1pK0,15509
116
116
  regscale/integrations/commercial/burp.py,sha256=5hK4bVivfnP1H0UnBdTp_A4WfpCgIn2bsjSQ57JF7WQ,2522
117
117
  regscale/integrations/commercial/cpe.py,sha256=eXZeDXicnp1yYgKuyKcthQUYxXi2Pgc__UD8lUqr5H0,4924
118
- regscale/integrations/commercial/crowdstrike.py,sha256=3RIF4ISM3PuBufXO9bJ-41ByslMFLe5GKe9TayRR_mU,40254
118
+ regscale/integrations/commercial/crowdstrike.py,sha256=6x7_GlYDRCZvPZwqgrDT5KMnXCa6H4RKO-FNkiYxHgU,40194
119
119
  regscale/integrations/commercial/defender.py,sha256=SA3cn4tdRcD6ZjbCZgULl3ts2fAUqnf27RkdDo7ULGM,65920
120
120
  regscale/integrations/commercial/dependabot.py,sha256=V4VbHbwrxHfe7eCilJ7U_MBeIO6X3wetGfIo2DJYe_c,7793
121
121
  regscale/integrations/commercial/ecr.py,sha256=47iCigssDANlfHYGznU4rfOq6O-1QMGOuP8lBmn7Df0,2693
@@ -125,14 +125,14 @@ regscale/integrations/commercial/jira.py,sha256=1fBF3y4kotbD9hFtqZxlBIb4Q6iNkhIK
125
125
  regscale/integrations/commercial/nexpose.py,sha256=lqPw9yk7ywHDoLwPeXKSz9DaLyVzOQIKOotCgayVTNE,2853
126
126
  regscale/integrations/commercial/okta.py,sha256=VNwE848xiBxkha4DibkhLJN-fi0T8rLMd30PPAmRjpk,30837
127
127
  regscale/integrations/commercial/prisma.py,sha256=shr71NkaSfcg2m-Ak6EVV9ozAFPibiOoehEty24MtyA,2841
128
- regscale/integrations/commercial/qualys.py,sha256=NV2j8NMTT0VTdn5yANq5p29mmDNImJucA9iRiNawfxM,53967
128
+ regscale/integrations/commercial/qualys.py,sha256=cMx39E_u0Y-2j6KZO_vknmpJ34cHnoOdDzWxmYEc-JU,53151
129
129
  regscale/integrations/commercial/salesforce.py,sha256=vvXWlXxhJMQj45tU7wz7o4YbkhqjPlaMx_6SWYkI3Bs,36671
130
- regscale/integrations/commercial/servicenow.py,sha256=jcZIaf3OHkFKzdYX6LTc57z9FFmWgWA8omP6ksdwRi0,63979
131
- regscale/integrations/commercial/snyk.py,sha256=TLo6FPLQoSoPJI2J-UfsVMPMTL9udKd1pJx6h3z4RTQ,2796
130
+ regscale/integrations/commercial/servicenow.py,sha256=nUVZwt8-G1rQhwACX6i2BKIAjkMtd46uskBznxgOOsA,64014
131
+ regscale/integrations/commercial/snyk.py,sha256=j2cN90BzzcZDeORDcnMbuQwL3__FRd-X5JnH3ZpMKJE,2816
132
132
  regscale/integrations/commercial/sonarcloud.py,sha256=_E4DuKRZUqXNNPsxS3UJ3q6llVu-5sfw5pTHxe_UMk0,9821
133
133
  regscale/integrations/commercial/sqlserver.py,sha256=PcDLmsZ9xU5NlFpwPZyMhhxCgX4JK2Ztn2S6kCG4mws,11614
134
134
  regscale/integrations/commercial/synqly_jira.py,sha256=dmw3m_lKtii2OpVcrmtNJ-ClUNThV8-1IOrWyE2RQLE,33002
135
- regscale/integrations/commercial/veracode.py,sha256=ZEK-CW5nGIYl5bydSxssCpAZYeBLgmSZkrU-ilyRpI0,2910
135
+ regscale/integrations/commercial/veracode.py,sha256=SYJEXRgExwVPTWBcqap2jcsdggp-4TvdETLrSCVEOvo,2919
136
136
  regscale/integrations/commercial/xray.py,sha256=egJO6fCQ8jhSpyu6Gj2xczTtUMEiSAJKDz05dT-YZ6M,2734
137
137
  regscale/integrations/commercial/amazon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  regscale/integrations/commercial/amazon/common.py,sha256=8ITptlZjJD720_DGfPqmEXeNF4GbAseq8o0s80E4CyY,3252
@@ -201,7 +201,7 @@ regscale/integrations/commercial/stigv2/click_commands.py,sha256=8cVuq_KXnOCktIm
201
201
  regscale/integrations/commercial/stigv2/stig_integration.py,sha256=pnR0RMLSJYclJ5DHm-EQJ0Qncc4RJE0dkZhD5W7KfG8,9169
202
202
  regscale/integrations/commercial/synqly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
203
  regscale/integrations/commercial/synqly/assets.py,sha256=GcDGe6XvumaAYyo5Af8Ccmg1DzLfgnNFGdsyRdKsiEs,1412
204
- regscale/integrations/commercial/synqly/ticketing.py,sha256=8kzFC2yFcQKDQKJhTXzXP0MZI05ZFNxL50jp70nVBxg,3818
204
+ regscale/integrations/commercial/synqly/ticketing.py,sha256=6UhmDa0l-GYTJAyc93HiaS-maCVQD9UtDcGIjQ9n270,4909
205
205
  regscale/integrations/commercial/synqly/vulnerabilities.py,sha256=B8GwfKVDdoOIikjZO-4KqDNf-ApXlcJNkwmno0FjDOQ,7842
206
206
  regscale/integrations/commercial/tenablev2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
207
  regscale/integrations/commercial/tenablev2/authenticate.py,sha256=ZFtyw26zjt1nky15PSP0Dl1-0WXEydU9s3UaS8oQaZ8,751
@@ -295,7 +295,7 @@ regscale/models/integration_models/azure_alerts.py,sha256=2etrpvcxa7jVQrc98bJlVG
295
295
  regscale/models/integration_models/base64.py,sha256=sxV6O5qY1_TstJENX5jBPsSdQwmA83-NNhgJFunXiZE,570
296
296
  regscale/models/integration_models/burp.py,sha256=hPQkmmUdC84MBFTE2Di5NvjbGz1ssISSkZdDaVi-ZoQ,16941
297
297
  regscale/models/integration_models/burp_models.py,sha256=UytDTAcCaxyu-knFkm_mEUH6UmWK3OTXKSC9Sc6OjVs,3669
298
- regscale/models/integration_models/cisa_kev_data.json,sha256=sGmp3Hsznxw7hLBrlem6241wdTiyQV3mFec1pjUJLcc,1147593
298
+ regscale/models/integration_models/cisa_kev_data.json,sha256=4ucPXc0vgND9_2JgV_17n2vL97bc0dE0VOHmOki7R9A,1151325
299
299
  regscale/models/integration_models/defender_data.py,sha256=jsAcjKxiGmumGerj7xSWkFd6r__YpuKDnYX5o7xHDiE,2844
300
300
  regscale/models/integration_models/defenderimport.py,sha256=OFwEH0Xu-HFLIZJZ8hP60Ov3lS8RR7KHEsw4wI8QnoE,5766
301
301
  regscale/models/integration_models/drf.py,sha256=Aq7AdLa_CH97NrnR-CxaFI22JjVN9uCxVN7Z-BBUaNU,18896
@@ -307,9 +307,9 @@ regscale/models/integration_models/prisma.py,sha256=83LeS96rUgaZvPzl6ei_FWjTFBoj
307
307
  regscale/models/integration_models/qualys.py,sha256=PJr9iX7IXH_3dQNzzpf8cmJhIdy_tP3Z8ouVmrKOK2I,26999
308
308
  regscale/models/integration_models/qualys_scanner.py,sha256=6rAeCR9qI10MM_LWtZtOhWaT6mERWtII2IxxyvQhfKw,6453
309
309
  regscale/models/integration_models/send_reminders.py,sha256=Zon6fyV0nODp8l5KuABe97Rz8l37o4biRb5iML7GHiE,26137
310
- regscale/models/integration_models/snyk.py,sha256=F2URtePITptqDsqJyo8BnZ4IVBh9ylj0btwgv6W32i4,5810
310
+ regscale/models/integration_models/snyk.py,sha256=Wk04Dbz67s2uniWkfllRHhlEBrRYiZq5CRwkOpDyHls,11524
311
311
  regscale/models/integration_models/trivy_import.py,sha256=R6aZXUaNKf5Gdo1kNxIKM-HMW95XDWVCG_gMrzDYNuQ,9210
312
- regscale/models/integration_models/veracode.py,sha256=n5e88BaewUVWr2xp8p3EMf5NL-9f8__l4hwBGtSesTY,8365
312
+ regscale/models/integration_models/veracode.py,sha256=qcNllrTstGshpTaWDFm0Z-XYbP-mSVMWWiGoq5karO0,10431
313
313
  regscale/models/integration_models/xray.py,sha256=rnDF9kOAYMhTO9xEi1bwmIrQvfTCQAW6ENNp3Hsfaes,5848
314
314
  regscale/models/integration_models/amazon_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
315
  regscale/models/integration_models/amazon_models/inspector.py,sha256=AcV_Nk4ZJMJqmRMpmpbu8LDqp4F2D6GD_IcKsh9MYcs,12915
@@ -317,11 +317,11 @@ regscale/models/integration_models/amazon_models/inspector_scan.py,sha256=A1uaOv
317
317
  regscale/models/integration_models/ecr_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
318
318
  regscale/models/integration_models/ecr_models/data.py,sha256=l28DCidXar1JygYBQZL9MYenQA9N-Cx3Skf51IOjZcw,1017
319
319
  regscale/models/integration_models/ecr_models/ecr.py,sha256=-s_5mj4BVKImrvfMaOJLT4qc5EqTCbv8qM4uJiH_nKc,9502
320
- regscale/models/integration_models/flat_file_importer/__init__.py,sha256=pA7hnME_-qJX6aR8yVXijpaDeXXhj9SLXqrL3FHxFvg,43288
320
+ regscale/models/integration_models/flat_file_importer/__init__.py,sha256=Mq4V3tRa3OK4PBJMyU-nZrk8vsnk1_ZkmXEJWohou_I,44271
321
321
  regscale/models/integration_models/sbom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
322
322
  regscale/models/integration_models/sbom/cyclone_dx.py,sha256=0pFR0BWBrF5c8_cC_8mj2MXvNOMHOdHbBYXvTVfFAh8,4058
323
323
  regscale/models/integration_models/synqly_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
324
- regscale/models/integration_models/synqly_models/capabilities.json,sha256=28tfla4QiZOBj64e99krCv9gxFN8RdFpDeipoinTTQc,217847
324
+ regscale/models/integration_models/synqly_models/capabilities.json,sha256=mQHEMe9WyyJBHEWvidOBjw9Hf0VgCszyDeNv6i0Bs-4,232304
325
325
  regscale/models/integration_models/synqly_models/connector_types.py,sha256=8nxptkTexpskySnmL0obNAff_iu_fx6tJ7i1-4hJvao,461
326
326
  regscale/models/integration_models/synqly_models/ocsf_mapper.py,sha256=vrtto3-VxbEtK5JSHNluypLm8yvmT_IDupyiJIeFedY,14535
327
327
  regscale/models/integration_models/synqly_models/param.py,sha256=45zgYUV4U9Ia8-CdIb4TlE3vfDMMtbfA1y5LOiznnH8,2645
@@ -412,7 +412,7 @@ regscale/models/regscale_models/tag.py,sha256=D4n5ABDzjI7u1ukjRyHgmgyVd8iNTNJlQr
412
412
  regscale/models/regscale_models/tag_mapping.py,sha256=QtafVsWjpBR8BAxRhabk3FL3E4WI5OdCv95fuvNOrZs,657
413
413
  regscale/models/regscale_models/task.py,sha256=eKVdR89Gb6M9E2plhK4fru8teQI3zPJpgtJ0f43FOrY,4919
414
414
  regscale/models/regscale_models/threat.py,sha256=4TNZcRnTgmlDwBsYu5Pbh9GRd8ZWAtqqr0Xph3uPNAA,7255
415
- regscale/models/regscale_models/user.py,sha256=o-1Ghx0pm2DYLCDyOryJmDrMlTCyrsN0opr89rQ09vA,6560
415
+ regscale/models/regscale_models/user.py,sha256=9kqKKr7KRKylIcqmh8z3q5kqpLqOfTHrPYyrlVqFid8,6493
416
416
  regscale/models/regscale_models/user_group.py,sha256=6j-lkhu21zNukof804Dsk7eHPtEwD7779yInWm6lHTs,1860
417
417
  regscale/models/regscale_models/vulnerability.py,sha256=VKgWMVvAQ74Sq46myYsivGfIeW63dHq3bv3cRCkDcbg,10960
418
418
  regscale/models/regscale_models/vulnerability_mapping.py,sha256=cq44xkkCH7rfp0BJxavr4DLiEAHouyyPmi5EaizH6NI,6261
@@ -437,7 +437,7 @@ regscale/utils/numbers.py,sha256=0LkZvewuKXogk6_oWF90OAoGIuzK1fjWZ4gRCC9_TlQ,301
437
437
  regscale/utils/shell.py,sha256=H9Zzwt3zxyzWmfiH3tVrcIoAcEHtF_pXzM5ERd7PAGc,4176
438
438
  regscale/utils/string.py,sha256=3TYMjGHr0T98SswyGl6f54jXKB_-zlW5it9ZxTOm6bg,3918
439
439
  regscale/utils/synqly_utils.py,sha256=DjkdAxdUJBOU5YfAJ7pFFNBPSP37Gs9NQS10xduaYmA,6324
440
- regscale/utils/version.py,sha256=KMmQfUe9kCAbxSvT5ERJB7H3nBU6-9ZAmeUCLYYjOBc,4321
440
+ regscale/utils/version.py,sha256=bOH1vlvOEAt1f-fzzFxtZrg3VcnqL5SA4ud1TjZVQGU,4265
441
441
  regscale/utils/threading/__init__.py,sha256=xdaPVA-vab5_grbx_ESD9k_i-FGt5xb9pBJd2xvkExU,254
442
442
  regscale/utils/threading/threadhandler.py,sha256=W6Ujc-kf0vOhlQgsMb7MRFImtBuWQ-IsOiCunRAqCuY,4709
443
443
  regscale/utils/threading/threadsafe_counter.py,sha256=Dwt-jt4nN-ApMgpxONM7RFll6FU4hMCeZCW54rjDPjs,1037
@@ -479,9 +479,9 @@ tests/regscale/models/test_regscale_model.py,sha256=ZsrEZkC4EtdIsoQuayn1xv2gEGcV
479
479
  tests/regscale/models/test_report.py,sha256=eiSvS_zS0aVeL0HBvtmHVvEzcfF9ZFVn2twj5g8KttY,970
480
480
  tests/regscale/models/test_tenable_integrations.py,sha256=PNJC2Zu6lv1xj7y6e1yOsz5FktSU3PRKb5x3n5YG3w0,4072
481
481
  tests/regscale/models/test_user_model.py,sha256=e9olv28qBApgnvK6hFHOgXjUC-pkaV8aGDirEIWASL4,4427
482
- regscale_cli-6.16.2.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
483
- regscale_cli-6.16.2.0.dist-info/METADATA,sha256=AzR8rsJ0selaUTdj2JdFYuQXpO_bHipH6P-SKeRUin0,30913
484
- regscale_cli-6.16.2.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
485
- regscale_cli-6.16.2.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
486
- regscale_cli-6.16.2.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
487
- regscale_cli-6.16.2.0.dist-info/RECORD,,
482
+ regscale_cli-6.16.3.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
483
+ regscale_cli-6.16.3.0.dist-info/METADATA,sha256=3Xut5oxIwSOAFXsP1ORtk4it41rgZoc1nCcBHTQKgzY,30913
484
+ regscale_cli-6.16.3.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
485
+ regscale_cli-6.16.3.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
486
+ regscale_cli-6.16.3.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
487
+ regscale_cli-6.16.3.0.dist-info/RECORD,,