regscale-cli 6.20.4.1__py3-none-any.whl → 6.20.5.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.
- regscale/__init__.py +1 -1
- regscale/core/app/internal/model_editor.py +3 -3
- regscale/core/app/utils/regscale_utils.py +37 -0
- regscale/core/utils/date.py +26 -3
- regscale/integrations/commercial/defender.py +3 -0
- regscale/integrations/commercial/qualys/__init__.py +40 -14
- regscale/integrations/commercial/qualys/containers.py +324 -0
- regscale/integrations/commercial/qualys/scanner.py +203 -8
- regscale/integrations/commercial/synqly/edr.py +10 -0
- regscale/integrations/commercial/wizv2/click.py +2 -2
- regscale/integrations/commercial/wizv2/constants.py +13 -0
- regscale/integrations/commercial/wizv2/issue.py +3 -2
- regscale/integrations/commercial/wizv2/scanner.py +5 -1
- regscale/integrations/commercial/wizv2/utils.py +118 -72
- regscale/integrations/public/fedramp/fedramp_cis_crm.py +98 -20
- regscale/models/integration_models/cisa_kev_data.json +140 -3
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/models/regscale_models/catalog.py +16 -0
- regscale/models/regscale_models/file.py +2 -1
- regscale/models/regscale_models/form_field_value.py +59 -1
- regscale/models/regscale_models/issue.py +47 -0
- regscale/models/regscale_models/organization.py +30 -0
- regscale/models/regscale_models/regscale_model.py +13 -5
- regscale/models/regscale_models/security_control.py +47 -0
- regscale/models/regscale_models/security_plan.py +32 -0
- {regscale_cli-6.20.4.1.dist-info → regscale_cli-6.20.5.0.dist-info}/METADATA +1 -1
- {regscale_cli-6.20.4.1.dist-info → regscale_cli-6.20.5.0.dist-info}/RECORD +33 -31
- tests/fixtures/test_fixture.py +33 -4
- tests/regscale/core/test_app.py +53 -32
- {regscale_cli-6.20.4.1.dist-info → regscale_cli-6.20.5.0.dist-info}/LICENSE +0 -0
- {regscale_cli-6.20.4.1.dist-info → regscale_cli-6.20.5.0.dist-info}/WHEEL +0 -0
- {regscale_cli-6.20.4.1.dist-info → regscale_cli-6.20.5.0.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.20.4.1.dist-info → regscale_cli-6.20.5.0.dist-info}/top_level.txt +0 -0
|
@@ -259,3 +259,19 @@ class Catalog(RegScaleModel):
|
|
|
259
259
|
return response
|
|
260
260
|
cls.log_response_error(response, suppress_error=True)
|
|
261
261
|
return response
|
|
262
|
+
|
|
263
|
+
@classmethod
|
|
264
|
+
def find_by_guid(cls, guid: str) -> Optional["Catalog"]:
|
|
265
|
+
"""
|
|
266
|
+
Find a catalog by its GUID.
|
|
267
|
+
|
|
268
|
+
:param str guid: The GUID of the catalog
|
|
269
|
+
:return: The catalog object or None if not found
|
|
270
|
+
:rtype: Optional["Catalog"]
|
|
271
|
+
"""
|
|
272
|
+
endpoint = cls.get_endpoint("find_by_guid").format(model_slug=cls.get_module_slug(), strID=guid)
|
|
273
|
+
response = cls._get_api_handler().get(endpoint)
|
|
274
|
+
|
|
275
|
+
if response and response.ok and response.status_code not in [204, 404]:
|
|
276
|
+
return cls.model_validate(response.json())
|
|
277
|
+
return None
|
|
@@ -188,10 +188,11 @@ class File(BaseModel):
|
|
|
188
188
|
file_res = api.post(
|
|
189
189
|
url=f"{api.config['domain']}/api/files",
|
|
190
190
|
headers=file_headers,
|
|
191
|
-
json=new_file.
|
|
191
|
+
json=new_file.model_dump(),
|
|
192
192
|
)
|
|
193
193
|
if file_res.ok and return_object:
|
|
194
194
|
return File(**file_res.json()).model_dump()
|
|
195
|
+
File.create_tag_mappings(file_res)
|
|
195
196
|
else:
|
|
196
197
|
return False
|
|
197
198
|
return file_res.ok
|
|
@@ -8,6 +8,7 @@ from typing import Any, List, Optional, Dict
|
|
|
8
8
|
from pydantic import ConfigDict, Field
|
|
9
9
|
|
|
10
10
|
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
11
|
+
from regscale.models.regscale_models.module import Module
|
|
11
12
|
|
|
12
13
|
logger = logging.getLogger(__name__)
|
|
13
14
|
|
|
@@ -79,7 +80,7 @@ class FormFieldValue(RegScaleModel):
|
|
|
79
80
|
Get custom data for a record
|
|
80
81
|
:param record_id: record id
|
|
81
82
|
:param module_name: module name
|
|
82
|
-
:param form_id: form id
|
|
83
|
+
:param form_id: form tab id
|
|
83
84
|
:return: list of custom fields
|
|
84
85
|
"""
|
|
85
86
|
result = cls._get_api_handler().get(
|
|
@@ -92,3 +93,60 @@ class FormFieldValue(RegScaleModel):
|
|
|
92
93
|
else:
|
|
93
94
|
cls.log_response_error(response=result)
|
|
94
95
|
return []
|
|
96
|
+
|
|
97
|
+
@staticmethod
|
|
98
|
+
def check_custom_fields(fields_list: list, module_name: str, tab_name: str) -> dict:
|
|
99
|
+
"""
|
|
100
|
+
Check if the custom fields exist and
|
|
101
|
+
create if not
|
|
102
|
+
|
|
103
|
+
:param list fields_list: list list of custom fields
|
|
104
|
+
:param str module_name: name of the module in RegScale
|
|
105
|
+
:param str tab_name: name of the tab in the module
|
|
106
|
+
:return: map of custom fields names to ids
|
|
107
|
+
:return_type: dict
|
|
108
|
+
"""
|
|
109
|
+
# Check the custom fields exist in RegScale
|
|
110
|
+
custom_form_fields = Module.get_form_fields_by_tab_id(module_name=module_name, tab_name=tab_name)
|
|
111
|
+
if custom_form_fields:
|
|
112
|
+
custom_form_field_id_dict = {cf.regScaleName: cf.id for cf in custom_form_fields}
|
|
113
|
+
else:
|
|
114
|
+
custom_form_field_id_dict = {}
|
|
115
|
+
missing_custom_fields = []
|
|
116
|
+
for field in fields_list:
|
|
117
|
+
if field not in custom_form_field_id_dict.keys():
|
|
118
|
+
missing_custom_fields.append(field)
|
|
119
|
+
|
|
120
|
+
if len(missing_custom_fields) > 0:
|
|
121
|
+
logger.error(
|
|
122
|
+
f"The following custom fields are missing:\n \
|
|
123
|
+
{missing_custom_fields}\n \
|
|
124
|
+
Load these custom fields in RegScale \
|
|
125
|
+
using the file: security_plan_custom_fields.json\
|
|
126
|
+
and run this command again"
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
return custom_form_field_id_dict
|
|
130
|
+
|
|
131
|
+
@staticmethod
|
|
132
|
+
def save_custom_fields(form_field_values: list):
|
|
133
|
+
"""
|
|
134
|
+
Populate Custom Fields form a list of dict of
|
|
135
|
+
record_id, form_field_id, and field_value
|
|
136
|
+
|
|
137
|
+
:param list form_field_values: list of custom form
|
|
138
|
+
fields, values, and the record to which to post
|
|
139
|
+
:return: None
|
|
140
|
+
"""
|
|
141
|
+
logger.debug("Creating custom form field values...")
|
|
142
|
+
# FormFieldValue class will throw errors if encountered
|
|
143
|
+
for form_field_value in form_field_values:
|
|
144
|
+
data = [
|
|
145
|
+
FormFieldValue(
|
|
146
|
+
formFieldId=form_field_value["form_field_id"], fieldValue=form_field_value["field_value"]
|
|
147
|
+
),
|
|
148
|
+
]
|
|
149
|
+
if data:
|
|
150
|
+
FormFieldValue.save_custom_data(
|
|
151
|
+
record_id=form_field_value["record_id"], module_name="securityplans", data=data
|
|
152
|
+
)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
"""Model for a RegScale Issue"""
|
|
4
|
+
import datetime
|
|
4
5
|
from collections import defaultdict
|
|
5
6
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
|
6
7
|
from enum import Enum
|
|
@@ -387,6 +388,52 @@ class Issue(RegScaleModel):
|
|
|
387
388
|
return "High"
|
|
388
389
|
return ""
|
|
389
390
|
|
|
391
|
+
@staticmethod
|
|
392
|
+
def get_due_date(
|
|
393
|
+
severity: Union[IssueSeverity, str],
|
|
394
|
+
config: dict,
|
|
395
|
+
key: str,
|
|
396
|
+
start_date: Union[str, datetime.datetime, None] = None,
|
|
397
|
+
dt_format: Optional[str] = "%Y-%m-%dT%H:%M:%S",
|
|
398
|
+
) -> str:
|
|
399
|
+
"""
|
|
400
|
+
Function to return due date based on the severity of the issue; the values are in the init.yaml
|
|
401
|
+
and if not, it will default to 60 days from the current date.
|
|
402
|
+
|
|
403
|
+
:param Union[IssueSeverity, str] severity: Severity of the issue, can be an IssueSeverity enum or a string
|
|
404
|
+
:param dict config: Application config
|
|
405
|
+
:param str key: The key to use for init.yaml from the issues section to determine the due date
|
|
406
|
+
:param Union[str, datetime.datetime, None] start_date: The date to start the due date calculation from, defaults to current date
|
|
407
|
+
:param Optional[str] dt_format: String of the date format to use, defaults to "%Y-%m-%dT%H:%M:%S"
|
|
408
|
+
:return: Due date for the issue
|
|
409
|
+
:rtype: str
|
|
410
|
+
"""
|
|
411
|
+
if isinstance(start_date, str):
|
|
412
|
+
from regscale.core.utils.date import datetime_obj
|
|
413
|
+
|
|
414
|
+
start_date = datetime_obj(start_date)
|
|
415
|
+
elif start_date is None:
|
|
416
|
+
start_date = datetime.datetime.now()
|
|
417
|
+
|
|
418
|
+
# if the severity is an enum, get the value
|
|
419
|
+
if isinstance(severity, IssueSeverity):
|
|
420
|
+
severity = severity.value
|
|
421
|
+
elif severity.lower() not in [severity.value.lower() for severity in IssueSeverity]:
|
|
422
|
+
severity = IssueSeverity.NotAssigned.value
|
|
423
|
+
|
|
424
|
+
if severity == IssueSeverity.Critical.value:
|
|
425
|
+
days = config["issues"].get(key, {}).get("critical", 0)
|
|
426
|
+
elif severity == IssueSeverity.High.value:
|
|
427
|
+
days = config["issues"].get(key, {}).get("high", 0)
|
|
428
|
+
elif severity == IssueSeverity.Moderate.value:
|
|
429
|
+
days = config["issues"].get(key, {}).get("moderate", 0) or config["issues"].get(key, {}).get("medium", 0)
|
|
430
|
+
elif severity == IssueSeverity.Low.value:
|
|
431
|
+
days = config["issues"].get(key, {}).get("low", 0)
|
|
432
|
+
else:
|
|
433
|
+
days = 60
|
|
434
|
+
due_date = start_date + datetime.timedelta(days=days)
|
|
435
|
+
return due_date.strftime(dt_format)
|
|
436
|
+
|
|
390
437
|
@staticmethod
|
|
391
438
|
def assign_severity(value: Optional[Any] = None) -> str:
|
|
392
439
|
"""
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""Organization model for RegScale."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from pydantic import ConfigDict
|
|
6
|
+
|
|
7
|
+
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Organization(RegScaleModel):
|
|
11
|
+
"""Data Model for Organizations"""
|
|
12
|
+
|
|
13
|
+
_module_slug = "organizations"
|
|
14
|
+
|
|
15
|
+
id: int = 0
|
|
16
|
+
name: Optional[str] = ""
|
|
17
|
+
description: Optional[str] = ""
|
|
18
|
+
status: Optional[str] = "Active"
|
|
19
|
+
|
|
20
|
+
@staticmethod
|
|
21
|
+
def _get_additional_endpoints() -> dict:
|
|
22
|
+
"""
|
|
23
|
+
Get additional endpoints for the Facility model.
|
|
24
|
+
|
|
25
|
+
:return: A dictionary of additional endpoints
|
|
26
|
+
:rtype: dict
|
|
27
|
+
"""
|
|
28
|
+
return ConfigDict(
|
|
29
|
+
get_list="/api/{model_slug}/getList",
|
|
30
|
+
)
|
|
@@ -410,12 +410,12 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
410
410
|
"""
|
|
411
411
|
hidden_fields = set(
|
|
412
412
|
attribute_name
|
|
413
|
-
for attribute_name, model_field in self.model_fields.items()
|
|
413
|
+
for attribute_name, model_field in self.__class__.model_fields.items()
|
|
414
414
|
if model_field.from_field("hidden") == "hidden"
|
|
415
415
|
)
|
|
416
416
|
unset_fields = set(
|
|
417
417
|
attribute_name
|
|
418
|
-
for attribute_name, model_field in self.model_fields.items()
|
|
418
|
+
for attribute_name, model_field in self.__class__.model_fields.items()
|
|
419
419
|
if getattr(self, attribute_name, None) is None
|
|
420
420
|
)
|
|
421
421
|
excluded_fields = hidden_fields.union(unset_fields)
|
|
@@ -963,24 +963,32 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
963
963
|
return items
|
|
964
964
|
|
|
965
965
|
@classmethod
|
|
966
|
-
def get_field_names(cls) -> List[str]:
|
|
966
|
+
def get_field_names(cls, use_aliases: bool = False) -> List[str]:
|
|
967
967
|
"""
|
|
968
968
|
Get the field names for the Asset model.
|
|
969
969
|
|
|
970
|
+
:param bool use_aliases: Whether to use aliases for the field names, defaults to False
|
|
970
971
|
:return: List of field names
|
|
971
972
|
:rtype: List[str]
|
|
972
973
|
"""
|
|
974
|
+
if use_aliases:
|
|
975
|
+
return [val.alias or key for key, val in cls.model_fields.items() if not key.startswith("_")]
|
|
973
976
|
return [x for x in get_type_hints(cls).keys() if not x.startswith("_")]
|
|
974
977
|
|
|
975
978
|
@classmethod
|
|
976
|
-
def build_graphql_fields(cls) -> str:
|
|
979
|
+
def build_graphql_fields(cls, use_aliases: bool = False) -> str:
|
|
977
980
|
"""
|
|
978
981
|
Dynamically builds a GraphQL query for a given Pydantic model class.
|
|
979
982
|
|
|
983
|
+
:param bool use_aliases: Whether to use aliases for the field names, defaults to False
|
|
980
984
|
:return: A string representing the GraphQL query
|
|
981
985
|
:rtype: str
|
|
982
986
|
"""
|
|
983
|
-
return "\n".join(
|
|
987
|
+
return "\n".join(
|
|
988
|
+
x
|
|
989
|
+
for x in cls.get_field_names(use_aliases=use_aliases)
|
|
990
|
+
if x not in cls._exclude_graphql_fields and x != "extra_data"
|
|
991
|
+
)
|
|
984
992
|
|
|
985
993
|
@classmethod
|
|
986
994
|
def get_by_parent(cls, parent_id: int, parent_module: str) -> List[T]:
|
|
@@ -24,8 +24,10 @@ class SecurityControl(RegScaleModel):
|
|
|
24
24
|
["controlId", "catalogueId"],
|
|
25
25
|
]
|
|
26
26
|
_parent_id_field = "catalogueId"
|
|
27
|
+
_exclude_graphql_fields = ["objectives", "tests", "parameters"]
|
|
27
28
|
|
|
28
29
|
id: int = 0
|
|
30
|
+
otherId: Optional[str] = None
|
|
29
31
|
isPublic: bool = True
|
|
30
32
|
uuid: Optional[str] = None
|
|
31
33
|
controlId: Optional[str] = None
|
|
@@ -130,3 +132,48 @@ class SecurityControl(RegScaleModel):
|
|
|
130
132
|
config = api.config
|
|
131
133
|
res = api.get(config["domain"] + f"/api/securitycontrols/findByUniqueId/{control_name}/{catalog_id}")
|
|
132
134
|
return SecurityControl(**res.json()) if res.status_code == 200 else None
|
|
135
|
+
|
|
136
|
+
@classmethod
|
|
137
|
+
def get_controls_by_parent_id_and_module(
|
|
138
|
+
cls, parent_id: int, parent_module: str, return_dicts: bool = False
|
|
139
|
+
) -> List["SecurityControl"]:
|
|
140
|
+
"""
|
|
141
|
+
Get a list of Security Controls by parent ID and module using GraphQL
|
|
142
|
+
|
|
143
|
+
:param int parent_id: The ID of the parent
|
|
144
|
+
:param str parent_module: The module of the parent
|
|
145
|
+
:param bool return_dicts: Whether to return the controls as a list of dicts, defaults to False
|
|
146
|
+
:return: A list of Security Controls
|
|
147
|
+
:rtype: List["SecurityControl"]
|
|
148
|
+
"""
|
|
149
|
+
query = f"""
|
|
150
|
+
query {{
|
|
151
|
+
controlImplementations(skip: 0, take: 50, where: {{
|
|
152
|
+
parentId: {{
|
|
153
|
+
eq: {parent_id}
|
|
154
|
+
}},
|
|
155
|
+
parentModule: {{
|
|
156
|
+
eq: "{parent_module}"
|
|
157
|
+
}}
|
|
158
|
+
control: {{
|
|
159
|
+
id: {{
|
|
160
|
+
gt: 0
|
|
161
|
+
}}
|
|
162
|
+
}}
|
|
163
|
+
}}) {{
|
|
164
|
+
items {{
|
|
165
|
+
control {{
|
|
166
|
+
{cls.build_graphql_fields(use_aliases=True)}
|
|
167
|
+
}}
|
|
168
|
+
}}
|
|
169
|
+
totalCount
|
|
170
|
+
pageInfo {{
|
|
171
|
+
hasNextPage
|
|
172
|
+
}}
|
|
173
|
+
}}
|
|
174
|
+
}}"""
|
|
175
|
+
data = cls._get_api_handler().graph(query=query)
|
|
176
|
+
controls = data.get("controlImplementations", {}).get("items", [])
|
|
177
|
+
if return_dicts:
|
|
178
|
+
return [control["control"] for control in controls if control.get("control")]
|
|
179
|
+
return [cls(**control["control"]) for control in controls if control.get("control")]
|
|
@@ -27,6 +27,7 @@ class SecurityPlan(RegScaleModel):
|
|
|
27
27
|
defaultAssessmentDays: int = 0
|
|
28
28
|
planInformationSystemSecurityOfficerId: Optional[str] = None
|
|
29
29
|
planAuthorizingOfficialId: Optional[str] = None
|
|
30
|
+
systemSecurityManagerId: Optional[str] = None
|
|
30
31
|
systemOwnerId: Optional[str] = None # this could be userID
|
|
31
32
|
otherIdentifier: Optional[str] = ""
|
|
32
33
|
confidentiality: str = ""
|
|
@@ -138,6 +139,8 @@ class SecurityPlan(RegScaleModel):
|
|
|
138
139
|
return ConfigDict( # type: ignore
|
|
139
140
|
get_control_implementations="/api/controlImplementation/getAllByPlan/{plan_id}",
|
|
140
141
|
mega_api="/api/{module_slug}/megaAPI/{intId}",
|
|
142
|
+
export_cis_crm="/api/{module_slug}/exportFedrampRev5CisCrm/{intId}",
|
|
143
|
+
list="/api/{module_slug}/getList",
|
|
141
144
|
)
|
|
142
145
|
|
|
143
146
|
@classmethod
|
|
@@ -156,6 +159,35 @@ class SecurityPlan(RegScaleModel):
|
|
|
156
159
|
return response.json()
|
|
157
160
|
return {}
|
|
158
161
|
|
|
162
|
+
@classmethod
|
|
163
|
+
def export_cis_crm(cls, ssp_id: int) -> dict:
|
|
164
|
+
"""
|
|
165
|
+
Export to a new CIS/CRM workbook with an existing SSP ID
|
|
166
|
+
|
|
167
|
+
:param int ssp_id: RegScale SSP ID
|
|
168
|
+
:return: A status message
|
|
169
|
+
:rtype: dict
|
|
170
|
+
"""
|
|
171
|
+
response = cls._get_api_handler().get(
|
|
172
|
+
endpoint=cls.get_endpoint("export_cis_crm").format(module_slug=cls._module_slug, intId=ssp_id)
|
|
173
|
+
)
|
|
174
|
+
if response.ok:
|
|
175
|
+
return response.json()
|
|
176
|
+
return {}
|
|
177
|
+
|
|
178
|
+
@classmethod
|
|
179
|
+
def get_list(cls) -> list:
|
|
180
|
+
"""
|
|
181
|
+
Get a list of objects.
|
|
182
|
+
|
|
183
|
+
:return: A list of objects
|
|
184
|
+
:rtype: list
|
|
185
|
+
"""
|
|
186
|
+
response = cls._get_api_handler().get(endpoint=cls.get_endpoint("list").format(module_slug=cls._module_slug))
|
|
187
|
+
if not response.raise_for_status():
|
|
188
|
+
return response.json()
|
|
189
|
+
return []
|
|
190
|
+
|
|
159
191
|
# Legacy code
|
|
160
192
|
def create_new_ssp(self, api: Api, return_id: Optional[bool] = False) -> Union[int, None, "SecurityPlan"]:
|
|
161
193
|
"""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
regscale/__init__.py,sha256=
|
|
1
|
+
regscale/__init__.py,sha256=NG2YqNT-SOqEul9gYB4T2_-wp5yQlbqTCwORHAiQc9E,25
|
|
2
2
|
regscale/regscale.py,sha256=2mNIkLGtQjIvl0m255iV20_3DK4oRSTlXYxe-8XQpeo,30764
|
|
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
|
|
@@ -49,7 +49,7 @@ regscale/core/app/internal/file_uploads.py,sha256=EfQ4ViJBHzU9bxnFunK3ahA6T9A6pn
|
|
|
49
49
|
regscale/core/app/internal/healthcheck.py,sha256=ef4Mwk19vi71bv-Xkny5_EGG1UXTbCO5dvEIzHyyfVA,2010
|
|
50
50
|
regscale/core/app/internal/login.py,sha256=GsFaBwmSc32liWoRnMFy78m8SuB9pfUV0c1lyCEXFEo,10996
|
|
51
51
|
regscale/core/app/internal/migrations.py,sha256=wHIzb1uglLVOXawnb-K3Yt70Z5QyfQYb8ZZOMDrNRU4,7983
|
|
52
|
-
regscale/core/app/internal/model_editor.py,sha256=
|
|
52
|
+
regscale/core/app/internal/model_editor.py,sha256=0sxfg92TJYyECU9KwgHooXeY3ZdaF2i5gGWe1gButFY,61696
|
|
53
53
|
regscale/core/app/internal/poam_editor.py,sha256=3PtpSMpV7bqKFuTHD2ACYcTyB3EEtTRKuYv-XArjd0A,22929
|
|
54
54
|
regscale/core/app/internal/workflow.py,sha256=SpgYk1QyzdilVLOK1fFzaKhdLspumaugf5VezgboxhQ,4007
|
|
55
55
|
regscale/core/app/utils/XMLIR.py,sha256=M_RrCsbjznihatkucCKw6dPgHTPQczXyqIdUXWhuCLI,8328
|
|
@@ -59,7 +59,7 @@ regscale/core/app/utils/app_utils.py,sha256=zLEHHHWR4likFQYY_bZsWLTAoRajyyaWrESk
|
|
|
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
|
|
61
61
|
regscale/core/app/utils/pickle_file_handler.py,sha256=iMdv4N8z00TB5LyPdxIcLKNRpDQVWQ8ZQWAqCKpqmF0,1695
|
|
62
|
-
regscale/core/app/utils/regscale_utils.py,sha256=
|
|
62
|
+
regscale/core/app/utils/regscale_utils.py,sha256=krtwcA6ohhF0iPDz3dMbzYv-nAqe-N5ENp2SZrg-JpY,11583
|
|
63
63
|
regscale/core/app/utils/report_utils.py,sha256=rKn3nmiSPq8LTKM16UiKBSizTsZKh-7JwdOlfX6YSpQ,4210
|
|
64
64
|
regscale/core/app/utils/variables.py,sha256=h29Qrr6jg-Feo74IeqHz28wYLhgtzZ2pCDMf6g0WJFU,8989
|
|
65
65
|
regscale/core/app/utils/catalog_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -92,7 +92,7 @@ regscale/core/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
92
92
|
regscale/core/static/regex.py,sha256=KLg-do2oPuUD6bQG9usqqSy5sxqlSEAEuUUbGVkZ6eU,384
|
|
93
93
|
regscale/core/utils/__init__.py,sha256=Eyvc210t-KRqvTcV5DNWRjKO99CdWy_dC57wfggFWcw,3876
|
|
94
94
|
regscale/core/utils/click_utils.py,sha256=y6vAbaPoT0Abb8siS1tvJxJQTm4sbWQTeq5nTDIgBtI,375
|
|
95
|
-
regscale/core/utils/date.py,sha256=
|
|
95
|
+
regscale/core/utils/date.py,sha256=C5J4xwiYihzWmlZYlSPeOFiEDOo94CFU-OOSGYqY6rs,9308
|
|
96
96
|
regscale/core/utils/graphql.py,sha256=oXGBcAuDa0uasMnD4CokIzzKKa-IgExdKXLwtaK2_tA,8386
|
|
97
97
|
regscale/core/utils/urls.py,sha256=ZcU9OJqDmVQXgu6BrLESIp2KMkkUuzTZZ_wHsZMzfA4,687
|
|
98
98
|
regscale/dev/__init__.py,sha256=wVP59B1iurp36ul8pD_CjmunJLHOdKWWodz1r5loNvw,190
|
|
@@ -118,7 +118,7 @@ regscale/integrations/commercial/ad.py,sha256=YXSmK8vRf6yi2GnREGa5GrE6GelhFrLj44
|
|
|
118
118
|
regscale/integrations/commercial/burp.py,sha256=3BLNKLfwL1x7jfhd8MJD6hdHEpj58pOEtrtCkn2hcWA,3344
|
|
119
119
|
regscale/integrations/commercial/cpe.py,sha256=eXZeDXicnp1yYgKuyKcthQUYxXi2Pgc__UD8lUqr5H0,4924
|
|
120
120
|
regscale/integrations/commercial/crowdstrike.py,sha256=6x7_GlYDRCZvPZwqgrDT5KMnXCa6H4RKO-FNkiYxHgU,40194
|
|
121
|
-
regscale/integrations/commercial/defender.py,sha256=
|
|
121
|
+
regscale/integrations/commercial/defender.py,sha256=HAZj1lh4k2mYawsmouU7B2OpmfrGcf49qsEDkZrCPpw,66039
|
|
122
122
|
regscale/integrations/commercial/dependabot.py,sha256=V4VbHbwrxHfe7eCilJ7U_MBeIO6X3wetGfIo2DJYe_c,7793
|
|
123
123
|
regscale/integrations/commercial/ecr.py,sha256=47iCigssDANlfHYGznU4rfOq6O-1QMGOuP8lBmn7Df0,2693
|
|
124
124
|
regscale/integrations/commercial/gitlab.py,sha256=dzfqJQ68QI1ee_BriNMyPuXLkzOhc2vR1hhVfq2j13Y,12496
|
|
@@ -181,9 +181,10 @@ regscale/integrations/commercial/nessus/scanner.py,sha256=xz-OBd98ZbKKWnuxsP7oTq
|
|
|
181
181
|
regscale/integrations/commercial/opentext/__init__.py,sha256=zqCPb_4rYRZZPXfeKn4AoZyyYyQ6MU4C0lCs2ysOBhc,251
|
|
182
182
|
regscale/integrations/commercial/opentext/commands.py,sha256=TTClFg16EzlXQOjdQQ6AdWuVuh7H2zO0V9rXd73-ni0,2572
|
|
183
183
|
regscale/integrations/commercial/opentext/scanner.py,sha256=QAb9FPiYeQCEnqL3dnFBFe64LydwLaR8HWpYmabgcbE,22581
|
|
184
|
-
regscale/integrations/commercial/qualys/__init__.py,sha256=
|
|
184
|
+
regscale/integrations/commercial/qualys/__init__.py,sha256=A0tBi-OL6W1Bu_ReenCJcVy3wisLABktUknOfSLaPxw,88162
|
|
185
|
+
regscale/integrations/commercial/qualys/containers.py,sha256=9jiBBgjoDRuOB2y5_rmOIgJ0nysrwZVgMTrBZW4fRzk,11958
|
|
185
186
|
regscale/integrations/commercial/qualys/qualys_error_handler.py,sha256=2nlxeNLQMOpkiTij39VTsZg-2AFQsM6-rwlBW2pVpKY,18594
|
|
186
|
-
regscale/integrations/commercial/qualys/scanner.py,sha256=
|
|
187
|
+
regscale/integrations/commercial/qualys/scanner.py,sha256=cvz7j2X160l5RP74Vtq6-FagIDhT6zQfQPoQOTOR07c,56284
|
|
187
188
|
regscale/integrations/commercial/qualys/variables.py,sha256=TPoIW5_yNmU6c0AlLOpHQdxp6OrH8jUmMJikqT7YYz8,962
|
|
188
189
|
regscale/integrations/commercial/sap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
189
190
|
regscale/integrations/commercial/sap/click.py,sha256=pWgjUOA_4WKkDUWcE8z4EshnJUdrTl15NKUfKpKyqzE,522
|
|
@@ -207,7 +208,7 @@ regscale/integrations/commercial/stigv2/click_commands.py,sha256=-765vFF03aSjBxU
|
|
|
207
208
|
regscale/integrations/commercial/stigv2/stig_integration.py,sha256=-UlfL0BBI3jFGotctOJyTCRAU9zIXW6mwU7ySrRXE9U,11573
|
|
208
209
|
regscale/integrations/commercial/synqly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
209
210
|
regscale/integrations/commercial/synqly/assets.py,sha256=wAyoMaR5MizBifnKUnNrx6ZlnmneP07LEBjJuf1POZs,3329
|
|
210
|
-
regscale/integrations/commercial/synqly/edr.py,sha256=
|
|
211
|
+
regscale/integrations/commercial/synqly/edr.py,sha256=IvObVzz5Y2a8iNjCP9dTfKUEv2ZAboCzcFqxI00Y6Do,2978
|
|
211
212
|
regscale/integrations/commercial/synqly/ticketing.py,sha256=ubTVKqB_f-G6mE4EUxbsU5BkO-GlMTvRkJVRq_tl_jg,6399
|
|
212
213
|
regscale/integrations/commercial/synqly/vulnerabilities.py,sha256=bLYECK4G3K-j_gXrfEwlse6Rc1ao4TTFezBYxW11CXM,7689
|
|
213
214
|
regscale/integrations/commercial/tenablev2/__init__.py,sha256=UpSY_oww83kz9c7amdbptJKwDB1gAOBQDS-Q9WFp588,295
|
|
@@ -225,14 +226,14 @@ regscale/integrations/commercial/trivy/commands.py,sha256=YGQFtpQGkmcLT3X2OVp7lt
|
|
|
225
226
|
regscale/integrations/commercial/trivy/scanner.py,sha256=iiwTvjqRlLRgQvCs_FP0j83B7ApOta0MSXyO0-iHfSk,11309
|
|
226
227
|
regscale/integrations/commercial/wizv2/WizDataMixin.py,sha256=s7F_rVrP9IZa_x_vh3MswR7W_UBHRfd4kHGVsNX4ips,3606
|
|
227
228
|
regscale/integrations/commercial/wizv2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
228
|
-
regscale/integrations/commercial/wizv2/click.py,sha256=
|
|
229
|
-
regscale/integrations/commercial/wizv2/constants.py,sha256=
|
|
230
|
-
regscale/integrations/commercial/wizv2/issue.py,sha256=
|
|
229
|
+
regscale/integrations/commercial/wizv2/click.py,sha256=hpexL0xHIW5WBUJu-hWQHI2vK9s6i1TI2mD6YWZOafs,12217
|
|
230
|
+
regscale/integrations/commercial/wizv2/constants.py,sha256=xpcO8W9645MncNKbRFspD7m05fVhPK0dzwzToAm0ReQ,23141
|
|
231
|
+
regscale/integrations/commercial/wizv2/issue.py,sha256=qj5_g-SoOz6f5QDgs34GdQEyxFwJLKAWl1EVx7vjrAw,13407
|
|
231
232
|
regscale/integrations/commercial/wizv2/models.py,sha256=hZ6557LJfcp1_NRbMM0V_G1erz1jEFmsuKPn86kXE54,5667
|
|
232
233
|
regscale/integrations/commercial/wizv2/parsers.py,sha256=YcFOGdYZZ17hj2pcRMC9Ho2wPY94dfJ4hHwqTR5BB6c,11095
|
|
233
234
|
regscale/integrations/commercial/wizv2/sbom.py,sha256=QcGaYiBGtZ3mBcbo-KGl-I2u6QHKAIinTk26LPy0Kng,4466
|
|
234
|
-
regscale/integrations/commercial/wizv2/scanner.py,sha256=
|
|
235
|
-
regscale/integrations/commercial/wizv2/utils.py,sha256=
|
|
235
|
+
regscale/integrations/commercial/wizv2/scanner.py,sha256=ndUQxQ-_STzLTEtqSkVBsQYLMuFu0cxc1KYIxjUv9IA,21180
|
|
236
|
+
regscale/integrations/commercial/wizv2/utils.py,sha256=Na0HRlymccXPzC1lybEPqHVuvCTbfw7r4LDi98_4mUg,34252
|
|
236
237
|
regscale/integrations/commercial/wizv2/variables.py,sha256=W_m_TSLUDaqyKJZHukp6i8nftFuhQKb4WRVu9lIyMAs,2485
|
|
237
238
|
regscale/integrations/commercial/wizv2/wiz_auth.py,sha256=BpQTYJn3u0QiWC2IAw-bunZpBPsJtDJgOsC2zOL_UU4,5554
|
|
238
239
|
regscale/integrations/integration/__init__.py,sha256=WJgPLnEahD94QLE8NR8QCzlf8xk2ix76_WPDlf98ezU,70
|
|
@@ -252,7 +253,7 @@ regscale/integrations/public/fedramp/appendix_parser.py,sha256=u3Q_NHxAvYTQ1RAr1
|
|
|
252
253
|
regscale/integrations/public/fedramp/click.py,sha256=8JbWRidFZ9EFoOTp-bwE584u23TzKqWQIpfxmA0-lGo,14975
|
|
253
254
|
regscale/integrations/public/fedramp/components.py,sha256=z6PMObm-kjRR42bT04EfnjisrEULfXlwxb7576uuMmY,27010
|
|
254
255
|
regscale/integrations/public/fedramp/docx_parser.py,sha256=EA9g1iTlB6-GtOzV9JwGW8x_SruhbaIMOzstCBvjiq8,10526
|
|
255
|
-
regscale/integrations/public/fedramp/fedramp_cis_crm.py,sha256=
|
|
256
|
+
regscale/integrations/public/fedramp/fedramp_cis_crm.py,sha256=IVASI6W0uEOg_SyxJSqyHev1KzSwEnF1RTWYT3qfViw,64576
|
|
256
257
|
regscale/integrations/public/fedramp/fedramp_common.py,sha256=Mdy3_WdCEcTwSXEEKXiODmr2YJTWcTg6jfyWZJWfruQ,115406
|
|
257
258
|
regscale/integrations/public/fedramp/fedramp_docx.py,sha256=GnRjuWEgE9XSe9egPOQSZ8lMjY4CpqcD2IS5paI-xQc,13742
|
|
258
259
|
regscale/integrations/public/fedramp/fedramp_five.py,sha256=F4KIOdnYaRjJrJHJYsN9Bmf6i5s0nus-t_GaAh8A3ow,92645
|
|
@@ -308,7 +309,7 @@ regscale/models/integration_models/azure_alerts.py,sha256=2etrpvcxa7jVQrc98bJlVG
|
|
|
308
309
|
regscale/models/integration_models/base64.py,sha256=sxV6O5qY1_TstJENX5jBPsSdQwmA83-NNhgJFunXiZE,570
|
|
309
310
|
regscale/models/integration_models/burp.py,sha256=FBEBkH3U0Q8vq71FFoWnvgLRF5Hkr9GYmQFmNNHFrVk,16932
|
|
310
311
|
regscale/models/integration_models/burp_models.py,sha256=UytDTAcCaxyu-knFkm_mEUH6UmWK3OTXKSC9Sc6OjVs,3669
|
|
311
|
-
regscale/models/integration_models/cisa_kev_data.json,sha256=
|
|
312
|
+
regscale/models/integration_models/cisa_kev_data.json,sha256=UNYylFQOW9KHp5YTozdUTC8NTNe-2xcNf6manT8MGF0,1228128
|
|
312
313
|
regscale/models/integration_models/defender_data.py,sha256=jsAcjKxiGmumGerj7xSWkFd6r__YpuKDnYX5o7xHDiE,2844
|
|
313
314
|
regscale/models/integration_models/defenderimport.py,sha256=OFwEH0Xu-HFLIZJZ8hP60Ov3lS8RR7KHEsw4wI8QnoE,5766
|
|
314
315
|
regscale/models/integration_models/drf.py,sha256=Aq7AdLa_CH97NrnR-CxaFI22JjVN9uCxVN7Z-BBUaNU,18896
|
|
@@ -338,7 +339,7 @@ regscale/models/integration_models/flat_file_importer/__init__.py,sha256=V_P3R0j
|
|
|
338
339
|
regscale/models/integration_models/sbom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
339
340
|
regscale/models/integration_models/sbom/cyclone_dx.py,sha256=0pFR0BWBrF5c8_cC_8mj2MXvNOMHOdHbBYXvTVfFAh8,4058
|
|
340
341
|
regscale/models/integration_models/synqly_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
341
|
-
regscale/models/integration_models/synqly_models/capabilities.json,sha256=
|
|
342
|
+
regscale/models/integration_models/synqly_models/capabilities.json,sha256=A5IBt8dDS4g8Kztgos9xugSyvuvuE5YZZE8wfnRkZnU,349623
|
|
342
343
|
regscale/models/integration_models/synqly_models/connector_types.py,sha256=8nxptkTexpskySnmL0obNAff_iu_fx6tJ7i1-4hJvao,461
|
|
343
344
|
regscale/models/integration_models/synqly_models/ocsf_mapper.py,sha256=e2kTOhWSNRnzbgMchMx-7c21pCgSv2DqWnxvajKEKJM,16960
|
|
344
345
|
regscale/models/integration_models/synqly_models/param.py,sha256=Xt5Zm6lC_VkLj7LF2qXo72TJZHysqttsp5ai0NCf1po,2643
|
|
@@ -360,7 +361,7 @@ regscale/models/regscale_models/asset.py,sha256=-ws6o6hRl2sMLNcT8CIw0SQvOwLtrVSe
|
|
|
360
361
|
regscale/models/regscale_models/asset_mapping.py,sha256=HFlkAoPZHy2xPYq28cXuzLpFoP36SI08HTL8mH_Q-uE,6851
|
|
361
362
|
regscale/models/regscale_models/business_impact_assessment.py,sha256=tkuvw1ssdrVJJcsHT43nFjFhAFTSSFRNfWRIg5W-d2k,2214
|
|
362
363
|
regscale/models/regscale_models/case.py,sha256=hLVTwZXzusnXR9avqh7xSVLJwPJ1rPI_Nla_VAkpZcg,1192
|
|
363
|
-
regscale/models/regscale_models/catalog.py,sha256=
|
|
364
|
+
regscale/models/regscale_models/catalog.py,sha256=jw4lfWQyE3ult3MlGU7IdGsXLYCQPVnzfjT69kKjLCs,9145
|
|
364
365
|
regscale/models/regscale_models/cci.py,sha256=jjtO3ZXDhzQ05s5i-YeL7_TWPkl9ArGkUJGAw_LnKD8,1264
|
|
365
366
|
regscale/models/regscale_models/change.py,sha256=v-FxWrYijGbxAWk7WEIN3piUw8mM3EWTeKd7itAMfMY,4970
|
|
366
367
|
regscale/models/regscale_models/checklist.py,sha256=GM15N9krNmKNDJnOgtSDRlUTBVwYtttex_plc64OVWY,13290
|
|
@@ -383,9 +384,9 @@ regscale/models/regscale_models/email.py,sha256=kgEzXTUZr7uHksMOCextWbXJXYuRKyXO
|
|
|
383
384
|
regscale/models/regscale_models/evidence.py,sha256=R78f3eWjmBgusZbv8i9cd5O8Is43KjvxiaJH_CLERqE,4316
|
|
384
385
|
regscale/models/regscale_models/evidence_mapping.py,sha256=eovTJsl1cjZMvbhpOv70nILIHSXmURyU4mg_r09h4VQ,1444
|
|
385
386
|
regscale/models/regscale_models/facility.py,sha256=J3gGv0Tf3zNdyKGhb0iM8WjgjWqJHZLKdcN9n-jDrTA,1059
|
|
386
|
-
regscale/models/regscale_models/file.py,sha256=
|
|
387
|
+
regscale/models/regscale_models/file.py,sha256=peAu78t-zLeMsP9tmeubGAyBL77XRkXyJLaruWzjLac,14413
|
|
387
388
|
regscale/models/regscale_models/filetag.py,sha256=jd99xcQsGheLFfy7PYtZEzT-re_Dp_ZoUF3GWYMsi0Q,1138
|
|
388
|
-
regscale/models/regscale_models/form_field_value.py,sha256=
|
|
389
|
+
regscale/models/regscale_models/form_field_value.py,sha256=xKnbXWQl4xVuUQMbeRK23MbPO7SOMARBvvH2O98UOm4,5816
|
|
389
390
|
regscale/models/regscale_models/functional_roles.py,sha256=Vm_j-UZBKoaiONO75VqqCKnDHE6ynP0X5XZmKXl8UT8,932
|
|
390
391
|
regscale/models/regscale_models/group.py,sha256=HFE3FPUIYo7PArHnvZhb8EQToZQ73jFRU1M-oaHuees,6209
|
|
391
392
|
regscale/models/regscale_models/implementation_objective.py,sha256=e0Hamt-9RBeHRDzlWDbIJ3t4qnZKXPrbsesBK3wYoNk,12132
|
|
@@ -394,7 +395,7 @@ regscale/models/regscale_models/implementation_role.py,sha256=ZjJOhjM3dVlulsGx3l
|
|
|
394
395
|
regscale/models/regscale_models/incident.py,sha256=jsS4MfigzjwFphvdIrBk62GfvbceQ8VL-AhfQSQM460,6028
|
|
395
396
|
regscale/models/regscale_models/inherited_control.py,sha256=RuQJgVyZgfoIrUG_vvwQYHECb3wsFjDH-zPj-bIFBNU,2007
|
|
396
397
|
regscale/models/regscale_models/interconnection.py,sha256=B8Y4I6KnN-T_gid08QM_o50OwGZcFfO8SJFY2uB68Ak,1256
|
|
397
|
-
regscale/models/regscale_models/issue.py,sha256=
|
|
398
|
+
regscale/models/regscale_models/issue.py,sha256=9ufa-gboSYBBQ2wCTVV0wk6qcWsdX8K0plWj0c_zpus,49064
|
|
398
399
|
regscale/models/regscale_models/leveraged_authorization.py,sha256=OUrL8JQV3r7T3ldHlL6Y_ZLv6KuQIC-3eZW5wZ7XFUk,4192
|
|
399
400
|
regscale/models/regscale_models/line_of_inquiry.py,sha256=Uu0lQEhif0W6yTSkJo27GyQGmExSngJvyqGBTr4Q8Fg,1713
|
|
400
401
|
regscale/models/regscale_models/link.py,sha256=lAY4Ig3Menm1EqfcAbVJ7jsCsRO5tWtJIf-9-G9FXT8,6593
|
|
@@ -403,6 +404,7 @@ regscale/models/regscale_models/meta_data.py,sha256=Fg8rrWSTx3K00QkF4glH9UdY9OFW
|
|
|
403
404
|
regscale/models/regscale_models/module.py,sha256=a7lalHmVTQ04ZILnJxuFWdHYDtyusBMTtonD4ICL-Wc,7272
|
|
404
405
|
regscale/models/regscale_models/modules.py,sha256=CkR03zJhrBjhw50d-Kpyem7Ryh-QWz_RLHEMlx2e8VA,6150
|
|
405
406
|
regscale/models/regscale_models/objective.py,sha256=aJIpmkZ-NscqV2y8SGB4HYzm615b6mklyHnW9bL2ljk,249
|
|
407
|
+
regscale/models/regscale_models/organization.py,sha256=E3Y5bwtgaIRL4rbKxU3DyfFVYUzP3d-1umG_CIUG3gE,714
|
|
406
408
|
regscale/models/regscale_models/parameter.py,sha256=WS5onxkvz119brxugoBidK7K_3CeNVzchLTvW8aEdJs,3859
|
|
407
409
|
regscale/models/regscale_models/policy.py,sha256=IQ-niE1PP8L2OavYfOQQsvSInw1sw371mkJrGFyWZ94,2382
|
|
408
410
|
regscale/models/regscale_models/ports_protocol.py,sha256=Pcn-R6bsmxWiaYEtlZuu7Zv0C4vVX8YHMWgGcd1MRCY,2146
|
|
@@ -417,7 +419,7 @@ regscale/models/regscale_models/questionnaire.py,sha256=QMSXfNpSoaS8tkeo80C7OWLj
|
|
|
417
419
|
regscale/models/regscale_models/questionnaire_instance.py,sha256=1LgGTwFACmWx2xOOqUKhAUOms4_3L6NZySzuteg0_sI,8241
|
|
418
420
|
regscale/models/regscale_models/rbac.py,sha256=oHzKqwL4bkH2XT4WaslbNlMnWayrSKP9zYbG72e2ijk,4522
|
|
419
421
|
regscale/models/regscale_models/reference.py,sha256=P_7jT6H-NZIa7TyH3j98N-ZHlB6FsjpZVRZCCpms-D4,3253
|
|
420
|
-
regscale/models/regscale_models/regscale_model.py,sha256=
|
|
422
|
+
regscale/models/regscale_models/regscale_model.py,sha256=z-SbjQpwE67sM9pfDg2oiyIJSBEGIEwqfFvCAhzM3bA,68806
|
|
421
423
|
regscale/models/regscale_models/requirement.py,sha256=-8PnMbuWAZHol5X1w-fzm-moD784Et0oevSVbz6xLhU,767
|
|
422
424
|
regscale/models/regscale_models/risk.py,sha256=lZFDYPpTt0aEYCrYz5FBKk1Y4y2CKXYU1A8eEKT3zzg,8661
|
|
423
425
|
regscale/models/regscale_models/risk_issue_mapping.py,sha256=j6uR0x6xymJ0BsIwgnadeUQDshHNhU3VnpyItZp4dc4,2393
|
|
@@ -425,8 +427,8 @@ regscale/models/regscale_models/risk_trend.py,sha256=GkooEAc4BAq85vT3SxEOKcETACk
|
|
|
425
427
|
regscale/models/regscale_models/sbom.py,sha256=UYS3lBizGqz7A7vNPYBYzpL8PWIaXLl7ZQox_hlJ2ZQ,1722
|
|
426
428
|
regscale/models/regscale_models/scan_history.py,sha256=o4e9P2rQlqlLj4mbgSPX44jutTJo1nocI1DDXyWyf6w,16741
|
|
427
429
|
regscale/models/regscale_models/search.py,sha256=rPbFDCnnBRHY5JJv9Ev3_6GjMlkdhUAsaUzC97eE2Ys,1015
|
|
428
|
-
regscale/models/regscale_models/security_control.py,sha256=
|
|
429
|
-
regscale/models/regscale_models/security_plan.py,sha256=
|
|
430
|
+
regscale/models/regscale_models/security_control.py,sha256=GJEMkIh6IDX7Gs_z7ppmm0hqiXjC5qSbSYRYt85wOUg,6365
|
|
431
|
+
regscale/models/regscale_models/security_plan.py,sha256=DtxGJHCIuzj_F_iaP9uuHY5sObKo3zk_8BeC2jUJF7U,8600
|
|
430
432
|
regscale/models/regscale_models/software_inventory.py,sha256=FRAIfoUlS0kaX1HQRDyV5q4yxwRHilXbS52NSj6exo0,5555
|
|
431
433
|
regscale/models/regscale_models/stake_holder.py,sha256=JIuDTIky_3acDl-NOMwylTHkppN38JgPDZ1A6wM-BGE,1956
|
|
432
434
|
regscale/models/regscale_models/stig.py,sha256=y-PQuGg3pwDTfsNZGW6anaNAjIZBQoNe7GOLMiT5zfw,26329
|
|
@@ -477,7 +479,7 @@ regscale/visualization/click.py,sha256=-fxIwc-RrI3iHdMNTk_dhplC8yUjZXcWuHfZa7ULR
|
|
|
477
479
|
tests/fixtures/__init__.py,sha256=sLuJtRNqBRm8lpE2yKvZFIqwtYho5A5O8KbJj_IpKhQ,41
|
|
478
480
|
tests/fixtures/api.py,sha256=32EY2VZxumbPAP58ZkS0_SH4UewY9Z-ZzWrP2Unwnog,2629
|
|
479
481
|
tests/fixtures/models.py,sha256=pWKwexocbJDfMGdiuafgHEz1RklO_24znfd3LsgdXEs,3569
|
|
480
|
-
tests/fixtures/test_fixture.py,sha256=
|
|
482
|
+
tests/fixtures/test_fixture.py,sha256=ndhBx4jR0snD5ONGZhBTUPzn5pRB5s9wxMR-lMRd9XM,6229
|
|
481
483
|
tests/mocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
482
484
|
tests/mocks/objects.py,sha256=KfCpzXpwWl-3zCLihQ3ZrQONW8Jk7F4UbcAgPz2LnnQ,99
|
|
483
485
|
tests/mocks/response.py,sha256=fUF2jrrxgmGUKXUcWWOSA457yrEyM1EB28G6RqPO9a0,1040
|
|
@@ -487,7 +489,7 @@ tests/regscale/test_about.py,sha256=32YZC8XJW5QkIYIfwEVGIdIxQNUIbyzn3OzVcX_5X24,
|
|
|
487
489
|
tests/regscale/test_authorization.py,sha256=fls5ODCYiu0DdkwXFepO_GM-BP6tRaPmMCZWX6VD2e8,1899
|
|
488
490
|
tests/regscale/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
489
491
|
tests/regscale/core/test_api.py,sha256=25AsIT-jg8SrlkPeynUwwm4PvTOrHcRO2Ba_omnNLUY,7512
|
|
490
|
-
tests/regscale/core/test_app.py,sha256=
|
|
492
|
+
tests/regscale/core/test_app.py,sha256=8HvRRD37pI_x4VjXyjs1g7JWXr-jFIbK_lYst4tLXjI,18922
|
|
491
493
|
tests/regscale/core/test_login.py,sha256=Kl7ySS8JU7SzhmupaDexeUH8VOMjtMRJvW8-CimxHqU,1166
|
|
492
494
|
tests/regscale/core/test_logz.py,sha256=Yf6tAthETLlYOEp3hee3ovDw-WnZ_6fTw3e1rjx4xSw,2621
|
|
493
495
|
tests/regscale/core/test_sbom_generator.py,sha256=lgzo1HRbkNIIDZIeKiM2JbbIYQsak0BpU0GlvbrcexM,2935
|
|
@@ -512,9 +514,9 @@ tests/regscale/models/test_regscale_model.py,sha256=ZsrEZkC4EtdIsoQuayn1xv2gEGcV
|
|
|
512
514
|
tests/regscale/models/test_report.py,sha256=eiSvS_zS0aVeL0HBvtmHVvEzcfF9ZFVn2twj5g8KttY,970
|
|
513
515
|
tests/regscale/models/test_tenable_integrations.py,sha256=PNJC2Zu6lv1xj7y6e1yOsz5FktSU3PRKb5x3n5YG3w0,4072
|
|
514
516
|
tests/regscale/models/test_user_model.py,sha256=e9olv28qBApgnvK6hFHOgXjUC-pkaV8aGDirEIWASL4,4427
|
|
515
|
-
regscale_cli-6.20.
|
|
516
|
-
regscale_cli-6.20.
|
|
517
|
-
regscale_cli-6.20.
|
|
518
|
-
regscale_cli-6.20.
|
|
519
|
-
regscale_cli-6.20.
|
|
520
|
-
regscale_cli-6.20.
|
|
517
|
+
regscale_cli-6.20.5.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
|
|
518
|
+
regscale_cli-6.20.5.0.dist-info/METADATA,sha256=uhXNlWUvaELYMD0YsHh_2qCqD_OXwj17t9lEeB8jrBw,34899
|
|
519
|
+
regscale_cli-6.20.5.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
520
|
+
regscale_cli-6.20.5.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
|
|
521
|
+
regscale_cli-6.20.5.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
|
|
522
|
+
regscale_cli-6.20.5.0.dist-info/RECORD,,
|