From 5ece2a10ef7eec5c073c1de4a666dcdba8def7eb Mon Sep 17 00:00:00 2001 From: Walter Boring Date: Wed, 10 Dec 2025 14:57:12 -0500 Subject: [PATCH] Reworked README and documentation --- ChangeLog.rst | 1571 ++++++++++++++++++ README.md | 58 +- aprsd/utils/__init__.py | 19 +- aprsd/utils/trace.py | 3 +- docs/apidoc/aprsd.client.drivers.lib.rst | 21 + docs/apidoc/aprsd.client.drivers.rst | 38 +- docs/apidoc/aprsd.client.rst | 36 +- docs/apidoc/aprsd.packets.filters.rst | 29 + docs/apidoc/aprsd.packets.rst | 16 + docs/apidoc/aprsd.threads.rst | 8 + docs/apidoc/aprsd.utils.rst | 8 + docs/builtin_plugins.rst | 346 ++++ docs/changelog.rst | 1834 +++++++++++++++------- docs/configure.rst | 258 +-- docs/extension.rst | 234 +++ docs/index.rst | 3 + docs/listen.rst | 138 ++ docs/plugin.rst | 57 + docs/server.rst | 175 ++- 19 files changed, 4021 insertions(+), 831 deletions(-) create mode 100644 ChangeLog.rst create mode 100644 docs/apidoc/aprsd.client.drivers.lib.rst create mode 100644 docs/apidoc/aprsd.packets.filters.rst create mode 100644 docs/builtin_plugins.rst create mode 100644 docs/extension.rst create mode 100644 docs/listen.rst diff --git a/ChangeLog.rst b/ChangeLog.rst new file mode 100644 index 0000000..31682c0 --- /dev/null +++ b/ChangeLog.rst @@ -0,0 +1,1571 @@ +### Changelog + +All notable changes to this project will be documented in this file. Dates are displayed in UTC. + +Generated by ``auto-changelog` `_. + +#### `4.2.4 `_ + +.. + + 17 October 2025 + +* update github release build action ``0373db9` `_ +* Remove update_timestamp during _send_direct ``6c3c16f` `_ +* remove some debug noise ``be26f31` `_ + +#### `4.2.3 `_ + +.. + + 12 October 2025 + +* Remove printf from tcpkiss ``4b9e7fe` `_ +* Added line numbers in trace ``9a1c096` `_ +* Stop all collectors on signal ``643e19b` `_ +* Added stop_all to stats collector. ``eb8104b` `_ +* Cleanup of tcpkiss ``3d353dc` `_ +* Driver protocol is_alive is property ``7c5d9ee` `_ +* Make fake driver conform to protocol ``093ada0` `_ +* Fixed aprsis client connected tracking ``056acc3` `_ +* Fixed client base class connection tracking ``24019ae` `_ +* Fixed unit tests ``961d3e9` `_ +* update for 4.2.3 ``8932524` `_ + +#### `4.2.2 `_ + +.. + + 8 October 2025 + +* Fixed an issue with client.reset ``4920256` `_ + +#### `4.2.1 `_ + +.. + + 7 October 2025 + +* Sanity check around decoding packet ``58cb046` `_ +* Added CONF.is_digipi ``f3039eb` `_ +* Fixed stats issue with tcpkiss client. ``556554b` `_ +* Fixed missing f string ``8cd61a7` `_ +* Added ThirdPartyPacket decoding in tcpkiss driver ``3961e1d` `_ +* refactored list-plugins ``c7c9a92` `_ +* Added package ``e15322e` `_ +* Some client and driver cleanup. ``328c027` `_ +* Fixed some unit tests ``af0feaf` `_ +* Update Changelog for 4.2.1 release ``9bf4bfd` `_ + +#### `4.2.0 `_ + +.. + + 12 August 2025 + +* Reworked the entire client and drivers ``#191` `_ +* Update the docker-compose.yml ``#193` `_ +* Use OpenWeatherMap One Call v3.0 API ``#186` `_ +* use OWM onecall v3.0 ``16bfda4` `_ +* Fixed a problem with WeatherPacket ``5469610` `_ +* Ensure filter is set ``4c53c13` `_ +* Remove flask_enabled ``ce79f01` `_ +* Make some catchall fields non hashable. ``acd639a` `_ +* Fixed setup for AVWXWeatherPlugin ``2fcd574` `_ +* removed old flask_enabled global ``8f471c2` `_ +* Updated requirements ``211ac11` `_ +* Don't log an IOError on shutdown ``d41064b` `_ +* Honor quiet setting for log.setup_logging ``1ae4375` `_ +* Make sure packet has addressee field ``034f11b` `_ +* Fix tox failures ``74887af` `_ +* log the exception when tx fails. ``fa5d0c6` `_ +* Updated requirements for 4.2.0 ``2c476d8` `_ +* Updated Changelog for 4.2.0 ``b9fea98` `_ + +#### `4.1.2 `_ + +.. + + 6 March 2025 + +* Allow passing in a custom handler to setup_logging ``d262589` `_ +* Changelog for 4.1.2 ``6dba56f` `_ + +#### `4.1.1 `_ + +.. + + 5 March 2025 + +* Added new config to disable logging to console ``0fa5b07` `_ +* Added threads.service ``c1c89fd` `_ +* Update requirements ``2b185ee` `_ +* Fixed some more ruff checks ``94ba915` `_ +* 4.1.1 release ``7ed8028` `_ + +#### `4.1.0 `_ + +.. + + 20 February 2025 + +* Added new PacketFilter mechanism ``#184` `_ +* Update to build from pypi ``3b57e75` `_ +* Updated APRSIS driver ``1606585` `_ +* Updated packet_list to allow infinit max store ``19c12e7` `_ +* Update StatsStore to use existing lock ``227ddbf` `_ +* Try and stop chardet logging! ``101904c` `_ +* Fixed some pep8 failures. ``e9e7e6b` `_ +* updated gitignore ``fd517b3` `_ +* Remove sleep in main RX thread ``6cd7e99` `_ +* Changed Objectstore log to debug ``361663e` `_ +* fix for None packet in rx thread ``d82a81a` `_ +* Fix runaway KISS driver on failed connnection ``b6da0eb` `_ +* CONF.logging.enable_color option added ``06bdb34` `_ +* Update Changelog for 4.1.0 release ``a3cda9f` `_ + +#### `4.0.2 `_ + +.. + + 25 January 2025 + +* Fix for KISS/Fake client drivers ``edeba7f` `_ +* Trap for failed parsing of packets on KISS ``9501a63` `_ +* Pass branch in github release_build ``1f65bbe` `_ +* Removed some verbose output from KISS ``c1319c3` `_ +* Look in multiple places for fortune bin ``97ffffc` `_ +* Added uv.lock ``2f26eb8` `_ +* Fix the testing of fortune path ``3c4e200` `_ +* update the install from github in Dockerfile ``bea4815` `_ +* Prep for 4.0.2 ``000adef` `_ + +#### `4.0.1 `_ + +.. + + 24 January 2025 + +* Update pyproject for README.rst -> md ``e080394` `_ +* Updated Changelog ``24f5672` `_ + +### `4.0.0 `_ + +.. + + 24 January 2025 + +* Migrate admin web out of aprsd. ``#183` `_ +* Enable packet stats for listen command in Docker ``e5d8796` `_ +* Added activity to README ``cdd297c` `_ +* Added star history to readme ``02e2940` `_ +* removed pytest from README ``1cba31f` `_ +* Updated Docker for using alpine and uv ``24db814` `_ +* Update the admin and setup.sh for container ``044ea4c` `_ +* added healthcheck.sh ``1054999` `_ +* updated healthcheck.sh ``dabb48c` `_ +* try making image for webchat ``ba8acdc` `_ +* Added APRSD logo ``0ed648f` `_ +* Added plugin and extension links ``447451c` `_ +* reduced logo size 50% ``cf4a29f` `_ +* Updated README.md TOC ``375a5e5` `_ +* chore: update AUTHORS [skip ci] ``c556f51` `_ +* Updated requirements ``4a7a902` `_ +* Updated ChangeLog for 4.0.0 ``934ebd2` `_ + +#### `3.5.0 `_ + +.. + + 10 January 2025 + +* Migrate admin web out of aprsd. ``c48ff8d` `_ +* Remove webchat as a built in command. ``8f8887f` `_ +* Remove email plugin ``0880a35` `_ +* Fixed make clean ``ae28dbb` `_ +* removed email reference ``fcd1629` `_ +* Removed more email references. ``f0c0260` `_ +* Removed LocationPlugin from aprsd core ``3bba8a1` `_ +* Include haversine library ``bbdbb9a` `_ +* Update Makefile ``caa4bb8` `_ +* Added new KeepAliveCollector ``30d1eb5` `_ +* Changed to ruff ``72d068c` `_ +* Changed README.rst -> README.md ``b1a830d` `_ +* fixed list-plugins ``ec1adf4` `_ +* Updated README.md ``fd74405` `_ +* updated workflow ``df14eb8` `_ +* Some cleanup with list plugins ``5274c5d` `_ +* Updated README.md ``275e335` `_ +* removed BeautifulSoup usage ``a21432f` `_ +* updated github workflows ``e3a7e7f` `_ +* updated requirements-dev ``fbec716` `_ +* updated requirements ``7f2c1d7` `_ +* updated plugin example ``0073865` `_ +* updated docs rst files ``3cd9bfa` `_ +* added authors.yml ``c8735c2` `_ +* updated action versions ``7702d68` `_ +* update to py 3.10 ``3ee422b` `_ +* Added .mailmap ``8d98546` `_ +* updated tools in pre-commit ``e4f82d6` `_ +* some cleanup ``e332d7c` `_ + +#### `3.4.4 `_ + +.. + + 6 December 2024 + +* Update counter.py ``#182` `_ +* Added an option to disable the loading of the help plugin. ``#177` `_ +* Added unit test for client base ``#181` `_ +* Walt listen test ``#180` `_ +* Bump werkzeug from 3.0.4 to 3.0.6 ``#178` `_ +* Added new aprsd admin command ``0271ccd` `_ +* Added some changes to listen ``df0ca04` `_ +* Added some changes to listen ``d863474` `_ +* Fix a small issue with packet sending failures ``3fd6069` `_ +* Fix a small issue with packet sending failures ``f265e8f` `_ +* Added new dump-stats command ``add18f1` `_ +* Update PacketList ``7e8d7cd` `_ +* Updated APRSClient ``d808e21` `_ +* Calculate delta once and reuse it ``0be87d8` `_ +* Added unit test for ClientFactory ``ab2de86` `_ +* Added unit test for APRSISClient ``224686c` `_ +* optimized Packet.get() ``579d0c9` `_ +* fixed name for dump-stats output ``563b068` `_ +* updated README.rst ``229155d` `_ +* Only load EmailStats if email is enabled ``2fdc7b1` `_ +* Added rich output for dump-stats ``d0018a8` `_ +* Allow disabling sending all AckPackets ``6e62ac1` `_ +* Allow loading a specific list of plugins ``9f3c8f8` `_ +* Catch and log exceptions in consumer ``adcf94d` `_ +* Fixed the protocol for Stats Collector ``bd0bcc1` `_ +* Added new features to listen command. ``7d1e739` `_ +* Don't break logging aprslib failures ``98a6210` `_ +* Change healthcheck email thread check timeout ``03ce5a3` `_ +* Addressing comments in PR. ``2471492` `_ +* Update utils.trace ``c3df974` `_ +* Update requirements ``257fa0d` `_ +* Fixes for webchat UI. ``f0b9956` `_ +* Sending message to new callsign displays in an active tab ``d42638e` `_ +* Update WebChat ``9f7d169` `_ +* Update Client to report login status ``06c1fb9` `_ +* Updated server client checks ``1c50c39` `_ +* Fixed broken unit tests ``c82e9ba` `_ +* Fixed pep8 failure on counter.py ``1eaa4b8` `_ +* No reason to create the client in init ``e99c906` `_ +* Added APRSDThread pause/unpause capability ``95094b8` `_ +* Added client_exists() for client factory ``505565d` `_ +* Added pause_all, unpause_all in threadlist ``76d275d` `_ +* Make sure to sleep(1) in the main RX thread ``98a96cb` `_ +* Put safety checks around the timeago for keepalive ``be6357a` `_ +* Properly report TCPKISS connection ``3e488db` `_ +* Fix call in kiss consumer ``aba5bb0` `_ +* Update RX Packet dupe checking ``8f3da96` `_ +* Webchat: Don't automatically fetch location KISS ``e8ae380` `_ +* Fixed issue not processing null msg ids ``a17b80d` `_ +* Updated keepalive thread to report client ``8529f1f` `_ +* Fixed webchat popovers not working. ``3a8b8f2` `_ +* Fixed issue with packet object and prepare() ``f66b962` `_ +* Fixed webchat packets without msgNo ``d4ae726` `_ +* Added __contains__ to threadlist ``d94a3e7` `_ +* Update healthcheck ``7fb0c74` `_ +* Remove dataclasses from requirements ``db73a54` `_ +* Update requirements.dev ``0d8a1ac` `_ +* Added new acked property to the core Packet ``3c058f3` `_ +* Fixed some pep8 failures ``63bcd41` `_ +* Update Changelog for 3.4.4 ``bc709b3` `_ + +#### `3.4.3 `_ + +.. + + 18 November 2024 + +#### `v3.4.3 `_ + +.. + + 29 October 2024 + +* Change virtual env name to .venv ``882e907` `_ +* Fixed issue in send_message command ``ecf30d3` `_ +* Update Changelog for v3.4.3 ``5780626` `_ + +#### `v3.4.2 `_ + +.. + + 18 October 2024 + +* Removed remnants of QueryPlugin ``758007e` `_ +* Removed dumping of the stats on exit ``5314856` `_ +* Added color logging of thread names at keepalive ``5e9f92d` `_ +* Added packet log distance and new arrows ``3e9bf24` `_ +* Log closing client connection. ``9951b12` `_ +* Sort changelog commits by date ``a65262d` `_ +* Add final stages in Dockerfile ``8cdbf18` `_ +* Collector cleanup ``765e02f` `_ +* cleaned up some requirements ``c12c42b` `_ +* Cleanup test failures ``14c0a69` `_ + +#### `v3.4.1 `_ + +.. + + 23 September 2024 + +* Bump zipp from 3.18.2 to 3.19.1 ``#170` `_ +* Bump certifi from 2024.2.2 to 2024.7.4 ``#169` `_ +* Bump urllib3 from 2.2.1 to 2.2.2 ``#168` `_ +* Refactor client and drivers ``#164` `_ +* Refactor Dockerfile ``#167` `_ +* Bump requests from 2.31.0 to 2.32.0 ``#166` `_ +* Bump jinja2 from 3.1.3 to 3.1.4 ``#163` `_ +* Put an upper bound on the QueueHandler queue ``93a9cce` `_ +* Eliminate need for PBR ``f159741` `_ +* Use newer python -m build to build aprsd wheel ``2abf8bc` `_ +* updated requirements ``fa2d2d9` `_ +* --- ``18fb2a9` `_ +* removed ``f7a9f7a` `_ +* Updated README ``8f1733e` `_ +* Hack Dockerfile for admin fixes? ``f07ef71` `_ +* update to pyproject ``4b26e2b` `_ +* Fixed reference to ThirdPartyPacket ``ffa28fa` `_ +* Use auto-changelog to generate changelog ``673b34c` `_ +* Renamed Changelog ``5ebbb52` `_ +* Updated Makefile to build Changelog ``3741555` `_ +* Update base docs ``92cb92f` `_ +* added m2r package to dev requirements ``49e8a62` `_ +* Updated requirements ``9d3f45a` `_ +* Fixed pep8 with packet_list ``b172c6d` `_ +* Rebuild ChangeLog ``af3d741` `_ +* No limit on change log commits ``e3ab6e7` `_ +* retagged v3.4.1 in prep for release ``a6f84e4` `_ +* Build > python 3.10 ``e5662b9` `_ +* Update ChangeLog ``9b843ee` `_ +* Removed invalid pyproject classifier ``a5dc322` `_ +* Update Changelog ``a74a66d` `_ + +#### `v3.4.0 `_ + +.. + + 29 April 2024 + +* Reworked the stats making the rpc server obsolete. ``#159` `_ +* Update client.py to add consumer in the API. ``#158` `_ +* Packet updates ``#154` `_ +* Bump black from 24.2.0 to 24.3.0 ``#155` `_ +* Fixed access to conf.log in logging_setup ``c1acdc2` `_ +* Fixed call to setup_logging in uwsgi ``8797dfd` `_ +* replaced access to conf from uwsgi ``82b3761` `_ +* Update tox for mypy runs ``d0f53c5` `_ +* Start to add types ``12dab28` `_ +* No need to synchronize on stats ``29b4b04` `_ +* Moved Threads list for mypy ``d80277c` `_ +* Added type setting on pluging.py for mypy ``9c77ca2` `_ +* small refactor of stats usage in version plugin ``90f212e` `_ +* removed print ``6f1d6b4` `_ +* Refactored packets ``1477e61` `_ +* Fixed some tox errors related to mypy ``00e185b` `_ +* updated dev-requirements ``eada5e9` `_ +* Fix for micE packet decoding with mbits ``386d2be` `_ +* Eliminated need for from_aprslib_dict ``e386e91` `_ +* Don't call stats so often in webchat ``9858955` `_ +* Added missing packet types in listen command ``f450238` `_ +* Fixed some logging in webchat ``127d3b3` `_ +* Completely redo logging of packets!! ``1e6c483` `_ +* Fix some pep8 issues ``b461231` `_ +* Added new webchat config option for logging ``9e26df2` `_ +* Some packet cleanup ``da7b712` `_ +* Added new config option log_packet_format ``c581dc5` `_ +* Show comment in multiline packet output ``f4356e4` `_ +* More packet cleanup and tests ``f53df24` `_ +* added packet counter random int ``873fc06` `_ +* Fix for filtering curse words ``f400c60` `_ +* Change debug log color ``c062359` `_ +* Put packet.json back in ``0321cb6` `_ +* update requirements ``8f588e6` `_ +* Fix for sample-config warning ``428edac` `_ +* Fixed pep8 errors and missing files ``a270c75` `_ +* Got unit tests working again ``f92b2ee` `_ +* Fixed access to log_monitor ``01cd0a0` `_ +* Fixed issues with watch list at startup ``e2e5853` `_ +* Allow stats collector to serialize upon creation ``71d72ad` `_ +* Lock around client reset ``50e491b` `_ +* Remove the logging of the conf password if not set ``a8d56a9` `_ +* Removed RPC Server and client. ``333feee` `_ +* Admin UI working again ``0ca9072` `_ +* Delete more stats from webchat ``fcc02f2` `_ +* Remove rpyc as a requirement ``7114269` `_ +* Removed json-viewer ``bc3bdc4` `_ +* Updated prism to 1.29 ``db2fbce` `_ +* changed admin web_ip to StrOpt ``6845d26` `_ +* LOG failed requests post to admin ui ``da882b4` `_ +* Ensure latest pip is in docker image ``a839dbd` `_ +* Ensure StatsStore has empty data ``80705cb` `_ +* Admin interface catch empty stats ``2c5bc6c` `_ +* Fix some issues with listen command ``8728926` `_ +* Fixed scrolling problem with new webchat sent msg ``2e9cf3c` `_ +* Added human_info property to MessagePackets ``8f6f800` `_ +* Get rid of some useless warning logs ``b388989` `_ +* Update webchat, include GATE route along with WIDE, ARISS, etc ``aa6e732` `_ +* add GATE route to webchat along with WIDE1, etc ``886ad9b` `_ +* Fix time plugin ``94f36e0` `_ +* Fix issue not tracking RX Ack packets for stats ``3bef131` `_ +* Another fix for ACK packets ``f34120c` `_ +* Fixed a problem with the webchat tab notification ``5fa4eaf` `_ +* Fixed PacketList maxlen ``5ff62c9` `_ +* Lock on stats for PacketList ``f59b65d` `_ +* syncronize the add for StatsStore ``026dc6e` `_ +* Limit packets to 50 in PacketList ``f682890` `_ +* Remove packet from tracker after max attempts ``4c2a40b` `_ +* Added new default_ack_send_count config option ``40c028c` `_ +* Fixed issue with APRSDThreadList stats() ``66e4850` `_ +* Added threads table in the admin web ui ``c6079f8` `_ +* ensure thread count is updated ``91ba6d1` `_ +* set packetlist max back to 100 ``3bd7add` `_ +* Added threads chart to admin ui graphs ``f2d39e5` `_ +* Update requirements ``1a7694e` `_ +* Added new config optons for PacketList ``8392d6b` `_ +* ismall update ``5b2a59f` `_ +* force uwsgi to 2.0.24 ``c2f8af0` `_ +* added packet_count in packet_list stats ``7c93534` `_ +* Fix access to PacketList._maxlen ``1c9f25a` `_ +* removed Packet.last_send_attempt and just use send_count ``758ea43` `_ +* another fix for tx send ``3e87163` `_ +* Added PacketList.set_maxlen() ``4542c0a` `_ +* Changed Stats Collector registration ``dc4879a` `_ +* Added support for RX replyacks ``8d86764` `_ +* Fixed Keepalive access to email stats ``cb0cfee` `_ +* Added new PacketCollector ``a656d93` `_ +* Fixed issue with PacketList being empty ``7541f13` `_ +* Remove error logs from watch list ``27359d6` `_ +* Added try except blocks in collectors ``88d2624` `_ +* Webchat Send Beacon uses Path selected in UI ``4c7e27c` `_ +* Added PacketTrack to packet collector ``717db60` `_ +* Call packet collecter after prepare during tx. ``bef3205` `_ +* Added default_packet_send_count config ``813bc7e` `_ +* Fix APRSDStats start_time ``29d97d9` `_ +* Added config for enable_seen_list ``c43652d` `_ +* Added fox for entry_points with old python ``09b9708` `_ +* Update Dockerfiles ``f02db20` `_ +* Removed the requirement on click-completion ``992485e` `_ +* Fixed PacketTrack with UnknownPacket ``2b2bf6c` `_ +* Make all the Objectstore children use the same lock ``c206f52` `_ +* Added config enable_packet_logging ``63f3de4` `_ +* Fixed unit tests failing with WatchList ``c4b17ee` `_ +* Fixed docker setup.sh comparison ``a5680a7` `_ +* Change setup.h ``fc9ab4a` `_ +* Updated Changelog for 3.4.0 ``cb2a344` `_ + +#### `v3.3.4 `_ + +.. + + 21 April 2024 + +* Fix for entry_points where python < 3.10 ``fa9ff7d` `_ +* Fixed entry_points ``e9febbb` `_ + +#### `v3.3.3 `_ + +.. + + 27 March 2024 + +* Fix for sample-config warning ``8e0de9c` `_ + +#### `v3.3.2 `_ + +.. + + 13 March 2024 + +* Removed print in utils ``f810c02` `_ +* Remove warning during sample-config ``d485f48` `_ +* Changelog for 3.3.2 ``71cd7e0` `_ + +#### `v3.3.1 `_ + +.. + + 12 March 2024 + +* Fixed problem with list-plugins ``cb9456b` `_ +* Fixed failure with fetch-stats ``10d023d` `_ +* Updates for 3.3.1 ``50e24ab` `_ + +#### `v3.3.0 `_ + +.. + + 12 March 2024 + +* Replace slow rich logging with loguru ``#147` `_ +* Added location for callsign tabs in webchat ``#146` `_ +* Update for v3.2.3 ``8bceb82` `_ +* Update requirements.txt ``a4230d3` `_ +* Updated dev test-plugin command ``03c58f8` `_ +* Added Location info on webchat interface ``d6f0f05` `_ +* update github action branchs to v8 ``a88de2f` `_ +* Create codeql.yml ``a00c4ea` `_ +* updated gitignore ``1a5c5f0` `_ +* Added support for loading extensions ``b143072` `_ +* Added some missing classes to threads ``e89f8a8` `_ +* Added iterator to objectstore ``df2798e` `_ +* removed some unneeded code ``9683459` `_ +* updated requirements files ``275bf67` `_ +* Added BeaconPacket ``11f1e95` `_ +* Cleanup some logs ``68f23d8` `_ +* Added installing extensions to Docker run ``4118541` `_ +* Added the new APRS Registry thread ``1e4f0ca` `_ +* add py310 gh actions ``1ad2e13` `_ +* Added sending software string to registry ``8264c94` `_ +* Don't send uptime to registry ``38fe408` `_ +* py311 fails in github ``f0ad6d7` `_ +* fix pep8 failures ``e9c48c1` `_ +* Fixed default service registry url ``cb291de` `_ +* changed the default packet timeout to 5 minutes ``a1e21e7` `_ +* fixed references to conf ``7a5b55f` `_ +* fixed frequency_seconds to IntOpt ``6a7d7ad` `_ +* Add log info for Beacon and Registry threads ``a4630c1` `_ +* Change defaults for beacon and registry ``5fd91a2` `_ +* Added list-extensions and updated README.rst ``ff051bc` `_ +* Fixed pep8 ``d1a09fc` `_ +* Updated requirements ``d092a43` `_ +* Put threads first after date/time ``2cb9c2a` `_ +* Make registry thread sleep ``5d3f42f` `_ +* Disable debug logs for aprslib ``24bbea1` `_ +* use log.setup_logging ``aec88d4` `_ +* Fixed RegistryThread not sending requests ``0b0afd3` `_ +* Changed processpkt message ``66004f6` `_ +* Fixed registry url post ``2e9c9d4` `_ +* sample-config fix ``0ca5cee` `_ +* Changelog for 3.3.0 ``c37e1d5` `_ + +#### `v3.2.3 `_ + +.. + + 9 January 2024 + +* aprsd: main.py: Fix premature return in sample_config ``#144` `_ +* Rework Location Plugin ``#140` `_ +* Fixed a bug with OWMWeatherPlugin ``0433768` `_ +* Update weather.py ``b6df9de` `_ +* Update weather.py both weather plugins have new Ww regex ``651cf01` `_ +* Update weather.py because you can't sort icons by penis ``9350cf6` `_ +* Added missing fortune app ``f02824b` `_ +* Added fortune to Dockerfile-dev ``682e138` `_ +* added /usr/games to path ``026a64c` `_ +* Force fortune path during setup test ``12a3113` `_ + +#### `v3.2.2 `_ + +.. + + 22 November 2023 + +* Walt test ``#139` `_ +* Try to localize js libs and css for no internet ``#138` `_ +* Normalize listen --aprs-login ``#137` `_ +* Bump werkzeug from 2.3.7 to 3.0.1 ``#136` `_ +* Update INSTALL with new conf files ``#135` `_ +* Bump urllib3 from 2.0.6 to 2.0.7 ``#134` `_ +* Test new packet serialization ``fe1ebf2` `_ +* Reworked the admin graphs ``763c9ab` `_ +* Updated requirements ``4b1214d` `_ +* removed invalid reference to config.py ``fae7032` `_ +* Fixed datetime access in core.py ``b9dd21b` `_ +* remove python 3.12 from github builds ``638128a` `_ +* pep8 fixes ``6b397cb` `_ +* Fix wsgi for prod ``b0bfdaa` `_ +* Fix for types ``809a41f` `_ +* Update for v3.2.2 release ``c0e2ef1` `_ + +#### `v3.2.1 `_ + +.. + + 9 October 2023 + +* Bump urllib3 from 2.0.4 to 2.0.6 ``#133` `_ +* Fix for dupe packets. ``#132` `_ +* Log a warning on dupe ``0d7e50d` `_ +* rewrote packet_list and drop dupe packets ``4f87d5d` `_ +* pep8 fixes ``99a0f87` `_ +* Fixed import of Mutablemapping ``f79b88e` `_ +* Fixed issue with packet tracker and msgNO Counter ``9bdfd16` `_ +* Fixed another msgNo int issue ``751bbc2` `_ +* Don't process AckPackets as dupes ``59cec13` `_ +* Make Packet objects hashable ``544600a` `_ +* Add ability to change path on every TX packet ``ddd4d25` `_ +* Added packet_dupe_timeout conf ``f41488b` `_ +* Fix path for KISS clients ``746eeb8` `_ +* Set a default password for admin ``8116960` `_ +* Fixed default path for tcp_kiss client. ``156d9d9` `_ +* Changed the path option to a ListOpt ``0155923` `_ +* Update the webchat paths ``5ae45ce` `_ +* Update the packet_dupe_timeout warning ``bf905a0` `_ +* Update index.html disable form autocomplete ``8e9a021` `_ +* Changelog for 3.2.1 ``acf2b62` `_ + +#### `v3.2.0 `_ + +.. + + 26 September 2023 + +* Bump gevent from 23.9.0.post1 to 23.9.1 ``#131` `_ +* Webchat saved bootstrapjs ``#130` `_ +* fixed webchat logging.logformat typeoh ``8dd3b05` `_ +* Added new webchat config section ``f922b3f` `_ +* Make use of webchat gps config options ``2e9a204` `_ +* Convert webchat internet urls to local static urls ``1d6a667` `_ +* Webchat suppress to display of dupe messages ``a8dd9ce` `_ +* click on the div after added. ``377842c` `_ +* Added dupe checkig code to webchat mobile ``2416f0e` `_ +* fixed an issue in the mobile webchat ``34311f0` `_ +* Start keepalive thread first ``859f904` `_ +* RPC Server logs the client IP on failed auth ``9582812` `_ +* Fixed admin page packet date ``570fdb9` `_ +* Removed some RPC server log noise ``82f77b7` `_ +* Removed admin_web.py ``a9e8050` `_ +* Updated documentation build ``10bf049` `_ +* updated github workflows ``4b56e99` `_ +* recreate client during reset() ``008b2ab` `_ +* Remove VIM from Dockerfile ``619b1b7` `_ +* Restore previous conversations in webchat ``7292744` `_ +* Updated the webchat UI to look like iMessage ``29f21a9` `_ +* Reworked webchat with new UI ``14e984c` `_ +* Added close X on webchat tabs ``8527602` `_ +* Deleted webchat mobile pages ``70ddc44` `_ +* Update index.html to use chat.css ``ba6b410` `_ +* Center the webchat input form ``b4e02c7` `_ +* webchat: set to_call to value of tab when selected ``8a90d54` `_ +* webchat: got active tab onclick working ``1400e3e` `_ +* WebChat: Send GPS Beacon working ``81a19dd` `_ +* Ensure parse_delta_str doesn't puke ``140fa4a` `_ +* Ensure Keepalive doesn't reset client at startup ``ef206b1` `_ +* Webchat: Fixed bug deleteing first tab ``f770c5f` `_ +* Webchat: tweaks to UI for expanding chat ``b393060` `_ +* WebChat: fixed content area scrolling ``7130ca2` `_ +* WebChat: Prevent sending message without callsign ``f151ae4` `_ +* Webchat: Added tab notifications and raw packet ``9635893` `_ +* Webchat: Fix pep8 errors ``3f5dbe0` `_ +* WebChat: new tab should get focus ``ff35898` `_ +* Webchat: Fix chat css on older browsers ``6b083d4` `_ +* Webchat: Fix issue accessing msg.id ``d63c685` `_ +* WebChat: flash a dupe message ``12dfdef` `_ +* WebChat: cleanup some console.logs ``82d2591` `_ +* Webchat: fix input maxlength ``788a72c` `_ +* minor cleanup prior to release ``c9dc4f6` `_ +* Update Changelog for 3.2.0 ``7408894` `_ + +#### `v3.1.3 `_ + +.. + + 15 August 2023 + +* Forcefully allow development webchat flask ``33c7871` `_ +* prep for 3.1.3 ``e06305f` `_ + +#### `v3.1.2 `_ + +.. + + 15 August 2023 + +* Removed adhoc ssl support in webchat ``182887c` `_ +* Disable the Send GPS Beacon button ``65a5a90` `_ +* Added support for ThirdParty packet types ``ae9e4d3` `_ +* Updated Changelog for 3.1.2 ``b2f95b0` `_ + +#### `v3.1.1 `_ + +.. + + 7 August 2023 + +* Fix sending packets over KISS interface ``#128` `_ +* Update the Dockerfile ``#125` `_ +* Max out the client reconnect backoff to 5 ``26f354b` `_ +* remove loop log ``e0c3c5c` `_ +* Use config web_ip for running admin ui from module ``011cfc5` `_ +* re-enable USWeatherPlugin to use mapClick ``986df39` `_ +* Fixed pep8 failures ``db9e1d2` `_ +* Updated Changelog for v3.1.1 ``f228144` `_ + +#### `v3.1.0 `_ + +.. + + 24 July 2023 + +* replacement of flask-socketio with python-socketio ``#124` `_ +* Remove flask pinning ``#123` `_ +* Update requirements for upgraded cryptography ``#122` `_ +* Fixed rain numbers from aprslib ``#119` `_ +* Example plugin wrong function ``#116` `_ +* Update Dockerfile to help build cryptography ``00f1c3a` `_ +* Ensure conf is imported for threads/tx ``4e99e30` `_ +* Add .readthedocs.yaml ``43d6b62` `_ +* Fixed .readthedocs.yaml format ``cad22e1` `_ +* Update location plugin and reworked requirements ``26c1e7a` `_ +* Added rpc server for listen ``8b73372` `_ +* Fixed pep8 violation ``5bc589f` `_ +* Update github workflows ``15bf371` `_ +* force tox to 4.3.5 ``da20ff0` `_ +* Updated requirements ``319969c` `_ +* USe new tox and update githubworkflows ``9931c8a` `_ +* Fixed unit tests for Location plugin ``80b85e6` `_ +* Add github manual trigger for master build ``09a0c4c` `_ +* Update master-build.yml ``f4d6035` `_ +* Added manual master build ``311ceba` `_ +* add arm64 for manual github build ``b172c69` `_ +* Added some utilities to Dockerfile-dev ``9b94414` `_ +* Replace ratelimiter with rush ``fe0d71d` `_ +* Added the fetch-stats command ``b2e621d` `_ +* added counts to the fetch-stats table ``0a14b07` `_ +* Populate stats object with threads info ``191e1ff` `_ +* Fixed pep8 errors ``005675c` `_ +* Try and fix Dockerfile-dev ``bba7b68` `_ +* Fix in for aprslib issue #80 ``63bf82a` `_ +* Fixed rpc client initialization ``7f2aba7` `_ +* Limit the float values to 3 decimal places ``0bd11d0` `_ +* Changed weather plugin regex pattern ``565ffe3` `_ +* Moved logging to log for wsgi.py ``35d4158` `_ +* Replace Dockerfile-dev with python3 slim ``ccd564a` `_ +* Added more libs for Dockerfile-dev ``ad00463` `_ +* update manual build github ``fa6e738` `_ +* Update Dockerfile-dev to fix plugin permissions ``d8318f2` `_ +* Update master build to include linux/arm/v8 ``dee73c1` `_ +* Removed flask-classful from webchat ``6a6e854` `_ +* Update docker bin/admin.sh ``fa452cc` `_ +* removed linux/arm/v8 ``5723e3a` `_ +* Added timing after each thread loop ``d3a93b7` `_ +* updated wsgi config default /config/aprsd.conf ``588e140` `_ +* Add info logging for rpc server calls ``6ae55fc` `_ +* Ensure fetch-stats ip is a string ``cbef93b` `_ +* Change how fetch-stats gets it's defaults ``5383b69` `_ +* change port to 8000 ``e51a501` `_ +* Fixed pep8 ``4664ead` `_ +* Update Dockerfile-dev to include uwsgi ``1ab9c3f` `_ +* Fixed sio namespace registration ``099b87e` `_ +* Use CONF.admin.web_port for single launch web admin ``c7d629f` `_ +* Changelog updates for v3.1.0 ``dfd3688` `_ + +#### `v3.0.3 `_ + +.. + + 25 April 2023 + +* Add ratelimiting for acks and other packets ``#111` `_ +* Update Dockerfile ``8a456ca` `_ +* Update Listen command ``483afce` `_ +* Added listen.sh for docker ``c353877` `_ +* Change listen command plugins ``0ec41f7` `_ +* Added listen args. ``66ebb28` `_ +* Don't load help plugin for listen command ``17d9c06` `_ +* Fixed loading of plugins for server ``e21e2a7` `_ +* cleanup some debug messages ``5694cab` `_ +* Update Changelog to 3.0.3 ``0527ddf` `_ + +#### `v3.0.2 `_ + +.. + + 16 January 2023 + +* Import RejectPacket ``4aa4a4b` `_ +* Update Changelog for 3.0.2 ``357a193` `_ + +#### `v3.0.1 `_ + +.. + + 14 January 2023 + +* Add support for Reject messages. ``#109` `_ +* Update Docker builds for 3.0.0 ``3872590` `_ +* Add support to Reject messages. ``c68b270` `_ + +### `v3.0.0 `_ + +.. + + 9 January 2023 + +* Convert config to oslo_config ``#107` `_ +* Dataclasses ``#106` `_ +* Started using dataclasses to describe packets ``082db73` `_ +* Updated plugins and plugin interfaces for Packet ``67a441d` `_ +* Reworked all packet processing ``94fb481` `_ +* cleanup webchat ``1b49f12` `_ +* Added contructing a GPSPacket for sending ``59e5af8` `_ +* Cleaned out all references to messaging ``bfc0a5a` `_ +* More messaging -> packets cleanup ``6030cb3` `_ +* Fix packets timestamp to int ``f1de7bc` `_ +* Cleaned up packet transmit class attributes ``c201c93` `_ +* Make tracking objectstores work w/o initializing ``1187f1e` `_ +* Change RX packet processing to enqueu ``123b3ff` `_ +* Removed unused threading code ``9fc5356` `_ +* reworked collecting and reporting stats ``e37f99a` `_ +* Updated webchat and listen for queue based RX ``ad0d89d` `_ +* Added WeatherPacket encoding ``899a6e5` `_ +* Add packet filtering for aprsd listen ``d01392f` `_ +* Fix pep8 violation ``a1188d2` `_ +* Fix some WeatherPacket formatting ``f19043e` `_ +* Update routing for weatherpacket ``088cbb8` `_ +* Cleaned up PluginManager ``7dfa4e6` `_ +* Cleaned up PluginManager ``220fb58` `_ +* Fix PluginManager.get_plugins ``2ca3636` `_ +* Removed watchlist plugins ``f464ff0` `_ +* Removed Packet.send() ``4a65f52` `_ +* Fix Rain reporting in WeatherPacket send. ``bbcd7c8` `_ +* Added rain formatting unit tests to WeatherPacket ``ce3b29f` `_ +* Removed references to old custom config ``7ccfc25` `_ +* Added missing conf ``f4a6dfc` `_ +* Fix some unit tests and loading of CONF w/o file ``e9a954a` `_ +* Dockerfile now produces aprsd.conf ``02e4f78` `_ +* Decouple admin web interface from server command ``ff39239` `_ +* Update documentation and README ``c929689` `_ +* Change ordering of starting up of server command ``83d2e70` `_ +* Update regex processing and regex for plugins ``3d0bb8a` `_ +* Added ObjectPacket ``ed284a4` `_ +* Updated docker/bin/run.sh to use new conf ``79e7ed1` `_ +* Updated Healthcheck to use rpc to call aprsd ``c5acdba` `_ +* Removed url option from healthcheck in dev ``fe2f7b5` `_ +* Added new docs files for 3.0.0 ``29b8764` `_ +* reworked usage of importlib.metadata ``a5520b2` `_ +* Cleaned up KISS interfaces use of old config ``0758a58` `_ +* Fixed pep8 failure ``6391c7e` `_ +* Fixed save directory default ``233d49b` `_ +* Ensure server command main thread doesn't exit ``c5aba17` `_ +* Update Changelog for 3.0.0 ``4a10511` `_ + +#### `v2.6.1 `_ + +.. + + 16 December 2022 + +* Collections fix ``#105` `_ +* Update workflow ``40f23dc` `_ +* Fix for Collections change in 3.10 ``9d19502` `_ +* remove armv7 build RUST sucks ``321c5a2` `_ +* Add unit tests for webchat ``19e5cfa` `_ +* Try and fix broken 32bit qemu builds on 64bit system ``87cbcaa` `_ +* Fixed position report for webchat beacon ``9571b0b` `_ + +#### `v2.6.0 `_ + +.. + + 12 December 2022 + +* change from device-detector to user-agents ``#103` `_ +* Remove twine from dev-requirements ``#102` `_ +* Add support for mobile browsers for webchat ``#101` `_ +* Send GPS Beacon from webchat interface ``#100` `_ +* Remove email validation ``#99` `_ +* Small refactor ``#91` `_ +* Update docs on using Docker ``#98` `_ +* Bump dependencies to fix python 3.10 ``#89` `_ +* Fix #92 (PyPI scraping) ``#96` `_ +* README formatting fixes ``#93` `_ +* Fix typo on exception ``#94` `_ +* Fix plugins not installing via docker-compose ``#97` `_ +* Merge pull request #96 from ranguli/fix-pypi-scraping ``#92` `_ +* for 2.5.9 ``03a20eb` `_ +* Fix logging issue with log messages ``e739441` `_ +* Fixed up config option checking for KISS ``1c052a6` `_ +* Refactor utils to directory ``bed060f` `_ +* Refactored threads.py ``347a6d6` `_ +* Fixed pep8 errors ``29b84b4` `_ +* Moved trace.py to utils ``a628439` `_ +* Moved log.py to logging ``1ccb2f7` `_ +* Added webchat command ``585d55f` `_ +* Fixed access to threads refactor ``5f28788` `_ +* Use new aprsd.callsign as the main callsign ``ad79ed1` `_ +* Try sending raw APRSFrames to aioax25 ``2ce50d8` `_ +* Allow web interface when running in Docker ``b1db08a` `_ +* Merge pull request #95 from ranguli/patch-1 ``74e4e2c` `_ +* Fix PyPI scraping ``9ffd320` `_ +* Fix typo in docker-compose.yml ``389304c` `_ +* Update dev-requirements pip-tools ``7db2242` `_ +* Added container build action ``b50f343` `_ +* create master-build.yml ``1383352` `_ +* Remove docker build from test ``f9d3bc4` `_ +* Only tag master build as master ``9671dac` `_ +* remove linux/arm/v6 from docker platform build ``358aa59` `_ +* Added rustc and cargo to Dockerfile ``3580425` `_ +* remove arm build for now ``ab65836` `_ +* Add remving existing requirements ``e5f60b5` `_ +* Update packets to use wrapt ``967959e` `_ +* Update aprsd thread base class to use queue ``9b0c626` `_ +* Added click auto_envvar_prefix ``d717a22` `_ +* Got webchat working with KISS tcp ``7d970cb` `_ +* Updated requirements ``075078b` `_ +* Dump config with aprsd dev test-plugin ``fc1ca52` `_ +* Removed TimeOpenCageDataPlugin ``528bdb9` `_ +* change github workflow ``17e7846` `_ +* Fixed failing unit tests ``5acddbd` `_ +* Remove python 3.7 from docker build github ``b41e4a9` `_ +* Add support for building linux/arm/v7 ``117f81f` `_ +* Build on the source not released aprsd ``d9b3973` `_ +* Fixed build.sh ``d1a0a98` `_ +* specify Dockerfile-dev ``4111d16` `_ +* Allow passing in version to the Dockerfile ``d5e56b5` `_ +* added workflow for building specific version ``d40927d` `_ +* remove linux/arm/v7 for official builds for now ``5add0f9` `_ +* Ignore callsign case while processing packets ``44696fb` `_ +* Allow werkzeug for admin interface. ``5067f74` `_ +* Allow werkzeug for admin interface. ``98fe9da` `_ +* Add GPS beacon to mobile page ``ee96108` `_ +* remove dev setting for template ``726c8f4` `_ +* Mark packets as acked in MsgTracker ``480094b` `_ +* Refactored threads a bit ``51b80cd` `_ +* Update to latest Makefile.venv ``e4f93a2` `_ +* Added pyopenssl for https for webchat ``6d34d9c` `_ +* Update Makefile for dev vs. run environments ``576301c` `_ +* Removed Makefile comment. ``935f820` `_ +* Update requirements ``68472b0` `_ +* Prep for 2.6.0 release ``5891c71` `_ +* Update Dockerfile and build.sh ``c1db238` `_ +* Update Dockerfile to 22.04 ``4fe99c3` `_ +* Update workflow again ``a6015ad` `_ + +#### `v2.5.9 `_ + +.. + + 26 January 2022 + +* update build for 2.5.8 ``79270f9` `_ +* Updated build and run for rich lib ``b00c8db` `_ +* FIX: logging exceptions ``6257c9e` `_ + +#### `v2.5.8 `_ + +.. + + 7 January 2022 + +* Send Message command defaults to config ``a7bbde4` `_ +* Added unit tests for dev test-plugin ``2f6e7e1` `_ +* Renamed virtualenv dir to .aprsd-venv ``610e40a` `_ +* Updated list-plugins ``764730c` `_ +* Removed debug code ``e8100d8` `_ +* For 2.5.8 ``29a60b7` `_ + +#### `v2.5.7 `_ + +.. + + 11 December 2021 + +* Fixed an KISS config disabled issue ``#79` `_ +* Unify the logging to file and stdout ``#77` `_ +* Added new feature to list-plugins command ``#76` `_ +* Updated README examples ``7c653cc` `_ +* more README.rst cleanup ``28b54c3` `_ +* Fixed a bug with multiple notify plugins enabled ``e57a2e2` `_ +* Updated Changelog ``7530bcf` `_ + +#### `v2.5.6 `_ + +.. + + 7 December 2021 + +* Unittests ``#75` `_ +* Rich logging ``#74` `_ +* Added LOG_LEVEL env variable for the docker ``#73` `_ +* Added python rich library based logging. ``1d5f76d` `_ +* Add tracing for dev command ``1233137` `_ +* Fixed some pep8 errors ``b5b286e` `_ +* Fixed the NotifyPlugin ``055835c` `_ +* Reduced the APRSIS connection reset to 2 minutes ``d3dd087` `_ +* Small cleanup on packet logging ``96cc07d` `_ +* Added NotifyPlugin unit tests and more ``0ad791b` `_ +* Added py39 to tox for tests ``a5184fb` `_ +* Updated pytest output ``e0e7514` `_ +* Added test_location to test LocationPlugin ``5d6ac5c` `_ +* Added unit tests for USWeatherPlugin, USMetarPlugin ``8ea00e9` `_ +* Tightened up the packet logging ``440c8d5` `_ +* Changelog ``b7791eb` `_ + +#### `v2.5.5 `_ + +.. + + 28 November 2021 + +* updated docker build ``deec249` `_ +* fixed the failure during loading for objectstore ``5e50792` `_ +* Update requirements to use aprslib 0.7.0 ``e27887d` `_ + +#### `v2.5.4 `_ + +.. + + 13 November 2021 + +* Fixed dev command missing initialization ``6fb6105` `_ +* Updated Changelog ``ade3c49` `_ + +#### `v2.5.3 `_ + +.. + + 12 November 2021 + +* Fix admin logging tab ``bda2ef0` `_ + +#### `v2.5.2 `_ + +.. + + 12 November 2021 + +* Updated Changelog ``10e34d8` `_ +* Removed requirement for aprs.fi key ``7787dc1` `_ +* Fix test failures ``152132b` `_ +* Healthcheck command doesn't need the aprsd.yml config ``8842fb1` `_ +* Don't require check-version command to have a config ``a8a6b1a` `_ +* Added new list-plugins command ``446484e` `_ + +#### `v2.5.1 `_ + +.. + + 9 November 2021 + +* Removed the stock plugin ``#72` `_ +* Removed stock plugin. ``9469410` `_ + +#### `v2.5.0 `_ + +.. + + 9 November 2021 + +* Refactor cli ``#71` `_ +* Fixed a problem with send-message command ``49f3ea8` `_ +* Updated Changelog for 4.2.3 ``30df452` `_ +* Refactor the cli ``7d0006b` `_ +* Pep8 failures ``2ead6a9` `_ +* Removed the need for FROMCALL in dev test-plugin ``3463c6e` `_ +* Added healthcheck to the cmds ``82def59` `_ +* pep8 ``8287c09` `_ +* Ensure common params are honored ``9187b97` `_ +* Fixed test-plugin ``617973f` `_ +* Reworked all the common arguments ``89727e2` `_ +* Cleaned up some verbose output & colorized output ``cdcb98e` `_ +* Updated Dockerfile's and build script for docker ``059cc86` `_ +* Updated for v2.5.0 ``5d17809` `_ + +#### `v2.4.2 `_ + +.. + + 2 November 2021 + +* Updated Changelog ``d2e8fe6` `_ +* Be more careful picking data to/from disk ``cefb581` `_ +* Updated Changelog ``0d5b716` `_ + +#### `v2.4.1 `_ + +.. + + 25 October 2021 + +* Fixed email connecting to smtp server ``c8c23e6` `_ +* Ensure plugins are last to be loaded. ``95fecd2` `_ + +#### `v2.4.0 `_ + +.. + + 22 October 2021 + +* Refactoring/Cleanup ``#70` `_ +* 2.3.1 Changelog ``65ea332` `_ +* Refactor utils usage ``23e3876` `_ +* Refactored client classes ``270be94` `_ +* Fixed email plugin's use of globals ``a6ed7b8` `_ +* Added new Config object. ``491644e` `_ +* Fixed notify plugins ``e3c5c7b` `_ +* Updated dev to use plugin manager ``c097c31` `_ +* Increase email delay to +10 ``fdc8c0c` `_ +* Added some server startup info logs ``30671cb` `_ +* Fixed issue with flask config ``f8d87d0` `_ +* Fixed send-message after config/client rework ``725bb2f` `_ +* removed usage of config.check_config_option ``5b17228` `_ +* Updated build.sh ``db9cbf5` `_ +* Updated aprsd-dev to use config for logfile format ``2bf85db` `_ +* Added new HelpPlugin ``3b7924b` `_ +* Added plugin version to stats reporting ``004795d` `_ +* Added new SeenList ``278bb6e` `_ +* Only call stop_threads if it exists ``9150f3b` `_ +* Added -num option to aprsd-dev test-plugin ``9b22122` `_ +* Added objectstore Mixin ``4233827` `_ +* PEP8 cleanup ``135e21c` `_ +* Enable configuring where to save the objectstore data ``0d51634` `_ +* Added SIGTERM to signal_handler ``8ee8b14` `_ +* Ensure PacketList is initialized ``66c5d85` `_ +* Make sure SeenList update has a from in packet ``89701c8` `_ +* Fixed unit tests ``b0d25a7` `_ +* Converted MsgTrack to ObjectStoreMixin ``e009791` `_ +* Updated Changelog for 2.4.0 release ``a3a3a5a` `_ + +#### `v2.3.1 `_ + +.. + + 13 September 2021 + +* Fixed packet processing issue with aprsd send-message ``69b215d` `_ +* Fixed issue of aprs-is missing keepalive ``560e152` `_ + +#### `v2.3.0 `_ + +.. + + 8 September 2021 + +* Send Message via admin Web interface ``#59` `_ +* Added the ability to use direwolf KISS socket ``#50` `_ +* Update Dockerfile to use 2.2.1 ``a7d79a6` `_ +* New Admin ui send message page working. ``23cbf32` `_ +* Upgraded the send-message POC to use websockets ``c941379` `_ +* Cleaned up some pep8 failures ``84ce60b` `_ +* Rebased from master ``54c9a6b` `_ +* Got TX/RX working with aioax25+direwolf over TCP ``f4dee4b` `_ +* Updated Admin UI to show KISS connections ``ca438c9` `_ +* Updated requirements ``c537b54` `_ +* Added send-message to the main admin UI ``c58031d` `_ +* Removed values from forms ``1635feb` `_ +* Fixed email validation ``0f6df5f` `_ +* Fixed issue at startup with notify plugin ``1ea6c05` `_ +* Remove some noisy trace in email plugin ``558710d` `_ +* Fixed a problem with the AVWX plugin not working ``8ada789` `_ +* Allow passing in aprsis_client ``62ce84b` `_ +* Update dev.py ``dfaf3aa` `_ +* Added self creating Makefile help target ``d643ca3` `_ +* Updated Makefile clean target ``4f088e0` `_ +* Added Logfile tab in Admin ui ``d6b3df9` `_ +* Removed fixed size on logging queue ``9eff99d` `_ +* Updated Dockerfile to use v2.3.0 ``605911c` `_ +* Ensure plugin threads are valid ``7e6dffb` `_ +* Added enabled flag for every plugin object ``3faf41b` `_ +* Enable plugins to return message object ``1b9a993` `_ +* Prep 2.3.0 ``4164e89` `_ + +#### `v2.2.1 `_ + +.. + + 25 August 2021 + +* Silence some log noise ``ec92b07` `_ +* Update Changelog for 2.2.1 ``44c4dd6` `_ + +#### `v2.2.0 `_ + +.. + + 25 August 2021 + +* Refactor Message processing and MORE ``#69` `_ +* Fixed aprsd-dev ``d71b0df` `_ +* Cleanup of the README.rst ``e8ffaa9` `_ +* Updated slack channel link ``2b69446` `_ +* Fixed LOG.debug issue in weather plugin ``f1f8aed` `_ +* Updated tox.ini ``d6643a8` `_ +* Added threads functions to APRSDPluginBase ``86777d8` `_ +* Added tracking plugin processing ``8e627c9` `_ +* Use Gray instead of Black for code formatting. ``e175f77` `_ +* Rebase from master and run gray ``8b5f21e` `_ +* Updated select timeouts ``0f384b0` `_ +* Added days to uptime string formatting ``2e9b42d` `_ +* Removed TXThread ``61967b5` `_ +* Removed Black code style reference ``daf1e21` `_ +* Updated overview image ``d5d0064` `_ +* Updated Changelog for v2.2.0 ``8190353` `_ + +#### `v2.1.0 `_ + +.. + + 13 August 2021 + +* Enable multiple replies for plugins ``#68` `_ +* Added showing symbol images to watch list ``be81794` `_ +* Updated the charts Added the packets chart ``6740ff8` `_ +* Fixed time plugin ``ed4995b` `_ +* Put in a fix for aprslib parse exceptions ``840c8a9` `_ +* Prep for v2.1.0 ``691b18f` `_ + +### `v2.0.0 `_ + +.. + + 17 July 2021 + +* Reworked the notification threads and admin ui. ``#66` `_ +* Refactor the plugin interface and manager ``#65` `_ +* Add admin UI tabs for charts, messages, config ``#64` `_ +* Dump out the config during startup ``#63` `_ +* Bump urllib3 from 1.26.4 to 1.26.5 ``#61` `_ +* Added aprsd version checking ``#60` `_ +* Bump urllib3 from 1.26.3 to 1.26.4 ``#56` `_ +* Prep for v1.6.1 release ``55862a2` `_ +* Update README.rst ``2a5ef58` `_ +* Update README.rst ``970b32f` `_ +* Update my callsign ``b8dc6a3` `_ +* Updated INSTALL.txt ``9de0df3` `_ +* Added message counts for each plugin. ``3ae5717` `_ +* Removed a noisy debug log ``1c66555` `_ +* Added messages count to admin messages list. ``5afc7fb` `_ +* reworked the admin ui to use semenatic ui more ``3c45d8b` `_ +* Add new watchlist feature ``1a1fcba` `_ +* Fixed the Ack thread not resending acks ``562ae52` `_ +* Move version string output to top of log ``7dc4fb3` `_ +* Updated overview images ``90a44bb` `_ +* Fixed small bug with packets get_packet_type ``3d38402` `_ +* Updated docs for 2.0.0 ``b4713b2` `_ + +#### `v1.6.1 `_ + +.. + + 5 April 2021 + +* Added aprsd web index page ``#54` `_ +* Bump lxml from 4.6.2 to 4.6.3 ``#53` `_ +* Bump pygments from 2.7.3 to 2.7.4 ``#55` `_ +* Bump jinja2 from 2.11.2 to 2.11.3 ``#52` `_ +* Bump urllib3 from 1.26.2 to 1.26.3 ``#51` `_ +* Updated README docs ``b6ba90d` `_ +* Dockerfile: Make creation of /config quiet failure ``2d5bb85` `_ +* Updated Dockerfile for multiplatform builds ``c177748` `_ +* Updated Dockerfile for multiplatform builds ``f0034fc` `_ +* Updated Dockerfile and build.sh ``9f66774` `_ +* Added plugin live reload and StockPlugin ``e6cafeb` `_ +* Require python 3.7 and > ``933917b` `_ +* Added Dockerfile-dev and updated build.sh ``239e784` `_ +* Added log format and dateformat to config file ``0a038da` `_ +* Updated web stats index to show messages and ram usage ``c7d10f5` `_ +* Added acks with messages graphs ``f10372b` `_ +* Make the index page behind auth ``6297ebe` `_ +* Provide an initial datapoint on rendering index ``fb979ed` `_ +* Added showing APRS-IS server to stats ``d1a2a14` `_ +* Added log config for flask and lnav config file ``34d2c31` `_ +* Added callsign to the web index page ``123266c` `_ +* Reworked the stats dict output and healthcheck ``bf8d2c6` `_ +* Added email messages graphs ``d6806c4` `_ +* Force all the graphs to 0 minimum ``3ac42ed` `_ +* Update Dockerfile-dev to work with startup ``3f21934` `_ +* Updated stats output for KeepAlive thread ``7b019d2` `_ +* Fixed version unit tests ``23c219f` `_ +* Reworked Makefile to use Makefile.venv ``a4a06c9` `_ +* ignore Makefile.venv ``4aac17d` `_ +* Removed debug log for KeepAlive thread ``fc1ee19` `_ + +#### `v1.6.0 `_ + +.. + + 12 February 2021 + +* Bump cryptography from 3.3.1 to 3.3.2 ``#49` `_ +* Branch to stabilize for the 1.6.0 release. ``#47` `_ +* Bump bleach from 3.2.1 to 3.3.0 ``#48` `_ +* Added healthcheck app ``#46` `_ +* Flask ``#45` `_ +* Allow email to be disabled. ``#44` `_ +* Reworked the config file and options ``#43` `_ +* Added openweathermap weather plugin ``#41` `_ +* Added new time plugins ``#40` `_ +* Fixed TimePlugin timezone issue ``#38` `_ +* Added aprsd-dev plugin test cli and WxPlugin ``#35` `_ +* Updated readme to include readthedocs link ``b9f6fcf` `_ +* change query char from ? to ! ``7de2820` `_ +* fix git with install.txt ``5fb363c` `_ +* remove fortune white space ``ca05676` `_ +* First hack at flask ``9630279` `_ +* Fixed extracting lat/lon ``fefb626` `_ +* Updated documentation and config output ``a35cb04` `_ +* Added Flask web thread and stats collection ``5c94934` `_ +* Add flask and flask_classful reqs ``cae8746` `_ +* updated .gitignore ``8bfdefd` `_ +* Cleaned up the KeepAlive output ``51894bb` `_ +* Fixed an issue with LocationPlugin ``0d18e54` `_ +* Added flask messages web UI and basic auth ``aa29069` `_ +* Fixed resend email after config rework ``c1e6792` `_ +* debug around EmailThread hanging or vanishing ``3ca0eef` `_ +* more debug around email thread ``cfb1724` `_ +* Enable debug logging for smtp and imap ``030b025` `_ +* duplicate email messages from RF would generate usage response ``57d768e` `_ +* Fixed email login issue. ``94bad95` `_ +* Added tracing facility ``af48c43` `_ +* Fixed tox pep8 failure for trace ``0b44fc0` `_ +* Added memory tracing in keeplive ``db2b537` `_ +* EmailThread was exiting because of IMAP timeout, added exceptions for this ``47135c6` `_ +* Wrap all imap calls with try except blocks ``a5cc274` `_ +* Wrap another server call with try except ``131919b` `_ +* Removed some noisy debug log. ``9ba44a0` `_ +* Moved docker related stuffs to docker dir ``24edcad` `_ +* Updated path of run.sh for docker build ``7df6462` `_ +* 1.6.0 release prep ``a266c98` `_ + +#### `v1.5.1 `_ + +.. + + 15 January 2021 + +* Update INSTALL.txt ``47ccce5` `_ +* Updated README to fix pypi page ``98e3c24` `_ +* Updated Changelog for v1.5.1 ``658e6b6` `_ + +#### `v1.5.0 `_ + +.. + + 15 January 2021 + +* add null reply for send_email ``#33` `_ +* Updated README with more workflow details ``#31` `_ +* Added Makefile for easy dev setup ``#34` `_ +* backout my patch that broke tox, trying to push to craiger-test branch ``#32` `_ +* Threads ``#26` `_ +* Reworked messaging lib ``9768003` `_ +* reworked threading ``f65707c` `_ +* Added some plugin unit tests ``171703a` `_ +* Added FortunePlugin unit test ``9d3ede6` `_ +* Creation of MsgTrack object and other stuff ``2e90c0b` `_ +* Added support to save/load MsgTrack on exit/start ``2659a0b` `_ +* Added QueryPlugin ``28f3daf` `_ +* Added QueryPlugin resend all delayed msgs or Flush ``af0d449` `_ +* Update Changelog for v1.5.0 ``8bd8b95` `_ +* Added pre-commit hooks ``75f610d` `_ +* Updated README to include development env ``25d948b` `_ +* Added more pre-commit hook tests ``4c0150d` `_ +* don't tell radio emails were sent, ack is enuf ``99c5867` `_ +* Fixed failures caused by last commit ``e83ee31` `_ +* Cleaned out old ack_dict ``dbc891f` `_ +* Lots of fixes ``231c15b` `_ +* removed double-quote-string-fixer ``a7c2043` `_ +* Fixed email shortcut lookup ``9f4cc27` `_ +* Updated Makefile ``c51a945` `_ +* refactor Plugin objects to plugins directory ``a385d17` `_ +* refactor Plugin objects to plugins directory ``d5a34b4` `_ +* Added Sphinx based documentation ``ee2aeb5` `_ +* swap Query command characters a bit ``a334623` `_ +* undo git disaster ``45dd3f0` `_ +* Fix broken test ``1763e94` `_ +* switch command characters for query plugin ``e7f2ebf` `_ +* Updated build for docs tox -edocs ``bd35a61` `_ +* Added some more badges to readme files ``7423df6` `_ +* Disable MX record validation ``e6dee3a` `_ +* Added APRSD system diagram to docs ``cc0d0fd` `_ +* change query character syntax, don't reply that we're resending stuff ``0aa7fe7` `_ +* Updated MsgTrack restart_delayed ``1ce2a56` `_ +* Added unit test for QueryPlugin ``68e6f5b` `_ +* update query plugin to resend last N messages. syntax: ?rN ``d9141dc` `_ +* expect different reply from query plugin ``e1a292d` `_ +* Extend APRS.IS object to change login string ``ac4c3d6` `_ +* Extend APRS.IS object to change login string ``5de1b3e` `_ +* getting out of git hell with client.py problems ``76bbdfc` `_ +* Fixed fortune plugin failures ``7ab2613` `_ +* Fixed unit test for fortune plugin ``9470802` `_ +* Added a fix for failed logins to APRS-IS ``3dd23fa` `_ +* Added new config for aprs.fi API Key ``bdeaf63` `_ +* Added send-message login checking and --no-ack ``90c4c6c` `_ +* Fixed --quiet option ``f022a3e` `_ +* Added --raw format for sending messages ``54072a2` `_ +* Updated docker run.sh script ``264b753` `_ +* Added the ability to add comments to the config file ``cdde9c2` `_ +* Fixed comments ``42b2e22` `_ +* make sample config easier to interpret ``e11a84b` `_ +* fixed sample-config double print ``18acd64` `_ +* get rid of some debug noise from tracker and email delay ``7e3b95f` `_ +* Fixed latitude reporting in locationPlugin ``4ca5c29` `_ +* fix query command syntax ?, ?3, ?d(elete), ?a(ll) ``0b5c9da` `_ +* fix plugin tests to expect new strings ``e7dc537` `_ +* Changed default log level to INFO ``0aa905e` `_ +* Removed flask code ``72fa550` `_ +* Fixed the queryPlugin unit test ``74be4f8` `_ +* test plugin expect responses update to match query output ``3be373d` `_ +* Fixed main server client initialization ``7486770` `_ +* Enabled some emailthread messages and added timestamp ``d81bfd6` `_ +* fix usage statement ``f538fb2` `_ +* Fix tox tests. ``0e9cfdd` `_ +* Updated Changelog for v1.5.0 release ``33a0e6c` `_ + +#### `v1.1.0 `_ + +.. + + 21 December 2020 + +* Update .gitignore ``#25` `_ +* Major refactor ``#23` `_ +* Updated the Dockerfile to use alpine ``#24` `_ +* Big patch ``fa51f8f` `_ +* Fixed send-message with email command and others ``3261710` `_ +* Updated README.rst ``6a61765` `_ +* Updated the aprsd-slack-plugin required version ``0992ab8` `_ +* Fixed issue when RX ack ``d3ee1b7` `_ +* Added Changelog ``6d2160c` `_ +* Updated docker-compose ``c39fdde` `_ +* Ensure fortune is installed ``18b269a` `_ +* Added fix for an unknown packet type ``b260954` `_ +* Update README with version 1.1.0 related info ``8161719` `_ +* Refactored the main process_packet method ``1d898ea` `_ + +#### `v1.0.1 `_ + +.. + + 15 December 2020 + +* Fix unknown characterset emails ``#22` `_ +* Readme ``#21` `_ +* Updates for building containers ``#19` `_ +* Don't use the dirname for the plugin path search ``#18` `_ +* Reworked Plugin loading ``#17` `_ +* Fixed an issue with weather plugin ``eba093b` `_ +* Updated README with development information ``3ffa416` `_ +* Updated README with a TOC ``21253ff` `_ +* Updated loggin timestamp to include [] ``8a62738` `_ + +#### v1.0.0 + +.. + + 14 December 2020 + +* Fixed the usage string after plugins introduced ``#16` `_ +* Created plugin.py for Command Plugins ``#15` `_ +* Refactor networking and commands ``#14` `_ +* Update tox environment to fix formatting python errors ``#13` `_ +* Click ``#12` `_ +* Fixed all pep8 errors and some py3 errors ``#11` `_ +* Added tox support ``#10` `_ +* Fixed SMTP settings ``#9` `_ +* removed ASS ``#8` `_ +* Added port and fixed telnet user ``#7` `_ +* Require ~/.aprsd/config.yml ``#6` `_ +* Added reading of a config file ``#5` `_ +* First stab at migrating this to a pypi repo structure ``#4` `_ +* Added password, callsign and host ``#3` `_ +* Cleaned up trailing whitespace ``#2` `_ +* Added standard python main() ``#1` `_ +* Initial commit ``8cea620` `_ +* Add files via upload ``51579d7` `_ +* Update README.md ``38d2e51` `_ +* Update README.md ``6db4e6f` `_ +* Update README.md ``7947d54` `_ +* Update README.md ``66f8f82` `_ +* Update README.md ``538e2fe` `_ +* Update README.md ``e2d9478` `_ +* Update README.md ``a3f1d34` `_ +* Update README.md ``d31d3bd` `_ +* Update README.md ``7e409c7` `_ +* Update README.md ``ce66908` `_ +* Update README.md ``d9b9fd9` `_ +* Update README.md ``134a555` `_ +* Update aprsd.py ``2330523` `_ +* Update README.md ``821a34b` `_ +* Add files via upload ``471af76` `_ +* Update aprsd.py ``230cf45` `_ +* Update README.md ``04269b3` `_ +* Update README.md ``aa184a3` `_ +* de-localize ``fcef019` `_ +* Update README.md ``34d4da8` `_ +* Update README.md ``e3a1841` `_ +* Update README.md ``e74fd4f` `_ +* Update README.md ``7cfde54` `_ +* de-localize ``149580e` `_ +* mapme ``48036f9` `_ +* added weather and location ``7b74138` `_ +* added weather and location 2 ``2fbc0e3` `_ +* added weather and location 3 ``f1d25c0` `_ +* sanitize readme ``de6ca53` `_ +* sanitize readme a bit more ``b6356ce` `_ +* sanitize readme a bit more ``19e747d` `_ +* drop virtenv on first line ``f3e386c` `_ +* tweaks to readme ``8a1c5e0` `_ +* make tn a global ``d9caac6` `_ +* add tweaked fuzzyclock ``7dc1c5d` `_ +* comments ``174da13` `_ +* Added argparse for cli options ``8b61116` `_ +* First stab at migrating this to a pytpi repo ``ecd797d` `_ +* First stab at migrating this to a pytpi repo ``a2b5908` `_ +* readme update ``4a8181c` `_ +* readme ``d3e5d35` `_ +* readme again ``5ac718d` `_ +* readme again again ``20c43b4` `_ +* readme again again ``d98af66` `_ +* sanitize readme ``8390419` `_ +* update readme ``c36b14b` `_ +* update readme ``b3435c0` `_ +* added exit if missing config file ``e3964c5` `_ +* added test to ensure shortcuts in config.yml ``8d1d293` `_ +* updated README for install and usage instructions ``4eff52f` `_ +* Added a try block around imap login ``89d038e` `_ +* select inbox if gmail server ``7abc470` `_ +* Created fake_aprs.py ``bd47a2b` `_ +* Update README.md ``1f31ba0` `_ +* fix INBOX ``78add91` `_ +* fix bugs after beautification and yaml config additions. Convert to sockets. case insensitive commands ``abc6379` `_ +* INSTALL.txt for the average person ``f175f7e` `_ +* fix check_email_thread to do proper threading, take delay as arg ``b552f96` `_ +* fix check_email_thread to do proper threading, take delay as arg ``e171e16` `_ +* socket reconnect on timeout testing ``5e96706` `_ +* socket reconnect on timeout testing ``712d66c` `_ +* Reconnect on socket timeout ``b553987` `_ +* Reconnect on socket timeout ``ecd0e8f` `_ +* Reconnect on socket timeout ``766acbb` `_ +* socket timeout of 300 instead of 60 ``32e146d` `_ +* added decaying email check timer which resets with activity ``cf73add` `_ +* George Carlin profanity filter ``3ae7a05` `_ +* Update INSTALL.txt ``89069af` `_ +* Update INSTALL.txt ``ef132d8` `_ +* Update INSTALL.txt ``d1ab8bc` `_ +* main loop went into tight loop, added debug print before every continue ``b597228` `_ +* main loop went into tight loop, more debug prints ``a4faa76` `_ +* Update INSTALL.txt ``54a2c01` `_ +* more debugging messages trying to find rare tight loop in main ``3d7e3a4` `_ +* Update INSTALL.txt ``22f7123` `_ +* can detect closed socket and reconnect now ``b8f37fa` `_ +* Detect closed socket, reconnect, with a bit more grace ``4b67df2` `_ +* socket timeout 5 minutes ``e6995c3` `_ +* clean up code around closed_socket and reconnect ``735cb3a` `_ +* clean up code around closed_socket and reconnect ``371a7a0` `_ +* fix parse_email unicode probs by using body.decode(errors='ignore') ``44228c6` `_ +* fix parse_email unicode probs by using body.decode(errors='ignore').. again ``3c16149` `_ +* some failed attempts at getting the first txt or html from a multipart message, currently sends the last ``90fcb99` `_ +* found another .decode that didn't include errors='ignore' ``f69f9a2` `_ +* Initial conversion to click ``50fb090` `_ +* Update INSTALL.txt ``9cd6542` `_ +* imap tags are unicode in py3. .decode tags ``4b09fad` `_ +* switch from urlib to requests for weather, tested in py3 and py2. still need to update locate, and all other http calls ``00432cf` `_ +* cleaned up weather code after switch to requests ... from urllib. works on py2 and py3 ``ad0f96d` `_ +* add urllib import back until i replace all calls with requests ``b38f561` `_ +* completely off urllib now, tested locate/weather in py2 and py3 ``86bf428` `_ +* lose some logging statements ``c5517a7` `_ +* fixed fortune. yet another unicode issue, tested in py3 and py2 ``2bebd83` `_ +* reset default email check delay to 60, fix a few comments ``d3bb44f` `_ +* yet another unicode problem, in resend_email fixed ``bb1a2ee` `_ +* get rid of some debug statements ``43509ea` `_ +* Rewrote the README.md to README.rst ``e1edbe6` `_ diff --git a/README.md b/README.md index 772bfb5..3a941ef 100644 --- a/README.md +++ b/README.md @@ -36,14 +36,10 @@ 17. [Development](#development) 18. [Release](#release) 19. [Building your own APRSD plugins](#building-your-own-aprsd-plugins) -20. [Overview](#overview) -21. [Docker Container](#docker-container) -22. [Building](#building) -23. [Official Build](#official-build) -24. [Development Build](#development-build) -25. [Running the container](#running-the-container) -26. [Activity](#activity) -27. [Star History](#star-history) +20. [Docker Container](#docker-container) +21. [Running the container](#running-the-container) +22. [Activity](#activity) +23. [Star History](#star-history) --- @@ -392,53 +388,11 @@ To do release to pypi: #### Building your own APRSD plugins -APRSD plugins are the mechanism by which APRSD can respond to APRS -Messages. The plugins are loaded at server startup and can also be -loaded at listen startup. When a packet is received by APRSD, it is -passed to each of the plugins in the order they were registered in the -config file. The plugins can then decide what to do with the packet. -When a plugin is called, it is passed a APRSD Packet object. The plugin -can then do something with the packet and return a reply message if -desired. If a plugin does not want to reply to the packet, it can just -return None. When a plugin does return a reply message, APRSD will send -the reply message to the appropriate destination. - -For example, when a \'ping\' message is received, the PingPlugin will -return a reply message of \'pong\'. When APRSD receives the \'pong\' -message, it will be sent back to the original caller of the ping -message. - -APRSD plugins are simply python packages that can be installed from -pypi.org. They are installed into the aprsd virtualenv and can be -imported by APRSD at runtime. The plugins are registered in the config -file and loaded at startup of the aprsd server command or the aprsd -listen command. - -#### Overview - -You can build your own plugins by following the instructions in the -[Building your own APRSD plugins](#building-your-own-aprsd-plugins) -section. - -Plugins are called by APRSD when packe +For information on building your own APRSD plugins, see the [Plugin Development documentation](https://aprsd.readthedocs.io/en/latest/plugin.html). ### Docker Container -### Building - -There are 2 versions of the container Dockerfile that can be used. The -main Dockerfile, which is for building the official release container -based off of the uv/pip install version of aprsd and the Dockerfile-dev, -which is used for building a container based off of a git branch of the -repo. - -### Official Build - -`docker build -t hemna6969/aprsd:latest .` - -### Development Build - -`docker build -t hemna6969/aprsd:latest -f Dockerfile-dev .` +For information on building Docker containers (official and development builds), see the [Docker Container documentation](https://aprsd.readthedocs.io/en/latest/readme.html#docker-container). ### Running the container diff --git a/aprsd/utils/__init__.py b/aprsd/utils/__init__.py index af02e0d..cc3ac1d 100644 --- a/aprsd/utils/__init__.py +++ b/aprsd/utils/__init__.py @@ -180,20 +180,19 @@ def load_entry_points(group): def calculate_initial_compass_bearing(point_a, point_b): - """ - Calculates the bearing between two points. - The formulae used is the following: + """Calculates the bearing between two points. + + The formulae used is the following:: + θ = atan2(sin(Δlong).cos(lat2), cos(lat1).sin(lat2) − sin(lat1).cos(lat2).cos(Δlong)) - :Parameters: - - `pointA: The tuple representing the latitude/longitude for the + + :param point_a: The tuple representing the latitude/longitude for the first point. Latitude and longitude must be in decimal degrees - - `pointB: The tuple representing the latitude/longitude for the + :param point_b: The tuple representing the latitude/longitude for the second point. Latitude and longitude must be in decimal degrees - :Returns: - The bearing in degrees - :Returns Type: - float + :returns: The bearing in degrees + :rtype: float """ if (type(point_a) != tuple) or (type(point_b) != tuple): # noqa: E721 raise TypeError('Only tuples are supported as arguments') diff --git a/aprsd/utils/trace.py b/aprsd/utils/trace.py index b7d8e87..23ad282 100644 --- a/aprsd/utils/trace.py +++ b/aprsd/utils/trace.py @@ -136,7 +136,8 @@ def no_trace(f): Use this decorator on methods that should not be wrapped with trace_method by the TraceWrapperMetaclass. - Example: + Example:: + class MyClass(metaclass=TraceWrapperMetaclass): def traced_method(self): pass # This will be wrapped diff --git a/docs/apidoc/aprsd.client.drivers.lib.rst b/docs/apidoc/aprsd.client.drivers.lib.rst new file mode 100644 index 0000000..7850450 --- /dev/null +++ b/docs/apidoc/aprsd.client.drivers.lib.rst @@ -0,0 +1,21 @@ +aprsd.client.drivers.lib package +================================ + +Submodules +---------- + +aprsd.client.drivers.lib.aprslib module +--------------------------------------- + +.. automodule:: aprsd.client.drivers.lib.aprslib + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: aprsd.client.drivers.lib + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/apidoc/aprsd.client.drivers.rst b/docs/apidoc/aprsd.client.drivers.rst index 58532c3..7cde4b3 100644 --- a/docs/apidoc/aprsd.client.drivers.rst +++ b/docs/apidoc/aprsd.client.drivers.rst @@ -1,6 +1,14 @@ aprsd.client.drivers package ============================ +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + aprsd.client.drivers.lib + Submodules ---------- @@ -20,10 +28,34 @@ aprsd.client.drivers.fake module :undoc-members: :show-inheritance: -aprsd.client.drivers.kiss module --------------------------------- +aprsd.client.drivers.kiss\_common module +---------------------------------------- -.. automodule:: aprsd.client.drivers.kiss +.. automodule:: aprsd.client.drivers.kiss_common + :members: + :undoc-members: + :show-inheritance: + +aprsd.client.drivers.registry module +------------------------------------ + +.. automodule:: aprsd.client.drivers.registry + :members: + :undoc-members: + :show-inheritance: + +aprsd.client.drivers.serialkiss module +-------------------------------------- + +.. automodule:: aprsd.client.drivers.serialkiss + :members: + :undoc-members: + :show-inheritance: + +aprsd.client.drivers.tcpkiss module +----------------------------------- + +.. automodule:: aprsd.client.drivers.tcpkiss :members: :undoc-members: :show-inheritance: diff --git a/docs/apidoc/aprsd.client.rst b/docs/apidoc/aprsd.client.rst index c007053..d1da0e3 100644 --- a/docs/apidoc/aprsd.client.rst +++ b/docs/apidoc/aprsd.client.rst @@ -12,42 +12,10 @@ Subpackages Submodules ---------- -aprsd.client.aprsis module +aprsd.client.client module -------------------------- -.. automodule:: aprsd.client.aprsis - :members: - :undoc-members: - :show-inheritance: - -aprsd.client.base module ------------------------- - -.. automodule:: aprsd.client.base - :members: - :undoc-members: - :show-inheritance: - -aprsd.client.factory module ---------------------------- - -.. automodule:: aprsd.client.factory - :members: - :undoc-members: - :show-inheritance: - -aprsd.client.fake module ------------------------- - -.. automodule:: aprsd.client.fake - :members: - :undoc-members: - :show-inheritance: - -aprsd.client.kiss module ------------------------- - -.. automodule:: aprsd.client.kiss +.. automodule:: aprsd.client.client :members: :undoc-members: :show-inheritance: diff --git a/docs/apidoc/aprsd.packets.filters.rst b/docs/apidoc/aprsd.packets.filters.rst new file mode 100644 index 0000000..66a8a6f --- /dev/null +++ b/docs/apidoc/aprsd.packets.filters.rst @@ -0,0 +1,29 @@ +aprsd.packets.filters package +============================= + +Submodules +---------- + +aprsd.packets.filters.dupe\_filter module +----------------------------------------- + +.. automodule:: aprsd.packets.filters.dupe_filter + :members: + :undoc-members: + :show-inheritance: + +aprsd.packets.filters.packet\_type module +----------------------------------------- + +.. automodule:: aprsd.packets.filters.packet_type + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: aprsd.packets.filters + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/apidoc/aprsd.packets.rst b/docs/apidoc/aprsd.packets.rst index d7310d5..8c4b20e 100644 --- a/docs/apidoc/aprsd.packets.rst +++ b/docs/apidoc/aprsd.packets.rst @@ -1,6 +1,14 @@ aprsd.packets package ===================== +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + aprsd.packets.filters + Submodules ---------- @@ -20,6 +28,14 @@ aprsd.packets.core module :undoc-members: :show-inheritance: +aprsd.packets.filter module +--------------------------- + +.. automodule:: aprsd.packets.filter + :members: + :undoc-members: + :show-inheritance: + aprsd.packets.log module ------------------------ diff --git a/docs/apidoc/aprsd.threads.rst b/docs/apidoc/aprsd.threads.rst index 4ef323c..9c24dad 100644 --- a/docs/apidoc/aprsd.threads.rst +++ b/docs/apidoc/aprsd.threads.rst @@ -36,6 +36,14 @@ aprsd.threads.rx module :undoc-members: :show-inheritance: +aprsd.threads.service module +---------------------------- + +.. automodule:: aprsd.threads.service + :members: + :undoc-members: + :show-inheritance: + aprsd.threads.stats module -------------------------- diff --git a/docs/apidoc/aprsd.utils.rst b/docs/apidoc/aprsd.utils.rst index 7edb534..a251da0 100644 --- a/docs/apidoc/aprsd.utils.rst +++ b/docs/apidoc/aprsd.utils.rst @@ -44,6 +44,14 @@ aprsd.utils.objectstore module :undoc-members: :show-inheritance: +aprsd.utils.package module +-------------------------- + +.. automodule:: aprsd.utils.package + :members: + :undoc-members: + :show-inheritance: + aprsd.utils.ring\_buffer module ------------------------------- diff --git a/docs/builtin_plugins.rst b/docs/builtin_plugins.rst new file mode 100644 index 0000000..4b8a68f --- /dev/null +++ b/docs/builtin_plugins.rst @@ -0,0 +1,346 @@ +Built-in APRSD Plugins +====================== + +APRSD comes with several built-in plugins that provide various functionality out of the box. +These plugins are automatically available when you install APRSD and can be enabled or disabled +through the configuration file. + +Message Command Plugins +------------------------ + +These plugins respond to APRS messages sent to your APRSD callsign. + +PingPlugin +~~~~~~~~~~ + +**Command:** ``ping``, ``p``, or ``p `` (p followed by space) + +**Description:** Responds with "Pong!" and the current time. + +**Usage:** Send a message containing "ping" to your APRSD callsign. + +**Example:** + :: + + You: ping + APRSD: Pong! 14:30:05 + +**Configuration:** No configuration required. + +**Plugin Path:** ``aprsd.plugins.ping.PingPlugin`` + + +FortunePlugin +~~~~~~~~~~~~~ + +**Command:** ``fortune``, ``f``, or ``f `` (f followed by space) + +**Description:** Returns a random fortune cookie message using the system's ``fortune`` command. + +**Usage:** Send a message containing "fortune" to your APRSD callsign. + +**Requirements:** Requires the ``fortune`` command to be installed on the system. The plugin +will automatically search common installation paths and disable itself if not found. + +**Example:** + :: + + You: fortune + APRSD: A journey of a thousand miles begins with a single step. + +**Configuration:** No configuration required. + +**Plugin Path:** ``aprsd.plugins.fortune.FortunePlugin`` + + +TimePlugin +~~~~~~~~~~ + +**Command:** ``time``, ``t``, or ``t `` (t followed by space) + +**Description:** Returns the current local time of the APRSD server in a human-readable format +with timezone information. + +**Usage:** Send a message containing "time" to your APRSD callsign. + +**Example:** + :: + + You: time + APRSD: half past two (14:30 PDT) + +**Configuration:** No configuration required. Uses the system's local timezone. + +**Plugin Path:** ``aprsd.plugins.time.TimePlugin`` + + +TimeOWMPlugin +~~~~~~~~~~~~~ + +**Command:** ``time``, ``t``, or ``t `` (t followed by space) + +**Description:** Returns the current time based on the GPS beacon location of the calling +callsign (or optionally a specified callsign). Uses OpenWeatherMap API to determine the +timezone for the location. + +**Usage:** + :: + + You: time + APRSD: quarter to three (14:45 EST) + + You: time WB4BOR + APRSD: half past two (14:30 PDT) + +**Requirements:** + - Requires an ``aprs_fi.apiKey`` configuration option + - Requires an ``owm_weather_plugin.apiKey`` configuration option + +**Configuration:** + - ``aprs_fi.apiKey`` - API key from aprs.fi account + - ``owm_weather_plugin.apiKey`` - OpenWeatherMap API key + +**Plugin Path:** ``aprsd.plugins.time.TimeOWMPlugin`` + + +VersionPlugin +~~~~~~~~~~~~~ + +**Command:** ``version``, ``v``, or ``v `` (v followed by space) + +**Description:** Returns the APRSD version number and server uptime. + +**Usage:** Send a message containing "version" to your APRSD callsign. + +**Example:** + :: + + You: version + APRSD: APRSD ver:4.2.4 uptime:2 days, 5:30:15 + +**Configuration:** No configuration required. + +**Plugin Path:** ``aprsd.plugins.version.VersionPlugin`` + + +USWeatherPlugin +~~~~~~~~~~~~~~~ + +**Command:** ``weather``, ``w``, or ``W`` (w or W at start of message) + +**Description:** Provides weather information for locations within the United States only. +Uses the forecast.weather.gov API to fetch weather data based on the GPS beacon location +of the calling callsign (or optionally a specified callsign). + +**Usage:** + :: + + You: weather + APRSD: 72F(68F/75F) Partly cloudy. Tonight, Clear. + + You: weather WB4BOR + APRSD: 65F(60F/70F) Sunny. Tonight, Partly cloudy. + +**Requirements:** Requires an ``aprs_fi.apiKey`` configuration option. + +**Configuration:** + - ``aprs_fi.apiKey`` - API key from aprs.fi account + +**Note:** This plugin does not require an API key for the weather service itself, only +for aprs.fi to get the GPS location. + +**Plugin Path:** ``aprsd.plugins.weather.USWeatherPlugin`` + + +USMetarPlugin +~~~~~~~~~~~~~ + +**Command:** ``metar``, ``m``, ``M``, or ``m `` (m or M at start of message) + +**Description:** Provides METAR (Meteorological Aerodrome Report) weather reports for +stations within the United States only. Uses the forecast.weather.gov API. + +**Usage:** + :: + + You: metar + APRSD: KORD 101451Z 28010KT 10SM FEW250 22/12 A3001 + + You: metar KORD + APRSD: KORD 101451Z 28010KT 10SM FEW250 22/12 A3001 + +**Requirements:** Requires an ``aprs_fi.apiKey`` configuration option (when querying +by callsign location). + +**Configuration:** + - ``aprs_fi.apiKey`` - API key from aprs.fi account + +**Note:** When specifying a station identifier directly (e.g., "metar KORD"), the +aprs.fi API key is not required. + +**Plugin Path:** ``aprsd.plugins.weather.USMetarPlugin`` + + +OWMWeatherPlugin +~~~~~~~~~~~~~~~~ + +**Command:** ``weather``, ``w``, or ``W`` (w or W at start of message) + +**Description:** Provides weather information using the OpenWeatherMap API. Works worldwide +and provides current weather conditions including temperature, dew point, wind speed and +direction, and humidity. + +**Usage:** + :: + + You: weather + APRSD: clear sky 72.1F/65.2F Wind 5@270 45% + + You: weather WB4BOR + APRSD: partly cloudy 68.5F/62.1F Wind 8@180G12 52% + +**Requirements:** + - Requires an ``aprs_fi.apiKey`` configuration option + - Requires an ``owm_weather_plugin.apiKey`` configuration option + +**Configuration:** + - ``aprs_fi.apiKey`` - API key from aprs.fi account + - ``owm_weather_plugin.apiKey`` - OpenWeatherMap API key (get one at https://home.openweathermap.org/api_keys) + - ``units`` - Set to "imperial" or "metric" (default: "imperial") + +**Plugin Path:** ``aprsd.plugins.weather.OWMWeatherPlugin`` + + +AVWXWeatherPlugin +~~~~~~~~~~~~~~~~~ + +**Command:** ``metar``, ``m``, ``m `` (m at start of message) + +**Description:** Provides METAR weather reports using the AVWX API service. Fetches METAR +data from the nearest weather station to the GPS beacon location of the calling callsign +(or optionally a specified callsign). + +**Usage:** + :: + + You: metar + APRSD: KORD 101451Z 28010KT 10SM FEW250 22/12 A3001 RMK AO2 SLP168 T02220122 + + You: metar WB4BOR + APRSD: KSFO 101500Z 25015KT 10SM FEW030 18/14 A2998 RMK AO2 + +**Requirements:** + - Requires an ``aprs_fi.apiKey`` configuration option + - Requires an ``avwx_plugin.apiKey`` configuration option + - Requires an ``avwx_plugin.base_url`` configuration option + +**Configuration:** + - ``aprs_fi.apiKey`` - API key from aprs.fi account + - ``avwx_plugin.apiKey`` - API key for AVWX service + - ``avwx_plugin.base_url`` - Base URL for AVWX API (default: https://avwx.rest) + +**Note:** AVWX is an open-source project. You can use the hosted service at https://avwx.rest/ +or host your own instance. See the plugin code comments for instructions on running your +own AVWX API server. + +**Plugin Path:** ``aprsd.plugins.weather.AVWXWeatherPlugin`` + + +HelpPlugin +~~~~~~~~~~ + +**Command:** ``help``, ``h``, or ``H`` (h or H at start of message) + +**Description:** Provides help information about available plugins. Can list all available +plugins or provide specific help for a named plugin. + +**Usage:** + :: + + You: help + APRSD: Send APRS MSG of 'help' or 'help ' + plugins: fortune ping time version weather + + You: help weather + APRSD: openweathermap: Send ^[wW] to get weather from your location + openweathermap: Send ^[wW] to get weather from + +**Configuration:** Can be disabled by setting ``load_help_plugin = false`` in the configuration. + +**Plugin Path:** ``aprsd.plugin.HelpPlugin`` + + +WatchList Plugins +----------------- + +These plugins monitor APRS traffic and can send notifications based on watch list criteria. + +NotifySeenPlugin +~~~~~~~~~~~~~~~~ + +**Type:** WatchList Plugin + +**Description:** Monitors callsigns in the watch list and sends a notification message when +a callsign that hasn't been seen recently (based on the configured age limit) appears on +the APRS network. + +**How it works:** + - Tracks callsigns configured in the watch list + - Monitors all incoming APRS packets + - When a callsign in the watch list is seen and hasn't been seen recently (exceeds + the age limit), sends a notification message to the configured alert callsign + +**Configuration:** + - ``watch_list.enabled`` - Must be set to ``true`` + - ``watch_list.callsigns`` - List of callsigns to watch for + - ``watch_list.alert_callsign`` - Callsign to send notifications to + - ``watch_list.alert_time_seconds`` - Time threshold in seconds (default: 3600) + +**Example Notification:** + :: + + APRSD -> WB4BOR: KM6LYW was just seen by type:'BeaconPacket' + +**Plugin Path:** ``aprsd.plugins.notify.NotifySeenPlugin`` + + +Enabling Built-in Plugins +-------------------------- + +Built-in plugins are enabled through the ``enabled_plugins`` configuration option in your +APRSD configuration file. List the full Python path to each plugin class you want to enable. + +**Example Configuration:** + :: + + [DEFAULT] + enabled_plugins = aprsd.plugins.fortune.FortunePlugin,aprsd.plugins.ping.PingPlugin,aprsd.plugins.time.TimePlugin,aprsd.plugins.weather.OWMWeatherPlugin,aprsd.plugins.version.VersionPlugin,aprsd.plugins.notify.NotifySeenPlugin + +**Note:** The HelpPlugin is enabled by default and does not need to be listed in +``enabled_plugins``. It can be disabled by setting ``load_help_plugin = false``. + +**Note:** Some plugins may require additional configuration (API keys, etc.) and will +automatically disable themselves if required configuration is missing. + +**Note:** Weather plugins (USWeatherPlugin, OWMWeatherPlugin, AVWXWeatherPlugin) all use +the same command pattern (``w`` or ``W`` at the start). Only one should be enabled at a time +to avoid conflicts. Similarly, METAR plugins (USMetarPlugin, AVWXWeatherPlugin) use the +same pattern (``m`` or ``M`` at the start). + + +Listing Available Plugins +-------------------------- + +You can see all available built-in plugins, along with their descriptions and command patterns, +by running: + +.. code-block:: shell + + aprsd list-plugins + +This command will show: + - Built-in plugins included with APRSD + - Available plugins on PyPI that can be installed + - Currently installed third-party plugins + +.. include:: links.rst diff --git a/docs/changelog.rst b/docs/changelog.rst index 7984dd5..0060971 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -2,31 +2,461 @@ Changelog ^^^^^^^^^ + All notable changes to this project will be documented in this file. Dates are displayed in UTC. Generated by `\ ``auto-changelog`` `_. -`v3.4.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`4.2.4 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. - 27 May 2024 + 17 October 2025 +* update github release build action `\ ``0373db9`` `_ +* Remove update_timestamp during _send_direct `\ ``6c3c16f`` `_ +* remove some debug noise `\ ``be26f31`` `_ + + +`4.2.3 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 12 October 2025 + + + +* Remove printf from tcpkiss `\ ``4b9e7fe`` `_ +* Added line numbers in trace `\ ``9a1c096`` `_ +* Stop all collectors on signal `\ ``643e19b`` `_ +* Added stop_all to stats collector. `\ ``eb8104b`` `_ +* Cleanup of tcpkiss `\ ``3d353dc`` `_ +* Driver protocol is_alive is property `\ ``7c5d9ee`` `_ +* Make fake driver conform to protocol `\ ``093ada0`` `_ +* Fixed aprsis client connected tracking `\ ``056acc3`` `_ +* Fixed client base class connection tracking `\ ``24019ae`` `_ +* Fixed unit tests `\ ``961d3e9`` `_ +* update for 4.2.3 `\ ``8932524`` `_ + + +`4.2.2 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 8 October 2025 + + + +* Fixed an issue with client.reset `\ ``4920256`` `_ + + +`4.2.1 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 7 October 2025 + + + +* Sanity check around decoding packet `\ ``58cb046`` `_ +* Added CONF.is_digipi `\ ``f3039eb`` `_ +* Fixed stats issue with tcpkiss client. `\ ``556554b`` `_ +* Fixed missing f string `\ ``8cd61a7`` `_ +* Added ThirdPartyPacket decoding in tcpkiss driver `\ ``3961e1d`` `_ +* refactored list-plugins `\ ``c7c9a92`` `_ +* Added package `\ ``e15322e`` `_ +* Some client and driver cleanup. `\ ``328c027`` `_ +* Fixed some unit tests `\ ``af0feaf`` `_ +* Update Changelog for 4.2.1 release `\ ``9bf4bfd`` `_ + + +`4.2.0 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 12 August 2025 + + + +* Reworked the entire client and drivers `\ ``#191`` `_ +* Update the docker-compose.yml `\ ``#193`` `_ +* Use OpenWeatherMap One Call v3.0 API `\ ``#186`` `_ +* use OWM onecall v3.0 `\ ``16bfda4`` `_ +* Fixed a problem with WeatherPacket `\ ``5469610`` `_ +* Ensure filter is set `\ ``4c53c13`` `_ +* Remove flask_enabled `\ ``ce79f01`` `_ +* Make some catchall fields non hashable. `\ ``acd639a`` `_ +* Fixed setup for AVWXWeatherPlugin `\ ``2fcd574`` `_ +* removed old flask_enabled global `\ ``8f471c2`` `_ +* Updated requirements `\ ``211ac11`` `_ +* Don't log an IOError on shutdown `\ ``d41064b`` `_ +* Honor quiet setting for log.setup_logging `\ ``1ae4375`` `_ +* Make sure packet has addressee field `\ ``034f11b`` `_ +* Fix tox failures `\ ``74887af`` `_ +* log the exception when tx fails. `\ ``fa5d0c6`` `_ +* Updated requirements for 4.2.0 `\ ``2c476d8`` `_ +* Updated Changelog for 4.2.0 `\ ``b9fea98`` `_ + + +`4.1.2 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 6 March 2025 + + + +* Allow passing in a custom handler to setup_logging `\ ``d262589`` `_ +* Changelog for 4.1.2 `\ ``6dba56f`` `_ + + +`4.1.1 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 5 March 2025 + + + +* Added new config to disable logging to console `\ ``0fa5b07`` `_ +* Added threads.service `\ ``c1c89fd`` `_ +* Update requirements `\ ``2b185ee`` `_ +* Fixed some more ruff checks `\ ``94ba915`` `_ +* 4.1.1 release `\ ``7ed8028`` `_ + + +`4.1.0 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 20 February 2025 + + + +* Added new PacketFilter mechanism `\ ``#184`` `_ +* Update to build from pypi `\ ``3b57e75`` `_ +* Updated APRSIS driver `\ ``1606585`` `_ +* Updated packet_list to allow infinit max store `\ ``19c12e7`` `_ +* Update StatsStore to use existing lock `\ ``227ddbf`` `_ +* Try and stop chardet logging! `\ ``101904c`` `_ +* Fixed some pep8 failures. `\ ``e9e7e6b`` `_ +* updated gitignore `\ ``fd517b3`` `_ +* Remove sleep in main RX thread `\ ``6cd7e99`` `_ +* Changed Objectstore log to debug `\ ``361663e`` `_ +* fix for None packet in rx thread `\ ``d82a81a`` `_ +* Fix runaway KISS driver on failed connnection `\ ``b6da0eb`` `_ +* CONF.logging.enable_color option added `\ ``06bdb34`` `_ +* Update Changelog for 4.1.0 release `\ ``a3cda9f`` `_ + + +`4.0.2 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 25 January 2025 + + + +* Fix for KISS/Fake client drivers `\ ``edeba7f`` `_ +* Trap for failed parsing of packets on KISS `\ ``9501a63`` `_ +* Pass branch in github release_build `\ ``1f65bbe`` `_ +* Removed some verbose output from KISS `\ ``c1319c3`` `_ +* Look in multiple places for fortune bin `\ ``97ffffc`` `_ +* Added uv.lock `\ ``2f26eb8`` `_ +* Fix the testing of fortune path `\ ``3c4e200`` `_ +* update the install from github in Dockerfile `\ ``bea4815`` `_ +* Prep for 4.0.2 `\ ``000adef`` `_ + + +`4.0.1 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 24 January 2025 + + + +* Update pyproject for README.rst -> md `\ ``e080394`` `_ +* Updated Changelog `\ ``24f5672`` `_ + + +`4.0.0 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 24 January 2025 + + + +* Migrate admin web out of aprsd. `\ ``#183`` `_ +* Enable packet stats for listen command in Docker `\ ``e5d8796`` `_ +* Added activity to README `\ ``cdd297c`` `_ +* Added star history to readme `\ ``02e2940`` `_ +* removed pytest from README `\ ``1cba31f`` `_ +* Updated Docker for using alpine and uv `\ ``24db814`` `_ +* Update the admin and setup.sh for container `\ ``044ea4c`` `_ +* added healthcheck.sh `\ ``1054999`` `_ +* updated healthcheck.sh `\ ``dabb48c`` `_ +* try making image for webchat `\ ``ba8acdc`` `_ +* Added APRSD logo `\ ``0ed648f`` `_ +* Added plugin and extension links `\ ``447451c`` `_ +* reduced logo size 50% `\ ``cf4a29f`` `_ +* Updated README.md TOC `\ ``375a5e5`` `_ +* chore: update AUTHORS [skip ci] `\ ``c556f51`` `_ +* Updated requirements `\ ``4a7a902`` `_ +* Updated ChangeLog for 4.0.0 `\ ``934ebd2`` `_ + + +`3.5.0 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 10 January 2025 + + + +* Migrate admin web out of aprsd. `\ ``c48ff8d`` `_ +* Remove webchat as a built in command. `\ ``8f8887f`` `_ +* Remove email plugin `\ ``0880a35`` `_ +* Fixed make clean `\ ``ae28dbb`` `_ +* removed email reference `\ ``fcd1629`` `_ +* Removed more email references. `\ ``f0c0260`` `_ +* Removed LocationPlugin from aprsd core `\ ``3bba8a1`` `_ +* Include haversine library `\ ``bbdbb9a`` `_ +* Update Makefile `\ ``caa4bb8`` `_ +* Added new KeepAliveCollector `\ ``30d1eb5`` `_ +* Changed to ruff `\ ``72d068c`` `_ +* Changed README.rst -> README.md `\ ``b1a830d`` `_ +* fixed list-plugins `\ ``ec1adf4`` `_ +* Updated README.md `\ ``fd74405`` `_ +* updated workflow `\ ``df14eb8`` `_ +* Some cleanup with list plugins `\ ``5274c5d`` `_ +* Updated README.md `\ ``275e335`` `_ +* removed BeautifulSoup usage `\ ``a21432f`` `_ +* updated github workflows `\ ``e3a7e7f`` `_ +* updated requirements-dev `\ ``fbec716`` `_ +* updated requirements `\ ``7f2c1d7`` `_ +* updated plugin example `\ ``0073865`` `_ +* updated docs rst files `\ ``3cd9bfa`` `_ +* added authors.yml `\ ``c8735c2`` `_ +* updated action versions `\ ``7702d68`` `_ +* update to py 3.10 `\ ``3ee422b`` `_ +* Added .mailmap `\ ``8d98546`` `_ +* updated tools in pre-commit `\ ``e4f82d6`` `_ +* some cleanup `\ ``e332d7c`` `_ + + +`3.4.4 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 6 December 2024 + + + +* Update counter.py `\ ``#182`` `_ +* Added an option to disable the loading of the help plugin. `\ ``#177`` `_ +* Added unit test for client base `\ ``#181`` `_ +* Walt listen test `\ ``#180`` `_ +* Bump werkzeug from 3.0.4 to 3.0.6 `\ ``#178`` `_ +* Added new aprsd admin command `\ ``0271ccd`` `_ +* Added some changes to listen `\ ``df0ca04`` `_ +* Added some changes to listen `\ ``d863474`` `_ +* Fix a small issue with packet sending failures `\ ``3fd6069`` `_ +* Fix a small issue with packet sending failures `\ ``f265e8f`` `_ +* Added new dump-stats command `\ ``add18f1`` `_ +* Update PacketList `\ ``7e8d7cd`` `_ +* Updated APRSClient `\ ``d808e21`` `_ +* Calculate delta once and reuse it `\ ``0be87d8`` `_ +* Added unit test for ClientFactory `\ ``ab2de86`` `_ +* Added unit test for APRSISClient `\ ``224686c`` `_ +* optimized Packet.get() `\ ``579d0c9`` `_ +* fixed name for dump-stats output `\ ``563b068`` `_ +* updated README.rst `\ ``229155d`` `_ +* Only load EmailStats if email is enabled `\ ``2fdc7b1`` `_ +* Added rich output for dump-stats `\ ``d0018a8`` `_ +* Allow disabling sending all AckPackets `\ ``6e62ac1`` `_ +* Allow loading a specific list of plugins `\ ``9f3c8f8`` `_ +* Catch and log exceptions in consumer `\ ``adcf94d`` `_ +* Fixed the protocol for Stats Collector `\ ``bd0bcc1`` `_ +* Added new features to listen command. `\ ``7d1e739`` `_ +* Don't break logging aprslib failures `\ ``98a6210`` `_ +* Change healthcheck email thread check timeout `\ ``03ce5a3`` `_ +* Addressing comments in PR. `\ ``2471492`` `_ +* Update utils.trace `\ ``c3df974`` `_ +* Update requirements `\ ``257fa0d`` `_ +* Fixes for webchat UI. `\ ``f0b9956`` `_ +* Sending message to new callsign displays in an active tab `\ ``d42638e`` `_ +* Update WebChat `\ ``9f7d169`` `_ +* Update Client to report login status `\ ``06c1fb9`` `_ +* Updated server client checks `\ ``1c50c39`` `_ +* Fixed broken unit tests `\ ``c82e9ba`` `_ +* Fixed pep8 failure on counter.py `\ ``1eaa4b8`` `_ +* No reason to create the client in init `\ ``e99c906`` `_ +* Added APRSDThread pause/unpause capability `\ ``95094b8`` `_ +* Added client_exists() for client factory `\ ``505565d`` `_ +* Added pause_all, unpause_all in threadlist `\ ``76d275d`` `_ +* Make sure to sleep(1) in the main RX thread `\ ``98a96cb`` `_ +* Put safety checks around the timeago for keepalive `\ ``be6357a`` `_ +* Properly report TCPKISS connection `\ ``3e488db`` `_ +* Fix call in kiss consumer `\ ``aba5bb0`` `_ +* Update RX Packet dupe checking `\ ``8f3da96`` `_ +* Webchat: Don't automatically fetch location KISS `\ ``e8ae380`` `_ +* Fixed issue not processing null msg ids `\ ``a17b80d`` `_ +* Updated keepalive thread to report client `\ ``8529f1f`` `_ +* Fixed webchat popovers not working. `\ ``3a8b8f2`` `_ +* Fixed issue with packet object and prepare() `\ ``f66b962`` `_ +* Fixed webchat packets without msgNo `\ ``d4ae726`` `_ +* Added __contains__ to threadlist `\ ``d94a3e7`` `_ +* Update healthcheck `\ ``7fb0c74`` `_ +* Remove dataclasses from requirements `\ ``db73a54`` `_ +* Update requirements.dev `\ ``0d8a1ac`` `_ +* Added new acked property to the core Packet `\ ``3c058f3`` `_ +* Fixed some pep8 failures `\ ``63bcd41`` `_ +* Update Changelog for 3.4.4 `\ ``bc709b3`` `_ + + +`3.4.3 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 18 November 2024 + + + + +`v3.4.3 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 29 October 2024 + + + +* Change virtual env name to .venv `\ ``882e907`` `_ +* Fixed issue in send_message command `\ ``ecf30d3`` `_ +* Update Changelog for v3.4.3 `\ ``5780626`` `_ + + +`v3.4.2 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 18 October 2024 + + + +* Removed remnants of QueryPlugin `\ ``758007e`` `_ +* Removed dumping of the stats on exit `\ ``5314856`` `_ +* Added color logging of thread names at keepalive `\ ``5e9f92d`` `_ +* Added packet log distance and new arrows `\ ``3e9bf24`` `_ +* Log closing client connection. `\ ``9951b12`` `_ +* Sort changelog commits by date `\ ``a65262d`` `_ +* Add final stages in Dockerfile `\ ``8cdbf18`` `_ +* Collector cleanup `\ ``765e02f`` `_ +* cleaned up some requirements `\ ``c12c42b`` `_ +* Cleanup test failures `\ ``14c0a69`` `_ + + +`v3.4.1 `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +.. + + 23 September 2024 + + + +* Bump zipp from 3.18.2 to 3.19.1 `\ ``#170`` `_ +* Bump certifi from 2024.2.2 to 2024.7.4 `\ ``#169`` `_ +* Bump urllib3 from 2.2.1 to 2.2.2 `\ ``#168`` `_ * Refactor client and drivers `\ ``#164`` `_ * Refactor Dockerfile `\ ``#167`` `_ * Bump requests from 2.31.0 to 2.32.0 `\ ``#166`` `_ * Bump jinja2 from 3.1.3 to 3.1.4 `\ ``#163`` `_ -* Eliminate need for PBR `\ ``f159741`` `_ -* --- `\ ``18fb2a9`` `_ * Put an upper bound on the QueueHandler queue `\ ``93a9cce`` `_ -* updated requirements `\ ``fa2d2d9`` `_ +* Eliminate need for PBR `\ ``f159741`` `_ * Use newer python -m build to build aprsd wheel `\ ``2abf8bc`` `_ +* updated requirements `\ ``fa2d2d9`` `_ +* --- `\ ``18fb2a9`` `_ +* removed `\ ``f7a9f7a`` `_ +* Updated README `\ ``8f1733e`` `_ +* Hack Dockerfile for admin fixes? `\ ``f07ef71`` `_ +* update to pyproject `\ ``4b26e2b`` `_ +* Fixed reference to ThirdPartyPacket `\ ``ffa28fa`` `_ +* Use auto-changelog to generate changelog `\ ``673b34c`` `_ +* Renamed Changelog `\ ``5ebbb52`` `_ +* Updated Makefile to build Changelog `\ ``3741555`` `_ +* Update base docs `\ ``92cb92f`` `_ +* added m2r package to dev requirements `\ ``49e8a62`` `_ +* Updated requirements `\ ``9d3f45a`` `_ +* Fixed pep8 with packet_list `\ ``b172c6d`` `_ +* Rebuild ChangeLog `\ ``af3d741`` `_ +* No limit on change log commits `\ ``e3ab6e7`` `_ +* retagged v3.4.1 in prep for release `\ ``a6f84e4`` `_ +* Build > python 3.10 `\ ``e5662b9`` `_ +* Update ChangeLog `\ ``9b843ee`` `_ +* Removed invalid pyproject classifier `\ ``a5dc322`` `_ +* Update Changelog `\ ``a74a66d`` `_ + `v3.4.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -38,59 +468,114 @@ Generated by `\ ``auto-changelog`` ` * Update client.py to add consumer in the API. `\ ``#158`` `_ * Packet updates `\ ``#154`` `_ * Bump black from 24.2.0 to 24.3.0 `\ ``#155`` `_ -* Updated prism to 1.29 `\ ``db2fbce`` `_ -* Removed RPC Server and client. `\ ``333feee`` `_ -* Refactored packets `\ ``1477e61`` `_ -* Removed json-viewer `\ ``bc3bdc4`` `_ -* More packet cleanup and tests `\ ``f53df24`` `_ -* Make all the Objectstore children use the same lock `\ ``c206f52`` `_ -* updated dev-requirements `\ ``eada5e9`` `_ -* Completely redo logging of packets!! `\ ``1e6c483`` `_ -* Fixed pep8 errors and missing files `\ ``a270c75`` `_ -* Allow stats collector to serialize upon creation `\ ``71d72ad`` `_ -* Eliminated need for from_aprslib_dict `\ ``e386e91`` `_ -* Added new config option log_packet_format `\ ``c581dc5`` `_ -* Added new PacketCollector `\ ``a656d93`` `_ -* Admin UI working again `\ ``0ca9072`` `_ -* Updated Changelog for 3.4.0 `\ ``cb2a344`` `_ -* Removed the requirement on click-completion `\ ``992485e`` `_ -* Added threads chart to admin ui graphs `\ ``f2d39e5`` `_ +* Fixed access to conf.log in logging_setup `\ ``c1acdc2`` `_ +* Fixed call to setup_logging in uwsgi `\ ``8797dfd`` `_ +* replaced access to conf from uwsgi `\ ``82b3761`` `_ +* Update tox for mypy runs `\ ``d0f53c5`` `_ +* Start to add types `\ ``12dab28`` `_ +* No need to synchronize on stats `\ ``29b4b04`` `_ * Moved Threads list for mypy `\ ``d80277c`` `_ -* Update Dockerfiles `\ ``f02db20`` `_ -* Added threads table in the admin web ui `\ ``c6079f8`` `_ -* Added PacketTrack to packet collector `\ ``717db60`` `_ -* Got unit tests working again `\ ``f92b2ee`` `_ -* Changed Stats Collector registration `\ ``dc4879a`` `_ -* Added new config optons for PacketList `\ ``8392d6b`` `_ -* Added new webchat config option for logging `\ ``9e26df2`` `_ -* Fixed PacketList maxlen `\ ``5ff62c9`` `_ -* Some packet cleanup `\ ``da7b712`` `_ -* Fixed issue with PacketList being empty `\ ``7541f13`` `_ -* Added try except blocks in collectors `\ ``88d2624`` `_ -* Remove rpyc as a requirement `\ ``7114269`` `_ -* Added fox for entry_points with old python `\ ``09b9708`` `_ -* Fixed some tox errors related to mypy `\ ``00e185b`` `_ -* Added missing packet types in listen command `\ ``f450238`` `_ -* Added config for enable_seen_list `\ ``c43652d`` `_ -* Added default_packet_send_count config `\ ``813bc7e`` `_ -* Fixed issues with watch list at startup `\ ``e2e5853`` `_ -* Added PacketList.set_maxlen() `\ ``4542c0a`` `_ -* Delete more stats from webchat `\ ``fcc02f2`` `_ -* update requirements `\ ``8f588e6`` `_ -* Fix for micE packet decoding with mbits `\ ``386d2be`` `_ * Added type setting on pluging.py for mypy `\ ``9c77ca2`` `_ -* Webchat Send Beacon uses Path selected in UI `\ ``4c7e27c`` `_ -* Added support for RX replyacks `\ ``8d86764`` `_ -* removed Packet.last_send_attempt and just use send_count `\ ``758ea43`` `_ -* syncronize the add for StatsStore `\ ``026dc6e`` `_ -* Call packet collecter after prepare during tx. `\ ``bef3205`` `_ -* Added new default_ack_send_count config option `\ ``40c028c`` `_ -* Fix time plugin `\ ``94f36e0`` `_ -* Fix some issues with listen command `\ ``8728926`` `_ +* small refactor of stats usage in version plugin `\ ``90f212e`` `_ +* removed print `\ ``6f1d6b4`` `_ +* Refactored packets `\ ``1477e61`` `_ +* Fixed some tox errors related to mypy `\ ``00e185b`` `_ +* updated dev-requirements `\ ``eada5e9`` `_ +* Fix for micE packet decoding with mbits `\ ``386d2be`` `_ +* Eliminated need for from_aprslib_dict `\ ``e386e91`` `_ +* Don't call stats so often in webchat `\ ``9858955`` `_ +* Added missing packet types in listen command `\ ``f450238`` `_ +* Fixed some logging in webchat `\ ``127d3b3`` `_ +* Completely redo logging of packets!! `\ ``1e6c483`` `_ +* Fix some pep8 issues `\ ``b461231`` `_ +* Added new webchat config option for logging `\ ``9e26df2`` `_ +* Some packet cleanup `\ ``da7b712`` `_ +* Added new config option log_packet_format `\ ``c581dc5`` `_ +* Show comment in multiline packet output `\ ``f4356e4`` `_ +* More packet cleanup and tests `\ ``f53df24`` `_ * added packet counter random int `\ ``873fc06`` `_ +* Fix for filtering curse words `\ ``f400c60`` `_ +* Change debug log color `\ ``c062359`` `_ +* Put packet.json back in `\ ``0321cb6`` `_ +* update requirements `\ ``8f588e6`` `_ +* Fix for sample-config warning `\ ``428edac`` `_ +* Fixed pep8 errors and missing files `\ ``a270c75`` `_ +* Got unit tests working again `\ ``f92b2ee`` `_ +* Fixed access to log_monitor `\ ``01cd0a0`` `_ +* Fixed issues with watch list at startup `\ ``e2e5853`` `_ +* Allow stats collector to serialize upon creation `\ ``71d72ad`` `_ +* Lock around client reset `\ ``50e491b`` `_ +* Remove the logging of the conf password if not set `\ ``a8d56a9`` `_ +* Removed RPC Server and client. `\ ``333feee`` `_ +* Admin UI working again `\ ``0ca9072`` `_ +* Delete more stats from webchat `\ ``fcc02f2`` `_ +* Remove rpyc as a requirement `\ ``7114269`` `_ +* Removed json-viewer `\ ``bc3bdc4`` `_ +* Updated prism to 1.29 `\ ``db2fbce`` `_ +* changed admin web_ip to StrOpt `\ ``6845d26`` `_ +* LOG failed requests post to admin ui `\ ``da882b4`` `_ +* Ensure latest pip is in docker image `\ ``a839dbd`` `_ +* Ensure StatsStore has empty data `\ ``80705cb`` `_ +* Admin interface catch empty stats `\ ``2c5bc6c`` `_ +* Fix some issues with listen command `\ ``8728926`` `_ +* Fixed scrolling problem with new webchat sent msg `\ ``2e9cf3c`` `_ +* Added human_info property to MessagePackets `\ ``8f6f800`` `_ +* Get rid of some useless warning logs `\ ``b388989`` `_ +* Update webchat, include GATE route along with WIDE, ARISS, etc `\ ``aa6e732`` `_ +* add GATE route to webchat along with WIDE1, etc `\ ``886ad9b`` `_ +* Fix time plugin `\ ``94f36e0`` `_ +* Fix issue not tracking RX Ack packets for stats `\ ``3bef131`` `_ +* Another fix for ACK packets `\ ``f34120c`` `_ +* Fixed a problem with the webchat tab notification `\ ``5fa4eaf`` `_ +* Fixed PacketList maxlen `\ ``5ff62c9`` `_ +* Lock on stats for PacketList `\ ``f59b65d`` `_ +* syncronize the add for StatsStore `\ ``026dc6e`` `_ +* Limit packets to 50 in PacketList `\ ``f682890`` `_ +* Remove packet from tracker after max attempts `\ ``4c2a40b`` `_ +* Added new default_ack_send_count config option `\ ``40c028c`` `_ +* Fixed issue with APRSDThreadList stats() `\ ``66e4850`` `_ +* Added threads table in the admin web ui `\ ``c6079f8`` `_ +* ensure thread count is updated `\ ``91ba6d1`` `_ +* set packetlist max back to 100 `\ ``3bd7add`` `_ +* Added threads chart to admin ui graphs `\ ``f2d39e5`` `_ +* Update requirements `\ ``1a7694e`` `_ +* Added new config optons for PacketList `\ ``8392d6b`` `_ +* ismall update `\ ``5b2a59f`` `_ +* force uwsgi to 2.0.24 `\ ``c2f8af0`` `_ +* added packet_count in packet_list stats `\ ``7c93534`` `_ +* Fix access to PacketList._maxlen `\ ``1c9f25a`` `_ +* removed Packet.last_send_attempt and just use send_count `\ ``758ea43`` `_ +* another fix for tx send `\ ``3e87163`` `_ +* Added PacketList.set_maxlen() `\ ``4542c0a`` `_ +* Changed Stats Collector registration `\ ``dc4879a`` `_ +* Added support for RX replyacks `\ ``8d86764`` `_ +* Fixed Keepalive access to email stats `\ ``cb0cfee`` `_ +* Added new PacketCollector `\ ``a656d93`` `_ +* Fixed issue with PacketList being empty `\ ``7541f13`` `_ +* Remove error logs from watch list `\ ``27359d6`` `_ +* Added try except blocks in collectors `\ ``88d2624`` `_ +* Webchat Send Beacon uses Path selected in UI `\ ``4c7e27c`` `_ +* Added PacketTrack to packet collector `\ ``717db60`` `_ +* Call packet collecter after prepare during tx. `\ ``bef3205`` `_ +* Added default_packet_send_count config `\ ``813bc7e`` `_ +* Fix APRSDStats start_time `\ ``29d97d9`` `_ +* Added config for enable_seen_list `\ ``c43652d`` `_ +* Added fox for entry_points with old python `\ ``09b9708`` `_ +* Update Dockerfiles `\ ``f02db20`` `_ +* Removed the requirement on click-completion `\ ``992485e`` `_ +* Fixed PacketTrack with UnknownPacket `\ ``2b2bf6c`` `_ +* Make all the Objectstore children use the same lock `\ ``c206f52`` `_ +* Added config enable_packet_logging `\ ``63f3de4`` `_ +* Fixed unit tests failing with WatchList `\ ``c4b17ee`` `_ +* Fixed docker setup.sh comparison `\ ``a5680a7`` `_ +* Change setup.h `\ ``fc9ab4a`` `_ +* Updated Changelog for 3.4.0 `\ ``cb2a344`` `_ + `v3.3.4 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -101,8 +586,11 @@ Generated by `\ ``auto-changelog`` ` * Fix for entry_points where python < 3.10 `\ ``fa9ff7d`` `_ * Fixed entry_points `\ ``e9febbb`` `_ + `v3.3.3 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -112,8 +600,11 @@ Generated by `\ ``auto-changelog`` ` * Fix for sample-config warning `\ ``8e0de9c`` `_ + `v3.3.2 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -121,12 +612,15 @@ Generated by `\ ``auto-changelog`` ` -* Changelog for 3.3.2 `\ ``71cd7e0`` `_ * Removed print in utils `\ ``f810c02`` `_ * Remove warning during sample-config `\ ``d485f48`` `_ +* Changelog for 3.3.2 `\ ``71cd7e0`` `_ + `v3.3.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -135,11 +629,14 @@ Generated by `\ ``auto-changelog`` ` * Fixed problem with list-plugins `\ ``cb9456b`` `_ -* Updates for 3.3.1 `\ ``50e24ab`` `_ * Fixed failure with fetch-stats `\ ``10d023d`` `_ +* Updates for 3.3.1 `\ ``50e24ab`` `_ + `v3.3.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -149,48 +646,51 @@ Generated by `\ ``auto-changelog`` ` * Replace slow rich logging with loguru `\ ``#147`` `_ * Added location for callsign tabs in webchat `\ ``#146`` `_ -* Added Location info on webchat interface `\ ``d6f0f05`` `_ -* Added list-extensions and updated README.rst `\ ``ff051bc`` `_ -* Update requirements.txt `\ ``a4230d3`` `_ -* Added the new APRS Registry thread `\ ``1e4f0ca`` `_ -* Added BeaconPacket `\ ``11f1e95`` `_ -* Create codeql.yml `\ ``a00c4ea`` `_ -* updated requirements files `\ ``275bf67`` `_ -* Added support for loading extensions `\ ``b143072`` `_ -* use log.setup_logging `\ ``aec88d4`` `_ -* Fixed pep8 `\ ``d1a09fc`` `_ -* Added installing extensions to Docker run `\ ``4118541`` `_ -* Updated dev test-plugin command `\ ``03c58f8`` `_ -* removed some unneeded code `\ ``9683459`` `_ -* Updated requirements `\ ``d092a43`` `_ -* Disable debug logs for aprslib `\ ``24bbea1`` `_ -* Added some missing classes to threads `\ ``e89f8a8`` `_ * Update for v3.2.3 `\ ``8bceb82`` `_ -* Changelog for 3.3.0 `\ ``c37e1d5`` `_ -* fix pep8 failures `\ ``e9c48c1`` `_ -* fixed references to conf `\ ``7a5b55f`` `_ -* Add log info for Beacon and Registry threads `\ ``a4630c1`` `_ -* Added iterator to objectstore `\ ``df2798e`` `_ -* Cleanup some logs `\ ``68f23d8`` `_ -* sample-config fix `\ ``0ca5cee`` `_ +* Update requirements.txt `\ ``a4230d3`` `_ +* Updated dev test-plugin command `\ ``03c58f8`` `_ +* Added Location info on webchat interface `\ ``d6f0f05`` `_ * update github action branchs to v8 `\ ``a88de2f`` `_ -* Changed processpkt message `\ ``66004f6`` `_ -* Change defaults for beacon and registry `\ ``5fd91a2`` `_ -* Added sending software string to registry `\ ``8264c94`` `_ -* Fixed registry url post `\ ``2e9c9d4`` `_ -* Make registry thread sleep `\ ``5d3f42f`` `_ -* Put threads first after date/time `\ ``2cb9c2a`` `_ -* fixed frequency_seconds to IntOpt `\ ``6a7d7ad`` `_ -* changed the default packet timeout to 5 minutes `\ ``a1e21e7`` `_ -* Fixed default service registry url `\ ``cb291de`` `_ -* py311 fails in github `\ ``f0ad6d7`` `_ -* Don't send uptime to registry `\ ``38fe408`` `_ +* Create codeql.yml `\ ``a00c4ea`` `_ * updated gitignore `\ ``1a5c5f0`` `_ -* Fixed RegistryThread not sending requests `\ ``0b0afd3`` `_ +* Added support for loading extensions `\ ``b143072`` `_ +* Added some missing classes to threads `\ ``e89f8a8`` `_ +* Added iterator to objectstore `\ ``df2798e`` `_ +* removed some unneeded code `\ ``9683459`` `_ +* updated requirements files `\ ``275bf67`` `_ +* Added BeaconPacket `\ ``11f1e95`` `_ +* Cleanup some logs `\ ``68f23d8`` `_ +* Added installing extensions to Docker run `\ ``4118541`` `_ +* Added the new APRS Registry thread `\ ``1e4f0ca`` `_ * add py310 gh actions `\ ``1ad2e13`` `_ +* Added sending software string to registry `\ ``8264c94`` `_ +* Don't send uptime to registry `\ ``38fe408`` `_ +* py311 fails in github `\ ``f0ad6d7`` `_ +* fix pep8 failures `\ ``e9c48c1`` `_ +* Fixed default service registry url `\ ``cb291de`` `_ +* changed the default packet timeout to 5 minutes `\ ``a1e21e7`` `_ +* fixed references to conf `\ ``7a5b55f`` `_ +* fixed frequency_seconds to IntOpt `\ ``6a7d7ad`` `_ +* Add log info for Beacon and Registry threads `\ ``a4630c1`` `_ +* Change defaults for beacon and registry `\ ``5fd91a2`` `_ +* Added list-extensions and updated README.rst `\ ``ff051bc`` `_ +* Fixed pep8 `\ ``d1a09fc`` `_ +* Updated requirements `\ ``d092a43`` `_ +* Put threads first after date/time `\ ``2cb9c2a`` `_ +* Make registry thread sleep `\ ``5d3f42f`` `_ +* Disable debug logs for aprslib `\ ``24bbea1`` `_ +* use log.setup_logging `\ ``aec88d4`` `_ +* Fixed RegistryThread not sending requests `\ ``0b0afd3`` `_ +* Changed processpkt message `\ ``66004f6`` `_ +* Fixed registry url post `\ ``2e9c9d4`` `_ +* sample-config fix `\ ``0ca5cee`` `_ +* Changelog for 3.3.0 `\ ``c37e1d5`` `_ + `v3.2.3 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -200,17 +700,20 @@ Generated by `\ ``auto-changelog`` ` * aprsd: main.py: Fix premature return in sample_config `\ ``#144`` `_ * Rework Location Plugin `\ ``#140`` `_ -* Update weather.py because you can't sort icons by penis `\ ``9350cf6`` `_ -* Force fortune path during setup test `\ ``12a3113`` `_ -* Update weather.py both weather plugins have new Ww regex `\ ``651cf01`` `_ -* Update weather.py `\ ``b6df9de`` `_ * Fixed a bug with OWMWeatherPlugin `\ ``0433768`` `_ -* added /usr/games to path `\ ``026a64c`` `_ -* Added fortune to Dockerfile-dev `\ ``682e138`` `_ +* Update weather.py `\ ``b6df9de`` `_ +* Update weather.py both weather plugins have new Ww regex `\ ``651cf01`` `_ +* Update weather.py because you can't sort icons by penis `\ ``9350cf6`` `_ * Added missing fortune app `\ ``f02824b`` `_ +* Added fortune to Dockerfile-dev `\ ``682e138`` `_ +* added /usr/games to path `\ ``026a64c`` `_ +* Force fortune path during setup test `\ ``12a3113`` `_ + `v3.2.2 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -224,19 +727,22 @@ Generated by `\ ``auto-changelog`` ` * Bump werkzeug from 2.3.7 to 3.0.1 `\ ``#136`` `_ * Update INSTALL with new conf files `\ ``#135`` `_ * Bump urllib3 from 2.0.6 to 2.0.7 `\ ``#134`` `_ -* Updated requirements `\ ``4b1214d`` `_ -* Reworked the admin graphs `\ ``763c9ab`` `_ * Test new packet serialization `\ ``fe1ebf2`` `_ -* pep8 fixes `\ ``6b397cb`` `_ -* Update for v3.2.2 release `\ ``c0e2ef1`` `_ -* Fix for types `\ ``809a41f`` `_ +* Reworked the admin graphs `\ ``763c9ab`` `_ +* Updated requirements `\ ``4b1214d`` `_ +* removed invalid reference to config.py `\ ``fae7032`` `_ * Fixed datetime access in core.py `\ ``b9dd21b`` `_ * remove python 3.12 from github builds `\ ``638128a`` `_ +* pep8 fixes `\ ``6b397cb`` `_ * Fix wsgi for prod `\ ``b0bfdaa`` `_ -* removed invalid reference to config.py `\ ``fae7032`` `_ +* Fix for types `\ ``809a41f`` `_ +* Update for v3.2.2 release `\ ``c0e2ef1`` `_ + `v3.2.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -246,27 +752,30 @@ Generated by `\ ``auto-changelog`` ` * Bump urllib3 from 2.0.4 to 2.0.6 `\ ``#133`` `_ * Fix for dupe packets. `\ ``#132`` `_ +* Log a warning on dupe `\ ``0d7e50d`` `_ * rewrote packet_list and drop dupe packets `\ ``4f87d5d`` `_ -* Add ability to change path on every TX packet `\ ``ddd4d25`` `_ -* Make Packet objects hashable `\ ``544600a`` `_ -* Don't process AckPackets as dupes `\ ``59cec13`` `_ -* Changelog for 3.2.1 `\ ``acf2b62`` `_ +* pep8 fixes `\ ``99a0f87`` `_ +* Fixed import of Mutablemapping `\ ``f79b88e`` `_ * Fixed issue with packet tracker and msgNO Counter `\ ``9bdfd16`` `_ +* Fixed another msgNo int issue `\ ``751bbc2`` `_ +* Don't process AckPackets as dupes `\ ``59cec13`` `_ +* Make Packet objects hashable `\ ``544600a`` `_ +* Add ability to change path on every TX packet `\ ``ddd4d25`` `_ * Added packet_dupe_timeout conf `\ ``f41488b`` `_ * Fix path for KISS clients `\ ``746eeb8`` `_ -* Update the webchat paths `\ ``5ae45ce`` `_ -* Fixed another msgNo int issue `\ ``751bbc2`` `_ -* pep8 fixes `\ ``99a0f87`` `_ -* Changed the path option to a ListOpt `\ ``0155923`` `_ -* Fixed import of Mutablemapping `\ ``f79b88e`` `_ -* Update index.html disable form autocomplete `\ ``8e9a021`` `_ -* Update the packet_dupe_timeout warning `\ ``bf905a0`` `_ -* Fixed default path for tcp_kiss client. `\ ``156d9d9`` `_ -* Log a warning on dupe `\ ``0d7e50d`` `_ * Set a default password for admin `\ ``8116960`` `_ +* Fixed default path for tcp_kiss client. `\ ``156d9d9`` `_ +* Changed the path option to a ListOpt `\ ``0155923`` `_ +* Update the webchat paths `\ ``5ae45ce`` `_ +* Update the packet_dupe_timeout warning `\ ``bf905a0`` `_ +* Update index.html disable form autocomplete `\ ``8e9a021`` `_ +* Changelog for 3.2.1 `\ ``acf2b62`` `_ + `v3.2.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -276,52 +785,55 @@ Generated by `\ ``auto-changelog`` ` * Bump gevent from 23.9.0.post1 to 23.9.1 `\ ``#131`` `_ * Webchat saved bootstrapjs `\ ``#130`` `_ -* Convert webchat internet urls to local static urls `\ ``1d6a667`` `_ -* WebChat: Send GPS Beacon working `\ ``81a19dd`` `_ -* Deleted webchat mobile pages `\ ``70ddc44`` `_ -* Removed admin_web.py `\ ``a9e8050`` `_ -* Reworked webchat with new UI `\ ``14e984c`` `_ -* Restore previous conversations in webchat `\ ``7292744`` `_ -* WebChat: fixed content area scrolling `\ ``7130ca2`` `_ -* Webchat: Added tab notifications and raw packet `\ ``9635893`` `_ -* Webchat: tweaks to UI for expanding chat `\ ``b393060`` `_ -* Added close X on webchat tabs `\ ``8527602`` `_ -* Update index.html to use chat.css `\ ``ba6b410`` `_ -* Updated the webchat UI to look like iMessage `\ ``29f21a9`` `_ -* Updated documentation build `\ ``10bf049`` `_ -* Added new webchat config section `\ ``f922b3f`` `_ -* WebChat: Prevent sending message without callsign `\ ``f151ae4`` `_ -* WebChat: flash a dupe message `\ ``12dfdef`` `_ -* Make use of webchat gps config options `\ ``2e9a204`` `_ -* Webchat suppress to display of dupe messages `\ ``a8dd9ce`` `_ -* Update Changelog for 3.2.0 `\ ``7408894`` `_ -* Added dupe checkig code to webchat mobile `\ ``2416f0e`` `_ -* Webchat: Fix chat css on older browsers `\ ``6b083d4`` `_ -* webchat: got active tab onclick working `\ ``1400e3e`` `_ -* Webchat: Fix pep8 errors `\ ``3f5dbe0`` `_ -* Webchat: Fixed bug deleteing first tab `\ ``f770c5f`` `_ -* Start keepalive thread first `\ ``859f904`` `_ -* WebChat: cleanup some console.logs `\ ``82d2591`` `_ -* Removed some RPC server log noise `\ ``82f77b7`` `_ -* webchat: set to_call to value of tab when selected `\ ``8a90d54`` `_ -* minor cleanup prior to release `\ ``c9dc4f6`` `_ -* Fixed admin page packet date `\ ``570fdb9`` `_ -* Center the webchat input form `\ ``b4e02c7`` `_ -* Ensure Keepalive doesn't reset client at startup `\ ``ef206b1`` `_ -* updated github workflows `\ ``4b56e99`` `_ -* Webchat: Fix issue accessing msg.id `\ ``d63c685`` `_ -* Ensure parse_delta_str doesn't puke `\ ``140fa4a`` `_ -* RPC Server logs the client IP on failed auth `\ ``9582812`` `_ -* Webchat: fix input maxlength `\ ``788a72c`` `_ -* WebChat: new tab should get focus `\ ``ff35898`` `_ -* Remove VIM from Dockerfile `\ ``619b1b7`` `_ -* recreate client during reset() `\ ``008b2ab`` `_ * fixed webchat logging.logformat typeoh `\ ``8dd3b05`` `_ -* fixed an issue in the mobile webchat `\ ``34311f0`` `_ +* Added new webchat config section `\ ``f922b3f`` `_ +* Make use of webchat gps config options `\ ``2e9a204`` `_ +* Convert webchat internet urls to local static urls `\ ``1d6a667`` `_ +* Webchat suppress to display of dupe messages `\ ``a8dd9ce`` `_ * click on the div after added. `\ ``377842c`` `_ +* Added dupe checkig code to webchat mobile `\ ``2416f0e`` `_ +* fixed an issue in the mobile webchat `\ ``34311f0`` `_ +* Start keepalive thread first `\ ``859f904`` `_ +* RPC Server logs the client IP on failed auth `\ ``9582812`` `_ +* Fixed admin page packet date `\ ``570fdb9`` `_ +* Removed some RPC server log noise `\ ``82f77b7`` `_ +* Removed admin_web.py `\ ``a9e8050`` `_ +* Updated documentation build `\ ``10bf049`` `_ +* updated github workflows `\ ``4b56e99`` `_ +* recreate client during reset() `\ ``008b2ab`` `_ +* Remove VIM from Dockerfile `\ ``619b1b7`` `_ +* Restore previous conversations in webchat `\ ``7292744`` `_ +* Updated the webchat UI to look like iMessage `\ ``29f21a9`` `_ +* Reworked webchat with new UI `\ ``14e984c`` `_ +* Added close X on webchat tabs `\ ``8527602`` `_ +* Deleted webchat mobile pages `\ ``70ddc44`` `_ +* Update index.html to use chat.css `\ ``ba6b410`` `_ +* Center the webchat input form `\ ``b4e02c7`` `_ +* webchat: set to_call to value of tab when selected `\ ``8a90d54`` `_ +* webchat: got active tab onclick working `\ ``1400e3e`` `_ +* WebChat: Send GPS Beacon working `\ ``81a19dd`` `_ +* Ensure parse_delta_str doesn't puke `\ ``140fa4a`` `_ +* Ensure Keepalive doesn't reset client at startup `\ ``ef206b1`` `_ +* Webchat: Fixed bug deleteing first tab `\ ``f770c5f`` `_ +* Webchat: tweaks to UI for expanding chat `\ ``b393060`` `_ +* WebChat: fixed content area scrolling `\ ``7130ca2`` `_ +* WebChat: Prevent sending message without callsign `\ ``f151ae4`` `_ +* Webchat: Added tab notifications and raw packet `\ ``9635893`` `_ +* Webchat: Fix pep8 errors `\ ``3f5dbe0`` `_ +* WebChat: new tab should get focus `\ ``ff35898`` `_ +* Webchat: Fix chat css on older browsers `\ ``6b083d4`` `_ +* Webchat: Fix issue accessing msg.id `\ ``d63c685`` `_ +* WebChat: flash a dupe message `\ ``12dfdef`` `_ +* WebChat: cleanup some console.logs `\ ``82d2591`` `_ +* Webchat: fix input maxlength `\ ``788a72c`` `_ +* minor cleanup prior to release `\ ``c9dc4f6`` `_ +* Update Changelog for 3.2.0 `\ ``7408894`` `_ + `v3.1.3 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -329,11 +841,14 @@ Generated by `\ ``auto-changelog`` ` -* prep for 3.1.3 `\ ``e06305f`` `_ * Forcefully allow development webchat flask `\ ``33c7871`` `_ +* prep for 3.1.3 `\ ``e06305f`` `_ + `v3.1.2 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -342,11 +857,15 @@ Generated by `\ ``auto-changelog`` ` * Removed adhoc ssl support in webchat `\ ``182887c`` `_ +* Disable the Send GPS Beacon button `\ ``65a5a90`` `_ * Added support for ThirdParty packet types `\ ``ae9e4d3`` `_ * Updated Changelog for 3.1.2 `\ ``b2f95b0`` `_ + `v3.1.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -357,14 +876,17 @@ Generated by `\ ``auto-changelog`` ` * Fix sending packets over KISS interface `\ ``#128`` `_ * Update the Dockerfile `\ ``#125`` `_ * Max out the client reconnect backoff to 5 `\ ``26f354b`` `_ -* re-enable USWeatherPlugin to use mapClick `\ ``986df39`` `_ -* Updated Changelog for v3.1.1 `\ ``f228144`` `_ -* Use config web_ip for running admin ui from module `\ ``011cfc5`` `_ -* Fixed pep8 failures `\ ``db9e1d2`` `_ * remove loop log `\ ``e0c3c5c`` `_ +* Use config web_ip for running admin ui from module `\ ``011cfc5`` `_ +* re-enable USWeatherPlugin to use mapClick `\ ``986df39`` `_ +* Fixed pep8 failures `\ ``db9e1d2`` `_ +* Updated Changelog for v3.1.1 `\ ``f228144`` `_ + `v3.1.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -377,56 +899,59 @@ Generated by `\ ``auto-changelog`` ` * Update requirements for upgraded cryptography `\ ``#122`` `_ * Fixed rain numbers from aprslib `\ ``#119`` `_ * Example plugin wrong function `\ ``#116`` `_ -* Removed flask-classful from webchat `\ ``6a6e854`` `_ -* Update location plugin and reworked requirements `\ ``26c1e7a`` `_ -* Added the fetch-stats command `\ ``b2e621d`` `_ -* Replace ratelimiter with rush `\ ``fe0d71d`` `_ -* Replace Dockerfile-dev with python3 slim `\ ``ccd564a`` `_ -* Moved logging to log for wsgi.py `\ ``35d4158`` `_ -* Changelog updates for v3.1.0 `\ ``dfd3688`` `_ -* Populate stats object with threads info `\ ``191e1ff`` `_ -* Added manual master build `\ ``311ceba`` `_ -* Fixed unit tests for Location plugin `\ ``80b85e6`` `_ -* Fix in for aprslib issue #80 `\ ``63bf82a`` `_ -* Change how fetch-stats gets it's defaults `\ ``5383b69`` `_ -* update manual build github `\ ``fa6e738`` `_ -* Fixed rpc client initialization `\ ``7f2aba7`` `_ -* Add .readthedocs.yaml `\ ``43d6b62`` `_ -* Added timing after each thread loop `\ ``d3a93b7`` `_ -* force tox to 4.3.5 `\ ``da20ff0`` `_ -* Update master-build.yml `\ ``f4d6035`` `_ -* Add github manual trigger for master build `\ ``09a0c4c`` `_ -* Add info logging for rpc server calls `\ ``6ae55fc`` `_ -* Try and fix Dockerfile-dev `\ ``bba7b68`` `_ -* added counts to the fetch-stats table `\ ``0a14b07`` `_ -* Update Dockerfile-dev to fix plugin permissions `\ ``d8318f2`` `_ -* Limit the float values to 3 decimal places `\ ``0bd11d0`` `_ -* Ensure fetch-stats ip is a string `\ ``cbef93b`` `_ -* USe new tox and update githubworkflows `\ ``9931c8a`` `_ -* Added rpc server for listen `\ ``8b73372`` `_ -* Fixed .readthedocs.yaml format `\ ``cad22e1`` `_ * Update Dockerfile to help build cryptography `\ ``00f1c3a`` `_ -* Update Dockerfile-dev to include uwsgi `\ ``1ab9c3f`` `_ -* Fixed pep8 `\ ``4664ead`` `_ -* Changed weather plugin regex pattern `\ ``565ffe3`` `_ +* Ensure conf is imported for threads/tx `\ ``4e99e30`` `_ +* Add .readthedocs.yaml `\ ``43d6b62`` `_ +* Fixed .readthedocs.yaml format `\ ``cad22e1`` `_ +* Update location plugin and reworked requirements `\ ``26c1e7a`` `_ +* Added rpc server for listen `\ ``8b73372`` `_ +* Fixed pep8 violation `\ ``5bc589f`` `_ * Update github workflows `\ ``15bf371`` `_ -* Fixed sio namespace registration `\ ``099b87e`` `_ -* Fixed pep8 errors `\ ``005675c`` `_ +* force tox to 4.3.5 `\ ``da20ff0`` `_ * Updated requirements `\ ``319969c`` `_ -* Update docker bin/admin.sh `\ ``fa452cc`` `_ -* Added more libs for Dockerfile-dev `\ ``ad00463`` `_ -* Use CONF.admin.web_port for single launch web admin `\ ``c7d629f`` `_ -* change port to 8000 `\ ``e51a501`` `_ -* updated wsgi config default /config/aprsd.conf `\ ``588e140`` `_ -* removed linux/arm/v8 `\ ``5723e3a`` `_ -* Update master build to include linux/arm/v8 `\ ``dee73c1`` `_ +* USe new tox and update githubworkflows `\ ``9931c8a`` `_ +* Fixed unit tests for Location plugin `\ ``80b85e6`` `_ +* Add github manual trigger for master build `\ ``09a0c4c`` `_ +* Update master-build.yml `\ ``f4d6035`` `_ +* Added manual master build `\ ``311ceba`` `_ * add arm64 for manual github build `\ ``b172c69`` `_ * Added some utilities to Dockerfile-dev `\ ``9b94414`` `_ -* Fixed pep8 violation `\ ``5bc589f`` `_ -* Ensure conf is imported for threads/tx `\ ``4e99e30`` `_ +* Replace ratelimiter with rush `\ ``fe0d71d`` `_ +* Added the fetch-stats command `\ ``b2e621d`` `_ +* added counts to the fetch-stats table `\ ``0a14b07`` `_ +* Populate stats object with threads info `\ ``191e1ff`` `_ +* Fixed pep8 errors `\ ``005675c`` `_ +* Try and fix Dockerfile-dev `\ ``bba7b68`` `_ +* Fix in for aprslib issue #80 `\ ``63bf82a`` `_ +* Fixed rpc client initialization `\ ``7f2aba7`` `_ +* Limit the float values to 3 decimal places `\ ``0bd11d0`` `_ +* Changed weather plugin regex pattern `\ ``565ffe3`` `_ +* Moved logging to log for wsgi.py `\ ``35d4158`` `_ +* Replace Dockerfile-dev with python3 slim `\ ``ccd564a`` `_ +* Added more libs for Dockerfile-dev `\ ``ad00463`` `_ +* update manual build github `\ ``fa6e738`` `_ +* Update Dockerfile-dev to fix plugin permissions `\ ``d8318f2`` `_ +* Update master build to include linux/arm/v8 `\ ``dee73c1`` `_ +* Removed flask-classful from webchat `\ ``6a6e854`` `_ +* Update docker bin/admin.sh `\ ``fa452cc`` `_ +* removed linux/arm/v8 `\ ``5723e3a`` `_ +* Added timing after each thread loop `\ ``d3a93b7`` `_ +* updated wsgi config default /config/aprsd.conf `\ ``588e140`` `_ +* Add info logging for rpc server calls `\ ``6ae55fc`` `_ +* Ensure fetch-stats ip is a string `\ ``cbef93b`` `_ +* Change how fetch-stats gets it's defaults `\ ``5383b69`` `_ +* change port to 8000 `\ ``e51a501`` `_ +* Fixed pep8 `\ ``4664ead`` `_ +* Update Dockerfile-dev to include uwsgi `\ ``1ab9c3f`` `_ +* Fixed sio namespace registration `\ ``099b87e`` `_ +* Use CONF.admin.web_port for single launch web admin `\ ``c7d629f`` `_ +* Changelog updates for v3.1.0 `\ ``dfd3688`` `_ + `v3.0.3 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -435,18 +960,21 @@ Generated by `\ ``auto-changelog`` ` * Add ratelimiting for acks and other packets `\ ``#111`` `_ +* Update Dockerfile `\ ``8a456ca`` `_ * Update Listen command `\ ``483afce`` `_ * Added listen.sh for docker `\ ``c353877`` `_ * Change listen command plugins `\ ``0ec41f7`` `_ -* Fixed loading of plugins for server `\ ``e21e2a7`` `_ -* Update Changelog to 3.0.3 `\ ``0527ddf`` `_ -* Update Dockerfile `\ ``8a456ca`` `_ -* Don't load help plugin for listen command `\ ``17d9c06`` `_ -* cleanup some debug messages `\ ``5694cab`` `_ * Added listen args. `\ ``66ebb28`` `_ +* Don't load help plugin for listen command `\ ``17d9c06`` `_ +* Fixed loading of plugins for server `\ ``e21e2a7`` `_ +* cleanup some debug messages `\ ``5694cab`` `_ +* Update Changelog to 3.0.3 `\ ``0527ddf`` `_ + `v3.0.2 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -454,11 +982,14 @@ Generated by `\ ``auto-changelog`` ` -* Update Changelog for 3.0.2 `\ ``357a193`` `_ * Import RejectPacket `\ ``4aa4a4b`` `_ +* Update Changelog for 3.0.2 `\ ``357a193`` `_ + `v3.0.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -467,11 +998,14 @@ Generated by `\ ``auto-changelog`` ` * Add support for Reject messages. `\ ``#109`` `_ -* Add support to Reject messages. `\ ``c68b270`` `_ * Update Docker builds for 3.0.0 `\ ``3872590`` `_ +* Add support to Reject messages. `\ ``c68b270`` `_ + `v3.0.0 `_ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -481,54 +1015,57 @@ Generated by `\ ``auto-changelog`` ` * Convert config to oslo_config `\ ``#107`` `_ * Dataclasses `\ ``#106`` `_ -* Reworked all packet processing `\ ``94fb481`` `_ -* Update documentation and README `\ ``c929689`` `_ -* Removed references to old custom config `\ ``7ccfc25`` `_ -* Decouple admin web interface from server command `\ ``ff39239`` `_ -* Added missing conf `\ ``f4a6dfc`` `_ -* Added new docs files for 3.0.0 `\ ``29b8764`` `_ -* Cleaned out all references to messaging `\ ``bfc0a5a`` `_ * Started using dataclasses to describe packets `\ ``082db73`` `_ -* Updated Healthcheck to use rpc to call aprsd `\ ``c5acdba`` `_ -* reworked collecting and reporting stats `\ ``e37f99a`` `_ -* Removed Packet.send() `\ ``4a65f52`` `_ * Updated plugins and plugin interfaces for Packet `\ ``67a441d`` `_ -* More messaging -> packets cleanup `\ ``6030cb3`` `_ -* Make tracking objectstores work w/o initializing `\ ``1187f1e`` `_ -* Cleaned up PluginManager `\ ``220fb58`` `_ -* Added ObjectPacket `\ ``ed284a4`` `_ -* Cleaned up packet transmit class attributes `\ ``c201c93`` `_ -* Removed watchlist plugins `\ ``f464ff0`` `_ -* Ensure server command main thread doesn't exit `\ ``c5aba17`` `_ -* Fix some unit tests and loading of CONF w/o file `\ ``e9a954a`` `_ -* Updated webchat and listen for queue based RX `\ ``ad0d89d`` `_ -* Change RX packet processing to enqueu `\ ``123b3ff`` `_ -* Added WeatherPacket encoding `\ ``899a6e5`` `_ -* Cleaned up KISS interfaces use of old config `\ ``0758a58`` `_ -* Update regex processing and regex for plugins `\ ``3d0bb8a`` `_ -* Added contructing a GPSPacket for sending `\ ``59e5af8`` `_ -* Add packet filtering for aprsd listen `\ ``d01392f`` `_ -* Change ordering of starting up of server command `\ ``83d2e70`` `_ -* Added rain formatting unit tests to WeatherPacket `\ ``ce3b29f`` `_ -* Removed unused threading code `\ ``9fc5356`` `_ -* Fix PluginManager.get_plugins `\ ``2ca3636`` `_ +* Reworked all packet processing `\ ``94fb481`` `_ * cleanup webchat `\ ``1b49f12`` `_ -* Update Changelog for 3.0.0 `\ ``4a10511`` `_ -* reworked usage of importlib.metadata `\ ``a5520b2`` `_ -* Dockerfile now produces aprsd.conf `\ ``02e4f78`` `_ -* Fix Rain reporting in WeatherPacket send. `\ ``bbcd7c8`` `_ -* Fix some WeatherPacket formatting `\ ``f19043e`` `_ +* Added contructing a GPSPacket for sending `\ ``59e5af8`` `_ +* Cleaned out all references to messaging `\ ``bfc0a5a`` `_ +* More messaging -> packets cleanup `\ ``6030cb3`` `_ * Fix packets timestamp to int `\ ``f1de7bc`` `_ -* Fixed save directory default `\ ``233d49b`` `_ -* Fixed pep8 failure `\ ``6391c7e`` `_ -* Removed url option from healthcheck in dev `\ ``fe2f7b5`` `_ -* Updated docker/bin/run.sh to use new conf `\ ``79e7ed1`` `_ -* Update routing for weatherpacket `\ ``088cbb8`` `_ +* Cleaned up packet transmit class attributes `\ ``c201c93`` `_ +* Make tracking objectstores work w/o initializing `\ ``1187f1e`` `_ +* Change RX packet processing to enqueu `\ ``123b3ff`` `_ +* Removed unused threading code `\ ``9fc5356`` `_ +* reworked collecting and reporting stats `\ ``e37f99a`` `_ +* Updated webchat and listen for queue based RX `\ ``ad0d89d`` `_ +* Added WeatherPacket encoding `\ ``899a6e5`` `_ +* Add packet filtering for aprsd listen `\ ``d01392f`` `_ * Fix pep8 violation `\ ``a1188d2`` `_ +* Fix some WeatherPacket formatting `\ ``f19043e`` `_ +* Update routing for weatherpacket `\ ``088cbb8`` `_ * Cleaned up PluginManager `\ ``7dfa4e6`` `_ +* Cleaned up PluginManager `\ ``220fb58`` `_ +* Fix PluginManager.get_plugins `\ ``2ca3636`` `_ +* Removed watchlist plugins `\ ``f464ff0`` `_ +* Removed Packet.send() `\ ``4a65f52`` `_ +* Fix Rain reporting in WeatherPacket send. `\ ``bbcd7c8`` `_ +* Added rain formatting unit tests to WeatherPacket `\ ``ce3b29f`` `_ +* Removed references to old custom config `\ ``7ccfc25`` `_ +* Added missing conf `\ ``f4a6dfc`` `_ +* Fix some unit tests and loading of CONF w/o file `\ ``e9a954a`` `_ +* Dockerfile now produces aprsd.conf `\ ``02e4f78`` `_ +* Decouple admin web interface from server command `\ ``ff39239`` `_ +* Update documentation and README `\ ``c929689`` `_ +* Change ordering of starting up of server command `\ ``83d2e70`` `_ +* Update regex processing and regex for plugins `\ ``3d0bb8a`` `_ +* Added ObjectPacket `\ ``ed284a4`` `_ +* Updated docker/bin/run.sh to use new conf `\ ``79e7ed1`` `_ +* Updated Healthcheck to use rpc to call aprsd `\ ``c5acdba`` `_ +* Removed url option from healthcheck in dev `\ ``fe2f7b5`` `_ +* Added new docs files for 3.0.0 `\ ``29b8764`` `_ +* reworked usage of importlib.metadata `\ ``a5520b2`` `_ +* Cleaned up KISS interfaces use of old config `\ ``0758a58`` `_ +* Fixed pep8 failure `\ ``6391c7e`` `_ +* Fixed save directory default `\ ``233d49b`` `_ +* Ensure server command main thread doesn't exit `\ ``c5aba17`` `_ +* Update Changelog for 3.0.0 `\ ``4a10511`` `_ + `v2.6.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -537,15 +1074,18 @@ Generated by `\ ``auto-changelog`` ` * Collections fix `\ ``#105`` `_ +* Update workflow `\ ``40f23dc`` `_ +* Fix for Collections change in 3.10 `\ ``9d19502`` `_ +* remove armv7 build RUST sucks `\ ``321c5a2`` `_ * Add unit tests for webchat `\ ``19e5cfa`` `_ * Try and fix broken 32bit qemu builds on 64bit system `\ ``87cbcaa`` `_ * Fixed position report for webchat beacon `\ ``9571b0b`` `_ -* Fix for Collections change in 3.10 `\ ``9d19502`` `_ -* remove armv7 build RUST sucks `\ ``321c5a2`` `_ -* Update workflow `\ ``40f23dc`` `_ + `v2.6.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -566,59 +1106,70 @@ Generated by `\ ``auto-changelog`` ` * Fix typo on exception `\ ``#94`` `_ * Fix plugins not installing via docker-compose `\ ``#97`` `_ * Merge pull request #96 from ranguli/fix-pypi-scraping `\ ``#92`` `_ -* Added webchat command `\ ``585d55f`` `_ -* Updated requirements `\ ``075078b`` `_ -* Refactored threads a bit `\ ``51b80cd`` `_ -* Refactored threads.py `\ ``347a6d6`` `_ -* Got webchat working with KISS tcp `\ ``7d970cb`` `_ -* Add GPS beacon to mobile page `\ ``ee96108`` `_ -* Use new aprsd.callsign as the main callsign `\ ``ad79ed1`` `_ -* Fixed up config option checking for KISS `\ ``1c052a6`` `_ -* Prep for 2.6.0 release `\ ``5891c71`` `_ -* Refactor utils to directory `\ ``bed060f`` `_ -* Removed TimeOpenCageDataPlugin `\ ``528bdb9`` `_ +* for 2.5.9 `\ ``03a20eb`` `_ * Fix logging issue with log messages `\ ``e739441`` `_ +* Fixed up config option checking for KISS `\ ``1c052a6`` `_ +* Refactor utils to directory `\ ``bed060f`` `_ +* Refactored threads.py `\ ``347a6d6`` `_ +* Fixed pep8 errors `\ ``29b84b4`` `_ +* Moved trace.py to utils `\ ``a628439`` `_ +* Moved log.py to logging `\ ``1ccb2f7`` `_ +* Added webchat command `\ ``585d55f`` `_ +* Fixed access to threads refactor `\ ``5f28788`` `_ +* Use new aprsd.callsign as the main callsign `\ ``ad79ed1`` `_ +* Try sending raw APRSFrames to aioax25 `\ ``2ce50d8`` `_ +* Allow web interface when running in Docker `\ ``b1db08a`` `_ +* Merge pull request #95 from ranguli/patch-1 `\ ``74e4e2c`` `_ +* Fix PyPI scraping `\ ``9ffd320`` `_ +* Fix typo in docker-compose.yml `\ ``389304c`` `_ +* Update dev-requirements pip-tools `\ ``7db2242`` `_ +* Added container build action `\ ``b50f343`` `_ +* create master-build.yml `\ ``1383352`` `_ +* Remove docker build from test `\ ``f9d3bc4`` `_ +* Only tag master build as master `\ ``9671dac`` `_ +* remove linux/arm/v6 from docker platform build `\ ``358aa59`` `_ +* Added rustc and cargo to Dockerfile `\ ``3580425`` `_ +* remove arm build for now `\ ``ab65836`` `_ +* Add remving existing requirements `\ ``e5f60b5`` `_ * Update packets to use wrapt `\ ``967959e`` `_ * Update aprsd thread base class to use queue `\ ``9b0c626`` `_ -* create master-build.yml `\ ``1383352`` `_ -* added workflow for building specific version `\ ``d40927d`` `_ -* Update Dockerfile and build.sh `\ ``c1db238`` `_ -* Moved trace.py to utils `\ ``a628439`` `_ -* Try sending raw APRSFrames to aioax25 `\ ``2ce50d8`` `_ -* Moved log.py to logging `\ ``1ccb2f7`` `_ -* Fixed build.sh `\ ``d1a0a98`` `_ -* Update requirements `\ ``68472b0`` `_ -* Build on the source not released aprsd `\ ``d9b3973`` `_ -* Fixed pep8 errors `\ ``29b84b4`` `_ -* Remove docker build from test `\ ``f9d3bc4`` `_ -* Added container build action `\ ``b50f343`` `_ -* Update to latest Makefile.venv `\ ``e4f93a2`` `_ -* specify Dockerfile-dev `\ ``4111d16`` `_ -* Dump config with aprsd dev test-plugin `\ ``fc1ca52`` `_ -* Update dev-requirements pip-tools `\ ``7db2242`` `_ -* Add remving existing requirements `\ ``e5f60b5`` `_ -* Fixed failing unit tests `\ ``5acddbd`` `_ -* for 2.5.9 `\ ``03a20eb`` `_ -* Update Makefile for dev vs. run environments `\ ``576301c`` `_ -* Added pyopenssl for https for webchat `\ ``6d34d9c`` `_ -* Mark packets as acked in MsgTracker `\ ``480094b`` `_ -* Allow passing in version to the Dockerfile `\ ``d5e56b5`` `_ -* Fix PyPI scraping `\ ``9ffd320`` `_ -* remove dev setting for template `\ ``726c8f4`` `_ -* Fixed access to threads refactor `\ ``5f28788`` `_ -* Update Dockerfile to 22.04 `\ ``4fe99c3`` `_ -* Ignore callsign case while processing packets `\ ``44696fb`` `_ -* remove linux/arm/v7 for official builds for now `\ ``5add0f9`` `_ -* Add support for building linux/arm/v7 `\ ``117f81f`` `_ -* Remove python 3.7 from docker build github `\ ``b41e4a9`` `_ -* change github workflow `\ ``17e7846`` `_ * Added click auto_envvar_prefix `\ ``d717a22`` `_ -* remove arm build for now `\ ``ab65836`` `_ -* Added rustc and cargo to Dockerfile `\ ``3580425`` `_ -* remove linux/arm/v6 from docker platform build `\ ``358aa59`` `_ +* Got webchat working with KISS tcp `\ ``7d970cb`` `_ +* Updated requirements `\ ``075078b`` `_ +* Dump config with aprsd dev test-plugin `\ ``fc1ca52`` `_ +* Removed TimeOpenCageDataPlugin `\ ``528bdb9`` `_ +* change github workflow `\ ``17e7846`` `_ +* Fixed failing unit tests `\ ``5acddbd`` `_ +* Remove python 3.7 from docker build github `\ ``b41e4a9`` `_ +* Add support for building linux/arm/v7 `\ ``117f81f`` `_ +* Build on the source not released aprsd `\ ``d9b3973`` `_ +* Fixed build.sh `\ ``d1a0a98`` `_ +* specify Dockerfile-dev `\ ``4111d16`` `_ +* Allow passing in version to the Dockerfile `\ ``d5e56b5`` `_ +* added workflow for building specific version `\ ``d40927d`` `_ +* remove linux/arm/v7 for official builds for now `\ ``5add0f9`` `_ +* Ignore callsign case while processing packets `\ ``44696fb`` `_ +* Allow werkzeug for admin interface. `\ ``5067f74`` `_ +* Allow werkzeug for admin interface. `\ ``98fe9da`` `_ +* Add GPS beacon to mobile page `\ ``ee96108`` `_ +* remove dev setting for template `\ ``726c8f4`` `_ +* Mark packets as acked in MsgTracker `\ ``480094b`` `_ +* Refactored threads a bit `\ ``51b80cd`` `_ +* Update to latest Makefile.venv `\ ``e4f93a2`` `_ +* Added pyopenssl for https for webchat `\ ``6d34d9c`` `_ +* Update Makefile for dev vs. run environments `\ ``576301c`` `_ +* Removed Makefile comment. `\ ``935f820`` `_ +* Update requirements `\ ``68472b0`` `_ +* Prep for 2.6.0 release `\ ``5891c71`` `_ +* Update Dockerfile and build.sh `\ ``c1db238`` `_ +* Update Dockerfile to 22.04 `\ ``4fe99c3`` `_ +* Update workflow again `\ ``a6015ad`` `_ + `v2.5.9 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -626,12 +1177,15 @@ Generated by `\ ``auto-changelog`` ` -* FIX: logging exceptions `\ ``6257c9e`` `_ -* Updated build and run for rich lib `\ ``b00c8db`` `_ * update build for 2.5.8 `\ ``79270f9`` `_ +* Updated build and run for rich lib `\ ``b00c8db`` `_ +* FIX: logging exceptions `\ ``6257c9e`` `_ + `v2.5.8 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -639,12 +1193,18 @@ Generated by `\ ``auto-changelog`` ` -* Updated list-plugins `\ ``764730c`` `_ * Send Message command defaults to config `\ ``a7bbde4`` `_ * Added unit tests for dev test-plugin `\ ``2f6e7e1`` `_ +* Renamed virtualenv dir to .aprsd-venv `\ ``610e40a`` `_ +* Updated list-plugins `\ ``764730c`` `_ +* Removed debug code `\ ``e8100d8`` `_ +* For 2.5.8 `\ ``29a60b7`` `_ + `v2.5.7 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -660,8 +1220,11 @@ Generated by `\ ``auto-changelog`` ` * Fixed a bug with multiple notify plugins enabled `\ ``e57a2e2`` `_ * Updated Changelog `\ ``7530bcf`` `_ + `v2.5.6 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -672,22 +1235,25 @@ Generated by `\ ``auto-changelog`` ` * Unittests `\ ``#75`` `_ * Rich logging `\ ``#74`` `_ * Added LOG_LEVEL env variable for the docker `\ ``#73`` `_ -* Added NotifyPlugin unit tests and more `\ ``0ad791b`` `_ * Added python rich library based logging. `\ ``1d5f76d`` `_ -* Added unit tests for USWeatherPlugin, USMetarPlugin `\ ``8ea00e9`` `_ -* Added test_location to test LocationPlugin `\ ``5d6ac5c`` `_ -* Fixed some pep8 errors `\ ``b5b286e`` `_ -* Small cleanup on packet logging `\ ``96cc07d`` `_ -* Changelog `\ ``b7791eb`` `_ -* Updated pytest output `\ ``e0e7514`` `_ -* Tightened up the packet logging `\ ``440c8d5`` `_ -* Fixed the NotifyPlugin `\ ``055835c`` `_ -* Added py39 to tox for tests `\ ``a5184fb`` `_ * Add tracing for dev command `\ ``1233137`` `_ +* Fixed some pep8 errors `\ ``b5b286e`` `_ +* Fixed the NotifyPlugin `\ ``055835c`` `_ * Reduced the APRSIS connection reset to 2 minutes `\ ``d3dd087`` `_ +* Small cleanup on packet logging `\ ``96cc07d`` `_ +* Added NotifyPlugin unit tests and more `\ ``0ad791b`` `_ +* Added py39 to tox for tests `\ ``a5184fb`` `_ +* Updated pytest output `\ ``e0e7514`` `_ +* Added test_location to test LocationPlugin `\ ``5d6ac5c`` `_ +* Added unit tests for USWeatherPlugin, USMetarPlugin `\ ``8ea00e9`` `_ +* Tightened up the packet logging `\ ``440c8d5`` `_ +* Changelog `\ ``b7791eb`` `_ + `v2.5.5 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -695,12 +1261,15 @@ Generated by `\ ``auto-changelog`` ` -* Update requirements to use aprslib 0.7.0 `\ ``e27887d`` `_ -* fixed the failure during loading for objectstore `\ ``5e50792`` `_ * updated docker build `\ ``deec249`` `_ +* fixed the failure during loading for objectstore `\ ``5e50792`` `_ +* Update requirements to use aprslib 0.7.0 `\ ``e27887d`` `_ + `v2.5.4 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -711,8 +1280,11 @@ Generated by `\ ``auto-changelog`` ` * Fixed dev command missing initialization `\ ``6fb6105`` `_ * Updated Changelog `\ ``ade3c49`` `_ + `v2.5.3 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -722,8 +1294,11 @@ Generated by `\ ``auto-changelog`` ` * Fix admin logging tab `\ ``bda2ef0`` `_ + `v2.5.2 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -731,12 +1306,18 @@ Generated by `\ ``auto-changelog`` ` -* Added new list-plugins command `\ ``446484e`` `_ +* Updated Changelog `\ ``10e34d8`` `_ * Removed requirement for aprs.fi key `\ ``7787dc1`` `_ +* Fix test failures `\ ``152132b`` `_ * Healthcheck command doesn't need the aprsd.yml config `\ ``8842fb1`` `_ +* Don't require check-version command to have a config `\ ``a8a6b1a`` `_ +* Added new list-plugins command `\ ``446484e`` `_ + `v2.5.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -747,8 +1328,11 @@ Generated by `\ ``auto-changelog`` ` * Removed the stock plugin `\ ``#72`` `_ * Removed stock plugin. `\ ``9469410`` `_ + `v2.5.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -757,22 +1341,25 @@ Generated by `\ ``auto-changelog`` ` * Refactor cli `\ ``#71`` `_ -* Refactor the cli `\ ``7d0006b`` `_ -* Added healthcheck to the cmds `\ ``82def59`` `_ -* Reworked all the common arguments `\ ``89727e2`` `_ -* Updated Dockerfile's and build script for docker `\ ``059cc86`` `_ -* Cleaned up some verbose output & colorized output `\ ``cdcb98e`` `_ -* Ensure common params are honored `\ ``9187b97`` `_ -* Removed the need for FROMCALL in dev test-plugin `\ ``3463c6e`` `_ * Fixed a problem with send-message command `\ ``49f3ea8`` `_ -* Fixed test-plugin `\ ``617973f`` `_ -* Updated for v2.5.0 `\ ``5d17809`` `_ * Updated Changelog for 4.2.3 `\ ``30df452`` `_ +* Refactor the cli `\ ``7d0006b`` `_ * Pep8 failures `\ ``2ead6a9`` `_ +* Removed the need for FROMCALL in dev test-plugin `\ ``3463c6e`` `_ +* Added healthcheck to the cmds `\ ``82def59`` `_ * pep8 `\ ``8287c09`` `_ +* Ensure common params are honored `\ ``9187b97`` `_ +* Fixed test-plugin `\ ``617973f`` `_ +* Reworked all the common arguments `\ ``89727e2`` `_ +* Cleaned up some verbose output & colorized output `\ ``cdcb98e`` `_ +* Updated Dockerfile's and build script for docker `\ ``059cc86`` `_ +* Updated for v2.5.0 `\ ``5d17809`` `_ + `v2.4.2 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -780,12 +1367,15 @@ Generated by `\ ``auto-changelog`` ` -* Be more careful picking data to/from disk `\ ``cefb581`` `_ * Updated Changelog `\ ``d2e8fe6`` `_ +* Be more careful picking data to/from disk `\ ``cefb581`` `_ * Updated Changelog `\ ``0d5b716`` `_ + `v2.4.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -793,11 +1383,14 @@ Generated by `\ ``auto-changelog`` ` -* Ensure plugins are last to be loaded. `\ ``95fecd2`` `_ * Fixed email connecting to smtp server `\ ``c8c23e6`` `_ +* Ensure plugins are last to be loaded. `\ ``95fecd2`` `_ + `v2.4.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -806,37 +1399,40 @@ Generated by `\ ``auto-changelog`` ` * Refactoring/Cleanup `\ ``#70`` `_ -* Refactored client classes `\ ``270be94`` `_ +* 2.3.1 Changelog `\ ``65ea332`` `_ * Refactor utils usage `\ ``23e3876`` `_ -* Added new Config object. `\ ``491644e`` `_ -* Added objectstore Mixin `\ ``4233827`` `_ -* Added new HelpPlugin `\ ``3b7924b`` `_ +* Refactored client classes `\ ``270be94`` `_ * Fixed email plugin's use of globals `\ ``a6ed7b8`` `_ -* Converted MsgTrack to ObjectStoreMixin `\ ``e009791`` `_ -* Added new SeenList `\ ``278bb6e`` `_ +* Added new Config object. `\ ``491644e`` `_ * Fixed notify plugins `\ ``e3c5c7b`` `_ -* Enable configuring where to save the objectstore data `\ ``0d51634`` `_ +* Updated dev to use plugin manager `\ ``c097c31`` `_ +* Increase email delay to +10 `\ ``fdc8c0c`` `_ +* Added some server startup info logs `\ ``30671cb`` `_ +* Fixed issue with flask config `\ ``f8d87d0`` `_ +* Fixed send-message after config/client rework `\ ``725bb2f`` `_ * removed usage of config.check_config_option `\ ``5b17228`` `_ -* Updated Changelog for 2.4.0 release `\ ``a3a3a5a`` `_ * Updated build.sh `\ ``db9cbf5`` `_ * Updated aprsd-dev to use config for logfile format `\ ``2bf85db`` `_ -* Added -num option to aprsd-dev test-plugin `\ ``9b22122`` `_ -* Added SIGTERM to signal_handler `\ ``8ee8b14`` `_ -* PEP8 cleanup `\ ``135e21c`` `_ -* Fixed send-message after config/client rework `\ ``725bb2f`` `_ -* Updated dev to use plugin manager `\ ``c097c31`` `_ -* 2.3.1 Changelog `\ ``65ea332`` `_ -* Make sure SeenList update has a from in packet `\ ``89701c8`` `_ -* Ensure PacketList is initialized `\ ``66c5d85`` `_ -* Only call stop_threads if it exists `\ ``9150f3b`` `_ -* Fixed unit tests `\ ``b0d25a7`` `_ -* Fixed issue with flask config `\ ``f8d87d0`` `_ -* Added some server startup info logs `\ ``30671cb`` `_ -* Increase email delay to +10 `\ ``fdc8c0c`` `_ +* Added new HelpPlugin `\ ``3b7924b`` `_ * Added plugin version to stats reporting `\ ``004795d`` `_ +* Added new SeenList `\ ``278bb6e`` `_ +* Only call stop_threads if it exists `\ ``9150f3b`` `_ +* Added -num option to aprsd-dev test-plugin `\ ``9b22122`` `_ +* Added objectstore Mixin `\ ``4233827`` `_ +* PEP8 cleanup `\ ``135e21c`` `_ +* Enable configuring where to save the objectstore data `\ ``0d51634`` `_ +* Added SIGTERM to signal_handler `\ ``8ee8b14`` `_ +* Ensure PacketList is initialized `\ ``66c5d85`` `_ +* Make sure SeenList update has a from in packet `\ ``89701c8`` `_ +* Fixed unit tests `\ ``b0d25a7`` `_ +* Converted MsgTrack to ObjectStoreMixin `\ ``e009791`` `_ +* Updated Changelog for 2.4.0 release `\ ``a3a3a5a`` `_ + `v2.3.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -844,11 +1440,14 @@ Generated by `\ ``auto-changelog`` ` -* Fixed issue of aprs-is missing keepalive `\ ``560e152`` `_ * Fixed packet processing issue with aprsd send-message `\ ``69b215d`` `_ +* Fixed issue of aprs-is missing keepalive `\ ``560e152`` `_ + `v2.3.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -858,34 +1457,37 @@ Generated by `\ ``auto-changelog`` ` * Send Message via admin Web interface `\ ``#59`` `_ * Added the ability to use direwolf KISS socket `\ ``#50`` `_ -* Added Logfile tab in Admin ui `\ ``d6b3df9`` `_ -* Upgraded the send-message POC to use websockets `\ ``c941379`` `_ +* Update Dockerfile to use 2.2.1 `\ ``a7d79a6`` `_ * New Admin ui send message page working. `\ ``23cbf32`` `_ -* Got TX/RX working with aioax25+direwolf over TCP `\ ``f4dee4b`` `_ -* Added enabled flag for every plugin object `\ ``3faf41b`` `_ +* Upgraded the send-message POC to use websockets `\ ``c941379`` `_ * Cleaned up some pep8 failures `\ ``84ce60b`` `_ -* Enable plugins to return message object `\ ``1b9a993`` `_ -* Updated Admin UI to show KISS connections `\ ``ca438c9`` `_ -* Added self creating Makefile help target `\ ``d643ca3`` `_ -* Added send-message to the main admin UI `\ ``c58031d`` `_ -* Prep 2.3.0 `\ ``4164e89`` `_ -* Updated requirements `\ ``c537b54`` `_ -* Updated Makefile clean target `\ ``4f088e0`` `_ * Rebased from master `\ ``54c9a6b`` `_ +* Got TX/RX working with aioax25+direwolf over TCP `\ ``f4dee4b`` `_ +* Updated Admin UI to show KISS connections `\ ``ca438c9`` `_ +* Updated requirements `\ ``c537b54`` `_ +* Added send-message to the main admin UI `\ ``c58031d`` `_ +* Removed values from forms `\ ``1635feb`` `_ * Fixed email validation `\ ``0f6df5f`` `_ +* Fixed issue at startup with notify plugin `\ ``1ea6c05`` `_ +* Remove some noisy trace in email plugin `\ ``558710d`` `_ +* Fixed a problem with the AVWX plugin not working `\ ``8ada789`` `_ * Allow passing in aprsis_client `\ ``62ce84b`` `_ * Update dev.py `\ ``dfaf3aa`` `_ -* Fixed issue at startup with notify plugin `\ ``1ea6c05`` `_ -* Removed values from forms `\ ``1635feb`` `_ -* Update Dockerfile to use 2.2.1 `\ ``a7d79a6`` `_ -* Ensure plugin threads are valid `\ ``7e6dffb`` `_ -* Fixed a problem with the AVWX plugin not working `\ ``8ada789`` `_ +* Added self creating Makefile help target `\ ``d643ca3`` `_ +* Updated Makefile clean target `\ ``4f088e0`` `_ +* Added Logfile tab in Admin ui `\ ``d6b3df9`` `_ * Removed fixed size on logging queue `\ ``9eff99d`` `_ * Updated Dockerfile to use v2.3.0 `\ ``605911c`` `_ -* Remove some noisy trace in email plugin `\ ``558710d`` `_ +* Ensure plugin threads are valid `\ ``7e6dffb`` `_ +* Added enabled flag for every plugin object `\ ``3faf41b`` `_ +* Enable plugins to return message object `\ ``1b9a993`` `_ +* Prep 2.3.0 `\ ``4164e89`` `_ + `v2.2.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -893,11 +1495,14 @@ Generated by `\ ``auto-changelog`` ` -* Update Changelog for 2.2.1 `\ ``44c4dd6`` `_ * Silence some log noise `\ ``ec92b07`` `_ +* Update Changelog for 2.2.1 `\ ``44c4dd6`` `_ + `v2.2.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -906,24 +1511,27 @@ Generated by `\ ``auto-changelog`` ` * Refactor Message processing and MORE `\ ``#69`` `_ -* Removed TXThread `\ ``61967b5`` `_ -* Use Gray instead of Black for code formatting. `\ ``e175f77`` `_ -* Added threads functions to APRSDPluginBase `\ ``86777d8`` `_ -* Updated select timeouts `\ ``0f384b0`` `_ -* Cleanup of the README.rst `\ ``e8ffaa9`` `_ -* Rebase from master and run gray `\ ``8b5f21e`` `_ -* Added tracking plugin processing `\ ``8e627c9`` `_ -* Updated tox.ini `\ ``d6643a8`` `_ -* Updated Changelog for v2.2.0 `\ ``8190353`` `_ * Fixed aprsd-dev `\ ``d71b0df`` `_ +* Cleanup of the README.rst `\ ``e8ffaa9`` `_ +* Updated slack channel link `\ ``2b69446`` `_ +* Fixed LOG.debug issue in weather plugin `\ ``f1f8aed`` `_ +* Updated tox.ini `\ ``d6643a8`` `_ +* Added threads functions to APRSDPluginBase `\ ``86777d8`` `_ +* Added tracking plugin processing `\ ``8e627c9`` `_ +* Use Gray instead of Black for code formatting. `\ ``e175f77`` `_ +* Rebase from master and run gray `\ ``8b5f21e`` `_ +* Updated select timeouts `\ ``0f384b0`` `_ +* Added days to uptime string formatting `\ ``2e9b42d`` `_ +* Removed TXThread `\ ``61967b5`` `_ * Removed Black code style reference `\ ``daf1e21`` `_ * Updated overview image `\ ``d5d0064`` `_ -* Added days to uptime string formatting `\ ``2e9b42d`` `_ -* Fixed LOG.debug issue in weather plugin `\ ``f1f8aed`` `_ -* Updated slack channel link `\ ``2b69446`` `_ +* Updated Changelog for v2.2.0 `\ ``8190353`` `_ + `v2.1.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -938,8 +1546,11 @@ Generated by `\ ``auto-changelog`` ` * Put in a fix for aprslib parse exceptions `\ ``840c8a9`` `_ * Prep for v2.1.0 `\ ``691b18f`` `_ + `v2.0.0 `_ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -954,24 +1565,27 @@ Generated by `\ ``auto-changelog`` ` * Bump urllib3 from 1.26.4 to 1.26.5 `\ ``#61`` `_ * Added aprsd version checking `\ ``#60`` `_ * Bump urllib3 from 1.26.3 to 1.26.4 `\ ``#56`` `_ -* Add new watchlist feature `\ ``1a1fcba`` `_ * Prep for v1.6.1 release `\ ``55862a2`` `_ -* reworked the admin ui to use semenatic ui more `\ ``3c45d8b`` `_ -* Updated docs for 2.0.0 `\ ``b4713b2`` `_ -* Added message counts for each plugin. `\ ``3ae5717`` `_ -* Updated INSTALL.txt `\ ``9de0df3`` `_ -* Fixed the Ack thread not resending acks `\ ``562ae52`` `_ -* Fixed small bug with packets get_packet_type `\ ``3d38402`` `_ -* Move version string output to top of log `\ ``7dc4fb3`` `_ -* Added messages count to admin messages list. `\ ``5afc7fb`` `_ -* Update README.rst `\ ``970b32f`` `_ -* Updated overview images `\ ``90a44bb`` `_ -* Update my callsign `\ ``b8dc6a3`` `_ * Update README.rst `\ ``2a5ef58`` `_ +* Update README.rst `\ ``970b32f`` `_ +* Update my callsign `\ ``b8dc6a3`` `_ +* Updated INSTALL.txt `\ ``9de0df3`` `_ +* Added message counts for each plugin. `\ ``3ae5717`` `_ * Removed a noisy debug log `\ ``1c66555`` `_ +* Added messages count to admin messages list. `\ ``5afc7fb`` `_ +* reworked the admin ui to use semenatic ui more `\ ``3c45d8b`` `_ +* Add new watchlist feature `\ ``1a1fcba`` `_ +* Fixed the Ack thread not resending acks `\ ``562ae52`` `_ +* Move version string output to top of log `\ ``7dc4fb3`` `_ +* Updated overview images `\ ``90a44bb`` `_ +* Fixed small bug with packets get_packet_type `\ ``3d38402`` `_ +* Updated docs for 2.0.0 `\ ``b4713b2`` `_ + `v1.6.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -984,34 +1598,37 @@ Generated by `\ ``auto-changelog`` ` * Bump pygments from 2.7.3 to 2.7.4 `\ ``#55`` `_ * Bump jinja2 from 2.11.2 to 2.11.3 `\ ``#52`` `_ * Bump urllib3 from 1.26.2 to 1.26.3 `\ ``#51`` `_ -* Updated web stats index to show messages and ram usage `\ ``c7d10f5`` `_ * Updated README docs `\ ``b6ba90d`` `_ -* Reworked the stats dict output and healthcheck `\ ``bf8d2c6`` `_ -* Added callsign to the web index page `\ ``123266c`` `_ -* Reworked Makefile to use Makefile.venv `\ ``a4a06c9`` `_ -* Added Dockerfile-dev and updated build.sh `\ ``239e784`` `_ -* Added email messages graphs `\ ``d6806c4`` `_ -* Added log config for flask and lnav config file `\ ``34d2c31`` `_ -* Added plugin live reload and StockPlugin `\ ``e6cafeb`` `_ -* Updated Dockerfile for multiplatform builds `\ ``f0034fc`` `_ -* Updated stats output for KeepAlive thread `\ ``7b019d2`` `_ -* Added acks with messages graphs `\ ``f10372b`` `_ -* Added showing APRS-IS server to stats `\ ``d1a2a14`` `_ -* Provide an initial datapoint on rendering index `\ ``fb979ed`` `_ -* Added log format and dateformat to config file `\ ``0a038da`` `_ -* Updated Dockerfile and build.sh `\ ``9f66774`` `_ -* Fixed version unit tests `\ ``23c219f`` `_ -* Update Dockerfile-dev to work with startup `\ ``3f21934`` `_ -* Force all the graphs to 0 minimum `\ ``3ac42ed`` `_ -* Require python 3.7 and > `\ ``933917b`` `_ -* ignore Makefile.venv `\ ``4aac17d`` `_ -* Updated Dockerfile for multiplatform builds `\ ``c177748`` `_ * Dockerfile: Make creation of /config quiet failure `\ ``2d5bb85`` `_ -* Removed debug log for KeepAlive thread `\ ``fc1ee19`` `_ +* Updated Dockerfile for multiplatform builds `\ ``c177748`` `_ +* Updated Dockerfile for multiplatform builds `\ ``f0034fc`` `_ +* Updated Dockerfile and build.sh `\ ``9f66774`` `_ +* Added plugin live reload and StockPlugin `\ ``e6cafeb`` `_ +* Require python 3.7 and > `\ ``933917b`` `_ +* Added Dockerfile-dev and updated build.sh `\ ``239e784`` `_ +* Added log format and dateformat to config file `\ ``0a038da`` `_ +* Updated web stats index to show messages and ram usage `\ ``c7d10f5`` `_ +* Added acks with messages graphs `\ ``f10372b`` `_ * Make the index page behind auth `\ ``6297ebe`` `_ +* Provide an initial datapoint on rendering index `\ ``fb979ed`` `_ +* Added showing APRS-IS server to stats `\ ``d1a2a14`` `_ +* Added log config for flask and lnav config file `\ ``34d2c31`` `_ +* Added callsign to the web index page `\ ``123266c`` `_ +* Reworked the stats dict output and healthcheck `\ ``bf8d2c6`` `_ +* Added email messages graphs `\ ``d6806c4`` `_ +* Force all the graphs to 0 minimum `\ ``3ac42ed`` `_ +* Update Dockerfile-dev to work with startup `\ ``3f21934`` `_ +* Updated stats output for KeepAlive thread `\ ``7b019d2`` `_ +* Fixed version unit tests `\ ``23c219f`` `_ +* Reworked Makefile to use Makefile.venv `\ ``a4a06c9`` `_ +* ignore Makefile.venv `\ ``4aac17d`` `_ +* Removed debug log for KeepAlive thread `\ ``fc1ee19`` `_ + `v1.6.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -1030,38 +1647,41 @@ Generated by `\ ``auto-changelog`` ` * Added new time plugins `\ ``#40`` `_ * Fixed TimePlugin timezone issue `\ ``#38`` `_ * Added aprsd-dev plugin test cli and WxPlugin `\ ``#35`` `_ -* Added flask messages web UI and basic auth `\ ``aa29069`` `_ -* Added Flask web thread and stats collection `\ ``5c94934`` `_ -* Added tracing facility `\ ``af48c43`` `_ +* Updated readme to include readthedocs link `\ ``b9f6fcf`` `_ +* change query char from ? to ! `\ ``7de2820`` `_ +* fix git with install.txt `\ ``5fb363c`` `_ +* remove fortune white space `\ ``ca05676`` `_ +* First hack at flask `\ ``9630279`` `_ * Fixed extracting lat/lon `\ ``fefb626`` `_ * Updated documentation and config output `\ ``a35cb04`` `_ -* Wrap all imap calls with try except blocks `\ ``a5cc274`` `_ -* EmailThread was exiting because of IMAP timeout, added exceptions for this `\ ``47135c6`` `_ -* First hack at flask `\ ``9630279`` `_ -* Moved docker related stuffs to docker dir `\ ``24edcad`` `_ -* 1.6.0 release prep `\ ``a266c98`` `_ -* Enable debug logging for smtp and imap `\ ``030b025`` `_ -* Cleaned up the KeepAlive output `\ ``51894bb`` `_ -* change query char from ? to ! `\ ``7de2820`` `_ -* Added memory tracing in keeplive `\ ``db2b537`` `_ -* Wrap another server call with try except `\ ``131919b`` `_ -* more debug around email thread `\ ``cfb1724`` `_ -* Fixed tox pep8 failure for trace `\ ``0b44fc0`` `_ -* Removed some noisy debug log. `\ ``9ba44a0`` `_ +* Added Flask web thread and stats collection `\ ``5c94934`` `_ * Add flask and flask_classful reqs `\ ``cae8746`` `_ -* debug around EmailThread hanging or vanishing `\ ``3ca0eef`` `_ -* remove fortune white space `\ ``ca05676`` `_ -* Fixed resend email after config rework `\ ``c1e6792`` `_ -* Fixed an issue with LocationPlugin `\ ``0d18e54`` `_ -* Updated path of run.sh for docker build `\ ``7df6462`` `_ -* Fixed email login issue. `\ ``94bad95`` `_ -* fix git with install.txt `\ ``5fb363c`` `_ -* Updated readme to include readthedocs link `\ ``b9f6fcf`` `_ -* duplicate email messages from RF would generate usage response `\ ``57d768e`` `_ * updated .gitignore `\ ``8bfdefd`` `_ +* Cleaned up the KeepAlive output `\ ``51894bb`` `_ +* Fixed an issue with LocationPlugin `\ ``0d18e54`` `_ +* Added flask messages web UI and basic auth `\ ``aa29069`` `_ +* Fixed resend email after config rework `\ ``c1e6792`` `_ +* debug around EmailThread hanging or vanishing `\ ``3ca0eef`` `_ +* more debug around email thread `\ ``cfb1724`` `_ +* Enable debug logging for smtp and imap `\ ``030b025`` `_ +* duplicate email messages from RF would generate usage response `\ ``57d768e`` `_ +* Fixed email login issue. `\ ``94bad95`` `_ +* Added tracing facility `\ ``af48c43`` `_ +* Fixed tox pep8 failure for trace `\ ``0b44fc0`` `_ +* Added memory tracing in keeplive `\ ``db2b537`` `_ +* EmailThread was exiting because of IMAP timeout, added exceptions for this `\ ``47135c6`` `_ +* Wrap all imap calls with try except blocks `\ ``a5cc274`` `_ +* Wrap another server call with try except `\ ``131919b`` `_ +* Removed some noisy debug log. `\ ``9ba44a0`` `_ +* Moved docker related stuffs to docker dir `\ ``24edcad`` `_ +* Updated path of run.sh for docker build `\ ``7df6462`` `_ +* 1.6.0 release prep `\ ``a266c98`` `_ + `v1.5.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -1070,11 +1690,14 @@ Generated by `\ ``auto-changelog`` ` * Update INSTALL.txt `\ ``47ccce5`` `_ -* Updated Changelog for v1.5.1 `\ ``658e6b6`` `_ * Updated README to fix pypi page `\ ``98e3c24`` `_ +* Updated Changelog for v1.5.1 `\ ``658e6b6`` `_ + `v1.5.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -1087,59 +1710,75 @@ Generated by `\ ``auto-changelog`` ` * Added Makefile for easy dev setup `\ ``#34`` `_ * backout my patch that broke tox, trying to push to craiger-test branch `\ ``#32`` `_ * Threads `\ ``#26`` `_ -* Added Sphinx based documentation `\ ``ee2aeb5`` `_ -* refactor Plugin objects to plugins directory `\ ``d5a34b4`` `_ -* Creation of MsgTrack object and other stuff `\ ``2e90c0b`` `_ -* reworked threading `\ ``f65707c`` `_ * Reworked messaging lib `\ ``9768003`` `_ -* Lots of fixes `\ ``231c15b`` `_ -* Updated Makefile `\ ``c51a945`` `_ -* Updated MsgTrack restart_delayed `\ ``1ce2a56`` `_ -* Updated README to include development env `\ ``25d948b`` `_ +* reworked threading `\ ``f65707c`` `_ * Added some plugin unit tests `\ ``171703a`` `_ +* Added FortunePlugin unit test `\ ``9d3ede6`` `_ +* Creation of MsgTrack object and other stuff `\ ``2e90c0b`` `_ * Added support to save/load MsgTrack on exit/start `\ ``2659a0b`` `_ +* Added QueryPlugin `\ ``28f3daf`` `_ +* Added QueryPlugin resend all delayed msgs or Flush `\ ``af0d449`` `_ +* Update Changelog for v1.5.0 `\ ``8bd8b95`` `_ * Added pre-commit hooks `\ ``75f610d`` `_ -* Added --raw format for sending messages `\ ``54072a2`` `_ -* Updated Changelog for v1.5.0 release `\ ``33a0e6c`` `_ +* Updated README to include development env `\ ``25d948b`` `_ +* Added more pre-commit hook tests `\ ``4c0150d`` `_ +* don't tell radio emails were sent, ack is enuf `\ ``99c5867`` `_ +* Fixed failures caused by last commit `\ ``e83ee31`` `_ +* Cleaned out old ack_dict `\ ``dbc891f`` `_ +* Lots of fixes `\ ``231c15b`` `_ +* removed double-quote-string-fixer `\ ``a7c2043`` `_ +* Fixed email shortcut lookup `\ ``9f4cc27`` `_ +* Updated Makefile `\ ``c51a945`` `_ +* refactor Plugin objects to plugins directory `\ ``a385d17`` `_ +* refactor Plugin objects to plugins directory `\ ``d5a34b4`` `_ +* Added Sphinx based documentation `\ ``ee2aeb5`` `_ +* swap Query command characters a bit `\ ``a334623`` `_ +* undo git disaster `\ ``45dd3f0`` `_ +* Fix broken test `\ ``1763e94`` `_ +* switch command characters for query plugin `\ ``e7f2ebf`` `_ +* Updated build for docs tox -edocs `\ ``bd35a61`` `_ +* Added some more badges to readme files `\ ``7423df6`` `_ +* Disable MX record validation `\ ``e6dee3a`` `_ +* Added APRSD system diagram to docs `\ ``cc0d0fd`` `_ +* change query character syntax, don't reply that we're resending stuff `\ ``0aa7fe7`` `_ +* Updated MsgTrack restart_delayed `\ ``1ce2a56`` `_ +* Added unit test for QueryPlugin `\ ``68e6f5b`` `_ +* update query plugin to resend last N messages. syntax: ?rN `\ ``d9141dc`` `_ +* expect different reply from query plugin `\ ``e1a292d`` `_ * Extend APRS.IS object to change login string `\ ``ac4c3d6`` `_ * Extend APRS.IS object to change login string `\ ``5de1b3e`` `_ -* Changed default log level to INFO `\ ``0aa905e`` `_ -* Added QueryPlugin resend all delayed msgs or Flush `\ ``af0d449`` `_ -* Added more pre-commit hook tests `\ ``4c0150d`` `_ -* Added the ability to add comments to the config file `\ ``cdde9c2`` `_ -* Added unit test for QueryPlugin `\ ``68e6f5b`` `_ -* Fixed email shortcut lookup `\ ``9f4cc27`` `_ -* Added FortunePlugin unit test `\ ``9d3ede6`` `_ +* getting out of git hell with client.py problems `\ ``76bbdfc`` `_ * Fixed fortune plugin failures `\ ``7ab2613`` `_ -* make sample config easier to interpret `\ ``e11a84b`` `_ -* Added send-message login checking and --no-ack `\ ``90c4c6c`` `_ -* Added APRSD system diagram to docs `\ ``cc0d0fd`` `_ -* fix query command syntax ?, ?3, ?d(elete), ?a(ll) `\ ``0b5c9da`` `_ -* update query plugin to resend last N messages. syntax: ?rN `\ ``d9141dc`` `_ -* Added QueryPlugin `\ ``28f3daf`` `_ -* Added new config for aprs.fi API Key `\ ``bdeaf63`` `_ -* Enabled some emailthread messages and added timestamp `\ ``d81bfd6`` `_ -* Added a fix for failed logins to APRS-IS `\ ``3dd23fa`` `_ -* Update Changelog for v1.5.0 `\ ``8bd8b95`` `_ -* Updated build for docs tox -edocs `\ ``bd35a61`` `_ -* Fixed --quiet option `\ ``f022a3e`` `_ -* swap Query command characters a bit `\ ``a334623`` `_ -* Fixed failures caused by last commit `\ ``e83ee31`` `_ -* don't tell radio emails were sent, ack is enuf `\ ``99c5867`` `_ * Fixed unit test for fortune plugin `\ ``9470802`` `_ -* Added some more badges to readme files `\ ``7423df6`` `_ -* Cleaned out old ack_dict `\ ``dbc891f`` `_ -* Removed flask code `\ ``72fa550`` `_ -* fix plugin tests to expect new strings `\ ``e7dc537`` `_ +* Added a fix for failed logins to APRS-IS `\ ``3dd23fa`` `_ +* Added new config for aprs.fi API Key `\ ``bdeaf63`` `_ +* Added send-message login checking and --no-ack `\ ``90c4c6c`` `_ +* Fixed --quiet option `\ ``f022a3e`` `_ +* Added --raw format for sending messages `\ ``54072a2`` `_ * Updated docker run.sh script `\ ``264b753`` `_ -* change query character syntax, don't reply that we're resending stuff `\ ``0aa7fe7`` `_ -* Disable MX record validation `\ ``e6dee3a`` `_ -* fix usage statement `\ ``f538fb2`` `_ +* Added the ability to add comments to the config file `\ ``cdde9c2`` `_ +* Fixed comments `\ ``42b2e22`` `_ +* make sample config easier to interpret `\ ``e11a84b`` `_ +* fixed sample-config double print `\ ``18acd64`` `_ * get rid of some debug noise from tracker and email delay `\ ``7e3b95f`` `_ -* switch command characters for query plugin `\ ``e7f2ebf`` `_ +* Fixed latitude reporting in locationPlugin `\ ``4ca5c29`` `_ +* fix query command syntax ?, ?3, ?d(elete), ?a(ll) `\ ``0b5c9da`` `_ +* fix plugin tests to expect new strings `\ ``e7dc537`` `_ +* Changed default log level to INFO `\ ``0aa905e`` `_ +* Removed flask code `\ ``72fa550`` `_ +* Fixed the queryPlugin unit test `\ ``74be4f8`` `_ +* test plugin expect responses update to match query output `\ ``3be373d`` `_ +* Fixed main server client initialization `\ ``7486770`` `_ +* Enabled some emailthread messages and added timestamp `\ ``d81bfd6`` `_ +* fix usage statement `\ ``f538fb2`` `_ +* Fix tox tests. `\ ``0e9cfdd`` `_ +* Updated Changelog for v1.5.0 release `\ ``33a0e6c`` `_ + `v1.1.0 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -1151,19 +1790,22 @@ Generated by `\ ``auto-changelog`` ` * Major refactor `\ ``#23`` `_ * Updated the Dockerfile to use alpine `\ ``#24`` `_ * Big patch `\ ``fa51f8f`` `_ -* Added Changelog `\ ``6d2160c`` `_ -* Refactored the main process_packet method `\ ``1d898ea`` `_ -* Updated README.rst `\ ``6a61765`` `_ -* Fixed issue when RX ack `\ ``d3ee1b7`` `_ * Fixed send-message with email command and others `\ ``3261710`` `_ -* Update README with version 1.1.0 related info `\ ``8161719`` `_ +* Updated README.rst `\ ``6a61765`` `_ +* Updated the aprsd-slack-plugin required version `\ ``0992ab8`` `_ +* Fixed issue when RX ack `\ ``d3ee1b7`` `_ +* Added Changelog `\ ``6d2160c`` `_ +* Updated docker-compose `\ ``c39fdde`` `_ * Ensure fortune is installed `\ ``18b269a`` `_ * Added fix for an unknown packet type `\ ``b260954`` `_ -* Updated docker-compose `\ ``c39fdde`` `_ -* Updated the aprsd-slack-plugin required version `\ ``0992ab8`` `_ +* Update README with version 1.1.0 related info `\ ``8161719`` `_ +* Refactored the main process_packet method `\ ``1d898ea`` `_ + `v1.0.1 `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .. @@ -1176,13 +1818,12 @@ Generated by `\ ``auto-changelog`` ` * Updates for building containers `\ ``#19`` `_ * Don't use the dirname for the plugin path search `\ ``#18`` `_ * Reworked Plugin loading `\ ``#17`` `_ -* Updated README with a TOC `\ ``21253ff`` `_ -* Updated README with development information `\ ``3ffa416`` `_ * Fixed an issue with weather plugin `\ ``eba093b`` `_ +* Updated README with development information `\ ``3ffa416`` `_ +* Updated README with a TOC `\ ``21253ff`` `_ * Updated loggin timestamp to include [] `\ ``8a62738`` `_ -v1.0.0 -~~~~~~ +#### v1.0.0 .. @@ -1206,53 +1847,102 @@ v1.0.0 * Added password, callsign and host `\ ``#3`` `_ * Cleaned up trailing whitespace `\ ``#2`` `_ * Added standard python main() `\ ``#1`` `_ +* Initial commit `\ ``8cea620`` `_ +* Add files via upload `\ ``51579d7`` `_ +* Update README.md `\ ``38d2e51`` `_ +* Update README.md `\ ``6db4e6f`` `_ +* Update README.md `\ ``7947d54`` `_ +* Update README.md `\ ``66f8f82`` `_ +* Update README.md `\ ``538e2fe`` `_ +* Update README.md `\ ``e2d9478`` `_ +* Update README.md `\ ``a3f1d34`` `_ +* Update README.md `\ ``d31d3bd`` `_ +* Update README.md `\ ``7e409c7`` `_ +* Update README.md `\ ``ce66908`` `_ +* Update README.md `\ ``d9b9fd9`` `_ +* Update README.md `\ ``134a555`` `_ +* Update aprsd.py `\ ``2330523`` `_ +* Update README.md `\ ``821a34b`` `_ +* Add files via upload `\ ``471af76`` `_ +* Update aprsd.py `\ ``230cf45`` `_ +* Update README.md `\ ``04269b3`` `_ +* Update README.md `\ ``aa184a3`` `_ * de-localize `\ ``fcef019`` `_ -* Rewrote the README.md to README.rst `\ ``e1edbe6`` `_ -* Created fake_aprs.py `\ ``bd47a2b`` `_ +* Update README.md `\ ``34d4da8`` `_ +* Update README.md `\ ``e3a1841`` `_ +* Update README.md `\ ``e74fd4f`` `_ +* Update README.md `\ ``7cfde54`` `_ +* de-localize `\ ``149580e`` `_ +* mapme `\ ``48036f9`` `_ * added weather and location `\ ``7b74138`` `_ -* fix bugs after beautification and yaml config additions. Convert to sockets. case insensitive commands `\ ``abc6379`` `_ +* added weather and location 2 `\ ``2fbc0e3`` `_ +* added weather and location 3 `\ ``f1d25c0`` `_ +* sanitize readme `\ ``de6ca53`` `_ +* sanitize readme a bit more `\ ``b6356ce`` `_ +* sanitize readme a bit more `\ ``19e747d`` `_ +* drop virtenv on first line `\ ``f3e386c`` `_ +* tweaks to readme `\ ``8a1c5e0`` `_ +* make tn a global `\ ``d9caac6`` `_ +* add tweaked fuzzyclock `\ ``7dc1c5d`` `_ +* comments `\ ``174da13`` `_ +* Added argparse for cli options `\ ``8b61116`` `_ * First stab at migrating this to a pytpi repo `\ ``ecd797d`` `_ * First stab at migrating this to a pytpi repo `\ ``a2b5908`` `_ +* readme update `\ ``4a8181c`` `_ +* readme `\ ``d3e5d35`` `_ +* readme again `\ ``5ac718d`` `_ +* readme again again `\ ``20c43b4`` `_ +* readme again again `\ ``d98af66`` `_ +* sanitize readme `\ ``8390419`` `_ +* update readme `\ ``c36b14b`` `_ +* update readme `\ ``b3435c0`` `_ +* added exit if missing config file `\ ``e3964c5`` `_ +* added test to ensure shortcuts in config.yml `\ ``8d1d293`` `_ +* updated README for install and usage instructions `\ ``4eff52f`` `_ +* Added a try block around imap login `\ ``89d038e`` `_ +* select inbox if gmail server `\ ``7abc470`` `_ +* Created fake_aprs.py `\ ``bd47a2b`` `_ +* Update README.md `\ ``1f31ba0`` `_ +* fix INBOX `\ ``78add91`` `_ +* fix bugs after beautification and yaml config additions. Convert to sockets. case insensitive commands `\ ``abc6379`` `_ +* INSTALL.txt for the average person `\ ``f175f7e`` `_ +* fix check_email_thread to do proper threading, take delay as arg `\ ``b552f96`` `_ * fix check_email_thread to do proper threading, take delay as arg `\ ``e171e16`` `_ -* add tweaked fuzzyclock `\ ``7dc1c5d`` `_ -* added weather and location 2 `\ ``2fbc0e3`` `_ -* Initial conversion to click `\ ``50fb090`` `_ -* Add files via upload `\ ``51579d7`` `_ -* clean up code around closed_socket and reconnect `\ ``371a7a0`` `_ -* Add files via upload `\ ``471af76`` `_ -* Update README.md `\ ``ce66908`` `_ -* Added argparse for cli options `\ ``8b61116`` `_ -* can detect closed socket and reconnect now `\ ``b8f37fa`` `_ -* switch from urlib to requests for weather, tested in py3 and py2. still need to update locate, and all other http calls `\ ``00432cf`` `_ -* socket reconnect on timeout testing `\ ``712d66c`` `_ -* fix parse_email unicode probs by using body.decode(errors='ignore') `\ ``44228c6`` `_ -* added decaying email check timer which resets with activity `\ ``cf73add`` `_ * socket reconnect on timeout testing `\ ``5e96706`` `_ +* socket reconnect on timeout testing `\ ``712d66c`` `_ +* Reconnect on socket timeout `\ ``b553987`` `_ * Reconnect on socket timeout `\ ``ecd0e8f`` `_ * Reconnect on socket timeout `\ ``766acbb`` `_ -* Update README.md `\ ``6db4e6f`` `_ -* completely off urllib now, tested locate/weather in py2 and py3 `\ ``86bf428`` `_ -* more debugging messages trying to find rare tight loop in main `\ ``3d7e3a4`` `_ -* Update README.md `\ ``821a34b`` `_ -* Update README.md `\ ``34d4da8`` `_ -* Update README.md `\ ``04269b3`` `_ -* Update README.md `\ ``38d2e51`` `_ -* Update aprsd.py `\ ``230cf45`` `_ -* Update aprsd.py `\ ``2330523`` `_ -* imap tags are unicode in py3. .decode tags `\ ``4b09fad`` `_ -* INSTALL.txt for the average person `\ ``f175f7e`` `_ -* readme update `\ ``4a8181c`` `_ -* Update README.md `\ ``e3a1841`` `_ -* cleaned up weather code after switch to requests ... from urllib. works on py2 and py3 `\ ``ad0f96d`` `_ -* Update README.md `\ ``e2d9478`` `_ -* Update INSTALL.txt `\ ``22f7123`` `_ -* make tn a global `\ ``d9caac6`` `_ -* reset default email check delay to 60, fix a few comments `\ ``d3bb44f`` `_ -* Added a try block around imap login `\ ``89d038e`` `_ -* fix check_email_thread to do proper threading, take delay as arg `\ ``b552f96`` `_ +* socket timeout of 300 instead of 60 `\ ``32e146d`` `_ +* added decaying email check timer which resets with activity `\ ``cf73add`` `_ +* George Carlin profanity filter `\ ``3ae7a05`` `_ +* Update INSTALL.txt `\ ``89069af`` `_ +* Update INSTALL.txt `\ ``ef132d8`` `_ +* Update INSTALL.txt `\ ``d1ab8bc`` `_ * main loop went into tight loop, added debug print before every continue `\ ``b597228`` `_ +* main loop went into tight loop, more debug prints `\ ``a4faa76`` `_ +* Update INSTALL.txt `\ ``54a2c01`` `_ +* more debugging messages trying to find rare tight loop in main `\ ``3d7e3a4`` `_ +* Update INSTALL.txt `\ ``22f7123`` `_ +* can detect closed socket and reconnect now `\ ``b8f37fa`` `_ +* Detect closed socket, reconnect, with a bit more grace `\ ``4b67df2`` `_ * socket timeout 5 minutes `\ ``e6995c3`` `_ -* sanitize readme `\ ``8390419`` `_ -* readme again again `\ ``20c43b4`` `_ -* sanitize readme a bit more `\ ``b6356ce`` `_ +* clean up code around closed_socket and reconnect `\ ``735cb3a`` `_ +* clean up code around closed_socket and reconnect `\ ``371a7a0`` `_ +* fix parse_email unicode probs by using body.decode(errors='ignore') `\ ``44228c6`` `_ +* fix parse_email unicode probs by using body.decode(errors='ignore').. again `\ ``3c16149`` `_ +* some failed attempts at getting the first txt or html from a multipart message, currently sends the last `\ ``90fcb99`` `_ +* found another .decode that didn't include errors='ignore' `\ ``f69f9a2`` `_ +* Initial conversion to click `\ ``50fb090`` `_ +* Update INSTALL.txt `\ ``9cd6542`` `_ +* imap tags are unicode in py3. .decode tags `\ ``4b09fad`` `_ +* switch from urlib to requests for weather, tested in py3 and py2. still need to update locate, and all other http calls `\ ``00432cf`` `_ +* cleaned up weather code after switch to requests ... from urllib. works on py2 and py3 `\ ``ad0f96d`` `_ +* add urllib import back until i replace all calls with requests `\ ``b38f561`` `_ +* completely off urllib now, tested locate/weather in py2 and py3 `\ ``86bf428`` `_ +* lose some logging statements `\ ``c5517a7`` `_ +* fixed fortune. yet another unicode issue, tested in py3 and py2 `\ ``2bebd83`` `_ +* reset default email check delay to 60, fix a few comments `\ ``d3bb44f`` `_ * yet another unicode problem, in resend_email fixed `\ ``bb1a2ee`` `_ +* get rid of some debug statements `\ ``43509ea`` `_ +* Rewrote the README.md to README.rst `\ ``e1edbe6`` `_ diff --git a/docs/configure.rst b/docs/configure.rst index d1ba824..4dec077 100644 --- a/docs/configure.rst +++ b/docs/configure.rst @@ -36,14 +36,14 @@ Sample config file # # Callsign to use for messages sent by APRSD (string value) - #callsign = + #callsign = NOCALL # Enable saving of watch list, packet tracker between restarts. # (boolean value) #enable_save = true # Save location for packet tracking files. (string value) - #save_location = ~/.config/aprsd + #save_location = /Users/I530566/.config/aprsd/ # Enable code tracing (boolean value) #trace_enabled = false @@ -51,34 +51,89 @@ Sample config file # Units for display, imperial or metric (string value) #units = imperial + # The wait period in seconds per Ack packet being sent.1 means 1 ack + # packet per second allowed.2 means 1 pack packet every 2 seconds + # allowed (integer value) + #ack_rate_limit_period = 1 + + # Wait period in seconds per non AckPacket being sent.2 means 1 packet + # every 2 seconds allowed.5 means 1 pack packet every 5 seconds + # allowed (integer value) + #msg_rate_limit_period = 2 + + # The number of seconds before a packet is not considered a duplicate. + # (integer value) + #packet_dupe_timeout = 300 + + # Enable sending of a GPS Beacon packet to locate this service. + # Requires latitude and longitude to be set. (boolean value) + #enable_beacon = false + + # The number of seconds between beacon packets. (integer value) + #beacon_interval = 1800 + + # The symbol to use for the GPS Beacon packet. See: + # http://www.aprs.net/vm/DOS/SYMBOLS.HTM (string value) + #beacon_symbol = / + + # Latitude for the GPS Beacon button. If not set, the button will not + # be enabled. (string value) + #latitude = + + # Longitude for the GPS Beacon button. If not set, the button will + # not be enabled. (string value) + #longitude = + + # When logging packets 'compact' will use a single line formatted for + # each packet.'multiline' will use multiple lines for each packet and + # is the traditional format.both will log both compact and multiline. + # (string value) + # Possible values: + # compact - + # multiline - + # both - + #log_packet_format = compact + + # The number of times to send a non ack packet before giving up. + # (integer value) + #default_packet_send_count = 3 + + # The number of times to send an ack packet in response to recieving a + # packet. (integer value) + #default_ack_send_count = 3 + + # The maximum number of packets to store in the packet list. (integer + # value) + #packet_list_maxlen = 100 + + # The maximum number of packets to send in the stats dict for admin + # ui. -1 means no max. (integer value) + #packet_list_stats_maxlen = 20 + + # Enable the Callsign seen list tracking feature. This allows aprsd + # to keep track of callsigns that have been seen and when they were + # last seen. (boolean value) + #enable_seen_list = true + + # Set this to False, to disable logging of packets to the log file. + # (boolean value) + #enable_packet_logging = true + + # Set this to False to disable the help plugin. (boolean value) + #load_help_plugin = true + + # Set this to False, to disable sending of ack packets. This will + # entirely stopAPRSD from sending ack packets. (boolean value) + #enable_sending_ack_packets = true + + # Set this to True, if APRSD is running on a Digipi.This is useful for + # changing the behavior of APRSD to work with Digipi. (boolean value) + #is_digipi = false + # Comma separated list of enabled plugins for APRSD.To enable # installed external plugins add them here.The full python path to the # class name must be used (list value) - #enabled_plugins = aprsd.plugins.email.EmailPlugin,aprsd.plugins.fortune.FortunePlugin,aprsd.plugins.location.LocationPlugin,aprsd.plugins.ping.PingPlugin,aprsd.plugins.query.QueryPlugin,aprsd.plugins.time.TimePlugin,aprsd.plugins.weather.OWMWeatherPlugin,aprsd.plugins.version.VersionPlugin - - - [admin] - - # - # From aprsd.conf - # - - # Enable the Admin Web Interface (boolean value) - #web_enabled = false - - # The ip address to listen on (IP address value) - #web_ip = 0.0.0.0 - - # The port to listen on (port value) - # Minimum value: 0 - # Maximum value: 65535 - #web_port = 8001 - - # The admin user for the admin web interface (string value) - #user = admin - - # Admin interface password (string value) - #password = + #enabled_plugins = aprsd.plugins.fortune.FortunePlugin,aprsd.plugins.location.LocationPlugin,aprsd.plugins.ping.PingPlugin,aprsd.plugins.time.TimePlugin,aprsd.plugins.weather.OWMWeatherPlugin,aprsd.plugins.version.VersionPlugin,aprsd.plugins.notify.NotifySeenPlugin [aprs_fi] @@ -109,7 +164,7 @@ Sample config file # https://apps.magicbug.co.uk/passcode (string value) #password = - # The APRS-IS hostname (hostname value) + # The APRS-IS hostname (host address value) #host = noam.aprs2.net # APRS-IS port (port value) @@ -118,21 +173,35 @@ Sample config file #port = 14580 - [aprsd_weewx_plugin] + [aprs_registry] # - # From aprsd_weewx_plugin.conf + # From aprsd.conf # - # Latitude of the station you want to report as (floating point value) - #latitude = - - # Longitude of the station you want to report as (floating point + # Enable sending aprs registry information. This will let the APRS + # registry know about your service and it's uptime. No personal + # information is sent, just the callsign, uptime and description. The + # service callsign is the callsign set in [DEFAULT] section. (boolean # value) - #longitude = + #enabled = false - # How long (in seconds) in between weather reports (integer value) - #report_interval = 60 + # Description of the service to send to the APRS registry. This is + # what will show up in the APRS registry.If not set, the description + # will be the same as the callsign. (string value) + #description = + + # The APRS registry domain name to send the information to. (string + # value) + #registry_url = https://aprs.hemna.com/api/v1/registry + + # The website for your APRS service to send to the APRS registry. + # (string value) + #service_website = + + # The frequency in seconds to send the APRS registry information. + # (integer value) + #frequency_seconds = 3600 [avwx_plugin] @@ -152,62 +221,15 @@ Sample config file #base_url = https://avwx.rest - [email_plugin] + [fake_client] # # From aprsd.conf # - # (Required) Callsign to validate for doing email commands.Only this - # callsign can check email. This is also where the email notifications - # for new emails will be sent. (string value) - #callsign = - - # Enable the Email plugin? (boolean value) + # Enable fake client connection. (boolean value) #enabled = false - # Enable the Email plugin Debugging? (boolean value) - #debug = false - - # Login username/email for IMAP server (string value) - #imap_login = - - # Login password for IMAP server (string value) - #imap_password = - - # Hostname/IP of the IMAP server (hostname value) - #imap_host = - - # Port to use for IMAP server (port value) - # Minimum value: 0 - # Maximum value: 65535 - #imap_port = 993 - - # Use SSL for connection to IMAP Server (boolean value) - #imap_use_ssl = true - - # Login username/email for SMTP server (string value) - #smtp_login = - - # Login password for SMTP server (string value) - #smtp_password = - - # Hostname/IP of the SMTP server (hostname value) - #smtp_host = - - # Port to use for SMTP server (port value) - # Minimum value: 0 - # Maximum value: 65535 - #smtp_port = 465 - - # Use SSL for connection to SMTP Server (boolean value) - #smtp_use_ssl = true - - # List of email shortcuts for checking/sending email For Exmaple: - # wb=walt@walt.com,cl=cl@cl.com - # Means use 'wb' to send an email to walt@walt.com (list value) - #email_shortcuts = - [kiss_serial] @@ -224,6 +246,9 @@ Sample config file # The Serial device baud rate for communication (integer value) #baudrate = 9600 + # The APRS path to use for wide area coverage. (list value) + #path = WIDE1-1,WIDE2-1 + [kiss_tcp] @@ -234,7 +259,7 @@ Sample config file # Enable Serial KISS interface connection. (boolean value) #enabled = false - # The KISS TCP Host to connect to. (hostname value) + # The KISS TCP Host to connect to. (host address value) #host = # The KISS TCP/IP network port (port value) @@ -242,6 +267,9 @@ Sample config file # Maximum value: 65535 #port = 8001 + # The APRS path to use for wide area coverage. (list value) + #path = WIDE1-1,WIDE2-1 + [logging] @@ -249,17 +277,26 @@ Sample config file # From aprsd.conf # - # Date format for log entries (string value) - #date_format = %m/%d/%Y %I:%M:%S %p - - # Enable Rich logging (boolean value) - #rich_logging = true - # File to log to (string value) #logfile = # Log file format, unless rich_logging enabled. (string value) - #logformat = [%(asctime)s] [%(threadName)-20.20s] [%(levelname)-5.5s] %(message)s - [%(pathname)s:%(lineno)d] + #logformat = {time:YYYY-MM-DD HH:mm:ss.SSS} | {thread.name: <18} | {level: <8} | {message} | {name}:{function:}:{line:} + + # Log level for logging of events. (string value) + # Possible values: + # CRITICAL - + # ERROR - + # WARNING - + # INFO - + # DEBUG - + #log_level = INFO + + # Enable ANSI color codes in logging (boolean value) + #enable_color = true + + # Enable logging to the console/stdout. (boolean value) + #enable_console_stdout = true [owm_weather_plugin] @@ -275,39 +312,6 @@ Sample config file #apiKey = - [query_plugin] - - # - # From aprsd.conf - # - - # The Ham callsign to allow access to the query plugin from RF. - # (string value) - #callsign = - - - [rpc_settings] - - # - # From aprsd.conf - # - - # Enable RPC calls (boolean value) - #enabled = true - - # The ip address to listen on (string value) - #ip = localhost - - # The port to listen on (port value) - # Minimum value: 0 - # Maximum value: 65535 - #port = 18861 - - # Magic word to authenticate requests between client/server (string - # value) - #magic_word = CHANGEME!!! - - [watch_list] # diff --git a/docs/extension.rst b/docs/extension.rst new file mode 100644 index 0000000..5750c89 --- /dev/null +++ b/docs/extension.rst @@ -0,0 +1,234 @@ +APRSD Extension Development +============================ + +APRSD extensions are more comprehensive than plugins and can add new functionality +to the APRSD daemon beyond simple command plugins. Extensions can include: + +* New command-line commands +* Configuration options +* Background threads +* Statistics collectors +* Custom packet processors +* And more + +Creating an Extension Project +------------------------------- + +The recommended way to create a new APRSD extension project is to use the +`cookiecutter-aprsd-extension`_ template. This template provides a complete project +structure with all the necessary files, testing infrastructure, and documentation setup. + +Installation +~~~~~~~~~~~~ + +First, install cookiecutter if you haven't already:: + + pip install cookiecutter + +Creating a New Extension Project +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Run cookiecutter with the APRSD extension template:: + + cookiecutter gh:hemna/cookiecutter-aprsd-extension + +Cookiecutter will prompt you for several pieces of information: + +* **extension_name**: The name of your extension (e.g., ``aprsd-my-extension``) +* **extension_module_name**: The Python module name (e.g., ``aprsd_my_extension``) +* **author_name**: Your name or organization name +* **author_email**: Your email address +* **description**: A brief description of your extension +* **version**: Initial version (default: ``0.1.0``) + +Project Structure +~~~~~~~~~~~~~~~~~ + +The cookiecutter template creates a complete project structure including: + +* **Test automation** with Tox +* **Linting** with pre-commit and Flake8 +* **Continuous integration** with GitHub Actions +* **Documentation** with Sphinx and Read the Docs +* **Automated uploads** to PyPI and TestPyPI +* **Automated dependency updates** with Dependabot +* **Code formatting** with Gray +* **Testing** with pytest +* **Code coverage** with Coverage.py +* **Coverage reporting** with Codecov + +The generated project follows Python packaging best practices and includes: + +* Proper ``setup.py`` and ``pyproject.toml`` configuration +* Entry point registration for APRSD extension discovery (``aprsd.extension``) +* Configuration entry points for oslo.config (``oslo.config.opts``) +* Test suite structure +* Documentation templates +* CI/CD pipeline configuration + +Extension Registration +~~~~~~~~~~~~~~~~~~~~~~ + +Extensions are registered using Python entry points in your ``pyproject.toml`` or +``setup.py`` file. The entry point group is ``aprsd.extension``:: + + [project.entry-points."aprsd.extension"] + "my_extension" = "aprsd_my_extension.extension" + +Configuration Options +~~~~~~~~~~~~~~~~~~~~~ + +Extensions can add their own configuration options using oslo.config. Register +your configuration options using the ``oslo.config.opts`` entry point:: + + [project.entry-points."oslo.config.opts"] + "aprsd_my_extension.conf" = "aprsd_my_extension.conf.opts:list_opts" + +Example Extension Structure +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A typical extension project structure looks like this:: + + aprsd-my-extension/ + ├── aprsd_my_extension/ + │ ├── __init__.py + │ ├── extension.py # Main extension entry point + │ ├── cmds/ # Command-line commands + │ │ ├── __init__.py + │ │ └── show.py + │ ├── conf/ # Configuration options + │ │ ├── __init__.py + │ │ ├── opts.py + │ │ └── main.py + │ ├── threads/ # Background threads + │ │ ├── __init__.py + │ │ └── MyThread.py + │ └── stats.py # Statistics collectors + ├── tests/ + ├── docs/ + ├── pyproject.toml + ├── setup.py + └── README.md + +Example Extension: WebChat +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The `aprsd-webchat-extension`_ is a real-world example of an APRSD extension that +adds a web-based chat interface to APRSD. Let's examine how it's structured: + +Entry Point Registration +^^^^^^^^^^^^^^^^^^^^^^^^^ + +In ``pyproject.toml``, the extension registers itself:: + + [project.entry-points."aprsd.extension"] + "webchat" = "aprsd_webchat_extension.extension" + + [project.entry-points."oslo.config.opts"] + "aprsd_webchat_extension.conf" = "aprsd_webchat_extension.conf.opts:list_opts" + +Extension Entry Point +^^^^^^^^^^^^^^^^^^^^^^ + +The ``extension.py`` file imports the command module to register it:: + + from aprsd_webchat_extension.cmds import webchat # noqa: F401 + +This import causes the command to be registered with APRSD's CLI system. + +Command Implementation +^^^^^^^^^^^^^^^^^^^^^^ + +The webchat extension adds a new command ``aprsd webchat`` that starts a Flask-based +web server. The command is implemented in ``cmds/webchat.py`` and uses Click for +command-line interface:: + + import click + from aprsd.main import cli + + @cli.command() + @click.option('--host', default='0.0.0.0', help='Host to bind to') + @click.option('--port', default=8080, help='Port to bind to') + def webchat(host, port): + """Start the webchat interface.""" + # Implementation here + pass + +Configuration Options +^^^^^^^^^^^^^^^^^^^^^ + +The extension adds configuration options through ``conf/opts.py``:: + + from oslo_config import cfg + + webchat_group = cfg.OptGroup(name='webchat', + title='WebChat Options') + + webchat_opts = [ + cfg.StrOpt('host', + default='0.0.0.0', + help='WebChat server host'), + cfg.IntOpt('port', + default=8080, + help='WebChat server port'), + ] + + def list_opts(): + return [ + (webchat_group, webchat_opts), + ] + +The configuration can then be used in the extension code:: + + from oslo_config import cfg + + CONF = cfg.CONF + host = CONF.webchat.host + port = CONF.webchat.port + +Project Structure +^^^^^^^^^^^^^^^^^ + +The webchat extension has the following structure:: + + aprsd-webchat-extension/ + ├── aprsd_webchat_extension/ + │ ├── __init__.py + │ ├── extension.py # Entry point that imports commands + │ ├── cmds/ + │ │ ├── __init__.py + │ │ └── webchat.py # Command implementation + │ ├── conf/ + │ │ ├── __init__.py + │ │ ├── opts.py # Configuration option definitions + │ │ └── main.py # Configuration group definitions + │ ├── web/ # Web assets (HTML, CSS, JS) + │ │ └── chat/ + │ │ ├── static/ + │ │ └── templates/ + │ └── utils.py # Utility functions + ├── tests/ + ├── docs/ + ├── pyproject.toml + └── README.md + +Usage +^^^^^ + +Once installed, users can run the webchat command:: + + $ aprsd webchat --loglevel DEBUG + +This demonstrates how extensions can add new functionality beyond simple plugins, +including web interfaces, background services, and complex integrations. + +For more information about the cookiecutter template, visit the +`cookiecutter-aprsd-extension repository`_. + +For the complete source code of the webchat extension, see the +`aprsd-webchat-extension repository`_. + +.. _cookiecutter-aprsd-extension: https://github.com/hemna/cookiecutter-aprsd-extension +.. _cookiecutter-aprsd-extension repository: https://github.com/hemna/cookiecutter-aprsd-extension +.. _aprsd-webchat-extension: https://github.com/hemna/aprsd-webchat-extension +.. _aprsd-webchat-extension repository: https://github.com/hemna/aprsd-webchat-extension diff --git a/docs/index.rst b/docs/index.rst index e660fb0..95de7c1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -17,7 +17,10 @@ install configure server + listen + builtin_plugins plugin + extension apidoc/modules.rst diff --git a/docs/listen.rst b/docs/listen.rst new file mode 100644 index 0000000..aa636ac --- /dev/null +++ b/docs/listen.rst @@ -0,0 +1,138 @@ +APRSD listen +============ + +Running the APRSD listen command +--------------------------------- + +The ``aprsd listen`` command allows you to listen to packets on the APRS-IS Network based on a FILTER. +This is useful for monitoring specific APRS traffic without running the full server. + +Once APRSD is :doc:`installed ` and :doc:`configured `, the listen command can be started by running: + +.. code-block:: shell + + aprsd listen [FILTER] + +The FILTER parameter is optional and follows the APRS-IS filter format. For example, ``m/300`` filters for +messages within 300 miles of your configured location. + +Example usage +------------- + +.. code-block:: shell + + ❯ aprsd listen --loglevel DEBUG m/300 + 2025-12-10 14:32:33.813 | MainThread | INFO | Python version: 3.10.14 (main, Aug 14 2024, 05:14:46) [Clang 18.1.8 ] | aprsd.cmds.listen:listen:224 + 2025-12-10 14:32:33.813 | MainThread | INFO | APRSD Listen Started version: 4.2.5.dev8+g9c0695794 | aprsd.cmds.listen:listen:225 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | ******************************************************************************** | oslo_config.cfg:log_opt_values:2804 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | Configuration options gathered from: | oslo_config.cfg:log_opt_values:2805 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | command line args: [] | oslo_config.cfg:log_opt_values:2806 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | config files: ['/Users/I530566/.config/aprsd/aprsd.conf'] | oslo_config.cfg:log_opt_values:2807 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | ================================================================================ | oslo_config.cfg:log_opt_values:2809 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | ack_rate_limit_period = 1 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | beacon_interval = 60 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | beacon_symbol = / | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | callsign = WB4BOR-1 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | config_dir = [] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | config_file = ['/Users/I530566/.config/aprsd/aprsd.conf'] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | config_source = [] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | default_ack_send_count = 3 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | default_packet_send_count = 3 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | enable_beacon = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | enable_packet_logging = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.841 | MainThread | DEBUG | enable_save = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | enable_seen_list = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | enable_sending_ack_packets = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | enabled_plugins = ['aprsd.plugins.weather.AVWXWeatherPlugin'] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | is_digipi = False | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | latitude = 37.3443862 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | load_help_plugin = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | log_packet_format = compact | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | longitude = -78.850000 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | msg_rate_limit_period = 2 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | packet_dupe_timeout = 300 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | packet_list_maxlen = 5000 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | packet_list_stats_maxlen = 20 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | save_location = /Users/I530566/.config/aprsd/ | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | shell_completion = None | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | trace_enabled = False | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | units = imperial | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | logging.enable_color = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | logging.enable_console_stdout = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | logging.log_level = INFO | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | logging.logfile = /tmp/aprsd.log | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | logging.logformat = {time:YYYY-MM-DD HH:mm:ss.SSS} | {thread.name: <18} | {level: <8} | {message} | {name}:{function:}:{line:} | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | watch_list.alert_callsign = WB4BOR-1 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | watch_list.alert_time_seconds = 3600 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | watch_list.callsigns = ['APPOMX', 'REPEAT', 'KM6LYW', 'WB4BOR', 'M0IAX', 'VE3SCN', 'WA4RTS-5', 'KC9BUH', 'W4SOU-7', 'KD9KAF-7', 'NN4RB-9', 'KN4MLN-9', 'KK4WZS-8', 'K2VIZ-1', 'KE3XE-9', 'WB2UTI-9', 'KO4ARL-7', 'LMS6CAE42', 'WDJ6895', 'PHISVR', 'F1BIS-9', 'M7APR-9', 'Y09INA-5', 'M0PLT-7', 'M0GLJ-14', 'MW6JUY-10', 'M0XZS', 'M0HPP-8', 'ON2BBW-8'] | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | watch_list.enabled = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | watch_list.packet_keep_count = 10 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | aprs_registry.description = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | aprs_registry.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.842 | MainThread | DEBUG | aprs_registry.frequency_seconds = 3600 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_registry.registry_url = https://aprs.hemna.com/api/v1/registry | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_registry.service_website = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_network.enabled = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_network.host = 155.138.131.1 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_network.login = WB4BOR-1 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_network.password = **** | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_network.port = 14580 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_serial.baudrate = 9600 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_serial.device = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_serial.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_serial.path = ['WIDE1-1', 'WIDE2-1'] | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_tcp.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_tcp.host = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_tcp.path = ['WIDE1-1', 'WIDE2-1'] | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | kiss_tcp.port = 8001 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | fake_client.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | aprs_fi.apiKey = 152327.lds79D1bgvlbd | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | owm_weather_plugin.apiKey = e26b403324563f24a290fa1d06459bae | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | avwx_plugin.apiKey = Foo | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | avwx_plugin.base_url = https://avwx.rest | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | ******************************************************************************** | oslo_config.cfg:log_opt_values:2828 + 2025-12-10 14:32:33.843 | MainThread | DEBUG | Loading saved MsgTrack object. | aprsd.cmds.listen:listen:232 + 2025-12-10 14:32:33.843 | MainThread | INFO | Creating aprslib client(155.138.131.1:14580) and logging in WB4BOR-1. try #1 | aprsd.client.drivers.aprsis:setup_connection:103 + 2025-12-10 14:32:33.843 | MainThread | INFO | Attempting connection to 155.138.131.1:14580 | aprsd.client.drivers.lib.aprslib:_connect:69 + 2025-12-10 14:32:33.869 | MainThread | INFO | Connected to ('155.138.131.1', 14580) | aprsd.client.drivers.lib.aprslib:_connect:78 + 2025-12-10 14:32:33.900 | MainThread | DEBUG | Banner: # aprsc 2.1.19-g730c5c0 | aprsd.client.drivers.lib.aprslib:_connect:96 + 2025-12-10 14:32:33.900 | MainThread | DEBUG | Sending login information | aprsd.client.drivers.lib.aprslib:_send_login:180 + 2025-12-10 14:32:33.924 | MainThread | DEBUG | Server: '# logresp WB4BOR-1 verified, server T2CAEAST' | aprsd.client.drivers.lib.aprslib:_send_login:190 + 2025-12-10 14:32:33.924 | MainThread | INFO | Login successful | aprsd.client.drivers.lib.aprslib:_send_login:212 + 2025-12-10 14:32:33.924 | MainThread | INFO | Connected to T2CAEAST | aprsd.client.drivers.lib.aprslib:_send_login:214 + 2025-12-10 14:32:33.924 | MainThread | INFO | Creating client connection | aprsd.cmds.listen:listen:242 + 2025-12-10 14:32:33.924 | MainThread | INFO | | aprsd.cmds.listen:listen:244 + 2025-12-10 14:32:33.924 | MainThread | DEBUG | Filter messages on aprsis server by '('m/300',)' | aprsd.cmds.listen:listen:252 + 2025-12-10 14:32:33.924 | MainThread | INFO | Setting filter to: ('m/300',) | aprslib.inet:set_filter:83 + 2025-12-10 14:32:33.925 | MainThread | INFO | No packet filtering enabled. | aprsd.cmds.listen:listen:268 + 2025-12-10 14:32:33.925 | MainThread | WARNING | Not Loading any plugins use --load-plugins to load what's defined in the config file. | aprsd.cmds.listen:listen:282 + 2025-12-10 14:32:33.925 | StatsStore | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:32:33.925 | MainThread | DEBUG | Start APRSDRxThread | aprsd.cmds.listen:listen:294 + 2025-12-10 14:32:33.926 | RX_PKT | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:32:33.926 | MainThread | DEBUG | Create APRSDListenProcessThread | aprsd.cmds.listen:listen:298 + 2025-12-10 14:32:33.926 | MainThread | DEBUG | Start APRSDListenProcessThread | aprsd.cmds.listen:listen:306 + 2025-12-10 14:32:33.926 | ListenProcThread | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:32:33.926 | KeepAlive | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:32:33.926 | MainThread | DEBUG | keepalive Join | aprsd.cmds.listen:listen:313 + 2025-12-10 14:32:34.927 | RX_PKT | DEBUG | Server: # filter m/300 active | aprsd.client.drivers.lib.aprslib:consumer:255 + 2025-12-10 14:32:34.942 | RX_PKT | INFO | RX(1)↓ MicEPacket:None WX4EMC-1 →WIDE1-1→WIDE2-2→qAR→W4VA-13→ S8QQ8S : Lat:38.197 Lon:-77.561 101 mbits : Northeast@91.78miles | aprsd.packets.log:log:170 + 2025-12-10 14:32:34.965 | RX_PKT | INFO | RX(2)↓ BeaconPacket:None W4MUP-10 →TCPIP*→qAS→W4MUP→ APMI06 : Lat:36.208 Lon:-80.269 Igate and Digi U=13.3V : Southwest@111.08miles | aprsd.packets.log:log:170 + 2025-12-10 14:32:35.996 | RX_PKT | INFO | RX(3)↓ WeatherPacket:None W4MLN-1 →TCPIP*→qAC→T2CAEAST→ APN000 : Temp 009F Humidity 49% Wind 007MPH@261 Pressure 999.7mb Rain 0.01in/24hr : West-Southwest@157.78miles | aprsd.packets.log:log:170 + 2025-12-10 14:32:37.669 | RX_PKT | INFO | RX(4)↓ BeaconPacket:None W4GER →TCPIP*→qAC→T2SYDNEY→ APOSB4 : Lat:38.735 Lon:-77.279 SharkRF openSPOT4 : Northeast@128.60miles | aprsd.packets.log:log:170 + 2025-12-10 14:32:37.943 | RX_PKT | INFO | RX(5)↓ BeaconPacket:None NM5ER-10 →TCPIP*→qAC→T2SYDNEY→ APLRG1 : Lat:36.440 Lon:-81.140 LoRa APRS : West-Southwest@141.12miles | aprsd.packets.log:log:170 + +The listen command connects to the APRS-IS network and displays packets matching the specified filter. +In the example above, packets within 300 miles are displayed, showing various packet types including MicEPacket, +BeaconPacket, and WeatherPacket. + +Key differences from the server command +---------------------------------------- + +Unlike the ``aprsd server`` command, the listen command: + +- Does not load plugins by default (use ``--load-plugins`` to enable them) +- Does not respond to messages +- Is designed for monitoring and logging APRS traffic +- Supports APRS-IS filter syntax for targeted packet monitoring + +.. include:: links.rst diff --git a/docs/plugin.rst b/docs/plugin.rst index 534231e..4d00985 100644 --- a/docs/plugin.rst +++ b/docs/plugin.rst @@ -1,6 +1,63 @@ APRSD Command Plugin Development ================================ +Creating a Plugin Project +------------------------- + +The recommended way to create a new APRSD plugin project is to use the `cookiecutter-aprsd-plugin`_ template. This template provides a complete project structure with all the necessary files, testing infrastructure, and documentation setup. + +Installation +~~~~~~~~~~~~ + +First, install cookiecutter if you haven't already:: + + pip install cookiecutter + +Creating a New Plugin Project +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Run cookiecutter with the APRSD plugin template:: + + cookiecutter gh:hemna/cookiecutter-aprsd-plugin + +Cookiecutter will prompt you for several pieces of information: + +* **plugin_name**: The name of your plugin (e.g., ``aprsd-my-plugin``) +* **plugin_module_name**: The Python module name (e.g., ``aprsd_my_plugin``) +* **author_name**: Your name or organization name +* **author_email**: Your email address +* **description**: A brief description of your plugin +* **version**: Initial version (default: ``0.1.0``) + +Project Structure +~~~~~~~~~~~~~~~~~ + +The cookiecutter template creates a complete project structure including: + +* **Test automation** with Tox +* **Linting** with pre-commit and Flake8 +* **Continuous integration** with GitHub Actions +* **Documentation** with Sphinx and Read the Docs +* **Automated uploads** to PyPI and TestPyPI +* **Automated dependency updates** with Dependabot +* **Code formatting** with Gray +* **Testing** with pytest +* **Code coverage** with Coverage.py +* **Coverage reporting** with Codecov + +The generated project follows Python packaging best practices and includes: + +* Proper ``setup.py`` and ``pyproject.toml`` configuration +* Entry point registration for APRSD plugin discovery +* Test suite structure +* Documentation templates +* CI/CD pipeline configuration + +For more information about the cookiecutter template, visit the `cookiecutter-aprsd-plugin repository`_. + +.. _cookiecutter-aprsd-plugin: https://github.com/hemna/cookiecutter-aprsd-plugin +.. _cookiecutter-aprsd-plugin repository: https://github.com/hemna/cookiecutter-aprsd-plugin + APRSDPluginBase ------------------------ diff --git a/docs/server.rst b/docs/server.rst index 8fc28fd..e9659d0 100644 --- a/docs/server.rst +++ b/docs/server.rst @@ -14,40 +14,151 @@ running. The server will start several threads to deal handle incoming messages, outgoing messages, checking and sending email. +How APRSD processes messages +----------------------------- + +When APRSD receives an APRS message packet, it follows a structured processing flow: + +1. **Packet Reception**: The ``RX_PKT`` thread receives packets from the APRS-IS network + and places them into a packet queue. + +2. **Packet Processing**: The ``ProcessPKT`` thread processes packets from the queue. + It determines if the packet is: + + - An ACK packet destined for APRSD (handled separately) + - A Reject packet (handled separately) + - A MessagePacket destined for APRSD's callsign + - Other packet types (beacons, weather, etc.) + +3. **Message Routing**: When a MessagePacket is received that is addressed to APRSD's + callsign, the packet is sent to the ``process_our_message_packet`` method. + +4. **Plugin Processing**: The message packet is passed to the PluginManager, which: + + - Iterates through all registered plugins in the order they were configured + - For each plugin, checks if the message matches the plugin's regex pattern + - If a match is found, calls the plugin's ``process()`` method with the packet + - Collects any reply messages returned by the plugins + +5. **Response Handling**: Any reply messages returned by plugins are sent back to the + original sender via the APRS-IS network. Plugins can return: + + - A string message (converted to a MessagePacket) + - A Packet object (sent as-is) + - A list of messages (multiple replies) + - ``NULL_MESSAGE`` (indicates the plugin processed the message but has no reply) + +6. **ACK Handling**: After processing, if the message had a message ID, APRSD + automatically sends an ACK packet to acknowledge receipt. + +This plugin-based architecture allows APRSD to be extended with custom functionality +without modifying the core codebase. Each plugin can independently process messages +and respond as needed. See the :doc:`plugin ` documentation for information +on creating your own plugins. + .. code-block:: shell - [MainThread ] [INFO ] APRSD Started version: 1.5.1 - [MainThread ] [INFO ] Checking IMAP configuration - [MainThread ] [INFO ] Checking SMTP configuration - [MainThread ] [DEBUG] Connect to SMTP host SSL smtp.gmail.com:465 with user 'test@hemna.com' - [MainThread ] [DEBUG] Connected to smtp host SSL smtp.gmail.com:465 - [MainThread ] [DEBUG] Logged into SMTP server SSL smtp.gmail.com:465 - [MainThread ] [INFO ] Validating 2 Email shortcuts. This can take up to 10 seconds per shortcut - [MainThread ] [ERROR] 'craiglamparter@somedomain.org' is an invalid email address. Removing shortcut - [MainThread ] [INFO ] Available shortcuts: {'wb': 'waboring@hemna.com'} - [MainThread ] [INFO ] Loading Core APRSD Command Plugins - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.email.EmailPlugin'(1.0) '^-.*' - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.fortune.FortunePlugin'(1.0) '^[fF]' - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.location.LocationPlugin'(1.0) '^[lL]' - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.ping.PingPlugin'(1.0) '^[pP]' - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.query.QueryPlugin'(1.0) '^\?.*' - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.time.TimePlugin'(1.0) '^[tT]' - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.weather.WeatherPlugin'(1.0) '^[wW]' - [MainThread ] [INFO ] Registering Command plugin 'aprsd.plugins.version.VersionPlugin'(1.0) '^[vV]' - [MainThread ] [INFO ] Skipping Custom Plugins directory. - [MainThread ] [INFO ] Completed Plugin Loading. - [MainThread ] [DEBUG] Loading saved MsgTrack object. - [RX_MSG ] [INFO ] Starting - [TX_MSG ] [INFO ] Starting - [MainThread ] [DEBUG] KeepAlive Tracker(0): {} - [RX_MSG ] [INFO ] Creating aprslib client - [RX_MSG ] [INFO ] Attempting connection to noam.aprs2.net:14580 - [RX_MSG ] [INFO ] Connected to ('198.50.198.139', 14580) - [RX_MSG ] [DEBUG] Banner: # aprsc 2.1.8-gf8824e8 - [RX_MSG ] [INFO ] Sending login information - [RX_MSG ] [DEBUG] Server: # logresp KM6XXX-14 verified, server T2VAN - [RX_MSG ] [INFO ] Login successful - [RX_MSG ] [DEBUG] Logging in to APRS-IS with user 'KM6XXX-14' + ❯ aprsd server --loglevel DEBUG + 2025-12-10 14:30:05.146 | MainThread | INFO | Python version: 3.10.14 (main, Aug 14 2024, 05:14:46) [Clang 18.1.8 ] | aprsd.cmds.server:server:43 + 2025-12-10 14:30:05.147 | MainThread | INFO | APRSD Started version: 4.2.5.dev8+g9c0695794 | aprsd.cmds.server:server:44 + 2025-12-10 14:30:05.147 | MainThread | INFO | APRSD is up to date | aprsd.cmds.server:server:49 + 2025-12-10 14:30:05.167 | MainThread | INFO | Creating aprslib client(155.138.131.1:14580) and logging in WB4BOR-1. try #1 | aprsd.client.drivers.aprsis:setup_connection:103 + 2025-12-10 14:30:05.167 | MainThread | INFO | Attempting connection to 155.138.131.1:14580 | aprsd.client.drivers.lib.aprslib:_connect:69 + 2025-12-10 14:30:05.193 | MainThread | INFO | Connected to ('155.138.131.1', 14580) | aprsd.client.drivers.lib.aprslib:_connect:78 + 2025-12-10 14:30:05.232 | MainThread | DEBUG | Banner: # aprsc 2.1.19-g730c5c0 | aprsd.client.drivers.lib.aprslib:_connect:96 + 2025-12-10 14:30:05.232 | MainThread | DEBUG | Sending login information | aprsd.client.drivers.lib.aprslib:_send_login:180 + 2025-12-10 14:30:05.256 | MainThread | DEBUG | Server: '# logresp WB4BOR-1 verified, server T2CAEAST' | aprsd.client.drivers.lib.aprslib:_send_login:190 + 2025-12-10 14:30:05.256 | MainThread | INFO | Login successful | aprsd.client.drivers.lib.aprslib:_send_login:212 + 2025-12-10 14:30:05.256 | MainThread | INFO | Connected to T2CAEAST | aprsd.client.drivers.lib.aprslib:_send_login:214 + 2025-12-10 14:30:05.256 | MainThread | INFO | Creating client connection | aprsd.cmds.server:server:62 + 2025-12-10 14:30:05.256 | MainThread | INFO | | aprsd.cmds.server:server:64 + 2025-12-10 14:30:05.256 | MainThread | INFO | Loading Plugin Manager and registering plugins | aprsd.cmds.server:server:78 + 2025-12-10 14:30:05.257 | MainThread | INFO | Loading APRSD Plugins | aprsd.plugin:setup_plugins:493 + 2025-12-10 14:30:05.257 | MainThread | INFO | Registering Regex plugin 'aprsd.plugins.weather.AVWXWeatherPlugin'(4.2.5.dev8+g9c0695794) -- ^([m]|[m]|[m]\s|metar) | aprsd.plugin:_load_plugin:452 + 2025-12-10 14:30:05.257 | MainThread | INFO | Completed Plugin Loading. | aprsd.plugin:setup_plugins:513 + 2025-12-10 14:30:05.257 | MainThread | DEBUG | ******************************************************************************** | oslo_config.cfg:log_opt_values:2804 + 2025-12-10 14:30:05.257 | MainThread | DEBUG | Configuration options gathered from: | oslo_config.cfg:log_opt_values:2805 + 2025-12-10 14:30:05.257 | MainThread | DEBUG | command line args: [] | oslo_config.cfg:log_opt_values:2806 + 2025-12-10 14:30:05.257 | MainThread | DEBUG | config files: ['/Users/I530566/.config/aprsd/aprsd.conf'] | oslo_config.cfg:log_opt_values:2807 + 2025-12-10 14:30:05.257 | MainThread | DEBUG | ================================================================================ | oslo_config.cfg:log_opt_values:2809 + 2025-12-10 14:30:05.257 | MainThread | DEBUG | ack_rate_limit_period = 1 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | beacon_interval = 60 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | beacon_symbol = / | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | callsign = WB4BOR-1 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | config_dir = [] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | config_file = ['/Users/I530566/.config/aprsd/aprsd.conf'] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | config_source = [] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | default_ack_send_count = 3 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | default_packet_send_count = 3 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | enable_beacon = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | enable_packet_logging = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | enable_save = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | enable_seen_list = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | enable_sending_ack_packets = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | enabled_plugins = ['aprsd.plugins.weather.AVWXWeatherPlugin'] | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | is_digipi = False | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | latitude = 37.3443862 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | load_help_plugin = True | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | log_packet_format = compact | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | longitude = -78.850000 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | msg_rate_limit_period = 2 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.258 | MainThread | DEBUG | packet_dupe_timeout = 300 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | packet_list_maxlen = 5000 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | packet_list_stats_maxlen = 20 | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | save_location = /Users/I530566/.config/aprsd/ | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | shell_completion = None | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | trace_enabled = False | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | units = imperial | oslo_config.cfg:log_opt_values:2817 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | logging.enable_color = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | logging.enable_console_stdout = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | logging.log_level = INFO | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | logging.logfile = /tmp/aprsd.log | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | logging.logformat = {time:YYYY-MM-DD HH:mm:ss.SSS} | {thread.name: <18} | {level: <8} | {message} | {name}:{function:}:{line:} | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | watch_list.alert_callsign = WB4BOR-1 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | watch_list.alert_time_seconds = 3600 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | watch_list.callsigns = ['APPOMX', 'REPEAT', 'KM6LYW', 'WB4BOR', 'M0IAX', 'VE3SCN', 'WA4RTS-5', 'KC9BUH', 'W4SOU-7', 'KD9KAF-7', 'NN4RB-9', 'KN4MLN-9', 'KK4WZS-8', 'K2VIZ-1', 'KE3XE-9', 'WB2UTI-9', 'KO4ARL-7', 'LMS6CAE42', 'WDJ6895', 'PHISVR', 'F1BIS-9', 'M7APR-9', 'Y09INA-5', 'M0PLT-7', 'M0GLJ-14', 'MW6JUY-10', 'M0XZS', 'M0HPP-8', 'ON2BBW-8'] | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | watch_list.enabled = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | watch_list.packet_keep_count = 10 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | aprs_registry.description = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | aprs_registry.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | aprs_registry.frequency_seconds = 3600 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | aprs_registry.registry_url = https://aprs.hemna.com/api/v1/registry | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | aprs_registry.service_website = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.259 | MainThread | DEBUG | aprs_network.enabled = True | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | aprs_network.host = 155.138.131.1 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | aprs_network.login = WB4BOR-1 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | aprs_network.password = **** | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | aprs_network.port = 14580 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_serial.baudrate = 9600 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_serial.device = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_serial.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_serial.path = ['WIDE1-1', 'WIDE2-1'] | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_tcp.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_tcp.host = None | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_tcp.path = ['WIDE1-1', 'WIDE2-1'] | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | kiss_tcp.port = 8001 | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | fake_client.enabled = False | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | aprs_fi.apiKey = 152327.lds79D1bgvlbd | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | owm_weather_plugin.apiKey = e26b403324563f24a290fa1d06459bae | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | avwx_plugin.apiKey = Foo | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | avwx_plugin.base_url = https://avwx.rest | oslo_config.cfg:log_opt_values:2824 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | ******************************************************************************** | oslo_config.cfg:log_opt_values:2828 + 2025-12-10 14:30:05.260 | MainThread | INFO | Message Plugins enabled and running: | aprsd.cmds.server:server:86 + 2025-12-10 14:30:05.260 | MainThread | INFO | | aprsd.cmds.server:server:88 + 2025-12-10 14:30:05.260 | MainThread | INFO | | aprsd.cmds.server:server:88 + 2025-12-10 14:30:05.260 | MainThread | INFO | Watchlist Plugins enabled and running: | aprsd.cmds.server:server:89 + 2025-12-10 14:30:05.260 | MainThread | DEBUG | Loading saved packet tracking data. | aprsd.cmds.server:server:103 + 2025-12-10 14:30:05.261 | MainThread | DEBUG | PacketList::No save file found. | aprsd.utils.objectstore:load:113 + 2025-12-10 14:30:05.261 | MainThread | DEBUG | SeenList::No save file found. | aprsd.utils.objectstore:load:113 + 2025-12-10 14:30:05.261 | MainThread | DEBUG | PacketTrack::No save file found. | aprsd.utils.objectstore:load:113 + 2025-12-10 14:30:05.262 | MainThread | DEBUG | WatchList::Loaded 29 entries from disk. | aprsd.utils.objectstore:load:103 + 2025-12-10 14:30:05.262 | MainThread | INFO | Beacon Enabled. Starting Beacon thread. | aprsd.cmds.server:server:122 + 2025-12-10 14:30:05.262 | MainThread | INFO | Beacon thread is running and will send beacons every 60 seconds. | aprsd.threads.tx:__init__:253 + 2025-12-10 14:30:05.263 | KeepAlive | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:30:05.263 | StatsStore | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:30:05.263 | RX_PKT | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:30:05.264 | ProcessPKT | DEBUG | Starting | aprsd.threads.aprsd:run:64 + 2025-12-10 14:30:05.264 | BeaconSendThread | DEBUG | Starting | aprsd.threads.aprsd:run:64 .. include:: links.rst