mirror of https://github.com/craigerl/aprsd.git
Update documentation and README
This updates the documentation in prep for 3.0.0
This commit is contained in:
parent
ff392395ed
commit
c929689647
|
@ -1,6 +1,12 @@
|
||||||
CHANGES
|
CHANGES
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
* Decouple admin web interface from server command
|
||||||
|
* Dockerfile now produces aprsd.conf
|
||||||
|
* Fix some unit tests and loading of CONF w/o file
|
||||||
|
* Added missing conf
|
||||||
|
* Removed references to old custom config
|
||||||
|
* Convert config to oslo\_config
|
||||||
* Added rain formatting unit tests to WeatherPacket
|
* Added rain formatting unit tests to WeatherPacket
|
||||||
* Fix Rain reporting in WeatherPacket send
|
* Fix Rain reporting in WeatherPacket send
|
||||||
* Removed Packet.send()
|
* Removed Packet.send()
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -22,7 +22,7 @@ dev: venv ## Create a python virtual environment for development of aprsd
|
||||||
|
|
||||||
run: venv ## Create a virtual environment for running aprsd commands
|
run: venv ## Create a virtual environment for running aprsd commands
|
||||||
|
|
||||||
docs: build
|
docs: dev
|
||||||
cp README.rst docs/readme.rst
|
cp README.rst docs/readme.rst
|
||||||
cp Changelog docs/changelog.rst
|
cp Changelog docs/changelog.rst
|
||||||
tox -edocs
|
tox -edocs
|
||||||
|
|
205
README.rst
205
README.rst
|
@ -52,39 +52,49 @@ Current list of built-in plugins
|
||||||
::
|
::
|
||||||
|
|
||||||
└─> aprsd list-plugins
|
└─> aprsd list-plugins
|
||||||
🐍 APRSD Built-in Plugins 🐍
|
🐍 APRSD Built-in Plugins 🐍
|
||||||
┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||||
┃ Plugin Name ┃ Info ┃ Type ┃ Plugin Path ┃
|
┃ Plugin Name ┃ Info ┃ Type ┃ Plugin Path ┃
|
||||||
┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||||
│ AVWXWeatherPlugin │ AVWX weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.AVWXWeatherPlugin │
|
│ AVWXWeatherPlugin │ AVWX weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.AVWXWeatherPlugin │
|
||||||
│ EmailPlugin │ Send and Receive email │ RegexCommand │ aprsd.plugins.email.EmailPlugin │
|
│ EmailPlugin │ Send and Receive email │ RegexCommand │ aprsd.plugins.email.EmailPlugin │
|
||||||
│ FortunePlugin │ Give me a fortune │ RegexCommand │ aprsd.plugins.fortune.FortunePlugin │
|
│ FortunePlugin │ Give me a fortune │ RegexCommand │ aprsd.plugins.fortune.FortunePlugin │
|
||||||
│ LocationPlugin │ Where in the world is a CALLSIGN's last GPS beacon? │ RegexCommand │ aprsd.plugins.location.LocationPlugin │
|
│ LocationPlugin │ Where in the world is a CALLSIGN's last GPS beacon? │ RegexCommand │ aprsd.plugins.location.LocationPlugin │
|
||||||
│ NotifySeenPlugin │ Notify me when a CALLSIGN is recently seen on APRS-IS │ WatchList │ aprsd.plugins.notify.NotifySeenPlugin │
|
│ NotifySeenPlugin │ Notify me when a CALLSIGN is recently seen on APRS-IS │ WatchList │ aprsd.plugins.notify.NotifySeenPlugin │
|
||||||
│ OWMWeatherPlugin │ OpenWeatherMap weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.OWMWeatherPlugin │
|
│ OWMWeatherPlugin │ OpenWeatherMap weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.OWMWeatherPlugin │
|
||||||
│ PingPlugin │ reply with a Pong! │ RegexCommand │ aprsd.plugins.ping.PingPlugin │
|
│ PingPlugin │ reply with a Pong! │ RegexCommand │ aprsd.plugins.ping.PingPlugin │
|
||||||
│ QueryPlugin │ APRSD Owner command to query messages in the MsgTrack │ RegexCommand │ aprsd.plugins.query.QueryPlugin │
|
│ QueryPlugin │ APRSD Owner command to query messages in the MsgTrack │ RegexCommand │ aprsd.plugins.query.QueryPlugin │
|
||||||
│ TimeOWMPlugin │ Current time of GPS beacon's timezone. Uses OpenWeatherMap │ RegexCommand │ aprsd.plugins.time.TimeOWMPlugin │
|
│ TimeOWMPlugin │ Current time of GPS beacon's timezone. Uses OpenWeatherMap │ RegexCommand │ aprsd.plugins.time.TimeOWMPlugin │
|
||||||
│ TimeOpenCageDataPlugin │ Current time of GPS beacon timezone. Uses OpenCage │ RegexCommand │ aprsd.plugins.time.TimeOpenCageDataPlugin │
|
│ TimePlugin │ What is the current local time. │ RegexCommand │ aprsd.plugins.time.TimePlugin │
|
||||||
│ TimePlugin │ What is the current local time. │ RegexCommand │ aprsd.plugins.time.TimePlugin │
|
│ USMetarPlugin │ USA only METAR of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USMetarPlugin │
|
||||||
│ USMetarPlugin │ USA only METAR of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USMetarPlugin │
|
│ USWeatherPlugin │ Provide USA only weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USWeatherPlugin │
|
||||||
│ USWeatherPlugin │ Provide USA only weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USWeatherPlugin │
|
│ VersionPlugin │ What is the APRSD Version │ RegexCommand │ aprsd.plugins.version.VersionPlugin │
|
||||||
│ VersionPlugin │ What is the APRSD Version │ RegexCommand │ aprsd.plugins.version.VersionPlugin │
|
└───────────────────┴────────────────────────────────────────────────────────────┴──────────────┴─────────────────────────────────────────┘
|
||||||
└────────────────────────┴────────────────────────────────────────────────────────────┴──────────────┴───────────────────────────────────────────┘
|
|
||||||
|
|
||||||
|
|
||||||
Pypi.org APRSD Installable Plugin Packages
|
Pypi.org APRSD Installable Plugin Packages
|
||||||
|
|
||||||
Install any of the following plugins with pip install <Plugin Package Name>
|
Install any of the following plugins with 'pip install <Plugin Package Name>'
|
||||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
|
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
|
||||||
┃ Plugin Package Name ┃ Description ┃ Version ┃ Released ┃ Installed? ┃
|
┃ Plugin Package Name ┃ Description ┃ Version ┃ Released ┃ Installed? ┃
|
||||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
|
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
|
||||||
│ 📂 aprsd-stock-plugin │ Ham Radio APRSD Plugin for fetching stock quotes │ 0.1.2 │ Nov 9, 2021 │ No │
|
│ 📂 aprsd-stock-plugin │ Ham Radio APRSD Plugin for fetching stock quotes │ 0.1.3 │ Dec 2, 2022 │ No │
|
||||||
│ 📂 aprsd-weewx-plugin │ HAM Radio APRSD that reports weather from a weewx weather station. │ 0.1.4 │ Dec 7, 2021 │ No │
|
│ 📂 aprsd-sentry-plugin │ Ham radio APRSD plugin that does.... │ 0.1.2 │ Dec 2, 2022 │ No │
|
||||||
│ 📂 aprsd-telegram-plugin │ Ham Radio APRS APRSD plugin for Telegram IM service │ 0.1.2 │ Nov 9, 2021 │ No │
|
│ 📂 aprsd-timeopencage-plugin │ APRSD plugin for fetching time based on GPS location │ 0.1.0 │ Dec 2, 2022 │ No │
|
||||||
│ 📂 aprsd-twitter-plugin │ Python APRSD plugin to send tweets │ 0.3.0 │ Dec 7, 2021 │ No │
|
│ 📂 aprsd-weewx-plugin │ HAM Radio APRSD that reports weather from a weewx weather station. │ 0.1.4 │ Dec 7, 2021 │ Yes │
|
||||||
│ 📂 aprsd-slack-plugin │ Amateur radio APRS daemon which listens for messages and responds │ 1.0.4 │ Jan 15, 2021 │ No │
|
│ 📂 aprsd-repeat-plugins │ APRSD Plugins for the REPEAT service │ 1.0.12 │ Dec 2, 2022 │ No │
|
||||||
└──────────────────────────┴────────────────────────────────────────────────────────────────────┴─────────┴──────────────┴────────────┘
|
│ 📂 aprsd-telegram-plugin │ Ham Radio APRS APRSD plugin for Telegram IM service │ 0.1.3 │ Dec 2, 2022 │ No │
|
||||||
|
│ 📂 aprsd-twitter-plugin │ Python APRSD plugin to send tweets │ 0.3.0 │ Dec 7, 2021 │ No │
|
||||||
|
│ 📂 aprsd-slack-plugin │ Amateur radio APRS daemon which listens for messages and responds │ 1.0.5 │ Dec 18, 2022 │ No │
|
||||||
|
└──────────────────────────────┴────────────────────────────────────────────────────────────────────┴─────────┴──────────────┴────────────┘
|
||||||
|
|
||||||
|
|
||||||
|
🐍 APRSD Installed 3rd party Plugins 🐍
|
||||||
|
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||||
|
┃ Package Name ┃ Plugin Name ┃ Version ┃ Type ┃ Plugin Path ┃
|
||||||
|
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||||
|
│ aprsd-weewx-plugin │ WeewxMQTTPlugin │ 1.0 │ RegexCommand │ aprsd_weewx_plugin.weewx.WeewxMQTTPlugin │
|
||||||
|
└────────────────────┴─────────────────┴─────────┴──────────────┴──────────────────────────────────────────┘
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
=============
|
=============
|
||||||
|
@ -99,10 +109,10 @@ Example usage
|
||||||
``aprsd -h``
|
``aprsd -h``
|
||||||
|
|
||||||
Help
|
Help
|
||||||
----
|
====
|
||||||
::
|
::
|
||||||
|
|
||||||
└─[$] > aprsd -h
|
└─> aprsd -h
|
||||||
Usage: aprsd [OPTIONS] COMMAND [ARGS]...
|
Usage: aprsd [OPTIONS] COMMAND [ARGS]...
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
@ -116,18 +126,19 @@ Help
|
||||||
healthcheck Check the health of the running aprsd server.
|
healthcheck Check the health of the running aprsd server.
|
||||||
list-plugins List the built in plugins available to APRSD.
|
list-plugins List the built in plugins available to APRSD.
|
||||||
listen Listen to packets on the APRS-IS Network based on FILTER.
|
listen Listen to packets on the APRS-IS Network based on FILTER.
|
||||||
sample-config This dumps the config to stdout.
|
sample-config Generate a sample Config file from aprsd and all...
|
||||||
send-message Send a message to a callsign via APRS_IS.
|
send-message Send a message to a callsign via APRS_IS.
|
||||||
server Start the aprsd server gateway process.
|
server Start the aprsd server gateway process.
|
||||||
version Show the APRSD version.
|
version Show the APRSD version.
|
||||||
|
webchat Web based HAM Radio chat program!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Commands
|
Commands
|
||||||
--------
|
========
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
^^^^^^^^^^^^^
|
=============
|
||||||
This command outputs a sample config yml formatted block that you can edit
|
This command outputs a sample config yml formatted block that you can edit
|
||||||
and use to pass in to ``aprsd`` with ``-c``. By default aprsd looks in ``~/.config/aprsd/aprsd.yml``
|
and use to pass in to ``aprsd`` with ``-c``. By default aprsd looks in ``~/.config/aprsd/aprsd.yml``
|
||||||
|
|
||||||
|
@ -136,108 +147,10 @@ and use to pass in to ``aprsd`` with ``-c``. By default aprsd looks in ``~/.con
|
||||||
::
|
::
|
||||||
|
|
||||||
└─> aprsd sample-config
|
└─> aprsd sample-config
|
||||||
aprs:
|
...
|
||||||
# Set enabled to False if there is no internet connectivity.
|
|
||||||
# This is useful for a direwolf KISS aprs connection only.
|
|
||||||
|
|
||||||
# Get the passcode for your callsign here:
|
|
||||||
# https://apps.magicbug.co.uk/passcode
|
|
||||||
enabled: true
|
|
||||||
host: rotate.aprs2.net
|
|
||||||
login: CALLSIGN
|
|
||||||
password: '00000'
|
|
||||||
port: 14580
|
|
||||||
aprsd:
|
|
||||||
dateformat: '%m/%d/%Y %I:%M:%S %p'
|
|
||||||
email:
|
|
||||||
enabled: true
|
|
||||||
imap:
|
|
||||||
debug: false
|
|
||||||
host: imap.gmail.com
|
|
||||||
login: IMAP_USERNAME
|
|
||||||
password: IMAP_PASSWORD
|
|
||||||
port: 993
|
|
||||||
use_ssl: true
|
|
||||||
shortcuts:
|
|
||||||
aa: 5551239999@vtext.com
|
|
||||||
cl: craiglamparter@somedomain.org
|
|
||||||
wb: 555309@vtext.com
|
|
||||||
smtp:
|
|
||||||
debug: false
|
|
||||||
host: smtp.gmail.com
|
|
||||||
login: SMTP_USERNAME
|
|
||||||
password: SMTP_PASSWORD
|
|
||||||
port: 465
|
|
||||||
use_ssl: false
|
|
||||||
enabled_plugins:
|
|
||||||
- aprsd.plugins.email.EmailPlugin
|
|
||||||
- aprsd.plugins.fortune.FortunePlugin
|
|
||||||
- aprsd.plugins.location.LocationPlugin
|
|
||||||
- aprsd.plugins.ping.PingPlugin
|
|
||||||
- aprsd.plugins.query.QueryPlugin
|
|
||||||
- aprsd.plugins.stock.StockPlugin
|
|
||||||
- aprsd.plugins.time.TimePlugin
|
|
||||||
- aprsd.plugins.weather.USWeatherPlugin
|
|
||||||
- aprsd.plugins.version.VersionPlugin
|
|
||||||
logfile: /tmp/aprsd.log
|
|
||||||
logformat: '[%(asctime)s] [%(threadName)-20.20s] [%(levelname)-5.5s] %(message)s
|
|
||||||
- [%(pathname)s:%(lineno)d]'
|
|
||||||
rich_logging: false
|
|
||||||
save_location: /Users/i530566/.config/aprsd/
|
|
||||||
trace: false
|
|
||||||
units: imperial
|
|
||||||
watch_list:
|
|
||||||
alert_callsign: NOCALL
|
|
||||||
alert_time_seconds: 43200
|
|
||||||
callsigns: []
|
|
||||||
enabled: false
|
|
||||||
enabled_plugins:
|
|
||||||
- aprsd.plugins.notify.NotifySeenPlugin
|
|
||||||
packet_keep_count: 10
|
|
||||||
web:
|
|
||||||
enabled: true
|
|
||||||
host: 0.0.0.0
|
|
||||||
logging_enabled: true
|
|
||||||
port: 8001
|
|
||||||
users:
|
|
||||||
admin: password-here
|
|
||||||
ham:
|
|
||||||
callsign: NOCALL
|
|
||||||
kiss:
|
|
||||||
serial:
|
|
||||||
baudrate: 9600
|
|
||||||
device: /dev/ttyS0
|
|
||||||
enabled: false
|
|
||||||
tcp:
|
|
||||||
enabled: false
|
|
||||||
host: direwolf.ip.address
|
|
||||||
port: '8001'
|
|
||||||
services:
|
|
||||||
aprs.fi:
|
|
||||||
# Get the apiKey from your aprs.fi account here:
|
|
||||||
# http://aprs.fi/account
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
avwx:
|
|
||||||
# (Optional for AVWXWeatherPlugin)
|
|
||||||
# Use hosted avwx-api here: https://avwx.rest
|
|
||||||
# or deploy your own from here:
|
|
||||||
# https://github.com/avwx-rest/avwx-api
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
base_url: http://host:port
|
|
||||||
opencagedata:
|
|
||||||
# (Optional for TimeOpenCageDataPlugin)
|
|
||||||
# Get the apiKey from your opencagedata account here:
|
|
||||||
# https://opencagedata.com/dashboard#api-keys
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
openweathermap:
|
|
||||||
# (Optional for OWMWeatherPlugin)
|
|
||||||
# Get the apiKey from your
|
|
||||||
# openweathermap account here:
|
|
||||||
# https://home.openweathermap.org/api_keys
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
|
|
||||||
server
|
server
|
||||||
^^^^^^
|
======
|
||||||
|
|
||||||
This is the main server command that will listen to APRS-IS servers and
|
This is the main server command that will listen to APRS-IS servers and
|
||||||
look for incomming commands to the callsign configured in the config file
|
look for incomming commands to the callsign configured in the config file
|
||||||
|
@ -277,7 +190,7 @@ look for incomming commands to the callsign configured in the config file
|
||||||
|
|
||||||
|
|
||||||
send-message
|
send-message
|
||||||
^^^^^^^^^^^^
|
============
|
||||||
|
|
||||||
This command is typically used for development to send another aprsd instance
|
This command is typically used for development to send another aprsd instance
|
||||||
test messages
|
test messages
|
||||||
|
@ -310,7 +223,7 @@ test messages
|
||||||
|
|
||||||
|
|
||||||
SEND EMAIL (radio to smtp server)
|
SEND EMAIL (radio to smtp server)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
=================================
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
|
@ -332,7 +245,7 @@ SEND EMAIL (radio to smtp server)
|
||||||
|
|
||||||
|
|
||||||
RECEIVE EMAIL (imap server to radio)
|
RECEIVE EMAIL (imap server to radio)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
====================================
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
|
@ -349,7 +262,7 @@ RECEIVE EMAIL (imap server to radio)
|
||||||
|
|
||||||
|
|
||||||
LOCATION
|
LOCATION
|
||||||
^^^^^^^^
|
========
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
|
@ -384,7 +297,7 @@ Development
|
||||||
* ``make``
|
* ``make``
|
||||||
|
|
||||||
Workflow
|
Workflow
|
||||||
--------
|
========
|
||||||
|
|
||||||
While working aprsd, The workflow is as follows:
|
While working aprsd, The workflow is as follows:
|
||||||
|
|
||||||
|
@ -413,7 +326,7 @@ While working aprsd, The workflow is as follows:
|
||||||
|
|
||||||
|
|
||||||
Release
|
Release
|
||||||
-------
|
=======
|
||||||
|
|
||||||
To do release to pypi:
|
To do release to pypi:
|
||||||
|
|
||||||
|
@ -435,10 +348,10 @@ To do release to pypi:
|
||||||
|
|
||||||
|
|
||||||
Docker Container
|
Docker Container
|
||||||
----------------
|
================
|
||||||
|
|
||||||
Building
|
Building
|
||||||
^^^^^^^^
|
========
|
||||||
|
|
||||||
There are 2 versions of the container Dockerfile that can be used.
|
There are 2 versions of the container Dockerfile that can be used.
|
||||||
The main Dockerfile, which is for building the official release container
|
The main Dockerfile, which is for building the official release container
|
||||||
|
@ -447,18 +360,18 @@ which is used for building a container based off of a git branch of
|
||||||
the repo.
|
the repo.
|
||||||
|
|
||||||
Official Build
|
Official Build
|
||||||
^^^^^^^^^^^^^^
|
==============
|
||||||
|
|
||||||
``docker build -t hemna6969/aprsd:latest .``
|
``docker build -t hemna6969/aprsd:latest .``
|
||||||
|
|
||||||
Development Build
|
Development Build
|
||||||
^^^^^^^^^^^^^^^^^
|
=================
|
||||||
|
|
||||||
``docker build -t hemna6969/aprsd:latest -f Dockerfile-dev .``
|
``docker build -t hemna6969/aprsd:latest -f Dockerfile-dev .``
|
||||||
|
|
||||||
|
|
||||||
Running the container
|
Running the container
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
=====================
|
||||||
|
|
||||||
There is a ``docker-compose.yml`` file in the ``docker/`` directory
|
There is a ``docker-compose.yml`` file in the ``docker/`` directory
|
||||||
that can be used to run your container. To provide the container
|
that can be used to run your container. To provide the container
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from functools import update_wrapper
|
from functools import update_wrapper
|
||||||
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import typing as t
|
import typing as t
|
||||||
|
|
||||||
|
@ -61,6 +62,7 @@ def process_standard_options(f: F) -> F:
|
||||||
def new_func(*args, **kwargs):
|
def new_func(*args, **kwargs):
|
||||||
ctx = args[0]
|
ctx = args[0]
|
||||||
ctx.ensure_object(dict)
|
ctx.ensure_object(dict)
|
||||||
|
config_file_found = True
|
||||||
if kwargs["config_file"]:
|
if kwargs["config_file"]:
|
||||||
default_config_files = [kwargs["config_file"]]
|
default_config_files = [kwargs["config_file"]]
|
||||||
else:
|
else:
|
||||||
|
@ -71,7 +73,7 @@ def process_standard_options(f: F) -> F:
|
||||||
default_config_files=default_config_files,
|
default_config_files=default_config_files,
|
||||||
)
|
)
|
||||||
except cfg.ConfigFilesNotFoundError:
|
except cfg.ConfigFilesNotFoundError:
|
||||||
pass
|
config_file_found = False
|
||||||
ctx.obj["loglevel"] = kwargs["loglevel"]
|
ctx.obj["loglevel"] = kwargs["loglevel"]
|
||||||
# ctx.obj["config_file"] = kwargs["config_file"]
|
# ctx.obj["config_file"] = kwargs["config_file"]
|
||||||
ctx.obj["quiet"] = kwargs["quiet"]
|
ctx.obj["quiet"] = kwargs["quiet"]
|
||||||
|
@ -82,6 +84,10 @@ def process_standard_options(f: F) -> F:
|
||||||
if CONF.trace_enabled:
|
if CONF.trace_enabled:
|
||||||
trace.setup_tracing(["method", "api"])
|
trace.setup_tracing(["method", "api"])
|
||||||
|
|
||||||
|
if not config_file_found:
|
||||||
|
LOG = logging.getLogger("APRSD") # noqa: N806
|
||||||
|
LOG.error("No config file found!! run 'aprsd sample-config'")
|
||||||
|
|
||||||
del kwargs["loglevel"]
|
del kwargs["loglevel"]
|
||||||
del kwargs["config_file"]
|
del kwargs["config_file"]
|
||||||
del kwargs["quiet"]
|
del kwargs["quiet"]
|
||||||
|
|
|
@ -52,14 +52,6 @@ aprsd.plugins.query module
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
aprsd.plugins.stock module
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.plugins.stock
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.plugins.time module
|
aprsd.plugins.time module
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
|
|
@ -7,11 +7,35 @@ Subpackages
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 4
|
:maxdepth: 4
|
||||||
|
|
||||||
|
aprsd.clients
|
||||||
|
aprsd.cmds
|
||||||
|
aprsd.conf
|
||||||
|
aprsd.logging
|
||||||
|
aprsd.packets
|
||||||
aprsd.plugins
|
aprsd.plugins
|
||||||
|
aprsd.threads
|
||||||
|
aprsd.utils
|
||||||
|
aprsd.web
|
||||||
|
|
||||||
Submodules
|
Submodules
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
aprsd.aprsd module
|
||||||
|
------------------
|
||||||
|
|
||||||
|
.. automodule:: aprsd.aprsd
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
:show-inheritance:
|
||||||
|
|
||||||
|
aprsd.cli\_helper module
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
.. automodule:: aprsd.cli_helper
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
:show-inheritance:
|
||||||
|
|
||||||
aprsd.client module
|
aprsd.client module
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
|
@ -20,18 +44,10 @@ aprsd.client module
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
aprsd.dev module
|
aprsd.exception module
|
||||||
----------------
|
----------------------
|
||||||
|
|
||||||
.. automodule:: aprsd.dev
|
.. automodule:: aprsd.exception
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.fake\_aprs module
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.fake_aprs
|
|
||||||
:members:
|
:members:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
@ -44,46 +60,6 @@ aprsd.flask module
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
aprsd.fuzzyclock module
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.fuzzyclock
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.healthcheck module
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.healthcheck
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.kissclient module
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.kissclient
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.listen module
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.listen
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.main module
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.main
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.messaging module
|
aprsd.messaging module
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
@ -92,14 +68,6 @@ aprsd.messaging module
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
aprsd.packets module
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.packets
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.plugin module
|
aprsd.plugin module
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
|
@ -116,6 +84,14 @@ aprsd.plugin\_utils module
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
|
aprsd.rpc\_server module
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
.. automodule:: aprsd.rpc_server
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
:show-inheritance:
|
||||||
|
|
||||||
aprsd.stats module
|
aprsd.stats module
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
@ -124,30 +100,6 @@ aprsd.stats module
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
aprsd.threads module
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.threads
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.trace module
|
|
||||||
------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.trace
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
aprsd.utils module
|
|
||||||
------------------
|
|
||||||
|
|
||||||
.. automodule:: aprsd.utils
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
|
|
||||||
Module contents
|
Module contents
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,339 @@
|
||||||
CHANGES
|
CHANGES
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
* Decouple admin web interface from server command
|
||||||
|
* Dockerfile now produces aprsd.conf
|
||||||
|
* Fix some unit tests and loading of CONF w/o file
|
||||||
|
* Added missing conf
|
||||||
|
* Removed references to old custom config
|
||||||
|
* Convert config to oslo\_config
|
||||||
|
* Added rain formatting unit tests to WeatherPacket
|
||||||
|
* Fix Rain reporting in WeatherPacket send
|
||||||
|
* Removed Packet.send()
|
||||||
|
* Removed watchlist plugins
|
||||||
|
* Fix PluginManager.get\_plugins
|
||||||
|
* Cleaned up PluginManager
|
||||||
|
* Cleaned up PluginManager
|
||||||
|
* Update routing for weatherpacket
|
||||||
|
* Fix some WeatherPacket formatting
|
||||||
|
* Fix pep8 violation
|
||||||
|
* Add packet filtering for aprsd listen
|
||||||
|
* Added WeatherPacket encoding
|
||||||
|
* Updated webchat and listen for queue based RX
|
||||||
|
* reworked collecting and reporting stats
|
||||||
|
* Removed unused threading code
|
||||||
|
* Change RX packet processing to enqueu
|
||||||
|
* Make tracking objectstores work w/o initializing
|
||||||
|
* Cleaned up packet transmit class attributes
|
||||||
|
* Fix packets timestamp to int
|
||||||
|
* More messaging -> packets cleanup
|
||||||
|
* Cleaned out all references to messaging
|
||||||
|
* Added contructing a GPSPacket for sending
|
||||||
|
* cleanup webchat
|
||||||
|
* Reworked all packet processing
|
||||||
|
* Updated plugins and plugin interfaces for Packet
|
||||||
|
* Started using dataclasses to describe packets
|
||||||
|
|
||||||
|
v2.6.1
|
||||||
|
------
|
||||||
|
|
||||||
|
* v2.6.1
|
||||||
|
* Fixed position report for webchat beacon
|
||||||
|
* Try and fix broken 32bit qemu builds on 64bit system
|
||||||
|
* Add unit tests for webchat
|
||||||
|
* remove armv7 build RUST sucks
|
||||||
|
* Fix for Collections change in 3.10
|
||||||
|
|
||||||
|
v2.6.0
|
||||||
|
------
|
||||||
|
|
||||||
|
* Update workflow again
|
||||||
|
* Update Dockerfile to 22.04
|
||||||
|
* Update Dockerfile and build.sh
|
||||||
|
* Update workflow
|
||||||
|
* Prep for 2.6.0 release
|
||||||
|
* Update requirements
|
||||||
|
* Removed Makefile comment
|
||||||
|
* Update Makefile for dev vs. run environments
|
||||||
|
* Added pyopenssl for https for webchat
|
||||||
|
* change from device-detector to user-agents
|
||||||
|
* Remove twine from dev-requirements
|
||||||
|
* Update to latest Makefile.venv
|
||||||
|
* Refactored threads a bit
|
||||||
|
* Mark packets as acked in MsgTracker
|
||||||
|
* remove dev setting for template
|
||||||
|
* Add GPS beacon to mobile page
|
||||||
|
* Allow werkzeug for admin interface
|
||||||
|
* Allow werkzeug for admin interface
|
||||||
|
* Add support for mobile browsers for webchat
|
||||||
|
* Ignore callsign case while processing packets
|
||||||
|
* remove linux/arm/v7 for official builds for now
|
||||||
|
* added workflow for building specific version
|
||||||
|
* Allow passing in version to the Dockerfile
|
||||||
|
* Send GPS Beacon from webchat interface
|
||||||
|
* specify Dockerfile-dev
|
||||||
|
* Fixed build.sh
|
||||||
|
* Build on the source not released aprsd
|
||||||
|
* Remove email validation
|
||||||
|
* Add support for building linux/arm/v7
|
||||||
|
* Remove python 3.7 from docker build github
|
||||||
|
* Fixed failing unit tests
|
||||||
|
* change github workflow
|
||||||
|
* Removed TimeOpenCageDataPlugin
|
||||||
|
* Dump config with aprsd dev test-plugin
|
||||||
|
* Updated requirements
|
||||||
|
* Got webchat working with KISS tcp
|
||||||
|
* Added click auto\_envvar\_prefix
|
||||||
|
* Update aprsd thread base class to use queue
|
||||||
|
* Update packets to use wrapt
|
||||||
|
* Add remving existing requirements
|
||||||
|
* Try sending raw APRSFrames to aioax25
|
||||||
|
* Use new aprsd.callsign as the main callsign
|
||||||
|
* Fixed access to threads refactor
|
||||||
|
* Added webchat command
|
||||||
|
* Moved log.py to logging
|
||||||
|
* Moved trace.py to utils
|
||||||
|
* Fixed pep8 errors
|
||||||
|
* Refactored threads.py
|
||||||
|
* Refactor utils to directory
|
||||||
|
* remove arm build for now
|
||||||
|
* Added rustc and cargo to Dockerfile
|
||||||
|
* remove linux/arm/v6 from docker platform build
|
||||||
|
* Only tag master build as master
|
||||||
|
* Remove docker build from test
|
||||||
|
* create master-build.yml
|
||||||
|
* Added container build action
|
||||||
|
* Update docs on using Docker
|
||||||
|
* Update dev-requirements pip-tools
|
||||||
|
* Fix typo in docker-compose.yml
|
||||||
|
* Fix PyPI scraping
|
||||||
|
* Allow web interface when running in Docker
|
||||||
|
* Fix typo on exception
|
||||||
|
* README formatting fixes
|
||||||
|
* Bump dependencies to fix python 3.10
|
||||||
|
* Fixed up config option checking for KISS
|
||||||
|
* Fix logging issue with log messages
|
||||||
|
* for 2.5.9
|
||||||
|
|
||||||
|
v2.5.9
|
||||||
|
------
|
||||||
|
|
||||||
|
* FIX: logging exceptions
|
||||||
|
* Updated build and run for rich lib
|
||||||
|
* update build for 2.5.8
|
||||||
|
|
||||||
|
v2.5.8
|
||||||
|
------
|
||||||
|
|
||||||
|
* For 2.5.8
|
||||||
|
* Removed debug code
|
||||||
|
* Updated list-plugins
|
||||||
|
* Renamed virtualenv dir to .aprsd-venv
|
||||||
|
* Added unit tests for dev test-plugin
|
||||||
|
* Send Message command defaults to config
|
||||||
|
|
||||||
|
v2.5.7
|
||||||
|
------
|
||||||
|
|
||||||
|
* Updated Changelog
|
||||||
|
* Fixed an KISS config disabled issue
|
||||||
|
* Fixed a bug with multiple notify plugins enabled
|
||||||
|
* Unify the logging to file and stdout
|
||||||
|
* Added new feature to list-plugins command
|
||||||
|
* more README.rst cleanup
|
||||||
|
* Updated README examples
|
||||||
|
|
||||||
|
v2.5.6
|
||||||
|
------
|
||||||
|
|
||||||
|
* Changelog
|
||||||
|
* Tightened up the packet logging
|
||||||
|
* Added unit tests for USWeatherPlugin, USMetarPlugin
|
||||||
|
* Added test\_location to test LocationPlugin
|
||||||
|
* Updated pytest output
|
||||||
|
* Added py39 to tox for tests
|
||||||
|
* Added NotifyPlugin unit tests and more
|
||||||
|
* Small cleanup on packet logging
|
||||||
|
* Reduced the APRSIS connection reset to 2 minutes
|
||||||
|
* Fixed the NotifyPlugin
|
||||||
|
* Fixed some pep8 errors
|
||||||
|
* Add tracing for dev command
|
||||||
|
* Added python rich library based logging
|
||||||
|
* Added LOG\_LEVEL env variable for the docker
|
||||||
|
|
||||||
|
v2.5.5
|
||||||
|
------
|
||||||
|
|
||||||
|
* Update requirements to use aprslib 0.7.0
|
||||||
|
* fixed the failure during loading for objectstore
|
||||||
|
* updated docker build
|
||||||
|
|
||||||
|
v2.5.4
|
||||||
|
------
|
||||||
|
|
||||||
|
* Updated Changelog
|
||||||
|
* Fixed dev command missing initialization
|
||||||
|
|
||||||
|
v2.5.3
|
||||||
|
------
|
||||||
|
|
||||||
|
* Fix admin logging tab
|
||||||
|
|
||||||
|
v2.5.2
|
||||||
|
------
|
||||||
|
|
||||||
|
* Added new list-plugins command
|
||||||
|
* Don't require check-version command to have a config
|
||||||
|
* Healthcheck command doesn't need the aprsd.yml config
|
||||||
|
* Fix test failures
|
||||||
|
* Removed requirement for aprs.fi key
|
||||||
|
* Updated Changelog
|
||||||
|
|
||||||
|
v2.5.1
|
||||||
|
------
|
||||||
|
|
||||||
|
* Removed stock plugin
|
||||||
|
* Removed the stock plugin
|
||||||
|
|
||||||
|
v2.5.0
|
||||||
|
------
|
||||||
|
|
||||||
|
* Updated for v2.5.0
|
||||||
|
* Updated Dockerfile's and build script for docker
|
||||||
|
* Cleaned up some verbose output & colorized output
|
||||||
|
* Reworked all the common arguments
|
||||||
|
* Fixed test-plugin
|
||||||
|
* Ensure common params are honored
|
||||||
|
* pep8
|
||||||
|
* Added healthcheck to the cmds
|
||||||
|
* Removed the need for FROMCALL in dev test-plugin
|
||||||
|
* Pep8 failures
|
||||||
|
* Refactor the cli
|
||||||
|
* Updated Changelog for 4.2.3
|
||||||
|
* Fixed a problem with send-message command
|
||||||
|
|
||||||
|
v2.4.2
|
||||||
|
------
|
||||||
|
|
||||||
|
* Updated Changelog
|
||||||
|
* Be more careful picking data to/from disk
|
||||||
|
* Updated Changelog
|
||||||
|
|
||||||
|
v2.4.1
|
||||||
|
------
|
||||||
|
|
||||||
|
* Ensure plugins are last to be loaded
|
||||||
|
* Fixed email connecting to smtp server
|
||||||
|
|
||||||
|
v2.4.0
|
||||||
|
------
|
||||||
|
|
||||||
|
* Updated Changelog for 2.4.0 release
|
||||||
|
* Converted MsgTrack to ObjectStoreMixin
|
||||||
|
* Fixed unit tests
|
||||||
|
* Make sure SeenList update has a from in packet
|
||||||
|
* Ensure PacketList is initialized
|
||||||
|
* Added SIGTERM to signal\_handler
|
||||||
|
* Enable configuring where to save the objectstore data
|
||||||
|
* PEP8 cleanup
|
||||||
|
* Added objectstore Mixin
|
||||||
|
* Added -num option to aprsd-dev test-plugin
|
||||||
|
* Only call stop\_threads if it exists
|
||||||
|
* Added new SeenList
|
||||||
|
* Added plugin version to stats reporting
|
||||||
|
* Added new HelpPlugin
|
||||||
|
* Updated aprsd-dev to use config for logfile format
|
||||||
|
* Updated build.sh
|
||||||
|
* removed usage of config.check\_config\_option
|
||||||
|
* Fixed send-message after config/client rework
|
||||||
|
* Fixed issue with flask config
|
||||||
|
* Added some server startup info logs
|
||||||
|
* Increase email delay to +10
|
||||||
|
* Updated dev to use plugin manager
|
||||||
|
* Fixed notify plugins
|
||||||
|
* Added new Config object
|
||||||
|
* Fixed email plugin's use of globals
|
||||||
|
* Refactored client classes
|
||||||
|
* Refactor utils usage
|
||||||
|
* 2.3.1 Changelog
|
||||||
|
|
||||||
|
v2.3.1
|
||||||
|
------
|
||||||
|
|
||||||
|
* Fixed issue of aprs-is missing keepalive
|
||||||
|
* Fixed packet processing issue with aprsd send-message
|
||||||
|
|
||||||
|
v2.3.0
|
||||||
|
------
|
||||||
|
|
||||||
|
* Prep 2.3.0
|
||||||
|
* Enable plugins to return message object
|
||||||
|
* Added enabled flag for every plugin object
|
||||||
|
* Ensure plugin threads are valid
|
||||||
|
* Updated Dockerfile to use v2.3.0
|
||||||
|
* Removed fixed size on logging queue
|
||||||
|
* Added Logfile tab in Admin ui
|
||||||
|
* Updated Makefile clean target
|
||||||
|
* Added self creating Makefile help target
|
||||||
|
* Update dev.py
|
||||||
|
* Allow passing in aprsis\_client
|
||||||
|
* Fixed a problem with the AVWX plugin not working
|
||||||
|
* Remove some noisy trace in email plugin
|
||||||
|
* Fixed issue at startup with notify plugin
|
||||||
|
* Fixed email validation
|
||||||
|
* Removed values from forms
|
||||||
|
* Added send-message to the main admin UI
|
||||||
|
* Updated requirements
|
||||||
|
* Cleaned up some pep8 failures
|
||||||
|
* Upgraded the send-message POC to use websockets
|
||||||
|
* New Admin ui send message page working
|
||||||
|
* Send Message via admin Web interface
|
||||||
|
* Updated Admin UI to show KISS connections
|
||||||
|
* Got TX/RX working with aioax25+direwolf over TCP
|
||||||
|
* Rebased from master
|
||||||
|
* Added the ability to use direwolf KISS socket
|
||||||
|
* Update Dockerfile to use 2.2.1
|
||||||
|
|
||||||
|
v2.2.1
|
||||||
|
------
|
||||||
|
|
||||||
|
* Update Changelog for 2.2.1
|
||||||
|
* Silence some log noise
|
||||||
|
|
||||||
|
v2.2.0
|
||||||
|
------
|
||||||
|
|
||||||
|
* Updated Changelog for v2.2.0
|
||||||
|
* Updated overview image
|
||||||
|
* Removed Black code style reference
|
||||||
|
* Removed TXThread
|
||||||
|
* Added days to uptime string formatting
|
||||||
|
* Updated select timeouts
|
||||||
|
* Rebase from master and run gray
|
||||||
|
* Added tracking plugin processing
|
||||||
|
* Added threads functions to APRSDPluginBase
|
||||||
|
* Refactor Message processing and MORE
|
||||||
|
* Use Gray instead of Black for code formatting
|
||||||
|
* Updated tox.ini
|
||||||
|
* Fixed LOG.debug issue in weather plugin
|
||||||
|
* Updated slack channel link
|
||||||
|
* Cleanup of the README.rst
|
||||||
|
* Fixed aprsd-dev
|
||||||
|
|
||||||
|
v2.1.0
|
||||||
|
------
|
||||||
|
|
||||||
|
* Prep for v2.1.0
|
||||||
|
* Enable multiple replies for plugins
|
||||||
|
* Put in a fix for aprslib parse exceptions
|
||||||
|
* Fixed time plugin
|
||||||
|
* Updated the charts Added the packets chart
|
||||||
|
* Added showing symbol images to watch list
|
||||||
|
|
||||||
v2.0.0
|
v2.0.0
|
||||||
------
|
------
|
||||||
|
|
||||||
|
* Updated docs for 2.0.0
|
||||||
* Reworked the notification threads and admin ui
|
* Reworked the notification threads and admin ui
|
||||||
* Fixed small bug with packets get\_packet\_type
|
* Fixed small bug with packets get\_packet\_type
|
||||||
* Updated overview images
|
* Updated overview images
|
||||||
|
|
|
@ -64,7 +64,7 @@ master_doc = "index"
|
||||||
#
|
#
|
||||||
# This is also used if you do content translation via gettext catalogs.
|
# This is also used if you do content translation via gettext catalogs.
|
||||||
# Usually you set "language" from the command line for these cases.
|
# Usually you set "language" from the command line for these cases.
|
||||||
language = None
|
language = "en"
|
||||||
|
|
||||||
# List of patterns, relative to source directory, that match files and
|
# List of patterns, relative to source directory, that match files and
|
||||||
# directories to ignore when looking for source files.
|
# directories to ignore when looking for source files.
|
||||||
|
|
|
@ -15,10 +15,11 @@ a sample config file in the default location of ~/.config/aprsd/aprsd.yml
|
||||||
|
|
||||||
.. code-block:: shell
|
.. code-block:: shell
|
||||||
|
|
||||||
└─[$] -> aprsd server
|
└─> aprsd server
|
||||||
Load config
|
12/28/2022 04:26:31 PM MainThread ERROR No config file found!! run 'aprsd sample-config' cli_helper.py:90
|
||||||
/home/aprsd/.config/aprsd/aprsd.yml is missing, creating config file
|
12/28/2022 04:26:31 PM MainThread ERROR Config aprs_network.password not set. client.py:105
|
||||||
Default config file created at /home/aprsd/.config/aprsd/aprsd.yml. Please edit with your settings.
|
12/28/2022 04:26:31 PM MainThread ERROR Option 'aprs_network.password is not set.' was not in config file client.py:268
|
||||||
|
12/28/2022 04:26:31 PM MainThread ERROR APRS client is not properly configured in config file. server.py:58
|
||||||
|
|
||||||
You can see the sample config file output
|
You can see the sample config file output
|
||||||
|
|
||||||
|
@ -27,43 +28,310 @@ Sample config file
|
||||||
|
|
||||||
.. code-block:: shell
|
.. code-block:: shell
|
||||||
|
|
||||||
└─[$] -> cat ~/.config/aprsd/aprsd.yml
|
└─> aprsd sample-config
|
||||||
aprs:
|
[DEFAULT]
|
||||||
host: rotate.aprs.net
|
|
||||||
logfile: /tmp/arsd.log
|
|
||||||
login: someusername
|
|
||||||
password: somepassword
|
|
||||||
port: 14580
|
|
||||||
aprsd:
|
|
||||||
enabled_plugins:
|
|
||||||
- aprsd.plugins.email.EmailPlugin
|
|
||||||
- aprsd.plugins.fortune.FortunePlugin
|
|
||||||
- aprsd.plugins.location.LocationPlugin
|
|
||||||
- aprsd.plugins.ping.PingPlugin
|
|
||||||
- aprsd.plugins.query.QueryPlugin
|
|
||||||
- aprsd.plugins.time.TimePlugin
|
|
||||||
- aprsd.plugins.weather.WeatherPlugin
|
|
||||||
- aprsd.plugins.version.VersionPlugin
|
|
||||||
plugin_dir: ~/.config/aprsd/plugins
|
|
||||||
ham:
|
|
||||||
callsign: KFART
|
|
||||||
imap:
|
|
||||||
host: imap.gmail.com
|
|
||||||
login: imapuser
|
|
||||||
password: something here too
|
|
||||||
port: 993
|
|
||||||
use_ssl: true
|
|
||||||
shortcuts:
|
|
||||||
aa: 5551239999@vtext.com
|
|
||||||
cl: craiglamparter@somedomain.org
|
|
||||||
wb: 555309@vtext.com
|
|
||||||
smtp:
|
|
||||||
host: imap.gmail.com
|
|
||||||
login: something
|
|
||||||
password: some lame password
|
|
||||||
port: 465
|
|
||||||
use_ssl: false
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Callsign to use for messages sent by APRSD (string value)
|
||||||
|
#callsign = <None>
|
||||||
|
|
||||||
|
# Enable saving of watch list, packet tracker between restarts.
|
||||||
|
# (boolean value)
|
||||||
|
#enable_save = true
|
||||||
|
|
||||||
|
# Save location for packet tracking files. (string value)
|
||||||
|
#save_location = ~/.config/aprsd
|
||||||
|
|
||||||
|
# Enable code tracing (boolean value)
|
||||||
|
#trace_enabled = false
|
||||||
|
|
||||||
|
# Units for display, imperial or metric (string value)
|
||||||
|
#units = imperial
|
||||||
|
|
||||||
|
# Comma separated list of enabled plugins for APRSD.To enable
|
||||||
|
# installed external plugins add them here.The full python path to the
|
||||||
|
# class name must be used (list value)
|
||||||
|
#enabled_plugins = aprsd.plugins.email.EmailPlugin,aprsd.plugins.fortune.FortunePlugin,aprsd.plugins.location.LocationPlugin,aprsd.plugins.ping.PingPlugin,aprsd.plugins.query.QueryPlugin,aprsd.plugins.time.TimePlugin,aprsd.plugins.weather.OWMWeatherPlugin,aprsd.plugins.version.VersionPlugin
|
||||||
|
|
||||||
|
|
||||||
|
[admin]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable the Admin Web Interface (boolean value)
|
||||||
|
#web_enabled = false
|
||||||
|
|
||||||
|
# The ip address to listen on (IP address value)
|
||||||
|
#web_ip = 0.0.0.0
|
||||||
|
|
||||||
|
# The port to listen on (port value)
|
||||||
|
# Minimum value: 0
|
||||||
|
# Maximum value: 65535
|
||||||
|
#web_port = 8001
|
||||||
|
|
||||||
|
# The admin user for the admin web interface (string value)
|
||||||
|
#user = admin
|
||||||
|
|
||||||
|
# Admin interface password (string value)
|
||||||
|
#password = <None>
|
||||||
|
|
||||||
|
|
||||||
|
[aprs_fi]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Get the apiKey from your aprs.fi account here:http://aprs.fi/account
|
||||||
|
# (string value)
|
||||||
|
#apiKey = <None>
|
||||||
|
|
||||||
|
|
||||||
|
[aprs_network]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Set enabled to False if there is no internet connectivity.This is
|
||||||
|
# useful for a direwolf KISS aprs connection only. (boolean value)
|
||||||
|
#enabled = true
|
||||||
|
|
||||||
|
# APRS Username (string value)
|
||||||
|
#login = NOCALL
|
||||||
|
|
||||||
|
# APRS Password Get the passcode for your callsign here:
|
||||||
|
# https://apps.magicbug.co.uk/passcode (string value)
|
||||||
|
#password = <None>
|
||||||
|
|
||||||
|
# The APRS-IS hostname (hostname value)
|
||||||
|
#host = noam.aprs2.net
|
||||||
|
|
||||||
|
# APRS-IS port (port value)
|
||||||
|
# Minimum value: 0
|
||||||
|
# Maximum value: 65535
|
||||||
|
#port = 14580
|
||||||
|
|
||||||
|
|
||||||
|
[aprsd_weewx_plugin]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd_weewx_plugin.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Latitude of the station you want to report as (floating point value)
|
||||||
|
#latitude = <None>
|
||||||
|
|
||||||
|
# Longitude of the station you want to report as (floating point
|
||||||
|
# value)
|
||||||
|
#longitude = <None>
|
||||||
|
|
||||||
|
# How long (in seconds) in between weather reports (integer value)
|
||||||
|
#report_interval = 60
|
||||||
|
|
||||||
|
|
||||||
|
[avwx_plugin]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# avwx-api is an opensource project that hasa hosted service here:
|
||||||
|
# https://avwx.rest/You can launch your own avwx-api in a containerby
|
||||||
|
# cloning the githug repo here:https://github.com/avwx-rest/AVWX-API
|
||||||
|
# (string value)
|
||||||
|
#apiKey = <None>
|
||||||
|
|
||||||
|
# The base url for the avwx API. If you are hosting your ownHere is
|
||||||
|
# where you change the url to point to yours. (string value)
|
||||||
|
#base_url = https://avwx.rest
|
||||||
|
|
||||||
|
|
||||||
|
[email_plugin]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# (Required) Callsign to validate for doing email commands.Only this
|
||||||
|
# callsign can check email. This is also where the email notifications
|
||||||
|
# for new emails will be sent. (string value)
|
||||||
|
#callsign = <None>
|
||||||
|
|
||||||
|
# Enable the Email plugin? (boolean value)
|
||||||
|
#enabled = false
|
||||||
|
|
||||||
|
# Enable the Email plugin Debugging? (boolean value)
|
||||||
|
#debug = false
|
||||||
|
|
||||||
|
# Login username/email for IMAP server (string value)
|
||||||
|
#imap_login = <None>
|
||||||
|
|
||||||
|
# Login password for IMAP server (string value)
|
||||||
|
#imap_password = <None>
|
||||||
|
|
||||||
|
# Hostname/IP of the IMAP server (hostname value)
|
||||||
|
#imap_host = <None>
|
||||||
|
|
||||||
|
# Port to use for IMAP server (port value)
|
||||||
|
# Minimum value: 0
|
||||||
|
# Maximum value: 65535
|
||||||
|
#imap_port = 993
|
||||||
|
|
||||||
|
# Use SSL for connection to IMAP Server (boolean value)
|
||||||
|
#imap_use_ssl = true
|
||||||
|
|
||||||
|
# Login username/email for SMTP server (string value)
|
||||||
|
#smtp_login = <None>
|
||||||
|
|
||||||
|
# Login password for SMTP server (string value)
|
||||||
|
#smtp_password = <None>
|
||||||
|
|
||||||
|
# Hostname/IP of the SMTP server (hostname value)
|
||||||
|
#smtp_host = <None>
|
||||||
|
|
||||||
|
# Port to use for SMTP server (port value)
|
||||||
|
# Minimum value: 0
|
||||||
|
# Maximum value: 65535
|
||||||
|
#smtp_port = 465
|
||||||
|
|
||||||
|
# Use SSL for connection to SMTP Server (boolean value)
|
||||||
|
#smtp_use_ssl = true
|
||||||
|
|
||||||
|
# List of email shortcuts for checking/sending email For Exmaple:
|
||||||
|
# wb=walt@walt.com,cl=cl@cl.com
|
||||||
|
# Means use 'wb' to send an email to walt@walt.com (list value)
|
||||||
|
#email_shortcuts = <None>
|
||||||
|
|
||||||
|
|
||||||
|
[kiss_serial]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable Serial KISS interface connection. (boolean value)
|
||||||
|
#enabled = false
|
||||||
|
|
||||||
|
# Serial Device file to use. /dev/ttyS0 (string value)
|
||||||
|
#device = <None>
|
||||||
|
|
||||||
|
# The Serial device baud rate for communication (integer value)
|
||||||
|
#baudrate = 9600
|
||||||
|
|
||||||
|
|
||||||
|
[kiss_tcp]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable Serial KISS interface connection. (boolean value)
|
||||||
|
#enabled = false
|
||||||
|
|
||||||
|
# The KISS TCP Host to connect to. (hostname value)
|
||||||
|
#host = <None>
|
||||||
|
|
||||||
|
# The KISS TCP/IP network port (port value)
|
||||||
|
# Minimum value: 0
|
||||||
|
# Maximum value: 65535
|
||||||
|
#port = 8001
|
||||||
|
|
||||||
|
|
||||||
|
[logging]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Date format for log entries (string value)
|
||||||
|
#date_format = %m/%d/%Y %I:%M:%S %p
|
||||||
|
|
||||||
|
# Enable Rich logging (boolean value)
|
||||||
|
#rich_logging = true
|
||||||
|
|
||||||
|
# File to log to (string value)
|
||||||
|
#logfile = <None>
|
||||||
|
|
||||||
|
# Log file format, unless rich_logging enabled. (string value)
|
||||||
|
#logformat = [%(asctime)s] [%(threadName)-20.20s] [%(levelname)-5.5s] %(message)s - [%(pathname)s:%(lineno)d]
|
||||||
|
|
||||||
|
|
||||||
|
[owm_weather_plugin]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# OWMWeatherPlugin api key to OpenWeatherMap's API.This plugin uses
|
||||||
|
# the openweathermap API to fetchlocation and weather information.To
|
||||||
|
# use this plugin you need to get an openweathermapaccount and
|
||||||
|
# apikey.https://home.openweathermap.org/api_keys (string value)
|
||||||
|
#apiKey = <None>
|
||||||
|
|
||||||
|
|
||||||
|
[query_plugin]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# The Ham callsign to allow access to the query plugin from RF.
|
||||||
|
# (string value)
|
||||||
|
#callsign = <None>
|
||||||
|
|
||||||
|
|
||||||
|
[rpc_settings]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable RPC calls (boolean value)
|
||||||
|
#enabled = true
|
||||||
|
|
||||||
|
# The ip address to listen on (string value)
|
||||||
|
#ip = localhost
|
||||||
|
|
||||||
|
# The port to listen on (port value)
|
||||||
|
# Minimum value: 0
|
||||||
|
# Maximum value: 65535
|
||||||
|
#port = 18861
|
||||||
|
|
||||||
|
# Magic word to authenticate requests between client/server (string
|
||||||
|
# value)
|
||||||
|
#magic_word = CHANGEME!!!
|
||||||
|
|
||||||
|
|
||||||
|
[watch_list]
|
||||||
|
|
||||||
|
#
|
||||||
|
# From aprsd.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable the watch list feature. Still have to enable the correct
|
||||||
|
# plugin. Built-in plugin to use is aprsd.plugins.notify.NotifyPlugin
|
||||||
|
# (boolean value)
|
||||||
|
#enabled = false
|
||||||
|
|
||||||
|
# Callsigns to watch for messsages (list value)
|
||||||
|
#callsigns = <None>
|
||||||
|
|
||||||
|
# The Ham Callsign to send messages to for watch list alerts. (string
|
||||||
|
# value)
|
||||||
|
#alert_callsign = <None>
|
||||||
|
|
||||||
|
# The number of packets to store. (integer value)
|
||||||
|
#packet_keep_count = 10
|
||||||
|
|
||||||
|
# Time to wait before alert is sent on new message for users in
|
||||||
|
# callsigns. (integer value)
|
||||||
|
#alert_time_seconds = 3600
|
||||||
|
|
||||||
Note, You must edit the config file and change the ham callsign to your
|
Note, You must edit the config file and change the ham callsign to your
|
||||||
legal FCC HAM callsign, or aprsd server will not start.
|
legal FCC HAM callsign, or aprsd server will not start.
|
||||||
|
|
|
@ -41,7 +41,7 @@ aprsd/examples/plugins/example_plugin.py
|
||||||
LOG = logging.getLogger("APRSD")
|
LOG = logging.getLogger("APRSD")
|
||||||
|
|
||||||
|
|
||||||
class HelloPlugin(plugin.APRSDPluginBase):
|
class HelloPlugin(plugin.APRSDRegexCommandPluginBase):
|
||||||
"""Hello World."""
|
"""Hello World."""
|
||||||
|
|
||||||
version = "1.0"
|
version = "1.0"
|
||||||
|
@ -49,7 +49,7 @@ aprsd/examples/plugins/example_plugin.py
|
||||||
command_regex = "^[hH]"
|
command_regex = "^[hH]"
|
||||||
command_name = "hello"
|
command_name = "hello"
|
||||||
|
|
||||||
def command(self, fromcall, message, ack):
|
def process(self, packet):
|
||||||
LOG.info("HelloPlugin")
|
LOG.info("HelloPlugin")
|
||||||
reply = "Hello '{}'".format(fromcall)
|
reply = "Hello '{}'".format(packet.from_call)
|
||||||
return reply
|
return reply
|
||||||
|
|
431
docs/readme.rst
431
docs/readme.rst
|
@ -1,28 +1,12 @@
|
||||||
=====
|
===============================================
|
||||||
APRSD
|
APRSD - Ham radio APRS-IS Message plugin server
|
||||||
=====
|
===============================================
|
||||||
by KM6LYW and WB4BOR
|
|
||||||
|
|
||||||
.. image:: https://badge.fury.io/py/aprsd.svg
|
KM6LYW and WB4BOR
|
||||||
:target: https://badge.fury.io/py/aprsd
|
____________________
|
||||||
|
|
||||||
.. image:: https://github.com/craigerl/aprsd/workflows/python/badge.svg
|
|pypi| |pytest| |versions| |slack| |issues| |commit| |imports| |down|
|
||||||
:target: https://github.com/craigerl/aprsd/actions
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
|
||||||
:target: https://black.readthedocs.io/en/stable/
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
|
|
||||||
:target: https://timothycrosley.github.io/isort/
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/issues/craigerl/aprsd
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/last-commit/craigerl/aprsd
|
|
||||||
|
|
||||||
.. image:: https://static.pepy.tech/personalized-badge/aprsd?period=month&units=international_system&left_color=black&right_color=orange&left_text=Downloads
|
|
||||||
:target: https://pepy.tech/project/aprsd
|
|
||||||
|
|
||||||
.. contents:: :local:
|
|
||||||
|
|
||||||
`APRSD <http://github.com/craigerl/aprsd>`_ is a Ham radio `APRS <http://aprs.org>`_ message command gateway built on python.
|
`APRSD <http://github.com/craigerl/aprsd>`_ is a Ham radio `APRS <http://aprs.org>`_ message command gateway built on python.
|
||||||
|
|
||||||
|
@ -37,11 +21,14 @@ provide responding to messages to check email, get location, ping,
|
||||||
time of day, get weather, and fortune telling as well as version information
|
time of day, get weather, and fortune telling as well as version information
|
||||||
of aprsd itself.
|
of aprsd itself.
|
||||||
|
|
||||||
Documentation: https://aprsd.readthedocs.io
|
Please `read the docs`_ to learn more!
|
||||||
|
|
||||||
|
|
||||||
|
.. contents:: :local:
|
||||||
|
|
||||||
|
|
||||||
APRSD Overview Diagram
|
APRSD Overview Diagram
|
||||||
----------------------
|
======================
|
||||||
|
|
||||||
.. image:: https://raw.githubusercontent.com/craigerl/aprsd/master/docs/_static/aprsd_overview.svg?sanitize=true
|
.. image:: https://raw.githubusercontent.com/craigerl/aprsd/master/docs/_static/aprsd_overview.svg?sanitize=true
|
||||||
|
|
||||||
|
@ -50,7 +37,7 @@ Typical use case
|
||||||
================
|
================
|
||||||
|
|
||||||
Ham radio operator using an APRS enabled HAM radio sends a message to check
|
Ham radio operator using an APRS enabled HAM radio sends a message to check
|
||||||
the weather. an APRS message is sent, and then picked up by APRSD. The
|
the weather. An APRS message is sent, and then picked up by APRSD. The
|
||||||
APRS packet is decoded, and the message is sent through the list of plugins
|
APRS packet is decoded, and the message is sent through the list of plugins
|
||||||
for processing. For example, the WeatherPlugin picks up the message, fetches the weather
|
for processing. For example, the WeatherPlugin picks up the message, fetches the weather
|
||||||
for the area around the user who sent the request, and then responds with
|
for the area around the user who sent the request, and then responds with
|
||||||
|
@ -59,103 +46,91 @@ callsigns to look out for. The watch list can notify you when a HAM callsign
|
||||||
in the list is seen and now available to message on the APRS network.
|
in the list is seen and now available to message on the APRS network.
|
||||||
|
|
||||||
|
|
||||||
APRSD Capabilities
|
Current list of built-in plugins
|
||||||
==================
|
|
||||||
|
|
||||||
* server - The main aprsd server processor. Send/Rx APRS messages to HAM callsign
|
|
||||||
* send-message - use aprsd to send a command/message to aprsd server. Used for development testing
|
|
||||||
* sample-config - generate a sample aprsd.yml config file for use/editing
|
|
||||||
* bash completion generation. Uses python click bash completion to generate completion code for your .bashrc/.zshrc
|
|
||||||
|
|
||||||
|
|
||||||
List of core server plugins
|
|
||||||
===========================
|
|
||||||
|
|
||||||
Plugins function by specifying a regex that is searched for in the APRS message.
|
|
||||||
If it matches, the plugin runs. IF the regex doesn't match, the plugin is skipped.
|
|
||||||
|
|
||||||
* EmailPlugin - Check email and reply with contents. Have to configure IMAP and SMTP settings in aprs.yml
|
|
||||||
* FortunePlugin - Replies with old unix fortune random fortune!
|
|
||||||
* LocationPlugin - Checks location of ham operator
|
|
||||||
* PingPlugin - Sends pong with timestamp
|
|
||||||
* QueryPlugin - Allows querying the list of delayed messages that were not ACK'd by radio
|
|
||||||
* TimePlugin - Current time of day
|
|
||||||
* WeatherPlugin - Get weather conditions for current location of HAM callsign
|
|
||||||
* VersionPlugin - Reports the version information for aprsd
|
|
||||||
|
|
||||||
|
|
||||||
List of core notification plugins
|
|
||||||
=================================
|
|
||||||
|
|
||||||
These plugins see all APRS messages from ham callsigns in the config's watch
|
|
||||||
list.
|
|
||||||
|
|
||||||
* NotifySeenPlugin - Send a message when a message is seen from a callsign in
|
|
||||||
the watch list. This is helpful when you want to know
|
|
||||||
when a friend is online in the ARPS network, but haven't
|
|
||||||
been seen in a while.
|
|
||||||
|
|
||||||
|
|
||||||
Current messages this will respond to:
|
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
APRS messages:
|
└─> aprsd list-plugins
|
||||||
l(ocation) [callsign] = descriptive current location of your radio
|
🐍 APRSD Built-in Plugins 🐍
|
||||||
8 Miles E Auburn CA 1673' 39.92150,-120.93950 0.1h ago
|
┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||||
w(eather) = weather forecast for your radio's current position
|
┃ Plugin Name ┃ Info ┃ Type ┃ Plugin Path ┃
|
||||||
58F(58F/46F) Partly Cloudy. Tonight, Heavy Rain.
|
┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||||
t(ime) = respond with the current time
|
│ AVWXWeatherPlugin │ AVWX weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.AVWXWeatherPlugin │
|
||||||
f(ortune) = respond with a short fortune
|
│ EmailPlugin │ Send and Receive email │ RegexCommand │ aprsd.plugins.email.EmailPlugin │
|
||||||
-email_addr email text = send an email, say "mapme" to send a current position/map
|
│ FortunePlugin │ Give me a fortune │ RegexCommand │ aprsd.plugins.fortune.FortunePlugin │
|
||||||
-2 = resend the last 2 emails from your imap inbox to this radio
|
│ LocationPlugin │ Where in the world is a CALLSIGN's last GPS beacon? │ RegexCommand │ aprsd.plugins.location.LocationPlugin │
|
||||||
p(ing) = respond with Pong!/time
|
│ NotifySeenPlugin │ Notify me when a CALLSIGN is recently seen on APRS-IS │ WatchList │ aprsd.plugins.notify.NotifySeenPlugin │
|
||||||
v(ersion) = Respond with current APRSD Version string
|
│ OWMWeatherPlugin │ OpenWeatherMap weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.OWMWeatherPlugin │
|
||||||
anything else = respond with usage
|
│ PingPlugin │ reply with a Pong! │ RegexCommand │ aprsd.plugins.ping.PingPlugin │
|
||||||
|
│ QueryPlugin │ APRSD Owner command to query messages in the MsgTrack │ RegexCommand │ aprsd.plugins.query.QueryPlugin │
|
||||||
|
│ TimeOWMPlugin │ Current time of GPS beacon's timezone. Uses OpenWeatherMap │ RegexCommand │ aprsd.plugins.time.TimeOWMPlugin │
|
||||||
|
│ TimePlugin │ What is the current local time. │ RegexCommand │ aprsd.plugins.time.TimePlugin │
|
||||||
|
│ USMetarPlugin │ USA only METAR of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USMetarPlugin │
|
||||||
|
│ USWeatherPlugin │ Provide USA only weather of GPS Beacon location │ RegexCommand │ aprsd.plugins.weather.USWeatherPlugin │
|
||||||
|
│ VersionPlugin │ What is the APRSD Version │ RegexCommand │ aprsd.plugins.version.VersionPlugin │
|
||||||
|
└───────────────────┴────────────────────────────────────────────────────────────┴──────────────┴─────────────────────────────────────────┘
|
||||||
|
|
||||||
|
|
||||||
Meanwhile this code will monitor a single imap mailbox and forward email
|
Pypi.org APRSD Installable Plugin Packages
|
||||||
to your BASECALLSIGN over the air. Only radios using the BASECALLSIGN are allowed
|
|
||||||
to send email, so consider this security risk before using this (or Amatuer radio in
|
|
||||||
general). Email is single user at this time.
|
|
||||||
|
|
||||||
There are additional parameters in the code (sorry), so be sure to set your
|
Install any of the following plugins with 'pip install <Plugin Package Name>'
|
||||||
email server, and associated logins, passwords. search for "yourdomain",
|
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
|
||||||
"password". Search for "shortcuts" to setup email aliases as well.
|
┃ Plugin Package Name ┃ Description ┃ Version ┃ Released ┃ Installed? ┃
|
||||||
|
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
|
||||||
|
│ 📂 aprsd-stock-plugin │ Ham Radio APRSD Plugin for fetching stock quotes │ 0.1.3 │ Dec 2, 2022 │ No │
|
||||||
|
│ 📂 aprsd-sentry-plugin │ Ham radio APRSD plugin that does.... │ 0.1.2 │ Dec 2, 2022 │ No │
|
||||||
|
│ 📂 aprsd-timeopencage-plugin │ APRSD plugin for fetching time based on GPS location │ 0.1.0 │ Dec 2, 2022 │ No │
|
||||||
|
│ 📂 aprsd-weewx-plugin │ HAM Radio APRSD that reports weather from a weewx weather station. │ 0.1.4 │ Dec 7, 2021 │ Yes │
|
||||||
|
│ 📂 aprsd-repeat-plugins │ APRSD Plugins for the REPEAT service │ 1.0.12 │ Dec 2, 2022 │ No │
|
||||||
|
│ 📂 aprsd-telegram-plugin │ Ham Radio APRS APRSD plugin for Telegram IM service │ 0.1.3 │ Dec 2, 2022 │ No │
|
||||||
|
│ 📂 aprsd-twitter-plugin │ Python APRSD plugin to send tweets │ 0.3.0 │ Dec 7, 2021 │ No │
|
||||||
|
│ 📂 aprsd-slack-plugin │ Amateur radio APRS daemon which listens for messages and responds │ 1.0.5 │ Dec 18, 2022 │ No │
|
||||||
|
└──────────────────────────────┴────────────────────────────────────────────────────────────────────┴─────────┴──────────────┴────────────┘
|
||||||
|
|
||||||
|
|
||||||
Installation:
|
🐍 APRSD Installed 3rd party Plugins 🐍
|
||||||
|
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||||
|
┃ Package Name ┃ Plugin Name ┃ Version ┃ Type ┃ Plugin Path ┃
|
||||||
|
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||||
|
│ aprsd-weewx-plugin │ WeewxMQTTPlugin │ 1.0 │ RegexCommand │ aprsd_weewx_plugin.weewx.WeewxMQTTPlugin │
|
||||||
|
└────────────────────┴─────────────────┴─────────┴──────────────┴──────────────────────────────────────────┘
|
||||||
|
|
||||||
|
Installation
|
||||||
=============
|
=============
|
||||||
|
|
||||||
pip install aprsd
|
To install ``aprsd``, use Pip:
|
||||||
|
|
||||||
Example usage:
|
``pip install aprsd``
|
||||||
|
|
||||||
|
Example usage
|
||||||
==============
|
==============
|
||||||
|
|
||||||
aprsd -h
|
``aprsd -h``
|
||||||
|
|
||||||
Help
|
Help
|
||||||
====
|
====
|
||||||
::
|
::
|
||||||
|
|
||||||
└─[$] > aprsd -h
|
└─> aprsd -h
|
||||||
Usage: aprsd [OPTIONS] COMMAND [ARGS]...
|
Usage: aprsd [OPTIONS] COMMAND [ARGS]...
|
||||||
|
|
||||||
Shell completion for click-completion-command Available shell types:
|
|
||||||
bash Bourne again shell fish Friendly interactive shell
|
|
||||||
powershell Windows PowerShell zsh Z shell Default type: auto
|
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--version Show the version and exit.
|
--version Show the version and exit.
|
||||||
-h, --help Show this message and exit.
|
-h, --help Show this message and exit.
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
install Install the click-completion-command completion
|
check-version Check this version against the latest in pypi.org.
|
||||||
sample-config This dumps the config to stdout.
|
completion Click Completion subcommands
|
||||||
|
dev Development type subcommands
|
||||||
|
healthcheck Check the health of the running aprsd server.
|
||||||
|
list-plugins List the built in plugins available to APRSD.
|
||||||
|
listen Listen to packets on the APRS-IS Network based on FILTER.
|
||||||
|
sample-config Generate a sample Config file from aprsd and all...
|
||||||
send-message Send a message to a callsign via APRS_IS.
|
send-message Send a message to a callsign via APRS_IS.
|
||||||
server Start the aprsd server process.
|
server Start the aprsd server gateway process.
|
||||||
show Show the click-completion-command completion code
|
version Show the APRSD version.
|
||||||
|
webchat Web based HAM Radio chat program!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -165,90 +140,14 @@ Commands
|
||||||
Configuration
|
Configuration
|
||||||
=============
|
=============
|
||||||
This command outputs a sample config yml formatted block that you can edit
|
This command outputs a sample config yml formatted block that you can edit
|
||||||
and use to pass in to aprsd with -c. By default aprsd looks in ~/.config/aprsd/aprsd.yml
|
and use to pass in to ``aprsd`` with ``-c``. By default aprsd looks in ``~/.config/aprsd/aprsd.yml``
|
||||||
|
|
||||||
aprsd sample-config
|
``aprsd sample-config``
|
||||||
|
|
||||||
Output
|
|
||||||
======
|
|
||||||
::
|
::
|
||||||
|
|
||||||
└─> aprsd sample-config
|
└─> aprsd sample-config
|
||||||
aprs:
|
...
|
||||||
# Get the passcode for your callsign here:
|
|
||||||
# https://apps.magicbug.co.uk/passcode
|
|
||||||
host: rotate.aprs2.net
|
|
||||||
login: CALLSIGN
|
|
||||||
password: '00000'
|
|
||||||
port: 14580
|
|
||||||
aprsd:
|
|
||||||
dateformat: '%m/%d/%Y %I:%M:%S %p'
|
|
||||||
email:
|
|
||||||
enabled: true
|
|
||||||
imap:
|
|
||||||
debug: false
|
|
||||||
host: imap.gmail.com
|
|
||||||
login: IMAP_USERNAME
|
|
||||||
password: IMAP_PASSWORD
|
|
||||||
port: 993
|
|
||||||
use_ssl: true
|
|
||||||
shortcuts:
|
|
||||||
aa: 5551239999@vtext.com
|
|
||||||
cl: craiglamparter@somedomain.org
|
|
||||||
wb: 555309@vtext.com
|
|
||||||
smtp:
|
|
||||||
debug: false
|
|
||||||
host: smtp.gmail.com
|
|
||||||
login: SMTP_USERNAME
|
|
||||||
password: SMTP_PASSWORD
|
|
||||||
port: 465
|
|
||||||
use_ssl: false
|
|
||||||
enabled_plugins:
|
|
||||||
- aprsd.plugins.email.EmailPlugin
|
|
||||||
- aprsd.plugins.fortune.FortunePlugin
|
|
||||||
- aprsd.plugins.location.LocationPlugin
|
|
||||||
- aprsd.plugins.ping.PingPlugin
|
|
||||||
- aprsd.plugins.query.QueryPlugin
|
|
||||||
- aprsd.plugins.stock.StockPlugin
|
|
||||||
- aprsd.plugins.time.TimePlugin
|
|
||||||
- aprsd.plugins.weather.USWeatherPlugin
|
|
||||||
- aprsd.plugins.version.VersionPlugin
|
|
||||||
logfile: /tmp/aprsd.log
|
|
||||||
logformat: '[%(asctime)s] [%(threadName)-12s] [%(levelname)-5.5s] %(message)s - [%(pathname)s:%(lineno)d]'
|
|
||||||
trace: false
|
|
||||||
units: imperial
|
|
||||||
web:
|
|
||||||
enabled: true
|
|
||||||
host: 0.0.0.0
|
|
||||||
logging_enabled: true
|
|
||||||
port: 8001
|
|
||||||
users:
|
|
||||||
admin: aprsd
|
|
||||||
ham:
|
|
||||||
callsign: CALLSIGN
|
|
||||||
services:
|
|
||||||
aprs.fi:
|
|
||||||
# Get the apiKey from your aprs.fi account here:
|
|
||||||
# http://aprs.fi/account
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
avwx:
|
|
||||||
# (Optional for AVWXWeatherPlugin)
|
|
||||||
# Use hosted avwx-api here: https://avwx.rest
|
|
||||||
# or deploy your own from here:
|
|
||||||
# https://github.com/avwx-rest/avwx-api
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
base_url: http://host:port
|
|
||||||
opencagedata:
|
|
||||||
# (Optional for TimeOpenCageDataPlugin)
|
|
||||||
# Get the apiKey from your opencagedata account here:
|
|
||||||
# https://opencagedata.com/dashboard#api-keys
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
openweathermap:
|
|
||||||
# (Optional for OWMWeatherPlugin)
|
|
||||||
# Get the apiKey from your
|
|
||||||
# openweathermap account here:
|
|
||||||
# https://home.openweathermap.org/api_keys
|
|
||||||
apiKey: APIKEYVALUE
|
|
||||||
|
|
||||||
server
|
server
|
||||||
======
|
======
|
||||||
|
@ -259,35 +158,35 @@ look for incomming commands to the callsign configured in the config file
|
||||||
::
|
::
|
||||||
|
|
||||||
└─[$] > aprsd server --help
|
└─[$] > aprsd server --help
|
||||||
Usage: aprsd server [OPTIONS]
|
Usage: aprsd server [OPTIONS]
|
||||||
|
|
||||||
Start the aprsd server process.
|
Start the aprsd server gateway process.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--loglevel [CRITICAL|ERROR|WARNING|INFO|DEBUG]
|
--loglevel [CRITICAL|ERROR|WARNING|INFO|DEBUG]
|
||||||
The log level to use for aprsd.log
|
The log level to use for aprsd.log
|
||||||
[default: INFO]
|
[default: INFO]
|
||||||
|
-c, --config TEXT The aprsd config file to use for options.
|
||||||
|
[default:
|
||||||
|
/Users/i530566/.config/aprsd/aprsd.yml]
|
||||||
|
--quiet Don't log to stdout
|
||||||
|
-f, --flush Flush out all old aged messages on disk.
|
||||||
|
[default: False]
|
||||||
|
-h, --help Show this message and exit.
|
||||||
|
|
||||||
--quiet Don't log to stdout
|
└─> aprsd server
|
||||||
--disable-validation Disable email shortcut validation. Bad
|
|
||||||
email addresses can result in broken email
|
|
||||||
responses!!
|
|
||||||
|
|
||||||
-c, --config TEXT The aprsd config file to use for options.
|
|
||||||
[default:
|
|
||||||
/home/waboring/.config/aprsd/aprsd.yml]
|
|
||||||
|
|
||||||
-f, --flush Flush out all old aged messages on disk.
|
|
||||||
[default: False]
|
|
||||||
|
|
||||||
-h, --help Show this message and exit.
|
|
||||||
|
|
||||||
$ aprsd server
|
|
||||||
Load config
|
Load config
|
||||||
[02/13/2021 09:22:09 AM] [MainThread ] [INFO ] APRSD Started version: 1.6.0
|
12/07/2021 03:16:17 PM MainThread INFO APRSD is up to date server.py:51
|
||||||
[02/13/2021 09:22:09 AM] [MainThread ] [INFO ] Checking IMAP configuration
|
12/07/2021 03:16:17 PM MainThread INFO APRSD Started version: 2.5.6 server.py:52
|
||||||
[02/13/2021 09:22:09 AM] [MainThread ] [INFO ] Checking SMTP configuration
|
12/07/2021 03:16:17 PM MainThread INFO Using CONFIG values: server.py:55
|
||||||
[02/13/2021 09:22:10 AM] [MainThread ] [INFO ] Validating 2 Email shortcuts. This can take up to 10 seconds per shortcut
|
12/07/2021 03:16:17 PM MainThread INFO ham.callsign = WB4BOR server.py:60
|
||||||
|
12/07/2021 03:16:17 PM MainThread INFO aprs.login = WB4BOR-12 server.py:60
|
||||||
|
12/07/2021 03:16:17 PM MainThread INFO aprs.password = XXXXXXXXXXXXXXXXXXX server.py:58
|
||||||
|
12/07/2021 03:16:17 PM MainThread INFO aprs.host = noam.aprs2.net server.py:60
|
||||||
|
12/07/2021 03:16:17 PM MainThread INFO aprs.port = 14580 server.py:60
|
||||||
|
12/07/2021 03:16:17 PM MainThread INFO aprs.logfile = /tmp/aprsd.log server.py:60
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
send-message
|
send-message
|
||||||
|
@ -299,32 +198,30 @@ test messages
|
||||||
::
|
::
|
||||||
|
|
||||||
└─[$] > aprsd send-message -h
|
└─[$] > aprsd send-message -h
|
||||||
Usage: aprsd send-message [OPTIONS] TOCALLSIGN [COMMAND]...
|
Usage: aprsd send-message [OPTIONS] TOCALLSIGN COMMAND...
|
||||||
|
|
||||||
Send a message to a callsign via APRS_IS.
|
Send a message to a callsign via APRS_IS.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--loglevel [CRITICAL|ERROR|WARNING|INFO|DEBUG]
|
--loglevel [CRITICAL|ERROR|WARNING|INFO|DEBUG]
|
||||||
The log level to use for aprsd.log
|
The log level to use for aprsd.log
|
||||||
[default: DEBUG]
|
[default: INFO]
|
||||||
|
|
||||||
--quiet Don't log to stdout
|
|
||||||
-c, --config TEXT The aprsd config file to use for options.
|
-c, --config TEXT The aprsd config file to use for options.
|
||||||
[default: ~/.config/aprsd/aprsd.yml]
|
[default:
|
||||||
|
/Users/i530566/.config/aprsd/aprsd.yml]
|
||||||
|
--quiet Don't log to stdout
|
||||||
--aprs-login TEXT What callsign to send the message from.
|
--aprs-login TEXT What callsign to send the message from.
|
||||||
[env var: APRS_LOGIN]
|
[env var: APRS_LOGIN]
|
||||||
|
|
||||||
--aprs-password TEXT the APRS-IS password for APRS_LOGIN [env
|
--aprs-password TEXT the APRS-IS password for APRS_LOGIN [env
|
||||||
var: APRS_PASSWORD]
|
var: APRS_PASSWORD]
|
||||||
|
-n, --no-ack Don't wait for an ack, just sent it to APRS-
|
||||||
|
IS and bail. [default: False]
|
||||||
|
-w, --wait-response Wait for a response to the message?
|
||||||
|
[default: False]
|
||||||
|
--raw TEXT Send a raw message. Implies --no-ack
|
||||||
-h, --help Show this message and exit.
|
-h, --help Show this message and exit.
|
||||||
|
|
||||||
|
|
||||||
Example output:
|
|
||||||
===============
|
|
||||||
|
|
||||||
|
|
||||||
SEND EMAIL (radio to smtp server)
|
SEND EMAIL (radio to smtp server)
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
|
@ -395,25 +292,35 @@ AND... ping, fortune, time.....
|
||||||
Development
|
Development
|
||||||
===========
|
===========
|
||||||
|
|
||||||
* git clone git@github.com:craigerl/aprsd.git
|
* ``git clone git@github.com:craigerl/aprsd.git``
|
||||||
* cd aprsd
|
* ``cd aprsd``
|
||||||
* make
|
* ``make``
|
||||||
|
|
||||||
Workflow
|
Workflow
|
||||||
========
|
========
|
||||||
|
|
||||||
While working aprsd, The workflow is as follows
|
While working aprsd, The workflow is as follows:
|
||||||
|
|
||||||
|
* Checkout a new branch to work on by running
|
||||||
|
|
||||||
|
``git checkout -b mybranch``
|
||||||
|
|
||||||
|
* Make your changes to the code
|
||||||
|
* Run Tox with the following options:
|
||||||
|
|
||||||
|
- ``tox -epep8``
|
||||||
|
- ``tox -efmt``
|
||||||
|
- ``tox -p``
|
||||||
|
|
||||||
|
* Commit your changes. This will run the pre-commit hooks which does checks too
|
||||||
|
|
||||||
|
``git commit``
|
||||||
|
|
||||||
* checkout a new branch to work on
|
|
||||||
* git checkout -b mybranch
|
|
||||||
* Edit code
|
|
||||||
* run tox -epep8
|
|
||||||
* run tox -efmt
|
|
||||||
* run tox -p
|
|
||||||
* git commit ( This will run the pre-commit hooks which does checks too )
|
|
||||||
* Once you are done with all of your commits, then push up the branch to
|
* Once you are done with all of your commits, then push up the branch to
|
||||||
github
|
github with:
|
||||||
* git push -u origin mybranch
|
|
||||||
|
``git push -u origin mybranch``
|
||||||
|
|
||||||
* Create a pull request from your branch so github tests can run and we can do
|
* Create a pull request from your branch so github tests can run and we can do
|
||||||
a code review.
|
a code review.
|
||||||
|
|
||||||
|
@ -423,21 +330,21 @@ Release
|
||||||
|
|
||||||
To do release to pypi:
|
To do release to pypi:
|
||||||
|
|
||||||
* Tag release with
|
* Tag release with:
|
||||||
|
|
||||||
git tag -v1.XX -m "New release"
|
``git tag -v1.XX -m "New release"``
|
||||||
|
|
||||||
* push release tag up
|
* Push release tag:
|
||||||
|
|
||||||
git push origin master --tags
|
``git push origin master --tags``
|
||||||
|
|
||||||
* Do a test build and verify build is valid
|
* Do a test build and verify build is valid by running:
|
||||||
|
|
||||||
make build
|
``make build``
|
||||||
|
|
||||||
* Once twine is happy, upload release to pypi
|
* Once twine is happy, upload release to pypi:
|
||||||
|
|
||||||
make upload
|
``make upload``
|
||||||
|
|
||||||
|
|
||||||
Docker Container
|
Docker Container
|
||||||
|
@ -455,24 +362,62 @@ the repo.
|
||||||
Official Build
|
Official Build
|
||||||
==============
|
==============
|
||||||
|
|
||||||
docker build -t hemna6969/aprsd:latest .
|
``docker build -t hemna6969/aprsd:latest .``
|
||||||
|
|
||||||
Development Build
|
Development Build
|
||||||
=================
|
=================
|
||||||
|
|
||||||
docker build -t hemna6969/aprsd:latest -f Dockerfile-dev .
|
``docker build -t hemna6969/aprsd:latest -f Dockerfile-dev .``
|
||||||
|
|
||||||
|
|
||||||
Running the container
|
Running the container
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
There is a docker-compose.yml file that can be used to run your container.
|
There is a ``docker-compose.yml`` file in the ``docker/`` directory
|
||||||
There are 2 volumes defined that can be used to store your configuration
|
that can be used to run your container. To provide the container
|
||||||
and the plugins directory: /config and /plugins
|
an ``aprsd.conf`` configuration file, change your
|
||||||
|
``docker-compose.yml`` as shown below:
|
||||||
|
|
||||||
If you want to install plugins at container start time, then use the
|
::
|
||||||
environment var in docker-compose.yml specified as APRS_PLUGINS
|
|
||||||
Provide a csv list of pypi installable plugins. Then make sure the plugin
|
volumes:
|
||||||
python file is in your /plugins volume and the plugin will be installed at
|
- $HOME/.config/aprsd:/config
|
||||||
container startup. The plugin may have dependencies that are required.
|
|
||||||
The plugin file should be copied to /plugins for loading by aprsd
|
To install plugins at container start time, pass in a list of
|
||||||
|
comma-separated list of plugins on PyPI using the ``APRSD_PLUGINS``
|
||||||
|
environment variable in the ``docker-compose.yml`` file. Note that
|
||||||
|
version constraints may also be provided. For example:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- APRSD_PLUGINS=aprsd-slack-plugin>=1.0.2,aprsd-twitter-plugin
|
||||||
|
|
||||||
|
|
||||||
|
.. badges
|
||||||
|
|
||||||
|
.. |pypi| image:: https://badge.fury.io/py/aprsd.svg
|
||||||
|
:target: https://badge.fury.io/py/aprsd
|
||||||
|
|
||||||
|
.. |pytest| image:: https://github.com/craigerl/aprsd/workflows/python/badge.svg
|
||||||
|
:target: https://github.com/craigerl/aprsd/actions
|
||||||
|
|
||||||
|
.. |versions| image:: https://img.shields.io/pypi/pyversions/aprsd.svg
|
||||||
|
:target: https://pypi.org/pypi/aprsd
|
||||||
|
|
||||||
|
.. |slack| image:: https://img.shields.io/badge/slack-@hemna/aprsd-blue.svg?logo=slack
|
||||||
|
:target: https://hemna.slack.com/app_redirect?channel=C01KQSCP5RP
|
||||||
|
|
||||||
|
.. |imports| image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
|
||||||
|
:target: https://timothycrosley.github.io/isort/
|
||||||
|
|
||||||
|
.. |issues| image:: https://img.shields.io/github/issues/craigerl/aprsd
|
||||||
|
|
||||||
|
.. |commit| image:: https://img.shields.io/github/last-commit/craigerl/aprsd
|
||||||
|
|
||||||
|
.. |down| image:: https://static.pepy.tech/personalized-badge/aprsd?period=month&units=international_system&left_color=black&right_color=orange&left_text=Downloads
|
||||||
|
:target: https://pepy.tech/project/aprsd
|
||||||
|
|
||||||
|
.. links
|
||||||
|
.. _read the docs:
|
||||||
|
https://aprsd.readthedocs.io
|
||||||
|
|
Loading…
Reference in New Issue