this patch refactors the client, drivers and client factory
to use the same Protocol mechanism used by the stats collector
to construct the proper client to be used according to
the configuration
This patch reworks the main Dockerfile to do builds for
both the pypi upstream release of aprsd as well as the
github repo branch of aprsd for development. This eliminates
the need for Dockerfile-dev.
This patch also installs aprsd as a user in the container image
instead of as root.
This patch also removes the setup.cfg and replaces it with
the pyproject.toml.
This also renames the dev-requirements.txt to requirements-dev.txt
To install dev
pip install -e ".[dev]"
This patch overrides the base QueueHandler class
from logging to ensure that the queue doesn't grow
infinitely. That can be a problem when there is
no consumer pulling items out of the queue.
the queue is now capped at 200 entries max.
this patch changes the entrypoint and commands to be in line
with how Docker defines their usage. this allows the admin using
this container to specify which command to run in the
docker-compose.yml if they want to run something other than the
aprsd server command.
This now allows to easily run webchat as a container :)!
This patch adds some try except blocks in both the stats collector
and the packets collector calls to registered objects. This can
prevent the rest of APRSD falling down when the collector objects
have a failure of some sort.
this patch adds the new PacketCollector class.
It's a single point for collecting information about
packets sent and recieved from the APRS client.
Basically instead of having the packetlist call the seen list
when we get a packet, we simply call the PacketCollector.rx(),
which in turn calls each registered PacketMonitor class.
This allows us to decouple the packet stats like classses inside
of APRSD. More importantly, it allows extensions to append their
own PacketMonitor class to the chain without modifying ARPSD.
This patch adds support for processing incoming packets that have
the 'new' acks embedded in messages called replyacks as described here:
http://www.aprs.org/aprs11/replyacks.txt
This patch changes the stats Collector object registration
to take a class name instead of an object. This allows the
app to start up and fetch the configuration correctly so that
when objects are created the CONF has the proper values.
This is so singleton objects can assign settings values at
creation time.
If you want a constructor time member to have a
value you have to set it after the stats collector
registration is done because it will only be the default
since the CONF isn't setup at that point yet.