aprsd 3.2.2__tar.gz → 3.3.1__tar.gz

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 (219) hide show
  1. aprsd-3.3.1/.github/workflows/codeql.yml +84 -0
  2. {aprsd-3.2.2 → aprsd-3.3.1}/.github/workflows/manual_build.yml +1 -1
  3. {aprsd-3.2.2 → aprsd-3.3.1}/.github/workflows/master-build.yml +1 -1
  4. {aprsd-3.2.2 → aprsd-3.3.1}/.github/workflows/release_build.yml +1 -1
  5. {aprsd-3.2.2 → aprsd-3.3.1}/.pre-commit-config.yaml +3 -3
  6. {aprsd-3.2.2 → aprsd-3.3.1}/AUTHORS +1 -0
  7. {aprsd-3.2.2 → aprsd-3.3.1}/ChangeLog +65 -0
  8. {aprsd-3.2.2 → aprsd-3.3.1}/Makefile +2 -2
  9. {aprsd-3.2.2 → aprsd-3.3.1}/PKG-INFO +106 -98
  10. {aprsd-3.2.2 → aprsd-3.3.1}/README.rst +69 -62
  11. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cli_helper.py +35 -1
  12. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/client.py +3 -3
  13. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/clients/aprsis.py +0 -1
  14. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/dev.py +31 -2
  15. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/fetch_stats.py +5 -1
  16. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/list_plugins.py +87 -10
  17. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/server.py +10 -1
  18. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/webchat.py +245 -45
  19. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/conf/common.py +68 -1
  20. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/conf/log.py +8 -10
  21. aprsd-3.3.1/aprsd/conf/plugin_common.py +191 -0
  22. aprsd-3.3.1/aprsd/log/log.py +97 -0
  23. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/main.py +11 -11
  24. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/packets/__init__.py +2 -2
  25. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/packets/core.py +20 -1
  26. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugin_utils.py +1 -0
  27. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/fortune.py +4 -1
  28. aprsd-3.3.1/aprsd/plugins/location.py +179 -0
  29. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/weather.py +7 -3
  30. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/threads/__init__.py +1 -1
  31. aprsd-3.3.1/aprsd/threads/registry.py +56 -0
  32. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/threads/rx.py +13 -5
  33. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/threads/tx.py +40 -0
  34. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/utils/__init__.py +19 -0
  35. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/utils/objectstore.py +7 -1
  36. aprsd-3.3.1/aprsd/web/chat/static/images/globe.svg +3 -0
  37. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/send-message.js +107 -29
  38. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/templates/index.html +6 -2
  39. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/wsgi.py +4 -39
  40. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd.egg-info/PKG-INFO +106 -98
  41. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd.egg-info/SOURCES.txt +3 -1
  42. aprsd-3.3.1/aprsd.egg-info/pbr.json +1 -0
  43. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd.egg-info/requires.txt +36 -35
  44. aprsd-3.3.1/dev-requirements.txt +84 -0
  45. {aprsd-3.2.2 → aprsd-3.3.1}/docker/Dockerfile +2 -1
  46. {aprsd-3.2.2 → aprsd-3.3.1}/docker/Dockerfile-dev +2 -1
  47. {aprsd-3.2.2 → aprsd-3.3.1}/docker/bin/admin.sh +11 -0
  48. {aprsd-3.2.2 → aprsd-3.3.1}/docker/bin/listen.sh +11 -0
  49. {aprsd-3.2.2 → aprsd-3.3.1}/docker/bin/run.sh +12 -0
  50. {aprsd-3.2.2 → aprsd-3.3.1}/requirements.in +3 -2
  51. {aprsd-3.2.2 → aprsd-3.3.1}/requirements.txt +38 -37
  52. {aprsd-3.2.2 → aprsd-3.3.1}/tests/cmds/test_webchat.py +6 -2
  53. {aprsd-3.2.2 → aprsd-3.3.1}/tox.ini +2 -1
  54. aprsd-3.2.2/aprsd/conf/plugin_common.py +0 -83
  55. aprsd-3.2.2/aprsd/log/log.py +0 -89
  56. aprsd-3.2.2/aprsd/log/rich.py +0 -160
  57. aprsd-3.2.2/aprsd/plugins/location.py +0 -97
  58. aprsd-3.2.2/aprsd.egg-info/pbr.json +0 -1
  59. aprsd-3.2.2/dev-requirements.txt +0 -88
  60. {aprsd-3.2.2 → aprsd-3.3.1}/.coveragerc +0 -0
  61. {aprsd-3.2.2 → aprsd-3.3.1}/.github/workflows/python.yml +0 -0
  62. {aprsd-3.2.2 → aprsd-3.3.1}/.readthedocs.yaml +0 -0
  63. {aprsd-3.2.2 → aprsd-3.3.1}/INSTALL.txt +0 -0
  64. {aprsd-3.2.2 → aprsd-3.3.1}/LICENSE +0 -0
  65. {aprsd-3.2.2 → aprsd-3.3.1}/MANIFEST.in +0 -0
  66. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/__init__.py +0 -0
  67. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/clients/__init__.py +0 -0
  68. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/clients/fake.py +0 -0
  69. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/clients/kiss.py +0 -0
  70. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/__init__.py +0 -0
  71. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/completion.py +0 -0
  72. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/healthcheck.py +0 -0
  73. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/listen.py +0 -0
  74. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/cmds/send_message.py +0 -0
  75. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/conf/__init__.py +0 -0
  76. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/conf/client.py +0 -0
  77. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/conf/opts.py +0 -0
  78. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/conf/plugin_email.py +0 -0
  79. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/exception.py +0 -0
  80. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/log/__init__.py +0 -0
  81. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/messaging.py +0 -0
  82. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/packets/packet_list.py +0 -0
  83. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/packets/seen_list.py +0 -0
  84. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/packets/tracker.py +0 -0
  85. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/packets/watch_list.py +0 -0
  86. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugin.py +0 -0
  87. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/__init__.py +0 -0
  88. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/email.py +0 -0
  89. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/notify.py +0 -0
  90. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/ping.py +0 -0
  91. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/query.py +0 -0
  92. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/time.py +0 -0
  93. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/plugins/version.py +0 -0
  94. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/rpc/__init__.py +0 -0
  95. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/rpc/client.py +0 -0
  96. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/rpc/server.py +0 -0
  97. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/stats.py +0 -0
  98. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/threads/aprsd.py +0 -0
  99. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/threads/keep_alive.py +0 -0
  100. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/threads/log_monitor.py +0 -0
  101. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/utils/counter.py +0 -0
  102. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/utils/fuzzyclock.py +0 -0
  103. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/utils/json.py +0 -0
  104. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/utils/ring_buffer.py +0 -0
  105. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/utils/trace.py +0 -0
  106. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/__init__.py +0 -0
  107. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/__init__.py +0 -0
  108. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/css/index.css +0 -0
  109. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/css/prism.css +0 -0
  110. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/css/tabs.css +0 -0
  111. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/images/Untitled.png +0 -0
  112. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/images/aprs-symbols-16-0.png +0 -0
  113. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/images/aprs-symbols-16-1.png +0 -0
  114. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/images/aprs-symbols-64-0.png +0 -0
  115. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/images/aprs-symbols-64-1.png +0 -0
  116. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/images/aprs-symbols-64-2.png +0 -0
  117. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/js/charts.js +0 -0
  118. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/js/echarts.js +0 -0
  119. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/js/logs.js +0 -0
  120. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/js/main.js +0 -0
  121. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/js/prism.js +0 -0
  122. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/js/send-message.js +0 -0
  123. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/js/tabs.js +0 -0
  124. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/json-viewer/jquery.json-viewer.css +0 -0
  125. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/static/json-viewer/jquery.json-viewer.js +0 -0
  126. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/admin/templates/index.html +0 -0
  127. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/chat.css +0 -0
  128. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/index.css +0 -0
  129. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/style.css.map +0 -0
  130. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/tabs.css +0 -0
  131. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/bootstrap.min.css +0 -0
  132. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/font.woff2 +0 -0
  133. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/google-fonts.css +0 -0
  134. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/jquery-ui.css +0 -0
  135. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/jquery.toast.css +0 -0
  136. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  137. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  138. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  139. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  140. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff +0 -0
  141. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff2 +0 -0
  142. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff +0 -0
  143. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  144. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/images/Untitled.png +0 -0
  145. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/images/aprs-symbols-16-0.png +0 -0
  146. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/images/aprs-symbols-16-1.png +0 -0
  147. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/images/aprs-symbols-64-0.png +0 -0
  148. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/images/aprs-symbols-64-1.png +0 -0
  149. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/images/aprs-symbols-64-2.png +0 -0
  150. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/gps.js +0 -0
  151. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/main.js +0 -0
  152. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/tabs.js +0 -0
  153. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/upstream/bootstrap.bundle.min.js +0 -0
  154. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/upstream/jquery-3.7.1.min.js +0 -0
  155. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/upstream/jquery-ui.min.js +0 -0
  156. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/upstream/jquery.toast.js +0 -0
  157. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/upstream/semantic.min.js +0 -0
  158. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/js/upstream/socket.io.min.js +0 -0
  159. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/json-viewer/jquery.json-viewer.css +0 -0
  160. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd/web/chat/static/json-viewer/jquery.json-viewer.js +0 -0
  161. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd-lnav.json +0 -0
  162. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd.egg-info/dependency_links.txt +0 -0
  163. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd.egg-info/entry_points.txt +0 -0
  164. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd.egg-info/not-zip-safe +0 -0
  165. {aprsd-3.2.2 → aprsd-3.3.1}/aprsd.egg-info/top_level.txt +0 -0
  166. {aprsd-3.2.2 → aprsd-3.3.1}/dev-requirements.in +0 -0
  167. {aprsd-3.2.2 → aprsd-3.3.1}/docker/build.sh +0 -0
  168. {aprsd-3.2.2 → aprsd-3.3.1}/docker/docker-compose.yml +0 -0
  169. {aprsd-3.2.2 → aprsd-3.3.1}/docs/_static/.keep +0 -0
  170. {aprsd-3.2.2 → aprsd-3.3.1}/docs/_static/aprsd_overview.png +0 -0
  171. {aprsd-3.2.2 → aprsd-3.3.1}/docs/_static/aprsd_overview.svg +0 -0
  172. {aprsd-3.2.2 → aprsd-3.3.1}/docs/_templates/.keep +0 -0
  173. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.clients.rst +0 -0
  174. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.cmds.rst +0 -0
  175. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.conf.rst +0 -0
  176. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.packets.rst +0 -0
  177. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.plugins.rst +0 -0
  178. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.rpc.rst +0 -0
  179. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.rst +0 -0
  180. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.threads.rst +0 -0
  181. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.utils.rst +0 -0
  182. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.web.admin.rst +0 -0
  183. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/aprsd.web.rst +0 -0
  184. {aprsd-3.2.2 → aprsd-3.3.1}/docs/apidoc/modules.rst +0 -0
  185. {aprsd-3.2.2 → aprsd-3.3.1}/docs/aprsd.drawio +0 -0
  186. {aprsd-3.2.2 → aprsd-3.3.1}/docs/changelog.rst +0 -0
  187. {aprsd-3.2.2 → aprsd-3.3.1}/docs/clean_docs.py +0 -0
  188. {aprsd-3.2.2 → aprsd-3.3.1}/docs/conf.py +0 -0
  189. {aprsd-3.2.2 → aprsd-3.3.1}/docs/configure.rst +0 -0
  190. {aprsd-3.2.2 → aprsd-3.3.1}/docs/index.rst +0 -0
  191. {aprsd-3.2.2 → aprsd-3.3.1}/docs/install.rst +0 -0
  192. {aprsd-3.2.2 → aprsd-3.3.1}/docs/links.rst +0 -0
  193. {aprsd-3.2.2 → aprsd-3.3.1}/docs/plugin.rst +0 -0
  194. {aprsd-3.2.2 → aprsd-3.3.1}/docs/readme.rst +0 -0
  195. {aprsd-3.2.2 → aprsd-3.3.1}/docs/server.rst +0 -0
  196. {aprsd-3.2.2 → aprsd-3.3.1}/examples/plugins/__init__.py +0 -0
  197. {aprsd-3.2.2 → aprsd-3.3.1}/examples/plugins/example_plugin.py +0 -0
  198. {aprsd-3.2.2 → aprsd-3.3.1}/gray.conf +0 -0
  199. {aprsd-3.2.2 → aprsd-3.3.1}/pyproject.toml +0 -0
  200. {aprsd-3.2.2 → aprsd-3.3.1}/setup.cfg +0 -0
  201. {aprsd-3.2.2 → aprsd-3.3.1}/setup.py +0 -0
  202. {aprsd-3.2.2 → aprsd-3.3.1}/tests/__init__.py +0 -0
  203. {aprsd-3.2.2 → aprsd-3.3.1}/tests/cmds/__init__.py +0 -0
  204. {aprsd-3.2.2 → aprsd-3.3.1}/tests/cmds/test_send_message.py +0 -0
  205. {aprsd-3.2.2 → aprsd-3.3.1}/tests/fake.py +0 -0
  206. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/__init__.py +0 -0
  207. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_fortune.py +0 -0
  208. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_location.py +0 -0
  209. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_notify.py +0 -0
  210. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_ping.py +0 -0
  211. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_query.py +0 -0
  212. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_time.py +0 -0
  213. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_version.py +0 -0
  214. {aprsd-3.2.2 → aprsd-3.3.1}/tests/plugins/test_weather.py +0 -0
  215. {aprsd-3.2.2 → aprsd-3.3.1}/tests/test_email.py +0 -0
  216. {aprsd-3.2.2 → aprsd-3.3.1}/tests/test_main.py +0 -0
  217. {aprsd-3.2.2 → aprsd-3.3.1}/tests/test_packets.py +0 -0
  218. {aprsd-3.2.2 → aprsd-3.3.1}/tests/test_plugin.py +0 -0
  219. {aprsd-3.2.2 → aprsd-3.3.1}/tools/fast8.sh +0 -0
@@ -0,0 +1,84 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ "master" ]
17
+ pull_request:
18
+ branches: [ "master" ]
19
+ schedule:
20
+ - cron: '36 8 * * 0'
21
+
22
+ jobs:
23
+ analyze:
24
+ name: Analyze
25
+ # Runner size impacts CodeQL analysis time. To learn more, please see:
26
+ # - https://gh.io/recommended-hardware-resources-for-running-codeql
27
+ # - https://gh.io/supported-runners-and-hardware-resources
28
+ # - https://gh.io/using-larger-runners
29
+ # Consider using larger runners for possible analysis time improvements.
30
+ runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
31
+ timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
32
+ permissions:
33
+ # required for all workflows
34
+ security-events: write
35
+
36
+ # only required for workflows in private repositories
37
+ actions: read
38
+ contents: read
39
+
40
+ strategy:
41
+ fail-fast: false
42
+ matrix:
43
+ language: [ 'javascript-typescript', 'python' ]
44
+ # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
45
+ # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
46
+ # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
47
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
48
+
49
+ steps:
50
+ - name: Checkout repository
51
+ uses: actions/checkout@v4
52
+
53
+ # Initializes the CodeQL tools for scanning.
54
+ - name: Initialize CodeQL
55
+ uses: github/codeql-action/init@v3
56
+ with:
57
+ languages: ${{ matrix.language }}
58
+ # If you wish to specify custom queries, you can do so here or in a config file.
59
+ # By default, queries listed here will override any specified in a config file.
60
+ # Prefix the list here with "+" to use these queries and those in the config file.
61
+
62
+ # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
63
+ # queries: security-extended,security-and-quality
64
+
65
+
66
+ # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
67
+ # If this step fails, then you should remove it and run the build manually (see below)
68
+ - name: Autobuild
69
+ uses: github/codeql-action/autobuild@v3
70
+
71
+ # ℹ️ Command-line programs to run using the OS shell.
72
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
73
+
74
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
75
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
76
+
77
+ # - run: |
78
+ # echo "Run, Build Application using script"
79
+ # ./location_of_script_within_repo/buildscript.sh
80
+
81
+ - name: Perform CodeQL Analysis
82
+ uses: github/codeql-action/analyze@v3
83
+ with:
84
+ category: "/language:${{matrix.language}}"
@@ -21,7 +21,7 @@ jobs:
21
21
  - uses: actions/checkout@v3
22
22
  - name: Get Branch Name
23
23
  id: branch-name
24
- uses: tj-actions/branch-names@v7
24
+ uses: tj-actions/branch-names@v8
25
25
  - name: Extract Branch
26
26
  id: extract_branch
27
27
  run: |
@@ -38,7 +38,7 @@ jobs:
38
38
  - uses: actions/checkout@v3
39
39
  - name: Get Branch Name
40
40
  id: branch-name
41
- uses: tj-actions/branch-names@v6
41
+ uses: tj-actions/branch-names@v8
42
42
  - name: Setup QEMU
43
43
  uses: docker/setup-qemu-action@v2
44
44
  - name: Setup Docker Buildx
@@ -24,7 +24,7 @@ jobs:
24
24
  - uses: actions/checkout@v3
25
25
  - name: Get Branch Name
26
26
  id: branch-name
27
- uses: tj-actions/branch-names@v6
27
+ uses: tj-actions/branch-names@v8
28
28
  - name: Setup QEMU
29
29
  uses: docker/setup-qemu-action@v2
30
30
  - name: Setup Docker Buildx
@@ -1,6 +1,6 @@
1
1
  repos:
2
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v3.4.0
3
+ rev: v4.5.0
4
4
  hooks:
5
5
  - id: trailing-whitespace
6
6
  - id: end-of-file-fixer
@@ -12,11 +12,11 @@ repos:
12
12
  - id: check-builtin-literals
13
13
 
14
14
  - repo: https://github.com/asottile/setup-cfg-fmt
15
- rev: v1.16.0
15
+ rev: v2.5.0
16
16
  hooks:
17
17
  - id: setup-cfg-fmt
18
18
 
19
19
  - repo: https://github.com/dizballanze/gray
20
- rev: v0.10.1
20
+ rev: v0.14.0
21
21
  hooks:
22
22
  - id: gray
@@ -4,6 +4,7 @@ Emre Saglam <emresaglam@gmail.com>
4
4
  Hemna <waboring@hemna.com>
5
5
  Jason Martin <jhmartin@toger.us>
6
6
  John <johng42@users.noreply.github.com>
7
+ Martiros Shakhzadyan <vrzh@vrzh.net>
7
8
  Walter A. Boring IV <waboring@hemna.com>
8
9
  Zoe Moore <zoenb@mailbox.org>
9
10
  craigerl <craig@craiger.org>
@@ -1,6 +1,71 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ v3.3.1
5
+ ------
6
+
7
+ * Fixed failure with fetch-stats
8
+ * Fixed problem with list-plugins
9
+
10
+ v3.3.0
11
+ ------
12
+
13
+ * Changelog for 3.3.0
14
+ * sample-config fix
15
+ * Fixed registry url post
16
+ * Changed processpkt message
17
+ * Fixed RegistryThread not sending requests
18
+ * use log.setup\_logging
19
+ * Disable debug logs for aprslib
20
+ * Make registry thread sleep
21
+ * Put threads first after date/time
22
+ * Replace slow rich logging with loguru
23
+ * Updated requirements
24
+ * Fixed pep8
25
+ * Added list-extensions and updated README.rst
26
+ * Change defaults for beacon and registry
27
+ * Add log info for Beacon and Registry threads
28
+ * fixed frequency\_seconds to IntOpt
29
+ * fixed references to conf
30
+ * changed the default packet timeout to 5 minutes
31
+ * Fixed default service registry url
32
+ * fix pep8 failures
33
+ * py311 fails in github
34
+ * Don't send uptime to registry
35
+ * Added sending software string to registry
36
+ * add py310 gh actions
37
+ * Added the new APRS Registry thread
38
+ * Added installing extensions to Docker run
39
+ * Cleanup some logs
40
+ * Added BeaconPacket
41
+ * updated requirements files
42
+ * removed some unneeded code
43
+ * Added iterator to objectstore
44
+ * Added some missing classes to threads
45
+ * Added support for loading extensions
46
+ * Added location for callsign tabs in webchat
47
+ * updated gitignore
48
+ * Create codeql.yml
49
+ * update github action branchs to v8
50
+ * Added Location info on webchat interface
51
+ * Updated dev test-plugin command
52
+ * Update requirements.txt
53
+ * Update for v3.2.3
54
+
55
+ v3.2.3
56
+ ------
57
+
58
+ * Force fortune path during setup test
59
+ * added /usr/games to path
60
+ * Added fortune to Dockerfile-dev
61
+ * Added missing fortune app
62
+ * aprsd: main.py: Fix premature return in sample\_config
63
+ * Update weather.py because you can't sort icons by penis
64
+ * Update weather.py both weather plugins have new Ww regex
65
+ * Update weather.py
66
+ * Fixed a bug with OWMWeatherPlugin
67
+ * Rework Location Plugin
68
+
4
69
  v3.2.2
5
70
  ------
6
71
 
@@ -84,5 +84,5 @@ update-requirements: dev ## Update the requirements.txt and dev-requirements.tx
84
84
  rm dev-requirements.txt
85
85
  touch requirements.txt
86
86
  touch dev-requirements.txt
87
- $(VENV)/pip-compile --resolver backtracking --annotation-style line requirements.in
88
- $(VENV)/pip-compile --resolver backtracking --annotation-style line dev-requirements.in
87
+ $(VENV)/pip-compile --resolver backtracking --annotation-style=line requirements.in
88
+ $(VENV)/pip-compile --resolver backtracking --annotation-style=line dev-requirements.in
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aprsd
3
- Version: 3.2.2
3
+ Version: 3.3.1
4
4
  Summary: Amateur radio APRS daemon which listens for messages and responds
5
5
  Home-page: http://aprsd.readthedocs.org
6
6
  Author: Craig Lamparter
@@ -19,79 +19,80 @@ Classifier: Programming Language :: Python :: 3.9
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  Requires-Dist: aprslib==0.7.2
22
- Requires-Dist: attrs==23.1.0
22
+ Requires-Dist: attrs==23.2.0
23
23
  Requires-Dist: ax253==0.1.5.post1
24
- Requires-Dist: beautifulsoup4==4.12.2
25
- Requires-Dist: bidict==0.22.1
26
- Requires-Dist: bitarray==2.8.3
24
+ Requires-Dist: beautifulsoup4==4.12.3
25
+ Requires-Dist: bidict==0.23.1
26
+ Requires-Dist: bitarray==2.9.2
27
27
  Requires-Dist: blinker==1.7.0
28
- Requires-Dist: certifi==2023.7.22
28
+ Requires-Dist: certifi==2024.2.2
29
29
  Requires-Dist: charset-normalizer==3.3.2
30
30
  Requires-Dist: click==8.1.7
31
31
  Requires-Dist: click-completion==0.5.2
32
- Requires-Dist: click-params==0.4.1
32
+ Requires-Dist: click-params==0.5.0
33
33
  Requires-Dist: commonmark==0.9.1
34
34
  Requires-Dist: dacite2==2.0.0
35
35
  Requires-Dist: dataclasses==0.6
36
- Requires-Dist: dataclasses-json==0.6.2
37
- Requires-Dist: debtcollector==2.5.0
38
- Requires-Dist: decorator==5.1.1
39
- Requires-Dist: dnspython==2.4.2
40
- Requires-Dist: eventlet==0.33.3
41
- Requires-Dist: flask==3.0.0
36
+ Requires-Dist: dataclasses-json==0.6.4
37
+ Requires-Dist: debtcollector==3.0.0
38
+ Requires-Dist: deprecated==1.2.14
39
+ Requires-Dist: dnspython==2.6.1
40
+ Requires-Dist: eventlet==0.35.2
41
+ Requires-Dist: flask==3.0.2
42
42
  Requires-Dist: flask-httpauth==4.8.0
43
43
  Requires-Dist: flask-socketio==5.3.6
44
44
  Requires-Dist: geographiclib==2.0
45
- Requires-Dist: geopy==2.4.0
46
- Requires-Dist: gevent==23.9.1
47
- Requires-Dist: greenlet==3.0.1
45
+ Requires-Dist: geopy==2.4.1
46
+ Requires-Dist: gevent==24.2.1
47
+ Requires-Dist: greenlet==3.0.3
48
48
  Requires-Dist: h11==0.14.0
49
- Requires-Dist: idna==3.4
50
- Requires-Dist: imapclient==3.0.0
51
- Requires-Dist: importlib-metadata==6.8.0
49
+ Requires-Dist: idna==3.6
50
+ Requires-Dist: imapclient==3.0.1
51
+ Requires-Dist: importlib-metadata==7.0.1
52
52
  Requires-Dist: itsdangerous==2.1.2
53
- Requires-Dist: jinja2==3.1.2
53
+ Requires-Dist: jinja2==3.1.3
54
54
  Requires-Dist: kiss3==8.0.0
55
- Requires-Dist: markupsafe==2.1.3
56
- Requires-Dist: marshmallow==3.20.1
55
+ Requires-Dist: loguru==0.7.2
56
+ Requires-Dist: markupsafe==2.1.5
57
+ Requires-Dist: marshmallow==3.21.1
57
58
  Requires-Dist: mypy-extensions==1.0.0
58
- Requires-Dist: netaddr==0.9.0
59
- Requires-Dist: oslo-config==9.2.0
60
- Requires-Dist: oslo-i18n==6.2.0
59
+ Requires-Dist: netaddr==1.2.1
60
+ Requires-Dist: oslo-config==9.4.0
61
+ Requires-Dist: oslo-i18n==6.3.0
61
62
  Requires-Dist: packaging==23.2
62
63
  Requires-Dist: pbr==6.0.0
63
- Requires-Dist: pluggy==1.3.0
64
+ Requires-Dist: pluggy==1.4.0
64
65
  Requires-Dist: plumbum==1.8.2
65
- Requires-Dist: pygments==2.16.1
66
+ Requires-Dist: pygments==2.17.2
66
67
  Requires-Dist: pyserial==3.5
67
68
  Requires-Dist: pyserial-asyncio==0.6
68
- Requires-Dist: python-engineio==4.8.0
69
- Requires-Dist: python-socketio==5.10.0
70
- Requires-Dist: pytz==2023.3.post1
69
+ Requires-Dist: python-engineio==4.9.0
70
+ Requires-Dist: python-socketio==5.11.1
71
+ Requires-Dist: pytz==2024.1
71
72
  Requires-Dist: pyyaml==6.0.1
72
73
  Requires-Dist: requests==2.31.0
73
74
  Requires-Dist: rfc3986==2.0.0
74
75
  Requires-Dist: rich==12.6.0
75
- Requires-Dist: rpyc==5.3.1
76
+ Requires-Dist: rpyc==6.0.0
76
77
  Requires-Dist: rush==2021.4.0
77
78
  Requires-Dist: shellingham==1.5.4
78
79
  Requires-Dist: simple-websocket==1.0.0
79
80
  Requires-Dist: six==1.16.0
80
81
  Requires-Dist: soupsieve==2.5
81
- Requires-Dist: stevedore==5.1.0
82
+ Requires-Dist: stevedore==5.2.0
82
83
  Requires-Dist: tabulate==0.9.0
83
84
  Requires-Dist: thesmuggler==1.0.1
84
- Requires-Dist: typing-extensions==4.8.0
85
+ Requires-Dist: typing-extensions==4.10.0
85
86
  Requires-Dist: typing-inspect==0.9.0
86
87
  Requires-Dist: update-checker==0.18.0
87
- Requires-Dist: urllib3==2.1.0
88
- Requires-Dist: validators==0.20.0
88
+ Requires-Dist: urllib3==2.2.1
89
+ Requires-Dist: validators==0.22.0
89
90
  Requires-Dist: werkzeug==3.0.1
90
91
  Requires-Dist: wrapt==1.16.0
91
92
  Requires-Dist: wsproto==1.2.0
92
93
  Requires-Dist: zipp==3.17.0
93
94
  Requires-Dist: zope-event==5.0
94
- Requires-Dist: zope-interface==6.1
95
+ Requires-Dist: zope-interface==6.2
95
96
 
96
97
  ===============================================
97
98
  APRSD - Ham radio APRS-IS Message plugin server
@@ -105,32 +106,38 @@ ____________________
105
106
 
106
107
  `APRSD <http://github.com/craigerl/aprsd>`_ is a Ham radio `APRS <http://aprs.org>`_ message command gateway built on python.
107
108
 
108
- APRSD listens on amateur radio aprs-is network for messages and respond to them.
109
- It has a plugin architecture for extensibility. Users of APRSD can write their own
110
- plugins that can respond to APRS-IS messages.
111
109
 
112
- You must have an amateur radio callsign to use this software. APRSD gets
113
- messages for the configured HAM callsign, and sends those messages to a
114
- list of plugins for processing. There are a set of core plugins that
115
- provide responding to messages to check email, get location, ping,
116
- time of day, get weather, and fortune telling as well as version information
117
- of aprsd itself.
118
-
119
- Please `read the docs`_ to learn more!
110
+ What is APRSD
111
+ =============
112
+ APRSD is a python application for interacting with the APRS network and providing
113
+ APRS services for HAM radio operators.
120
114
 
115
+ APRSD currently has 4 main commands to use.
116
+ * server - Connect to APRS and listen/respond to APRS messages
117
+ * webchat - web based chat program over APRS
118
+ * send-message - Send a message to a callsign via APRS_IS.
119
+ * listen - Listen to packets on the APRS-IS Network based on FILTER.
121
120
 
122
- .. contents:: :local:
121
+ Each of those commands can connect to the APRS-IS network if internet connectivity
122
+ is available. If internet is not available, then APRS can be configured to talk
123
+ to a TCP KISS TNC for radio connectivity.
123
124
 
125
+ Please `read the docs`_ to learn more!
124
126
 
125
127
  APRSD Overview Diagram
126
128
  ======================
127
129
 
128
130
  .. image:: https://raw.githubusercontent.com/craigerl/aprsd/master/docs/_static/aprsd_overview.svg?sanitize=true
129
131
 
130
-
131
132
  Typical use case
132
133
  ================
133
134
 
135
+ APRSD's typical use case is that of providing an APRS wide service to all HAM
136
+ radio operators. For example the callsign 'REPEAT' on the APRS network is actually
137
+ an instance of APRSD that can provide a list of HAM repeaters in the area of the
138
+ callsign that sent the message.
139
+
140
+
134
141
  Ham radio operator using an APRS enabled HAM radio sends a message to check
135
142
  the weather. An APRS message is sent, and then picked up by APRSD. The
136
143
  APRS packet is decoded, and the message is sent through the list of plugins
@@ -141,55 +148,6 @@ callsigns to look out for. The watch list can notify you when a HAM callsign
141
148
  in the list is seen and now available to message on the APRS network.
142
149
 
143
150
 
144
- Current list of built-in plugins
145
- ======================================
146
-
147
- ::
148
-
149
- └─> aprsd list-plugins
150
- 🐍 APRSD Built-in Plugins 🐍
151
- ┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
152
- ┃ Plugin Name ┃ Info ┃ Type ┃ Plugin Path ┃
153
- ┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
154
- │ AVWXWeatherPlugin │ AVWX weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.AVWXWeatherPlugin │
155
- │ EmailPlugin │ Send and Receive email │ RegexCommand │ aprsd.plugins.email.EmailPlugin │
156
- │ FortunePlugin │ Give me a fortune │ RegexCommand │ aprsd.plugins.fortune.FortunePlugin │
157
- │ LocationPlugin │ Where in the world is a CALLSIGN's last GPS beacon? │ RegexCommand │ aprsd.plugins.location.LocationPlugin │
158
- │ NotifySeenPlugin │ Notify me when a CALLSIGN is recently seen on APRS-IS │ WatchList │ aprsd.plugins.notify.NotifySeenPlugin │
159
- │ OWMWeatherPlugin │ OpenWeatherMap weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.OWMWeatherPlugin │
160
- │ PingPlugin │ reply with a Pong! │ RegexCommand │ aprsd.plugins.ping.PingPlugin │
161
- │ QueryPlugin │ APRSD Owner command to query messages in the MsgTrack │ RegexCommand │ aprsd.plugins.query.QueryPlugin │
162
- │ TimeOWMPlugin │ Current time of GPS beacon's timezone. Uses OpenWeatherMap │ RegexCommand │ aprsd.plugins.time.TimeOWMPlugin │
163
- │ TimePlugin │ What is the current local time. │ RegexCommand │ aprsd.plugins.time.TimePlugin │
164
- │ USMetarPlugin │ USA only METAR of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USMetarPlugin │
165
- │ USWeatherPlugin │ Provide USA only weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USWeatherPlugin │
166
- │ VersionPlugin │ What is the APRSD Version │ RegexCommand │ aprsd.plugins.version.VersionPlugin │
167
- └───────────────────┴────────────────────────────────────────────────────────────┴──────────────┴─────────────────────────────────────────┘
168
-
169
-
170
- Pypi.org APRSD Installable Plugin Packages
171
-
172
- Install any of the following plugins with 'pip install <Plugin Package Name>'
173
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
174
- ┃ Plugin Package Name ┃ Description ┃ Version ┃ Released ┃ Installed? ┃
175
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
176
- │ 📂 aprsd-stock-plugin │ Ham Radio APRSD Plugin for fetching stock quotes │ 0.1.3 │ Dec 2, 2022 │ No │
177
- │ 📂 aprsd-sentry-plugin │ Ham radio APRSD plugin that does.... │ 0.1.2 │ Dec 2, 2022 │ No │
178
- │ 📂 aprsd-timeopencage-plugin │ APRSD plugin for fetching time based on GPS location │ 0.1.0 │ Dec 2, 2022 │ No │
179
- │ 📂 aprsd-weewx-plugin │ HAM Radio APRSD that reports weather from a weewx weather station. │ 0.1.4 │ Dec 7, 2021 │ Yes │
180
- │ 📂 aprsd-repeat-plugins │ APRSD Plugins for the REPEAT service │ 1.0.12 │ Dec 2, 2022 │ No │
181
- │ 📂 aprsd-telegram-plugin │ Ham Radio APRS APRSD plugin for Telegram IM service │ 0.1.3 │ Dec 2, 2022 │ No │
182
- │ 📂 aprsd-twitter-plugin │ Python APRSD plugin to send tweets │ 0.3.0 │ Dec 7, 2021 │ No │
183
- │ 📂 aprsd-slack-plugin │ Amateur radio APRS daemon which listens for messages and responds │ 1.0.5 │ Dec 18, 2022 │ No │
184
- └──────────────────────────────┴────────────────────────────────────────────────────────────────────┴─────────┴──────────────┴────────────┘
185
-
186
-
187
- 🐍 APRSD Installed 3rd party Plugins 🐍
188
- ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
189
- ┃ Package Name ┃ Plugin Name ┃ Version ┃ Type ┃ Plugin Path ┃
190
- ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
191
- │ aprsd-weewx-plugin │ WeewxMQTTPlugin │ 1.0 │ RegexCommand │ aprsd_weewx_plugin.weewx.WeewxMQTTPlugin │
192
- └────────────────────┴─────────────────┴─────────┴──────────────┴──────────────────────────────────────────┘
193
151
 
194
152
  Installation
195
153
  =============
@@ -282,6 +240,56 @@ look for incomming commands to the callsign configured in the config file
282
240
  12/07/2021 03:16:17 PM MainThread INFO aprs.logfile = /tmp/aprsd.log server.py:60
283
241
 
284
242
 
243
+ Current list of built-in plugins
244
+ ======================================
245
+
246
+ ::
247
+
248
+ └─> aprsd list-plugins
249
+ 🐍 APRSD Built-in Plugins 🐍
250
+ ┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
251
+ ┃ Plugin Name ┃ Info ┃ Type ┃ Plugin Path ┃
252
+ ┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
253
+ │ AVWXWeatherPlugin │ AVWX weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.AVWXWeatherPlugin │
254
+ │ EmailPlugin │ Send and Receive email │ RegexCommand │ aprsd.plugins.email.EmailPlugin │
255
+ │ FortunePlugin │ Give me a fortune │ RegexCommand │ aprsd.plugins.fortune.FortunePlugin │
256
+ │ LocationPlugin │ Where in the world is a CALLSIGN's last GPS beacon? │ RegexCommand │ aprsd.plugins.location.LocationPlugin │
257
+ │ NotifySeenPlugin │ Notify me when a CALLSIGN is recently seen on APRS-IS │ WatchList │ aprsd.plugins.notify.NotifySeenPlugin │
258
+ │ OWMWeatherPlugin │ OpenWeatherMap weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.OWMWeatherPlugin │
259
+ │ PingPlugin │ reply with a Pong! │ RegexCommand │ aprsd.plugins.ping.PingPlugin │
260
+ │ QueryPlugin │ APRSD Owner command to query messages in the MsgTrack │ RegexCommand │ aprsd.plugins.query.QueryPlugin │
261
+ │ TimeOWMPlugin │ Current time of GPS beacon's timezone. Uses OpenWeatherMap │ RegexCommand │ aprsd.plugins.time.TimeOWMPlugin │
262
+ │ TimePlugin │ What is the current local time. │ RegexCommand │ aprsd.plugins.time.TimePlugin │
263
+ │ USMetarPlugin │ USA only METAR of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USMetarPlugin │
264
+ │ USWeatherPlugin │ Provide USA only weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USWeatherPlugin │
265
+ │ VersionPlugin │ What is the APRSD Version │ RegexCommand │ aprsd.plugins.version.VersionPlugin │
266
+ └───────────────────┴────────────────────────────────────────────────────────────┴──────────────┴─────────────────────────────────────────┘
267
+
268
+
269
+ Pypi.org APRSD Installable Plugin Packages
270
+
271
+ Install any of the following plugins with 'pip install <Plugin Package Name>'
272
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
273
+ ┃ Plugin Package Name ┃ Description ┃ Version ┃ Released ┃ Installed? ┃
274
+ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
275
+ │ 📂 aprsd-stock-plugin │ Ham Radio APRSD Plugin for fetching stock quotes │ 0.1.3 │ Dec 2, 2022 │ No │
276
+ │ 📂 aprsd-sentry-plugin │ Ham radio APRSD plugin that does.... │ 0.1.2 │ Dec 2, 2022 │ No │
277
+ │ 📂 aprsd-timeopencage-plugin │ APRSD plugin for fetching time based on GPS location │ 0.1.0 │ Dec 2, 2022 │ No │
278
+ │ 📂 aprsd-weewx-plugin │ HAM Radio APRSD that reports weather from a weewx weather station. │ 0.1.4 │ Dec 7, 2021 │ Yes │
279
+ │ 📂 aprsd-repeat-plugins │ APRSD Plugins for the REPEAT service │ 1.0.12 │ Dec 2, 2022 │ No │
280
+ │ 📂 aprsd-telegram-plugin │ Ham Radio APRS APRSD plugin for Telegram IM service │ 0.1.3 │ Dec 2, 2022 │ No │
281
+ │ 📂 aprsd-twitter-plugin │ Python APRSD plugin to send tweets │ 0.3.0 │ Dec 7, 2021 │ No │
282
+ │ 📂 aprsd-slack-plugin │ Amateur radio APRS daemon which listens for messages and responds │ 1.0.5 │ Dec 18, 2022 │ No │
283
+ └──────────────────────────────┴────────────────────────────────────────────────────────────────────┴─────────┴──────────────┴────────────┘
284
+
285
+
286
+ 🐍 APRSD Installed 3rd party Plugins 🐍
287
+ ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
288
+ ┃ Package Name ┃ Plugin Name ┃ Version ┃ Type ┃ Plugin Path ┃
289
+ ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
290
+ │ aprsd-weewx-plugin │ WeewxMQTTPlugin │ 1.0 │ RegexCommand │ aprsd_weewx_plugin.weewx.WeewxMQTTPlugin │
291
+ └────────────────────┴─────────────────┴─────────┴──────────────┴──────────────────────────────────────────┘
292
+
285
293
 
286
294
 
287
295
  send-message