No project description provided
Project description
muddy
muddy is a python package and CLI tool for generating MUD files (RFC8520).
Usage
There are multiple ways to generate MUD objects, depending on the level of abstraction:
from muddy.maker import make_mud
from muddy.models import Direction, IPVersion, Protocol, MatchType
mud = make_mud(1,'https://lighting.example.com/lightbulb2000', 48, True, 'The BMS Example Light Bulb',
'https://lighting.example.com/lightbulb2000/documentation', [Direction.TO_DEVICE,Direction.FROM_DEVICE],
IPVersion.IPV4, 'test.example.com', Protocol.ANY, MatchType.IS_MYMFG, [88,443], [88,443])
or
from muddy.maker import make_mud, make_support_info
from muddy.models import Direction, IPVersion, Protocol, MatchType
support_info = make_support_info(1,'https://lighting.example.com/lightbulb2000', 48, True,
'The BMS Example Light Bulb', 'https://lighting.example.com/lightbulb2000/documentation')
mud = make_mud(support_info , [Direction.TO_DEVICE,Direction.FROM_DEVICE],
IPVersion.IPV4, 'test.example.com', Protocol.ANY, [88,443], [88,443], MatchType.IS_MYMFG)
or
from muddy.maker import make_mud, make_acl_names, make_policy, make_acls
from muddy.models import Direction, IPVersion, Protocol, MatchType
import random
mud_name = f'mud-{random.randint(10000, 99999)}'
acl = []
policies = {}
for direction_initiated in [Direction.TO_DEVICE,Direction.FROM_DEVICE]:
acl_names = make_acl_names(mud_name, IPVersion.IPV4, direction_initiated)
policies.update(make_policy(direction_initiated, acl_names))
acl.append(make_acls([IPVersion.IPV4], 'test.example.com', Protocol.ANY, [88,443], [88,443], MatchType.IS_MYMFG,
direction_initiated, acl_names))
mud = make_mud(policies, acl, 1,'https://lighting.example.com/lightbulb2000', 48, True, 'The BMS Example Light Bulb',
'https://lighting.example.com/lightbulb2000/documentation')
or
from muddy.maker import make_mud, make_acl_names, make_policy, make_acls, make_support_info
from muddy.models import Direction, IPVersion, Protocol, MatchType
import random
support_info = make_support_info(1,'https://lighting.example.com/lightbulb2000', 48, True,
'The BMS Example Light Bulb', 'https://lighting.example.com/lightbulb2000/documentation')
mud_name = f'mud-{random.randint(10000, 99999)}'
acl = []
policies = {}
for direction_initiated in [Direction.TO_DEVICE,Direction.FROM_DEVICE]:
acl_names = make_acl_names(mud_name, IPVersion.IPV4, direction_initiated)
policies.update(make_policy(direction_initiated, acl_names))
acl.append(make_acls([IPVersion.IPV4], 'test.example.com', Protocol.ANY, [88,443], [88,443], MatchType.IS_MYMFG,
direction_initiated,acl_names))
mud = make_mud(support_info, policies, acl)
To obtain JSON for a MUD object, you may just json.dumps(mud)
.
Example output
{
"ietf-mud:mud": {
"mud-version": 1,
"mud-url": "https://lighting.example.com/lightbulb2000",
"last-update": "2019-07-23T19:54:24",
"cache-validity": 48,
"is-supported": true,
"systeminfo": "The BMS Example Light Bulb",
"documentation": "https://lighting.example.com/lightbulb2000/documentation",
"to-device-policy": {
"access-lists": {
"access-list": [
{
"name": "mud-52892-v4to"
}
]
}
},
"from-device-policy": {
"access-lists": {
"access-list": [
{
"name": "mud-52892-v4fr"
}
]
}
}
},
"ietf-access-control-list:acls": {
"acl": [
{
"name": "mud-52892-v4to",
"type": "ipv4",
"aces": {
"ace": [
{
"name": "myman0-todev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
},
{
"name": "myman1-todev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
},
{
"name": "myman1-todev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
},
{
"name": "myman2-todev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
}
]
}
},
{
"name": "mud-52892-v4fr",
"type": "ipv4",
"aces": {
"ace": [
{
"name": "myman0-frdev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
},
{
"name": "myman1-frdev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
},
{
"name": "myman1-frdev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
},
{
"name": "myman2-frdev",
"matches": {
"ietf-mud:mud": {
"same-manufacturer": []
}
},
"actions": {
"forwarding": "accept"
}
}
]
}
}
]
}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
muddy-2019.7.25.post2.tar.gz
(8.9 kB
view details)
Built Distribution
File details
Details for the file muddy-2019.7.25.post2.tar.gz
.
File metadata
- Download URL: muddy-2019.7.25.post2.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ea391e24469b5d820c0750e50c2a4efd4b572cf3106fb0285faf7b7cb9f83d0 |
|
MD5 | e18719222712e6661de0180657ac0c36 |
|
BLAKE2b-256 | dce8ab14f192c4780240531b2999ca0231c54be2c1fe85122c6801ca2dd69c98 |
File details
Details for the file muddy-2019.7.25.post2-py3-none-any.whl
.
File metadata
- Download URL: muddy-2019.7.25.post2-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f360e1914ad97576c065eea9faed1a4911cf45b5d07278b7ea949cfbb5c6ce36 |
|
MD5 | ac194c487fc6da41ad2070e73d0ae9d2 |
|
BLAKE2b-256 | 62f59859acbe4405b8263903c20d04e0834df6f1923606b22260a4c1eaf5ab8f |