This patch ensures that the pickle file is opened and closed correctly
as well as trapping for any exceptions that might occur while loading
a pickle file.
This patch initializes all of the MsgTrack, WatchList and SeenList
prior to the plugins loading. Some plugins may kick off messages
being sent immediately. So everything has to be ready to go
prior to the plugins being loaded.
This patch adds the new objectstore Mixin class that enables
classes that store their date in self.data as a serializeable dict,
to be able to be stored to disk at shutdown and loaded at startup.
The SeenList and WatchList are now saved/loaded to/from disk.
This patch adds the always enabled HelpPlugin. This plugin
now will respond to the 'help' or 'h' commands that will
automatically build a help string based on the number of
enabled plugins. It will also respond to
help <plugin> with the plugin specific help
This patch updates the aprsd-dev command's log file format
to use what's defined as the default and/or use the config file
setting like aprsd server does.
The email plugin was still using globals for tracking
the check_email_delay as well as the config. This
patch creates a new singleton thread safe mechanism for
check_email_delay with the EmailInfo class.
This patch completely refactors and simplifies how the clients
are created and used. There is no need now to have a separate
KISSRXThread. Since all the custom work for the KISS client is
encapsulated in the kiss client itself, the same RX thread and
callback mechanism works for both the APRSIS client and KISS Client
objects. There is also no need to determine which transport
(aprsis vs kiss) is being used at runtime by any of the messages
objects. The same API works for both APRSIS and KISS Client objects
Started noticing that aprs-is keepalive messages just stop
getting sent. This causes aprsd to basically disconnect from
the APRS network. Added a check into the KeepAlive thread to
restart the aprs-is connecter if the last time we got a keepalive
from apris is > 5 minutes.
This patch enables the ability for plugins to return:
* string
* list of strings
* message object
* list of strings and message ojects
Each string will be encapsulated in a message object prior being sent.
each message object will be sent directly.
Each list will be iterated over and processed according to the above 2
options.
This allows the admin interface to see which plugins are registered and
enabled. Enabled is a flag that is set in the setup() method of the
plugin. This gives the plugin developer a chance to disable the plugin
if something isn't right at setup time. This allows aprsd to ignore
plugins that are registered but not emabled.
If the logging queue gets full, due to a maxsize being set,
then any further logs will result on lots of errors being dumped
to stderr as the queue is full.
This patch adds a live view of the aprsd logfile in
the admin ui. This uses a new Log QueueHandler and the
threads.logging_queue to push log entries into a queue.
The flask websockets server will push those log entries up
to a connected client browser.
When the admin user users the web ui to send a message
a new client instance is created with login credentials for
that particular message. This patch ensures that send_direct
uses that client.