Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First commits to create cyhy-db #5

Merged
merged 140 commits into from
Oct 21, 2024
Merged
Show file tree
Hide file tree
Changes from 138 commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
53be3c2
Add cyhy_db package and models
felddy Jan 24, 2024
904692b
Apply changes made by linters
felddy Jan 24, 2024
6593b87
Add doc strings where needed
felddy Jan 24, 2024
312752b
Simplify field validation
felddy Jan 24, 2024
250d6f6
Add test case for invalid CVSS score
felddy Jan 24, 2024
3f39aae
Switch to MongoEngine
felddy Jan 26, 2024
8999e26
Add utcnow function to utils module
felddy Jan 26, 2024
3a291cd
Update MongoDB connection and add support for Mongo Express
felddy Jan 26, 2024
97359b9
Refactor CVE model and test
felddy Jan 26, 2024
a568454
Add IPAddressField and test cases for IP address validation and conve…
felddy Jan 26, 2024
9c97a24
Add ScanDoc and SnapshotDoc models
felddy Jan 26, 2024
09fd02c
Sort imports
felddy Jan 26, 2024
c29996e
Implement CVE, ScanDoc with beanie
felddy Feb 7, 2024
08920dd
Add cyhy_db package and initialize_db function
felddy Feb 7, 2024
69117b4
Update conftest.py with Docker and mongo express fixtures
felddy Feb 7, 2024
4d620e6
Add test for database connection using motor and beanie libraries
felddy Feb 7, 2024
c7959a9
Refactor imports and update test cases in test_cve.py
felddy Feb 7, 2024
d551473
Remove test_ip_address.py
felddy Feb 7, 2024
577ee7d
Add tests for ScanDoc model functionality
felddy Feb 7, 2024
f2e99a3
Add asyncio_mode to pytest.ini
felddy Feb 7, 2024
89e8303
Switch to beanie ORM as a dependency
felddy Feb 7, 2024
2cf4587
Add enum classes for various types and statuses
felddy Feb 12, 2024
43da94b
Add RequestDoc model and test
felddy Feb 12, 2024
4162bdb
Refactor CVE model and add model validator for calculating severity
felddy Feb 12, 2024
c45dd48
Rename ScanDoc test
felddy Feb 12, 2024
a26b5c2
Add RequestDoc model to ALL_MODELS list
felddy Feb 12, 2024
11b5bb2
Add new dependencies to setup.py
felddy Feb 12, 2024
1b1d518
Add test case to reset latest flag by owner
felddy Feb 12, 2024
2433f21
Sort imports
felddy Feb 13, 2024
7adf2d1
Refactor ScanDoc model and add new tests
felddy Feb 13, 2024
14a0848
Add fields and indexes to SnapshotDoc model
felddy Feb 13, 2024
718f4d5
Organize imports
felddy Feb 13, 2024
74de4e6
Add HostDoc model and test cases
felddy Feb 13, 2024
b28e54a
Update imports and type annotations in scan_doc.py
felddy Feb 13, 2024
bd0ada5
Add new models and fields to SnapshotDoc
felddy Feb 13, 2024
0850725
Reorder model imports to avoid circular references
felddy Feb 16, 2024
8feda1d
Add Protocol enum for TCP and UDP
felddy Feb 16, 2024
adc11c7
Add deprecated decorator to utils
felddy Feb 16, 2024
8420216
Refactor and partially implement helpers with deprecation
felddy Feb 16, 2024
8a1cc07
Add HostScanDoc model with settings
felddy Feb 16, 2024
c4d22c6
Add KEVDoc model
felddy Feb 16, 2024
bb22597
Add PlaceDoc model
felddy Feb 16, 2024
0e14f8e
Add PortScanDoc model with indexes
felddy Feb 16, 2024
d6390d5
Add ReportDoc model
felddy Feb 16, 2024
3102b9c
Replace deprecated datetime utcnow calls
felddy Feb 16, 2024
390a153
Add SystemControlDoc model
felddy Feb 16, 2024
230ec59
Add TallyDoc model
felddy Feb 16, 2024
7bb6465
Add VulnScanDoc model
felddy Feb 16, 2024
345fb13
Update import statements in db.py
felddy Feb 16, 2024
c2d40eb
Replace deprecated utcnow calls
felddy Feb 16, 2024
e71cd08
Refactor test_find to test_get_by_ip
felddy Feb 16, 2024
a59a921
Add test data generator for CVE and RequestDoc models
felddy Feb 16, 2024
12e7047
Add .hypothesis and .vscode to .gitignore
felddy Mar 13, 2024
c43cf3d
Add note about pydantic extras
felddy Mar 13, 2024
b2574f6
Add NotificationDoc model to cyhy_db
felddy Mar 13, 2024
b427576
Update model configurations to use ConfigDict instead of Config class
felddy Mar 13, 2024
357bc94
Organize imports per isort
felddy Mar 13, 2024
30d3b08
Add import statement for SnapshotDoc in ScanDoc
felddy Mar 13, 2024
30f82e8
Apply changes made by linters
felddy Mar 13, 2024
024e45d
Remove unused index in RequestDoc model
felddy Mar 13, 2024
da7e567
Add module docstring to disable isort breaking import order.
felddy Mar 13, 2024
be547a6
Clean up unused imports
felddy Apr 22, 2024
36b2a22
Add TODO to delete BASESCAN if unused
felddy Apr 22, 2024
a2b798a
Improve comments on utcnow util
felddy Apr 22, 2024
b7c28b0
Replace date factory with custom function.
felddy Apr 22, 2024
c16c4e4
Add ScanDoc model header comment
felddy Apr 22, 2024
d44ad80
Add TODO to inherit from BaseModel
felddy Apr 22, 2024
c81cc5a
Add non-interactive flag to mypy types install
felddy Aug 26, 2024
0d9d163
Bump docker library to fix upstream break by requests
felddy Aug 26, 2024
8b9fd65
Add types and ignores to make mypy happy
felddy Aug 26, 2024
a33446c
Resolve some flake8 issues
dav3r Aug 27, 2024
4d60504
Bump dependency versions to latest
felddy Aug 27, 2024
1b5be00
Satisfy isort and black linters
dav3r Aug 27, 2024
8fdcfda
Update comment
felddy Aug 29, 2024
5f8b975
Add py.typed file to allow users to type check
felddy Aug 29, 2024
59e9595
Ignore some E712 flake8 findings
dav3r Aug 30, 2024
d1489e4
Appease flake8 by using an otherwise unused variable
dav3r Aug 30, 2024
757caa8
Add a whole bunch of docstrings to placate flake8
dav3r Aug 30, 2024
7b6e816
Tell bandit to ignore warnings about our use of random numbers
dav3r Aug 30, 2024
9b828ac
Limit Python version to 3.10 and greater
felddy Sep 25, 2024
fa658d0
Uncomment dependabot ignores handled by skeleton
felddy Sep 25, 2024
030607c
Explicitly set the pytest log level to INFO
dav3r Oct 1, 2024
9aad896
Restore a useful comment and import from the skeleton
dav3r Oct 1, 2024
86d8c38
Remove a commented out line that is no longer needed
dav3r Oct 1, 2024
0afb2ed
Add two unit tests for the initialize_db function
dav3r Oct 1, 2024
ddab65e
Correctly set state in HostDoc
dav3r Oct 2, 2024
9983150
Add unit tests for HostDoc.set_state()
dav3r Oct 2, 2024
b510c09
Add unit tests for SystemControlDoc
dav3r Oct 2, 2024
5642a7c
Add additional unit tests for ScanDoc.tag_latest()
dav3r Oct 2, 2024
2870a9a
Add a "no op" unit test for HostDoc.set_state()
dav3r Oct 2, 2024
41fefe8
Add unit tests for utils/decorators.py
dav3r Oct 2, 2024
323666e
Improve field validator for start window in RequestDoc
dav3r Oct 2, 2024
3b76e7b
Add unit tests for parse_time in Window (request_doc.py)
dav3r Oct 2, 2024
22ed790
Avoid using the reserved "_id" field name in TallyDoc
dav3r Oct 2, 2024
6fbef45
Add unit tests for TallyDoc
dav3r Oct 2, 2024
058a0c5
Output mongodb URI at end of pytest run when used with --mongo-expres…
dav3r Oct 2, 2024
d3e4e03
Update README from skeleton to include useful information
dav3r Oct 2, 2024
c2157df
Remove a TODO that is no longer relevant
dav3r Oct 2, 2024
7fec381
Make all children of ScanDoc (HostScanDoc, PortScanDoc, VulnScanDoc) …
dav3r Oct 2, 2024
aca07b4
Update a comment
dav3r Oct 2, 2024
9e06b47
Remove duplicate note text
felddy Oct 3, 2024
7f4b9ab
Make ScanDoc abstract and document
felddy Oct 4, 2024
6f31267
Add stub of TicketDoc model
felddy Oct 4, 2024
3c04616
Improve comment for protocol enum
felddy Oct 4, 2024
74f7fc8
Rename TicketEvent
felddy Oct 4, 2024
f2284ba
Add custom CyHy exceptions
felddy Oct 4, 2024
f772efd
Add TIcketDoc implementation
felddy Oct 4, 2024
8c45e19
Use correct syntax when appending a TicketDoc event
dav3r Oct 7, 2024
cf2b2d2
Remove an unnecessary async declaration
dav3r Oct 7, 2024
3e3d470
Correctly define TicketEvent delta to default to None
dav3r Oct 7, 2024
50c8c33
Prefer serialization_alias to alias
dav3r Oct 7, 2024
5786d37
Use correct query syntax
dav3r Oct 7, 2024
ab431a6
The "In" query operator requires an array
dav3r Oct 7, 2024
720abfe
Correct issues with latest_port and latest_vuln in TicketDoc
dav3r Oct 8, 2024
6e579af
Make TicketEvent.reference optional, defaulting to None
dav3r Oct 8, 2024
f6668db
Add unit tests for TicketDoc
dav3r Oct 8, 2024
41a2275
Make TicketDoc.add_event() raise the same exception in all currently-…
dav3r Oct 8, 2024
3280609
Remove commented-out legacy functions
dav3r Oct 8, 2024
88987f6
Convert enums to StrEnum and use auto()
felddy Oct 8, 2024
fa69bfc
Remove unused BASESCAN enum value in Stage
felddy Oct 8, 2024
f2210f3
Reverting change to CVSSVersion enum
felddy Oct 8, 2024
c1d1a29
Convert test to use CVSS enumeration
felddy Oct 8, 2024
4613a1e
Rename CVE to CVEDoc
felddy Oct 8, 2024
1c53461
Sort attributes in all document classes
dav3r Oct 11, 2024
8fff2b4
Clean up dependencies
felddy Oct 11, 2024
e5fdec2
Replace magic string with proper enum
felddy Oct 11, 2024
0f917ae
Revert hard coding of Python version
felddy Oct 11, 2024
5b2bb40
Work around type assignment error
felddy Oct 15, 2024
fd82fe9
Work around type assignment error
felddy Oct 15, 2024
1d3cf32
Merge branch 'first-commits' of github.com:cisagov/cyhy-db into first…
dav3r Oct 16, 2024
07724b2
Rename reserved word deconfliction to match previously used pattern
felddy Oct 18, 2024
438c199
Remove field alias
felddy Oct 18, 2024
49af441
Remove inexplicable quoting
felddy Oct 18, 2024
a593d2d
Add asyncio_default_fixture_loop_scope configuration option to pytest…
felddy Oct 18, 2024
86b493a
Enable populate_by_name to handle aliases
felddy Oct 18, 2024
d338efe
Add ScanLimit save test
felddy Oct 18, 2024
84254b9
Attempt to improve ScanDoc test coverage
felddy Oct 19, 2024
d0106dc
Sort pytest options
felddy Oct 21, 2024
b1ffa0c
Update version file path in bump_version.sh
felddy Oct 21, 2024
74a9505
Bump version from 0.0.1 to 1.0.0
felddy Oct 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# https://coverage.readthedocs.io/en/latest/config.html

[run]
source = src/example
source = src/cyhy_db
omit =
branch = true

Expand Down
8 changes: 4 additions & 4 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ updates:
- dependency-name: hashicorp/setup-terraform
- dependency-name: mxschmitt/action-tmate
- dependency-name: step-security/harden-runner
# # Managed by cisagov/cyhy-db
jsf9k marked this conversation as resolved.
Show resolved Hide resolved
# - dependency-name: actions/download-artifact
# - dependency-name: actions/upload-artifact
# - dependency-name: github/codeql-action
# Managed by cisagov/skeleton-python-library
- dependency-name: actions/download-artifact
- dependency-name: actions/upload-artifact
- dependency-name: github/codeql-action
package-ecosystem: github-actions
schedule:
interval: weekly
Expand Down
12 changes: 0 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,6 @@ jobs:
fail-fast: false
matrix:
python-version:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
steps:
Expand Down Expand Up @@ -286,10 +282,6 @@ jobs:
fail-fast: false
matrix:
python-version:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
steps:
Expand Down Expand Up @@ -341,10 +333,6 @@ jobs:
fail-fast: false
matrix:
python-version:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
steps:
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
## Python ##
__pycache__
.coverage
.hypothesis
.mypy_cache
.pytest_cache
.python-version
*.egg-info
dist

## VSCode ##
.vscode
112 changes: 98 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,104 @@
[![Coverage Status](https://coveralls.io/repos/github/cisagov/cyhy-db/badge.svg?branch=develop)](https://coveralls.io/github/cisagov/cyhy-db?branch=develop)
[![Known Vulnerabilities](https://snyk.io/test/github/cisagov/cyhy-db/develop/badge.svg)](https://snyk.io/test/github/cisagov/cyhy-db)

This is a generic skeleton project that can be used to quickly get a
new [cisagov](https://github.com/cisagov) Python library GitHub
project started. This skeleton project contains [licensing
information](LICENSE), as well as
[pre-commit hooks](https://pre-commit.com) and
[GitHub Actions](https://github.com/features/actions) configurations
appropriate for a Python library project.

## New Repositories from a Skeleton ##

Please see our [Project Setup guide](https://github.com/cisagov/development-guide/tree/develop/project_setup)
for step-by-step instructions on how to start a new repository from
a skeleton. This will save you time and effort when configuring a
new repository!
This repository implements a Python module for interacting with a Cyber Hygiene database.

## Pre-requisites ##

- [Python 3.11](https://www.python.org/downloads/) or newer
- A running [MongoDB](https://www.mongodb.com/) instance that you have access to

## Starting a Local MongoDB Instance for Testing ##

> [!IMPORTANT]
> This requires [Docker](https://www.docker.com/) to be installed in
> order for this to work.

You can start a local MongoDB instance in a container with the following
command:

```console
pytest -vs --mongo-express
```

> [!NOTE]
> The command `pytest -vs --mongo-express` not only starts a local
> MongoDB instance, but also runs all the `cyhy-db` unit tests, which will
> create various collections and documents in the database.

Sample output (trimmed to highlight the important parts):

```console
<snip>
MongoDB is accessible at mongodb://mongoadmin:secret@localhost:32859 with database named "test"
Mongo Express is accessible at http://admin:pass@localhost:8081

Press Enter to stop Mongo Express and MongoDB containers...
```

Based on the example output above, you can access the MongoDB instance at
`mongodb://mongoadmin:secret@localhost:32859` and the Mongo Express web
interface at `http://admin:pass@localhost:8081`. Note that the MongoDB
containers will remain running until you press "Enter" in that terminal.

## Example Usage ##

Once you have a MongoDB instance running, the sample Python code below
demonstrates how to initialize the database, create a new request document, save
it, and then retrieve it.

```python
import asyncio
from cyhy_db import initialize_db
from cyhy_db.models import RequestDoc
from cyhy_db.models.request_doc import Agency

async def main():
# Initialize the CyHy database
await initialize_db("mongodb://mongoadmin:secret@localhost:32859", "test")

# Create a new CyHy request document and save it in the database
new_request = RequestDoc(
agency=Agency(name="Acme Industries", acronym="AI")
)
await new_request.save()

# Find the request document and print its agency information
request = await RequestDoc.get("AI")
print(request.agency)

asyncio.run(main())
```

Output:

```console
name='Acme Industries' acronym='AI' type=None contacts=[] location=None
```

## Additional Testing Options ##

> [!WARNING]
> The default usernames and passwords are for testing purposes only.
> Do not use them in production environments. Always set strong, unique
> credentials.

### Environment Variables ###

| Variable | Description | Default |
|----------|-------------|---------|
| `MONGO_INITDB_ROOT_USERNAME` | The MongoDB root username | `mongoadmin` |
| `MONGO_INITDB_ROOT_PASSWORD` | The MongoDB root password | `secret` |
| `DATABASE_NAME` | The name of the database to use for testing | `test` |
| `MONGO_EXPRESS_PORT` | The port to use for the Mongo Express web interface | `8081` |

### Pytest Options ###

| Option | Description | Default |
|--------|-------------|---------|
| `--mongo-express` | Start a local MongoDB instance and Mongo Express web interface | n/a |
| `--mongo-image-tag` | The tag of the MongoDB Docker image to use | `docker.io/mongo:latest` |
| `--runslow` | Run slow tests | n/a |

## Contributing ##

Expand Down
4 changes: 3 additions & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
[pytest]
addopts = -v -ra --cov
addopts = -v -ra --cov --log-cli-level=INFO
asyncio_default_fixture_loop_scope = session
asyncio_mode = auto
2 changes: 1 addition & 1 deletion setup-env
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ for req_file in "requirements-dev.txt" "requirements-test.txt" "requirements.txt
done

# Install all necessary mypy type stubs
mypy --install-types src/
mypy --install-types --non-interactive src/

# Install git pre-commit hooks now or later.
pre-commit install ${INSTALL_HOOKS:+"--install-hooks"}
Expand Down
39 changes: 19 additions & 20 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ def get_version(version_file):


setup(
name="example",
name="cyhy-db",
# Versions should comply with PEP440
version=get_version("src/example/_version.py"),
description="Example Python library",
version=get_version("src/cyhy_db/_version.py"),
description="CyHy Database Python library",
long_description=readme(),
long_description_content_type="text/markdown",
# Landing page for CISA's cybersecurity mission
Expand Down Expand Up @@ -75,38 +75,37 @@ def get_version(version_file):
# that you indicate whether you support Python 2, Python 3 or both.
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
],
python_requires=">=3.7",
python_requires=">=3.11",
# What does your project relate to?
keywords="skeleton",
keywords=["cyhy", "database"],
packages=find_packages(where="src"),
package_dir={"": "src"},
package_data={"example": ["data/*.txt"]},
package_data={"cyhy_db": ["py.typed"]},
py_modules=[splitext(basename(path))[0] for path in glob("src/*.py")],
include_package_data=True,
install_requires=["docopt", "schema", "setuptools >= 24.2.0"],
install_requires=[
"beanie",
"pydantic[email, hypothesis]", # hypothesis plugin is currently disabled: https://github.com/pydantic/pydantic/issues/4682
"setuptools",
],
extras_require={
"test": [
"pytest-asyncio",
"coverage",
# coveralls 1.11.0 added a service number for calls from
# GitHub Actions. This caused a regression which resulted in a 422
# response from the coveralls API with the message:
# Unprocessable Entity for url: https://coveralls.io/api/v1/jobs
# 1.11.1 fixed this issue, but to ensure expected behavior we'll pin
# to never grab the regression version.
"coveralls != 1.11.0",
"coveralls",
"docker",
"hypothesis",
"mimesis-factory",
"mimesis",
"pre-commit",
"pytest-cov",
"pytest-factoryboy",
"pytest",
]
},
# Conveniently allows one to run the CLI tool as `example`
entry_points={"console_scripts": ["example = example.example:main"]},
entry_points={},
)
7 changes: 4 additions & 3 deletions src/example/__init__.py → src/cyhy_db/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
"""The example library."""
"""The cyhy_db package provides an interface to a CyHy database."""

# We disable a Flake8 check for "Module imported but unused (F401)" here because
# although this import is not directly used, it populates the value
# package_name.__version__, which is used to get version information about this
# Python package.

from ._version import __version__ # noqa: F401
from .example import example_div
from .db import initialize_db

__all__ = ["example_div"]
__all__ = ["initialize_db"]
1 change: 1 addition & 0 deletions src/cyhy_db/_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__version__ = "0.0.1"
54 changes: 54 additions & 0 deletions src/cyhy_db/db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
"""CyHy database top-level functions."""

# Third-Party Libraries
from beanie import Document, View, init_beanie
from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase

from .models import (
CVEDoc,
HostDoc,
HostScanDoc,
KEVDoc,
NotificationDoc,
PlaceDoc,
PortScanDoc,
ReportDoc,
RequestDoc,
SnapshotDoc,
SystemControlDoc,
TallyDoc,
TicketDoc,
VulnScanDoc,
)

ALL_MODELS: list[type[Document] | type[View] | str] = [
CVEDoc,
HostDoc,
HostScanDoc,
KEVDoc,
NotificationDoc,
PlaceDoc,
PortScanDoc,
RequestDoc,
ReportDoc,
SnapshotDoc,
SystemControlDoc,
TallyDoc,
TicketDoc,
VulnScanDoc,
]

# Note: ScanDoc is intentionally excluded from the list of models to be imported
# or initialized because it is an abstract base class.


async def initialize_db(db_uri: str, db_name: str) -> AsyncIOMotorDatabase:
"""Initialize the database."""
try:
client: AsyncIOMotorClient = AsyncIOMotorClient(db_uri)
db: AsyncIOMotorDatabase = client[db_name]
await init_beanie(database=db, document_models=ALL_MODELS)
return db
except Exception as e:
print(f"Failed to initialize database with error: {e}")
raise
47 changes: 47 additions & 0 deletions src/cyhy_db/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"""This module contains the models for the CyHy database.

# Imports are ordered to avoid a circular import.
# isort is disabled for this file as it will break the ordering.

isort:skip_file
"""

# Scan documents (order matters)
from .scan_doc import ScanDoc
from .host_scan_doc import HostScanDoc
from .port_scan_doc import PortScanDoc
from .vuln_scan_doc import VulnScanDoc

# Snapshot documents (order matters)
from .snapshot_doc import SnapshotDoc
from .report_doc import ReportDoc

# Other documents
from .cve_doc import CVEDoc
from .host_doc import HostDoc
from .kev_doc import KEVDoc
from .notification_doc import NotificationDoc
from .place_doc import PlaceDoc
from .request_doc import RequestDoc
from .system_control_doc import SystemControlDoc
from .tally_doc import TallyDoc
from .ticket_doc import TicketDoc


__all__ = [
"CVEDoc",
"HostDoc",
"HostScanDoc",
"KEVDoc",
"NotificationDoc",
"PlaceDoc",
"PortScanDoc",
"RequestDoc",
"ReportDoc",
"ScanDoc",
"SnapshotDoc",
"SystemControlDoc",
"TallyDoc",
"TicketDoc",
"VulnScanDoc",
]
Loading
Loading