This ensures that we stop all collectors at the start of the
exit signal handlers. This helps prevent restarting the client
after the threads have been asked to stop.
created new package module that gets information from installed
plugins and extensions so we can print it out to log at startup.
Updated commands to output the the installed extensions and plugins
This updates a string output in process_other_packet where
the string being output wasn't prefixed with the f character
to denote that python needed to format the contents with the object.
The tcpkiss client's stats method wasn't serializing all of
the datetime objects. This patch ensures that all the dates
in the stats are serializable when requested.
This will help Craig with custom code changes that might be
needed only on the digipi. He likes to modify the UI for
webchat. So in the new webchat extension simply add a call
if CONF.is_digipi:
# Do your awesome changes here
else:
# normal aprsd/webchat stuffs here.
This adds another sanity try, except block at the
APRSDClient level call for decode_packet, just in
case the driver itself fails in it's decode_packet()
call.
This patch includes a completely reworked client structure.
There is now only 1 client object, that loads the appropriate
drivers. The drivers are fake, aprsis and tcpkiss.
The TCPKISS client was written from scratch to avoid using asyncio.
Asyncion is nothing but a pain in the ass.
This updates the docker-compose.yml example file to show
how to install 2 plugins for the aprsd-server container
and how to deploy the admin interface container.
This patch adds the new PacketFilter class as a generic mechanism
for doing packet filtering during the packet processing phase of
recieving packets.
The packet phases are:
1. reception and stats collection
2. packet processing.
Each phase has a single thread for handling that phase.
Phase 1:
The ARPSDRXThread connects to the APRS client, and gets packets
from the client. Then it puts the packet through the Collector
for stats and tracking. Then the packet is put into the packet_queue.
Phase 2:
Packets are pulled from the packet_queue. Then packets are run
through the PacketFilter mechanism, then processed depending
on the command being run.
By default there is 1 loaded packet filter, which is the
DupePacketFilter which removes "duplicate" packets that aprsd has
already seen and processed within the configured time frame.
This PacketFilter mechanism allows an external extension or plugin
to add/remove packet filters at will depending on the function
of the extension or plugin. For example, this allows an extension
to get a packet and push the packet into an MQTT queue.