mrok 0.1.5__py3-none-any.whl → 0.1.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mrok/__init__.py +6 -0
- mrok/agent/__init__.py +0 -0
- mrok/agent/sidecar/__init__.py +3 -0
- mrok/agent/sidecar/app.py +30 -0
- mrok/agent/sidecar/main.py +27 -0
- mrok/agent/ziticorn.py +29 -0
- mrok/cli/__init__.py +3 -0
- mrok/cli/commands/__init__.py +7 -0
- mrok/cli/commands/admin/__init__.py +10 -0
- mrok/cli/commands/admin/bootstrap.py +58 -0
- mrok/cli/commands/admin/register/__init__.py +8 -0
- mrok/cli/commands/admin/register/extensions.py +46 -0
- mrok/cli/commands/admin/register/instances.py +60 -0
- mrok/cli/commands/admin/unregister/__init__.py +8 -0
- mrok/cli/commands/admin/unregister/extensions.py +33 -0
- mrok/cli/commands/admin/unregister/instances.py +34 -0
- mrok/cli/commands/admin/utils.py +23 -0
- mrok/cli/commands/agent/__init__.py +6 -0
- mrok/cli/commands/agent/run/__init__.py +7 -0
- mrok/cli/commands/agent/run/asgi.py +49 -0
- mrok/cli/commands/agent/run/sidecar.py +54 -0
- mrok/cli/commands/controller/__init__.py +7 -0
- mrok/cli/commands/controller/openapi.py +47 -0
- mrok/cli/commands/controller/run.py +87 -0
- mrok/cli/main.py +97 -0
- mrok/cli/rich.py +18 -0
- mrok/conf.py +32 -0
- mrok/controller/__init__.py +0 -0
- mrok/controller/app.py +62 -0
- mrok/controller/auth.py +87 -0
- mrok/controller/dependencies/__init__.py +4 -0
- mrok/controller/dependencies/conf.py +7 -0
- mrok/controller/dependencies/ziti.py +27 -0
- mrok/controller/openapi/__init__.py +3 -0
- mrok/controller/openapi/examples.py +44 -0
- mrok/controller/openapi/utils.py +35 -0
- mrok/controller/pagination.py +79 -0
- mrok/controller/routes.py +294 -0
- mrok/controller/schemas.py +67 -0
- mrok/errors.py +2 -0
- mrok/http/__init__.py +0 -0
- mrok/http/config.py +65 -0
- mrok/http/forwarder.py +299 -0
- mrok/http/lifespan.py +10 -0
- mrok/http/master.py +90 -0
- mrok/http/protocol.py +11 -0
- mrok/http/server.py +14 -0
- mrok/logging.py +76 -0
- mrok/ziti/__init__.py +15 -0
- mrok/ziti/api.py +467 -0
- mrok/ziti/bootstrap.py +71 -0
- mrok/ziti/constants.py +6 -0
- mrok/ziti/errors.py +25 -0
- mrok/ziti/identities.py +161 -0
- mrok/ziti/pki.py +52 -0
- mrok/ziti/services.py +87 -0
- {mrok-0.1.5.dist-info → mrok-0.1.7.dist-info}/METADATA +7 -9
- mrok-0.1.7.dist-info/RECORD +61 -0
- {mrok-0.1.5.dist-info → mrok-0.1.7.dist-info}/WHEEL +1 -2
- mrok-0.1.5.dist-info/RECORD +0 -6
- mrok-0.1.5.dist-info/top_level.txt +0 -1
- {mrok-0.1.5.dist-info → mrok-0.1.7.dist-info}/entry_points.txt +0 -0
- {mrok-0.1.5.dist-info → mrok-0.1.7.dist-info}/licenses/LICENSE.txt +0 -0
mrok/ziti/identities.py
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import jwt
|
|
5
|
+
|
|
6
|
+
from mrok.ziti import pki
|
|
7
|
+
from mrok.ziti.api import TagsType, ZitiClientAPI, ZitiManagementAPI
|
|
8
|
+
from mrok.ziti.constants import MROK_SERVICE_TAG_NAME
|
|
9
|
+
from mrok.ziti.errors import (
|
|
10
|
+
ProxyIdentityAlreadyExistsError,
|
|
11
|
+
ServiceNotFoundError,
|
|
12
|
+
UserIdentityNotFoundError,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger("mrok.ziti")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
async def register_instance(
|
|
19
|
+
mgmt_api: ZitiManagementAPI,
|
|
20
|
+
client_api: ZitiClientAPI,
|
|
21
|
+
extension_id: str,
|
|
22
|
+
instance_id: str,
|
|
23
|
+
tags: TagsType | None = None,
|
|
24
|
+
):
|
|
25
|
+
service_name = extension_id.lower()
|
|
26
|
+
tags = tags or {}
|
|
27
|
+
tags[MROK_SERVICE_TAG_NAME] = service_name
|
|
28
|
+
service = await mgmt_api.search_service(service_name)
|
|
29
|
+
if not service:
|
|
30
|
+
raise ServiceNotFoundError(f"A service with name `{extension_id}` does not exists.")
|
|
31
|
+
|
|
32
|
+
identity_name = f"{instance_id.lower()}.{service_name}"
|
|
33
|
+
service_policy_name = f"{identity_name}:bind"
|
|
34
|
+
|
|
35
|
+
identity = await mgmt_api.search_identity(identity_name)
|
|
36
|
+
if identity:
|
|
37
|
+
service_policy = await mgmt_api.search_service_policy(service_policy_name)
|
|
38
|
+
if service_policy:
|
|
39
|
+
await mgmt_api.delete_service_policy(service_policy["id"])
|
|
40
|
+
router_policy = await mgmt_api.search_router_policy(identity_name)
|
|
41
|
+
if router_policy:
|
|
42
|
+
await mgmt_api.delete_router_policy(router_policy["id"])
|
|
43
|
+
await mgmt_api.delete_identity(identity["id"])
|
|
44
|
+
|
|
45
|
+
identity_id = await mgmt_api.create_user_identity(identity_name, tags=tags)
|
|
46
|
+
identity = await mgmt_api.get_identity(identity_id)
|
|
47
|
+
|
|
48
|
+
identity_json = await _enroll_identity(
|
|
49
|
+
mgmt_api,
|
|
50
|
+
client_api,
|
|
51
|
+
identity_id,
|
|
52
|
+
identity,
|
|
53
|
+
mrok={
|
|
54
|
+
"identity": identity_name,
|
|
55
|
+
"extension": extension_id,
|
|
56
|
+
"instance": instance_id,
|
|
57
|
+
},
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
await mgmt_api.create_bind_service_policy(service_policy_name, service["id"], identity_id)
|
|
61
|
+
await mgmt_api.create_router_policy(identity_name, identity_id)
|
|
62
|
+
|
|
63
|
+
return identity, identity_json
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
async def unregister_instance(
|
|
67
|
+
mgmt_api: ZitiManagementAPI,
|
|
68
|
+
extension_id: str,
|
|
69
|
+
instance_id: str,
|
|
70
|
+
):
|
|
71
|
+
service_name = extension_id.lower()
|
|
72
|
+
service = await mgmt_api.search_service(service_name)
|
|
73
|
+
if not service:
|
|
74
|
+
raise ServiceNotFoundError(f"A service with name `{extension_id}` does not exists.")
|
|
75
|
+
|
|
76
|
+
identity_name = f"{instance_id.lower()}.{service_name}"
|
|
77
|
+
service_policy_name = f"{identity_name}:bind"
|
|
78
|
+
|
|
79
|
+
identity = await mgmt_api.search_identity(identity_name)
|
|
80
|
+
if not identity:
|
|
81
|
+
raise UserIdentityNotFoundError(f"Instance `{instance_id}` not found.")
|
|
82
|
+
|
|
83
|
+
service_policy = await mgmt_api.search_service_policy(service_policy_name)
|
|
84
|
+
if service_policy:
|
|
85
|
+
await mgmt_api.delete_service_policy(service_policy["id"])
|
|
86
|
+
router_policy = await mgmt_api.search_router_policy(identity_name)
|
|
87
|
+
if router_policy:
|
|
88
|
+
await mgmt_api.delete_router_policy(router_policy["id"])
|
|
89
|
+
await mgmt_api.delete_identity(identity["id"])
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
async def enroll_proxy_identity(
|
|
93
|
+
mgmt_api: ZitiManagementAPI,
|
|
94
|
+
client_api: ZitiClientAPI,
|
|
95
|
+
identity_name: str,
|
|
96
|
+
tags: TagsType | None = None,
|
|
97
|
+
):
|
|
98
|
+
identity = await mgmt_api.search_identity(identity_name)
|
|
99
|
+
if identity:
|
|
100
|
+
raise ProxyIdentityAlreadyExistsError(
|
|
101
|
+
f"A proxy identity with name `{identity_name}` already exists."
|
|
102
|
+
)
|
|
103
|
+
identity_id = await mgmt_api.create_device_identity(identity_name, tags=tags)
|
|
104
|
+
identity_json = await _enroll_identity(mgmt_api, client_api, identity_id)
|
|
105
|
+
logger.info(f"Enrolled proxy identity '{identity_name}'")
|
|
106
|
+
|
|
107
|
+
return identity_id, identity_json
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
async def _enroll_identity(
|
|
111
|
+
mgmt_api: ZitiManagementAPI,
|
|
112
|
+
client_api: ZitiClientAPI,
|
|
113
|
+
identity_id: str,
|
|
114
|
+
identity: dict[str, Any] | None = None,
|
|
115
|
+
mrok: dict[str, str] | None = None,
|
|
116
|
+
):
|
|
117
|
+
if identity is None:
|
|
118
|
+
identity = await mgmt_api.get_identity(identity_id)
|
|
119
|
+
|
|
120
|
+
claims = _get_enroll_token_claims(identity)
|
|
121
|
+
pkey_pem, csr_pem = pki.generate_key_and_csr(identity_id)
|
|
122
|
+
|
|
123
|
+
enroll_response = await client_api.enroll_identity(claims["jti"], csr_pem)
|
|
124
|
+
certificate_pem = enroll_response["data"]["cert"]
|
|
125
|
+
ca_pem = await pki.get_ca_certificates(mgmt_api)
|
|
126
|
+
|
|
127
|
+
return _generate_identity_json(
|
|
128
|
+
client_api.base_url,
|
|
129
|
+
pkey_pem,
|
|
130
|
+
certificate_pem,
|
|
131
|
+
ca_pem,
|
|
132
|
+
mrok=mrok,
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _get_enroll_token_claims(identity: dict[str, Any]):
|
|
137
|
+
jwt_token = identity["enrollment"]["ott"]["jwt"]
|
|
138
|
+
return jwt.decode(jwt_token, algorithms=["RS256"], options={"verify_signature": False})
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def _generate_identity_json(
|
|
142
|
+
ziti_api_url: str,
|
|
143
|
+
pkey_pem: str,
|
|
144
|
+
certificate_pem: str,
|
|
145
|
+
ca_pem: str,
|
|
146
|
+
mrok: dict | None = None,
|
|
147
|
+
) -> dict[str, Any]:
|
|
148
|
+
identity = {
|
|
149
|
+
"ztAPI": ziti_api_url,
|
|
150
|
+
"ztAPIs": None,
|
|
151
|
+
"configTypes": None,
|
|
152
|
+
"id": {
|
|
153
|
+
"key": f"pem:{pkey_pem}",
|
|
154
|
+
"cert": f"pem:{certificate_pem}",
|
|
155
|
+
"ca": f"pem:{ca_pem}",
|
|
156
|
+
},
|
|
157
|
+
"enableHa": False,
|
|
158
|
+
}
|
|
159
|
+
if mrok:
|
|
160
|
+
identity["mrok"] = mrok
|
|
161
|
+
return identity
|
mrok/ziti/pki.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import base64
|
|
2
|
+
|
|
3
|
+
from cryptography import x509
|
|
4
|
+
from cryptography.hazmat.primitives import hashes, serialization
|
|
5
|
+
from cryptography.hazmat.primitives.asymmetric import rsa
|
|
6
|
+
from cryptography.hazmat.primitives.serialization.pkcs7 import load_der_pkcs7_certificates
|
|
7
|
+
from cryptography.x509.oid import NameOID
|
|
8
|
+
|
|
9
|
+
from mrok.ziti.api import ZitiManagementAPI
|
|
10
|
+
|
|
11
|
+
_ca_certificates = None
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
async def get_ca_certificates(mgmt_api: ZitiManagementAPI) -> str:
|
|
15
|
+
global _ca_certificates
|
|
16
|
+
if not _ca_certificates:
|
|
17
|
+
cas_pkcs7 = await mgmt_api.fetch_ca_certificates()
|
|
18
|
+
pkcs7_bytes = base64.b64decode(cas_pkcs7)
|
|
19
|
+
pkcs7_certs = load_der_pkcs7_certificates(pkcs7_bytes)
|
|
20
|
+
ca_certificates = []
|
|
21
|
+
for cert in pkcs7_certs:
|
|
22
|
+
cert_pem = cert.public_bytes(serialization.Encoding.PEM)
|
|
23
|
+
ca_certificates.append(cert_pem.decode("utf-8"))
|
|
24
|
+
_ca_certificates = "\n".join(ca_certificates)
|
|
25
|
+
return _ca_certificates
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def generate_key_and_csr(identity_id: str, key_size: int = 4096) -> tuple[str, str]:
|
|
29
|
+
private_key = rsa.generate_private_key(public_exponent=65537, key_size=key_size)
|
|
30
|
+
subject = x509.Name(
|
|
31
|
+
[
|
|
32
|
+
x509.NameAttribute(NameOID.COUNTRY_NAME, "CH"),
|
|
33
|
+
x509.NameAttribute(NameOID.ORGANIZATION_NAME, "SoftwareOne"),
|
|
34
|
+
x509.NameAttribute(NameOID.ORGANIZATIONAL_UNIT_NAME, "Marketplace Platform"),
|
|
35
|
+
x509.NameAttribute(NameOID.COMMON_NAME, identity_id),
|
|
36
|
+
]
|
|
37
|
+
)
|
|
38
|
+
csr = (
|
|
39
|
+
x509.CertificateSigningRequestBuilder()
|
|
40
|
+
.subject_name(subject)
|
|
41
|
+
.sign(private_key, hashes.SHA256())
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
key_pem = private_key.private_bytes(
|
|
45
|
+
encoding=serialization.Encoding.PEM,
|
|
46
|
+
format=serialization.PrivateFormat.PKCS8,
|
|
47
|
+
encryption_algorithm=serialization.NoEncryption(),
|
|
48
|
+
).decode()
|
|
49
|
+
|
|
50
|
+
csr_pem = csr.public_bytes(serialization.Encoding.PEM).decode()
|
|
51
|
+
|
|
52
|
+
return key_pem, csr_pem
|
mrok/ziti/services.py
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from mrok.conf import Settings
|
|
5
|
+
from mrok.ziti.api import TagsType, ZitiManagementAPI
|
|
6
|
+
from mrok.ziti.errors import (
|
|
7
|
+
ConfigTypeNotFoundError,
|
|
8
|
+
ProxyIdentityNotFoundError,
|
|
9
|
+
ServiceAlreadyRegisteredError,
|
|
10
|
+
ServiceNotFoundError,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def register_extension(
|
|
17
|
+
settings: Settings, mgmt_api: ZitiManagementAPI, extension_id: str, tags: TagsType | None
|
|
18
|
+
) -> dict[str, Any]:
|
|
19
|
+
service_name = extension_id.lower()
|
|
20
|
+
registered = False
|
|
21
|
+
proxy_identity = await mgmt_api.search_identity(settings.proxy.identity)
|
|
22
|
+
if not proxy_identity:
|
|
23
|
+
raise ProxyIdentityNotFoundError(
|
|
24
|
+
f"Identity for proxy `{settings.proxy.identity}` not found.",
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
config_type = await mgmt_api.search_config_type(f"{settings.proxy.mode}.proxy.v1")
|
|
28
|
+
if not config_type:
|
|
29
|
+
raise ConfigTypeNotFoundError(f"Config type `{settings.proxy.mode}.proxy.v1` not found.")
|
|
30
|
+
|
|
31
|
+
config = await mgmt_api.search_config(service_name)
|
|
32
|
+
if not config:
|
|
33
|
+
config_id = await mgmt_api.create_config(service_name, config_type["id"], tags=tags)
|
|
34
|
+
registered = True
|
|
35
|
+
else:
|
|
36
|
+
config_id = config["id"]
|
|
37
|
+
service = await mgmt_api.search_service(service_name)
|
|
38
|
+
if not service:
|
|
39
|
+
service_id = await mgmt_api.create_service(service_name, config_id, tags=tags)
|
|
40
|
+
service = await mgmt_api.get_service(service_id)
|
|
41
|
+
registered = True
|
|
42
|
+
else:
|
|
43
|
+
service_id = service["id"]
|
|
44
|
+
proxy_identity_id = proxy_identity["id"]
|
|
45
|
+
service_policy_name = f"{service_name}:{settings.proxy.identity}:dial"
|
|
46
|
+
dial_service_policy = await mgmt_api.search_service_policy(service_policy_name)
|
|
47
|
+
if not dial_service_policy:
|
|
48
|
+
await mgmt_api.create_dial_service_policy(
|
|
49
|
+
service_policy_name,
|
|
50
|
+
service_id,
|
|
51
|
+
proxy_identity_id,
|
|
52
|
+
tags=tags,
|
|
53
|
+
)
|
|
54
|
+
registered = True
|
|
55
|
+
|
|
56
|
+
router_policy = await mgmt_api.search_service_router_policy(service_name)
|
|
57
|
+
if not router_policy:
|
|
58
|
+
await mgmt_api.create_service_router_policy(service_name, service_id, tags=tags)
|
|
59
|
+
registered = True
|
|
60
|
+
if not registered:
|
|
61
|
+
raise ServiceAlreadyRegisteredError(f"Extension `{extension_id}` already registered.")
|
|
62
|
+
return service
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
async def unregister_extension(
|
|
66
|
+
settings: Settings, mgmt_api: ZitiManagementAPI, extension_id: str
|
|
67
|
+
) -> None:
|
|
68
|
+
service_name = extension_id.lower()
|
|
69
|
+
service = await mgmt_api.search_service(service_name)
|
|
70
|
+
if not service:
|
|
71
|
+
raise ServiceNotFoundError(f"Extension `{extension_id}` not found.")
|
|
72
|
+
|
|
73
|
+
router_policy = await mgmt_api.search_service_router_policy(service_name)
|
|
74
|
+
if router_policy:
|
|
75
|
+
await mgmt_api.delete_service_router_policy(router_policy["id"])
|
|
76
|
+
|
|
77
|
+
service_policy_name = f"{service_name}:{settings.proxy.identity}:dial"
|
|
78
|
+
|
|
79
|
+
dial_service_policy = await mgmt_api.search_service_policy(service_policy_name)
|
|
80
|
+
if dial_service_policy:
|
|
81
|
+
await mgmt_api.delete_service_policy(dial_service_policy["id"])
|
|
82
|
+
|
|
83
|
+
config = await mgmt_api.search_config(service_name)
|
|
84
|
+
if config:
|
|
85
|
+
await mgmt_api.delete_config(config["id"])
|
|
86
|
+
|
|
87
|
+
await mgmt_api.delete_service(service["id"])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mrok
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: MPT Extensions OpenZiti Orchestrator
|
|
5
5
|
Author: SoftwareOne AG
|
|
6
6
|
License: Apache License
|
|
@@ -204,16 +204,14 @@ License: Apache License
|
|
|
204
204
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
205
205
|
See the License for the specific language governing permissions and
|
|
206
206
|
limitations under the License.
|
|
207
|
-
|
|
208
|
-
Requires-Python: <4,>=3.12
|
|
209
|
-
Description-Content-Type: text/markdown
|
|
210
207
|
License-File: LICENSE.txt
|
|
208
|
+
Requires-Python: <4,>=3.12
|
|
211
209
|
Requires-Dist: cryptography<46.0.0,>=45.0.7
|
|
212
210
|
Requires-Dist: dynaconf<4.0.0,>=3.2.11
|
|
213
211
|
Requires-Dist: fastapi-pagination<0.15.0,>=0.14.1
|
|
214
|
-
Requires-Dist: fastapi[standard]<0.
|
|
212
|
+
Requires-Dist: fastapi[standard]<0.120.0,>=0.119.0
|
|
215
213
|
Requires-Dist: gunicorn<24.0.0,>=23.0.0
|
|
216
|
-
Requires-Dist: httptools<0.
|
|
214
|
+
Requires-Dist: httptools<0.8.0,>=0.7.1
|
|
217
215
|
Requires-Dist: httpx<0.29.0,>=0.28.1
|
|
218
216
|
Requires-Dist: openziti<2.0.0,>=1.3.1
|
|
219
217
|
Requires-Dist: pydantic<3.0.0,>=2.11.7
|
|
@@ -221,9 +219,9 @@ Requires-Dist: pyfiglet<2.0.0,>=1.0.4
|
|
|
221
219
|
Requires-Dist: pyjwt<3.0.0,>=2.10.1
|
|
222
220
|
Requires-Dist: pyyaml<7.0.0,>=6.0.2
|
|
223
221
|
Requires-Dist: rich<15.0.0,>=14.1.0
|
|
224
|
-
Requires-Dist: typer<0.
|
|
225
|
-
Requires-Dist: uvicorn-worker<0.
|
|
226
|
-
|
|
222
|
+
Requires-Dist: typer<0.20.0,>=0.19.2
|
|
223
|
+
Requires-Dist: uvicorn-worker<0.5.0,>=0.4.0
|
|
224
|
+
Description-Content-Type: text/markdown
|
|
227
225
|
|
|
228
226
|
[](https://github.com/astral-sh/ruff) [](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mrok) [](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mrok)
|
|
229
227
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
mrok/__init__.py,sha256=D1PUs3KtMCqG4bFLceVNG62L3RN53NS95uSCNXpgvzs,181
|
|
2
|
+
mrok/conf.py,sha256=iDMxJtorJWxK0mI-pGEi1TBd_064R-VLcWzHB4esUlE,661
|
|
3
|
+
mrok/errors.py,sha256=ruNMDFr2_0ezCGXuCG1OswCEv-bHOIzMMd02J_0ABcs,37
|
|
4
|
+
mrok/logging.py,sha256=4F5rviPK1-MWWMZuHfzNNQmGxg-emAPRdKz0PsWDSww,2261
|
|
5
|
+
mrok/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
mrok/agent/ziticorn.py,sha256=sWtX7cyaIks8_Re3RmLlcgFPGOZ7-xBqdv6TZ50I1ac,765
|
|
7
|
+
mrok/agent/sidecar/__init__.py,sha256=DrjJGhqFyxsVODW06KI20Wpr6HsD2lD6qFCKUXc7GIE,59
|
|
8
|
+
mrok/agent/sidecar/app.py,sha256=QEfPdeFwlerxDbjAqUNtMsnslVUu2h4nCoOVCBFVsy0,992
|
|
9
|
+
mrok/agent/sidecar/main.py,sha256=6HVJRqtxNOKrCQ0XQhQdfWCfjzHJMgBn_zPqtLsIxWw,798
|
|
10
|
+
mrok/cli/__init__.py,sha256=mtFEa8IeS1x6Gm4dUYoSnAxyEzNqbUVSmWxtuZUMR84,61
|
|
11
|
+
mrok/cli/main.py,sha256=DFcYPwDskXi8SKAgEsuP4GMFzaniIf_6bZaSDWvYKDk,2724
|
|
12
|
+
mrok/cli/rich.py,sha256=P3Dyu8EArUR9_0j7DPK7LRx85TWdYdZ1SaJzD_S1ZCE,511
|
|
13
|
+
mrok/cli/commands/__init__.py,sha256=M6Sypb2vAh6qxQQJNIO9xop2DrD6zt6TEp8rbbD7LS0,114
|
|
14
|
+
mrok/cli/commands/admin/__init__.py,sha256=dc5oZVdcLzG0Jroq1eIzX3VslcgP58fBX8aWzZHKYF4,333
|
|
15
|
+
mrok/cli/commands/admin/bootstrap.py,sha256=iOnHctYajgcHrG_Idjn5Y7VVSaWYRIhdgqKSw9TWq9I,1680
|
|
16
|
+
mrok/cli/commands/admin/utils.py,sha256=yd6FWHqsyfgWu8ch9WX8Js18Hvlx7LdzwMHCaB1ExXU,645
|
|
17
|
+
mrok/cli/commands/admin/register/__init__.py,sha256=5Jb_bc2L47MEpQIrOcquzduTFWQ01Jd1U1MpqaR-Ekw,209
|
|
18
|
+
mrok/cli/commands/admin/register/extensions.py,sha256=nX2PUX8hmsWjyp2dGgge2YmkfeGgGXhqk7fwUx99o9o,1489
|
|
19
|
+
mrok/cli/commands/admin/register/instances.py,sha256=_9xpa4rZYmf7SZ58hx103EuEbA3o2FZYbAVmpT8oRhM,1930
|
|
20
|
+
mrok/cli/commands/admin/unregister/__init__.py,sha256=-GjjCPX1pISbWmJK6GpKO3ijGsDQb21URjU1hNu99O4,215
|
|
21
|
+
mrok/cli/commands/admin/unregister/extensions.py,sha256=AVBjHu-Zc7bUZ_YSbvEk41fKByvRl2Hggip1E2c11Mk,1020
|
|
22
|
+
mrok/cli/commands/admin/unregister/instances.py,sha256=UvMEDOw7FhZYz2AZci79sSVKfDxOS7d5GY5iCUtUZRM,1128
|
|
23
|
+
mrok/cli/commands/agent/__init__.py,sha256=Jr9RDSDdRPjbVJ7NhzgjRD-jtr5hD2vvKzDe7XsLnVo,140
|
|
24
|
+
mrok/cli/commands/agent/run/__init__.py,sha256=E_IJCl3BfMffqFASe8gzJwhhQgt5bQfjhuyekVwdEBA,164
|
|
25
|
+
mrok/cli/commands/agent/run/asgi.py,sha256=aqwu_h9WyCDI2Ts8D4zTvawCETNmcke7cX3zIUyRww4,1265
|
|
26
|
+
mrok/cli/commands/agent/run/sidecar.py,sha256=VC6o1Xw6XXB25xh5F2PyPsDe5Sii0cWLVLDrpNIC5hU,1490
|
|
27
|
+
mrok/cli/commands/controller/__init__.py,sha256=2xw-YVN0akiLiuGUU3XbYyZZ0ugOjQ6XhtTkzEKSmMA,161
|
|
28
|
+
mrok/cli/commands/controller/openapi.py,sha256=QLjVao9UkB2vBaGkFi_q_jrlg4Np4ldMRwDIJsrJ7A8,1175
|
|
29
|
+
mrok/cli/commands/controller/run.py,sha256=osyjssb81xNMYZLPb6dfPR4W_BQlCxKDfvl-BIhG_1A,2460
|
|
30
|
+
mrok/controller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
mrok/controller/app.py,sha256=-GPOu7SV3kWDDzMhwvr7hK0oP8m-HWtMmtivpNUppEg,1635
|
|
32
|
+
mrok/controller/auth.py,sha256=Kg94W8yNMs6TvUmLRYv1QeUjDy4qlGZ-_6OHa4KH1zg,2648
|
|
33
|
+
mrok/controller/pagination.py,sha256=raYpYa34q8Ckl4BXBOEdpWlKkFj6z7e6QLWr2HT7dzI,2187
|
|
34
|
+
mrok/controller/routes.py,sha256=j-dLO4yLkUj-rdjnGhO2suvmR690-UdaNvokDZ7ZpF0,8670
|
|
35
|
+
mrok/controller/schemas.py,sha256=zk91PIJ0zncpBgs4bhU-n-76EWlRKo87r3VVx15JxPc,1320
|
|
36
|
+
mrok/controller/dependencies/__init__.py,sha256=voewk6gjkA0OarL6HFmfT_RLqBns0Fpl-VIqK5xVAEI,202
|
|
37
|
+
mrok/controller/dependencies/conf.py,sha256=2Pa8fxJHkZ29q6UL-w6hUP_wr7WnNELfw5LlzWg1Tec,162
|
|
38
|
+
mrok/controller/dependencies/ziti.py,sha256=fYoxeJb4s6p2_3gxbExbFSRabjpvp_gZMBb3ocXZV3Y,702
|
|
39
|
+
mrok/controller/openapi/__init__.py,sha256=U1dw45w76CcoQagyqg_FXdMuJF3qJZZM6wG8TeTe3Zo,101
|
|
40
|
+
mrok/controller/openapi/examples.py,sha256=ZI0BP7L6sI0z7Mq1I3uc2UrweGpzpPeGSIuf1bUKkgg,1419
|
|
41
|
+
mrok/controller/openapi/utils.py,sha256=Kn55ISAWlMJNwrJTum7iFrBvJvr81To76pCK8W-s79Q,1114
|
|
42
|
+
mrok/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
+
mrok/http/config.py,sha256=k8mjvD3ninJn-v1t-co-GSa3upm4b70bWyk3fwdcOh8,2161
|
|
44
|
+
mrok/http/forwarder.py,sha256=mo-Z8B8Zg6kdDX-lWEiptRv-9kJU9cEdmg6gt6eF0cc,11374
|
|
45
|
+
mrok/http/lifespan.py,sha256=9qevhD_5Y0f8fGTh2axdfWx7v1K4vnWtiUNyJLesOHE,262
|
|
46
|
+
mrok/http/master.py,sha256=o_0Sxe2XuTgVAwvBbWkYcO3HkCcfvYP4rgxcuIDPwXo,2426
|
|
47
|
+
mrok/http/protocol.py,sha256=ap8jbLUvgbAH81ZJZCBkQiYR7mkV_eL3rpfwEkoE8sU,392
|
|
48
|
+
mrok/http/server.py,sha256=Mj7C85fc-DXp-WTBWaOd7ag808oliLmFBH5bf-G2FHg,370
|
|
49
|
+
mrok/ziti/__init__.py,sha256=20OWMiexRhOovZOX19zlX87-V78QyWnEnSZfyAftUdE,263
|
|
50
|
+
mrok/ziti/api.py,sha256=vWu9XXptPCcuaoI0c0VM4QFd_vmh2ZgdmqQSzZ-kIPk,15700
|
|
51
|
+
mrok/ziti/bootstrap.py,sha256=pg-8tt2t2Xt-o85UZe2ixfEtX_6eDuK5gqaCbfuCD6Q,2522
|
|
52
|
+
mrok/ziti/constants.py,sha256=VO0LnsXZse2q4TW6HYqO6nrSQ8wX1673iEy-s9Y7jPU,192
|
|
53
|
+
mrok/ziti/errors.py,sha256=yYCbVDwktnR0AYduqtynIjo73K3HOhIrwA_vQimvEd4,368
|
|
54
|
+
mrok/ziti/identities.py,sha256=nVdXVeAGnW8slwy_X2N52vSDXbIF_TMD46751ajJpgE,5088
|
|
55
|
+
mrok/ziti/pki.py,sha256=-V3LDAtntYZ4C6IH2rqfAANxmzpOZ32Rd0MK_27YNME,1906
|
|
56
|
+
mrok/ziti/services.py,sha256=JnznLTHNZjgbFwnBtv7y2XIp4NiQxLVawwP9EfWdVuM,3208
|
|
57
|
+
mrok-0.1.7.dist-info/METADATA,sha256=Z0jLZf_ZJeUJ8pTe6xy64GDbToee3XDCX72HM242ZjU,15506
|
|
58
|
+
mrok-0.1.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
59
|
+
mrok-0.1.7.dist-info/entry_points.txt,sha256=tloXwvU1uJicBJR2h-8HoVclPgwJWDwuREMHN8Zq-nU,38
|
|
60
|
+
mrok-0.1.7.dist-info/licenses/LICENSE.txt,sha256=6PaICaoA3yNsZKLv5G6OKqSfLSoX7MakYqTDgJoTCBs,11346
|
|
61
|
+
mrok-0.1.7.dist-info/RECORD,,
|
mrok-0.1.5.dist-info/RECORD
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
mrok-0.1.5.dist-info/licenses/LICENSE.txt,sha256=6PaICaoA3yNsZKLv5G6OKqSfLSoX7MakYqTDgJoTCBs,11346
|
|
2
|
-
mrok-0.1.5.dist-info/METADATA,sha256=zJ7pRHCP2V5bzmDybaox21a2jwLal0RGfI8H7RcNHLo,15537
|
|
3
|
-
mrok-0.1.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
4
|
-
mrok-0.1.5.dist-info/entry_points.txt,sha256=tloXwvU1uJicBJR2h-8HoVclPgwJWDwuREMHN8Zq-nU,38
|
|
5
|
-
mrok-0.1.5.dist-info/top_level.txt,sha256=sNZMiNdOxFlZFRGJlEErzMWaCb2wTJXuQVeGigF66Us,5
|
|
6
|
-
mrok-0.1.5.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
mrok
|
|
File without changes
|
|
File without changes
|