This patch updates the aprsd listen command to add the packet-plugins
argument which allows enabling a single plugin to work against the
packets recieved from the aprsis network.
This patch adds basic ratelimiting to sending out AckPackets
and non AckPackets. This provides a basic way to prevent
aprsd from sending out packets as fast as possible, which isn't
great for a bandwidth limited network.
This patch also adds some keepalive checks to all threads in the
threadslist as well as the network client objects (apris, kiss)
For whatever reason passing in group in python 3.9.x
fails for importlib_metadata.entry_points. This patch
fetches all and filters through them to get the real
oslo.config.opts entry points now. This is to find all
of the config options of aprsd and the plugins
After adding the rpc service for aprsd server and separating the
admin web REST interface, healthcheck no longer worked. The stats
are available via rpc now.
This patch adds the ObjectPacket. This is used by the REPEAT plugins
to send out an object in message packet to let radios tune directly
to the station.
The regex search is now by default case insensitive.
Also update each core plugin to better match the command.
ping plugin can now match on
p
p foo
ping
pIng
Weather plugins can now match on
w
wx
wX
Wx KM6LYW
weather
WeaTher
This patch moves the plugin manager to early in the startup
process so that the plugins get loaded, which also means each
plugin's custom config settings will be in the CONF object.
This allows dumping the entire CONF with all the plugin settings.
This patch introduces rpyc based RPC client/server for
the flask web interface to call into the running aprsd server
command to fetch stats, logs, etc to send to the browser.
This allows running the web interface via gunicorn command
gunicorn -k gevent --reload --threads 10 -w 1 aprsd.flask:app --log-level DEBUG
This patch is the initial conversion of the custom config
and config file yaml format to oslo_config's configuration mechanism.
The resulting config format is now an ini type file.
The default location is ~/.config/aprsd/aprsd.conf
This is a backwards incompatible change. You will have to rebuild
the config file and edit it.
Also any aprsd plugins can now define config options in code and
add an setup.cfg entry_point definition
oslo_config.opts =
foo.conf = foo.conf:list_opts
This patch decouples sending a message from the internals of
the Packet classes. This allows the rest of the code to use
Packet objects as type hints in methods to enforce Packets
in the plugins.
The send method was moved to a single place in the threads.tx.send()
This patch updates both the webchat and listen commands
to be able to use the new queue based packet RX processing.
APRSD used to start a thread for every packet received, now
packets are pushed into a queue for processing by other threads
already running.
This patch cleans up the Packet class attributes used to
keep track of how many times packets have been sent and
the last time they were sent. This is used by the PacketTracker
and the tx threads for transmitting packets