Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
22 changes: 22 additions & 0 deletions services/albwaf/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# stackit.albwaf
Generate a Web Application Firewall (WAF) to use with Application Load Balancers (ALB). The name of the WAF configuration is used in the listener of the ALB. This will activate the WAF for that ALB. An ALB with a WAF can have Managed Rule Set (MRS) and in addition can have Custom Rule Group (CRG). To create a WAF one first needs to create all the configurations that are referenced in the WAF configuration. Currently this only consists of a rule configuration, which is written in Seclang. Once all configurations are created and referenced in the WAF configuration it can be used with an ALB. Currently updating a WAF configuration will not update an existing ALB until the Load Balancer VMs are restarted.


This package is part of the STACKIT Python SDK. For additional information, please visit the [GitHub repository](https://github.com/stackitcloud/stackit-sdk-python) of the SDK.


## Installation & Usage
### pip install

```sh
pip install stackit-albwaf
```

Then import the package:
```python
import stackit.albwaf
```

## Getting Started

[Examples](https://github.com/stackitcloud/stackit-sdk-python/tree/main/examples) for the usage of the package can be found in the [GitHub repository](https://github.com/stackitcloud/stackit-sdk-python) of the SDK.
1 change: 1 addition & 0 deletions services/albwaf/oas_commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cad0d887d9679d3cbf1f8b74968b7a87edf956e2
111 changes: 111 additions & 0 deletions services/albwaf/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
[project]
name = "stackit-albwaf"
version = "v0.0.1a"
description = "STACKIT Application Load Balancer Web Application Firewall API"
authors = [{name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud"}]
requires-python = ">=3.9,<4.0"
readme = "README.md"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [
"stackit-core>=0.0.1a",
"requests>=2.32.3",
"pydantic>=2.9.2",
"python-dateutil>=2.9.0.post0",
]

[project.urls]
Homepage = "https://github.com/stackitcloud/stackit-sdk-python"
Issues = "https://github.com/stackitcloud/stackit-sdk-python/issues"

[dependency-groups]
dev = [
"black>=24.8.0",
"pytest>=8.3.3",
"flake8>=5.0.3 ; python_full_version < '3.12'",
"flake8>=6.0.1 ; python_full_version >= '3.12'",
"flake8-black>=0.3.6",
"flake8-pyproject>=1.2.3",
"autoimport>=1.6.1",
"flake8-eol>=0.0.8",
"flake8-eradicate>=1.5.0",
"flake8-bandit>=4.1.1",
"flake8-bugbear>=23.1.14",
"flake8-quotes>=3.4.0",
"isort>=5.13.2",
]

[tool.uv]
default-groups = "all"

[tool.uv.sources]
stackit-core = { path = "../../core" }

[tool.hatch.build.targets.sdist]
include = ["src/stackit"]

[tool.hatch.build.targets.wheel]
include = ["src/stackit"]

[tool.hatch.build.targets.wheel-sources]
"src/stackit" = "stackit"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.pytest.ini_options]
pythonpath = [
"src"
]
testpaths = [
"tests"
]

[tool.black]
line-length = 120
exclude = """
/(
.eggs
| .git
| .hg
| .mypy_cache
| .nox
| .pants.d
| .tox
| .venv
| _build
| buck-out
| build
| dist
| node_modules
| venv
)/
"""

[tool.isort]
profile = 'black'

[tool.flake8]
exclude= [".eggs", ".git", ".hg", ".mypy_cache", ".tox", ".venv", ".devcontainer", "venv", "_build", "buck-out", "build", "dist"]
statistics = true
show-source = false
max-line-length = 120
# E203,W503 and E704 are incompatible with the formatter black
# W291 needs to be disabled because some doc-strings get generated with trailing whitespace but black won't re-format comments
ignore = ["E203", "W503", "E704", "W291"]
inline-quotes = '"'
docstring-quotes = '"""'
multiline-quotes = '"""'
ban-relative-imports = true
# Exclude generated code
extend-exclude = [ "src/stackit/*/models/*", "src/stackit/*/api/*", "src/stackit/*/*.py" ]
147 changes: 147 additions & 0 deletions services/albwaf/src/stackit/albwaf/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# coding: utf-8

# flake8: noqa

"""
STACKIT Application Load Balancer Web Application Firewall API

Generate a Web Application Firewall (WAF) to use with Application Load Balancers (ALB). The name of the WAF configuration is used in the listener of the ALB. This will activate the WAF for that ALB. An ALB with a WAF can have Managed Rule Set (MRS) and in addition can have Custom Rule Group (CRG). To create a WAF one first needs to create all the configurations that are referenced in the WAF configuration. Currently this only consists of a rule configuration, which is written in Seclang. Once all configurations are created and referenced in the WAF configuration it can be used with an ALB. Currently updating a WAF configuration will not update an existing ALB until the Load Balancer VMs are restarted.

The version of the OpenAPI document: 1beta.0.0
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
""" # noqa: E501


__version__ = "1.0.0"

# Define package exports
__all__ = [
"DefaultApi",
"ApiResponse",
"ApiClient",
"HostConfiguration",
"OpenApiException",
"ApiTypeError",
"ApiValueError",
"ApiKeyError",
"ApiAttributeError",
"ApiException",
"Behaviour",
"CRGConfigQuota",
"CRGUsage",
"Condition",
"ConditionOperator",
"ConditionVariable",
"CreateCustomRule",
"CreateCustomRuleGroupPayload",
"CreateManagedRuleSetPayload",
"CreateWAFPayload",
"GetBehaviour",
"GetCustomRule",
"GetCustomRuleGroupResponse",
"GetLimitedManagedRuleSetResponse",
"GetManagedRuleSetResponse",
"GetQuotaResponse",
"GetWAFResponse",
"GoogleProtobufAny",
"ListCustomRuleGroupResponse",
"ListManagedRuleSetResponse",
"ListWAFResponse",
"MRSConfigQuota",
"MRSRule",
"MRSRuleGroup",
"MRSUsage",
"PatchMRSRule",
"PatchMRSRuleGroup",
"PatchManagedRuleSetPayload",
"Quotas",
"Status",
"UpdateWAFPayload",
"WAFConfigQuota",
"WAFUsage",
"WAFUsageItem",
]

# import apis into sdk package
from stackit.albwaf.api.default_api import DefaultApi as DefaultApi
from stackit.albwaf.api_client import ApiClient as ApiClient

# import ApiClient
from stackit.albwaf.api_response import ApiResponse as ApiResponse
from stackit.albwaf.configuration import HostConfiguration as HostConfiguration
from stackit.albwaf.exceptions import ApiAttributeError as ApiAttributeError
from stackit.albwaf.exceptions import ApiException as ApiException
from stackit.albwaf.exceptions import ApiKeyError as ApiKeyError
from stackit.albwaf.exceptions import ApiTypeError as ApiTypeError
from stackit.albwaf.exceptions import ApiValueError as ApiValueError
from stackit.albwaf.exceptions import OpenApiException as OpenApiException

# import models into sdk package
from stackit.albwaf.models.behaviour import Behaviour as Behaviour
from stackit.albwaf.models.condition import Condition as Condition
from stackit.albwaf.models.condition_operator import (
ConditionOperator as ConditionOperator,
)
from stackit.albwaf.models.condition_variable import (
ConditionVariable as ConditionVariable,
)
from stackit.albwaf.models.create_custom_rule import (
CreateCustomRule as CreateCustomRule,
)
from stackit.albwaf.models.create_custom_rule_group_payload import (
CreateCustomRuleGroupPayload as CreateCustomRuleGroupPayload,
)
from stackit.albwaf.models.create_managed_rule_set_payload import (
CreateManagedRuleSetPayload as CreateManagedRuleSetPayload,
)
from stackit.albwaf.models.create_waf_payload import (
CreateWAFPayload as CreateWAFPayload,
)
from stackit.albwaf.models.crg_config_quota import CRGConfigQuota as CRGConfigQuota
from stackit.albwaf.models.crg_usage import CRGUsage as CRGUsage
from stackit.albwaf.models.get_behaviour import GetBehaviour as GetBehaviour
from stackit.albwaf.models.get_custom_rule import GetCustomRule as GetCustomRule
from stackit.albwaf.models.get_custom_rule_group_response import (
GetCustomRuleGroupResponse as GetCustomRuleGroupResponse,
)
from stackit.albwaf.models.get_limited_managed_rule_set_response import (
GetLimitedManagedRuleSetResponse as GetLimitedManagedRuleSetResponse,
)
from stackit.albwaf.models.get_managed_rule_set_response import (
GetManagedRuleSetResponse as GetManagedRuleSetResponse,
)
from stackit.albwaf.models.get_quota_response import (
GetQuotaResponse as GetQuotaResponse,
)
from stackit.albwaf.models.get_waf_response import GetWAFResponse as GetWAFResponse
from stackit.albwaf.models.google_protobuf_any import (
GoogleProtobufAny as GoogleProtobufAny,
)
from stackit.albwaf.models.list_custom_rule_group_response import (
ListCustomRuleGroupResponse as ListCustomRuleGroupResponse,
)
from stackit.albwaf.models.list_managed_rule_set_response import (
ListManagedRuleSetResponse as ListManagedRuleSetResponse,
)
from stackit.albwaf.models.list_waf_response import ListWAFResponse as ListWAFResponse
from stackit.albwaf.models.mrs_config_quota import MRSConfigQuota as MRSConfigQuota
from stackit.albwaf.models.mrs_rule import MRSRule as MRSRule
from stackit.albwaf.models.mrs_rule_group import MRSRuleGroup as MRSRuleGroup
from stackit.albwaf.models.mrs_usage import MRSUsage as MRSUsage
from stackit.albwaf.models.patch_managed_rule_set_payload import (
PatchManagedRuleSetPayload as PatchManagedRuleSetPayload,
)
from stackit.albwaf.models.patch_mrs_rule import PatchMRSRule as PatchMRSRule
from stackit.albwaf.models.patch_mrs_rule_group import (
PatchMRSRuleGroup as PatchMRSRuleGroup,
)
from stackit.albwaf.models.quotas import Quotas as Quotas
from stackit.albwaf.models.status import Status as Status
from stackit.albwaf.models.update_waf_payload import (
UpdateWAFPayload as UpdateWAFPayload,
)
from stackit.albwaf.models.waf_config_quota import WAFConfigQuota as WAFConfigQuota
from stackit.albwaf.models.waf_usage import WAFUsage as WAFUsage
from stackit.albwaf.models.waf_usage_item import WAFUsageItem as WAFUsageItem
4 changes: 4 additions & 0 deletions services/albwaf/src/stackit/albwaf/api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# flake8: noqa

# import apis into api package
from stackit.albwaf.api.default_api import DefaultApi
Loading
Loading