2021-08-19 16:45:23 -04:00
|
|
|
===============================================
|
|
|
|
APRSD - Ham radio APRS-IS Message plugin server
|
|
|
|
===============================================
|
2020-12-14 11:35:10 -05:00
|
|
|
|
2021-08-19 16:45:23 -04:00
|
|
|
KM6LYW and WB4BOR
|
|
|
|
____________________
|
2020-12-14 11:35:10 -05:00
|
|
|
|
2021-08-24 15:46:16 -04:00
|
|
|
|pypi| |pytest| |versions| |slack| |issues| |commit| |imports| |down|
|
2021-01-09 14:12:13 -05:00
|
|
|
|
2020-12-15 10:51:02 -05:00
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
`APRSD <http://github.com/craigerl/aprsd>`_ is a Ham radio `APRS <http://aprs.org>`_ message command gateway built on python.
|
|
|
|
|
|
|
|
APRSD listens on amateur radio aprs-is network for messages and respond to them.
|
|
|
|
It has a plugin architecture for extensibility. Users of APRSD can write their own
|
|
|
|
plugins that can respond to APRS-IS messages.
|
|
|
|
|
2020-12-20 21:18:11 -05:00
|
|
|
You must have an amateur radio callsign to use this software. APRSD gets
|
|
|
|
messages for the configured HAM callsign, and sends those messages to a
|
|
|
|
list of plugins for processing. There are a set of core plugins that
|
2021-01-06 17:50:02 -05:00
|
|
|
provide responding to messages to check email, get location, ping,
|
2020-12-20 21:18:11 -05:00
|
|
|
time of day, get weather, and fortune telling as well as version information
|
|
|
|
of aprsd itself.
|
|
|
|
|
2021-08-19 16:45:23 -04:00
|
|
|
Please `read the docs`_ to learn more!
|
|
|
|
|
|
|
|
|
|
|
|
.. contents:: :local:
|
2021-01-16 10:46:00 -05:00
|
|
|
|
2021-01-10 16:11:53 -05:00
|
|
|
|
|
|
|
APRSD Overview Diagram
|
|
|
|
----------------------
|
|
|
|
|
2021-01-15 13:30:07 -05:00
|
|
|
.. image:: https://raw.githubusercontent.com/craigerl/aprsd/master/docs/_static/aprsd_overview.svg?sanitize=true
|
2021-01-10 16:11:53 -05:00
|
|
|
|
|
|
|
|
2020-12-20 21:18:11 -05:00
|
|
|
Typical use case
|
|
|
|
================
|
|
|
|
|
|
|
|
Ham radio operator using an APRS enabled HAM radio sends a message to check
|
2021-08-19 16:45:23 -04:00
|
|
|
the weather. An APRS message is sent, and then picked up by APRSD. The
|
2020-12-20 21:18:11 -05:00
|
|
|
APRS packet is decoded, and the message is sent through the list of plugins
|
2021-01-09 14:12:13 -05:00
|
|
|
for processing. For example, the WeatherPlugin picks up the message, fetches the weather
|
2020-12-20 21:18:11 -05:00
|
|
|
for the area around the user who sent the request, and then responds with
|
2021-07-17 14:30:29 -04:00
|
|
|
the weather conditions in that area. Also includes a watch list of HAM
|
|
|
|
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.
|
2020-12-20 21:18:11 -05:00
|
|
|
|
|
|
|
|
|
|
|
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
|
2021-01-09 14:12:13 -05:00
|
|
|
* QueryPlugin - Allows querying the list of delayed messages that were not ACK'd by radio
|
2020-12-20 21:18:11 -05:00
|
|
|
* TimePlugin - Current time of day
|
|
|
|
* WeatherPlugin - Get weather conditions for current location of HAM callsign
|
|
|
|
* VersionPlugin - Reports the version information for aprsd
|
2021-07-17 14:30:29 -04:00
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
2020-12-14 11:35:10 -05:00
|
|
|
Current messages this will respond to:
|
2020-12-20 21:18:11 -05:00
|
|
|
======================================
|
2020-12-14 11:35:10 -05:00
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
APRS messages:
|
|
|
|
l(ocation) [callsign] = descriptive current location of your radio
|
|
|
|
8 Miles E Auburn CA 1673' 39.92150,-120.93950 0.1h ago
|
|
|
|
w(eather) = weather forecast for your radio's current position
|
|
|
|
58F(58F/46F) Partly Cloudy. Tonight, Heavy Rain.
|
|
|
|
t(ime) = respond with the current time
|
|
|
|
f(ortune) = respond with a short fortune
|
|
|
|
-email_addr email text = send an email, say "mapme" to send a current position/map
|
|
|
|
-2 = resend the last 2 emails from your imap inbox to this radio
|
|
|
|
p(ing) = respond with Pong!/time
|
2021-01-09 14:12:13 -05:00
|
|
|
v(ersion) = Respond with current APRSD Version string
|
2020-12-14 11:35:10 -05:00
|
|
|
anything else = respond with usage
|
|
|
|
|
|
|
|
|
|
|
|
Meanwhile this code will monitor a single imap mailbox and forward email
|
|
|
|
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
|
|
|
|
email server, and associated logins, passwords. search for "yourdomain",
|
|
|
|
"password". Search for "shortcuts" to setup email aliases as well.
|
|
|
|
|
|
|
|
|
|
|
|
Installation:
|
2021-01-09 14:12:13 -05:00
|
|
|
=============
|
2020-12-14 11:35:10 -05:00
|
|
|
|
|
|
|
pip install aprsd
|
|
|
|
|
|
|
|
Example usage:
|
2020-12-15 10:51:02 -05:00
|
|
|
==============
|
2020-12-14 11:35:10 -05:00
|
|
|
|
|
|
|
aprsd -h
|
|
|
|
|
2020-12-20 12:36:47 -05:00
|
|
|
Help
|
|
|
|
====
|
|
|
|
::
|
|
|
|
|
|
|
|
└─[$] > aprsd -h
|
|
|
|
Usage: aprsd [OPTIONS] COMMAND [ARGS]...
|
|
|
|
|
|
|
|
Options:
|
|
|
|
--version Show the version and exit.
|
|
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
|
|
Commands:
|
2021-12-07 15:18:27 -05:00
|
|
|
check-version Check this version against the latest in pypi.org.
|
|
|
|
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.
|
2020-12-20 12:36:47 -05:00
|
|
|
sample-config This dumps the config to stdout.
|
|
|
|
send-message Send a message to a callsign via APRS_IS.
|
2021-12-07 15:18:27 -05:00
|
|
|
server Start the aprsd server gateway process.
|
|
|
|
version Show the APRSD version.
|
2020-12-20 12:36:47 -05:00
|
|
|
|
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
|
2020-12-20 12:36:47 -05:00
|
|
|
Commands
|
2021-01-09 14:12:13 -05:00
|
|
|
========
|
2020-12-20 12:36:47 -05:00
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
Configuration
|
2020-12-20 12:36:47 -05:00
|
|
|
=============
|
|
|
|
This command outputs a sample config yml formatted block that you can edit
|
2021-01-09 14:12:13 -05:00
|
|
|
and use to pass in to aprsd with -c. By default aprsd looks in ~/.config/aprsd/aprsd.yml
|
2020-12-20 12:36:47 -05:00
|
|
|
|
|
|
|
aprsd sample-config
|
|
|
|
|
|
|
|
Output
|
|
|
|
======
|
|
|
|
::
|
|
|
|
|
2021-04-05 14:32:36 -04:00
|
|
|
└─> aprsd sample-config
|
2020-12-20 12:36:47 -05:00
|
|
|
aprs:
|
2021-12-07 15:18:27 -05:00
|
|
|
# Set enabled to False if there is no internet connectivity.
|
|
|
|
# This is useful for a direwolf KISS aprs connection only.
|
|
|
|
|
2021-02-13 09:27:03 -05:00
|
|
|
# Get the passcode for your callsign here:
|
|
|
|
# https://apps.magicbug.co.uk/passcode
|
2021-12-07 15:18:27 -05:00
|
|
|
enabled: true
|
2021-02-13 09:27:03 -05:00
|
|
|
host: rotate.aprs2.net
|
|
|
|
login: CALLSIGN
|
|
|
|
password: '00000'
|
|
|
|
port: 14580
|
2020-12-20 12:36:47 -05:00
|
|
|
aprsd:
|
2021-04-05 14:32:36 -04:00
|
|
|
dateformat: '%m/%d/%Y %I:%M:%S %p'
|
2021-02-13 09:27:03 -05:00
|
|
|
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
|
2021-04-05 14:32:36 -04:00
|
|
|
- aprsd.plugins.stock.StockPlugin
|
2021-02-13 09:27:03 -05:00
|
|
|
- aprsd.plugins.time.TimePlugin
|
|
|
|
- aprsd.plugins.weather.USWeatherPlugin
|
|
|
|
- aprsd.plugins.version.VersionPlugin
|
|
|
|
logfile: /tmp/aprsd.log
|
2021-12-07 15:18:27 -05:00
|
|
|
logformat: '[%(asctime)s] [%(threadName)-20.20s] [%(levelname)-5.5s] %(message)s
|
|
|
|
- [%(pathname)s:%(lineno)d]'
|
|
|
|
rich_logging: false
|
|
|
|
save_location: /Users/i530566/.config/aprsd/
|
2021-02-13 09:27:03 -05:00
|
|
|
trace: false
|
|
|
|
units: imperial
|
2021-12-07 15:18:27 -05:00
|
|
|
watch_list:
|
|
|
|
alert_callsign: NOCALL
|
|
|
|
alert_time_seconds: 43200
|
|
|
|
callsigns: []
|
|
|
|
enabled: false
|
|
|
|
enabled_plugins:
|
|
|
|
- aprsd.plugins.notify.NotifySeenPlugin
|
|
|
|
packet_keep_count: 10
|
2021-02-13 09:27:03 -05:00
|
|
|
web:
|
|
|
|
enabled: true
|
|
|
|
host: 0.0.0.0
|
2021-04-05 14:32:36 -04:00
|
|
|
logging_enabled: true
|
2021-02-13 09:27:03 -05:00
|
|
|
port: 8001
|
|
|
|
users:
|
2021-12-07 15:18:27 -05:00
|
|
|
admin: password-here
|
2020-12-20 12:36:47 -05:00
|
|
|
ham:
|
2021-12-07 15:18:27 -05:00
|
|
|
callsign: NOCALL
|
|
|
|
kiss:
|
|
|
|
serial:
|
|
|
|
baudrate: 9600
|
|
|
|
device: /dev/ttyS0
|
|
|
|
enabled: false
|
|
|
|
tcp:
|
|
|
|
enabled: false
|
|
|
|
host: direwolf.ip.address
|
|
|
|
port: '8001'
|
2021-02-13 09:27:03 -05:00
|
|
|
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
|
2020-12-20 12:36:47 -05:00
|
|
|
|
|
|
|
server
|
|
|
|
======
|
|
|
|
|
2021-01-06 17:50:02 -05:00
|
|
|
This is the main server command that will listen to APRS-IS servers and
|
2020-12-20 12:36:47 -05:00
|
|
|
look for incomming commands to the callsign configured in the config file
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
└─[$] > aprsd server --help
|
2021-12-07 15:18:27 -05:00
|
|
|
Usage: aprsd server [OPTIONS]
|
|
|
|
|
|
|
|
Start the aprsd server gateway process.
|
|
|
|
|
|
|
|
Options:
|
|
|
|
--loglevel [CRITICAL|ERROR|WARNING|INFO|DEBUG]
|
|
|
|
The log level to use for aprsd.log
|
|
|
|
[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.
|
|
|
|
|
|
|
|
└─> aprsd server
|
|
|
|
Load config
|
|
|
|
12/07/2021 03:16:17 PM MainThread INFO APRSD is up to date server.py:51
|
|
|
|
12/07/2021 03:16:17 PM MainThread INFO APRSD Started version: 2.5.6 server.py:52
|
|
|
|
12/07/2021 03:16:17 PM MainThread INFO Using CONFIG values: server.py:55
|
|
|
|
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
|
2020-12-20 12:36:47 -05:00
|
|
|
|
2021-02-13 09:27:03 -05:00
|
|
|
|
2020-12-20 12:36:47 -05:00
|
|
|
|
|
|
|
|
|
|
|
send-message
|
|
|
|
============
|
|
|
|
|
|
|
|
This command is typically used for development to send another aprsd instance
|
|
|
|
test messages
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
└─[$] > aprsd send-message -h
|
2021-12-07 15:18:27 -05:00
|
|
|
Usage: aprsd send-message [OPTIONS] TOCALLSIGN COMMAND...
|
2020-12-20 12:36:47 -05:00
|
|
|
|
|
|
|
Send a message to a callsign via APRS_IS.
|
|
|
|
|
|
|
|
Options:
|
|
|
|
--loglevel [CRITICAL|ERROR|WARNING|INFO|DEBUG]
|
|
|
|
The log level to use for aprsd.log
|
2021-12-07 15:18:27 -05:00
|
|
|
[default: INFO]
|
2020-12-20 12:36:47 -05:00
|
|
|
-c, --config TEXT The aprsd config file to use for options.
|
2021-12-07 15:18:27 -05:00
|
|
|
[default:
|
|
|
|
/Users/i530566/.config/aprsd/aprsd.yml]
|
|
|
|
--quiet Don't log to stdout
|
2020-12-20 12:36:47 -05:00
|
|
|
--aprs-login TEXT What callsign to send the message from.
|
|
|
|
[env var: APRS_LOGIN]
|
|
|
|
--aprs-password TEXT the APRS-IS password for APRS_LOGIN [env
|
|
|
|
var: APRS_PASSWORD]
|
2021-12-07 15:18:27 -05:00
|
|
|
-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
|
2020-12-20 12:36:47 -05:00
|
|
|
-h, --help Show this message and exit.
|
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
|
2020-12-14 11:35:10 -05:00
|
|
|
Example output:
|
2021-01-09 14:12:13 -05:00
|
|
|
===============
|
2020-12-14 11:35:10 -05:00
|
|
|
|
2020-12-20 12:36:47 -05:00
|
|
|
|
2020-12-14 11:35:10 -05:00
|
|
|
SEND EMAIL (radio to smtp server)
|
2020-12-15 10:51:02 -05:00
|
|
|
=================================
|
2020-12-14 11:35:10 -05:00
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
Received message______________
|
|
|
|
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :-user@host.com test new shortcuts global, radio to pc{29
|
|
|
|
From : KM6XXX
|
|
|
|
Message : -user@host.com test new shortcuts global, radio to pc
|
|
|
|
Msg number : 29
|
|
|
|
|
|
|
|
Sending Email_________________
|
|
|
|
To : user@host.com
|
|
|
|
Subject : KM6XXX
|
|
|
|
Body : test new shortcuts global, radio to pc
|
|
|
|
|
|
|
|
Sending ack __________________ Tx(3)
|
|
|
|
Raw : KM6XXX-9>APRS::KM6XXX :ack29
|
|
|
|
To : KM6XXX
|
|
|
|
Ack number : 29
|
|
|
|
|
|
|
|
|
|
|
|
RECEIVE EMAIL (imap server to radio)
|
2020-12-15 10:51:02 -05:00
|
|
|
====================================
|
2020-12-14 11:35:10 -05:00
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
Sending message_______________ 6(Tx3)
|
|
|
|
Raw : KM6XXX-9>APRS::KM6XXX :-somebody@gmail.com email from internet to radio{6
|
|
|
|
To : KM6XXX
|
|
|
|
Message : -somebody@gmail.com email from internet to radio
|
|
|
|
|
|
|
|
Received message______________
|
|
|
|
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :ack6
|
|
|
|
From : KM6XXX
|
|
|
|
Message : ack6
|
|
|
|
Msg number : 0
|
|
|
|
|
|
|
|
|
|
|
|
LOCATION
|
2020-12-15 10:51:02 -05:00
|
|
|
========
|
2020-12-14 11:35:10 -05:00
|
|
|
|
|
|
|
::
|
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
Received Message _______________
|
|
|
|
Raw : KM6XXX-6>APRS,TCPIP*,qAC,T2CAEAST::KM6XXX-14:location{2
|
|
|
|
From : KM6XXX-6
|
2020-12-14 11:35:10 -05:00
|
|
|
Message : location
|
2021-01-09 14:12:13 -05:00
|
|
|
Msg number : 2
|
|
|
|
Received Message _______________ Complete
|
|
|
|
|
|
|
|
Sending Message _______________
|
|
|
|
Raw : KM6XXX-14>APRS::KM6XXX-6 :KM6XXX-6: 8 Miles E Auburn CA 0' 0,-120.93584 1873.7h ago{2
|
|
|
|
To : KM6XXX-6
|
|
|
|
Message : KM6XXX-6: 8 Miles E Auburn CA 0' 0,-120.93584 1873.7h ago
|
|
|
|
Msg number : 2
|
|
|
|
Sending Message _______________ Complete
|
|
|
|
|
|
|
|
Sending ack _______________
|
|
|
|
Raw : KM6XXX-14>APRS::KM6XXX-6 :ack2
|
|
|
|
To : KM6XXX-6
|
|
|
|
Ack : 2
|
|
|
|
Sending ack _______________ Complete
|
2020-12-14 11:35:10 -05:00
|
|
|
|
2020-12-14 16:06:07 -05:00
|
|
|
AND... ping, fortune, time.....
|
2020-12-14 11:35:10 -05:00
|
|
|
|
|
|
|
|
2020-12-14 16:06:07 -05:00
|
|
|
Development
|
2021-01-06 19:55:02 -05:00
|
|
|
===========
|
|
|
|
|
|
|
|
* git clone git@github.com:craigerl/aprsd.git
|
|
|
|
* cd aprsd
|
2021-01-09 14:12:13 -05:00
|
|
|
* make
|
2020-12-14 16:06:07 -05:00
|
|
|
|
2020-12-15 10:51:02 -05:00
|
|
|
Workflow
|
2021-01-09 14:12:13 -05:00
|
|
|
========
|
2020-12-15 10:51:02 -05:00
|
|
|
|
2020-12-14 16:06:07 -05:00
|
|
|
While working aprsd, The workflow is as follows
|
|
|
|
|
2021-01-08 12:28:17 -05:00
|
|
|
* checkout a new branch to work on
|
|
|
|
* git checkout -b mybranch
|
|
|
|
* Edit code
|
|
|
|
* run tox -epep8
|
2020-12-14 16:06:07 -05:00
|
|
|
* run tox -efmt
|
|
|
|
* run tox -p
|
2021-01-06 19:55:02 -05:00
|
|
|
* git commit ( This will run the pre-commit hooks which does checks too )
|
2021-01-08 12:28:17 -05:00
|
|
|
* Once you are done with all of your commits, then push up the branch to
|
|
|
|
github
|
|
|
|
* git push -u origin mybranch
|
|
|
|
* Create a pull request from your branch so github tests can run and we can do
|
|
|
|
a code review.
|
2020-12-14 16:06:07 -05:00
|
|
|
|
|
|
|
|
|
|
|
Release
|
2021-01-09 14:12:13 -05:00
|
|
|
=======
|
2020-12-14 16:06:07 -05:00
|
|
|
|
|
|
|
To do release to pypi:
|
|
|
|
|
2021-01-06 17:50:02 -05:00
|
|
|
* Tag release with
|
2020-12-14 16:06:07 -05:00
|
|
|
|
|
|
|
git tag -v1.XX -m "New release"
|
|
|
|
|
|
|
|
* push release tag up
|
|
|
|
|
|
|
|
git push origin master --tags
|
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
* Do a test build and verify build is valid
|
2020-12-14 16:06:07 -05:00
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
make build
|
2020-12-14 16:06:07 -05:00
|
|
|
|
|
|
|
* Once twine is happy, upload release to pypi
|
|
|
|
|
2021-01-09 14:12:13 -05:00
|
|
|
make upload
|
2020-12-14 16:06:07 -05:00
|
|
|
|
2020-12-15 10:51:02 -05:00
|
|
|
|
|
|
|
Docker Container
|
2021-01-09 14:12:13 -05:00
|
|
|
================
|
2020-12-15 10:51:02 -05:00
|
|
|
|
|
|
|
Building
|
2021-01-09 14:12:13 -05:00
|
|
|
========
|
2020-12-15 10:51:02 -05:00
|
|
|
|
|
|
|
There are 2 versions of the container Dockerfile that can be used.
|
|
|
|
The main Dockerfile, which is for building the official release container
|
|
|
|
based off of the pip install version of aprsd and the Dockerfile-dev,
|
|
|
|
which is used for building a container based off of a git branch of
|
|
|
|
the repo.
|
|
|
|
|
|
|
|
Official Build
|
2021-01-09 14:12:13 -05:00
|
|
|
==============
|
2020-12-15 10:51:02 -05:00
|
|
|
|
|
|
|
docker build -t hemna6969/aprsd:latest .
|
|
|
|
|
|
|
|
Development Build
|
2021-01-09 14:12:13 -05:00
|
|
|
=================
|
2020-12-15 10:51:02 -05:00
|
|
|
|
|
|
|
docker build -t hemna6969/aprsd:latest -f Dockerfile-dev .
|
|
|
|
|
|
|
|
|
|
|
|
Running the container
|
2021-01-09 14:12:13 -05:00
|
|
|
=====================
|
2020-12-15 10:51:02 -05:00
|
|
|
|
|
|
|
There is a docker-compose.yml file that can be used to run your container.
|
|
|
|
There are 2 volumes defined that can be used to store your configuration
|
|
|
|
and the plugins directory: /config and /plugins
|
|
|
|
|
|
|
|
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
|
|
|
|
python file is in your /plugins volume and the plugin will be installed at
|
|
|
|
container startup. The plugin may have dependencies that are required.
|
|
|
|
The plugin file should be copied to /plugins for loading by aprsd
|
2021-08-19 16:45:23 -04:00
|
|
|
|
|
|
|
|
|
|
|
.. 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
|
2021-08-19 16:53:02 -04:00
|
|
|
:target: https://hemna.slack.com/app_redirect?channel=C01KQSCP5RP
|
2021-08-19 16:45:23 -04:00
|
|
|
|
|
|
|
.. |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
|