This patch adds the new feature of trying to fetch the location
distance and bearing for each callsign in the webchat tabs.
This is handy when out on the go, you can get a general idea
where the other callsign is when chatting with them.
First aprsd webchat tries to fetch the location with aprs.fi
REST api call. This assumes internet access. If this fails,
then webchat will send a special message to REPEAT to ask it for
the location information for the callsign. This will send over
the air.
This patch adds a new popover in the webchat tab to show
the location information for a callsign.
webchat will try to hit aprs.fi to fetch the location from the
callsign's last beacon. If there is no internet, this will fail
and webchat will send a request to REPEAT callsign for the location
information.
This patch adds the new packet_dump_timeout config option, defaulting to
60 seconds. If the same packet matching the from, to, msgNo is RX'd
within that timeout the packet is considered a dupe and will be
dropped. Ack packets are not subject to dupe checking.
This patch adds the ability to webchat to set the path
on every outbound packet for the KISS clients as well as
the fake client. The path dropdown includes the options for
Default path (which will default to the config setting)
WIDE1-1,WIDE2-1
ARISS
This patch adds an auto mouseover hover popover for displaying
the raw APRS packet.
This patch also adds the notification counter for an unselected tab.
This patch changes the order of the threads starting. The Keepalive
thread's job is to test the aprsis/kiss client to see if it's up and
running, and then issue a reset if it's down. On SIGINT, the keepalive
might issue that reset in the middle of a shutdown, which might cause
things to hang when everything should be shutting down. Making the
KeepaliveThread first, means it will be the first to be shut down as
well, preventing the next loop from resetting the client.
This patch updates the web ui for webchat to suppress the displaying
of duplicate recieved messages. Dupes can happen over the KISS
interface due to packets being encapsulated by nearby repeaters into 3rd
party packets.
When a dupe message is recieved, the dupe message is flashed 3 times.
This patch makes use of the gps settings in the webchat section.
If the user sets the latitude and longitude in the config file, then
the gps beacon button will be enabled. The gps button will still be
enabled if the http connection is over SSL.
This patch adds a new webchat config section to specify:
web_ip (the ip address to listen on)
web_port
latitude (latitude to use for the GPS beacon button)
longitude (long to use for the GPS beacon button)
This immediately breaks the beacon button.
This patch removes the dep for pyopenssl and cryptography
so that aprsd install on the rpi.
Unfortunately in order for the web page to get the Lat/Lon, the
browser must be connected over SSL. Will have to create a workaround
for this later.
This patch adjusts the backoff mechanism for aprs client
reconnect to a max backoff sleep of 5 seconds. This prevents
an exponential backoff when connection retrying.
This patch removed the dependency on flask-classful. This required
making all of the flask web routing non class based.
This patch also changes the aprsis class to allow retries for failed
connections when the aprsis servers are full and not responding to
login requests.
This patch replaces the ratelimiter library with rush for rate limiting
as the ratelimiter package doesn't work with python 3.11.
This patch also refactors the flask.pu to admin_web.py and
aprsd.py to main.py
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 adds the needed code to construct the raw output
string for sending a GPSPacket.
TODO: Need to incorporate speed, course, rng, position ambiguity ?
TODO: Need to add option to 'compress' the output location data.
This patch reworks all the packet processing to use the new
Packets objects. Nuked all of the messaging classes.
backwards incompatible changes
all messaging.py classes are now gone and replaced by
packets.py classes
With more testing of the webchat beaconing, found a problem
with the packet format for the beacon. This patch fixes the
packet format of the beacon.
Also added a timeout when trying to get the GPS location in the browser,
otherwise it could never come back.
the device detector was taking 1 minute on a raspi to parse out the
user-agent string from the browser. user-agents takes 2 seconds,
which still isn't great, but 'doable' for the webchat interface.
This patch refactors the rx threads a bit to reuse some code
responsible for processing acks when packets are received.
This also eliminates a custom thread in the webchat command for
processing received packets now that there is common code in the base
classes.
This patchset allow getting the GPS coordinates from the browser's
geolocation API (which can be denied by user), then send's the GPS
coordinates to aprsd via socketio and then aprsd sends a beacon.
This allows the APRS network to know the location of the person running
the webchat app via browser so packets can get routed back to it.
This patch reworks the KISS client to get rid of
aioax25 as it was too difficult to work with due to
heavy use of asyncio.
Switched to the kiss3 pypi library.
This patch changes how aprsd identifies itself when connected to
any client, which is not relying on the login for each client.
There are 3 supported clients currently
aprsis,
tcpkiss
serialkiss.
Each client has their own potential login/callsign to connect
to the remote. This patch tells aprsd to use the new config option
aprsd.callsign as a means to identify itself. It will accept
packets as <aprsd.callsign> and reply as <aprsd.callsign> regardless
of which client object is being used to connect to the remote.
Note: this breaks backwards compatibility. This patch now requires
the new config option
aprsd:
callsign: <callsign>