mmrelay 1.2.6__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.
Files changed (50) hide show
  1. mmrelay/__init__.py +5 -0
  2. mmrelay/__main__.py +29 -0
  3. mmrelay/cli.py +2013 -0
  4. mmrelay/cli_utils.py +746 -0
  5. mmrelay/config.py +956 -0
  6. mmrelay/constants/__init__.py +65 -0
  7. mmrelay/constants/app.py +29 -0
  8. mmrelay/constants/config.py +78 -0
  9. mmrelay/constants/database.py +22 -0
  10. mmrelay/constants/formats.py +20 -0
  11. mmrelay/constants/messages.py +45 -0
  12. mmrelay/constants/network.py +45 -0
  13. mmrelay/constants/plugins.py +42 -0
  14. mmrelay/constants/queue.py +20 -0
  15. mmrelay/db_runtime.py +269 -0
  16. mmrelay/db_utils.py +1017 -0
  17. mmrelay/e2ee_utils.py +400 -0
  18. mmrelay/log_utils.py +274 -0
  19. mmrelay/main.py +439 -0
  20. mmrelay/matrix_utils.py +3091 -0
  21. mmrelay/meshtastic_utils.py +1245 -0
  22. mmrelay/message_queue.py +647 -0
  23. mmrelay/plugin_loader.py +1933 -0
  24. mmrelay/plugins/__init__.py +3 -0
  25. mmrelay/plugins/base_plugin.py +638 -0
  26. mmrelay/plugins/debug_plugin.py +30 -0
  27. mmrelay/plugins/drop_plugin.py +127 -0
  28. mmrelay/plugins/health_plugin.py +64 -0
  29. mmrelay/plugins/help_plugin.py +79 -0
  30. mmrelay/plugins/map_plugin.py +353 -0
  31. mmrelay/plugins/mesh_relay_plugin.py +222 -0
  32. mmrelay/plugins/nodes_plugin.py +92 -0
  33. mmrelay/plugins/ping_plugin.py +128 -0
  34. mmrelay/plugins/telemetry_plugin.py +179 -0
  35. mmrelay/plugins/weather_plugin.py +312 -0
  36. mmrelay/runtime_utils.py +35 -0
  37. mmrelay/setup_utils.py +828 -0
  38. mmrelay/tools/__init__.py +27 -0
  39. mmrelay/tools/mmrelay.service +19 -0
  40. mmrelay/tools/sample-docker-compose-prebuilt.yaml +30 -0
  41. mmrelay/tools/sample-docker-compose.yaml +30 -0
  42. mmrelay/tools/sample.env +10 -0
  43. mmrelay/tools/sample_config.yaml +120 -0
  44. mmrelay/windows_utils.py +346 -0
  45. mmrelay-1.2.6.dist-info/METADATA +145 -0
  46. mmrelay-1.2.6.dist-info/RECORD +50 -0
  47. mmrelay-1.2.6.dist-info/WHEEL +5 -0
  48. mmrelay-1.2.6.dist-info/entry_points.txt +2 -0
  49. mmrelay-1.2.6.dist-info/licenses/LICENSE +675 -0
  50. mmrelay-1.2.6.dist-info/top_level.txt +1 -0
@@ -0,0 +1,145 @@
1
+ Metadata-Version: 2.4
2
+ Name: mmrelay
3
+ Version: 1.2.6
4
+ Summary: Bridge between Meshtastic mesh networks and Matrix chat rooms
5
+ Home-page: https://github.com/jeremiah-k/meshtastic-matrix-relay
6
+ Author: Geoff Whittington, Jeremiah K., and contributors
7
+ Author-email: jeremiahk@gmx.com
8
+ Project-URL: Bug Tracker, https://github.com/jeremiah-k/meshtastic-matrix-relay/issues
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.10
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Topic :: Communications
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: meshtastic>=2.7.4
21
+ Requires-Dist: Pillow==12.0.0
22
+ Requires-Dist: matrix-nio==0.25.2
23
+ Requires-Dist: matplotlib==3.10.7
24
+ Requires-Dist: requests==2.32.5
25
+ Requires-Dist: markdown==3.10
26
+ Requires-Dist: bleach==6.3.0
27
+ Requires-Dist: haversine==2.9.0
28
+ Requires-Dist: schedule==1.2.2
29
+ Requires-Dist: platformdirs==4.5.0
30
+ Requires-Dist: py-staticmaps>=0.4.0
31
+ Requires-Dist: psutil>=5.8.0
32
+ Requires-Dist: rich==14.2.0
33
+ Requires-Dist: setuptools>=80.9.0
34
+ Provides-Extra: e2e
35
+ Requires-Dist: matrix-nio[e2e]==0.25.2; extra == "e2e"
36
+ Requires-Dist: python-olm; extra == "e2e"
37
+ Dynamic: author
38
+ Dynamic: author-email
39
+ Dynamic: classifier
40
+ Dynamic: description
41
+ Dynamic: description-content-type
42
+ Dynamic: home-page
43
+ Dynamic: license-file
44
+ Dynamic: project-url
45
+ Dynamic: provides-extra
46
+ Dynamic: requires-dist
47
+ Dynamic: requires-python
48
+ Dynamic: summary
49
+
50
+ # MMRelay
51
+
52
+ ## (Meshtastic <=> Matrix Relay)
53
+
54
+ A powerful and easy-to-use relay between Meshtastic devices and Matrix chat rooms, allowing seamless communication across platforms. This opens the door for bridging Meshtastic devices to [many other platforms](https://matrix.org/bridges/).
55
+
56
+ ## Features
57
+
58
+ - Bidirectional message relay between Meshtastic devices and Matrix chat rooms, capable of supporting multiple meshnets
59
+ - Supports serial, network, and **_BLE (now too!)_** connections for Meshtastic devices
60
+ - Custom fields are embedded in Matrix messages for relaying messages between multiple meshnets
61
+ - Truncates long messages to fit within Meshtastic's payload size
62
+ - SQLite database to store node information for improved functionality
63
+ - Customizable logging level for easy debugging
64
+ - Configurable through a simple YAML file
65
+ - Supports mapping multiple rooms and channels 1:1
66
+ - Relays messages to/from an MQTT broker, if configured in the Meshtastic firmware
67
+ - ✨️ _Bidirectional replies and reactions support_ ✨️
68
+ - ✨️ _Native Docker support_ ✨️
69
+ - 🔐 **Matrix End-to-End Encryption (E2EE) support** 🔐 **NEW in v1.2!**
70
+
71
+ **MMRelay v1.2** introduces **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.
72
+
73
+ ## Documentation
74
+
75
+ MMRelay supports multiple deployment methods including Docker, pip installation, and standalone executables. For complete setup instructions and all deployment options, see:
76
+
77
+ - [Installation Instructions](docs/INSTRUCTIONS.md) - Setup and configuration guide
78
+ - [Docker Guide](docs/DOCKER.md) - Docker deployment methods
79
+ - [What's New in v1.2](docs/WHATS_NEW_1.2.md) - New features and improvements
80
+ - [E2EE Setup Guide](docs/E2EE.md) - Matrix End-to-End Encryption configuration
81
+
82
+ ---
83
+
84
+ ## Plugins
85
+
86
+ MMRelay supports plugins for extending its functionality, enabling customization and enhancement of the relay to suit specific needs.
87
+
88
+ ### Core Plugins
89
+
90
+ Generate a map of your nodes:
91
+
92
+ ![Map Plugin Screenshot](https://user-images.githubusercontent.com/1770544/235247915-47750b4f-d505-4792-a458-54a5f24c1523.png)
93
+
94
+ Produce high-level details about your mesh:
95
+
96
+ ![Mesh Details Screenshot](https://user-images.githubusercontent.com/1770544/235245873-1ddc773b-a4cd-4c67-b0a5-b55a29504b73.png)
97
+
98
+ See the full list of [core plugins](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki/Core-Plugins).
99
+
100
+ ### Community & Custom Plugins
101
+
102
+ MMRelay's plugin system allows you to extend functionality in two ways:
103
+
104
+ - **Custom Plugins**: Create personal plugins for your own use, stored in `~/.mmrelay/plugins/custom/`
105
+ - **Community Plugins**: Share your creations with others or use plugins developed by the community
106
+
107
+ Check the [Community Plugins Development Guide](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki/Community-Plugin-Development-Guide) in our wiki to get started.
108
+
109
+ ✨️ Visit the [Community Plugins List](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki/Community-Plugin-List)!
110
+
111
+ #### Install a Community Plugin
112
+
113
+ Add the repository under the `community-plugins` section in `config.yaml`:
114
+
115
+ ```yaml
116
+ community-plugins:
117
+ example-plugin:
118
+ active: true
119
+ repository: https://github.com/jeremiah-k/mmr-plugin-template.git
120
+ tag: main
121
+ ```
122
+
123
+ ### Plugin System
124
+
125
+ Plugins make it easy to extend functionality without modifying the core program. MMRelay features a powerful plugin system with standardized locations:
126
+
127
+ - **Core Plugins**: Pre-installed with the package
128
+ - **Custom Plugins**: Your own plugins in `~/.mmrelay/plugins/custom/`
129
+ - **Community Plugins**: Third-party plugins in `~/.mmrelay/plugins/community/`
130
+
131
+ ---
132
+
133
+ ## Getting Started with Matrix
134
+
135
+ See our Wiki page [Getting Started With Matrix & MMRelay](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki/Getting-Started-With-Matrix-&-MM-Relay).
136
+
137
+ ---
138
+
139
+ ## Already on Matrix?
140
+
141
+ Join us!
142
+
143
+ - Our project's room: [#mmrelay:matrix.org](https://matrix.to/#/#mmrelay:matrix.org)
144
+ - Part of the Meshnet Club Matrix space: [#meshnetclub:matrix.org](https://matrix.to/#/#meshnetclub:matrix.org)
145
+ - Public Relay Room: [#mmrelay-relay-room:matrix.org](https://matrix.to/#/#mmrelay-relay-room:matrix.org) - Where we bridge multiple meshnets. Feel free to join us, with or without a relay!
@@ -0,0 +1,50 @@
1
+ mmrelay/__init__.py,sha256=sBCmkS54Hk1DwEo9TgF9D8e8tAsnvTxl0iu30-GpR8Q,120
2
+ mmrelay/__main__.py,sha256=Z839i5jxZmhdoPvR1-reWoQL4Xpmty81p8TsTKsJLC8,814
3
+ mmrelay/cli.py,sha256=T4apzc8aS7smXh0bpqoMSDHpHOOxcjls9-vSB-ue5Nk,79543
4
+ mmrelay/cli_utils.py,sha256=h0JKhU_sToO2_Orf9ddO8x07_L1k201V61yXydfU2es,28887
5
+ mmrelay/config.py,sha256=H93dRHAsZOtPQmeO5RZd-S7qx5zsoAn7bt1GgXdOPqw,38285
6
+ mmrelay/db_runtime.py,sha256=UkoVQNTF9ZGtwZbcBPPFRfF1CuUx343JjQuJVl6N_j4,12004
7
+ mmrelay/db_utils.py,sha256=1KI4OfXgYES48ZxmMEtgx3Snu9y6GeBQWR6FKRdhXds,37136
8
+ mmrelay/e2ee_utils.py,sha256=7cSb3F-FYqFcibSmb7eJzQJoRdq4Xk0_L5oppza3PHE,16914
9
+ mmrelay/log_utils.py,sha256=CGTsHkeviCUKbe_SArYqOjPE5xRTslikMwzrag9LSFE,10290
10
+ mmrelay/main.py,sha256=EFxFGG-_ba_9Z_GUshAft2E6kzxMaGd3ebT5ESh_l-4,17321
11
+ mmrelay/matrix_utils.py,sha256=za9tc2yUNcBJe6_HAjOwHMnEG_DwXMrU0LE3Y-RA7kA,134422
12
+ mmrelay/meshtastic_utils.py,sha256=iOFzMyYszhmR0eUVyITh0lKMHmtR0QaMt1pwmWz0CEk,50478
13
+ mmrelay/message_queue.py,sha256=jyoaMDj0im7qNkk4XYK5Bn8Mz1ZGMaEblj_1tnlnewM,29181
14
+ mmrelay/plugin_loader.py,sha256=SVDQOOPyfN-h57-KI_q-GqdRaptGjQZHuWj2_GSaNQs,79656
15
+ mmrelay/runtime_utils.py,sha256=u8DtpfI-U7Ip3SAwjn214WfMTzc-xr5wffjN0i7WBZc,1261
16
+ mmrelay/setup_utils.py,sha256=SCFGx9e1wHZt87u2JMAhPUYOy-Ui4eV3irmzy0Zh9lE,32727
17
+ mmrelay/windows_utils.py,sha256=pgQh2_Uoy9o9X1GxlVtjQG0fvYdokqEb6-0kr8-NC1g,13032
18
+ mmrelay/constants/__init__.py,sha256=zG8hYacc6Ggr_8f4H8Qp3aKwjycWUBRaZL_9vK8R_II,1863
19
+ mmrelay/constants/app.py,sha256=iNKqQMp5WZSfzsuRXYZ00znVm_ZyfwqiWMQgAblG6rY,725
20
+ mmrelay/constants/config.py,sha256=B1A_OZLLNXHM9rHOwc01ZaJBvFugR2eXlhYYl4nUxlY,2479
21
+ mmrelay/constants/database.py,sha256=4cHfYfBePDUUtVSflrWyStcxKSQv7VE-jSrb1IzAjls,646
22
+ mmrelay/constants/formats.py,sha256=cjbrfNNFCKoGSFsFHR1QQDEQudiGquA9MUapfm0_ZNI,494
23
+ mmrelay/constants/messages.py,sha256=Reu_-6gZGGZQVP6BuqBm01QBhVTFjHVRQSPTUcQJG2Q,1531
24
+ mmrelay/constants/network.py,sha256=Y9BWd4p-xdaKBwSzpHRKgLG4m_loHrvNah4-jjyiwlk,1285
25
+ mmrelay/constants/plugins.py,sha256=0309Dv8W3Pwms5L29n0hr-qRZT1kBbzOoL6gCnoKRAY,1016
26
+ mmrelay/constants/queue.py,sha256=cNK0cLsgBfQ6nVJm9_Scxj-ICv4RU6DU_PYsUwNyU_E,675
27
+ mmrelay/plugins/__init__.py,sha256=KVMQIXRhe0wlGj4O3IZ0vOIQRKFkfPYejHXhJL17qrc,51
28
+ mmrelay/plugins/base_plugin.py,sha256=hOGG6aHL21JS-TJf0HFcRsmKRJdtDmqt7Vru4vO968k,25931
29
+ mmrelay/plugins/debug_plugin.py,sha256=adX0cRJHUEDLldajybPfiRDDlvytkZe5aN_dSgNKP2Y,870
30
+ mmrelay/plugins/drop_plugin.py,sha256=x4S-e0Muun2Dy1H2qwRMTBB1ptLmy7ZZJhgPu-KefGs,5394
31
+ mmrelay/plugins/health_plugin.py,sha256=svV_GfpAVL0QhiVzi3PVZ1mNpsOL1NHSmkRF-Mn_ExE,2250
32
+ mmrelay/plugins/help_plugin.py,sha256=S7nBhsANK46Zv9wPHOVegPGcuYGMErBsxAnrRlSSCwg,2149
33
+ mmrelay/plugins/map_plugin.py,sha256=eHV_t3TFcypBD4xT_OQx0hD6_iGkLJOADjwYVny0PvE,11292
34
+ mmrelay/plugins/mesh_relay_plugin.py,sha256=OE07Kz5NvmyjXH3hneK5_eTPQ41mriJGZgsPcg-gpOQ,8428
35
+ mmrelay/plugins/nodes_plugin.py,sha256=RDabzyG5hKG5aYWecsRUcLSjMCCv6Pngmq2Qpld1A1U,2903
36
+ mmrelay/plugins/ping_plugin.py,sha256=o36pnmyfwOI4A2ZWPt2BYQVANaSgB7zLSfln5tXiOv4,4580
37
+ mmrelay/plugins/telemetry_plugin.py,sha256=8SxWv4BLXMUTbiVaD3MjlMMdQyS7S_1OfLlVNAUMSO0,6306
38
+ mmrelay/plugins/weather_plugin.py,sha256=ZmTNlkEjeCvZWHlO7VMend3vnj4h2qWeeU4RUQJY2vM,14183
39
+ mmrelay/tools/__init__.py,sha256=udBuTe_y7K_B4-YSrPn6oW3ka8QUZme2w1uWQTGBBjo,867
40
+ mmrelay/tools/mmrelay.service,sha256=6_TAskmTh9pXQSDRDeh0EXl2BfsUgm9Q3W9ob5tWCS8,600
41
+ mmrelay/tools/sample-docker-compose-prebuilt.yaml,sha256=ytQRW882VAecbWO1LsRsU6UbudybNhC-iv2w0Fta1Ls,1368
42
+ mmrelay/tools/sample-docker-compose.yaml,sha256=1UqZFvnJuhVwfNJ92C0qQ5KSdNRVjk8YbRNZgD8yF_M,1350
43
+ mmrelay/tools/sample.env,sha256=RP-o3rX3jnEIrVG2rqCZq31O1yRXou4HcGrXWLVbKKw,311
44
+ mmrelay/tools/sample_config.yaml,sha256=X8Gh2J6dkDurJ5KFsa4mm-Q2w8WfoyTTiHMw-cZz1Ow,6603
45
+ mmrelay-1.2.6.dist-info/licenses/LICENSE,sha256=aB_07MhnK-bL5WLI1ucXLUSdW_yBVoepPRYB0kaAOl8,35204
46
+ mmrelay-1.2.6.dist-info/METADATA,sha256=VK-mEZ5XFh91Mav4CfPgeRIhPXFaTBiPoP2k0RwzEmU,6119
47
+ mmrelay-1.2.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
48
+ mmrelay-1.2.6.dist-info/entry_points.txt,sha256=SJZwGUOEpQ-qx4H8UL4xKFnKeInGUaZNW1I0ddjK7Ws,45
49
+ mmrelay-1.2.6.dist-info/top_level.txt,sha256=B_ZLCRm7NYAmI3PipRUyHGymP-C-q16LSeMGzmqJfo4,8
50
+ mmrelay-1.2.6.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ mmrelay = mmrelay.cli:main