mmrelay 1.1.3__py3-none-any.whl → 1.2.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 mmrelay might be problematic. Click here for more details.
- mmrelay/__init__.py +1 -1
- mmrelay/cli.py +1097 -110
- mmrelay/cli_utils.py +696 -0
- mmrelay/config.py +632 -44
- mmrelay/constants/__init__.py +54 -0
- mmrelay/constants/app.py +29 -0
- mmrelay/constants/config.py +78 -0
- mmrelay/constants/database.py +22 -0
- mmrelay/constants/formats.py +20 -0
- mmrelay/constants/messages.py +45 -0
- mmrelay/constants/network.py +42 -0
- mmrelay/constants/queue.py +17 -0
- mmrelay/db_utils.py +281 -132
- mmrelay/e2ee_utils.py +392 -0
- mmrelay/log_utils.py +77 -19
- mmrelay/main.py +101 -30
- mmrelay/matrix_utils.py +1083 -118
- mmrelay/meshtastic_utils.py +374 -118
- mmrelay/message_queue.py +17 -17
- mmrelay/plugin_loader.py +126 -91
- mmrelay/plugins/base_plugin.py +74 -15
- mmrelay/plugins/drop_plugin.py +13 -5
- mmrelay/plugins/mesh_relay_plugin.py +7 -10
- mmrelay/plugins/weather_plugin.py +118 -12
- mmrelay/setup_utils.py +67 -30
- mmrelay/tools/sample-docker-compose-prebuilt.yaml +80 -0
- mmrelay/tools/sample-docker-compose.yaml +34 -8
- mmrelay/tools/sample_config.yaml +29 -4
- {mmrelay-1.1.3.dist-info → mmrelay-1.2.0.dist-info}/METADATA +21 -50
- mmrelay-1.2.0.dist-info/RECORD +45 -0
- mmrelay/config_checker.py +0 -133
- mmrelay-1.1.3.dist-info/RECORD +0 -35
- {mmrelay-1.1.3.dist-info → mmrelay-1.2.0.dist-info}/WHEEL +0 -0
- {mmrelay-1.1.3.dist-info → mmrelay-1.2.0.dist-info}/entry_points.txt +0 -0
- {mmrelay-1.1.3.dist-info → mmrelay-1.2.0.dist-info}/licenses/LICENSE +0 -0
- {mmrelay-1.1.3.dist-info → mmrelay-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mmrelay
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Bridge between Meshtastic mesh networks and Matrix chat rooms
|
|
5
|
-
Home-page: https://github.com/
|
|
5
|
+
Home-page: https://github.com/jeremiah-k/meshtastic-matrix-relay
|
|
6
6
|
Author: Geoff Whittington, Jeremiah K., and contributors
|
|
7
7
|
Author-email: jeremiahk@gmx.com
|
|
8
|
-
Project-URL: Bug Tracker, https://github.com/
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/jeremiah-k/meshtastic-matrix-relay/issues
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
14
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
11
15
|
Classifier: Operating System :: OS Independent
|
|
12
16
|
Classifier: Development Status :: 4 - Beta
|
|
13
17
|
Classifier: Topic :: Communications
|
|
14
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.9
|
|
15
19
|
Description-Content-Type: text/markdown
|
|
16
20
|
License-File: LICENSE
|
|
17
21
|
Requires-Dist: meshtastic>=2.6.4
|
|
@@ -20,12 +24,17 @@ Requires-Dist: matrix-nio==0.25.2
|
|
|
20
24
|
Requires-Dist: matplotlib==3.10.1
|
|
21
25
|
Requires-Dist: requests==2.32.4
|
|
22
26
|
Requires-Dist: markdown==3.8.2
|
|
27
|
+
Requires-Dist: bleach==6.2.0
|
|
23
28
|
Requires-Dist: haversine==2.9.0
|
|
24
29
|
Requires-Dist: schedule==1.2.2
|
|
25
30
|
Requires-Dist: platformdirs==4.3.8
|
|
26
31
|
Requires-Dist: py-staticmaps>=0.4.0
|
|
32
|
+
Requires-Dist: psutil>=5.8.0
|
|
27
33
|
Requires-Dist: rich==14.1.0
|
|
28
34
|
Requires-Dist: setuptools==80.9.0
|
|
35
|
+
Provides-Extra: e2e
|
|
36
|
+
Requires-Dist: matrix-nio[e2e]==0.25.2; extra == "e2e"
|
|
37
|
+
Requires-Dist: python-olm; extra == "e2e"
|
|
29
38
|
Dynamic: author
|
|
30
39
|
Dynamic: author-email
|
|
31
40
|
Dynamic: classifier
|
|
@@ -34,6 +43,7 @@ Dynamic: description-content-type
|
|
|
34
43
|
Dynamic: home-page
|
|
35
44
|
Dynamic: license-file
|
|
36
45
|
Dynamic: project-url
|
|
46
|
+
Dynamic: provides-extra
|
|
37
47
|
Dynamic: requires-dist
|
|
38
48
|
Dynamic: requires-python
|
|
39
49
|
Dynamic: summary
|
|
@@ -55,59 +65,20 @@ A powerful and easy-to-use relay between Meshtastic devices and Matrix chat room
|
|
|
55
65
|
- Configurable through a simple YAML file
|
|
56
66
|
- Supports mapping multiple rooms and channels 1:1
|
|
57
67
|
- Relays messages to/from an MQTT broker, if configured in the Meshtastic firmware
|
|
58
|
-
- ✨️ _Bidirectional replies and reactions support_ ✨️
|
|
59
|
-
- ✨️ _Native Docker support_ ✨️
|
|
68
|
+
- ✨️ _Bidirectional replies and reactions support_ ✨️
|
|
69
|
+
- ✨️ _Native Docker support_ ✨️
|
|
70
|
+
- 🔐 **Matrix End-to-End Encryption (E2EE) support** 🔐 **NEW in v1.2!**
|
|
60
71
|
|
|
61
|
-
|
|
72
|
+
**MMRelay v1.2** introduces full **Matrix End-to-End Encryption** support for secure communication in encrypted rooms. Messages are automatically encrypted/decrypted when communicating with encrypted Matrix rooms, with simple setup using `mmrelay auth login` or automatic credentials creation from config.yaml.
|
|
62
73
|
|
|
63
74
|
## Documentation
|
|
64
75
|
|
|
65
76
|
Visit our [Wiki](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki) for comprehensive guides and information.
|
|
66
77
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Quick Start
|
|
72
|
-
|
|
73
|
-
MMRelay runs on Linux, macOS, and Windows.
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# Install using pipx for isolated installation (recommended)
|
|
77
|
-
pipx install mmrelay
|
|
78
|
-
|
|
79
|
-
# Generate a sample configuration file & then edit it
|
|
80
|
-
mmrelay --generate-config
|
|
81
|
-
|
|
82
|
-
# Start the relay (without --install-service to run manually)
|
|
83
|
-
mmrelay --install-service
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
For detailed installation and configuration instructions, see the [Installation Guide](docs/INSTRUCTIONS.md).
|
|
87
|
-
|
|
88
|
-
## Docker
|
|
78
|
+
MMRelay supports multiple deployment methods including Docker, pip installation, and standalone executables. For complete setup instructions and all deployment options, see:
|
|
89
79
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# Quick setup with Docker
|
|
94
|
-
make setup # Copy config and open editor (first time)
|
|
95
|
-
make build # Build the Docker image
|
|
96
|
-
make run # Start the container
|
|
97
|
-
make logs # View logs
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Docker provides isolated environment, easy deployment, automatic restarts, and volume persistence.
|
|
101
|
-
|
|
102
|
-
For detailed Docker setup instructions, see the [Docker Guide](docs/DOCKER.md).
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Windows Installer
|
|
107
|
-
|
|
108
|
-

|
|
109
|
-
|
|
110
|
-
The latest installer is available in the [releases section](https://github.com/jeremiah-k/meshtastic-matrix-relay/releases).
|
|
80
|
+
- [Installation Instructions](docs/INSTRUCTIONS.md) - Setup and configuration guide
|
|
81
|
+
- [Docker Guide](docs/DOCKER.md) - Docker deployment methods
|
|
111
82
|
|
|
112
83
|
---
|
|
113
84
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
mmrelay/__init__.py,sha256=CcCX3oC0CS1MiZg2aWA5KXA2UXqYLXBT4GP3M07R-cs,120
|
|
2
|
+
mmrelay/cli.py,sha256=LT_DVvhXFPCpGxU5RD4SxNNqtIJyVVD8bwMm9YSz2q8,55711
|
|
3
|
+
mmrelay/cli_utils.py,sha256=z1TfgHM82NdTtO0toGyQrNdeB7F8khtzuLJYjvDG1j8,26380
|
|
4
|
+
mmrelay/config.py,sha256=qajoYz_KCRWCw6ULAND0ysmHqw4Nbv_PjewNrW22O8o,32640
|
|
5
|
+
mmrelay/db_utils.py,sha256=b_cuw4zOwGlvk4CljFh3SguqOi-TRCHW_s9RCt9gUsU,19920
|
|
6
|
+
mmrelay/e2ee_utils.py,sha256=4VL6sP3ln0bZ7ZubE_dSejo0WYMOWqaduWLKnURoeIY,16574
|
|
7
|
+
mmrelay/log_utils.py,sha256=6O-dvt9K5uT89XkA74gcYYQJ5lADAk5U9IVL4mj1XwM,8764
|
|
8
|
+
mmrelay/main.py,sha256=QwOLY6uLvFQZhHRlJrbp_D_-xDuEHQIgEsQ6ME_g1EI,16360
|
|
9
|
+
mmrelay/matrix_utils.py,sha256=at0mME8nWwN-yxGGIlH4GblwGmrJd6DrjlNhM794scU,99146
|
|
10
|
+
mmrelay/meshtastic_utils.py,sha256=86U8vQuWW7xR4E-_n-d7vlQhQ40gO-tJGZcVjzoeFhc,43027
|
|
11
|
+
mmrelay/message_queue.py,sha256=tHKziIPwQ9Xm7qpITyR1r2e-ftdn4ZivdZhek9SmMcQ,18703
|
|
12
|
+
mmrelay/plugin_loader.py,sha256=6SD7eoO0VHnsEPI_YrrnrbeHAjC7okmyUpaA4Eu5AHo,41718
|
|
13
|
+
mmrelay/setup_utils.py,sha256=EAVPmKHQmlXnxMcrkhlU27fBPjJCiwTVSLZdbEFsWLQ,22095
|
|
14
|
+
mmrelay/constants/__init__.py,sha256=M8AXeIcS1JuS8OwmfTmhcCOkAz5XmWlNQ53GBxYOx94,1494
|
|
15
|
+
mmrelay/constants/app.py,sha256=1NoX00c65CcHzQxHjnKCPaFbkJQo3MnNytAe_XmvJUo,714
|
|
16
|
+
mmrelay/constants/config.py,sha256=B1A_OZLLNXHM9rHOwc01ZaJBvFugR2eXlhYYl4nUxlY,2479
|
|
17
|
+
mmrelay/constants/database.py,sha256=4cHfYfBePDUUtVSflrWyStcxKSQv7VE-jSrb1IzAjls,646
|
|
18
|
+
mmrelay/constants/formats.py,sha256=cjbrfNNFCKoGSFsFHR1QQDEQudiGquA9MUapfm0_ZNI,494
|
|
19
|
+
mmrelay/constants/messages.py,sha256=Reu_-6gZGGZQVP6BuqBm01QBhVTFjHVRQSPTUcQJG2Q,1531
|
|
20
|
+
mmrelay/constants/network.py,sha256=QjROOAMxcP1pA1F_gUtuXzm2tORCqo5koqZbwrZRSns,1186
|
|
21
|
+
mmrelay/constants/queue.py,sha256=yyWSrtq06b5GWzZwdl6IFtrMvxEuF9PdKSNPh8DdL2M,565
|
|
22
|
+
mmrelay/plugins/__init__.py,sha256=KVMQIXRhe0wlGj4O3IZ0vOIQRKFkfPYejHXhJL17qrc,51
|
|
23
|
+
mmrelay/plugins/base_plugin.py,sha256=Nh_zz-Z49qYatS4i38C2bLOl1sNDUgWsqpD8NLJdnl0,20807
|
|
24
|
+
mmrelay/plugins/debug_plugin.py,sha256=adX0cRJHUEDLldajybPfiRDDlvytkZe5aN_dSgNKP2Y,870
|
|
25
|
+
mmrelay/plugins/drop_plugin.py,sha256=x4S-e0Muun2Dy1H2qwRMTBB1ptLmy7ZZJhgPu-KefGs,5394
|
|
26
|
+
mmrelay/plugins/health_plugin.py,sha256=svV_GfpAVL0QhiVzi3PVZ1mNpsOL1NHSmkRF-Mn_ExE,2250
|
|
27
|
+
mmrelay/plugins/help_plugin.py,sha256=S7nBhsANK46Zv9wPHOVegPGcuYGMErBsxAnrRlSSCwg,2149
|
|
28
|
+
mmrelay/plugins/map_plugin.py,sha256=eHV_t3TFcypBD4xT_OQx0hD6_iGkLJOADjwYVny0PvE,11292
|
|
29
|
+
mmrelay/plugins/mesh_relay_plugin.py,sha256=gpQkO8S-LqDNwqJpqq5ewGXVEST-JZgOsJmrE-qRzuw,7631
|
|
30
|
+
mmrelay/plugins/nodes_plugin.py,sha256=RDabzyG5hKG5aYWecsRUcLSjMCCv6Pngmq2Qpld1A1U,2903
|
|
31
|
+
mmrelay/plugins/ping_plugin.py,sha256=8uFnT3qfO3RBaTUOx348voIfKpzXB3zTfcT6Gtfc8kM,4070
|
|
32
|
+
mmrelay/plugins/telemetry_plugin.py,sha256=8SxWv4BLXMUTbiVaD3MjlMMdQyS7S_1OfLlVNAUMSO0,6306
|
|
33
|
+
mmrelay/plugins/weather_plugin.py,sha256=7si8q43Fw6Gghj0x7Ah2gyFcdwxodNqINmIj9Olprjg,14412
|
|
34
|
+
mmrelay/tools/__init__.py,sha256=WFjDQjdevgg19_zT6iEoL29rvb1JPqYSd8708Jn5D7A,838
|
|
35
|
+
mmrelay/tools/mmrelay.service,sha256=3vqK1VbfXvVftkTrTEOan77aTHeOT36hIAL7HqJsmTg,567
|
|
36
|
+
mmrelay/tools/sample-docker-compose-prebuilt.yaml,sha256=NWV-g3RwiFlYfjgGL5t9DtInoJJDUSaTBy4w1ICk81A,3136
|
|
37
|
+
mmrelay/tools/sample-docker-compose.yaml,sha256=PHt0MGrzUAzxBovtf1TZyrvJ9YK-ZpdSyyp5Tmp8zIY,2543
|
|
38
|
+
mmrelay/tools/sample.env,sha256=RP-o3rX3jnEIrVG2rqCZq31O1yRXou4HcGrXWLVbKKw,311
|
|
39
|
+
mmrelay/tools/sample_config.yaml,sha256=wQnEhL5St7Xqeb--ClJQVcbVXu_n69fPHuF2zSB0Zu4,6250
|
|
40
|
+
mmrelay-1.2.0.dist-info/licenses/LICENSE,sha256=aB_07MhnK-bL5WLI1ucXLUSdW_yBVoepPRYB0kaAOl8,35204
|
|
41
|
+
mmrelay-1.2.0.dist-info/METADATA,sha256=RvrjFahRkYXAokF54_gLy24oD2pgjjvQEYjcm0oi9BM,6143
|
|
42
|
+
mmrelay-1.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
43
|
+
mmrelay-1.2.0.dist-info/entry_points.txt,sha256=SJZwGUOEpQ-qx4H8UL4xKFnKeInGUaZNW1I0ddjK7Ws,45
|
|
44
|
+
mmrelay-1.2.0.dist-info/top_level.txt,sha256=B_ZLCRm7NYAmI3PipRUyHGymP-C-q16LSeMGzmqJfo4,8
|
|
45
|
+
mmrelay-1.2.0.dist-info/RECORD,,
|
mmrelay/config_checker.py
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
|
|
4
|
-
import os
|
|
5
|
-
|
|
6
|
-
import yaml
|
|
7
|
-
from yaml.loader import SafeLoader
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def get_config_paths():
|
|
11
|
-
"""
|
|
12
|
-
Get a list of possible configuration file paths.
|
|
13
|
-
|
|
14
|
-
Returns:
|
|
15
|
-
list: A list of possible configuration file paths
|
|
16
|
-
"""
|
|
17
|
-
from mmrelay.config import get_config_paths as get_paths
|
|
18
|
-
|
|
19
|
-
return get_paths()
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def check_config():
|
|
23
|
-
"""
|
|
24
|
-
Check if the configuration file is valid.
|
|
25
|
-
|
|
26
|
-
Returns:
|
|
27
|
-
bool: True if the configuration is valid, False otherwise.
|
|
28
|
-
"""
|
|
29
|
-
config_paths = get_config_paths()
|
|
30
|
-
config_path = None
|
|
31
|
-
|
|
32
|
-
# Try each config path in order until we find one that exists
|
|
33
|
-
for path in config_paths:
|
|
34
|
-
if os.path.isfile(path):
|
|
35
|
-
config_path = path
|
|
36
|
-
print(f"Found configuration file at: {config_path}")
|
|
37
|
-
try:
|
|
38
|
-
with open(config_path, "r") as f:
|
|
39
|
-
config = yaml.load(f, Loader=SafeLoader)
|
|
40
|
-
|
|
41
|
-
# Check if config is empty
|
|
42
|
-
if not config:
|
|
43
|
-
print("Error: Configuration file is empty or invalid")
|
|
44
|
-
return False
|
|
45
|
-
|
|
46
|
-
# Check matrix section
|
|
47
|
-
if "matrix" not in config:
|
|
48
|
-
print("Error: Missing 'matrix' section in config")
|
|
49
|
-
return False
|
|
50
|
-
|
|
51
|
-
matrix_section = config["matrix"]
|
|
52
|
-
required_matrix_fields = ["homeserver", "access_token", "bot_user_id"]
|
|
53
|
-
missing_matrix_fields = [
|
|
54
|
-
field
|
|
55
|
-
for field in required_matrix_fields
|
|
56
|
-
if field not in matrix_section
|
|
57
|
-
]
|
|
58
|
-
|
|
59
|
-
if missing_matrix_fields:
|
|
60
|
-
print(
|
|
61
|
-
f"Error: Missing required fields in 'matrix' section: {', '.join(missing_matrix_fields)}"
|
|
62
|
-
)
|
|
63
|
-
return False
|
|
64
|
-
|
|
65
|
-
# Check matrix_rooms section
|
|
66
|
-
if "matrix_rooms" not in config or not config["matrix_rooms"]:
|
|
67
|
-
print("Error: Missing or empty 'matrix_rooms' section in config")
|
|
68
|
-
return False
|
|
69
|
-
|
|
70
|
-
if not isinstance(config["matrix_rooms"], list):
|
|
71
|
-
print("Error: 'matrix_rooms' must be a list")
|
|
72
|
-
return False
|
|
73
|
-
|
|
74
|
-
for i, room in enumerate(config["matrix_rooms"]):
|
|
75
|
-
if not isinstance(room, dict):
|
|
76
|
-
print(
|
|
77
|
-
f"Error: Room {i+1} in 'matrix_rooms' must be a dictionary"
|
|
78
|
-
)
|
|
79
|
-
return False
|
|
80
|
-
|
|
81
|
-
if "id" not in room:
|
|
82
|
-
print(
|
|
83
|
-
f"Error: Room {i+1} in 'matrix_rooms' is missing the 'id' field"
|
|
84
|
-
)
|
|
85
|
-
return False
|
|
86
|
-
|
|
87
|
-
# Check meshtastic section
|
|
88
|
-
if "meshtastic" not in config:
|
|
89
|
-
print("Error: Missing 'meshtastic' section in config")
|
|
90
|
-
return False
|
|
91
|
-
|
|
92
|
-
meshtastic_section = config["meshtastic"]
|
|
93
|
-
if "connection_type" not in meshtastic_section:
|
|
94
|
-
print("Error: Missing 'connection_type' in 'meshtastic' section")
|
|
95
|
-
return False
|
|
96
|
-
|
|
97
|
-
connection_type = meshtastic_section["connection_type"]
|
|
98
|
-
if connection_type not in ["tcp", "serial", "ble"]:
|
|
99
|
-
print(
|
|
100
|
-
f"Error: Invalid 'connection_type': {connection_type}. Must be 'tcp', 'serial', or 'ble'"
|
|
101
|
-
)
|
|
102
|
-
return False
|
|
103
|
-
|
|
104
|
-
# Check connection-specific fields
|
|
105
|
-
if (
|
|
106
|
-
connection_type == "serial"
|
|
107
|
-
and "serial_port" not in meshtastic_section
|
|
108
|
-
):
|
|
109
|
-
print("Error: Missing 'serial_port' for 'serial' connection type")
|
|
110
|
-
return False
|
|
111
|
-
|
|
112
|
-
if connection_type == "tcp" and "host" not in meshtastic_section:
|
|
113
|
-
print("Error: Missing 'host' for 'tcp' connection type")
|
|
114
|
-
return False
|
|
115
|
-
|
|
116
|
-
if connection_type == "ble" and "ble_address" not in meshtastic_section:
|
|
117
|
-
print("Error: Missing 'ble_address' for 'ble' connection type")
|
|
118
|
-
return False
|
|
119
|
-
|
|
120
|
-
print("Configuration file is valid!")
|
|
121
|
-
return True
|
|
122
|
-
except yaml.YAMLError as e:
|
|
123
|
-
print(f"Error parsing YAML in {config_path}: {e}")
|
|
124
|
-
return False
|
|
125
|
-
except Exception as e:
|
|
126
|
-
print(f"Error checking configuration: {e}")
|
|
127
|
-
return False
|
|
128
|
-
|
|
129
|
-
print("Error: No configuration file found in any of the following locations:")
|
|
130
|
-
for path in config_paths:
|
|
131
|
-
print(f" - {path}")
|
|
132
|
-
print("\nRun 'mmrelay --generate-config' to generate a sample configuration file.")
|
|
133
|
-
return False
|
mmrelay-1.1.3.dist-info/RECORD
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
mmrelay/__init__.py,sha256=4ciaRmcwzGfuaU_HuNDXVr4Qk0WVkPydhrdXIVo9VOs,120
|
|
2
|
-
mmrelay/cli.py,sha256=hdPTlcGsXTJC9GEUiScG7b3IFp02B3lwhqgwFpU3NsM,13835
|
|
3
|
-
mmrelay/config.py,sha256=5VZag8iSc5yLQgvwI76bbpizbtqag74cHnfXCrWHNyA,7910
|
|
4
|
-
mmrelay/config_checker.py,sha256=UnoHVTXzfdTfFkbmXv9r_Si76v-sxXLb5FOaQSOM45E,4909
|
|
5
|
-
mmrelay/db_utils.py,sha256=eTMMkYVWsmO_DkrBfnZMw4ohg_xa0S9TXJoBjRFTwzo,13590
|
|
6
|
-
mmrelay/log_utils.py,sha256=1zVHBJ5qSOG1O4cq4Ebngq9dp81vaZOEq5khulAFuuM,6611
|
|
7
|
-
mmrelay/main.py,sha256=46J-B6wDRawB392u71kP6pxNoayBdmwOiKcqsleikhU,13182
|
|
8
|
-
mmrelay/matrix_utils.py,sha256=Ans7Wroh693un0LOp4x2p8NPfGFJ9z6TnG6ApXRXg7Q,55686
|
|
9
|
-
mmrelay/meshtastic_utils.py,sha256=iy7BwMlqOwpkqSB0pTx2n8oqaKs2kWQ4PXFk4y16ys8,31440
|
|
10
|
-
mmrelay/message_queue.py,sha256=spLK7pVugnl9djVLIh5-P7iHZ7kRtZEZIWTcQ4X1TfI,18529
|
|
11
|
-
mmrelay/plugin_loader.py,sha256=UJ-i6cL2q_hwMTqjRkaOAQDTj6uUrmyj56-XbUVGcng,39231
|
|
12
|
-
mmrelay/setup_utils.py,sha256=N6qdScHKHEMFKDmT1l7dcLDPNTusZXPkyxrLXjFLhRI,19910
|
|
13
|
-
mmrelay/plugins/__init__.py,sha256=KVMQIXRhe0wlGj4O3IZ0vOIQRKFkfPYejHXhJL17qrc,51
|
|
14
|
-
mmrelay/plugins/base_plugin.py,sha256=DJdM-l-69sMnx6Fgn0rweWF5CuWilnQQAT3nm6eq8f4,18359
|
|
15
|
-
mmrelay/plugins/debug_plugin.py,sha256=adX0cRJHUEDLldajybPfiRDDlvytkZe5aN_dSgNKP2Y,870
|
|
16
|
-
mmrelay/plugins/drop_plugin.py,sha256=0GOz0dgLnFST1HTgqrMayrjwmYlnu02QxfnTZtdPZ3U,4671
|
|
17
|
-
mmrelay/plugins/health_plugin.py,sha256=svV_GfpAVL0QhiVzi3PVZ1mNpsOL1NHSmkRF-Mn_ExE,2250
|
|
18
|
-
mmrelay/plugins/help_plugin.py,sha256=S7nBhsANK46Zv9wPHOVegPGcuYGMErBsxAnrRlSSCwg,2149
|
|
19
|
-
mmrelay/plugins/map_plugin.py,sha256=eHV_t3TFcypBD4xT_OQx0hD6_iGkLJOADjwYVny0PvE,11292
|
|
20
|
-
mmrelay/plugins/mesh_relay_plugin.py,sha256=PIQBACC7Yjq7hzKJJNycHTjkayEC9tsC8-JNG4q_AY8,7563
|
|
21
|
-
mmrelay/plugins/nodes_plugin.py,sha256=RDabzyG5hKG5aYWecsRUcLSjMCCv6Pngmq2Qpld1A1U,2903
|
|
22
|
-
mmrelay/plugins/ping_plugin.py,sha256=8uFnT3qfO3RBaTUOx348voIfKpzXB3zTfcT6Gtfc8kM,4070
|
|
23
|
-
mmrelay/plugins/telemetry_plugin.py,sha256=8SxWv4BLXMUTbiVaD3MjlMMdQyS7S_1OfLlVNAUMSO0,6306
|
|
24
|
-
mmrelay/plugins/weather_plugin.py,sha256=1bQhmiX-enNphzGoFVprU0LcZQX9BvGxWAJAG8Wekg0,8596
|
|
25
|
-
mmrelay/tools/__init__.py,sha256=WFjDQjdevgg19_zT6iEoL29rvb1JPqYSd8708Jn5D7A,838
|
|
26
|
-
mmrelay/tools/mmrelay.service,sha256=3vqK1VbfXvVftkTrTEOan77aTHeOT36hIAL7HqJsmTg,567
|
|
27
|
-
mmrelay/tools/sample-docker-compose.yaml,sha256=vVgJrh-6l48hkj5F-52JA5tpDWPBjiPQ36CE9Pkqn44,1251
|
|
28
|
-
mmrelay/tools/sample.env,sha256=RP-o3rX3jnEIrVG2rqCZq31O1yRXou4HcGrXWLVbKKw,311
|
|
29
|
-
mmrelay/tools/sample_config.yaml,sha256=grS70MKHFd9e_lZ3GkmzPi4RRW-PdahMOMPCAg07MWs,4718
|
|
30
|
-
mmrelay-1.1.3.dist-info/licenses/LICENSE,sha256=aB_07MhnK-bL5WLI1ucXLUSdW_yBVoepPRYB0kaAOl8,35204
|
|
31
|
-
mmrelay-1.1.3.dist-info/METADATA,sha256=gNG_TVwJfpvt0s7sd3WDEceXl8Li2WCLGHTkYkXOWVQ,6493
|
|
32
|
-
mmrelay-1.1.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
33
|
-
mmrelay-1.1.3.dist-info/entry_points.txt,sha256=SJZwGUOEpQ-qx4H8UL4xKFnKeInGUaZNW1I0ddjK7Ws,45
|
|
34
|
-
mmrelay-1.1.3.dist-info/top_level.txt,sha256=B_ZLCRm7NYAmI3PipRUyHGymP-C-q16LSeMGzmqJfo4,8
|
|
35
|
-
mmrelay-1.1.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|